From f415a3a60a96554ff4b26e07ea922ee7f6525710 Mon Sep 17 00:00:00 2001 From: arbazajaz Date: Tue, 10 Feb 2026 17:11:11 +0500 Subject: [PATCH] Add Filament v4 support (v3.0.0) --- composer.json | 3 +- .../ActivitylogRelationManager.php | 12 +++--- .../ActivitylogResource.php | 36 ++++++++-------- .../Pages/ListActivitylog.php | 2 +- .../Pages/ViewActivitylog.php | 2 +- .../Schemas/ActivitylogForm.php | 41 ++++++++++++------- 6 files changed, 55 insertions(+), 41 deletions(-) diff --git a/composer.json b/composer.json index fa465fe..6724ce4 100755 --- a/composer.json +++ b/composer.json @@ -17,6 +17,7 @@ ], "require": { "php": "^8.2", + "filament/filament": "^4.0 || ^5.0", "illuminate/contracts": "^11.0||^12.0", "spatie/laravel-activitylog": "^4.8", "spatie/laravel-package-tools": "^1.16" @@ -82,4 +83,4 @@ }, "minimum-stability": "dev", "prefer-stable": true -} +} \ No newline at end of file diff --git a/src/RelationManagers/ActivitylogRelationManager.php b/src/RelationManagers/ActivitylogRelationManager.php index 66da7fe..94ddf9e 100755 --- a/src/RelationManagers/ActivitylogRelationManager.php +++ b/src/RelationManagers/ActivitylogRelationManager.php @@ -2,13 +2,15 @@ namespace Rmsramos\Activitylog\RelationManagers; +use Filament\Actions\ViewAction as ActionsViewAction; use Filament\Forms\Form; use Filament\Resources\RelationManagers\RelationManager; +use Filament\Schemas\Schema; use Filament\Tables\Actions\ViewAction; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Model; use Rmsramos\Activitylog\ActivitylogPlugin; -use Rmsramos\Activitylog\Resources\ActivitylogResource; +use Rmsramos\Activitylog\Resources\ActivitylogResource\ActivitylogResource; class ActivitylogRelationManager extends RelationManager { @@ -24,9 +26,9 @@ public static function getTitle(Model $ownerRecord, string $pageClass): string ->headline(); } - public function form(Form $form): Form + public function form(Schema $Schema): Schema { - return ActivitylogResource::form($form); + return ActivitylogResource::form($Schema); } public function table(Table $table): Table @@ -34,8 +36,8 @@ public function table(Table $table): Table return ActivitylogResource::table( $table ->heading(ActivitylogPlugin::get()->getPluralLabel()) - ->actions([ - ViewAction::make(), + ->headerActions([ + ActionsViewAction::make(), ]) ); } diff --git a/src/Resources/ActivitylogResource/ActivitylogResource.php b/src/Resources/ActivitylogResource/ActivitylogResource.php index 3c31de6..12aacff 100755 --- a/src/Resources/ActivitylogResource/ActivitylogResource.php +++ b/src/Resources/ActivitylogResource/ActivitylogResource.php @@ -2,36 +2,36 @@ namespace Rmsramos\Activitylog\Resources\ActivitylogResource; -use ActivitylogForm; + use Exception; +use Filament\Tables\Table; +use Illuminate\Support\Str; +use Filament\Schemas\Schema; use Filament\Facades\Filament; -use Filament\Forms\Components\DatePicker; -use Filament\Forms\Components\Placeholder; -use Filament\Notifications\Notification; use Filament\Resources\Resource; -use Filament\Schemas\Schema; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\HtmlString; use Filament\Tables\Columns\Column; +use Filament\Tables\Filters\Filter; +use Livewire\Component as Livewire; +use Illuminate\Support\Facades\Gate; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\ViewColumn; -use Filament\Tables\Filters\Filter; +use Illuminate\Database\Eloquent\Model; +use Spatie\Activitylog\Models\Activity; +use Filament\Notifications\Notification; +use Filament\Forms\Components\DatePicker; use Filament\Tables\Filters\SelectFilter; -use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\ModelNotFoundException; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Gate; -use Illuminate\Support\HtmlString; -use Illuminate\Support\Str; -use Livewire\Component as Livewire; -use Rmsramos\Activitylog\Actions\Concerns\ActionContent; use Rmsramos\Activitylog\ActivitylogPlugin; use Rmsramos\Activitylog\Helpers\ActivityLogHelper; +use Illuminate\Database\Eloquent\ModelNotFoundException; +use Rmsramos\Activitylog\Actions\Concerns\ActionContent; +use Rmsramos\Activitylog\Traits\HasCustomActivityResource; use Rmsramos\Activitylog\RelationManagers\ActivitylogRelationManager; use Rmsramos\Activitylog\Resources\ActivitylogResource\Pages\ListActivitylog; use Rmsramos\Activitylog\Resources\ActivitylogResource\Pages\ViewActivitylog; -use Rmsramos\Activitylog\Traits\HasCustomActivityResource; -use Spatie\Activitylog\Models\Activity; +use Rmsramos\Activitylog\Resources\ActivitylogResource\Schemas\ActivitylogForm; class ActivitylogResource extends Resource { @@ -299,7 +299,7 @@ public static function getDateFilterComponent(): Filter return $indicators; }) - ->form([ + ->schema([ self::getDatePickerCompoment('created_from'), self::getDatePickerCompoment('created_until'), ]) diff --git a/src/Resources/ActivitylogResource/Pages/ListActivitylog.php b/src/Resources/ActivitylogResource/Pages/ListActivitylog.php index 813a0d7..ed8ebd1 100755 --- a/src/Resources/ActivitylogResource/Pages/ListActivitylog.php +++ b/src/Resources/ActivitylogResource/Pages/ListActivitylog.php @@ -3,7 +3,7 @@ namespace Rmsramos\Activitylog\Resources\ActivitylogResource\Pages; use Filament\Resources\Pages\ListRecords; -use Rmsramos\Activitylog\Resources\ActivitylogResource; +use Rmsramos\Activitylog\Resources\ActivitylogResource\ActivitylogResource; class ListActivitylog extends ListRecords { diff --git a/src/Resources/ActivitylogResource/Pages/ViewActivitylog.php b/src/Resources/ActivitylogResource/Pages/ViewActivitylog.php index a80237f..f697a89 100755 --- a/src/Resources/ActivitylogResource/Pages/ViewActivitylog.php +++ b/src/Resources/ActivitylogResource/Pages/ViewActivitylog.php @@ -3,7 +3,7 @@ namespace Rmsramos\Activitylog\Resources\ActivitylogResource\Pages; use Filament\Resources\Pages\ViewRecord; -use Rmsramos\Activitylog\Resources\ActivitylogResource; +use Rmsramos\Activitylog\Resources\ActivitylogResource\ActivitylogResource; class ViewActivitylog extends ViewRecord { diff --git a/src/Resources/ActivitylogResource/Schemas/ActivitylogForm.php b/src/Resources/ActivitylogResource/Schemas/ActivitylogForm.php index 39d4c1d..d45c42d 100644 --- a/src/Resources/ActivitylogResource/Schemas/ActivitylogForm.php +++ b/src/Resources/ActivitylogResource/Schemas/ActivitylogForm.php @@ -1,12 +1,15 @@ afterStateHydrated(function ($component, ?Model $record, $state) { /** @var Activity $record */ - return $state ? $component->state(Str::of($state)->afterLast('\\')->headline().' # '.$record->subject_id) : $component->state('-'); + return $state ? $component->state(Str::of($state)->afterLast('\\')->headline() . ' # ' . $record->subject_id) : $component->state('-'); }) ->label(__('activitylog::forms.fields.subject_type.label')), @@ -36,32 +39,40 @@ public static function configure(Schema $schema): Schema Section::make([ TextEntry::make('log_name') - ->content(function (?Model $record): string { - /** @var Activity $record */ - return $record?->log_name ? ucwords($record->log_name) : '-'; + ->state(function (?Model $record): string { + /** @var Activity|null $record */ + return $record?->log_name + ? ucwords($record->log_name) + : '-'; }) ->label(__('activitylog::forms.fields.log_name.label')), + TextEntry::make('event') - ->content(function (?Model $record): string { - /** @var Activity $record */ - return $record?->event ? ucwords(__('activitylog::action.event.'.$record->event)) : '-'; + ->state(function (?Model $record): string { + /** @var Activity|null $record */ + return $record?->event + ? ucwords(__('activitylog::action.event.' . $record->event)) + : '-'; }) ->label(__('activitylog::forms.fields.event.label')), + TextEntry::make('created_at') ->label(__('activitylog::forms.fields.created_at.label')) - ->content(function (?Model $record): string { - /** @var Activity $record */ - if (! $record?->created_at) { - return '-'; + ->state(function (?Model $record): ?string { + /** @var Activity|null $record */ + if (!$record?->created_at) { + return null; } $parser = ActivitylogPlugin::get()->getDateParser(); return $parser($record->created_at) ->format(ActivitylogPlugin::get()->getDatetimeFormat()); - }), + }) + ->placeholder('-'), + ]), ]); }