@roomstay/frontend 2.6.102-5 → 2.6.103-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.
Files changed (96) hide show
  1. package/dist/177.bundle.js +1 -1
  2. package/dist/211.bundle.js +1 -0
  3. package/dist/288.bundle.js +1 -1
  4. package/dist/326.bundle.js +2 -0
  5. package/dist/326.bundle.js.LICENSE.txt +16 -0
  6. package/dist/328.bundle.js +1 -1
  7. package/dist/main.bundle.js +1 -1
  8. package/dist/src/api/AnalyticsEventsAPI.d.ts +13 -0
  9. package/dist/src/api/AnalyticsEventsAPI.js +55 -0
  10. package/dist/src/api/AnalyticsEventsAPI.js.map +1 -0
  11. package/dist/src/components/generic/PromotionalCodeInput.js +1 -1
  12. package/dist/src/components/generic/PromotionalCodeInput.js.map +1 -1
  13. package/dist/src/components/steps/confirmation/PayPalPaymentOption/PayPalPaymentOption.d.ts +2 -0
  14. package/dist/src/components/steps/confirmation/PayPalPaymentOption/PayPalPaymentOption.js +86 -0
  15. package/dist/src/components/steps/confirmation/PayPalPaymentOption/PayPalPaymentOption.js.map +1 -0
  16. package/dist/src/components/steps/confirmation/RoomContactDetails.js +3 -1
  17. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  18. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.d.ts +2 -1
  19. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +1 -0
  20. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
  21. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +1 -1
  22. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  23. package/dist/src/components/steps/date/PeoplePickerRow.js +2 -2
  24. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  25. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +1 -0
  26. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  27. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +2 -2
  28. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  29. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js +3 -3
  30. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js.map +1 -1
  31. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +3 -3
  32. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
  33. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +3 -0
  34. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  35. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +46 -8
  36. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  37. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +9 -0
  38. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  39. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +21 -3
  40. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  41. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.d.ts +1 -9
  42. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.js +2 -16
  43. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.js.map +1 -1
  44. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepPriceQuoteErrorModal.d.ts +9 -0
  45. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepPriceQuoteErrorModal.js +67 -0
  46. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepPriceQuoteErrorModal.js.map +1 -0
  47. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +43 -7
  48. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  49. package/dist/src/handlers/payment/PayPalPaymentHandler.d.ts +2 -0
  50. package/dist/src/handlers/payment/PayPalPaymentHandler.js +41 -0
  51. package/dist/src/handlers/payment/PayPalPaymentHandler.js.map +1 -0
  52. package/dist/src/hooks/AutoFocusOnSelect.d.ts +1 -2
  53. package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
  54. package/dist/src/hooks/useSearchScopeHook.d.ts +5 -2
  55. package/dist/src/hooks/useSearchScopeHook.js +57 -14
  56. package/dist/src/hooks/useSearchScopeHook.js.map +1 -1
  57. package/dist/src/models/Addon/Addon.js +4 -0
  58. package/dist/src/models/Addon/Addon.js.map +1 -1
  59. package/dist/src/models/Api/HotelDTO.d.ts +1 -1
  60. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  61. package/dist/src/models/BasketRow.d.ts +5 -0
  62. package/dist/src/models/BasketRow.js +13 -1
  63. package/dist/src/models/BasketRow.js.map +1 -1
  64. package/dist/src/models/Client/Hotel/Hotel.d.ts +11 -0
  65. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  66. package/dist/src/pages/findReservation/FindReservationResults.js +2 -2
  67. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  68. package/dist/src/pages/steps/StepAddon/StepAddonValidator.js +1 -1
  69. package/dist/src/pages/steps/StepAddon/StepAddonValidator.js.map +1 -1
  70. package/dist/src/pages/steps/StepConfirmation/StepConfirmationValidator.js +1 -1
  71. package/dist/src/pages/steps/StepConfirmation/StepConfirmationValidator.js.map +1 -1
  72. package/dist/src/pages/steps/StepRoom/StepRoomValidator.js +1 -1
  73. package/dist/src/pages/steps/StepRoom/StepRoomValidator.js.map +1 -1
  74. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +2 -2
  75. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  76. package/dist/src/providers/FeatureProvider.js +2 -0
  77. package/dist/src/providers/FeatureProvider.js.map +1 -1
  78. package/dist/src/providers/feature/AnalyticsEventsFeature.d.ts +23 -0
  79. package/dist/src/providers/feature/AnalyticsEventsFeature.js +83 -0
  80. package/dist/src/providers/feature/AnalyticsEventsFeature.js.map +1 -0
  81. package/dist/src/translations/Translation.d.ts +5 -0
  82. package/dist/src/translations/Translation.js +5 -0
  83. package/dist/src/translations/Translation.js.map +1 -1
  84. package/dist/src/translations/languages/en-gb.js +9 -4
  85. package/dist/src/translations/languages/en-gb.js.map +1 -1
  86. package/dist/src/util/AnalyticsEvents/AnalyticsEvents.d.ts +61 -0
  87. package/dist/src/util/AnalyticsEvents/AnalyticsEvents.js +329 -0
  88. package/dist/src/util/AnalyticsEvents/AnalyticsEvents.js.map +1 -0
  89. package/dist/src/util/AnalyticsEvents/helpers.d.ts +30 -0
  90. package/dist/src/util/AnalyticsEvents/helpers.js +96 -0
  91. package/dist/src/util/AnalyticsEvents/helpers.js.map +1 -0
  92. package/dist/test.bundle.js +1 -1
  93. package/dist/vendors.bundle.js +1 -1
  94. package/package.json +3 -2
  95. package/dist/180.bundle.js +0 -1
  96. package/dist/570.bundle.js +0 -1
@@ -1 +1 @@
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 } 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 {\n validationStatus?: 'success' | 'error';\n name?: string;\n value?: string; // example: Australia\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n disabled?: 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 });\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 disabled={props.disabled} ref={inputRef} placeholder={t(Translation.Step.Confirmation.Inputs.Country) + ' *'} onChange={onInputChanged} value={inputValue} />\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 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 disabled={props.disabled} ref={inputRef} placeholder={t(Translation.Step.Confirmation.Inputs.Country) + ' *'} onChange={onInputChanged} value={inputValue} />\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"]}
@@ -105,7 +105,7 @@ function StepConfirmationForm() {
105
105
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Success },
106
106
  react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Confirmation.AlmostDone, { required: '*' })))),
107
107
  react_1.default.createElement(RoomContactDetails_1.default, null),
108
- bookingSource === 'inline' ? (react_1.default.createElement(Alert_1.default, { type: Alert_1.AlertType.Accent2, heavyPadding: true },
108
+ bookingSource === 'inline' && basketContext.canAddAnotherRoom ? (react_1.default.createElement(Alert_1.default, { type: Alert_1.AlertType.Accent2, heavyPadding: true },
109
109
  react_1.default.createElement("div", { className: "u-flex u-w-100 flex-wrap flex-xl-nowrap" },
110
110
  react_1.default.createElement("div", null,
111
111
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.Accent, bold: true }, t(Translation_1.Translation.Step.Confirmation.WantMoreRooms)),
@@ -1 +1 @@
1
- {"version":3,"file":"StepConfirmationForm.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useBasket } from '@frontend/contexts';\nimport { useConfirmationStep } from 'contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { useHistoryConsistentPush } from 'hooks/HistoryConsistentPush';\nimport React, { useEffect } from 'react';\nimport { 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 SSLSecureBadge from '@/components/generic/badging/SSLSecureBadge';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { PromotionalCodeInput } from '@/components/generic/PromotionalCodeInput';\nimport ScrollToTop from '@/components/generic/ScrollToTop';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport GiftCardRedemption from '@/components/steps/confirmation/GiftCardRedemption';\nimport PaymentInformation from '@/components/steps/confirmation/PaymentInformation';\nimport RoomContactDetails from '@/components/steps/confirmation/RoomContactDetails';\nimport StepConfirmationAcknowledgement from '@/components/steps/confirmation/StepConfirmationAcknowledgement';\nimport { StepConfirmationCommentsComponent } from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nimport StepConfirmationPoliciesSection from '@/components/steps/confirmation/StepConfirmationPoliciesSection';\nimport StepConfirmationPolicyBlock from '@/components/steps/confirmation/StepConfirmationPolicyBlock';\nimport { ConfirmationFormValues } from '@/models/Confirmation';\nimport ConfirmationVerifyFeature from '@/providers/feature/ConfirmationVerifyFeature';\nimport ShowIATANumberOnCheckoutFeature from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport { usePaymentHelper } from '@/util/usePaymentHelper';\n\nexport default function StepConfirmationForm() {\n const { t } = useTranslation();\n\n const formContext = useFormContext<ConfirmationFormValues>();\n const { isInPaymentMode, isBackFromPlanpay, bookingSource } = useConfirmationStep();\n const basketContext = useBasket();\n\n const historyConsistentPush = useHistoryConsistentPush();\n\n const { exclusivePayment } = usePaymentHelper();\n\n const returnToPickRooms = async () => {\n historyConsistentPush(getStepRoom().getStepUrl());\n };\n\n // Check if gift card fully covers the booking\n const giftCardAmount = Math.abs(formContext.watch('giftCardAmount') || 0);\n const totalBookingAmount = basketContext.getTotalPrice() || 0;\n const isFullyCoveredByGiftCard = giftCardAmount > 0 && giftCardAmount >= totalBookingAmount;\n\n // Ensure paymentMethod is set when gift card covers everything\n useEffect(() => {\n if (isFullyCoveredByGiftCard && !formContext.getValues('paymentMethod')) {\n formContext.setValue('paymentMethod', 'VGS');\n }\n }, [isFullyCoveredByGiftCard]);\n\n const prePaymentInfo = (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline bold>{t(Translation.Step.Confirmation.GuestDetails)}</Headline>\n </div>\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.AlmostDone, { required: '*' })}</strong>\n </Text>\n </div>\n <RoomContactDetails />\n {bookingSource === 'inline' ? (\n <Alert type={AlertType.Accent2} heavyPadding>\n <div className=\"u-flex u-w-100 flex-wrap flex-xl-nowrap\">\n <div>\n <Text color={Color.Accent} bold>\n {t(Translation.Step.Confirmation.WantMoreRooms)}\n </Text>\n <Text color={Color.Navy}>{t(Translation.Step.Confirmation.YouCanAddAndEditRooms)}</Text>\n </div>\n <div className=\"d-flex align-items-center u-marg-top@xl-\">\n <BEButton filled primary icon={IconType.Add} iconPosition=\"left\" onClick={returnToPickRooms}>\n {t(Translation.Step.Confirmation.AddMoreRooms)}\n </BEButton>\n </div>\n </div>\n </Alert>\n ) : (\n <></>\n )}\n {ShowIATANumberOnCheckoutFeature.isActive() && (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.TravelAgent)}</Headline>\n </div>\n\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Inputs.IATANumber)}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.Inputs.IATANumberGuide)}</Text>\n </div>\n <TextBox placeholder={t(Translation.Step.Confirmation.Inputs.IATANumber)} wide {...formContext.register('IATANumber')} />\n </div>\n <LineBreak />\n </>\n )}\n <StepConfirmationCommentsComponent />\n <LineBreak />\n <GiftCardRedemption />\n {!exclusivePayment && (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Navigation.Menu.PaymentInformation)}</Headline>\n </div>\n <div className=\"u-marg-bottom rs-promotional-code-wrapper\">\n <PromotionalCodeInput />\n </div>\n {isFullyCoveredByGiftCard ? (\n <Alert type={AlertType.Success}>\n <div>\n <Text bold>No payment required</Text>\n <Text>Your gift card covers the full booking amount. No additional payment is required.</Text>\n </div>\n </Alert>\n ) : (\n <>\n <PaymentInformation />\n <div className=\"u-marg-top u-flex align-items-center\">\n <div className=\"u-flex align-items-center justify-content-start\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.Secured)}</strong>\n </Text>\n </div>\n </div>\n <SSLSecureBadge />\n </div>\n </>\n )}\n </div>\n <LineBreak />\n </>\n )}\n <StepConfirmationPoliciesSection />\n <div className=\"u-pad-top--light u-marg-bottom\">\n <StepConfirmationPolicyBlock />\n </div>\n {ConfirmationVerifyFeature.isActive() && (\n <>\n <LineBreak />\n <div>\n <StepConfirmationAcknowledgement />\n </div>\n </>\n )}\n </>\n );\n\n return (\n <form>\n {isBackFromPlanpay ? (\n <LargeLoader />\n ) : (\n <>\n <AutoAutoHeight open={!exclusivePayment || !isInPaymentMode}>{prePaymentInfo}</AutoAutoHeight>\n {exclusivePayment && (\n <AutoAutoHeight open={isInPaymentMode}>\n <ScrollToTop />\n {exclusivePayment.renderPaymentInput?.()}\n </AutoAutoHeight>\n )}\n </>\n )}\n </form>\n );\n}\n"]}
1
+ {"version":3,"file":"StepConfirmationForm.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useBasket } from '@frontend/contexts';\nimport { useConfirmationStep } from 'contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { useHistoryConsistentPush } from 'hooks/HistoryConsistentPush';\nimport React, { useEffect } from 'react';\nimport { 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 SSLSecureBadge from '@/components/generic/badging/SSLSecureBadge';\nimport BEButton from '@/components/generic/BEButton';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { PromotionalCodeInput } from '@/components/generic/PromotionalCodeInput';\nimport ScrollToTop from '@/components/generic/ScrollToTop';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport GiftCardRedemption from '@/components/steps/confirmation/GiftCardRedemption';\nimport PaymentInformation from '@/components/steps/confirmation/PaymentInformation';\nimport RoomContactDetails from '@/components/steps/confirmation/RoomContactDetails';\nimport StepConfirmationAcknowledgement from '@/components/steps/confirmation/StepConfirmationAcknowledgement';\nimport { StepConfirmationCommentsComponent } from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nimport StepConfirmationPoliciesSection from '@/components/steps/confirmation/StepConfirmationPoliciesSection';\nimport StepConfirmationPolicyBlock from '@/components/steps/confirmation/StepConfirmationPolicyBlock';\nimport { ConfirmationFormValues } from '@/models/Confirmation';\nimport ConfirmationVerifyFeature from '@/providers/feature/ConfirmationVerifyFeature';\nimport ShowIATANumberOnCheckoutFeature from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nimport { Color } from '@/util/Color';\nimport getStepRoom from '@/util/GetStepRoom';\nimport { usePaymentHelper } from '@/util/usePaymentHelper';\n\nexport default function StepConfirmationForm() {\n const { t } = useTranslation();\n\n const formContext = useFormContext<ConfirmationFormValues>();\n const { isInPaymentMode, isBackFromPlanpay, bookingSource } = useConfirmationStep();\n const basketContext = useBasket();\n\n const historyConsistentPush = useHistoryConsistentPush();\n\n const { exclusivePayment } = usePaymentHelper();\n\n const returnToPickRooms = async () => {\n historyConsistentPush(getStepRoom().getStepUrl());\n };\n\n // Check if gift card fully covers the booking\n const giftCardAmount = Math.abs(formContext.watch('giftCardAmount') || 0);\n const totalBookingAmount = basketContext.getTotalPrice() || 0;\n const isFullyCoveredByGiftCard = giftCardAmount > 0 && giftCardAmount >= totalBookingAmount;\n\n // Ensure paymentMethod is set when gift card covers everything\n useEffect(() => {\n if (isFullyCoveredByGiftCard && !formContext.getValues('paymentMethod')) {\n formContext.setValue('paymentMethod', 'VGS');\n }\n }, [isFullyCoveredByGiftCard]);\n\n const prePaymentInfo = (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline bold>{t(Translation.Step.Confirmation.GuestDetails)}</Headline>\n </div>\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.AlmostDone, { required: '*' })}</strong>\n </Text>\n </div>\n <RoomContactDetails />\n {bookingSource === 'inline' && basketContext.canAddAnotherRoom ? (\n <Alert type={AlertType.Accent2} heavyPadding>\n <div className=\"u-flex u-w-100 flex-wrap flex-xl-nowrap\">\n <div>\n <Text color={Color.Accent} bold>\n {t(Translation.Step.Confirmation.WantMoreRooms)}\n </Text>\n <Text color={Color.Navy}>{t(Translation.Step.Confirmation.YouCanAddAndEditRooms)}</Text>\n </div>\n <div className=\"d-flex align-items-center u-marg-top@xl-\">\n <BEButton filled primary icon={IconType.Add} iconPosition=\"left\" onClick={returnToPickRooms}>\n {t(Translation.Step.Confirmation.AddMoreRooms)}\n </BEButton>\n </div>\n </div>\n </Alert>\n ) : (\n <></>\n )}\n {ShowIATANumberOnCheckoutFeature.isActive() && (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.TravelAgent)}</Headline>\n </div>\n\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Inputs.IATANumber)}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.Inputs.IATANumberGuide)}</Text>\n </div>\n <TextBox placeholder={t(Translation.Step.Confirmation.Inputs.IATANumber)} wide {...formContext.register('IATANumber')} />\n </div>\n <LineBreak />\n </>\n )}\n <StepConfirmationCommentsComponent />\n <LineBreak />\n <GiftCardRedemption />\n {!exclusivePayment && (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Navigation.Menu.PaymentInformation)}</Headline>\n </div>\n <div className=\"u-marg-bottom rs-promotional-code-wrapper\">\n <PromotionalCodeInput />\n </div>\n {isFullyCoveredByGiftCard ? (\n <Alert type={AlertType.Success}>\n <div>\n <Text bold>No payment required</Text>\n <Text>Your gift card covers the full booking amount. No additional payment is required.</Text>\n </div>\n </Alert>\n ) : (\n <>\n <PaymentInformation />\n <div className=\"u-marg-top u-flex align-items-center\">\n <div className=\"u-flex align-items-center justify-content-start\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.Secured)}</strong>\n </Text>\n </div>\n </div>\n <SSLSecureBadge />\n </div>\n </>\n )}\n </div>\n <LineBreak />\n </>\n )}\n <StepConfirmationPoliciesSection />\n <div className=\"u-pad-top--light u-marg-bottom\">\n <StepConfirmationPolicyBlock />\n </div>\n {ConfirmationVerifyFeature.isActive() && (\n <>\n <LineBreak />\n <div>\n <StepConfirmationAcknowledgement />\n </div>\n </>\n )}\n </>\n );\n\n return (\n <form>\n {isBackFromPlanpay ? (\n <LargeLoader />\n ) : (\n <>\n <AutoAutoHeight open={!exclusivePayment || !isInPaymentMode}>{prePaymentInfo}</AutoAutoHeight>\n {exclusivePayment && (\n <AutoAutoHeight open={isInPaymentMode}>\n <ScrollToTop />\n {exclusivePayment.renderPaymentInput?.()}\n </AutoAutoHeight>\n )}\n </>\n )}\n </form>\n );\n}\n"]}
@@ -83,9 +83,9 @@ function PeoplePickerRow(pickerProps) {
83
83
  onInputChanged({ infants: val });
84
84
  };
85
85
  const { getMaxSelectableAdults, showChildren, getMaxSelectableChildren, getMaxSelectableInfants } = (0, useSearchScopeHook_1.useSearchScopeHook)();
86
- const maxAdults = getMaxSelectableAdults({ adults, children });
86
+ const maxAdults = getMaxSelectableAdults({ adults, children, infants });
87
87
  const maxChildren = getMaxSelectableChildren({ adults });
88
- const maxInfants = getMaxSelectableInfants();
88
+ const maxInfants = getMaxSelectableInfants({ adults });
89
89
  const roomName = ((_b = (_a = hotel === null || hotel === void 0 ? void 0 : hotel.rooms) === null || _a === void 0 ? void 0 : _a[roomCode]) === null || _b === void 0 ? void 0 : _b.name) || '';
90
90
  const containerRef = (0, react_1.useRef)(null);
91
91
  const [containerHeight, setContainerHeight] = (0, react_1.useState)(0);
@@ -1 +1 @@
1
- {"version":3,"file":"PeoplePickerRow.js","sourceRoot":"/","sources":["src/components/steps/date/PeoplePickerRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { animated, useSpring } from '@react-spring/web';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { AgedBetweenLabel } from '@/components/generic/AgedBetweenLabel/AgedBetweenLabel';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { Color } from '@/util/Color';\n\nexport interface PeoplePickerDetails {\n adults: number;\n children: number;\n infants: number;\n promoCode: string;\n roomCode: string;\n}\n\nexport interface PeoplePickerRowProps {\n details: PeoplePickerDetails;\n\n number: number;\n onChange?: (details: PeoplePickerDetails) => void;\n onRemove?: () => void;\n}\n\nexport default function PeoplePickerRow(pickerProps: PeoplePickerRowProps) {\n const { t } = useTranslation();\n const { adults, children, infants, roomCode } = pickerProps.details;\n\n const { hotel } = useCurrentHotel();\n\n const [animatedIn, setAnimation] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n setAnimation(true);\n }, []);\n\n const onInputChanged = (val: any) => {\n if (pickerProps.onChange) {\n pickerProps.onChange({\n ...pickerProps.details,\n ...val,\n });\n }\n };\n\n const onClose = () => {\n if (pickerProps.onRemove) {\n setAnimation(false);\n setTimeout(() => {\n pickerProps.onRemove?.();\n }, 500);\n }\n };\n const adultsChangeHandler = (val: any) => {\n onInputChanged({ adults: val });\n };\n const childrenChangeHandler = (val: any) => {\n onInputChanged({ children: val });\n };\n const infantChangeHandler = (val: any) => {\n onInputChanged({ infants: val });\n };\n\n const { getMaxSelectableAdults, showChildren, getMaxSelectableChildren, getMaxSelectableInfants } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults, children });\n const maxChildren = getMaxSelectableChildren({ adults });\n const maxInfants = getMaxSelectableInfants();\n const roomName = hotel?.rooms?.[roomCode]?.name || '';\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerHeight, setContainerHeight] = useState(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerHeight(entry.contentRect.height);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, [containerRef.current]);\n\n const heightProps = useSpring({\n height: containerHeight + 33, // 33 is for <LineBreak>\n opacity: animatedIn ? 1 : 0,\n });\n\n return (\n <animated.div ref={firstUpdate} style={heightProps}>\n <div className=\"people-picker--item\" ref={containerRef}>\n {pickerProps.number > 0 && (\n <div className=\"people-picker--item-row\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <strong>\n {t(Translation.Misc.Room)}&nbsp;{pickerProps.number + 1}\n </strong>\n </Text>\n <div className=\"people-picker--item-remove\" onClick={onClose}>\n <Icon icon={IconType.Close} color={Color.Grey} />\n </div>\n </div>\n )}\n {roomName && (\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Room)}</Text>\n <Text className=\"room-name\">{roomName}</Text>\n </div>\n )}\n\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Adult_plural)}</Text>\n <NumberIncrement number={adults} min={1} max={maxAdults} onChange={adultsChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.minAdultAge} max={hotel?.maxAdultAge} />\n </div>\n\n {showChildren ? (\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Child_plural)}</Text>\n <NumberIncrement number={children} min={0} max={maxChildren} onChange={childrenChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.childConfiguration?.childRange?.min} max={hotel?.childConfiguration?.childRange?.max} />\n </div>\n ) : null}\n\n {hotel?.childConfiguration?.supportInfants ? (\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Infant_plural)}</Text>\n <NumberIncrement number={infants} min={0} max={maxInfants} onChange={infantChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.childConfiguration?.infantRange?.min} max={hotel?.childConfiguration?.infantRange?.max} />\n </div>\n ) : null}\n </div>\n <LineBreak smallMargins />\n </animated.div>\n );\n}\n"]}
1
+ {"version":3,"file":"PeoplePickerRow.js","sourceRoot":"/","sources":["src/components/steps/date/PeoplePickerRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport { animated, useSpring } from '@react-spring/web';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { AgedBetweenLabel } from '@/components/generic/AgedBetweenLabel/AgedBetweenLabel';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport LineBreak from '@/components/generic/LineBreak';\nimport NumberIncrement from '@/components/generic/NumberIncrement';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { Color } from '@/util/Color';\n\nexport interface PeoplePickerDetails {\n adults: number;\n children: number;\n infants: number;\n promoCode: string;\n roomCode: string;\n}\n\nexport interface PeoplePickerRowProps {\n details: PeoplePickerDetails;\n\n number: number;\n onChange?: (details: PeoplePickerDetails) => void;\n onRemove?: () => void;\n}\n\nexport default function PeoplePickerRow(pickerProps: PeoplePickerRowProps) {\n const { t } = useTranslation();\n const { adults, children, infants, roomCode } = pickerProps.details;\n\n const { hotel } = useCurrentHotel();\n\n const [animatedIn, setAnimation] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n setAnimation(true);\n }, []);\n\n const onInputChanged = (val: any) => {\n if (pickerProps.onChange) {\n pickerProps.onChange({\n ...pickerProps.details,\n ...val,\n });\n }\n };\n\n const onClose = () => {\n if (pickerProps.onRemove) {\n setAnimation(false);\n setTimeout(() => {\n pickerProps.onRemove?.();\n }, 500);\n }\n };\n const adultsChangeHandler = (val: any) => {\n onInputChanged({ adults: val });\n };\n const childrenChangeHandler = (val: any) => {\n onInputChanged({ children: val });\n };\n const infantChangeHandler = (val: any) => {\n onInputChanged({ infants: val });\n };\n\n const { getMaxSelectableAdults, showChildren, getMaxSelectableChildren, getMaxSelectableInfants } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults, children, infants });\n const maxChildren = getMaxSelectableChildren({ adults });\n const maxInfants = getMaxSelectableInfants({ adults });\n const roomName = hotel?.rooms?.[roomCode]?.name || '';\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerHeight, setContainerHeight] = useState(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerHeight(entry.contentRect.height);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n resizeObserver.unobserve(containerRef.current);\n }\n };\n }, [containerRef.current]);\n\n const heightProps = useSpring({\n height: containerHeight + 33, // 33 is for <LineBreak>\n opacity: animatedIn ? 1 : 0,\n });\n\n return (\n <animated.div ref={firstUpdate} style={heightProps}>\n <div className=\"people-picker--item\" ref={containerRef}>\n {pickerProps.number > 0 && (\n <div className=\"people-picker--item-row\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n <strong>\n {t(Translation.Misc.Room)}&nbsp;{pickerProps.number + 1}\n </strong>\n </Text>\n <div className=\"people-picker--item-remove\" onClick={onClose}>\n <Icon icon={IconType.Close} color={Color.Grey} />\n </div>\n </div>\n )}\n {roomName && (\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Room)}</Text>\n <Text className=\"room-name\">{roomName}</Text>\n </div>\n )}\n\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Adult_plural)}</Text>\n <NumberIncrement number={adults} min={1} max={maxAdults} onChange={adultsChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.minAdultAge} max={hotel?.maxAdultAge} />\n </div>\n\n {showChildren ? (\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Child_plural)}</Text>\n <NumberIncrement number={children} min={0} max={maxChildren} onChange={childrenChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.childConfiguration?.childRange?.min} max={hotel?.childConfiguration?.childRange?.max} />\n </div>\n ) : null}\n\n {hotel?.childConfiguration?.supportInfants ? (\n <div>\n <div className=\"people-picker--item-row\">\n <Text>{t(Translation.Step.Date.Infant_plural)}</Text>\n <NumberIncrement number={infants} min={0} max={maxInfants} onChange={infantChangeHandler} />\n </div>\n <AgedBetweenLabel min={hotel?.childConfiguration?.infantRange?.min} max={hotel?.childConfiguration?.infantRange?.max} />\n </div>\n ) : null}\n </div>\n <LineBreak smallMargins />\n </animated.div>\n );\n}\n"]}
@@ -106,6 +106,7 @@ function RoomListCrossSellBlock(props) {
106
106
  BookingAPI_1.default.Availability.fetchAvailabilityData(row, props.hotelId, memberNumber, true)
107
107
  .catch((_) => [])
108
108
  .then((hotelRooms) => {
109
+ hotelRooms = hotelRooms === null || hotelRooms === void 0 ? void 0 : hotelRooms.filter((room) => room.isAvailable());
109
110
  if (hotelRooms === null || hotelRooms === void 0 ? void 0 : hotelRooms.length) {
110
111
  setRooms(hotelRooms);
111
112
  setIsLoading(false);
@@ -1 +1 @@
1
- {"version":3,"file":"RoomListCrossSellBlock.js","sourceRoot":"/","sources":["src/components/steps/room/RoomListCrossSellBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport React, { ReactElement, useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { API_DATE_FORMAT } from '@/api/BaseAPI';\nimport API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport { Room } from '@/models/Room/Room';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\n\nexport interface RoomListCrossSellBlockProps {\n hotelId: string;\n}\n\nexport default function RoomListCrossSellBlock(props: RoomListCrossSellBlockProps): ReactElement | null {\n const { t } = useTranslation();\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n\n const [isAvailable, setIsAvailable] = useState(false); // True if the dates were found with a calendar search\n const [isReallyAvailable, setIsReallyAvailable] = useState(true); // True if the dates were found with an availability search\n const [isLoading, setIsLoading] = useState(true);\n const [imageUrl, setImageUrl] = useState('');\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [link, setLink] = useState('');\n const [rooms, setRooms] = useState<Room[]>([]);\n const { memberNumber } = useSignedInMember();\n\n useEffect(() => {\n const row = basketContext.selectedBasketRow;\n\n if (!row) {\n return;\n }\n\n API.Availability.getCheapestPricePerDay(\n row.getStartDate(),\n row.getEndDate(),\n row.getAdults(),\n row.getChildren(),\n row.getInfants(),\n row.getPromoCode(),\n row.getRoomCode(),\n '',\n props.hotelId,\n memberNumber,\n true\n )\n .catch()\n .then((dayPrices) => {\n if (dayPrices) {\n let allFound = true;\n for (let date = row.getStartDate(); date.isBefore(row.getEndDate(), 'day'); date = date.add(1, 'day')) {\n if (!dayPrices[date.format(API_DATE_FORMAT)]) {\n allFound = false;\n break;\n }\n }\n setIsAvailable(allFound);\n setIsReallyAvailable(true);\n if (allFound) {\n setIsLoading(true);\n const crossSellHotelInfo = API.Availability.getCrossSellHotelInfo(props.hotelId);\n setName(crossSellHotelInfo.name);\n setImageUrl(crossSellHotelInfo.image || '');\n setDescription(crossSellHotelInfo.description);\n\n const params: string[] = ['arrive=' + row.getStartDate().format('YYYY-M-D'), 'depart=' + row.getEndDate().format('YYYY-M-D')];\n if (row.getAdults() > 1) {\n params.push('adults=' + row.getAdults());\n }\n if (row.getChildren() > 0) {\n params.push('children=' + row.getChildren());\n }\n if (row.getInfants() > 0) {\n params.push('infants=' + row.getInfants());\n }\n if (row.getPromoCode()) {\n params.push('promocode=' + row.getPromoCode());\n }\n setLink(crossSellHotelInfo.checkoutUrl + '#/step/room/?' + params.join('&'));\n\n API.Availability.fetchAvailabilityData(row, props.hotelId, memberNumber, true)\n .catch((_) => [])\n .then((hotelRooms) => {\n if (hotelRooms?.length) {\n setRooms(hotelRooms);\n setIsLoading(false);\n } else {\n setIsReallyAvailable(false);\n setIsLoading(false);\n }\n });\n }\n }\n });\n }, [basketContext.selectedBasketRow]);\n\n return isAvailable ? (\n <div className=\"u-marg-top--heavy u-marg-bottom\">\n <div className=\"cross-sell-module\">\n <div className=\"cross-sell-module--image\" style={{ backgroundImage: `url('${ImageProvider.resizeImage(imageUrl, ImageSize.Original)}')` }} />\n <div className=\"cross-sell-module--content u-pad--heavy u-pad@m-\">\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"cross-sell-module--content-title u-marg-bottom--light\">\n <Headline bold size={isReallyAvailable ? 'large' : 'normal'}>\n {isLoading\n ? t(Translation.Step.Room.CrossSellBlock.AvailabilityNearBy1)\n : isReallyAvailable\n ? t(Translation.Step.Room.CrossSellBlock.AvailabilityNearBy2)\n : t(Translation.Step.Room.CrossSellBlock.DateUnavailable)}\n </Headline>\n </div>\n {isReallyAvailable && (\n <div className=\"cross-sell-module--content-description u-marg-bottom--light\">\n <Text color={Color.DarkGrey} type={TextType.Body}>\n <strong style={{ color: Color.Accent }}>{name}</strong>\n <div dangerouslySetInnerHTML={{ __html: description }}></div>\n </Text>\n </div>\n )}\n </div>\n\n {isLoading ? (\n <SmallSpinner />\n ) : (\n <>\n {rooms.slice(0, 4).map((room, index) => {\n const roomLink = link + '&room=' + room.code;\n let classNames = 'u-flex align-items-end';\n if (index < rooms.length - 1) {\n classNames += ' u-pad-bottom u-border-bottom u-marg-bottom';\n }\n return (\n <a key={room.code} className={classNames} href={roomLink} target=\"_blank\" rel=\"noreferrer\">\n <div className=\"u-flex flex-column align-items-start justify-content-start\">\n <Text type={TextType.Body} color={Color.Accent} bold>\n {room.name}\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Step.Room.Sleeps, {\n maxOccupancy: room.occupancy,\n })}\n </Text>\n </div>\n <div className=\"u-flex flex-column align-items-end align-items-md-end\">\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n {t(Translation.Misc.From)}\n </Text>\n <Text type={TextType.Body} color={Color.Accent} bold>\n <Currency>{room.getLowestPrice(true)}</Currency>\n </Text>\n </div>\n </a>\n );\n })}\n </>\n )}\n\n {isReallyAvailable && (\n <div className=\"u-marg-top--light u-flex justify-content-start u-w-100@m- u-marg-top--heavy\">\n <a\n className={'link-button --primary --filled --success --icon-right --normal' + (context.screenSize <= ScreenSize.Medium ? ' --wide' : '')}\n tabIndex={0}\n type=\"button\"\n href={link}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <span>\n See all {rooms.length} rooms\n <Icon icon={IconType.ArrowRight} size=\"1em\" />\n </span>\n </a>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null;\n}\n"]}
1
+ {"version":3,"file":"RoomListCrossSellBlock.js","sourceRoot":"/","sources":["src/components/steps/room/RoomListCrossSellBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport React, { ReactElement, useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { API_DATE_FORMAT } from '@/api/BaseAPI';\nimport API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useSignedInMember } from '@/hooks/useSignedInMember';\nimport { Room } from '@/models/Room/Room';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\nimport { Color } from '@/util/Color';\nimport ScreenSize from '@/util/ScreenSize';\n\nexport interface RoomListCrossSellBlockProps {\n hotelId: string;\n}\n\nexport default function RoomListCrossSellBlock(props: RoomListCrossSellBlockProps): ReactElement | null {\n const { t } = useTranslation();\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n\n const [isAvailable, setIsAvailable] = useState(false); // True if the dates were found with a calendar search\n const [isReallyAvailable, setIsReallyAvailable] = useState(true); // True if the dates were found with an availability search\n const [isLoading, setIsLoading] = useState(true);\n const [imageUrl, setImageUrl] = useState('');\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [link, setLink] = useState('');\n const [rooms, setRooms] = useState<Room[]>([]);\n const { memberNumber } = useSignedInMember();\n\n useEffect(() => {\n const row = basketContext.selectedBasketRow;\n\n if (!row) {\n return;\n }\n\n API.Availability.getCheapestPricePerDay(\n row.getStartDate(),\n row.getEndDate(),\n row.getAdults(),\n row.getChildren(),\n row.getInfants(),\n row.getPromoCode(),\n row.getRoomCode(),\n '',\n props.hotelId,\n memberNumber,\n true\n )\n .catch()\n .then((dayPrices) => {\n if (dayPrices) {\n let allFound = true;\n for (let date = row.getStartDate(); date.isBefore(row.getEndDate(), 'day'); date = date.add(1, 'day')) {\n if (!dayPrices[date.format(API_DATE_FORMAT)]) {\n allFound = false;\n break;\n }\n }\n setIsAvailable(allFound);\n setIsReallyAvailable(true);\n if (allFound) {\n setIsLoading(true);\n const crossSellHotelInfo = API.Availability.getCrossSellHotelInfo(props.hotelId);\n setName(crossSellHotelInfo.name);\n setImageUrl(crossSellHotelInfo.image || '');\n setDescription(crossSellHotelInfo.description);\n\n const params: string[] = ['arrive=' + row.getStartDate().format('YYYY-M-D'), 'depart=' + row.getEndDate().format('YYYY-M-D')];\n if (row.getAdults() > 1) {\n params.push('adults=' + row.getAdults());\n }\n if (row.getChildren() > 0) {\n params.push('children=' + row.getChildren());\n }\n if (row.getInfants() > 0) {\n params.push('infants=' + row.getInfants());\n }\n if (row.getPromoCode()) {\n params.push('promocode=' + row.getPromoCode());\n }\n setLink(crossSellHotelInfo.checkoutUrl + '#/step/room/?' + params.join('&'));\n\n API.Availability.fetchAvailabilityData(row, props.hotelId, memberNumber, true)\n .catch((_) => [])\n .then((hotelRooms) => {\n hotelRooms = hotelRooms?.filter((room) => room.isAvailable());\n if (hotelRooms?.length) {\n setRooms(hotelRooms);\n setIsLoading(false);\n } else {\n setIsReallyAvailable(false);\n setIsLoading(false);\n }\n });\n }\n }\n });\n }, [basketContext.selectedBasketRow]);\n\n return isAvailable ? (\n <div className=\"u-marg-top--heavy u-marg-bottom\">\n <div className=\"cross-sell-module\">\n <div className=\"cross-sell-module--image\" style={{ backgroundImage: `url('${ImageProvider.resizeImage(imageUrl, ImageSize.Original)}')` }} />\n <div className=\"cross-sell-module--content u-pad--heavy u-pad@m-\">\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"cross-sell-module--content-title u-marg-bottom--light\">\n <Headline bold size={isReallyAvailable ? 'large' : 'normal'}>\n {isLoading\n ? t(Translation.Step.Room.CrossSellBlock.AvailabilityNearBy1)\n : isReallyAvailable\n ? t(Translation.Step.Room.CrossSellBlock.AvailabilityNearBy2)\n : t(Translation.Step.Room.CrossSellBlock.DateUnavailable)}\n </Headline>\n </div>\n {isReallyAvailable && (\n <div className=\"cross-sell-module--content-description u-marg-bottom--light\">\n <Text color={Color.DarkGrey} type={TextType.Body}>\n <strong style={{ color: Color.Accent }}>{name}</strong>\n <div dangerouslySetInnerHTML={{ __html: description }}></div>\n </Text>\n </div>\n )}\n </div>\n\n {isLoading ? (\n <SmallSpinner />\n ) : (\n <>\n {rooms.slice(0, 4).map((room, index) => {\n const roomLink = link + '&room=' + room.code;\n let classNames = 'u-flex align-items-end';\n if (index < rooms.length - 1) {\n classNames += ' u-pad-bottom u-border-bottom u-marg-bottom';\n }\n return (\n <a key={room.code} className={classNames} href={roomLink} target=\"_blank\" rel=\"noreferrer\">\n <div className=\"u-flex flex-column align-items-start justify-content-start\">\n <Text type={TextType.Body} color={Color.Accent} bold>\n {room.name}\n </Text>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Step.Room.Sleeps, {\n maxOccupancy: room.occupancy,\n })}\n </Text>\n </div>\n <div className=\"u-flex flex-column align-items-end align-items-md-end\">\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n {t(Translation.Misc.From)}\n </Text>\n <Text type={TextType.Body} color={Color.Accent} bold>\n <Currency>{room.getLowestPrice(true)}</Currency>\n </Text>\n </div>\n </a>\n );\n })}\n </>\n )}\n\n {isReallyAvailable && (\n <div className=\"u-marg-top--light u-flex justify-content-start u-w-100@m- u-marg-top--heavy\">\n <a\n className={'link-button --primary --filled --success --icon-right --normal' + (context.screenSize <= ScreenSize.Medium ? ' --wide' : '')}\n tabIndex={0}\n type=\"button\"\n href={link}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <span>\n See all {rooms.length} rooms\n <Icon icon={IconType.ArrowRight} size=\"1em\" />\n </span>\n </a>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null;\n}\n"]}
@@ -140,9 +140,9 @@ const UserSearchSummaryRow = ({ row, index }) => {
140
140
  infants: row === null || row === void 0 ? void 0 : row.getInfants(),
141
141
  });
142
142
  const { getMaxSelectableAdults, showChildren, getMaxSelectableInfants, getMaxSelectableChildren } = (0, useSearchScopeHook_1.useSearchScopeHook)();
143
- const maxAdults = getMaxSelectableAdults({ adults: guests.adults, children: guests.children });
143
+ const maxAdults = getMaxSelectableAdults({ adults: guests.adults, children: guests.children, infants: guests.infants });
144
144
  const maxChildren = getMaxSelectableChildren({ adults: guests.adults });
145
- const maxInfants = getMaxSelectableInfants();
145
+ const maxInfants = getMaxSelectableInfants({ adults: guests.adults });
146
146
  const removeButton = (react_1.default.createElement(Tooltip_1.default, { title: canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.', followElement: removeButtonRef === null || removeButtonRef === void 0 ? void 0 : removeButtonRef.current, wrapperClasses: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__remove-tooltip'] },
147
147
  react_1.default.createElement("div", { className: UserSearchSummaryRow_module_scss_1.default['user-search-summary-row__remove'], onClick: removeRoomOnClick, ref: removeButtonRef },
148
148
  react_1.default.createElement(BEButton_1.default, { textColor: textColor, isText: true, icon: Icon_1.IconType.Close, iconPosition: "right", stopIconAnimation: true, disabled: !canRemove, onClick: removeRoomOnClick }))));
@@ -1 +1 @@
1
- {"version":3,"file":"UserSearchSummaryRow.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { default as cx } from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { useWindowSize } from '@/hooks/WindowSize';\nimport BasketRow from '@/models/BasketRow';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport { EBookingWizardSection, EBookingWizardTheme, StateSectionsDefault } from '../../../generic/BookingWizard/BookingWizard';\nimport { BookingWizardContextType, BookingWizardOnBooking } from '../../../generic/BookingWizard/BookingWizardContext';\nimport { UserSearchSummaryForm } from './UserSearchSummaryForm';\nimport styles from './UserSearchSummaryRow.module.scss';\n\ntype UserSearchSummaryRowProps = {\n row: BasketRow;\n index: number;\n};\n\nexport const UserSearchSummaryRow = ({ row, index }: UserSearchSummaryRowProps) => {\n const { t } = useTranslation();\n const removeButtonRef = useRef<any>();\n const { isAccent2ColorDark, hotel } = useCurrentHotel();\n\n const { selectedBasketRow, currentBasketRows, updateBasketRow, removeBasketRow, selectBasketRow } = useContext(BasketContext);\n\n const engineContext = useContext(BookingEngineContext);\n const { isMobile } = useWindowSize();\n\n const [collapsed, setCollapsed] = useState<boolean>(true);\n\n const isSelectedRow = useMemo(() => {\n return selectedBasketRow?.getID() === row?.getID();\n }, [selectedBasketRow]);\n\n const canRemove = currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n removeBasketRow(row);\n };\n\n const updatePeopleValues = ({ adults, children, infants, updatedPromoCode }: { adults?: number; children?: number; infants?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((infants || infants === 0) && infants !== row.getInfants()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setInfants(infants);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n updateBasketRow(row);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (selectedBasketRow) {\n selectedBasketRow.setPromoCode(code);\n updateBasketRow(selectedBasketRow);\n }\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n updateBasketRow(row);\n };\n\n const setGuest = (guests: BookingWizardOnBooking['guests']) => {\n updatePeopleValues({\n adults: guests.adults,\n children: guests.children,\n infants: guests.infants,\n });\n };\n\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n\n const onClickCancelRoomChanges = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(null);\n };\n const onClickEditRoom = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(row);\n };\n\n const isValid = row.isValid();\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n\n const sizeMediumDown = engineContext.screenSize <= ScreenSize.Medium;\n\n const shouldTextBeWhite = (isValid ? isAccent2ColorDark : false) && isSelectedRow;\n\n const textColor = shouldTextBeWhite ? Color.White : undefined;\n\n const [guests, setGuests] = useState<{\n adults: number;\n children: number;\n infants: number;\n }>({\n adults: row?.getAdults(),\n children: row?.getChildren(),\n infants: row?.getInfants(),\n });\n\n const { getMaxSelectableAdults, showChildren, getMaxSelectableInfants, getMaxSelectableChildren } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults: guests.adults, children: guests.children });\n const maxChildren = getMaxSelectableChildren({ adults: guests.adults });\n const maxInfants = getMaxSelectableInfants();\n\n const removeButton = (\n <Tooltip\n title={canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}\n followElement={removeButtonRef?.current}\n wrapperClasses={styles['user-search-summary-row__remove-tooltip']}\n >\n <div className={styles['user-search-summary-row__remove']} onClick={removeRoomOnClick} ref={removeButtonRef}>\n <BEButton textColor={textColor} isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!canRemove} onClick={removeRoomOnClick} />\n </div>\n </Tooltip>\n );\n\n const toggleButton = (\n <div className={styles['user-search-summary-row__collapse']}>\n <BEButton\n isText\n icon={collapsed ? IconType.ArrowDown3 : IconType.ArrowUp3}\n iconPosition=\"right\"\n stopIconAnimation\n onClick={() => {\n setCollapsed((prev) => !prev);\n }}\n />\n </div>\n );\n\n const bookingWizardContext: BookingWizardContextType = {\n layout: 'booking-summary',\n theme: EBookingWizardTheme.Default,\n type: sizeMediumDown ? 'top-sheet' : 'popup',\n isImagesTheme: false,\n isImagesThemeMobile: false,\n activeSection: null,\n onNextHandler: (currentSection: EBookingWizardSection) => {},\n onPrevHandler: (currentSection: EBookingWizardSection) => {},\n stateSections: StateSectionsDefault,\n };\n\n if (isValid && !isSelectedRow) {\n return (\n <div className={`${styles['user-completed-summary-row']} u-flex w-100`}>\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n {showChildren ? (\n <>\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <>\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(row.getInfants(), Translation.Step.Date.Infant, t)}\n </>\n ) : null}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {row.getPromoCode()}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={onClickEditRoom}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cx(styles['user-search-summary-row'], {\n [styles['--selected']]: isSelectedRow,\n [styles['--valid']]: isValid,\n [styles['--has-dark-bg']]: shouldTextBeWhite,\n })}\n >\n <div className={styles['user-search-summary-row--inner']}>\n <div className={styles['user-search-summary-row__group']}>\n <FloatingDatePicker\n startDate={row.getStartDate()}\n endDate={row.getEndDate()}\n selectedDateChanged={updateDateValues}\n isAboveNav\n className={styles['user-search-summary-row__input']}\n >\n <Tooltip disabled={!isSelectedRow} title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <div className={styles['user-search-summary-card-date-range']}>\n <div className={styles['user-search-summary-card-date-range--item']}>\n <div className={styles['user-search-summary-card-label']}>{t(Translation.Misc.CheckIn)}</div>\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n </div>\n <div className={styles['user-search-summary-card-date-range--icon']}>\n <Icon icon={IconType.ArrowRight2} color={shouldTextBeWhite ? Color.White : undefined} />\n </div>\n <div className={styles['user-search-summary-card-date-range--item']}>\n <div className={styles['user-search-summary-card-label']}>{t(Translation.Misc.CheckOut)}</div>\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </div>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n {isMobile ? (\n <div className=\"w-100\">\n <AutoAutoHeight open={!collapsed}>\n <div className=\"w-100 u-flex flex-column\">\n <UserSearchSummaryForm\n row={row}\n hotel={hotel}\n isSelectedRow={isSelectedRow}\n bookingWizardContext={bookingWizardContext}\n maxAdults={maxAdults}\n maxChildren={maxChildren}\n maxInfants={maxInfants}\n showChildren={showChildren}\n setGuest={setGuest}\n setGuests={setGuests}\n changePromoCode={changePromoCode}\n textColor={textColor}\n />\n </div>\n </AutoAutoHeight>\n </div>\n ) : (\n <UserSearchSummaryForm\n row={row}\n hotel={hotel}\n isSelectedRow={isSelectedRow}\n bookingWizardContext={bookingWizardContext}\n maxAdults={maxAdults}\n maxChildren={maxChildren}\n maxInfants={maxInfants}\n showChildren={showChildren}\n setGuest={setGuest}\n setGuests={setGuests}\n changePromoCode={changePromoCode}\n textColor={textColor}\n />\n )}\n </div>\n\n <div className={styles['user-search-summary-row--buttons']}>\n {isSelectedRow && isValid ? (\n <BEButton isText size=\"tiny\" onClick={onClickCancelRoomChanges} textColor={textColor}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n ) : (\n <div>\n {!!isMobile && toggleButton}\n {removeButton}\n </div>\n )}\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"UserSearchSummaryRow.js","sourceRoot":"/","sources":["src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { default as cx } from 'classnames';\nimport dayjs from 'dayjs';\nimport React, { useContext, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport BEButton from '@/components/generic/BEButton';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport { useWindowSize } from '@/hooks/WindowSize';\nimport BasketRow from '@/models/BasketRow';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport StringHelper from '@/util/StringHelper';\n\nimport { EBookingWizardSection, EBookingWizardTheme, StateSectionsDefault } from '../../../generic/BookingWizard/BookingWizard';\nimport { BookingWizardContextType, BookingWizardOnBooking } from '../../../generic/BookingWizard/BookingWizardContext';\nimport { UserSearchSummaryForm } from './UserSearchSummaryForm';\nimport styles from './UserSearchSummaryRow.module.scss';\n\ntype UserSearchSummaryRowProps = {\n row: BasketRow;\n index: number;\n};\n\nexport const UserSearchSummaryRow = ({ row, index }: UserSearchSummaryRowProps) => {\n const { t } = useTranslation();\n const removeButtonRef = useRef<any>();\n const { isAccent2ColorDark, hotel } = useCurrentHotel();\n\n const { selectedBasketRow, currentBasketRows, updateBasketRow, removeBasketRow, selectBasketRow } = useContext(BasketContext);\n\n const engineContext = useContext(BookingEngineContext);\n const { isMobile } = useWindowSize();\n\n const [collapsed, setCollapsed] = useState<boolean>(true);\n\n const isSelectedRow = useMemo(() => {\n return selectedBasketRow?.getID() === row?.getID();\n }, [selectedBasketRow]);\n\n const canRemove = currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n removeBasketRow(row);\n };\n\n const updatePeopleValues = ({ adults, children, infants, updatedPromoCode }: { adults?: number; children?: number; infants?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((infants || infants === 0) && infants !== row.getInfants()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setInfants(infants);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n updateBasketRow(row);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (selectedBasketRow) {\n selectedBasketRow.setPromoCode(code);\n updateBasketRow(selectedBasketRow);\n }\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n updateBasketRow(row);\n };\n\n const setGuest = (guests: BookingWizardOnBooking['guests']) => {\n updatePeopleValues({\n adults: guests.adults,\n children: guests.children,\n infants: guests.infants,\n });\n };\n\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n\n const onClickCancelRoomChanges = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(null);\n };\n const onClickEditRoom = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n selectBasketRow(row);\n };\n\n const isValid = row.isValid();\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n\n const sizeMediumDown = engineContext.screenSize <= ScreenSize.Medium;\n\n const shouldTextBeWhite = (isValid ? isAccent2ColorDark : false) && isSelectedRow;\n\n const textColor = shouldTextBeWhite ? Color.White : undefined;\n\n const [guests, setGuests] = useState<{\n adults: number;\n children: number;\n infants: number;\n }>({\n adults: row?.getAdults(),\n children: row?.getChildren(),\n infants: row?.getInfants(),\n });\n\n const { getMaxSelectableAdults, showChildren, getMaxSelectableInfants, getMaxSelectableChildren } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults: guests.adults, children: guests.children, infants: guests.infants });\n const maxChildren = getMaxSelectableChildren({ adults: guests.adults });\n const maxInfants = getMaxSelectableInfants({ adults: guests.adults });\n\n const removeButton = (\n <Tooltip\n title={canRemove ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}\n followElement={removeButtonRef?.current}\n wrapperClasses={styles['user-search-summary-row__remove-tooltip']}\n >\n <div className={styles['user-search-summary-row__remove']} onClick={removeRoomOnClick} ref={removeButtonRef}>\n <BEButton textColor={textColor} isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!canRemove} onClick={removeRoomOnClick} />\n </div>\n </Tooltip>\n );\n\n const toggleButton = (\n <div className={styles['user-search-summary-row__collapse']}>\n <BEButton\n isText\n icon={collapsed ? IconType.ArrowDown3 : IconType.ArrowUp3}\n iconPosition=\"right\"\n stopIconAnimation\n onClick={() => {\n setCollapsed((prev) => !prev);\n }}\n />\n </div>\n );\n\n const bookingWizardContext: BookingWizardContextType = {\n layout: 'booking-summary',\n theme: EBookingWizardTheme.Default,\n type: sizeMediumDown ? 'top-sheet' : 'popup',\n isImagesTheme: false,\n isImagesThemeMobile: false,\n activeSection: null,\n onNextHandler: (currentSection: EBookingWizardSection) => {},\n onPrevHandler: (currentSection: EBookingWizardSection) => {},\n stateSections: StateSectionsDefault,\n };\n\n if (isValid && !isSelectedRow) {\n return (\n <div className={`${styles['user-completed-summary-row']} u-flex w-100`}>\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n {showChildren ? (\n <>\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </>\n ) : null}\n {hotel?.childConfiguration?.supportInfants ? (\n <>\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(row.getInfants(), Translation.Step.Date.Infant, t)}\n </>\n ) : null}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {row.getPromoCode()}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={onClickEditRoom}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cx(styles['user-search-summary-row'], {\n [styles['--selected']]: isSelectedRow,\n [styles['--valid']]: isValid,\n [styles['--has-dark-bg']]: shouldTextBeWhite,\n })}\n >\n <div className={styles['user-search-summary-row--inner']}>\n <div className={styles['user-search-summary-row__group']}>\n <FloatingDatePicker\n startDate={row.getStartDate()}\n endDate={row.getEndDate()}\n selectedDateChanged={updateDateValues}\n isAboveNav\n className={styles['user-search-summary-row__input']}\n >\n <Tooltip disabled={!isSelectedRow} title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <div className={styles['user-search-summary-card-date-range']}>\n <div className={styles['user-search-summary-card-date-range--item']}>\n <div className={styles['user-search-summary-card-label']}>{t(Translation.Misc.CheckIn)}</div>\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n </div>\n <div className={styles['user-search-summary-card-date-range--icon']}>\n <Icon icon={IconType.ArrowRight2} color={shouldTextBeWhite ? Color.White : undefined} />\n </div>\n <div className={styles['user-search-summary-card-date-range--item']}>\n <div className={styles['user-search-summary-card-label']}>{t(Translation.Misc.CheckOut)}</div>\n <Text color={shouldTextBeWhite ? Color.White : Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </div>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n {isMobile ? (\n <div className=\"w-100\">\n <AutoAutoHeight open={!collapsed}>\n <div className=\"w-100 u-flex flex-column\">\n <UserSearchSummaryForm\n row={row}\n hotel={hotel}\n isSelectedRow={isSelectedRow}\n bookingWizardContext={bookingWizardContext}\n maxAdults={maxAdults}\n maxChildren={maxChildren}\n maxInfants={maxInfants}\n showChildren={showChildren}\n setGuest={setGuest}\n setGuests={setGuests}\n changePromoCode={changePromoCode}\n textColor={textColor}\n />\n </div>\n </AutoAutoHeight>\n </div>\n ) : (\n <UserSearchSummaryForm\n row={row}\n hotel={hotel}\n isSelectedRow={isSelectedRow}\n bookingWizardContext={bookingWizardContext}\n maxAdults={maxAdults}\n maxChildren={maxChildren}\n maxInfants={maxInfants}\n showChildren={showChildren}\n setGuest={setGuest}\n setGuests={setGuests}\n changePromoCode={changePromoCode}\n textColor={textColor}\n />\n )}\n </div>\n\n <div className={styles['user-search-summary-row--buttons']}>\n {isSelectedRow && isValid ? (\n <BEButton isText size=\"tiny\" onClick={onClickCancelRoomChanges} textColor={textColor}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n ) : (\n <div>\n {!!isMobile && toggleButton}\n {removeButton}\n </div>\n )}\n </div>\n </div>\n );\n};\n"]}
@@ -12,12 +12,12 @@ const Select_1 = require("../../../generic/Select/Select");
12
12
  const useSearchScopeHook_1 = require("../../../../hooks/useSearchScopeHook");
13
13
  const StringHelper_1 = __importDefault(require("../../../../util/StringHelper"));
14
14
  function NumberOfAdultsPicker(props) {
15
- var _a, _b, _c, _d;
15
+ var _a, _b, _c, _d, _e;
16
16
  const { hotel } = (0, hooks_1.useCurrentHotel)();
17
17
  const { getMaxSelectableAdults } = (0, useSearchScopeHook_1.useSearchScopeHook)();
18
- const maxAdults = getMaxSelectableAdults({ adults: (_a = props.row) === null || _a === void 0 ? void 0 : _a.getAdults(), children: (_b = props.row) === null || _b === void 0 ? void 0 : _b.getChildren() });
18
+ const maxAdults = getMaxSelectableAdults({ adults: (_a = props.row) === null || _a === void 0 ? void 0 : _a.getAdults(), children: (_b = props.row) === null || _b === void 0 ? void 0 : _b.getChildren(), infants: (_c = props.row) === null || _c === void 0 ? void 0 : _c.getInfants() });
19
19
  const { t } = (0, react_i18next_1.useTranslation)();
20
- const selectedValue = (_d = (_c = props.row) === null || _c === void 0 ? void 0 : _c.getAdults()) !== null && _d !== void 0 ? _d : 1;
20
+ const selectedValue = (_e = (_d = props.row) === null || _d === void 0 ? void 0 : _d.getAdults()) !== null && _e !== void 0 ? _e : 1;
21
21
  return (react_1.default.createElement(Select_1.Select, { nativeOnMobile: true, options: [...Array(maxAdults)].map((v, value) => {
22
22
  value += 1;
23
23
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"NumberOfAdultsPicker.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.tsx"],"names":[],"mappings":";;;;;AAkBA,uCA0BC;AA5CD,2CAAkD;AAClD,kDAA0B;AAC1B,iDAA+C;AAC/C,0DAAuD;AAEvD,+DAAkF;AAClF,mEAAgE;AAGhE,uEAA+C;AAS/C,SAAwB,oBAAoB,CAAC,KAAgC;;IACzE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAA,uCAAkB,GAAE,CAAC;IACxD,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,MAAA,KAAK,CAAC,GAAG,0CAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAA,KAAK,CAAC,GAAG,0CAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IAEjH,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAA,MAAA,KAAK,CAAC,GAAG,0CAAE,SAAS,EAAE,mCAAI,CAAC,CAAC;IAElD,OAAO,CACH,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;YACzD,KAAK,IAAI,CAAC,CAAC;YACX,OAAO;gBACH,IAAI,EAAE,sBAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChF,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;aAC1B,CAAC;QACN,CAAC,CAAC,EACF,KAAK,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,EAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,EAChB,eAAe,EAAE,KAAK,CAAC,UAAU,GACnC,CACL,CAAC;AACN,CAAC","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport StringHelper from '@/util/StringHelper';\n\ninterface NumberOfAdultsPickerProps {\n row: BasketRow;\n onChange: (value: string) => void;\n\n labelColor?: Color;\n}\n\nexport default function NumberOfAdultsPicker(props: NumberOfAdultsPickerProps) {\n const { hotel } = useCurrentHotel();\n const { getMaxSelectableAdults } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults: props.row?.getAdults(), children: props.row?.getChildren() });\n\n const { t } = useTranslation();\n\n const selectedValue = props.row?.getAdults() ?? 1;\n\n return (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxAdults)].map((v: any, value: number) => {\n value += 1;\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Adult, t),\n value: value.toString(),\n };\n })}\n value={selectedValue?.toString()}\n onChange={props.onChange}\n keyName=\"value\"\n labelName=\"text\"\n inputLabelColor={props.labelColor}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"NumberOfAdultsPicker.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.tsx"],"names":[],"mappings":";;;;;AAkBA,uCA0BC;AA5CD,2CAAkD;AAClD,kDAA0B;AAC1B,iDAA+C;AAC/C,0DAAuD;AAEvD,+DAAkF;AAClF,mEAAgE;AAGhE,uEAA+C;AAS/C,SAAwB,oBAAoB,CAAC,KAAgC;;IACzE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAA,uCAAkB,GAAE,CAAC;IACxD,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,MAAA,KAAK,CAAC,GAAG,0CAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAA,KAAK,CAAC,GAAG,0CAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAA,KAAK,CAAC,GAAG,0CAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAEnJ,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAA,MAAA,KAAK,CAAC,GAAG,0CAAE,SAAS,EAAE,mCAAI,CAAC,CAAC;IAElD,OAAO,CACH,8BAAC,eAAM,IACH,cAAc,QACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;YACzD,KAAK,IAAI,CAAC,CAAC;YACX,OAAO;gBACH,IAAI,EAAE,sBAAY,CAAC,sBAAsB,CAAC,KAAK,EAAE,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChF,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;aAC1B,CAAC;QACN,CAAC,CAAC,EACF,KAAK,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,EAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,MAAM,EAChB,eAAe,EAAE,KAAK,CAAC,UAAU,GACnC,CACL,CAAC;AACN,CAAC","sourcesContent":["import { useCurrentHotel } from '@frontend/hooks';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport { IDefaultSelectOption, Select } from '@/components/generic/Select/Select';\nimport { useSearchScopeHook } from '@/hooks/useSearchScopeHook';\nimport BasketRow from '@/models/BasketRow';\nimport { Color } from '@/util/Color';\nimport StringHelper from '@/util/StringHelper';\n\ninterface NumberOfAdultsPickerProps {\n row: BasketRow;\n onChange: (value: string) => void;\n\n labelColor?: Color;\n}\n\nexport default function NumberOfAdultsPicker(props: NumberOfAdultsPickerProps) {\n const { hotel } = useCurrentHotel();\n const { getMaxSelectableAdults } = useSearchScopeHook();\n const maxAdults = getMaxSelectableAdults({ adults: props.row?.getAdults(), children: props.row?.getChildren(), infants: props.row?.getInfants() });\n\n const { t } = useTranslation();\n\n const selectedValue = props.row?.getAdults() ?? 1;\n\n return (\n <Select<IDefaultSelectOption, 'value'>\n nativeOnMobile\n options={[...Array(maxAdults)].map((v: any, value: number) => {\n value += 1;\n return {\n text: StringHelper.pluralWithDictAndCount(value, Translation.Step.Date.Adult, t),\n value: value.toString(),\n };\n })}\n value={selectedValue?.toString()}\n onChange={props.onChange}\n keyName=\"value\"\n labelName=\"text\"\n inputLabelColor={props.labelColor}\n />\n );\n}\n"]}
@@ -50,7 +50,7 @@ const BasketRow_1 = __importDefault(require("../../../../models/BasketRow"));
50
50
  const DataLayer_1 = __importStar(require("../../../../util/DataLayer"));
51
51
  const ButtonWithNextStepConfirmationDialog = (0, useNextStepAction_1.withNextStepConfirmationDialog)(BEButton_1.default);
52
52
  function RoomBuilderProgress() {
53
- const { currentBasketRows, addBasketRow, selectedBasketRow } = (0, react_1.useContext)(contexts_1.BasketContext);
53
+ const { currentBasketRows, addBasketRow, canAddAnotherRoom } = (0, react_1.useContext)(contexts_1.BasketContext);
54
54
  const { t } = (0, react_i18next_1.useTranslation)();
55
55
  const addRoomRowOnClick = () => {
56
56
  DataLayer_1.default.instance.sendInteraction('Add Room Row', DataLayer_1.InteractionType.BUTTON, DataLayer_1.InteractionStep.ROOMS);
@@ -62,8 +62,8 @@ function RoomBuilderProgress() {
62
62
  currentBasketRows.map((row, index) => {
63
63
  return react_1.default.createElement(RoomBuilderProgressRow_1.default, { row: row, key: row.getID(), number: index });
64
64
  }),
65
- react_1.default.createElement("div", { className: "u-flex justify-content-end" },
66
- react_1.default.createElement(ButtonWithNextStepConfirmationDialog, { icon: Icon_1.IconType.Add, onClick: addRoomRowOnClick, stopIconAnimation: true }, t(Translation_1.Translation.Step.Room.RoomInfo.AddRoom)))),
65
+ canAddAnotherRoom ? (react_1.default.createElement("div", { className: "u-flex justify-content-end" },
66
+ react_1.default.createElement(ButtonWithNextStepConfirmationDialog, { icon: Icon_1.IconType.Add, onClick: addRoomRowOnClick, stopIconAnimation: true }, t(Translation_1.Translation.Step.Room.RoomInfo.AddRoom)))) : (react_1.default.createElement(react_1.default.Fragment, null))),
67
67
  react_1.default.createElement(TripteaseLodgingSearchSchema_1.TripteaseLodgingSearchSchema, null))), [currentBasketRows, t]);
68
68
  }
69
69
  //# sourceMappingURL=RoomBuilderProgress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoomBuilderProgress.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,sCA2BC;AAzCD,iDAAmD;AACnD,+CAAmD;AACnD,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,yDAA0D;AAC1D,gIAAwG;AACxG,uGAAoG;AACpG,iEAA2E;AAC3E,mEAA2C;AAC3C,8DAA+E;AAC/E,MAAM,oCAAoC,GAAG,IAAA,kDAA8B,EAAC,kBAAQ,CAAC,CAAC;AAEtF,SAAwB,mBAAmB;IACvC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEzF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC3B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,2BAAe,CAAC,MAAM,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAClG,YAAY,CAAC,IAAI,mBAAS,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,OAAO,IAAA,eAAO,EACV,GAAG,EAAE,CAAC,CACF;QACI,uCAAK,SAAS,EAAC,uBAAuB;YACjC,CAAC,CAAC,iBAAiB,CAAC,MAAM;gBACvB,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAc,EAAE,KAAa,EAAE,EAAE;oBACpD,OAAO,8BAAC,gCAAsB,IAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,GAAI,CAAC;gBACjF,CAAC,CAAC;YACN,uCAAK,SAAS,EAAC,4BAA4B;gBACvC,8BAAC,oCAAoC,IAAC,IAAI,EAAE,eAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,UAClG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACP,CACrC,CACJ;QACN,8BAAC,2DAA4B,OAAG,CACjC,CACN,EACD,CAAC,iBAAiB,EAAE,CAAC,CAAC,CACzB,CAAC;AACN,CAAC","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport RoomBuilderProgressRow from '@/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow';\nimport { TripteaseLodgingSearchSchema } from '@/components/steps/room/TripteaseLodgingSearchSchema';\nimport { withNextStepConfirmationDialog } from '@/hooks/useNextStepAction';\nimport BasketRow from '@/models/BasketRow';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nconst ButtonWithNextStepConfirmationDialog = withNextStepConfirmationDialog(BEButton);\n\nexport default function RoomBuilderProgress() {\n const { currentBasketRows, addBasketRow, selectedBasketRow } = useContext(BasketContext);\n\n const { t } = useTranslation();\n const addRoomRowOnClick = () => {\n DataLayer.instance.sendInteraction('Add Room Row', InteractionType.BUTTON, InteractionStep.ROOMS);\n addBasketRow(new BasketRow());\n };\n return useMemo(\n () => (\n <>\n <div className=\"room-builder-progress\">\n {!!currentBasketRows.length &&\n currentBasketRows.map((row: BasketRow, index: number) => {\n return <RoomBuilderProgressRow row={row} key={row.getID()} number={index} />;\n })}\n <div className=\"u-flex justify-content-end\">\n <ButtonWithNextStepConfirmationDialog icon={IconType.Add} onClick={addRoomRowOnClick} stopIconAnimation>\n {t(Translation.Step.Room.RoomInfo.AddRoom)}\n </ButtonWithNextStepConfirmationDialog>\n </div>\n </div>\n <TripteaseLodgingSearchSchema />\n </>\n ),\n [currentBasketRows, t]\n );\n}\n"]}
1
+ {"version":3,"file":"RoomBuilderProgress.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,sCA+BC;AA7CD,iDAAmD;AACnD,+CAAmD;AACnD,iDAA+C;AAC/C,0DAAuD;AAEvD,6EAAqD;AACrD,yDAA0D;AAC1D,gIAAwG;AACxG,uGAAoG;AACpG,iEAA2E;AAC3E,mEAA2C;AAC3C,8DAA+E;AAC/E,MAAM,oCAAoC,GAAG,IAAA,kDAA8B,EAAC,kBAAQ,CAAC,CAAC;AAEtF,SAAwB,mBAAmB;IACvC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEzF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC3B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,2BAAe,CAAC,MAAM,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAClG,YAAY,CAAC,IAAI,mBAAS,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,OAAO,IAAA,eAAO,EACV,GAAG,EAAE,CAAC,CACF;QACI,uCAAK,SAAS,EAAC,uBAAuB;YACjC,CAAC,CAAC,iBAAiB,CAAC,MAAM;gBACvB,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAc,EAAE,KAAa,EAAE,EAAE;oBACpD,OAAO,8BAAC,gCAAsB,IAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,GAAI,CAAC;gBACjF,CAAC,CAAC;YACL,iBAAiB,CAAC,CAAC,CAAC,CACjB,uCAAK,SAAS,EAAC,4BAA4B;gBACvC,8BAAC,oCAAoC,IAAC,IAAI,EAAE,eAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,UAClG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACP,CACrC,CACT,CAAC,CAAC,CAAC,CACA,6DAAK,CACR,CACC;QACN,8BAAC,2DAA4B,OAAG,CACjC,CACN,EACD,CAAC,iBAAiB,EAAE,CAAC,CAAC,CACzB,CAAC;AACN,CAAC","sourcesContent":["import { BasketContext } from '@frontend/contexts';\nimport React, { useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport RoomBuilderProgressRow from '@/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow';\nimport { TripteaseLodgingSearchSchema } from '@/components/steps/room/TripteaseLodgingSearchSchema';\nimport { withNextStepConfirmationDialog } from '@/hooks/useNextStepAction';\nimport BasketRow from '@/models/BasketRow';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nconst ButtonWithNextStepConfirmationDialog = withNextStepConfirmationDialog(BEButton);\n\nexport default function RoomBuilderProgress() {\n const { currentBasketRows, addBasketRow, canAddAnotherRoom } = useContext(BasketContext);\n\n const { t } = useTranslation();\n const addRoomRowOnClick = () => {\n DataLayer.instance.sendInteraction('Add Room Row', InteractionType.BUTTON, InteractionStep.ROOMS);\n addBasketRow(new BasketRow());\n };\n return useMemo(\n () => (\n <>\n <div className=\"room-builder-progress\">\n {!!currentBasketRows.length &&\n currentBasketRows.map((row: BasketRow, index: number) => {\n return <RoomBuilderProgressRow row={row} key={row.getID()} number={index} />;\n })}\n {canAddAnotherRoom ? (\n <div className=\"u-flex justify-content-end\">\n <ButtonWithNextStepConfirmationDialog icon={IconType.Add} onClick={addRoomRowOnClick} stopIconAnimation>\n {t(Translation.Step.Room.RoomInfo.AddRoom)}\n </ButtonWithNextStepConfirmationDialog>\n </div>\n ) : (\n <></>\n )}\n </div>\n <TripteaseLodgingSearchSchema />\n </>\n ),\n [currentBasketRows, t]\n );\n}\n"]}
@@ -23,6 +23,7 @@ export interface BasketContextType {
23
23
  addRate: (rate: RoomRate, notify?: boolean) => Promise<void>;
24
24
  getAllValidRows: () => BasketRow[];
25
25
  getAllDatelessRows: () => BasketRow[];
26
+ isValidDateRange: () => boolean;
26
27
  getNumberOfAdults: (withTranslation: boolean) => number | string;
27
28
  getNumberOfChildren: (withTranslation: boolean) => number | string;
28
29
  getNumberOfInfants: (withTranslation: boolean) => number | string;
@@ -62,4 +63,6 @@ export interface BasketContextType {
62
63
  onDatePickerOpenChange: (isOpen: boolean) => void;
63
64
  isDatePickerOpen: boolean;
64
65
  canAddAnotherRoom: boolean;
66
+ hasPriceQuoteError: boolean;
67
+ isQuoteOrPencilReady: boolean;
65
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BasketContextType.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextType.ts"],"names":[],"mappings":"","sourcesContent":["import { IPaymentCheckoutDetails, IPromoCodeDetails, ReservationsDTO } from '@roomstay/core';\nimport type dayjs from 'dayjs';\n\nimport type { Addon } from '@/models/Addon/Addon';\nimport type BasketAddonRow from '@/models/BasketAddonRow';\nimport type BasketRow from '@/models/BasketRow';\nimport { ItemisedFee } from '@/models/Fee';\nimport type { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomstaySession } from '@/models/RoomstaySession';\n\nexport interface BasketContextType {\n selectedBasketRow: BasketRow;\n currentBasketRows: BasketRow[];\n basketAddonRows: BasketAddonRow[];\n basketFeeRows: ItemisedFee[];\n loadedPromotion: IPromotion | null;\n promoCodeDetails: IPromoCodeDetails | null; // Promo code details from availability response\n quoteQueryID: string; // This ID is used to detect changes and re-fetch deposit quotes during checkout.\n\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n pencilId: string | undefined;\n\n isLoadingPriceQuote: boolean;\n\n addBasketRow: (row: BasketRow) => void;\n addRate: (rate: RoomRate, notify?: boolean) => Promise<void>;\n\n getAllValidRows: () => BasketRow[];\n getAllDatelessRows: () => BasketRow[];\n\n getNumberOfAdults: (withTranslation: boolean) => number | string;\n getNumberOfChildren: (withTranslation: boolean) => number | string;\n getNumberOfInfants: (withTranslation: boolean) => number | string;\n getNumberOfRooms: (withTranslation: boolean) => number | string;\n\n getTotalPrice: () => any;\n getTotalQuoteDeposit: () => number;\n getDepositQuoteFees: () => number;\n getTotalFees: () => number;\n getItemisedFees: () => ItemisedFee[];\n // Can be null if we don't know the pay now amount (SynXis)\n getTotalPayNow: () => number | null;\n\n updateBasketRow: (row: BasketRow, updateGlobalDates?: boolean) => void;\n removeBasketRow: (row: BasketRow) => void;\n\n clearBasketRows: (confirm: boolean) => void;\n selectBasketRow: (row: BasketRow | null) => void;\n\n setStartDate: (date: dayjs.Dayjs) => void;\n setEndDate: (date: dayjs.Dayjs) => void;\n setPromoCodeDetails: (details: IPromoCodeDetails | null) => void;\n\n quoteOrPencilReservation: (applyQuote: () => boolean) => void;\n\n hasCheckedOut: boolean;\n reservationData: ReservationsDTO;\n booked: (data: ReservationsDTO, reservationRequest?: RoomstaySession['reservationRequest']) => Promise<void>;\n rollback: () => void;\n checkedOut: (data: ReservationsDTO) => void;\n clearSelectedRates: () => void;\n finish: () => void;\n additionalPaymentRequired: (data: IPaymentCheckoutDetails) => void;\n\n getRowForAddon: (selectedAddon: Addon) => BasketAddonRow | undefined;\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => void;\n\n removeBasketAddonRow: (row: BasketAddonRow) => void;\n attemptSelectUnfilledRow: () => BasketRow | undefined;\n\n initBasketRows: (basketRows: BasketRow[]) => void;\n updateBasketFeeRows: () => void;\n\n onDatePickerOpenChange: (isOpen: boolean) => void;\n isDatePickerOpen: boolean;\n canAddAnotherRoom: boolean;\n}\n"]}
1
+ {"version":3,"file":"BasketContextType.js","sourceRoot":"/","sources":["src/contexts/BasketContext/BasketContextType.ts"],"names":[],"mappings":"","sourcesContent":["import { IPaymentCheckoutDetails, IPromoCodeDetails, ReservationsDTO } from '@roomstay/core';\nimport type dayjs from 'dayjs';\n\nimport type { Addon } from '@/models/Addon/Addon';\nimport type BasketAddonRow from '@/models/BasketAddonRow';\nimport type BasketRow from '@/models/BasketRow';\nimport { ItemisedFee } from '@/models/Fee';\nimport type { IPromotion } from '@/models/Promotion/IPromotion.type';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport { RoomstaySession } from '@/models/RoomstaySession';\n\nexport interface BasketContextType {\n selectedBasketRow: BasketRow;\n currentBasketRows: BasketRow[];\n basketAddonRows: BasketAddonRow[];\n basketFeeRows: ItemisedFee[];\n loadedPromotion: IPromotion | null;\n promoCodeDetails: IPromoCodeDetails | null; // Promo code details from availability response\n quoteQueryID: string; // This ID is used to detect changes and re-fetch deposit quotes during checkout.\n\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n pencilId: string | undefined;\n\n isLoadingPriceQuote: boolean;\n\n addBasketRow: (row: BasketRow) => void;\n addRate: (rate: RoomRate, notify?: boolean) => Promise<void>;\n\n getAllValidRows: () => BasketRow[];\n getAllDatelessRows: () => BasketRow[];\n isValidDateRange: () => boolean;\n\n getNumberOfAdults: (withTranslation: boolean) => number | string;\n getNumberOfChildren: (withTranslation: boolean) => number | string;\n getNumberOfInfants: (withTranslation: boolean) => number | string;\n getNumberOfRooms: (withTranslation: boolean) => number | string;\n\n getTotalPrice: () => any;\n getTotalQuoteDeposit: () => number;\n getDepositQuoteFees: () => number;\n getTotalFees: () => number;\n getItemisedFees: () => ItemisedFee[];\n // Can be null if we don't know the pay now amount (SynXis)\n getTotalPayNow: () => number | null;\n\n updateBasketRow: (row: BasketRow, updateGlobalDates?: boolean) => void;\n removeBasketRow: (row: BasketRow) => void;\n\n clearBasketRows: (confirm: boolean) => void;\n selectBasketRow: (row: BasketRow | null) => void;\n\n setStartDate: (date: dayjs.Dayjs) => void;\n setEndDate: (date: dayjs.Dayjs) => void;\n setPromoCodeDetails: (details: IPromoCodeDetails | null) => void;\n\n quoteOrPencilReservation: (applyQuote: () => boolean) => void;\n\n hasCheckedOut: boolean;\n reservationData: ReservationsDTO;\n booked: (data: ReservationsDTO, reservationRequest?: RoomstaySession['reservationRequest']) => Promise<void>;\n rollback: () => void;\n checkedOut: (data: ReservationsDTO) => void;\n clearSelectedRates: () => void;\n finish: () => void;\n additionalPaymentRequired: (data: IPaymentCheckoutDetails) => void;\n\n getRowForAddon: (selectedAddon: Addon) => BasketAddonRow | undefined;\n\n setAddonQuantities: (addon: Addon, quantities: { quantity: number; adult: number; child: number }, selectedDate: string, selectedTime: string) => void;\n\n removeBasketAddonRow: (row: BasketAddonRow) => void;\n attemptSelectUnfilledRow: () => BasketRow | undefined;\n\n initBasketRows: (basketRows: BasketRow[]) => void;\n updateBasketFeeRows: () => void;\n\n onDatePickerOpenChange: (isOpen: boolean) => void;\n isDatePickerOpen: boolean;\n canAddAnotherRoom: boolean;\n hasPriceQuoteError: boolean;\n isQuoteOrPencilReady: boolean;\n}\n"]}