Skip to content

Commit d071cd6

Browse files
authored
Merge pull request #338 from devforth/AdminForth/809
fix: filters works even when user enters 0
2 parents 09fae49 + 4b17857 commit d071cd6

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

adminforth/spa/src/components/Filters.vue

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,24 +108,24 @@
108108
:min="getFilterMinValue(c.name)"
109109
:max="getFilterMaxValue(c.name)"
110110
:valueStart="getFilterItem({ column: c, operator: 'gte' })"
111-
@update:valueStart="onFilterInput[c.name]({ column: c, operator: 'gte', value: $event || undefined })"
111+
@update:valueStart="onFilterInput[c.name]({ column: c, operator: 'gte', value: ($event !== '' && $event !== null) ? $event : undefined })"
112112
:valueEnd="getFilterItem({ column: c, operator: 'lte' })"
113-
@update:valueEnd="onFilterInput[c.name]({ column: c, operator: 'lte', value: $event || undefined })"
113+
@update:valueEnd="onFilterInput[c.name]({ column: c, operator: 'lte', value: ($event !== '' && $event !== null) ? $event : undefined })"
114114
/>
115115

116116
<div v-else-if="['integer', 'decimal', 'float'].includes(c.type)" class="flex gap-2">
117117
<Input
118118
type="number"
119119
aria-describedby="helper-text-explanation"
120120
:placeholder="$t('From')"
121-
@update:modelValue="onFilterInput[c.name]({ column: c, operator: 'gte', value: $event || undefined })"
121+
@update:modelValue="onFilterInput[c.name]({ column: c, operator: 'gte', value: ($event !== '' && $event !== null) ? $event : undefined })"
122122
:modelValue="getFilterItem({ column: c, operator: 'gte' })"
123123
/>
124124
<Input
125125
type="number"
126126
aria-describedby="helper-text-explanation"
127127
:placeholder="$t('To')"
128-
@update:modelValue="onFilterInput[c.name]({ column: c, operator: 'lte', value: $event|| undefined })"
128+
@update:modelValue="onFilterInput[c.name]({ column: c, operator: 'lte', value: ($event !== '' && $event !== null) ? $event : undefined })"
129129
:modelValue="getFilterItem({ column: c, operator: 'lte' })"
130130
/>
131131
</div>
@@ -269,7 +269,7 @@ const onSearchInput = computed(() => {
269269
function setFilterItem({ column, operator, value }) {
270270
271271
const index = filtersStore.filters.findIndex(f => f.field === column.name && f.operator === operator);
272-
if (value === undefined) {
272+
if (value === undefined || value === '' || value === null) {
273273
if (index !== -1) {
274274
filtersStore.filters.splice(index, 1);
275275
}
@@ -284,7 +284,8 @@ function setFilterItem({ column, operator, value }) {
284284
}
285285
286286
function getFilterItem({ column, operator }) {
287-
return filtersStore.filters.find(f => f.field === column.name && f.operator === operator)?.value || '';
287+
const filterValue = filtersStore.filters.find(f => f.field === column.name && f.operator === operator)?.value;
288+
return filterValue !== undefined ? filterValue : '';
288289
}
289290
290291
async function clear() {

adminforth/spa/src/views/ListView.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
<Teleport to="body">
44
<Filters
55
:columns="coreStore.resource?.columns"
6-
:columnsMinMax="columnsMinMax" :show="filtersShow"
6+
:columnsMinMax="columnsMinMax"
7+
:show="filtersShow"
78
@hide="filtersShow = false"
89
/>
910
</Teleport>
@@ -448,7 +449,7 @@ watch(() => filtersStore.filters, async (to, from) => {
448449
const query = {};
449450
const currentQ = currentQuery();
450451
filtersStore.filters.forEach(f => {
451-
if (f.value) {
452+
if (f.value !== undefined && f.value !== null && f.value !== '') {
452453
query[`filter__${f.field}__${f.operator}`] = encodeURIComponent(JSON.stringify(f.value));
453454
}
454455
});

0 commit comments

Comments
 (0)