diff --git a/app/Filament/Pages/Analytic/Actions/ResetFiltersAction.php b/app/Filament/Pages/Analytic/Actions/ResetFiltersAction.php new file mode 100644 index 0000000..58dc28f --- /dev/null +++ b/app/Filament/Pages/Analytic/Actions/ResetFiltersAction.php @@ -0,0 +1,27 @@ +label('Reset Filter') + ->color('danger') + ->action(fn ($livewire) => $livewire->resetFilters()) + ->visible(function ($livewire): bool { + $filters = $livewire->filters ?? []; + + return ! empty($filters['startDate']) || ! empty($filters['endDate']); + }); + } +} diff --git a/app/Filament/Pages/Analytic.php b/app/Filament/Pages/Analytic/Index.php similarity index 65% rename from app/Filament/Pages/Analytic.php rename to app/Filament/Pages/Analytic/Index.php index a051ab5..e1d6b88 100644 --- a/app/Filament/Pages/Analytic.php +++ b/app/Filament/Pages/Analytic/Index.php @@ -1,8 +1,9 @@ user()->can('View:Analytic'); + } + public function getColumns(): int|array { return 2; @@ -55,37 +58,13 @@ public function getColumns(): int|array public function filtersForm(Schema $schema): Schema { - return $schema - ->schema([ - Fieldset::make('Filter') - ->schema([ - DatePicker::make('startDate') - ->label('Tanggal Mulai') - ->placeholder('Pilih tanggal mulai') - ->native(false) - ->displayFormat('l, d F Y'), - - DatePicker::make('endDate') - ->label('Tanggal Selesai') - ->placeholder('Pilih tanggal selesai') - ->native(false) - ->displayFormat('l, d F Y'), - ]) - ->columns(2) - ->columnSpanFull() - ->visible(fn () => auth()->user()->hasRole(RoleEnum::DEVELOPER->value) || auth()->user()->hasRole(RoleEnum::ADMINISTRATOR->value)), - ]); + return AnalyticFiltersForm::configure($schema); } protected function getHeaderActions(): array { return [ - Action::make('reset') - ->label('Reset Filter') - ->icon(Heroicon::OutlinedXMark) - ->color('danger') - ->action(fn () => $this->resetFilters()) - ->visible(fn () => ! empty($this->filters['startDate']) || ! empty($this->filters['endDate'])), + ResetFiltersAction::make(), ]; } diff --git a/app/Filament/Pages/Analytic/Schemas/AnalyticFiltersForm.php b/app/Filament/Pages/Analytic/Schemas/AnalyticFiltersForm.php new file mode 100644 index 0000000..3ab1a10 --- /dev/null +++ b/app/Filament/Pages/Analytic/Schemas/AnalyticFiltersForm.php @@ -0,0 +1,35 @@ +schema([ + Fieldset::make('Filter') + ->schema([ + DatePicker::make('startDate') + ->label('Tanggal Mulai') + ->placeholder('Pilih tanggal mulai') + ->native(false) + ->displayFormat('l, d F Y'), + + DatePicker::make('endDate') + ->label('Tanggal Selesai') + ->placeholder('Pilih tanggal selesai') + ->native(false) + ->displayFormat('l, d F Y'), + ]) + ->columns(2) + ->columnSpanFull() + ->visible(fn () => auth()->user()?->hasRole(RoleEnum::DEVELOPER->value) || auth()->user()?->hasRole(RoleEnum::ADMINISTRATOR->value)), + ]); + } +}