Tabulka
SplitColumn
Jedna buňka rozdělená vodorovně mezi několik podřízených sloupců, každý si drží vlastní vykreslení.
Na této stránce
Vodorovně rozdělí prostor mezi několik dětských sloupců.
use NyonCode\WireTable\Columns\SplitColumn;
Základní split
SplitColumn::make('name_status') ->columns([ TextColumn::make('name')->weight('bold'), BadgeColumn::make('status')->colors([...]), ])
Vertikální layout
SplitColumn::make('address') ->columns([ TextColumn::make('street'), TextColumn::make('city'), TextColumn::make('country'), ]) ->vertical()
S mezerou a zarovnáním
SplitColumn::make('user_info') ->columns([ ImageColumn::make('avatar')->circular()->size('sm'), TextColumn::make('name'), ]) ->gap('sm') // 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', nebo krok 0–12 ->alignCenter() // zarovnání na příčné ose, na střed
Zarovnání jde po příčné ose, tedy po té, která layoutu zbyde: ve výchozím
řádku je svislá, ve sloupci po vertical() vodorovná. Řádek se ve výchozím stavu
zarovnává na střed; sloupec roztahuje a roztahuje dál, dokud si neřeknete o něco
jiného — přidání vertical() tak nikdy nepřeskládá split, který už máte.
SplitColumn::make('address') ->columns([TextColumn::make('street'), TextColumn::make('city')]) ->vertical() ->alignStart() // k náběžné hraně místo dětí přes celou šířku
gap() bere obojí slovník — jméno z design systému, nebo krok na Tailwind škále
0–12 jako int či číselný řetězec — a obojí prochází sdíleným
Foundation\Support\GapScale, který z toho udělá literální utilitu. Co
nerozpozná, spadne na výchozí mezeru splitu místo toho, aby se na stránku dostala
třída, kterou Tailwind nikdy nevygeneroval.
API SplitColumn
->columns(array $columns) // Column[] dětské sloupce->vertical() // vertikální layout->horizontal() // horizontální layout (výchozí)->gap(string|int $gap) // 'none'|'xs'|'sm'|'md'|'lg'|'xl', nebo krok 0–12->getGapClass(): string // literální utilita mezery->alignCenter(bool $align = true) // na příčné ose na střed->alignStart() // na začátek příčné osy->getAlignClass(): string // '' dokud se o zarovnání neřeklo->getColumns(): array
Co split odpovídá dotazovému švu za svoje děti:
->isSearchable(): bool // true, pokud je jakékoli dítě searchable->getSearchColumns(): array // sloučené z dětí->isSortable(): bool // true, pokud je sortable kterékoli dítě, jinak vlastní příznak->getSortColumn(): ?string // první sortable dítě, jinak vlastní jméno
Jak funguje řazení splitu
Split je zaregistrovaný pod jménem skupiny, kterou kreslí — výše 'identity' — a
to jméno obvykle není atribut modelu. Dvě metody proto odpovídají na dvě různé
otázky:
isSortable()udělá hlavičku klikací, jakmile je řaditelné kterékoli dítě. Padá zpět na vlastní příznak->sortable()splitu.getSortColumn()pojmenuje, podle čeho ten klik řadí: první řaditelné dítě, s pádem zpět na vlastní jméno splitu.
TableQueryService se ptá getSortColumn() místo toho, aby použil jméno, pod
kterým se na hlavičku kliklo — ty dva se tedy nikdy nemusí shodovat:
SplitColumn::split([ ImageColumn::make('avatar'), TextColumn::make('name')->sortable(), TextColumn::make('email'),], 'identity')// hlavička hlásí „Identity", ORDER BY běží nad `name`
Když chcete, aby skupina řadila podle něčeho, co žádné z jejích dětí nezobrazuje,
zaregistrujte split pod skutečným atributem a označte ho ->sortable() sami.