From 3699b017992ad39b16b7eb36fa6b3cfcbd722287 Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Mon, 10 Apr 2023 23:11:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20nav=20=E9=87=8D=E5=A4=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.cjs | 20 ++++--------------- package.json | 2 +- .../theme/src/client/components/AutoLink.vue | 2 +- packages/theme/src/client/config.ts | 11 ++++++++-- packages/theme/src/client/layouts/Layout.vue | 8 ++++---- tsconfig.json | 3 +-- 6 files changed, 20 insertions(+), 26 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 59254bc9..9d4a64c3 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -3,6 +3,7 @@ module.exports = { extends: 'vuepress', globals: { __VUEPRESS_VERSION__: 'readonly', + __VUEPRESS_BASE__: 'readonly', __VUEPRESS_DEV__: 'readonly', __VUEPRESS_SSR__: 'readonly', __VUE_HMR_RUNTIME__: 'readonly', @@ -11,16 +12,15 @@ module.exports = { }, overrides: [ { - files: ['*.ts', '*.vue'], + files: ['*.ts', '*.vue', '*.cts'], extends: 'vuepress-typescript', parserOptions: { project: ['tsconfig.json'], }, rules: { - '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-var-requires': 'off', + 'vue/multi-word-component-names': 'off', '@typescript-eslint/explicit-function-return-type': 'off', 'vue/component-tags-order': [ 'error', @@ -28,22 +28,10 @@ module.exports = { order: ['script', 'template', 'style'], }, ], - 'vue/multi-word-component-names': 'off', }, }, { - files: ['*.vue'], - globals: { - defineEmits: 'readonly', - defineProps: 'readonly', - }, - rules: { - // disable for setup script - '@typescript-eslint/no-unused-vars': 'off', - }, - }, - { - files: ['clientConfig.ts'], + files: ['**/client/config.ts'], rules: { 'vue/match-component-file-name': 'off', }, diff --git a/package.json b/package.json index 6edcb097..1b336c4b 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "typescript": "^5.0.4", "vite": "^4.2.1" }, - "packageManager": "pnpm@7.13.4", + "packageManager": "pnpm@7.32.0", "engines": { "node": ">=16", "pnpm": ">=7" diff --git a/packages/theme/src/client/components/AutoLink.vue b/packages/theme/src/client/components/AutoLink.vue index 7da6bf1a..7c9c45ae 100644 --- a/packages/theme/src/client/components/AutoLink.vue +++ b/packages/theme/src/client/components/AutoLink.vue @@ -12,7 +12,7 @@ const props = defineProps<{ const router = useRouter() -const tag = computed(() => (props.tag ?? props.href ? 'a' : 'span')) +const tag = computed(() => props.tag ?? (props.href ? 'a' : 'span')) const isExternal = computed( () => props.href && EXTERNAL_URL_RE.test(props.href) ) diff --git a/packages/theme/src/client/config.ts b/packages/theme/src/client/config.ts index 6f62481c..6c29a50f 100644 --- a/packages/theme/src/client/config.ts +++ b/packages/theme/src/client/config.ts @@ -1,14 +1,14 @@ import { defineClientConfig } from '@vuepress/client' import { h } from 'vue' import Badge from './components/global/Badge.vue' -import { setupDarkMode } from './composables/index.js' +import { setupDarkMode, useScrollPromise } from './composables/index.js' import Layout from './layouts/Layout.vue' import NotFound from './layouts/NotFound.vue' import './styles/index.scss' export default defineClientConfig({ - enhance({ app }) { + enhance({ app, router }) { // global component // eslint-disable-next-line vue/match-component-file-name app.component('Badge', Badge) @@ -40,6 +40,13 @@ export default defineClientConfig({ } return null }) + + // handle scrollBehavior with transition + const scrollBehavior = router.options.scrollBehavior! + router.options.scrollBehavior = async (...args) => { + await useScrollPromise().wait() + return scrollBehavior(...args) + } }, setup() { setupDarkMode() diff --git a/packages/theme/src/client/layouts/Layout.vue b/packages/theme/src/client/layouts/Layout.vue index 04752342..74eb692b 100644 --- a/packages/theme/src/client/layouts/Layout.vue +++ b/packages/theme/src/client/layouts/Layout.vue @@ -15,7 +15,7 @@ import SkipLink from '../components/SkipLink.vue' import VFooter from '../components/VFooter.vue' import { useCloseSidebarOnEscape, - useScrollPromise, + // useScrollPromise, useSidebar, } from '../composables/index.js' @@ -36,9 +36,9 @@ provide('close-sidebar', closeSidebar) provide('is-sidebar-open', isSidebarOpen) // handle scrollBehavior with transition -const scrollPromise = useScrollPromise() -const onBeforeEnter = scrollPromise.resolve -const onBeforeLeave = scrollPromise.pending +// const scrollPromise = useScrollPromise() +// const onBeforeEnter = scrollPromise.resolve +// const onBeforeLeave = scrollPromise.pending