Skip to content

Commit 567b9da

Browse files
authored
Migrate Filter Status into Own Trait (rappasoft#2147)
* Migrate Filter Status into Own Trait * Fix styling * Update setFiltersStatus to protected * Fix styling * Restore filters behaviour to public --------- Co-authored-by: lrljoe <[email protected]>
1 parent d17464b commit 567b9da

File tree

6 files changed

+134
-41
lines changed

6 files changed

+134
-41
lines changed

src/Traits/Configuration/FilterConfiguration.php

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,4 @@
22

33
namespace Rappasoft\LaravelLivewireTables\Traits\Configuration;
44

5-
trait FilterConfiguration
6-
{
7-
public function setFiltersStatus(bool $status): self
8-
{
9-
$this->filtersStatus = $status;
10-
11-
return $this;
12-
}
13-
14-
public function setFiltersEnabled(): self
15-
{
16-
$this->setFiltersStatus(true);
17-
18-
return $this;
19-
}
20-
21-
public function setFiltersDisabled(): self
22-
{
23-
$this->setFiltersStatus(false);
24-
25-
return $this;
26-
}
27-
}
5+
trait FilterConfiguration {}

src/Traits/Core/Filters/HandlesFilterTraits.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ trait HandlesFilterTraits
99
HasFilterMenuStyling,
1010
HasFilterPillsStyling,
1111
HasFilterQueryString,
12+
HasFiltersStatus,
1213
HasFiltersVisibility;
1314
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Traits\Core\Filters;
4+
5+
use Livewire\Attributes\Locked;
6+
7+
trait HasFiltersStatus
8+
{
9+
#[Locked]
10+
public bool $filtersStatus = true;
11+
12+
public function getFiltersStatus(): bool
13+
{
14+
return $this->filtersStatus;
15+
}
16+
17+
public function filtersAreEnabled(): bool
18+
{
19+
return $this->getFiltersStatus() === true;
20+
}
21+
22+
public function filtersAreDisabled(): bool
23+
{
24+
return $this->getFiltersStatus() === false;
25+
}
26+
27+
public function setFiltersStatus(bool $status): self
28+
{
29+
$this->filtersStatus = $status;
30+
31+
return $this;
32+
}
33+
34+
public function setFiltersEnabled(): self
35+
{
36+
$this->setFiltersStatus(true);
37+
38+
return $this;
39+
}
40+
41+
public function setFiltersDisabled(): self
42+
{
43+
$this->setFiltersStatus(false);
44+
45+
return $this;
46+
}
47+
}

src/Traits/Helpers/FilterHelpers.php

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

1212
trait FilterHelpers
1313
{
14-
public function getFiltersStatus(): bool
15-
{
16-
return $this->filtersStatus;
17-
}
18-
19-
public function filtersAreEnabled(): bool
20-
{
21-
return $this->getFiltersStatus() === true;
22-
}
23-
24-
public function filtersAreDisabled(): bool
25-
{
26-
return $this->getFiltersStatus() === false;
27-
}
28-
2914
public function hasFilters(): bool
3015
{
3116
return $this->getFiltersCount() > 0;

src/Traits/WithFilters.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@ trait WithFilters
1414
FilterHelpers;
1515
use HandlesFilterTraits;
1616

17-
#[Locked]
18-
public bool $filtersStatus = true;
19-
2017
#[Locked]
2118
public int $filterCount;
2219

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Tests\Unit\Traits\Core\Filters;
4+
5+
use PHPUnit\Framework\Attributes\Group;
6+
use Rappasoft\LaravelLivewireTables\Tests\Http\Livewire\PetsTable;
7+
use Rappasoft\LaravelLivewireTables\Tests\TestCase;
8+
9+
#[Group('Filters')]
10+
final class FilterStatusTest extends TestCase
11+
{
12+
public function test_can_check_if_filters_are_enabled(): void
13+
{
14+
$this->assertTrue($this->basicTable->filtersAreEnabled());
15+
}
16+
17+
public function test_can_check_if_filters_can_be_disabled_when_enbled(): void
18+
{
19+
20+
$mock = new class extends PetsTable
21+
{
22+
public function configure(): void
23+
{
24+
parent::configure();
25+
$this->setFiltersEnabled();
26+
}
27+
28+
public function setFiltersToEnabled()
29+
{
30+
$this->setFiltersEnabled();
31+
}
32+
33+
public function setFiltersToDisabled()
34+
{
35+
$this->setFiltersDisabled();
36+
}
37+
};
38+
39+
$mock->configure();
40+
$mock->boot();
41+
42+
$this->assertTrue($mock->filtersAreEnabled());
43+
$this->assertFalse($mock->filtersAreDisabled());
44+
45+
$mock->setFiltersToDisabled();
46+
47+
$this->assertFalse($mock->filtersAreEnabled());
48+
$this->assertTrue($mock->filtersAreDisabled());
49+
50+
}
51+
52+
public function test_can_check_if_filters_can_be_enabled_when_disabled(): void
53+
{
54+
55+
$mock = new class extends PetsTable
56+
{
57+
public function configure(): void
58+
{
59+
parent::configure();
60+
$this->setFiltersDisabled();
61+
}
62+
63+
public function setFiltersToEnabled()
64+
{
65+
$this->setFiltersEnabled();
66+
}
67+
68+
public function setFiltersToDisabled()
69+
{
70+
$this->setFiltersDisabled();
71+
}
72+
};
73+
74+
$mock->configure();
75+
$mock->boot();
76+
77+
$this->assertTrue($mock->filtersAreDisabled());
78+
$this->assertFalse($mock->filtersAreEnabled());
79+
80+
$mock->setFiltersToEnabled();
81+
$this->assertTrue($mock->filtersAreEnabled());
82+
$this->assertFalse($mock->filtersAreDisabled());
83+
84+
}
85+
}

0 commit comments

Comments
 (0)