FilamentF
Filament8mo ago
Wave

Missing namings on using panel in table builder

public function table(Table $table): Table
    {
        return $table
            ->query(
                Booking::query()
                    ->with('travelers')
                    ->whereHas('product.contract', function ($query) {
                        $query->where('hotel_id', auth()->user()->id);
                    })
            )
            ->columns([
                TextColumn::make('booking_number')
                    ->label(__('Booking Number')),
                TextColumn::make('starts_at')
                    ->label(__('Start'))
                    ->date(),
                TextColumn::make('ends_at')
                    ->label(__('End'))
                    ->date(),
                TextColumn::make('room.name')
                    ->label(__('Room')),
                Panel::make([
                    Stack::make([
                        TextColumn::make('travelers')
                            ->label(__('Travelers'))
                            ->icon('heroicon-m-user-group')
                            ->formatStateUsing(function ($record) {
                                return $record->travelers->map(function ($traveler) {
                                    $bornAt = $traveler->born_at ? sprintf(' (%s)', $traveler->born_at->format('d.m.Y')) : '';

                                    return $traveler->name.$bornAt;
                                })->join(', ');
                            }),
                    ]),
                ])->collapsible(),
            ])
            ->filters([
                Filter::make('date_range')
                    ->form([
                        DatePicker::make('starts_from')
                            ->label(__('From')),
                        DatePicker::make('starts_until')
                            ->label(__('To')),
                    ])
                    ->query(function (Builder $query, array $data): Builder {
                        return $query
                            ->when(
                                $data['starts_from'],
                                fn (Builder $query, $date): Builder => $query->whereDate('starts_at', '>=', $date),
                            )
                            ->when(
                                $data['starts_until'],
                                fn (Builder $query, $date): Builder => $query->whereDate('starts_at', '<=', $date),
                            );
                    }),
            ])
            ->emptyStateHeading(__('No Bookings'));
    }


I missing the namings at top of table.
Screenshot_2025-04-30_at_11.55.09.png
Solution
This is expected because Split, Stack, ... remove the classic table layout and therefore there are no headers anymore.
Was this page helpful?