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/docs/guide/filters.md b/docs/guide/filters.md index 68fc164c7..e11b54254 100644 --- a/docs/guide/filters.md +++ b/docs/guide/filters.md @@ -161,6 +161,39 @@ class ProductCreationDateFilter extends DateRangeFilter } ``` +You can also define specific presets with the `DateRangePreset` class : + +```php +use Code16\Sharp\Filters\DateRange\DateRangePreset; + +class ProductCreationDateFilter extends DateRangeFilter +{ + public function buildFilterConfig(): void + { + $this->configureShowPresets(presets: [ + DateRangePreset::make(today()->subDays(3), today(), 'Last 3 days'), + DateRangePreset::thisMonth(), + ]); + } +} +``` + +Following methods are available (default presets) : +```php +[ + DateRangePreset::today(), + DateRangePreset::yesterday(), + DateRangePreset::last7days(), + DateRangePreset::last30days(), + DateRangePreset::last365days(), + DateRangePreset::thisMonth(), + DateRangePreset::lastMonth(), + DateRangePreset::thisYear(), + DateRangePreset::lastYear(), +] +``` + + ## Autocomplete remote filter If you want to use a remote filter, you can use the `Code16\Sharp\Filters\AutocompleteRemoteFilter` class. It is very similar to the `Code16\Sharp\Filters\SelectFilter` class, but it uses a remote endpoint to fetch the values. 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 @@