From 2643c1844d4cdceb6123994bbbe954aafb66cca8 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 20 May 2025 13:25:33 +0200 Subject: [PATCH] allow to customize resource table --- .../Admin/Resources/ApiKeyResource.php | 4 ++- .../Admin/Resources/DatabaseHostResource.php | 4 ++- .../Admin/Resources/MountResource.php | 4 ++- app/Filament/Admin/Resources/RoleResource.php | 4 ++- app/Filament/Admin/Resources/UserResource.php | 4 ++- .../Admin/Resources/WebhookResource.php | 4 ++- app/Traits/Filament/CanModifyTable.php | 33 +++++++++++++++++++ 7 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 app/Traits/Filament/CanModifyTable.php diff --git a/app/Filament/Admin/Resources/ApiKeyResource.php b/app/Filament/Admin/Resources/ApiKeyResource.php index 4207bd0b3..5b95bf419 100644 --- a/app/Filament/Admin/Resources/ApiKeyResource.php +++ b/app/Filament/Admin/Resources/ApiKeyResource.php @@ -8,6 +8,7 @@ use App\Filament\Components\Tables\Columns\DateTimeColumn; use App\Models\ApiKey; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use App\Traits\Filament\CanModifyTable; use Filament\Forms\Components\Fieldset; use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\Textarea; @@ -24,6 +25,7 @@ class ApiKeyResource extends Resource { use CanCustomizePages; use CanCustomizeRelations; + use CanModifyTable; protected static ?string $model = ApiKey::class; @@ -61,7 +63,7 @@ class ApiKeyResource extends Resource return trans('admin/dashboard.advanced'); } - public static function table(Table $table): Table + public static function defaultTable(Table $table): Table { return $table ->columns([ diff --git a/app/Filament/Admin/Resources/DatabaseHostResource.php b/app/Filament/Admin/Resources/DatabaseHostResource.php index 223945ac2..1d69cb902 100644 --- a/app/Filament/Admin/Resources/DatabaseHostResource.php +++ b/app/Filament/Admin/Resources/DatabaseHostResource.php @@ -7,6 +7,7 @@ use App\Filament\Admin\Resources\DatabaseHostResource\RelationManagers; use App\Models\DatabaseHost; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use App\Traits\Filament\CanModifyTable; use Filament\Forms\Components\Section; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; @@ -25,6 +26,7 @@ class DatabaseHostResource extends Resource { use CanCustomizePages; use CanCustomizeRelations; + use CanModifyTable; protected static ?string $model = DatabaseHost::class; @@ -57,7 +59,7 @@ class DatabaseHostResource extends Resource return trans('admin/dashboard.advanced'); } - public static function table(Table $table): Table + public static function defaultTable(Table $table): Table { return $table ->columns([ diff --git a/app/Filament/Admin/Resources/MountResource.php b/app/Filament/Admin/Resources/MountResource.php index a22848001..ec4bef17e 100644 --- a/app/Filament/Admin/Resources/MountResource.php +++ b/app/Filament/Admin/Resources/MountResource.php @@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\MountResource\Pages; use App\Models\Mount; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use App\Traits\Filament\CanModifyTable; use Filament\Forms\Components\Group; use Filament\Forms\Components\Section; use Filament\Forms\Components\Select; @@ -26,6 +27,7 @@ class MountResource extends Resource { use CanCustomizePages; use CanCustomizeRelations; + use CanModifyTable; protected static ?string $model = Mount::class; @@ -58,7 +60,7 @@ class MountResource extends Resource return trans('admin/dashboard.advanced'); } - public static function table(Table $table): Table + public static function defaultTable(Table $table): Table { return $table ->columns([ diff --git a/app/Filament/Admin/Resources/RoleResource.php b/app/Filament/Admin/Resources/RoleResource.php index bb5831339..8c2f20147 100644 --- a/app/Filament/Admin/Resources/RoleResource.php +++ b/app/Filament/Admin/Resources/RoleResource.php @@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\RoleResource\Pages; use App\Models\Role; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use App\Traits\Filament\CanModifyTable; use Filament\Forms\Components\Actions\Action; use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\Component; @@ -30,6 +31,7 @@ class RoleResource extends Resource { use CanCustomizePages; use CanCustomizeRelations; + use CanModifyTable; protected static ?string $model = Role::class; @@ -62,7 +64,7 @@ class RoleResource extends Resource return static::getModel()::count() ?: null; } - public static function table(Table $table): Table + public static function defaultTable(Table $table): Table { return $table ->columns([ diff --git a/app/Filament/Admin/Resources/UserResource.php b/app/Filament/Admin/Resources/UserResource.php index a5407cb80..b2bc29d92 100644 --- a/app/Filament/Admin/Resources/UserResource.php +++ b/app/Filament/Admin/Resources/UserResource.php @@ -8,6 +8,7 @@ use App\Models\Role; use App\Models\User; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use App\Traits\Filament\CanModifyTable; use Filament\Facades\Filament; use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\TextInput; @@ -26,6 +27,7 @@ class UserResource extends Resource { use CanCustomizePages; use CanCustomizeRelations; + use CanModifyTable; protected static ?string $model = User::class; @@ -58,7 +60,7 @@ class UserResource extends Resource return static::getModel()::count() ?: null; } - public static function table(Table $table): Table + public static function defaultTable(Table $table): Table { return $table ->columns([ diff --git a/app/Filament/Admin/Resources/WebhookResource.php b/app/Filament/Admin/Resources/WebhookResource.php index ec095307a..fafc3c4e9 100644 --- a/app/Filament/Admin/Resources/WebhookResource.php +++ b/app/Filament/Admin/Resources/WebhookResource.php @@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\WebhookResource\Pages; use App\Models\WebhookConfiguration; use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizeRelations; +use App\Traits\Filament\CanModifyTable; use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; @@ -22,6 +23,7 @@ class WebhookResource extends Resource { use CanCustomizePages; use CanCustomizeRelations; + use CanModifyTable; protected static ?string $model = WebhookConfiguration::class; @@ -54,7 +56,7 @@ class WebhookResource extends Resource return trans('admin/dashboard.advanced'); } - public static function table(Table $table): Table + public static function defaultTable(Table $table): Table { return $table ->columns([ diff --git a/app/Traits/Filament/CanModifyTable.php b/app/Traits/Filament/CanModifyTable.php new file mode 100644 index 000000000..96968b13c --- /dev/null +++ b/app/Traits/Filament/CanModifyTable.php @@ -0,0 +1,33 @@ + */ + protected static array $customTableModifications = []; + + public static function modifyTable(Closure $closure): void + { + static::$customTableModifications[] = $closure; + } + + public static function defaultTable(Table $table): Table + { + return $table; + } + + public static function table(Table $table): Table + { + $table = static::defaultTable($table); + + foreach (static::$customTableModifications as $closure) { + $table = $closure($table); + } + + return $table; + } +}