Привет, муншайнеры! С радостью сообщаю о выходе большого релиза 2.14 с кодовым названием "Daiquiri Delightful"! Давайте расскажу, что появилось нового и интересного.
Новое поле Markdown
Посмотрите как кипела работа в этом PR где @AkostDev добавил новый визуальный markdown редактор на основе библиотеки EaseMde. И сделал он это на 10 из 10 баллов!
Встречаем новое поле Markdown, которое теперь в коробке. А вот TinyMce в MoonShine v3 будет вынесен в отдельный пакет из-за своей объемности.
Новый вертикальный режим для Tabs
В этом PR также бурлили страсти, но @forest-lynx справился со всеми вызовами и теперь нас с вами ждут вкладки в вертикальном режиме:
Tabs::make(...)->vertical()
Выглядят шикарно!
Доступен ответ с файлом
Теперь используя асинхронные методы, вы можете возвращать в ответе файлы:
ActionButton::make('Export')->method('export')
public function export(): BinaryFileResponse
{
return response()->download($file);
}
Новое поле Td
Все чаще в чате стали появляться вопросы "А как изменить содержимое ячейки таблицы с использованием декораций или просто совместить несколько полей?".
Да, у нас уже были поля Preview и StackFields которые справлялись с этой задачей, но все мы любим сахар, поэтому встречаем поле Td!
Помимо того что мы можем удобно реализовать содержимое ячейки с использованием полей и декораций и добавлять условия с учетом данных, мы также сразу имеем доступ к атрибутам ячейки. Взглянем на пример:
Td::make('Column', function (Article $v) {
if($v->active) {
return [
Text::make('Title'),
];
}
return [
Flex::make([
ActionButton::make('Click me', $this->detailPageUrl($v)),
Text::make('Title'),
Switcher::make('Active'),
])
];
})
->tdAttributes(fn (Article $data, ComponentAttributeBag $attr) => $data->getKey() === 2 ? $attr->merge([
'style' => 'background: lightgray'
]) : $attr)
,
HasMany прокачан
Благодаря этому PR вы сможете модифицировать кнопку редактирования (добавления), изменить TableBuilder для превью и формы, а также изменить onlyLink кнопку:
MorphMany::make('Comments', 'polyComments', resource: new PolyCommentResource())
->onlyLink()
->modifyOnlyLinkButton(
fn(ActionButton $button, bool $preview) => $button
->when($preview, fn(ActionButton $btn) => $btn->primary())
->when(!$preview, fn(ActionButton $btn) => $btn->secondary())
)
->modifyCreateButton(
fn(ActionButton $button) => $button->setLabel('Custom create button')
)
->modifyEditButton(
fn(ActionButton $button) => $button->setLabel('Custom edit button')
)
->modifyTable(
fn(TableBuilder $table, bool $preview) => $table
->when($preview, fn(TableBuilder $tbl) => $tbl->customAttributes(['style' => 'background: blue']))
->when(!$preview, fn(TableBuilder $tbl) => $tbl->customAttributes(['style' => 'background: green']))
)
->creatable(true),
BelongsToMany в режиме inLine с ссылкой
Да, теперь на каждый элемент в режиме inLine можно повесить ссылку. Давайте взглянем на пример, чтобы понимать о чем речь:
BelongsToMany::make('Categories')->inLine(
' ',
true,
fn(Category $category, $value, $field) => (new CategoryResource())->detailPageUrl($category)
)
Да и чего мелочится, вы можете заменить на свой компонент полностью:
BelongsToMany::make('Categories')->inLine(
' ',
true,
fn(Category $category, $value, $field) => Link::make((new CategoryResource())->detailPageUrl($category), $value)
)
Полная локализация для Select
Новый контрибьютор @dragomano просто капитальный красавчик, добавил перевод для Choices и теперь он выглядит намного круче
Исправили
- @lee-to пофиксил Json и теперь пустые значения будут отфильтрованы https://github.com/moonshine-software/moonshine/pull/973
- @lee-to порефакторил поле Json и улучшил взаимодействие с вложенными в Json полями посредством apply-методов, а также улучшил реиндексацию имен полей https://github.com/moonshine-software/moonshine/pull/961
- @DissNik не перестает нас радовать фиксами по фронтенду. На этот раз исправлен Select и устранена проблема переключения на поле через нажатие tab https://github.com/moonshine-software/moonshine/pull/946
- И снова @DissNik, но на этот раз с фиксом верхнего менюhttps://github.com/moonshine-software/moonshine/pull/947
- @lee-to взял на себя issue и пофиксил реактивность для поля Date https://github.com/moonshine-software/moonshine/pull/972
- @djnew ворвался в разработку и стал новым контрибьютором! Филигранно в одну строку исправил важный баг с массовыми чекбоксами, когда отключение дочерних не отключало "выбрать все" https://github.com/moonshine-software/moonshine/pull/959
- @DissNik исправил поле Number в режиме buttons и теперь они отлично работают с float https://github.com/moonshine-software/moonshine/pull/960
- @DissNik заметил, что ссылки внутри Badge выглядят не правильно и исправил в https://github.com/moonshine-software/moonshine/pull/967
- @lee-to нашел проблему в компоненте When. Мы обращались к компонентам даже если условие не срабатывало, теперь не будем https://github.com/moonshine-software/moonshine/pull/962
- Снова наш любимый @DissNik и в этот раз с фиксом стилей для элементов пагинации https://github.com/moonshine-software/moonshine/pull/970
Новые контрибьюторы
- @djnew с PR https://github.com/moonshine-software/moonshine/pull/959
- @dragomano с PR https://github.com/moonshine-software/moonshine/pull/941
- @forest-lynx с PR https://github.com/moonshine-software/moonshine/pull/948