From 934dad1058f18cbac69fb2cc268f068f73ef499e Mon Sep 17 00:00:00 2001 From: antoine Date: Thu, 12 Jun 2025 17:15:51 +0200 Subject: [PATCH 1/2] Allow custom date range preset --- .../Utils/Filters/PeriodRequiredFilter.php | 8 +- .../components/filters/DateRangeFilter.vue | 23 ++- .../filters/DateRangeFilterValue.vue | 14 +- resources/js/types/generated.d.ts | 8 +- src/Data/Filters/DateRangeFilterData.php | 3 +- src/Data/Filters/DateRangePresetData.php | 22 +++ src/Filters/DateRange/DateRangePreset.php | 88 ++++++++++ src/Filters/DateRangeFilter.php | 103 +++--------- .../EntityList/SharpEntityListFilterTest.php | 157 +++++++++++++++++- 9 files changed, 324 insertions(+), 102 deletions(-) create mode 100644 src/Data/Filters/DateRangePresetData.php diff --git a/demo/app/Sharp/Utils/Filters/PeriodRequiredFilter.php b/demo/app/Sharp/Utils/Filters/PeriodRequiredFilter.php index ef01d716b..60274eb93 100644 --- a/demo/app/Sharp/Utils/Filters/PeriodRequiredFilter.php +++ b/demo/app/Sharp/Utils/Filters/PeriodRequiredFilter.php @@ -2,13 +2,19 @@ namespace App\Sharp\Utils\Filters; +use Code16\Sharp\Filters\DateRange\DateRangePreset; use Code16\Sharp\Filters\DateRangeRequiredFilter; class PeriodRequiredFilter extends DateRangeRequiredFilter { public function buildFilterConfig(): void { - $this->configureLabel('Period')->configureShowPresets(); + $this->configureLabel('Period') + ->configureShowPresets(presets: [ + DateRangePreset::make(today()->subDays(3), today(), 'Last 3 days'), + DateRangePreset::thisMonth(), + DateRangePreset::thisYear(), + ]); } public function defaultValue(): array diff --git a/resources/js/filters/components/filters/DateRangeFilter.vue b/resources/js/filters/components/filters/DateRangeFilter.vue index 5e1a4ad14..e6b5f2409 100644 --- a/resources/js/filters/components/filters/DateRangeFilter.vue +++ b/resources/js/filters/components/filters/DateRangeFilter.vue @@ -1,6 +1,6 @@