fix(SW-187): Fixed open in new tab and some general refactoring
This commit is contained in:
@@ -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}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
}),
|
}),
|
||||||
|
|||||||
Reference in New Issue
Block a user