Skip to content

Commit 3b28b79

Browse files
authored
Adjust for SortQueryString
1 parent 3659283 commit 3b28b79

File tree

3 files changed

+141
-106
lines changed

3 files changed

+141
-106
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;
4+
5+
use Livewire\Attributes\Locked;
6+
7+
trait HasQueryString
8+
{
9+
#[Locked]
10+
public array $queryStringConfig = [
11+
'columns' => [],
12+
'filter' => [],
13+
'search' => [],
14+
'sorts' => [],
15+
];
16+
17+
protected function getQueryStringConfig(string $type): array
18+
{
19+
return array_merge(['status' => null, 'alias' => null], ($this->queryStringConfig[$type] ?? []));
20+
}
21+
22+
protected function hasQueryStringConfigStatus(string $type): bool
23+
{
24+
return isset($this->getQueryStringConfig($type)['status']);
25+
}
26+
27+
protected function getQueryStringConfigStatus(string $type): bool
28+
{
29+
return $this->getQueryStringConfig($type)['status'] ?? $this->getQueryStringStatus();
30+
}
31+
32+
protected function hasQueryStringConfigAlias(string $type): bool
33+
{
34+
return isset($this->getQueryStringConfig($type)['alias']);
35+
}
36+
37+
protected function getQueryStringConfigAlias(string $type): string
38+
{
39+
return $this->getQueryStringConfig($type)['alias'] ?? $this->getQueryStringAlias()."-".$type;
40+
}
41+
42+
43+
protected function setQueryStringConfig(string $type, array $config): self
44+
{
45+
$this->queryStringConfig[$type] = array_merge($this->getQueryStringConfig($type), $config);
46+
47+
return $this;
48+
}
49+
50+
protected function setQueryStringConfigStatus(string $type, bool $status): self
51+
{
52+
return $this->setQueryStringConfig($type, ['status' => $status]);
53+
54+
}
55+
56+
protected function setQueryStringConfigAlias(string $type, string $alias): self
57+
{
58+
return $this->setQueryStringConfig($type,['alias' => $alias]);
59+
}
60+
61+
}

src/Traits/Core/QueryStrings/HasQueryStringForSearch.php

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,32 @@
22

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

5-
use Livewire\Attributes\Locked;
6-
75
trait HasQueryStringForSearch
86
{
9-
#[Locked]
10-
public ?bool $queryStringStatusForSearch;
11-
12-
protected ?string $queryStringAliasForSearch;
13-
147
protected function queryStringHasQueryStringForSearch(): array
158
{
169
return ($this->queryStringForSearchEnabled() && $this->searchIsEnabled()) ? ['search' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForSearch()]] : [];
1710

1811
}
1912

20-
public function setupQueryStringStatusForSearch(): void
13+
protected function setupQueryStringStatusForSearch(): void
2114
{
2215
if (! $this->hasQueryStringStatusForSearch()) {
2316
$this->setQueryStringForSearchEnabled();
2417
}
2518
}
2619

27-
public function hasQueryStringStatusForSearch(): bool
20+
protected function hasQueryStringStatusForSearch(): bool
2821
{
29-
return isset($this->queryStringStatusForSearch);
22+
return $this->hasQueryStringConfigStatus('search');
3023
}
3124

32-
public function getQueryStringStatusForSearch(): bool
25+
protected function getQueryStringStatusForSearch(): bool
3326
{
34-
return $this->queryStringStatusForSearch ?? true;
27+
return $this->getQueryStringConfigStatus("search");
3528
}
3629

37-
public function queryStringForSearchEnabled(): bool
30+
protected function queryStringForSearchEnabled(): bool
3831
{
3932
$this->setupQueryStringStatusForSearch();
4033

@@ -43,39 +36,31 @@ public function queryStringForSearchEnabled(): bool
4336

4437
public function setQueryStringStatusForSearch(bool $status): self
4538
{
46-
$this->queryStringStatusForSearch = $status;
47-
48-
return $this;
39+
return $this->setQueryStringConfigStatus("search", $status);
4940
}
5041

5142
public function setQueryStringForSearchEnabled(): self
5243
{
53-
$this->setQueryStringStatusForSearch(true);
54-
55-
return $this;
44+
return $this->setQueryStringStatusForSearch(true);
5645
}
5746

5847
public function setQueryStringForSearchDisabled(): self
5948
{
60-
$this->setQueryStringStatusForSearch(false);
61-
62-
return $this;
49+
return $this->setQueryStringStatusForSearch(false);
6350
}
6451

65-
public function hasQueryStringAliasForSearch(): bool
52+
protected function hasQueryStringAliasForSearch(): bool
6653
{
67-
return isset($this->queryStringAliasForSearch);
54+
return $this->hasQueryStringConfigAlias('search');
6855
}
6956

70-
public function getQueryStringAliasForSearch(): string
57+
protected function getQueryStringAliasForSearch(): string
7158
{
72-
return $this->queryStringAliasForSearch ?? $this->getQueryStringAlias().'-search';
59+
return $this->getQueryStringConfigAlias("search");
7360
}
7461

7562
public function setQueryStringAliasForSearch(string $alias): self
7663
{
77-
$this->queryStringAliasForSearch = $alias;
78-
79-
return $this;
64+
return $this->setQueryStringConfigAlias("search", $alias);
8065
}
8166
}
Lines changed: 66 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,66 @@
1-
<?php
2-
3-
namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;
4-
5-
use Livewire\Attributes\Locked;
6-
7-
trait HasQueryStringForSort
8-
{
9-
#[Locked]
10-
public ?bool $queryStringStatusForSort;
11-
12-
protected ?string $queryStringAliasForSort;
13-
14-
protected function queryStringHasQueryStringForSort(): array
15-
{
16-
return ($this->queryStringForSortEnabled() && $this->sortingIsEnabled()) ? ['sorts' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForSort()]] : [];
17-
18-
}
19-
20-
public function setupQueryStringStatusForSort(): void
21-
{
22-
if (! $this->hasQueryStringStatusForSort()) {
23-
$this->setQueryStringForSortEnabled();
24-
}
25-
}
26-
27-
public function hasQueryStringStatusForSort(): bool
28-
{
29-
return isset($this->queryStringStatusForSort);
30-
}
31-
32-
public function getQueryStringStatusForSort(): bool
33-
{
34-
return $this->queryStringStatusForSort ?? true;
35-
}
36-
37-
public function queryStringForSortEnabled(): bool
38-
{
39-
$this->setupQueryStringStatusForSort();
40-
41-
return $this->getQueryStringStatusForSort() && $this->sortingIsEnabled();
42-
}
43-
44-
public function setQueryStringStatusForSort(bool $status): self
45-
{
46-
$this->queryStringStatusForSort = $status;
47-
48-
return $this;
49-
}
50-
51-
public function setQueryStringForSortEnabled(): self
52-
{
53-
return $this->setQueryStringStatusForSort(true);
54-
}
55-
56-
public function setQueryStringForSortDisabled(): self
57-
{
58-
return $this->setQueryStringStatusForSort(false);
59-
}
60-
61-
public function hasQueryStringAliasForSort(): bool
62-
{
63-
return isset($this->queryStringAliasForSort);
64-
}
65-
66-
public function getQueryStringAliasForSort(): string
67-
{
68-
return $this->queryStringAliasForSort ?? $this->getQueryStringAlias().'-sorts';
69-
}
70-
71-
public function setQueryStringAliasForSort(string $alias): self
72-
{
73-
$this->queryStringAliasForSort = $alias;
74-
75-
return $this;
76-
}
77-
}
1+
<?php
2+
3+
namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;
4+
5+
trait HasQueryStringForSort
6+
{
7+
8+
protected function queryStringHasQueryStringForSort(): array
9+
{
10+
return ($this->queryStringForSortEnabled() && $this->sortingIsEnabled()) ? ['sorts' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForSort()]] : [];
11+
12+
}
13+
public function setupQueryStringStatusForSort(): void
14+
{
15+
if (! $this->hasQueryStringStatusForSort()) {
16+
$this->setQueryStringForSortEnabled();
17+
}
18+
}
19+
20+
protected function hasQueryStringStatusForSort(): bool
21+
{
22+
return $this->hasQueryStringConfigStatus('sorts');
23+
}
24+
25+
protected function getQueryStringStatusForSort(): bool
26+
{
27+
return $this->getQueryStringConfigStatus("sorts");
28+
}
29+
30+
protected function queryStringForSortEnabled(): bool
31+
{
32+
$this->setupQueryStringStatusForSort();
33+
34+
return $this->getQueryStringStatusForSort() && $this->sortingIsEnabled();
35+
}
36+
37+
public function setQueryStringStatusForSort(bool $status): self
38+
{
39+
return $this->setQueryStringConfigStatus("sorts", $status);
40+
}
41+
42+
public function setQueryStringForSortEnabled(): self
43+
{
44+
return $this->setQueryStringStatusForSort(true);
45+
}
46+
47+
public function setQueryStringForSortDisabled(): self
48+
{
49+
return $this->setQueryStringStatusForSort(false);
50+
}
51+
52+
protected function hasQueryStringAliasForSort(): bool
53+
{
54+
return $this->hasQueryStringConfigAlias('sorts');
55+
}
56+
57+
protected function getQueryStringAliasForSort(): string
58+
{
59+
return $this->getQueryStringConfigAlias("sorts");
60+
}
61+
62+
public function setQueryStringAliasForSort(string $alias): self
63+
{
64+
return $this->setQueryStringConfigAlias("sorts", $alias);
65+
}
66+
}

0 commit comments

Comments
 (0)