From 52535654e7a87343a0d631f29f76fab87a34de4d Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:10:42 -0600 Subject: [PATCH] fix(app): tab should select suggestion --- packages/app/src/components/prompt-input.tsx | 43 ++++++++++++++++---- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index d380cf568..3bd7856ee 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -550,6 +550,25 @@ export const PromptInput: Component = (props) => { }) }) + const selectPopoverActive = () => { + if (store.popover === "at") { + const items = atFlat() + if (items.length === 0) return + const active = atActive() + const item = items.find((entry) => atKey(entry) === active) ?? items[0] + handleAtSelect(item) + return + } + + if (store.popover === "slash") { + const items = slashFlat() + if (items.length === 0) return + const active = slashActive() + const item = items.find((entry) => entry.id === active) ?? items[0] + handleSlashSelect(item) + } + } + createEffect( on( () => prompt.current(), @@ -910,14 +929,24 @@ export const PromptInput: Component = (props) => { return } - if (store.popover && (event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "Enter")) { - if (store.popover === "at") { - atOnKeyDown(event) - } else { - slashOnKeyDown(event) + if (store.popover) { + if (event.key === "Tab") { + selectPopoverActive() + event.preventDefault() + return + } + if (event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "Enter") { + if (store.popover === "at") { + atOnKeyDown(event) + event.preventDefault() + return + } + if (store.popover === "slash") { + slashOnKeyDown(event) + } + event.preventDefault() + return } - event.preventDefault() - return } const ctrl = event.ctrlKey && !event.metaKey && !event.altKey && !event.shiftKey