From 80308edeb570b9969aebbc5f207b52d7e97fdfcb Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle Date: Thu, 11 Sep 2025 11:36:18 +0100 Subject: [PATCH] Add keyboard navigation to property selection --- .../components/viewer/SearchInput.vue | 12 + .../components/viewer/controls/Left.vue | 2 +- .../filters/property-selection/Item.vue | 8 +- .../filters/property-selection/Panel.vue | 209 ++++++++++++++++-- .../filters/property-selection/Search.vue | 11 +- 5 files changed, 223 insertions(+), 19 deletions(-) diff --git a/packages/frontend-2/components/viewer/SearchInput.vue b/packages/frontend-2/components/viewer/SearchInput.vue index 073c8183d..fffe188a3 100644 --- a/packages/frontend-2/components/viewer/SearchInput.vue +++ b/packages/frontend-2/components/viewer/SearchInput.vue @@ -10,6 +10,7 @@ :placeholder="placeholder" :auto-focus="autoFocus" input-type="search" + @keydown="handleKeydown" /> @@ -23,6 +24,10 @@ defineProps<{ autoFocus?: boolean }>() +const emit = defineEmits<{ + keydown: [event: KeyboardEvent] +}>() + const model = defineModel({ required: true }) const iconClasses = computed(() => { @@ -36,4 +41,11 @@ const iconClasses = computed(() => { const inputClasses = computed(() => { return 'text-foreground-2 placeholder:!text-foreground-3 placeholder:group-hover:!text-foreground-2 focus:placeholder:text-foreground-2' }) + +const handleKeydown = (event: KeyboardEvent) => { + // For arrow down or enter emit the event to parent + if (['ArrowDown', 'Enter'].includes(event.key)) { + emit('keydown', event) + } +} diff --git a/packages/frontend-2/components/viewer/controls/Left.vue b/packages/frontend-2/components/viewer/controls/Left.vue index 9e77dd420..bb9f0708d 100644 --- a/packages/frontend-2/components/viewer/controls/Left.vue +++ b/packages/frontend-2/components/viewer/controls/Left.vue @@ -1,7 +1,7 @@