Skip to content

Commit c2bdfba

Browse files
committed
Merge branch 'KaulSe-fix-errors-when-filter-does-not-exist' into develop
2 parents 27e6990 + 836a200 commit c2bdfba

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

src/Traits/ComponentUtilities.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public function updated($name, $value): void
9494
$filterName = Str::after($name, $this->getTableName().'.filters.');
9595
$filter = $this->getFilterByKey($filterName);
9696

97-
if ($filter->isEmpty($value)) {
97+
if ($filter && $filter->isEmpty($value)) {
9898
$this->resetFilter($filterName);
9999
}
100100
}

src/Traits/Helpers/FilterHelpers.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,13 @@ public function setFilterDefaults(): void
115115

116116
public function getAppliedFilters(): array
117117
{
118-
return $this->{$this->getTableName()}['filters'] ?? [];
118+
$validFilterKeys = $this->getFilters()
119+
->map(fn (Filter $filter) => $filter->getKey())
120+
->toArray();
121+
122+
return collect($this->{$this->getTableName()}['filters'] ?? [])
123+
->filter(fn ($value, $key) => in_array($key, $validFilterKeys, true))
124+
->toArray();
119125
}
120126

121127
public function hasAppliedFiltersWithValues(): bool

tests/Traits/Helpers/FilterHelpersTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,17 @@ public function can_set_filter_defaults(): void
114114
$this->assertSame(['breed' => []], $this->basicTable->getAppliedFilters());
115115
}
116116

117+
/** @test */
118+
public function can_not_set_invalid_filter(): void
119+
{
120+
$this->basicTable->setFilter('invalid-filter', ['1']);
121+
122+
$this->assertNull($this->basicTable->getAppliedFilterWithValue('invalid-filter'));
123+
124+
$this->assertArrayNotHasKey('invalid-filter', $this->basicTable->getAppliedFilters());
125+
}
126+
127+
117128
/** @test */
118129
public function can_see_if_filters_set_with_values(): void
119130
{

tests/Traits/Visuals/FilterVisualsTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,4 +88,13 @@ public function filter_pills_dont_show_when_no_filters_are_applied(): void
8888
Livewire::test(PetsTable::class)
8989
->assertDontSee('Applied Filters');
9090
}
91+
92+
/** @test */
93+
public function filters_with_invalid_key_dont_error(): void
94+
{
95+
Livewire::test(PetsTable::class)
96+
->set('table.filters.invalid-filter', [1])
97+
->assertHasNoErrors()
98+
->assertDontSee('Applied Filters');
99+
}
91100
}

0 commit comments

Comments
 (0)