Merged in feat/SW-1199-subpage-breadcrumbs (pull request #1254)
feat(SW-1199): Added breadcrumbs to subpages * feat(SW-1199): Added breadcrumbs to subpages Approved-by: Fredrik Thorsson Approved-by: Matilda Landström
This commit is contained in:
@@ -7,12 +7,17 @@ import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs
|
||||
|
||||
export default async function Breadcrumbs({
|
||||
variant,
|
||||
}: Pick<BreadcrumbsProps, "variant">) {
|
||||
subpageTitle,
|
||||
}: Pick<BreadcrumbsProps, "variant" | "subpageTitle">) {
|
||||
const breadcrumbs = await serverClient().contentstack.breadcrumbs.get()
|
||||
|
||||
if (!breadcrumbs?.length) {
|
||||
return null
|
||||
}
|
||||
|
||||
if (subpageTitle) {
|
||||
breadcrumbs.push({ title: subpageTitle, uid: subpageTitle, href: "" })
|
||||
}
|
||||
|
||||
const jsonSchema = generateBreadcrumbsSchema(breadcrumbs)
|
||||
|
||||
return (
|
||||
|
||||
@@ -48,7 +48,10 @@ export default async function HotelSubpage({
|
||||
<section className={styles.hotelSubpage}>
|
||||
<div className={styles.header}>
|
||||
<Suspense fallback={<BreadcrumbsSkeleton />}>
|
||||
<Breadcrumbs variant="hotelSubpage" />
|
||||
<Breadcrumbs
|
||||
variant="hotelSubpage"
|
||||
subpageTitle={pageData.heading}
|
||||
/>
|
||||
</Suspense>
|
||||
{pageData.heroImage && (
|
||||
<div className={styles.heroWrapper}>
|
||||
|
||||
@@ -10,5 +10,6 @@ type Breadcrumb = {
|
||||
|
||||
export interface BreadcrumbsProps
|
||||
extends VariantProps<typeof breadcrumbsVariants> {
|
||||
subpageTitle?: string
|
||||
breadcrumbs: Breadcrumb[]
|
||||
}
|
||||
|
||||
@@ -40,8 +40,8 @@ export default function Breadcrumbs({
|
||||
</li>
|
||||
) : null}
|
||||
|
||||
{breadcrumbs.map((breadcrumb) => {
|
||||
if (breadcrumb.href) {
|
||||
{breadcrumbs.map((breadcrumb, index) => {
|
||||
if (breadcrumb.href && index < breadcrumbs.length - 1) {
|
||||
return (
|
||||
<li key={breadcrumb.uid} className={styles.listItem}>
|
||||
<Link
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
query GetMyPagesBreadcrumbs($locale: String!, $uid: String!) {
|
||||
account_page(locale: $locale, uid: $uid) {
|
||||
url
|
||||
web {
|
||||
breadcrumbs {
|
||||
...Breadcrumbs
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
query GetCollectionPageBreadcrumbs($locale: String!, $uid: String!) {
|
||||
collection_page(locale: $locale, uid: $uid) {
|
||||
url
|
||||
web {
|
||||
breadcrumbs {
|
||||
...Breadcrumbs
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
query GetContentPageBreadcrumbs($locale: String!, $uid: String!) {
|
||||
content_page(locale: $locale, uid: $uid) {
|
||||
url
|
||||
web {
|
||||
breadcrumbs {
|
||||
...Breadcrumbs
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
query GetDestinationCityPageBreadcrumbs($locale: String!, $uid: String!) {
|
||||
destination_city_page(locale: $locale, uid: $uid) {
|
||||
url
|
||||
web {
|
||||
breadcrumbs {
|
||||
...Breadcrumbs
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
query GetDestinationCountryPageBreadcrumbs($locale: String!, $uid: String!) {
|
||||
destination_country_page(locale: $locale, uid: $uid) {
|
||||
url
|
||||
web {
|
||||
breadcrumbs {
|
||||
...Breadcrumbs
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
query GetDestinationOverviewPageBreadcrumbs($locale: String!, $uid: String!) {
|
||||
destination_overview_page(locale: $locale, uid: $uid) {
|
||||
url
|
||||
web {
|
||||
breadcrumbs {
|
||||
...Breadcrumbs
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
query GetHotelPageBreadcrumbs($locale: String!, $uid: String!) {
|
||||
hotel_page(locale: $locale, uid: $uid) {
|
||||
url
|
||||
web {
|
||||
breadcrumbs {
|
||||
...Breadcrumbs
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
query GetLoyaltyPageBreadcrumbs($locale: String!, $uid: String!) {
|
||||
loyalty_page(locale: $locale, uid: $uid) {
|
||||
url
|
||||
web {
|
||||
breadcrumbs {
|
||||
...Breadcrumbs
|
||||
|
||||
@@ -28,6 +28,7 @@ export const breadcrumbsRefsSchema = z.object({
|
||||
})
|
||||
|
||||
export const rawBreadcrumbsDataSchema = z.object({
|
||||
url: z.string(),
|
||||
web: z.object({
|
||||
breadcrumbs: z.object({
|
||||
title: z.string(),
|
||||
@@ -66,7 +67,7 @@ export const breadcrumbsSchema = rawBreadcrumbsDataSchema.transform((data) => {
|
||||
const pageBreadcrumb = {
|
||||
title,
|
||||
uid: data.system.uid,
|
||||
href: undefined,
|
||||
href: removeMultipleSlashes(`/${data.system.locale}/${data.url}`),
|
||||
}
|
||||
const homeBreadcrumb = homeBreadcrumbs[data.system.locale]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user