components([ Section::make() ->schema([ TextInput::make('permission') ->label(__('filament::resources.inputs.permission')) ->maxLength(50) ->autocomplete() ->unique(ignoreRecord: true) ->required(), TextInput::make('min_rank') ->label(__('filament::resources.inputs.min_rank')) ->required() ->maxLength(255) ->autocomplete(), TextInput::make('description') ->label(__('filament::resources.inputs.description')) ->nullable() ->maxLength(255) ->autocomplete() ->columnSpanFull(), ]) ->columns([ 'sm' => 2, ]), ]); } #[\Override] public static function table(Table $table): Table { return $table ->defaultSort('id', 'asc') ->columns([ TextColumn::make('permission') ->label(__('filament::resources.columns.permission')) ->searchable(), TextColumn::make('min_rank') ->label(__('filament::resources.columns.min_rank')) ->searchable() ->limit(30), TextColumn::make('description') ->label(__('filament::resources.columns.description')) ->toggleable() ->searchable() ->tooltip(function (TextColumn $column): ?string { $state = $column->getState(); if (! is_string($state) || strlen($state) <= $column->getCharacterLimit()) { return null; } return $state; }) ->limit(60), ]) ->filters([ // ]) ->recordActions([ EditAction::make(), DeleteAction::make(), ]) ->toolbarActions([ // ]); } #[\Override] public static function getRelations(): array { return [ // ]; } #[\Override] public static function getPages(): array { return [ 'index' => ListHousekeepingPermissions::route('/'), ]; } }