import { range } from 'lodash'; import React, { useContext, useEffect, useState } from 'react'; import { buildClassName } from '../../shared/utils/class-util'; import { getTranslations } from '../../shared/utils/localization-util'; import SettingsContext from '../settings-context'; import { ProductRoom } from '../types'; import AgeSelect from './age-select'; import AmountInput from './amount-input'; import Icon from '../../shared/components/icon'; interface RoomsProps { rooms: ProductRoom[]; isDisabled: boolean; setIsDisabled: (isOpen: boolean) => void; onChange: (rooms: ProductRoom[]) => void; } const Rooms: React.FC = ({ rooms, isDisabled, setIsDisabled, onChange }) => { const [isTouched, setIsTouched] = useState(false); const [currentRooms, setRoomState] = useState(rooms); useEffect(() => { setRoomState(rooms); }, [rooms]); const { language } = useContext(SettingsContext); const translations = getTranslations(language); const handleCloseClick = () => { setIsDisabled(true); if (isTouched) onChange(currentRooms); }; return (
{translations.PRODUCT.WHO_YOU_TRAVELING_WITH}
{translations.SHARED.ROOMS}
{ setRoomState( range(0, value).map( (roomIndex) => currentRooms[roomIndex] ?? { adults: 2, children: 0, childAges: [] } ) ); setIsTouched(true); }} />
{currentRooms.map((room, roomIndex) => (

{translations.SHARED.ROOM + ' ' + (roomIndex + 1)}

{ setRoomState(currentRooms.map((room, i) => (i === roomIndex ? { ...room, adults: value } : room))); setIsTouched(true); }} /> { setRoomState( currentRooms.map((room, i) => i === roomIndex ? { ...room, children: value, childAges: range(0, value).map((childIndex) => room.childAges[childIndex] ?? 0) } : room ) ); setIsTouched(true); }} />
{room.children > 0 && (
{range(0, room.children).map((childIndex) => ( { setRoomState( currentRooms.map((room, selectorRoomIndex) => roomIndex === selectorRoomIndex ? { ...room, childAges: room.childAges.map((age, i) => (childIndex === i ? value : age)).sort((a, b) => b - a) } : room ) ); setIsTouched(true); }} /> ))}
)}
))}
{isDisabled ? ( ) : ( )}
); }; export default Rooms;