Skip to content

Commit 5253565

Browse files
committed
fix(app): tab should select suggestion
1 parent 7e609cc commit 5253565

1 file changed

Lines changed: 36 additions & 7 deletions

File tree

packages/app/src/components/prompt-input.tsx

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,25 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
550550
})
551551
})
552552

553+
const selectPopoverActive = () => {
554+
if (store.popover === "at") {
555+
const items = atFlat()
556+
if (items.length === 0) return
557+
const active = atActive()
558+
const item = items.find((entry) => atKey(entry) === active) ?? items[0]
559+
handleAtSelect(item)
560+
return
561+
}
562+
563+
if (store.popover === "slash") {
564+
const items = slashFlat()
565+
if (items.length === 0) return
566+
const active = slashActive()
567+
const item = items.find((entry) => entry.id === active) ?? items[0]
568+
handleSlashSelect(item)
569+
}
570+
}
571+
553572
createEffect(
554573
on(
555574
() => prompt.current(),
@@ -910,14 +929,24 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
910929
return
911930
}
912931

913-
if (store.popover && (event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "Enter")) {
914-
if (store.popover === "at") {
915-
atOnKeyDown(event)
916-
} else {
917-
slashOnKeyDown(event)
932+
if (store.popover) {
933+
if (event.key === "Tab") {
934+
selectPopoverActive()
935+
event.preventDefault()
936+
return
937+
}
938+
if (event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "Enter") {
939+
if (store.popover === "at") {
940+
atOnKeyDown(event)
941+
event.preventDefault()
942+
return
943+
}
944+
if (store.popover === "slash") {
945+
slashOnKeyDown(event)
946+
}
947+
event.preventDefault()
948+
return
918949
}
919-
event.preventDefault()
920-
return
921950
}
922951

923952
const ctrl = event.ctrlKey && !event.metaKey && !event.altKey && !event.shiftKey

0 commit comments

Comments
 (0)