diff --git a/app/Tables/TableWithFilters.php b/app/Tables/TableWithFilters.php index ce14d27..769f63b 100644 --- a/app/Tables/TableWithFilters.php +++ b/app/Tables/TableWithFilters.php @@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Model; use Mmt\GenericTable\Components\Column; use Mmt\GenericTable\Components\ColumnCollection; use Mmt\GenericTable\Enums\CommonDateFilter; +use Mmt\GenericTable\Interfaces\IColumnFilter; use Mmt\GenericTable\Interfaces\IDateRangeFilter; use Mmt\GenericTable\Interfaces\IDragDropReordering; use Mmt\GenericTable\Interfaces\IEvent; @@ -18,9 +19,12 @@ use Mmt\GenericTable\Interfaces\ISingleSelectionFilter; use Mmt\GenericTable\Support\DatabaseEvent; use Mmt\GenericTable\Support\DateFilterSettings; use Mmt\GenericTable\Support\EventArgs; +use Mmt\GenericTable\Support\FilterCollection; +use Mmt\GenericTable\Support\MultiFilter; use Mmt\GenericTable\Support\SelectionFilterSettings; +use Mmt\GenericTable\Support\SingleFilter; -class TableWithFilters implements IGenericTable, IEvent, IDateRangeFilter, ISingleSelectionFilter, IMultiSelectionFilter, IDragDropReordering, ILoadingIndicator +class TableWithFilters implements IGenericTable, IEvent, IDateRangeFilter, IColumnFilter, IDragDropReordering, ILoadingIndicator { public Model|string $model = Product::class; @@ -28,9 +32,7 @@ class TableWithFilters implements IGenericTable, IEvent, IDateRangeFilter, ISing public DateFilterSettings $dateFilterSettings; - public SelectionFilterSettings $singleSelectionFilterSettings; - - public SelectionFilterSettings $multiSelectionFilterSettings; + public FilterCollection $filters; public string $orderingColumn = 'order'; @@ -49,15 +51,20 @@ class TableWithFilters implements IGenericTable, IEvent, IDateRangeFilter, ISing new Column('Price') ); - $this->singleSelectionFilterSettings = new SelectionFilterSettings('status') - ->add('Out of stock', 'out_of_stock') - ->add('Discontinued', 'discontinued') - ->add('Available', 'available'); + $this->filters = new FilterCollection( - $this->multiSelectionFilterSettings = new SelectionFilterSettings('name') - ->add('Be a man', 'quod 36840466') - ->add('Do the right', 'blanditiis 469800') - ->add('Things happens', 'tempore 71086'); + SingleFilter::make('status', [ + 'Out of stock' => 'out_of_stock', + 'Discontinued' => 'discontinued', + 'Available' => 'available', + ]), + + MultiFilter::make('name', [ + 'Client-1' => 'laborum 505', + 'Client-2' => 'atque 38829', + 'Client-3' => 'rem 61603388', + ]) + ); }