summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-21 14:10:42 -0600
committerAdam <[email protected]>2026-01-21 14:21:58 -0600
commit52535654e7a87343a0d631f29f76fab87a34de4d (patch)
treedf563742ff0bf55df438327490a7beba7108007f
parent7e609cc612de05d6a743002fe852a599cd46fd8e (diff)
downloadopencode-52535654e7a87343a0d631f29f76fab87a34de4d.tar.gz
opencode-52535654e7a87343a0d631f29f76fab87a34de4d.zip
fix(app): tab should select suggestion
-rw-r--r--packages/app/src/components/prompt-input.tsx43
1 files 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<PromptInputProps> = (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<PromptInputProps> = (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