diff --git a/src/client/theme-default/components/VPLocalSearchBox.vue b/src/client/theme-default/components/VPLocalSearchBox.vue index 825a22b5..081a1c80 100644 --- a/src/client/theme-default/components/VPLocalSearchBox.vue +++ b/src/client/theme-default/components/VPLocalSearchBox.vue @@ -295,26 +295,39 @@ function scrollToSelectedResult() { }) } -onKeyStroke('ArrowUp', (event) => { - event.preventDefault() - selectedIndex.value-- - if (selectedIndex.value < 0) { - selectedIndex.value = results.value.length - 1 - } +function goRelativeItem(offset: number) { + const resNum = results.value.length + selectedIndex.value = (selectedIndex.value + resNum + (offset % resNum)) % resNum disableMouseOver.value = true scrollToSelectedResult() +} + +onKeyStroke('ArrowUp', (event) => { + event.preventDefault() + goRelativeItem(-1) }) onKeyStroke('ArrowDown', (event) => { event.preventDefault() - selectedIndex.value++ - if (selectedIndex.value >= results.value.length) { - selectedIndex.value = 0 - } - disableMouseOver.value = true - scrollToSelectedResult() + goRelativeItem(1) }) +if (document.documentElement.classList.contains('mac')) { + onKeyStroke('n', (event) => { + if (event.ctrlKey) { + event.preventDefault() + goRelativeItem(1) + } + }) + + onKeyStroke('p', (event) => { + if (event.ctrlKey) { + event.preventDefault() + goRelativeItem(-1) + } + }) +} + const router = useRouter() onKeyStroke('Enter', (e) => { @@ -558,9 +571,18 @@ function onMouseMove(e: MouseEvent) { + / + + ctrl-p + + and + / + + ctrl-n + {{ translate('modal.footer.navigateText') }}