diff --git a/src/components/api/FilterMatchMode.js b/src/components/api/FilterMatchMode.js index 07ac793ef..4ff43bcde 100644 --- a/src/components/api/FilterMatchMode.js +++ b/src/components/api/FilterMatchMode.js @@ -11,10 +11,10 @@ const FilterMatchMode = { GREATER_THAN : 'gt', GREATER_THAN_OR_EQUAL_TO : 'gte', BETWEEN : 'between', - IS : 'is', - IS_NOT : 'isNot', - BEFORE : 'before', - AFTER : 'after' + DATE_IS : 'dateIs', + DATE_IS_NOT : 'dateIsNot', + DATE_BEFORE : 'dateBefore', + DATE_AFTER : 'dateAfter' } export default FilterMatchMode; \ No newline at end of file diff --git a/src/components/api/FilterService.js b/src/components/api/FilterService.js index 25bd0261b..509cf8659 100644 --- a/src/components/api/FilterService.js +++ b/src/components/api/FilterService.js @@ -2,7 +2,7 @@ import {ObjectUtils} from 'primevue/utils'; const FilterService = { filters: { - startsWith(value, filter, filterLocale) { + startsWith(value, filter, filterLocale) { if (filter === undefined || filter === null || filter.trim() === '') { return true; } @@ -169,31 +169,51 @@ const FilterService = { else return value >= filter; }, - is(value, filter, filterLocale) { - if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) { + dateIs(value, filter) { + if (filter === undefined || filter === null) { return true; } if (value === undefined || value === null) { return false; } + + return value.toDateString() === filter.toDateString(); + }, + dateIsNot(value, filter) { + if (filter === undefined || filter === null) { + return true; + } - if (value.getTime && filter.getTime) - return value.getTime() === filter.getTime(); - else - return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale); + if (value === undefined || value === null) { + return false; + } + + return value.toDateString() !== filter.toDateString(); }, - isNot(value, filter, filterLocale) { - return this.filters.notEquals(value, filter, filterLocale); + dateBefore(value, filter) { + if (filter === undefined || filter === null) { + return true; + } + + if (value === undefined || value === null) { + return false; + } + + return value.getTime() < filter.getTime(); }, - before(value, filter, filterLocale) { - return this.filters.lt(value, filter, filterLocale); - }, - after(value, filter, filterLocale) { - return this.filters.gt(value, filter, filterLocale); + dateAfter(value, filter) { + if (filter === undefined || filter === null) { + return true; + } + + if (value === undefined || value === null) { + return false; + } + + return value.getTime() > filter.getTime(); } }, - register(rule, fn) { this.filters[rule] = fn; } diff --git a/src/components/config/PrimeVue.js b/src/components/config/PrimeVue.js index 91d5cbc8b..d0778331f 100644 --- a/src/components/config/PrimeVue.js +++ b/src/components/config/PrimeVue.js @@ -15,10 +15,10 @@ const defaultOptions = { lte: 'Less than or equal to', gt: 'Greater than', gte: 'Greater than or equal to', - is: 'Is', - isNot: 'Is not', - before: 'Before', - after: 'After', + dateIs: 'Date is', + dateIsNot: 'Date is not', + dateBefore: 'Date is before', + dateAfter: 'Date is after', clear: 'Clear', apply: 'Apply', matchAll: 'Match All', @@ -62,10 +62,10 @@ const defaultOptions = { FilterMatchMode.GREATER_THAN_OR_EQUAL_TO ], date: [ - FilterMatchMode.IS, - FilterMatchMode.IS_NOT, - FilterMatchMode.BEFORE, - FilterMatchMode.AFTER + FilterMatchMode.DATE_IS, + FilterMatchMode.DATE_IS_NOT, + FilterMatchMode.DATE_BEFORE, + FilterMatchMode.DATE_AFTER ] } }; diff --git a/src/views/datatable/DataTableFilterDemo.vue b/src/views/datatable/DataTableFilterDemo.vue index 79947efdb..599749a53 100755 --- a/src/views/datatable/DataTableFilterDemo.vue +++ b/src/views/datatable/DataTableFilterDemo.vue @@ -78,7 +78,7 @@