Sortable
Reference API
NyonCode\WireSortable\SortableTable
Na této stránce
- SortableTable
- reorderable(?string $orderColumn = null, bool $condition = true): static
- alwaysReorderable(?string $orderColumn = null): static
- isReorderable(): bool
- isAlwaysReorderable(): bool
- getOrderColumn(): string
- paginatedWhileReordering(bool $enabled = true): static
- isPaginatedWhileReordering(): bool
- columnReorderable(bool $enabled = true): static
- isColumnReorderable(): bool
- WithSortable
- Vlastnosti
- Veřejné metody
- Protected přepisy
- Protected hooky
- ReorderableColumnOrder
- Vlastnosti
- Relace
- Statické metody
- Konfigurace
- Alpine.js komponenta
- Config volby
- Chování
- Překlady
SortableTable
NyonCode\WireSortable\SortableTable
Rozšiřuje NyonCode\WireTable\Table. Všechny základní metody Table zůstávají dostupné.
reorderable(?string $orderColumn = null, bool $condition = true): static
Zapnout drag & drop řazení řádků.
| Parametr | Typ | Výchozí | Popis |
|---|---|---|---|
$orderColumn |
?string |
'sort_order' |
Databázový sloupec pro sort pozici |
$condition |
bool |
true |
Podmíněně zapnout řazení |
// Výchozí sloupec$table->reorderable(); // Vlastní sloupec$table->reorderable('position'); // Podmíněné$table->reorderable('position', $user->can('reorder'));
alwaysReorderable(?string $orderColumn = null): static
Udržet řazení řádků aktivní trvale — žádné toggle tlačítko se nevykreslí. Implikuje reorderable().
| Parametr | Typ | Výchozí | Popis |
|---|---|---|---|
$orderColumn |
?string |
výchozí z configu | Databázový sloupec pro sort pozici |
$table->alwaysReorderable();$table->alwaysReorderable('position');
isReorderable(): bool
Vrací, zda je řazení řádků zapnuté.
isAlwaysReorderable(): bool
Vrací, zda je řazení vždy aktivní (toggle tlačítko skryté).
getOrderColumn(): string
Vrací název sloupce pořadí.
paginatedWhileReordering(bool $enabled = true): static
Udržet stránkování zapnuté v reorder režimu. Ve výchozím stavu je stránkování během řazení vypnuté.
isPaginatedWhileReordering(): bool
Vrací, zda je stránkování zachováno během reorder režimu.
columnReorderable(bool $enabled = true): static
Zapnout nebo vypnout uživatelsky specifické řazení sloupců. Pořadí sloupců se perzistuje per uživatel + model v databázi.
isColumnReorderable(): bool
Vrací, zda je řazení sloupců zapnuté.
WithSortable
NyonCode\WireSortable\Concerns\WithSortable
Livewire trait. Použijte vedle WithTable:
use WithTable, WithSortable;
Vlastnosti
| Vlastnost | Typ | Výchozí | Popis |
|---|---|---|---|
$isReordering |
bool |
false |
Zda je tabulka v reorder režimu řádků |
$reorderableColumnOrder |
array |
[] |
Aktuální pořadí sloupců (načtené z DB při mountu) |
Veřejné metody
toggleReordering(): void
Přepnout reorder režim řádků on/off. Vyčistí cachované záznamy pro vynucení re-query.
No-op, pokud tabulka není reorderable.
reorderRows(array $items): void
Zpracovat drag & drop řádků. Voláno Alpine.js po dokončení drag operace. Aktualizuje sloupec pořadí v databázové transakci.
Každá položka: ['value' => string|int, 'order' => int]
No-op, pokud:
- Tabulka není reorderable
- Tabulka není v reorder režimu (
$isReordering === false)
reorderColumns(array $columnOrder): void
Zpracovat drag & drop sloupců. Zvaliduje názvy sloupců proti definici tabulky a perzistuje do tabulky reorderable_column_orders.
No-op, pokud:
- Tabulka není column-reorderable
- Uživatel není autentizován (
getReorderableUserId()vracínull) - Nejsou poskytnuty platné názvy sloupců
resetColumnOrder(): void
Resetuje pořadí sloupců na výchozí (jak je definováno v table()) a smaže databázový záznam.
getReorderableColumns(): array
Vrací sloupce v uživatelem uloženém pořadí. Nově přidané sloupce (nepřítomné v uloženém pořadí) se připojí na konec. Odebrané sloupce (v uloženém pořadí, ale už ne v definici tabulky) se tiše přeskočí.
isTableReordering(): bool
Vrací, zda je tabulka aktuálně v reorder režimu řádků. Alias pro $this->isReordering.
Protected přepisy
Tyto metody přepisují protected factory/hook metody WithTable. Klauzule insteadof není potřeba — PHP je resolvuje automaticky, protože WithSortable je uveden za WithTable.
getTableView(): string
Vrací 'wire-sortable::tables.index', když je zapnuté řazení řádků nebo sloupců. Jinak propadne na 'wire-table::tables.index'.
interceptTableRecords(): LengthAwarePaginator|Paginator|CursorPaginator|Collection|null
V reorder režimu (bez paginatedWhileReordering): obejde hledání, filtry, řazení a stránkování. Vrátí všechny záznamy seřazené podle sort sloupce vzestupně.
Jinak: vrátí null, aby WithTable zpracoval načítání záznamů normálně.
Protected hooky
beforeReorder(array $items): void
Voláno před databázovým updatem. Přepište pro autorizaci nebo pre-processing.
protected function beforeReorder(array $items): void{ $this->authorize('reorder', Task::class);}
afterReorder(array $items): void
Voláno po databázovém updatu. Přepište pro invalidaci cache nebo události.
protected function afterReorder(array $items): void{ Cache::forget('tasks.ordered'); $this->dispatch('tasks-reordered');}
getReorderableUserId(): ?int
Vrací ID uživatele pro perzistenci pořadí sloupců. Výchozí auth()->id().
Přepište pro vlastní auth guardy:
protected function getReorderableUserId(): ?int{ return auth('admin')->id();}
getReorderableModelType(): ?string
Vrací klíč typu modelu pro perzistenci pořadí sloupců. Výchozí je název třídy Eloquent modelu (např. App\Models\Task).
Přepište pro použití vlastního klíče:
protected function getReorderableModelType(): ?string{ return static::class; // třída komponenty místo modelu}
ReorderableColumnOrder
NyonCode\WireSortable\Models\ReorderableColumnOrder
Eloquent model pro tabulku reorderable_column_orders.
Vlastnosti
| Vlastnost | Typ | Popis |
|---|---|---|
$user_id |
int |
Cizí klíč do tabulky users |
$model_type |
string |
Název třídy Eloquent modelu |
$column_order |
array |
JSON-cast pole názvů sloupců |
Relace
user(): BelongsTo
Patří modelu uživatele nakonfigurovanému ve wire-sortable.user_model.
Statické metody
getOrder(int $userId, string $modelType, string $tableIdentifier): ?array
Získat uložené pořadí sloupců pro kombinaci uživatel + model + tabulka. Vrací null, pokud záznam neexistuje.
saveOrder(int $userId, string $modelType, string $tableIdentifier, array $columnOrder): void
Vytvořit nebo aktualizovat pořadí sloupců pro kombinaci uživatel + model + tabulka (upsert).
deleteOrder(int $userId, string $modelType, string $tableIdentifier): void
Smazat záznam pořadí sloupců pro kombinaci uživatel + model + tabulka.
Konfigurace
config/wire-sortable.php
| Klíč | Typ | Výchozí | Popis |
|---|---|---|---|
order_column |
string |
'sort_order' |
Výchozí název sloupce pořadí |
sortablejs_cdn |
?string |
CDN URL | Zdrojová URL SortableJS, null pro vypnutí |
animation |
int |
150 |
Doba drag animace v milisekundách |
user_model |
string |
'App\\Models\\User' |
Třída modelu uživatele pro relace pořadí sloupců |
user_key_type |
string |
'id' |
Typ primárního klíče modelu uživatele, použitý migrací k otypování sloupce user_id. Použijte 'uuid' nebo 'ulid' pro neceločíselné auth klíče |
Alpine.js komponenta
wireSortable(config) je registrována globálně přes Alpine.data().
Config volby
| Volba | Typ | Výchozí | Popis |
|---|---|---|---|
rowReorderable |
bool |
false |
Zapnout řazení řádků |
columnReorderable |
bool |
false |
Zapnout řazení sloupců |
isReordering |
bool (entangled) |
false |
Livewire-synced stav reorder režimu |
orderColumn |
string |
'sort_order' |
Název sloupce pořadí |
animation |
int |
150 |
Doba SortableJS animace (ms) |
Chování
isReorderingje entanglováno s Livewire vlastností$isReorderingpřes@entangle- Když se
isReorderingzmění, komponenta automaticky inicializuje nebo zničí SortableJS na<tbody> - Drag handly se dynamicky přidávají/odebírají z DOM
- Řazení sloupců je vždy aktivní, když je
columnReorderabletrue(nezávisle na reorder režimu) - Po aktualizaci tabulky Livewire se SortableJS znovu inicializuje
Překlady
lang/{locale}/messages.php
| Klíč | EN | CS | Popis |
|---|---|---|---|
reorder |
Reorder | Přeuspořádat | Label toggle tlačítka (neaktivní) |
done_reordering |
Done reordering | Hotovo | Label toggle tlačítka (aktivní) |