@roomstay/frontend 2.5.2-1 → 2.5.2-3

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 (120) hide show
  1. package/dist/370.bundle.js +1 -1
  2. package/dist/419.bundle.js +1 -0
  3. package/dist/449.bundle.js +1 -1
  4. package/dist/468.bundle.js +1 -1
  5. package/dist/537.bundle.js +1 -0
  6. package/dist/572.bundle.js +1 -1
  7. package/dist/903.bundle.js +1 -1
  8. package/dist/main.bundle.js +1 -1
  9. package/dist/src/api/AvailabilityAPI.d.ts +5 -4
  10. package/dist/src/api/AvailabilityAPI.js +16 -10
  11. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  12. package/dist/src/api/ReservationAPI.js +2 -0
  13. package/dist/src/api/ReservationAPI.js.map +1 -1
  14. package/dist/src/components/generic/BookingWizard/BookingWizard.js +3 -3
  15. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  16. package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +2 -0
  17. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +16 -4
  18. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  19. package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +3 -2
  20. package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
  21. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.d.ts +1 -0
  22. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +4 -4
  23. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  24. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +4 -1
  25. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +32 -10
  26. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  27. package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js +15 -6
  28. package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js.map +1 -1
  29. package/dist/src/components/generic/PromoCodeInput.d.ts +1 -0
  30. package/dist/src/components/generic/PromoCodeInput.js +4 -6
  31. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  32. package/dist/src/components/generic/date/DatePicker.js +4 -2
  33. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  34. package/dist/src/components/generic/date/DatePickerDay.js +3 -2
  35. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  36. package/dist/src/components/steps/confirmation/RoomContactDetails.js +5 -1
  37. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  38. package/dist/src/components/steps/date/PeoplePicker.js +7 -2
  39. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  40. package/dist/src/components/steps/date/PeoplePickerRow.d.ts +1 -0
  41. package/dist/src/components/steps/date/PeoplePickerRow.js +10 -2
  42. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  43. package/dist/src/components/steps/date/StepDatePricePerRoom.js +2 -1
  44. package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
  45. package/dist/src/components/steps/date/StepOneStatusPeople.js +5 -0
  46. package/dist/src/components/steps/date/StepOneStatusPeople.js.map +1 -1
  47. package/dist/src/components/steps/hotel/HotelCard.js +2 -1
  48. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  49. package/dist/src/components/steps/hotel/HotelSearchParameters.js +18 -3
  50. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  51. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +4 -1
  52. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  53. package/dist/src/components/steps/room/StepRoomErrorForm.js +1 -0
  54. package/dist/src/components/steps/room/StepRoomErrorForm.js.map +1 -1
  55. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +1 -0
  56. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -1
  57. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +3 -3
  58. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -1
  59. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts +1 -1
  60. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +9 -35
  61. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
  62. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +42 -22
  63. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  64. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.d.ts +9 -0
  65. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js +30 -0
  66. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js.map +1 -0
  67. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +15 -2
  68. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  69. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +6 -1
  70. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  71. package/dist/src/components/summary/BEMobileSummary.js +2 -0
  72. package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
  73. package/dist/src/components/summary/BESummaryRoomRow.js +5 -1
  74. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  75. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
  76. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  77. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +3 -0
  78. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  79. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -1
  80. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  81. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextTypes.d.ts +1 -0
  82. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextTypes.js.map +1 -1
  83. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +4 -1
  84. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  85. package/dist/src/engines/BaseEngine.d.ts +2 -0
  86. package/dist/src/engines/BaseEngine.js.map +1 -1
  87. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +2 -0
  88. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  89. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +2 -0
  90. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
  91. package/dist/src/models/BasketRow.d.ts +3 -0
  92. package/dist/src/models/BasketRow.js +8 -1
  93. package/dist/src/models/BasketRow.js.map +1 -1
  94. package/dist/src/models/Client/Hotel/Hotel.d.ts +11 -0
  95. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  96. package/dist/src/models/Promotion/IPromotion.type.d.ts +2 -0
  97. package/dist/src/models/Promotion/IPromotion.type.js.map +1 -1
  98. package/dist/src/models/RoomstaySession.d.ts +1 -0
  99. package/dist/src/models/RoomstaySession.js.map +1 -1
  100. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +1 -1
  101. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  102. package/dist/src/providers/PromotionProvider.js +7 -1
  103. package/dist/src/providers/PromotionProvider.js.map +1 -1
  104. package/dist/src/providers/SessionProvider.js +2 -0
  105. package/dist/src/providers/SessionProvider.js.map +1 -1
  106. package/dist/src/translations/Translation.d.ts +5 -0
  107. package/dist/src/translations/Translation.js +5 -0
  108. package/dist/src/translations/Translation.js.map +1 -1
  109. package/dist/src/translations/languages/en-gb.js +7 -2
  110. package/dist/src/translations/languages/en-gb.js.map +1 -1
  111. package/dist/src/util/DefaultValueManager.d.ts +2 -1
  112. package/dist/src/util/DefaultValueManager.js +1 -0
  113. package/dist/src/util/DefaultValueManager.js.map +1 -1
  114. package/dist/src/util/StringHelper.js +5 -3
  115. package/dist/src/util/StringHelper.js.map +1 -1
  116. package/dist/test.bundle.js +1 -1
  117. package/dist/vendors.bundle.js +1 -1
  118. package/package.json +1 -1
  119. package/dist/115.bundle.js +0 -1
  120. package/dist/975.bundle.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PromoCodeInput.js","sourceRoot":"/","sources":["src/components/generic/PromoCodeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { Color } from '@/util/Color';\n\ninterface PromoCodeInputProps {\n value: string;\n onChange: (code: string) => void;\n\n valid?: boolean;\n direct?: boolean;\n className?: string;\n}\n\nexport default function PromoCodeInput(props: PromoCodeInputProps) {\n const { t } = useTranslation();\n\n const [promoCode, setPromoCode] = useState(props.value ?? '');\n const [showPromoSave, setShowPromoSave] = useState(false);\n const [showPromoRemove, setShowPromoRemove] = useState(false);\n\n const [pressedChange, setPressedChange] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n const promoCodeStatus: 'success' | 'error' | undefined = props.valid || props.valid === false ? (props.valid ? 'success' : 'error') : undefined;\n\n useEffect(() => {\n if (props.valid || props.valid === false) {\n setShowPromoRemove(true);\n }\n }, [props.valid]);\n\n useEffect(() => {\n if (showPromoSave || showPromoRemove) {\n setPressedChange(false);\n }\n }, [showPromoSave, showPromoRemove]);\n\n useEffect(() => {\n if (firstUpdate) {\n if (promoCode) {\n if (promoCode !== props.value) {\n if (props.direct) {\n updatePromoCode(promoCode, false);\n } else {\n setShowPromoSave(true);\n }\n } else {\n setShowPromoRemove(true);\n }\n } else {\n setShowPromoSave(false);\n setShowPromoRemove(false);\n\n if (promoCode !== '') {\n updatePromoCode('', false);\n }\n }\n } else {\n if (promoCode) {\n setShowPromoRemove(true);\n }\n }\n }, [promoCode]);\n\n const updatePromoCode = (code: string, propagate = true) => {\n if (code) {\n if (props.direct) {\n setShowPromoRemove(true);\n } else {\n setPressedChange(true);\n setShowPromoSave(false);\n }\n }\n\n if (propagate) {\n setPromoCode(code);\n }\n\n props.onChange(code);\n };\n\n const handleKeyPress = (event: any) => {\n if (event.key === 'Enter') {\n updatePromoCode(promoCode);\n }\n };\n const clearPromoCode = () => {\n return updatePromoCode('');\n };\n const setUpdatedPromoCode = () => {\n return updatePromoCode(promoCode);\n };\n const setPromoCodeOnChange = (val: React.ChangeEvent<HTMLInputElement>) => {\n setPromoCode(val.target.value);\n };\n return (\n <div ref={firstUpdate} className={props.className}>\n <div className=\"u-pos-rel\">\n <TextBox\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCode)}\n wide\n validationStatus={promoCodeStatus}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n {showPromoRemove && (\n <Tooltip title=\"Remove Promo code\">\n <div className=\"people-picker--promo-icon\" onClick={clearPromoCode}>\n <Icon size=\"24px\" icon={IconType.Close} color={Color.Grey} />\n </div>\n </Tooltip>\n )}\n {showPromoSave && (\n <Tooltip title=\"Apply Code\">\n <div className=\"people-picker--promo-icon --success\" onClick={setUpdatedPromoCode}>\n <Icon size=\"24px\" icon={IconType.ArrowRight2} color={Color.Success} />\n </div>\n </Tooltip>\n )}\n {pressedChange && (\n <Tooltip title=\"Promo code loading\">\n <div className=\"people-picker--promo-icon\">\n <SmallSpinner />\n </div>\n </Tooltip>\n )}\n </div>\n {props.valid === true && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Step.Date.PromoCodeValidation.Valid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n {props.valid === false && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Alert}>\n {t(Translation.Step.Date.PromoCodeValidation.Invalid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"PromoCodeInput.js","sourceRoot":"/","sources":["src/components/generic/PromoCodeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import classNames from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport styles from '@/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.module.scss';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SmallSpinner from '@/components/generic/loader/SmallSpinner';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport { Color } from '@/util/Color';\n\nimport TextBox from './TextBox';\n\ninterface PromoCodeInputProps {\n value: string;\n onChange: (code: string) => void;\n\n valid?: boolean;\n direct?: boolean;\n className?: string;\n variant?: 'outlined' | 'text';\n}\n\nexport default function PromoCodeInput(props: PromoCodeInputProps) {\n const { t } = useTranslation();\n\n const [promoCode, setPromoCode] = useState(props.value ?? '');\n const [showPromoSave, setShowPromoSave] = useState(false);\n const [showPromoRemove, setShowPromoRemove] = useState(false);\n\n const [pressedChange, setPressedChange] = useState(false);\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n const promoCodeStatus: 'success' | 'error' | undefined = props.valid || props.valid === false ? (props.valid ? 'success' : 'error') : undefined;\n\n useEffect(() => {\n if (props.valid || props.valid === false) {\n setShowPromoRemove(true);\n }\n }, [props.valid]);\n\n useEffect(() => {\n if (showPromoSave || showPromoRemove) {\n setPressedChange(false);\n }\n }, [showPromoSave, showPromoRemove]);\n\n useEffect(() => {\n if (firstUpdate) {\n if (promoCode) {\n if (promoCode !== props.value) {\n if (props.direct) {\n updatePromoCode(promoCode, false);\n } else {\n setShowPromoSave(true);\n }\n } else {\n setShowPromoRemove(true);\n }\n } else {\n setShowPromoSave(false);\n setShowPromoRemove(false);\n\n if (promoCode !== '') {\n updatePromoCode('', false);\n }\n }\n } else {\n if (promoCode) {\n setShowPromoRemove(true);\n }\n }\n }, [promoCode]);\n\n const updatePromoCode = (code: string, propagate = true) => {\n if (code) {\n if (props.direct) {\n setShowPromoRemove(true);\n } else {\n setPressedChange(true);\n setShowPromoSave(false);\n }\n }\n\n if (propagate) {\n setPromoCode(code);\n }\n\n props.onChange(code);\n };\n\n const handleKeyPress = (event: any) => {\n if (event.key === 'Enter') {\n updatePromoCode(promoCode);\n }\n };\n const clearPromoCode = () => {\n return updatePromoCode('');\n };\n const setUpdatedPromoCode = () => {\n return updatePromoCode(promoCode);\n };\n const setPromoCodeOnChange = (val: React.ChangeEvent<HTMLInputElement>) => {\n setPromoCode(val.target.value);\n };\n return (\n <div ref={firstUpdate} className={props.className}>\n <div className=\"u-pos-rel\">\n {props.variant === 'text' ? (\n <input\n className={classNames(styles.container, { [styles['--error']]: promoCodeStatus === 'error', [styles['--success']]: promoCodeStatus === 'success' })}\n type=\"text\"\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCodePlaceHolder)}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n ) : (\n <TextBox\n value={(props.direct ? props.value : promoCode).toUpperCase().replace(' ', '')}\n placeholder={t(Translation.Step.Date.PromoCode)}\n wide\n validationStatus={promoCodeStatus}\n onChange={setPromoCodeOnChange}\n onKeyPress={handleKeyPress}\n />\n )}\n\n {showPromoRemove && (\n <Tooltip title=\"Remove Promo code\">\n <div className=\"people-picker--promo-icon\" onClick={clearPromoCode}>\n <Icon size=\"24px\" icon={IconType.Close} color={Color.Grey} />\n </div>\n </Tooltip>\n )}\n {showPromoSave && (\n <Tooltip title=\"Apply Code\">\n <div className=\"people-picker--promo-icon --success\" onClick={setUpdatedPromoCode}>\n <Icon size=\"24px\" icon={IconType.ArrowRight2} color={Color.Success} />\n </div>\n </Tooltip>\n )}\n {pressedChange && (\n <Tooltip title=\"Promo code loading\">\n <div className=\"people-picker--promo-icon\">\n <SmallSpinner />\n </div>\n </Tooltip>\n )}\n </div>\n {/* {props.valid === true && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Step.Date.PromoCodeValidation.Valid, {\n value: props.value,\n })}\n </Text>\n </div>\n )} */}\n {props.valid === false && (\n <div className=\"u-marg-top\">\n <Text type={TextType.Small} color={Color.Alert}>\n {t(Translation.Step.Date.PromoCodeValidation.Invalid, {\n value: props.value,\n })}\n </Text>\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -77,8 +77,9 @@ function DatePicker(props) {
77
77
  const selectedBasketRow = basketContext.selectedBasketRow;
78
78
  const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;
79
79
  const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;
80
+ const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;
80
81
  const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';
81
- const newDatePrice = yield BookingAPI_1.default.Availability.getCheapestPriceForDay(newDate, adults, children, promoCode, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, memberNumber, false);
82
+ const newDatePrice = yield BookingAPI_1.default.Availability.getCheapestPriceForDay(newDate, adults, children, infants, promoCode, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, memberNumber, false);
82
83
  switch (pickingState) {
83
84
  default:
84
85
  case DateRangePickingState.StartDate:
@@ -115,12 +116,13 @@ function DatePicker(props) {
115
116
  const selectedBasketRow = basketContext.selectedBasketRow;
116
117
  const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;
117
118
  const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;
119
+ const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;
118
120
  const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';
119
121
  const diff = (_c = toDate === null || toDate === void 0 ? void 0 : toDate.diff) === null || _c === void 0 ? void 0 : _c.call(toDate, fromDate, 'day');
120
122
  let nextMustBreak = false;
121
123
  for (let i = 0; i <= diff; i++) {
122
124
  const dayToCheck = fromDate.add(i, 'day');
123
- const price = yield BookingAPI_1.default.Availability.getCheapestPriceForDay(dayToCheck, adults, children, promoCode, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, memberNumber, false);
125
+ const price = yield BookingAPI_1.default.Availability.getCheapestPriceForDay(dayToCheck, adults, children, infants, promoCode, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID, memberNumber, false);
124
126
  if (nextMustBreak) {
125
127
  return resolve(dayToCheck.subtract(1, 'day'));
126
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sourceRoot":"/","sources":["src/components/generic/date/DatePicker.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0F;AAC1F,2CAAkD;AAClD,4DAAoC;AACpC,kDAAqC;AACrC,+CAAuG;AAEvG,kEAAmC;AACnC,gGAAwE;AACxE,uEAAgE;AAChE,mGAA2E;AAC3E,mGAA2E;AAC3E,uCAAuC;AACvC,sGAA8E;AAC9E,wCAAqC;AACrC,8DAA+E;AAE/E,0EAAkD;AAElD,MAAM,cAAc,GAAG,IAAA,YAAI,EAAC,GAAG,EAAE,mDAAQ,0CAA0C,GAAC,CAAC,CAAC;AAqCtF,IAAK,qBAGJ;AAHD,WAAK,qBAAqB;IACtB,2EAAa,CAAA;IACb,uEAAW,CAAA;AACf,CAAC,EAHI,qBAAqB,KAArB,qBAAqB,QAGzB;AAED,SAAwB,UAAU,CAAC,KAAsB;;IACrD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,cAAO,GAAE,CAAC;IAEnC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAA,eAAK,GAAE,CAAC,CAAC;IAE9J,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,KAAK,CAAC,iBAAiB,mCAAI,IAAI,CAAC,CAAC;IAC5F,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,MAAA,KAAK,CAAC,eAAe,mCAAI,IAAI,CAAC,CAAC;IAEtF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,EAAe,IAAI,CAAC,CAAC;IAE7E,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAClF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAmB,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,EAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5I,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,EAAC,CAAC,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5F,CAAC,EAAE,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,CAAC,CAAC,CAAC;IAEnC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/H,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,CAAO,OAAoB,EAAE,EAAE;QAC/C,IAAI,eAAe,GAAiC,IAAI,CAAC;QAEzD,MAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;QAC1D,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,YAAY,GAAG,MAAM,oBAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAExJ,QAAQ,YAAY,EAAE;YAClB,QAAQ;YACR,KAAK,qBAAqB,CAAC,SAAS;gBAChC,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;oBAC9B,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC;oBAEhD,oBAAoB,CAAC,OAAO,CAAC,CAAC;oBAC9B,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBAC5B;gBAED,MAAM;YACV,KAAK,qBAAqB,CAAC,OAAO;gBAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;oBACrC,oBAAoB,CAAC,OAAO,CAAC,CAAC;oBAC9B,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC;iBACnD;qBAAM;oBACH,eAAe,GAAG,qBAAqB,CAAC,SAAS,CAAC;oBAElD,mBAAmB,CAAC,IAAI,CAAC,CAAC;oBAE1B,MAAM,gBAAgB,GAAG,MAAM,eAAe,CAAC,iBAA0B,EAAE,OAAO,CAAC,CAAC;oBAEpF,IAAI,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;wBACnC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;qBACtD;yBAAM;wBACH,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;qBACxC;iBACJ;gBAED,MAAM;SACb;QAED,IAAI,KAAK,CAAC,sBAAsB,EAAE;YAC9B,eAAe,CAAC,eAAwC,CAAC,CAAC;SAC7D;IACL,CAAC,CAAA,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,QAAqB,EAAE,MAAmB,EAAwB,EAAE,CACzF,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,EAAE;;QAC1B,MAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;QAC1D,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,MAAM,IAAI,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,uDAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE7C,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,oBAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YAEpJ,IAAI,aAAa,EAAE;gBACf,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;aACjD;YAED,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;gBACvB,aAAa,GAAG,IAAI,CAAC;aACxB;SACJ;QAED,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC,CAAA,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,CAAC,GAAgB,EAAE,EAAE;QAC1C,IAAI,iBAAiB,IAAI,CAAC,eAAe,EAAE;YACvC,eAAe,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC1D,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;SACN;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAExD,qEAAqE;IACrE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAA,+BAAqB,aAArB,+BAAqB,uBAArB,+BAAqB,CAAE,QAAQ,EAAE,KAAI,KAAK,CAAC,YAAY,EAAE;YACzD,gBAAgB,CAAC,MAAM,CAAC,CAAC;SAC5B;IACL,CAAC,EAAE,CAAC,+BAAqB,aAArB,+BAAqB,uBAArB,+BAAqB,CAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAExC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,KAAK,CAAC,eAAe,EAAE;YACvB,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;SAC1C;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAE5B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,KAAK,CAAC,kBAAkB,EAAE;YAC1B,SAAS,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;SAC3D;IACL,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE7C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,WAAW,CAAC,OAAO,EAAE;YACrB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,OAAO;SACV;QAED,IAAI,KAAK,CAAC,kBAAkB,EAAE;YAC1B,KAAK,CAAC,kBAAkB,CAAC,iBAA0B,CAAC,CAAC;SACxD;IACL,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,IAAA,uBAAe,EAAC,GAAG,EAAE;QACjB,IAAI,WAAW,CAAC,OAAO,EAAE;YACrB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;YAC3B,OAAO;SACV;QAED,IAAI,KAAK,CAAC,gBAAgB,EAAE;YACxB,KAAK,CAAC,gBAAgB,CAAC,eAAwB,CAAC,CAAC;SACpD;IACL,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAuB;QAChC,KAAK,EAAE,IAAA,eAAK,GAAE;QACd,WAAW,EAAE,IAAA,eAAK,GAAE,CAAC,IAAI,EAAE;QAC3B,SAAS,EAAE,iBAAiB;QAC5B,OAAO,EAAE,eAAe;QAExB,YAAY,EAAE,gBAAgB;QAC9B,QAAQ;QAER,WAAW,EAAE,gBAAgB;QAC7B,YAAY;QAEZ,YAAY,EAAE,CAAC,IAAiB,EAAE,EAAE;YAChC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,WAAW;KACd,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,eAAO,EACvB,GAAG,EAAE,CAAC,CACF,8DACK,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CACzB;QACI,8BAAC,yBAAe,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,GAAI;QAClE,KAAK,CAAC,kBAAkB,IAAI,8BAAC,yBAAe,IAAC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAI,CAC7F,CACN,CAAC,CAAC,CAAC,CACA;QACI,8BAAC,eAAK,CAAC,QAAQ,IAAC,QAAQ,EAAE,8BAAC,0BAAgB,OAAG;YAC1C,8BAAC,cAAc,OAAG,CACL,CAClB,CACN,CACF,CACN,EACD,CAAC,YAAY,EAAE,KAAK,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAC1D,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,oBAAU,EAAC,eAAe,EAAE;QACnD,UAAU,EAAE,CAAC,KAAK,CAAC,kBAAkB;QACrC,SAAS,EAAE,KAAK,CAAC,KAAK;QACtB,QAAQ,EAAE,aAAa,KAAK,MAAM;KACrC,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAC9B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAC3G,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC1B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QACvG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACjC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QAClH,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAChC,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,2BAA2B,EAAE,2BAAe,CAAC,QAAQ,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QACjH,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACH,8BAAC,4BAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO;QACtC,uCAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB;YAC/C,aAAa,KAAK,OAAO,IAAI,CAC1B,uCAAK,SAAS,EAAC,0BAA0B;gBACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,eAAe,EAAE,aAAK,CAAC,IAAI,EAAE,YAAY,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,GAAG;gBACpJ,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,EAAE,eAAe,EAAE,aAAK,CAAC,IAAI,EAAE,YAAY,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,GAAG,CAC/I,CACT;YACA,KAAK,CAAC,YAAY,IAAI,CACnB,uCAAK,SAAS,EAAC,2BAA2B;gBACtC,8BAAC,cAAI,IACD,IAAI,EAAC,yBAAyB,EAC9B,IAAI,EAAE,eAAQ,CAAC,SAAS,EACxB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,EAC1D,OAAO,EAAE,uBAAuB,GAClC;gBACF,8BAAC,cAAI,IACD,IAAI,EAAC,yBAAyB,EAC9B,IAAI,EAAE,eAAQ,CAAC,QAAQ,EACvB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,EACzD,OAAO,EAAE,sBAAsB,GACjC,CACA,CACT;YACA,WAAW;YACX,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,kBAAkB,IAAI,CACnD,uCAAK,SAAS,EAAC,kFAAkF;gBAC7F,8BAAC,8BAAoB,OAAG;gBACxB,uCAAK,SAAS,EAAC,mBAAmB;oBAC9B,8BAAC,8BAAoB,OAAG,CACtB,CACJ,CACT,CACC;QAEL,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,CACpD,uCAAK,SAAS,EAAC,qGAAqG;YAChH,8BAAC,8BAAoB,OAAG;YACxB,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,8BAAoB,OAAG,CACtB,CACJ,CACT,CACwB,CAChC,CAAC;AACN,CAAC;AA7PD,6BA6PC","sourcesContent":["import { BasketContext, DatePickerContext, IDatePickerContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { lazy, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport API from '@/api/BookingAPI';\nimport DatePickerMonth from '@/components/generic/date/DatePickerMonth';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport DaysSelectedInformer from '@/components/steps/DaysSelectedInformer';\nimport MinimumNightStayPill from '@/components/steps/MinimumNightStayPill';\nimport { useBig4 } from '@/hooks/Big4';\nimport DatePickerTypeFeature from '@/providers/feature/DatePickerTypeFeature';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\n\nimport WeekViewSkeleton from './WeekViewSkeleton';\n\nconst DatePickerWeek = lazy(() => import('@/components/generic/date/DatePickerWeek'));\n\nexport interface DatePickerProps {\n showMonthOnLoad?: dayjs.Dayjs;\n\n selectedStartDate?: dayjs.Dayjs;\n selectedEndDate?: dayjs.Dayjs;\n\n canSelect?: boolean;\n // Includes default navigation arrows\n showArrows?: boolean;\n // Displays two side by side\n showMultipleMonths?: boolean;\n\n // Used for tight spaces\n small?: boolean;\n\n // is there support for start / end dates\n supportsMultiSelecting?: boolean;\n\n // Do or don't show mininmum night stay block\n showMinNightStay?: boolean;\n\n supportsWeek?: boolean;\n\n onDateClicked?: (date: dayjs.Dayjs) => void;\n onStartDateChanged?: (date: dayjs.Dayjs) => void;\n onEndDateChanged?: (date: dayjs.Dayjs) => void;\n}\n\ninterface DatePickerDayObject {\n value: string;\n dateObj: dayjs.Dayjs | null;\n price?: string;\n hovered: boolean;\n}\n\nenum DateRangePickingState {\n StartDate = 1,\n EndDate = 2,\n}\n\nexport default function DatePicker(props: DatePickerProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useBig4();\n\n const [currentMonth, setCurrentMonth] = useState(props.showMonthOnLoad ? props.showMonthOnLoad : props.selectedStartDate ? props.selectedStartDate : dayjs());\n\n const [selectedStartDate, setSelectedStartDate] = useState(props.selectedStartDate ?? null);\n const [selectedEndDate, setSelectedEndDate] = useState(props.selectedEndDate ?? null);\n\n const [hoveringOverDate, setHoveringOverDate] = useState<Dayjs | null>(null);\n\n const [pickingState, setPickingState] = useState(DateRangePickingState.StartDate);\n const [calendarStyle, setCalendarStyle] = useState<'Month' | 'Week'>(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n useEffect(() => {\n setCalendarStyle(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n }, [hotel?.defaultDatepickerType]);\n\n const [months, setMonths] = useState(props.showMultipleMonths ? [currentMonth, currentMonth.add(1, 'month')] : [currentMonth]);\n const [maxPrice, setMaxPrice] = useState(0);\n\n const basketContext = useContext(BasketContext);\n\n const onClickDate = async (newDate: dayjs.Dayjs) => {\n let newPickingState: DateRangePickingState | null = null;\n\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n const newDatePrice = await API.Availability.getCheapestPriceForDay(newDate, adults, children, promoCode, hotel?.hotelID as string, memberNumber, false);\n\n switch (pickingState) {\n default:\n case DateRangePickingState.StartDate:\n if (newDatePrice.price || !hotel) {\n newPickingState = DateRangePickingState.EndDate;\n\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n }\n\n break;\n case DateRangePickingState.EndDate:\n if (newDate.isBefore(selectedStartDate)) {\n setSelectedStartDate(newDate);\n newPickingState = DateRangePickingState.EndDate;\n } else {\n newPickingState = DateRangePickingState.StartDate;\n\n setHoveringOverDate(null);\n\n const nextAvailableDay = await getLastValidDay(selectedStartDate as Dayjs, newDate);\n\n if (newDate.isSame(selectedStartDate)) {\n setSelectedEndDate(nextAvailableDay.add(1, 'day'));\n } else {\n setSelectedEndDate(nextAvailableDay);\n }\n }\n\n break;\n }\n\n if (props.supportsMultiSelecting) {\n setPickingState(newPickingState as DateRangePickingState);\n }\n };\n\n const getLastValidDay = (fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): Promise<dayjs.Dayjs> =>\n new Promise(async (resolve) => {\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n const diff = toDate?.diff?.(fromDate, 'day');\n\n let nextMustBreak = false;\n for (let i = 0; i <= diff; i++) {\n const dayToCheck = fromDate.add(i, 'day');\n const price = await API.Availability.getCheapestPriceForDay(dayToCheck, adults, children, promoCode, hotel?.hotelID as string, memberNumber, false);\n\n if (nextMustBreak) {\n return resolve(dayToCheck.subtract(1, 'day'));\n }\n\n if (!price.price && hotel) {\n nextMustBreak = true;\n }\n }\n\n resolve(toDate);\n });\n\n const onHoveredOverDay = (day: dayjs.Dayjs) => {\n if (selectedStartDate && !selectedEndDate) {\n getLastValidDay(selectedStartDate, day).then((lastValidDay) => {\n setHoveringOverDate(lastValidDay);\n });\n }\n };\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n // TODO: Perhaps refactor this later to not depend on non-state items\n useEffect(() => {\n if (DatePickerTypeFeature?.isActive() && props.supportsWeek) {\n setCalendarStyle('Week');\n }\n }, [DatePickerTypeFeature?.isActive()]);\n\n useEffect(() => {\n if (props.showMonthOnLoad) {\n setCurrentMonth(props.showMonthOnLoad);\n }\n }, [props.showMonthOnLoad]);\n\n useEffect(() => {\n if (props.showMultipleMonths) {\n setMonths([currentMonth, currentMonth.add(1, 'month')]);\n }\n }, [currentMonth, props.showMultipleMonths]);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onStartDateChanged) {\n props.onStartDateChanged(selectedStartDate as Dayjs);\n }\n }, [selectedStartDate]);\n\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onEndDateChanged) {\n props.onEndDateChanged(selectedEndDate as Dayjs);\n }\n }, [selectedEndDate]);\n\n const context: IDatePickerContext = {\n today: dayjs(),\n todayInUnix: dayjs().unix(),\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n\n hoveredMonth: hoveringOverDate,\n maxPrice,\n\n onHoverOver: onHoveredOverDay,\n currentMonth,\n\n onDayClicked: (date: dayjs.Dayjs) => {\n onClickDate(date);\n },\n setMaxPrice,\n };\n\n const printMonths = useMemo(\n () => (\n <>\n {calendarStyle === 'Month' ? (\n <>\n <DatePickerMonth small={props.small} showingMonth={currentMonth} />\n {props.showMultipleMonths && <DatePickerMonth showingMonth={currentMonth.add(1, 'month')} />}\n </>\n ) : (\n <>\n <React.Suspense fallback={<WeekViewSkeleton />}>\n <DatePickerWeek />\n </React.Suspense>\n </>\n )}\n </>\n ),\n [currentMonth, props.showMultipleMonths, calendarStyle]\n );\n\n const calendarClassNames = classNames('diji-calendar', {\n '--single': !props.showMultipleMonths,\n '--small': props.small,\n '--week': calendarStyle === 'Week',\n });\n const previousMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Previous Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.subtract(1, 'month'));\n };\n const nextMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Next Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.add(1, 'month'));\n };\n const setCalendarStyleAsMonth = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Month');\n };\n const setCalendarStyleAsWeek = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Week', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Week');\n };\n\n return (\n <DatePickerContext.Provider value={context}>\n <div ref={firstUpdate} className={calendarClassNames}>\n {calendarStyle === 'Month' && (\n <div className=\"diji-calendar-navigation\">\n <Icon icon={IconType.ArrowLeft2} onClick={previousMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n <Icon icon={IconType.ArrowRight2} onClick={nextMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n </div>\n )}\n {props.supportsWeek && (\n <div className=\"diji-calendar-picker-type\">\n <Icon\n name=\"Calendar_MothViewButton\"\n icon={IconType.ViewMonth}\n size=\"32px\"\n color={calendarStyle === 'Month' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsMonth}\n />\n <Icon\n name=\"Calendar_WeekViewButton\"\n icon={IconType.ViewWeek}\n size=\"32px\"\n color={calendarStyle === 'Week' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsWeek}\n />\n </div>\n )}\n {printMonths}\n {props.showMinNightStay && props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay u-flex u-flex-direction-column u-flex-align-center\">\n <DaysSelectedInformer />\n <div className=\"u-marg-top--light\">\n <MinimumNightStayPill />\n </div>\n </div>\n )}\n </div>\n\n {props.showMinNightStay && !props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay --small u-flex u-flex-direction-column u-flex-align-center u-marg-top\">\n <DaysSelectedInformer />\n <div className=\"u-marg-top--light\">\n <MinimumNightStayPill />\n </div>\n </div>\n )}\n </DatePickerContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"/","sources":["src/components/generic/date/DatePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, DatePickerContext, IDatePickerContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { lazy, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport API from '@/api/BookingAPI';\nimport DatePickerMonth from '@/components/generic/date/DatePickerMonth';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport DaysSelectedInformer from '@/components/steps/DaysSelectedInformer';\nimport MinimumNightStayPill from '@/components/steps/MinimumNightStayPill';\nimport { useBig4 } from '@/hooks/Big4';\nimport DatePickerTypeFeature from '@/providers/feature/DatePickerTypeFeature';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\n\nimport WeekViewSkeleton from './WeekViewSkeleton';\n\nconst DatePickerWeek = lazy(() => import('@/components/generic/date/DatePickerWeek'));\n\nexport interface DatePickerProps {\n showMonthOnLoad?: dayjs.Dayjs;\n\n selectedStartDate?: dayjs.Dayjs;\n selectedEndDate?: dayjs.Dayjs;\n\n canSelect?: boolean;\n // Includes default navigation arrows\n showArrows?: boolean;\n // Displays two side by side\n showMultipleMonths?: boolean;\n\n // Used for tight spaces\n small?: boolean;\n\n // is there support for start / end dates\n supportsMultiSelecting?: boolean;\n\n // Do or don't show mininmum night stay block\n showMinNightStay?: boolean;\n\n supportsWeek?: boolean;\n\n onDateClicked?: (date: dayjs.Dayjs) => void;\n onStartDateChanged?: (date: dayjs.Dayjs) => void;\n onEndDateChanged?: (date: dayjs.Dayjs) => void;\n}\n\ninterface DatePickerDayObject {\n value: string;\n dateObj: dayjs.Dayjs | null;\n price?: string;\n hovered: boolean;\n}\n\nenum DateRangePickingState {\n StartDate = 1,\n EndDate = 2,\n}\n\nexport default function DatePicker(props: DatePickerProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useBig4();\n\n const [currentMonth, setCurrentMonth] = useState(props.showMonthOnLoad ? props.showMonthOnLoad : props.selectedStartDate ? props.selectedStartDate : dayjs());\n\n const [selectedStartDate, setSelectedStartDate] = useState(props.selectedStartDate ?? null);\n const [selectedEndDate, setSelectedEndDate] = useState(props.selectedEndDate ?? null);\n\n const [hoveringOverDate, setHoveringOverDate] = useState<Dayjs | null>(null);\n\n const [pickingState, setPickingState] = useState(DateRangePickingState.StartDate);\n const [calendarStyle, setCalendarStyle] = useState<'Month' | 'Week'>(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n useEffect(() => {\n setCalendarStyle(hotel?.defaultDatepickerType ? hotel?.defaultDatepickerType : 'Month');\n }, [hotel?.defaultDatepickerType]);\n\n const [months, setMonths] = useState(props.showMultipleMonths ? [currentMonth, currentMonth.add(1, 'month')] : [currentMonth]);\n const [maxPrice, setMaxPrice] = useState(0);\n\n const basketContext = useContext(BasketContext);\n\n const onClickDate = async (newDate: dayjs.Dayjs) => {\n let newPickingState: DateRangePickingState | null = null;\n\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n const newDatePrice = await API.Availability.getCheapestPriceForDay(newDate, adults, children, infants, promoCode, hotel?.hotelID as string, memberNumber, false);\n\n switch (pickingState) {\n default:\n case DateRangePickingState.StartDate:\n if (newDatePrice.price || !hotel) {\n newPickingState = DateRangePickingState.EndDate;\n\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n }\n\n break;\n case DateRangePickingState.EndDate:\n if (newDate.isBefore(selectedStartDate)) {\n setSelectedStartDate(newDate);\n newPickingState = DateRangePickingState.EndDate;\n } else {\n newPickingState = DateRangePickingState.StartDate;\n\n setHoveringOverDate(null);\n\n const nextAvailableDay = await getLastValidDay(selectedStartDate as Dayjs, newDate);\n\n if (newDate.isSame(selectedStartDate)) {\n setSelectedEndDate(nextAvailableDay.add(1, 'day'));\n } else {\n setSelectedEndDate(nextAvailableDay);\n }\n }\n\n break;\n }\n\n if (props.supportsMultiSelecting) {\n setPickingState(newPickingState as DateRangePickingState);\n }\n };\n\n const getLastValidDay = (fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): Promise<dayjs.Dayjs> =>\n new Promise(async (resolve) => {\n const selectedBasketRow = basketContext.selectedBasketRow;\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 0;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n const diff = toDate?.diff?.(fromDate, 'day');\n\n let nextMustBreak = false;\n for (let i = 0; i <= diff; i++) {\n const dayToCheck = fromDate.add(i, 'day');\n const price = await API.Availability.getCheapestPriceForDay(dayToCheck, adults, children, infants, promoCode, hotel?.hotelID as string, memberNumber, false);\n\n if (nextMustBreak) {\n return resolve(dayToCheck.subtract(1, 'day'));\n }\n\n if (!price.price && hotel) {\n nextMustBreak = true;\n }\n }\n\n resolve(toDate);\n });\n\n const onHoveredOverDay = (day: dayjs.Dayjs) => {\n if (selectedStartDate && !selectedEndDate) {\n getLastValidDay(selectedStartDate, day).then((lastValidDay) => {\n setHoveringOverDate(lastValidDay);\n });\n }\n };\n\n const firstUpdate = useRef<HTMLDivElement | null>(null);\n\n // TODO: Perhaps refactor this later to not depend on non-state items\n useEffect(() => {\n if (DatePickerTypeFeature?.isActive() && props.supportsWeek) {\n setCalendarStyle('Week');\n }\n }, [DatePickerTypeFeature?.isActive()]);\n\n useEffect(() => {\n if (props.showMonthOnLoad) {\n setCurrentMonth(props.showMonthOnLoad);\n }\n }, [props.showMonthOnLoad]);\n\n useEffect(() => {\n if (props.showMultipleMonths) {\n setMonths([currentMonth, currentMonth.add(1, 'month')]);\n }\n }, [currentMonth, props.showMultipleMonths]);\n\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onStartDateChanged) {\n props.onStartDateChanged(selectedStartDate as Dayjs);\n }\n }, [selectedStartDate]);\n\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = null;\n return;\n }\n\n if (props.onEndDateChanged) {\n props.onEndDateChanged(selectedEndDate as Dayjs);\n }\n }, [selectedEndDate]);\n\n const context: IDatePickerContext = {\n today: dayjs(),\n todayInUnix: dayjs().unix(),\n startDate: selectedStartDate,\n endDate: selectedEndDate,\n\n hoveredMonth: hoveringOverDate,\n maxPrice,\n\n onHoverOver: onHoveredOverDay,\n currentMonth,\n\n onDayClicked: (date: dayjs.Dayjs) => {\n onClickDate(date);\n },\n setMaxPrice,\n };\n\n const printMonths = useMemo(\n () => (\n <>\n {calendarStyle === 'Month' ? (\n <>\n <DatePickerMonth small={props.small} showingMonth={currentMonth} />\n {props.showMultipleMonths && <DatePickerMonth showingMonth={currentMonth.add(1, 'month')} />}\n </>\n ) : (\n <>\n <React.Suspense fallback={<WeekViewSkeleton />}>\n <DatePickerWeek />\n </React.Suspense>\n </>\n )}\n </>\n ),\n [currentMonth, props.showMultipleMonths, calendarStyle]\n );\n\n const calendarClassNames = classNames('diji-calendar', {\n '--single': !props.showMultipleMonths,\n '--small': props.small,\n '--week': calendarStyle === 'Week',\n });\n const previousMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Previous Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.subtract(1, 'month'));\n };\n const nextMonthOnClick = () => {\n DataLayer.instance.sendInteraction('Show Next Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCurrentMonth(currentMonth.add(1, 'month'));\n };\n const setCalendarStyleAsMonth = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Month', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Month');\n };\n const setCalendarStyleAsWeek = () => {\n DataLayer.instance.sendInteraction('Set Calendar Style - Week', InteractionType.CALENDAR, InteractionStep.DATES);\n setCalendarStyle('Week');\n };\n\n return (\n <DatePickerContext.Provider value={context}>\n <div ref={firstUpdate} className={calendarClassNames}>\n {calendarStyle === 'Month' && (\n <div className=\"diji-calendar-navigation\">\n <Icon icon={IconType.ArrowLeft2} onClick={previousMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n <Icon icon={IconType.ArrowRight2} onClick={nextMonthOnClick} color={Color.White} backgroundColor={Color.Navy} borderRadius=\"round\" size=\"24px\" />\n </div>\n )}\n {props.supportsWeek && (\n <div className=\"diji-calendar-picker-type\">\n <Icon\n name=\"Calendar_MothViewButton\"\n icon={IconType.ViewMonth}\n size=\"32px\"\n color={calendarStyle === 'Month' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsMonth}\n />\n <Icon\n name=\"Calendar_WeekViewButton\"\n icon={IconType.ViewWeek}\n size=\"32px\"\n color={calendarStyle === 'Week' ? Color.Navy : Color.Grey}\n onClick={setCalendarStyleAsWeek}\n />\n </div>\n )}\n {printMonths}\n {props.showMinNightStay && props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay u-flex u-flex-direction-column u-flex-align-center\">\n <DaysSelectedInformer />\n <div className=\"u-marg-top--light\">\n <MinimumNightStayPill />\n </div>\n </div>\n )}\n </div>\n\n {props.showMinNightStay && !props.showMultipleMonths && (\n <div className=\"diji-calendar--min-night-stay --small u-flex u-flex-direction-column u-flex-align-center u-marg-top\">\n <DaysSelectedInformer />\n <div className=\"u-marg-top--light\">\n <MinimumNightStayPill />\n </div>\n </div>\n )}\n </DatePickerContext.Provider>\n );\n}\n"]}
@@ -64,12 +64,13 @@ function DatePickerDay(props) {
64
64
  let cancelled = false;
65
65
  const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 1;
66
66
  const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;
67
+ const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;
67
68
  const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';
68
69
  if (props.day && !isPast) {
69
70
  if (hotel) {
70
71
  setPrice(0);
71
72
  setIsLoading(true);
72
- BookingAPI_1.default.Availability.getCheapestPriceForDay(props.day, adults, children, promoCode, hotel.hotelID, memberNumber).then((foundedPrice) => {
73
+ BookingAPI_1.default.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, hotel.hotelID, memberNumber).then((foundedPrice) => {
73
74
  if (!cancelled) {
74
75
  if (foundedPrice) {
75
76
  setPrice(foundedPrice.price);
@@ -90,7 +91,7 @@ function DatePickerDay(props) {
90
91
  return () => {
91
92
  cancelled = true;
92
93
  };
93
- }, [props.day, selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getAdults(), selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getChildren(), selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getPromoCode(), memberNumber]);
94
+ }, [props.day, selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getAdults(), selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getChildren(), selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getInfants(), selectedBasketRow === null || selectedBasketRow === void 0 ? void 0 : selectedBasketRow.getPromoCode(), memberNumber]);
94
95
  (0, react_1.useEffect)(() => {
95
96
  if (datePickerContext.hoveredMonth) {
96
97
  if (props.unix && datePickerContext.startDate.isBefore(props.day, 'date') && datePickerContext.hoveredMonth.isSameOrAfter(props.day, 'date')) {
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerDay.js","sourceRoot":"/","sources":["src/components/generic/date/DatePickerDay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, DatePickerContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useBig4 } from '@/hooks/Big4';\nimport { Color } from '@/util/Color';\n\ninterface DatePickerDayProps {\n text: any;\n day?: dayjs.Dayjs | any;\n unix: number;\n price?: Promise<number>;\n statuses?: DatePickerDayStatus[];\n selectable?: boolean;\n onClick?: (day: string) => void;\n onHover?: (day: string, status: boolean) => void;\n displayType?: 'month' | 'week';\n}\n\nexport enum DatePickerDayStatus {\n Inactive = 0,\n Selecting = '--selecting',\n Loading = '--loading',\n Selected = '--selected',\n}\n\nexport default function DatePickerDay(props: DatePickerDayProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useBig4();\n\n const datePickerContext = useContext(DatePickerContext);\n const basketContext = useContext(BasketContext);\n\n const [price, setPrice] = useState<number>();\n\n const [isLoading, setIsLoading] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isSelected, setIsSelected] = useState(false);\n const [isSelecting, setIsSelecting] = useState(false);\n\n const [isFirst, setIsFirst] = useState(false);\n const [isLast, setIsLast] = useState(false);\n\n const isCurrent = props.day && (datePickerContext.today as Dayjs).isSame(props.day, 'date');\n const isPast = props.unix < datePickerContext.todayInUnix && !isCurrent;\n\n const { selectedBasketRow } = basketContext;\n\n useEffect(() => {\n let cancelled = false;\n\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 1;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n if (props.day && !isPast) {\n if (hotel) {\n setPrice(0);\n setIsLoading(true);\n API.Availability.getCheapestPriceForDay(props.day, adults, children, promoCode, hotel.hotelID, memberNumber).then((foundedPrice) => {\n if (!cancelled) {\n if (foundedPrice) {\n setPrice(foundedPrice.price);\n if (datePickerContext.maxPrice < AvailabilityAPI.maxNightPrice) {\n datePickerContext.setMaxPrice(AvailabilityAPI.maxNightPrice);\n }\n }\n\n setIsLoading(false);\n }\n });\n } else {\n datePickerContext.setMaxPrice(-1);\n setPrice(-1);\n setIsLoading(false);\n }\n }\n\n return () => {\n cancelled = true;\n };\n }, [props.day, selectedBasketRow?.getAdults(), selectedBasketRow?.getChildren(), selectedBasketRow?.getPromoCode(), memberNumber]);\n\n useEffect(() => {\n if (datePickerContext.hoveredMonth) {\n if (props.unix && (datePickerContext.startDate as Dayjs).isBefore(props.day, 'date') && datePickerContext.hoveredMonth.isSameOrAfter(props.day, 'date')) {\n setIsSelecting(true);\n\n if (datePickerContext.hoveredMonth.isSame(props.day, 'date') || (datePickerContext.endDate && datePickerContext.endDate.isSame(props.day))) {\n setIsLast(true);\n } else {\n setIsLast(false);\n }\n return;\n }\n }\n\n setIsSelecting(false);\n setIsLast(false);\n }, [datePickerContext.hoveredMonth, props.day]);\n\n useEffect(() => {\n if (props.unix && datePickerContext.startDate) {\n if (datePickerContext.startDate?.isSameOrBefore(props.day, 'date') && datePickerContext.endDate?.isSameOrAfter(props.day, 'date')) {\n setIsSelected(true);\n\n if (datePickerContext.endDate?.isSame(props.day, 'date')) {\n setIsLast(true);\n }\n\n return;\n }\n\n if (datePickerContext.startDate.isSame(props.day, 'date')) {\n setIsFirst(true);\n setIsSelected(true);\n\n return;\n }\n }\n\n setIsSelected(false);\n setIsFirst(false);\n setIsLast(false);\n }, [datePickerContext.startDate, datePickerContext.endDate, props.day]);\n\n const memo = useMemo(() => {\n const onHoverIn = (e: React.MouseEvent) => {\n datePickerContext.onHoverOver(props.day);\n setIsHovering(true);\n };\n\n const onHoverOut = (e: React.MouseEvent) => {\n setIsHovering(false);\n };\n\n const onClick = (e: React.MouseEvent) => {\n datePickerContext.onDayClicked(props.day);\n };\n\n const isSelectable = () => {\n return props.day && props.selectable && !isLoading && !isPast && (price || !hotel);\n };\n\n const classes = classNames(`diji-calendar-${props.displayType ?? 'month'}--item`, {\n '--selectable': isSelectable(),\n '--hovered': isHovering && isSelectable(),\n '--past': !isSelectable(),\n '--current': isCurrent,\n '--first': isFirst,\n '--last': isLast,\n '--loading': isLoading,\n '--selected': isSelected,\n '--selecting': isSelecting && !isSelected,\n });\n\n const events: any = {};\n\n events.onMouseEnter = onHoverIn;\n events.onMouseLeave = onHoverOut;\n events.onClick = onClick;\n\n const priceBlock = props.day && props.selectable && !isPast && (price || (isLoading && !price)) && (price as number) >= 0 && (\n <div className={`diji-calendar-${props.displayType ?? 'month'}--item-cost`}>\n {isLoading ? (\n <div className=\"u-inline-flex a-spin\">\n <Icon color={Color.Accent} icon={IconType.Spinner} size=\"14px\" />\n </div>\n ) : (\n <Text type={TextType.Label}>\n <Currency shortenThousandsAfter={6} removeCurrencyAfterChar={5} hideDecimals disableLocalization>\n {price}\n </Currency>\n </Text>\n )}\n </div>\n );\n\n if (props.displayType === 'week') {\n let height = 0;\n const range = ((price as number) / AvailabilityAPI.maxNightPrice) * 100;\n\n if (isSelectable()) {\n if (range < 10) {\n height = 10;\n } else if (range > 90) {\n height = 90;\n } else {\n height = range;\n }\n } else {\n if (!isLoading) {\n height = 95;\n }\n }\n\n return (\n <div className={classes} {...events}>\n {props.text === '1' && <div className=\"diji-calendar-week--month-indicator\">{props.day.format('MMMM')}</div>}\n <div className=\"diji-calendar-week--day-label\">{props.day.format('dd')}</div>\n <div className=\"diji-calendar-week--day-digit\">\n <Text>{props.text}</Text>\n </div>\n <div className=\"diji-calendar-week--price-indicator\">\n <div className=\"diji-calendar-week--price-indicator-block\" style={{ maxHeight: `${height}%` }} />\n </div>\n {priceBlock}\n </div>\n );\n } else {\n return (\n <div className={classes} {...events}>\n <Text>{props.text}</Text>\n {priceBlock}\n </div>\n );\n }\n }, [\n isFirst,\n isLast,\n isSelecting,\n isSelected,\n isHovering,\n isLoading,\n props.unix,\n datePickerContext.hoveredMonth,\n datePickerContext.startDate,\n datePickerContext.endDate,\n basketContext,\n datePickerContext.maxPrice,\n hotel,\n ]);\n\n return memo;\n}\n"]}
1
+ {"version":3,"file":"DatePickerDay.js","sourceRoot":"/","sources":["src/components/generic/date/DatePickerDay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, DatePickerContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\n\nimport AvailabilityAPI from '@/api/AvailabilityAPI';\nimport API from '@/api/BookingAPI';\nimport Currency from '@/components/generic/Currency';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useBig4 } from '@/hooks/Big4';\nimport { Color } from '@/util/Color';\n\ninterface DatePickerDayProps {\n text: any;\n day?: dayjs.Dayjs | any;\n unix: number;\n price?: Promise<number>;\n statuses?: DatePickerDayStatus[];\n selectable?: boolean;\n onClick?: (day: string) => void;\n onHover?: (day: string, status: boolean) => void;\n displayType?: 'month' | 'week';\n}\n\nexport enum DatePickerDayStatus {\n Inactive = 0,\n Selecting = '--selecting',\n Loading = '--loading',\n Selected = '--selected',\n}\n\nexport default function DatePickerDay(props: DatePickerDayProps) {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useBig4();\n\n const datePickerContext = useContext(DatePickerContext);\n const basketContext = useContext(BasketContext);\n\n const [price, setPrice] = useState<number>();\n\n const [isLoading, setIsLoading] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isSelected, setIsSelected] = useState(false);\n const [isSelecting, setIsSelecting] = useState(false);\n\n const [isFirst, setIsFirst] = useState(false);\n const [isLast, setIsLast] = useState(false);\n\n const isCurrent = props.day && (datePickerContext.today as Dayjs).isSame(props.day, 'date');\n const isPast = props.unix < datePickerContext.todayInUnix && !isCurrent;\n\n const { selectedBasketRow } = basketContext;\n\n useEffect(() => {\n let cancelled = false;\n\n const adults = selectedBasketRow ? selectedBasketRow.getAdults() : 1;\n const children = selectedBasketRow ? selectedBasketRow.getChildren() : 0;\n const infants = selectedBasketRow ? selectedBasketRow.getInfants() : 0;\n const promoCode = selectedBasketRow ? selectedBasketRow.getPromoCode() : '';\n\n if (props.day && !isPast) {\n if (hotel) {\n setPrice(0);\n setIsLoading(true);\n API.Availability.getCheapestPriceForDay(props.day, adults, children, infants, promoCode, hotel.hotelID, memberNumber).then((foundedPrice) => {\n if (!cancelled) {\n if (foundedPrice) {\n setPrice(foundedPrice.price);\n if (datePickerContext.maxPrice < AvailabilityAPI.maxNightPrice) {\n datePickerContext.setMaxPrice(AvailabilityAPI.maxNightPrice);\n }\n }\n\n setIsLoading(false);\n }\n });\n } else {\n datePickerContext.setMaxPrice(-1);\n setPrice(-1);\n setIsLoading(false);\n }\n }\n\n return () => {\n cancelled = true;\n };\n }, [props.day, selectedBasketRow?.getAdults(), selectedBasketRow?.getChildren(), selectedBasketRow?.getInfants(), selectedBasketRow?.getPromoCode(), memberNumber]);\n\n useEffect(() => {\n if (datePickerContext.hoveredMonth) {\n if (props.unix && (datePickerContext.startDate as Dayjs).isBefore(props.day, 'date') && datePickerContext.hoveredMonth.isSameOrAfter(props.day, 'date')) {\n setIsSelecting(true);\n\n if (datePickerContext.hoveredMonth.isSame(props.day, 'date') || (datePickerContext.endDate && datePickerContext.endDate.isSame(props.day))) {\n setIsLast(true);\n } else {\n setIsLast(false);\n }\n return;\n }\n }\n\n setIsSelecting(false);\n setIsLast(false);\n }, [datePickerContext.hoveredMonth, props.day]);\n\n useEffect(() => {\n if (props.unix && datePickerContext.startDate) {\n if (datePickerContext.startDate?.isSameOrBefore(props.day, 'date') && datePickerContext.endDate?.isSameOrAfter(props.day, 'date')) {\n setIsSelected(true);\n\n if (datePickerContext.endDate?.isSame(props.day, 'date')) {\n setIsLast(true);\n }\n\n return;\n }\n\n if (datePickerContext.startDate.isSame(props.day, 'date')) {\n setIsFirst(true);\n setIsSelected(true);\n\n return;\n }\n }\n\n setIsSelected(false);\n setIsFirst(false);\n setIsLast(false);\n }, [datePickerContext.startDate, datePickerContext.endDate, props.day]);\n\n const memo = useMemo(() => {\n const onHoverIn = (e: React.MouseEvent) => {\n datePickerContext.onHoverOver(props.day);\n setIsHovering(true);\n };\n\n const onHoverOut = (e: React.MouseEvent) => {\n setIsHovering(false);\n };\n\n const onClick = (e: React.MouseEvent) => {\n datePickerContext.onDayClicked(props.day);\n };\n\n const isSelectable = () => {\n return props.day && props.selectable && !isLoading && !isPast && (price || !hotel);\n };\n\n const classes = classNames(`diji-calendar-${props.displayType ?? 'month'}--item`, {\n '--selectable': isSelectable(),\n '--hovered': isHovering && isSelectable(),\n '--past': !isSelectable(),\n '--current': isCurrent,\n '--first': isFirst,\n '--last': isLast,\n '--loading': isLoading,\n '--selected': isSelected,\n '--selecting': isSelecting && !isSelected,\n });\n\n const events: any = {};\n\n events.onMouseEnter = onHoverIn;\n events.onMouseLeave = onHoverOut;\n events.onClick = onClick;\n\n const priceBlock = props.day && props.selectable && !isPast && (price || (isLoading && !price)) && (price as number) >= 0 && (\n <div className={`diji-calendar-${props.displayType ?? 'month'}--item-cost`}>\n {isLoading ? (\n <div className=\"u-inline-flex a-spin\">\n <Icon color={Color.Accent} icon={IconType.Spinner} size=\"14px\" />\n </div>\n ) : (\n <Text type={TextType.Label}>\n <Currency shortenThousandsAfter={6} removeCurrencyAfterChar={5} hideDecimals disableLocalization>\n {price}\n </Currency>\n </Text>\n )}\n </div>\n );\n\n if (props.displayType === 'week') {\n let height = 0;\n const range = ((price as number) / AvailabilityAPI.maxNightPrice) * 100;\n\n if (isSelectable()) {\n if (range < 10) {\n height = 10;\n } else if (range > 90) {\n height = 90;\n } else {\n height = range;\n }\n } else {\n if (!isLoading) {\n height = 95;\n }\n }\n\n return (\n <div className={classes} {...events}>\n {props.text === '1' && <div className=\"diji-calendar-week--month-indicator\">{props.day.format('MMMM')}</div>}\n <div className=\"diji-calendar-week--day-label\">{props.day.format('dd')}</div>\n <div className=\"diji-calendar-week--day-digit\">\n <Text>{props.text}</Text>\n </div>\n <div className=\"diji-calendar-week--price-indicator\">\n <div className=\"diji-calendar-week--price-indicator-block\" style={{ maxHeight: `${height}%` }} />\n </div>\n {priceBlock}\n </div>\n );\n } else {\n return (\n <div className={classes} {...events}>\n <Text>{props.text}</Text>\n {priceBlock}\n </div>\n );\n }\n }, [\n isFirst,\n isLast,\n isSelecting,\n isSelected,\n isHovering,\n isLoading,\n props.unix,\n datePickerContext.hoveredMonth,\n datePickerContext.startDate,\n datePickerContext.endDate,\n basketContext,\n datePickerContext.maxPrice,\n hotel,\n ]);\n\n return memo;\n}\n"]}
@@ -65,6 +65,7 @@ const Validation_1 = require("../../../util/Validation");
65
65
  const RoomContactDetails = () => {
66
66
  const { register, formState, control, watch, getValues, setValue } = (0, react_hook_form_1.useFormContext)();
67
67
  const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
68
+ const { engine } = (0, contexts_1.useBookingEngine)();
68
69
  const basketRows = basketContext.getAllValidRows();
69
70
  const basketAddonRows = basketContext.basketAddonRows;
70
71
  const { hotel } = (0, hooks_1.useCurrentHotel)();
@@ -203,7 +204,10 @@ const RoomContactDetails = () => {
203
204
  ' ',
204
205
  StringHelper_1.default.pluralWithDictAndCount(basketRow.getAdults(), Translation_1.Translation.Step.Date.Adult, t),
205
206
  ",\u00A0",
206
- StringHelper_1.default.pluralWithDictAndCount(basketRow.getChildren(), Translation_1.Translation.Step.Date.Child, t)),
207
+ StringHelper_1.default.pluralWithDictAndCount(basketRow.getChildren(), Translation_1.Translation.Step.Date.Child, t),
208
+ engine.getConfig().disableInfants ? null : (react_1.default.createElement(react_1.default.Fragment, null,
209
+ ",\u00A0",
210
+ StringHelper_1.default.pluralWithDictAndCount(basketRow.getInfants(), Translation_1.Translation.Step.Date.Infant, t)))),
207
211
  react_1.default.createElement("div", { className: "step-one-status--dates u-flex justify-content-start" },
208
212
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Accent },
209
213
  react_1.default.createElement("strong", null, basketRow.getStartDate().format('ddd, MMM D'))),
@@ -1 +1 @@
1
- {"version":3,"file":"RoomContactDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/RoomContactDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, RoomstayMemberContext } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { EBookingPaymentMethod } from '@roomstay/core';\nimport React, { FC, ReactElement, useContext, useEffect, useState } from 'react';\nimport { Controller, FieldError, useFieldArray, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Checkbox from '@/components/generic/Checkbox/Checkbox';\nimport EnhancedPhoneNumberField from '@/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { InputSelect } from '@/components/generic/Select';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport StepConfirmationCountrySelector from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nimport { ConfirmationFormValues, EUserProfileFormKey } from '@/models/Confirmation';\nimport E164PhoneNumberFieldFeature from '@/providers/feature/E164PhoneNumberFieldFeature';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport StringHelper from '@/util/StringHelper';\nimport { EMAIL_REGEX } from '@/util/Validation';\n\nconst RoomContactDetails: FC = () => {\n const { register, formState, control, watch, getValues, setValue } = useFormContext<ConfirmationFormValues>();\n const basketContext = useContext(BasketContext);\n const basketRows = basketContext.getAllValidRows();\n const basketAddonRows = basketContext.basketAddonRows;\n const { hotel } = useCurrentHotel();\n\n const { update, fields } = useFieldArray({\n control,\n name: 'userProfiles',\n });\n const [copyCheckBox, paymentMethod] = watch(['copyCheckBox', 'paymentMethod']);\n\n const errors = formState.errors;\n\n const { t } = useTranslation();\n const { roomstayMember: member } = useContext(RoomstayMemberContext);\n\n useEffect(() => {\n errors.userProfiles?.forEach?.((_, index) => {\n if (errors.userProfiles?.[index]) {\n opens[index] = true;\n }\n });\n setOpens(opens.slice(0));\n }, [errors.userProfiles, copyCheckBox]);\n\n useEffect(() => {\n const getDefaultValue = (index: number, potentialDefaultValue = '') => {\n return index === 0 ? potentialDefaultValue : '';\n };\n const userProfiles = basketRows.map((basketRows, index) => {\n return {\n [EUserProfileFormKey.Forename]: getDefaultValue(index, member?.forename),\n [EUserProfileFormKey.Surname]: getDefaultValue(index, member?.surname),\n [EUserProfileFormKey.Email]: getDefaultValue(index, member?.email),\n [EUserProfileFormKey.Phone]: getDefaultValue(index, member?.phoneNumber),\n [EUserProfileFormKey.Address]: getDefaultValue(index, member?.address?.address),\n [EUserProfileFormKey.City]: getDefaultValue(index, member?.address?.city),\n [EUserProfileFormKey.PostCode]: getDefaultValue(index, member?.address?.zip),\n [EUserProfileFormKey.Country]: getDefaultValue(index, member?.address?.country),\n [EUserProfileFormKey.CountryId]: '',\n };\n });\n setValue('userProfiles', userProfiles);\n setValue('copyCheckBox', !!(basketRows?.length && basketRows.length > 1));\n }, [member, basketRows?.length]);\n\n const padInputNameByRoomNumber = (name: EUserProfileFormKey, index: number) => `userProfiles.${index}.${name}` as const;\n\n const [opens, setOpens] = useState<boolean[]>(basketRows.map((basketRow, index) => index === 0));\n\n const onInputChange =\n (fieldName: string, interactionName: string) =>\n (event: any): void => {\n DataLayer.instance.sendInteraction(interactionName, InteractionType.FORM_FIELD, InteractionStep.GUEST_DETAILS);\n };\n\n useEffect(() => {\n if (copyCheckBox)\n fields.forEach((basketRow, index) => {\n if (index === 0) return;\n update(index, getValues(`userProfiles.0`));\n });\n }, [copyCheckBox]);\n\n useEffect(() => {\n const { unsubscribe } = watch((allFields, { name, type }) => {\n if (type === 'change' && name?.includes('userProfiles') && name.split('.')[1] === '0' && allFields.copyCheckBox) {\n fields.map((field, index) => {\n if (index === 0) return;\n update(index, getValues('userProfiles.0'));\n });\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [fields]);\n\n useEffect(() => {\n DataLayer.instance.sendCheckoutView(basketRows, basketAddonRows);\n }, []);\n\n const setOpenByIndex = (index: number, value: boolean) => {\n opens.splice(index, 1, value);\n setOpens(opens.slice(0));\n };\n\n const renderError = (userProfileIndex: number): ReactElement | null => {\n const userProfile = errors.userProfiles?.[userProfileIndex];\n if (userProfile && formState.submitCount >= 1 && (userProfileIndex === 0 || !copyCheckBox))\n Object.values(userProfile).map((error, errorIndex) => {\n return (\n <AutoAutoHeight key={errorIndex} open>\n <div className=\"u-flex\">\n <Alert icon={IconType.Error} type={AlertType.Danger} noMargin={errorIndex === Object.keys(userProfile).length - 1}>\n <Text type={TextType.Small}>{(error as FieldError)?.message}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n });\n return null;\n };\n\n return (\n <>\n {fields.map((field, index) => {\n const padInputName = (name: EUserProfileFormKey) => padInputNameByRoomNumber(name, index);\n const getValidationClass = (name: EUserProfileFormKey) => {\n if (!errors.userProfiles || (copyCheckBox && index >= 1)) return;\n if (errors.userProfiles[index]?.[name]) {\n return 'error';\n // Hack to get Aux Inputs to validate as well.\n } else if (errors.userProfiles[index]?.AuxInputs?.[name.replace('AuxInputs.', '')]) {\n return 'error';\n } else {\n return 'success';\n }\n };\n\n const openExpandable = () => {\n if (index !== 0) {\n setOpenByIndex(index, !opens[index]);\n }\n };\n\n const basketRow = basketRows[index];\n const currentRoom = basketRow.getRoom();\n\n const isDisabled = (copyCheckBox && index >= 1) || paymentMethod === EBookingPaymentMethod.Planpay;\n\n const roomGroup = hotel?.roomGroups?.find(({ id }) => id === currentRoom.roomGroupId);\n const requiredInputs = [];\n\n for (const inputKey of Object.keys(roomGroup?.filters ?? {})) {\n const input = roomGroup?.filters[inputKey];\n if (input?.requireInput) {\n requiredInputs.push({ id: `AuxInputs.${inputKey}`, name: input.name, label: input.name, options: input.options });\n }\n }\n\n return (\n <div key={field.id}>\n <div className={index === 0 ? '' : 'u-marg-bottom--heavy'}>\n <div className=\"u-marg-bottom\" onClick={openExpandable}>\n <div className=\"u-flex u-marg-bottom align-items-center\">\n <Headline bold>\n {t(Translation.Misc.Room)} {index + 1}\n </Headline>\n {index !== 0 && <Icon icon={opens[index] ? IconType.ArrowDown2 : IconType.ArrowUp2} color={Color.Grey} />}\n </div>\n {basketRow && (\n <div className=\"u-marg-bottom\">\n <Text>\n <strong className=\"u-block@l-\">{basketRow.getRoom().name}</strong> for{' '}\n {StringHelper.pluralWithDictAndCount(basketRow.getAdults(), Translation.Step.Date.Adult, t)}\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(basketRow.getChildren(), Translation.Step.Date.Child, t)}\n </Text>\n <div className=\"step-one-status--dates u-flex justify-content-start\">\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{basketRow.getStartDate().format('ddd, MMM D')}</strong>\n </Text>\n <Icon icon={IconType.ArrowRight2} size=\"18px\" />\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{basketRow.getEndDate().format('ddd, MMM D')}</strong>\n </Text>\n </div>\n </div>\n )}\n {renderError(index)}\n </div>\n <div className=\"room-contact-details--row\" style={{ maxHeight: opens[index] ? undefined : 0 }}>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.ContactInfo)}</strong>\n </Text>\n </div>\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Forename) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Forename)}\n {...register(padInputName(EUserProfileFormKey.Forename), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Forename), 'Forename - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Forename) }),\n },\n })}\n />\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Surname) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Surname)}\n {...register(padInputName(EUserProfileFormKey.Surname), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Surname), 'Surname - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Surname) }),\n },\n })}\n />\n </InputGroup>\n\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Email) + ' *'}\n wide\n validationStatus={getValidationClass(EUserProfileFormKey.Email)}\n required\n {...register(padInputName(EUserProfileFormKey.Email), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Email), 'Email - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Email) }),\n },\n pattern: {\n value: EMAIL_REGEX,\n message: t(Translation.Step.Confirmation.Inputs.InvalidEmail),\n },\n })}\n />\n {E164PhoneNumberFieldFeature.isActive() ? (\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Phone)}\n rules={{\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Phone) }),\n },\n minLength: {\n value: 5,\n message: 'Phone number is required',\n },\n maxLength: {\n value: 17,\n message: 'Phone number is too long',\n },\n pattern: {\n value: /^[1-9]( |\\d){1,15}$/g,\n message: 'Incorrect phone number entered',\n },\n }}\n render={({ field }) => {\n return (\n <EnhancedPhoneNumberField\n disabled={isDisabled}\n validationStatus={getValidationClass(EUserProfileFormKey.Phone)}\n {...field}\n onChange={(e: any) => {\n field.onChange(e);\n onInputChange(padInputName(EUserProfileFormKey.Phone), 'Phone - Contact Info')(e);\n }}\n />\n );\n }}\n />\n ) : (\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Phone) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Phone)}\n {...register(padInputName(EUserProfileFormKey.Phone), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Phone), 'Phone - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Phone) }),\n },\n })}\n />\n )}\n </InputGroup>\n </div>\n <div className=\"\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Address)}</strong>\n </Text>\n </div>\n\n <InputGroup dimensions=\"3/1\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Address) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Address)}\n {...register(padInputName(EUserProfileFormKey.Address), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Address), 'Address - Address'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Address) }),\n },\n })}\n />\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.City) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.City)}\n {...register(padInputName(EUserProfileFormKey.City), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.City), 'City - Address'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.City) }),\n },\n })}\n />\n </InputGroup>\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.PostCode) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.PostCode)}\n {...register(padInputName(EUserProfileFormKey.PostCode), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.PostCode), 'PostCode - Address'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.PostCode) }),\n },\n })}\n />\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Country)}\n rules={{\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Country) }),\n },\n }}\n render={({ field }) => {\n const { ref, onChange, ...rest } = field;\n return (\n <StepConfirmationCountrySelector\n disabled={isDisabled}\n validationStatus={getValidationClass(EUserProfileFormKey.Country)}\n onChange={(e) => {\n onChange(e);\n onInputChange(padInputName(EUserProfileFormKey.Country), 'Country - Address')(e);\n }}\n onChangeId={(id) => {\n setValue(padInputName(EUserProfileFormKey.CountryId), id as never); // Hack to make CountryID be set...\n }}\n {...rest}\n />\n );\n }}\n />\n </InputGroup>\n </div>\n </div>\n {requiredInputs.length > 0 && (\n <div className=\"u-marg-top\">\n <div className=\"u-marg-top\">\n <InputGroup dimensions=\"2/2\">\n {requiredInputs.map((input) => {\n const options = input.options;\n return (\n <Controller\n key={input.id}\n control={control}\n name={padInputName(input.id as any)}\n rules={{ required: true }}\n render={({ field }) => {\n const { ref, ...rest } = field;\n\n return (\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{input.name}</strong>\n </Text>\n </div>\n <InputSelect\n key={input.id}\n keyName=\"value\"\n labelName=\"label\"\n options={options}\n placeholder=\"Please Select\"\n validationStatus={getValidationClass(input.id as any)}\n {...rest}\n />\n </>\n );\n }}\n />\n );\n })}\n </InputGroup>\n </div>\n </div>\n )}\n\n <LineBreak />\n </div>\n {fields.length > 1 && index === 0 ? (\n <div className=\"u-marg-bottom--heavy\">\n <Checkbox label={t(Translation.Step.Confirmation.ApplySameInfoToOtherRooms)} {...register('copyCheckBox')} />\n </div>\n ) : null}\n </div>\n );\n })}\n </>\n );\n};\n\nexport default RoomContactDetails;\n"]}
1
+ {"version":3,"file":"RoomContactDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/RoomContactDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, RoomstayMemberContext, useBookingEngine } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { EBookingPaymentMethod } from '@roomstay/core';\nimport React, { FC, ReactElement, useContext, useEffect, useState } from 'react';\nimport { Controller, FieldError, useFieldArray, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Checkbox from '@/components/generic/Checkbox/Checkbox';\nimport EnhancedPhoneNumberField from '@/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField';\nimport Headline from '@/components/generic/Headline';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { InputSelect } from '@/components/generic/Select';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport StepConfirmationCountrySelector from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nimport { ConfirmationFormValues, EUserProfileFormKey } from '@/models/Confirmation';\nimport E164PhoneNumberFieldFeature from '@/providers/feature/E164PhoneNumberFieldFeature';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport StringHelper from '@/util/StringHelper';\nimport { EMAIL_REGEX } from '@/util/Validation';\n\nconst RoomContactDetails: FC = () => {\n const { register, formState, control, watch, getValues, setValue } = useFormContext<ConfirmationFormValues>();\n const basketContext = useContext(BasketContext);\n const { engine } = useBookingEngine();\n const basketRows = basketContext.getAllValidRows();\n const basketAddonRows = basketContext.basketAddonRows;\n const { hotel } = useCurrentHotel();\n\n const { update, fields } = useFieldArray({\n control,\n name: 'userProfiles',\n });\n const [copyCheckBox, paymentMethod] = watch(['copyCheckBox', 'paymentMethod']);\n\n const errors = formState.errors;\n\n const { t } = useTranslation();\n const { roomstayMember: member } = useContext(RoomstayMemberContext);\n\n useEffect(() => {\n errors.userProfiles?.forEach?.((_, index) => {\n if (errors.userProfiles?.[index]) {\n opens[index] = true;\n }\n });\n setOpens(opens.slice(0));\n }, [errors.userProfiles, copyCheckBox]);\n\n useEffect(() => {\n const getDefaultValue = (index: number, potentialDefaultValue = '') => {\n return index === 0 ? potentialDefaultValue : '';\n };\n const userProfiles = basketRows.map((basketRows, index) => {\n return {\n [EUserProfileFormKey.Forename]: getDefaultValue(index, member?.forename),\n [EUserProfileFormKey.Surname]: getDefaultValue(index, member?.surname),\n [EUserProfileFormKey.Email]: getDefaultValue(index, member?.email),\n [EUserProfileFormKey.Phone]: getDefaultValue(index, member?.phoneNumber),\n [EUserProfileFormKey.Address]: getDefaultValue(index, member?.address?.address),\n [EUserProfileFormKey.City]: getDefaultValue(index, member?.address?.city),\n [EUserProfileFormKey.PostCode]: getDefaultValue(index, member?.address?.zip),\n [EUserProfileFormKey.Country]: getDefaultValue(index, member?.address?.country),\n [EUserProfileFormKey.CountryId]: '',\n };\n });\n setValue('userProfiles', userProfiles);\n setValue('copyCheckBox', !!(basketRows?.length && basketRows.length > 1));\n }, [member, basketRows?.length]);\n\n const padInputNameByRoomNumber = (name: EUserProfileFormKey, index: number) => `userProfiles.${index}.${name}` as const;\n\n const [opens, setOpens] = useState<boolean[]>(basketRows.map((basketRow, index) => index === 0));\n\n const onInputChange =\n (fieldName: string, interactionName: string) =>\n (event: any): void => {\n DataLayer.instance.sendInteraction(interactionName, InteractionType.FORM_FIELD, InteractionStep.GUEST_DETAILS);\n };\n\n useEffect(() => {\n if (copyCheckBox)\n fields.forEach((basketRow, index) => {\n if (index === 0) return;\n update(index, getValues(`userProfiles.0`));\n });\n }, [copyCheckBox]);\n\n useEffect(() => {\n const { unsubscribe } = watch((allFields, { name, type }) => {\n if (type === 'change' && name?.includes('userProfiles') && name.split('.')[1] === '0' && allFields.copyCheckBox) {\n fields.map((field, index) => {\n if (index === 0) return;\n update(index, getValues('userProfiles.0'));\n });\n }\n });\n\n return () => {\n unsubscribe();\n };\n }, [fields]);\n\n useEffect(() => {\n DataLayer.instance.sendCheckoutView(basketRows, basketAddonRows);\n }, []);\n\n const setOpenByIndex = (index: number, value: boolean) => {\n opens.splice(index, 1, value);\n setOpens(opens.slice(0));\n };\n\n const renderError = (userProfileIndex: number): ReactElement | null => {\n const userProfile = errors.userProfiles?.[userProfileIndex];\n if (userProfile && formState.submitCount >= 1 && (userProfileIndex === 0 || !copyCheckBox))\n Object.values(userProfile).map((error, errorIndex) => {\n return (\n <AutoAutoHeight key={errorIndex} open>\n <div className=\"u-flex\">\n <Alert icon={IconType.Error} type={AlertType.Danger} noMargin={errorIndex === Object.keys(userProfile).length - 1}>\n <Text type={TextType.Small}>{(error as FieldError)?.message}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n });\n return null;\n };\n\n return (\n <>\n {fields.map((field, index) => {\n const padInputName = (name: EUserProfileFormKey) => padInputNameByRoomNumber(name, index);\n const getValidationClass = (name: EUserProfileFormKey) => {\n if (!errors.userProfiles || (copyCheckBox && index >= 1)) return;\n if (errors.userProfiles[index]?.[name]) {\n return 'error';\n // Hack to get Aux Inputs to validate as well.\n } else if (errors.userProfiles[index]?.AuxInputs?.[name.replace('AuxInputs.', '')]) {\n return 'error';\n } else {\n return 'success';\n }\n };\n\n const openExpandable = () => {\n if (index !== 0) {\n setOpenByIndex(index, !opens[index]);\n }\n };\n\n const basketRow = basketRows[index];\n const currentRoom = basketRow.getRoom();\n\n const isDisabled = (copyCheckBox && index >= 1) || paymentMethod === EBookingPaymentMethod.Planpay;\n\n const roomGroup = hotel?.roomGroups?.find(({ id }) => id === currentRoom.roomGroupId);\n const requiredInputs = [];\n\n for (const inputKey of Object.keys(roomGroup?.filters ?? {})) {\n const input = roomGroup?.filters[inputKey];\n if (input?.requireInput) {\n requiredInputs.push({ id: `AuxInputs.${inputKey}`, name: input.name, label: input.name, options: input.options });\n }\n }\n\n return (\n <div key={field.id}>\n <div className={index === 0 ? '' : 'u-marg-bottom--heavy'}>\n <div className=\"u-marg-bottom\" onClick={openExpandable}>\n <div className=\"u-flex u-marg-bottom align-items-center\">\n <Headline bold>\n {t(Translation.Misc.Room)} {index + 1}\n </Headline>\n {index !== 0 && <Icon icon={opens[index] ? IconType.ArrowDown2 : IconType.ArrowUp2} color={Color.Grey} />}\n </div>\n {basketRow && (\n <div className=\"u-marg-bottom\">\n <Text>\n <strong className=\"u-block@l-\">{basketRow.getRoom().name}</strong> for{' '}\n {StringHelper.pluralWithDictAndCount(basketRow.getAdults(), Translation.Step.Date.Adult, t)}\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(basketRow.getChildren(), Translation.Step.Date.Child, t)}\n {engine.getConfig().disableInfants ? null : (\n <>\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(basketRow.getInfants(), Translation.Step.Date.Infant, t)}\n </>\n )}\n </Text>\n <div className=\"step-one-status--dates u-flex justify-content-start\">\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{basketRow.getStartDate().format('ddd, MMM D')}</strong>\n </Text>\n <Icon icon={IconType.ArrowRight2} size=\"18px\" />\n <Text type={TextType.Small} color={Color.Accent}>\n <strong>{basketRow.getEndDate().format('ddd, MMM D')}</strong>\n </Text>\n </div>\n </div>\n )}\n {renderError(index)}\n </div>\n <div className=\"room-contact-details--row\" style={{ maxHeight: opens[index] ? undefined : 0 }}>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.ContactInfo)}</strong>\n </Text>\n </div>\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Forename) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Forename)}\n {...register(padInputName(EUserProfileFormKey.Forename), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Forename), 'Forename - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Forename) }),\n },\n })}\n />\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Surname) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Surname)}\n {...register(padInputName(EUserProfileFormKey.Surname), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Surname), 'Surname - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Surname) }),\n },\n })}\n />\n </InputGroup>\n\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Email) + ' *'}\n wide\n validationStatus={getValidationClass(EUserProfileFormKey.Email)}\n required\n {...register(padInputName(EUserProfileFormKey.Email), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Email), 'Email - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Email) }),\n },\n pattern: {\n value: EMAIL_REGEX,\n message: t(Translation.Step.Confirmation.Inputs.InvalidEmail),\n },\n })}\n />\n {E164PhoneNumberFieldFeature.isActive() ? (\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Phone)}\n rules={{\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Phone) }),\n },\n minLength: {\n value: 5,\n message: 'Phone number is required',\n },\n maxLength: {\n value: 17,\n message: 'Phone number is too long',\n },\n pattern: {\n value: /^[1-9]( |\\d){1,15}$/g,\n message: 'Incorrect phone number entered',\n },\n }}\n render={({ field }) => {\n return (\n <EnhancedPhoneNumberField\n disabled={isDisabled}\n validationStatus={getValidationClass(EUserProfileFormKey.Phone)}\n {...field}\n onChange={(e: any) => {\n field.onChange(e);\n onInputChange(padInputName(EUserProfileFormKey.Phone), 'Phone - Contact Info')(e);\n }}\n />\n );\n }}\n />\n ) : (\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Phone) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Phone)}\n {...register(padInputName(EUserProfileFormKey.Phone), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Phone), 'Phone - Contact Info'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Phone) }),\n },\n })}\n />\n )}\n </InputGroup>\n </div>\n <div className=\"\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Address)}</strong>\n </Text>\n </div>\n\n <InputGroup dimensions=\"3/1\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.Address) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.Address)}\n {...register(padInputName(EUserProfileFormKey.Address), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.Address), 'Address - Address'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Address) }),\n },\n })}\n />\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.City) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.City)}\n {...register(padInputName(EUserProfileFormKey.City), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.City), 'City - Address'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.City) }),\n },\n })}\n />\n </InputGroup>\n <InputGroup dimensions=\"2/2\">\n <TextBox\n inputProps={{\n disabled: isDisabled,\n }}\n placeholder={t(Translation.Step.Confirmation.Inputs.PostCode) + ' *'}\n wide\n required\n validationStatus={getValidationClass(EUserProfileFormKey.PostCode)}\n {...register(padInputName(EUserProfileFormKey.PostCode), {\n onChange: onInputChange(padInputName(EUserProfileFormKey.PostCode), 'PostCode - Address'),\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.PostCode) }),\n },\n })}\n />\n <Controller\n control={control}\n name={padInputName(EUserProfileFormKey.Country)}\n rules={{\n required: {\n value: true,\n message: t(Translation.Step.Confirmation.Inputs.Required, { field: t(Translation.Step.Confirmation.Inputs.Country) }),\n },\n }}\n render={({ field }) => {\n const { ref, onChange, ...rest } = field;\n return (\n <StepConfirmationCountrySelector\n disabled={isDisabled}\n validationStatus={getValidationClass(EUserProfileFormKey.Country)}\n onChange={(e) => {\n onChange(e);\n onInputChange(padInputName(EUserProfileFormKey.Country), 'Country - Address')(e);\n }}\n onChangeId={(id) => {\n setValue(padInputName(EUserProfileFormKey.CountryId), id as never); // Hack to make CountryID be set...\n }}\n {...rest}\n />\n );\n }}\n />\n </InputGroup>\n </div>\n </div>\n {requiredInputs.length > 0 && (\n <div className=\"u-marg-top\">\n <div className=\"u-marg-top\">\n <InputGroup dimensions=\"2/2\">\n {requiredInputs.map((input) => {\n const options = input.options;\n return (\n <Controller\n key={input.id}\n control={control}\n name={padInputName(input.id as any)}\n rules={{ required: true }}\n render={({ field }) => {\n const { ref, ...rest } = field;\n\n return (\n <>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{input.name}</strong>\n </Text>\n </div>\n <InputSelect\n key={input.id}\n keyName=\"value\"\n labelName=\"label\"\n options={options}\n placeholder=\"Please Select\"\n validationStatus={getValidationClass(input.id as any)}\n {...rest}\n />\n </>\n );\n }}\n />\n );\n })}\n </InputGroup>\n </div>\n </div>\n )}\n\n <LineBreak />\n </div>\n {fields.length > 1 && index === 0 ? (\n <div className=\"u-marg-bottom--heavy\">\n <Checkbox label={t(Translation.Step.Confirmation.ApplySameInfoToOtherRooms)} {...register('copyCheckBox')} />\n </div>\n ) : null}\n </div>\n );\n })}\n </>\n );\n};\n\nexport default RoomContactDetails;\n"]}
@@ -42,7 +42,7 @@ function PeoplePicker() {
42
42
  const context = (0, react_1.useContext)(contexts_1.BasketContext);
43
43
  const { isHidingPromoField } = (0, react_1.useContext)(contexts_1.CompanyContext);
44
44
  const updateRoomValues = (row, values) => {
45
- const { adults, children, promoCode } = values;
45
+ const { adults, children, infants, promoCode } = values;
46
46
  if (adults !== row.getAdults()) {
47
47
  row.setAdults(adults);
48
48
  DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.DATES);
@@ -51,6 +51,10 @@ function PeoplePicker() {
51
51
  row.setChildren(children);
52
52
  DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.DATES);
53
53
  }
54
+ if (infants !== row.getInfants()) {
55
+ row.setInfants(infants);
56
+ DataLayer_1.default.instance.sendInteraction('Guests', DataLayer_1.InteractionType.NUMBER_INPUT, DataLayer_1.InteractionStep.DATES);
57
+ }
54
58
  if (promoCode !== row.getPromoCode()) {
55
59
  DataLayer_1.default.instance.sendInteraction('Promo Code', DataLayer_1.InteractionType.FORM_FIELD, DataLayer_1.InteractionStep.DATES);
56
60
  row.setPromoCode(promoCode);
@@ -89,12 +93,13 @@ function PeoplePicker() {
89
93
  react_1.default.createElement(PeoplePickerRow_1.default, { number: index, details: {
90
94
  adults: item.getAdults(),
91
95
  children: item.getChildren(),
96
+ infants: item.getInfants(),
92
97
  promoCode: item.getPromoCode(),
93
98
  }, onChange: changeRoomValues, onRemove: removeBasketRowHandler })));
94
99
  }),
95
100
  react_1.default.createElement("div", { className: "u-marg-bottom" },
96
101
  react_1.default.createElement(AutoAutoHeight_1.default, { open: !isHidingPromoField },
97
- react_1.default.createElement(PromoCodeInput_1.default, { value: (_b = context.selectedBasketRow) === null || _b === void 0 ? void 0 : _b.getPromoCode(), onChange: changePromoCode, valid: promoCodeStatus === null || promoCodeStatus === 'new' ? undefined : promoCodeStatus === 'valid' }))),
102
+ react_1.default.createElement(PromoCodeInput_1.default, { value: (_b = context.selectedBasketRow) === null || _b === void 0 ? void 0 : _b.getPromoCode(), onChange: changePromoCode, valid: promoCodeStatus === null || promoCodeStatus === 'new' ? undefined : promoCodeStatus === 'valid', variant: "outlined" }))),
98
103
  react_1.default.createElement(BEButton_1.default, { isText: true, primary: true, icon: Icon_1.IconType.Add, stopIconAnimation: true, onClick: addAnotherRoomOnClickHandler }, t(Translation_1.Translation.Misc.AddAnotherRoom))));
99
104
  }
100
105
  exports.default = PeoplePicker;