Skip to content

Commit fcd7642

Browse files
zonemeenbrc-dd
andauthored
fix(theme): close menu on route change (#887)
Co-authored-by: Divyansh Singh <[email protected]>
1 parent 9d9db62 commit fcd7642

File tree

4 files changed

+17
-9
lines changed

4 files changed

+17
-9
lines changed

src/client/theme-default/Layout.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script setup lang="ts">
2-
import { provide } from 'vue'
2+
import { provide, watch } from 'vue'
3+
import { useRoute } from 'vitepress'
34
import { useSidebar, useCloseSidebarOnEscape } from './composables/sidebar'
45
import VPSkipLink from './components/VPSkipLink.vue'
56
import VPBackdrop from './components/VPBackdrop.vue'
@@ -15,6 +16,9 @@ const {
1516
close: closeSidebar
1617
} = useSidebar()
1718
19+
const route = useRoute()
20+
watch(() => route.path, closeSidebar)
21+
1822
useCloseSidebarOnEscape(isSidebarOpen, closeSidebar)
1923
2024
provide('close-sidebar', closeSidebar)

src/client/theme-default/components/VPDoc.vue

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
<script setup lang="ts">
2+
import { computed } from 'vue'
23
import { useRoute } from 'vitepress'
34
import { useSidebar } from '../composables/sidebar'
45
import VPDocAside from './VPDocAside.vue'
56
import VPDocFooter from './VPDocFooter.vue'
67
7-
const { path } = useRoute()
8+
const route = useRoute()
89
const { hasSidebar } = useSidebar()
910
10-
const pageName = path.replace(/[./]+/g, '_').replace(/_html$/, '')
11+
const pageName = computed(() =>
12+
route.path.replace(/[./]+/g, '_').replace(/_html$/, '')
13+
)
1114
</script>
1215

1316
<template>

src/client/theme-default/composables/nav.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { DefaultTheme } from 'vitepress/theme'
2-
import { ref, computed } from 'vue'
2+
import { ref, computed, watch } from 'vue'
33
import { useData, useRoute } from 'vitepress'
44

55
export function useNav() {
@@ -26,6 +26,9 @@ export function useNav() {
2626
window.outerWidth >= 768 && closeScreen()
2727
}
2828

29+
const route = useRoute()
30+
watch(() => route.path, closeScreen)
31+
2932
return {
3033
isScreenOpen,
3134
openScreen,

src/client/theme-default/composables/sidebar.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Ref, ref, computed, watchEffect, onMounted, onUnmounted } from 'vue'
2-
import { useRoute, useData } from 'vitepress'
1+
import { computed, onMounted, onUnmounted, Ref, ref, watchEffect } from 'vue'
2+
import { useData, useRoute } from 'vitepress'
33
import { getSidebar } from '../support/sidebar'
44

55
export function useSidebar() {
@@ -10,9 +10,7 @@ export function useSidebar() {
1010

1111
const sidebar = computed(() => {
1212
const sidebarConfig = theme.value.sidebar
13-
const relativePath = route.data.relativePath
14-
15-
return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : []
13+
return sidebarConfig ? getSidebar(sidebarConfig, route.path) : []
1614
})
1715

1816
const hasSidebar = computed(() => {

0 commit comments

Comments
 (0)