diff --git a/src/components.tsx b/src/components.tsx index 5f1ffa3..6ce5f05 100644 --- a/src/components.tsx +++ b/src/components.tsx @@ -629,12 +629,13 @@ export const CardSearchBox = forwardRef< } function onKeyDown(e: React.KeyboardEvent) { - if (e.key === "ArrowDown") { + // ↑/↓ wrap around the ends of the list. + if (e.key === "ArrowDown" && results.length > 0) { e.preventDefault(); - setSel((s) => Math.min(s + 1, results.length - 1)); - } else if (e.key === "ArrowUp") { + setSel((s) => (s + 1) % results.length); + } else if (e.key === "ArrowUp" && results.length > 0) { e.preventDefault(); - setSel((s) => Math.max(s - 1, 0)); + setSel((s) => (s - 1 + results.length) % results.length); } else if (e.key === "Enter" && results[sel]) { e.preventDefault(); pick(results[sel]);