schema([ TextInput::make('name')->required()->maxLength(100), TextInput::make('code')->required()->maxLength(2)->unique(ignoreRecord: true), TextInput::make('phone_code')->maxLength(10), Toggle::make('is_active')->default(true), ]); } public static function table(Table $table): Table { return $table->columns([ ResourceTableColumns::id(), TextColumn::make('name')->searchable()->sortable(), TextColumn::make('code')->searchable()->sortable(), TextColumn::make('phone_code'), TextColumn::make('cities_count')->counts('cities')->label('Cities')->sortable(), ResourceTableColumns::activeIcon(), ResourceTableColumns::createdAtHidden(), ])->defaultSort('id', 'desc')->filters([ SelectFilter::make('code') ->label('Code') ->options(fn (): array => Country::codeOptions()), TernaryFilter::make('has_cities') ->label('Has cities') ->queries( true: fn (Builder $query): Builder => $query->has('cities'), false: fn (Builder $query): Builder => $query->doesntHave('cities'), blank: fn (Builder $query): Builder => $query, ), TernaryFilter::make('is_active')->label('Active'), ])->actions(ResourceTableActions::editActivityDelete(static::class)); } public static function getPages(): array { return [ 'index' => Pages\ListLocations::route('/'), 'create' => Pages\CreateLocation::route('/create'), 'activities' => Pages\ListLocationActivities::route('/{record}/activities'), 'edit' => Pages\EditLocation::route('/{record}/edit'), ]; } }