-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathGlobalSearchFilterComponent.php
More file actions
53 lines (43 loc) · 1.43 KB
/
GlobalSearchFilterComponent.php
File metadata and controls
53 lines (43 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
namespace App\Livewire;
use Livewire\Component;
use App\Enums\GlobalSearchFiltersEnum;
use App\Services\GlobalSearchService;
class GlobalSearchFilterComponent extends Component
{
public $selectedFilter = GlobalSearchFiltersEnum::ALL->value;
public $searchQuery = '';
protected $globalSearchService;
protected $queryString = [
'selectedFilter' => ['except' => GlobalSearchFiltersEnum::ALL->value],
'searchQuery' => ['except' => ''],
];
public function __construct()
{
$this->globalSearchService = new GlobalSearchService();
}
public function selectFilter($filter)
{
if (!GlobalSearchFiltersEnum::tryFrom($filter)) {
return;
}
$this->selectedFilter = $filter;
$this->dispatch('filterChanged', filter: $filter);
}
public function search()
{
$this->dispatch('searchQueryChanged', term: $this->searchQuery);
}
public function render()
{
/*return view('livewire.global-filter-component', [
'filters' => GlobalSearchFiltersEnum::values(),
]);*/
return view('livewire.global-filter-component', [
'filters' => collect(GlobalSearchFiltersEnum::cases())->map(fn($filter) => [
'key' => $filter->value, //Enum value (e.g.,'year')
'label' => $filter->label(), //Translated text (e.g.,'Année')
]),
]);
}
}