Merged in feat/SW-1230-meeting-booking-widget (pull request #1507)

feat(SW-1230): Added meeting booking widget to hotel meeting pages

* feat(SW-1230): Added meeting booking widget to hotel meeting pages


Approved-by: Fredrik Thorsson
This commit is contained in:
Erik Tiekstra
2025-03-11 06:33:04 +00:00
parent 67004e5904
commit 2ef2b2e28d
10 changed files with 387 additions and 15 deletions

View File

@@ -0,0 +1,54 @@
"use client"
import Script from "next/script"
import { useState } from "react"
import useLang from "@/hooks/useLang"
import MeetingPackageWidgetSkeleton from "./Skeleton"
import { meetingPackageDestinationByHotelId } from "./utils"
import styles from "./meetingPackageWidget.module.css"
const SOURCE = "https://bookingengine-mp.s3.eu-west-2.amazonaws.com/script.js"
interface MeetingPackageWidgetProps {
hotelId?: string
className?: string
}
export default function MeetingPackageWidget({
hotelId,
className = "",
}: MeetingPackageWidgetProps) {
const lang = useLang()
const [isLoading, setIsLoading] = useState(true)
const destination = hotelId
? meetingPackageDestinationByHotelId[hotelId]
: undefined
function handleOnReady() {
setIsLoading(false)
}
return (
<div className={className}>
{isLoading && <MeetingPackageWidgetSkeleton />}
<div
id="mp-booking-engine-iframe-container"
className={`${styles.widget} ${!isLoading ? styles.ready : ""}`}
/>
<Script
//@ts-expect-error: invalid attributes because of external script
langcode={lang}
destination={destination}
whitelabel_id="224905"
widget_id="scandic_default_new"
version="frontpage-scandic"
src={SOURCE}
onReady={handleOnReady}
/>
</div>
)
}