From c1e502b5906bd1d8f4565aff612540f6e3a7369c Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 2 Jan 2024 01:20:22 +0530 Subject: [PATCH] fix(theme): keep hash same when switching locales --- src/client/theme-default/composables/hash.ts | 12 ++++++++++++ src/client/theme-default/composables/langs.ts | 18 +++++++++++------- .../theme-default/composables/sidebar.ts | 10 ++-------- 3 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 src/client/theme-default/composables/hash.ts diff --git a/src/client/theme-default/composables/hash.ts b/src/client/theme-default/composables/hash.ts new file mode 100644 index 00000000..3dedc01b --- /dev/null +++ b/src/client/theme-default/composables/hash.ts @@ -0,0 +1,12 @@ +import { inBrowser } from '../../shared' +import { ref } from 'vue' + +const hashRef = ref(inBrowser ? location.hash : '') + +if (inBrowser) { + window.addEventListener('hashchange', () => { + hashRef.value = location.hash + }) +} + +export { hashRef } diff --git a/src/client/theme-default/composables/langs.ts b/src/client/theme-default/composables/langs.ts index 13758ef0..4d105cd7 100644 --- a/src/client/theme-default/composables/langs.ts +++ b/src/client/theme-default/composables/langs.ts @@ -1,6 +1,7 @@ import { computed } from 'vue' -import { useData } from './data' import { ensureStartingSlash } from '../support/utils' +import { useData } from './data' +import { hashRef } from './hash' export function useLangs({ removeCurrent = true, @@ -20,12 +21,15 @@ export function useLangs({ ? [] : { text: value.label, - link: normalizeLink( - value.link || (key === 'root' ? '/' : `/${key}/`), - theme.value.i18nRouting !== false && correspondingLink, - page.value.relativePath.slice(currentLang.value.link.length - 1), - !site.value.cleanUrls - ) + link: + normalizeLink( + value.link || (key === 'root' ? '/' : `/${key}/`), + theme.value.i18nRouting !== false && correspondingLink, + page.value.relativePath.slice( + currentLang.value.link.length - 1 + ), + !site.value.cleanUrls + ) + hashRef.value } ) ) diff --git a/src/client/theme-default/composables/sidebar.ts b/src/client/theme-default/composables/sidebar.ts index ddc9c073..a5a07a16 100644 --- a/src/client/theme-default/composables/sidebar.ts +++ b/src/client/theme-default/composables/sidebar.ts @@ -11,13 +11,14 @@ import { type ComputedRef, type Ref } from 'vue' -import { inBrowser, isActive } from '../../shared' +import { isActive } from '../../shared' import { hasActiveLink as containsActiveLink, getSidebar, getSidebarGroups } from '../support/sidebar' import { useData } from './data' +import { hashRef } from './hash' export interface SidebarControl { collapsed: Ref @@ -134,13 +135,6 @@ export function useCloseSidebarOnEscape( } } -const hashRef = ref(inBrowser ? location.hash : '') -if (inBrowser) { - window.addEventListener('hashchange', () => { - hashRef.value = location.hash - }) -} - export function useSidebarControl( item: ComputedRef ): SidebarControl {