asmit/resized-column
| Install | |
|---|---|
composer require asmit/resized-column |
|
| Latest Version: | 4.0.2 |
| License: | MIT |
| Last Updated: | Aug 4, 2026 |
| Links: | GitHub · Packagist |
asmit/resized-column
Resizable, reorderable, and pinnable table columns for Filament. Users drag column edges to resize, drag headers to reorder, and pin columns to the left — every choice persisted per user in the session, the database, or both.
Features
- Drag-to-resize — grab any column edge; widths persist per user
- Drag-to-reorder —
->dragReorderableColumns()puts a grip on each header - Pinned columns —
->sticky()for developer defaults,->stickableColumns()for a user-facing "Pin columns" panel with draft + Apply, plus click-the-pin to unpin from the header - Persistence — session by default, database opt-in; widths, order, and pins share one settings row per user
- Works without a panel — the same trait drives tables in plain Livewire components
- Filament-native styling — pinned cells match Filament's own table surfaces in light and dark, and stay opaque while scrolling
- Customisable trigger — restyle the toolbar button via
->stickyManagerTriggerAction()
Requirements
- Filament 3, 4, or 5
Installation
composer require asmit/resized-column
npm --prefix vendor/asmit/resized-column run build
php artisan filament:assets
When developing the package from source (path repo), run npm run build inside the package directory whenever you change resources/css/ or resources/js/, then php artisan filament:assets in the host app.
Register the plugin in your panel provider:
use Asmit\ResizedColumn\ResizedColumnPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
ResizedColumnPlugin::make()
->preserveOnDB(), // optional — database persistence
]);
}
Database persistence also needs the settings table:
php artisan vendor:publish --provider="Asmit\ResizedColumn\ResizedColumnServiceProvider" --tag=resized-column-migrations
php artisan migrate
Usage
Add the trait to any list page or Livewire component that renders a table:
use Asmit\ResizedColumn\HasResizableColumn;
class ListUsers extends ListRecords
{
use HasResizableColumn;
protected static string $resource = UserResource::class;
}
Opt into reordering and pinning per table:
public function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name')->sticky(), // pinned by default
TextColumn::make('email'),
TextColumn::make('created_at'),
])
->dragReorderableColumns()
->stickableColumns();
}
Credits
Contributing
Contributions are welcome. Please see CONTRIBUTING.md before opening an issue or pull request.
Security
If you discover a security issue, please e-mail asmitnepali99@gmail.com instead of opening a public issue. All reports are addressed promptly.
Changelog
Please see Releases for recent changes.
License
MIT License. See LICENSE.txt for details.
Related Packages
laravel-paypalpayment is simple package help you process direct credit card paym...
Powerful PHP database abstraction layer (DBAL) with many features for database s...