advanced
Record infolist
Draw the card body from Filament infolist entries instead of the default title and description.
Use recordInfolist() to replace the default card title and description with Filament infolist
entries. Extend KanbanPage — the schema resolution for per-card infolists is handled for you.
Basic card
<?php
use App\Models\Task;
use Asmit\AdvancedKanban\Kanban;
use Filament\Infolists\Components\TextEntry;
public function kanban(Kanban $kanban): Kanban
{
return $kanban
->model(Task::class)
->statusField('status')
->recordInfolist([
TextEntry::make('title'),
TextEntry::make('description'),
])
->columns([
// Your columns here
]);
}
Actions in infolist
Add Action directly alongside entries:
use Filament\Actions\Action;
use Filament\Forms\Components\Textarea;
use Filament\Infolists\Components\TextEntry;
->recordInfolist(function (Task $record): array {
$priority = match ($record->priority) {
'high' => ['label' => 'High', 'color' => 'warning'],
'urgent' => ['label' => 'Urgent', 'color' => 'danger'],
default => ['label' => $record->priority, 'color' => 'gray'],
};
return [
TextEntry::make('title'),
TextEntry::make('priority')
->hiddenLabel()
->badge()
->formatStateUsing(fn (): string => $priority['label'])
->color($priority['color'])
->visible(in_array($record->priority, ['high', 'urgent'], strict: true))
->grow(false),
Action::make('comment')
->label('Comment')
->schema([
Textarea::make('body')->required(),
])
->action(fn (Task $record, array $data) => $record->comments()->create($data)),
];
})
The record is available on the action closure — you do not pass it manually.
vs record actions
| Record actions | Infolist actions | |
|---|---|---|
| Where | Card menu — recordActions() | Inside the card body — recordInfolist() |
| Best for | Edit, delete, replicate, move to top | An action tied to a specific field |