feat: Implement various action classes for Filament, including BackAction, GoToDateAction, and cheerful actions for create, edit, delete, force delete, and restore functionalities.

This commit is contained in:
Yoga Pangestu 2026-03-10 11:25:17 +07:00
parent 4b35d8ec48
commit 923b722ed3
8 changed files with 181 additions and 0 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

@ -0,0 +1,18 @@
<?php
namespace App\Filament\Actions\Cheerful;
use App\Filament\Support\SystemNotification;
use Filament\Actions\CreateAction as ActionsCreateAction;
class CreateAction extends ActionsCreateAction
{
protected function setUp(): void
{
parent::setUp();
$this->successNotification(
SystemNotification::create()
);
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Filament\Actions\Cheerful;
use App\Filament\Support\SystemNotification;
use Filament\Actions\DeleteAction as ActionsDeleteAction;
class DeleteAction extends ActionsDeleteAction
{
protected function setUp(): void
{
parent::setUp();
$this->successNotification(
SystemNotification::delete()
);
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Filament\Actions\Cheerful;
use App\Filament\Support\SystemNotification;
use Filament\Actions\EditAction as ActionsEditAction;
class EditAction extends ActionsEditAction
{
protected function setUp(): void
{
parent::setUp();
$this->successNotification(
SystemNotification::update()
);
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Filament\Actions\Cheerful;
use App\Filament\Support\SystemNotification;
use Filament\Actions\ForceDeleteAction as ActionsForceDeleteAction;
class ForceDeleteAction extends ActionsForceDeleteAction
{
protected function setUp(): void
{
parent::setUp();
$this->successNotification(
SystemNotification::forceDelete()
);
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace App\Filament\Actions\Cheerful;
use App\Filament\Support\SystemNotification;
use Filament\Actions\RestoreAction as ActionsRestoreAction;
class RestoreAction extends ActionsRestoreAction
{
protected function setUp(): void
{
parent::setUp();
$this->successNotification(
SystemNotification::restore()
);
}
}

View File

@ -0,0 +1,34 @@
<?php
namespace App\Filament\Actions;
use App\Filament\Support\SystemNotification;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\ForceDeleteBulkAction;
use Filament\Actions\RestoreBulkAction;
class DefaultBulkActions
{
public static function make(string $entity): array
{
return [
DeleteBulkAction::make()
->modalHeading("Hapus {$entity} yang dipilih")
->successNotification(
SystemNotification::bulkDelete()
),
ForceDeleteBulkAction::make()
->modalHeading("Hapus {$entity} yang dipilih")
->successNotification(
SystemNotification::bulkForceDelete()
),
RestoreBulkAction::make()
->modalHeading("Pulihkan {$entity} yang dipilih")
->successNotification(
SystemNotification::bulkRestore()
),
];
}
}

View File

@ -0,0 +1,35 @@
<?php
namespace App\Filament\Actions;
use Filament\Actions\Action;
use Filament\Forms\Components\DatePicker;
use Filament\Support\Enums\Width;
class GoToDateAction extends Action
{
public static function getDefaultName(): ?string
{
return 'goToDate';
}
protected function setUp(): void
{
parent::setUp();
$this->label('Lompat ke Tanggal')
->icon('heroicon-o-calendar-days')
->schema([
DatePicker::make('date')
->label('Pilih Tanggal')
->placeholder(fn () => now()->addMonth(10)->format('l, d F Y'))
->required()
->native(false)
->displayFormat('l, d F Y'),
])
->action(function (array $data, $livewire) {
$livewire->setOption('date', $data['date']);
})
->modalWidth(Width::Large);
}
}