@roomstay/frontend 2.8.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/177.bundle.js +1 -1
- package/dist/279.bundle.js +1 -1
- package/dist/288.bundle.js +1 -1
- package/dist/370.bundle.js +1 -1
- package/dist/449.bundle.js +1 -1
- package/dist/537.bundle.js +1 -1
- package/dist/596.bundle.js +1 -0
- package/dist/625.bundle.js +1 -1
- package/dist/686.bundle.js +1 -1
- package/dist/836.bundle.js +1 -1
- package/dist/978.bundle.js +1 -1
- package/dist/main.bundle.js +1 -1
- package/dist/src/api/AvailabilityAPI.d.ts +2 -4
- package/dist/src/api/AvailabilityAPI.js.map +1 -1
- package/dist/src/components/generic/Alert.d.ts +7 -1
- package/dist/src/components/generic/Alert.js +6 -0
- package/dist/src/components/generic/Alert.js.map +1 -1
- package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.d.ts +11 -0
- package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.js +24 -0
- package/dist/src/components/generic/AuxiliaryFilterControls/AuxiliaryFilterControls.js.map +1 -0
- package/dist/src/components/generic/RecentSearchesCard.js +4 -2
- package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
- package/dist/src/components/generic/date/DatePicker.d.ts +5 -0
- package/dist/src/components/generic/date/DatePicker.js +2 -1
- package/dist/src/components/generic/date/DatePicker.js.map +1 -1
- package/dist/src/components/reservation/ReservationItem.js +3 -2
- package/dist/src/components/reservation/ReservationItem.js.map +1 -1
- package/dist/src/components/steps/DaysSelectedInformer.js +6 -4
- package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
- package/dist/src/components/steps/confirmation/RoomContactDetails.js +14 -12
- package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
- package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +8 -6
- package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
- package/dist/src/components/steps/date/StepOneDateRange.js +5 -3
- package/dist/src/components/steps/date/StepOneDateRange.js.map +1 -1
- package/dist/src/components/steps/date/StepOneDateRangePicker.d.ts +2 -1
- package/dist/src/components/steps/date/StepOneDateRangePicker.js +3 -3
- package/dist/src/components/steps/date/StepOneDateRangePicker.js.map +1 -1
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +55 -58
- package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +4 -3
- package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +4 -3
- package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.d.ts +17 -0
- package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.js +117 -0
- package/dist/src/components/steps/room/roomDetails/AuxiliaryPickerModal/AuxiliaryPickerModal.js.map +1 -0
- package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js +9 -2
- package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +1 -4
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +0 -1
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +2 -11
- package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummary.js +3 -2
- package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
- package/dist/src/components/summary/BEMobileSummaryModal.js +3 -2
- package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
- package/dist/src/components/summary/BESummaryAddonRow.js +2 -1
- package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
- package/dist/src/components/summary/BESummaryRoomRow.js +3 -2
- package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextType.d.ts +2 -1
- package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js +9 -4
- package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.d.ts +14 -5
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextType.types.js.map +1 -1
- package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
- package/dist/src/contexts/HotelOverridesContext.js +4 -0
- package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
- package/dist/src/hooks/AutoFocusOnSelect.d.ts +11 -1
- package/dist/src/hooks/AutoFocusOnSelect.js +7 -7
- package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
- package/dist/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/useAreaAvailability.d.ts +10 -1
- package/dist/src/hooks/useAreaAvailability.js +67 -30
- package/dist/src/hooks/useAreaAvailability.js.map +1 -1
- package/dist/src/hooks/useAuxiliaryFilters.d.ts +8 -0
- package/dist/src/hooks/useAuxiliaryFilters.js +55 -0
- package/dist/src/hooks/useAuxiliaryFilters.js.map +1 -0
- package/dist/src/hooks/useGuestDateFormat.d.ts +11 -0
- package/dist/src/hooks/useGuestDateFormat.js +22 -0
- package/dist/src/hooks/useGuestDateFormat.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
- package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
- package/dist/src/models/BasketRow.d.ts +6 -11
- package/dist/src/models/BasketRow.js +4 -4
- package/dist/src/models/BasketRow.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRow.js +3 -2
- package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
- package/dist/src/pages/findReservation/ReservationRowModal.js +5 -4
- package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
- package/dist/src/pages/steps/StepDate/StepDateComponent.js +13 -7
- package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
- package/dist/src/providers/RoomstayThemeEngine.js +2 -0
- package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
- package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.d.ts +13 -1
- package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.js +20 -0
- package/dist/src/providers/feature/StepDateNextButtonAboveDatepickerFeature.js.map +1 -1
- package/dist/src/translations/Translation.d.ts +12 -0
- package/dist/src/translations/Translation.js +12 -0
- package/dist/src/translations/Translation.js.map +1 -1
- package/dist/src/translations/languages/en-gb.js +12 -0
- package/dist/src/translations/languages/en-gb.js.map +1 -1
- package/dist/test.bundle.js +1 -1
- package/dist/vendors.bundle.js +1 -1
- package/package.json +2 -2
- package/dist/422.bundle.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomContactDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/RoomContactDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelStateFieldConfiguration, IAuxiliaryFilter, nameof } from '@roomstay/core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport React, { FC, useContext, useEffect, useState } from 'react';\nimport { Control, Controller, FieldError, useFieldArray, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Checkbox from '@/components/generic/Checkbox/Checkbox';\nimport EnhancedPhoneNumberField from '@/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport { InputSelect } from '@/components/generic/Select';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport StepConfirmationCountrySelector from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { EHotelAddressRequirement, Hotel } from '@/models/Client/Hotel/Hotel';\nimport { ConfirmationFormValues, EUserProfileFormKey, EUserRequiredInputFormKey, TUserProfileFormValues } from '@/models/Confirmation';\nimport E164PhoneNumberFieldFeature from '@/providers/feature/E164PhoneNumberFieldFeature';\nimport GuestTitleFieldFeature from '@/providers/feature/GuestTitleFieldFeature';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport StringHelper from '@/util/StringHelper';\nimport { EMAIL_REGEX } from '@/util/Validation';\n\ntype AuxiliaryFilterOption = {\n value: string;\n label: string;\n};\n\ntype AuxiliaryFilterSelect = {\n id: string;\n name: string;\n label: string;\n options: AuxiliaryFilterOption[];\n order: number;\n};\n\nconst RoomContactDetails: FC = () => {\n const { register, formState, control, watch, getValues, setValue } = useFormContext<ConfirmationFormValues>();\n const basketContext = useContext(BasketContext);\n const basketRows = basketContext.getAllValidRows();\n const { hotel } = useCurrentHotel();\n\n const isAddressRequired = hotel?.addressRequirement === EHotelAddressRequirement.FullAddressRequired;\n const isCountryRequired =\n hotel?.addressRequirement === EHotelAddressRequirement.FullAddressRequired || hotel?.addressRequirement === EHotelAddressRequirement.AddressOptionalCountryRequired;\n\n const addressPlaceholder = (placeholder: string, required: boolean): string => placeholder + (required ? ' *' : '');\n\n const { update, fields } = useFieldArray({\n control,\n name: 'userProfiles',\n rules: {\n required: false,\n },\n });\n const [copyCheckBox, paymentMethod] = watch(['copyCheckBox', 'paymentMethod']);\n\n const errors = formState.errors;\n\n const { t } = useTranslation();\n const { roomstayMember: member } = useContext(RoomstayMemberContext);\n const { showChildren } = useSearchScopeHook();\n\n useEffect(() => {\n errors.userProfiles?.forEach?.((_, index) => {\n if (errors.userProfiles?.[index]) {\n opens[index] = true;\n }\n });\n setOpens(opens.slice(0));\n }, [errors.userProfiles, copyCheckBox]);\n\n useEffect(() => {\n const getDefaultValue = (index: number, potentialDefaultValue = '') => {\n return index === 0 ? potentialDefaultValue : '';\n };\n\n const userProfiles = basketRows.map((basketRow, index) => {\n const defaults = basketRow.checkoutDefaults;\n const addr = defaults?.address;\n\n return {\n [EUserProfileFormKey.Title]: '', // TODO: Add this to @roomstay/core IRoomstayMember?\n [EUserProfileFormKey.Forename]: getDefaultValue(index, defaults?.firstName ?? member?.forename),\n [EUserProfileFormKey.Surname]: getDefaultValue(index, defaults?.lastName ?? member?.surname),\n [EUserProfileFormKey.Email]: getDefaultValue(index, defaults?.email ?? member?.email),\n [EUserProfileFormKey.Phone]: getDefaultValue(index, defaults?.phone ?? member?.phoneNumber),\n [EUserProfileFormKey.Address]: getDefaultValue(index, addr?.line1 ?? member?.address?.address),\n [EUserProfileFormKey.City]: getDefaultValue(index, addr?.city ?? member?.address?.city),\n [EUserProfileFormKey.PostCode]: getDefaultValue(index, addr?.postalCode ?? member?.address?.zip),\n [EUserProfileFormKey.State]: getDefaultValue(index, addr?.state ?? member?.address?.state),\n [EUserProfileFormKey.Country]: getDefaultValue(index, addr?.country ?? member?.address?.country),\n [EUserProfileFormKey.CountryId]: getDefaultValue(index, addr?.countryId?.toString()),\n [EUserProfileFormKey.CountryCode]: getDefaultValue(index, addr?.countryCode),\n [EUserRequiredInputFormKey.AuxInputs]: basketRow.auxiliaryFilter,\n };\n });\n setValue('userProfiles', userProfiles);\n setValue('copyCheckBox', !!(basketRows?.length && basketRows.length > 1));\n }, [member, basketRows?.length]);\n\n const padInputNameByRoomNumber = (name: EUserProfileFormKey, index: number) => `userProfiles.${index}.${name}` as const;\n\n const [opens, setOpens] = useState<boolean[]>(basketRows.map((basketRow, index) => index === 0));\n\n const copyUserProfileFormFields = (currentIndex: number) => {\n const values = cloneDeep(getValues(`userProfiles.0`));\n const currentValues = cloneDeep(getValues(`userProfiles.${currentIndex}`));\n\n // Exclude AuxInputs\n values[EUserRequiredInputFormKey.AuxInputs] = currentValues.AuxInputs;\n\n // Exclude Child Ages\n values.CaptureChildAge = currentValues.CaptureChildAge;\n\n return values;\n };\n\n const onInputChange =\n (fieldName: string, interactionName: string) =>\n (event: any): void => {\n DataLayer.instance.sendInteraction(interactionName, InteractionType.FORM_FIELD, InteractionStep.GUEST_DETAILS);\n };\n\n useEffect(() => {\n if (copyCheckBox)\n fields.forEach((basketRow, index) => {\n if (index === 0) return;\n const values = copyUserProfileFormFields(index);\n update(index, values);\n });\n }, [copyCheckBox]);\n\n useEffect(() => {\n const { unsubscribe } = watch((allFields, { name, type }) => {\n if (type === 'change' && name?.includes('userProfiles') && name.split('.')[1] === '0' && allFields.copyCheckBox) {\n fields.map((field, index) => {\n if (index === 0) return;\n const values = copyUserProfileFormFields(index);\n update(index, values);\n });\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [fields]);\n\n const setOpenByIndex = (index: number, value: boolean) => {\n opens.splice(index, 1, value);\n setOpens(opens.slice(0));\n };\n\n const renderError = (userProfileIndex: number): JSX.Element[] | null => {\n const userProfile = errors.userProfiles?.[userProfileIndex];\n\n if (userProfile && formState.submitCount >= 1 && (userProfileIndex === 0 || !copyCheckBox))\n return Object.values(userProfile).map((error, errorIndex) => {\n return (\n <AutoAutoHeight key={errorIndex} open>\n <div className=\"u-flex\">\n <Alert icon={IconType.Error} type={AlertType.Danger} noMargin={errorIndex === Object.keys(userProfile).length - 1}>\n <Text type={TextType.Small}>{(error as FieldError)?.message}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n });\n\n return null;\n };\n\n return (\n <>\n {fields.map((field, index) => {\n const padInputName = (name: EUserProfileFormKey) => padInputNameByRoomNumber(name, index);\n const getValidationClass = (name: EUserProfileFormKey) => {\n if (!errors.userProfiles || (copyCheckBox && index >= 1)) return;\n if (errors.userProfiles[index]?.[name]) {\n return 'error';\n // Hack to get Aux Inputs to validate as well.\n } else if (errors.userProfiles[index]?.AuxInputs?.[name.replace('AuxInputs.', '')]) {\n return 'error';\n } else {\n return 'success';\n }\n };\n\n const openExpandable = () => {\n if (index !== 0) {\n setOpenByIndex(index, !opens[index]);\n }\n };\n\n const basketRow = basketRows[index];\n const currentRoom = basketRow.getRoom();\n const filterValue = basketRow.getAuxiliaryFilter();\n\n const isDisabled = (copyCheckBox && index >= 1) || paymentMethod === EBookingPaymentMethod.Planpay;\n\n const includeStateField =\n hotel?.stateFieldConfiguration === EHotelStateFieldConfiguration.Optional || hotel?.stateFieldConfiguration === EHotelStateFieldConfiguration.Required;\n const stateFieldRequired = hotel?.stateFieldConfiguration === EHotelStateFieldConfiguration.Required;\n\n // Build list of auxiliary inputs the user is required to complete\n const roomGroup = hotel?.roomGroups?.find(({ id }) => id === currentRoom.roomGroupId);\n const requiredInputs: AuxiliaryFilterSelect[] = [];\n\n for (const [inputKey, input] of Object.entries(roomGroup?.filters ?? {})) {\n const values = currentRoom?.auxiliaryValues?.[inputKey]?.map((value) => value.toString());\n\n if (input?.requireInput && values) {\n // Reduce available options to those assigned to the room\n const options = input.options.filter((option) => {\n if (values.includes(option.value.toString())) {\n return option;\n }\n });\n\n const requiredInputId = `${nameof<TUserProfileFormValues>('AuxInputs')}.${inputKey}`;\n\n if (options.length === 1) {\n setValue(padInputName(requiredInputId as any), options[0].value as never);\n } else if (filterValue?.[inputKey]) {\n setValue(padInputName(requiredInputId as any), filterValue[inputKey] as never);\n }\n\n // Convert options to format acceptable by the input\n const auxiliaryFilterOption = options\n .map((option: IAuxiliaryFilter['options'][0]) => {\n return { label: option.label, value: `${option.value}`, order: option.order ?? 0 };\n })\n .sort((a, b) => a.order - b.order);\n\n if (auxiliaryFilterOption.length > 0) {\n // Only add to requiredInputs if there are available options to display\n requiredInputs.push({\n id: requiredInputId,\n name: input.name,\n label: input.name,\n options: auxiliaryFilterOption,\n order: input.order ?? 0,\n });\n }\n }\n }\n\n // The Country input field will be included in different places, depending on whether the State field is enabled or not.\n const countryInputField = (\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Country)}\n rules={{\n required: {\n value: isCountryRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Country) }),\n },\n }}\n render={({ field }) => {\n const { ref, onChange, ...rest } = field;\n return (\n <StepConfirmationCountrySelector\n ref={ref}\n disableOpenOnFocus\n disabled={isDisabled}\n validationStatus={getValidationClass(EUserProfileFormKey.Country)}\n onChange={(e) => {\n onChange(e);\n onInputChange(padInputName(EUserProfileFormKey.Country), 'Country - Address')(e);\n }}\n onChangeId={(id) => {\n setValue(padInputName(EUserProfileFormKey.CountryId), id as never); // Hack to make CountryID be set...\n }}\n onChangeCode={(code) => {\n setValue(padInputName(EUserProfileFormKey.CountryCode), code as never); // Hack to make CountryID be set...\n }}\n required={isCountryRequired}\n {...rest}\n />\n );\n }}\n />\n );\n\n return (\n <div key={field.id} className=\"rs-checkout-contact-details\">\n <div className={index === 0 ? '' : 'u-marg-bottom--heavy'}>\n <div className=\"u-marg-bottom\" onClick={openExpandable}>\n <div className=\"u-flex u-marg-bottom align-items-center\">\n <Headline bold>\n {t(Translation.Misc.Room)} {index + 1}\n </Headline>\n {index !== 0 && <Icon icon={opens[index] ? IconType.ArrowDown2 : IconType.ArrowUp2} color={Color.Grey} />}\n </div>\n {basketRow && (\n <div className=\"u-marg-bottom\">\n <Text>\n <strong className=\"u-block@l-\">{basketRow.getRoom().name}</strong> for{' '}\n {StringHelper.pluralWithDictAndCount(basketRow.getAdults(), Translation.Step.Date.Adult, t)}\n {showChildren ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(basketRow.getChildren(), Translation.Step.Date.Child, t)}\n </>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(basketRow.getInfants(), Translation.Step.Date.Infant, t)}\n </>\n ) : null}\n </Text>\n <div className=\"step-one-status--dates u-flex justify-content-start\">\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{basketRow.getStartDate().format('ddd, MMM D')}</strong>\n </Text>\n <Icon icon={IconType.ArrowRight2} size=\"18px\" />\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{basketRow.getEndDate().format('ddd, MMM D')}</strong>\n </Text>\n </div>\n </div>\n )}\n {renderError(index)}\n </div>\n <div className=\"room-contact-details--row\" style={{ maxHeight: opens[index] ? undefined : 0 }}>\n <div className=\"u-marg-bottom--heavy rs-checkout-contact-info\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.ContactInfo)}</strong>\n </Text>\n </div>\n\n <InputGroup dimensions={GuestTitleFieldFeature.isActive() ? '1/2/2' : '2/2'}>\n {GuestTitleFieldFeature.isActive() && (\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Title)}\n rules={{ required: true }}\n render={({ field }) => {\n const { ref, ...rest } = field;\n\n return (\n <InputSelect\n keyName=\"value\"\n labelName=\"label\"\n options={GuestTitleFieldFeature.getTitleOptions()}\n placeholder={t(Translation.Step.Confirmation.Inputs.Title) + ' *'}\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Title)}\n {...rest}\n />\n );\n }}\n />\n )}\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Forename) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Forename)}\n {...register(padInputName(EUserProfileFormKey.Forename), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Forename), 'Forename - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Forename) }),\n },\n })}\n />\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Surname) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Surname)}\n {...register(padInputName(EUserProfileFormKey.Surname), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Surname), 'Surname - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Surname) }),\n },\n })}\n />\n </InputGroup>\n\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Email) + ' *'}\n wide\n validationStatus={getValidationClass(EUserProfileFormKey.Email)}\n required\n {...register(padInputName(EUserProfileFormKey.Email), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Email), 'Email - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Email) }),\n },\n pattern: {\n value: EMAIL_REGEX,\n message: t(Translation.Step.Confirmation.Inputs.InvalidEmail),\n },\n })}\n />\n {E164PhoneNumberFieldFeature.isActive() ? (\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Phone)}\n rules={{\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Phone) }),\n },\n minLength: {\n value: 5,\n message: 'Phone number is required',\n },\n maxLength: {\n value: 17,\n message: 'Phone number is too long',\n },\n pattern: {\n value: /^[1-9]( |\\d){1,15}$/g,\n message: 'Incorrect phone number entered',\n },\n }}\n render={({ field }) => {\n return (\n <EnhancedPhoneNumberField\n disabled={isDisabled}\n validationStatus={getValidationClass(EUserProfileFormKey.Phone)}\n {...field}\n onChange={(e: any) => {\n field.onChange(e);\n onInputChange(padInputName(EUserProfileFormKey.Phone), 'Phone - Contact Info')(e);\n }}\n />\n );\n }}\n />\n ) : (\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Phone) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Phone)}\n {...register(padInputName(EUserProfileFormKey.Phone), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Phone), 'Phone - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Phone) }),\n },\n })}\n />\n )}\n </InputGroup>\n </div>\n <div className=\"rs-checkout-contact-info-address\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Address)}</strong>\n </Text>\n </div>\n\n <InputGroup dimensions=\"3/1\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={addressPlaceholder(t(Translation.Step.Confirmation.Inputs.Address), isAddressRequired)}\n wide\n required={isAddressRequired}\n validationStatus={getValidationClass(EUserProfileFormKey.Address)}\n {...register(padInputName(EUserProfileFormKey.Address), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Address), 'Address - Address'),\n required: {\n value: isAddressRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Address) }),\n },\n })}\n />\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={addressPlaceholder(t(Translation.Step.Confirmation.Inputs.City), isAddressRequired)}\n wide\n required={isAddressRequired}\n validationStatus={getValidationClass(EUserProfileFormKey.City)}\n {...register(padInputName(EUserProfileFormKey.City), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.City), 'City - Address'),\n required: {\n value: isAddressRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.City) }),\n },\n })}\n />\n </InputGroup>\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={addressPlaceholder(t(Translation.Step.Confirmation.Inputs.PostCode), isAddressRequired)}\n wide\n required={isAddressRequired}\n validationStatus={getValidationClass(EUserProfileFormKey.PostCode)}\n {...register(padInputName(EUserProfileFormKey.PostCode), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.PostCode), 'PostCode - Address'),\n required: {\n value: isAddressRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.PostCode) }),\n },\n })}\n />\n\n {includeStateField ? (\n // Render the State field here if it's required, otherwise render the Country field\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.State) + (stateFieldRequired ? ' *' : '')}\n wide\n required={stateFieldRequired}\n validationStatus={getValidationClass(EUserProfileFormKey.State)}\n {...register(padInputName(EUserProfileFormKey.State), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.State), 'State - Address'),\n required: {\n value: stateFieldRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.State) }),\n },\n })}\n />\n ) : (\n countryInputField\n )}\n </InputGroup>\n\n {includeStateField && <InputGroup dimensions=\"1\">{countryInputField}</InputGroup>}\n </div>\n </div>\n {requiredInputs.length > 0 && (\n <div className=\"rs-checkout-required-inputs u-marg-top\">\n <div className=\"u-marg-top\">\n <InputGroup dimensions=\"2/2\">\n {requiredInputs.map((input: AuxiliaryFilterSelect) => {\n return (\n <Controller\n key={input.id}\n control={control}\n name={padInputName(input.id as any)}\n rules={{ required: true }}\n render={({ field }) => {\n const { ref, ...rest } = field;\n\n return (\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{input.name}</strong>\n </Text>\n </div>\n <InputSelect\n key={input.id}\n keyName={nameof<AuxiliaryFilterOption>('value')}\n labelName={nameof<AuxiliaryFilterOption>('label')}\n options={input.options}\n placeholder=\"Please Select *\"\n validationStatus={getValidationClass(input.id as any)}\n {...rest}\n />\n </>\n );\n }}\n />\n );\n })}\n </InputGroup>\n </div>\n </div>\n )}\n\n <CaptureChildAges hotel={hotel} numberOfChildrens={Number(basketRow.getChildren())} control={control} roomIndex={index} />\n </div>\n {fields.length > 1 && index === 0 ? (\n <div className=\"u-marg-bottom--heavy\">\n <Checkbox label={t(Translation.Step.Confirmation.ApplySameInfoToOtherRooms)} {...register('copyCheckBox')} />\n </div>\n ) : null}\n </div>\n );\n })}\n </>\n );\n};\n\nfunction chunkArray<T>(array: T[], chunkSize: number): T[][] {\n const result: T[][] = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n return result;\n}\n\nconst CaptureChildAges = ({\n hotel,\n numberOfChildrens,\n control,\n roomIndex,\n}: {\n hotel: Hotel | undefined;\n numberOfChildrens: number;\n control: Control<ConfirmationFormValues, any>;\n roomIndex: number;\n}) => {\n if (!hotel?.captureChildAge || numberOfChildrens === 0) {\n return <></>;\n }\n const {\n formState: { errors },\n } = useFormContext<ConfirmationFormValues>();\n const ageOptions: { label: string; value: string }[] = [];\n const min = hotel?.childConfiguration?.childRange?.min || 0;\n const max = hotel?.childConfiguration?.childRange?.max || 0;\n for (let index = min; index <= max; index++) {\n ageOptions.push({ label: `${index}`, value: `${index}` });\n }\n const rootKey = `userProfiles[${roomIndex}].${nameof<TUserProfileFormValues>('CaptureChildAge')}`;\n const requiredInputs = Array.from({ length: numberOfChildrens }, (_, childIndex) => childIndex).map((childIndex) => ({\n name: `${rootKey}[${childIndex}]`,\n id: `${rootKey}[${childIndex}].id`,\n label: `Child ${childIndex + 1} Age`,\n childIndex: childIndex,\n }));\n const getValidationClass = (childIndex: number) => {\n if (!errors.userProfiles) return;\n if (errors.userProfiles?.[roomIndex]?.CaptureChildAge?.[childIndex]) {\n return 'error';\n } else {\n return 'success';\n }\n };\n const chunkInputs = chunkArray(requiredInputs, 3);\n\n return (\n <div className=\"u-marg-top\">\n {chunkInputs.map((chunkInput, chunkIndex) => {\n return (\n <InputGroup dimensions=\"1/1/1\" key={`InputGroup-${chunkIndex}`}>\n {chunkInput.map(({ id, name, label, childIndex }) => {\n return (\n <Controller\n key={id}\n control={control}\n name={name as any}\n rules={{ required: true }}\n render={({ field }) => {\n const { ref, ...rest } = field;\n return (\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{label}</strong>\n </Text>\n </div>\n <InputSelect\n keyName=\"value\"\n labelName=\"label\"\n options={ageOptions}\n placeholder=\"Please Select *\"\n {...rest}\n validationStatus={getValidationClass(childIndex)}\n />\n </>\n );\n }}\n />\n );\n })}\n </InputGroup>\n );\n })}\n </div>\n );\n};\nexport default RoomContactDetails;\n"]}
|
|
1
|
+
{"version":3,"file":"RoomContactDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/RoomContactDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel, useGuestDateFormat } from '@frontend/hooks';\nimport { EBookingPaymentMethod, EHotelStateFieldConfiguration, IAuxiliaryFilter, nameof } from '@roomstay/core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport React, { FC, useContext, useEffect, useState } from 'react';\nimport { Control, Controller, FieldError, useFieldArray, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Checkbox from '@/components/generic/Checkbox/Checkbox';\nimport EnhancedPhoneNumberField from '@/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport { InputSelect } from '@/components/generic/Select';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport StepConfirmationCountrySelector from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { EHotelAddressRequirement, Hotel } from '@/models/Client/Hotel/Hotel';\nimport { ConfirmationFormValues, EUserProfileFormKey, EUserRequiredInputFormKey, TUserProfileFormValues } from '@/models/Confirmation';\nimport E164PhoneNumberFieldFeature from '@/providers/feature/E164PhoneNumberFieldFeature';\nimport GuestTitleFieldFeature from '@/providers/feature/GuestTitleFieldFeature';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport StringHelper from '@/util/StringHelper';\nimport { EMAIL_REGEX } from '@/util/Validation';\n\ntype AuxiliaryFilterOption = {\n value: string;\n label: string;\n};\n\ntype AuxiliaryFilterSelect = {\n id: string;\n name: string;\n label: string;\n options: AuxiliaryFilterOption[];\n order: number;\n};\n\nconst RoomContactDetails: FC = () => {\n const { register, formState, control, watch, getValues, setValue } = useFormContext<ConfirmationFormValues>();\n const basketContext = useContext(BasketContext);\n const basketRows = basketContext.getAllValidRows();\n const { hotel } = useCurrentHotel();\n const { formatGuestDate } = useGuestDateFormat();\n\n const isAddressRequired = hotel?.addressRequirement === EHotelAddressRequirement.FullAddressRequired;\n const isCountryRequired =\n hotel?.addressRequirement === EHotelAddressRequirement.FullAddressRequired || hotel?.addressRequirement === EHotelAddressRequirement.AddressOptionalCountryRequired;\n\n const addressPlaceholder = (placeholder: string, required: boolean): string => placeholder + (required ? ' *' : '');\n\n const { update, fields } = useFieldArray({\n control,\n name: 'userProfiles',\n rules: {\n required: false,\n },\n });\n const [copyCheckBox, paymentMethod] = watch(['copyCheckBox', 'paymentMethod']);\n\n const errors = formState.errors;\n\n const { t } = useTranslation();\n const { roomstayMember: member } = useContext(RoomstayMemberContext);\n const { showChildren } = useSearchScopeHook();\n\n useEffect(() => {\n errors.userProfiles?.forEach?.((_, index) => {\n if (errors.userProfiles?.[index]) {\n opens[index] = true;\n }\n });\n setOpens(opens.slice(0));\n }, [errors.userProfiles, copyCheckBox]);\n\n useEffect(() => {\n const getDefaultValue = (index: number, potentialDefaultValue = '') => {\n return index === 0 ? potentialDefaultValue : '';\n };\n\n const userProfiles = basketRows.map((basketRow, index) => {\n const defaults = basketRow.checkoutDefaults;\n const addr = defaults?.address;\n\n return {\n [EUserProfileFormKey.Title]: '', // TODO: Add this to @roomstay/core IRoomstayMember?\n [EUserProfileFormKey.Forename]: getDefaultValue(index, defaults?.firstName ?? member?.forename),\n [EUserProfileFormKey.Surname]: getDefaultValue(index, defaults?.lastName ?? member?.surname),\n [EUserProfileFormKey.Email]: getDefaultValue(index, defaults?.email ?? member?.email),\n [EUserProfileFormKey.Phone]: getDefaultValue(index, defaults?.phone ?? member?.phoneNumber),\n [EUserProfileFormKey.Address]: getDefaultValue(index, addr?.line1 ?? member?.address?.address),\n [EUserProfileFormKey.City]: getDefaultValue(index, addr?.city ?? member?.address?.city),\n [EUserProfileFormKey.PostCode]: getDefaultValue(index, addr?.postalCode ?? member?.address?.zip),\n [EUserProfileFormKey.State]: getDefaultValue(index, addr?.state ?? member?.address?.state),\n [EUserProfileFormKey.Country]: getDefaultValue(index, addr?.country ?? member?.address?.country),\n [EUserProfileFormKey.CountryId]: getDefaultValue(index, addr?.countryId?.toString()),\n [EUserProfileFormKey.CountryCode]: getDefaultValue(index, addr?.countryCode),\n [EUserRequiredInputFormKey.AuxInputs]: basketRow.auxiliaryFilter,\n };\n });\n setValue('userProfiles', userProfiles);\n setValue('copyCheckBox', !!(basketRows?.length && basketRows.length > 1));\n }, [member, basketRows?.length]);\n\n const padInputNameByRoomNumber = (name: EUserProfileFormKey, index: number) => `userProfiles.${index}.${name}` as const;\n\n const [opens, setOpens] = useState<boolean[]>(basketRows.map((basketRow, index) => index === 0));\n\n const copyUserProfileFormFields = (currentIndex: number) => {\n const values = cloneDeep(getValues(`userProfiles.0`));\n const currentValues = cloneDeep(getValues(`userProfiles.${currentIndex}`));\n\n // Exclude AuxInputs\n values[EUserRequiredInputFormKey.AuxInputs] = currentValues.AuxInputs;\n\n // Exclude Child Ages\n values.CaptureChildAge = currentValues.CaptureChildAge;\n\n return values;\n };\n\n const onInputChange =\n (fieldName: string, interactionName: string) =>\n (event: any): void => {\n DataLayer.instance.sendInteraction(interactionName, InteractionType.FORM_FIELD, InteractionStep.GUEST_DETAILS);\n };\n\n useEffect(() => {\n if (copyCheckBox)\n fields.forEach((basketRow, index) => {\n if (index === 0) return;\n const values = copyUserProfileFormFields(index);\n update(index, values);\n });\n }, [copyCheckBox]);\n\n useEffect(() => {\n const { unsubscribe } = watch((allFields, { name, type }) => {\n if (type === 'change' && name?.includes('userProfiles') && name.split('.')[1] === '0' && allFields.copyCheckBox) {\n fields.map((field, index) => {\n if (index === 0) return;\n const values = copyUserProfileFormFields(index);\n update(index, values);\n });\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [fields]);\n\n const setOpenByIndex = (index: number, value: boolean) => {\n opens.splice(index, 1, value);\n setOpens(opens.slice(0));\n };\n\n const renderError = (userProfileIndex: number): JSX.Element[] | null => {\n const userProfile = errors.userProfiles?.[userProfileIndex];\n\n if (userProfile && formState.submitCount >= 1 && (userProfileIndex === 0 || !copyCheckBox))\n return Object.values(userProfile).map((error, errorIndex) => {\n return (\n <AutoAutoHeight key={errorIndex} open>\n <div className=\"u-flex\">\n <Alert icon={IconType.Error} type={AlertType.Danger} noMargin={errorIndex === Object.keys(userProfile).length - 1}>\n <Text type={TextType.Small}>{(error as FieldError)?.message}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n });\n\n return null;\n };\n\n return (\n <>\n {fields.map((field, index) => {\n const padInputName = (name: EUserProfileFormKey) => padInputNameByRoomNumber(name, index);\n const getValidationClass = (name: EUserProfileFormKey) => {\n if (!errors.userProfiles || (copyCheckBox && index >= 1)) return;\n if (errors.userProfiles[index]?.[name]) {\n return 'error';\n // Hack to get Aux Inputs to validate as well.\n } else if (errors.userProfiles[index]?.AuxInputs?.[name.replace('AuxInputs.', '')]) {\n return 'error';\n } else {\n return 'success';\n }\n };\n\n const openExpandable = () => {\n if (index !== 0) {\n setOpenByIndex(index, !opens[index]);\n }\n };\n const latestBasketRows = basketContext.getAllValidRows();\n const basketRow = latestBasketRows[index];\n const currentRoom = basketRow.getRoom();\n const filterValue = basketRow.getAuxiliaryFilter();\n\n const isDisabled = (copyCheckBox && index >= 1) || paymentMethod === EBookingPaymentMethod.Planpay;\n\n const includeStateField =\n hotel?.stateFieldConfiguration === EHotelStateFieldConfiguration.Optional || hotel?.stateFieldConfiguration === EHotelStateFieldConfiguration.Required;\n const stateFieldRequired = hotel?.stateFieldConfiguration === EHotelStateFieldConfiguration.Required;\n\n // Build list of auxiliary inputs the user is required to complete\n const roomGroup = hotel?.roomGroups?.find(({ id }) => id === currentRoom.roomGroupId);\n const requiredAuxiliaryInputs: (AuxiliaryFilterSelect & {\n defaultValue?: string | number;\n })[] = [];\n\n for (const [inputKey, input] of Object.entries(roomGroup?.filters ?? {})) {\n const values = currentRoom?.auxiliaryValues?.[inputKey]?.map((value) => value.toString());\n let defaultAuxiliaryFilterSelect = filterValue?.[inputKey];\n if (input?.requireInput && values) {\n // Reduce available options to those assigned to the room\n const options = input.options.filter((option) => {\n if (values.includes(option.value.toString())) {\n return option;\n }\n });\n\n const requiredInputId = `${nameof<TUserProfileFormValues>('AuxInputs')}.${inputKey}`;\n\n if (options.length === 1) {\n defaultAuxiliaryFilterSelect = options[0].value;\n }\n // Convert options to format acceptable by the input\n const auxiliaryFilterOption = options\n .map((option: IAuxiliaryFilter['options'][0]) => {\n return { label: option.label, value: `${option.value}`, order: option.order ?? 0 };\n })\n .sort((a, b) => a.order - b.order);\n\n if (auxiliaryFilterOption.length > 0) {\n // Only add to requiredInputs if there are available options to display\n requiredAuxiliaryInputs.push({\n id: requiredInputId,\n name: input.name,\n label: input.name,\n options: auxiliaryFilterOption,\n order: input.order ?? 0,\n defaultValue: defaultAuxiliaryFilterSelect,\n });\n }\n }\n }\n\n // The Country input field will be included in different places, depending on whether the State field is enabled or not.\n const countryInputField = (\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Country)}\n rules={{\n required: {\n value: isCountryRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Country) }),\n },\n }}\n render={({ field }) => {\n const { ref, onChange, ...rest } = field;\n return (\n <StepConfirmationCountrySelector\n ref={ref}\n disableOpenOnFocus\n disabled={isDisabled}\n validationStatus={getValidationClass(EUserProfileFormKey.Country)}\n onChange={(e) => {\n onChange(e);\n onInputChange(padInputName(EUserProfileFormKey.Country), 'Country - Address')(e);\n }}\n onChangeId={(id) => {\n setValue(padInputName(EUserProfileFormKey.CountryId), id as never); // Hack to make CountryID be set...\n }}\n onChangeCode={(code) => {\n setValue(padInputName(EUserProfileFormKey.CountryCode), code as never); // Hack to make CountryID be set...\n }}\n required={isCountryRequired}\n {...rest}\n />\n );\n }}\n />\n );\n\n return (\n <div key={field.id} className=\"rs-checkout-contact-details\">\n <div className={index === 0 ? '' : 'u-marg-bottom--heavy'}>\n <div className=\"u-marg-bottom\" onClick={openExpandable}>\n <div className=\"u-flex u-marg-bottom align-items-center\">\n <Headline bold>\n {t(Translation.Misc.Room)} {index + 1}\n </Headline>\n {index !== 0 && <Icon icon={opens[index] ? IconType.ArrowDown2 : IconType.ArrowUp2} color={Color.Grey} />}\n </div>\n {basketRow && (\n <div className=\"u-marg-bottom\">\n <Text>\n <strong className=\"u-block@l-\">{basketRow.getRoom().name}</strong> for{' '}\n {StringHelper.pluralWithDictAndCount(basketRow.getAdults(), Translation.Step.Date.Adult, t)}\n {showChildren ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(basketRow.getChildren(), Translation.Step.Date.Child, t)}\n </>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <>\n , \n {StringHelper.pluralWithDictAndCount(basketRow.getInfants(), Translation.Step.Date.Infant, t)}\n </>\n ) : null}\n </Text>\n <div className=\"step-one-status--dates u-flex justify-content-start\">\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{formatGuestDate(basketRow.getStartDate())}</strong>\n </Text>\n <Icon icon={IconType.ArrowRight2} size=\"18px\" />\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{formatGuestDate(basketRow.getEndDate())}</strong>\n </Text>\n </div>\n </div>\n )}\n {renderError(index)}\n </div>\n <div className=\"room-contact-details--row\" style={{ maxHeight: opens[index] ? undefined : 0 }}>\n <div className=\"u-marg-bottom--heavy rs-checkout-contact-info\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.ContactInfo)}</strong>\n </Text>\n </div>\n\n <InputGroup dimensions={GuestTitleFieldFeature.isActive() ? '1/2/2' : '2/2'}>\n {GuestTitleFieldFeature.isActive() && (\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Title)}\n rules={{ required: true }}\n render={({ field }) => {\n const { ref, ...rest } = field;\n\n return (\n <InputSelect\n keyName=\"value\"\n labelName=\"label\"\n options={GuestTitleFieldFeature.getTitleOptions()}\n placeholder={t(Translation.Step.Confirmation.Inputs.Title) + ' *'}\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Title)}\n {...rest}\n />\n );\n }}\n />\n )}\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Forename) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Forename)}\n {...register(padInputName(EUserProfileFormKey.Forename), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Forename), 'Forename - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Forename) }),\n },\n })}\n />\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Surname) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Surname)}\n {...register(padInputName(EUserProfileFormKey.Surname), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Surname), 'Surname - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Surname) }),\n },\n })}\n />\n </InputGroup>\n\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Email) + ' *'}\n wide\n validationStatus={getValidationClass(EUserProfileFormKey.Email)}\n required\n {...register(padInputName(EUserProfileFormKey.Email), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Email), 'Email - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Email) }),\n },\n pattern: {\n value: EMAIL_REGEX,\n message: t(Translation.Step.Confirmation.Inputs.InvalidEmail),\n },\n })}\n />\n {E164PhoneNumberFieldFeature.isActive() ? (\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Phone)}\n rules={{\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Phone) }),\n },\n minLength: {\n value: 5,\n message: 'Phone number is required',\n },\n maxLength: {\n value: 17,\n message: 'Phone number is too long',\n },\n pattern: {\n value: /^[1-9]( |\\d){1,15}$/g,\n message: 'Incorrect phone number entered',\n },\n }}\n render={({ field }) => {\n return (\n <EnhancedPhoneNumberField\n disabled={isDisabled}\n validationStatus={getValidationClass(EUserProfileFormKey.Phone)}\n {...field}\n onChange={(e: any) => {\n field.onChange(e);\n onInputChange(padInputName(EUserProfileFormKey.Phone), 'Phone - Contact Info')(e);\n }}\n />\n );\n }}\n />\n ) : (\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Phone) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Phone)}\n {...register(padInputName(EUserProfileFormKey.Phone), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Phone), 'Phone - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Phone) }),\n },\n })}\n />\n )}\n </InputGroup>\n </div>\n <div className=\"rs-checkout-contact-info-address\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Address)}</strong>\n </Text>\n </div>\n\n <InputGroup dimensions=\"3/1\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={addressPlaceholder(t(Translation.Step.Confirmation.Inputs.Address), isAddressRequired)}\n wide\n required={isAddressRequired}\n validationStatus={getValidationClass(EUserProfileFormKey.Address)}\n {...register(padInputName(EUserProfileFormKey.Address), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Address), 'Address - Address'),\n required: {\n value: isAddressRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Address) }),\n },\n })}\n />\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={addressPlaceholder(t(Translation.Step.Confirmation.Inputs.City), isAddressRequired)}\n wide\n required={isAddressRequired}\n validationStatus={getValidationClass(EUserProfileFormKey.City)}\n {...register(padInputName(EUserProfileFormKey.City), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.City), 'City - Address'),\n required: {\n value: isAddressRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.City) }),\n },\n })}\n />\n </InputGroup>\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={addressPlaceholder(t(Translation.Step.Confirmation.Inputs.PostCode), isAddressRequired)}\n wide\n required={isAddressRequired}\n validationStatus={getValidationClass(EUserProfileFormKey.PostCode)}\n {...register(padInputName(EUserProfileFormKey.PostCode), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.PostCode), 'PostCode - Address'),\n required: {\n value: isAddressRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.PostCode) }),\n },\n })}\n />\n\n {includeStateField ? (\n // Render the State field here if it's required, otherwise render the Country field\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.State) + (stateFieldRequired ? ' *' : '')}\n wide\n required={stateFieldRequired}\n validationStatus={getValidationClass(EUserProfileFormKey.State)}\n {...register(padInputName(EUserProfileFormKey.State), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.State), 'State - Address'),\n required: {\n value: stateFieldRequired,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.State) }),\n },\n })}\n />\n ) : (\n countryInputField\n )}\n </InputGroup>\n\n {includeStateField && <InputGroup dimensions=\"1\">{countryInputField}</InputGroup>}\n </div>\n </div>\n {requiredAuxiliaryInputs.length > 0 && (\n <div className=\"rs-checkout-required-inputs u-marg-top\">\n <div className=\"u-marg-top\">\n <InputGroup dimensions=\"2/2\">\n {requiredAuxiliaryInputs.map((input) => {\n const options = input.options;\n return (\n <Controller\n key={input.id}\n control={control}\n name={padInputName(input.id as any)}\n rules={{ required: true }}\n defaultValue={input?.defaultValue as any}\n render={({ field }) => {\n const { ref, ...rest } = field;\n\n return (\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{input.name}</strong>\n </Text>\n </div>\n <InputSelect\n key={input.id}\n keyName={nameof<AuxiliaryFilterOption>('value')}\n labelName={nameof<AuxiliaryFilterOption>('label')}\n options={input.options}\n placeholder=\"Please Select *\"\n validationStatus={getValidationClass(input.id as any)}\n {...rest}\n />\n </>\n );\n }}\n />\n );\n })}\n </InputGroup>\n </div>\n </div>\n )}\n\n <CaptureChildAges hotel={hotel} numberOfChildrens={Number(basketRow.getChildren())} control={control} roomIndex={index} />\n </div>\n {fields.length > 1 && index === 0 ? (\n <div className=\"u-marg-bottom--heavy\">\n <Checkbox label={t(Translation.Step.Confirmation.ApplySameInfoToOtherRooms)} {...register('copyCheckBox')} />\n </div>\n ) : null}\n </div>\n );\n })}\n </>\n );\n};\n\nfunction chunkArray<T>(array: T[], chunkSize: number): T[][] {\n const result: T[][] = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n return result;\n}\n\nconst CaptureChildAges = ({\n hotel,\n numberOfChildrens,\n control,\n roomIndex,\n}: {\n hotel: Hotel | undefined;\n numberOfChildrens: number;\n control: Control<ConfirmationFormValues, any>;\n roomIndex: number;\n}) => {\n if (!hotel?.captureChildAge || numberOfChildrens === 0) {\n return <></>;\n }\n const {\n formState: { errors },\n } = useFormContext<ConfirmationFormValues>();\n const ageOptions: { label: string; value: string }[] = [];\n const min = hotel?.childConfiguration?.childRange?.min || 0;\n const max = hotel?.childConfiguration?.childRange?.max || 0;\n for (let index = min; index <= max; index++) {\n ageOptions.push({ label: `${index}`, value: `${index}` });\n }\n const rootKey = `userProfiles[${roomIndex}].${nameof<TUserProfileFormValues>('CaptureChildAge')}`;\n const requiredInputs = Array.from({ length: numberOfChildrens }, (_, childIndex) => childIndex).map((childIndex) => ({\n name: `${rootKey}[${childIndex}]`,\n id: `${rootKey}[${childIndex}].id`,\n label: `Child ${childIndex + 1} Age`,\n childIndex: childIndex,\n }));\n const getValidationClass = (childIndex: number) => {\n if (!errors.userProfiles) return;\n if (errors.userProfiles?.[roomIndex]?.CaptureChildAge?.[childIndex]) {\n return 'error';\n } else {\n return 'success';\n }\n };\n const chunkInputs = chunkArray(requiredInputs, 3);\n\n return (\n <div className=\"u-marg-top\">\n {chunkInputs.map((chunkInput, chunkIndex) => {\n return (\n <InputGroup dimensions=\"1/1/1\" key={`InputGroup-${chunkIndex}`}>\n {chunkInput.map(({ id, name, label, childIndex }) => {\n return (\n <Controller\n key={id}\n control={control}\n name={name as any}\n rules={{ required: true }}\n render={({ field }) => {\n const { ref, ...rest } = field;\n return (\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{label}</strong>\n </Text>\n </div>\n <InputSelect\n keyName=\"value\"\n labelName=\"label\"\n options={ageOptions}\n placeholder=\"Please Select *\"\n {...rest}\n validationStatus={getValidationClass(childIndex)}\n />\n </>\n );\n }}\n />\n );\n })}\n </InputGroup>\n );\n })}\n </div>\n );\n};\nexport default RoomContactDetails;\n"]}
|
|
@@ -132,15 +132,17 @@ const StepConfirmationCountrySelector = (0, react_1.forwardRef)(function InnerSt
|
|
|
132
132
|
emptyValue();
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
|
+
const onInputClear = () => {
|
|
136
|
+
var _a;
|
|
137
|
+
emptyValue();
|
|
138
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
139
|
+
onTriggerClicked();
|
|
140
|
+
};
|
|
135
141
|
return (react_1.default.createElement("div", { className: fieldClasses },
|
|
136
142
|
react_1.default.createElement("div", { className: "rs-enhanced-country-field--anchor", ref: container }),
|
|
137
143
|
react_1.default.createElement("div", { className: "rs-enhanced-country-field--search" },
|
|
138
|
-
react_1.default.createElement("input", { disabled: props.disabled, ref: inputRef, placeholder: t(Translation_1.Translation.Step.Confirmation.Inputs.Country) + (props.required ? ' *' : ''), onChange: onInputChanged, value: inputValue }),
|
|
139
|
-
react_1.default.createElement("div", { onClick: ()
|
|
140
|
-
var _a;
|
|
141
|
-
emptyValue();
|
|
142
|
-
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
143
|
-
}, className: (0, classnames_1.default)('rs-enhanced-country-field--close', {
|
|
144
|
+
react_1.default.createElement("input", { disabled: props.disabled, ref: inputRef, placeholder: t(Translation_1.Translation.Step.Confirmation.Inputs.Country) + (props.required ? ' *' : ''), onChange: onInputChanged, value: inputValue, onClick: onTriggerClicked }),
|
|
145
|
+
react_1.default.createElement("div", { onClick: onInputClear, className: (0, classnames_1.default)('rs-enhanced-country-field--close', {
|
|
144
146
|
'--hide': !inputValue,
|
|
145
147
|
}) },
|
|
146
148
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Close })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepConfirmationCountrySelector.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationCountrySelector.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAuD;AAEvD,2CAAkD;AAClD,4DAAoC;AACpC,+DAA0F;AAC1F,+CAA+H;AAC/H,iDAA+C;AAC/C,0DAAuD;AAEvD,uEAAgE;AAChE,4EAA2I;AAE3I,wDAAqD;AAarD,MAAM,+BAA+B,GAAG,IAAA,kBAAU,EAAgE,SAAS,oCAAoC,CAAC,KAAK,EAAE,GAAG;IACtK,MAAM,QAAQ,GAAG,IAAA,cAAM,EAA0B,IAAI,CAAC,CAAC;IACvD,IAAA,2BAAmB,EAAmD,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnG,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,IAAA,wCAAoB,EAAC;QAC3G,GAAG,EAAE,QAAQ,CAAC,OAAO;QACrB,eAAe,EAAE,KAAK;QACtB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;KAC/C,CAAC,CAAC;IAEH,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;IAC/D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAS,KAAK,CAAC,CAAC;IAE5D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,aAAa,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,cAAc,GAAG,GAA+B,EAAE;;QACpD,IAAI,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,0CAAE,MAAM,CAAA,EAAE,CAAC;YACrC,OAAO,gDAAqD,CAAC;QACjE,CAAC;QAED,OAAO,KAAK,CAAC,kBAAkB;aAC1B,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACjB,OAAO,gDAAuB,CAAC,IAAI,CAC/B,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CACvB,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAClJ,CAAC;QACN,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACrB,MAAM,cAAc,GAAG,gDAAuB,CAAC,IAAI,CAC/C,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CACvB,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CACnI,CAAC;YACjB,uCACO,cAAc,KACjB,KAAK,EAAE,IAAI,EACX,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IACrB;QACN,CAAC,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAkB,IAAA,eAAO,EAAC,GAAG,EAAE;QACnD,OAAO,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9G,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,gDAAuB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAM,eAAe,GAAG,IAAA,mBAAW,EAC/B,CAAC,UAAkB,EAAiB,EAAE;QAClC,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5G,CAAC,EACD,CAAC,kBAAkB,CAAC,CACvB,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAgB,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9E,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,SAAS,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAS,CAAC,CAAC;QACnD,aAAa,CAAC,EAAE,CAAC,CAAC;QAClB,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,CAAgC,EAAE,EAAE;;QACxD,MAAM,KAAK,GAAG,CAAA,MAAA,CAAC,CAAC,MAAM,CAAC,KAAK,0CAAE,IAAI,EAAE,KAAI,EAAE,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACvC,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YAClE,IAAI,YAAY,EAAE,CAAC;gBACf,cAAc,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACnC,CAAC;QACD,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,oBAAU,EAAC,2BAA2B,EAAE;QACzD,CAAC,KAAK,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB;QAC7C,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,KAAK,CAAC,QAAQ;KAC/B,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAQ,EAAE;;QAClD,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,cAAc,EAAE,CAAC;QACjB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAS,CAAC,CAAC;QAC9D,IAAK,OAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAA,KAAK,CAAC,UAAU,sDAAI,OAAe,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAK,OAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAA,KAAK,CAAC,YAAY,sDAAI,OAAe,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,GAAyB,EAA2B,EAAE;QACrE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,CAAQ,EAAE,EAAE;QACzB,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,WAAC,OAAA,KAAK,MAAK,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,CAAA,CAAA,EAAA,CAAC,EAAE,CAAC;YAC7E,UAAU,EAAE,CAAC;QACjB,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACH,uCAAK,SAAS,EAAE,YAAY;QACxB,uCAAK,SAAS,EAAC,mCAAmC,EAAC,GAAG,EAAE,SAAS,GAAQ;QAEzE,uCAAK,SAAS,EAAC,mCAAmC;YAC9C,yCACI,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,GAAG,EAAE,QAAQ,EACb,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3F,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,UAAU,GACnB;YACF,uCACI,OAAO,EAAE,GAAG,EAAE;;oBACV,UAAU,EAAE,CAAC;oBACb,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;gBAC9B,CAAC,EACD,SAAS,EAAE,IAAA,oBAAU,EAAC,kCAAkC,EAAE;oBACtD,QAAQ,EAAE,CAAC,UAAU;iBACxB,CAAC;gBAEF,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,GAAI,CAC5B;YACN,uCAAK,SAAS,EAAC,oCAAoC,EAAC,OAAO,EAAE,gBAAgB;gBACzE,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,GAAI,CAC/B,CACJ;QAEN,8BAAC,eAAM,IACH,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EACf,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,CAAC,OAAO,EACzB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,MAAM,EAAE,CAAC;oBACT,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC,EACD,OAAO,EAAC,OAAO,EACf,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CACvB,uCAAK,SAAS,EAAC,iDAAiD;gBAC5D,uCAAK,SAAS,EAAC,sDAAsD,IAAE,IAAA,iDAAwB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAc,CAAC,CAAO;gBAC/H,uCAAK,SAAS,EAAC,sDAAsD,IAChE,OAAO,aAAP,OAAO;oBAAP,OAAO,CAAE,KAAK;0BAAI,OAAO,aAAP,OAAO;oBAAP,OAAO,CAAE,IAAI;wBAC9B,CACJ,CACT,GACH,CACA,CACT,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,kBAAe,+BAA+B,CAAC","sourcesContent":["import './StepConfirmationCountrySelector.global.scss';\n\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport { useAutoFocusOnSelect, UseAutoFocusOnSelectProps } from 'hooks/AutoFocusOnSelect';\nimport React, { ChangeEvent, forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { convertCountryCodeToFlag, CountryType, HotelSpecificCountryType, ListOfCountriesAndCodes } from '@/models/CountryCodesAndNumbers';\n\nimport { Select } from '../../generic/Select/Select';\n\ninterface StepConfirmationCountrySelectorProps extends Pick<UseAutoFocusOnSelectProps, 'disableOpenOnFocus'> {\n validationStatus?: 'success' | 'error';\n name?: string;\n value?: string; // example: Australia\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n required?: boolean;\n onChangeId?: (id: number) => void;\n onChangeCode?: (id: string) => void;\n}\n\nconst StepConfirmationCountrySelector = forwardRef<HTMLInputElement | null, StepConfirmationCountrySelectorProps>(function InnerStepConfirmationCountrySelector(props, ref) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(ref, () => inputRef.current);\n const { onDropdownClosed, onItemSelected, onTriggerClicked, isDropdownOpen, isFocused } = useAutoFocusOnSelect({\n ref: inputRef.current,\n focusOnSelected: false,\n disableOpenOnFocus: props.disableOpenOnFocus,\n });\n\n const { hotel } = useCurrentHotel();\n\n const { validationStatus, name, onChange, value = '' } = props;\n const [inputValue, setInputValue] = useState<string>(value);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const mergeCountries = (): HotelSpecificCountryType[] => {\n if (!hotel?.availableCountries?.length) {\n return ListOfCountriesAndCodes as HotelSpecificCountryType[];\n }\n\n return hotel.availableCountries\n .filter(({ name }) => {\n return ListOfCountriesAndCodes.some(\n ({ label, otherLabels }) =>\n label.toLowerCase() === name.toLowerCase() || (otherLabels && otherLabels.map((label) => label.toLowerCase()).includes(name.toLowerCase()))\n );\n })\n .map(({ name, value }) => {\n const existedCountry = ListOfCountriesAndCodes.find(\n ({ label, otherLabels }) =>\n label.toLowerCase() === name.toLowerCase() || (otherLabels && otherLabels.map((label) => label.toLowerCase()).includes(name.toLowerCase()))\n ) as CountryType;\n return {\n ...existedCountry,\n label: name,\n id: parseInt(value),\n };\n });\n };\n\n const organizedCountries: CountryType[] = useMemo(() => {\n return mergeCountries().sort((a, b) => {\n return `${(a.suggested ? '000' : '') + a.label}`.localeCompare(`${(b.suggested ? '000' : '') + b.label}`);\n });\n }, [ListOfCountriesAndCodes, hotel?.availableCountries]);\n\n const filterCountries = useCallback(\n (inputValue: string): CountryType[] => {\n return organizedCountries.filter(({ label }) => label.toUpperCase().includes(inputValue.toUpperCase()));\n },\n [organizedCountries]\n );\n const [options, setOptions] = useState<CountryType[]>(filterCountries(value));\n\n const { t } = useTranslation();\n\n const container = useRef(null);\n\n const emptyValue = () => {\n onChange?.({ target: { name, value: '' } } as any);\n setInputValue('');\n setOptions(organizedCountries);\n };\n\n const onInputChanged = (e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value?.trim() || '';\n if (value) {\n const options = filterCountries(value);\n setOptions(options);\n const exactCountry = options.find(({ label }) => label === value);\n if (exactCountry) {\n onCountryClick(exactCountry);\n }\n } else {\n setOptions(organizedCountries);\n }\n setInputValue(e.target.value);\n };\n\n const fieldClasses = classNames('rs-enhanced-country-field', {\n [`--${validationStatus}`]: !!validationStatus,\n '--focused': isFocused,\n '--disabled': props.disabled,\n });\n\n const onCountryClick = (country: CountryType): void => {\n setInputValue(country.label);\n onItemSelected();\n onChange?.({ target: { name, value: country.label } } as any);\n if ((country as any)['id']) {\n props.onChangeId?.((country as any).id);\n }\n\n if ((country as any)['code']) {\n props.onChangeCode?.((country as any).code);\n }\n };\n\n const getOption = (key: CountryType['label']): CountryType | undefined => {\n return options.find(({ label }) => label === key);\n };\n\n const onClose = (e: Event) => {\n onDropdownClosed(e);\n if (organizedCountries.every(({ label }) => label !== inputRef.current?.value)) {\n emptyValue();\n }\n };\n\n return (\n <div className={fieldClasses}>\n <div className=\"rs-enhanced-country-field--anchor\" ref={container}></div>\n\n <div className=\"rs-enhanced-country-field--search\">\n <input\n disabled={props.disabled}\n ref={inputRef}\n placeholder={t(Translation.Step.Confirmation.Inputs.Country) + (props.required ? ' *' : '')}\n onChange={onInputChanged}\n value={inputValue}\n />\n <div\n onClick={() => {\n emptyValue();\n inputRef.current?.focus();\n }}\n className={classNames('rs-enhanced-country-field--close', {\n '--hide': !inputValue,\n })}\n >\n <Icon icon={IconType.Close} />\n </div>\n <div className=\"rs-enhanced-country-field--country\" onClick={onTriggerClicked}>\n <Icon icon={IconType.Dropdown} />\n </div>\n </div>\n\n <Select<CountryType, 'label'>\n offset={[0, 21]}\n open={isDropdownOpen}\n onClose={onClose}\n target={container.current}\n options={options}\n value={value}\n onChange={(value) => {\n const option = getOption(value);\n if (option) {\n onCountryClick(option);\n }\n }}\n keyName=\"label\"\n renderOption={(country) => (\n <div className=\"rs-enhanced-country-field--suggest-list-country\">\n <div className=\"rs-enhanced-country-field--suggest-list-country-icon\">{convertCountryCodeToFlag(country?.code as string)}</div>\n <div className=\"rs-enhanced-country-field--suggest-list-country-name\">\n {country?.label} ({country?.code})\n </div>\n </div>\n )}\n />\n </div>\n );\n});\n\nexport default StepConfirmationCountrySelector;\n"]}
|
|
1
|
+
{"version":3,"file":"StepConfirmationCountrySelector.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationCountrySelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import './StepConfirmationCountrySelector.global.scss';\n\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport { useAutoFocusOnSelect, UseAutoFocusOnSelectProps } from 'hooks/AutoFocusOnSelect';\nimport React, { ChangeEvent, forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { convertCountryCodeToFlag, CountryType, HotelSpecificCountryType, ListOfCountriesAndCodes } from '@/models/CountryCodesAndNumbers';\n\nimport { Select } from '../../generic/Select/Select';\n\ninterface StepConfirmationCountrySelectorProps extends Pick<UseAutoFocusOnSelectProps, 'disableOpenOnFocus'> {\n validationStatus?: 'success' | 'error';\n name?: string;\n value?: string; // example: Australia\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n required?: boolean;\n onChangeId?: (id: number) => void;\n onChangeCode?: (id: string) => void;\n}\n\nconst StepConfirmationCountrySelector = forwardRef<HTMLInputElement | null, StepConfirmationCountrySelectorProps>(function InnerStepConfirmationCountrySelector(props, ref) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle<HTMLInputElement | null, HTMLInputElement | null>(ref, () => inputRef.current);\n const { onDropdownClosed, onItemSelected, onTriggerClicked, isDropdownOpen, isFocused } = useAutoFocusOnSelect({\n ref: inputRef.current,\n focusOnSelected: false,\n disableOpenOnFocus: props.disableOpenOnFocus,\n });\n\n const { hotel } = useCurrentHotel();\n\n const { validationStatus, name, onChange, value = '' } = props;\n const [inputValue, setInputValue] = useState<string>(value);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n const mergeCountries = (): HotelSpecificCountryType[] => {\n if (!hotel?.availableCountries?.length) {\n return ListOfCountriesAndCodes as HotelSpecificCountryType[];\n }\n\n return hotel.availableCountries\n .filter(({ name }) => {\n return ListOfCountriesAndCodes.some(\n ({ label, otherLabels }) =>\n label.toLowerCase() === name.toLowerCase() || (otherLabels && otherLabels.map((label) => label.toLowerCase()).includes(name.toLowerCase()))\n );\n })\n .map(({ name, value }) => {\n const existedCountry = ListOfCountriesAndCodes.find(\n ({ label, otherLabels }) =>\n label.toLowerCase() === name.toLowerCase() || (otherLabels && otherLabels.map((label) => label.toLowerCase()).includes(name.toLowerCase()))\n ) as CountryType;\n return {\n ...existedCountry,\n label: name,\n id: parseInt(value),\n };\n });\n };\n\n const organizedCountries: CountryType[] = useMemo(() => {\n return mergeCountries().sort((a, b) => {\n return `${(a.suggested ? '000' : '') + a.label}`.localeCompare(`${(b.suggested ? '000' : '') + b.label}`);\n });\n }, [ListOfCountriesAndCodes, hotel?.availableCountries]);\n\n const filterCountries = useCallback(\n (inputValue: string): CountryType[] => {\n return organizedCountries.filter(({ label }) => label.toUpperCase().includes(inputValue.toUpperCase()));\n },\n [organizedCountries]\n );\n const [options, setOptions] = useState<CountryType[]>(filterCountries(value));\n\n const { t } = useTranslation();\n\n const container = useRef(null);\n\n const emptyValue = () => {\n onChange?.({ target: { name, value: '' } } as any);\n setInputValue('');\n setOptions(organizedCountries);\n };\n\n const onInputChanged = (e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value?.trim() || '';\n if (value) {\n const options = filterCountries(value);\n setOptions(options);\n const exactCountry = options.find(({ label }) => label === value);\n if (exactCountry) {\n onCountryClick(exactCountry);\n }\n } else {\n setOptions(organizedCountries);\n }\n setInputValue(e.target.value);\n };\n\n const fieldClasses = classNames('rs-enhanced-country-field', {\n [`--${validationStatus}`]: !!validationStatus,\n '--focused': isFocused,\n '--disabled': props.disabled,\n });\n\n const onCountryClick = (country: CountryType): void => {\n setInputValue(country.label);\n onItemSelected();\n onChange?.({ target: { name, value: country.label } } as any);\n if ((country as any)['id']) {\n props.onChangeId?.((country as any).id);\n }\n\n if ((country as any)['code']) {\n props.onChangeCode?.((country as any).code);\n }\n };\n\n const getOption = (key: CountryType['label']): CountryType | undefined => {\n return options.find(({ label }) => label === key);\n };\n\n const onClose = (e: Event) => {\n onDropdownClosed(e);\n if (organizedCountries.every(({ label }) => label !== inputRef.current?.value)) {\n emptyValue();\n }\n };\n\n const onInputClear = () => {\n emptyValue();\n inputRef.current?.focus();\n onTriggerClicked();\n };\n\n return (\n <div className={fieldClasses}>\n <div className=\"rs-enhanced-country-field--anchor\" ref={container}></div>\n\n <div className=\"rs-enhanced-country-field--search\">\n <input\n disabled={props.disabled}\n ref={inputRef}\n placeholder={t(Translation.Step.Confirmation.Inputs.Country) + (props.required ? ' *' : '')}\n onChange={onInputChanged}\n value={inputValue}\n onClick={onTriggerClicked}\n />\n <div\n onClick={onInputClear}\n className={classNames('rs-enhanced-country-field--close', {\n '--hide': !inputValue,\n })}\n >\n <Icon icon={IconType.Close} />\n </div>\n <div className=\"rs-enhanced-country-field--country\" onClick={onTriggerClicked}>\n <Icon icon={IconType.Dropdown} />\n </div>\n </div>\n\n <Select<CountryType, 'label'>\n offset={[0, 21]}\n open={isDropdownOpen}\n onClose={onClose}\n target={container.current}\n options={options}\n value={value}\n onChange={(value) => {\n const option = getOption(value);\n if (option) {\n onCountryClick(option);\n }\n }}\n keyName=\"label\"\n renderOption={(country) => (\n <div className=\"rs-enhanced-country-field--suggest-list-country\">\n <div className=\"rs-enhanced-country-field--suggest-list-country-icon\">{convertCountryCodeToFlag(country?.code as string)}</div>\n <div className=\"rs-enhanced-country-field--suggest-list-country-name\">\n {country?.label} ({country?.code})\n </div>\n </div>\n )}\n />\n </div>\n );\n});\n\nexport default StepConfirmationCountrySelector;\n"]}
|
|
@@ -38,6 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.default = StepOneDateRange;
|
|
40
40
|
const contexts_1 = require("../../../contexts/index.js");
|
|
41
|
+
const hooks_1 = require("../../../hooks/index.js");
|
|
41
42
|
const react_1 = __importStar(require("react"));
|
|
42
43
|
const react_i18next_1 = require("react-i18next");
|
|
43
44
|
const Translation_1 = require("translations/Translation");
|
|
@@ -46,14 +47,15 @@ const Icon_1 = __importStar(require("../../generic/Icon/Icon"));
|
|
|
46
47
|
const Color_1 = require("../../../util/Color");
|
|
47
48
|
function StepOneDateRange() {
|
|
48
49
|
const context = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
50
|
+
const { formatGuestDate } = (0, hooks_1.useGuestDateFormat)();
|
|
49
51
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
50
52
|
return (0, react_1.useMemo)(() => {
|
|
51
53
|
return (react_1.default.createElement("div", { className: "step-one-status--dates" },
|
|
52
54
|
react_1.default.createElement(Headline_1.default, null,
|
|
53
|
-
react_1.default.createElement("span", Object.assign({}, (context.startDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), context.startDate ? context.startDate
|
|
55
|
+
react_1.default.createElement("span", Object.assign({}, (context.startDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), context.startDate ? formatGuestDate(context.startDate) : t(Translation_1.Translation.Step.Date.Arrival))),
|
|
54
56
|
react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2, size: "18px" }),
|
|
55
57
|
react_1.default.createElement(Headline_1.default, null,
|
|
56
|
-
react_1.default.createElement("span", Object.assign({}, (context.endDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), context.endDate ? context.endDate
|
|
57
|
-
}, [context.startDate, context.endDate]);
|
|
58
|
+
react_1.default.createElement("span", Object.assign({}, (context.endDate ? { style: { color: Color_1.Color.Accent, fontWeight: 'bold' } } : {})), context.endDate ? formatGuestDate(context.endDate) : t(Translation_1.Translation.Step.Date.Departure)))));
|
|
59
|
+
}, [context.startDate, context.endDate, formatGuestDate]);
|
|
58
60
|
}
|
|
59
61
|
//# sourceMappingURL=StepOneDateRange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepOneDateRange.js","sourceRoot":"/","sources":["src/components/steps/date/StepOneDateRange.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"StepOneDateRange.js","sourceRoot":"/","sources":["src/components/steps/date/StepOneDateRange.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,mCAuBC;AAjCD,iDAAmD;AACnD,2CAAqD;AACrD,+CAAmD;AACnD,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,uEAAgE;AAChE,wCAAqC;AAErC,SAAwB,gBAAgB;IACpC,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAC1C,MAAM,EAAE,eAAe,EAAE,GAAG,IAAA,0BAAkB,GAAE,CAAC;IAEjD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE;QAChB,OAAO,CACH,uCAAK,SAAS,EAAC,wBAAwB;YACnC,8BAAC,kBAAQ;gBACL,wDAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACtF,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CACvF,CACA;YACX,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,WAAW,EAAE,IAAI,EAAC,MAAM,GAAG;YAChD,8BAAC,kBAAQ;gBACL,wDAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACpF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CACrF,CACA,CACT,CACT,CAAC;IACN,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;AAC9D,CAAC","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport { useGuestDateFormat } from '@frontend/hooks';\nimport React, { useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\n\nexport default function StepOneDateRange() {\n const context = useContext(BasketContext);\n const { formatGuestDate } = useGuestDateFormat();\n\n const { t } = useTranslation();\n\n return useMemo(() => {\n return (\n <div className=\"step-one-status--dates\">\n <Headline>\n <span {...(context.startDate ? { style: { color: Color.Accent, fontWeight: 'bold' } } : {})}>\n {context.startDate ? formatGuestDate(context.startDate) : t(Translation.Step.Date.Arrival)}\n </span>\n </Headline>\n <Icon icon={IconType.ArrowRight2} size=\"18px\" />\n <Headline>\n <span {...(context.endDate ? { style: { color: Color.Accent, fontWeight: 'bold' } } : {})}>\n {context.endDate ? formatGuestDate(context.endDate) : t(Translation.Step.Date.Departure)}\n </span>\n </Headline>\n </div>\n );\n }, [context.startDate, context.endDate, formatGuestDate]);\n}\n"]}
|
|
@@ -42,7 +42,7 @@ const react_1 = __importStar(require("react"));
|
|
|
42
42
|
const DatePicker_1 = __importDefault(require("../../generic/date/DatePicker"));
|
|
43
43
|
const DataLayer_1 = __importStar(require("../../../util/DataLayer"));
|
|
44
44
|
const ScreenSize_1 = __importDefault(require("../../../util/ScreenSize"));
|
|
45
|
-
function StepOneDateRangePicker({ showMultipleMonths = undefined }) {
|
|
45
|
+
function StepOneDateRangePicker({ showMultipleMonths = undefined, footer }) {
|
|
46
46
|
const context = (0, react_1.useContext)(contexts_1.BasketContext);
|
|
47
47
|
const appContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
|
|
48
48
|
return (0, react_1.useMemo)(() => {
|
|
@@ -54,7 +54,7 @@ function StepOneDateRangePicker({ showMultipleMonths = undefined }) {
|
|
|
54
54
|
DataLayer_1.default.instance.sendInteraction('Check Out Date', DataLayer_1.InteractionType.CALENDAR, DataLayer_1.InteractionStep.DATES);
|
|
55
55
|
context.setEndDate(newDate);
|
|
56
56
|
};
|
|
57
|
-
return (react_1.default.createElement(DatePicker_1.default, { supportsMultiSelecting: true, showMultipleMonths: showMultipleMonths !== undefined ? showMultipleMonths : appContext.screenSize > ScreenSize_1.default.ExtraLarge, selectedStartDate: context.startDate, selectedEndDate: context.endDate, supportsWeek: true, showMinNightStay: true, onStartDateChanged: onStartDateChangedHandler, onEndDateChanged: onEndDateChangedHandler }));
|
|
58
|
-
}, [context.startDate, context.endDate, appContext.screenSize]);
|
|
57
|
+
return (react_1.default.createElement(DatePicker_1.default, { supportsMultiSelecting: true, showMultipleMonths: showMultipleMonths !== undefined ? showMultipleMonths : appContext.screenSize > ScreenSize_1.default.ExtraLarge, selectedStartDate: context.startDate, selectedEndDate: context.endDate, supportsWeek: true, showMinNightStay: true, onStartDateChanged: onStartDateChangedHandler, onEndDateChanged: onEndDateChangedHandler, footer: footer }));
|
|
58
|
+
}, [context.startDate, context.endDate, appContext.screenSize, footer]);
|
|
59
59
|
}
|
|
60
60
|
//# sourceMappingURL=StepOneDateRangePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StepOneDateRangePicker.js","sourceRoot":"/","sources":["src/components/steps/date/StepOneDateRangePicker.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,
|
|
1
|
+
{"version":3,"file":"StepOneDateRangePicker.js","sourceRoot":"/","sources":["src/components/steps/date/StepOneDateRangePicker.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,yCA2BC;AAlCD,iDAAyE;AACzE,+CAAmD;AAEnD,sFAA8D;AAC9D,8DAA+E;AAC/E,mEAA2C;AAE3C,SAAwB,sBAAsB,CAAC,EAAE,kBAAkB,GAAG,SAAS,EAAE,MAAM,EAA8D;IACjJ,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IAEpD,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE;QAChB,MAAM,yBAAyB,GAAG,CAAC,OAAY,EAAE,EAAE;YAC/C,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YACrG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QACF,MAAM,uBAAuB,GAAG,CAAC,OAAY,EAAE,EAAE;YAC7C,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;YACtG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC;QACF,OAAO,CACH,8BAAC,oBAAU,IACP,sBAAsB,QACtB,kBAAkB,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,GAAG,oBAAU,CAAC,UAAU,EACzH,iBAAiB,EAAE,OAAO,CAAC,SAAS,EACpC,eAAe,EAAE,OAAO,CAAC,OAAO,EAChC,YAAY,QACZ,gBAAgB,QAChB,kBAAkB,EAAE,yBAAyB,EAC7C,gBAAgB,EAAE,uBAAuB,EACzC,MAAM,EAAE,MAAM,GAChB,CACL,CAAC;IACN,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,CAAC","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport React, { useContext, useMemo } from 'react';\n\nimport DatePicker from '@/components/generic/date/DatePicker';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\n\nexport default function StepOneDateRangePicker({ showMultipleMonths = undefined, footer }: { showMultipleMonths?: boolean; footer?: React.ReactNode }) {\n const context = useContext(BasketContext);\n const appContext = useContext(BookingEngineContext);\n\n return useMemo(() => {\n const onStartDateChangedHandler = (newDate: any) => {\n DataLayer.instance.sendInteraction('Check In Date', InteractionType.CALENDAR, InteractionStep.DATES);\n context.setStartDate(newDate);\n };\n const onEndDateChangedHandler = (newDate: any) => {\n DataLayer.instance.sendInteraction('Check Out Date', InteractionType.CALENDAR, InteractionStep.DATES);\n context.setEndDate(newDate);\n };\n return (\n <DatePicker\n supportsMultiSelecting\n showMultipleMonths={showMultipleMonths !== undefined ? showMultipleMonths : appContext.screenSize > ScreenSize.ExtraLarge}\n selectedStartDate={context.startDate}\n selectedEndDate={context.endDate}\n supportsWeek\n showMinNightStay\n onStartDateChanged={onStartDateChangedHandler}\n onEndDateChanged={onEndDateChangedHandler}\n footer={footer}\n />\n );\n }, [context.startDate, context.endDate, appContext.screenSize, footer]);\n}\n"]}
|