schema([ // Grouping key fields into a Card component with a custom background color Card::make() ->schema([ Geocomplete::make('empty') ->label('Empty Location') ->required() ->reverseGeocode([ 'empty_city' => '%L', 'empty_state_code' => '%A1', 'empty_country_code' => '%C', ]) ->geocodeOnLoad(), Select::make('equipment_id') ->label('Equipment') ->required() ->options(Equipment::query()->pluck('name', 'id')) ->searchable(), Flatpickr::make('available_date_at') ->required() ->minDate(now()) ->label('Available Date'), Flatpickr::make('available_time_at') ->required() ->time() ->label('Available Time'), ]) ->extraAttributes([ 'class' => 'bg-card-light dark:bg-card-dark', 'style' => 'padding: 0px;', ]), // Hidden fields for empty_geo_id, client_id, carrier_id, and client_carrier_id Hidden::make('empty_geo_id'), Hidden::make('client_id') ->default(fn() => auth()->user()->client_id), Hidden::make('carrier_id') ->default(fn() => $this->ownerRecord->carrier_id), Hidden::make('client_carrier_id') ->default(fn() => $this->ownerRecord->id), // Display extracted location details as read-only fields TextInput::make('empty_city') ->label('Empty City') ->readOnly(), TextInput::make('empty_state_code') ->label('Empty State') ->readOnly(), TextInput::make('empty_country_code') ->label('Empty Country') ->readOnly(), ]); } public function table(Table $table): Table { return $table->columns([ TextColumn::make('empty_city')->label('Empty City'), TextColumn::make('empty_state_code')->label('Empty State'), TextColumn::make('available_date_at')->label('Available Date')->searchable(), TextColumn::make('equipment.name')->label('Equipment')->searchable(), ]) ->searchable() ->emptyStateIcon('heroicon-o-truck') ->emptyStateHeading('No Available Trucks') ->emptyStateDescription('Add available trucks to get started') ->headerActions([ AvailableTruckAction::createAvailableTruck(), ]) ->modifyQueryUsing(function (Builder $query) { // Filter the query by matching carrier_id or client_carrier_id $query->where(function ($query) { $query->where('carrier_id', $this->ownerRecord->carrier_id) ->orWhere('client_carrier_id', $this->ownerRecord->id); }); }); } public function isReadOnly(): bool { return false; } }