diff options
| author | Adam <[email protected]> | 2026-01-21 14:10:42 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-21 14:21:58 -0600 |
| commit | 52535654e7a87343a0d631f29f76fab87a34de4d (patch) | |
| tree | df563742ff0bf55df438327490a7beba7108007f | |
| parent | 7e609cc612de05d6a743002fe852a599cd46fd8e (diff) | |
| download | opencode-52535654e7a87343a0d631f29f76fab87a34de4d.tar.gz opencode-52535654e7a87343a0d631f29f76fab87a34de4d.zip | |
fix(app): tab should select suggestion
| -rw-r--r-- | packages/app/src/components/prompt-input.tsx | 43 |
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 |
