@roomstay/frontend 2.1.33 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/213.bundle.js +1 -0
  3. package/dist/279.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/423.bundle.js +1 -1
  6. package/dist/449.bundle.js +1 -1
  7. package/dist/535.bundle.js +1 -1
  8. package/dist/548.bundle.js +1 -0
  9. package/dist/686.bundle.js +1 -0
  10. package/dist/855.bundle.js +1 -1
  11. package/dist/873.bundle.js +1 -1
  12. package/dist/882.bundle.js +1 -1
  13. package/dist/93.bundle.js +1 -0
  14. package/dist/972.bundle.js +1 -1
  15. package/dist/main.bundle.js +1 -2
  16. package/dist/src/api/HotelAPI.d.ts +1 -1
  17. package/dist/src/api/HotelAPI.js.map +1 -1
  18. package/dist/src/api/ReservationAPI.d.ts +0 -6
  19. package/dist/src/api/ReservationAPI.js.map +1 -1
  20. package/dist/src/api/events-service/EventsServiceAPI.d.ts +3 -0
  21. package/dist/src/api/events-service/EventsServiceAPI.js +62 -0
  22. package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -0
  23. package/dist/src/components/Event/EventCarouselContainer.d.ts +8 -0
  24. package/dist/src/components/Event/EventCarouselContainer.js +97 -0
  25. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -0
  26. package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +1 -0
  27. package/dist/src/components/User/Forms/ForgotPasswordForm.js +38 -24
  28. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  29. package/dist/src/components/User/Forms/SignInForm.d.ts +4 -3
  30. package/dist/src/components/User/Forms/SignInForm.js +32 -14
  31. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  32. package/dist/src/components/User/Forms/SignUpForm.d.ts +1 -0
  33. package/dist/src/components/User/Forms/SignUpForm.js +30 -26
  34. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  35. package/dist/src/components/generic/BookingWizard/BookingWizard.js +5 -2
  36. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  37. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +6 -3
  38. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  39. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +8 -5
  40. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  41. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +15 -9
  42. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  43. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +4 -1
  44. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  45. package/dist/src/components/generic/Currency.js +5 -5
  46. package/dist/src/components/generic/Currency.js.map +1 -1
  47. package/dist/src/components/generic/Event/EventCard.d.ts +8 -0
  48. package/dist/src/components/generic/Event/EventCard.js +70 -0
  49. package/dist/src/components/generic/Event/EventCard.js.map +1 -0
  50. package/dist/src/components/generic/Event/EventCarousel.d.ts +9 -0
  51. package/dist/src/components/generic/Event/EventCarousel.js +72 -0
  52. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -0
  53. package/dist/src/components/generic/Headline.d.ts +2 -2
  54. package/dist/src/components/generic/Headline.js +8 -4
  55. package/dist/src/components/generic/Headline.js.map +1 -1
  56. package/dist/src/components/generic/Icon/Icon.d.ts +5 -1
  57. package/dist/src/components/generic/Icon/Icon.js +4 -0
  58. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  59. package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -1
  60. package/dist/src/components/generic/Overlay/Overlay.js +50 -7
  61. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  62. package/dist/src/components/generic/PasswordBox/PasswordBox.js +2 -2
  63. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  64. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.d.ts +8 -0
  65. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js +16 -0
  66. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js.map +1 -0
  67. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.d.ts +8 -0
  68. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +61 -0
  69. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -0
  70. package/dist/src/components/generic/PaymentCard/PaymentCard.js +6 -3
  71. package/dist/src/components/generic/PaymentCard/PaymentCard.js.map +1 -1
  72. package/dist/src/components/generic/PaymentCard/PaymentCardInput.d.ts +2 -3
  73. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +34 -28
  74. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  75. package/dist/src/components/generic/PromoCodeInput.js +15 -18
  76. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  77. package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +5 -4
  78. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +33 -10
  79. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  80. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +14 -11
  81. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +69 -11
  82. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  83. package/dist/src/components/generic/RatioImage/RatioImage.d.ts +11 -0
  84. package/dist/src/components/generic/RatioImage/RatioImage.js +12 -0
  85. package/dist/src/components/generic/RatioImage/RatioImage.js.map +1 -0
  86. package/dist/src/components/generic/RecentSearchesCard.js +6 -5
  87. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  88. package/dist/src/components/generic/Tabs/TabLink.js +28 -3
  89. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  90. package/dist/src/components/generic/TextBox.js +1 -1
  91. package/dist/src/components/generic/TextBox.js.map +1 -1
  92. package/dist/src/components/generic/badging/SSLSecureBadge.js +4 -1
  93. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  94. package/dist/src/components/generic/buttons/NextStepButton.d.ts +0 -3
  95. package/dist/src/components/generic/buttons/NextStepButton.js +4 -1
  96. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  97. package/dist/src/components/generic/loader/LargeLoader.js +31 -6
  98. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  99. package/dist/src/components/generic/modal/ConfirmationModal.js +6 -3
  100. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  101. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.d.ts +14 -2
  102. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +34 -26
  103. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  104. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.d.ts +7 -0
  105. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js +14 -0
  106. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js.map +1 -0
  107. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.d.ts +8 -0
  108. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js +25 -0
  109. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js.map +1 -0
  110. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.d.ts +7 -0
  111. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +49 -0
  112. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -0
  113. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +5 -2
  114. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +30 -39
  115. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  116. package/dist/src/components/generic/print/NoPrint.d.ts +3 -0
  117. package/dist/src/components/generic/print/NoPrint.js +11 -0
  118. package/dist/src/components/generic/print/NoPrint.js.map +1 -0
  119. package/dist/src/components/generic/print/PrintOnly.d.ts +3 -0
  120. package/dist/src/components/generic/print/PrintOnly.js +11 -0
  121. package/dist/src/components/generic/print/PrintOnly.js.map +1 -0
  122. package/dist/src/components/graphics/AddCard.d.ts +7 -0
  123. package/dist/src/components/graphics/AddCard.js +28 -0
  124. package/dist/src/components/graphics/AddCard.js.map +1 -0
  125. package/dist/src/components/graphics/HomeEmptyCard.d.ts +7 -0
  126. package/dist/src/components/graphics/HomeEmptyCard.js +53 -0
  127. package/dist/src/components/graphics/HomeEmptyCard.js.map +1 -0
  128. package/dist/src/components/graphics/HomeEmptyReservation.d.ts +7 -0
  129. package/dist/src/components/graphics/HomeEmptyReservation.js +136 -0
  130. package/dist/src/components/graphics/HomeEmptyReservation.js.map +1 -0
  131. package/dist/src/components/iconComponents/CreditCardOff.d.ts +6 -0
  132. package/dist/src/components/iconComponents/CreditCardOff.js +16 -0
  133. package/dist/src/components/iconComponents/CreditCardOff.js.map +1 -0
  134. package/dist/src/components/members/EditMyProfile.js +19 -21
  135. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  136. package/dist/src/components/navigation/Header.js +29 -9
  137. package/dist/src/components/navigation/Header.js.map +1 -1
  138. package/dist/src/components/navigation/StepSelector.js +2 -1
  139. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  140. package/dist/src/components/pages/Account/Card/MemberCardItem.js +5 -2
  141. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  142. package/dist/src/components/reservation/EmptyReservation.js +3 -3
  143. package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
  144. package/dist/src/components/reservation/ReservationItem.d.ts +4 -3
  145. package/dist/src/components/reservation/ReservationItem.js +45 -33
  146. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  147. package/dist/src/components/reservation/ReservationList.d.ts +2 -2
  148. package/dist/src/components/reservation/ReservationList.js +1 -1
  149. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  150. package/dist/src/components/steps/DaysSelectedInformer.js +15 -10
  151. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  152. package/dist/src/components/steps/addons/AddonCard.js +10 -12
  153. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  154. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  155. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +26 -7
  156. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  157. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.d.ts +1 -2
  158. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +36 -44
  159. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  160. package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +7 -0
  161. package/dist/src/components/steps/confirmation/PaymentInformation.js +119 -0
  162. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -0
  163. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +12 -10
  164. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  165. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +43 -80
  166. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  167. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +7 -5
  168. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  169. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +10 -12
  170. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  171. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +8 -2
  172. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  173. package/dist/src/components/steps/date/PeoplePicker.js +9 -9
  174. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  175. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  176. package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +1 -1
  177. package/dist/src/components/steps/date/StepOneNextStepButton.js +2 -4
  178. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  179. package/dist/src/components/steps/hotel/HotelCard.js +5 -11
  180. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  181. package/dist/src/components/steps/hotel/HotelCardModal.js +5 -6
  182. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  183. package/dist/src/components/steps/hotel/HotelSearchParameters.js +8 -8
  184. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  185. package/dist/src/components/steps/room/AvailableUpgradesModal.js +8 -9
  186. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  187. package/dist/src/components/steps/room/InactivityWindow.js +3 -5
  188. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  189. package/dist/src/components/steps/room/LargeRoomCard.js +5 -4
  190. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  191. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +42 -40
  192. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  193. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +7 -9
  194. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  195. package/dist/src/components/steps/room/RatesNotFound.js +6 -3
  196. package/dist/src/components/steps/room/RatesNotFound.js.map +1 -1
  197. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +3 -3
  198. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  199. package/dist/src/components/steps/room/StepRoomNextStepButton.d.ts +2 -1
  200. package/dist/src/components/steps/room/StepRoomNextStepButton.js +3 -3
  201. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  202. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +2 -6
  203. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  204. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +16 -18
  205. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  206. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +2 -2
  207. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  208. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +6 -3
  209. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  210. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +3 -1
  211. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  212. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +7 -8
  213. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  214. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +4 -6
  215. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  216. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +4 -5
  217. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  218. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +7 -5
  219. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  220. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +4 -1
  221. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  222. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +5 -2
  223. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  224. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +11 -10
  225. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  226. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +1 -1
  227. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  228. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +7 -8
  229. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  230. package/dist/src/components/summary/BEMobileSummaryModal.js +1 -1
  231. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  232. package/dist/src/components/summary/BESummaryPerkBlock.js +4 -1
  233. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  234. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +5 -10
  235. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  236. package/dist/src/components/summary/BESummaryRoomRow.js +4 -6
  237. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  238. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +5 -1
  239. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  240. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
  241. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  242. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +36 -13
  243. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  244. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +26 -2
  245. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  246. package/dist/src/contexts/ConfirmationFormContext.d.ts +0 -2
  247. package/dist/src/contexts/ConfirmationFormContext.js +0 -3
  248. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  249. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +13 -8
  250. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  251. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +1 -6
  252. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +24 -18
  253. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  254. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  255. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  256. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +10 -6
  257. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  258. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +76 -26
  259. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  260. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +8 -5
  261. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.js.map +1 -1
  262. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +35 -4
  263. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  264. package/dist/src/engines/BaseEngine.d.ts +2 -1
  265. package/dist/src/engines/BaseEngine.js +1 -1
  266. package/dist/src/engines/BaseEngine.js.map +1 -1
  267. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  268. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +24 -25
  269. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  270. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.d.ts +22 -0
  271. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +33 -0
  272. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -0
  273. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +6 -0
  274. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +116 -0
  275. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -0
  276. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +11 -10
  277. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  278. package/dist/src/errors/GetAvailabilityError.d.ts +2 -1
  279. package/dist/src/errors/GetAvailabilityError.js +10 -3
  280. package/dist/src/errors/GetAvailabilityError.js.map +1 -1
  281. package/dist/src/hooks/HistoryConsistentPush.d.ts +1 -0
  282. package/dist/src/hooks/HistoryConsistentPush.js +12 -0
  283. package/dist/src/hooks/HistoryConsistentPush.js.map +1 -0
  284. package/dist/src/hooks/LoggedInUserHook.d.ts +3 -3
  285. package/dist/src/hooks/Query.js +2 -6
  286. package/dist/src/hooks/Query.js.map +1 -1
  287. package/dist/src/hooks/UpdateQueryParameters.d.ts +1 -0
  288. package/dist/src/hooks/UpdateQueryParameters.js +16 -0
  289. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -0
  290. package/dist/src/hooks/VGSHooks.d.ts +11 -1
  291. package/dist/src/hooks/VGSHooks.js +26 -11
  292. package/dist/src/hooks/VGSHooks.js.map +1 -1
  293. package/dist/src/index.d.ts +2 -3
  294. package/dist/src/index.js +2 -0
  295. package/dist/src/index.js.map +1 -1
  296. package/dist/src/mockApi/HotelAPI.d.ts +1 -1
  297. package/dist/src/mockApi/HotelAPI.js.map +1 -1
  298. package/dist/src/models/Api/HotelDTO.d.ts +11 -3
  299. package/dist/src/models/Api/HotelDTO.js +17 -8
  300. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  301. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  302. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  303. package/dist/src/models/Api/ReservationsDTO.d.ts +2 -0
  304. package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
  305. package/dist/src/models/AppQueryParameters.d.ts +14 -0
  306. package/dist/src/models/AppQueryParameters.js +19 -0
  307. package/dist/src/models/AppQueryParameters.js.map +1 -0
  308. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +2 -2
  309. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  310. package/dist/src/models/Client/Hotel/ColorProfile.d.ts +3 -0
  311. package/dist/src/models/Client/Hotel/ColorProfile.js.map +1 -1
  312. package/dist/src/models/Client/Hotel/Company.d.ts +2 -2
  313. package/dist/src/models/Client/Hotel/Company.js.map +1 -1
  314. package/dist/src/models/Client/Hotel/Hotel.d.ts +15 -5
  315. package/dist/src/models/Client/Hotel/Hotel.js +3 -1
  316. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  317. package/dist/src/models/Confirmation.d.ts +1 -1
  318. package/dist/src/models/Confirmation.js.map +1 -1
  319. package/dist/src/models/Room/Filters/Filter.d.ts +2 -1
  320. package/dist/src/models/Room/Filters/Filter.js.map +1 -1
  321. package/dist/src/models/Room/Filters/RateTypeFilter.d.ts +2 -1
  322. package/dist/src/models/Room/Filters/RateTypeFilter.js +3 -2
  323. package/dist/src/models/Room/Filters/RateTypeFilter.js.map +1 -1
  324. package/dist/src/models/Room/Filters/RoomTypeFilter.d.ts +2 -1
  325. package/dist/src/models/Room/Filters/RoomTypeFilter.js +3 -2
  326. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  327. package/dist/src/pages/account/AccountHome/AccountHomePage.js +9 -10
  328. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  329. package/dist/src/pages/account/AccountRouter.js +7 -9
  330. package/dist/src/pages/account/AccountRouter.js.map +1 -1
  331. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +19 -32
  332. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  333. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +9 -7
  334. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  335. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +25 -38
  336. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  337. package/dist/src/pages/account/Help/AccountHelpPage.js +16 -25
  338. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  339. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +68 -52
  340. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  341. package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
  342. package/dist/src/pages/findReservation/FindReservation.js +40 -23
  343. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  344. package/dist/src/pages/findReservation/ReservationRow.js +10 -9
  345. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  346. package/dist/src/pages/findReservation/ReservationRowModal.js +3 -3
  347. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  348. package/dist/src/pages/hotel/HotelInfo.js +6 -6
  349. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  350. package/dist/src/pages/steps/Step.d.ts +2 -2
  351. package/dist/src/pages/steps/Step.js.map +1 -1
  352. package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +2 -2
  353. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  354. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.d.ts +2 -2
  355. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  356. package/dist/src/pages/steps/StepDate/StepDate.d.ts +2 -2
  357. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  358. package/dist/src/pages/steps/StepDate/StepDateComponent.js +1 -1
  359. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  360. package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +2 -2
  361. package/dist/src/pages/steps/StepHotel/StepHotel.js.map +1 -1
  362. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +10 -7
  363. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  364. package/dist/src/pages/steps/StepRoom/StepRoom.d.ts +2 -2
  365. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  366. package/dist/src/pages/steps/StepThanks/StepThanks.d.ts +2 -2
  367. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  368. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +5 -0
  369. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  370. package/dist/src/providers/FeatureProvider.js +2 -0
  371. package/dist/src/providers/FeatureProvider.js.map +1 -1
  372. package/dist/src/providers/RoomstayThemeEngine.d.ts +3 -3
  373. package/dist/src/providers/RoomstayThemeEngine.js +4 -18
  374. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  375. package/dist/src/providers/feature/ModifyBookingFeature.d.ts +6 -0
  376. package/dist/src/providers/feature/ModifyBookingFeature.js +10 -0
  377. package/dist/src/providers/feature/ModifyBookingFeature.js.map +1 -0
  378. package/dist/src/stories/EventCarousel.stories.d.ts +6 -0
  379. package/dist/src/stories/EventCarousel.stories.js +236 -0
  380. package/dist/src/stories/EventCarousel.stories.js.map +1 -0
  381. package/dist/src/stories/RadioButton.stories.d.ts +3 -3
  382. package/dist/src/stories/RadioButtonGroup.stories.d.ts +4 -1
  383. package/dist/src/stories/RadioButtonGroup.stories.js +73 -1
  384. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  385. package/dist/src/translations/Translation.d.ts +196 -8
  386. package/dist/src/translations/Translation.js +198 -10
  387. package/dist/src/translations/Translation.js.map +1 -1
  388. package/dist/src/translations/languages/en-gb.js +198 -10
  389. package/dist/src/translations/languages/en-gb.js.map +1 -1
  390. package/dist/src/util/Color.d.ts +3 -0
  391. package/dist/src/util/Color.js +21 -1
  392. package/dist/src/util/Color.js.map +1 -1
  393. package/dist/src/util/CurrencyHelper.d.ts +11 -3
  394. package/dist/src/util/CurrencyHelper.js +306 -5
  395. package/dist/src/util/CurrencyHelper.js.map +1 -1
  396. package/dist/src/util/EventsHelper.d.ts +11 -0
  397. package/dist/src/util/EventsHelper.js +43 -0
  398. package/dist/src/util/EventsHelper.js.map +1 -0
  399. package/dist/src/util/StringHelper.d.ts +2 -2
  400. package/dist/src/util/StringHelper.js +5 -4
  401. package/dist/src/util/StringHelper.js.map +1 -1
  402. package/dist/src/util/TextAlignment.d.ts +2 -1
  403. package/dist/src/util/TextAlignment.js +1 -0
  404. package/dist/src/util/TextAlignment.js.map +1 -1
  405. package/dist/src/util/Validation.d.ts +17 -13
  406. package/dist/src/util/Validation.js +34 -18
  407. package/dist/src/util/Validation.js.map +1 -1
  408. package/dist/test.bundle.js +1 -2
  409. package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +1 -0
  410. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +41 -0
  411. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +1 -0
  412. package/dist/tests/jest/events/EventManager.test.d.ts +1 -0
  413. package/dist/tests/jest/events/EventManager.test.js +101 -0
  414. package/dist/tests/jest/events/EventManager.test.js.map +1 -0
  415. package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +1 -0
  416. package/dist/tests/jest/helpers/ObjectHelper.test.js +72 -0
  417. package/dist/tests/jest/helpers/ObjectHelper.test.js.map +1 -0
  418. package/dist/tests/jest/models/RoomRate.test.d.ts +1 -0
  419. package/dist/tests/jest/models/RoomRate.test.js +133 -0
  420. package/dist/tests/jest/models/RoomRate.test.js.map +1 -0
  421. package/dist/tests/jest/providers/LanguageProvider.test.d.ts +1 -0
  422. package/dist/tests/jest/providers/LanguageProvider.test.js +32 -0
  423. package/dist/tests/jest/providers/LanguageProvider.test.js.map +1 -0
  424. package/dist/tests/jest/providers/SessionProvider.test.d.ts +1 -0
  425. package/dist/tests/jest/providers/SessionProvider.test.js +230 -0
  426. package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -0
  427. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +1 -0
  428. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +126 -0
  429. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -0
  430. package/dist/tests/jest/reducers/BasketReducer.test.d.ts +1 -0
  431. package/dist/tests/jest/reducers/BasketReducer.test.js +103 -0
  432. package/dist/tests/jest/reducers/BasketReducer.test.js.map +1 -0
  433. package/dist/tests/offline/RoomstayBestRateAlert.d.ts +1 -0
  434. package/dist/tests/offline/RoomstayBestRateAlert.js +48 -0
  435. package/dist/tests/offline/RoomstayBestRateAlert.js.map +1 -0
  436. package/dist/tests/offline/entry/RSCompany.js +7 -2
  437. package/dist/tests/offline/entry/RSCompany.js.map +1 -1
  438. package/dist/tests/offline/entry/ReactWrapper.d.ts +1 -0
  439. package/dist/tests/offline/entry/ReactWrapper.js +140 -0
  440. package/dist/tests/offline/entry/ReactWrapper.js.map +1 -0
  441. package/dist/tests/offline/entry/allEngines.d.ts +1 -0
  442. package/dist/tests/offline/entry/allEngines.js +50 -0
  443. package/dist/tests/offline/entry/allEngines.js.map +1 -0
  444. package/dist/tests/offline/entry/components/TestPicker.d.ts +1 -0
  445. package/dist/tests/offline/entry/components/TestPicker.js +214 -0
  446. package/dist/tests/offline/entry/components/TestPicker.js.map +1 -0
  447. package/dist/tests/offline/entry/context/EngineContext.d.ts +9 -0
  448. package/dist/tests/offline/entry/context/EngineContext.js +37 -0
  449. package/dist/tests/offline/entry/context/EngineContext.js.map +1 -0
  450. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.d.ts +1 -0
  451. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js +68 -0
  452. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js.map +1 -0
  453. package/dist/tests/setupTests.d.ts +0 -0
  454. package/dist/tests/setupTests.js +12 -0
  455. package/dist/tests/setupTests.js.map +1 -0
  456. package/dist/vendors.bundle.js +1 -1
  457. package/package.json +3 -3
  458. package/dist/14.bundle.js +0 -1
  459. package/dist/559.bundle.js +0 -1
  460. package/dist/848.bundle.js +0 -1
  461. package/dist/962.bundle.js +0 -1
  462. package/dist/main.bundle.js.LICENSE.txt +0 -5
  463. package/dist/src/components/temp/Login.d.ts +0 -2
  464. package/dist/src/components/temp/Login.js +0 -79
  465. package/dist/src/components/temp/Login.js.map +0 -1
  466. package/dist/test.bundle.js.LICENSE.txt +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"RoomBuilderProgressRow.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport BasketRow from '@/models/BasketRow';\nimport { useRef, useState, useContext, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StringHelper from '@/util/StringHelper';\nimport { Color } from '@/util/Color';\nimport { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport ScreenSize from '@/util/ScreenSize';\nimport dayjs from 'dayjs';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport PromoCodeInput from '@/components/generic/PromoCodeInput';\nimport NumberOfChildrenPicker from '@/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker';\nimport NumberOfAdultsPicker from '@/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\n\nexport interface RoomBuilderProgressRowProps {\n row: BasketRow;\n number?: number;\n}\n\nexport default function RoomBuilderProgressRow(props: RoomBuilderProgressRowProps) {\n const context = useContext(BasketContext);\n const engineContext = useContext(BookingEngineContext);\n const { t } = useTranslation();\n\n const [isEditing, setIsEditing] = useState(false);\n\n const { row } = props;\n\n const isCurrent = context.selectedBasketRow && context.selectedBasketRow.getID() === row.getID();\n const classes = classNames('room-builder-progress--item', {\n '--current': isCurrent,\n '--complete': row.isValid(),\n });\n const [promoCode, setPromoCode] = useState(row.getPromoCode());\n const thisElement = useRef<HTMLDivElement | null>(null);\n\n const [isPromoModalOpen, setIsPromoModalOpen] = useState(false);\n\n useEffect(() => {\n if (isEditing && !isCurrent) {\n setIsEditing(false);\n }\n }, [context.selectBasketRow]);\n\n const updatePeopleValues = ({ adults, children, updatedPromoCode }: { adults?: number; children?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n context.updateBasketRow(row);\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n context.updateBasketRow(row);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (context.selectedBasketRow) {\n context.selectedBasketRow.setPromoCode(code);\n context.updateBasketRow(context.selectedBasketRow);\n\n if (code) {\n setIsPromoModalOpen(false);\n }\n }\n };\n\n const isRemovable = context.currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n context.removeBasketRow(row);\n };\n const removeButton = (\n <Tooltip title={isRemovable ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}>\n <div className=\"room-builder-progress--remove\">\n <BEButton isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!isRemovable} onClick={removeRoomOnClick} />\n </div>\n </Tooltip>\n );\n\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n const showEditSection = isLargerThanLarge || isCurrent;\n\n const roomLabel = context.currentBasketRows.length !== 1 ? (props.number as number) + 1 : '';\n\n let promoCodeTooltip = '';\n\n if (row.getPromoCodeStatus() === 'new') {\n promoCodeTooltip = row.getPromoCode() ? 'Promo Code is being checked... please wait.' : 'Set a Promo Code for a possible offer!';\n } else {\n if (row.getPromoCodeStatus() === 'valid') {\n promoCodeTooltip = 'Successful promo code entered';\n } else {\n promoCodeTooltip = 'Error code not valid';\n }\n }\n const openPromoModalOnClick = () => {\n setIsPromoModalOpen(true);\n };\n const setPromoCodeOnClose = () => {\n setPromoCode(row.getPromoCode());\n setIsPromoModalOpen(false);\n };\n const cancelPromoPopupOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Promo Popup', InteractionType.BUTTON, InteractionStep.ROOMS);\n setPromoCode(row.getPromoCode());\n setIsPromoModalOpen(false);\n };\n const saveRoomChangesOnClick = () => {\n DataLayer.instance.sendInteraction('Save Room Changes', InteractionType.BUTTON, InteractionStep.ROOMS);\n context.selectBasketRow(null);\n setIsEditing(false);\n };\n const cancelRoomChangesOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n context.selectBasketRow(null);\n setIsEditing(false);\n };\n const editRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n context.selectBasketRow(row);\n setIsEditing(true);\n };\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n return (\n <div className={classes}>\n {isCurrent || !row.isValid() ? (\n <div className=\"u-flex w-100\">\n <div className=\"u-flex flex-wrap flex-xl-nowrap flex-row u-w-100@xl- align-items-center\">\n <div>\n {row.isValid() ? (\n <Text>\n <strong className=\"u-nowrap\">\n {t(Translation.Step.Room.EditingRoom)} {roomLabel}\n </strong>\n </Text>\n ) : (\n <Text>\n <strong className=\"u-nowrap\">\n {t(Translation.Step.Room.SelectRoom)} {roomLabel}\n </strong>\n </Text>\n )}\n </div>\n {showEditSection ? (\n <>\n {!isLargerThanLarge && (\n <div className={'w-100 d-flex' + (showEditSection ? ' u-marg-bottom@xl-' : '')}>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n Choose room below\n </Text>\n </div>\n )}\n <Tooltip title=\"Update number of adults\" wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfAdultsPicker row={row} onChange={updateNumberOfAdultsOnChange} />\n </div>\n </Tooltip>\n <Tooltip title=\"Update number of children\" wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfChildrenPicker row={row} onChange={updateNumberOfChildrenOnChange} />\n </div>\n </Tooltip>\n\n <>\n <div className=\"room-builder-progress--value\">\n <FloatingDatePicker\n startDate={row.getStartDate()}\n selectedDateChanged={updateDateValues}\n className=\"u-w-100@xl- d-flex align-items-center justify-content-center\"\n isAboveNav\n >\n <Tooltip title=\"Select Arrival and departure dates by clicking here\">\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n <Icon icon={IconType.ArrowRight2} />\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n\n <Tooltip title={promoCodeTooltip} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-cursor-pointer\" ref={thisElement} onClick={openPromoModalOnClick}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl-\">\n <Text className=\"u-pad-right--light\" type={TextType.Body} color={row.getPromoCode() ? row.getPromoCodeColour() : Color.Navy}>\n {row.getPromoCode() ? row.getPromoCode() : 'Promo Code'}\n </Text>\n <Icon icon={IconType.Dropdown} color={Color.DarkGrey} />\n </div>\n </div>\n </Tooltip>\n </>\n\n <Overlay open={isPromoModalOpen} followElement={thisElement.current} onClose={setPromoCodeOnClose}>\n <div className=\"u-pad--heavy\">\n <div>\n <PromoCodeInput\n value={context.selectedBasketRow?.getPromoCode()}\n onChange={changePromoCode}\n valid={\n context.selectedBasketRow?.getPromoCodeStatus() !== 'new'\n ? context.selectedBasketRow?.getPromoCodeStatus() === 'valid'\n : undefined\n }\n />\n </div>\n\n <div className=\"u-flex justify-content-end align-items-center u-marg-top\">\n <BEButton isText size=\"small\" onClick={cancelPromoPopupOnClick}>\n Cancel\n </BEButton>\n </div>\n </div>\n </Overlay>\n {!isLargerThanLarge && row.isValid() && (\n <BEButton wide primary filled onClick={saveRoomChangesOnClick}>\n Save\n </BEButton>\n )}\n </>\n ) : (\n <div className=\"w-100\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Step.Room.NextRoom)}\n </Text>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n {row.isValid() && (\n <div className=\"u-none@xl-\">\n <Tooltip title=\"Cancel changes\">\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={cancelRoomChangesOnClick}>\n {t(Translation.Misc.Cancel).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n )}\n {removeButton}\n </div>\n </div>\n ) : (\n <div className=\"u-flex w-100\">\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {row.getPromoCode()}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <Tooltip title=\"Edit this room\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <BEButton isText size=\"tiny\" onClick={editRoomOnClick}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n {removeButton}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"RoomBuilderProgressRow.js","sourceRoot":"/","sources":["src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport BasketRow from '@/models/BasketRow';\nimport { useRef, useState, useContext, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport BEButton from '@/components/generic/BEButton';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport StringHelper from '@/util/StringHelper';\nimport { Color } from '@/util/Color';\nimport { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport FloatingDatePicker from '@/components/generic/date/FloatingDatePicker';\nimport ScreenSize from '@/util/ScreenSize';\nimport dayjs from 'dayjs';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport PromoCodeInput from '@/components/generic/PromoCodeInput';\nimport NumberOfChildrenPicker from '@/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker';\nimport NumberOfAdultsPicker from '@/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker';\nimport { Overlay } from '@/components/generic/Overlay/Overlay';\n\nexport interface RoomBuilderProgressRowProps {\n row: BasketRow;\n number?: number;\n}\n\nexport default function RoomBuilderProgressRow(props: RoomBuilderProgressRowProps) {\n const context = useContext(BasketContext);\n const engineContext = useContext(BookingEngineContext);\n const { t } = useTranslation();\n\n const [isEditing, setIsEditing] = useState(false);\n\n const { row } = props;\n\n const isCurrent = context.selectedBasketRow && context.selectedBasketRow.getID() === row.getID();\n const classes = classNames('room-builder-progress--item', {\n '--current': isCurrent,\n '--complete': row.isValid(),\n });\n const thisElement = useRef<HTMLDivElement | null>(null);\n\n const [isPromoModalOpen, setIsPromoModalOpen] = useState(false);\n\n useEffect(() => {\n if (isEditing && !isCurrent) {\n setIsEditing(false);\n }\n }, [context.selectBasketRow]);\n\n const updatePeopleValues = ({ adults, children, updatedPromoCode }: { adults?: number; children?: number; updatedPromoCode?: string }) => {\n if (adults && adults !== row.getAdults()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setAdults(adults);\n }\n\n if ((children || children === 0) && children !== row.getChildren()) {\n DataLayer.instance.sendInteraction('Guests', InteractionType.NUMBER_INPUT, InteractionStep.ROOMS);\n row.setChildren(children);\n }\n\n if ((updatedPromoCode || updatedPromoCode === '') && updatedPromoCode !== row.getPromoCode()) {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n row.setPromoCode(updatedPromoCode);\n }\n\n context.updateBasketRow(row);\n };\n\n const updateDateValues = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {\n if (startDate) {\n row.setStartDate(startDate);\n }\n\n if (endDate) {\n row.setEndDate(endDate);\n }\n\n context.updateBasketRow(row);\n };\n\n const updatePromoCode = (code: string) => {\n DataLayer.instance.sendInteraction('Promo Code', InteractionType.FORM_FIELD, InteractionStep.ROOMS);\n\n if (context.selectedBasketRow) {\n context.selectedBasketRow.setPromoCode(code);\n context.updateBasketRow(context.selectedBasketRow);\n if (code) {\n setIsPromoModalOpen(false);\n }\n }\n };\n\n const isRemovable = context.currentBasketRows.length > 1;\n const removeRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Remove Room', InteractionType.BUTTON, InteractionStep.ROOMS);\n context.removeBasketRow(row);\n };\n const removeButton = (\n <div className=\"room-builder-progress--remove\">\n <Tooltip title={isRemovable ? 'Remove this room' : 'Cannot remove this room as at least one must be selected.'}>\n <BEButton isText icon={IconType.Close} iconPosition=\"right\" stopIconAnimation disabled={!isRemovable} onClick={removeRoomOnClick} />\n </Tooltip>\n </div>\n );\n\n const isLargerThanLarge = engineContext.screenSize > ScreenSize.ExtraLarge;\n const showEditSection = isLargerThanLarge || isCurrent;\n\n const roomLabel = context.currentBasketRows.length !== 1 ? (props.number as number) + 1 : '';\n\n let promoCodeTooltip = '';\n\n if (row.getPromoCodeStatus() === 'new') {\n promoCodeTooltip = row.getPromoCode() ? t(Translation.Step.Date.PromoCodeTooltip.Checking) : t(Translation.Step.Date.PromoCodeTooltip.NoValue);\n } else {\n if (row.getPromoCodeStatus() === 'valid') {\n promoCodeTooltip = t(Translation.Step.Date.PromoCodeTooltip.Valid);\n } else {\n promoCodeTooltip = t(Translation.Step.Date.PromoCodeTooltip.Invalid);\n }\n }\n const openPromoModalOnClick = () => {\n setIsPromoModalOpen(true);\n };\n const setPromoCodeOnClose = () => {\n setIsPromoModalOpen(false);\n };\n const cancelPromoPopupOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Promo Popup', InteractionType.BUTTON, InteractionStep.ROOMS);\n setIsPromoModalOpen(false);\n };\n const saveRoomChangesOnClick = () => {\n DataLayer.instance.sendInteraction('Save Room Changes', InteractionType.BUTTON, InteractionStep.ROOMS);\n context.selectBasketRow(null);\n setIsEditing(false);\n };\n const cancelRoomChangesOnClick = () => {\n DataLayer.instance.sendInteraction('Cancel Room Changes', InteractionType.LINK, InteractionStep.ROOMS);\n context.selectBasketRow(null);\n setIsEditing(false);\n };\n const editRoomOnClick = () => {\n DataLayer.instance.sendInteraction('Edit Room', InteractionType.LINK, InteractionStep.ROOMS);\n context.selectBasketRow(row);\n setIsEditing(true);\n };\n const changePromoCode = (val: any) => {\n updatePromoCode(val);\n };\n const updateNumberOfAdultsOnChange = (value: string) => {\n updatePeopleValues({ adults: +value });\n };\n const updateNumberOfChildrenOnChange = (value: string) => {\n updatePeopleValues({ children: +value });\n };\n return (\n <div className={classes}>\n {isCurrent || !row.isValid() ? (\n <div className=\"u-flex w-100\">\n <div className=\"u-flex flex-wrap flex-xl-nowrap flex-row u-w-100@xl- align-items-center\">\n <div>\n {row.isValid() ? (\n <Text>\n <strong className=\"u-nowrap\">\n {t(Translation.Step.Room.EditingRoom)} {roomLabel}\n </strong>\n </Text>\n ) : (\n <Text>\n <strong className=\"u-nowrap\">\n {t(Translation.Step.Room.SelectRoom)} {roomLabel}\n </strong>\n </Text>\n )}\n </div>\n {showEditSection ? (\n <>\n {!isLargerThanLarge && (\n <div className={'w-100 d-flex' + (showEditSection ? ' u-marg-bottom@xl-' : '')}>\n <Text type={TextType.Small} color={Color.DarkGrey} inline>\n {t(Translation.Step.Room.ChooseRoomBelow)}\n </Text>\n </div>\n )}\n <Tooltip title={t(Translation.Step.Date.UpdateAdults)} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfAdultsPicker row={row} onChange={updateNumberOfAdultsOnChange} />\n </div>\n </Tooltip>\n <Tooltip title={t(Translation.Step.Date.UpdateChildren)} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-flex-justify-center u-flex\">\n <NumberOfChildrenPicker row={row} onChange={updateNumberOfChildrenOnChange} />\n </div>\n </Tooltip>\n\n <>\n <div className=\"room-builder-progress--value\">\n <FloatingDatePicker\n startDate={row.getStartDate()}\n selectedDateChanged={updateDateValues}\n className=\"u-w-100@xl- d-flex align-items-center justify-content-center\"\n isAboveNav\n >\n <Tooltip title={t(Translation.Step.Date.SelectArrivalAndDepartureDatesByClickingHere)}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl- u-cursor-pointer\">\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getArrivalDate()}\n </Text>\n <Icon icon={IconType.ArrowRight2} />\n <Text color={Color.Accent} bold className=\"u-nowrap\">\n {row.getDepartureDate()}\n </Text>\n </div>\n </Tooltip>\n </FloatingDatePicker>\n </div>\n\n <Tooltip title={promoCodeTooltip} wrapperClasses=\"u-w-100@xl- d-flex\">\n <div className=\"room-builder-progress--value u-cursor-pointer\" ref={thisElement} onClick={openPromoModalOnClick}>\n <div className=\"u-flex align-items-center justify-content-center u-w-100@xl-\">\n <Text className=\"u-pad-right--light\" type={TextType.Body} color={row.getPromoCode() ? row.getPromoCodeColour() : Color.Navy}>\n {row.getPromoCode() ? row.getPromoCode() : t(Translation.Step.Date.PromoCode)}\n </Text>\n <Icon icon={IconType.Dropdown} color={Color.DarkGrey} />\n </div>\n </div>\n </Tooltip>\n </>\n\n <Overlay open={isPromoModalOpen} followElement={thisElement.current} onClose={setPromoCodeOnClose}>\n <div className=\"u-pad--heavy\">\n <div>\n <PromoCodeInput\n value={context.selectedBasketRow?.getPromoCode()}\n onChange={changePromoCode}\n valid={\n context.selectedBasketRow?.getPromoCodeStatus() !== 'new'\n ? context.selectedBasketRow?.getPromoCodeStatus() === 'valid'\n : undefined\n }\n />\n </div>\n\n <div className=\"u-flex justify-content-end align-items-center u-marg-top\">\n <BEButton isText size=\"small\" onClick={cancelPromoPopupOnClick}>\n {t(Translation.Misc.Cancel)}\n </BEButton>\n </div>\n </div>\n </Overlay>\n {!isLargerThanLarge && row.isValid() && (\n <BEButton wide primary filled onClick={saveRoomChangesOnClick}>\n {t(Translation.Misc.Save)}\n </BEButton>\n )}\n </>\n ) : (\n <div className=\"w-100\">\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {t(Translation.Step.Room.NextRoom)}\n </Text>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n {row.isValid() && (\n <div className=\"u-none@xl-\">\n <Tooltip title=\"Cancel changes\">\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={cancelRoomChangesOnClick}>\n {t(Translation.Misc.Cancel).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n )}\n {removeButton}\n </div>\n </div>\n ) : (\n <div className=\"u-flex w-100\">\n <div className=\"u-flex justify-content-start\">\n <div className=\"u-flex flex-column\">\n <span>\n <Text inline={isLargerThanLarge}>\n <strong>{row.getRoom().name}</strong>\n </Text>\n <Text inline={isLargerThanLarge} type={isLargerThanLarge ? TextType.Body : TextType.Small}>\n <span className=\"u-marg-left--light@xl\">\n {StringHelper.pluralWithDictAndCount(row.getAdults(), Translation.Step.Date.Adult, t)}\n ,&nbsp;\n {StringHelper.pluralWithDictAndCount(row.getChildren(), Translation.Step.Date.Child, t)}\n </span>\n </Text>\n </span>\n <Text type={TextType.Caption} color={Color.DarkGrey}>\n <strong>{row.getStayDateRange('ddd, MMM D, YYYY', ' -')}</strong>\n </Text>\n </div>\n {row.isPromoCodeValid() && (\n <div className=\"u-marg-left d-flex align-items-center\">\n <Pill type={PillType.Success} icon={IconType.Money}>\n {row.getPromoCode()}\n </Pill>\n </div>\n )}\n </div>\n <div className=\"u-flex align-items-center\">\n <div className=\"u-flex align-items-center room-builder-progress--edit\">\n <Tooltip title={t(Translation.Step.Room.EditThisRoom)}>\n <div className=\"u-flex align-items-center\">\n <BEButton isText size=\"tiny\" onClick={editRoomOnClick}>\n {t(Translation.Misc.Edit).toUpperCase()}\n </BEButton>\n </div>\n </Tooltip>\n </div>\n {removeButton}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -50,7 +50,7 @@ const FeaturedPromoFeature_1 = __importDefault(require("../../../../providers/fe
50
50
  const hooks_1 = require("../../../../hooks/index.js");
51
51
  const RoomRatePills_1 = __importDefault(require("./roomRates/RoomRatePills"));
52
52
  const ImageProvider_1 = require("../../../../providers/ImageProvider");
53
- const CurrencyProvider_1 = __importDefault(require("../../../../providers/CurrencyProvider"));
53
+ const currencyHelper = __importStar(require("../../../../util/CurrencyHelper"));
54
54
  function RoomDetails(props) {
55
55
  var _a;
56
56
  const [featuredRates, setFeaturedRates] = (0, react_1.useState)([]);
@@ -115,7 +115,7 @@ function RoomDetails(props) {
115
115
  };
116
116
  const lowestPrice = Math.round(room.getLowestPrice(false, true));
117
117
  const currencySize = context.screenSize > ScreenSize_1.default.Medium && lowestPrice.toLocaleString().length < 7 ? 'large' : 'normal';
118
- const convertCurrencyPrice = (value) => Math.round(CurrencyProvider_1.default.convertPrice(value, true, ccx.currentCurrency, hotel === null || hotel === void 0 ? void 0 : hotel.defaultCurrency));
118
+ const convertCurrencyPrice = (value) => Math.round(currencyHelper.convertPrice(value, true, ccx.currentCurrency, hotel === null || hotel === void 0 ? void 0 : hotel.defaultCurrency));
119
119
  return (react_1.default.createElement("div", { className: `room-details-container ${props.disableMarginBottom ? '' : 'u-marg-bottom'}` },
120
120
  react_1.default.createElement("div", { className: classes },
121
121
  react_1.default.createElement("div", { className: "room-details--image" },
@@ -1 +1 @@
1
- {"version":3,"file":"RoomDetails.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import Headline from '@/components/generic/Headline';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color, lightOrDark } from '@/util/Color';\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport React, { useContext, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport RoomRates from '@/components/steps/room/roomDetails/roomRates/RoomRates';\nimport RoomModal from '@/components/steps/room/RoomModal';\nimport Currency from '@/components/generic/Currency';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport ScreenSize from '@/util/ScreenSize';\nimport { Room } from '@/models/Room/Room';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport { RoomDetailsPerkBlock } from '@/components/steps/room/roomDetails/RoomDetailsPerkBlock';\nimport { RoomDetailsBedsBlock } from '@/components/steps/room/roomDetails/RoomDetailsBedsBlock';\nimport { RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport RoomRatePills from '@/components/steps/room/roomDetails/roomRates/RoomRatePills';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport CurrencyProvider from '@/providers/CurrencyProvider';\n\nexport interface RoomDetailsProps {\n room: Room;\n disableMarginBottom?: boolean;\n}\n\nexport default function RoomDetails(props: RoomDetailsProps) {\n const [featuredRates, setFeaturedRates] = useState<RoomRate[]>([]);\n const [standardRates, setStandardRates] = useState<RoomRate[]>([]);\n\n const [viewingRates, setViewingRates] = useState<boolean | number | null>(null);\n const [viewingDescription, setViewingDescription] = useState(false);\n\n const { t } = useTranslation();\n\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n\n const { room } = props;\n\n const classes = classNames('room-details', {\n ['+is-open']: viewingRates,\n });\n\n useEffect(() => {\n if (basketContext.selectedBasketRow?.getRoom() && basketContext.selectedBasketRow.getRoom().code === props.room.code) {\n setViewingRates(true);\n }\n\n DataLayer.instance.addRoomImpression(room);\n }, [basketContext.selectedBasketRow]);\n\n useEffect(() => {\n let nonPromoRates: RoomRate[] = [];\n const toSetFeaturedRate: RoomRate[] = [];\n\n if (FeaturedPromoFeature.isActive()) {\n for (const currentRate of room.getRates()) {\n if (currentRate.promoCode?.toLowerCase() === basketContext.selectedBasketRow?.getPromoCode()?.toLowerCase()) {\n toSetFeaturedRate.unshift(currentRate);\n } else {\n nonPromoRates.push(currentRate);\n }\n }\n\n if (toSetFeaturedRate.length > 0) {\n setViewingRates(true);\n setFeaturedRates(toSetFeaturedRate);\n }\n } else {\n nonPromoRates = room.getRates();\n }\n\n setStandardRates(nonPromoRates);\n }, [room.getRates()]);\n\n const perks = hotel?.perks?.slice(0, 5);\n\n const trimmedDescription = room.getShortDescription();\n\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const ratesOpen = viewingRates || (context.screenSize <= ScreenSize.Medium && viewingRates === null);\n const moreDetailsOnClick = () => {\n DataLayer.instance.sendInteraction('More Room Details', InteractionType.LINK, InteractionStep.ROOMS);\n setViewingDescription(true);\n };\n const sendRoomClickOnClick = () => {\n if (!ratesOpen) {\n DataLayer.instance.sendRoomClick(room, basketContext.startDate, basketContext.endDate);\n }\n setViewingRates(!ratesOpen);\n };\n const closeDescriptionOnClose = () => {\n setViewingDescription(false);\n };\n\n const lowestPrice = Math.round(room.getLowestPrice(false, true));\n const currencySize = context.screenSize > ScreenSize.Medium && lowestPrice.toLocaleString().length < 7 ? 'large' : 'normal';\n\n const convertCurrencyPrice = (value: number) => Math.round(CurrencyProvider.convertPrice(value, true, ccx.currentCurrency, hotel?.defaultCurrency as string));\n\n return (\n <div className={`room-details-container ${props.disableMarginBottom ? '' : 'u-marg-bottom'}`}>\n <div className={classes}>\n <div className=\"room-details--image\">\n <ImageGallerySlider images={props.room.getImages()} imageSize={ImageSize.Medium} />\n </div>\n <div className=\"room-details--content u-pad--heavy u-pad@l-\">\n <div className=\"u-marg-bottom\">\n {context.screenSize > ScreenSize.Large && (\n <>\n <div className=\"u-marg-bottom\">\n <RoomRatePills room={room} limit={2} />\n </div>\n </>\n )}\n <div className=\"room-details--content-title u-marg-bottom--light\">\n <Headline bold>{room.name}</Headline>\n </div>\n <RoomDetailsBedsBlock room={room} />\n <div className=\"room-details--content-description u-marg-bottom--light\">\n <Text color={Color.DarkGrey} type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: trimmedDescription?.replace(/<br(\\/|)>/g, '') || '' }} />\n </Text>\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col-md-6 u-flex u-marg-bottom@m- flex-column align-items-start\">\n <div className=\"room-details--content-perks u-marg-bottom@m-\">\n {isMobile && (\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} bold color={Color.Accent}>\n {t(Translation.Misc.Perks.AndYouGetAll)}\n </Text>\n </div>\n )}\n <RoomDetailsPerkBlock perks={perks as HotelPerk[]} />\n </div>\n <BEButton icon={IconType.ArrowRight2} isText primary size=\"tiny\" iconPosition=\"right\" onClick={moreDetailsOnClick}>\n {t(Translation.Step.Room.RoomInfo.MoreDetails)}\n </BEButton>\n </div>\n <div className=\"col-md-6 u-flex justify-content-end flex-column align-items-start align-items-md-end\">\n <Text type={TextType.Small} color={Color.Navy} inline>\n {t(Translation.Misc.From)}\n </Text>\n <div className=\"room-details--content-price flex-row align-items-end\">\n <Headline size={currencySize} bold>\n <Currency hideDecimals>{lowestPrice}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} inline>\n /{t(Translation.Misc.Night)}\n </Text>\n </div>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} color={Color.Grey} inline className=\"u-nowrap\">\n {room.getLowestPriceType() === RoomRatePriceInclusion.IncludingFeesAndTaxes\n ? t(Translation.Step.Room.RoomInfo.IncludesTaxes)\n : t(Translation.Step.Room.ExcludingTaxes)}\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex justify-content-end u-w-100@m-\">\n <BEButton\n name=\"ViewRatesNowButton\"\n primary\n primaryActive={!!ratesOpen}\n filled\n stopIconAnimation\n icon={ratesOpen ? IconType.ArrowUp2 : IconType.ArrowDown2}\n iconPosition=\"right\"\n onClick={sendRoomClickOnClick}\n wide={context.screenSize <= ScreenSize.Large}\n textColor={ratesOpen ? (lightOrDark(hotel?.colors.accent3.slice(1) as string) === 'light' ? Color.Navy : Color.White) : undefined}\n >\n {ratesOpen ? t(Translation.Step.Room.RoomInfo.CloseRates) : t(Translation.Step.Room.RoomInfo.ViewRates)}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n </div>\n <AutoAutoHeight open={!!ratesOpen}>\n <RoomRates roomCode={room.code as string} rates={standardRates} featuredRates={featuredRates} />\n </AutoAutoHeight>\n <RoomModal open={viewingDescription} room={props.room} rates={standardRates} featuredRates={featuredRates} onClose={closeDescriptionOnClose} />\n {room.getRates().map((rate) => {\n return (\n <script key={room.code + '-' + rate.code} type=\"application/ld+json\">\n {JSON.stringify({\n '@context': 'http://schema.org/',\n '@type': 'Offer',\n itemOffered: {\n '@type': 'HotelRoom',\n name: room.name,\n },\n name: rate.name,\n identifier: rate.code,\n priceSpecification: {\n '@type': 'UnitPriceSpecification',\n price: convertCurrencyPrice(rate.getAveragePrice()),\n priceCurrency: ccx.currentCurrency,\n unitText: 'Nightly',\n },\n })}\n </script>\n );\n })}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"RoomDetails.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetails.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6EAAqD;AACrD,kEAA2D;AAC3D,wCAAkD;AAClD,6EAAqD;AACrD,yDAA0D;AAC1D,+CAA+D;AAC/D,4DAAoC;AACpC,wGAAgF;AAChF,kFAA0D;AAC1D,6EAAqD;AACrD,oGAA4E;AAC5E,iDAA+C;AAC/C,0DAAuD;AACvD,mEAA2C;AAE3C,iFAAyD;AACzD,iDAAyF;AACzF,8DAA+E;AAC/E,mGAAgG;AAChG,mGAAgG;AAChG,qDAA0E;AAC1E,oGAA4E;AAC5E,2CAAkD;AAClD,gHAAwF;AACxF,6DAAsD;AAEtD,sEAAwD;AAOxD,SAAwB,WAAW,CAAC,KAAuB;;IACvD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAa,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAa,EAAE,CAAC,CAAC;IAEnE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAA0B,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAEpE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAA,kBAAU,EAAC,wBAAa,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,yBAAc,CAAC,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,cAAc,EAAE;QACvC,CAAC,UAAU,CAAC,EAAE,YAAY;KAC7B,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,IAAI,CAAA,MAAA,aAAa,CAAC,iBAAiB,0CAAE,OAAO,EAAE,KAAI,aAAa,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;YAClH,eAAe,CAAC,IAAI,CAAC,CAAC;SACzB;QAED,mBAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEtC,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,IAAI,aAAa,GAAe,EAAE,CAAC;QACnC,MAAM,iBAAiB,GAAe,EAAE,CAAC;QAEzC,IAAI,8BAAoB,CAAC,QAAQ,EAAE,EAAE;YACjC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACvC,IAAI,CAAA,MAAA,WAAW,CAAC,SAAS,0CAAE,WAAW,EAAE,OAAK,MAAA,MAAA,aAAa,CAAC,iBAAiB,0CAAE,YAAY,EAAE,0CAAE,WAAW,EAAE,CAAA,EAAE;oBACzG,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;iBAC1C;qBAAM;oBACH,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBACnC;aACJ;YAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtB,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;aACvC;SACJ;aAAM;YACH,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;SACnC;QAED,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEtB,MAAM,KAAK,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAExC,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAEtD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,oBAAU,CAAC,KAAK,CAAC;IAExD,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,IAAI,YAAY,KAAK,IAAI,CAAC,CAAC;IACrG,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC5B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,mBAAmB,EAAE,2BAAe,CAAC,IAAI,EAAE,2BAAe,CAAC,KAAK,CAAC,CAAC;QACrG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC;IACF,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,SAAS,EAAE;YACZ,mBAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;SAC1F;QACD,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC,CAAC;IACF,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACjC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE5H,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAyB,CAAC,CAAC,CAAC;IAE5J,OAAO,CACH,uCAAK,SAAS,EAAE,0BAA0B,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;QACxF,uCAAK,SAAS,EAAE,OAAO;YACnB,uCAAK,SAAS,EAAC,qBAAqB;gBAChC,8BAAC,4BAAkB,IAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,yBAAS,CAAC,MAAM,GAAI,CACjF;YACN,uCAAK,SAAS,EAAC,6CAA6C;gBACxD,uCAAK,SAAS,EAAC,eAAe;oBACzB,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,KAAK,IAAI,CACtC;wBACI,uCAAK,SAAS,EAAC,eAAe;4BAC1B,8BAAC,uBAAa,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAI,CACrC,CACP,CACN;oBACD,uCAAK,SAAS,EAAC,kDAAkD;wBAC7D,8BAAC,kBAAQ,IAAC,IAAI,UAAE,IAAI,CAAC,IAAI,CAAY,CACnC;oBACN,8BAAC,2CAAoB,IAAC,IAAI,EAAE,IAAI,GAAI;oBACpC,uCAAK,SAAS,EAAC,wDAAwD;wBACnE,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK;4BAC7C,wCAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,KAAI,EAAE,EAAE,GAAI,CAC/F,CACL,CACJ;gBAEN,uCAAK,SAAS,EAAC,KAAK;oBAChB,uCAAK,SAAS,EAAC,gEAAgE;wBAC3E,uCAAK,SAAS,EAAC,8CAA8C;4BACxD,QAAQ,IAAI,CACT,uCAAK,SAAS,EAAC,eAAe;gCAC1B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,IAAI,QAAC,KAAK,EAAE,aAAK,CAAC,MAAM,IAC/C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CACpC,CACL,CACT;4BACD,8BAAC,2CAAoB,IAAC,KAAK,EAAE,KAAoB,GAAI,CACnD;wBACN,8BAAC,kBAAQ,IAAC,IAAI,EAAE,eAAQ,CAAC,WAAW,EAAE,MAAM,QAAC,OAAO,QAAC,IAAI,EAAC,MAAM,EAAC,YAAY,EAAC,OAAO,EAAC,OAAO,EAAE,kBAAkB,IAC5G,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CACvC,CACT;oBACN,uCAAK,SAAS,EAAC,sFAAsF;wBACjG,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,MAAM,UAChD,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CACtB;wBACP,uCAAK,SAAS,EAAC,sDAAsD;4BACjE,8BAAC,kBAAQ,IAAC,IAAI,EAAE,YAAY,EAAE,IAAI;gCAC9B,8BAAC,kBAAQ,IAAC,YAAY,UAAE,WAAW,CAAY,CACxC;4BACX,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,MAAM;;gCAC7B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CACL;wBACN,uCAAK,SAAS,EAAC,eAAe;4BAC1B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,MAAM,QAAC,SAAS,EAAC,UAAU,IACrE,IAAI,CAAC,kBAAkB,EAAE,KAAK,iCAAsB,CAAC,qBAAqB;gCACvE,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gCACjD,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAC1C,CACL;wBACN,uCAAK,SAAS,EAAC,yDAAyD;4BACpE,8BAAC,kBAAQ,IACL,IAAI,EAAC,oBAAoB,EACzB,OAAO,QACP,aAAa,EAAE,CAAC,CAAC,SAAS,EAC1B,MAAM,QACN,iBAAiB,QACjB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,eAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAQ,CAAC,UAAU,EACzD,YAAY,EAAC,OAAO,EACpB,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,oBAAU,CAAC,KAAK,EAC5C,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,mBAAW,EAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,aAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAEhI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAChG,CACT,CACJ,CACJ,CACJ,CACJ;QACN,8BAAC,wBAAc,IAAC,IAAI,EAAE,CAAC,CAAC,SAAS;YAC7B,8BAAC,mBAAS,IAAC,QAAQ,EAAE,IAAI,CAAC,IAAc,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,GAAI,CACnF;QACjB,8BAAC,mBAAS,IAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB,GAAI;QAC9I,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,OAAO,CACH,0CAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAC,qBAAqB,IAC/D,IAAI,CAAC,SAAS,CAAC;gBACZ,UAAU,EAAE,oBAAoB;gBAChC,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE;oBACT,OAAO,EAAE,WAAW;oBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAClB;gBACD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,IAAI;gBACrB,kBAAkB,EAAE;oBAChB,OAAO,EAAE,wBAAwB;oBACjC,KAAK,EAAE,oBAAoB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;oBACnD,aAAa,EAAE,GAAG,CAAC,eAAe;oBAClC,QAAQ,EAAE,SAAS;iBACtB;aACJ,CAAC,CACG,CACZ,CAAC;QACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC;AA3LD,8BA2LC","sourcesContent":["import Headline from '@/components/generic/Headline';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color, lightOrDark } from '@/util/Color';\nimport BEButton from '@/components/generic/BEButton';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport React, { useContext, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport RoomRates from '@/components/steps/room/roomDetails/roomRates/RoomRates';\nimport RoomModal from '@/components/steps/room/RoomModal';\nimport Currency from '@/components/generic/Currency';\nimport ImageGallerySlider from '@/components/steps/room/ImageGallerySlider';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport ScreenSize from '@/util/ScreenSize';\nimport { Room } from '@/models/Room/Room';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport { BasketContext, BookingEngineContext, CompanyContext } from '@frontend/contexts';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport { RoomDetailsPerkBlock } from '@/components/steps/room/roomDetails/RoomDetailsPerkBlock';\nimport { RoomDetailsBedsBlock } from '@/components/steps/room/roomDetails/RoomDetailsBedsBlock';\nimport { RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport RoomRatePills from '@/components/steps/room/roomDetails/roomRates/RoomRatePills';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport { HotelPerk } from '@/models/Client/Hotel/HotelPerk';\nimport * as currencyHelper from '@/util/CurrencyHelper';\n\nexport interface RoomDetailsProps {\n room: Room;\n disableMarginBottom?: boolean;\n}\n\nexport default function RoomDetails(props: RoomDetailsProps) {\n const [featuredRates, setFeaturedRates] = useState<RoomRate[]>([]);\n const [standardRates, setStandardRates] = useState<RoomRate[]>([]);\n\n const [viewingRates, setViewingRates] = useState<boolean | number | null>(null);\n const [viewingDescription, setViewingDescription] = useState(false);\n\n const { t } = useTranslation();\n\n const context = useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n const { hotel } = useCurrentHotel();\n\n const { room } = props;\n\n const classes = classNames('room-details', {\n ['+is-open']: viewingRates,\n });\n\n useEffect(() => {\n if (basketContext.selectedBasketRow?.getRoom() && basketContext.selectedBasketRow.getRoom().code === props.room.code) {\n setViewingRates(true);\n }\n\n DataLayer.instance.addRoomImpression(room);\n }, [basketContext.selectedBasketRow]);\n\n useEffect(() => {\n let nonPromoRates: RoomRate[] = [];\n const toSetFeaturedRate: RoomRate[] = [];\n\n if (FeaturedPromoFeature.isActive()) {\n for (const currentRate of room.getRates()) {\n if (currentRate.promoCode?.toLowerCase() === basketContext.selectedBasketRow?.getPromoCode()?.toLowerCase()) {\n toSetFeaturedRate.unshift(currentRate);\n } else {\n nonPromoRates.push(currentRate);\n }\n }\n\n if (toSetFeaturedRate.length > 0) {\n setViewingRates(true);\n setFeaturedRates(toSetFeaturedRate);\n }\n } else {\n nonPromoRates = room.getRates();\n }\n\n setStandardRates(nonPromoRates);\n }, [room.getRates()]);\n\n const perks = hotel?.perks?.slice(0, 5);\n\n const trimmedDescription = room.getShortDescription();\n\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const ratesOpen = viewingRates || (context.screenSize <= ScreenSize.Medium && viewingRates === null);\n const moreDetailsOnClick = () => {\n DataLayer.instance.sendInteraction('More Room Details', InteractionType.LINK, InteractionStep.ROOMS);\n setViewingDescription(true);\n };\n const sendRoomClickOnClick = () => {\n if (!ratesOpen) {\n DataLayer.instance.sendRoomClick(room, basketContext.startDate, basketContext.endDate);\n }\n setViewingRates(!ratesOpen);\n };\n const closeDescriptionOnClose = () => {\n setViewingDescription(false);\n };\n\n const lowestPrice = Math.round(room.getLowestPrice(false, true));\n const currencySize = context.screenSize > ScreenSize.Medium && lowestPrice.toLocaleString().length < 7 ? 'large' : 'normal';\n\n const convertCurrencyPrice = (value: number) => Math.round(currencyHelper.convertPrice(value, true, ccx.currentCurrency, hotel?.defaultCurrency as string));\n\n return (\n <div className={`room-details-container ${props.disableMarginBottom ? '' : 'u-marg-bottom'}`}>\n <div className={classes}>\n <div className=\"room-details--image\">\n <ImageGallerySlider images={props.room.getImages()} imageSize={ImageSize.Medium} />\n </div>\n <div className=\"room-details--content u-pad--heavy u-pad@l-\">\n <div className=\"u-marg-bottom\">\n {context.screenSize > ScreenSize.Large && (\n <>\n <div className=\"u-marg-bottom\">\n <RoomRatePills room={room} limit={2} />\n </div>\n </>\n )}\n <div className=\"room-details--content-title u-marg-bottom--light\">\n <Headline bold>{room.name}</Headline>\n </div>\n <RoomDetailsBedsBlock room={room} />\n <div className=\"room-details--content-description u-marg-bottom--light\">\n <Text color={Color.DarkGrey} type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: trimmedDescription?.replace(/<br(\\/|)>/g, '') || '' }} />\n </Text>\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col-md-6 u-flex u-marg-bottom@m- flex-column align-items-start\">\n <div className=\"room-details--content-perks u-marg-bottom@m-\">\n {isMobile && (\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} bold color={Color.Accent}>\n {t(Translation.Misc.Perks.AndYouGetAll)}\n </Text>\n </div>\n )}\n <RoomDetailsPerkBlock perks={perks as HotelPerk[]} />\n </div>\n <BEButton icon={IconType.ArrowRight2} isText primary size=\"tiny\" iconPosition=\"right\" onClick={moreDetailsOnClick}>\n {t(Translation.Step.Room.RoomInfo.MoreDetails)}\n </BEButton>\n </div>\n <div className=\"col-md-6 u-flex justify-content-end flex-column align-items-start align-items-md-end\">\n <Text type={TextType.Small} color={Color.Navy} inline>\n {t(Translation.Misc.From)}\n </Text>\n <div className=\"room-details--content-price flex-row align-items-end\">\n <Headline size={currencySize} bold>\n <Currency hideDecimals>{lowestPrice}</Currency>\n </Headline>\n <Text color={Color.DarkGrey} inline>\n /{t(Translation.Misc.Night)}\n </Text>\n </div>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} color={Color.Grey} inline className=\"u-nowrap\">\n {room.getLowestPriceType() === RoomRatePriceInclusion.IncludingFeesAndTaxes\n ? t(Translation.Step.Room.RoomInfo.IncludesTaxes)\n : t(Translation.Step.Room.ExcludingTaxes)}\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex justify-content-end u-w-100@m-\">\n <BEButton\n name=\"ViewRatesNowButton\"\n primary\n primaryActive={!!ratesOpen}\n filled\n stopIconAnimation\n icon={ratesOpen ? IconType.ArrowUp2 : IconType.ArrowDown2}\n iconPosition=\"right\"\n onClick={sendRoomClickOnClick}\n wide={context.screenSize <= ScreenSize.Large}\n textColor={ratesOpen ? (lightOrDark(hotel?.colors.accent3.slice(1) as string) === 'light' ? Color.Navy : Color.White) : undefined}\n >\n {ratesOpen ? t(Translation.Step.Room.RoomInfo.CloseRates) : t(Translation.Step.Room.RoomInfo.ViewRates)}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n </div>\n <AutoAutoHeight open={!!ratesOpen}>\n <RoomRates roomCode={room.code as string} rates={standardRates} featuredRates={featuredRates} />\n </AutoAutoHeight>\n <RoomModal open={viewingDescription} room={props.room} rates={standardRates} featuredRates={featuredRates} onClose={closeDescriptionOnClose} />\n {room.getRates().map((rate) => {\n return (\n <script key={room.code + '-' + rate.code} type=\"application/ld+json\">\n {JSON.stringify({\n '@context': 'http://schema.org/',\n '@type': 'Offer',\n itemOffered: {\n '@type': 'HotelRoom',\n name: room.name,\n },\n name: rate.name,\n identifier: rate.code,\n priceSpecification: {\n '@type': 'UnitPriceSpecification',\n price: convertCurrencyPrice(rate.getAveragePrice()),\n priceCurrency: ccx.currentCurrency,\n unitText: 'Nightly',\n },\n })}\n </script>\n );\n })}\n </div>\n );\n}\n"]}
@@ -32,9 +32,12 @@ const Icon_1 = __importStar(require("../../../generic/Icon/Icon"));
32
32
  const Color_1 = require("../../../../util/Color");
33
33
  const Text_1 = require("../../../generic/Text");
34
34
  const hooks_1 = require("../../../../hooks/index.js");
35
+ const react_i18next_1 = require("react-i18next");
36
+ const Translation_1 = require("../../../../translations/Translation");
35
37
  function RoomDetailsBedsBlock(props) {
36
38
  var _a, _b, _c, _d, _e;
37
39
  const { hotel } = (0, hooks_1.useCurrentHotel)();
40
+ const { t } = (0, react_i18next_1.useTranslation)();
38
41
  const extraRoomData = (_a = hotel === null || hotel === void 0 ? void 0 : hotel.rooms) === null || _a === void 0 ? void 0 : _a[(_b = props.room) === null || _b === void 0 ? void 0 : _b.code];
39
42
  const roomSize = (_c = hotel === null || hotel === void 0 ? void 0 : hotel.overwrites) === null || _c === void 0 ? void 0 : _c[(_d = props.room) === null || _d === void 0 ? void 0 : _d.code];
40
43
  const textColor = (_e = props.textColor) !== null && _e !== void 0 ? _e : Color_1.Color.DarkGrey;
@@ -46,9 +49,9 @@ function RoomDetailsBedsBlock(props) {
46
49
  react_1.default.createElement("li", { className: "u-flex align-items-center" },
47
50
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.People, size: "24px", color: Color_1.Color.Navy }),
48
51
  react_1.default.createElement("div", { className: "u-pad-left--light" },
49
- react_1.default.createElement(Text_1.Text, { type: Text_1.TextType.Small, inline: true, color: textColor },
50
- "Sleeps ", extraRoomData === null || extraRoomData === void 0 ? void 0 :
51
- extraRoomData.maxOccupancy))),
52
+ react_1.default.createElement(Text_1.Text, { type: Text_1.TextType.Small, inline: true, color: textColor }, t(Translation_1.Translation.Step.Room.Sleeps, {
53
+ maxOccupancy: extraRoomData === null || extraRoomData === void 0 ? void 0 : extraRoomData.maxOccupancy,
54
+ })))),
52
55
  react_1.default.createElement("li", { className: "u-flex align-items-center" },
53
56
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Bed, size: "24px", color: Color_1.Color.Navy }),
54
57
  react_1.default.createElement("div", { className: "u-pad-left--light" },
@@ -1 +1 @@
1
- {"version":3,"file":"RoomDetailsBedsBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsBedsBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,uEAAgE;AAChE,wCAAqC;AACrC,oDAA2D;AAC3D,2CAAkD;AAQlD,SAAgB,oBAAoB,CAAC,KAAgC;;IACjE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEpC,MAAM,aAAa,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAG,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAc,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAG,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAc,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,MAAA,KAAK,CAAC,SAAS,mCAAI,aAAK,CAAC,QAAQ,CAAC;IAEpD,IAAI,OAAO,GAAG,GAAG,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAsB,IAAG,CAAC,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAE,CAAC;IAC1H,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,EAAE;QAChC,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC;KAC3C;IAED,OAAO,CACH,sCAAI,SAAS,EAAC,oDAAoD;QAC9D,sCAAI,SAAS,EAAC,2BAA2B;YACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,IAAI,GAAI;YAC9D,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,WAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,MAAM,QAAC,KAAK,EAAE,SAAS;+BACvC,aAAa,aAAb,aAAa;oBAAb,aAAa,CAAE,YAAY,CAChC,CACL,CACL;QACL,sCAAI,SAAS,EAAC,2BAA2B;YACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,GAAG,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,IAAI,GAAI;YAC3D,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,WAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,MAAM,QAAC,KAAK,EAAE,SAAS,IAC9C,OAAO,CACL,CACL,CACL;QACJ,CAAC,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAA,IAAI,CAC3B,sCAAI,SAAS,EAAC,2BAA2B;YACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,IAAI,GAAI;YAChE,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,WAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,MAAM,QAAC,KAAK,EAAE,SAAS,IAC9C,QAAQ,CAAC,cAAc,CACrB,CACL,CACL,CACR,CACA,CACR,CAAC;AACN,CAAC;AA3CD,oDA2CC","sourcesContent":["import React from 'react';\nimport { Room } from '@/models/Room/Room';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\nimport { Text, TextType } from '@/components/generic/Text';\nimport { useCurrentHotel } from '@frontend/hooks';\n\ninterface RoomDetailsBedsBlockProps {\n room: Room;\n\n textColor?: Color;\n}\n\nexport function RoomDetailsBedsBlock(props: RoomDetailsBedsBlockProps) {\n const { hotel } = useCurrentHotel();\n\n const extraRoomData = hotel?.rooms?.[props.room?.code as string];\n const roomSize = hotel?.overwrites?.[props.room?.code as string];\n\n const textColor = props.textColor ?? Color.DarkGrey;\n\n let bedType = `${(extraRoomData?.bedQuantity as number) > 0 ? extraRoomData?.bedQuantity : ''} ${extraRoomData?.bedType}`;\n if (extraRoomData?.bedTypeOverride) {\n bedType = extraRoomData.bedTypeOverride;\n }\n\n return (\n <ul className=\"u-inline-flex u-flex-gap u-flex-wrap u-marg-bottom\">\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.People} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n Sleeps {extraRoomData?.maxOccupancy}\n </Text>\n </div>\n </li>\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.Bed} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n {bedType}\n </Text>\n </div>\n </li>\n {!!roomSize?.RoomDimensions && (\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.RoomSize} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n {roomSize.RoomDimensions}\n </Text>\n </div>\n </li>\n )}\n </ul>\n );\n}\n"]}
1
+ {"version":3,"file":"RoomDetailsBedsBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsBedsBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,uEAAgE;AAChE,wCAAqC;AACrC,oDAA2D;AAC3D,2CAAkD;AAClD,iDAA+C;AAC/C,4DAAyD;AAQzD,SAAgB,oBAAoB,CAAC,KAAgC;;IACjE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,0CAAG,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAc,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,0CAAG,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAc,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,MAAA,KAAK,CAAC,SAAS,mCAAI,aAAK,CAAC,QAAQ,CAAC;IAEpD,IAAI,OAAO,GAAG,GAAG,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAsB,IAAG,CAAC,CAAC,CAAC,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAE,CAAC;IAC1H,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,EAAE;QAChC,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC;KAC3C;IAED,OAAO,CACH,sCAAI,SAAS,EAAC,oDAAoD;QAC9D,sCAAI,SAAS,EAAC,2BAA2B;YACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,IAAI,GAAI;YAC9D,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,WAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,MAAM,QAAC,KAAK,EAAE,SAAS,IAC9C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAC7B,YAAY,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY;iBAC5C,CAAC,CACC,CACL,CACL;QACL,sCAAI,SAAS,EAAC,2BAA2B;YACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,GAAG,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,IAAI,GAAI;YAC3D,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,WAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,MAAM,QAAC,KAAK,EAAE,SAAS,IAC9C,OAAO,CACL,CACL,CACL;QACJ,CAAC,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAA,IAAI,CAC3B,sCAAI,SAAS,EAAC,2BAA2B;YACrC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,QAAQ,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAE,aAAK,CAAC,IAAI,GAAI;YAChE,uCAAK,SAAS,EAAC,mBAAmB;gBAC9B,8BAAC,WAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,MAAM,QAAC,KAAK,EAAE,SAAS,IAC9C,QAAQ,CAAC,cAAc,CACrB,CACL,CACL,CACR,CACA,CACR,CAAC;AACN,CAAC;AA9CD,oDA8CC","sourcesContent":["import React from 'react';\nimport { Room } from '@/models/Room/Room';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\nimport { Text, TextType } from '@/components/generic/Text';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from '@/translations/Translation';\n\ninterface RoomDetailsBedsBlockProps {\n room: Room;\n\n textColor?: Color;\n}\n\nexport function RoomDetailsBedsBlock(props: RoomDetailsBedsBlockProps) {\n const { hotel } = useCurrentHotel();\n const { t } = useTranslation();\n\n const extraRoomData = hotel?.rooms?.[props.room?.code as string];\n const roomSize = hotel?.overwrites?.[props.room?.code as string];\n\n const textColor = props.textColor ?? Color.DarkGrey;\n\n let bedType = `${(extraRoomData?.bedQuantity as number) > 0 ? extraRoomData?.bedQuantity : ''} ${extraRoomData?.bedType}`;\n if (extraRoomData?.bedTypeOverride) {\n bedType = extraRoomData.bedTypeOverride;\n }\n\n return (\n <ul className=\"u-inline-flex u-flex-gap u-flex-wrap u-marg-bottom\">\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.People} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n {t(Translation.Step.Room.Sleeps, {\n maxOccupancy: extraRoomData?.maxOccupancy,\n })}\n </Text>\n </div>\n </li>\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.Bed} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n {bedType}\n </Text>\n </div>\n </li>\n {!!roomSize?.RoomDimensions && (\n <li className=\"u-flex align-items-center\">\n <Icon icon={IconType.RoomSize} size=\"24px\" color={Color.Navy} />\n <div className=\"u-pad-left--light\">\n <Text type={TextType.Small} inline color={textColor}>\n {roomSize.RoomDimensions}\n </Text>\n </div>\n </li>\n )}\n </ul>\n );\n}\n"]}
@@ -48,7 +48,9 @@ function RoomDetailsPriceBlock(props) {
48
48
  '--accent-success': props.isMemberOnly,
49
49
  });
50
50
  return (react_1.default.createElement(react_1.default.Fragment, null,
51
- react_1.default.createElement("div", { className: 'room-details--content-price u-flex u-flex-direction-column justify-content-end flex-wrap' + (isLocked ? ' --locked' : '') },
51
+ react_1.default.createElement("div", { className: (0, classnames_1.default)('room-details--content-price u-flex u-flex-direction-column justify-content-end flex-wrap', {
52
+ '--locked': isLocked,
53
+ }) },
52
54
  !isLocked && discountApplied && (react_1.default.createElement("span", { className: "room-details--content-price-protection --original align-self-end" },
53
55
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey },
54
56
  react_1.default.createElement("strong", null,
@@ -1 +1 @@
1
- {"version":3,"file":"RoomDetailsPriceBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsPriceBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAC/C,wCAAqC;AACrC,kEAA2D;AAC3D,0DAAuD;AACvD,6EAAqD;AACrD,mEAA2C;AAC3C,mFAA2D;AAC3D,uEAAgE;AAChE,6EAAqD;AAErD,4DAAoC;AACpC,iDAA0D;AAY1D,SAAwB,qBAAqB,CAAC,KAAiC;IAC3E,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,+BAAoB,CAAC,CAAC;IAEvD,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE7D,MAAM,eAAe,GAAG,kBAAkB,GAAG,YAAY,CAAC;IAE1D,MAAM,eAAe,GAAG,IAAA,oBAAU,EAAC,wCAAwC,EAAE;QACzE,mBAAmB,EAAE,eAAe;QACpC,kBAAkB,EAAE,KAAK,CAAC,YAAY;KACzC,CAAC,CAAC;IAEH,OAAO,CACH;QACI,uCAAK,SAAS,EAAE,0FAA0F,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACrI,CAAC,QAAQ,IAAI,eAAe,IAAI,CAC7B,wCAAM,SAAS,EAAC,kEAAkE;gBAC9E,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ;oBACvB;wBACI,8BAAC,kBAAQ,QAAE,kBAAkB,CAAY,CACpC,CACN;gBACN,CAAC,KAAK,CAAC,YAAY,IAAI,CACpB,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,OAAO;;oBAC7C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CACV,CACE,CACV;YACD,wCAAM,SAAS,EAAE,eAAe;gBAC5B,8BAAC,kBAAQ,IAAC,IAAI,EAAE,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,QAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBAC9H,8BAAC,kBAAQ,IAAC,cAAc,QAAC,YAAY,UAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CACvB,CACJ;gBACV,CAAC,KAAK,CAAC,YAAY,IAAI,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ;;oBAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ,CACrF;YACP,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBACrE,wCAAM,SAAS,EAAC,kCAAkC;oBAC9C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,OAAO,GAAI,CAChD,CACD,CACR,CACP,CACN,CAAC;AACN,CAAC;AA/CD,wCA+CC","sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Color } from '@/util/Color';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from 'translations/Translation';\nimport Headline from '@/components/generic/Headline';\nimport ScreenSize from '@/util/ScreenSize';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Currency from '@/components/generic/Currency';\n\nimport classNames from 'classnames';\nimport { BookingEngineContext } from '@frontend/contexts';\n\ninterface RoomDetailsPriceBlockProps {\n isLocked: boolean;\n averagePreDiscount: number;\n averagePrice: number;\n\n isMemberOnly?: boolean;\n\n hidePerNight?: boolean;\n}\n\nexport default function RoomDetailsPriceBlock(props: RoomDetailsPriceBlockProps) {\n const { t } = useTranslation();\n\n const context = React.useContext(BookingEngineContext);\n\n const { isLocked, averagePreDiscount, averagePrice } = props;\n\n const discountApplied = averagePreDiscount > averagePrice;\n\n const headlineClasses = classNames('room-details--content-price-protection', {\n '--accent-headline': discountApplied,\n '--accent-success': props.isMemberOnly,\n });\n\n return (\n <>\n <div className={'room-details--content-price u-flex u-flex-direction-column justify-content-end flex-wrap' + (isLocked ? ' --locked' : '')}>\n {!isLocked && discountApplied && (\n <span className=\"room-details--content-price-protection --original align-self-end\">\n <Text color={Color.DarkGrey}>\n <strong>\n <Currency>{averagePreDiscount}</Currency>\n </strong>\n </Text>\n {!props.hidePerNight && (\n <Text color={Color.DarkGrey} type={TextType.Caption}>\n /{t(Translation.Misc.Night)}\n </Text>\n )}\n </span>\n )}\n <span className={headlineClasses}>\n <Headline size={context.screenSize > ScreenSize.Medium ? 'large' : 'normal'} bold className={props.isMemberOnly ? '--success' : ''}>\n <Currency disableLoading hideDecimals>\n {isLocked ? 321 : averagePrice}\n </Currency>\n </Headline>\n {!props.hidePerNight && <Text color={Color.DarkGrey}>/{t(Translation.Misc.Night)}</Text>}\n </span>\n <Tooltip title={t(Translation.Step.Room.RoomInfo.MemberRateLockedTooltip)}>\n <span className=\"room-details--content-price-lock\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n </span>\n </Tooltip>\n </div>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"RoomDetailsPriceBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsPriceBlock.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAA+C;AAC/C,wCAAqC;AACrC,kEAA2D;AAC3D,0DAAuD;AACvD,6EAAqD;AACrD,mEAA2C;AAC3C,mFAA2D;AAC3D,uEAAgE;AAChE,6EAAqD;AAErD,4DAAoC;AACpC,iDAA0D;AAY1D,SAAwB,qBAAqB,CAAC,KAAiC;IAC3E,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,+BAAoB,CAAC,CAAC;IAEvD,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAE7D,MAAM,eAAe,GAAG,kBAAkB,GAAG,YAAY,CAAC;IAE1D,MAAM,eAAe,GAAG,IAAA,oBAAU,EAAC,wCAAwC,EAAE;QACzE,mBAAmB,EAAE,eAAe;QACpC,kBAAkB,EAAE,KAAK,CAAC,YAAY;KACzC,CAAC,CAAC;IAEH,OAAO,CACH;QACI,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,0FAA0F,EAAE;gBAC9G,UAAU,EAAE,QAAQ;aACvB,CAAC;YAED,CAAC,QAAQ,IAAI,eAAe,IAAI,CAC7B,wCAAM,SAAS,EAAC,kEAAkE;gBAC9E,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ;oBACvB;wBACI,8BAAC,kBAAQ,QAAE,kBAAkB,CAAY,CACpC,CACN;gBACN,CAAC,KAAK,CAAC,YAAY,IAAI,CACpB,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAQ,CAAC,OAAO;;oBAC7C,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CACxB,CACV,CACE,CACV;YACD,wCAAM,SAAS,EAAE,eAAe;gBAC5B,8BAAC,kBAAQ,IAAC,IAAI,EAAE,OAAO,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,QAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;oBAC9H,8BAAC,kBAAQ,IAAC,cAAc,QAAC,YAAY,UAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CACvB,CACJ;gBACV,CAAC,KAAK,CAAC,YAAY,IAAI,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,QAAQ;;oBAAI,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ,CACrF;YACP,8BAAC,iBAAO,IAAC,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBACrE,wCAAM,SAAS,EAAC,kCAAkC;oBAC9C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,OAAO,GAAI,CAChD,CACD,CACR,CACP,CACN,CAAC;AACN,CAAC;AAnDD,wCAmDC","sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Color } from '@/util/Color';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Translation } from 'translations/Translation';\nimport Headline from '@/components/generic/Headline';\nimport ScreenSize from '@/util/ScreenSize';\nimport Tooltip from '@/components/generic/Tooltip/Tooltip';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Currency from '@/components/generic/Currency';\n\nimport classNames from 'classnames';\nimport { BookingEngineContext } from '@frontend/contexts';\n\ninterface RoomDetailsPriceBlockProps {\n isLocked: boolean;\n averagePreDiscount: number;\n averagePrice: number;\n\n isMemberOnly?: boolean;\n\n hidePerNight?: boolean;\n}\n\nexport default function RoomDetailsPriceBlock(props: RoomDetailsPriceBlockProps) {\n const { t } = useTranslation();\n\n const context = React.useContext(BookingEngineContext);\n\n const { isLocked, averagePreDiscount, averagePrice } = props;\n\n const discountApplied = averagePreDiscount > averagePrice;\n\n const headlineClasses = classNames('room-details--content-price-protection', {\n '--accent-headline': discountApplied,\n '--accent-success': props.isMemberOnly,\n });\n\n return (\n <>\n <div\n className={classNames('room-details--content-price u-flex u-flex-direction-column justify-content-end flex-wrap', {\n '--locked': isLocked,\n })}\n >\n {!isLocked && discountApplied && (\n <span className=\"room-details--content-price-protection --original align-self-end\">\n <Text color={Color.DarkGrey}>\n <strong>\n <Currency>{averagePreDiscount}</Currency>\n </strong>\n </Text>\n {!props.hidePerNight && (\n <Text color={Color.DarkGrey} type={TextType.Caption}>\n /{t(Translation.Misc.Night)}\n </Text>\n )}\n </span>\n )}\n <span className={headlineClasses}>\n <Headline size={context.screenSize > ScreenSize.Medium ? 'large' : 'normal'} bold className={props.isMemberOnly ? '--success' : ''}>\n <Currency disableLoading hideDecimals>\n {isLocked ? 321 : averagePrice}\n </Currency>\n </Headline>\n {!props.hidePerNight && <Text color={Color.DarkGrey}>/{t(Translation.Misc.Night)}</Text>}\n </span>\n <Tooltip title={t(Translation.Step.Room.RoomInfo.MemberRateLockedTooltip)}>\n <span className=\"room-details--content-price-lock\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n </span>\n </Tooltip>\n </div>\n </>\n );\n}\n"]}
@@ -37,8 +37,7 @@ const Text_1 = __importStar(require("../../../generic/Text"));
37
37
  const RoomRate_1 = require("../../../../models/Room/RoomRate");
38
38
  const FeaturedPromoFeature_1 = __importDefault(require("../../../../providers/feature/FeaturedPromoFeature"));
39
39
  const ImageProvider_1 = require("../../../../providers/ImageProvider");
40
- const react_1 = __importDefault(require("react"));
41
- const react_2 = require("react");
40
+ const react_1 = __importStar(require("react"));
42
41
  const react_i18next_1 = require("react-i18next");
43
42
  const Translation_1 = require("translations/Translation");
44
43
  const Color_1 = require("../../../../util/Color");
@@ -49,13 +48,13 @@ const RoomModal_1 = __importDefault(require("../RoomModal"));
49
48
  const RoomDetailsBedsBlock_1 = require("./RoomDetailsBedsBlock");
50
49
  const RoomDetailsRetargeting = (props) => {
51
50
  const { room } = props;
52
- const [featuredRates, setFeaturedRates] = (0, react_2.useState)([]);
53
- const [standardRates, setStandardRates] = (0, react_2.useState)([]);
54
- const [viewingDescription, setViewingDescription] = (0, react_2.useState)(false);
51
+ const [featuredRates, setFeaturedRates] = (0, react_1.useState)([]);
52
+ const [standardRates, setStandardRates] = (0, react_1.useState)([]);
53
+ const [viewingDescription, setViewingDescription] = (0, react_1.useState)(false);
55
54
  const context = react_1.default.useContext(contexts_1.BookingEngineContext);
56
- const basketContext = (0, react_2.useContext)(contexts_1.BasketContext);
55
+ const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
57
56
  const { t } = (0, react_i18next_1.useTranslation)();
58
- (0, react_2.useEffect)(() => {
57
+ (0, react_1.useEffect)(() => {
59
58
  var _a, _b, _c;
60
59
  let nonPromoRates = [];
61
60
  const toSetFeaturedRate = [];
@@ -95,7 +94,7 @@ const RoomDetailsRetargeting = (props) => {
95
94
  react_1.default.createElement("div", { className: "room-details--content u-pad--heavy u-pad@l-" },
96
95
  react_1.default.createElement("div", { className: "u-marg-bottom" },
97
96
  react_1.default.createElement("div", { className: "u-marg-bottom" },
98
- react_1.default.createElement(Pill_1.default, { type: Pill_1.PillType.Primary, icon: Icon_1.IconType.Add }, "You booked this room recently!")),
97
+ react_1.default.createElement(Pill_1.default, { type: Pill_1.PillType.Primary, icon: Icon_1.IconType.Add }, t(Translation_1.Translation.Step.Room.YouBookedThisRoomRecently))),
99
98
  react_1.default.createElement("div", { className: "room-details--content-title u-marg-bottom--light" },
100
99
  react_1.default.createElement(Headline_1.default, { bold: true }, room.name)),
101
100
  react_1.default.createElement(RoomDetailsBedsBlock_1.RoomDetailsBedsBlock, { room: room, textColor: Color_1.Color.Navy }),
@@ -1 +1 @@
1
- {"version":3,"file":"RoomDetailsRetargeting.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsRetargeting.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport Text, { TextType } from '@/components/generic/Text';\n\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport React from 'react';\nimport { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionType, InteractionStep } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport ImageGallerySlider from '../ImageGallerySlider';\nimport RoomModal from '../RoomModal';\nimport { RoomDetailsBedsBlock } from './RoomDetailsBedsBlock';\nimport RoomRatePills from './roomRates/RoomRatePills';\n\ninterface RoomDetailsRetargetingProps {\n room: Room;\n}\n\nexport const RoomDetailsRetargeting: React.FC<RoomDetailsRetargetingProps> = (props) => {\n const { room } = props;\n\n const [featuredRates, setFeaturedRates] = useState<RoomRate[]>([]);\n const [standardRates, setStandardRates] = useState<RoomRate[]>([]);\n\n const [viewingDescription, setViewingDescription] = useState(false);\n\n const context = React.useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n\n const { t } = useTranslation();\n\n useEffect(() => {\n let nonPromoRates: RoomRate[] = [];\n const toSetFeaturedRate: RoomRate[] = [];\n\n if (FeaturedPromoFeature.isActive()) {\n for (const currentRate of room.getRates()) {\n if (currentRate.promoCode?.toLowerCase() === basketContext.selectedBasketRow?.getPromoCode()?.toLowerCase()) {\n toSetFeaturedRate.unshift(currentRate);\n } else {\n nonPromoRates.push(currentRate);\n }\n }\n\n if (toSetFeaturedRate.length > 0) {\n setFeaturedRates(toSetFeaturedRate);\n }\n } else {\n nonPromoRates = room.getRates();\n }\n\n setStandardRates(nonPromoRates);\n }, [room.getRates()]);\n\n const trimmedDescription = room.getShortDescription();\n\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const lowestPrice = Math.round(room.getLowestPrice(false, true));\n const currencySize = context.screenSize > ScreenSize.Medium && lowestPrice.toLocaleString().length < 7 ? 'large' : 'normal';\n\n const moreDetailsOnClick = () => {\n DataLayer.instance.sendInteraction('More Room Details', InteractionType.LINK, InteractionStep.ROOMS);\n setViewingDescription(true);\n };\n\n const closeDescriptionOnClose = () => {\n setViewingDescription(false);\n };\n\n return (\n <div className=\"room-details-container --theme-retargeting u-marg-top u-marg-bottom\">\n <div className=\"room-details\">\n <div className=\"room-details--image\">\n <ImageGallerySlider images={room.getImages()} imageSize={ImageSize.Medium} />\n </div>\n <div className=\"room-details--content u-pad--heavy u-pad@l-\">\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom\">\n <Pill type={PillType.Primary} icon={IconType.Add}>\n You booked this room recently!\n </Pill>\n </div>\n <div className=\"room-details--content-title u-marg-bottom--light\">\n <Headline bold>{room.name}</Headline>\n </div>\n <RoomDetailsBedsBlock room={room} textColor={Color.Navy} />\n <div className=\"room-details--content-description u-marg-bottom--light\">\n <Text color={Color.Navy} type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: trimmedDescription?.replace(/<br(\\/|)>/g, '') || '' }} />\n </Text>\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col-md-6 u-flex u-marg-bottom@m- flex-column align-items-start\">\n <div className=\"room-details--content-perks u-marg-bottom@m-\">\n {isMobile && (\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} bold color={Color.Accent}>\n {t(Translation.Misc.Perks.AndYouGetAll)}\n </Text>\n </div>\n )}\n </div>\n </div>\n <div className=\"col-md-6 u-flex justify-content-end flex-column align-items-start align-items-md-end\">\n <Text type={TextType.Small} color={Color.Navy} inline>\n {t(Translation.Misc.From)}\n </Text>\n <div className=\"room-details--content-price flex-row align-items-end\">\n <Headline size={currencySize} bold>\n <Currency hideDecimals>{lowestPrice}</Currency>\n </Headline>\n <Text color={Color.Navy} inline>\n /{t(Translation.Misc.Night)}\n </Text>\n </div>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} color={Color.Navy} inline className=\"u-nowrap\">\n {room.getLowestPriceType() === RoomRatePriceInclusion.IncludingFeesAndTaxes\n ? t(Translation.Step.Room.RoomInfo.IncludesTaxes)\n : t(Translation.Step.Room.ExcludingTaxes)}\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex justify-content-end u-w-100@m-\">\n <BEButton\n name=\"ViewRatesNowButton\"\n primary\n filled\n stopIconAnimation\n iconPosition=\"right\"\n wide={context.screenSize <= ScreenSize.Large}\n onClick={moreDetailsOnClick}\n >\n {t(Translation.Step.Room.RoomInfo.ViewRates)}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <RoomModal open={viewingDescription} room={props.room} rates={standardRates} featuredRates={featuredRates} onClose={closeDescriptionOnClose} />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"RoomDetailsRetargeting.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/RoomDetailsRetargeting.tsx"],"names":[],"mappings":"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","sourcesContent":["import { BasketContext, BookingEngineContext } from '@frontend/contexts';\nimport BEButton from '@/components/generic/BEButton';\nimport Currency from '@/components/generic/Currency';\nimport Headline from '@/components/generic/Headline';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport Text, { TextType } from '@/components/generic/Text';\n\nimport { Room } from '@/models/Room/Room';\nimport { RoomRate, RoomRatePriceInclusion } from '@/models/Room/RoomRate';\nimport FeaturedPromoFeature from '@/providers/feature/FeaturedPromoFeature';\nimport { ImageSize } from '@/providers/ImageProvider';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport ScreenSize from '@/util/ScreenSize';\nimport ImageGallerySlider from '../ImageGallerySlider';\nimport RoomModal from '../RoomModal';\nimport { RoomDetailsBedsBlock } from './RoomDetailsBedsBlock';\n\ninterface RoomDetailsRetargetingProps {\n room: Room;\n}\n\nexport const RoomDetailsRetargeting: React.FC<RoomDetailsRetargetingProps> = (props) => {\n const { room } = props;\n\n const [featuredRates, setFeaturedRates] = useState<RoomRate[]>([]);\n const [standardRates, setStandardRates] = useState<RoomRate[]>([]);\n\n const [viewingDescription, setViewingDescription] = useState(false);\n\n const context = React.useContext(BookingEngineContext);\n const basketContext = useContext(BasketContext);\n\n const { t } = useTranslation();\n\n useEffect(() => {\n let nonPromoRates: RoomRate[] = [];\n const toSetFeaturedRate: RoomRate[] = [];\n\n if (FeaturedPromoFeature.isActive()) {\n for (const currentRate of room.getRates()) {\n if (currentRate.promoCode?.toLowerCase() === basketContext.selectedBasketRow?.getPromoCode()?.toLowerCase()) {\n toSetFeaturedRate.unshift(currentRate);\n } else {\n nonPromoRates.push(currentRate);\n }\n }\n\n if (toSetFeaturedRate.length > 0) {\n setFeaturedRates(toSetFeaturedRate);\n }\n } else {\n nonPromoRates = room.getRates();\n }\n\n setStandardRates(nonPromoRates);\n }, [room.getRates()]);\n\n const trimmedDescription = room.getShortDescription();\n\n const isMobile = context.screenSize <= ScreenSize.Large;\n\n const lowestPrice = Math.round(room.getLowestPrice(false, true));\n const currencySize = context.screenSize > ScreenSize.Medium && lowestPrice.toLocaleString().length < 7 ? 'large' : 'normal';\n\n const moreDetailsOnClick = () => {\n DataLayer.instance.sendInteraction('More Room Details', InteractionType.LINK, InteractionStep.ROOMS);\n setViewingDescription(true);\n };\n\n const closeDescriptionOnClose = () => {\n setViewingDescription(false);\n };\n\n return (\n <div className=\"room-details-container --theme-retargeting u-marg-top u-marg-bottom\">\n <div className=\"room-details\">\n <div className=\"room-details--image\">\n <ImageGallerySlider images={room.getImages()} imageSize={ImageSize.Medium} />\n </div>\n <div className=\"room-details--content u-pad--heavy u-pad@l-\">\n <div className=\"u-marg-bottom\">\n <div className=\"u-marg-bottom\">\n <Pill type={PillType.Primary} icon={IconType.Add}>\n {t(Translation.Step.Room.YouBookedThisRoomRecently)}\n </Pill>\n </div>\n <div className=\"room-details--content-title u-marg-bottom--light\">\n <Headline bold>{room.name}</Headline>\n </div>\n <RoomDetailsBedsBlock room={room} textColor={Color.Navy} />\n <div className=\"room-details--content-description u-marg-bottom--light\">\n <Text color={Color.Navy} type={TextType.Small}>\n <span dangerouslySetInnerHTML={{ __html: trimmedDescription?.replace(/<br(\\/|)>/g, '') || '' }} />\n </Text>\n </div>\n </div>\n\n <div className=\"row\">\n <div className=\"col-md-6 u-flex u-marg-bottom@m- flex-column align-items-start\">\n <div className=\"room-details--content-perks u-marg-bottom@m-\">\n {isMobile && (\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} bold color={Color.Accent}>\n {t(Translation.Misc.Perks.AndYouGetAll)}\n </Text>\n </div>\n )}\n </div>\n </div>\n <div className=\"col-md-6 u-flex justify-content-end flex-column align-items-start align-items-md-end\">\n <Text type={TextType.Small} color={Color.Navy} inline>\n {t(Translation.Misc.From)}\n </Text>\n <div className=\"room-details--content-price flex-row align-items-end\">\n <Headline size={currencySize} bold>\n <Currency hideDecimals>{lowestPrice}</Currency>\n </Headline>\n <Text color={Color.Navy} inline>\n /{t(Translation.Misc.Night)}\n </Text>\n </div>\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Small} color={Color.Navy} inline className=\"u-nowrap\">\n {room.getLowestPriceType() === RoomRatePriceInclusion.IncludingFeesAndTaxes\n ? t(Translation.Step.Room.RoomInfo.IncludesTaxes)\n : t(Translation.Step.Room.ExcludingTaxes)}\n </Text>\n </div>\n <div className=\"u-marg-top--light u-flex justify-content-end u-w-100@m-\">\n <BEButton\n name=\"ViewRatesNowButton\"\n primary\n filled\n stopIconAnimation\n iconPosition=\"right\"\n wide={context.screenSize <= ScreenSize.Large}\n onClick={moreDetailsOnClick}\n >\n {t(Translation.Step.Room.RoomInfo.ViewRates)}\n </BEButton>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <RoomModal open={viewingDescription} room={props.room} rates={standardRates} featuredRates={featuredRates} onClose={closeDescriptionOnClose} />\n </div>\n );\n};\n"]}
@@ -27,7 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.PriceBreakdownFooter = void 0;
30
- const react_1 = __importDefault(require("react"));
30
+ const react_1 = __importStar(require("react"));
31
31
  const react_i18next_1 = require("react-i18next");
32
32
  const contexts_1 = require("../../../../../contexts/index.js");
33
33
  const Color_1 = require("../../../../../util/Color");
@@ -39,12 +39,10 @@ const LineBreak_1 = __importDefault(require("../../../../generic/LineBreak"));
39
39
  const Currency_1 = __importDefault(require("../../../../generic/Currency"));
40
40
  const RoomDetailsPriceBlock_1 = __importDefault(require("../RoomDetailsPriceBlock"));
41
41
  const BookNowButton_1 = __importDefault(require("./BookNowButton"));
42
- const react_2 = require("react");
43
- const contexts_2 = require("../../../../../contexts/index.js");
44
42
  const PriceBreakdownFooter = (props) => {
45
43
  var _a, _b, _c;
46
44
  const { t } = (0, react_i18next_1.useTranslation)();
47
- const basketContext = (0, react_2.useContext)(contexts_1.BasketContext);
45
+ const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
48
46
  // Just like the room list, if none are selected we select the last one. Possible refactor here & room list?
49
47
  // TODO
50
48
  const basketRow = (_a = basketContext.selectedBasketRow) !== null && _a !== void 0 ? _a : basketContext.currentBasketRows[basketContext.currentBasketRows.length - 1];
@@ -57,7 +55,7 @@ const PriceBreakdownFooter = (props) => {
57
55
  days.push(currentDay.format('dddd, MMM DD, YYYY'));
58
56
  }
59
57
  }
60
- const bookButtonLabel = props.getButtonLabel ? props.getButtonLabel(false, false) : t(Translation_1.Translation.Step.Room.RoomInfo.BookNow);
58
+ const bookButtonLabel = props.getButtonLabel ? props.getButtonLabel(false, false) : t(Translation_1.Translation.Misc.BookNow);
61
59
  return (react_1.default.createElement("div", { className: "u-flex align-items-center" },
62
60
  react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey },
63
61
  basketRow !== null && (react_1.default.createElement(react_1.default.Fragment, null,
@@ -73,7 +71,7 @@ exports.PriceBreakdownFooter = PriceBreakdownFooter;
73
71
  function PriceBreakdownBlock(props) {
74
72
  var _a, _b;
75
73
  const { t } = (0, react_i18next_1.useTranslation)();
76
- const ccx = (0, react_2.useContext)(contexts_2.CompanyContext);
74
+ const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
77
75
  const basketContext = react_1.default.useContext(contexts_1.BasketContext);
78
76
  const selectedRow = (_a = basketContext.selectedBasketRow) !== null && _a !== void 0 ? _a : basketContext.currentBasketRows[basketContext.currentBasketRows.length - 1];
79
77
  const { rate } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"PriceBreakdownBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { useTranslation } from 'react-i18next';\nimport { BasketContext } from '@frontend/contexts';\nimport { Color } from '@/util/Color';\nimport StringHelper from '@/util/StringHelper';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Headline from '@/components/generic/Headline';\nimport LineBreak from '@/components/generic/LineBreak';\nimport Currency from '@/components/generic/Currency';\nimport RoomDetailsPriceBlock from '@/components/steps/room/roomDetails/RoomDetailsPriceBlock';\nimport BookNowButton from '@/components/steps/room/roomDetails/roomRates/BookNowButton';\nimport { useContext } from 'react';\nimport { CompanyContext } from '@frontend/contexts';\n\ninterface RoomModalProps {\n rate: RoomRate;\n onClose?: (closedByBooking: boolean) => void;\n}\ninterface PriceBreakdownFooterProps {\n rate: RoomRate;\n onClose: () => void;\n\n getButtonLabel?: (isRoomSelectedAndEditing: boolean, isThisSelectedRow: boolean) => string;\n onAddToBasketOverride?: (rate: RoomRate) => void;\n}\n\nexport const PriceBreakdownFooter = (props: PriceBreakdownFooterProps) => {\n const { t } = useTranslation();\n\n const basketContext = useContext(BasketContext);\n // Just like the room list, if none are selected we select the last one. Possible refactor here & room list?\n // TODO\n const basketRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[basketContext.currentBasketRows.length - 1];\n\n const { rate } = props;\n\n const days: any = [];\n const totalDays = basketRow?.getEndDate()?.diff(basketRow?.getStartDate(), 'day') ?? 0;\n\n for (let i = 0; i <= totalDays; i++) {\n const currentDay = basketRow?.getStartDate().add(i, 'day');\n if (currentDay) {\n days.push(currentDay.format('dddd, MMM DD, YYYY'));\n }\n }\n\n const bookButtonLabel = props.getButtonLabel ? props.getButtonLabel(false, false) : t(Translation.Step.Room.RoomInfo.BookNow);\n\n return (\n <div className=\"u-flex align-items-center\">\n <Text color={Color.DarkGrey}>\n {basketRow !== null && (\n <>\n {StringHelper.pluralWithDictAndCount(basketRow?.getAdults(), Translation.Step.Date.Adult, t)},&nbsp;\n {StringHelper.pluralWithDictAndCount(basketRow?.getChildren(), Translation.Step.Date.Child, t)},&nbsp;\n </>\n )}\n {StringHelper.pluralWithDictAndCount(days.length - 1, Translation.Misc.Night, t)}\n </Text>\n <div className=\"u-flex align-items-center\">\n <BookNowButton isFilled rate={props.rate} buttonLabel={bookButtonLabel} onAddToBasketOverride={props.onAddToBasketOverride} />\n </div>\n </div>\n );\n};\n\nexport default function PriceBreakdownBlock(props: RoomModalProps) {\n const { t } = useTranslation();\n const ccx = useContext(CompanyContext);\n\n const basketContext = React.useContext(BasketContext);\n\n const selectedRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[basketContext.currentBasketRows.length - 1];\n\n const { rate } = props;\n\n const days: any = [];\n\n const totalDays = selectedRow?.getEndDate().diff(selectedRow?.getStartDate(), 'day') ?? 0;\n\n for (let i = 0; i <= totalDays; i++) {\n const currentDay = selectedRow?.getStartDate().add(i, 'day');\n if (currentDay) {\n days.push(currentDay.format('dddd, MMM DD, YYYY'));\n }\n }\n\n const nightRates = Object.values(rate.nightRates);\n\n let isLocked = false;\n if (rate.isMemberOnly && !ccx.signedInUser) {\n isLocked = true;\n }\n\n const totalFees = rate.getTotalFees();\n const totalTax = rate.getTotalTaxes();\n\n return (\n <>\n <div className=\"row\">\n <div className=\"col-md-6\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n {t(Translation.Step.Room.Filter.RoomType)}\n </Text>\n <div className=\"u-flex\">\n <Headline>\n <strong>{rate.getRoom().name}</strong>\n </Headline>\n </div>\n </div>\n <div className=\"col-md-6\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n {t(Translation.Step.Room.Filter.RateType)}\n </Text>\n <div className=\"u-flex\">\n <Headline>\n <strong>{rate.name}</strong>\n </Headline>\n </div>\n </div>\n </div>\n <LineBreak />\n {days.map((day: any, index: number) => {\n const isLastDay = index === days.length - 1;\n\n const nightRate = nightRates[index];\n\n if (!nightRate && !isLastDay) {\n return;\n }\n\n return (\n <div className=\"u-flex u-marg-bottom\" key={index}>\n <Text>{day}</Text>\n {isLastDay ? (\n <Text color={Color.Success}>{t(Translation.Misc.CheckOut)}</Text>\n ) : (\n <Text color={Color.DarkGrey} className=\"u-pos-rel\">\n {Number(nightRate.discount) > 0 && (\n <span\n style={{\n textDecoration: 'line-through',\n fontSize: '14px',\n height: '1.1em',\n position: 'absolute',\n top: '0',\n right: '0',\n transform: 'translateY(-100%)',\n }}\n className=\"u-cross-out\"\n >\n <Currency>{nightRate.cost + nightRate.discount}</Currency>\n </span>\n )}\n <span className=\"u-primary u-bold\">\n <Currency>{nightRate.cost}</Currency>\n </span>\n </Text>\n )}\n </div>\n );\n })}\n {!!totalFees && (\n <div className=\"u-flex u-marg-bottom\">\n <Text>{t(Translation.Step.Room.Summary.Fees)}</Text>\n <Text color={Color.DarkGrey}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n )}\n {!!totalTax && (\n <div className=\"u-flex u-marg-bottom\">\n <Text>{t(Translation.Step.Room.Summary.Taxes)}</Text>\n <Text color={Color.DarkGrey}>\n <Currency>{totalTax}</Currency>\n </Text>\n </div>\n )}\n\n <div className=\"u-marg-top-bottom--heavy u-flex flex-column align-items-end\">\n <Text type={TextType.Small} color={Color.Navy}>\n {t(Translation.Misc.Total)}\n </Text>\n <RoomDetailsPriceBlock\n isLocked={isLocked}\n averagePreDiscount={rate.getTotalPriceBeforeDiscount()}\n averagePrice={rate.getTotalPrice()}\n isMemberOnly={props.rate.isMemberOnly}\n hidePerNight\n />\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.DarkGrey} inline>\n {t(Translation.Step.Room.RoomInfo.IncludesTaxes)}.\n </Text>\n </div>\n </div>\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"PriceBreakdownBlock.js","sourceRoot":"/","sources":["src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext } from 'react';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { useTranslation } from 'react-i18next';\nimport { BasketContext, CompanyContext } from '@frontend/contexts';\nimport { Color } from '@/util/Color';\nimport StringHelper from '@/util/StringHelper';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport Headline from '@/components/generic/Headline';\nimport LineBreak from '@/components/generic/LineBreak';\nimport Currency from '@/components/generic/Currency';\nimport RoomDetailsPriceBlock from '@/components/steps/room/roomDetails/RoomDetailsPriceBlock';\nimport BookNowButton from '@/components/steps/room/roomDetails/roomRates/BookNowButton';\n\ninterface RoomModalProps {\n rate: RoomRate;\n onClose?: (closedByBooking: boolean) => void;\n}\n\ninterface PriceBreakdownFooterProps {\n rate: RoomRate;\n onClose: () => void;\n\n getButtonLabel?: (isRoomSelectedAndEditing: boolean, isThisSelectedRow: boolean) => string;\n onAddToBasketOverride?: (rate: RoomRate) => void;\n}\n\nexport const PriceBreakdownFooter = (props: PriceBreakdownFooterProps) => {\n const { t } = useTranslation();\n\n const basketContext = useContext(BasketContext);\n // Just like the room list, if none are selected we select the last one. Possible refactor here & room list?\n // TODO\n const basketRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[basketContext.currentBasketRows.length - 1];\n\n const { rate } = props;\n\n const days: any = [];\n const totalDays = basketRow?.getEndDate()?.diff(basketRow?.getStartDate(), 'day') ?? 0;\n\n for (let i = 0; i <= totalDays; i++) {\n const currentDay = basketRow?.getStartDate().add(i, 'day');\n if (currentDay) {\n days.push(currentDay.format('dddd, MMM DD, YYYY'));\n }\n }\n\n const bookButtonLabel = props.getButtonLabel ? props.getButtonLabel(false, false) : t(Translation.Misc.BookNow);\n\n return (\n <div className=\"u-flex align-items-center\">\n <Text color={Color.DarkGrey}>\n {basketRow !== null && (\n <>\n {StringHelper.pluralWithDictAndCount(basketRow?.getAdults(), Translation.Step.Date.Adult, t)},&nbsp;\n {StringHelper.pluralWithDictAndCount(basketRow?.getChildren(), Translation.Step.Date.Child, t)},&nbsp;\n </>\n )}\n {StringHelper.pluralWithDictAndCount(days.length - 1, Translation.Misc.Night, t)}\n </Text>\n <div className=\"u-flex align-items-center\">\n <BookNowButton isFilled rate={props.rate} buttonLabel={bookButtonLabel} onAddToBasketOverride={props.onAddToBasketOverride} />\n </div>\n </div>\n );\n};\n\nexport default function PriceBreakdownBlock(props: RoomModalProps) {\n const { t } = useTranslation();\n const ccx = useContext(CompanyContext);\n\n const basketContext = React.useContext(BasketContext);\n\n const selectedRow = basketContext.selectedBasketRow ?? basketContext.currentBasketRows[basketContext.currentBasketRows.length - 1];\n\n const { rate } = props;\n\n const days: any = [];\n\n const totalDays = selectedRow?.getEndDate().diff(selectedRow?.getStartDate(), 'day') ?? 0;\n\n for (let i = 0; i <= totalDays; i++) {\n const currentDay = selectedRow?.getStartDate().add(i, 'day');\n if (currentDay) {\n days.push(currentDay.format('dddd, MMM DD, YYYY'));\n }\n }\n\n const nightRates = Object.values(rate.nightRates);\n\n let isLocked = false;\n if (rate.isMemberOnly && !ccx.signedInUser) {\n isLocked = true;\n }\n\n const totalFees = rate.getTotalFees();\n const totalTax = rate.getTotalTaxes();\n\n return (\n <>\n <div className=\"row\">\n <div className=\"col-md-6\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n {t(Translation.Step.Room.Filter.RoomType)}\n </Text>\n <div className=\"u-flex\">\n <Headline>\n <strong>{rate.getRoom().name}</strong>\n </Headline>\n </div>\n </div>\n <div className=\"col-md-6\">\n <Text type={TextType.Label} color={Color.DarkGrey}>\n {t(Translation.Step.Room.Filter.RateType)}\n </Text>\n <div className=\"u-flex\">\n <Headline>\n <strong>{rate.name}</strong>\n </Headline>\n </div>\n </div>\n </div>\n <LineBreak />\n {days.map((day: any, index: number) => {\n const isLastDay = index === days.length - 1;\n\n const nightRate = nightRates[index];\n\n if (!nightRate && !isLastDay) {\n return;\n }\n\n return (\n <div className=\"u-flex u-marg-bottom\" key={index}>\n <Text>{day}</Text>\n {isLastDay ? (\n <Text color={Color.Success}>{t(Translation.Misc.CheckOut)}</Text>\n ) : (\n <Text color={Color.DarkGrey} className=\"u-pos-rel\">\n {Number(nightRate.discount) > 0 && (\n <span\n style={{\n textDecoration: 'line-through',\n fontSize: '14px',\n height: '1.1em',\n position: 'absolute',\n top: '0',\n right: '0',\n transform: 'translateY(-100%)',\n }}\n className=\"u-cross-out\"\n >\n <Currency>{nightRate.cost + nightRate.discount}</Currency>\n </span>\n )}\n <span className=\"u-primary u-bold\">\n <Currency>{nightRate.cost}</Currency>\n </span>\n </Text>\n )}\n </div>\n );\n })}\n {!!totalFees && (\n <div className=\"u-flex u-marg-bottom\">\n <Text>{t(Translation.Step.Room.Summary.Fees)}</Text>\n <Text color={Color.DarkGrey}>\n <Currency>{totalFees}</Currency>\n </Text>\n </div>\n )}\n {!!totalTax && (\n <div className=\"u-flex u-marg-bottom\">\n <Text>{t(Translation.Step.Room.Summary.Taxes)}</Text>\n <Text color={Color.DarkGrey}>\n <Currency>{totalTax}</Currency>\n </Text>\n </div>\n )}\n\n <div className=\"u-marg-top-bottom--heavy u-flex flex-column align-items-end\">\n <Text type={TextType.Small} color={Color.Navy}>\n {t(Translation.Misc.Total)}\n </Text>\n <RoomDetailsPriceBlock\n isLocked={isLocked}\n averagePreDiscount={rate.getTotalPriceBeforeDiscount()}\n averagePrice={rate.getTotalPrice()}\n isMemberOnly={props.rate.isMemberOnly}\n hidePerNight\n />\n <div className=\"u-marg-bottom\">\n <Text type={TextType.Label} color={Color.DarkGrey} inline>\n {t(Translation.Step.Room.RoomInfo.IncludesTaxes)}.\n </Text>\n </div>\n </div>\n </>\n );\n}\n"]}