diff --git a/app/Livewire/Users/UserTable.php b/app/Livewire/Users/UserTable.php index 47b4905..6764448 100644 --- a/app/Livewire/Users/UserTable.php +++ b/app/Livewire/Users/UserTable.php @@ -17,6 +17,7 @@ class UserTable extends Component public $sortBy = 'name'; public $sortDirection = 'asc'; + public $nameFilter = ''; public function render() { @@ -26,7 +27,7 @@ public function render() public function sort($column) { - if ($this->sortBy === $column) { + if ($this->sortBy === $column) { $this->sortDirection = $this->sortDirection === 'asc' ? 'desc' : 'asc'; } else { $this->sortBy = $column; @@ -34,12 +35,27 @@ public function sort($column) { } } + public function filterByName() + { + $this->resetPage(); + } + + public function resetFilter() + { + $this->nameFilter = ''; + $this->resetPage(); + } + #[Computed] public function users() { - return User::orderBy($this->sortBy, $this->sortDirection)->paginate(5); - // simple pagination: - // return User::orderBy($this->sortBy, $this->sortDirection)->simplePaginate(5); + return User::query() + ->when($this->nameFilter !== '', function ($query) { + $query->where('name', 'like', '%' . $this->nameFilter . '%'); + }) + ->orderBy($this->sortBy, $this->sortDirection) + ->paginate(5); } + } diff --git a/resources/views/livewire/users/user-table.blade.php b/resources/views/livewire/users/user-table.blade.php index 15a9eef..8d4cd1f 100644 --- a/resources/views/livewire/users/user-table.blade.php +++ b/resources/views/livewire/users/user-table.blade.php @@ -10,6 +10,38 @@

Users Table

+
+ +
+ + + Filter + + + Reset + +
+
+
+