K

Core

Akce

Čtyři třídy akcí, co dostane který callback a fluent povrch, který mají všechny společný.

Akce preview
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á akce
Action::make('edit')
->label('Edit')
->icon('pencil')
->color('primary')
->url(fn (User $record) => route('users.edit', $record))
 
// Řádková akce s callbackem
Action::make('archive')
->label('Archive')
->icon('archive')
->action(fn (User $record) => $record->update(['archived' => true]))
->successNotification('Archived!')
 
// Hromadná akce
BulkAction::make('export')
->label('Export Selected')
->icon('download')
->action(fn (Collection $records) => Excel::download($records))
->deselectRecordsAfterCompletion()
 
// Hlavičková akce
HeaderAction::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í