fix(SW-187): Fixed open in new tab and some general refactoring

This commit is contained in:
Erik Tiekstra
2024-10-11 09:44:50 +02:00
parent 5ef5129a92
commit 3656245f8d
3 changed files with 17 additions and 25 deletions

View File

@@ -17,6 +17,7 @@ export default function FooterMainNav({ mainLinks }: FooterMainNavProps) {
color="burgundy" color="burgundy"
href={link.url} href={link.url}
className={styles.mainNavigationLink} className={styles.mainNavigationLink}
target={link.openInNewTab ? "_blank" : undefined}
> >
{link.title} {link.title}

View File

@@ -56,26 +56,13 @@ export default function FooterSecondaryNav({
<ul className={styles.secondaryNavigationList}> <ul className={styles.secondaryNavigationList}>
{link?.links?.map((link) => ( {link?.links?.map((link) => (
<li key={link.title} className={styles.secondaryNavigationItem}> <li key={link.title} className={styles.secondaryNavigationItem}>
{link.isExternal ? ( <Link
<a href={link.url}
href={link.url} target={link.openInNewTab ? "_blank" : undefined}
key={link.title} color="burgundy"
target={link.openInNewTab ? "_blank" : "_self"} >
aria-label={link.title} {link.title}
className={styles.secondaryNavigationLink} </Link>
>
{link.title}
</a>
) : (
<Link
href={link.url}
key={link.title}
target={link.openInNewTab ? "_blank" : "_self"}
color="burgundy"
>
{link.title}
</Link>
)}
</li> </li>
))} ))}
</ul> </ul>

View File

@@ -321,7 +321,7 @@ const validateInternalLink = z
const lang = node.system.locale const lang = node.system.locale
return { return {
url: originalUrl ?? removeMultipleSlashes(`/${lang}/${url}`), url: originalUrl || removeMultipleSlashes(`/${lang}/${url}`),
title: node.title, title: node.title,
} }
}) })
@@ -339,14 +339,18 @@ export const validateLinkItem = z
url: data.pageConnection?.url ?? data.link?.href ?? "", url: data.pageConnection?.url ?? data.link?.href ?? "",
title: data?.title ?? data.link?.title, title: data?.title ?? data.link?.title,
openInNewTab: data.open_in_new_tab, openInNewTab: data.open_in_new_tab,
isExternal: !!data.link?.href, isExternal: !data.pageConnection?.url,
} }
}) })
const validateLinks = z
.array(validateLinkItem)
.transform((data) => data.filter((item) => item.url))
export const validateSecondaryLinks = z.array( export const validateSecondaryLinks = z.array(
z.object({ z.object({
title: z.string(), title: z.string(),
links: z.array(validateLinkItem), links: validateLinks,
}) })
) )
@@ -362,7 +366,7 @@ export const validateFooterConfigSchema = z
all_footer: z.object({ all_footer: z.object({
items: z.array( items: z.array(
z.object({ z.object({
main_links: z.array(validateLinkItem), main_links: validateLinks,
app_downloads: z.object({ app_downloads: z.object({
title: z.string(), title: z.string(),
links: validateLinksWithType, links: validateLinksWithType,
@@ -371,7 +375,7 @@ export const validateFooterConfigSchema = z
social_media: z.object({ social_media: z.object({
links: validateLinksWithType, links: validateLinksWithType,
}), }),
tertiary_links: z.array(validateLinkItem), tertiary_links: validateLinks,
}) })
), ),
}), }),