Functioning client list

This commit is contained in:
Matt Young 2026-01-28 03:42:14 -06:00
parent bfb943af62
commit 428e5ba3a0
1 changed files with 33 additions and 8 deletions

View File

@ -2,36 +2,61 @@
use App\Models\Client;
use Livewire\Component;
use Livewire\Attributes\Computed;
use Livewire\WithPagination;
new class extends Component {
use WithPagination;
public string $sortBy = 'abbreviation';
public string $sortDirection = 'desc';
public function sort($column): void
{
if ($this->sortBy === $column) {
$this->sortDirection = $this->sortDirection === 'asc' ? 'desc' : 'asc';
} else {
$this->sortBy = $column;
$this->sortDirection = 'asc';
}
}
#[Computed]
public function clients()
{
return Client::all();
return Client::orderBy($this->sortBy, $this->sortDirection)->paginate(10);
}
};
?>
<div>
<flux:table>
<flux:table :paginate="$this->clients">
<flux:table.columns>
<flux:table.column>Name</flux:table.column>
<flux:table.column>
<flux:table.column sortable :sorted="$sortBy === 'name'" :direction="$sortDirection"
wire:click="sort('name')">
Name
</flux:table.column>
<flux:table.column sortable :sorted="$sortBy === 'abbreviation'" :direction="$sortDirection"
wire:click="sort('abbreviation')">
Abbreviation
</flux:table.column>
<flux:table.column>
<flux:table.column sortable :sorted="$sortBy === 'audition_date'" :direction="$sortDirection"
wire:click="sort('audition_date')">
Audition Date
</flux:table.column>
<flux:table.column>
<flux:table.column sortable :sorted="$sortBy === 'status'" :direction="$sortDirection"
wire:click="sort('status')">
Status
</flux:table.column>
<flux:table.column>
<flux:table.column sortable :sorted="$sortBy === 'created_at'" :direction="$sortDirection"
wire:click="sort('created_at')">
Created
</flux:table.column>
</flux:table.columns>
<flux:table.rows>
@foreach($this->clients() as $client)
@foreach($this->clients as $client)
<flux:table.row :key="$client->id">
<flux:table.cell>{{ $client->name }}</flux:table.cell>
<flux:table.cell>{{ $client->abbreviation }}</flux:table.cell>