Skip to content

Commit b04b02c

Browse files
committed
Enhance filter functionality in TasksBoard with dynamic width and column support
1 parent e657503 commit b04b02c

File tree

9 files changed

+29
-21
lines changed

9 files changed

+29
-21
lines changed

resources/views/components/filters.blade.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
@php use Illuminate\View\ComponentAttributeBag;use function Filament\Support\prepare_inherited_attributes; @endphp
2-
{{-- Native Filament table filters - zero custom code needed! --}}
2+
{{-- Native Filament table filters with dynamic width support --}}
33
@if(method_exists($this, 'getTable') && $this->getTable()->isFilterable())
44
<div class="fi-ta-header-toolbar mb-4">
55
<div class="fi-ta-actions fi-align-start fi-wrapped">
6-
{{-- Use Filament's exact filter system --}}
6+
{{-- Use Filament's exact filter system with configurable width --}}
77
<x-filament::dropdown
88
placement="bottom-start"
9-
width="2xl"
10-
max-height="24rem"
9+
:width="$this->getTable()->getFiltersFormWidth()"
10+
:max-height="$this->getTable()->getFiltersFormMaxHeight()"
1111
class="fi-ta-filters-dropdown z-50"
1212
>
1313
<x-slot name="trigger">

src/Board.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
namespace Relaticle\Flowforge;
66

77
use Filament\Support\Components\ViewComponent;
8-
use Relaticle\Flowforge\Board\Concerns\CanSearchBoardRecords;
9-
use Relaticle\Flowforge\Board\Concerns\HasBoardActions;
10-
use Relaticle\Flowforge\Board\Concerns\HasBoardColumns;
11-
use Relaticle\Flowforge\Board\Concerns\HasBoardFilters;
12-
use Relaticle\Flowforge\Board\Concerns\HasBoardRecords;
138
use Relaticle\Flowforge\Concerns\BelongsToLivewire;
9+
use Relaticle\Flowforge\Concerns\CanSearchBoardRecords;
10+
use Relaticle\Flowforge\Concerns\HasBoardActions;
11+
use Relaticle\Flowforge\Concerns\HasBoardColumns;
12+
use Relaticle\Flowforge\Concerns\HasBoardFilters;
13+
use Relaticle\Flowforge\Concerns\HasBoardRecords;
1414
use Relaticle\Flowforge\Concerns\HasCardSchema;
1515
use Relaticle\Flowforge\Concerns\InteractsWithKanbanQuery;
1616
use Relaticle\Flowforge\Contracts\HasBoard;

src/Board/Concerns/CanFilterBoardRecords.php renamed to src/Concerns/CanFilterBoardRecords.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22

33
declare(strict_types=1);
44

5-
namespace Relaticle\Flowforge\Board\Concerns;
5+
namespace Relaticle\Flowforge\Concerns;
66

77
use Closure;
88
use Filament\Tables\Filters\BaseFilter;
99
use Illuminate\Database\Eloquent\Builder;
10-
use Illuminate\Support\Collection;
1110

1211
/**
1312
* Integrates Filament table filters into Flowforge boards.
@@ -103,7 +102,7 @@ public function applyFiltersToQuery(Builder $query, array $filterData = []): Bui
103102
}
104103

105104
$filterState = $filterData[$filter->getName()] ?? [];
106-
105+
107106
if (empty($filterState)) {
108107
continue;
109108
}
@@ -156,7 +155,7 @@ public function getActiveFilterIndicators(): array
156155
}
157156

158157
$filterState = $this->filterData[$filter->getName()] ?? [];
159-
158+
160159
if (empty($filterState)) {
161160
continue;
162161
}
@@ -180,4 +179,4 @@ public function hasActiveFilters(): bool
180179
{
181180
return ! empty($this->getActiveFilterIndicators());
182181
}
183-
}
182+
}

src/Board/Concerns/CanSearchBoardRecords.php renamed to src/Concerns/CanSearchBoardRecords.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace Relaticle\Flowforge\Board\Concerns;
5+
namespace Relaticle\Flowforge\Concerns;
66

77
use Closure;
88

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace Relaticle\Flowforge\Board\Concerns;
5+
namespace Relaticle\Flowforge\Concerns;
66

77
use Closure;
88
use Filament\Actions\Action;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace Relaticle\Flowforge\Board\Concerns;
5+
namespace Relaticle\Flowforge\Concerns;
66

77
use Closure;
88
use Relaticle\Flowforge\Column;
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,23 @@
22

33
declare(strict_types=1);
44

5-
namespace Relaticle\Flowforge\Board\Concerns;
5+
namespace Relaticle\Flowforge\Concerns;
66

77
use Closure;
8+
use Filament\Support\Enums\Width;
9+
use Filament\Tables\Table\Concerns\HasFilters;
810

911
/**
1012
* Minimal board filters - just stores filter definitions.
1113
*/
1214
trait HasBoardFilters
1315
{
16+
use HasFilters;
17+
1418
protected array $boardFilters = [];
1519

20+
protected Width | string | Closure | null $filtersFormWidth = null;
21+
1622
public function filters(array | Closure $filters): static
1723
{
1824
$this->boardFilters = $this->evaluate($filters);
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace Relaticle\Flowforge\Board\Concerns;
5+
namespace Relaticle\Flowforge\Concerns;
66

77
use Illuminate\Database\Eloquent\Collection;
88
use Illuminate\Database\Eloquent\Model;
@@ -79,7 +79,7 @@ public function getBoardRecords(string $columnId): Collection
7979
public function getBoardRecordCount(string $columnId): int
8080
{
8181
$query = $this->getQuery();
82-
82+
8383
if (! $query) {
8484
return 0;
8585
}

src/Concerns/HasTableFromBoard.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ public function table(Table $table): Table
2424

2525
return $table
2626
->query($board->getQuery())
27-
->filters($board->getBoardFilters());
27+
->filters($board->getBoardFilters())
28+
->filtersFormWidth($board->getFiltersFormWidth())
29+
->filtersFormColumns($board->getFiltersFormColumns())
30+
->filtersLayout($board->getFiltersLayout());
2831
}
2932
}

0 commit comments

Comments
 (0)