diff --git a/package.json b/package.json
index 6101b1c..48fb90e 100644
--- a/package.json
+++ b/package.json
@@ -51,11 +51,11 @@
"@types/node": "^18.15.3",
"prettier": "^2.7.1",
"typescript": "^4.9.5",
- "vitepress": "^1.0.0-alpha.58",
+ "vitepress": "^1.0.0-alpha.60",
"vue": "^3.2.47"
},
"peerDependencies": {
- "vitepress": "^1.0.0-alpha.58"
+ "vitepress": "^1.0.0-alpha.60"
},
"pnpm": {
"peerDependencyRules": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index baa1b0d..ef3deff 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,7 +12,7 @@ specifiers:
normalize.css: ^8.0.1
prettier: ^2.7.1
typescript: ^4.9.5
- vitepress: ^1.0.0-alpha.58
+ vitepress: ^1.0.0-alpha.60
vue: ^3.2.47
dependencies:
@@ -29,7 +29,7 @@ devDependencies:
'@types/node': 18.15.3
prettier: 2.7.1
typescript: 4.9.5
- vitepress: 1.0.0-alpha.58_@types+node@18.15.3
+ vitepress: 1.0.0-alpha.60_@types+node@18.15.3
vue: 3.2.47
packages:
@@ -830,8 +830,8 @@ packages:
fsevents: 2.3.2
dev: true
- /vitepress/1.0.0-alpha.58_@types+node@18.15.3:
- resolution: {integrity: sha512-aENSAiE2uKMoQPwBTELY8Nig5qSWrmAl+MgsO3l/TE8At6kXii+2rseEId/bVfT700JeucYdqtCgWxu+LwpYIw==}
+ /vitepress/1.0.0-alpha.60_@types+node@18.15.3:
+ resolution: {integrity: sha512-GI5iLDkZRqGEPixbSloT+p6pbKcMh9ykRRxt8vf9AjV1gaPit6Stg/t9WNxTdIhKVCuQMexGs1605DNApSRK2A==}
hasBin: true
dependencies:
'@docsearch/css': 3.3.3
diff --git a/src/vitepress/components/VPContentDocOutline.vue b/src/vitepress/components/VPContentDocOutline.vue
index 3823df7..50132d4 100644
--- a/src/vitepress/components/VPContentDocOutline.vue
+++ b/src/vitepress/components/VPContentDocOutline.vue
@@ -1,25 +1,15 @@
@@ -30,26 +20,7 @@ const handleClick = ({ target: el }: Event) => {
{{
config.i18n?.ariaToC ?? 'Table of Contents for current page'
}}
-
+
@@ -69,26 +40,6 @@ const handleClick = ({ target: el }: Event) => {
letter-spacing: 0.4px;
}
-.outline-link {
- color: var(--vt-c-text-2);
- transition: color 0.5s;
- line-height: 28px;
- display: block;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.outline-link:hover,
-.outline-link.active {
- color: var(--vt-c-text-1);
- transition: color 0.25s;
-}
-
-.outline-link.nested {
- padding-left: 1em;
-}
-
.outline-marker {
opacity: 0;
position: absolute;
@@ -102,9 +53,4 @@ const handleClick = ({ target: el }: Event) => {
transition: top 0.25s cubic-bezier(0, 1, 0.5, 1), opacity 0.25s,
background-color 0.5s;
}
-
-.root {
- z-index: 1;
- position: relative;
-}
diff --git a/src/vitepress/components/VPDocOutlineItem.vue b/src/vitepress/components/VPDocOutlineItem.vue
new file mode 100644
index 0000000..2f664a8
--- /dev/null
+++ b/src/vitepress/components/VPDocOutlineItem.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
diff --git a/src/vitepress/components/VPLocalNav.vue b/src/vitepress/components/VPLocalNav.vue
index 671ece7..1243364 100644
--- a/src/vitepress/components/VPLocalNav.vue
+++ b/src/vitepress/components/VPLocalNav.vue
@@ -1,18 +1,13 @@
@@ -27,13 +22,7 @@ function scrollToTop() {
- {{ config.i18n?.returnToTop ?? 'Return to top' }}
+
diff --git a/src/vitepress/components/VPLocalNavOutlineDropdown.vue b/src/vitepress/components/VPLocalNavOutlineDropdown.vue
new file mode 100644
index 0000000..9dc8255
--- /dev/null
+++ b/src/vitepress/components/VPLocalNavOutlineDropdown.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/vitepress/composables/outline.ts b/src/vitepress/composables/outline.ts
index 2417217..0cce3fe 100644
--- a/src/vitepress/composables/outline.ts
+++ b/src/vitepress/composables/outline.ts
@@ -1,18 +1,26 @@
-import { onMounted, onUnmounted, onUpdated, Ref } from 'vue'
-import { Header } from 'vitepress'
+import { computed, inject, onMounted, onUnmounted, onUpdated, Ref } from 'vue'
+import { Header, useData } from 'vitepress'
import { useMediaQuery } from '@vueuse/core'
import { MenuItemWithLink } from '../../core'
-interface HeaderWithChildren extends Header {
+export interface HeaderWithChildren extends Header {
hidden?: boolean
}
-interface MenuItemWithLinkAndChildren extends MenuItemWithLink {
+export interface MenuItemWithLinkAndChildren extends MenuItemWithLink {
children?: MenuItemWithLinkAndChildren[]
hidden?: boolean
}
-export function resolveHeaders(
+export function useOutlineHeaders() {
+ const { page } = useData()
+ const filterHeaders = inject('filter-headers', null) as any
+ return computed(() => {
+ return resolveHeaders(page.value.headers, filterHeaders)
+ })
+}
+
+function resolveHeaders(
headers: HeaderWithChildren[],
filter?: (h: HeaderWithChildren) => boolean
): MenuItemWithLinkAndChildren[] {
@@ -142,7 +150,7 @@ function isAnchorActive(
}
function throttleAndDebounce(fn: () => void, delay: number): () => void {
- let timeout: number
+ let timeout: any
let called = false
return () => {
diff --git a/src/vitepress/config/baseConfig.js b/src/vitepress/config/baseConfig.js
index dc8ac1d..96881d2 100644
--- a/src/vitepress/config/baseConfig.js
+++ b/src/vitepress/config/baseConfig.js
@@ -14,6 +14,8 @@ const deps = ['@vue/theme', '@vueuse/core', 'body-scroll-lock']
* @type {import('vitepress').UserConfig}
*/
const config = {
+ scrollOffset: ['header', '.VPLocalNav'],
+
vite: {
ssr: {
noExternal: deps
diff --git a/tsconfig.json b/tsconfig.json
index a756d9f..e827b52 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -15,6 +15,6 @@
"@vue/theme": ["src/index.ts"]
}
},
- "include": ["src", "types", "demo/.vitepress/theme"],
+ "include": ["src", "demo/.vitepress/theme"],
"exclude": ["node_modules"]
}
diff --git a/types/vue-shim.d.ts b/types/vue-shim.d.ts
deleted file mode 100644
index 025562f..0000000
--- a/types/vue-shim.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-declare module '*.vue' {
- import { ComponentOptions } from 'vue'
- const comp: ComponentOptions
- export default comp
-}