filament/infolists
Build rich, read-only detail views in Filament with Infolists. Compose fields, sections, and layouts to display record data in panels, resources, and pages, with configurable formatting, visibility rules, and responsive components for admin UIs.
Installation
composer require filament/infolists
Publish the package assets (if needed):
php artisan vendor:publish --provider="Filament\Infolists\InfolistsServiceProvider"
First Use Case Create a Livewire component that displays read-only data:
use Filament\Infolists\Infolist;
use Filament\Infolists\Components\TextEntry;
public function infolist(): Infolist
{
return Infolist::make()
->schema([
TextEntry::make('name'),
TextEntry::make('email'),
]);
}
Where to Look First
vendor/filament/infolists/src for core logicresources/views/vendor/filament/infolists for default Blade templatesBasic Data Display
Infolist::make()
->schema([
TextEntry::make('title'),
TextEntry::make('created_at')->date(),
]);
Nested Relationships
Infolist::make()
->schema([
TextEntry::make('user.name'),
TextEntry::make('user.email'),
]);
Conditional Rendering
Infolist::make()
->schema([
TextEntry::make('status')
->visible(fn ($record) => $record->status === 'active'),
]);
Custom Components
use Filament\Infolists\Components\IconEntry;
Infolist::make()
->schema([
IconEntry::make('status')
->icon(fn ($record) => $record->status === 'active' ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle'),
]);
Integration with Filament Admin
use Filament\Tables\Table;
Table::make(Post::class)
->columns([...])
->actions([
Tables\Actions\ViewAction::make()
->infolist(fn ($record) => Infolist::make()
->schema([...])
),
]);
Infolist components in unit tests using Infolist::make().->getState() or ->getRecord() methods.State vs Record Confusion
->getState() returns the Livewire component state (e.g., form inputs).->getRecord() returns the model instance.->getRecord() for model data unless you explicitly need state.Nested Relationships and Lazy Loading
$record->load('user'); // Before passing to Infolist
Blade Template Overrides
php artisan vendor:publish --tag="filament-infolists-views"
resources/views/vendor/filament/infolists/components/.Livewire State Persistence
$this->resetInfolistState();
dd($this->infolist()->getRecord());
dd($this->infolist()->schema);
Custom Components
Extend Filament\Infolists\Components\InfolistComponent:
class CustomEntry extends InfolistComponent
{
protected string $view = 'filament.infolists.components.custom-entry';
}
Modify Default Behavior
Override Infolist class methods (e.g., getSchema()) in a subclass.
Localization Use Filament’s localization system:
TextEntry::make('title')->label(__('filament-infolists::fields.title'));
Styling
Target classes like .filament-infolist-entry in CSS:
.filament-infolist-entry { padding: 0.5rem; }
How can I help you explore Laravel packages today?