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() {
+ class="cursor-default ps-4 gap-1 text-gray-900 dark:text-gray-200 last:me-12 hover:bg-gray-950/5 dark:hover:bg-white/4"
+ :class="reorderable ? 'pe-4 text-gray-400 dark:text-gray-600' : 'pe-2'"
+ >
+ {{ badge }}
+
+