Merged master into feat/membership-cards-improvements
This commit is contained in:
@@ -4,11 +4,16 @@ import Breadcrumbs from "@/components/Breadcrumbs"
|
|||||||
import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton"
|
import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton"
|
||||||
import { setLang } from "@/i18n/serverContext"
|
import { setLang } from "@/i18n/serverContext"
|
||||||
|
|
||||||
import type { LangParams, PageArgs } from "@/types/params"
|
import type { ContentTypeParams, LangParams, PageArgs } from "@/types/params"
|
||||||
|
|
||||||
export default function PageBreadcrumbs({ params }: PageArgs<LangParams>) {
|
export default function PageBreadcrumbs({
|
||||||
|
params,
|
||||||
|
}: PageArgs<LangParams & ContentTypeParams>) {
|
||||||
setLang(params.lang)
|
setLang(params.lang)
|
||||||
|
|
||||||
|
if (params.contentType === "hotel-page") {
|
||||||
|
return null
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={<BreadcrumbsSkeleton />}>
|
<Suspense fallback={<BreadcrumbsSkeleton />}>
|
||||||
<Breadcrumbs />
|
<Breadcrumbs />
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
.image {
|
.image {
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
border-radius: var(--Corner-radius-Medium);
|
border-radius: var(--Corner-radius-Small);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
max-height: 30vh;
|
max-height: 30vh;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
);
|
);
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
"hotelImages"
|
"header"
|
||||||
"tabNavigation"
|
"tabNavigation"
|
||||||
"mainSection"
|
"mainSection"
|
||||||
"mapContainer";
|
"mapContainer";
|
||||||
@@ -17,9 +17,9 @@
|
|||||||
max-width: var(--max-width);
|
max-width: var(--max-width);
|
||||||
}
|
}
|
||||||
|
|
||||||
.hotelImages {
|
.header {
|
||||||
grid-area: hotelImages;
|
|
||||||
background-color: var(--Base-Surface-Subtle-Normal);
|
background-color: var(--Base-Surface-Subtle-Normal);
|
||||||
|
grid-area: header;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mainSection {
|
.mainSection {
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
@media screen and (min-width: 1367px) {
|
@media screen and (min-width: 1367px) {
|
||||||
.pageContainer {
|
.pageContainer {
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
"hotelImages mapContainer"
|
"header mapContainer"
|
||||||
"tabNavigation mapContainer"
|
"tabNavigation mapContainer"
|
||||||
"mainSection mapContainer";
|
"mainSection mapContainer";
|
||||||
grid-template-columns: 1fr var(--hotel-page-map-desktop-width);
|
grid-template-columns: 1fr var(--hotel-page-map-desktop-width);
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
import { notFound } from "next/navigation"
|
import { notFound } from "next/navigation"
|
||||||
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { restaurantAndBar } from "@/constants/routes/hotelPageParams"
|
import { restaurantAndBar } from "@/constants/routes/hotelPageParams"
|
||||||
import { env } from "@/env/server"
|
import { env } from "@/env/server"
|
||||||
import { getHotelData, getHotelPage } from "@/lib/trpc/memoizedRequests"
|
import { getHotelData, getHotelPage } from "@/lib/trpc/memoizedRequests"
|
||||||
|
|
||||||
import AccordionSection from "@/components/Blocks/Accordion"
|
import AccordionSection from "@/components/Blocks/Accordion"
|
||||||
|
import Breadcrumbs from "@/components/Breadcrumbs"
|
||||||
import SidePeekProvider from "@/components/SidePeeks/SidePeekProvider"
|
import SidePeekProvider from "@/components/SidePeeks/SidePeekProvider"
|
||||||
import Alert from "@/components/TempDesignSystem/Alert"
|
import Alert from "@/components/TempDesignSystem/Alert"
|
||||||
|
import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton"
|
||||||
import SidePeek from "@/components/TempDesignSystem/SidePeek"
|
import SidePeek from "@/components/TempDesignSystem/SidePeek"
|
||||||
import { getIntl } from "@/i18n"
|
import { getIntl } from "@/i18n"
|
||||||
import { getLang } from "@/i18n/serverContext"
|
import { getLang } from "@/i18n/serverContext"
|
||||||
@@ -117,14 +120,18 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
|
|||||||
__html: JSON.stringify(jsonSchema.jsonLd),
|
__html: JSON.stringify(jsonSchema.jsonLd),
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<div className={styles.hotelImages}>
|
<header className={styles.header}>
|
||||||
|
<Suspense fallback={<BreadcrumbsSkeleton />}>
|
||||||
|
<Breadcrumbs />
|
||||||
|
</Suspense>
|
||||||
{images?.length && <PreviewImages images={images} hotelName={name} />}
|
{images?.length && <PreviewImages images={images} hotelName={name} />}
|
||||||
</div>
|
</header>
|
||||||
<TabNavigation
|
<TabNavigation
|
||||||
restaurantTitle={getRestaurantHeading(detailedFacilities)}
|
restaurantTitle={getRestaurantHeading(detailedFacilities)}
|
||||||
hasActivities={!!activitiesCard}
|
hasActivities={!!activitiesCard}
|
||||||
hasFAQ={!!faq.accordions.length}
|
hasFAQ={!!faq.accordions.length}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<main className={styles.mainSection}>
|
<main className={styles.mainSection}>
|
||||||
<div id={HotelHashValues.overview} className={styles.overview}>
|
<div id={HotelHashValues.overview} className={styles.overview}>
|
||||||
<div className={styles.introContainer}>
|
<div className={styles.introContainer}>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#import "./AccountPage.graphql"
|
#import "./AccountPage.graphql"
|
||||||
#import "./CollectionPage.graphql"
|
#import "./CollectionPage.graphql"
|
||||||
#import "./ContentPage.graphql"
|
#import "./ContentPage.graphql"
|
||||||
|
#import "./HotelPage.graphql"
|
||||||
#import "./LoyaltyPage.graphql"
|
#import "./LoyaltyPage.graphql"
|
||||||
|
|
||||||
fragment Breadcrumbs on Breadcrumbs {
|
fragment Breadcrumbs on Breadcrumbs {
|
||||||
@@ -12,6 +13,7 @@ fragment Breadcrumbs on Breadcrumbs {
|
|||||||
...AccountPageBreadcrumb
|
...AccountPageBreadcrumb
|
||||||
...CollectionPageBreadcrumb
|
...CollectionPageBreadcrumb
|
||||||
...ContentPageBreadcrumb
|
...ContentPageBreadcrumb
|
||||||
|
...HotelPageBreadcrumb
|
||||||
...LoyaltyPageBreadcrumb
|
...LoyaltyPageBreadcrumb
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,6 +29,7 @@ fragment BreadcrumbsRefs on Breadcrumbs {
|
|||||||
...AccountPageBreadcrumbRef
|
...AccountPageBreadcrumbRef
|
||||||
...CollectionPageBreadcrumbRef
|
...CollectionPageBreadcrumbRef
|
||||||
...ContentPageBreadcrumbRef
|
...ContentPageBreadcrumbRef
|
||||||
|
...HotelPageBreadcrumbRef
|
||||||
...LoyaltyPageBreadcrumbRef
|
...LoyaltyPageBreadcrumbRef
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
24
lib/graphql/Fragments/Breadcrumbs/HotelPage.graphql
Normal file
24
lib/graphql/Fragments/Breadcrumbs/HotelPage.graphql
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#import "../System.graphql"
|
||||||
|
|
||||||
|
fragment HotelPageBreadcrumb on HotelPage {
|
||||||
|
web {
|
||||||
|
breadcrumbs {
|
||||||
|
title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
system {
|
||||||
|
...System
|
||||||
|
}
|
||||||
|
url
|
||||||
|
}
|
||||||
|
|
||||||
|
fragment HotelPageBreadcrumbRef on HotelPage {
|
||||||
|
web {
|
||||||
|
breadcrumbs {
|
||||||
|
title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
system {
|
||||||
|
...System
|
||||||
|
}
|
||||||
|
}
|
||||||
28
lib/graphql/Query/Breadcrumbs/HotelPage.graphql
Normal file
28
lib/graphql/Query/Breadcrumbs/HotelPage.graphql
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#import "../../Fragments/Breadcrumbs/Breadcrumbs.graphql"
|
||||||
|
#import "../../Fragments/System.graphql"
|
||||||
|
|
||||||
|
query GetHotelPageBreadcrumbs($locale: String!, $uid: String!) {
|
||||||
|
hotel_page(locale: $locale, uid: $uid) {
|
||||||
|
web {
|
||||||
|
breadcrumbs {
|
||||||
|
...Breadcrumbs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
system {
|
||||||
|
...System
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
query GetHotelPageBreadcrumbsRefs($locale: String!, $uid: String!) {
|
||||||
|
hotel_page(locale: $locale, uid: $uid) {
|
||||||
|
web {
|
||||||
|
breadcrumbs {
|
||||||
|
...BreadcrumbsRefs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
system {
|
||||||
|
...System
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,6 +13,10 @@ import {
|
|||||||
GetContentPageBreadcrumbs,
|
GetContentPageBreadcrumbs,
|
||||||
GetContentPageBreadcrumbsRefs,
|
GetContentPageBreadcrumbsRefs,
|
||||||
} from "@/lib/graphql/Query/Breadcrumbs/ContentPage.graphql"
|
} from "@/lib/graphql/Query/Breadcrumbs/ContentPage.graphql"
|
||||||
|
import {
|
||||||
|
GetHotelPageBreadcrumbs,
|
||||||
|
GetHotelPageBreadcrumbsRefs,
|
||||||
|
} from "@/lib/graphql/Query/Breadcrumbs/HotelPage.graphql"
|
||||||
import {
|
import {
|
||||||
GetLoyaltyPageBreadcrumbs,
|
GetLoyaltyPageBreadcrumbs,
|
||||||
GetLoyaltyPageBreadcrumbsRefs,
|
GetLoyaltyPageBreadcrumbsRefs,
|
||||||
@@ -199,6 +203,17 @@ export const breadcrumbsQueryRouter = router({
|
|||||||
},
|
},
|
||||||
variables
|
variables
|
||||||
)
|
)
|
||||||
|
case PageTypeEnum.hotelPage:
|
||||||
|
return await getBreadcrumbs<{
|
||||||
|
hotel_page: RawBreadcrumbsSchema
|
||||||
|
}>(
|
||||||
|
{
|
||||||
|
dataKey: "hotel_page",
|
||||||
|
refQuery: GetHotelPageBreadcrumbsRefs,
|
||||||
|
query: GetHotelPageBreadcrumbs,
|
||||||
|
},
|
||||||
|
variables
|
||||||
|
)
|
||||||
case PageTypeEnum.loyaltyPage:
|
case PageTypeEnum.loyaltyPage:
|
||||||
return await getBreadcrumbs<{
|
return await getBreadcrumbs<{
|
||||||
loyalty_page: RawBreadcrumbsSchema
|
loyalty_page: RawBreadcrumbsSchema
|
||||||
|
|||||||
Reference in New Issue
Block a user