spiggle / list-view
Filament v5 plugin that toggles tables between table and alphabetical list views.
Fund package maintenance!
Requires
- php: ^8.2
- filament/filament: ^5.0 || ^5.7
- illuminate/contracts: ^11.0 || ^12.0 || ^13.0
- illuminate/support: ^11.0 || ^12.0 || ^13.0
Requires (Dev)
- phpunit/phpunit: ^11.0 || ^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
A Filament v5 plugin that adds a table / list toggle to every table on the panel.
Table view stays the default (the current Filament table). List view switches to stacked rows, groups records A–Z, and keeps search, pagination, and row click (slide-over or full page).
Screenshots
Table view (default) — the normal Filament table, with the toggle in the toolbar:
List view — alphabetical groups, initials, title + subtitle. Click a row to view or edit:
Row click — same action as a table row (Users open a slide-over):
Requirements
- PHP 8.2+
- Laravel 11, 12, or 13
- Filament 5.0+
Install
The package is not on Packagist yet. Add the GitHub repository, then require it:
composer config repositories.spiggle-list-view vcs https://github.com/skillbobby/Spiggle-List-View.git composer require spiggle/list-view:^1.0
Register the plugin on your Filament panel:
use Spiggle\ListView\Filament\ListViewPlugin; public function panel(Panel $panel): Panel { return $panel ->plugin(ListViewPlugin::make()); }
It works alongside other panel plugins (for example a theme):
$panel ->plugin(MaterialThemePlugin::make()) ->plugin(ListViewPlugin::make());
Laravel auto-discovers the package service provider. After the Composer require, registering ListViewPlugin::make() on the panel is the only application setup: the toggle is added to every table toolbar, and styles are included with the plugin, so there is no asset publish step.
How it works
- A table / list control is injected at the end of every Filament table toolbar.
- Table is the default. The existing columns, filters, search, and pagination stay as they are.
- List rebuilds the current table as stacked rows:
- Title from
name,title,number, oremail, then the first visible text column - Subtitle from
email,description, orsubtitlewhen that is not the title, otherwise the next visible text column - Colored initials when the record has no
avatar,avatar_url, orimage - Groups by the first letter of the title (A–Z); titles that do not start with a letter are grouped under
#
- Title from
- The choice is stored in the session per Livewire table class, so each resource remembers its own mode.
- Clicking a list row uses the same
recordAction/recordUrlas the table (slide-over, modal, or full page).
No changes are required on individual resources. Any HasTable page gets the toggle.
Sponsors
If this package is useful, consider supporting development:
License
MIT


