feat/SW-3108 external links
* feat(SW-3108): Added external link options to shortcuts * feat(SW-3108): Added external link options to header Approved-by: Matilda Landström
This commit is contained in:
@@ -15,37 +15,65 @@ export const shortcutsBlockSchema = z.object({
|
||||
two_column_list: z.boolean().nullable().default(false),
|
||||
shortcuts: z
|
||||
.array(
|
||||
z.object({
|
||||
open_in_new_tab: z.boolean(),
|
||||
text: z.string().optional().default(""),
|
||||
linkConnection: z.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: linkUnionSchema.transform((data) => {
|
||||
const link = transformPageLink(data)
|
||||
if (link) {
|
||||
return link
|
||||
}
|
||||
return data
|
||||
}),
|
||||
z
|
||||
.object({
|
||||
is_contentstack_link: z.boolean().nullish(),
|
||||
external_link: z
|
||||
.object({
|
||||
href: z.string().nullish().default(""),
|
||||
title: z.string().nullish(),
|
||||
})
|
||||
),
|
||||
}),
|
||||
})
|
||||
)
|
||||
.transform((data) => {
|
||||
return data
|
||||
.filter((node) => node.linkConnection.edges.length)
|
||||
.map((node) => {
|
||||
const link = node.linkConnection.edges[0].node
|
||||
return {
|
||||
openInNewTab: node.open_in_new_tab,
|
||||
text: node.text,
|
||||
title: link.title,
|
||||
url: link.url,
|
||||
}
|
||||
.nullish(),
|
||||
open_in_new_tab: z.boolean(),
|
||||
text: z.string().optional().default(""),
|
||||
linkConnection: z.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: linkUnionSchema.transform((data) => {
|
||||
const link = transformPageLink(data)
|
||||
if (link) {
|
||||
return link
|
||||
}
|
||||
return data
|
||||
}),
|
||||
})
|
||||
),
|
||||
}),
|
||||
})
|
||||
}),
|
||||
.transform(
|
||||
({
|
||||
is_contentstack_link,
|
||||
external_link,
|
||||
linkConnection,
|
||||
open_in_new_tab,
|
||||
text,
|
||||
}) => {
|
||||
if (
|
||||
is_contentstack_link !== false &&
|
||||
linkConnection.edges.length
|
||||
) {
|
||||
const linkRef = linkConnection.edges[0].node
|
||||
return {
|
||||
openInNewTab: open_in_new_tab,
|
||||
text: text || linkRef.title,
|
||||
url: linkRef.url,
|
||||
}
|
||||
} else if (
|
||||
is_contentstack_link === false &&
|
||||
external_link?.href
|
||||
) {
|
||||
return {
|
||||
openInNewTab: open_in_new_tab,
|
||||
text: text || external_link.title || "",
|
||||
url: external_link.href,
|
||||
}
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
.transform((data) => data.filter((item) => !!item)),
|
||||
})
|
||||
.transform(({ two_column_list, ...rest }) => {
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user