diff --git a/resources/js/components/ui/Listing/Filters.vue b/resources/js/components/ui/Listing/Filters.vue index 79d342a19ac..9b047f3f4fc 100644 --- a/resources/js/components/ui/Listing/Filters.vue +++ b/resources/js/components/ui/Listing/Filters.vue @@ -9,6 +9,7 @@ import { Stack, } from '@ui'; import { injectListingContext } from '../Listing/Listing.vue'; +import { dateFormatter } from '@/api'; import { computed, ref, watch, nextTick } from 'vue'; import FieldFilter from './FieldFilter.vue'; import DataListFilter from './Filter.vue'; @@ -39,6 +40,27 @@ function removeFieldFilter(filterHandle, fieldHandle) { setFilter(filterHandle, fields); } +function getFieldFilterBadgeLabel(handle, badge) { + if (handle === 'date') { + const df = dateFormatter.options('date'); + const parts = [badge.field, badge.translatedOperator]; + + if (badge.operator === 'between') { + parts.push(df.date(badge.value.start), __('and'), df.date(badge.value.end)); + } else { + parts.push(df.date(badge.value)); + } + + return parts.filter(Boolean).join(' '); + } + + return badge; +} + +function getClearFilterLabel(label) { + return __('Clear :filter', { filter: label }); +} + function isActive(handle) { return activeFilters.value.hasOwnProperty(handle); } @@ -172,38 +194,47 @@ function handleStackClosed() {