fix(inertia): link always render as anchor tag (#3989)

Co-authored-by: Benjamin Canac <canacb1@gmail.com>
Co-authored-by: Eugen Istoc <eugenistoc@gmail.com>
Co-authored-by: Romain Hamel <rom.hml@gmail.com>
This commit is contained in:
Victor Bianchi
2025-05-04 12:36:45 -03:00
committed by GitHub
parent 4b3d2a7b00
commit e81464a43e

View File

@@ -95,6 +95,7 @@ const ui = computed(() => tv({
}))
const isExternal = computed(() => {
if (props.external) return true
if (!props.to) return false
return typeof props.to === 'string' && hasProtocol(props.to, { acceptRelative: true })
})
@@ -110,14 +111,14 @@ const linkClass = computed(() => {
})
const page = usePage()
const url = computed(() => props.to ?? props.href ?? '#')
const url = computed(() => props.to ?? props.href ?? '')
const isActive = computed(() => props.active || (props.exact ? url.value === props.href : page?.url.startsWith(url.value)))
const isActive = computed(() => props.active || (!!url.value && (props.exact ? url.value === props.href : page?.url.startsWith(url.value))))
</script>
<template>
<template v-if="!isExternal">
<InertiaLink v-bind="routerLinkProps" :href="url" custom>
<template v-if="!isExternal && !!url">
<InertiaLink v-bind="routerLinkProps" :href="url">
<template v-if="custom">
<slot
v-bind="{