From 202ee7026054ac5c721bbdbf196426628b0c9b18 Mon Sep 17 00:00:00 2001 From: lilianakatrina684-a11y Date: Mon, 30 Mar 2026 10:46:43 -0600 Subject: [PATCH] fix: keep translation links in the current tab (#5158) --- .../theme-default/support/utils.test.ts | 23 ++++++++++++++++++- .../theme-default/components/VPLink.vue | 10 ++++---- .../components/VPNavBarExtra.vue | 1 + .../components/VPNavBarTranslations.vue | 1 + .../components/VPNavScreenTranslations.vue | 3 +++ src/client/theme-default/support/utils.ts | 12 ++++++++++ 6 files changed, 43 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/VPNavBarExtra.vue b/src/client/theme-default/components/VPNavBarExtra.vue index 3bc788bc..3df0f18c 100644 --- a/src/client/theme-default/components/VPNavBarExtra.vue +++ b/src/client/theme-default/components/VPNavBarExtra.vue @@ -33,6 +33,7 @@ const hasExtraContent = computed(