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 })