From cf6b280ede7d201ea698b2b6bf7f6d02c2caabe6 Mon Sep 17 00:00:00 2001 From: lilianakatrina684-a11y Date: Sun, 22 Mar 2026 01:52:57 +0800 Subject: [PATCH] fix: keep translation links in the current tab --- .../theme-default/support/utils.test.ts | 23 ++++++++++++++++++- .../theme-default/components/VPLink.vue | 10 ++++---- .../components/VPNavBarTranslations.vue | 1 + .../components/VPNavScreenTranslations.vue | 3 +++ src/client/theme-default/support/utils.ts | 12 ++++++++++ 5 files changed, 42 insertions(+), 7 deletions(-) diff --git a/__tests__/unit/client/theme-default/support/utils.test.ts b/__tests__/unit/client/theme-default/support/utils.test.ts index 880d4232..aefc9b8e 100644 --- a/__tests__/unit/client/theme-default/support/utils.test.ts +++ b/__tests__/unit/client/theme-default/support/utils.test.ts @@ -1,4 +1,7 @@ -import { ensureStartingSlash } from 'client/theme-default/support/utils' +import { + ensureStartingSlash, + isLinkExternal +} from 'client/theme-default/support/utils' describe('client/theme-default/utils', () => { describe('ensureStartingSlash', () => { @@ -9,4 +12,22 @@ describe('client/theme-default/utils', () => { expect(ensureStartingSlash('/path/nested')).toBe('/path/nested') }) }) + + describe('isLinkExternal', () => { + test('it detects external links by default', () => { + expect(isLinkExternal('https://vite.dev')).toBe(true) + expect(isLinkExternal('/guide/')).toBe(false) + }) + + test('it treats _blank targets as external by default', () => { + expect(isLinkExternal('/guide/', '_blank')).toBe(true) + }) + + test('it allows callers to override external detection', () => { + expect(isLinkExternal('https://cn.vite.dev', undefined, false)).toBe( + false + ) + expect(isLinkExternal('/guide/', undefined, true)).toBe(true) + }) + }) }) diff --git a/src/client/theme-default/components/VPLink.vue b/src/client/theme-default/components/VPLink.vue index f57e3328..f087a88c 100644 --- a/src/client/theme-default/components/VPLink.vue +++ b/src/client/theme-default/components/VPLink.vue @@ -1,21 +1,19 @@ diff --git a/src/client/theme-default/components/VPNavBarTranslations.vue b/src/client/theme-default/components/VPNavBarTranslations.vue index e6850d4c..fe3bfe96 100644 --- a/src/client/theme-default/components/VPNavBarTranslations.vue +++ b/src/client/theme-default/components/VPNavBarTranslations.vue @@ -21,6 +21,7 @@ const { localeLinks, currentLang } = useLangs({ correspondingLink: true })