mirror of https://github.com/vuejs/vitepress
parent
387acf71aa
commit
97f9469b6d
@ -0,0 +1,56 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import type { DefaultTheme } from 'vitepress/theme'
|
||||||
|
import { onBeforeUnmount, onMounted, ref } from 'vue'
|
||||||
|
import VPSidebarItem from './VPSidebarItem.vue'
|
||||||
|
|
||||||
|
defineProps<{
|
||||||
|
items: DefaultTheme.SidebarItem[]
|
||||||
|
}>()
|
||||||
|
|
||||||
|
const disableTransition = ref(true)
|
||||||
|
|
||||||
|
let timer: ReturnType<typeof setTimeout> | null = null
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
timer = setTimeout(() => {
|
||||||
|
timer = null
|
||||||
|
disableTransition.value = false
|
||||||
|
}, 300)
|
||||||
|
})
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
if (timer != null) {
|
||||||
|
clearTimeout(timer)
|
||||||
|
timer = null
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
v-for="item in items"
|
||||||
|
:key="item.text"
|
||||||
|
class="group"
|
||||||
|
:class="{ 'no-transition': disableTransition }"
|
||||||
|
>
|
||||||
|
<VPSidebarItem :item="item" :depth="0" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.no-transition :deep(.caret-icon) {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.group + .group {
|
||||||
|
border-top: 1px solid var(--vp-c-divider);
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 960px) {
|
||||||
|
.group {
|
||||||
|
padding-top: 10px;
|
||||||
|
width: calc(var(--vp-sidebar-width) - 64px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in new issue