allow to customize resource table

This commit is contained in:
Boy132 2025-05-20 13:25:33 +02:00
parent 0d19867921
commit 2643c1844d
7 changed files with 51 additions and 6 deletions

View File

@ -8,6 +8,7 @@ use App\Filament\Components\Tables\Columns\DateTimeColumn;
use App\Models\ApiKey; use App\Models\ApiKey;
use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanCustomizeRelations;
use App\Traits\Filament\CanModifyTable;
use Filament\Forms\Components\Fieldset; use Filament\Forms\Components\Fieldset;
use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\Textarea; use Filament\Forms\Components\Textarea;
@ -24,6 +25,7 @@ class ApiKeyResource extends Resource
{ {
use CanCustomizePages; use CanCustomizePages;
use CanCustomizeRelations; use CanCustomizeRelations;
use CanModifyTable;
protected static ?string $model = ApiKey::class; protected static ?string $model = ApiKey::class;
@ -61,7 +63,7 @@ class ApiKeyResource extends Resource
return trans('admin/dashboard.advanced'); return trans('admin/dashboard.advanced');
} }
public static function table(Table $table): Table public static function defaultTable(Table $table): Table
{ {
return $table return $table
->columns([ ->columns([

View File

@ -7,6 +7,7 @@ use App\Filament\Admin\Resources\DatabaseHostResource\RelationManagers;
use App\Models\DatabaseHost; use App\Models\DatabaseHost;
use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanCustomizeRelations;
use App\Traits\Filament\CanModifyTable;
use Filament\Forms\Components\Section; use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select; use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
@ -25,6 +26,7 @@ class DatabaseHostResource extends Resource
{ {
use CanCustomizePages; use CanCustomizePages;
use CanCustomizeRelations; use CanCustomizeRelations;
use CanModifyTable;
protected static ?string $model = DatabaseHost::class; protected static ?string $model = DatabaseHost::class;
@ -57,7 +59,7 @@ class DatabaseHostResource extends Resource
return trans('admin/dashboard.advanced'); return trans('admin/dashboard.advanced');
} }
public static function table(Table $table): Table public static function defaultTable(Table $table): Table
{ {
return $table return $table
->columns([ ->columns([

View File

@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\MountResource\Pages;
use App\Models\Mount; use App\Models\Mount;
use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanCustomizeRelations;
use App\Traits\Filament\CanModifyTable;
use Filament\Forms\Components\Group; use Filament\Forms\Components\Group;
use Filament\Forms\Components\Section; use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select; use Filament\Forms\Components\Select;
@ -26,6 +27,7 @@ class MountResource extends Resource
{ {
use CanCustomizePages; use CanCustomizePages;
use CanCustomizeRelations; use CanCustomizeRelations;
use CanModifyTable;
protected static ?string $model = Mount::class; protected static ?string $model = Mount::class;
@ -58,7 +60,7 @@ class MountResource extends Resource
return trans('admin/dashboard.advanced'); return trans('admin/dashboard.advanced');
} }
public static function table(Table $table): Table public static function defaultTable(Table $table): Table
{ {
return $table return $table
->columns([ ->columns([

View File

@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\RoleResource\Pages;
use App\Models\Role; use App\Models\Role;
use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanCustomizeRelations;
use App\Traits\Filament\CanModifyTable;
use Filament\Forms\Components\Actions\Action; use Filament\Forms\Components\Actions\Action;
use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\CheckboxList;
use Filament\Forms\Components\Component; use Filament\Forms\Components\Component;
@ -30,6 +31,7 @@ class RoleResource extends Resource
{ {
use CanCustomizePages; use CanCustomizePages;
use CanCustomizeRelations; use CanCustomizeRelations;
use CanModifyTable;
protected static ?string $model = Role::class; protected static ?string $model = Role::class;
@ -62,7 +64,7 @@ class RoleResource extends Resource
return static::getModel()::count() ?: null; return static::getModel()::count() ?: null;
} }
public static function table(Table $table): Table public static function defaultTable(Table $table): Table
{ {
return $table return $table
->columns([ ->columns([

View File

@ -8,6 +8,7 @@ use App\Models\Role;
use App\Models\User; use App\Models\User;
use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanCustomizeRelations;
use App\Traits\Filament\CanModifyTable;
use Filament\Facades\Filament; use Filament\Facades\Filament;
use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\CheckboxList;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
@ -26,6 +27,7 @@ class UserResource extends Resource
{ {
use CanCustomizePages; use CanCustomizePages;
use CanCustomizeRelations; use CanCustomizeRelations;
use CanModifyTable;
protected static ?string $model = User::class; protected static ?string $model = User::class;
@ -58,7 +60,7 @@ class UserResource extends Resource
return static::getModel()::count() ?: null; return static::getModel()::count() ?: null;
} }
public static function table(Table $table): Table public static function defaultTable(Table $table): Table
{ {
return $table return $table
->columns([ ->columns([

View File

@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\WebhookResource\Pages;
use App\Models\WebhookConfiguration; use App\Models\WebhookConfiguration;
use App\Traits\Filament\CanCustomizePages; use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations; use App\Traits\Filament\CanCustomizeRelations;
use App\Traits\Filament\CanModifyTable;
use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\CheckboxList;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Forms\Form; use Filament\Forms\Form;
@ -22,6 +23,7 @@ class WebhookResource extends Resource
{ {
use CanCustomizePages; use CanCustomizePages;
use CanCustomizeRelations; use CanCustomizeRelations;
use CanModifyTable;
protected static ?string $model = WebhookConfiguration::class; protected static ?string $model = WebhookConfiguration::class;
@ -54,7 +56,7 @@ class WebhookResource extends Resource
return trans('admin/dashboard.advanced'); return trans('admin/dashboard.advanced');
} }
public static function table(Table $table): Table public static function defaultTable(Table $table): Table
{ {
return $table return $table
->columns([ ->columns([

View File

@ -0,0 +1,33 @@
<?php
namespace App\Traits\Filament;
use Closure;
use Filament\Tables\Table;
trait CanModifyTable
{
/** @var array<Closure> */
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;
}
}