Closed ArtemYurov closed 2 days ago
1) Вообще сейчас это выглядит так - сперва ресурс добавляет ассеты а потом (всегда последним) грузится шаблон который добавляет свои ассеты, что говорит о том что ассеты шаблона всегда будут в конце
2) Не нужно использовать getAssets у ресурса, единственное место где он требуется это Fields, да и зачем каждый раз их там держать когда есть метод onLoad чтобы добавить их когда ресурс или страница активны
protected function onLoad(): void
{
$this->getAssetManager()->add(InlineJs::make('alert(1)'));
}
4) Что касается жизненого цикла то я добавлю в ассет менеджер три метода append, prepend
Issue не закрывай, я закрою когда сделаю 4
- Ну так иногда нужно же переопределить стандартный дизайн. Поэтому хотелось бы чтобы ассеты были после шаблона
- Я согласен что не нужно, но это рекомендация ваша же из тг чата)) окей значит об assetManager нужно упомянуть в доке.
- Так зачем мне переопределять во всём шаблоне, если мне нужно только на одной странице например изменить высоту таблицы?
Ждать когда я добавлю методы append/prepend и сделать
$this->assetManager()->prepend()
Так, ещё до кучи про компоненты - там же тогда тоже нужно prepend. Сейчас есть trait WithAssets. Там есть методы:
public function addAssets(array $assets): static
{
$this->getAssetManager()->add($assets);
return $this;
}
public function pushAssets(array $assets): static
{
$this->assets = array_merge($this->assets, $assets);
return $this;
}
Множество изменений, в том числе и ломающих совместимость описал в доке
https://github.com/moonshine-software/doc/commit/ed98d4613baa0bd47361693e0d7b27d82082d13f
у меня был такой код в ресурсе:
protected function onLoad(): void
{
$this->getIndexPage()->pushToLayer(
layer: Layer::TOP,
component: Fragment::make([
....
])->name('metrics2')
->addAssets([InlineCss::make("
.box-shadow:before {
display: none
}
")]),
);
}
сейчас этот assets перестал добавляться. И я правильно понял доку что в этом случае на лету у нас должно быть такое же поведение: Метод add будет зависеть от жизненного цикла приложения.
MoonShine Version
3.x-dev 856a134
Laravel Version
11.34.2
PHP Version
8.3.12
Database Driver & Version
No response
Description
Так как так теперь сделать нельзя:
А можно так:
То нужен метод с каким то более осмысленным называнием, который можно будет добавить в документацию.
Также проблема, что добавленные $assets как через getAssets, так и для компонента через addAssets добавляются перед основными css файлами, а должны после:
Steps To Reproduce
выше.