Core
Akce
Čtyři třídy akcí, co dostane který callback a fluent povrch, který mají všechny společný.
Na této stránce
Akce je deklarované tlačítko s callbackem za sebou: Action pro jeden záznam,
BulkAction pro výběr, HeaderAction pro ani jedno a ActionGroup na složení
několika do rozbalovacího menu. Všechny dědí z BaseAction, takže to, co se
naučíte tady, platí všude, kde se kreslí tlačítko — v řádku tabulky, v hlavičce,
v infolistu, na stránce i ve vlastní komponentě.
Typy akcí
| Třída | Případ užití | Callback dostane |
|---|---|---|
Action |
Řádková akce — jeden záznam | fn (Model $record, array $data) |
BulkAction |
Vybrané záznamy | fn (Collection $records, array $data) |
HeaderAction |
Hlavička tabulky — bez kontextu záznamu | fn (array $data) |
ActionGroup |
Seskupuje akce do rozbalovací nabídky | — |
Všechny rozšiřují BaseAction a sdílejí stejné fluent API pro popisek, ikonu, barvu, velikost, modal, životní cyklus.
Předpřipravené akce
| Třída | Popis |
|---|---|
DeleteAction |
Smazání jednoho záznamu s potvrzením |
DeleteBulkAction |
Hromadné smazání s potvrzením |
RestoreBulkAction |
Hromadné obnovení soft-smazaných záznamů, s potvrzením |
ForceDeleteBulkAction |
Hromadné trvalé smazání soft-smazaných záznamů, s potvrzením |
EditAction |
Otevře edit modal/formulář |
ViewAction |
Otevře view modal |
use NyonCode\WireCore\Actions\DeleteAction;use NyonCode\WireCore\Actions\DeleteBulkAction; $table->actions([DeleteAction::make()]) ->bulkActions([DeleteBulkAction::make()]);
Každý preset dodává popisek, ikonu, barvu a potvrzovací modal; chování
dodáte pomocí ->action(). Soft-delete presety se párují s tabulkou zúženou na
trashed záznamy (např. ->query(User::onlyTrashed())):
use NyonCode\WireCore\Actions\ForceDeleteBulkAction;use NyonCode\WireCore\Actions\RestoreBulkAction; $table->bulkActions([ RestoreBulkAction::make()->action(fn ($records) => $records->each->restore()), ForceDeleteBulkAction::make()->action(fn ($records) => $records->each->forceDelete()),]);
Základní použití
use NyonCode\WireCore\Actions\Action;use NyonCode\WireCore\Actions\BulkAction;use NyonCode\WireCore\Actions\HeaderAction; // Řádková akceAction::make('edit') ->label('Edit') ->icon('pencil') ->color('primary') ->url(fn (User $record) => route('users.edit', $record)) // Řádková akce s callbackemAction::make('archive') ->label('Archive') ->icon('archive') ->action(fn (User $record) => $record->update(['archived' => true])) ->successNotification('Archived!') // Hromadná akceBulkAction::make('export') ->label('Export Selected') ->icon('download') ->action(fn (Collection $records) => Excel::download($records)) ->deselectRecordsAfterCompletion() // Hlavičková akceHeaderAction::make('create') ->label('New User') ->icon('plus') ->url(route('users.create')) ->badge(fn () => User::whereNull('verified_at')->count()) ->badgeColor('danger')
Skupiny akcí
Sbalte sekundární akce do rozbalovací nabídky. Na telefonu se menu otevře jako
bottom sheet — přepište pomocí ->sheetOnMobile(false) / ->mobileBreakpoint('md');
viz mobilní prezentace.
use NyonCode\WireCore\Actions\ActionGroup; $table->actions([ Action::make('edit')->icon('pencil'), ActionGroup::make('more', [ Action::make('duplicate') ->icon('copy') ->action(fn ($record) => $record->replicate()->save()), Action::make('archive') ->icon('archive') ->action(fn ($record) => $record->archive()), Action::divider(), // vizuální oddělovač Action::make('delete') ->icon('trash') ->color('danger') ->requiresConfirmation() ->action(fn ($record) => $record->delete()), ])->divided(), // automaticky vložit oddělovače mezi položky]);
Skupiny podporují badge() a badgeColor() stejně jako HeaderAction a k tomu
tři vlastní nastavení:
->dropdownPosition(string|Placement $position) // 'bottom-start'|'bottom-end'|'top-start'|'top-end' — výchozí 'bottom-end'->dropdownWidth(string $width) // Tailwind třída šířky panelu, např. 'w-56'->lazyMenu(bool $lazy = true) // menu se postaví v prohlížeči při prvním otevření
Za větu stojí lazyMenu(). Ve výchozím stavu vykreslí skupina celé menu do
každého řádku; s ním nese řádek jen spouštěč a JSON popis položek a menu se
postaví při prvním otevření. To vymění malou cenu při otevření za velký pokles
práce na vykreslení každého řádku — vyplatí se na dlouhé tabulce, kde má skupinu
každý řádek, a nevyplatí se na tabulce o třech řádcích.
Dynamické vlastnosti
Všechny vlastnosti přijímají closury — vyhodnocené pro každý záznam v době renderu:
Action::make('toggle') ->label(fn (User $record) => $record->is_active ? 'Deactivate' : 'Activate') ->color(fn (User $record) => $record->is_active ? 'danger' : 'success') ->icon(fn (User $record) => $record->is_active ? 'x' : 'check') ->hidden(fn (User $record) => $record->trashed())
Reference BaseAction API
Sdílené napříč Action, BulkAction, HeaderAction:
->label(string|Closure $label)->icon(string|Closure $icon, ?string $position = null) // pozice: 'before' | 'after'->color(string|Closure $color) // primary, danger, success, warning, info, gray->size(string $size) // xs, sm, md, lg->outlined(bool $outlined = true)->tooltip(string|Closure $tooltip)->action(Closure $callback)->hidden(bool|Closure $hidden = true)->visible(bool|Closure $visible = true)->disabled(bool|Closure $disabled = true)->requiresConfirmation()->modalHeading(string $heading)->modalDescription(string $description)->modalIcon(string $icon, ?string $color)->modalWidth(string $width)->modalSubmitActionLabel(string $label)->modalCancelActionLabel(string $label)->slideOver()->form(array $components)->fillFormUsing(Closure $fn)->steps(array $steps)->modal(ModalContract $modal) // Modal | SlideOver | ConfirmationDialog | Wizard->before(Closure $fn)->after(Closure $fn)->successNotification(string $message)->failureNotification(string $message)->keyboardShortcut(string $keys)->extraAttributes(array $attrs)
Override prezentace řádkové akce (Action), respektované pod Table::actionsStyle('quiet'):
->quiet(bool $quiet = true) // neutrální v klidu, barva na hoveru/focusu (obvykle nastaveno pro celou tabulku)->solid(bool $solid = true) // vynutí plnou výplň i pod tichou tabulkou
Blade komponenty
<x-wire-actions::button :action="$action" /><x-wire-actions::group :group="$group" /><x-wire-actions::modal-host :component="$this" /> {{-- pro WithActions hostitele --}}<x-wire-actions::halt-host :component="$this" /> {{-- jen pro halt bez runtimu --}}
V této sekci
| Stránka | Co pokrývá |
|---|---|
| Modaly akcí | Potvrzení, slide-over, modaly s formulářem a infolistem, wizardy a jejich vrstvení |
| Životní cyklus a fronty | Hooky kolem běhu, zastavení běhu zevnitř — i na komponentě úplně bez akcí — a předání práce frontě |
| Tlačítka a vzhled | Icon buttony, odkazy, zkratky, velikosti a tichá řádková varianta |
| Mimo tabulku | WithActions na libovolné Livewire komponentě |
| Workflow a přechody | Které přechody stavů jsou legální, deklarované na jednom místě |
Související
- Modaly — třídy modalů, které akce otevírá
- Akce v tabulce — vlastní řádkové, hromadné a hlavičkové akce tabulky
- Akce nad záznamem — celý řádek jako ovládací prvek
- Notifikace — co akce řekne, když doběhne
- Autorizace — gate, na kterou se ptá každá akce