From 2a8412ff604fabf27119396f799cb6a196f1ad1d Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Mon, 30 Mar 2026 08:16:52 +0700 Subject: [PATCH] refactor: update class session form to use Filament Schema builder pattern --- .../Actions/EditSessionAction.php | 4 +- .../Pages/ListCourseSessions.php | 74 ++++++++++--------- 2 files changed, 41 insertions(+), 37 deletions(-) diff --git a/app/Filament/Resources/Learning/ClassSessions/Actions/EditSessionAction.php b/app/Filament/Resources/Learning/ClassSessions/Actions/EditSessionAction.php index cd547a8..fbb3692 100644 --- a/app/Filament/Resources/Learning/ClassSessions/Actions/EditSessionAction.php +++ b/app/Filament/Resources/Learning/ClassSessions/Actions/EditSessionAction.php @@ -22,7 +22,9 @@ protected function setUp(): void ->icon('heroicon-o-pencil') ->link() ->record(fn (array $arguments) => ClassSession::find($arguments['session'], ['*'])) - ->schema(fn ($livewire) => $livewire->schema()) + ->schema(function ($schema, $livewire) { + return $livewire->form($schema); + }) ->modalWidth(Width::TwoExtraLarge); } } diff --git a/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php b/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php index cf14736..e4e12b8 100644 --- a/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php +++ b/app/Filament/Resources/Learning/ClassSessions/Pages/ListCourseSessions.php @@ -25,6 +25,7 @@ use Filament\Forms\Contracts\HasForms; use Filament\Resources\Pages\Page; use Filament\Schemas\Components\Grid; +use Filament\Schemas\Schema; use Filament\Support\Enums\Width; use Illuminate\Support\Collection; use Livewire\Attributes\Computed; @@ -74,45 +75,46 @@ public function sessions(): Collection ]); } - public function form(): array + public function form(Schema $schema): Schema { - return [ - Grid::make(['default' => 2]) - ->schema([ - TextInput::make('session_number') - ->label('Pertemuan Ke-') - ->placeholder('1') - ->numeric() - ->required() - ->minValue(1) - ->maxValue(16) - ->autocomplete(false), + return $schema + ->schema([ + Grid::make(['default' => 2]) + ->schema([ + TextInput::make('session_number') + ->label('Pertemuan Ke-') + ->placeholder('1') + ->numeric() + ->required() + ->minValue(1) + ->maxValue(16) + ->autocomplete(false), - DatePicker::make('date') - ->label('Tanggal') - ->placeholder('Pilih Tanggal') - ->required() - ->native(false) - ->displayFormat('l, d F Y') - ->default(now()->toDateString()), + DatePicker::make('date') + ->label('Tanggal') + ->placeholder('Pilih Tanggal') + ->required() + ->native(false) + ->displayFormat('l, d F Y') + ->default(now()->toDateString()), - TimePicker::make('start_time') - ->label('Waktu Mulai') - ->placeholder('08:00') - ->native(false) - ->displayFormat('H:i') - ->seconds(false) - ->required(), + TimePicker::make('start_time') + ->label('Waktu Mulai') + ->placeholder('08:00') + ->native(false) + ->displayFormat('H:i') + ->seconds(false) + ->required(), - TimePicker::make('end_time') - ->label('Waktu Selesai') - ->placeholder('10:00') - ->native(false) - ->displayFormat('H:i') - ->seconds(false) - ->required(), - ]), - ]; + TimePicker::make('end_time') + ->label('Waktu Selesai') + ->placeholder('10:00') + ->native(false) + ->displayFormat('H:i') + ->seconds(false) + ->required(), + ]), + ]); } #[Computed] @@ -139,7 +141,7 @@ protected function getHeaderActions(): array ->modalHeading('Tambah Sesi') ->modalSubmitActionLabel('Simpan') ->modalCancelActionLabel('Batal') - ->schema($this->form()) + ->schema(fn (Schema $schema) => $this->form($schema)) ->mutateDataUsing(function (array $data): array { $data['course_id'] = $this->courseId;