components([ TextInput::make('sender') ->disabled() ->formatStateUsing(fn ($record) => $record->sender?->username) ->label(__('filament::resources.inputs.sender')), TextInput::make('receiver') ->disabled() ->formatStateUsing(fn ($record) => $record->receiver?->username) ->label(__('filament::resources.inputs.receiver')), Textarea::make('message') ->label(__('filament::resources.inputs.message')) ->columnSpanFull() ->disabled(), ]); } #[\Override] public static function table(Table $table): Table { return $table ->defaultSort('timestamp', 'desc') ->columns(self::getTable()) ->filters([]) ->recordActions([ ViewAction::make(), ]) ->toolbarActions([]); } public static function getTable(): array { return [ TextColumn::make('sender.username') ->label(__('filament::resources.columns.sender')) ->toggleable() ->searchable(isIndividual: true), TextColumn::make('receiver.username') ->label(__('filament::resources.columns.receiver')) ->toggleable() ->searchable(isIndividual: true), TextColumn::make('message') ->label(__('filament::resources.columns.message')) ->limit(40) ->searchable(isIndividual: true), TextColumn::make('timestamp') ->label(__('filament::resources.columns.executed_at')) ->dateTime('Y-m-d H:i') ->toggleable(), ]; } #[\Override] public static function getPages(): array { return [ 'index' => ManageChatlogPrivates::route('/'), ]; } }