diff --git a/docs/content.en/docs/release-notes/_index.md b/docs/content.en/docs/release-notes/_index.md index 479a46b7..ee261fd1 100644 --- a/docs/content.en/docs/release-notes/_index.md +++ b/docs/content.en/docs/release-notes/_index.md @@ -37,6 +37,7 @@ Information about release notes of Coco Server is provided here. - fix: web page unmount event #645 - fix: fix the problem of local path not opening #650 - fix: number keys not following settings #661 +- fix: fix problem with up and down key indexing #676 ### ✈️ Improvements diff --git a/src/hooks/useKeyboardNavigation.ts b/src/hooks/useKeyboardNavigation.ts index 56e88b4f..edd3e82a 100644 --- a/src/hooks/useKeyboardNavigation.ts +++ b/src/hooks/useKeyboardNavigation.ts @@ -52,20 +52,41 @@ export function useKeyboardNavigation({ const modifierKeyPressed = getModifierKeyPressed(e); + const indexes = suggests.map((item) => item.document.index!); + if (e.key === "ArrowUp") { e.preventDefault(); - //console.log("ArrowUp pressed", selectedIndex, suggests.length); - setSelectedIndex((prev) => - prev === null || prev === 0 ? suggests.length - 1 : prev - 1 - ); + // console.log("ArrowUp pressed", selectedIndex, suggests.length); + setSelectedIndex((prev) => { + if (prev == null) { + return Math.min(...indexes); + } + + const nextIndex = prev - 1; + + if (indexes.includes(nextIndex)) { + return nextIndex; + } + + return Math.max(...indexes); + }); } else if (e.key === "ArrowDown") { e.preventDefault(); //console.log("ArrowDown pressed", selectedIndex, suggests.length); - setSelectedIndex((prev) => - prev === null || prev === suggests.length - 1 ? 0 : prev + 1 - ); + setSelectedIndex((prev) => { + if (prev == null) { + return Math.min(...indexes); + } + + const nextIndex = prev + 1; + + if (indexes.includes(nextIndex)) { + return nextIndex; + } + + return Math.min(...indexes); + }); } else if (modifierKeyPressed) { - e.preventDefault(); if (selectedIndex !== null) { const item = globalItemIndexMap[selectedIndex]; setSelectedName(item?.source?.name || ""); diff --git a/src/hooks/useSearch.ts b/src/hooks/useSearch.ts index d597e408..3a632fc8 100644 --- a/src/hooks/useSearch.ts +++ b/src/hooks/useSearch.ts @@ -120,7 +120,7 @@ export function useSearch() { type: id, }, document: { - index: 1000000, + index: -1, id, category: id, payload: {