Skip to content

Commit 5359390

Browse files
authored
Updates for QueryStrings
1 parent 6598b25 commit 5359390

File tree

6 files changed

+163
-99
lines changed

6 files changed

+163
-99
lines changed

src/Traits/Core/Filters/HandlesFilterTraits.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
namespace Rappasoft\LaravelLivewireTables\Traits\Core\Filters;
44

5+
use Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings\HasQueryStringForFilter;
6+
57
trait HandlesFilterTraits
68
{
79
use ManagesFilters,
810
HasFilterGenericData,
911
HasFilterMenuStyling,
1012
HasFilterPillsStyling,
11-
HasFilterQueryString,
13+
HasQueryStringForFilter,
1214
HasFiltersStatus,
1315
HasFiltersVisibility;
1416
}
Lines changed: 84 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,84 @@
1-
<?php
2-
3-
namespace Rappasoft\LaravelLivewireTables\Traits\Core\Filters;
4-
5-
use Livewire\Attributes\Locked;
6-
7-
trait HasFilterQueryString
8-
{
9-
#[Locked]
10-
public ?bool $queryStringStatusForFilter;
11-
12-
protected ?string $queryStringAliasForFilter;
13-
14-
protected function queryStringHasQueryStringForFilter(): array
15-
{
16-
return ($this->queryStringForFilterIsEnabled()) ?
17-
[
18-
'appliedFilters' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForFilter()],
19-
'filterComponents' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForFilter()],
20-
] : [];
21-
}
22-
23-
protected function setupQueryStringStatusForFilter(): void
24-
{
25-
if (! $this->hasQueryStringStatusForFilter()) {
26-
$this->setQueryStringForFilterEnabled();
27-
}
28-
}
29-
30-
public function hasQueryStringStatusForFilter(): bool
31-
{
32-
return isset($this->queryStringStatusForFilter);
33-
}
34-
35-
public function getQueryStringStatusForFilter(): bool
36-
{
37-
return $this->queryStringStatusForFilter ?? true;
38-
}
39-
40-
public function queryStringForFilterIsEnabled(): bool
41-
{
42-
$this->setupQueryStringStatusForFilter();
43-
44-
return $this->getQueryStringStatusForFilter() && $this->filtersAreEnabled();
45-
}
46-
47-
public function setQueryStringStatusForFilter(bool $status): self
48-
{
49-
$this->queryStringStatusForFilter = $status;
50-
51-
return $this;
52-
}
53-
54-
public function setQueryStringForFilterEnabled(): self
55-
{
56-
$this->setQueryStringStatusForFilter(true);
57-
58-
return $this;
59-
}
60-
61-
public function setQueryStringForFilterDisabled(): self
62-
{
63-
$this->setQueryStringStatusForFilter(false);
64-
65-
return $this;
66-
}
67-
68-
public function hasQueryStringAliasForFilter(): bool
69-
{
70-
return isset($this->queryStringAliasForFilter);
71-
}
72-
73-
public function getQueryStringAliasForFilter(): string
74-
{
75-
return $this->queryStringAliasForFilter ?? $this->getQueryStringAlias().'-filters';
76-
}
77-
78-
public function setQueryStringAliasForFilter(string $alias): self
79-
{
80-
$this->queryStringAliasForFilter = $alias;
81-
82-
return $this;
83-
}
84-
}
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;
4+
5+
use Livewire\Attributes\Locked;
6+
7+
trait HasQueryStringForFilter
8+
{
9+
#[Locked]
10+
public ?bool $queryStringStatusForFilter;
11+
12+
protected ?string $queryStringAliasForFilter;
13+
14+
protected function queryStringHasQueryStringForFilter(): array
15+
{
16+
return ($this->queryStringForFilterIsEnabled()) ?
17+
[
18+
'appliedFilters' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForFilter()],
19+
'filterComponents' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForFilter()],
20+
] : [];
21+
}
22+
23+
protected function setupQueryStringStatusForFilter(): void
24+
{
25+
if (! $this->hasQueryStringStatusForFilter()) {
26+
$this->setQueryStringForFilterEnabled();
27+
}
28+
}
29+
30+
public function hasQueryStringStatusForFilter(): bool
31+
{
32+
return isset($this->queryStringStatusForFilter);
33+
}
34+
35+
public function getQueryStringStatusForFilter(): bool
36+
{
37+
return $this->queryStringStatusForFilter ?? true;
38+
}
39+
40+
public function queryStringForFilterIsEnabled(): bool
41+
{
42+
$this->setupQueryStringStatusForFilter();
43+
44+
return $this->getQueryStringStatusForFilter() && $this->filtersAreEnabled();
45+
}
46+
47+
public function setQueryStringStatusForFilter(bool $status): self
48+
{
49+
$this->queryStringStatusForFilter = $status;
50+
51+
return $this;
52+
}
53+
54+
public function setQueryStringForFilterEnabled(): self
55+
{
56+
$this->setQueryStringStatusForFilter(true);
57+
58+
return $this;
59+
}
60+
61+
public function setQueryStringForFilterDisabled(): self
62+
{
63+
$this->setQueryStringStatusForFilter(false);
64+
65+
return $this;
66+
}
67+
68+
public function hasQueryStringAliasForFilter(): bool
69+
{
70+
return isset($this->queryStringAliasForFilter);
71+
}
72+
73+
public function getQueryStringAliasForFilter(): string
74+
{
75+
return $this->queryStringAliasForFilter ?? $this->getQueryStringAlias().'-filters';
76+
}
77+
78+
public function setQueryStringAliasForFilter(string $alias): self
79+
{
80+
$this->queryStringAliasForFilter = $alias;
81+
82+
return $this;
83+
}
84+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;
4+
5+
trait HasQueryStringForPagination
6+
{
7+
protected function queryStringHasQueryStringForPagination(): array
8+
{
9+
return (($this->queryStringIsEnabled() || $this->queryStringForPaginationEnabled()) && $this->paginationIsEnabled()) ?
10+
[
11+
'perPage' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForPagination()]
12+
] : [];
13+
14+
}
15+
16+
protected function setupQueryStringStatusForPagination(): void
17+
{
18+
if (! $this->hasQueryStringStatusForPagination()) {
19+
$this->setQueryStringForPaginationEnabled();
20+
}
21+
}
22+
23+
public function hasQueryStringStatusForPagination(): bool
24+
{
25+
return $this->hasQueryStringConfigStatus('perPage');
26+
}
27+
28+
public function getQueryStringStatusForPagination(): bool
29+
{
30+
return $this->getQueryStringConfigStatus('perPage');
31+
}
32+
33+
public function queryStringForPaginationEnabled(): bool
34+
{
35+
$this->setupQueryStringStatusForPagination();
36+
37+
return $this->getQueryStringStatusForPagination() && $this->paginationIsEnabled();
38+
}
39+
40+
public function setQueryStringStatusForPagination(bool $status): self
41+
{
42+
return $this->setQueryStringConfigStatus('perPage', $status);
43+
}
44+
45+
public function setQueryStringForPaginationEnabled(): self
46+
{
47+
return $this->setQueryStringStatusForPagination(true);
48+
}
49+
50+
public function setQueryStringForPaginationDisabled(): self
51+
{
52+
return $this->setQueryStringStatusForPagination(false);
53+
}
54+
55+
public function hasQueryStringAliasForPagination(): bool
56+
{
57+
return $this->hasQueryStringConfigAlias('perPage');
58+
}
59+
60+
public function getQueryStringAliasForPagination(): string
61+
{
62+
return $this->getQueryStringConfigAlias('perPage');
63+
}
64+
65+
public function setQueryStringAliasForPagination(string $alias): self
66+
{
67+
return $this->setQueryStringConfigAlias('perPage', $alias);
68+
}
69+
}

src/Traits/Core/QueryStrings/HasQueryStringForSearch.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ trait HasQueryStringForSearch
66
{
77
protected function queryStringHasQueryStringForSearch(): array
88
{
9-
return ($this->queryStringForSearchEnabled() && $this->searchIsEnabled()) ? ['search' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForSearch()]] : [];
10-
9+
return (($this->queryStringIsEnabled() || $this->queryStringForSearchEnabled()) && $this->searchIsEnabled()) ?
10+
[
11+
'search' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForSearch()]
12+
] : [];
1113
}
1214

1315
protected function setupQueryStringStatusForSearch(): void

src/Traits/WithPagination.php

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77
use Rappasoft\LaravelLivewireTables\Traits\Configuration\PaginationConfiguration;
88
use Rappasoft\LaravelLivewireTables\Traits\Helpers\PaginationHelpers;
99
use Rappasoft\LaravelLivewireTables\Traits\Styling\HasPaginationStyling;
10+
use Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings\HasQueryStringForPagination;
1011

1112
trait WithPagination
1213
{
1314
use LivewirePagination,
1415
PaginationConfiguration,
1516
PaginationHelpers,
17+
HasQueryStringForPagination,
1618
HasPaginationStyling;
1719

1820
public ?string $pageName = null;
@@ -81,18 +83,6 @@ public function updatedPerPage(int|string $value): void
8183

8284
}
8385

84-
protected function queryStringWithPagination(): array
85-
{
86-
87-
if ($this->queryStringIsEnabled()) {
88-
return [
89-
'perPage' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAlias().'perPage'],
90-
];
91-
}
92-
93-
return [];
94-
}
95-
9686
public function renderingWithPagination(): void
9787
{
9888
$this->setupPagination();

src/Traits/WithQueryString.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ trait WithQueryString
1515
public array $queryStringConfig = [
1616
'columns' => ['status' => false, 'alias' => null],
1717
'filter' => ['status' => false, 'alias' => null],
18+
'perPage' => ['status' => false, 'alias' => null],
1819
'search' => ['status' => true, 'alias' => null],
1920
'sorts' => ['status' => true, 'alias' => null],
2021
];

0 commit comments

Comments
 (0)