Fixed performance issue with member search on LOA form

This commit is contained in:
2025-12-16 19:07:42 -05:00
parent 5f6c17361b
commit 5e1351d033

View File

@@ -134,6 +134,22 @@ const maxEndDate = computed(() => {
return null;
}
})
const memberFilter = ref('');
const filteredMembers = computed(() => {
const q = memberFilter?.value?.toLowerCase() ?? ""
const results: Member[] = []
for (const m of members.value ?? []) {
if (!q || (m.displayName || m.member_name).toLowerCase().includes(q)) {
results.push(m)
if (results.length >= 50) break
}
}
return results
})
</script>
<template>
@@ -158,12 +174,13 @@ const maxEndDate = computed(() => {
:display-value="(id) => {
const m = members.find(mem => mem.member_id === id)
return m ? m.displayName || m.member_name : ''
}" />
}" @input="memberFilter = $event.target.value" />
</ComboboxAnchor>
<ComboboxList class="*:w-64">
<ComboboxEmpty class="text-muted-foreground w-full">No results</ComboboxEmpty>
<ComboboxGroup>
<template v-for="member in members" :key="member.member_id">
<div class="max-h-80 overflow-y-scroll scrollbar-themed min-w-3xs">
<template v-for="member in filteredMembers" :key="member.member_id">
<ComboboxItem :value="member.member_id"
class="data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground relative cursor-pointer select-none px-2 py-1.5 w-full">
{{ member.displayName || member.member_name }}
@@ -173,6 +190,7 @@ const maxEndDate = computed(() => {
</ComboboxItemIndicator>
</ComboboxItem>
</template>
</div>
</ComboboxGroup>
</ComboboxList>
</Combobox>
@@ -286,7 +304,9 @@ const maxEndDate = computed(() => {
</h2>
<p class="max-w-md text-muted-foreground">
{{ adminMode ? 'You have successfully submitted a Leave of Absence on behalf of another member.' : `Your Leave of Absence request has been submitted successfully.
{{ adminMode ? 'You have successfully submitted a Leave of Absence on behalf of another member.' :
`Your Leave
of Absence request has been submitted successfully.
It will take effect on your selected start date.` }}
</p>