| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | 
							- <?php
 - 
 - namespace App\Filament\Company\Pages\Concerns;
 - 
 - use App\Support\Column;
 - use Filament\Actions\Action;
 - use Filament\Forms\Components\Checkbox;
 - use Filament\Forms\Form;
 - use Filament\Support\Enums\ActionSize;
 - use Filament\Support\Facades\FilamentIcon;
 - use Illuminate\Support\Arr;
 - 
 - trait HasTableColumnToggleForm
 - {
 -     public array $toggledTableColumns = [];
 - 
 -     public function mountHasTableColumnToggleForm(): void
 -     {
 -         if (! count($this->toggledTableColumns ?? [])) {
 -             $this->getTableColumnToggleForm()->fill(session()->get(
 -                 $this->getTableColumnToggleFormStateSessionKey(),
 -                 $this->getDefaultTableColumnToggleState()
 -             ));
 -         }
 -     }
 - 
 -     protected function getDefaultTableColumnToggleState(): array
 -     {
 -         $state = [];
 - 
 -         foreach ($this->getTable() as $column) {
 -             if (! $column->isToggleable()) {
 -                 continue;
 -             }
 - 
 -             data_set($state, $column->getName(), ! $column->isToggledHiddenByDefault());
 -         }
 - 
 -         return $state;
 -     }
 - 
 -     public function updatedToggledTableColumns(): void
 -     {
 -         session()->put([
 -             $this->getTableColumnToggleFormStateSessionKey() => $this->toggledTableColumns,
 -         ]);
 -     }
 - 
 -     public function getTableColumnToggleForm(): Form
 -     {
 -         if ((! $this->isCachingForms) && $this->hasCachedForm('toggleTableColumnForm')) {
 -             return $this->getForm('toggleTableColumnForm');
 -         }
 - 
 -         return $this->makeForm()
 -             ->schema($this->getTableColumnToggleFormSchema())
 -             ->statePath('toggledTableColumns')
 -             ->live();
 -     }
 - 
 -     protected function hasToggleableColumns(): bool
 -     {
 -         return ! empty($this->getTableColumnToggleFormSchema());
 -     }
 - 
 -     /**
 -      * @return array<Checkbox>
 -      */
 -     protected function getTableColumnToggleFormSchema(): array
 -     {
 -         $schema = [];
 - 
 -         foreach ($this->getTable() as $column) {
 -             if (! $column->isToggleable()) {
 -                 continue;
 -             }
 - 
 -             $schema[] = Checkbox::make($column->getName())
 -                 ->label($column->getLabel());
 -         }
 - 
 -         return $schema;
 -     }
 - 
 -     public function isTableColumnToggledHidden(string $name): bool
 -     {
 -         return Arr::has($this->toggledTableColumns, $name) && ! data_get($this->toggledTableColumns, $name);
 -     }
 - 
 -     public function getTableColumnToggleFormStateSessionKey(): string
 -     {
 -         $table = class_basename($this::class);
 - 
 -         return "tables.{$table}_toggled_columns";
 -     }
 - 
 -     public function getToggleColumnsTriggerAction(): Action
 -     {
 -         return Action::make('toggleColumns')
 -             ->label(__('filament-tables::table.actions.toggle_columns.label'))
 -             ->iconButton()
 -             ->size(ActionSize::Large)
 -             ->icon(FilamentIcon::resolve('tables::actions.toggle-columns') ?? 'heroicon-m-view-columns')
 -             ->color('gray')
 -             ->livewireClickHandlerEnabled(false);
 -     }
 - 
 -     protected function getToggledColumns(): array
 -     {
 -         return array_values(
 -             array_filter(
 -                 $this->getTable(),
 -                 fn (Column $column) => ! $column->isToggleable() || ($this->toggledTableColumns[$column->getName()] ?? false)
 -             )
 -         );
 -     }
 - }
 
 
  |