/* eslint-disable react/no-danger */ import { useState } from "react"; import { Button } from "@/components/ui/button/button"; import LIcon from "@/components/ui/lucid-icon/lucid-icon"; import { Modal } from "@/components/ui/modal/modal"; import { useModal } from "@/components/ui/modal/modal.hook"; import type { AttendeesChecboxValue } from "@/components/widget/attendees-checkbox/attendees-checkbox"; import { AttendeesChecbox } from "@/components/widget/attendees-checkbox/attendees-checkbox"; import { CoreSummaryAdditionalServiceItem } from "@/features/core/summary/components/core-summary-additional-service"; import { useApp } from "@/hooks/useApp"; import { useLocale } from "@/hooks/useLocale"; import localStateCache from "@/libs/helpers/local-state-cache-helper"; import { PriceManager } from "@/libs/price-manager/price-manager"; import type { IOptionalAddOns } from "@/services/eva-display/hotel/hotel-add-to-cart/hotel-add-to-card-services.types"; import { useSummaryCtxActions, useSummaryCtxState, } from "../context/summary-context"; import { useHotelSummary } from "../hooks/use-hotel-summary"; const HotelSummaryEventAddon = ({ addOn }: { addOn: IOptionalAddOns }) => { const { isB2C } = useApp(); const { t } = useLocale(); const { data: summaryData } = useHotelSummary(); const summaryState = useSummaryCtxState(); const { setOptionalAddOns } = useSummaryCtxActions(); const hasSelectedAddons = summaryState.optionalAddOns?.some( (item) => item.addOn.key === addOn.key, ); const [showAttendees, setShowAttendees] = useState( hasSelectedAddons || false, ); const { modalOpen, openModal, closeModal } = useModal({ open: false }); const handleChangeAttendeesChecbox = (values: AttendeesChecboxValue) => { const hasSelectedValues = values.some((item) => item.length > 0); if (!hasSelectedValues) { const newOptionalAddOns = summaryState.optionalAddOns?.filter( (item) => item.addOn.key !== addOn.key, ) || []; localStateCache.set("addons", { data: newOptionalAddOns || [], productKey: summaryData.payload.searchItemKey!, }); setOptionalAddOns({ optionalAddOns: newOptionalAddOns, totalPrice: summaryState.totalPrice, tryTotalPrice: summaryState.tryTotalPrice, }); return; } const newOptionalAddOns = [ ...(summaryState.optionalAddOns || []).filter( (item) => item.addOn.key !== addOn.key, ), { addOn, selectedPassengerValues: [...values], }, ]; localStateCache.set("addons", { data: newOptionalAddOns || [], productKey: summaryData.payload.searchItemKey!, }); setOptionalAddOns({ optionalAddOns: newOptionalAddOns, totalPrice: summaryState.totalPrice, tryTotalPrice: summaryState.tryTotalPrice, }); }; const handleClickOpenAttendees = () => { setShowAttendees(true); }; const handleClickCloseAttendees = () => { setShowAttendees(false); setOptionalAddOns({ optionalAddOns: summaryState.optionalAddOns?.filter( (item) => item.addOn.key !== addOn.key, ) || [], totalPrice: summaryState.totalPrice, tryTotalPrice: summaryState.tryTotalPrice, }); }; return ( <> item.addOn.key === addOn.key, )} showIcon={isB2C} buttonContent={ showAttendees ? ( ) : ( ) } > {showAttendees && (
item.addOn.key === addOn.key, )?.selectedPassengerValues || summaryData.payload.rooms.map(() => []) } onChange={(values) => handleChangeAttendeesChecbox(values)} />
)}
} >
); }; export default HotelSummaryEventAddon;