"use client" import { useEffect } from "react" import { useFormContext, useWatch } from "react-hook-form" import { useIntl } from "react-intl" import { CloseLargeIcon, PlusCircleIcon, PlusIcon } from "../Icons" import Button from "../TempDesignSystem/Button" import Divider from "../TempDesignSystem/Divider" import Subtitle from "../TempDesignSystem/Text/Subtitle" import { Tooltip } from "../TempDesignSystem/Tooltip" import AdultSelector from "./AdultSelector" import ChildSelector from "./ChildSelector" import styles from "./guests-rooms-picker.module.css" import { BookingWidgetSchema } from "@/types/components/bookingWidget" import { ChildBedMapEnum } from "@/types/components/bookingWidget/enums" import { GuestsRoom } from "@/types/components/bookingWidget/guestsRoomsPicker" export default function GuestsRoomsPickerDialog({ rooms, onClose, isOverflowed = false, }: { rooms: GuestsRoom[] onClose: () => void isOverflowed?: boolean // ToDo Remove once Tooltip below is no longer required }) { const intl = useIntl() const doneLabel = intl.formatMessage({ id: "Done" }) const roomLabel = intl.formatMessage({ id: "Room" }) const disabledBookingOptionsHeader = intl.formatMessage({ id: "Disabled booking options header", }) const disabledBookingOptionsText = intl.formatMessage({ id: "Disabled adding room", }) const addRoomLabel = intl.formatMessage({ id: "Add Room" }) const { getFieldState, trigger } = useFormContext() const roomsValue = useWatch({ name: "rooms" }) async function handleOnClose() { const state = await trigger("rooms") if (state) { onClose() } } const fieldState = getFieldState("rooms") useEffect(() => { if (fieldState.invalid) { trigger("rooms") } }, [roomsValue, fieldState.invalid, trigger]) return ( <>
{rooms.map((room, index) => { const currentAdults = room.adults const currentChildren = room.child const childrenInAdultsBed = currentChildren.filter( (child) => child.bed === ChildBedMapEnum.IN_ADULTS_BED ).length ?? 0 return (
{roomLabel} {index + 1}
) })}
{rooms.length < 4 ? ( ) : null}
) }