Column classes, ensuring seamless integration with Filament’s ecosystem (e.g., permissions, icons, forms).badge(), tapAction(), etc.). This aligns with Filament’s modular design and avoids monolithic overrides.ActionableColumn::make()) with optional chaining for features (badge mode, clickable columns). Reduces cognitive load for adopters.Action::make()). Risk: Incompatible custom actions may break silently.resources/css/actionable-column-custom.css) or namespace selectors.count() vs. whereNull()). May need additional query logic for complex tables.actionable-column-custom.css.->whereNull('related_id')).// Test ActionableColumn in a Filament table
public function test_actionable_column_renders_correctly()
{
$table = new MyFilamentTable();
$column = $table->getColumns()['status'];
$this->assertInstanceOf(ActionableColumn::class, $column);
$this->assertEquals('success', $column->color);
}
tapAction) exposed to untrusted users? Ensure Filament’s built-in action permissions are configured to prevent unauthorized access.TextColumn/BadgeColumn with actionable versions (e.g., "Published" → clickable badge with "Unpublish" action).TextColumn, BadgeColumn) to map to ActionableColumn.// Before
BadgeColumn::make('status')
->color(fn ($record) => $record->is_active ? 'success' : 'danger')
->label(fn ($record) => $record->status),
// After
ActionableColumn::make('status')
->badge()
->color(fn ($record) => $record->is_active ? 'success' : 'danger')
->tapAction(
Action::make('toggleStatus')
->label(fn ($record) => $record->is_active ? 'Deactivate' : 'Activate')
->action(fn ($record) => $record->update(['is_active' => !$record->is_active]))
)
ActionableColumn for low-risk features.ActionableColumn usage during migration.// config/filament.php
'tables' => [
'use_actionable_columns' => env('FEATURE_ACTIONABLE_COLUMNS', false),
],
if (config('filament.tables.use_actionable_columns')) {
return ActionableColumn::make('status')->badge()->tapAction(...);
}
return BadgeColumn::make('status');
EditAction, DeleteAction).resources/css/actionable-column-custom.css (auto-loaded).ACTIONABLE_COLUMN_CUSTOM_CSS_PATH.__('actions.edit')).composer require filament/filament).composer require shreejan/actionable-column
php artisan vendor:publish --provider="Shreejan\ActionableColumn\ActionableColumnServiceProvider"
How can I help you explore Laravel packages today?