query(MultilineClient::query()) ->paginated(false) ->reorderRecordsTriggerAction( fn (Action $action, bool $isReordering) => $action ->button() ->label($isReordering ? 'Disable reordering' : 'Enable reordering'), ) ->reorderable('sort') ->columns([ IconColumn::make('sport.icon') ->label('') ->width('1rem') ->icon(function ($record): string { return $record->sport->icon; }), TextColumn::make('sport.name'), TextColumn::make('multiline_setting.name')->label('Bettype'), BookmakerIcon::make('bookmaker.icon')->label('Icon'), SelectColumn::make('bookmaker_id') ->label('Bookmaker') ->width('2rem') ->options(function () { $books = Bookmaker::where('is_active', 1)->orderBy('name')->pluck('name', 'id'); foreach ($books as $key => $value) { $books[$key] = $key.' - '.$value; } return $books; }), ]) ->defaultSort('sort') ->deferFilters(false) ->filters([ Filter::make('multiline') ->schema([ Select::make('sport_id') ->hiddenLabel() ->label('Sport') ->default(1) ->options(function () { $sports = Client::where('id', auth()->user()->client_id)->pluck('sport')->first(); return Sport::query()->whereIn('id', $sports)->pluck('name', 'id'); }) ->live(), Select::make('multiline_setting_id') ->hiddenLabel() ->label('Bettype') ->default(1) ->options(function (Get $get) { return MultilineSetting::where('sport_id', $get('sport_id'))->pluck('name', 'id'); }) ->live(), ]) ->query(function (Builder $query, array $data): Builder { return $query ->when( $data['sport_id'], fn (Builder $query, $sport_id) => $query->where('sport_id', $sport_id) )->when( $data['multiline_setting_id'], fn (Builder $query, $multiline_setting_id) => $query->where('multiline_setting_id', $multiline_setting_id) ); }) ->columns(3)->columnSpan(3), ], layout: FiltersLayout::AboveContent) ->hiddenFilterIndicators(); } public function render(): View { return view('livewire.multiline-bookmaker'); } }