components([ Section::make(fn () => CheerfulNotification::getMessage('Identifikasi Isu 🔍', 'Identifikasi Isu')) ->description(fn () => CheerfulNotification::getMessage('Yuk, hubungkan dengan berita monitoring dan tentukan lokasi isunya! 🔍✨', 'Hubungkan dengan berita monitoring dan tentukan lokasi isu.')) ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-magnifying-glass' : null) ->schema([ Select::make('media_monitoring_id') ->label('Monitoring Media') ->relationship( 'mediaMonitoring', 'title', fn (Builder $query): Builder => $query->whereDoesntHave('issueManagement') ) ->searchable() ->preload() ->required() ->autofocus() ->helperText('Jika judul berita dari monitoring media tidak ada di opsi, silakan lakukan pencarian.'), Select::make('departments') ->label('Perangkat Daerah Terkait') ->relationship('departments', 'name', fn (Builder $query): Builder => $query->active()) ->searchable() ->preload() ->multiple() ->required(), Grid::make(2) ->schema([ Select::make('location_id') ->label('Lokus') ->relationship('location', 'name', fn (Builder $query): Builder => $query->active()) ->searchable() ->preload() ->live() ->afterStateUpdated(function (Set $set): void { $set('sub_location_id', null); }) ->required(), Select::make('sub_location_id') ->label('Sub Lokus') ->relationship('subLocation', 'name', fn (Builder $query, Get $get): Builder => $query->active()->where('location_id', $get('location_id'))) ->searchable() ->preload() ->required(), ]), RichEditor::make('description') ->label('Keterangan Isu') ->placeholder('Jelaskan detail isu yang berkembang...') ->required() ->columnSpanFull(), ])->columnSpan(2), Section::make(fn () => CheerfulNotification::getMessage('Sentimen & Klasifikasi 📊', 'Sentimen & Klasifikasi')) ->description(fn () => CheerfulNotification::getMessage('Tentukan sentimen isu, respon, dan kategorinya biar makin jelas! 📊✨', 'Tentukan sentimen isu, respon, dan kategori klasifikasinya.')) ->icon(fn () => CheerfulNotification::getUxStyle() === UxStyle::CHEERFUL ? 'heroicon-o-chart-bar' : null) ->schema([ Select::make('issue') ->label('Sentimen Isu') ->options(IssueSentiment::options()) ->required() ->native(false) ->in(implode(',', array_column(IssueSentiment::cases(), 'value'))), Select::make('response') ->label('Respon Pemerintah') ->options(IssueSentiment::options()) ->required() ->native(false) ->in(implode(',', array_column(IssueSentiment::cases(), 'value'))), Select::make('classification_id') ->label('Klasifikasi') ->relationship('classification', 'name', fn (Builder $query): Builder => $query->active()) ->searchable() ->preload() ->live() ->afterStateUpdated(function (Set $set): void { $set('sub_classification_id', null); }) ->required(), Select::make('sub_classification_id') ->label('Sub Klasifikasi') ->relationship('subClassification', 'name', fn (Builder $query, Get $get): Builder => $query->where('classification_id', $get('location_id'))->active()) ->searchable() ->preload() ->required(), ])->columnSpan(1), ]) ->columns(3); } }