From 3adc965dd09490b7efa1cce9f09b0a3b30970277 Mon Sep 17 00:00:00 2001 From: 简律纯 Date: Wed, 19 Apr 2023 17:30:39 +0800 Subject: ✨优化文档 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plugins/menu.ts | 48 +++++++++++++++++++++++++++++++++++++++ docs/plugins/scrollbars.client.ts | 5 ++++ 2 files changed, 53 insertions(+) create mode 100644 docs/plugins/menu.ts create mode 100644 docs/plugins/scrollbars.client.ts (limited to 'docs/plugins') diff --git a/docs/plugins/menu.ts b/docs/plugins/menu.ts new file mode 100644 index 0000000..82512c3 --- /dev/null +++ b/docs/plugins/menu.ts @@ -0,0 +1,48 @@ +export default defineNuxtPlugin((ctx: any) => { + // Menu visible reference + const visible = ref(false) + + // Open the menu + const open = () => (visible.value = true) + + // Close the menu + const close = () => (visible.value = false) + + // Toggle the menu (useful for one-off buttons) + const toggle = () => (visible.value = !visible.value) + + // Watch route change, close on change + ctx.$router.afterEach(() => setTimeout(close, 50)) + + // Watch visible and remove overflow so the scrollbar disappears when menu is opened + if (process.client) { + watch( + visible, + (isVisible) => { + const html = document.documentElement + + if (isVisible) { + html.style.overflow = 'hidden' + } else { + setTimeout(() => { + html.style.overflow = '' + }, 100) /* had to put it, because of layout shift on leave transition */ + } + }, + { + immediate: true + } + ) + } + + return { + provide: { + menu: { + visible, + close, + open, + toggle + } + } + } +}) diff --git a/docs/plugins/scrollbars.client.ts b/docs/plugins/scrollbars.client.ts new file mode 100644 index 0000000..d1078cf --- /dev/null +++ b/docs/plugins/scrollbars.client.ts @@ -0,0 +1,5 @@ +export default defineNuxtPlugin(() => { + if (navigator && navigator.userAgent && navigator.userAgent.match(/Win[a-z0-9]*;/)) { + document.documentElement.classList.add('docus-scrollbars') + } +}) -- cgit v1.2.3-70-g09d2