@roomstay/frontend 2.1.32 → 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 +2 -0
  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 -1
  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 -1
  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/399.bundle.js +0 -2
  460. package/dist/559.bundle.js +0 -1
  461. package/dist/848.bundle.js +0 -1
  462. package/dist/962.bundle.js +0 -1
  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/{399.bundle.js.LICENSE.txt → 535.bundle.js.LICENSE.txt} +0 -0
@@ -50,28 +50,21 @@ const contexts_1 = require("../../../contexts/index.js");
50
50
  const Icon_1 = __importStar(require("../../generic/Icon/Icon"));
51
51
  const SSLSecureBadge_1 = __importDefault(require("../../generic/badging/SSLSecureBadge"));
52
52
  const StepConfirmationCheckoutDifferencesModal_1 = __importDefault(require("./StepConfirmationCheckoutDifferencesModal"));
53
- const react_router_dom_1 = require("react-router-dom");
54
53
  const ErrorModal_1 = __importDefault(require("../../generic/modal/ErrorModal"));
55
54
  const StepConfirmationPolicyBlock_1 = __importDefault(require("./StepConfirmationPolicyBlock"));
56
55
  const StepConfirmationAcknowledgement_1 = __importDefault(require("./StepConfirmationAcknowledgement"));
57
56
  const BEButton_1 = __importDefault(require("../../generic/BEButton"));
58
57
  const Alert_1 = __importStar(require("../../generic/Alert"));
59
- const StepConfirmation_1 = __importDefault(require("../../../pages/steps/StepConfirmation/StepConfirmation"));
60
58
  const StepRoom_1 = __importDefault(require("../../../pages/steps/StepRoom/StepRoom"));
61
59
  const ConfirmationVerifyFeature_1 = __importDefault(require("../../../providers/feature/ConfirmationVerifyFeature"));
62
60
  const TextBox_1 = __importDefault(require("../../generic/TextBox"));
63
61
  const ShowIATANumberOnCheckoutFeature_1 = __importDefault(require("../../../providers/feature/ShowIATANumberOnCheckoutFeature"));
64
- const PlanpayPaymentMethod_1 = require("./PlanpayPaymentMethod");
65
62
  const ConfirmationStepContext_1 = require("contexts/ConfirmationStepContext/ConfirmationStepContext");
66
63
  const ConfirmationQuery_1 = require("../../../hooks/ConfirmationQuery");
67
64
  const LargeLoader_1 = __importDefault(require("../../generic/loader/LargeLoader"));
68
- const StepConfirmationPaymentDetails_1 = __importDefault(require("./PaymentDetails/StepConfirmationPaymentDetails"));
69
65
  const core_1 = require("@roomstay/core");
70
- const RadioButtonGroup_1 = __importDefault(require("../../generic/RadioButtonGroup/RadioButtonGroup"));
71
- const AcceptablePaymentCard_1 = __importDefault(require("./PaymentDetails/AcceptablePaymentCard"));
72
- const RoomstayThemeEngine_1 = __importDefault(require("../../../providers/RoomstayThemeEngine"));
73
- const hooks_1 = require("../../../hooks/index.js");
74
- const dayjs_1 = __importDefault(require("dayjs"));
66
+ const PaymentInformation_1 = __importDefault(require("./PaymentInformation"));
67
+ const HistoryConsistentPush_1 = require("hooks/HistoryConsistentPush");
75
68
  const StepConfirmationCommentsComponent_1 = require("./StepConfirmationCommentsComponent");
76
69
  function StepConfirmationForm() {
77
70
  const [differenceWarning, setDifferenceWarning] = (0, react_1.useState)({
@@ -90,8 +83,8 @@ function StepConfirmationForm() {
90
83
  const { isBackFromPlanpay, isLoading, apiErrors, clearApiErrors, book, rollbackReservation, commitReservation } = (0, ConfirmationStepContext_1.useConfirmationStep)();
91
84
  const basketContext = (0, contexts_1.useBasket)();
92
85
  const tokenizerRef = (0, react_1.useRef)(null);
93
- const history = (0, react_router_dom_1.useHistory)();
94
- const { hotel } = (0, hooks_1.useCurrentHotel)();
86
+ const historyConsistentPush = (0, HistoryConsistentPush_1.useHistoryConsistentPush)();
87
+ const { roomstayMember } = (0, contexts_1.useMemberContext)();
95
88
  const toPaymentPayload = (paymentMethod) => __awaiter(this, void 0, void 0, function* () {
96
89
  var _a;
97
90
  let payment;
@@ -109,24 +102,42 @@ function StepConfirmationForm() {
109
102
  };
110
103
  break;
111
104
  }
112
- default:
105
+ case core_1.EBookingPaymentMethod.Card: {
113
106
  payment = {
114
107
  Method: core_1.EBookingPaymentMethod.Card,
115
108
  PaymentCard: yield ((_a = tokenizerRef.current) === null || _a === void 0 ? void 0 : _a.getTokenizedCode()),
116
109
  };
110
+ break;
111
+ }
112
+ case core_1.EBookingPaymentMethod.SavedCard:
113
+ default: {
114
+ payment = {
115
+ Method: core_1.EBookingPaymentMethod.SavedCard,
116
+ SavedCardID: paymentMethod,
117
+ };
118
+ }
117
119
  }
118
120
  return payment;
119
121
  });
120
122
  (0, react_1.useEffect)(() => {
121
- var _a;
122
- const validatedPaymentMethod = Object.values(core_1.EBookingPaymentMethod).includes(queryPaymentMethod)
123
- ? queryPaymentMethod
124
- : core_1.EBookingPaymentMethod.Card;
125
- methods.setValue('paymentMethod', validatedPaymentMethod);
126
- handleChangePaymentMethod(validatedPaymentMethod);
123
+ var _a, _b;
124
+ let defaultPaymentValue = '';
125
+ if (Object.values(core_1.EBookingPaymentMethod).includes(queryPaymentMethod)) {
126
+ defaultPaymentValue = queryPaymentMethod;
127
+ }
128
+ else {
129
+ if ((roomstayMember === null || roomstayMember === void 0 ? void 0 : roomstayMember.defaultCard) && ((_a = roomstayMember === null || roomstayMember === void 0 ? void 0 : roomstayMember.cards) === null || _a === void 0 ? void 0 : _a.find((card) => card.cardId === (roomstayMember === null || roomstayMember === void 0 ? void 0 : roomstayMember.defaultCard)))) {
130
+ defaultPaymentValue = roomstayMember === null || roomstayMember === void 0 ? void 0 : roomstayMember.defaultCard;
131
+ }
132
+ else {
133
+ defaultPaymentValue = core_1.EBookingPaymentMethod.Card;
134
+ }
135
+ }
136
+ methods.setValue('paymentMethod', defaultPaymentValue);
137
+ handleChangePaymentMethod(defaultPaymentValue);
127
138
  if (isBackFromPlanpay) {
128
- if (queryRoomstayId === ((_a = basketContext.reservationData) === null || _a === void 0 ? void 0 : _a.roomstayId)) {
129
- onPlaypayCallback(validatedPaymentMethod);
139
+ if (queryRoomstayId === ((_b = basketContext.reservationData) === null || _b === void 0 ? void 0 : _b.roomstayId)) {
140
+ onPlaypayCallback();
130
141
  }
131
142
  else {
132
143
  rollbackReservation === null || rollbackReservation === void 0 ? void 0 : rollbackReservation();
@@ -137,7 +148,7 @@ function StepConfirmationForm() {
137
148
  rollbackReservation === null || rollbackReservation === void 0 ? void 0 : rollbackReservation();
138
149
  };
139
150
  }, []);
140
- const onPlaypayCallback = (paymentMethod) => __awaiter(this, void 0, void 0, function* () {
151
+ const onPlaypayCallback = () => __awaiter(this, void 0, void 0, function* () {
141
152
  yield (commitReservation === null || commitReservation === void 0 ? void 0 : commitReservation(basketContext.reservationData));
142
153
  });
143
154
  const paymentMethod = methods.watch('paymentMethod');
@@ -149,7 +160,7 @@ function StepConfirmationForm() {
149
160
  });
150
161
  const returnToPickRooms = () => __awaiter(this, void 0, void 0, function* () {
151
162
  // TODO: What if StepRoom doesn't exist?
152
- history.push(StepRoom_1.default.getStepUrl());
163
+ historyConsistentPush(StepRoom_1.default.getStepUrl());
153
164
  });
154
165
  const onNextStepClicked = () => __awaiter(this, void 0, void 0, function* () {
155
166
  yield handleBook(paymentMethod, (resData) => __awaiter(this, void 0, void 0, function* () { return commitReservation === null || commitReservation === void 0 ? void 0 : commitReservation(resData); }));
@@ -163,7 +174,6 @@ function StepConfirmationForm() {
163
174
  const adhocValid = formContext === null || formContext === void 0 ? void 0 : formContext.errorChecks.every((check) => check().validate(scrollToInput));
164
175
  return adhocValid === undefined ? true : adhocValid;
165
176
  };
166
- const isDisabledPlanpay = !validateConfirmationPolicy() || !validateCustomFields(false) || !methods.formState.isValid;
167
177
  const handleBook = (paymentMethod, onSuccess) => __awaiter(this, void 0, void 0, function* () {
168
178
  var _b;
169
179
  yield (book === null || book === void 0 ? void 0 : book(() => __awaiter(this, void 0, void 0, function* () { return toPaymentPayload(paymentMethod); }), (_b = commentTextbox.current) === null || _b === void 0 ? void 0 : _b.value, () => __awaiter(this, void 0, void 0, function* () {
@@ -223,66 +233,19 @@ function StepConfirmationForm() {
223
233
  react_1.default.createElement(LineBreak_1.default, null),
224
234
  react_1.default.createElement("div", { className: "u-marg-bottom--heavy" },
225
235
  react_1.default.createElement("div", { className: "u-marg-bottom" },
226
- react_1.default.createElement(Headline_1.default, { bold: true }, t(Translation_1.Translation.Step.Confirmation.PaymentInformation))),
227
- react_1.default.createElement(react_hook_form_1.Controller, { control: methods.control, name: "paymentMethod", render: ({ field: { onChange, value } }) => {
228
- return (react_1.default.createElement(react_1.default.Fragment, null,
229
- react_1.default.createElement("div", null,
230
- react_1.default.createElement(RadioButtonGroup_1.default, { options: [
231
- {
232
- value: core_1.EBookingPaymentMethod.Card,
233
- label: (react_1.default.createElement("div", { className: "u-flex u-flex-align-center" },
234
- react_1.default.createElement("div", { className: "u-marg-right--light" }, t(Translation_1.Translation.Step.Confirmation.CardLabel)),
235
- react_1.default.createElement(AcceptablePaymentCard_1.default, { isDefault: (cardKey) => {
236
- return true;
237
- }, style: {
238
- height: 16,
239
- width: 24,
240
- borderRadius: 2.5,
241
- border: '0.5px solid #DFE1E5',
242
- marginRight: 4,
243
- } }))),
244
- renderContent: () => react_1.default.createElement(StepConfirmationPaymentDetails_1.default, { ref: tokenizerRef }),
245
- },
246
- {
247
- value: core_1.EBookingPaymentMethod.Planpay,
248
- label: (react_1.default.createElement("div", { className: "u-flex u-flex-align-center" },
249
- react_1.default.createElement("div", null, t(Translation_1.Translation.Step.Confirmation.PlanpayLabel)),
250
- react_1.default.createElement("div", { className: "u-flex u-flex-align-center u-marg-left--light", style: {
251
- borderRadius: '24px',
252
- overflow: 'hidden',
253
- } },
254
- react_1.default.createElement("img", { height: 16, src: RoomstayThemeEngine_1.default.getImageAssetUrl('planpay-logo-small.svg'), alt: "" })),
255
- !methods.formState.isValid && (react_1.default.createElement(Text_1.default, { color: Color_1.Color.Graphite, className: "u-flex u-flex-align-center", style: {
256
- color: '#313131',
257
- fontSize: 10,
258
- } },
259
- react_1.default.createElement(Icon_1.default, { color: Color_1.Color.DarkGrey, icon: Icon_1.IconType.Info, className: "u-marg-right--lighter u-marg-left--light" }),
260
- t(Translation_1.Translation.Step.Confirmation.PlanpayHelperText))))),
261
- disabled: isDisabledPlanpay,
262
- disabledReason: isDisabledPlanpay ? 'You must fill all the above details before proceeding with Planpay' : '',
263
- renderContent: () => react_1.default.createElement(PlanpayPaymentMethod_1.PlanpayPaymentMethod, null),
264
- },
265
- ]
266
- .filter(({ value }) => { var _a; return (_a = hotel === null || hotel === void 0 ? void 0 : hotel.paymentMethods) === null || _a === void 0 ? void 0 : _a.includes(value); })
267
- .filter(({ value }) => {
268
- var _a, _b;
269
- return value !== core_1.EBookingPaymentMethod.Planpay ||
270
- (((_a = hotel === null || hotel === void 0 ? void 0 : hotel.planpay) === null || _a === void 0 ? void 0 : _a.minDaysShowPlanpay) &&
271
- (0, dayjs_1.default)(basketContext.startDate).diff((0, dayjs_1.default)(), 'day') > ((_b = hotel === null || hotel === void 0 ? void 0 : hotel.planpay) === null || _b === void 0 ? void 0 : _b.minDaysShowPlanpay));
272
- }), value: value, onChange: (code) => __awaiter(this, void 0, void 0, function* () {
273
- onChange(code);
274
- yield handleChangePaymentMethod(code);
275
- if (code === core_1.EBookingPaymentMethod.Planpay) {
276
- yield handleBook(code);
277
- }
278
- }) }))));
279
- } }),
236
+ react_1.default.createElement(Headline_1.default, { bold: true }, t(Translation_1.Translation.Navigation.Menu.PaymentInformation))),
237
+ react_1.default.createElement(PaymentInformation_1.default, { tokenizerRef: tokenizerRef, onChangeCb: (code) => __awaiter(this, void 0, void 0, function* () {
238
+ yield handleChangePaymentMethod(code);
239
+ if (code === core_1.EBookingPaymentMethod.Planpay) {
240
+ yield handleBook(code);
241
+ }
242
+ }) }),
280
243
  react_1.default.createElement("div", { className: "u-marg-top u-flex align-items-center" },
281
244
  react_1.default.createElement("div", { className: "u-flex align-items-center justify-content-start" },
282
245
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.Lock, color: Color_1.Color.Success }),
283
246
  react_1.default.createElement("div", { className: "u-marg-left--light" },
284
247
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Success },
285
- react_1.default.createElement("strong", null, "Secured")))),
248
+ react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Confirmation.Secured))))),
286
249
  react_1.default.createElement(SSLSecureBadge_1.default, null))),
287
250
  react_1.default.createElement(LineBreak_1.default, null),
288
251
  react_1.default.createElement(StepConfirmationPoliciesSection_1.default, null),
@@ -293,12 +256,12 @@ function StepConfirmationForm() {
293
256
  react_1.default.createElement("div", null,
294
257
  react_1.default.createElement(StepConfirmationAcknowledgement_1.default, { ref: confirmationPolicy, confirmationPolicyError: confirmationPolicyError })))),
295
258
  react_1.default.createElement("div", { className: "u-flex u-marg-top--heavy justify-content-end" },
296
- react_1.default.createElement(NextStepButton_1.default, { disabled: paymentMethod === core_1.EBookingPaymentMethod.Planpay || isLoading, text: t(Translation_1.Translation.Step.Confirmation.ConfirmReservation), history: null, isLoading: isLoading, currentStep: StepConfirmation_1.default, onClick: onNextStepClicked })))),
259
+ react_1.default.createElement(NextStepButton_1.default, { disabled: paymentMethod === core_1.EBookingPaymentMethod.Planpay || isLoading, text: t(Translation_1.Translation.Step.Confirmation.ConfirmReservation), isLoading: isLoading, onClick: onNextStepClicked })))),
297
260
  react_1.default.createElement(ErrorModal_1.default, { open: !!apiErrors, onClose: clearApiErrors },
298
261
  react_1.default.createElement(Text_1.default, null, apiErrors)),
299
262
  react_1.default.createElement(StepConfirmationCheckoutDifferencesModal_1.default, { differences: differenceWarning.differences, warnings: differenceWarning.warnings, isLoading: isLoading, onClose: () => __awaiter(this, void 0, void 0, function* () {
300
263
  yield (rollbackReservation === null || rollbackReservation === void 0 ? void 0 : rollbackReservation());
301
- history.push(StepRoom_1.default.getStepUrl());
264
+ historyConsistentPush(StepRoom_1.default.getStepUrl());
302
265
  }), onProceed: () => __awaiter(this, void 0, void 0, function* () {
303
266
  if (paymentMethod === core_1.EBookingPaymentMethod.Planpay) {
304
267
  setDifferenceWarning({
@@ -1 +1 @@
1
- {"version":3,"file":"StepConfirmationForm.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react';\nimport Headline from '@/components/generic/Headline';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport RoomContactDetails from '@/components/steps/confirmation/RoomContactDetails';\nimport LineBreak from '@/components/generic/LineBreak';\nimport StepConfirmationPoliciesSection from '@/components/steps/confirmation/StepConfirmationPoliciesSection';\nimport NextStepButton from '@/components/generic/buttons/NextStepButton';\nimport { useTranslation } from 'react-i18next';\nimport { ConfirmationFormContext, useBasket, useBookingEngine } from '@frontend/contexts';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SSLSecureBadge from '@/components/generic/badging/SSLSecureBadge';\nimport StepConfirmationCheckoutDifferencesModal from '@/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal';\nimport { useHistory } from 'react-router-dom';\nimport ErrorModal from '@/components/generic/modal/ErrorModal';\nimport StepConfirmationPolicyBlock from '@/components/steps/confirmation/StepConfirmationPolicyBlock';\n\nimport StepConfirmationAcknowledgement from '@/components/steps/confirmation/StepConfirmationAcknowledgement';\nimport BEButton from '@/components/generic/BEButton';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport StepConfirmation from '@/pages/steps/StepConfirmation/StepConfirmation';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport ConfirmationVerifyFeature from '@/providers/feature/ConfirmationVerifyFeature';\nimport TextBox from '@/components/generic/TextBox';\nimport ShowIATANumberOnCheckoutFeature from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nimport { PlanpayPaymentMethod } from './PlanpayPaymentMethod';\nimport { ConfirmationFormValues, FBookSuccessCallback } from '@/models/Confirmation';\nimport { useConfirmationStep } from 'contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport BasketRowDifferences from '../../../models/BasketRowDifferences';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport StepConfirmationPaymentDetails from './PaymentDetails/StepConfirmationPaymentDetails';\nimport { EBookingPaymentMethod, IBookingPayment } from '@roomstay/core';\nimport RadioButtonGroup from '@/components/generic/RadioButtonGroup/RadioButtonGroup';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport dayjs from 'dayjs';\nimport { StepConfirmationCommentsComponent } from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\n\nexport default function StepConfirmationForm() {\n const [differenceWarning, setDifferenceWarning] = useState<{\n differences: BasketRowDifferences[];\n warnings: string[];\n }>({\n differences: [],\n warnings: [],\n });\n const formContext = useContext(ConfirmationFormContext);\n const [source, setSource] = useState('');\n const [confirmationPolicyError, setConfirmationPolicyError] = useState(false);\n const confirmationPolicy = useRef<HTMLInputElement | null>(null);\n const commentTextbox = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n const { t } = useTranslation();\n const { queryPaymentMethod, queryRoomstayId, queryPlanpayCheckoutId } = useConfirmationQuery();\n const context = useBookingEngine();\n const methods = useFormContext<ConfirmationFormValues>();\n const { isBackFromPlanpay, isLoading, apiErrors, clearApiErrors, book, rollbackReservation, commitReservation } = useConfirmationStep();\n const basketContext = useBasket();\n const tokenizerRef = useRef<any | null>(null);\n const history = useHistory();\n const { hotel } = useCurrentHotel();\n\n const toPaymentPayload = async (paymentMethod: EBookingPaymentMethod): Promise<IBookingPayment> => {\n let payment: IBookingPayment;\n switch (paymentMethod) {\n case EBookingPaymentMethod.Planpay: {\n const params = new URLSearchParams(window.location.search);\n params.set('roomstayId', '{{rsId}}');\n params.set('session', context.sessionProvider.getCurrentSessionID().toString());\n params.set('paymentMethod', EBookingPaymentMethod.Planpay);\n const redirectURL = `${window.location.origin}${window.location.pathname}${window.location.search}#/step/confirmation/?${params}`;\n payment = {\n Method: EBookingPaymentMethod.Planpay,\n PlanpayCheckoutId: queryPlanpayCheckoutId || undefined,\n RedirectUrl: redirectURL,\n };\n break;\n }\n default:\n payment = {\n Method: EBookingPaymentMethod.Card,\n PaymentCard: await tokenizerRef.current?.getTokenizedCode(),\n };\n }\n\n return payment;\n };\n\n useEffect(() => {\n const validatedPaymentMethod = Object.values(EBookingPaymentMethod).includes(queryPaymentMethod as EBookingPaymentMethod)\n ? (queryPaymentMethod as EBookingPaymentMethod)\n : EBookingPaymentMethod.Card;\n methods.setValue('paymentMethod', validatedPaymentMethod);\n handleChangePaymentMethod(validatedPaymentMethod);\n if (isBackFromPlanpay) {\n if (queryRoomstayId === basketContext.reservationData?.roomstayId) {\n onPlaypayCallback(validatedPaymentMethod);\n } else {\n rollbackReservation?.();\n }\n }\n return () => {\n if (!isBackFromPlanpay) rollbackReservation?.();\n };\n }, []);\n\n const onPlaypayCallback = async (paymentMethod: EBookingPaymentMethod) => {\n await commitReservation?.(basketContext.reservationData);\n };\n\n const paymentMethod = methods.watch('paymentMethod');\n\n context.engine\n .getSessionProvider()\n .getSession()\n .then((session) => {\n setSource(session.source);\n });\n\n const returnToPickRooms = async () => {\n // TODO: What if StepRoom doesn't exist?\n history.push(StepRoom.getStepUrl());\n };\n\n const onNextStepClicked = async () => {\n await handleBook(paymentMethod, async (resData) => commitReservation?.(resData));\n return false;\n };\n\n const validateConfirmationPolicy = (): boolean => {\n return !ConfirmationVerifyFeature.isActive() || !!confirmationPolicy?.current?.checked;\n };\n\n const validateCustomFields = (scrollToInput?: boolean): boolean => {\n const adhocValid = formContext?.errorChecks.every((check) => check().validate(scrollToInput));\n return adhocValid === undefined ? true : adhocValid;\n };\n\n const isDisabledPlanpay = !validateConfirmationPolicy() || !validateCustomFields(false) || !methods.formState.isValid;\n\n const handleBook = async (paymentMethod: EBookingPaymentMethod, onSuccess?: FBookSuccessCallback): Promise<void> => {\n await book?.(\n async () => toPaymentPayload(paymentMethod),\n commentTextbox.current?.value,\n async (): Promise<boolean> => {\n if (!validateConfirmationPolicy()) {\n setConfirmationPolicyError(true);\n return false;\n }\n if (!validateCustomFields(true)) {\n return false;\n }\n try {\n if (paymentMethod === EBookingPaymentMethod.Card) await tokenizerRef.current.getTokenizedCode();\n return true;\n } catch (e) {\n return false;\n }\n },\n (validationResult) => {\n if (validationResult) {\n setDifferenceWarning(validationResult);\n }\n },\n onSuccess\n );\n };\n\n const handleChangePaymentMethod = async (paymentMethod: EBookingPaymentMethod) => {\n if (paymentMethod !== EBookingPaymentMethod.Planpay) {\n await rollbackReservation?.();\n }\n };\n\n return (\n <form>\n {isBackFromPlanpay ? (\n <LargeLoader />\n ) : (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline bold>{t(Translation.Step.Confirmation.GuestDetails)}</Headline>\n </div>\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.AlmostDone, { required: '*' })}</strong>\n </Text>\n </div>\n <RoomContactDetails />\n {source === 'inline' ? (\n <Alert type={AlertType.Accent2} heavyPadding>\n <div className=\"u-flex u-w-100 flex-wrap flex-xl-nowrap\">\n <div>\n <Text color={Color.Accent} bold>\n {t(Translation.Step.Confirmation.WantMoreRooms)}\n </Text>\n <Text color={Color.Navy}>{t(Translation.Step.Confirmation.YouCanAddAndEditRooms)}</Text>\n </div>\n <div className=\"d-flex align-items-center u-marg-top@xl-\">\n <BEButton filled primary icon={IconType.Add} iconPosition=\"left\" onClick={returnToPickRooms}>\n {t(Translation.Step.Confirmation.AddMoreRooms)}\n </BEButton>\n </div>\n </div>\n </Alert>\n ) : (\n <></>\n )}\n {ShowIATANumberOnCheckoutFeature.isActive() && (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>Travel Agent</Headline>\n </div>\n\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Inputs.IATANumber)}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.Inputs.IATANumberGuide)}</Text>\n </div>\n <TextBox placeholder={t(Translation.Step.Confirmation.Inputs.IATANumber)} wide {...methods.register('IATANumber')} />\n </div>\n <LineBreak />\n </>\n )}\n <StepConfirmationCommentsComponent inputRef={commentTextbox} />\n <LineBreak />\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.PaymentInformation)}</Headline>\n </div>\n <Controller\n control={methods.control}\n name=\"paymentMethod\"\n render={({ field: { onChange, value } }) => {\n return (\n <>\n <div>\n <RadioButtonGroup<EBookingPaymentMethod>\n options={[\n {\n value: EBookingPaymentMethod.Card,\n label: (\n <div className=\"u-flex u-flex-align-center\">\n <div className=\"u-marg-right--light\">{t(Translation.Step.Confirmation.CardLabel)}</div>\n <AcceptablePaymentCard\n isDefault={(cardKey: any) => {\n return true;\n }}\n style={{\n height: 16,\n width: 24,\n borderRadius: 2.5,\n border: '0.5px solid #DFE1E5',\n marginRight: 4,\n }}\n />\n </div>\n ),\n renderContent: () => <StepConfirmationPaymentDetails ref={tokenizerRef} />,\n },\n {\n value: EBookingPaymentMethod.Planpay,\n label: (\n <div className=\"u-flex u-flex-align-center\">\n <div>{t(Translation.Step.Confirmation.PlanpayLabel)}</div>\n <div\n className=\"u-flex u-flex-align-center u-marg-left--light\"\n style={{\n borderRadius: '24px',\n overflow: 'hidden',\n }}\n >\n <img height={16} src={RoomstayThemeEngine.getImageAssetUrl('planpay-logo-small.svg')} alt=\"\" />\n </div>\n {!methods.formState.isValid && (\n <Text\n color={Color.Graphite}\n className=\"u-flex u-flex-align-center\"\n style={{\n color: '#313131',\n fontSize: 10,\n }}\n >\n <Icon color={Color.DarkGrey} icon={IconType.Info} className=\"u-marg-right--lighter u-marg-left--light\" />\n {t(Translation.Step.Confirmation.PlanpayHelperText)}\n </Text>\n )}\n </div>\n ),\n disabled: isDisabledPlanpay,\n disabledReason: isDisabledPlanpay ? 'You must fill all the above details before proceeding with Planpay' : '',\n renderContent: () => <PlanpayPaymentMethod />,\n },\n ]\n .filter(({ value }) => hotel?.paymentMethods?.includes(value))\n .filter(\n ({ value }) =>\n value !== EBookingPaymentMethod.Planpay ||\n (hotel?.planpay?.minDaysShowPlanpay &&\n dayjs(basketContext.startDate).diff(dayjs(), 'day') > hotel?.planpay?.minDaysShowPlanpay)\n )}\n value={value}\n onChange={async (code: EBookingPaymentMethod) => {\n onChange(code);\n await handleChangePaymentMethod(code);\n if (code === EBookingPaymentMethod.Planpay) {\n await handleBook(code);\n }\n }}\n />\n </div>\n </>\n );\n }}\n />\n <div className=\"u-marg-top u-flex align-items-center\">\n <div className=\"u-flex align-items-center justify-content-start\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small} color={Color.Success}>\n <strong>Secured</strong>\n </Text>\n </div>\n </div>\n <SSLSecureBadge />\n </div>\n </div>\n <LineBreak />\n <StepConfirmationPoliciesSection />\n <div className=\"u-pad-top--light u-marg-bottom\">\n <StepConfirmationPolicyBlock />\n </div>\n {ConfirmationVerifyFeature.isActive() && (\n <>\n <LineBreak />\n <div>\n <StepConfirmationAcknowledgement ref={confirmationPolicy} confirmationPolicyError={confirmationPolicyError} />\n </div>\n </>\n )}\n <div className=\"u-flex u-marg-top--heavy justify-content-end\">\n <NextStepButton\n disabled={paymentMethod === EBookingPaymentMethod.Planpay || isLoading}\n text={t(Translation.Step.Confirmation.ConfirmReservation)}\n history={null}\n isLoading={isLoading}\n currentStep={StepConfirmation}\n onClick={onNextStepClicked}\n />\n </div>\n </>\n )}\n\n <ErrorModal open={!!apiErrors} onClose={clearApiErrors}>\n <Text>{apiErrors}</Text>\n </ErrorModal>\n <StepConfirmationCheckoutDifferencesModal\n differences={differenceWarning.differences}\n warnings={differenceWarning.warnings}\n isLoading={isLoading}\n onClose={async () => {\n await rollbackReservation?.();\n history.push(StepRoom.getStepUrl());\n }}\n onProceed={async () => {\n if (paymentMethod === EBookingPaymentMethod.Planpay) {\n setDifferenceWarning({\n differences: [],\n warnings: [],\n });\n } else {\n await commitReservation?.(basketContext.reservationData);\n }\n }}\n />\n </form>\n );\n}\n"]}
1
+ {"version":3,"file":"StepConfirmationForm.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationForm.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAuE;AACvE,6EAAqD;AACrD,0DAAuD;AACvD,kEAA2D;AAC3D,wCAAqC;AACrC,qDAAiD;AACjD,4GAAoF;AACpF,+EAAuD;AACvD,sIAA8G;AAC9G,iGAAyE;AACzE,iDAA+C;AAC/C,iDAA4G;AAC5G,uEAAgE;AAChE,iGAAyE;AACzE,wJAAgI;AAChI,uFAA+D;AAC/D,8HAAsG;AAEtG,sIAA8G;AAC9G,6EAAqD;AACrD,oEAA8D;AAC9D,+EAAuD;AACvD,8GAAsF;AACtF,2EAAmD;AACnD,0HAAkG;AAElG,sGAA+F;AAC/F,iEAAiE;AAEjE,0FAAkE;AAClE,yCAAwE;AACxE,4GAAoF;AACpF,uEAAuE;AACvE,yHAAsH;AAEtH,SAAwB,oBAAoB;IACxC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAGvD;QACC,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,EAAE;KACf,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,kCAAuB,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GAAG,IAAA,cAAM,EAA0B,IAAI,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,IAAA,cAAM,EAAgD,IAAI,CAAC,CAAC;IACnF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,sBAAsB,EAAE,GAAG,IAAA,wCAAoB,GAAE,CAAC;IAC/F,MAAM,OAAO,GAAG,IAAA,2BAAgB,GAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAA,gCAAc,GAA0B,CAAC;IACzD,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,GAAG,IAAA,6CAAmB,GAAE,CAAC;IACxI,MAAM,aAAa,GAAG,IAAA,oBAAS,GAAE,CAAC;IAClC,MAAM,YAAY,GAAG,IAAA,cAAM,EAAa,IAAI,CAAC,CAAC;IAC9C,MAAM,qBAAqB,GAAG,IAAA,gDAAwB,GAAE,CAAC;IACzD,MAAM,EAAE,cAAc,EAAE,GAAG,IAAA,2BAAgB,GAAE,CAAC;IAE9C,MAAM,gBAAgB,GAAG,CAAO,aAAqB,EAA4B,EAAE;;QAC/E,IAAI,OAAwB,CAAC;QAC7B,QAAQ,aAAa,EAAE;YACnB,KAAK,4BAAqB,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;gBACrC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChF,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,4BAAqB,CAAC,OAAO,CAAC,CAAC;gBAC3D,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,wBAAwB,MAAM,EAAE,CAAC;gBAClI,OAAO,GAAG;oBACN,MAAM,EAAE,4BAAqB,CAAC,OAAO;oBACrC,iBAAiB,EAAE,sBAAsB,IAAI,SAAS;oBACtD,WAAW,EAAE,WAAW;iBAC3B,CAAC;gBACF,MAAM;aACT;YACD,KAAK,4BAAqB,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO,GAAG;oBACN,MAAM,EAAE,4BAAqB,CAAC,IAAI;oBAClC,WAAW,EAAE,MAAM,CAAA,MAAA,YAAY,CAAC,OAAO,0CAAE,gBAAgB,EAAE,CAAA;iBAC9D,CAAC;gBACF,MAAM;aACT;YACD,KAAK,4BAAqB,CAAC,SAAS,CAAC;YACrC,OAAO,CAAC,CAAC;gBACL,OAAO,GAAG;oBACN,MAAM,EAAE,4BAAqB,CAAC,SAAS;oBACvC,WAAW,EAAE,aAAa;iBAC7B,CAAC;aACL;SACJ;QAED,OAAO,OAAO,CAAC;IACnB,CAAC,CAAA,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,IAAI,mBAAmB,GAAG,EAA2B,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,CAAC,4BAAqB,CAAC,CAAC,QAAQ,CAAC,kBAA2C,CAAC,EAAE;YAC5F,mBAAmB,GAAG,kBAA2C,CAAC;SACrE;aAAM;YACH,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,WAAW,MAAI,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,MAAK,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,WAAW,CAAA,CAAC,CAAA,EAAE;gBACnH,mBAAmB,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,WAAoC,CAAC;aAC9E;iBAAM;gBACH,mBAAmB,GAAG,4BAAqB,CAAC,IAAI,CAAC;aACpD;SACJ;QAED,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;QAEvD,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;QAE/C,IAAI,iBAAiB,EAAE;YACnB,IAAI,eAAe,MAAK,MAAA,aAAa,CAAC,eAAe,0CAAE,UAAU,CAAA,EAAE;gBAC/D,iBAAiB,EAAE,CAAC;aACvB;iBAAM;gBACH,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,EAAI,CAAC;aAC3B;SACJ;QACD,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,iBAAiB;gBAAE,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,EAAI,CAAC;QACpD,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG,GAAS,EAAE;QACjC,MAAM,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,aAAa,CAAC,eAAe,CAAC,CAAA,CAAC;IAC7D,CAAC,CAAA,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAErD,OAAO,CAAC,MAAM;SACT,kBAAkB,EAAE;SACpB,UAAU,EAAE;SACZ,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACd,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG,GAAS,EAAE;QACjC,wCAAwC;QACxC,qBAAqB,CAAC,kBAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,CAAC,CAAA,CAAC;IAEF,MAAM,iBAAiB,GAAG,GAAS,EAAE;QACjC,MAAM,UAAU,CAAC,aAAa,EAAE,CAAO,OAAO,EAAE,EAAE,gDAAC,OAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,OAAO,CAAC,CAAA,GAAA,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC;IACjB,CAAC,CAAA,CAAC;IAEF,MAAM,0BAA0B,GAAG,GAAY,EAAE;;QAC7C,OAAO,CAAC,mCAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,0CAAE,OAAO,CAAA,CAAC;IAC3F,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,aAAuB,EAAW,EAAE;QAC9D,MAAM,UAAU,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QAC9F,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAO,aAAoC,EAAE,SAAgC,EAAiB,EAAE;;QAC/G,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CACN,GAAS,EAAE,gDAAC,OAAA,gBAAgB,CAAC,aAAa,CAAC,CAAA,GAAA,EAC3C,MAAA,cAAc,CAAC,OAAO,0CAAE,KAAK,EAC7B,GAA2B,EAAE;YACzB,IAAI,CAAC,0BAA0B,EAAE,EAAE;gBAC/B,0BAA0B,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO,KAAK,CAAC;aAChB;YACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,KAAK,CAAC;aAChB;YACD,IAAI;gBACA,IAAI,aAAa,KAAK,4BAAqB,CAAC,IAAI;oBAAE,MAAM,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAChG,OAAO,IAAI,CAAC;aACf;YAAC,OAAO,CAAC,EAAE;gBACR,OAAO,KAAK,CAAC;aAChB;QACL,CAAC,CAAA,EACD,CAAC,gBAAgB,EAAE,EAAE;YACjB,IAAI,gBAAgB,EAAE;gBAClB,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;aAC1C;QACL,CAAC,EACD,SAAS,CACZ,CAAA,CAAC;IACN,CAAC,CAAA,CAAC;IAEF,MAAM,yBAAyB,GAAG,CAAO,aAAqB,EAAE,EAAE;QAC9D,IAAI,aAAa,KAAK,4BAAqB,CAAC,OAAO,EAAE;YACjD,MAAM,CAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,EAAI,CAAA,CAAC;SACjC;IACL,CAAC,CAAA,CAAC;IAEF,OAAO,CACH;QACK,iBAAiB,CAAC,CAAC,CAAC,CACjB,8BAAC,qBAAW,OAAG,CAClB,CAAC,CAAC,CAAC,CACA;YACI,uCAAK,SAAS,EAAC,sBAAsB;gBACjC,uCAAK,SAAS,EAAC,sBAAsB;oBACjC,8BAAC,kBAAQ,IAAC,IAAI,UAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAY,CACvE;gBACN,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,OAAO;oBAC5C,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAU,CAC9E,CACL;YACN,8BAAC,4BAAkB,OAAG;YACrB,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CACnB,8BAAC,eAAK,IAAC,IAAI,EAAE,iBAAS,CAAC,OAAO,EAAE,YAAY;gBACxC,uCAAK,SAAS,EAAC,yCAAyC;oBACpD;wBACI,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,MAAM,EAAE,IAAI,UAC1B,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAC5C;wBACP,8BAAC,cAAI,IAAC,KAAK,EAAE,aAAK,CAAC,IAAI,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAQ,CACtF;oBACN,uCAAK,SAAS,EAAC,0CAA0C;wBACrD,8BAAC,kBAAQ,IAAC,MAAM,QAAC,OAAO,QAAC,IAAI,EAAE,eAAQ,CAAC,GAAG,EAAE,YAAY,EAAC,MAAM,EAAC,OAAO,EAAE,iBAAiB,IACtF,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CACvC,CACT,CACJ,CACF,CACX,CAAC,CAAC,CAAC,CACA,6DAAK,CACR;YACA,yCAA+B,CAAC,QAAQ,EAAE,IAAI,CAC3C;gBACI,uCAAK,SAAS,EAAC,sBAAsB;oBACjC,uCAAK,SAAS,EAAC,eAAe;wBAC1B,8BAAC,kBAAQ,IAAC,IAAI,yBAAwB,CACpC;oBAEN,uCAAK,SAAS,EAAC,sBAAsB;wBACjC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK;4BACtB,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAU,CAClE,CACL;oBACN,uCAAK,SAAS,EAAC,sBAAsB;wBACjC,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAQ,CAC1F;oBACN,8BAAC,iBAAO,kBAAC,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,UAAK,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAI,CACnH;gBACN,8BAAC,mBAAS,OAAG,CACd,CACN;YACD,8BAAC,qEAAiC,IAAC,QAAQ,EAAE,cAAc,GAAI;YAC/D,8BAAC,mBAAS,OAAG;YACb,uCAAK,SAAS,EAAC,sBAAsB;gBACjC,uCAAK,SAAS,EAAC,eAAe;oBAC1B,8BAAC,kBAAQ,IAAC,IAAI,UAAE,CAAC,CAAC,yBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAY,CAC3E;gBACN,8BAAC,4BAAkB,IACf,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,CAAO,IAAY,EAAE,EAAE;wBAC/B,MAAM,yBAAyB,CAAC,IAAI,CAAC,CAAC;wBACtC,IAAI,IAAI,KAAK,4BAAqB,CAAC,OAAO,EAAE;4BACxC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;yBAC1B;oBACL,CAAC,CAAA,GACH;gBACF,uCAAK,SAAS,EAAC,sCAAsC;oBACjD,uCAAK,SAAS,EAAC,iDAAiD;wBAC5D,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,aAAK,CAAC,OAAO,GAAI;wBACnD,uCAAK,SAAS,EAAC,oBAAoB;4BAC/B,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,OAAO;gCAC5C,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAU,CACxD,CACL,CACJ;oBACN,8BAAC,wBAAc,OAAG,CAChB,CACJ;YACN,8BAAC,mBAAS,OAAG;YACb,8BAAC,yCAA+B,OAAG;YACnC,uCAAK,SAAS,EAAC,gCAAgC;gBAC3C,8BAAC,qCAA2B,OAAG,CAC7B;YACL,mCAAyB,CAAC,QAAQ,EAAE,IAAI,CACrC;gBACI,8BAAC,mBAAS,OAAG;gBACb;oBACI,8BAAC,yCAA+B,IAAC,GAAG,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,GAAI,CAC5G,CACP,CACN;YACD,uCAAK,SAAS,EAAC,8CAA8C;gBACzD,8BAAC,wBAAc,IACX,QAAQ,EAAE,aAAa,KAAK,4BAAqB,CAAC,OAAO,IAAI,SAAS,EACtE,IAAI,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EACzD,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,iBAAiB,GAC5B,CACA,CACP,CACN;QAED,8BAAC,oBAAU,IAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc;YAClD,8BAAC,cAAI,QAAE,SAAS,CAAQ,CACf;QACb,8BAAC,kDAAwC,IACrC,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAC1C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EACpC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,GAAS,EAAE;gBAChB,MAAM,CAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,EAAI,CAAA,CAAC;gBAC9B,qBAAqB,CAAC,kBAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACjD,CAAC,CAAA,EACD,SAAS,EAAE,GAAS,EAAE;gBAClB,IAAI,aAAa,KAAK,4BAAqB,CAAC,OAAO,EAAE;oBACjD,oBAAoB,CAAC;wBACjB,WAAW,EAAE,EAAE;wBACf,QAAQ,EAAE,EAAE;qBACf,CAAC,CAAC;iBACN;qBAAM;oBACH,MAAM,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,aAAa,CAAC,eAAe,CAAC,CAAA,CAAC;iBAC5D;YACL,CAAC,CAAA,GACH,CACC,CACV,CAAC;AACN,CAAC;AAzRD,uCAyRC","sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react';\nimport Headline from '@/components/generic/Headline';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { useFormContext } from 'react-hook-form';\nimport RoomContactDetails from '@/components/steps/confirmation/RoomContactDetails';\nimport LineBreak from '@/components/generic/LineBreak';\nimport StepConfirmationPoliciesSection from '@/components/steps/confirmation/StepConfirmationPoliciesSection';\nimport NextStepButton from '@/components/generic/buttons/NextStepButton';\nimport { useTranslation } from 'react-i18next';\nimport { ConfirmationFormContext, useBasket, useBookingEngine, useMemberContext } from '@frontend/contexts';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport SSLSecureBadge from '@/components/generic/badging/SSLSecureBadge';\nimport StepConfirmationCheckoutDifferencesModal from '@/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal';\nimport ErrorModal from '@/components/generic/modal/ErrorModal';\nimport StepConfirmationPolicyBlock from '@/components/steps/confirmation/StepConfirmationPolicyBlock';\n\nimport StepConfirmationAcknowledgement from '@/components/steps/confirmation/StepConfirmationAcknowledgement';\nimport BEButton from '@/components/generic/BEButton';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport StepRoom from '@/pages/steps/StepRoom/StepRoom';\nimport ConfirmationVerifyFeature from '@/providers/feature/ConfirmationVerifyFeature';\nimport TextBox from '@/components/generic/TextBox';\nimport ShowIATANumberOnCheckoutFeature from '@/providers/feature/ShowIATANumberOnCheckoutFeature';\nimport { ConfirmationFormValues, FBookSuccessCallback } from '@/models/Confirmation';\nimport { useConfirmationStep } from 'contexts/ConfirmationStepContext/ConfirmationStepContext';\nimport { useConfirmationQuery } from '@/hooks/ConfirmationQuery';\nimport BasketRowDifferences from '../../../models/BasketRowDifferences';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport { EBookingPaymentMethod, IBookingPayment } from '@roomstay/core';\nimport PaymentInformation from '@/components/steps/confirmation/PaymentInformation';\nimport { useHistoryConsistentPush } from 'hooks/HistoryConsistentPush';\nimport { StepConfirmationCommentsComponent } from '@/components/steps/confirmation/StepConfirmationCommentsComponent';\n\nexport default function StepConfirmationForm() {\n const [differenceWarning, setDifferenceWarning] = useState<{\n differences: BasketRowDifferences[];\n warnings: string[];\n }>({\n differences: [],\n warnings: [],\n });\n const formContext = useContext(ConfirmationFormContext);\n const [source, setSource] = useState('');\n const [confirmationPolicyError, setConfirmationPolicyError] = useState(false);\n const confirmationPolicy = useRef<HTMLInputElement | null>(null);\n const commentTextbox = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n const { t } = useTranslation();\n const { queryPaymentMethod, queryRoomstayId, queryPlanpayCheckoutId } = useConfirmationQuery();\n const context = useBookingEngine();\n const methods = useFormContext<ConfirmationFormValues>();\n const { isBackFromPlanpay, isLoading, apiErrors, clearApiErrors, book, rollbackReservation, commitReservation } = useConfirmationStep();\n const basketContext = useBasket();\n const tokenizerRef = useRef<any | null>(null);\n const historyConsistentPush = useHistoryConsistentPush();\n const { roomstayMember } = useMemberContext();\n\n const toPaymentPayload = async (paymentMethod: string): Promise<IBookingPayment> => {\n let payment: IBookingPayment;\n switch (paymentMethod) {\n case EBookingPaymentMethod.Planpay: {\n const params = new URLSearchParams(window.location.search);\n params.set('roomstayId', '{{rsId}}');\n params.set('session', context.sessionProvider.getCurrentSessionID().toString());\n params.set('paymentMethod', EBookingPaymentMethod.Planpay);\n const redirectURL = `${window.location.origin}${window.location.pathname}${window.location.search}#/step/confirmation/?${params}`;\n payment = {\n Method: EBookingPaymentMethod.Planpay,\n PlanpayCheckoutId: queryPlanpayCheckoutId || undefined,\n RedirectUrl: redirectURL,\n };\n break;\n }\n case EBookingPaymentMethod.Card: {\n payment = {\n Method: EBookingPaymentMethod.Card,\n PaymentCard: await tokenizerRef.current?.getTokenizedCode(),\n };\n break;\n }\n case EBookingPaymentMethod.SavedCard:\n default: {\n payment = {\n Method: EBookingPaymentMethod.SavedCard,\n SavedCardID: paymentMethod,\n };\n }\n }\n\n return payment;\n };\n\n useEffect(() => {\n let defaultPaymentValue = '' as EBookingPaymentMethod;\n if (Object.values(EBookingPaymentMethod).includes(queryPaymentMethod as EBookingPaymentMethod)) {\n defaultPaymentValue = queryPaymentMethod as EBookingPaymentMethod;\n } else {\n if (roomstayMember?.defaultCard && roomstayMember?.cards?.find((card) => card.cardId === roomstayMember?.defaultCard)) {\n defaultPaymentValue = roomstayMember?.defaultCard as EBookingPaymentMethod;\n } else {\n defaultPaymentValue = EBookingPaymentMethod.Card;\n }\n }\n\n methods.setValue('paymentMethod', defaultPaymentValue);\n\n handleChangePaymentMethod(defaultPaymentValue);\n\n if (isBackFromPlanpay) {\n if (queryRoomstayId === basketContext.reservationData?.roomstayId) {\n onPlaypayCallback();\n } else {\n rollbackReservation?.();\n }\n }\n return () => {\n if (!isBackFromPlanpay) rollbackReservation?.();\n };\n }, []);\n\n const onPlaypayCallback = async () => {\n await commitReservation?.(basketContext.reservationData);\n };\n\n const paymentMethod = methods.watch('paymentMethod');\n\n context.engine\n .getSessionProvider()\n .getSession()\n .then((session) => {\n setSource(session.source);\n });\n\n const returnToPickRooms = async () => {\n // TODO: What if StepRoom doesn't exist?\n historyConsistentPush(StepRoom.getStepUrl());\n };\n\n const onNextStepClicked = async () => {\n await handleBook(paymentMethod, async (resData) => commitReservation?.(resData));\n return false;\n };\n\n const validateConfirmationPolicy = (): boolean => {\n return !ConfirmationVerifyFeature.isActive() || !!confirmationPolicy?.current?.checked;\n };\n\n const validateCustomFields = (scrollToInput?: boolean): boolean => {\n const adhocValid = formContext?.errorChecks.every((check) => check().validate(scrollToInput));\n return adhocValid === undefined ? true : adhocValid;\n };\n\n const handleBook = async (paymentMethod: EBookingPaymentMethod, onSuccess?: FBookSuccessCallback): Promise<void> => {\n await book?.(\n async () => toPaymentPayload(paymentMethod),\n commentTextbox.current?.value,\n async (): Promise<boolean> => {\n if (!validateConfirmationPolicy()) {\n setConfirmationPolicyError(true);\n return false;\n }\n if (!validateCustomFields(true)) {\n return false;\n }\n try {\n if (paymentMethod === EBookingPaymentMethod.Card) await tokenizerRef.current.getTokenizedCode();\n return true;\n } catch (e) {\n return false;\n }\n },\n (validationResult) => {\n if (validationResult) {\n setDifferenceWarning(validationResult);\n }\n },\n onSuccess\n );\n };\n\n const handleChangePaymentMethod = async (paymentMethod: string) => {\n if (paymentMethod !== EBookingPaymentMethod.Planpay) {\n await rollbackReservation?.();\n }\n };\n\n return (\n <form>\n {isBackFromPlanpay ? (\n <LargeLoader />\n ) : (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline bold>{t(Translation.Step.Confirmation.GuestDetails)}</Headline>\n </div>\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.AlmostDone, { required: '*' })}</strong>\n </Text>\n </div>\n <RoomContactDetails />\n {source === 'inline' ? (\n <Alert type={AlertType.Accent2} heavyPadding>\n <div className=\"u-flex u-w-100 flex-wrap flex-xl-nowrap\">\n <div>\n <Text color={Color.Accent} bold>\n {t(Translation.Step.Confirmation.WantMoreRooms)}\n </Text>\n <Text color={Color.Navy}>{t(Translation.Step.Confirmation.YouCanAddAndEditRooms)}</Text>\n </div>\n <div className=\"d-flex align-items-center u-marg-top@xl-\">\n <BEButton filled primary icon={IconType.Add} iconPosition=\"left\" onClick={returnToPickRooms}>\n {t(Translation.Step.Confirmation.AddMoreRooms)}\n </BEButton>\n </div>\n </div>\n </Alert>\n ) : (\n <></>\n )}\n {ShowIATANumberOnCheckoutFeature.isActive() && (\n <>\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>Travel Agent</Headline>\n </div>\n\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>\n <strong>{t(Translation.Step.Confirmation.Inputs.IATANumber)}</strong>\n </Text>\n </div>\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.Inputs.IATANumberGuide)}</Text>\n </div>\n <TextBox placeholder={t(Translation.Step.Confirmation.Inputs.IATANumber)} wide {...methods.register('IATANumber')} />\n </div>\n <LineBreak />\n </>\n )}\n <StepConfirmationCommentsComponent inputRef={commentTextbox} />\n <LineBreak />\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Navigation.Menu.PaymentInformation)}</Headline>\n </div>\n <PaymentInformation\n tokenizerRef={tokenizerRef}\n onChangeCb={async (code: string) => {\n await handleChangePaymentMethod(code);\n if (code === EBookingPaymentMethod.Planpay) {\n await handleBook(code);\n }\n }}\n />\n <div className=\"u-marg-top u-flex align-items-center\">\n <div className=\"u-flex align-items-center justify-content-start\">\n <Icon icon={IconType.Lock} color={Color.Success} />\n <div className=\"u-marg-left--light\">\n <Text type={TextType.Small} color={Color.Success}>\n <strong>{t(Translation.Step.Confirmation.Secured)}</strong>\n </Text>\n </div>\n </div>\n <SSLSecureBadge />\n </div>\n </div>\n <LineBreak />\n <StepConfirmationPoliciesSection />\n <div className=\"u-pad-top--light u-marg-bottom\">\n <StepConfirmationPolicyBlock />\n </div>\n {ConfirmationVerifyFeature.isActive() && (\n <>\n <LineBreak />\n <div>\n <StepConfirmationAcknowledgement ref={confirmationPolicy} confirmationPolicyError={confirmationPolicyError} />\n </div>\n </>\n )}\n <div className=\"u-flex u-marg-top--heavy justify-content-end\">\n <NextStepButton\n disabled={paymentMethod === EBookingPaymentMethod.Planpay || isLoading}\n text={t(Translation.Step.Confirmation.ConfirmReservation)}\n isLoading={isLoading}\n onClick={onNextStepClicked}\n />\n </div>\n </>\n )}\n\n <ErrorModal open={!!apiErrors} onClose={clearApiErrors}>\n <Text>{apiErrors}</Text>\n </ErrorModal>\n <StepConfirmationCheckoutDifferencesModal\n differences={differenceWarning.differences}\n warnings={differenceWarning.warnings}\n isLoading={isLoading}\n onClose={async () => {\n await rollbackReservation?.();\n historyConsistentPush(StepRoom.getStepUrl());\n }}\n onProceed={async () => {\n if (paymentMethod === EBookingPaymentMethod.Planpay) {\n setDifferenceWarning({\n differences: [],\n warnings: [],\n });\n } else {\n await commitReservation?.(basketContext.reservationData);\n }\n }}\n />\n </form>\n );\n}\n"]}
@@ -26,16 +26,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importDefault(require("react"));
29
+ const react_1 = __importStar(require("react"));
30
30
  const Alert_1 = __importStar(require("../../generic/Alert"));
31
31
  const Text_1 = __importDefault(require("../../generic/Text"));
32
32
  const Headline_1 = __importDefault(require("../../generic/Headline"));
33
33
  const Countdown_1 = __importDefault(require("../../generic/Countdown"));
34
34
  const Color_1 = require("../../../util/Color");
35
- const react_2 = require("react");
36
35
  const DataLayer_1 = __importStar(require("../../../util/DataLayer"));
36
+ const react_i18next_1 = require("react-i18next");
37
+ const Translation_1 = require("../../../translations/Translation");
37
38
  function StepConfirmationLimitedOffer(props) {
38
- const [flash, setFlash] = (0, react_2.useState)(false);
39
+ const [flash, setFlash] = (0, react_1.useState)(false);
40
+ const { t } = (0, react_i18next_1.useTranslation)();
39
41
  const countdownEndSeen = () => {
40
42
  DataLayer_1.default.instance.sendInteraction('Countdown End Seen', DataLayer_1.InteractionType.LINK, DataLayer_1.InteractionStep.GUEST_DETAILS);
41
43
  setFlash(true);
@@ -44,9 +46,9 @@ function StepConfirmationLimitedOffer(props) {
44
46
  react_1.default.createElement("div", { className: "u-flex w-100 flex-wrap align-items-center" },
45
47
  react_1.default.createElement("div", null,
46
48
  react_1.default.createElement(Text_1.default, null,
47
- react_1.default.createElement("strong", null, "Your room is")),
49
+ react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Confirmation.YourRoomIs))),
48
50
  react_1.default.createElement(Text_1.default, null,
49
- react_1.default.createElement("strong", null, "being held for"))),
51
+ react_1.default.createElement("strong", null, t(Translation_1.Translation.Step.Confirmation.BeingHeldFor)))),
50
52
  react_1.default.createElement("div", { className: flash ? 'a-flash' : '' },
51
53
  react_1.default.createElement(Headline_1.default, { size: "large", bold: true, color: Color_1.Color.White },
52
54
  react_1.default.createElement(Countdown_1.default, { endTimeDate: props.endDate, onEnd: countdownEndSeen }))))));
@@ -1 +1 @@
1
- {"version":3,"file":"StepConfirmationLimitedOffer.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationLimitedOffer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA0B;AAC1B,oEAA8D;AAC9D,qEAA6C;AAC7C,6EAAqD;AACrD,+EAAuD;AACvD,wCAAqC;AACrC,iCAAiC;AACjC,8DAA+E;AAM/E,SAAwB,4BAA4B,CAAC,KAAmC;IACpF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC1B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,EAAE,2BAAe,CAAC,IAAI,EAAE,2BAAe,CAAC,aAAa,CAAC,CAAC;QAC9G,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;IACF,OAAO,CACH,8BAAC,eAAK,IAAC,IAAI,EAAE,iBAAS,CAAC,OAAO;QAC1B,uCAAK,SAAS,EAAC,2CAA2C;YACtD;gBACI,8BAAC,cAAI;oBACD,6DAA6B,CAC1B;gBACP,8BAAC,cAAI;oBACD,+DAA+B,CAC5B,CACL;YACN,uCAAK,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAClC,8BAAC,kBAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,QAAC,KAAK,EAAE,aAAK,CAAC,KAAK;oBAC1C,8BAAC,mBAAS,IAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAI,CAC3D,CACT,CACJ,CACF,CACX,CAAC;AACN,CAAC;AAzBD,+CAyBC","sourcesContent":["import dayjs from 'dayjs';\nimport React from 'react';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Text from '@/components/generic/Text';\nimport Headline from '@/components/generic/Headline';\nimport Countdown from '@/components/generic/Countdown';\nimport { Color } from '@/util/Color';\nimport { useState } from 'react';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\n\ninterface StepConfirmationLimitedOffer {\n endDate: dayjs.Dayjs;\n}\n\nexport default function StepConfirmationLimitedOffer(props: StepConfirmationLimitedOffer) {\n const [flash, setFlash] = useState(false);\n const countdownEndSeen = () => {\n DataLayer.instance.sendInteraction('Countdown End Seen', InteractionType.LINK, InteractionStep.GUEST_DETAILS);\n setFlash(true);\n };\n return (\n <Alert type={AlertType.Accent1}>\n <div className=\"u-flex w-100 flex-wrap align-items-center\">\n <div>\n <Text>\n <strong>Your room is</strong>\n </Text>\n <Text>\n <strong>being held for</strong>\n </Text>\n </div>\n <div className={flash ? 'a-flash' : ''}>\n <Headline size=\"large\" bold color={Color.White}>\n <Countdown endTimeDate={props.endDate} onEnd={countdownEndSeen} />\n </Headline>\n </div>\n </div>\n </Alert>\n );\n}\n"]}
1
+ {"version":3,"file":"StepConfirmationLimitedOffer.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationLimitedOffer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAAwC;AACxC,oEAA8D;AAC9D,qEAA6C;AAC7C,6EAAqD;AACrD,+EAAuD;AACvD,wCAAqC;AACrC,8DAA+E;AAC/E,iDAA+C;AAC/C,4DAAyD;AAMzD,SAAwB,4BAA4B,CAAC,KAAmC;IACpF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC1B,mBAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,EAAE,2BAAe,CAAC,IAAI,EAAE,2BAAe,CAAC,aAAa,CAAC,CAAC;QAC9G,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC;IACF,OAAO,CACH,8BAAC,eAAK,IAAC,IAAI,EAAE,iBAAS,CAAC,OAAO;QAC1B,uCAAK,SAAS,EAAC,2CAA2C;YACtD;gBACI,8BAAC,cAAI;oBACD,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAU,CAC3D;gBACP,8BAAC,cAAI;oBACD,8CAAS,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAU,CAC7D,CACL;YACN,uCAAK,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAClC,8BAAC,kBAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,QAAC,KAAK,EAAE,aAAK,CAAC,KAAK;oBAC1C,8BAAC,mBAAS,IAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAI,CAC3D,CACT,CACJ,CACF,CACX,CAAC;AACN,CAAC;AA1BD,+CA0BC","sourcesContent":["import dayjs from 'dayjs';\nimport React, { useState } from 'react';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport Text from '@/components/generic/Text';\nimport Headline from '@/components/generic/Headline';\nimport Countdown from '@/components/generic/Countdown';\nimport { Color } from '@/util/Color';\nimport DataLayer, { InteractionStep, InteractionType } from '@/util/DataLayer';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from '@/translations/Translation';\n\ninterface StepConfirmationLimitedOffer {\n endDate: dayjs.Dayjs;\n}\n\nexport default function StepConfirmationLimitedOffer(props: StepConfirmationLimitedOffer) {\n const [flash, setFlash] = useState(false);\n const { t } = useTranslation();\n const countdownEndSeen = () => {\n DataLayer.instance.sendInteraction('Countdown End Seen', InteractionType.LINK, InteractionStep.GUEST_DETAILS);\n setFlash(true);\n };\n return (\n <Alert type={AlertType.Accent1}>\n <div className=\"u-flex w-100 flex-wrap align-items-center\">\n <div>\n <Text>\n <strong>{t(Translation.Step.Confirmation.YourRoomIs)}</strong>\n </Text>\n <Text>\n <strong>{t(Translation.Step.Confirmation.BeingHeldFor)}</strong>\n </Text>\n </div>\n <div className={flash ? 'a-flash' : ''}>\n <Headline size=\"large\" bold color={Color.White}>\n <Countdown endTimeDate={props.endDate} onEnd={countdownEndSeen} />\n </Headline>\n </div>\n </div>\n </Alert>\n );\n}\n"]}
@@ -26,8 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importDefault(require("react"));
30
- const react_2 = require("react");
29
+ const react_1 = __importStar(require("react"));
31
30
  const AdditionalOffersColumn_1 = __importDefault(require("./AdditionalOffersColumn"));
32
31
  const web_1 = require("@react-spring/web");
33
32
  const react_use_measure_1 = __importDefault(require("react-use-measure"));
@@ -44,24 +43,23 @@ const AutoAutoHeight_1 = __importDefault(require("../../../../animations/AutoAut
44
43
  const LargeLoader_1 = __importDefault(require("../../../generic/loader/LargeLoader"));
45
44
  const Text_1 = __importDefault(require("../../../generic/Text"));
46
45
  const hooks_1 = require("../../../../hooks/index.js");
47
- const contexts_2 = require("../../../../contexts/index.js");
48
46
  function AdditionalOffers() {
49
- const basketContext = (0, react_2.useContext)(contexts_1.BasketContext);
50
- const ccx = (0, react_2.useContext)(contexts_2.CompanyContext);
47
+ const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
48
+ const ccx = (0, react_1.useContext)(contexts_1.CompanyContext);
51
49
  const { hotel } = (0, hooks_1.useCurrentHotel)();
52
50
  const [{ x }, set] = (0, web_1.useSpring)(() => ({ x: 0 }));
53
51
  const [ref, bounds] = (0, react_use_measure_1.default)();
54
52
  const { t } = (0, react_i18next_1.useTranslation)();
55
53
  const [addons, setAddons] = react_1.default.useState([]);
56
- const [isModalOpen, setIsModalOpen] = (0, react_2.useState)(false);
57
- const [selectedAddon, setSelectedAddon] = (0, react_2.useState)(null);
58
- const [isLoading, setIsLoading] = (0, react_2.useState)(false);
59
- const [lastReleaseX, setLastReleaseX] = (0, react_2.useState)(0);
60
- const [lastIndex, setLastIndex] = (0, react_2.useState)(0);
54
+ const [isModalOpen, setIsModalOpen] = (0, react_1.useState)(false);
55
+ const [selectedAddon, setSelectedAddon] = (0, react_1.useState)(null);
56
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
57
+ const [lastReleaseX, setLastReleaseX] = (0, react_1.useState)(0);
58
+ const [lastIndex, setLastIndex] = (0, react_1.useState)(0);
61
59
  // -1 can't go back
62
60
  // 0 default,
63
61
  // 1 can't go forward;
64
- const [buttonDisabled, setButtonDisabled] = (0, react_2.useState)(-1);
62
+ const [buttonDisabled, setButtonDisabled] = (0, react_1.useState)(-1);
65
63
  react_1.default.useEffect(() => {
66
64
  let isCancelled = false;
67
65
  const rows = basketContext.getAllValidRows();
@@ -125,7 +123,7 @@ function AdditionalOffers() {
125
123
  react_1.default.createElement("div", { className: "u-marg-bottom" },
126
124
  react_1.default.createElement(Headline_1.default, { bold: true }, t(Translation_1.Translation.Step.Confirmation.AdditionalOfferings))),
127
125
  isLoading && (hotel === null || hotel === void 0 ? void 0 : hotel.showAddonLoader) ? (react_1.default.createElement(LargeLoader_1.default, null)) : (addons === null || addons === void 0 ? void 0 : addons.length) === 0 ? (react_1.default.createElement("div", null,
128
- react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey }, "Sorry, there are currently no additional offerings available."))) : (react_1.default.createElement("div", { className: 'additional-offers' + (addons.length > 2 ? '' : ' --wide'), ref: ref },
126
+ react_1.default.createElement(Text_1.default, { color: Color_1.Color.DarkGrey }, t(Translation_1.Translation.Step.Confirmation.NoAdditionalOfferings)))) : (react_1.default.createElement("div", { className: 'additional-offers' + (addons.length > 2 ? '' : ' --wide'), ref: ref },
129
127
  isScrollable && (react_1.default.createElement("div", { className: "additional-offers--navigation" },
130
128
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowLeft2, onClick: prevImage, color: buttonDisabled === -1 ? Color_1.Color.DarkGrey : Color_1.Color.White, backgroundColor: Color_1.Color.Navy, borderRadius: "round", size: "24px" }),
131
129
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight2, onClick: nextImage, color: buttonDisabled === 1 ? Color_1.Color.DarkGrey : Color_1.Color.White, backgroundColor: Color_1.Color.Navy, borderRadius: "round", size: "24px" }))),
@@ -1 +1 @@
1
- {"version":3,"file":"AdditionalOffers.js","sourceRoot":"/","sources":["src/components/steps/confirmation/additionalOffers/AdditionalOffers.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { useContext, useState } from 'react';\nimport AdditionalOffersColumn from '@/components/steps/confirmation/additionalOffers/AdditionalOffersColumn';\nimport { animated, useSpring } from '@react-spring/web';\nimport useMeasure from 'react-use-measure';\nimport { useDrag } from 'react-use-gesture';\nimport AdditionalOffersModal from '@/components/steps/confirmation/additionalOffers/AdditionalOffersModal';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\nimport Headline from '@/components/generic/Headline';\nimport { Translation } from 'translations/Translation';\nimport { useTranslation } from 'react-i18next';\nimport API from '@/api/BookingAPI';\nimport { BasketContext } from '@frontend/contexts';\nimport { Addon } from '@/models/Addon/Addon';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport Text from '@/components/generic/Text';\nimport { useCurrentHotel } from '@frontend/hooks';\nimport { CompanyContext } from '@frontend/contexts';\n\nexport default function AdditionalOffers() {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n\n const { hotel } = useCurrentHotel();\n\n const [{ x }, set] = useSpring(() => ({ x: 0 }));\n const [ref, bounds] = useMeasure();\n const { t } = useTranslation();\n\n const [addons, setAddons] = React.useState<Addon[]>([]);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedAddon, setSelectedAddon] = useState<Addon | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const [lastReleaseX, setLastReleaseX] = useState(0);\n const [lastIndex, setLastIndex] = useState(0);\n\n // -1 can't go back\n // 0 default,\n // 1 can't go forward;\n const [buttonDisabled, setButtonDisabled] = useState(-1);\n\n React.useEffect(() => {\n let isCancelled = false;\n\n const rows = basketContext.getAllValidRows();\n\n setIsLoading(true);\n API.Addons.findAddons(rows, hotel?.hotelID as string).then((foundedAddons) => {\n if (!isCancelled) {\n setIsLoading(false);\n setAddons(foundedAddons);\n }\n });\n\n return () => {\n setIsLoading(false);\n isCancelled = true;\n };\n }, [ccx.currentLanguage]);\n\n const cardWidth = 222;\n\n const isScrollable = cardWidth * addons.length >= bounds.width;\n\n const bind = useDrag(({ down, movement: [mx] }) => {\n animateTrack(down, mx);\n });\n\n const animateTrack = (down: boolean, mx: number) => {\n if (!isScrollable) return;\n\n if (!down) {\n const releasePosition = lastReleaseX + mx;\n const maxX = (addons.length - 1) * cardWidth;\n\n let restingLocation = 0;\n\n if (releasePosition > 0) {\n restingLocation = 0;\n setButtonDisabled(-1);\n } else if (releasePosition < -(maxX - bounds.width + cardWidth)) {\n restingLocation = -(maxX - bounds.width + cardWidth);\n setButtonDisabled(1);\n } else {\n const magic = -releasePosition / cardWidth;\n const lastTempIndex = releasePosition % cardWidth > -cardWidth / 2 ? Math.floor(magic) : Math.ceil(magic);\n restingLocation = -(lastTempIndex * cardWidth);\n\n setLastIndex(lastTempIndex);\n setButtonDisabled(0);\n }\n\n set({ x: restingLocation });\n\n setLastReleaseX(restingLocation);\n } else {\n set({ x: lastReleaseX + mx * 1.5 });\n }\n };\n\n const nextImage = () => {\n animateTrack(false, -cardWidth);\n };\n\n const prevImage = () => {\n animateTrack(false, cardWidth);\n };\n\n const closeModalOnClose = () => {\n setIsModalOpen(false);\n };\n\n return (\n <AutoAutoHeight open={(!isLoading && addons?.length !== 0) || !!hotel?.showAddonLoader}>\n <div className=\"u-pad-bottom--heavy \">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.AdditionalOfferings)}</Headline>\n </div>\n {isLoading && hotel?.showAddonLoader ? (\n <LargeLoader />\n ) : addons?.length === 0 ? (\n <div>\n <Text color={Color.DarkGrey}>Sorry, there are currently no additional offerings available.</Text>\n </div>\n ) : (\n <div className={'additional-offers' + (addons.length > 2 ? '' : ' --wide')} ref={ref}>\n {isScrollable && (\n <div className=\"additional-offers--navigation\">\n <Icon\n icon={IconType.ArrowLeft2}\n onClick={prevImage}\n color={buttonDisabled === -1 ? Color.DarkGrey : Color.White}\n backgroundColor={Color.Navy}\n borderRadius=\"round\"\n size=\"24px\"\n />\n <Icon\n icon={IconType.ArrowRight2}\n onClick={nextImage}\n color={buttonDisabled === 1 ? Color.DarkGrey : Color.White}\n backgroundColor={Color.Navy}\n borderRadius=\"round\"\n size=\"24px\"\n />\n </div>\n )}\n <div className=\"additional-offers--track-container\">\n <animated.div className=\"additional-offers--track\" {...bind()} style={{ left: x }}>\n {addons.map((addon: Addon, index: number) => {\n const onCardClickedHandler = () => {\n setIsModalOpen(true);\n setSelectedAddon(addon);\n };\n return <AdditionalOffersColumn selected={!!basketContext.getRowForAddon(addon)} key={index} addon={addon} cardClicked={onCardClickedHandler} />;\n })}\n </animated.div>\n </div>\n </div>\n )}\n <AdditionalOffersModal\n isOpen={isModalOpen && !!selectedAddon}\n addon={selectedAddon as Addon}\n basketAddonRow={basketContext.getRowForAddon(selectedAddon as Addon)}\n onClose={closeModalOnClose}\n />\n </div>\n </AutoAutoHeight>\n );\n}\n"]}
1
+ {"version":3,"file":"AdditionalOffers.js","sourceRoot":"/","sources":["src/components/steps/confirmation/additionalOffers/AdditionalOffers.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useState } from 'react';\nimport AdditionalOffersColumn from '@/components/steps/confirmation/additionalOffers/AdditionalOffersColumn';\nimport { animated, useSpring } from '@react-spring/web';\nimport useMeasure from 'react-use-measure';\nimport { useDrag } from 'react-use-gesture';\nimport AdditionalOffersModal from '@/components/steps/confirmation/additionalOffers/AdditionalOffersModal';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { Color } from '@/util/Color';\nimport Headline from '@/components/generic/Headline';\nimport { Translation } from 'translations/Translation';\nimport { useTranslation } from 'react-i18next';\nimport API from '@/api/BookingAPI';\nimport { BasketContext, CompanyContext } from '@frontend/contexts';\nimport { Addon } from '@/models/Addon/Addon';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport LargeLoader from '@/components/generic/loader/LargeLoader';\nimport Text from '@/components/generic/Text';\nimport { useCurrentHotel } from '@frontend/hooks';\n\nexport default function AdditionalOffers() {\n const basketContext = useContext(BasketContext);\n const ccx = useContext(CompanyContext);\n\n const { hotel } = useCurrentHotel();\n\n const [{ x }, set] = useSpring(() => ({ x: 0 }));\n const [ref, bounds] = useMeasure();\n const { t } = useTranslation();\n\n const [addons, setAddons] = React.useState<Addon[]>([]);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedAddon, setSelectedAddon] = useState<Addon | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n const [lastReleaseX, setLastReleaseX] = useState(0);\n const [lastIndex, setLastIndex] = useState(0);\n\n // -1 can't go back\n // 0 default,\n // 1 can't go forward;\n const [buttonDisabled, setButtonDisabled] = useState(-1);\n\n React.useEffect(() => {\n let isCancelled = false;\n\n const rows = basketContext.getAllValidRows();\n\n setIsLoading(true);\n API.Addons.findAddons(rows, hotel?.hotelID as string).then((foundedAddons) => {\n if (!isCancelled) {\n setIsLoading(false);\n setAddons(foundedAddons);\n }\n });\n\n return () => {\n setIsLoading(false);\n isCancelled = true;\n };\n }, [ccx.currentLanguage]);\n\n const cardWidth = 222;\n\n const isScrollable = cardWidth * addons.length >= bounds.width;\n\n const bind = useDrag(({ down, movement: [mx] }) => {\n animateTrack(down, mx);\n });\n\n const animateTrack = (down: boolean, mx: number) => {\n if (!isScrollable) return;\n\n if (!down) {\n const releasePosition = lastReleaseX + mx;\n const maxX = (addons.length - 1) * cardWidth;\n\n let restingLocation = 0;\n\n if (releasePosition > 0) {\n restingLocation = 0;\n setButtonDisabled(-1);\n } else if (releasePosition < -(maxX - bounds.width + cardWidth)) {\n restingLocation = -(maxX - bounds.width + cardWidth);\n setButtonDisabled(1);\n } else {\n const magic = -releasePosition / cardWidth;\n const lastTempIndex = releasePosition % cardWidth > -cardWidth / 2 ? Math.floor(magic) : Math.ceil(magic);\n restingLocation = -(lastTempIndex * cardWidth);\n\n setLastIndex(lastTempIndex);\n setButtonDisabled(0);\n }\n\n set({ x: restingLocation });\n\n setLastReleaseX(restingLocation);\n } else {\n set({ x: lastReleaseX + mx * 1.5 });\n }\n };\n\n const nextImage = () => {\n animateTrack(false, -cardWidth);\n };\n\n const prevImage = () => {\n animateTrack(false, cardWidth);\n };\n\n const closeModalOnClose = () => {\n setIsModalOpen(false);\n };\n\n return (\n <AutoAutoHeight open={(!isLoading && addons?.length !== 0) || !!hotel?.showAddonLoader}>\n <div className=\"u-pad-bottom--heavy \">\n <div className=\"u-marg-bottom\">\n <Headline bold>{t(Translation.Step.Confirmation.AdditionalOfferings)}</Headline>\n </div>\n {isLoading && hotel?.showAddonLoader ? (\n <LargeLoader />\n ) : addons?.length === 0 ? (\n <div>\n <Text color={Color.DarkGrey}>{t(Translation.Step.Confirmation.NoAdditionalOfferings)}</Text>\n </div>\n ) : (\n <div className={'additional-offers' + (addons.length > 2 ? '' : ' --wide')} ref={ref}>\n {isScrollable && (\n <div className=\"additional-offers--navigation\">\n <Icon\n icon={IconType.ArrowLeft2}\n onClick={prevImage}\n color={buttonDisabled === -1 ? Color.DarkGrey : Color.White}\n backgroundColor={Color.Navy}\n borderRadius=\"round\"\n size=\"24px\"\n />\n <Icon\n icon={IconType.ArrowRight2}\n onClick={nextImage}\n color={buttonDisabled === 1 ? Color.DarkGrey : Color.White}\n backgroundColor={Color.Navy}\n borderRadius=\"round\"\n size=\"24px\"\n />\n </div>\n )}\n <div className=\"additional-offers--track-container\">\n <animated.div className=\"additional-offers--track\" {...bind()} style={{ left: x }}>\n {addons.map((addon: Addon, index: number) => {\n const onCardClickedHandler = () => {\n setIsModalOpen(true);\n setSelectedAddon(addon);\n };\n return <AdditionalOffersColumn selected={!!basketContext.getRowForAddon(addon)} key={index} addon={addon} cardClicked={onCardClickedHandler} />;\n })}\n </animated.div>\n </div>\n </div>\n )}\n <AdditionalOffersModal\n isOpen={isModalOpen && !!selectedAddon}\n addon={selectedAddon as Addon}\n basketAddonRow={basketContext.getRowForAddon(selectedAddon as Addon)}\n onClose={closeModalOnClose}\n />\n </div>\n </AutoAutoHeight>\n );\n}\n"]}
@@ -30,19 +30,25 @@ const react_1 = __importDefault(require("react"));
30
30
  const Icon_1 = __importStar(require("../../../generic/Icon/Icon"));
31
31
  const Text_1 = __importStar(require("../../../generic/Text"));
32
32
  const Color_1 = require("../../../../util/Color");
33
+ const classnames_1 = __importDefault(require("classnames"));
34
+ const react_i18next_1 = require("react-i18next");
35
+ const Translation_1 = require("../../../../translations/Translation");
33
36
  const ImageProvider_1 = __importStar(require("../../../../providers/ImageProvider"));
34
37
  function AdditionalOffersColumn(props) {
35
38
  const { addon } = props;
39
+ const { t } = (0, react_i18next_1.useTranslation)();
36
40
  const onCardClickHandler = () => {
37
41
  var _a;
38
42
  (_a = props.cardClicked) === null || _a === void 0 ? void 0 : _a.call(props);
39
43
  };
40
- return (react_1.default.createElement("div", { className: 'additional-offers--column ' + (props.selected ? '--selected' : ''), style: { backgroundImage: `url('${addon.image && ImageProvider_1.default.resizeImage(addon.image, ImageProvider_1.ImageSize.Original)}')` }, onClick: onCardClickHandler },
44
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)('additional-offers--column', {
45
+ '--selected': props.selected,
46
+ }), style: { backgroundImage: `url('${addon.image && ImageProvider_1.default.resizeImage(addon.image, ImageProvider_1.ImageSize.Original)}')` }, onClick: onCardClickHandler },
41
47
  react_1.default.createElement("div", { className: "additional-offers--column-body" },
42
48
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.White },
43
49
  react_1.default.createElement("strong", null, addon.name)),
44
50
  react_1.default.createElement("div", { className: "u-flex" },
45
- react_1.default.createElement(Text_1.default, { inline: true, type: Text_1.TextType.Small, color: Color_1.Color.White }, "See details"),
51
+ react_1.default.createElement(Text_1.default, { inline: true, type: Text_1.TextType.Small, color: Color_1.Color.White }, t(Translation_1.Translation.Misc.SeeDetails)),
46
52
  react_1.default.createElement(Icon_1.default, { icon: Icon_1.IconType.ArrowRight, color: Color_1.Color.White })))));
47
53
  }
48
54
  exports.default = AdditionalOffersColumn;
@@ -1 +1 @@
1
- {"version":3,"file":"AdditionalOffersColumn.js","sourceRoot":"/","sources":["src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,uEAAgE;AAChE,kEAA2D;AAC3D,wCAAqC;AAErC,2EAAqE;AAQrE,SAAwB,sBAAsB,CAAC,KAA6B;IACxE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,MAAM,kBAAkB,GAAG,GAAG,EAAE;;QAC5B,MAAA,KAAK,CAAC,WAAW,qDAAI,CAAC;IAC1B,CAAC,CAAC;IACF,OAAO,CACH,uCACI,SAAS,EAAE,4BAA4B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9E,KAAK,EAAE,EAAE,eAAe,EAAE,QAAQ,KAAK,CAAC,KAAK,IAAI,uBAAa,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EACjH,OAAO,EAAE,kBAAkB;QAE3B,uCAAK,SAAS,EAAC,gCAAgC;YAC3C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK;gBAC1C,8CAAS,KAAK,CAAC,IAAI,CAAU,CAC1B;YACP,uCAAK,SAAS,EAAC,QAAQ;gBACnB,8BAAC,cAAI,IAAC,MAAM,QAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,kBAE9C;gBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,GAAI,CACrD,CACJ,CACJ,CACT,CAAC;AACN,CAAC;AAxBD,yCAwBC","sourcesContent":["import React from 'react';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { Addon } from '@/models/Addon/Addon';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\n\nexport interface AdditionalOffersColumn {\n addon: Addon;\n cardClicked?: () => void;\n selected: boolean;\n}\n\nexport default function AdditionalOffersColumn(props: AdditionalOffersColumn) {\n const { addon } = props;\n const onCardClickHandler = () => {\n props.cardClicked?.();\n };\n return (\n <div\n className={'additional-offers--column ' + (props.selected ? '--selected' : '')}\n style={{ backgroundImage: `url('${addon.image && ImageProvider.resizeImage(addon.image, ImageSize.Original)}')` }}\n onClick={onCardClickHandler}\n >\n <div className=\"additional-offers--column-body\">\n <Text type={TextType.Small} color={Color.White}>\n <strong>{addon.name}</strong>\n </Text>\n <div className=\"u-flex\">\n <Text inline type={TextType.Small} color={Color.White}>\n See details\n </Text>\n <Icon icon={IconType.ArrowRight} color={Color.White} />\n </div>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"AdditionalOffersColumn.js","sourceRoot":"/","sources":["src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,uEAAgE;AAChE,kEAA2D;AAC3D,wCAAqC;AAErC,4DAAoC;AACpC,iDAA+C;AAC/C,4DAAyD;AACzD,2EAAqE;AAQrE,SAAwB,sBAAsB,CAAC,KAA6B;IACxE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAExB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAC/B,MAAM,kBAAkB,GAAG,GAAG,EAAE;;QAC5B,MAAA,KAAK,CAAC,WAAW,qDAAI,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACH,uCACI,SAAS,EAAE,IAAA,oBAAU,EAAC,2BAA2B,EAAE;YAC/C,YAAY,EAAE,KAAK,CAAC,QAAQ;SAC/B,CAAC,EACF,KAAK,EAAE,EAAE,eAAe,EAAE,QAAQ,KAAK,CAAC,KAAK,IAAI,uBAAa,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EACjH,OAAO,EAAE,kBAAkB;QAE3B,uCAAK,SAAS,EAAC,gCAAgC;YAC3C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK;gBAC1C,8CAAS,KAAK,CAAC,IAAI,CAAU,CAC1B;YACP,uCAAK,SAAS,EAAC,QAAQ;gBACnB,8BAAC,cAAI,IAAC,MAAM,QAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,IAChD,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAC5B;gBACP,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,aAAK,CAAC,KAAK,GAAI,CACrD,CACJ,CACJ,CACT,CAAC;AACN,CAAC;AA7BD,yCA6BC","sourcesContent":["import React from 'react';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { Addon } from '@/models/Addon/Addon';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from '@/translations/Translation';\nimport ImageProvider, { ImageSize } from '@/providers/ImageProvider';\n\nexport interface AdditionalOffersColumn {\n addon: Addon;\n cardClicked?: () => void;\n selected: boolean;\n}\n\nexport default function AdditionalOffersColumn(props: AdditionalOffersColumn) {\n const { addon } = props;\n\n const { t } = useTranslation();\n const onCardClickHandler = () => {\n props.cardClicked?.();\n };\n\n return (\n <div\n className={classNames('additional-offers--column', {\n '--selected': props.selected,\n })}\n style={{ backgroundImage: `url('${addon.image && ImageProvider.resizeImage(addon.image, ImageSize.Original)}')` }}\n onClick={onCardClickHandler}\n >\n <div className=\"additional-offers--column-body\">\n <Text type={TextType.Small} color={Color.White}>\n <strong>{addon.name}</strong>\n </Text>\n <div className=\"u-flex\">\n <Text inline type={TextType.Small} color={Color.White}>\n {t(Translation.Misc.SeeDetails)}\n </Text>\n <Icon icon={IconType.ArrowRight} color={Color.White} />\n </div>\n </div>\n </div>\n );\n}\n"]}