- Основы
- Кнопка создания
- Кнопка детального просмотра
- Кнопка редактирования
- Кнопка удаления
- Кнопка массового удаления
- Кнопка фильтров
- Кнопки индексной страницы
- Кнопки индексной таблицы
- Кнопки страницы формы
- Кнопки страницы детального просмотра
Основы
Кнопки отображаются на страницах ресурса: индексная страница, страницы с формой (создание / редактирование) и детальная страница. Они отвечают за основные действия с элементами и являются компонентами ActionButton.
В MoonShine есть множество методов, позволяющих переопределить у ресурса как отдельную кнопку, так и всю группу.
Более подробная информация о компоненте ActionButton.
Кнопки для создания, просмотра, редактирования, удаления и массового удаления размещены в отдельных классах,
чтобы применить к ним все необходимые методы и тем самым устранить дублирование, поскольку эти кнопки также используются в HasMany, BelongsToMany и т.д.
Кнопка создания
Метод modifyCreateButton() позволяет модифицировать кнопку создания нового элемента.
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyCreateButton(ActionButtonContract $button): ActionButtonContract{return $button->error();}
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyCreateButton(ActionButtonContract $button): ActionButtonContract{return $button->error();}
Так же, вы можете переопределить кнопку.
use MoonShine\Contracts\UI\ActionButtonContract;use MoonShine\UI\Components\ActionButton;protected function modifyCreateButton(ActionButtonContract $button): ActionButtonContract{return ActionButton::make('Create');}
use MoonShine\Contracts\UI\ActionButtonContract;use MoonShine\UI\Components\ActionButton;protected function modifyCreateButton(ActionButtonContract $button): ActionButtonContract{return ActionButton::make('Create');}

Кнопка детального просмотра
Метод modifyDetailButton() позволяет модифицировать или переопределить кнопку детального просмотра элемента.
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyDetailButton(ActionButtonContract $button): ActionButtonContract{return $button->warning();}
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyDetailButton(ActionButtonContract $button): ActionButtonContract{return $button->warning();}

Кнопка редактирования
Метод modifyEditButton() позволяет модифицировать или переопределить кнопку редактирования элемента.
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyEditButton(ActionButtonContract $button): ActionButtonContract{return $button->icon('pencil-square');}
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyEditButton(ActionButtonContract $button): ActionButtonContract{return $button->icon('pencil-square');}

Кнопка удаления
Метод modifyDeleteButton() позволяет модифицировать или переопределить кнопку удаления элемента.
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyDeleteButton(ActionButtonContract $button): ActionButtonContract{return $button->icon('x-mark');}
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyDeleteButton(ActionButtonContract $button): ActionButtonContract{return $button->icon('x-mark');}

Кнопка массового удаления
Метод modifyMassDeleteButton() позволяет модифицировать или переопределить кнопку массового удаления.
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyMassDeleteButton(ActionButtonContract $button): ActionButtonContract{return $button->icon('x-mark');}
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyMassDeleteButton(ActionButtonContract $button): ActionButtonContract{return $button->icon('x-mark');}

Кнопка фильтров
Метод modifyFiltersButton() позволяет модифицировать или переопределить кнопку фильтров.
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyFiltersButton(ActionButtonContract $button): ActionButtonContract{return $button->error();}
use MoonShine\Contracts\UI\ActionButtonContract;protected function modifyFiltersButton(ActionButtonContract $button): ActionButtonContract{return $button->error();}

Кнопки индексной страницы
По умолчанию на странице индекса ресурса модели есть только кнопка создания.
Метод topButtons() позволяет добавить дополнительные кнопки.
use MoonShine\Support\AlpineJs;use MoonShine\Support\Enums\JsEvent;use MoonShine\Support\ListOf;use MoonShine\UI\Components\ActionButton;protected function topButtons(): ListOf{return parent::topButtons()->add(ActionButton::make('Refresh', '#')->dispatchEvent(AlpineJs::event(JsEvent::TABLE_UPDATED, $this->getListComponentName())));}
use MoonShine\Support\AlpineJs;use MoonShine\Support\Enums\JsEvent;use MoonShine\Support\ListOf;use MoonShine\UI\Components\ActionButton;protected function topButtons(): ListOf{return parent::topButtons()->add(ActionButton::make('Refresh', '#')->dispatchEvent(AlpineJs::event(JsEvent::TABLE_UPDATED, $this->getListComponentName())));}

Кнопки индексной таблицы
Для добавления кнопок в таблицу индекса используйте метод indexButtons().
use Illuminate\Database\Eloquent\Model;use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function indexButtons(): ListOf{return parent::indexButtons()->prepend(ActionButton::make('Link',fn(Model $item) => '/endpoint?id=' . $item->getKey()));}
use Illuminate\Database\Eloquent\Model;use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function indexButtons(): ListOf{return parent::indexButtons()->prepend(ActionButton::make('Link',fn(Model $item) => '/endpoint?id=' . $item->getKey()));}

Для массовых действий с элементами необходимо добавить метод bulk().
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function indexButtons(): ListOf{return parent::indexButtons()->prepend(ActionButton::make('Link', '/endpoint')->bulk());}
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function indexButtons(): ListOf{return parent::indexButtons()->prepend(ActionButton::make('Link', '/endpoint')->bulk());}

Кнопки страницы формы
Чтобы добавить кнопки на страницу с формой, используйте метод formButtons().
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function formButtons(): ListOf{return parent::formButtons()->add(ActionButton::make('Link')->method('updateSomething'));}
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function formButtons(): ListOf{return parent::formButtons()->add(ActionButton::make('Link')->method('updateSomething'));}

Метод formBuilderButtons() позволяет добавить дополнительные кнопки непосредственно в форму создания или редактирования.
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function formBuilderButtons(): ListOf{return parent::formBuilderButtons()->add(ActionButton::make('Back', fn() => $this->getIndexPageUrl())->class('btn-lg'));}
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function formBuilderButtons(): ListOf{return parent::formBuilderButtons()->add(ActionButton::make('Back', fn() => $this->getIndexPageUrl())->class('btn-lg'));}

Кнопки страницы детального просмотра
Чтобы добавить кнопки на страницу детального просмотра, используйте метод detailButtons().
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function detailButtons(): ListOf{return parent::detailButtons()->add(ActionButton::make('Link', '/endpoint'));}
use MoonShine\UI\Components\ActionButton;use MoonShine\Support\ListOf;protected function detailButtons(): ListOf{return parent::detailButtons()->add(ActionButton::make('Link', '/endpoint'));}
