2424
2525 <Select
2626 v-if =" c.foreignResource"
27- multiple
27+ : multiple= " c.multiselectFilter "
2828 class =" w-full"
2929 :options =" columnOptions[c.name] || []"
30- @update:modelValue =" onFilterInput[c.name]({ column: c, operator: 'in', value: $event.length ? $event : undefined })"
31- :modelValue =" filtersStore.filters.find(f => f.field === c.name && f.operator === 'in')?.value || []"
30+ @update:modelValue =" onFilterInput[c.name]({ column: c, operator: c.multiselectFilter ? 'in' : 'eq' , value: c.multiselectFilter ? ( $event.length ? $event : undefined) : $event || undefined })"
31+ :modelValue =" filtersStore.filters.find(f => f.field === c.name && f.operator === (c.multiselectFilter ? 'in' : 'eq') )?.value || []"
3232 />
3333 <Select
3434 multiple
4444 :modelValue =" filtersStore.filters.find(f => f.field === c.name && f.operator === 'in')?.value || []"
4545 />
4646
47- <Select
48- multiple
47+ <Select
48+ : multiple= " c.multiselectFilter "
4949 class =" w-full"
5050 v-else-if =" c.enum"
5151 :options =" c.enum"
52- @update:modelValue =" onFilterInput[c.name]({ column: c, operator: 'in', value: $event.length ? $event : undefined })"
53- :modelValue =" filtersStore.filters.find(f => f.field === c.name && f.operator === 'in')?.value || []"
52+ @update:modelValue =" onFilterInput[c.name]({ column: c, operator: c.multiselectFilter ? 'in' : 'eq' , value: c.multiselectFilter ? ( $event.length ? $event : undefined) : $event || undefined })"
53+ :modelValue =" filtersStore.filters.find(f => f.field === c.name && f.operator === (c.multiselectFilter ? 'in' : 'eq') )?.value || []"
5454 />
5555
5656 <Input
118118</template >
119119
120120<script setup>
121- import { watch , computed } from ' vue'
121+ import { watch , computed } from ' vue' ;
122+ import { useI18n } from ' vue-i18n' ;
122123import CustomDateRangePicker from ' @/components/CustomDateRangePicker.vue' ;
123124import { callAdminForthApi } from ' @/utils' ;
124125import { useRouter } from ' vue-router' ;
@@ -130,6 +131,7 @@ import Select from '@/afcl/Select.vue';
130131import debounce from ' debounce' ;
131132
132133const filtersStore = useFiltersStore ();
134+ const { t } = useI18n ();
133135
134136
135137// props: columns
@@ -163,6 +165,12 @@ const columnOptions = computedAsync(async () => {
163165 },
164166 });
165167 ret[column .name ] = list .items ;
168+ if (! column .multiselectFilter ) {
169+ ret[column .name ].push ({
170+ label: t (' Unset' ),
171+ value: ' ' ,
172+ });
173+ }
166174 }
167175 })
168176 );
0 commit comments