The Resizable Columns plugin allows you to resize table columns in Filament with persistent width settings. This package provides a seamless way to customize table layouts by letting users adjust column widths according to their preferences.
You can install the package via composer:
composer require asmit/resized-column
Add the plugin to your Filament panel configuration in app/Providers/Filament/AdminPanelProvider.php
:
use Asmit\ResizedColumn\ResizedColumnPlugin; public function panel(Panel $panel): Panel{ return $panel // ... other configuration ->plugins([ // ... other plugins ResizedColumnPlugin::make() ->preserveOnDB() // Enable database storage (optional) ]);}
php artisan filament:assets
# Publish migrationsphp artisan vendor:publish --provider="Asmit\ResizedColumn\ResizedColumnServiceProvider" --tag=resized-column-migrations # Run migrationsphp artisan migrate
To use the Resized Column functionality, simply include the HasResizableColumn
trait in your Filament List Page or your custom page class. This will automatically enable the resizable column feature for all tables in that resource.
use Asmit\ResizedColumn\HasResizableColumn; class ListUsers extends ListRecords{ use HasResizableColumn; protected static string $resource = UserResource::class; // Your existing table definition...}
The package provides two storage mechanisms:
Session Storage (Enabled by default)
Database Storage (Optional)
table_settings
tableYou can enable or disable database storage in your panel configuration:
ResizedColumnPlugin::make() ->preserveOnDB(true) // Enable database storage
You can override any of the following methods in your class to customize behavior:
Method | Description |
---|---|
persistColumnWidthsToDatabase() |
Customize how column widths are saved to database |
persistColumnWidthsToSession() |
Customize how column widths are saved to session |
loadColumnWidthsFromDatabase() |
Customize how column widths are loaded from database |
loadColumnWidthsFromSession() |
Customize how column widths are loaded from session |
getUserId() |
Customize how user identification is handled |
use Asmit\ResizedColumn\HasResizableColumn; class ListUsers extends ListRecords{ use HasResizableColumn; protected function persistColumnWidthsToDatabase(): void { // Your custom database save logic here YourCustomModel::updateOrCreate( [ 'user_id' => $this->getUserId(), 'resource' => $this->getResourceModelFullPath(), // e.g., 'App\Models\User' ], ['settings' => $this->columnWidths] ); }}
If the resize handles are not displaying correctly:
Make sure you have published the Filament assets:
php artisan filament:assets
Clear your browser cache or try a hard refresh (Ctrl+F5)
If you discover a security vulnerability within this package, please send an e-mail to asmitnepali99@gmail.com. All security vulnerabilities will be promptly addressed.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.