@roomstay/frontend 2.6.32 → 2.6.34

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 (168) hide show
  1. package/dist/166.bundle.js +1 -1
  2. package/dist/370.bundle.js +1 -1
  3. package/dist/449.bundle.js +1 -1
  4. package/dist/736.bundle.js +1 -1
  5. package/dist/903.bundle.js +1 -1
  6. package/dist/927.bundle.js +1 -1
  7. package/dist/e2e/canChangeCurrency.spec.d.ts +1 -0
  8. package/dist/e2e/canChangeCurrency.spec.js +59 -0
  9. package/dist/e2e/canChangeCurrency.spec.js.map +1 -0
  10. package/dist/e2e/canCheckout.spec.d.ts +1 -0
  11. package/dist/e2e/canCheckout.spec.js +205 -0
  12. package/dist/e2e/canCheckout.spec.js.map +1 -0
  13. package/dist/e2e/canViewFindReservationsPage.spec.d.ts +1 -0
  14. package/dist/e2e/canViewFindReservationsPage.spec.js +37 -0
  15. package/dist/e2e/canViewFindReservationsPage.spec.js.map +1 -0
  16. package/dist/e2e/canViewHotelnfoPage.spec.d.ts +1 -0
  17. package/dist/e2e/canViewHotelnfoPage.spec.js +42 -0
  18. package/dist/e2e/canViewHotelnfoPage.spec.js.map +1 -0
  19. package/dist/e2e/frontendTestConfigs.d.ts +7 -0
  20. package/dist/e2e/frontendTestConfigs.js +31 -0
  21. package/dist/e2e/frontendTestConfigs.js.map +1 -0
  22. package/dist/e2e/frontendTestData.d.ts +15 -0
  23. package/dist/e2e/frontendTestData.js +18 -0
  24. package/dist/e2e/frontendTestData.js.map +1 -0
  25. package/dist/e2e/goBackAndCheckoutAgain.spec.js +1 -0
  26. package/dist/e2e/goBackAndCheckoutAgain.spec.js.map +1 -1
  27. package/dist/e2e/helpers/playwrightHelpers.d.ts +2 -0
  28. package/dist/e2e/helpers/playwrightHelpers.js +27 -0
  29. package/dist/e2e/helpers/playwrightHelpers.js.map +1 -0
  30. package/dist/main.bundle.js +1 -1
  31. package/dist/src/animations/AutoAutoHeight.js +4 -2
  32. package/dist/src/animations/AutoAutoHeight.js.map +1 -1
  33. package/dist/src/api/AvailabilityAPI.d.ts +10 -1
  34. package/dist/src/api/AvailabilityAPI.js +14 -2
  35. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  36. package/dist/src/api/HotelAPI.js +3 -0
  37. package/dist/src/api/HotelAPI.js.map +1 -1
  38. package/dist/src/components/User/Forms/SignUpForm.js +1 -1
  39. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  40. package/dist/src/components/generic/HtmlContentViewer.d.ts +3 -0
  41. package/dist/src/components/generic/HtmlContentViewer.js +44 -0
  42. package/dist/src/components/generic/HtmlContentViewer.js.map +1 -0
  43. package/dist/src/components/generic/Icon/Icon.d.ts +5 -93
  44. package/dist/src/components/generic/Icon/Icon.js +6 -124
  45. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  46. package/dist/src/components/generic/date/DatePicker.js +16 -3
  47. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  48. package/dist/src/components/generic/date/DatePickerDay.js +2 -2
  49. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  50. package/dist/src/components/generic/modal/SimpleModal.js +0 -22
  51. package/dist/src/components/generic/modal/SimpleModal.js.map +1 -1
  52. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js +1 -8
  53. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -1
  54. package/dist/src/components/members/SignInModal/MemberSignInModal.js +2 -2
  55. package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -1
  56. package/dist/src/components/steps/MinimumNightStayPill.js +2 -2
  57. package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
  58. package/dist/src/components/steps/confirmation/RoomContactDetails.js +6 -6
  59. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  60. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  61. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js +3 -2
  62. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js.map +1 -1
  63. package/dist/src/components/steps/date/PeoplePicker.js +5 -4
  64. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  65. package/dist/src/components/steps/date/StepDatePricePerRoom.js +2 -2
  66. package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
  67. package/dist/src/components/steps/hotel/HotelCard.js +8 -6
  68. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  69. package/dist/src/components/steps/hotel/HotelCardModal.js +8 -6
  70. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  71. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js +3 -5
  72. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js.map +1 -1
  73. package/dist/src/components/steps/room/AvailableUpgradesModal.js +3 -3
  74. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  75. package/dist/src/components/steps/room/LargeRoomCard.js +3 -1
  76. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  77. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +2 -2
  78. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  79. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +3 -3
  80. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  81. package/dist/src/components/steps/room/RoomModalPerkRow.js +3 -5
  82. package/dist/src/components/steps/room/RoomModalPerkRow.js.map +1 -1
  83. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +13 -2
  84. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  85. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +13 -2
  86. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
  87. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +4 -6
  88. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  89. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +16 -10
  90. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  91. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +1 -1
  92. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  93. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +3 -2
  94. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
  95. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +3 -1
  96. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  97. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js +1 -1
  98. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js.map +1 -1
  99. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js +6 -5
  100. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js.map +1 -1
  101. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +3 -2
  102. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  103. package/dist/src/components/summary/BEMobileSummaryModal.js +1 -1
  104. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  105. package/dist/src/components/summary/BESummary.js +4 -4
  106. package/dist/src/components/summary/BESummary.js.map +1 -1
  107. package/dist/src/components/summary/BESummaryPerkBlock.js +4 -3
  108. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  109. package/dist/src/components/summary/BESummaryRoomRow.js +2 -3
  110. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  111. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +18 -11
  112. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  113. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -1
  114. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  115. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +94 -32
  116. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  117. package/dist/src/contexts/CompanyContext/CompanyContextType.type.d.ts +0 -1
  118. package/dist/src/contexts/CompanyContext/CompanyContextType.type.js.map +1 -1
  119. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +20 -12
  120. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  121. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +5 -3
  122. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  123. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +1 -1
  124. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  125. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +2 -2
  126. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  127. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +3 -4
  128. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
  129. package/dist/src/hooks/useCalendarNightStay.js +2 -2
  130. package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
  131. package/dist/src/hooks/useSignedInMember.d.ts +7 -0
  132. package/dist/src/hooks/{useExternalMember.js → useSignedInMember.js} +7 -5
  133. package/dist/src/hooks/useSignedInMember.js.map +1 -0
  134. package/dist/src/index.d.ts +1 -1
  135. package/dist/src/index.js +3 -3
  136. package/dist/src/index.js.map +1 -1
  137. package/dist/src/models/Api/HotelDTO.d.ts +1 -1
  138. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  139. package/dist/src/models/Api/ReservationsDTO.d.ts +1 -0
  140. package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
  141. package/dist/src/models/BasketRow.d.ts +6 -1
  142. package/dist/src/models/BasketRow.js +21 -3
  143. package/dist/src/models/BasketRow.js.map +1 -1
  144. package/dist/src/models/Client/Hotel/Hotel.d.ts +4 -1
  145. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  146. package/dist/src/models/Client/Hotel/HotelPerk.d.ts +1 -1
  147. package/dist/src/models/Client/Hotel/HotelPerk.js.map +1 -1
  148. package/dist/src/pages/findReservation/FindReservationResults.js +22 -4
  149. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  150. package/dist/src/pages/hotel/HotelInfo.js +2 -2
  151. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  152. package/dist/src/pages/steps/StepDate/StepDateComponent.d.ts +2 -2
  153. package/dist/src/pages/steps/StepDate/StepDateComponent.js +14 -7
  154. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  155. package/dist/src/translations/Translation.d.ts +10 -0
  156. package/dist/src/translations/Translation.js +10 -0
  157. package/dist/src/translations/Translation.js.map +1 -1
  158. package/dist/src/translations/languages/en-gb.js +11 -1
  159. package/dist/src/translations/languages/en-gb.js.map +1 -1
  160. package/dist/src/util/HotelPerkHelper.d.ts +3 -0
  161. package/dist/src/util/HotelPerkHelper.js +46 -0
  162. package/dist/src/util/HotelPerkHelper.js.map +1 -0
  163. package/dist/test.bundle.js +1 -1
  164. package/dist/vendors.bundle.js +1 -1
  165. package/dist/vendors.bundle.js.LICENSE.txt +2 -0
  166. package/package.json +6 -3
  167. package/dist/src/hooks/useExternalMember.d.ts +0 -5
  168. package/dist/src/hooks/useExternalMember.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendarNightStay.js","sourceRoot":"/","sources":["src/hooks/useCalendarNightStay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContextType } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { Dayjs } from 'dayjs';\n\nimport API from '@/api/BookingAPI';\n\nimport { useExternalMember } from './useExternalMember';\n\ninterface UseCalendarNightStayProps {\n basketContext: BasketContextType;\n}\n\nexport interface INightStayValidation {\n init: boolean;\n arrivalMinNightStay: number | null;\n arrivalMaxNightStay: number | null;\n validationMinNightStay: number | null;\n validationMaxNightStay: number | null;\n}\nexport interface IArrivalNightStay {\n arrivalMinNightStay: number | null;\n arrivalMaxNightStay: number | null;\n}\nexport interface IAvailableNightStay {\n minDate: Dayjs | null;\n maxDate: Dayjs | null;\n available: boolean;\n}\n\nexport const useCalendarNightStay = ({\n basketContext,\n}: UseCalendarNightStayProps): {\n getLastValidDay: (\n fromDate: Dayjs,\n toDate: Dayjs\n ) => Promise<{\n lastValidDay: Dayjs;\n nightStayValidation: INightStayValidation;\n isValidNightStay: boolean;\n }>;\n getArrivalNightStay: (fromDate: Dayjs) => Promise<IArrivalNightStay>;\n checkAvailableNightStay: ({ arrivalNightStay, startDate, dateToCheck }: { arrivalNightStay: IArrivalNightStay; startDate: Dayjs | null; dateToCheck: Dayjs | null }) => {\n minDate: Dayjs | null;\n maxDate: Dayjs | null;\n available: boolean;\n };\n} => {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useExternalMember();\n const nightStayValidation: INightStayValidation = {\n init: false,\n arrivalMinNightStay: null,\n arrivalMaxNightStay: null,\n validationMinNightStay: null,\n validationMaxNightStay: null,\n };\n const getLastValidDay = (fromDate: Dayjs, toDate: Dayjs): Promise<{ lastValidDay: Dayjs; nightStayValidation: INightStayValidation; isValidNightStay: boolean }> =>\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 const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';\n\n const toDateDiff = toDate?.diff?.(fromDate, 'day');\n\n for (let i = 0; i <= toDateDiff; i++) {\n const dayToCheck = fromDate.add(i, 'day');\n const price = await API.Availability.getCheapestPriceForDay(\n dayToCheck,\n adults,\n children,\n infants,\n promoCode,\n roomCode,\n hotel?.hotelID as string,\n memberNumber,\n false\n );\n const nextMustBreak = !price?.price && hotel;\n const departureDateDiff = dayToCheck?.diff?.(fromDate, 'day');\n if (departureDateDiff == 0) {\n //Arrival date\n Object.assign(nightStayValidation, {\n init: true,\n arrivalMinNightStay: price?.arrivalMinNightStay ?? null,\n arrivalMaxNightStay: price?.arrivalMaxNightStay ?? null,\n validationMinNightStay: null,\n validationMaxNightStay: null,\n });\n }\n if (nightStayValidation.arrivalMinNightStay) {\n //Min. Departure date\n if (departureDateDiff >= nightStayValidation.arrivalMinNightStay) {\n nightStayValidation.validationMinNightStay = null;\n } else {\n nightStayValidation.validationMinNightStay = nightStayValidation.arrivalMinNightStay;\n }\n }\n if (nightStayValidation.arrivalMaxNightStay) {\n //Max. Departure date\n if (departureDateDiff <= nightStayValidation.arrivalMaxNightStay) {\n nightStayValidation.validationMaxNightStay = null;\n } else {\n nightStayValidation.validationMaxNightStay = nightStayValidation.arrivalMaxNightStay;\n }\n }\n\n if (nextMustBreak) {\n //if true, this date only available for departure (no price for checking)\n return resolve({\n lastValidDay: dayToCheck,\n nightStayValidation,\n isValidNightStay: !nightStayValidation.validationMinNightStay && !nightStayValidation.validationMaxNightStay,\n });\n }\n }\n\n return resolve({\n lastValidDay: toDate,\n nightStayValidation,\n isValidNightStay: !nightStayValidation.validationMinNightStay && !nightStayValidation.validationMaxNightStay,\n });\n });\n\n const getArrivalNightStay = (fromDate: Dayjs): Promise<IArrivalNightStay> =>\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 const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';\n\n const price = await API.Availability.getCheapestPriceForDay(fromDate, adults, children, infants, promoCode, roomCode, hotel?.hotelID as string, memberNumber, false);\n return resolve({\n arrivalMinNightStay: price?.arrivalMinNightStay ?? null,\n arrivalMaxNightStay: price?.arrivalMaxNightStay ?? null,\n });\n });\n\n const checkAvailableNightStay = ({\n arrivalNightStay,\n startDate,\n dateToCheck,\n }: {\n arrivalNightStay: IArrivalNightStay;\n startDate: Dayjs | null;\n dateToCheck: Dayjs | null;\n }): IAvailableNightStay => {\n const arrivalMinNightStay = arrivalNightStay?.arrivalMinNightStay ?? null;\n const arrivalMaxNightStay = arrivalNightStay?.arrivalMaxNightStay ?? null;\n let minDate = null;\n let maxDate = null;\n if (dateToCheck && startDate && (arrivalMinNightStay || arrivalMaxNightStay)) {\n const validation: boolean[] = [];\n if (arrivalMinNightStay) {\n minDate = startDate.clone().add(arrivalMinNightStay, 'day');\n validation.push(dateToCheck >= minDate);\n }\n if (arrivalMaxNightStay) {\n maxDate = startDate.clone().add(arrivalMaxNightStay, 'day');\n validation.push(dateToCheck <= maxDate);\n }\n return {\n minDate,\n maxDate,\n available: validation.every((v) => v === true),\n };\n }\n return {\n minDate,\n maxDate,\n available: true,\n };\n };\n\n return {\n getLastValidDay,\n getArrivalNightStay,\n checkAvailableNightStay,\n };\n};\n"]}
1
+ {"version":3,"file":"useCalendarNightStay.js","sourceRoot":"/","sources":["src/hooks/useCalendarNightStay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContextType } from '@frontend/contexts';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { Dayjs } from 'dayjs';\n\nimport API from '@/api/BookingAPI';\n\nimport { useSignedInMember } from './useSignedInMember';\n\ninterface UseCalendarNightStayProps {\n basketContext: BasketContextType;\n}\n\nexport interface INightStayValidation {\n init: boolean;\n arrivalMinNightStay: number | null;\n arrivalMaxNightStay: number | null;\n validationMinNightStay: number | null;\n validationMaxNightStay: number | null;\n}\nexport interface IArrivalNightStay {\n arrivalMinNightStay: number | null;\n arrivalMaxNightStay: number | null;\n}\nexport interface IAvailableNightStay {\n minDate: Dayjs | null;\n maxDate: Dayjs | null;\n available: boolean;\n}\n\nexport const useCalendarNightStay = ({\n basketContext,\n}: UseCalendarNightStayProps): {\n getLastValidDay: (\n fromDate: Dayjs,\n toDate: Dayjs\n ) => Promise<{\n lastValidDay: Dayjs;\n nightStayValidation: INightStayValidation;\n isValidNightStay: boolean;\n }>;\n getArrivalNightStay: (fromDate: Dayjs) => Promise<IArrivalNightStay>;\n checkAvailableNightStay: ({ arrivalNightStay, startDate, dateToCheck }: { arrivalNightStay: IArrivalNightStay; startDate: Dayjs | null; dateToCheck: Dayjs | null }) => {\n minDate: Dayjs | null;\n maxDate: Dayjs | null;\n available: boolean;\n };\n} => {\n const { hotel } = useCurrentHotel();\n const { memberNumber } = useSignedInMember();\n const nightStayValidation: INightStayValidation = {\n init: false,\n arrivalMinNightStay: null,\n arrivalMaxNightStay: null,\n validationMinNightStay: null,\n validationMaxNightStay: null,\n };\n const getLastValidDay = (fromDate: Dayjs, toDate: Dayjs): Promise<{ lastValidDay: Dayjs; nightStayValidation: INightStayValidation; isValidNightStay: boolean }> =>\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 const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';\n\n const toDateDiff = toDate?.diff?.(fromDate, 'day');\n\n for (let i = 0; i <= toDateDiff; i++) {\n const dayToCheck = fromDate.add(i, 'day');\n const price = await API.Availability.getCheapestPriceForDay(\n dayToCheck,\n adults,\n children,\n infants,\n promoCode,\n roomCode,\n hotel?.hotelID as string,\n memberNumber,\n false\n );\n const nextMustBreak = !price?.price && hotel;\n const departureDateDiff = dayToCheck?.diff?.(fromDate, 'day');\n if (departureDateDiff == 0) {\n //Arrival date\n Object.assign(nightStayValidation, {\n init: true,\n arrivalMinNightStay: price?.arrivalMinNightStay ?? null,\n arrivalMaxNightStay: price?.arrivalMaxNightStay ?? null,\n validationMinNightStay: null,\n validationMaxNightStay: null,\n });\n }\n if (nightStayValidation.arrivalMinNightStay) {\n //Min. Departure date\n if (departureDateDiff >= nightStayValidation.arrivalMinNightStay) {\n nightStayValidation.validationMinNightStay = null;\n } else {\n nightStayValidation.validationMinNightStay = nightStayValidation.arrivalMinNightStay;\n }\n }\n if (nightStayValidation.arrivalMaxNightStay) {\n //Max. Departure date\n if (departureDateDiff <= nightStayValidation.arrivalMaxNightStay) {\n nightStayValidation.validationMaxNightStay = null;\n } else {\n nightStayValidation.validationMaxNightStay = nightStayValidation.arrivalMaxNightStay;\n }\n }\n\n if (nextMustBreak) {\n //if true, this date only available for departure (no price for checking)\n return resolve({\n lastValidDay: dayToCheck,\n nightStayValidation,\n isValidNightStay: !nightStayValidation.validationMinNightStay && !nightStayValidation.validationMaxNightStay,\n });\n }\n }\n\n return resolve({\n lastValidDay: toDate,\n nightStayValidation,\n isValidNightStay: !nightStayValidation.validationMinNightStay && !nightStayValidation.validationMaxNightStay,\n });\n });\n\n const getArrivalNightStay = (fromDate: Dayjs): Promise<IArrivalNightStay> =>\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 const roomCode = selectedBasketRow ? selectedBasketRow.getRoomCode() : '';\n\n const price = await API.Availability.getCheapestPriceForDay(fromDate, adults, children, infants, promoCode, roomCode, hotel?.hotelID as string, memberNumber, false);\n return resolve({\n arrivalMinNightStay: price?.arrivalMinNightStay ?? null,\n arrivalMaxNightStay: price?.arrivalMaxNightStay ?? null,\n });\n });\n\n const checkAvailableNightStay = ({\n arrivalNightStay,\n startDate,\n dateToCheck,\n }: {\n arrivalNightStay: IArrivalNightStay;\n startDate: Dayjs | null;\n dateToCheck: Dayjs | null;\n }): IAvailableNightStay => {\n const arrivalMinNightStay = arrivalNightStay?.arrivalMinNightStay ?? null;\n const arrivalMaxNightStay = arrivalNightStay?.arrivalMaxNightStay ?? null;\n let minDate = null;\n let maxDate = null;\n if (dateToCheck && startDate && (arrivalMinNightStay || arrivalMaxNightStay)) {\n const validation: boolean[] = [];\n if (arrivalMinNightStay) {\n minDate = startDate.clone().add(arrivalMinNightStay, 'day');\n validation.push(dateToCheck >= minDate);\n }\n if (arrivalMaxNightStay) {\n maxDate = startDate.clone().add(arrivalMaxNightStay, 'day');\n validation.push(dateToCheck <= maxDate);\n }\n return {\n minDate,\n maxDate,\n available: validation.every((v) => v === true),\n };\n }\n return {\n minDate,\n maxDate,\n available: true,\n };\n };\n\n return {\n getLastValidDay,\n getArrivalNightStay,\n checkAvailableNightStay,\n };\n};\n"]}
@@ -0,0 +1,7 @@
1
+ export declare const useSignedInMember: () => {
2
+ signedInUser: import("../contexts").SignInUser | null;
3
+ externalMemberType: import("@roomstay/core").EIntegration | undefined;
4
+ isExternalMemberHotel: boolean;
5
+ memberNumber: string | undefined;
6
+ memberOnlyModalPromotion: import("../models/Promotion/IPromotion.type").IPromotion | null;
7
+ };
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useExternalMember = void 0;
3
+ exports.useSignedInMember = void 0;
4
4
  const react_1 = require("react");
5
5
  const contexts_1 = require("../contexts");
6
- const useExternalMember = () => {
7
- const { externalMemberType, isExternalMemberHotel, memberNumber } = (0, react_1.useContext)(contexts_1.CompanyContext);
6
+ const useSignedInMember = () => {
7
+ const { externalMemberType, isExternalMemberHotel, memberNumber, memberOnlyModalPromotion, signedInUser } = (0, react_1.useContext)(contexts_1.CompanyContext);
8
8
  return {
9
+ signedInUser,
9
10
  externalMemberType,
10
11
  isExternalMemberHotel,
11
12
  memberNumber,
13
+ memberOnlyModalPromotion,
12
14
  };
13
15
  };
14
- exports.useExternalMember = useExternalMember;
15
- //# sourceMappingURL=useExternalMember.js.map
16
+ exports.useSignedInMember = useSignedInMember;
17
+ //# sourceMappingURL=useSignedInMember.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignedInMember.js","sourceRoot":"/","sources":["src/hooks/useSignedInMember.tsx"],"names":[],"mappings":";;;AAAA,iCAAmC;AAEnC,yCAA4C;AAErC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,YAAY,EAAE,wBAAwB,EAAE,YAAY,EAAE,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IACvI,OAAO;QACH,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,YAAY;QACZ,wBAAwB;KAC3B,CAAC;AACN,CAAC,CAAC;AATW,QAAA,iBAAiB,qBAS5B","sourcesContent":["import { useContext } from 'react';\n\nimport { CompanyContext } from '@/contexts';\n\nexport const useSignedInMember = () => {\n const { externalMemberType, isExternalMemberHotel, memberNumber, memberOnlyModalPromotion, signedInUser } = useContext(CompanyContext);\n return {\n signedInUser,\n externalMemberType,\n isExternalMemberHotel,\n memberNumber,\n memberOnlyModalPromotion,\n };\n};\n"]}
@@ -47,8 +47,8 @@ export * from './providers/LanguageProvider';
47
47
  export * from './providers/PromotionProvider';
48
48
  export { default as RatePillProvider } from './providers/RatePillProvider';
49
49
  export { RoomSort } from './providers/RoomSortProvider';
50
- export { default as SessionProvider } from './providers/storage/SessionProvider';
51
50
  export { default as LocalStorageProvider } from './providers/storage/LocalStorageProvider';
51
+ export { default as SessionProvider } from './providers/storage/SessionProvider';
52
52
  export { default as ConfirmationVerifyFeature } from './providers/feature/ConfirmationVerifyFeature';
53
53
  export { default as DatePickerTypeFeature } from './providers/feature/DatePickerTypeFeature';
54
54
  export { default as DerbysoftClickTrackingFeature } from './providers/feature/DerbysoftClickTrackingFeature';
package/dist/src/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.API = exports.useFormContext = exports.DataLayer = exports.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.RoomRateReadMoreVersionFeature = exports.PlanPayPricePreviewFeature = exports.InlineAddonStepFeature = exports.GuestTitleFieldFeature = exports.FullPageEngineSmallSpacingFeature = exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DerbysoftClickTrackingFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.LocalStorageProvider = exports.SessionProvider = exports.RoomSort = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.StepNoRoomBestRateAlert = exports.RoomModalPerkRow = exports.BE_ROOM_MODAL_PERK_ROW = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.HotelInfoPerksRow = exports.BE_HOTEL_INFO_PERK_ROW = exports.StepConfirmationCountrySelector = exports.BE_NO_ADDONS_FOUND_BLOCK = exports.AddonsNotFoundBlock = exports.TextBox = exports.TextArea = exports.RadioFields = exports.LineBreak = exports.InputGroup = exports.Icon = exports.Headline = exports.Currency = exports.Checkbox = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
20
+ exports.API = exports.useFormContext = exports.DataLayer = exports.RoomstayThemeEngine = exports.withDI = exports.registerReplacement = exports.ShowIATANumberOnCheckoutFeature = exports.RoomUpsellFeature = exports.RoomRateReadMoreVersionFeature = exports.PlanPayPricePreviewFeature = exports.InlineAddonStepFeature = exports.GuestTitleFieldFeature = exports.FullPageEngineSmallSpacingFeature = exports.FeaturedPromoFeature = exports.E164PhoneNumberFieldFeature = exports.DerbysoftClickTrackingFeature = exports.DatePickerTypeFeature = exports.ConfirmationVerifyFeature = exports.SessionProvider = exports.LocalStorageProvider = exports.RoomSort = exports.RatePillProvider = exports.FeatureProvider = exports.CurrencyProvider = exports.SmallSpinner = exports.StepNoRoomBestRateAlert = exports.RoomModalPerkRow = exports.BE_ROOM_MODAL_PERK_ROW = exports.NoRoomsFoundBlock = exports.BE_NO_ROOMS_FOUND_BLOCK = exports.HotelInfoPerksRow = exports.BE_HOTEL_INFO_PERK_ROW = exports.StepConfirmationCountrySelector = exports.BE_NO_ADDONS_FOUND_BLOCK = exports.AddonsNotFoundBlock = exports.TextBox = exports.TextArea = exports.RadioFields = exports.LineBreak = exports.InputGroup = exports.Icon = exports.Headline = exports.Currency = exports.Checkbox = exports.BEButton = exports.Alert = exports.AutoAutoHeight = exports.Link = exports.useTranslation = exports.react = void 0;
21
21
  exports.Version = exports.events = exports.RoomstayEventManager = exports.StepManager = exports.StepThanks = exports.StepRoom = exports.StepHotel = exports.StepGroupedRoom = exports.StepDate = exports.StepConfirmation = exports.StepAddon = exports.HotelDataSource = void 0;
22
22
  // TODO: Look into resolving this.
23
23
  const react_1 = __importDefault(require("react"));
@@ -105,10 +105,10 @@ var RatePillProvider_1 = require("./providers/RatePillProvider");
105
105
  Object.defineProperty(exports, "RatePillProvider", { enumerable: true, get: function () { return __importDefault(RatePillProvider_1).default; } });
106
106
  var RoomSortProvider_1 = require("./providers/RoomSortProvider");
107
107
  Object.defineProperty(exports, "RoomSort", { enumerable: true, get: function () { return RoomSortProvider_1.RoomSort; } });
108
- var SessionProvider_1 = require("./providers/storage/SessionProvider");
109
- Object.defineProperty(exports, "SessionProvider", { enumerable: true, get: function () { return __importDefault(SessionProvider_1).default; } });
110
108
  var LocalStorageProvider_1 = require("./providers/storage/LocalStorageProvider");
111
109
  Object.defineProperty(exports, "LocalStorageProvider", { enumerable: true, get: function () { return __importDefault(LocalStorageProvider_1).default; } });
110
+ var SessionProvider_1 = require("./providers/storage/SessionProvider");
111
+ Object.defineProperty(exports, "SessionProvider", { enumerable: true, get: function () { return __importDefault(SessionProvider_1).default; } });
112
112
  // Features
113
113
  var ConfirmationVerifyFeature_1 = require("./providers/feature/ConfirmationVerifyFeature");
114
114
  Object.defineProperty(exports, "ConfirmationVerifyFeature", { enumerable: true, get: function () { return __importDefault(ConfirmationVerifyFeature_1).default; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Look into resolving this.\nimport ReactRaw from 'react';\n\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\nexport { default as Currency } from '@/components/generic/Currency';\nexport { default as Headline } from '@/components/generic/Headline';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport * from '@/components/generic/Select/index';\nexport * from '@/components/generic/Text';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport { default as AddonsNotFoundBlock, BE_NO_ADDONS_FOUND_BLOCK } from '@/components/steps/addons/AddonsNotFoundBlock';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport type { HotelInfoPerkRowProps } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_HOTEL_INFO_PERK_ROW } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { default as HotelInfoPerksRow } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_NO_ROOMS_FOUND_BLOCK } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport type { RoomModalPerkRowProps } from '@/components/steps/room/RoomModalPerkRow';\nexport { BE_ROOM_MODAL_PERK_ROW } from '@/components/steps/room/RoomModalPerkRow';\nexport { default as RoomModalPerkRow } from '@/components/steps/room/RoomModalPerkRow';\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\nexport * from '@/components/summary/BESummary';\nexport * from '@/components/summary/BESummaryPerkBlock';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/MemberPortalWidget/MemberPortalWidget';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\n\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/PromotionProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport { RoomSort } from '@/providers/RoomSortProvider';\nexport { default as SessionProvider } from '@/providers/storage/SessionProvider';\nexport { default as LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as DerbysoftClickTrackingFeature } from '@/providers/feature/DerbysoftClickTrackingFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\nexport { default as GuestTitleFieldFeature } from '@/providers/feature/GuestTitleFieldFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomRateReadMoreVersionFeature } from '@/providers/feature/RoomRateReadMoreVersionFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DataLayer';\nexport * from '@/util/DefaultValueManager';\nexport * from '@/util/RouteManager';\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\n// Models\nexport { default as API } from '@/api/BookingAPI';\nexport * from '@/models/Api/HotelDTO';\nexport * from '@/models/Api/HotelOverrideDTO';\nexport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nexport * from '@/models/Client/Hotel/Company';\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/Hotel';\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nexport * from '@/models/Client/Hotel/HotelPerk';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\n// Steps\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\nexport * from '@/translations/Translation';\nexport { default as StepManager } from '@/util/StepManager';\n\n// Util\n\nexport type { default as ColorProfile } from '@/models/Client/Hotel/ColorProfile';\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/events/index';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\nexport * from './config';\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Look into resolving this.\nimport ReactRaw from 'react';\n\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepDate from '@/pages/steps/StepDate/StepDate';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport StepThanks from '@/pages/steps/StepThanks/StepThanks';\nimport StepManager from '@/util/StepManager';\n\nimport RoomstayEventManager from './events/RoomstayEventManager';\n\nexport const react = ReactRaw;\n\nexport { useTranslation } from 'react-i18next';\nexport { Link } from 'react-router-dom';\n\n// Components\nexport { default as AutoAutoHeight } from '@/animations/AutoAutoHeight';\nexport * from '@/components/generic/Alert';\nexport { default as Alert } from '@/components/generic/Alert';\nexport { default as BEButton } from '@/components/generic/BEButton';\nexport { default as Checkbox } from '@/components/generic/Checkbox/Checkbox';\nexport { default as Currency } from '@/components/generic/Currency';\nexport { default as Headline } from '@/components/generic/Headline';\nexport { default as Icon } from '@/components/generic/Icon/Icon';\nexport * from '@/components/generic/Icon/Icon';\nexport { default as InputGroup } from '@/components/generic/InputGroup/InputGroup';\nexport { default as LineBreak } from '@/components/generic/LineBreak';\nexport { default as RadioFields } from '@/components/generic/radio/RadioFields';\nexport * from '@/components/generic/Select/index';\nexport * from '@/components/generic/Text';\nexport { default as TextArea } from '@/components/generic/TextArea';\nexport { default as TextBox } from '@/components/generic/TextBox';\nexport { default as AddonsNotFoundBlock, BE_NO_ADDONS_FOUND_BLOCK } from '@/components/steps/addons/AddonsNotFoundBlock';\nexport * from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\nexport { default as StepConfirmationCountrySelector } from '@/components/steps/confirmation/StepConfirmationCountrySelector';\nexport type { HotelInfoPerkRowProps } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_HOTEL_INFO_PERK_ROW } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { default as HotelInfoPerksRow } from '@/components/steps/hotel/HotelInfoPerksRow';\nexport { BE_NO_ROOMS_FOUND_BLOCK } from '@/components/steps/room/NoRoomsFoundBlock';\nexport { default as NoRoomsFoundBlock } from '@/components/steps/room/NoRoomsFoundBlock';\nexport type { RoomModalPerkRowProps } from '@/components/steps/room/RoomModalPerkRow';\nexport { BE_ROOM_MODAL_PERK_ROW } from '@/components/steps/room/RoomModalPerkRow';\nexport { default as RoomModalPerkRow } from '@/components/steps/room/RoomModalPerkRow';\nexport * from '@/components/steps/room/StepRoomBestRateAlert';\nexport { default as StepNoRoomBestRateAlert } from '@/components/steps/room/StepRoomBestRateAlert';\nexport * from '@/components/summary/BESummary';\nexport * from '@/components/summary/BESummaryPerkBlock';\nexport * from '@/engines/BookingWizardEngine/BookingWizardEngine';\nexport * from '@/engines/CustomEngine/CustomEngine';\nexport * from '@/engines/FullPageBookingEngine/FullPageBookingEngine';\nexport * from '@/engines/InlineRoomMiniEngine/InlineRoomMiniEngine';\nexport * from '@/engines/MemberPortalWidget/MemberPortalWidget';\nexport * from '@/engines/RecentSearchesEngine/RecentSearchesEngine';\n\n// Loaders\nexport { default as SmallSpinner } from '@/components/generic/loader/SmallSpinner';\n\n// Providers\nexport * from '@/providers/CurrencyProvider';\nexport { default as CurrencyProvider } from '@/providers/CurrencyProvider';\nexport { default as FeatureProvider } from '@/providers/FeatureProvider';\nexport * from '@/providers/LanguageProvider';\nexport * from '@/providers/PromotionProvider';\nexport { default as RatePillProvider } from '@/providers/RatePillProvider';\nexport { RoomSort } from '@/providers/RoomSortProvider';\nexport { default as LocalStorageProvider } from '@/providers/storage/LocalStorageProvider';\nexport { default as SessionProvider } from '@/providers/storage/SessionProvider';\n\n// Features\n\nexport { default as ConfirmationVerifyFeature } from '@/providers/feature/ConfirmationVerifyFeature';\nexport { default as DatePickerTypeFeature } from '@/providers/feature/DatePickerTypeFeature';\nexport { default as DerbysoftClickTrackingFeature } from '@/providers/feature/DerbysoftClickTrackingFeature';\nexport { default as E164PhoneNumberFieldFeature } from '@/providers/feature/E164PhoneNumberFieldFeature';\nexport { default as FeaturedPromoFeature } from '@/providers/feature/FeaturedPromoFeature';\nexport { default as FullPageEngineSmallSpacingFeature } from '@/providers/feature/FullPageEngineSmallSpacingFeature';\nexport { default as GuestTitleFieldFeature } from '@/providers/feature/GuestTitleFieldFeature';\nexport { default as InlineAddonStepFeature } from '@/providers/feature/InlineAddonStepFeature';\nexport { default as PlanPayPricePreviewFeature } from '@/providers/feature/PlanPayPricePreviewFeature';\nexport { default as RoomRateReadMoreVersionFeature } from '@/providers/feature/RoomRateReadMoreVersionFeature';\nexport { default as RoomUpsellFeature } from '@/providers/feature/RoomUpsellFeature';\nexport { default as ShowIATANumberOnCheckoutFeature } from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\n\n// Contexts\nexport { registerReplacement, withDI } from '@/providers/DIProvider';\nexport * from '@/providers/RoomstayThemeEngine';\nexport { default as RoomstayThemeEngine } from '@/providers/RoomstayThemeEngine';\nexport { default as DataLayer } from '@/util/DataLayer';\nexport * from '@/util/DataLayer';\nexport * from '@/util/DefaultValueManager';\nexport * from '@/util/RouteManager';\nexport * from '@frontend/contexts';\nexport { useFormContext } from 'react-hook-form';\n\n// Models\nexport { default as API } from '@/api/BookingAPI';\nexport * from '@/models/Api/HotelDTO';\nexport * from '@/models/Api/HotelOverrideDTO';\nexport type { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nexport * from '@/models/Client/Hotel/Company';\nexport * from '@/models/Client/Hotel/DistanceUnitType.types';\nexport * from '@/models/Client/Hotel/Hotel';\nexport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nexport * from '@/models/Client/Hotel/HotelPerk';\nexport * from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\n// Steps\nexport { default as StepAddon } from '@/pages/steps/StepAddon/StepAddon';\nexport { default as StepConfirmation } from '@/pages/steps/StepConfirmation/StepConfirmation';\nexport { default as StepDate } from '@/pages/steps/StepDate/StepDate';\nexport { default as StepGroupedRoom } from '@/pages/steps/StepGroupedRoom/StepGroupedRoom';\nexport { default as StepHotel } from '@/pages/steps/StepHotel/StepHotel';\nexport { default as StepRoom } from '@/pages/steps/StepRoom/StepRoom';\nexport { default as StepThanks } from '@/pages/steps/StepThanks/StepThanks';\nexport * from '@/translations/Translation';\nexport { default as StepManager } from '@/util/StepManager';\n\n// Util\n\nexport type { default as ColorProfile } from '@/models/Client/Hotel/ColorProfile';\nexport * from '@/util/Color';\nexport * from '@/util/Debounce';\n\n// Hooks\n\nexport * from '@/events/index';\nexport * from '@/hooks/CurrentHotelHook';\nexport * from '@/hooks/EventHook';\n\n/** @deprecated use `roomstay.events` instead */\nexport { default as RoomstayEventManager } from '@/events/RoomstayEventManager';\n\nexport const events = {\n on: RoomstayEventManager.addEvent,\n raise: RoomstayEventManager.raise,\n};\n\nexport * from './config';\n\ndeclare const RS_VERSION: string;\nexport const Version = RS_VERSION;\n\nStepManager.currentSteps = {\n 0: StepDate,\n 10: StepRoom,\n 20: StepConfirmation,\n 30: StepThanks,\n};\n"]}
@@ -106,7 +106,7 @@ export type HotelDTO = {
106
106
  maxChildren?: number;
107
107
  maxInfants?: number;
108
108
  stateFieldConfiguration?: EHotelStateFieldConfiguration;
109
- } & Pick<AdminHotelConfig, 'childConfiguration' | 'countryPrefix' | 'quoteImageDesktop' | 'quoteImageMobile' | 'memberOnlyImage' | 'captureChildAge'> & Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;
109
+ } & Pick<AdminHotelConfig, 'childConfiguration' | 'perks' | 'perkTitle' | 'countryPrefix' | 'quoteImageDesktop' | 'quoteImageMobile' | 'memberOnlyImage' | 'captureChildAge'> & Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;
110
110
  export declare enum VGSCardName {
111
111
  Visa = "visa",
112
112
  Mastercard = "mastercard",
@@ -1 +1 @@
1
- {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAAiH;AAyHjH,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport type { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IAuxiliaryFilter } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ClientHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: {\n [id: string]: {\n name: string;\n type: 'select';\n includeAllAbove: boolean;\n requireInput: boolean;\n options: IAuxiliaryFilter['options'];\n };\n };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n};\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n} & Pick<AdminHotelConfig, 'childConfiguration' | 'countryPrefix' | 'quoteImageDesktop' | 'quoteImageMobile' | 'memberOnlyImage' | 'captureChildAge'> &\n Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
1
+ {"version":3,"file":"HotelDTO.js","sourceRoot":"/","sources":["src/models/Api/HotelDTO.ts"],"names":[],"mappings":";;;AAMA,uDAAiH;AAwHjH,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0BAAW,CAAA;IACX,wCAAyB,CAAA;IACzB,uCAAwB,CAAA;IACxB,oCAAqB,CAAA;AACzB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAEY,QAAA,0BAA0B,GAAsD;IACzF,CAAC,wBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,IAAI;IACzC,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,GAAG;IACvC,CAAC,wBAAgB,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,eAAe;IAC/D,CAAC,wBAAgB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU;IACrD,CAAC,wBAAgB,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ;CACpD,CAAC","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport type { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IAuxiliaryFilter } from '@roomstay/core';\nimport { DeepPartial } from 'react-hook-form';\n\nimport ColorProfile from '@/models/Client/Hotel/ColorProfile';\nimport { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport { AdminHotelConfig, ClientHotelConfig, ConfigHotel, EPaymentCardType } from '@/models/Client/Hotel/Hotel';\nimport HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\n\nexport type HotelServiceDTO = {\n detail: string;\n included: boolean;\n name: string;\n onsite: boolean;\n};\n\nexport type HotelRoomsDTO = {\n [roomTypeCode: string]: HotelRoomDTO;\n};\n\nexport type HotelRoomGroupsDTO = {\n groupName: string;\n id: string;\n filters: {\n [id: string]: {\n name: string;\n type: 'select';\n includeAllAbove: boolean;\n requireInput: boolean;\n options: IAuxiliaryFilter['options'];\n };\n };\n}[];\n\nexport type HotelRoomAmenitiesDTO = {\n type: string;\n description: string;\n};\n\nexport type HotelRoomDTO = {\n code: string;\n name: string;\n shortDescription: string;\n longDescription: string;\n images: string[];\n quantity: number;\n maxOccupancy: number;\n bedQuantity: number;\n showBedType?: boolean;\n standardNumBeds: number;\n maxRollaways: number;\n bedType: string;\n amenities: HotelRoomAmenitiesDTO[];\n features: HotelRoomAmenitiesDTO[];\n bedTypeOverride?: string;\n roomGroupId?: string;\n roomSize?: number;\n prePerkDisclaimer?: string;\n perks?: ConfigHotel['perks'];\n};\n\nexport type HotelDTO = {\n id: number;\n name: string;\n chainId: number;\n chainName: string;\n\n address: HotelAddress;\n phone: string;\n\n latitude: string;\n longitude: string;\n\n utcOffset: string;\n\n languageCode: string;\n currencyCode: string;\n\n checkInTime: string;\n checkOutTime: string;\n\n paymentCardTypes: EPaymentCardType[];\n\n description: string;\n locationDescription: string;\n policies: string;\n\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n\n rooms: { [roomTypeCode: string]: HotelRoomDTO };\n dataSource: HotelDataSource;\n\n // Following fields are only present if dataSource = 'roomstay'\n logo?: string;\n colors: DeepPartial<ColorProfile>;\n distanceUnitType?: DistanceUnitType;\n weekdayStartsOn?: WeekdayStartsOn;\n\n crossSellHotelIds?: string[];\n paymentMethods: EBookingPaymentMethod[];\n cardProcessor: EHotelCardProcessor;\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n\n email?: string;\n hotelUrl?: string;\n heroImage?: string;\n images?: string[];\n integrations?: EIntegration[];\n roomGroups: HotelRoomGroupsDTO;\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n preventCancellation?: boolean;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n} & Pick<AdminHotelConfig, 'childConfiguration' | 'perks' | 'perkTitle' | 'countryPrefix' | 'quoteImageDesktop' | 'quoteImageMobile' | 'memberOnlyImage' | 'captureChildAge'> &\n Pick<ClientHotelConfig, 'memberOnlyRenderRateLast'>;\n\nexport enum VGSCardName {\n Visa = 'visa',\n Mastercard = 'mastercard',\n JCB = 'jcb',\n DinersClub = 'dinersclub',\n AmericanExpress = 'amex',\n UnionPay = 'unionpay',\n}\n\nexport const SynxisToVGSCardNameMapping: { [synxisName in EPaymentCardType]: VGSCardName } = {\n [EPaymentCardType.Visa]: VGSCardName.Visa,\n [EPaymentCardType.Mastercard]: VGSCardName.Mastercard,\n [EPaymentCardType.JCB]: VGSCardName.JCB,\n [EPaymentCardType.AmericanExpress]: VGSCardName.AmericanExpress,\n [EPaymentCardType.DinersClub]: VGSCardName.DinersClub,\n [EPaymentCardType.UnionPay]: VGSCardName.UnionPay,\n};\n"]}
@@ -4,6 +4,7 @@ type ReservationsDTO = {
4
4
  roomstayId: string;
5
5
  reservations: ReservationDTO[];
6
6
  itineraryNumber: string;
7
+ hotelFrontendId?: string;
7
8
  warnings?: string[];
8
9
  total?: string;
9
10
  payment?: {
@@ -1 +1 @@
1
- {"version":3,"file":"ReservationsDTO.js","sourceRoot":"/","sources":["src/models/Api/ReservationsDTO.ts"],"names":[],"mappings":"","sourcesContent":["import { EBookingPaymentMethod } from '@roomstay/core';\n\nimport RoomNightRateDTO from '@/models/Api/RoomNightRateDTO';\n\ntype ReservationsDTO = {\n roomstayId: string;\n reservations: ReservationDTO[];\n itineraryNumber: string;\n warnings?: string[];\n total?: string;\n payment?: {\n planpay?: {\n id: string;\n checkoutWorkflow: {\n type: string;\n id: string;\n scriptUrl: string;\n };\n };\n external?: {\n id: string;\n redirectUrl: string;\n };\n };\n};\n\nexport type ReservationAddonDTO = {\n availability: any;\n code: string;\n inclusive: false;\n pricingType: string;\n quantity: number;\n adultQuantity: number;\n childQuantity?: number;\n description: string;\n name: string;\n category: string;\n image: string;\n price: number;\n adultPrice?: number;\n childPrice?: number;\n nights?: number;\n};\n\nexport type ReservationDTO = {\n nights: {\n [date: string]: RoomNightRateDTO;\n };\n guestCounts: {\n adults: number;\n children: number;\n };\n guest: {\n address: {\n line1: string;\n city: string;\n postalCode: string;\n };\n firstName: string;\n lastName: string;\n phone: string;\n email: string;\n };\n paymentCard: {\n type?: string;\n last4: string;\n expiry: string;\n name: string;\n };\n paymentMethod?: EBookingPaymentMethod;\n comments?: string[];\n addons?: ReservationAddonDTO[];\n\n reservationNumber: string;\n cancelPolicy: string;\n cancellationPolicyLongDescription?: string;\n guaranteePolicy: string;\n guaranteePolicyLongDescription?: string;\n roomType: string;\n roomCode: string;\n rate: string;\n images: [string];\n status: string;\n isCancelable: boolean;\n total: {\n beforeTax: number;\n afterTax: number;\n };\n};\n\nexport default ReservationsDTO;\n"]}
1
+ {"version":3,"file":"ReservationsDTO.js","sourceRoot":"/","sources":["src/models/Api/ReservationsDTO.ts"],"names":[],"mappings":"","sourcesContent":["import { EBookingPaymentMethod } from '@roomstay/core';\n\nimport RoomNightRateDTO from '@/models/Api/RoomNightRateDTO';\n\ntype ReservationsDTO = {\n roomstayId: string;\n reservations: ReservationDTO[];\n itineraryNumber: string;\n hotelFrontendId?: string;\n warnings?: string[];\n total?: string;\n payment?: {\n planpay?: {\n id: string;\n checkoutWorkflow: {\n type: string;\n id: string;\n scriptUrl: string;\n };\n };\n external?: {\n id: string;\n redirectUrl: string;\n };\n };\n};\n\nexport type ReservationAddonDTO = {\n availability: any;\n code: string;\n inclusive: false;\n pricingType: string;\n quantity: number;\n adultQuantity: number;\n childQuantity?: number;\n description: string;\n name: string;\n category: string;\n image: string;\n price: number;\n adultPrice?: number;\n childPrice?: number;\n nights?: number;\n};\n\nexport type ReservationDTO = {\n nights: {\n [date: string]: RoomNightRateDTO;\n };\n guestCounts: {\n adults: number;\n children: number;\n };\n guest: {\n address: {\n line1: string;\n city: string;\n postalCode: string;\n };\n firstName: string;\n lastName: string;\n phone: string;\n email: string;\n };\n paymentCard: {\n type?: string;\n last4: string;\n expiry: string;\n name: string;\n };\n paymentMethod?: EBookingPaymentMethod;\n comments?: string[];\n addons?: ReservationAddonDTO[];\n\n reservationNumber: string;\n cancelPolicy: string;\n cancellationPolicyLongDescription?: string;\n guaranteePolicy: string;\n guaranteePolicyLongDescription?: string;\n roomType: string;\n roomCode: string;\n rate: string;\n images: [string];\n status: string;\n isCancelable: boolean;\n total: {\n beforeTax: number;\n afterTax: number;\n };\n};\n\nexport default ReservationsDTO;\n"]}
@@ -17,6 +17,8 @@ export default class BasketRow {
17
17
  private preGuestsState;
18
18
  private promoCode;
19
19
  private promoCodeStatus;
20
+ private manualInputPromoCode;
21
+ private enableRoomCodeFilter;
20
22
  private roomCode;
21
23
  private startDate;
22
24
  private endDate;
@@ -30,10 +32,12 @@ export default class BasketRow {
30
32
  constructor(rate?: RoomRate, uniqId?: string);
31
33
  getStale(): boolean;
32
34
  getRate(): RoomRate | null;
33
- getPromoCode(): string;
35
+ getPromoCode(memberOnlyPromoCode?: string): string;
34
36
  getPromoOnly(): boolean;
35
37
  getPromoCodeColour(): Color.Success | Color.Alert | Color.Navy;
36
38
  isPromoCodeValid(): boolean | "";
39
+ isManualInputPromoCode(): boolean;
40
+ setManualInputPromoCode(value: boolean): void;
37
41
  getNumberOfDays(): number;
38
42
  getRoom(): Room;
39
43
  getStartDate(): dayjs.Dayjs;
@@ -79,6 +83,7 @@ export default class BasketRow {
79
83
  getAuxiliaryFilter(): {
80
84
  [id: string]: string | number;
81
85
  } | undefined;
86
+ getEnableRoomCodeFilter(): boolean;
82
87
  getRoomCode(): string;
83
88
  setRoomCode(roomCode: string): void;
84
89
  }
@@ -18,6 +18,7 @@ class BasketRow {
18
18
  startDate: (0, dayjs_1.default)(),
19
19
  endDate: (0, dayjs_1.default)(),
20
20
  };
21
+ this.enableRoomCodeFilter = false; // Enable room code filter when the the URL's room parameter is present
21
22
  /*
22
23
  Rate is optional since we can create row entries
23
24
  on first step, where there is no ability to select rate.
@@ -31,8 +32,10 @@ class BasketRow {
31
32
  this.promoCode = '';
32
33
  this.promoCodeStatus = 'new';
33
34
  this.promoOnly = false;
34
- const roomCode = (0, CalendarHelper_1.getQueryParamFromHash)(AppQueryParameters_1.EAppQueryParameters.Room);
35
+ const roomCode = (0, CalendarHelper_1.getQueryParamFromHash)(AppQueryParameters_1.EAppQueryParameters.Room); // Extract the the URL's room parameter
36
+ this.enableRoomCodeFilter = !!roomCode;
35
37
  this.roomCode = roomCode || '';
38
+ this.manualInputPromoCode = false;
36
39
  this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');
37
40
  }
38
41
  getStale() {
@@ -41,8 +44,14 @@ class BasketRow {
41
44
  getRate() {
42
45
  return this.rate;
43
46
  }
44
- getPromoCode() {
45
- return this.promoCode.toUpperCase();
47
+ getPromoCode(memberOnlyPromoCode) {
48
+ if (!memberOnlyPromoCode) {
49
+ return this.promoCode.toUpperCase();
50
+ }
51
+ if (memberOnlyPromoCode !== this.promoCode.toUpperCase() || this.isManualInputPromoCode()) {
52
+ return this.promoCode.toUpperCase();
53
+ }
54
+ return '';
46
55
  }
47
56
  getPromoOnly() {
48
57
  return this.promoOnly;
@@ -60,6 +69,12 @@ class BasketRow {
60
69
  const rate = this.getRate();
61
70
  return (rate === null || rate === void 0 ? void 0 : rate.getAveragePrice(true)) < (rate === null || rate === void 0 ? void 0 : rate.getAveragePriceBeforeDiscount(true)) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';
62
71
  }
72
+ isManualInputPromoCode() {
73
+ return this.manualInputPromoCode;
74
+ }
75
+ setManualInputPromoCode(value) {
76
+ this.manualInputPromoCode = value;
77
+ }
63
78
  getNumberOfDays() {
64
79
  if (this.endDate && this.startDate) {
65
80
  return this.endDate.diff(this.startDate, 'day');
@@ -211,6 +226,9 @@ class BasketRow {
211
226
  getAuxiliaryFilter() {
212
227
  return this.auxiliaryFilter;
213
228
  }
229
+ getEnableRoomCodeFilter() {
230
+ return this.enableRoomCodeFilter;
231
+ }
214
232
  getRoomCode() {
215
233
  return this.roomCode || '';
216
234
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BasketRow.js","sourceRoot":"/","sources":["src/models/BasketRow.ts"],"names":[],"mappings":"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","sourcesContent":["import { IBookingQuoteResponse } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport type { Room } from '@/models/Room/Room';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport UserProfile from '@/models/UserProfile';\nimport { getQueryParamFromHash } from '@/util/CalendarHelper';\nimport { Color } from '@/util/Color';\nimport { DEFAULT_VALUES } from '@/util/DefaultValueManager';\n\nimport { EAppQueryParameters } from './AppQueryParameters';\nexport default class BasketRow {\n private uniqId: string;\n\n private room!: Room;\n private rate!: RoomRate | null;\n private isStale!: boolean;\n private adults: number;\n private children: number;\n private infants: number;\n private preGuestsState: {\n adults: number;\n children: number;\n infants: number;\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n } = {\n adults: 0,\n children: 0,\n infants: 0,\n startDate: dayjs(),\n endDate: dayjs(),\n };\n\n private promoCode: string;\n private promoCodeStatus: 'valid' | 'invalid' | 'new';\n\n private roomCode: string; // Indicates availability for a specific room\n\n private startDate!: dayjs.Dayjs;\n private endDate!: dayjs.Dayjs;\n\n private promoOnly: boolean;\n\n private upsellPrevRoom?: {\n code?: string;\n price?: number;\n };\n\n public quoteDetails!: NonNullable<IBookingQuoteResponse>['rows'][number];\n\n public checkoutDefaults?: Partial<UserProfile>;\n\n public auxiliaryFilter?: { [id: string]: string | number };\n\n public constructor(rate?: RoomRate, uniqId?: string) {\n /*\n Rate is optional since we can create row entries\n on first step, where there is no ability to select rate.\n */\n if (rate) {\n this.setRate(rate);\n }\n\n this.adults = DEFAULT_VALUES.ADULTS ?? 1;\n this.children = DEFAULT_VALUES.CHILDREN ?? 0;\n this.infants = DEFAULT_VALUES.INFANTS ?? 0;\n\n this.promoCode = '';\n this.promoCodeStatus = 'new';\n this.promoOnly = false;\n const roomCode = getQueryParamFromHash(EAppQueryParameters.Room);\n this.roomCode = roomCode || '';\n\n this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');\n }\n\n public getStale() {\n return this.isStale;\n }\n\n public getRate() {\n return this.rate;\n }\n\n public getPromoCode() {\n return this.promoCode.toUpperCase();\n }\n\n public getPromoOnly() {\n return this.promoOnly;\n }\n\n public getPromoCodeColour() {\n if (this.promoCodeStatus === 'valid') {\n return Color.Success;\n } else if (this.promoCodeStatus === 'invalid') {\n return Color.Alert;\n }\n\n return Color.Navy;\n }\n\n public isPromoCodeValid() {\n const rate = this.getRate();\n\n return (rate?.getAveragePrice(true) as number) < (rate?.getAveragePriceBeforeDiscount(true) as number) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';\n }\n\n public getNumberOfDays() {\n if (this.endDate && this.startDate) {\n return this.endDate.diff(this.startDate, 'day');\n }\n\n return 0;\n }\n\n public getRoom() {\n return this.room;\n }\n\n public getStartDate() {\n return this.startDate;\n }\n\n public getEndDate() {\n return this.endDate;\n }\n\n public getArrivalDate() {\n if (this.startDate) {\n return this.startDate.format('D MMM');\n }\n\n return null;\n }\n\n public getDepartureDate() {\n if (this.endDate) {\n return this.endDate.format('D MMM');\n }\n\n return null;\n }\n\n public getStayDateRange(format = 'ddd D MMM', separator = ',') {\n if (this.startDate && this.endDate) {\n return `${this.startDate.format(format)}${separator} ${this.endDate.format(format)}`;\n }\n }\n\n public getAdults() {\n return this.adults;\n }\n\n public getChildren() {\n return this.children;\n }\n\n public getInfants() {\n return this.infants;\n }\n\n public getPreGuestsState() {\n return this.preGuestsState;\n }\n\n public getID() {\n return this.uniqId;\n }\n\n public getPromoCodeStatus() {\n return this.promoCodeStatus;\n }\n\n public isValid(): boolean {\n return this.startDate && this.endDate && !!this.rate;\n }\n\n public setPromoCode(code: string) {\n if (this.promoCode !== code.toUpperCase()) {\n this.setPromoCodeStatus('new');\n this.promoOnly = false;\n }\n\n this.promoCode = code.toUpperCase();\n }\n\n public setPromoOnly(value: boolean) {\n this.promoOnly = value;\n }\n\n public setStale(status: boolean) {\n this.isStale = status;\n }\n\n public setPromoCodeStatus(status: 'valid' | 'invalid' | 'new') {\n this.promoCodeStatus = this.promoCode ? status : 'new';\n }\n\n public setStartDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.startDate = date;\n }\n }\n\n public setEndDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.endDate = date;\n }\n }\n\n public setAdults(adults: number) {\n this.adults = adults;\n }\n\n public setChildren(children: number) {\n this.children = children;\n }\n\n public setInfants(infants: number) {\n this.infants = infants;\n }\n\n public setPreGuestsState() {\n this.preGuestsState.adults = this.adults;\n this.preGuestsState.children = this.children;\n this.preGuestsState.infants = this.infants;\n this.preGuestsState.startDate = this.startDate;\n this.preGuestsState.endDate = this.endDate;\n }\n\n public discardGuestsState() {\n this.setAdults(this.preGuestsState.adults);\n this.setChildren(this.preGuestsState.children);\n this.setInfants(this.preGuestsState.infants);\n this.setStartDate(this.preGuestsState.startDate);\n this.setEndDate(this.preGuestsState.endDate);\n }\n\n public setRate(rate: RoomRate | null, upsellEnabled?: boolean) {\n if (upsellEnabled) {\n this.upsellPrevRoom = {\n code: this.room.code,\n price: this.rate?.getTotalPrice(),\n };\n }\n\n this.rate = rate;\n if (rate) {\n this.room = rate.getRoom();\n this.roomCode = this.room.code!; // [step/room] Update Indicates availability for a specific room\n }\n }\n\n public setUpsellPrevRoom(roomCode: string, price: number) {\n this.upsellPrevRoom = {\n code: roomCode,\n price,\n };\n }\n\n public getUpsellPrevRoom() {\n return this.upsellPrevRoom;\n }\n\n public getTotalPrice(beforeTax = false) {\n return this.getRate()?.getTotalPrice(beforeTax);\n }\n\n public checkDiffFromReservation(res: ReservationDTO) {\n const differences: BasketRowDifferences = {};\n\n if (Number(res.total.afterTax).toFixed(2) !== Number(this.getTotalPrice()).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(),\n after: res.total.afterTax,\n };\n }\n\n if (Object.keys(differences).length) {\n differences.id = this.getID();\n\n return differences;\n } else {\n return false;\n }\n }\n\n public setAuxiliaryFilter(value: { [id: string]: any }) {\n this.auxiliaryFilter = value;\n }\n\n public getAuxiliaryFilter() {\n return this.auxiliaryFilter;\n }\n\n public getRoomCode() {\n return this.roomCode || '';\n }\n\n public setRoomCode(roomCode: string) {\n this.roomCode = roomCode;\n }\n}\n"]}
1
+ {"version":3,"file":"BasketRow.js","sourceRoot":"/","sources":["src/models/BasketRow.ts"],"names":[],"mappings":";;;;;AACA,kDAA0B;AAO1B,0DAA8D;AAC9D,wCAAqC;AACrC,oEAA4D;AAE5D,6DAA2D;AAC3D,MAAqB,SAAS;IA8C1B,YAAmB,IAAe,EAAE,MAAe;;QArC3C,mBAAc,GAMlB;YACA,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAA,eAAK,GAAE;YAClB,OAAO,EAAE,IAAA,eAAK,GAAE;SACnB,CAAC;QAMM,yBAAoB,GAAG,KAAK,CAAC,CAAC,uEAAuE;QAoBzG;;;MAGF;QACE,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB;QAED,IAAI,CAAC,MAAM,GAAG,MAAA,oCAAc,CAAC,MAAM,mCAAI,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,MAAA,oCAAc,CAAC,QAAQ,mCAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,MAAA,oCAAc,CAAC,OAAO,mCAAI,CAAC,CAAC;QAE3C,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAA,sCAAqB,EAAC,wCAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC;QACzG,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY,CAAC,mBAA4B;QAC5C,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;SACvC;QAED,IAAI,mBAAmB,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACvF,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;SACvC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,kBAAkB;QACrB,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;YAClC,OAAO,aAAK,CAAC,OAAO,CAAC;SACxB;aAAM,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;YAC3C,OAAO,aAAK,CAAC,KAAK,CAAC;SACtB;QAED,OAAO,aAAK,CAAC,IAAI,CAAC;IACtB,CAAC;IAEM,gBAAgB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE5B,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,CAAC,IAAI,CAAY,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,6BAA6B,CAAC,IAAI,CAAY,CAAA,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,OAAO,CAAC;IAC3K,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAEM,uBAAuB,CAAC,KAAc;QACzC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,CAAC;IAEM,eAAe;QAClB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACnD;QAED,OAAO,CAAC,CAAC;IACb,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,cAAc;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACzC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACvC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB,CAAC,MAAM,GAAG,WAAW,EAAE,SAAS,GAAG,GAAG;QACzD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;YAChC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;SACxF;IACL,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzD,CAAC;IAEM,YAAY,CAAC,IAAY;QAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;YACvC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAEM,YAAY,CAAC,KAAc;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,QAAQ,CAAC,MAAe;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAEM,kBAAkB,CAAC,MAAmC;QACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,CAAC;IAEM,YAAY,CAAC,IAAiB;QACjC,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,KAAI,IAAI,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;IACL,CAAC;IAEM,UAAU,CAAC,IAAiB;QAC/B,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,KAAI,IAAI,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;IACL,CAAC;IAEM,SAAS,CAAC,MAAc;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,QAAgB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,UAAU,CAAC,OAAe;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEM,iBAAiB;QACpB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC/C,CAAC;IAEM,kBAAkB;QACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,OAAO,CAAC,IAAqB,EAAE,aAAuB;;QACzD,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,cAAc,GAAG;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;gBACpB,KAAK,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,aAAa,EAAE;aACpC,CAAC;SACL;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC,gEAAgE;SACpG;IACL,CAAC;IAEM,iBAAiB,CAAC,QAAgB,EAAE,KAAa;QACpD,IAAI,CAAC,cAAc,GAAG;YAClB,IAAI,EAAE,QAAQ;YACd,KAAK;SACR,CAAC;IACN,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEM,aAAa,CAAC,SAAS,GAAG,KAAK;;QAClC,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAEM,wBAAwB,CAAC,GAAmB;QAC/C,MAAM,WAAW,GAAyB,EAAE,CAAC;QAE7C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnF,WAAW,CAAC,UAAU,GAAG;gBACrB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ;aAC5B,CAAC;SACL;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;YACjC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAE9B,OAAO,WAAW,CAAC;SACtB;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,kBAAkB,CAAC,KAA4B;QAClD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAEM,uBAAuB;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAEM,WAAW;QACd,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC/B,CAAC;IAEM,WAAW,CAAC,QAAgB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AA9TD,4BA8TC","sourcesContent":["import { IBookingQuoteResponse } from '@roomstay/core';\nimport dayjs from 'dayjs';\n\nimport { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport type { Room } from '@/models/Room/Room';\nimport type { RoomRate } from '@/models/Room/RoomRate';\nimport UserProfile from '@/models/UserProfile';\nimport { getQueryParamFromHash } from '@/util/CalendarHelper';\nimport { Color } from '@/util/Color';\nimport { DEFAULT_VALUES } from '@/util/DefaultValueManager';\n\nimport { EAppQueryParameters } from './AppQueryParameters';\nexport default class BasketRow {\n private uniqId: string;\n\n private room!: Room;\n private rate!: RoomRate | null;\n private isStale!: boolean;\n private adults: number;\n private children: number;\n private infants: number;\n private preGuestsState: {\n adults: number;\n children: number;\n infants: number;\n startDate: dayjs.Dayjs;\n endDate: dayjs.Dayjs;\n } = {\n adults: 0,\n children: 0,\n infants: 0,\n startDate: dayjs(),\n endDate: dayjs(),\n };\n\n private promoCode: string;\n private promoCodeStatus: 'valid' | 'invalid' | 'new';\n private manualInputPromoCode: boolean;\n\n private enableRoomCodeFilter = false; // Enable room code filter when the the URL's room parameter is present\n private roomCode: string; // Indicates availability for a specific room extracted from the URL's room parameter\n\n private startDate!: dayjs.Dayjs;\n private endDate!: dayjs.Dayjs;\n\n private promoOnly: boolean;\n\n private upsellPrevRoom?: {\n code?: string;\n price?: number;\n };\n\n public quoteDetails!: NonNullable<IBookingQuoteResponse>['rows'][number];\n\n public checkoutDefaults?: Partial<UserProfile>;\n\n public auxiliaryFilter?: { [id: string]: string | number };\n\n public constructor(rate?: RoomRate, uniqId?: string) {\n /*\n Rate is optional since we can create row entries\n on first step, where there is no ability to select rate.\n */\n if (rate) {\n this.setRate(rate);\n }\n\n this.adults = DEFAULT_VALUES.ADULTS ?? 1;\n this.children = DEFAULT_VALUES.CHILDREN ?? 0;\n this.infants = DEFAULT_VALUES.INFANTS ?? 0;\n\n this.promoCode = '';\n this.promoCodeStatus = 'new';\n this.promoOnly = false;\n const roomCode = getQueryParamFromHash(EAppQueryParameters.Room); // Extract the the URL's room parameter\n this.enableRoomCodeFilter = !!roomCode;\n this.roomCode = roomCode || '';\n this.manualInputPromoCode = false;\n\n this.uniqId = uniqId ? uniqId : btoa(((Date.now() % 1000) / 1000) * Math.random() + '');\n }\n\n public getStale() {\n return this.isStale;\n }\n\n public getRate() {\n return this.rate;\n }\n\n public getPromoCode(memberOnlyPromoCode?: string) {\n if (!memberOnlyPromoCode) {\n return this.promoCode.toUpperCase();\n }\n\n if (memberOnlyPromoCode !== this.promoCode.toUpperCase() || this.isManualInputPromoCode()) {\n return this.promoCode.toUpperCase();\n }\n\n return '';\n }\n\n public getPromoOnly() {\n return this.promoOnly;\n }\n\n public getPromoCodeColour() {\n if (this.promoCodeStatus === 'valid') {\n return Color.Success;\n } else if (this.promoCodeStatus === 'invalid') {\n return Color.Alert;\n }\n\n return Color.Navy;\n }\n\n public isPromoCodeValid() {\n const rate = this.getRate();\n\n return (rate?.getAveragePrice(true) as number) < (rate?.getAveragePriceBeforeDiscount(true) as number) && this.getPromoCode() && this.getPromoCodeStatus() === 'valid';\n }\n\n public isManualInputPromoCode() {\n return this.manualInputPromoCode;\n }\n\n public setManualInputPromoCode(value: boolean) {\n this.manualInputPromoCode = value;\n }\n\n public getNumberOfDays() {\n if (this.endDate && this.startDate) {\n return this.endDate.diff(this.startDate, 'day');\n }\n\n return 0;\n }\n\n public getRoom() {\n return this.room;\n }\n\n public getStartDate() {\n return this.startDate;\n }\n\n public getEndDate() {\n return this.endDate;\n }\n\n public getArrivalDate() {\n if (this.startDate) {\n return this.startDate.format('D MMM');\n }\n\n return null;\n }\n\n public getDepartureDate() {\n if (this.endDate) {\n return this.endDate.format('D MMM');\n }\n\n return null;\n }\n\n public getStayDateRange(format = 'ddd D MMM', separator = ',') {\n if (this.startDate && this.endDate) {\n return `${this.startDate.format(format)}${separator} ${this.endDate.format(format)}`;\n }\n }\n\n public getAdults() {\n return this.adults;\n }\n\n public getChildren() {\n return this.children;\n }\n\n public getInfants() {\n return this.infants;\n }\n\n public getPreGuestsState() {\n return this.preGuestsState;\n }\n\n public getID() {\n return this.uniqId;\n }\n\n public getPromoCodeStatus() {\n return this.promoCodeStatus;\n }\n\n public isValid(): boolean {\n return this.startDate && this.endDate && !!this.rate;\n }\n\n public setPromoCode(code: string) {\n if (this.promoCode !== code.toUpperCase()) {\n this.setPromoCodeStatus('new');\n this.promoOnly = false;\n }\n\n this.promoCode = code.toUpperCase();\n }\n\n public setPromoOnly(value: boolean) {\n this.promoOnly = value;\n }\n\n public setStale(status: boolean) {\n this.isStale = status;\n }\n\n public setPromoCodeStatus(status: 'valid' | 'invalid' | 'new') {\n this.promoCodeStatus = this.promoCode ? status : 'new';\n }\n\n public setStartDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.startDate = date;\n }\n }\n\n public setEndDate(date: dayjs.Dayjs) {\n if (date?.isValid() || date === undefined) {\n this.endDate = date;\n }\n }\n\n public setAdults(adults: number) {\n this.adults = adults;\n }\n\n public setChildren(children: number) {\n this.children = children;\n }\n\n public setInfants(infants: number) {\n this.infants = infants;\n }\n\n public setPreGuestsState() {\n this.preGuestsState.adults = this.adults;\n this.preGuestsState.children = this.children;\n this.preGuestsState.infants = this.infants;\n this.preGuestsState.startDate = this.startDate;\n this.preGuestsState.endDate = this.endDate;\n }\n\n public discardGuestsState() {\n this.setAdults(this.preGuestsState.adults);\n this.setChildren(this.preGuestsState.children);\n this.setInfants(this.preGuestsState.infants);\n this.setStartDate(this.preGuestsState.startDate);\n this.setEndDate(this.preGuestsState.endDate);\n }\n\n public setRate(rate: RoomRate | null, upsellEnabled?: boolean) {\n if (upsellEnabled) {\n this.upsellPrevRoom = {\n code: this.room.code,\n price: this.rate?.getTotalPrice(),\n };\n }\n\n this.rate = rate;\n\n if (rate) {\n this.room = rate.getRoom();\n this.roomCode = this.room.code!; // [step/room] Update Indicates availability for a specific room\n }\n }\n\n public setUpsellPrevRoom(roomCode: string, price: number) {\n this.upsellPrevRoom = {\n code: roomCode,\n price,\n };\n }\n\n public getUpsellPrevRoom() {\n return this.upsellPrevRoom;\n }\n\n public getTotalPrice(beforeTax = false) {\n return this.getRate()?.getTotalPrice(beforeTax);\n }\n\n public checkDiffFromReservation(res: ReservationDTO) {\n const differences: BasketRowDifferences = {};\n\n if (Number(res.total.afterTax).toFixed(2) !== Number(this.getTotalPrice()).toFixed(2)) {\n differences.totalPrice = {\n before: this.getTotalPrice(),\n after: res.total.afterTax,\n };\n }\n\n if (Object.keys(differences).length) {\n differences.id = this.getID();\n\n return differences;\n } else {\n return false;\n }\n }\n\n public setAuxiliaryFilter(value: { [id: string]: any }) {\n this.auxiliaryFilter = value;\n }\n\n public getAuxiliaryFilter() {\n return this.auxiliaryFilter;\n }\n\n public getEnableRoomCodeFilter() {\n return this.enableRoomCodeFilter;\n }\n\n public getRoomCode() {\n return this.roomCode || '';\n }\n\n public setRoomCode(roomCode: string) {\n this.roomCode = roomCode;\n }\n}\n"]}
@@ -91,6 +91,8 @@ export interface AdminHotelConfig {
91
91
  };
92
92
  };
93
93
  preventCancellation?: boolean;
94
+ perks?: HotelPerk[];
95
+ perkTitle?: string;
94
96
  stateFieldConfiguration?: EHotelStateFieldConfiguration;
95
97
  countryPrefix?: string;
96
98
  quoteImageDesktop?: string;
@@ -119,7 +121,8 @@ export interface ClientHotelConfig {
119
121
  * Whether to show the Breakfast / Lunch / Dinner included
120
122
  */
121
123
  showMealPill?: boolean;
122
- perks: HotelPerk[];
124
+ perks?: HotelPerk[];
125
+ perkTitle?: string;
123
126
  /**
124
127
  * Hide perks on room row
125
128
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAkBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IHotelColorScheme } from '@roomstay/core';\nimport { Property } from 'csstype';\nimport type { ReactChild } from 'react';\n\nimport type { InternalMemberSignInInputs } from '@/components/members/SignInModal/InternalMemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport type { Language } from '@/providers/LanguageProvider';\nimport { RoomSort } from '@/providers/RoomSortProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n memberOnlyModalImageSize: Property.ObjectFit;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n cardProcessor: EHotelCardProcessor;\n\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n\n childConfiguration?: {\n supportChildren?: boolean;\n supportInfants: boolean;\n childRange: { min: number; max: number };\n infantRange: { min: number; max: number };\n };\n preventCancellation?: boolean;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n\n countryPrefix?: string;\n quoteImageDesktop?: string;\n quoteImageMobile?: string;\n memberOnlyImage?: string;\n captureChildAge?: boolean;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlyRenderRateLast?: boolean;\n memberOnlySignupInputs?: InternalMemberSignInInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks: HotelPerk[];\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n currentRoomSort?: RoomSort; //override default room sort\n maxAdults?: number; //fixed from frontend\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n integrations?: EIntegration[];\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
1
+ {"version":3,"file":"Hotel.js","sourceRoot":"/","sources":["src/models/Client/Hotel/Hotel.ts"],"names":[],"mappings":";;;AAkBA,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IACxB,+BAAW,CAAA;IACX,qCAAiB,CAAA;IACjB,8BAAU,CAAA;IACV,0CAAsB,CAAA;IACtB,qCAAiB,CAAA;IACjB,mCAAe,CAAA;AACnB,CAAC,EAPW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAO3B","sourcesContent":["import type { EnvironmentName } from '@planpay/web';\nimport { EBookingPaymentMethod, EHotelCardProcessor, EHotelStateFieldConfiguration, EIntegration, IHotelColorScheme } from '@roomstay/core';\nimport { Property } from 'csstype';\nimport type { ReactChild } from 'react';\n\nimport type { InternalMemberSignInInputs } from '@/components/members/SignInModal/InternalMemberSignInModal.types';\nimport type { HotelRoomGroupsDTO, HotelRoomsDTO, HotelServiceDTO } from '@/models/Api/HotelDTO';\nimport type { TransportDistances } from '@/models/Api/HotelOverrideDTO';\nimport type { HasDatalayerTags } from '@/models/Client/Hotel/Company';\nimport type { DistanceUnitType } from '@/models/Client/Hotel/DistanceUnitType.types';\nimport type HotelAddress from '@/models/Client/Hotel/HotelAddress';\nimport type { HotelDataSource } from '@/models/Client/Hotel/HotelDataSource.types';\nimport type { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport type { HotelRoomOverwrite } from '@/models/Client/Hotel/HotelRoomOverwrite';\nimport type { WeekdayStartsOn } from '@/models/Client/Hotel/WeekdayStartsOn.types';\nimport type { Language } from '@/providers/LanguageProvider';\nimport { RoomSort } from '@/providers/RoomSortProvider';\n\nexport enum EPaymentCardType {\n Visa = 'VI',\n Mastercard = 'MC',\n JCB = 'JC',\n AmericanExpress = 'AX',\n DinersClub = 'DN',\n UnionPay = 'UP',\n}\n\nexport interface IVGSVaultNames {\n standard: string;\n members: string;\n}\n\n/**\n * This config comes from admin\n */\nexport interface AdminHotelConfig {\n hotelID: string;\n name: string;\n address?: HotelAddress;\n latitude?: number;\n longitude?: number;\n phone?: string;\n email?: string;\n checkInTime?: string;\n checkOutTime?: string;\n paymentCardTypes?: EPaymentCardType[];\n description?: string;\n locationDescription?: string;\n policies?: string;\n hotelServices: HotelServiceDTO[];\n businessServices: HotelServiceDTO[];\n rooms: HotelRoomsDTO;\n hasLoadedDetails?: boolean;\n dataSource: HotelDataSource;\n defaultCurrency: string;\n paymentMethods: EBookingPaymentMethod[];\n planpay?: {\n username: string;\n minDaysShowPlanpay: number;\n env: EnvironmentName;\n };\n hotelUrl: string;\n heroImage: string;\n memberOnlyModalImage?: string;\n memberOnlyModalImageSize: Property.ObjectFit;\n images?: string[];\n logo: string | ReactChild;\n colors: IHotelColorScheme;\n distanceUnitType: DistanceUnitType;\n startsWeekOnDay?: WeekdayStartsOn;\n crossSellHotelIds?: string[];\n maxOccupancy?: number;\n maxAdults?: number;\n maxChildren?: number;\n maxInfants?: number;\n hideByLine?: boolean;\n transportDistances?: TransportDistances;\n roomGroups: HotelRoomGroupsDTO;\n cardProcessor: EHotelCardProcessor;\n\n requireDeposit?: boolean;\n availableCountries?: { name: string; value: string }[];\n\n childConfiguration?: {\n supportChildren?: boolean;\n supportInfants: boolean;\n childRange: { min: number; max: number };\n infantRange: { min: number; max: number };\n };\n preventCancellation?: boolean;\n\n perks?: HotelPerk[];\n perkTitle?: string;\n\n stateFieldConfiguration?: EHotelStateFieldConfiguration;\n\n countryPrefix?: string;\n quoteImageDesktop?: string;\n quoteImageMobile?: string;\n memberOnlyImage?: string;\n captureChildAge?: boolean;\n}\n\n/**\n * This config comes from hard static local file\n */\nexport interface ClientHotelConfig {\n providerHotelID: string;\n shortName?: string;\n defaultDatepickerType?: 'Month' | 'Week';\n // TODO: need to do magic to see if we need to append / prepend stuff, for now we assume that it's only used while on the site.\n checkoutUrl?: string;\n defaultLanguage: Language;\n privacyPolicyUrl: string;\n bookNowPayLaterUrl?: string;\n bestRateNoBSUrl?: string;\n\n memberOnlyRates?: string[];\n memberOnlyPromoCode?: string;\n memberOnlyRenderRateLast?: boolean;\n memberOnlySignupInputs?: InternalMemberSignInInputs;\n googleMapsImage?: string;\n /**\n * Whether to show the Breakfast / Lunch / Dinner included\n */\n showMealPill?: boolean;\n perks?: HotelPerk[];\n perkTitle?: string;\n /**\n * Hide perks on room row\n */\n perksHideOnRoomRow?: boolean;\n /**\n * Hide perks on room detail modal\n */\n perksHideOnRoomDetail?: boolean;\n perksShowDisclaimer?: boolean;\n /** @deprecated Use the vgs.vaultNames.standard property now */\n vgsVaultName?: string;\n vgs?: {\n vaultNames: IVGSVaultNames;\n };\n showAddonLoader: boolean;\n overwrites?: { [code: string]: Partial<HotelRoomOverwrite> };\n forwardFindReservationToSynxis?: boolean;\n additionalOptions?: { [name: string]: any };\n googleReCaptcha?: {\n loadForMembers?: boolean;\n siteKey?: string;\n };\n /**\n * Show description on RoomDetails\n */\n showDescriptionOnRoomDetails?: boolean;\n /**\n * Customize the Member modal colours. Specifically replacing the green (success) with the primary color of hotel (accent)\n */\n memberOnlyModalUsePrimaryColor?: boolean;\n /**\n * Callback to trigger specific events on load of a hotel.\n *\n * This is where you can specify custom fields, language overrides, feature toggles etc.\n */\n onLoad?: () => void;\n currentRoomSort?: RoomSort; //override default room sort\n maxAdults?: number; //fixed from frontend\n}\n\nexport interface ConfigHotel extends ClientHotelConfig, AdminHotelConfig, HasDatalayerTags {}\n\nexport type Hotel = ConfigHotel & {\n lowestPrice?: {\n value: number;\n isLoading: boolean;\n };\n integrations?: EIntegration[];\n};\n\n/**\n * Used for DetailsHotel event\n */\nexport type InitialHotelDetailsEventPayload = {\n name: string;\n hotelID: number | string;\n hotelUrl: string;\n currency: string;\n language: Language;\n address?: HotelAddress;\n};\n"]}
@@ -3,8 +3,8 @@ import type { IconType } from '../../../components/generic/Icon/Icon';
3
3
  import { Hotel } from './Hotel';
4
4
  import { Room } from '../../Room/Room';
5
5
  export type HotelPerk = {
6
- icon?: IconType;
7
6
  iconElement?: ReactElement;
7
+ icon?: IconType;
8
8
  name: string;
9
9
  tooltip?: string;
10
10
  image?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"HotelPerk.js","sourceRoot":"/","sources":["src/models/Client/Hotel/HotelPerk.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactElement } from 'react';\n\nimport type { IconType } from '@/components/generic/Icon/Icon';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Room } from '@/models/Room/Room';\n\nexport type HotelPerk = {\n icon?: IconType;\n iconElement?: ReactElement;\n\n name: string;\n tooltip?: string;\n image?: string;\n\n perkNameRenderer?: (params: { hotel?: Hotel; room?: Room }) => JSX.Element;\n};\n"]}
1
+ {"version":3,"file":"HotelPerk.js","sourceRoot":"/","sources":["src/models/Client/Hotel/HotelPerk.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactElement } from 'react';\n\nimport type { IconType } from '@/components/generic/Icon/Icon';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { Room } from '@/models/Room/Room';\n\nexport type HotelPerk = {\n iconElement?: ReactElement; // from roomstay-clients\n icon?: IconType; // from roomstay-ui\n\n name: string;\n tooltip?: string;\n\n image?: string; // from roomstay-admin\n\n perkNameRenderer?: (params: { hotel?: Hotel; room?: Room }) => JSX.Element;\n};\n"]}
@@ -68,13 +68,31 @@ function FindReservationResults() {
68
68
  (0, react_1.useEffect)(() => {
69
69
  let isCancelled = false;
70
70
  setIsLoading(true);
71
+ const handleSuccess = (data) => {
72
+ if (!isCancelled) {
73
+ setBookingInformation(data);
74
+ setIsLoading(false);
75
+ setData(data);
76
+ }
77
+ };
71
78
  if (params === null || params === void 0 ? void 0 : params.ref) {
72
79
  BookingAPI_1.default.Reservation.findReservation(params.ref, params.email, hotel === null || hotel === void 0 ? void 0 : hotel.hotelID)
73
80
  .then((data) => {
74
- if (!isCancelled) {
75
- setBookingInformation(data);
76
- setIsLoading(false);
77
- setData(data);
81
+ if (data.hotelFrontendId && data.hotelFrontendId !== (hotel === null || hotel === void 0 ? void 0 : hotel.hotelID)) {
82
+ // User has searched for a booking that belongs to a different hotel (but within the same company).
83
+ // Let's redirect the user to the correct hotel.
84
+ ccx.getHotel(data.hotelFrontendId)
85
+ .then((hotel) => {
86
+ const findReservationUrl = `${hotel.hotelUrl}/${hotel.checkoutUrl}/#/find-reservation/${params.ref}/${params.email}`;
87
+ window.location.href = findReservationUrl;
88
+ })
89
+ .catch((error) => {
90
+ console.error(`Failed to find hotel: ${error}. Continuing with current hotel.`);
91
+ handleSuccess(data);
92
+ });
93
+ }
94
+ else {
95
+ handleSuccess(data);
78
96
  }
79
97
  })
80
98
  .catch(() => {