refactor: select input & filter

This commit is contained in:
puriphatt 2024-07-26 10:31:30 +00:00
parent e644fbd132
commit 05651af9a8
3 changed files with 39 additions and 1 deletions

View file

@ -65,6 +65,7 @@ export default {
showing: 'Showing', showing: 'Showing',
dataSum: 'Data Summaries', dataSum: 'Data Summaries',
createdAt: 'Created At', createdAt: 'Created At',
noResults: 'No results',
...status, ...status,
...main, ...main,
...address, ...address,

View file

@ -64,6 +64,7 @@ export default {
showing: 'แสดงทีละ', showing: 'แสดงทีละ',
dataSum: 'สรุปจำนวนข้อมูล', dataSum: 'สรุปจำนวนข้อมูล',
createdAt: 'สร้างเมื่อ', createdAt: 'สร้างเมื่อ',
noResults: 'ไม่มีผลลัพธ์',
...status, ...status,
...main, ...main,
...address, ...address,

View file

@ -2,7 +2,7 @@ import { Dialog, QSelect } from 'quasar';
import GlobalDialog from 'components/GlobalDialog.vue'; import GlobalDialog from 'components/GlobalDialog.vue';
import { ComposerTranslation, useI18n } from 'vue-i18n'; import { ComposerTranslation, useI18n } from 'vue-i18n';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { ref } from 'vue'; import { Ref, ref } from 'vue';
export function dialog(opts: { export function dialog(opts: {
title: string; title: string;
@ -74,6 +74,42 @@ export function formatNumberDecimal(num: number, point: number): string {
}); });
} }
export function selectFilterOptionRefMod(
source: Ref<Record<string, unknown>[]>,
destination: Ref<Record<string, unknown>[]>,
filterField?: string,
) {
destination.value = source.value;
const filter = ((value, update) => {
if (value === '') update(() => (destination.value = source.value));
else
update(
() => {
destination.value = source.value.filter((v) => {
const label = v[filterField || 'label'];
if (typeof label !== 'string') {
throw new Error('Label must be of type string.');
}
return (
label.toLocaleLowerCase().indexOf(value.toLocaleLowerCase()) > -1
);
});
},
(ref) => {
if (value !== '' && destination.value.length > 0) {
ref.setOptionIndex(-1);
ref.moveOptionSelection(1, true);
}
},
);
}) satisfies QSelect['onFilter'];
return filter;
}
export function selectOptionFilter( export function selectOptionFilter(
list: Record<string, unknown>[], list: Record<string, unknown>[],
filterField?: string, filterField?: string,