Skip to content

Commit 3912951

Browse files
authored
fix(theme): respect --vp-nav-height in local nav calculations (#2663)
1 parent 730226c commit 3912951

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

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

+13-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts" setup>
22
import { useWindowScroll } from '@vueuse/core'
33
import { onContentUpdated } from 'vitepress'
4-
import { computed, shallowRef } from 'vue'
4+
import { computed, shallowRef, ref, onMounted } from 'vue'
55
import { useData } from '../composables/data'
66
import { useSidebar } from '../composables/sidebar'
77
import { getHeaders, type MenuItem } from '../composables/outline'
@@ -21,6 +21,15 @@ const { hasSidebar } = useSidebar()
2121
const { y } = useWindowScroll()
2222
2323
const headers = shallowRef<MenuItem[]>([])
24+
const navHeight = ref(0)
25+
26+
onMounted(() => {
27+
navHeight.value = parseInt(
28+
getComputedStyle(document.documentElement).getPropertyValue(
29+
'--vp-nav-height'
30+
)
31+
)
32+
})
2433
2534
onContentUpdated(() => {
2635
headers.value = getHeaders(frontmatter.value.outline ?? theme.value.outline)
@@ -34,14 +43,14 @@ const classes = computed(() => {
3443
return {
3544
VPLocalNav: true,
3645
fixed: empty.value,
37-
'reached-top': y.value >= 64
46+
'reached-top': y.value >= navHeight.value
3847
}
3948
})
4049
</script>
4150

4251
<template>
4352
<div
44-
v-if="frontmatter.layout !== 'home' && (!empty || y >= 64)"
53+
v-if="frontmatter.layout !== 'home' && (!empty || y >= navHeight)"
4554
:class="classes"
4655
>
4756
<button
@@ -57,7 +66,7 @@ const classes = computed(() => {
5766
</span>
5867
</button>
5968

60-
<VPLocalNavOutlineDropdown :headers="headers" />
69+
<VPLocalNavOutlineDropdown :headers="headers" :navHeight="navHeight" />
6170
</div>
6271
</template>
6372

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import { resolveTitle, type MenuItem } from '../composables/outline'
66
import VPDocOutlineItem from './VPDocOutlineItem.vue'
77
import VPIconChevronRight from './icons/VPIconChevronRight.vue'
88
9-
defineProps<{
9+
const props = defineProps<{
1010
headers: MenuItem[]
11+
navHeight: number
1112
}>()
1213
1314
const { theme } = useData()
@@ -21,7 +22,7 @@ onContentUpdated(() => {
2122
2223
function toggle() {
2324
open.value = !open.value
24-
vh.value = window.innerHeight + Math.min(window.scrollY - 64, 0)
25+
vh.value = window.innerHeight + Math.min(window.scrollY - props.navHeight, 0)
2526
}
2627
2728
function onItemClick(e: Event) {

0 commit comments

Comments
 (0)