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') }}