Table Improvements - Batch Update

📄 General
← Back to Documentation
# Table Improvements - Batch Update ## Standard Improvements Applied to All Tables ### Required Additions: ```php ->reorderableColumns() ->filtersLayout(\Filament\Tables\Enums\FiltersLayout::AboveContentCollapsible) ``` ### Optional but Recommended: ```php ->defaultSort('created_at', 'desc') ->striped() ->paginated([10, 25, 50, 100]) ->persistFiltersInSession() ->persistSearchInSession() ->deferLoading() ->extremePaginationLinks() ``` --- ## Tables Updated ### ✅ Core Resource Tables 1. **BookingTable** - ✅ Already updated by user 2. **UserTable** - ✅ Updated 3. **ClientTable** (Components) - Pending 4. **VenueTable** - Pending ### Pending Updates (35+ tables) - ClientTypeTable - CompanyTable - CurrencyTable - FiscalDeviceTable - FiscalReceiptQueueTable - GalleryTable - GalleryItemTable - InvoiceTable - LocationTable - OperatorTable - PaymentTransactionTable - PlaceTable - ProductTable - ProductTypeTable - ReceiptTable - ReservationTable (deprecated but still functional) - ReviewTable - ServiceTable - UserTable - VenueFacilityTable - VenueMenuTable - VenueObjectTable - VenueObjectTypeTable - VenuePlanTable - VenueServiceTable - VenueServiceProviderTable - VenueSpotTable - VenueTypeTable - WorkspaceTable - ClientReservationTable (Client panel) - PreferenceTable (Client panel) --- ## Implementation Pattern For each table, add before the final semicolon: ```php public static function configure(Table $table): Table { return $table ->columns([...]) ->filters([...]) // Add if missing ->actions([...]) ->bulkActions([...]) // ADD THESE LINES: ->reorderableColumns() ->filtersLayout(\Filament\Tables\Enums\FiltersLayout::AboveContentCollapsible) ->defaultSort('created_at', 'desc') ->striped() ->paginated([10, 25, 50, 100]) ->persistFiltersInSession() ->persistSearchInSession(); } ``` --- ## Filters to Add (if missing) ### Basic Filters Template: ```php ->filters([ SelectFilter::make('status') ->options([...]) ->multiple() ->preload(), TernaryFilter::make('is_active') ->label('Active Status') ->placeholder('All') ->trueLabel('Active Only') ->falseLabel('Inactive Only'), Filter::make('created_at') ->form([ DatePicker::make('created_from')->label('Created From'), DatePicker::make('created_until')->label('Created Until'), ]) ->query(function (Builder $query, array $data): Builder { return $query ->when($data['created_from'], fn (Builder $query, $date) => $query->whereDate('created_at', '>=', $date)) ->when($data['created_until'], fn (Builder $query, $date) => $query->whereDate('created_at', '<=', $date)); }), ]) ``` --- ## Status: IN PROGRESS - Updated: 2/35+ tables - Next: Batch update remaining tables