Skip to content

Commit 3f18055

Browse files
authored
Filters urgent fixes - correct Filter Default QueryString (rappasoft#2188)
* Fixes for QueryString & Centralising Methods * Tweaks for Filters
1 parent 424ab84 commit 3f18055

File tree

9 files changed

+117
-89
lines changed

9 files changed

+117
-89
lines changed

src/Traits/Filters/HasFilterQueryString.php

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66

77
trait HasFilterQueryString
88
{
9-
#[Locked]
10-
public ?bool $queryStringStatusForFilter;
11-
12-
protected ?string $queryStringAliasForFilter;
13-
149
protected function queryStringHasFilterQueryString(): array
1510
{
1611
return ($this->queryStringForFilterIsEnabled()) ?
@@ -20,6 +15,11 @@ protected function queryStringHasFilterQueryString(): array
2015
] : [];
2116
}
2217

18+
public function queryStringForFilterIsEnabled(): bool
19+
{
20+
return $this->getQueryStringStatusForFilter() && $this->filtersAreEnabled();
21+
}
22+
2323
public function hasQueryStringStatusForFilter(): bool
2424
{
2525
return $this->hasQueryStringConfigStatus('filters');
@@ -30,38 +30,32 @@ public function getQueryStringStatusForFilter(): bool
3030
return $this->getQueryStringConfigStatus('filters');
3131
}
3232

33-
public function queryStringForFilterIsEnabled(): bool
33+
public function hasQueryStringAliasForFilter(): bool
3434
{
35+
return $this->hasQueryStringConfigAlias('filters');
36+
}
3537

36-
return $this->getQueryStringStatusForFilter() && $this->filtersAreEnabled();
38+
public function getQueryStringAliasForFilter(): string
39+
{
40+
return $this->getQueryStringConfigAlias('filters');
3741
}
3842

39-
public function setQueryStringStatusForFilter(bool $status): self
43+
protected function setQueryStringStatusForFilter(bool $status): self
4044
{
4145
return $this->setQueryStringConfigStatus('filters', $status);
4246
}
4347

44-
public function setQueryStringForFilterEnabled(): self
48+
protected function setQueryStringForFilterEnabled(): self
4549
{
4650
return $this->setQueryStringStatusForFilter(true);
4751
}
4852

49-
public function setQueryStringForFilterDisabled(): self
53+
protected function setQueryStringForFilterDisabled(): self
5054
{
5155
return $this->setQueryStringStatusForFilter(false);
5256
}
5357

54-
public function hasQueryStringAliasForFilter(): bool
55-
{
56-
return $this->hasQueryStringConfigAlias('filters');
57-
}
58-
59-
public function getQueryStringAliasForFilter(): string
60-
{
61-
return $this->getQueryStringConfigAlias('filters');
62-
}
63-
64-
public function setQueryStringAliasForFilter(string $alias): self
58+
protected function setQueryStringAliasForFilter(string $alias): self
6559
{
6660
return $this->setQueryStringConfigAlias('filters', $alias);
6761
}

src/Traits/Filters/ManagesFilters.php renamed to src/Traits/Filters/HasFiltersCore.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@
22

33
namespace Rappasoft\LaravelLivewireTables\Traits\Filters;
44

5-
use Illuminate\Database\Eloquent\Builder;
5+
use Rappasoft\LaravelLivewireTables\Traits\Filters\Configuration\FilterConfiguration;
6+
use Rappasoft\LaravelLivewireTables\Traits\Filters\Helpers\FilterHelpers;
67

7-
trait ManagesFilters
8+
trait HasFiltersCore
89
{
10+
use FilterConfiguration,
11+
FilterHelpers;
12+
913
/**
1014
* Sets Filter Default Values
1115
*/
12-
public function mountManagesFilters(): void
16+
public function mountHasFiltersCore(): void
1317
{
1418
$this->restoreFilterValues();
1519

@@ -26,7 +30,7 @@ public function mountManagesFilters(): void
2630
}
2731
}
2832

29-
public function bootedManagesFilters(): void
33+
public function bootedHasFiltersCore(): void
3034
{
3135
$this->setBuilder($this->builder());
3236

src/Traits/WithFilters.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,17 @@
44

55
use Illuminate\Support\Collection;
66
use Livewire\Attributes\Locked;
7-
use Rappasoft\LaravelLivewireTables\Traits\Filters\{Configuration\FilterConfiguration, HasFilterGenericData, HasFilterMenu, HasFilterPills, HasFilterQueryString, HasFiltersStatus, HasFiltersVisibility, Helpers\FilterHelpers, ManagesFilters};
7+
use Rappasoft\LaravelLivewireTables\Traits\Filters\{HasFilterGenericData, HasFilterMenu, HasFilterPills, HasFilterQueryString, HasFiltersCore, HasFiltersStatus, HasFiltersVisibility};
88

99
trait WithFilters
1010
{
11-
use FilterConfiguration,
12-
FilterHelpers,
13-
HasFiltersStatus,
11+
use HasFiltersStatus,
1412
HasFilterGenericData,
1513
HasFilterMenu,
1614
HasFilterPills,
1715
HasFilterQueryString,
1816
HasFiltersVisibility,
19-
ManagesFilters;
17+
HasFiltersCore;
2018

2119
// Set in JS
2220
public array $filterComponents = [];

tests/Http/Livewire/BaseTable.php

Lines changed: 3 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,60 +3,11 @@
33
namespace Rappasoft\LaravelLivewireTables\Tests\Http\Livewire;
44

55
use Rappasoft\LaravelLivewireTables\DataTableComponent;
6+
use Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\Traits\TestHelpers;
67

78
abstract class BaseTable extends DataTableComponent
89
{
9-
public string $paginationTest = 'standard';
10-
11-
public function enableDetailedPagination(string $type = 'standard')
12-
{
13-
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
14-
$this->setPaginationMethod($type);
15-
$this->setDisplayPaginationDetailsEnabled();
16-
17-
}
18-
19-
public function disableDetailedPagination(string $type = 'standard')
20-
{
21-
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
22-
$this->setPaginationMethod($type);
23-
$this->setDisplayPaginationDetailsDisabled();
24-
}
25-
26-
public function setPaginationTest(string $type)
27-
{
28-
$this->paginationTest = $type;
29-
}
10+
use TestHelpers;
3011

31-
public function bootAll()
32-
{
33-
$view = view('livewire-tables::datatable');
34-
35-
$this->boot();
36-
$this->bootedComponentUtilities();
37-
$this->bootedManagesFilters();
38-
$this->bootedWithColumns();
39-
$this->bootedWithColumnSelect();
40-
$this->booted();
41-
$this->mountManagesFilters();
42-
$this->mountComponentUtilities();
43-
$this->mountWithSorting();
44-
$this->renderAll($view);
45-
}
46-
47-
public function renderAll($view = null)
48-
{
49-
if (is_null($view)) {
50-
$view = view('livewire-tables::datatable');
51-
}
52-
$this->renderingWithColumns($view, $view->getData());
53-
$this->renderingWithColumnSelect($view, $view->getData());
54-
$this->renderingWithCustomisations($view, $view->getData());
55-
$this->renderingWithData($view, $view->getData());
56-
$this->renderingWithReordering($view, $view->getData());
57-
$this->renderingWithPagination($view, $view->getData());
58-
$this->render();
59-
60-
return $view;
61-
}
12+
public string $paginationTest = 'standard';
6213
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\Traits;
4+
5+
trait TestHelpers
6+
{
7+
use TestPaginationHelpers;
8+
9+
public function bootAll()
10+
{
11+
$view = view('livewire-tables::datatable');
12+
13+
$this->boot();
14+
$this->bootedComponentUtilities();
15+
$this->bootedHasFiltersCore();
16+
$this->bootedWithColumns();
17+
$this->bootedWithColumnSelect();
18+
$this->booted();
19+
$this->mountHasFiltersCore();
20+
$this->mountComponentUtilities();
21+
$this->mountWithSorting();
22+
$this->renderAll($view);
23+
}
24+
25+
public function renderAll($view = null)
26+
{
27+
if (is_null($view)) {
28+
$view = view('livewire-tables::datatable');
29+
}
30+
$this->renderingWithColumns($view, $view->getData());
31+
$this->renderingWithColumnSelect($view, $view->getData());
32+
$this->renderingWithCustomisations($view, $view->getData());
33+
$this->renderingWithData($view, $view->getData());
34+
$this->renderingWithReordering($view, $view->getData());
35+
$this->renderingWithPagination($view, $view->getData());
36+
$this->render();
37+
38+
return $view;
39+
}
40+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\Traits;
4+
5+
trait TestPaginationHelpers
6+
{
7+
public function enableDetailedPagination(string $type = 'standard')
8+
{
9+
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
10+
$this->setPaginationMethod($type);
11+
$this->setDisplayPaginationDetailsEnabled();
12+
13+
}
14+
15+
public function disableDetailedPagination(string $type = 'standard')
16+
{
17+
$this->setPerPageAccepted([1, 3, 5, 10, 15, 25, 50])->setPerPage(3);
18+
$this->setPaginationMethod($type);
19+
$this->setDisplayPaginationDetailsDisabled();
20+
}
21+
22+
public function setPaginationTest(string $type)
23+
{
24+
$this->paginationTest = $type;
25+
}
26+
}

tests/Unit/DataTableComponentTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ public function test_minimum_one_column_expected(): void
6868
{
6969
$this->expectException(\Rappasoft\LaravelLivewireTables\Exceptions\NoColumnsException::class);
7070
$table = new NoColumnsTable;
71-
$table->mountManagesFilters();
71+
$table->mountHasFiltersCore();
7272
$table->boot();
73-
$table->bootedManagesFilters();
73+
$table->bootedHasFiltersCore();
7474
$table->bootedComponentUtilities();
7575
$table->bootedWithColumns();
7676
$table->bootedWithColumnSelect();

tests/Unit/Traits/Core/QueryStrings/QueryStringTestBase.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,21 @@ public function configure(): void
2323
{
2424
$this->setDataTableFingerprint('test');
2525
}
26+
27+
public function setQueryStringAliasForFilter(string $alias): self
28+
{
29+
return parent::setQueryStringAliasForFilter($alias);
30+
}
31+
32+
public function setQueryStringForFilterEnabled(): self
33+
{
34+
return parent::setQueryStringForFilterEnabled();
35+
}
36+
37+
public function setQueryStringForFilterDisabled(): self
38+
{
39+
return parent::setQueryStringForFilterDisabled();
40+
}
2641
};
2742
}
2843
}

tests/Unit/Traits/WithMountTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public function test_mounttable_gets_correct_first_item(): void
1414
$table = new PetsTableMount;
1515
$table->boot();
1616
$table->mount(102);
17-
$table->mountManagesFilters();
17+
$table->mountHasFiltersCore();
1818
$table->bootedComponentUtilities();
1919
$table->bootedWithColumns();
2020
$table->bootedWithColumnSelect();
@@ -30,9 +30,9 @@ public function test_mounttable_gets_correct_first_item(): void
3030
$table2 = new PetsTableMount;
3131
$table2->boot();
3232
$table2->mount(202);
33-
$table2->mountManagesFilters();
33+
$table2->mountHasFiltersCore();
3434
$table2->bootedComponentUtilities();
35-
$table2->bootedManagesFilters();
35+
$table2->bootedHasFiltersCore();
3636
$table2->bootedWithColumns();
3737
$table2->bootedWithColumnSelect();
3838
$table2->booted();
@@ -46,8 +46,8 @@ public function test_mounttable_gets_correct_first_item(): void
4646
$table3 = new PetsTableMount;
4747
$table3->boot();
4848
$table3->mount();
49-
$table3->mountManagesFilters();
50-
$table3->bootedManagesFilters();
49+
$table3->mountHasFiltersCore();
50+
$table3->bootedHasFiltersCore();
5151
$table3->bootedComponentUtilities();
5252
$table3->bootedWithColumns();
5353
$table3->bootedWithColumnSelect();

0 commit comments

Comments
 (0)