From e29cf793cbc46a960dd66241f3bb716887038d18 Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Thu, 6 Jun 2024 18:35:48 +0200 Subject: [PATCH] feat(CommandPalette): implement group `filter` function --- src/runtime/components/CommandPalette.vue | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/runtime/components/CommandPalette.vue b/src/runtime/components/CommandPalette.vue index 71f8584a..9411114b 100644 --- a/src/runtime/components/CommandPalette.vue +++ b/src/runtime/components/CommandPalette.vue @@ -31,6 +31,7 @@ export interface CommandPaletteGroup { label?: string slot?: string items?: T[] + filter?: (searchTerm: string, items: T[]) => T[] /** The icon displayed when an item is highlighted. */ highlightedIcon?: string } @@ -111,7 +112,13 @@ const items = computed(() => props.groups?.filter((group) => { } return true -}).flatMap(group => group.items?.map(item => ({ ...item, group: group.id })) || []) || []) +}).flatMap((group) => { + let items = group.items || [] + if (group.filter) { + items = group.filter(searchTerm.value, items) + } + return items?.map(item => ({ ...item, group: group.id })) || [] +}) || []) const { results: fuseResults } = useFuse(searchTerm, items, fuse)