Merged in fix/hotel-faq (pull request #1265)
fix: setting faq section as nullable from CS as CS returns null after import * fix: setting faq section as nullable from CS as CS returns null after import Approved-by: Fredrik Thorsson
This commit is contained in:
@@ -150,7 +150,7 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
|
|||||||
<TabNavigation
|
<TabNavigation
|
||||||
restaurantTitle={getRestaurantHeading(detailedFacilities)}
|
restaurantTitle={getRestaurantHeading(detailedFacilities)}
|
||||||
hasActivities={activitiesCards.length > 0}
|
hasActivities={activitiesCards.length > 0}
|
||||||
hasFAQ={!!faq.accordions.length}
|
hasFAQ={!!faq?.accordions.length}
|
||||||
tabValues={tabValues}
|
tabValues={tabValues}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@ export default async function HotelPage({ hotelId }: HotelPageProps) {
|
|||||||
amenities={detailedFacilities}
|
amenities={detailedFacilities}
|
||||||
healthFacilities={healthFacilities}
|
healthFacilities={healthFacilities}
|
||||||
/>
|
/>
|
||||||
{faq.accordions.length > 0 && (
|
{faq && faq.accordions.length > 0 && (
|
||||||
<AccordionSection accordion={faq.accordions} title={faq.title} />
|
<AccordionSection accordion={faq.accordions} title={faq.title} />
|
||||||
)}
|
)}
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ export const hotelPageSchema = z.object({
|
|||||||
})
|
})
|
||||||
return { spaPage, activitiesCards }
|
return { spaPage, activitiesCards }
|
||||||
}),
|
}),
|
||||||
faq: hotelFaqSchema,
|
faq: hotelFaqSchema.nullable(),
|
||||||
hotel_page_id: z.string(),
|
hotel_page_id: z.string(),
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
url: z.string(),
|
url: z.string(),
|
||||||
|
|||||||
@@ -1240,7 +1240,7 @@ export const hotelQueryRouter = router({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
return null
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
const apiJson = await apiResponse.json()
|
const apiJson = await apiResponse.json()
|
||||||
|
|||||||
@@ -57,65 +57,69 @@ export function setFacilityCardGrids(
|
|||||||
): Facilities {
|
): Facilities {
|
||||||
const lang = getLang()
|
const lang = getLang()
|
||||||
|
|
||||||
const cards: Facilities = facilities.map((facility) => {
|
const cards: Facilities = facilities
|
||||||
let card: FacilityCard
|
.filter((fac) => !!fac.headingText)
|
||||||
|
.map((facility) => {
|
||||||
|
let card: FacilityCard
|
||||||
|
|
||||||
const grid: FacilityGrid = facility.heroImages.slice(0, 2).map((image) => {
|
const grid: FacilityGrid = facility.heroImages
|
||||||
// Can be a maximum 2 images per grid
|
.slice(0, 2)
|
||||||
const img: FacilityImage = {
|
.map((image) => {
|
||||||
backgroundImage: {
|
// Can be a maximum 2 images per grid
|
||||||
url: image.imageSizes.large,
|
const img: FacilityImage = {
|
||||||
title: image.metaData.title,
|
backgroundImage: {
|
||||||
meta: {
|
url: image.imageSizes.large,
|
||||||
alt: image.metaData.altText,
|
title: image.metaData.title,
|
||||||
caption: image.metaData.altText_En,
|
meta: {
|
||||||
},
|
alt: image.metaData.altText,
|
||||||
id: image.imageSizes.large,
|
caption: image.metaData.altText_En,
|
||||||
},
|
},
|
||||||
theme: "image",
|
id: image.imageSizes.large,
|
||||||
id: image.imageSizes.large,
|
},
|
||||||
|
theme: "image",
|
||||||
|
id: image.imageSizes.large,
|
||||||
|
}
|
||||||
|
return img
|
||||||
|
})
|
||||||
|
|
||||||
|
switch (facility.id) {
|
||||||
|
case FacilityCardTypeEnum.wellness:
|
||||||
|
const wellnessTitle = getWellnessHeading(healthFacilities)
|
||||||
|
card = setCardProps(
|
||||||
|
"one",
|
||||||
|
"Read more about wellness & exercise",
|
||||||
|
wellnessAndExercise[lang],
|
||||||
|
facility.headingText,
|
||||||
|
wellnessTitle
|
||||||
|
)
|
||||||
|
grid.unshift(card)
|
||||||
|
break
|
||||||
|
|
||||||
|
case FacilityCardTypeEnum.conference:
|
||||||
|
card = setCardProps(
|
||||||
|
"primaryDim",
|
||||||
|
"About meetings & conferences",
|
||||||
|
meetingsAndConferences[lang],
|
||||||
|
facility.headingText,
|
||||||
|
"Events that make an impression"
|
||||||
|
)
|
||||||
|
grid.push(card)
|
||||||
|
break
|
||||||
|
|
||||||
|
case FacilityCardTypeEnum.restaurant:
|
||||||
|
const restaurantTitle = getRestaurantHeading(amenities)
|
||||||
|
card = setCardProps(
|
||||||
|
"primaryDark",
|
||||||
|
"Read more & book a table",
|
||||||
|
restaurantAndBar[lang],
|
||||||
|
facility.headingText,
|
||||||
|
restaurantTitle
|
||||||
|
)
|
||||||
|
grid.unshift(card)
|
||||||
|
break
|
||||||
}
|
}
|
||||||
return img
|
return grid
|
||||||
})
|
})
|
||||||
|
|
||||||
switch (facility.id) {
|
|
||||||
case FacilityCardTypeEnum.wellness:
|
|
||||||
const wellnessTitle = getWellnessHeading(healthFacilities)
|
|
||||||
card = setCardProps(
|
|
||||||
"one",
|
|
||||||
"Read more about wellness & exercise",
|
|
||||||
wellnessAndExercise[lang],
|
|
||||||
facility.headingText,
|
|
||||||
wellnessTitle
|
|
||||||
)
|
|
||||||
grid.unshift(card)
|
|
||||||
break
|
|
||||||
|
|
||||||
case FacilityCardTypeEnum.conference:
|
|
||||||
card = setCardProps(
|
|
||||||
"primaryDim",
|
|
||||||
"About meetings & conferences",
|
|
||||||
meetingsAndConferences[lang],
|
|
||||||
facility.headingText,
|
|
||||||
"Events that make an impression"
|
|
||||||
)
|
|
||||||
grid.push(card)
|
|
||||||
break
|
|
||||||
|
|
||||||
case FacilityCardTypeEnum.restaurant:
|
|
||||||
const restaurantTitle = getRestaurantHeading(amenities)
|
|
||||||
card = setCardProps(
|
|
||||||
"primaryDark",
|
|
||||||
"Read more & book a table",
|
|
||||||
restaurantAndBar[lang],
|
|
||||||
facility.headingText,
|
|
||||||
restaurantTitle
|
|
||||||
)
|
|
||||||
grid.unshift(card)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return grid
|
|
||||||
})
|
|
||||||
return cards
|
return cards
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user