import { BookingOptionGroup, BookingOptionPax, PerPackageOption, PerUnitPackageOption } from '@qite/tide-client/build/types'; import { isEmpty } from 'lodash'; import React from 'react'; import { buildClassName } from '../../../shared/utils/class-util'; import NoneOption from './none-option'; import OptionItem from './option-item'; import OptionPaxCard from './option-pax-card'; interface OptionUnitGroupProps { unitIndex: number; optionId?: string; group: BookingOptionGroup; firstClassName: string; secondClassName: string; parentId: string; onGroupChange?: (group: BookingOptionGroup, unitIndex: number, optionId?: string) => void; } const OptionUnitGroup: React.FC = ({ unitIndex, optionId, group, firstClassName, secondClassName, parentId, onGroupChange }) => { const handleOptionChange = (option: PerPackageOption, index: number) => { const updatedGroup = { ...group, options: group.options.map((o, i) => { return i === index ? option : { ...o, isSelected: option.requirementType === 2 || option.requirementType === 3 ? false : o.isSelected }; }) } as BookingOptionGroup; if (onGroupChange) onGroupChange(updatedGroup, unitIndex, optionId); }; const handleChildGroupChange = (childGroup: BookingOptionGroup, unitIndex: number, optionId?: string) => { const updatedGroup = { ...group, options: group.options.map((groupOption) => { return groupOption.line.entryLineGuid === optionId ? { ...groupOption, groups: groupOption.groups.map((optionGroup) => { return optionGroup.name === childGroup.name ? childGroup : optionGroup; }) } : groupOption; }) }; if (onGroupChange) onGroupChange(updatedGroup, unitIndex, optionId); }; const handleOnPaxChange = (pax: BookingOptionPax[], index?: number) => { const updatedGroup = { ...group, options: group.options.map((groupOption, i) => { return { ...groupOption, pax: i === index ? pax : groupOption.pax }; }) }; if (onGroupChange) onGroupChange(updatedGroup, unitIndex, optionId); }; const handleNoneSelectionChanged = () => { const updatedGroup = { ...group, options: group.options.map((groupOption) => ({ ...groupOption, isSelected: false })) }; if (onGroupChange) onGroupChange(updatedGroup, unitIndex, optionId); }; const selectedPrice = group.name === '' ? 0 : group.options.find((x) => x.isSelected)?.line.price ?? 0; return (
{group.title &&

{group.title}

} {group.options.map((option, index) => ( ))}
); }; export default OptionUnitGroup;