components([ Textarea::make('content') ->label('Konten') ->placeholder('Diberitahukan kepada seluruh media untuk update dokumen...') ->autocomplete(false) ->autofocus() ->required() ->rows(4) ->columnSpanFull(), CheckboxList::make('partnerMedia') ->label('Kirim Kepada') ->required() ->relationship('partnerMedia', 'name') ->options(function () { return PartnerMedia::query()->pluck('name', 'id'); }) ->searchable() ->noSearchResultsMessage('Tidak ada media yang ditemukan.') ->helperText('Pilih media yang akan menerima pengumuman ini') ->columnSpanFull(), ]) ->columns(1); } public static function table(Table $table): Table { return $table ->recordTitleAttribute('content') ->columns([ TextColumn::make('content') ->label('Konten') ->searchable() ->sortable() ->wrap() ->limit(100), TextColumn::make('partnerMedia.name') ->label('Penerima') ->listWithLineBreaks() ->limitList(3) ->expandableLimitedList() ->placeholder('Tidak ada penerima'), ...TimestampColumns::make(), ]) ->filters([ TrashedFilter::make()->native(false), ]) ->recordActions([ EditAction::make() ->modalWidth(Width::Large), DeleteAction::make(), ForceDeleteAction::make(), RestoreAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ ...DefaultBulkActions::make('Pengumuman'), ]), ]) ->emptyStateIcon(Heroicon::Megaphone) ->emptyStateDescription('Setelah Anda membuat data pertama, maka akan muncul disini.') ->defaultSort('created_at', 'desc') ->deferFilters(false); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => ManageAnnouncements::route('/'), ]; } public static function getRecordRouteBindingEloquentQuery(): Builder { return parent::getRecordRouteBindingEloquentQuery() ->withoutGlobalScopes([ SoftDeletingScope::class, ]); } }