Вышел релиз MoonShine v.2.18.0 с кодовым именем "Mango Tango"! Давайте взглянем на самое интересное в этом обновлении!
Sticky режим для TableBuilder
Благодря @DissNik добавлен режим с плавающей шапкой таблиц у ресурса. Чтобы попробовать новый режим добавьте флаг stickyTable в ресурсе
namespace App\MoonShine\Resources;
use MoonShine\Resources\ModelResource;
class PostResource extends ModelResource
{
// ...
protected bool $stickyTable = true;
// ...
}
Аватар заглушка
Появилась возможность заменить шаблонную заглушку аватара профиля на свою
Profile::make()->defaultAvatar("https://ui-avatars.com/api/?name=$name")
Большие улучшения для импорта и экспорта
Для начала экспорт теперь по умолчанию в формате xlsx
Если вы хотите сделать формат по умолчанию csv, то добавьте код ниже в ServiceProvider
ModelResource::defaultExportToCsv();
Также появились новые методы, которые улучшат кастомизацию импорта и экспорта, давайте взглянем на примеры
Enum::make('Enum')
->attach(ColorEnum::class)
->fromRaw(fn(string $raw, Enum $ctx) => ColorEnum::tryFrom($raw))
->modifyRawValue(fn(ColorEnum $raw, Enum $ctx) => $raw->value))
C помощью метода modifyRawValue мы вывели в экспорте значение Enum поля
А далее с помощью метода fromRaw при импорте преобразовали значение обратно в Enum
Есть и сахар для более простого вызова
Enum::make('Enum')
->attach(ColorEnum::class)
->useOnImport(fromRaw: static fn(string $raw, Enum $ctx) => ColorEnum::tryFrom($raw))
->showOnExport(modifyRawValue: static fn(ColorEnum $raw, Enum $ctx) => $raw->value)
Соответственно под капотом это будет тоже самое что и пример выше
Dropdown с поиском
Благодря @djnew добавлен режим поиска для компонента Dropdown
Dropdown::make()->searchable()->searchPlaceholder('Search...')
asyncSearch replaceQuery
Если мы переопределяем asyncSearchQuery то на самом деле мы доплняем дефолтный, который уже ищет по column, но за счет флага replaceQuery мы можем полностью заменить builder
asyncSearch(asyncSearchQuery: fn($q) => $q->where(..., ...), replaceQuery: true)
Рубрика BugBusters 🐛
- Проблема метрик на некоторых разрешениях от @DissNik in PR
- Фикс скролла в сайдбаре от@DissNik in PR
- Проблемы с методом onBoot от @lee-to in PR
https://github.com/moonshine-software/moonshine/compare/2.17.0...2.18.0