refactor: introduce a reusable BackAction component and apply it to standardize back buttons across various Filament pages.

This commit is contained in:
Yoga Pangestu 2026-01-29 09:50:40 +07:00
parent 2626d890a4
commit 27b25f6193
14 changed files with 61 additions and 77 deletions

View File

@ -0,0 +1,22 @@
<?php
namespace App\Filament\Actions;
use Filament\Actions\Action;
class BackAction extends Action
{
public static function getDefaultName(): ?string
{
return 'back';
}
protected function setUp(): void
{
parent::setUp();
$this->label('Kembali')
->color('secondary')
->outlined();
}
}

View File

@ -2,6 +2,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use App\Filament\Support\CheerfulNotification;
use App\Notifications\BroadcastNotification;
@ -19,11 +20,8 @@ class CreateCooperation extends CreateRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListCooperations::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListCooperations::getUrl()),
];
}

View File

@ -2,10 +2,10 @@
namespace App\Filament\Resources\Manage\Cooperations\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
use Illuminate\Support\Facades\Storage;
@ -36,11 +36,8 @@ public function mount(int|string $record): void
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListCooperations::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListCooperations::getUrl()),
];
}

View File

@ -2,8 +2,8 @@
namespace App\Filament\Resources\Manage\Cooperations\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use Filament\Actions\Action;
use Filament\Resources\Pages\ViewRecord;
class ViewCooperation extends ViewRecord
@ -13,11 +13,8 @@ class ViewCooperation extends ViewRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListCooperations::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListCooperations::getUrl()),
];
}
}

View File

@ -2,8 +2,8 @@
namespace App\Filament\Resources\Manage\DataChanges\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Manage\DataChanges\DataChangesResource;
use Filament\Actions\Action;
use Filament\Resources\Pages\ViewRecord;
class ViewDataChange extends ViewRecord
@ -13,11 +13,8 @@ class ViewDataChange extends ViewRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(DataChangesResource::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(DataChangesResource::getUrl()),
];
}
}

View File

@ -2,8 +2,8 @@
namespace App\Filament\Resources\Manage\Partners\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Manage\Partners\PartnerResource;
use Filament\Actions\Action;
use Filament\Resources\Pages\ViewRecord;
class ViewPartner extends ViewRecord
@ -13,11 +13,8 @@ class ViewPartner extends ViewRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(url()->previous())
->outlined()
->color('secondary'),
BackAction::make()
->url(url()->previous()),
];
}
}

View File

@ -2,9 +2,9 @@
namespace App\Filament\Resources\Monitoring\ContentRecaps\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Monitoring\ContentRecaps\ContentRecapResource;
use App\Filament\Support\CheerfulNotification;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\CreateRecord;
@ -17,11 +17,8 @@ class CreateContentRecap extends CreateRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListContentRecaps::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListContentRecaps::getUrl()),
];
}

View File

@ -2,10 +2,10 @@
namespace App\Filament\Resources\Monitoring\ContentRecaps\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Monitoring\ContentRecaps\ContentRecapResource;
use App\Filament\Resources\Monitoring\MediaMonitorings\Pages\ListMediaMonitorings;
use App\Filament\Support\CheerfulNotification;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
@ -16,11 +16,8 @@ class EditContentRecap extends EditRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListMediaMonitorings::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListMediaMonitorings::getUrl()),
];
}

View File

@ -2,9 +2,9 @@
namespace App\Filament\Resources\Monitoring\IssueManagements\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Monitoring\IssueManagements\IssueManagementResource;
use App\Filament\Support\CheerfulNotification;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\CreateRecord;
@ -17,11 +17,8 @@ class CreateIssueManagement extends CreateRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListIssueManagements::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListIssueManagements::getUrl()),
];
}

View File

@ -2,9 +2,9 @@
namespace App\Filament\Resources\Monitoring\IssueManagements\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Monitoring\IssueManagements\IssueManagementResource;
use App\Filament\Support\CheerfulNotification;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
@ -15,11 +15,8 @@ class EditIssueManagement extends EditRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListIssueManagements::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListIssueManagements::getUrl()),
];
}

View File

@ -2,10 +2,10 @@
namespace App\Filament\Resources\Monitoring\MediaMonitorings\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Monitoring\MediaMonitorings\MediaMonitoringResource;
use App\Filament\Support\CheerfulNotification;
use App\Models\MediaMonitoring;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\CreateRecord;
@ -18,11 +18,8 @@ class CreateMediaMonitoring extends CreateRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListMediaMonitorings::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListMediaMonitorings::getUrl()),
];
}

View File

@ -2,9 +2,9 @@
namespace App\Filament\Resources\Monitoring\MediaMonitorings\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Monitoring\MediaMonitorings\MediaMonitoringResource;
use App\Filament\Support\CheerfulNotification;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
@ -15,11 +15,8 @@ class EditMediaMonitoring extends EditRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListMediaMonitorings::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListMediaMonitorings::getUrl()),
];
}

View File

@ -2,9 +2,9 @@
namespace App\Filament\Resources\Publication\News\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Publication\News\NewsResource;
use App\Filament\Support\CheerfulNotification;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\CreateRecord;
@ -17,11 +17,8 @@ class CreateNews extends CreateRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListNews::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListNews::getUrl()),
];
}

View File

@ -2,9 +2,9 @@
namespace App\Filament\Resources\Publication\News\Pages;
use App\Filament\Actions\BackAction;
use App\Filament\Resources\Publication\News\NewsResource;
use App\Filament\Support\CheerfulNotification;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
@ -15,11 +15,8 @@ class EditNews extends EditRecord
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Kembali')
->url(ListNews::getUrl())
->outlined()
->color('secondary'),
BackAction::make()
->url(ListNews::getUrl()),
];
}