refactor(SW-296)

This commit is contained in:
Matilda Landström
2024-10-02 10:07:28 +02:00
parent c7146e01a7
commit 22f3656b92
10 changed files with 24 additions and 30 deletions

View File

@@ -10,13 +10,11 @@ import { getLang } from "@/i18n/serverContext"
import styles from "./amenitiesList.module.css" import styles from "./amenitiesList.module.css"
import type { Amenities } from "@/types/hotel" import type { AmentiesListProps } from "@/types/components/hotelPage/amenities"
export default async function AmenitiesList({ export default async function AmenitiesList({
detailedFacilities, detailedFacilities,
}: { }: AmentiesListProps) {
detailedFacilities: Amenities
}) {
const intl = await getIntl() const intl = await getIntl()
const sortedAmenities = detailedFacilities const sortedAmenities = detailedFacilities
.sort((a, b) => b.sortOrder - a.sortOrder) .sort((a, b) => b.sortOrder - a.sortOrder)

View File

@@ -24,15 +24,10 @@ export default async function CardGrid({ facilities }: CardGridProps) {
return ( return (
<section id={imageCard.card?.id}> <section id={imageCard.card?.id}>
<Grids.Stackable className={styles.desktopGrid}> <Grids.Stackable className={styles.desktopGrid}>
{facilities.map((card: CardProps, idx: number) => ( {facilities.map((card: CardProps) => (
<Card <Card
theme={card.theme || "primaryDark"} theme={card.theme || "primaryDark"}
key={ key={card.id}
card.id ||
(card.title && `${card.title}-${idx}`) ||
(card.heading && `${card.heading}-${idx}`) ||
idx
}
scriptedTopTitle={card.scriptedTopTitle} scriptedTopTitle={card.scriptedTopTitle}
heading={card.heading} heading={card.heading}
bodyText={card.bodyText} bodyText={card.bodyText}

View File

@@ -17,16 +17,16 @@ export default async function Facilities({ facilities }: FacilityProps) {
// Put activities card at the end // Put activities card at the end
const activitiesIdx = facilities.findIndex( const activitiesIdx = facilities.findIndex(
(facility) => facility[0].id == activities[lang] (facility) => facility[0].id === activities[lang]
) )
if (activitiesIdx != -1) { if (activitiesIdx !== -1) {
facilities.push(facilities.splice(activitiesIdx, 1)[0]) facilities.push(facilities.splice(activitiesIdx, 1)[0])
} }
return ( return (
<SectionContainer className={styles.grid}> <SectionContainer className={styles.grid}>
{facilities.map((facilityCards: FacilityCards, idx: number) => ( {facilities.map((facilityCards: FacilityCards) => (
<CardGrid key={`grid_${idx}`} facilities={facilityCards} /> <CardGrid key={facilityCards[0].id} facilities={facilityCards} />
))} ))}
</SectionContainer> </SectionContainer>
) )

View File

@@ -51,9 +51,9 @@ export default async function HotelPage() {
facilityCards, facilityCards,
} = hotelData } = hotelData
const facilities = setFacilityCards(facilityCards, hotelDetailedFacilities) const facilities = setFacilityCards(facilityCards)
activitiesCard && facilities.push(setActivityCard(activitiesCard)) activitiesCard && facilities.push(setActivityCard(activitiesCard))
const topThreePois = pointsOfInterest.slice(0, 3) const topThreePois = pointsOfInterest.slice(0, 3)
const coordinates = { const coordinates = {

View File

@@ -15,16 +15,10 @@ export default function CardImage({
<article className={`${styles.container} ${className}`}> <article className={`${styles.container} ${className}`}>
<div className={styles.imageContainer}> <div className={styles.imageContainer}>
{imageCards.map( {imageCards.map(
({ backgroundImage }, idx: Number) => ({ backgroundImage }) =>
backgroundImage && ( backgroundImage && (
<Image <Image
key={ key={backgroundImage.id}
(backgroundImage.title &&
`${backgroundImage.title}-${idx}`) ||
(backgroundImage.meta.caption &&
`${backgroundImage.meta.caption}-${idx}`) ||
backgroundImage.url
}
src={backgroundImage.url} src={backgroundImage.url}
className={styles.image} className={styles.image}
alt={backgroundImage.title} alt={backgroundImage.title}

View File

@@ -791,4 +791,3 @@ export const apiLocationsSchema = z.object({
}) })
), ),
}) })
export type Facility = z.infer<typeof facilitySchema> & { id: string }

View File

@@ -1,6 +1,6 @@
import type { CardProps } from "@/components/TempDesignSystem/Card/card" import type { CardProps } from "@/components/TempDesignSystem/Card/card"
export interface CardImageProps extends React.HTMLAttributes<HTMLDivElement> { export interface CardImageProps extends React.HTMLAttributes<HTMLDivElement> {
card: CardProps | undefined card?: CardProps
imageCards: Pick<CardProps, "backgroundImage">[] imageCards: Pick<CardProps, "backgroundImage">[]
} }

View File

@@ -0,0 +1,5 @@
import type { Amenities } from "@/types/hotel"
export type AmentiesListProps = {
detailedFacilities: Amenities
}

View File

@@ -1,4 +1,5 @@
export type ApiImage = { export type ApiImage = {
id: string
url: string url: string
title: string title: string
meta: { meta: {

View File

@@ -77,7 +77,7 @@ async function setCardProps(
return card return card
} }
export function setFacilityCards(facilities: Facility[], amenities: Amenities) { export function setFacilityCards(facilities: Facility[]) {
const lang = getLang() const lang = getLang()
const cards: Facilities = [] const cards: Facilities = []
@@ -88,6 +88,7 @@ export function setFacilityCards(facilities: Facility[], amenities: Amenities) {
facility.heroImages.slice(0, 2).forEach((image) => { facility.heroImages.slice(0, 2).forEach((image) => {
// Can be a maximum 2 images per grid // Can be a maximum 2 images per grid
const img: CardProps = {} const img: CardProps = {}
img.id = image.imageSizes.large
;(img.backgroundImage = { ;(img.backgroundImage = {
url: image.imageSizes.large, url: image.imageSizes.large,
title: image.metaData.title, title: image.metaData.title,
@@ -95,6 +96,7 @@ export function setFacilityCards(facilities: Facility[], amenities: Amenities) {
alt: image.metaData.altText, alt: image.metaData.altText,
caption: image.metaData.altText_En, caption: image.metaData.altText_En,
}, },
id: image.imageSizes.large,
}), }),
(img.theme = "image") (img.theme = "image")
grid.push(img) grid.push(img)
@@ -143,10 +145,10 @@ export function setFacilityCards(facilities: Facility[], amenities: Amenities) {
export function getRestaurantHeading(amenities: Amenities): RestaurantHeadings { export function getRestaurantHeading(amenities: Amenities): RestaurantHeadings {
const hasBar = amenities.some( const hasBar = amenities.some(
(facility) => (facility) =>
facility.id == FacilityIds.bar || facility.id == FacilityIds.rooftopBar facility.id === FacilityIds.bar || facility.id === FacilityIds.rooftopBar
) )
const hasRestaurant = amenities.some( const hasRestaurant = amenities.some(
(facility) => facility.id == FacilityIds.restaurant (facility) => facility.id === FacilityIds.restaurant
) )
if (hasBar && hasRestaurant) { if (hasBar && hasRestaurant) {