From fac455e7f1e8671c75cad7e22eda95d28c146dc9 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 13 Nov 2025 20:17:52 +0700 Subject: [PATCH] refactor(datatable): menjadikan dinamis kolom pengatur sorting --- .../Datatable/Studio/Manage/PurchasesTable.php | 7 ++++++- app/Traits/Datatable/WithConfiguration.php | 12 ++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/Livewire/Datatable/Studio/Manage/PurchasesTable.php b/app/Livewire/Datatable/Studio/Manage/PurchasesTable.php index 94310d4..49593e3 100644 --- a/app/Livewire/Datatable/Studio/Manage/PurchasesTable.php +++ b/app/Livewire/Datatable/Studio/Manage/PurchasesTable.php @@ -3,6 +3,7 @@ namespace App\Livewire\Datatable\Studio\Manage; use App\Models\Purchase; +use App\Traits\Datatable\WithAppendColumn; use App\Traits\Datatable\WithConfiguration; use App\Traits\Datatable\WithPrependColumn; use App\Traits\WithMediaHandler; @@ -13,10 +14,14 @@ class PurchasesTable extends DataTableComponent { - use WithConfiguration, WithMediaHandler, WithPrependColumn; + use WithAppendColumn, WithConfiguration, WithMediaHandler, WithPrependColumn; protected $model = Purchase::class; + protected string $sortColumn = 'purchase_date'; + + protected string $sortDirection = 'desc'; + public function columns(): array { return [ diff --git a/app/Traits/Datatable/WithConfiguration.php b/app/Traits/Datatable/WithConfiguration.php index ecb1246..b445ff6 100644 --- a/app/Traits/Datatable/WithConfiguration.php +++ b/app/Traits/Datatable/WithConfiguration.php @@ -33,11 +33,15 @@ public function configure(): void // Sorting ->setSortingPillsDisabled() - ->setSingleSortingEnabled() - ->setDefaultSort('created_at', 'desc') + ->setSingleSortingEnabled(); - // Filter - ->setFilterPillsDisabled() + $defaultColumn = property_exists($this, 'sortColumn') ? $this->sortColumn : 'created_at'; + $defaultDirection = property_exists($this, 'sortDirection') ? $this->sortDirection : 'desc'; + + $this->setDefaultSort($defaultColumn, $defaultDirection); + + // Filter + $this->setFilterPillsDisabled() ->setFilterPopoverAttributes( [ 'class' => 'w-50',