@roomstay/frontend 2.1.33 → 2.2.1

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 (468) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/213.bundle.js +1 -0
  3. package/dist/279.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/423.bundle.js +1 -1
  6. package/dist/449.bundle.js +1 -1
  7. package/dist/535.bundle.js +1 -1
  8. package/dist/548.bundle.js +1 -0
  9. package/dist/686.bundle.js +1 -0
  10. package/dist/855.bundle.js +1 -1
  11. package/dist/873.bundle.js +1 -1
  12. package/dist/882.bundle.js +1 -1
  13. package/dist/93.bundle.js +1 -0
  14. package/dist/972.bundle.js +1 -1
  15. package/dist/main.bundle.js +1 -2
  16. package/dist/src/api/HotelAPI.d.ts +1 -1
  17. package/dist/src/api/HotelAPI.js.map +1 -1
  18. package/dist/src/api/ReservationAPI.d.ts +0 -6
  19. package/dist/src/api/ReservationAPI.js.map +1 -1
  20. package/dist/src/api/events-service/EventsServiceAPI.d.ts +3 -0
  21. package/dist/src/api/events-service/EventsServiceAPI.js +62 -0
  22. package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -0
  23. package/dist/src/components/Event/EventCarouselContainer.d.ts +8 -0
  24. package/dist/src/components/Event/EventCarouselContainer.js +97 -0
  25. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -0
  26. package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +1 -0
  27. package/dist/src/components/User/Forms/ForgotPasswordForm.js +38 -24
  28. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  29. package/dist/src/components/User/Forms/SignInForm.d.ts +4 -3
  30. package/dist/src/components/User/Forms/SignInForm.js +32 -14
  31. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  32. package/dist/src/components/User/Forms/SignUpForm.d.ts +1 -0
  33. package/dist/src/components/User/Forms/SignUpForm.js +30 -26
  34. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  35. package/dist/src/components/generic/BookingWizard/BookingWizard.js +5 -2
  36. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  37. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +6 -3
  38. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  39. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +8 -5
  40. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  41. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +15 -9
  42. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  43. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +4 -1
  44. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  45. package/dist/src/components/generic/Currency.js +5 -5
  46. package/dist/src/components/generic/Currency.js.map +1 -1
  47. package/dist/src/components/generic/Event/EventCard.d.ts +8 -0
  48. package/dist/src/components/generic/Event/EventCard.js +70 -0
  49. package/dist/src/components/generic/Event/EventCard.js.map +1 -0
  50. package/dist/src/components/generic/Event/EventCarousel.d.ts +9 -0
  51. package/dist/src/components/generic/Event/EventCarousel.js +72 -0
  52. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -0
  53. package/dist/src/components/generic/Headline.d.ts +2 -2
  54. package/dist/src/components/generic/Headline.js +8 -4
  55. package/dist/src/components/generic/Headline.js.map +1 -1
  56. package/dist/src/components/generic/Icon/Icon.d.ts +5 -1
  57. package/dist/src/components/generic/Icon/Icon.js +4 -0
  58. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  59. package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -1
  60. package/dist/src/components/generic/Overlay/Overlay.js +50 -7
  61. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  62. package/dist/src/components/generic/PasswordBox/PasswordBox.js +2 -2
  63. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  64. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.d.ts +8 -0
  65. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js +16 -0
  66. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js.map +1 -0
  67. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.d.ts +8 -0
  68. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +61 -0
  69. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -0
  70. package/dist/src/components/generic/PaymentCard/PaymentCard.js +6 -3
  71. package/dist/src/components/generic/PaymentCard/PaymentCard.js.map +1 -1
  72. package/dist/src/components/generic/PaymentCard/PaymentCardInput.d.ts +2 -3
  73. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +34 -28
  74. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  75. package/dist/src/components/generic/PromoCodeInput.js +15 -18
  76. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  77. package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +5 -4
  78. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +33 -10
  79. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  80. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +14 -11
  81. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +69 -11
  82. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  83. package/dist/src/components/generic/RatioImage/RatioImage.d.ts +11 -0
  84. package/dist/src/components/generic/RatioImage/RatioImage.js +12 -0
  85. package/dist/src/components/generic/RatioImage/RatioImage.js.map +1 -0
  86. package/dist/src/components/generic/RecentSearchesCard.js +6 -5
  87. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  88. package/dist/src/components/generic/Tabs/TabLink.js +28 -3
  89. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  90. package/dist/src/components/generic/TextBox.js +1 -1
  91. package/dist/src/components/generic/TextBox.js.map +1 -1
  92. package/dist/src/components/generic/badging/SSLSecureBadge.js +4 -1
  93. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  94. package/dist/src/components/generic/buttons/NextStepButton.d.ts +0 -3
  95. package/dist/src/components/generic/buttons/NextStepButton.js +4 -1
  96. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  97. package/dist/src/components/generic/loader/LargeLoader.js +31 -6
  98. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  99. package/dist/src/components/generic/modal/ConfirmationModal.js +6 -3
  100. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  101. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.d.ts +14 -2
  102. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +34 -26
  103. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  104. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.d.ts +7 -0
  105. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js +14 -0
  106. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js.map +1 -0
  107. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.d.ts +8 -0
  108. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js +25 -0
  109. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js.map +1 -0
  110. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.d.ts +7 -0
  111. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +49 -0
  112. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -0
  113. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +5 -2
  114. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +30 -39
  115. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  116. package/dist/src/components/generic/print/NoPrint.d.ts +3 -0
  117. package/dist/src/components/generic/print/NoPrint.js +11 -0
  118. package/dist/src/components/generic/print/NoPrint.js.map +1 -0
  119. package/dist/src/components/generic/print/PrintOnly.d.ts +3 -0
  120. package/dist/src/components/generic/print/PrintOnly.js +11 -0
  121. package/dist/src/components/generic/print/PrintOnly.js.map +1 -0
  122. package/dist/src/components/graphics/AddCard.d.ts +7 -0
  123. package/dist/src/components/graphics/AddCard.js +28 -0
  124. package/dist/src/components/graphics/AddCard.js.map +1 -0
  125. package/dist/src/components/graphics/HomeEmptyCard.d.ts +7 -0
  126. package/dist/src/components/graphics/HomeEmptyCard.js +53 -0
  127. package/dist/src/components/graphics/HomeEmptyCard.js.map +1 -0
  128. package/dist/src/components/graphics/HomeEmptyReservation.d.ts +7 -0
  129. package/dist/src/components/graphics/HomeEmptyReservation.js +136 -0
  130. package/dist/src/components/graphics/HomeEmptyReservation.js.map +1 -0
  131. package/dist/src/components/iconComponents/CreditCardOff.d.ts +6 -0
  132. package/dist/src/components/iconComponents/CreditCardOff.js +16 -0
  133. package/dist/src/components/iconComponents/CreditCardOff.js.map +1 -0
  134. package/dist/src/components/members/EditMyProfile.js +19 -21
  135. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  136. package/dist/src/components/navigation/Header.js +29 -9
  137. package/dist/src/components/navigation/Header.js.map +1 -1
  138. package/dist/src/components/navigation/StepSelector.js +2 -1
  139. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  140. package/dist/src/components/pages/Account/Card/MemberCardItem.js +5 -2
  141. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  142. package/dist/src/components/reservation/EmptyReservation.js +3 -3
  143. package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
  144. package/dist/src/components/reservation/ReservationItem.d.ts +4 -3
  145. package/dist/src/components/reservation/ReservationItem.js +45 -33
  146. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  147. package/dist/src/components/reservation/ReservationList.d.ts +2 -2
  148. package/dist/src/components/reservation/ReservationList.js +1 -1
  149. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  150. package/dist/src/components/steps/DaysSelectedInformer.js +15 -10
  151. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  152. package/dist/src/components/steps/addons/AddonCard.js +10 -12
  153. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  154. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  155. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +26 -7
  156. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  157. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.d.ts +1 -2
  158. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +36 -44
  159. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  160. package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +7 -0
  161. package/dist/src/components/steps/confirmation/PaymentInformation.js +119 -0
  162. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -0
  163. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +12 -10
  164. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  165. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +43 -80
  166. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  167. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +7 -5
  168. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  169. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +10 -12
  170. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  171. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +8 -2
  172. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  173. package/dist/src/components/steps/date/PeoplePicker.js +9 -9
  174. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  175. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  176. package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +1 -1
  177. package/dist/src/components/steps/date/StepOneNextStepButton.js +2 -4
  178. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  179. package/dist/src/components/steps/hotel/HotelCard.js +5 -11
  180. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  181. package/dist/src/components/steps/hotel/HotelCardModal.js +5 -6
  182. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  183. package/dist/src/components/steps/hotel/HotelSearchParameters.js +8 -8
  184. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  185. package/dist/src/components/steps/room/AvailableUpgradesModal.js +8 -9
  186. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  187. package/dist/src/components/steps/room/InactivityWindow.js +3 -5
  188. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  189. package/dist/src/components/steps/room/LargeRoomCard.js +5 -4
  190. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  191. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +42 -40
  192. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  193. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +7 -9
  194. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  195. package/dist/src/components/steps/room/RatesNotFound.js +6 -3
  196. package/dist/src/components/steps/room/RatesNotFound.js.map +1 -1
  197. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +3 -3
  198. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  199. package/dist/src/components/steps/room/StepRoomNextStepButton.d.ts +2 -1
  200. package/dist/src/components/steps/room/StepRoomNextStepButton.js +3 -3
  201. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  202. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +2 -6
  203. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  204. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +1 -0
  205. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
  206. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +16 -18
  207. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  208. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +2 -2
  209. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  210. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +6 -3
  211. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  212. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +3 -1
  213. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  214. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +7 -8
  215. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  216. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +4 -6
  217. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  218. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +4 -5
  219. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  220. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +7 -5
  221. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  222. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +4 -1
  223. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  224. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +5 -2
  225. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  226. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +11 -10
  227. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  228. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +1 -1
  229. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  230. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +7 -8
  231. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  232. package/dist/src/components/summary/BEMobileSummaryModal.js +1 -1
  233. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  234. package/dist/src/components/summary/BESummaryPerkBlock.js +4 -1
  235. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  236. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +5 -10
  237. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  238. package/dist/src/components/summary/BESummaryRoomRow.js +4 -6
  239. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  240. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +5 -1
  241. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  242. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
  243. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  244. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +36 -13
  245. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  246. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +26 -2
  247. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  248. package/dist/src/contexts/ConfirmationFormContext.d.ts +0 -2
  249. package/dist/src/contexts/ConfirmationFormContext.js +0 -3
  250. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  251. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +13 -8
  252. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  253. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +1 -6
  254. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +24 -18
  255. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  256. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  257. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  258. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +10 -6
  259. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  260. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +76 -26
  261. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  262. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +8 -5
  263. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.js.map +1 -1
  264. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +35 -4
  265. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  266. package/dist/src/engines/BaseEngine.d.ts +2 -1
  267. package/dist/src/engines/BaseEngine.js +1 -1
  268. package/dist/src/engines/BaseEngine.js.map +1 -1
  269. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  270. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +24 -25
  271. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  272. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.d.ts +22 -0
  273. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +33 -0
  274. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -0
  275. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +6 -0
  276. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +116 -0
  277. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -0
  278. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +11 -10
  279. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  280. package/dist/src/errors/GetAvailabilityError.d.ts +2 -1
  281. package/dist/src/errors/GetAvailabilityError.js +10 -3
  282. package/dist/src/errors/GetAvailabilityError.js.map +1 -1
  283. package/dist/src/hooks/HistoryConsistentPush.d.ts +1 -0
  284. package/dist/src/hooks/HistoryConsistentPush.js +12 -0
  285. package/dist/src/hooks/HistoryConsistentPush.js.map +1 -0
  286. package/dist/src/hooks/LoggedInUserHook.d.ts +3 -3
  287. package/dist/src/hooks/Query.js +2 -6
  288. package/dist/src/hooks/Query.js.map +1 -1
  289. package/dist/src/hooks/UpdateQueryParameters.d.ts +1 -0
  290. package/dist/src/hooks/UpdateQueryParameters.js +16 -0
  291. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -0
  292. package/dist/src/hooks/VGSHooks.d.ts +11 -1
  293. package/dist/src/hooks/VGSHooks.js +26 -11
  294. package/dist/src/hooks/VGSHooks.js.map +1 -1
  295. package/dist/src/index.d.ts +2 -3
  296. package/dist/src/index.js +2 -0
  297. package/dist/src/index.js.map +1 -1
  298. package/dist/src/mockApi/HotelAPI.d.ts +1 -1
  299. package/dist/src/mockApi/HotelAPI.js.map +1 -1
  300. package/dist/src/models/Api/HotelDTO.d.ts +11 -3
  301. package/dist/src/models/Api/HotelDTO.js +17 -8
  302. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  303. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  304. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  305. package/dist/src/models/Api/ReservationsDTO.d.ts +2 -0
  306. package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
  307. package/dist/src/models/AppQueryParameters.d.ts +14 -0
  308. package/dist/src/models/AppQueryParameters.js +19 -0
  309. package/dist/src/models/AppQueryParameters.js.map +1 -0
  310. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +2 -2
  311. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  312. package/dist/src/models/Client/Hotel/ColorProfile.d.ts +3 -0
  313. package/dist/src/models/Client/Hotel/ColorProfile.js.map +1 -1
  314. package/dist/src/models/Client/Hotel/Company.d.ts +2 -2
  315. package/dist/src/models/Client/Hotel/Company.js.map +1 -1
  316. package/dist/src/models/Client/Hotel/Hotel.d.ts +15 -5
  317. package/dist/src/models/Client/Hotel/Hotel.js +3 -1
  318. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  319. package/dist/src/models/Confirmation.d.ts +1 -1
  320. package/dist/src/models/Confirmation.js.map +1 -1
  321. package/dist/src/models/Room/Filters/Filter.d.ts +2 -1
  322. package/dist/src/models/Room/Filters/Filter.js.map +1 -1
  323. package/dist/src/models/Room/Filters/RateTypeFilter.d.ts +2 -1
  324. package/dist/src/models/Room/Filters/RateTypeFilter.js +3 -2
  325. package/dist/src/models/Room/Filters/RateTypeFilter.js.map +1 -1
  326. package/dist/src/models/Room/Filters/RoomTypeFilter.d.ts +2 -1
  327. package/dist/src/models/Room/Filters/RoomTypeFilter.js +3 -2
  328. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  329. package/dist/src/pages/account/AccountHome/AccountHomePage.js +9 -10
  330. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  331. package/dist/src/pages/account/AccountRouter.js +7 -9
  332. package/dist/src/pages/account/AccountRouter.js.map +1 -1
  333. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +19 -32
  334. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  335. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +9 -7
  336. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  337. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +25 -38
  338. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  339. package/dist/src/pages/account/Help/AccountHelpPage.js +16 -25
  340. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  341. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +68 -52
  342. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  343. package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
  344. package/dist/src/pages/findReservation/FindReservation.js +40 -23
  345. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  346. package/dist/src/pages/findReservation/ReservationRow.js +10 -9
  347. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  348. package/dist/src/pages/findReservation/ReservationRowModal.js +3 -3
  349. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  350. package/dist/src/pages/hotel/HotelInfo.js +6 -6
  351. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  352. package/dist/src/pages/steps/Step.d.ts +2 -2
  353. package/dist/src/pages/steps/Step.js.map +1 -1
  354. package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +2 -2
  355. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  356. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.d.ts +2 -2
  357. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  358. package/dist/src/pages/steps/StepDate/StepDate.d.ts +2 -2
  359. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  360. package/dist/src/pages/steps/StepDate/StepDateComponent.js +1 -1
  361. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  362. package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +2 -2
  363. package/dist/src/pages/steps/StepHotel/StepHotel.js.map +1 -1
  364. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +10 -7
  365. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  366. package/dist/src/pages/steps/StepRoom/StepRoom.d.ts +2 -2
  367. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  368. package/dist/src/pages/steps/StepThanks/StepThanks.d.ts +2 -2
  369. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  370. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +5 -0
  371. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  372. package/dist/src/providers/FeatureProvider.js +2 -0
  373. package/dist/src/providers/FeatureProvider.js.map +1 -1
  374. package/dist/src/providers/RoomstayThemeEngine.d.ts +3 -3
  375. package/dist/src/providers/RoomstayThemeEngine.js +4 -18
  376. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  377. package/dist/src/providers/feature/ModifyBookingFeature.d.ts +6 -0
  378. package/dist/src/providers/feature/ModifyBookingFeature.js +10 -0
  379. package/dist/src/providers/feature/ModifyBookingFeature.js.map +1 -0
  380. package/dist/src/stories/EventCarousel.stories.d.ts +6 -0
  381. package/dist/src/stories/EventCarousel.stories.js +236 -0
  382. package/dist/src/stories/EventCarousel.stories.js.map +1 -0
  383. package/dist/src/stories/RadioButton.stories.d.ts +3 -3
  384. package/dist/src/stories/RadioButtonGroup.stories.d.ts +4 -1
  385. package/dist/src/stories/RadioButtonGroup.stories.js +73 -1
  386. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  387. package/dist/src/translations/Translation.d.ts +196 -8
  388. package/dist/src/translations/Translation.js +198 -10
  389. package/dist/src/translations/Translation.js.map +1 -1
  390. package/dist/src/translations/languages/en-gb.js +198 -10
  391. package/dist/src/translations/languages/en-gb.js.map +1 -1
  392. package/dist/src/util/Color.d.ts +3 -0
  393. package/dist/src/util/Color.js +21 -1
  394. package/dist/src/util/Color.js.map +1 -1
  395. package/dist/src/util/CurrencyHelper.d.ts +11 -3
  396. package/dist/src/util/CurrencyHelper.js +306 -5
  397. package/dist/src/util/CurrencyHelper.js.map +1 -1
  398. package/dist/src/util/EventsHelper.d.ts +11 -0
  399. package/dist/src/util/EventsHelper.js +43 -0
  400. package/dist/src/util/EventsHelper.js.map +1 -0
  401. package/dist/src/util/StringHelper.d.ts +2 -2
  402. package/dist/src/util/StringHelper.js +5 -4
  403. package/dist/src/util/StringHelper.js.map +1 -1
  404. package/dist/src/util/TextAlignment.d.ts +2 -1
  405. package/dist/src/util/TextAlignment.js +1 -0
  406. package/dist/src/util/TextAlignment.js.map +1 -1
  407. package/dist/src/util/Validation.d.ts +17 -13
  408. package/dist/src/util/Validation.js +34 -18
  409. package/dist/src/util/Validation.js.map +1 -1
  410. package/dist/test.bundle.js +1 -2
  411. package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +1 -0
  412. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +41 -0
  413. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +1 -0
  414. package/dist/tests/jest/events/EventManager.test.d.ts +1 -0
  415. package/dist/tests/jest/events/EventManager.test.js +101 -0
  416. package/dist/tests/jest/events/EventManager.test.js.map +1 -0
  417. package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +1 -0
  418. package/dist/tests/jest/helpers/ObjectHelper.test.js +72 -0
  419. package/dist/tests/jest/helpers/ObjectHelper.test.js.map +1 -0
  420. package/dist/tests/jest/models/RoomRate.test.d.ts +1 -0
  421. package/dist/tests/jest/models/RoomRate.test.js +133 -0
  422. package/dist/tests/jest/models/RoomRate.test.js.map +1 -0
  423. package/dist/tests/jest/providers/LanguageProvider.test.d.ts +1 -0
  424. package/dist/tests/jest/providers/LanguageProvider.test.js +32 -0
  425. package/dist/tests/jest/providers/LanguageProvider.test.js.map +1 -0
  426. package/dist/tests/jest/providers/SessionProvider.test.d.ts +1 -0
  427. package/dist/tests/jest/providers/SessionProvider.test.js +230 -0
  428. package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -0
  429. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +1 -0
  430. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +126 -0
  431. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -0
  432. package/dist/tests/jest/reducers/BasketReducer.test.d.ts +1 -0
  433. package/dist/tests/jest/reducers/BasketReducer.test.js +103 -0
  434. package/dist/tests/jest/reducers/BasketReducer.test.js.map +1 -0
  435. package/dist/tests/offline/RoomstayBestRateAlert.d.ts +1 -0
  436. package/dist/tests/offline/RoomstayBestRateAlert.js +48 -0
  437. package/dist/tests/offline/RoomstayBestRateAlert.js.map +1 -0
  438. package/dist/tests/offline/entry/RSCompany.js +7 -2
  439. package/dist/tests/offline/entry/RSCompany.js.map +1 -1
  440. package/dist/tests/offline/entry/ReactWrapper.d.ts +1 -0
  441. package/dist/tests/offline/entry/ReactWrapper.js +140 -0
  442. package/dist/tests/offline/entry/ReactWrapper.js.map +1 -0
  443. package/dist/tests/offline/entry/allEngines.d.ts +1 -0
  444. package/dist/tests/offline/entry/allEngines.js +50 -0
  445. package/dist/tests/offline/entry/allEngines.js.map +1 -0
  446. package/dist/tests/offline/entry/components/TestPicker.d.ts +1 -0
  447. package/dist/tests/offline/entry/components/TestPicker.js +214 -0
  448. package/dist/tests/offline/entry/components/TestPicker.js.map +1 -0
  449. package/dist/tests/offline/entry/context/EngineContext.d.ts +9 -0
  450. package/dist/tests/offline/entry/context/EngineContext.js +37 -0
  451. package/dist/tests/offline/entry/context/EngineContext.js.map +1 -0
  452. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.d.ts +1 -0
  453. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js +68 -0
  454. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js.map +1 -0
  455. package/dist/tests/setupTests.d.ts +0 -0
  456. package/dist/tests/setupTests.js +12 -0
  457. package/dist/tests/setupTests.js.map +1 -0
  458. package/dist/vendors.bundle.js +1 -1
  459. package/package.json +3 -3
  460. package/dist/14.bundle.js +0 -1
  461. package/dist/559.bundle.js +0 -1
  462. package/dist/848.bundle.js +0 -1
  463. package/dist/962.bundle.js +0 -1
  464. package/dist/main.bundle.js.LICENSE.txt +0 -5
  465. package/dist/src/components/temp/Login.d.ts +0 -2
  466. package/dist/src/components/temp/Login.js +0 -79
  467. package/dist/src/components/temp/Login.js.map +0 -1
  468. package/dist/test.bundle.js.LICENSE.txt +0 -5
@@ -1,12 +1,31 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
4
24
  };
5
25
  Object.defineProperty(exports, "__esModule", { value: true });
6
26
  exports.ExistingCardPicker = void 0;
7
- const react_1 = __importDefault(require("react"));
27
+ const react_1 = __importStar(require("react"));
8
28
  const LoggedInUserHook_1 = require("../../../../hooks/LoggedInUserHook");
9
- const react_2 = require("react");
10
29
  const contexts_1 = require("../../../../contexts/index.js");
11
30
  const MemberCardItem_1 = require("../../../pages/Account/Card/MemberCardItem");
12
31
  /*
@@ -14,9 +33,9 @@ const MemberCardItem_1 = require("../../../pages/Account/Card/MemberCardItem");
14
33
  */
15
34
  const ExistingCardPicker = (props) => {
16
35
  const { user } = (0, LoggedInUserHook_1.useMember)();
17
- const { cards } = (0, react_2.useContext)(contexts_1.RoomstayMemberContext);
18
- const [selectedCardId, setSelectedCardId] = (0, react_2.useState)();
19
- (0, react_2.useEffect)(() => {
36
+ const { cards } = (0, react_1.useContext)(contexts_1.RoomstayMemberContext);
37
+ const [selectedCardId, setSelectedCardId] = (0, react_1.useState)();
38
+ (0, react_1.useEffect)(() => {
20
39
  if ((user === null || user === void 0 ? void 0 : user.defaultCard) && cards) {
21
40
  for (const card of cards) {
22
41
  if (user.defaultCard === card.cardId) {
@@ -1 +1 @@
1
- {"version":3,"file":"ExistingCardPicker.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+DAAqD;AAGrD,iCAAwD;AACxD,iDAA2D;AAC3D,mFAAgF;AAMhF;;EAEE;AACK,MAAM,kBAAkB,GAAG,CAAC,KAAyB,EAAE,EAAE;IAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,4BAAS,GAAE,CAAC;IAE7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,GAAkC,CAAC;IAEvF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,KAAI,KAAK,EAAE;YAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACtB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,EAAE;oBAClC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACpC,OAAO;iBACV;aACJ;SACJ;QAED,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;YACf,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACtC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAElB,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAE,EAAE;QAC9C,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,CACH;QACI,2CACK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC,CAAC;YAEF,OAAO,8BAAC,+BAAc,IAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;QACtH,CAAC,CAAC,CACA,CACP,CACN,CAAC;AACN,CAAC,CAAC;AAtCW,QAAA,kBAAkB,sBAsC7B","sourcesContent":["import React from 'react';\nimport { useMember } from '@/hooks/LoggedInUserHook';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport { Select } from '@/components/generic/Select/Select';\nimport { useContext, useEffect, useState } from 'react';\nimport { RoomstayMemberContext } from '@frontend/contexts';\nimport { MemberCardItem } from '@/components/pages/Account/Card/MemberCardItem';\n\ntype ExistingCardPicker = {\n onCardSelected: (card: IRoomstayMemberCards) => void;\n};\n\n/*\n Component assumes that parent checks if member is already logged in\n*/\nexport const ExistingCardPicker = (props: ExistingCardPicker) => {\n const { user } = useMember();\n\n const { cards } = useContext(RoomstayMemberContext);\n const [selectedCardId, setSelectedCardId] = useState<IRoomstayMemberCards['cardId']>();\n\n useEffect(() => {\n if (user?.defaultCard && cards) {\n for (const card of cards) {\n if (user.defaultCard === card.cardId) {\n setSelectedCardId(user.defaultCard);\n return;\n }\n }\n }\n\n if (cards?.length) {\n setSelectedCardId(cards[0].cardId);\n }\n }, [user, cards]);\n\n const onSelectedCardChanged = (newCard: string) => {\n setSelectedCardId(newCard);\n };\n\n return (\n <>\n <div>\n {cards?.map((card, index) => {\n const onClickCard = () => {\n onSelectedCardChanged(card.cardId);\n };\n\n return <MemberCardItem key={index} selected={selectedCardId === card.cardId} onClick={onClickCard} item={card} />;\n })}\n </div>\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"ExistingCardPicker.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA+D;AAC/D,+DAAqD;AAErD,iDAA2D;AAC3D,mFAAgF;AAMhF;;EAEE;AACK,MAAM,kBAAkB,GAAG,CAAC,KAAyB,EAAE,EAAE;IAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,4BAAS,GAAE,CAAC;IAE7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,kBAAU,EAAC,gCAAqB,CAAC,CAAC;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,GAAkC,CAAC;IAEvF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,KAAI,KAAK,EAAE;YAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACtB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,EAAE;oBAClC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACpC,OAAO;iBACV;aACJ;SACJ;QAED,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;YACf,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACtC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAElB,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAE,EAAE;QAC9C,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEF,OAAO,CACH;QACI,2CACK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC,CAAC;YAEF,OAAO,8BAAC,+BAAc,IAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;QACtH,CAAC,CAAC,CACA,CACP,CACN,CAAC;AACN,CAAC,CAAC;AAtCW,QAAA,kBAAkB,sBAsC7B","sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\nimport { useMember } from '@/hooks/LoggedInUserHook';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport { RoomstayMemberContext } from '@frontend/contexts';\nimport { MemberCardItem } from '@/components/pages/Account/Card/MemberCardItem';\n\ntype ExistingCardPicker = {\n onCardSelected: (card: IRoomstayMemberCards) => void;\n};\n\n/*\n Component assumes that parent checks if member is already logged in\n*/\nexport const ExistingCardPicker = (props: ExistingCardPicker) => {\n const { user } = useMember();\n\n const { cards } = useContext(RoomstayMemberContext);\n const [selectedCardId, setSelectedCardId] = useState<IRoomstayMemberCards['cardId']>();\n\n useEffect(() => {\n if (user?.defaultCard && cards) {\n for (const card of cards) {\n if (user.defaultCard === card.cardId) {\n setSelectedCardId(user.defaultCard);\n return;\n }\n }\n }\n\n if (cards?.length) {\n setSelectedCardId(cards[0].cardId);\n }\n }, [user, cards]);\n\n const onSelectedCardChanged = (newCard: string) => {\n setSelectedCardId(newCard);\n };\n\n return (\n <>\n <div>\n {cards?.map((card, index) => {\n const onClickCard = () => {\n onSelectedCardChanged(card.cardId);\n };\n\n return <MemberCardItem key={index} selected={selectedCardId === card.cardId} onClick={onClickCard} item={card} />;\n })}\n </div>\n </>\n );\n};\n"]}
@@ -1,3 +1,2 @@
1
1
  import React from 'react';
2
- declare const _default: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
3
- export default _default;
2
+ export declare const StepConfirmationVGSPaymentInput: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
@@ -26,8 +26,8 @@ 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
+ exports.StepConfirmationVGSPaymentInput = void 0;
30
+ const react_1 = __importStar(require("react"));
31
31
  const InputGroup_1 = __importDefault(require("../../../generic/InputGroup/InputGroup"));
32
32
  const AutoAutoHeight_1 = __importDefault(require("../../../../animations/AutoAutoHeight"));
33
33
  const Alert_1 = __importStar(require("../../../generic/Alert"));
@@ -38,13 +38,11 @@ const Translation_1 = require("translations/Translation");
38
38
  const HotelDTO_1 = require("../../../../models/Api/HotelDTO");
39
39
  const hooks_1 = require("../../../../hooks/index.js");
40
40
  const VGSHooks_1 = require("../../../../hooks/VGSHooks");
41
- const ExistingCardPicker_1 = require("./ExistingCardPicker");
42
41
  const AcceptablePaymentCard_1 = __importDefault(require("./AcceptablePaymentCard"));
43
- function StepConfirmationPaymentDetails(props, ref) {
42
+ exports.StepConfirmationVGSPaymentInput = (0, react_1.forwardRef)(function ForwardedStepConfirmationVGSPaymentInput(props, ref) {
44
43
  var _a;
45
44
  const { hotel } = (0, hooks_1.useCurrentHotel)();
46
- const member = (0, hooks_1.useMember)();
47
- const [errors, setErrors] = (0, react_2.useState)({});
45
+ const [errors, setErrors] = (0, react_1.useState)({});
48
46
  const { t } = (0, react_i18next_1.useTranslation)();
49
47
  const { focusElement } = (0, hooks_1.useWindowScroll)();
50
48
  const vgsInputCss = {
@@ -55,7 +53,7 @@ function StepConfirmationPaymentDetails(props, ref) {
55
53
  opacity: 1,
56
54
  },
57
55
  };
58
- const { fields: [cardNumber, nameOnCard, expirationDate, securityCode], triggerFieldUpdate, vgsForm, } = (0, VGSHooks_1.useVgsCollect)([
56
+ const { fields: [cardNumber, nameOnCard, expirationDate, securityCode], vgsForm, } = (0, VGSHooks_1.useVgsCollect)([
59
57
  {
60
58
  label: t(Translation_1.Translation.Step.Confirmation.Inputs.CardNumber),
61
59
  name: 'credit-card',
@@ -107,29 +105,29 @@ function StepConfirmationPaymentDetails(props, ref) {
107
105
  let name = '';
108
106
  switch (input) {
109
107
  case 'credit-card':
110
- name = 'Credit Card';
108
+ name = t(Translation_1.Translation.Step.Confirmation.Inputs.CardNumber);
111
109
  break;
112
110
  case 'expiration-date':
113
- name = 'Expiration Date';
111
+ name = t(Translation_1.Translation.Step.Confirmation.Inputs.CardExpiry);
114
112
  break;
115
113
  case 'security-code':
116
- name = 'Security Code';
114
+ name = t(Translation_1.Translation.Step.Confirmation.Inputs.SecurityCode);
117
115
  break;
118
116
  default:
119
- name = 'Card Name';
117
+ name = t(Translation_1.Translation.Step.Confirmation.Inputs.NameOnCard);
120
118
  break;
121
119
  }
122
120
  newErrors[input] = name + ' ' + faults[input].errorMessages[faults[input].errorMessages.length - 1];
123
121
  });
124
122
  setErrors(newErrors);
125
123
  };
126
- (0, react_2.useEffect)(() => {
124
+ (0, react_1.useEffect)(() => {
127
125
  var _a, _b;
128
126
  if (errors && Object.keys(errors).length !== 0 && ((_a = cardNumber === null || cardNumber === void 0 ? void 0 : cardNumber.ref) === null || _a === void 0 ? void 0 : _a.current)) {
129
127
  focusElement((_b = cardNumber === null || cardNumber === void 0 ? void 0 : cardNumber.ref) === null || _b === void 0 ? void 0 : _b.current);
130
128
  }
131
129
  }, [errors]);
132
- (0, react_2.useImperativeHandle)(ref, () => ({
130
+ (0, react_1.useImperativeHandle)(ref, () => ({
133
131
  getTokenizedCode: () => new Promise((resolve, reject) => {
134
132
  if (vgsForm) {
135
133
  vgsForm.submit('/post', {
@@ -141,10 +139,10 @@ function StepConfirmationPaymentDetails(props, ref) {
141
139
  if (!expMatch || expMatch[1].length > 2 || (expMatch[2].length !== 4 && expMatch[2].length !== 2)) {
142
140
  setErrorsOnFaults({
143
141
  'expiration-date': {
144
- errorMessages: ['Invalid - it must be in the format MM / YY or MM / YYYY'],
142
+ errorMessages: [t(Translation_1.Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid)],
145
143
  },
146
144
  });
147
- reject('invalid expiration date');
145
+ reject(t(Translation_1.Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid));
148
146
  return;
149
147
  }
150
148
  const expiration = (expMatch[1].length === 1 ? '0' : '') + expMatch[1] + (expMatch[2].length === 2 ? expMatch[2] : expMatch[2].substr(2));
@@ -166,7 +164,7 @@ function StepConfirmationPaymentDetails(props, ref) {
166
164
  }
167
165
  }),
168
166
  }));
169
- const formRef = (0, react_2.useRef)(null);
167
+ const formRef = (0, react_1.useRef)(null);
170
168
  const inputNames = ['credit-card', 'card-name', 'expiration-date', 'security-code'];
171
169
  const cardTypes = ((_a = hotel === null || hotel === void 0 ? void 0 : hotel.paymentCardTypes) !== null && _a !== void 0 ? _a : [])
172
170
  .map((card) => {
@@ -180,34 +178,28 @@ function StepConfirmationPaymentDetails(props, ref) {
180
178
  };
181
179
  })
182
180
  .filter((obj) => obj);
183
- const onMemberCardSelected = (card) => {
184
- // TODO:
185
- };
186
181
  return (react_1.default.createElement("div", null,
187
- react_1.default.createElement("div", null, !!member.user && react_1.default.createElement(ExistingCardPicker_1.ExistingCardPicker, { onCardSelected: onMemberCardSelected })),
188
- react_1.default.createElement("div", null,
189
- inputNames.map((name) => {
190
- const errorMessage = errors[name];
191
- return (react_1.default.createElement(AutoAutoHeight_1.default, { open: !!errorMessage, key: name },
192
- react_1.default.createElement("div", { className: "u-flex" },
193
- react_1.default.createElement(Alert_1.default, { type: Alert_1.AlertType.Danger, icon: Icon_1.IconType.Error },
194
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, errorMessage)))));
195
- }),
196
- react_1.default.createElement("div", { className: "u-marg-bottom" },
197
- react_1.default.createElement(AcceptablePaymentCard_1.default, { isCurrent: (cardKey) => {
198
- var _a;
199
- return cardNumber.state.cardType !== null && ((_a = cardTypes[cardKey]) === null || _a === void 0 ? void 0 : _a.name) === cardNumber.state.cardType;
200
- }, isDefault: (cardKey) => {
201
- return cardNumber.state.cardType === null;
202
- } })),
203
- react_1.default.createElement("form", { ref: formRef },
182
+ inputNames.map((name) => {
183
+ const errorMessage = errors[name];
184
+ return (react_1.default.createElement(AutoAutoHeight_1.default, { open: !!errorMessage, key: name },
185
+ react_1.default.createElement("div", { className: "u-flex" },
186
+ react_1.default.createElement(Alert_1.default, { type: Alert_1.AlertType.Danger, icon: Icon_1.IconType.Error },
187
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, errorMessage)))));
188
+ }),
189
+ react_1.default.createElement("div", { className: "u-marg-bottom" },
190
+ react_1.default.createElement(AcceptablePaymentCard_1.default, { isCurrent: (cardKey) => {
191
+ var _a;
192
+ return cardNumber.state.cardType !== null && ((_a = cardTypes[cardKey]) === null || _a === void 0 ? void 0 : _a.name) === cardNumber.state.cardType;
193
+ }, isDefault: (cardKey) => {
194
+ return cardNumber.state.cardType === null;
195
+ } })),
196
+ react_1.default.createElement("form", { ref: formRef },
197
+ react_1.default.createElement(InputGroup_1.default, { dimensions: "2/2" },
198
+ react_1.default.createElement("div", { className: cardNumber.getClasses(), ref: cardNumber.ref }),
204
199
  react_1.default.createElement(InputGroup_1.default, { dimensions: "2/2" },
205
- react_1.default.createElement("div", { className: cardNumber.getClasses(), ref: cardNumber.ref }),
206
- react_1.default.createElement(InputGroup_1.default, { dimensions: "2/2" },
207
- react_1.default.createElement("div", { className: expirationDate.getClasses(), ref: expirationDate.ref }),
208
- react_1.default.createElement("div", { className: securityCode.getClasses(), ref: securityCode.ref }))),
209
- react_1.default.createElement(InputGroup_1.default, { dimensions: "1" },
210
- react_1.default.createElement("div", { className: nameOnCard.getClasses(), ref: nameOnCard.ref }))))));
211
- }
212
- exports.default = (0, react_2.forwardRef)(StepConfirmationPaymentDetails);
200
+ react_1.default.createElement("div", { className: expirationDate.getClasses(), ref: expirationDate.ref }),
201
+ react_1.default.createElement("div", { className: securityCode.getClasses(), ref: securityCode.ref }))),
202
+ react_1.default.createElement(InputGroup_1.default, { dimensions: "1" },
203
+ react_1.default.createElement("div", { className: nameOnCard.getClasses(), ref: nameOnCard.ref })))));
204
+ });
213
205
  //# sourceMappingURL=StepConfirmationPaymentDetails.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StepConfirmationPaymentDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["import PaymentCard from '@/models/PaymentCard';\nimport React from 'react';\nimport { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport { SynxisToVGSCardNameMapping } from '@/models/Api/HotelDTO';\nimport { useCurrentHotel, useMember, useWindowScroll } from '@frontend/hooks';\nimport { useVgsCollect } from '@/hooks/VGSHooks';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport { ExistingCardPicker } from './ExistingCardPicker';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\n\ntype VGSInputType = 'card-number' | 'text' | 'card-expiration-date' | 'card-security-code';\n\nfunction StepConfirmationPaymentDetails(props: any, ref: any) {\n const { hotel } = useCurrentHotel();\n const member = useMember();\n\n const [errors, setErrors] = useState<{ [x: string]: string }>({});\n\n const { t } = useTranslation();\n\n const { focusElement } = useWindowScroll();\n\n const vgsInputCss = {\n fontSize: '13px',\n lineHeight: '18px',\n '&::placeholder': {\n color: '#8B8F9A',\n opacity: 1,\n },\n };\n\n const {\n fields: [cardNumber, nameOnCard, expirationDate, securityCode],\n triggerFieldUpdate,\n vgsForm,\n } = useVgsCollect([\n {\n label: t(Translation.Step.Confirmation.Inputs.CardNumber),\n name: 'credit-card',\n type: 'card-number',\n vgsProps: {\n autoComplete: ['cc-number'],\n successColor: '#4F8A10',\n errorColor: '#D8000C',\n showCardIcon: false,\n placeholder: t(Translation.Step.Confirmation.Inputs.CardNumber) + ' *',\n validations: ['required', 'validCardNumber'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.NameOnCard),\n name: 'card-name',\n type: 'text',\n vgsProps: {\n validations: ['required'],\n css: vgsInputCss,\n placeholder: t(Translation.Step.Confirmation.Inputs.NameOnCard) + ' *',\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.CardExpiry),\n name: 'expiration-date',\n type: 'card-expiration-date',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.CardExpiry) + ' *',\n validations: ['required', 'validCardExpirationDate'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.SecurityCode),\n name: 'security-code',\n type: 'card-security-code',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.SecurityCode) + ' *',\n validations: ['required', 'validCardSecurityCode'],\n css: vgsInputCss,\n },\n },\n ]);\n\n const setErrorsOnFaults = (faults: any) => {\n const newErrors: { [x: string]: string } = {};\n\n Object.keys(faults).forEach((input) => {\n let name = '';\n\n switch (input) {\n case 'credit-card':\n name = 'Credit Card';\n break;\n case 'expiration-date':\n name = 'Expiration Date';\n break;\n case 'security-code':\n name = 'Security Code';\n break;\n default:\n name = 'Card Name';\n break;\n }\n\n newErrors[input] = name + ' ' + faults[input].errorMessages[faults[input].errorMessages.length - 1];\n });\n\n setErrors(newErrors);\n };\n\n useEffect(() => {\n if (errors && Object.keys(errors).length !== 0 && cardNumber?.ref?.current) {\n focusElement(cardNumber?.ref?.current);\n }\n }, [errors]);\n\n useImperativeHandle(ref, () => ({\n getTokenizedCode: () =>\n new Promise<PaymentCard | IRoomstayMemberCards>((resolve, reject) => {\n if (vgsForm) {\n vgsForm.submit(\n '/post',\n {\n serializer: 'deep',\n methods: 'POST',\n },\n (status: any, response: any) => {\n const cardData = JSON.parse(response.data);\n const expMatch = cardData['expiration-date'].match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n if (!expMatch || expMatch[1].length > 2 || (expMatch[2].length !== 4 && expMatch[2].length !== 2)) {\n setErrorsOnFaults({\n 'expiration-date': {\n errorMessages: ['Invalid - it must be in the format MM / YY or MM / YYYY'],\n },\n });\n reject('invalid expiration date');\n return;\n }\n\n const expiration = (expMatch[1].length === 1 ? '0' : '') + expMatch[1] + (expMatch[2].length === 2 ? expMatch[2] : expMatch[2].substr(2));\n\n const card: any = {\n CVV: cardData['security-code'],\n Expiry: expiration,\n Name: cardData['card-name'],\n Number: cardData['credit-card'],\n Type: cardNumber.state.cardType,\n };\n\n resolve(card);\n },\n (error: any) => {\n setErrorsOnFaults(error);\n reject(error);\n }\n );\n } else {\n console.error('VGS not on element, problem has occurred');\n }\n }),\n }));\n\n const formRef = useRef(null);\n\n const inputNames = ['credit-card', 'card-name', 'expiration-date', 'security-code'];\n const cardTypes = (hotel?.paymentCardTypes ?? [])\n .map((card: string) => {\n const mapping = SynxisToVGSCardNameMapping[card];\n if (!mapping) {\n return null;\n }\n\n return {\n name: SynxisToVGSCardNameMapping[card],\n status: false,\n };\n })\n .filter((obj) => obj);\n\n const onMemberCardSelected = (card: IRoomstayMemberCards) => {\n // TODO:\n };\n\n return (\n <div>\n <div>{!!member.user && <ExistingCardPicker onCardSelected={onMemberCardSelected} />}</div>\n <div>\n {inputNames.map((name) => {\n const errorMessage = errors[name];\n return (\n <AutoAutoHeight open={!!errorMessage} key={name}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{errorMessage}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n })}\n <div className=\"u-marg-bottom\">\n <AcceptablePaymentCard\n isCurrent={(cardKey: any) => {\n return cardNumber.state.cardType !== null && cardTypes[cardKey]?.name === cardNumber.state.cardType;\n }}\n isDefault={(cardKey: any) => {\n return cardNumber.state.cardType === null;\n }}\n />\n </div>\n <form ref={formRef}>\n <InputGroup dimensions=\"2/2\">\n <div className={cardNumber.getClasses()} ref={cardNumber.ref} />\n <InputGroup dimensions=\"2/2\">\n <div className={expirationDate.getClasses()} ref={expirationDate.ref} />\n <div className={securityCode.getClasses()} ref={securityCode.ref} />\n </InputGroup>\n </InputGroup>\n <InputGroup dimensions=\"1\">\n <div className={nameOnCard.getClasses()} ref={nameOnCard.ref} />\n </InputGroup>\n </form>\n </div>\n </div>\n );\n}\n\nexport default forwardRef(StepConfirmationPaymentDetails);\n"]}
1
+ {"version":3,"file":"StepConfirmationPaymentDetails.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+CAA4F;AAC5F,4FAAoE;AACpE,iFAAyD;AACzD,oEAA8D;AAC9D,yDAA0D;AAC1D,kEAA2D;AAC3D,iDAA+C;AAC/C,0DAAuD;AACvD,oDAAmE;AACnE,2CAAmE;AACnE,+CAAiD;AAEjD,iIAAyG;AAE5F,QAAA,+BAA+B,GAAG,IAAA,kBAAU,EAAC,SAAS,wCAAwC,CAAC,KAAU,EAAE,GAAQ;;IAC5H,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IACpC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAA0B,EAAE,CAAC,CAAC;IAElE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,8BAAc,GAAE,CAAC;IAE/B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,uBAAe,GAAE,CAAC;IAE3C,MAAM,WAAW,GAAG;QAChB,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,MAAM;QAClB,gBAAgB,EAAE;YACd,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,CAAC;SACb;KACJ,CAAC;IAEF,MAAM,EACF,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,CAAC,EAC9D,OAAO,GACV,GAAG,IAAA,wBAAa,EAAC;QACd;YACI,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;YACzD,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE;gBACN,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC3B,YAAY,EAAE,SAAS;gBACvB,UAAU,EAAE,SAAS;gBACrB,YAAY,EAAE,KAAK;gBACnB,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI;gBACtE,WAAW,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBAC5C,GAAG,EAAE,WAAW;aACnB;SACJ;QACD;YACI,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;YACzD,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE;gBACN,WAAW,EAAE,CAAC,UAAU,CAAC;gBACzB,GAAG,EAAE,WAAW;gBAChB,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI;aACzE;SACJ;QACD;YACI,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;YACzD,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE;gBACN,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI;gBACtE,WAAW,EAAE,CAAC,UAAU,EAAE,yBAAyB,CAAC;gBACpD,GAAG,EAAE,WAAW;aACnB;SACJ;QACD;YACI,KAAK,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3D,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE;gBACN,WAAW,EAAE,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI;gBACxE,WAAW,EAAE,CAAC,UAAU,EAAE,uBAAuB,CAAC;gBAClD,GAAG,EAAE,WAAW;aACnB;SACJ;KACJ,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,CAAC,MAAW,EAAE,EAAE;QACtC,MAAM,SAAS,GAA4B,EAAE,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,QAAQ,KAAK,EAAE;gBACX,KAAK,aAAa;oBACd,IAAI,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC1D,MAAM;gBACV,KAAK,iBAAiB;oBAClB,IAAI,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC1D,MAAM;gBACV,KAAK,eAAe;oBAChB,IAAI,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC5D,MAAM;gBACV;oBACI,IAAI,GAAG,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC1D,MAAM;aACb;YAED,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACX,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,KAAI,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,0CAAE,OAAO,CAAA,EAAE;YACxE,YAAY,CAAC,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,0CAAE,OAAO,CAAC,CAAC;SAC1C;IACL,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,IAAA,2BAAmB,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5B,gBAAgB,EAAE,GAAG,EAAE,CACnB,IAAI,OAAO,CAAqC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,MAAM,CACV,OAAO,EACP;oBACI,UAAU,EAAE,MAAM;oBAClB,OAAO,EAAE,MAAM;iBAClB,EACD,CAAC,MAAW,EAAE,QAAa,EAAE,EAAE;oBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAC3E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;wBAC/F,iBAAiB,CAAC;4BACd,iBAAiB,EAAE;gCACf,aAAa,EAAE,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;6BACnF;yBACJ,CAAC,CAAC;wBACH,MAAM,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;wBACxE,OAAO;qBACV;oBAED,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE1I,MAAM,IAAI,GAAQ;wBACd,GAAG,EAAE,QAAQ,CAAC,eAAe,CAAC;wBAC9B,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC;wBAC3B,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC;wBAC/B,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ;qBAClC,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,EACD,CAAC,KAAU,EAAE,EAAE;oBACX,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CACJ,CAAC;aACL;iBAAM;gBACH,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;aAC7D;QACL,CAAC,CAAC;KACT,CAAC,CAAC,CAAC;IAEJ,MAAM,OAAO,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAE7B,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,gBAAgB,mCAAI,EAAE,CAAC;SAC5C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACV,MAAM,OAAO,GAAG,qCAA0B,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,IAAI,CAAC;SACf;QAED,OAAO;YACH,IAAI,EAAE,qCAA0B,CAAC,IAAI,CAAC;YACtC,MAAM,EAAE,KAAK;SAChB,CAAC;IACN,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,CACH;QACK,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,CACH,8BAAC,wBAAc,IAAC,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI;gBAC3C,uCAAK,SAAS,EAAC,QAAQ;oBACnB,8BAAC,eAAK,IAAC,IAAI,EAAE,iBAAS,CAAC,MAAM,EAAE,IAAI,EAAE,eAAQ,CAAC,KAAK;wBAC/C,8BAAC,cAAI,IAAC,IAAI,EAAE,eAAQ,CAAC,KAAK,IAAG,YAAY,CAAQ,CAC7C,CACN,CACO,CACpB,CAAC;QACN,CAAC,CAAC;QACF,uCAAK,SAAS,EAAC,eAAe;YAC1B,8BAAC,+BAAqB,IAClB,SAAS,EAAE,CAAC,OAAY,EAAE,EAAE;;oBACxB,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAA,MAAA,SAAS,CAAC,OAAO,CAAC,0CAAE,IAAI,MAAK,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACxG,CAAC,EACD,SAAS,EAAE,CAAC,OAAY,EAAE,EAAE;oBACxB,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;gBAC9C,CAAC,GACH,CACA;QACN,wCAAM,GAAG,EAAE,OAAO;YACd,8BAAC,oBAAU,IAAC,UAAU,EAAC,KAAK;gBACxB,uCAAK,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,GAAI;gBAChE,8BAAC,oBAAU,IAAC,UAAU,EAAC,KAAK;oBACxB,uCAAK,SAAS,EAAE,cAAc,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,GAAI;oBACxE,uCAAK,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,GAAI,CAC3D,CACJ;YACb,8BAAC,oBAAU,IAAC,UAAU,EAAC,GAAG;gBACtB,uCAAK,SAAS,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,GAAI,CACvD,CACV,CACL,CACT,CAAC;AACN,CAAC,CAAC,CAAC","sourcesContent":["import PaymentCard from '@/models/PaymentCard';\nimport React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport InputGroup from '@/components/generic/InputGroup/InputGroup';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Alert, { AlertType } from '@/components/generic/Alert';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from 'translations/Translation';\nimport { SynxisToVGSCardNameMapping } from '@/models/Api/HotelDTO';\nimport { useCurrentHotel, useWindowScroll } from '@frontend/hooks';\nimport { useVgsCollect } from '@/hooks/VGSHooks';\nimport { IRoomstayMemberCards } from '@roomstay/core';\nimport AcceptablePaymentCard from '@/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard';\n\nexport const StepConfirmationVGSPaymentInput = forwardRef(function ForwardedStepConfirmationVGSPaymentInput(props: any, ref: any) {\n const { hotel } = useCurrentHotel();\n const [errors, setErrors] = useState<{ [x: string]: string }>({});\n\n const { t } = useTranslation();\n\n const { focusElement } = useWindowScroll();\n\n const vgsInputCss = {\n fontSize: '13px',\n lineHeight: '18px',\n '&::placeholder': {\n color: '#8B8F9A',\n opacity: 1,\n },\n };\n\n const {\n fields: [cardNumber, nameOnCard, expirationDate, securityCode],\n vgsForm,\n } = useVgsCollect([\n {\n label: t(Translation.Step.Confirmation.Inputs.CardNumber),\n name: 'credit-card',\n type: 'card-number',\n vgsProps: {\n autoComplete: ['cc-number'],\n successColor: '#4F8A10',\n errorColor: '#D8000C',\n showCardIcon: false,\n placeholder: t(Translation.Step.Confirmation.Inputs.CardNumber) + ' *',\n validations: ['required', 'validCardNumber'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.NameOnCard),\n name: 'card-name',\n type: 'text',\n vgsProps: {\n validations: ['required'],\n css: vgsInputCss,\n placeholder: t(Translation.Step.Confirmation.Inputs.NameOnCard) + ' *',\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.CardExpiry),\n name: 'expiration-date',\n type: 'card-expiration-date',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.CardExpiry) + ' *',\n validations: ['required', 'validCardExpirationDate'],\n css: vgsInputCss,\n },\n },\n {\n label: t(Translation.Step.Confirmation.Inputs.SecurityCode),\n name: 'security-code',\n type: 'card-security-code',\n vgsProps: {\n placeholder: t(Translation.Step.Confirmation.Inputs.SecurityCode) + ' *',\n validations: ['required', 'validCardSecurityCode'],\n css: vgsInputCss,\n },\n },\n ]);\n\n const setErrorsOnFaults = (faults: any) => {\n const newErrors: { [x: string]: string } = {};\n\n Object.keys(faults).forEach((input) => {\n let name = '';\n\n switch (input) {\n case 'credit-card':\n name = t(Translation.Step.Confirmation.Inputs.CardNumber);\n break;\n case 'expiration-date':\n name = t(Translation.Step.Confirmation.Inputs.CardExpiry);\n break;\n case 'security-code':\n name = t(Translation.Step.Confirmation.Inputs.SecurityCode);\n break;\n default:\n name = t(Translation.Step.Confirmation.Inputs.NameOnCard);\n break;\n }\n\n newErrors[input] = name + ' ' + faults[input].errorMessages[faults[input].errorMessages.length - 1];\n });\n\n setErrors(newErrors);\n };\n\n useEffect(() => {\n if (errors && Object.keys(errors).length !== 0 && cardNumber?.ref?.current) {\n focusElement(cardNumber?.ref?.current);\n }\n }, [errors]);\n\n useImperativeHandle(ref, () => ({\n getTokenizedCode: () =>\n new Promise<PaymentCard | IRoomstayMemberCards>((resolve, reject) => {\n if (vgsForm) {\n vgsForm.submit(\n '/post',\n {\n serializer: 'deep',\n methods: 'POST',\n },\n (status: any, response: any) => {\n const cardData = JSON.parse(response.data);\n const expMatch = cardData['expiration-date'].match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n if (!expMatch || expMatch[1].length > 2 || (expMatch[2].length !== 4 && expMatch[2].length !== 2)) {\n setErrorsOnFaults({\n 'expiration-date': {\n errorMessages: [t(Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid)],\n },\n });\n reject(t(Translation.Step.Confirmation.InputErrors.CardExpiry.Invalid));\n return;\n }\n\n const expiration = (expMatch[1].length === 1 ? '0' : '') + expMatch[1] + (expMatch[2].length === 2 ? expMatch[2] : expMatch[2].substr(2));\n\n const card: any = {\n CVV: cardData['security-code'],\n Expiry: expiration,\n Name: cardData['card-name'],\n Number: cardData['credit-card'],\n Type: cardNumber.state.cardType,\n };\n\n resolve(card);\n },\n (error: any) => {\n setErrorsOnFaults(error);\n reject(error);\n }\n );\n } else {\n console.error('VGS not on element, problem has occurred');\n }\n }),\n }));\n\n const formRef = useRef(null);\n\n const inputNames = ['credit-card', 'card-name', 'expiration-date', 'security-code'];\n const cardTypes = (hotel?.paymentCardTypes ?? [])\n .map((card) => {\n const mapping = SynxisToVGSCardNameMapping[card];\n if (!mapping) {\n return null;\n }\n\n return {\n name: SynxisToVGSCardNameMapping[card],\n status: false,\n };\n })\n .filter((obj) => obj);\n\n return (\n <div>\n {inputNames.map((name) => {\n const errorMessage = errors[name];\n return (\n <AutoAutoHeight open={!!errorMessage} key={name}>\n <div className=\"u-flex\">\n <Alert type={AlertType.Danger} icon={IconType.Error}>\n <Text type={TextType.Small}>{errorMessage}</Text>\n </Alert>\n </div>\n </AutoAutoHeight>\n );\n })}\n <div className=\"u-marg-bottom\">\n <AcceptablePaymentCard\n isCurrent={(cardKey: any) => {\n return cardNumber.state.cardType !== null && cardTypes[cardKey]?.name === cardNumber.state.cardType;\n }}\n isDefault={(cardKey: any) => {\n return cardNumber.state.cardType === null;\n }}\n />\n </div>\n <form ref={formRef}>\n <InputGroup dimensions=\"2/2\">\n <div className={cardNumber.getClasses()} ref={cardNumber.ref} />\n <InputGroup dimensions=\"2/2\">\n <div className={expirationDate.getClasses()} ref={expirationDate.ref} />\n <div className={securityCode.getClasses()} ref={securityCode.ref} />\n </InputGroup>\n </InputGroup>\n <InputGroup dimensions=\"1\">\n <div className={nameOnCard.getClasses()} ref={nameOnCard.ref} />\n </InputGroup>\n </form>\n </div>\n );\n});\n"]}
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ interface PaymentInformationProps {
3
+ tokenizerRef: any;
4
+ onChangeCb: (code: string) => void;
5
+ }
6
+ declare const PaymentInformation: FC<PaymentInformationProps>;
7
+ export default PaymentInformation;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const react_1 = __importStar(require("react"));
30
+ const RadioButtonGroup_1 = __importDefault(require("../../generic/RadioButtonGroup/RadioButtonGroup"));
31
+ const core_1 = require("@roomstay/core");
32
+ const Translation_1 = require("../../../translations/Translation");
33
+ const StepConfirmationPaymentDetails_1 = require("./PaymentDetails/StepConfirmationPaymentDetails");
34
+ const RoomstayThemeEngine_1 = __importDefault(require("../../../providers/RoomstayThemeEngine"));
35
+ const Text_1 = __importDefault(require("../../generic/Text"));
36
+ const Color_1 = require("../../../util/Color");
37
+ const Icon_1 = __importStar(require("../../generic/Icon/Icon"));
38
+ const PlanpayPaymentMethod_1 = require("./PlanpayPaymentMethod");
39
+ const dayjs_1 = __importDefault(require("dayjs"));
40
+ const react_hook_form_1 = require("react-hook-form");
41
+ const react_i18next_1 = require("react-i18next");
42
+ const hooks_1 = require("../../../hooks");
43
+ const contexts_1 = require("../../../contexts");
44
+ const InlinePaymentOption_1 = __importDefault(require("../../generic/PaymentCard/InlinePaymentOption"));
45
+ const PaymentInformation = ({ tokenizerRef, onChangeCb }) => {
46
+ var _a, _b;
47
+ const { t } = (0, react_i18next_1.useTranslation)();
48
+ const methods = (0, react_hook_form_1.useFormContext)();
49
+ const { hotel } = (0, hooks_1.useCurrentHotel)();
50
+ const basketContext = (0, contexts_1.useBasket)();
51
+ const { cards = [], roomstayMember } = (0, contexts_1.useMemberContext)();
52
+ const defaultCard = (0, react_1.useMemo)(() => cards.find((card) => card.cardId === (roomstayMember === null || roomstayMember === void 0 ? void 0 : roomstayMember.defaultCard)), [cards, roomstayMember]);
53
+ const paymentMethod = methods.watch('paymentMethod');
54
+ const vgsCardInputOption = {
55
+ value: core_1.EBookingPaymentMethod.Card,
56
+ label: react_1.default.createElement(InlinePaymentOption_1.default, { active: paymentMethod === core_1.EBookingPaymentMethod.Card }),
57
+ renderContent: () => react_1.default.createElement(StepConfirmationPaymentDetails_1.StepConfirmationVGSPaymentInput, { ref: tokenizerRef }),
58
+ };
59
+ const options = [];
60
+ if (hotel === null || hotel === void 0 ? void 0 : hotel.paymentMethods.includes(core_1.EBookingPaymentMethod.Card)) {
61
+ let defaultCardOption;
62
+ // Reason this is split up is in case someone doesn't have a default card selected
63
+ // We still want to select the first card they have, if they have any.
64
+ if (cards.length) {
65
+ const selectedMemberCard = defaultCard ? defaultCard : cards[0];
66
+ defaultCardOption = {
67
+ value: selectedMemberCard.cardId,
68
+ label: react_1.default.createElement(InlinePaymentOption_1.default, { card: selectedMemberCard }),
69
+ };
70
+ }
71
+ else {
72
+ defaultCardOption = vgsCardInputOption;
73
+ }
74
+ const selectableStoredCardOptions = [];
75
+ if (cards.length) {
76
+ for (const memberCard of cards) {
77
+ selectableStoredCardOptions.push({
78
+ value: memberCard.cardId,
79
+ label: react_1.default.createElement(InlinePaymentOption_1.default, { card: memberCard }),
80
+ });
81
+ }
82
+ selectableStoredCardOptions.push(vgsCardInputOption);
83
+ }
84
+ options.push(Object.assign(Object.assign({}, defaultCardOption), { options: selectableStoredCardOptions.length > 0 ? selectableStoredCardOptions : undefined }));
85
+ }
86
+ if ((hotel === null || hotel === void 0 ? void 0 : hotel.paymentMethods.includes(core_1.EBookingPaymentMethod.Planpay)) &&
87
+ ((_a = hotel === null || hotel === void 0 ? void 0 : hotel.planpay) === null || _a === void 0 ? void 0 : _a.minDaysShowPlanpay) &&
88
+ (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)) {
89
+ options.push({
90
+ value: core_1.EBookingPaymentMethod.Planpay,
91
+ label: (react_1.default.createElement("div", { className: "u-flex u-flex-align-center" },
92
+ react_1.default.createElement("div", null, t(Translation_1.Translation.Step.Confirmation.PlanpayLabel)),
93
+ react_1.default.createElement("div", { className: "u-flex u-flex-align-center u-marg-left--light", style: {
94
+ borderRadius: '24px',
95
+ overflow: 'hidden',
96
+ } },
97
+ react_1.default.createElement("img", { height: 16, src: RoomstayThemeEngine_1.default.getImageAssetUrl('planpay-logo-small.svg'), alt: "" })),
98
+ !methods.formState.isValid && (react_1.default.createElement(Text_1.default, { color: Color_1.Color.Graphite, className: "u-flex u-flex-align-center", style: {
99
+ color: '#313131',
100
+ fontSize: 10,
101
+ } },
102
+ 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" }),
103
+ t(Translation_1.Translation.Step.Confirmation.PlanpayHelperText))))),
104
+ disabled: !methods.formState.isValid,
105
+ disabledReason: !methods.formState.isValid ? 'You must fill all the above details before proceeding with Planpay' : '',
106
+ renderContent: () => react_1.default.createElement(PlanpayPaymentMethod_1.PlanpayPaymentMethod, null),
107
+ });
108
+ }
109
+ return (react_1.default.createElement(react_hook_form_1.Controller, { control: methods.control, name: "paymentMethod", render: ({ field: { onChange, value } }) => {
110
+ return (react_1.default.createElement(react_1.default.Fragment, null,
111
+ react_1.default.createElement("div", null,
112
+ react_1.default.createElement(RadioButtonGroup_1.default, { options: options, value: value, onChange: (code) => {
113
+ onChange(code);
114
+ onChangeCb(code);
115
+ } }))));
116
+ } }));
117
+ };
118
+ exports.default = PaymentInformation;
119
+ //# sourceMappingURL=PaymentInformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentInformation.js","sourceRoot":"/","sources":["src/components/steps/confirmation/PaymentInformation.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { FC, useMemo } from 'react';\nimport RadioButtonGroup, { IRadioButtonOption } from '@/components/generic/RadioButtonGroup/RadioButtonGroup';\nimport { EBookingPaymentMethod } from '@roomstay/core';\nimport { Translation } from '@/translations/Translation';\nimport { StepConfirmationVGSPaymentInput } from '@/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails';\nimport RoomstayThemeEngine from '@/providers/RoomstayThemeEngine';\nimport Text from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport Icon, { IconType } from '@/components/generic/Icon/Icon';\nimport { PlanpayPaymentMethod } from '@/components/steps/confirmation/PlanpayPaymentMethod';\nimport dayjs from 'dayjs';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { ConfirmationFormValues } from '@/models/Confirmation';\nimport { useCurrentHotel } from '@/hooks';\nimport { useBasket, useMemberContext } from '@/contexts';\nimport InlinePaymentOption from '@/components/generic/PaymentCard/InlinePaymentOption';\n\ninterface PaymentInformationProps {\n tokenizerRef: any;\n onChangeCb: (code: string) => void;\n}\n\nconst PaymentInformation: FC<PaymentInformationProps> = ({ tokenizerRef, onChangeCb }) => {\n const { t } = useTranslation();\n const methods = useFormContext<ConfirmationFormValues>();\n const { hotel } = useCurrentHotel();\n const basketContext = useBasket();\n\n const { cards = [], roomstayMember } = useMemberContext();\n const defaultCard = useMemo(() => cards.find((card) => card.cardId === roomstayMember?.defaultCard), [cards, roomstayMember]);\n\n const paymentMethod = methods.watch('paymentMethod');\n const vgsCardInputOption: IRadioButtonOption = {\n value: EBookingPaymentMethod.Card,\n label: <InlinePaymentOption active={paymentMethod === EBookingPaymentMethod.Card} />,\n renderContent: () => <StepConfirmationVGSPaymentInput ref={tokenizerRef} />,\n };\n\n const options: IRadioButtonOption[] = [];\n if (hotel?.paymentMethods.includes(EBookingPaymentMethod.Card)) {\n let defaultCardOption: IRadioButtonOption;\n // Reason this is split up is in case someone doesn't have a default card selected\n // We still want to select the first card they have, if they have any.\n if (cards.length) {\n const selectedMemberCard = defaultCard ? defaultCard : cards[0];\n\n defaultCardOption = {\n value: selectedMemberCard.cardId,\n label: <InlinePaymentOption card={selectedMemberCard} />,\n };\n } else {\n defaultCardOption = vgsCardInputOption;\n }\n\n const selectableStoredCardOptions = [];\n\n if (cards.length) {\n for (const memberCard of cards) {\n selectableStoredCardOptions.push({\n value: memberCard.cardId,\n label: <InlinePaymentOption card={memberCard} />,\n });\n }\n selectableStoredCardOptions.push(vgsCardInputOption);\n }\n\n options.push({\n ...defaultCardOption,\n options: selectableStoredCardOptions.length > 0 ? selectableStoredCardOptions : undefined,\n });\n }\n\n if (\n hotel?.paymentMethods.includes(EBookingPaymentMethod.Planpay) &&\n hotel?.planpay?.minDaysShowPlanpay &&\n dayjs(basketContext.startDate).diff(dayjs(), 'day') > hotel?.planpay?.minDaysShowPlanpay\n ) {\n options.push({\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: !methods.formState.isValid,\n disabledReason: !methods.formState.isValid ? 'You must fill all the above details before proceeding with Planpay' : '',\n renderContent: () => <PlanpayPaymentMethod />,\n });\n }\n\n return (\n <Controller\n control={methods.control}\n name=\"paymentMethod\"\n render={({ field: { onChange, value } }) => {\n return (\n <>\n <div>\n <RadioButtonGroup\n options={options}\n value={value}\n onChange={(code) => {\n onChange(code);\n onChangeCb(code);\n }}\n />\n </div>\n </>\n );\n }}\n />\n );\n};\n\nexport default PaymentInformation;\n"]}
@@ -26,13 +26,12 @@ 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 SimpleModal_1 = __importStar(require("../../generic/modal/SimpleModal"));
31
31
  const BEButton_1 = __importDefault(require("../../generic/BEButton"));
32
32
  const Currency_1 = __importDefault(require("../../generic/Currency"));
33
33
  const Text_1 = __importStar(require("../../generic/Text"));
34
34
  const Color_1 = require("../../../util/Color");
35
- const react_2 = require("react");
36
35
  const contexts_1 = require("../../../contexts/index.js");
37
36
  const Headline_1 = __importDefault(require("../../generic/Headline"));
38
37
  const LineBreak_1 = __importDefault(require("../../generic/LineBreak"));
@@ -40,11 +39,14 @@ const Icon_1 = require("../../generic/Icon/Icon");
40
39
  const Countdown_1 = __importDefault(require("../../generic/Countdown"));
41
40
  const dayjs_1 = __importDefault(require("dayjs"));
42
41
  const Pill_1 = __importStar(require("../../generic/Pill"));
42
+ const react_i18next_1 = require("react-i18next");
43
+ const Translation_1 = require("../../../translations/Translation");
43
44
  function StepConfirmationCheckoutDifferencesModal(props) {
44
45
  var _a, _b;
45
- const basketContext = (0, react_2.useContext)(contexts_1.BasketContext);
46
- const [endTime, setEndTime] = (0, react_2.useState)((0, dayjs_1.default)().add(14, 'minute'));
47
- (0, react_2.useEffect)(() => {
46
+ const basketContext = (0, react_1.useContext)(contexts_1.BasketContext);
47
+ const { t } = (0, react_i18next_1.useTranslation)();
48
+ const [endTime, setEndTime] = (0, react_1.useState)((0, dayjs_1.default)().add(14, 'minute'));
49
+ (0, react_1.useEffect)(() => {
48
50
  var _a;
49
51
  let cancelled = false;
50
52
  let timeout = null;
@@ -61,16 +63,16 @@ function StepConfirmationCheckoutDifferencesModal(props) {
61
63
  };
62
64
  }, [props.differences.length, (_a = props.warnings) === null || _a === void 0 ? void 0 : _a.length]);
63
65
  const mobileFooter = (react_1.default.createElement("div", { className: "u-flex" },
64
- react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", icon: Icon_1.IconType.ArrowLeft, onClick: props.onClose, isLoading: props.isLoading }, "Take me back"),
65
- react_1.default.createElement(BEButton_1.default, { primary: true, filled: true, icon: Icon_1.IconType.ArrowRight, iconPosition: "right", onClick: props.onProceed, isLoading: props.isLoading }, "Continue with reservation")));
66
- return (react_1.default.createElement(SimpleModal_1.default, { open: !!props.differences.length || !!((_b = props.warnings) === null || _b === void 0 ? void 0 : _b.length), title: "Your total price has Changed!", mobileFooter: mobileFooter, desktopFooter: react_1.default.createElement("div", { className: "u-marg-heavy u-marg@m-" }, mobileFooter), size: SimpleModal_1.SimpleModalSize.Small, alignCenter: true },
66
+ react_1.default.createElement(BEButton_1.default, { isText: true, size: "small", icon: Icon_1.IconType.ArrowLeft, onClick: props.onClose, isLoading: props.isLoading }, t(Translation_1.Translation.Step.Confirmation.TakeMeBack)),
67
+ react_1.default.createElement(BEButton_1.default, { primary: true, filled: true, icon: Icon_1.IconType.ArrowRight, iconPosition: "right", onClick: props.onProceed, isLoading: props.isLoading }, t(Translation_1.Translation.Step.Confirmation.ContinueWithReservation))));
68
+ return (react_1.default.createElement(SimpleModal_1.default, { open: !!props.differences.length || !!((_b = props.warnings) === null || _b === void 0 ? void 0 : _b.length), title: t(Translation_1.Translation.Step.Confirmation.YourTotalPriceHasChanged), mobileFooter: mobileFooter, desktopFooter: react_1.default.createElement("div", { className: "u-marg-heavy u-marg@m-" }, mobileFooter), size: SimpleModal_1.SimpleModalSize.Small, alignCenter: true },
67
69
  react_1.default.createElement("div", { className: "u-marg-heavy u-marg@m-" },
68
70
  react_1.default.createElement("div", { className: "row" },
69
71
  react_1.default.createElement("div", { className: "col-md-8" },
70
- react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, "We apologize for any inconvenience, but the price for your selected reservation has changed during your checkout, please confirm that you accept the new total shown below.")),
72
+ react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small }, t(Translation_1.Translation.Step.Confirmation.ConfirmationCheckoutTitle))),
71
73
  react_1.default.createElement("div", { className: "col-md-4" },
72
74
  react_1.default.createElement(Pill_1.default, { icon: Icon_1.IconType.Time, type: Pill_1.PillType.Primary },
73
- react_1.default.createElement("span", { className: "u-marg-right--light" }, "Reverts in"),
75
+ react_1.default.createElement("span", { className: "u-marg-right--light" }, t(Translation_1.Translation.Step.Confirmation.RevertsIn)),
74
76
  react_1.default.createElement(Countdown_1.default, { endTimeDate: endTime })))),
75
77
  react_1.default.createElement(LineBreak_1.default, null),
76
78
  !!(props.differences && props.differences.length) &&
@@ -1 +1 @@
1
- {"version":3,"file":"StepConfirmationCheckoutDifferencesModal.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport BEButton from '@/components/generic/BEButton';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { useContext, useState, useEffect } from 'react';\nimport { BasketContext } from '@frontend/contexts';\nimport Headline from '@/components/generic/Headline';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Countdown from '@/components/generic/Countdown';\nimport dayjs from 'dayjs';\nimport Pill, { PillType } from '@/components/generic/Pill';\n\ninterface StepConfirmationCheckoutDifferencesModalProps {\n differences: BasketRowDifferences[];\n warnings: string[];\n\n onClose: () => void;\n onProceed: () => void;\n isLoading?: boolean;\n}\n\nexport default function StepConfirmationCheckoutDifferencesModal(props: StepConfirmationCheckoutDifferencesModalProps) {\n const basketContext = useContext(BasketContext);\n\n const [endTime, setEndTime] = useState(dayjs().add(14, 'minute'));\n\n useEffect(() => {\n let cancelled = false;\n let timeout: any = null;\n\n if (!!props.differences.length || !!props.warnings?.length) {\n timeout = setTimeout(() => {\n if (!cancelled) {\n props.onClose();\n }\n }, 740000);\n }\n\n return () => {\n cancelled = true;\n clearTimeout(timeout);\n };\n }, [props.differences.length, props.warnings?.length]);\n\n const mobileFooter = (\n <div className=\"u-flex\">\n <BEButton isText size=\"small\" icon={IconType.ArrowLeft} onClick={props.onClose} isLoading={props.isLoading}>\n Take me back\n </BEButton>\n <BEButton primary filled icon={IconType.ArrowRight} iconPosition=\"right\" onClick={props.onProceed} isLoading={props.isLoading}>\n Continue with reservation\n </BEButton>\n </div>\n );\n\n return (\n <SimpleModal\n open={!!props.differences.length || !!props.warnings?.length}\n title=\"Your total price has Changed!\"\n mobileFooter={mobileFooter}\n desktopFooter={<div className=\"u-marg-heavy u-marg@m-\">{mobileFooter}</div>}\n size={SimpleModalSize.Small}\n alignCenter\n >\n <div className=\"u-marg-heavy u-marg@m-\">\n <div className=\"row\">\n <div className=\"col-md-8\">\n <Text type={TextType.Small}>\n We apologize for any inconvenience, but the price for your selected reservation has changed during your checkout, please confirm that you accept the new\n total shown below.\n </Text>\n </div>\n <div className=\"col-md-4\">\n <Pill icon={IconType.Time} type={PillType.Primary}>\n <span className=\"u-marg-right--light\">Reverts in</span>\n <Countdown endTimeDate={endTime} />\n </Pill>\n </div>\n </div>\n <LineBreak />\n {!!(props.differences && props.differences.length) &&\n props.differences.map((difference) => {\n const basketRow = basketContext.getAllValidRows().find((row) => row.getID() === difference.id);\n\n return (\n <div key={difference.id}>\n {!!basketRow && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline>{basketRow.getRoom().name}</Headline>\n </div>\n <Text>{basketRow.getRate()?.name}</Text>\n </div>\n )}\n <div className=\"u-flex u-marg-bottom--light\">\n <Text type={TextType.Body}>\n <strong>Displayed price:</strong>\n </Text>\n <Text color={Color.Alert}>\n <Currency>{difference.totalPrice?.before}</Currency>\n </Text>\n </div>\n <div className=\"u-flex\">\n <Text type={TextType.Body}>\n <strong>Actual price:</strong>\n </Text>\n <Text color={Color.Success}>\n <Currency>{difference.totalPrice?.after}</Currency>\n </Text>\n </div>\n <LineBreak />\n </div>\n );\n })}\n {!!(props.warnings && props.warnings.length) &&\n props.warnings.map((warning: string, index: number) => {\n return <Text key={index}>{warning}</Text>;\n })}\n </div>\n </SimpleModal>\n );\n}\n"]}
1
+ {"version":3,"file":"StepConfirmationCheckoutDifferencesModal.js","sourceRoot":"/","sources":["src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\nimport SimpleModal, { SimpleModalSize } from '@/components/generic/modal/SimpleModal';\nimport BEButton from '@/components/generic/BEButton';\nimport BasketRowDifferences from '@/models/BasketRowDifferences';\nimport Currency from '@/components/generic/Currency';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { Color } from '@/util/Color';\nimport { BasketContext } from '@frontend/contexts';\nimport Headline from '@/components/generic/Headline';\nimport LineBreak from '@/components/generic/LineBreak';\nimport { IconType } from '@/components/generic/Icon/Icon';\nimport Countdown from '@/components/generic/Countdown';\nimport dayjs from 'dayjs';\nimport Pill, { PillType } from '@/components/generic/Pill';\nimport { useTranslation } from 'react-i18next';\nimport { Translation } from '@/translations/Translation';\n\ninterface StepConfirmationCheckoutDifferencesModalProps {\n differences: BasketRowDifferences[];\n warnings: string[];\n\n onClose: () => void;\n onProceed: () => void;\n isLoading?: boolean;\n}\n\nexport default function StepConfirmationCheckoutDifferencesModal(props: StepConfirmationCheckoutDifferencesModalProps) {\n const basketContext = useContext(BasketContext);\n const { t } = useTranslation();\n\n const [endTime, setEndTime] = useState(dayjs().add(14, 'minute'));\n\n useEffect(() => {\n let cancelled = false;\n let timeout: any = null;\n\n if (!!props.differences.length || !!props.warnings?.length) {\n timeout = setTimeout(() => {\n if (!cancelled) {\n props.onClose();\n }\n }, 740000);\n }\n\n return () => {\n cancelled = true;\n clearTimeout(timeout);\n };\n }, [props.differences.length, props.warnings?.length]);\n\n const mobileFooter = (\n <div className=\"u-flex\">\n <BEButton isText size=\"small\" icon={IconType.ArrowLeft} onClick={props.onClose} isLoading={props.isLoading}>\n {t(Translation.Step.Confirmation.TakeMeBack)}\n </BEButton>\n <BEButton primary filled icon={IconType.ArrowRight} iconPosition=\"right\" onClick={props.onProceed} isLoading={props.isLoading}>\n {t(Translation.Step.Confirmation.ContinueWithReservation)}\n </BEButton>\n </div>\n );\n\n return (\n <SimpleModal\n open={!!props.differences.length || !!props.warnings?.length}\n title={t(Translation.Step.Confirmation.YourTotalPriceHasChanged)}\n mobileFooter={mobileFooter}\n desktopFooter={<div className=\"u-marg-heavy u-marg@m-\">{mobileFooter}</div>}\n size={SimpleModalSize.Small}\n alignCenter\n >\n <div className=\"u-marg-heavy u-marg@m-\">\n <div className=\"row\">\n <div className=\"col-md-8\">\n <Text type={TextType.Small}>{t(Translation.Step.Confirmation.ConfirmationCheckoutTitle)}</Text>\n </div>\n <div className=\"col-md-4\">\n <Pill icon={IconType.Time} type={PillType.Primary}>\n <span className=\"u-marg-right--light\">{t(Translation.Step.Confirmation.RevertsIn)}</span>\n <Countdown endTimeDate={endTime} />\n </Pill>\n </div>\n </div>\n <LineBreak />\n {!!(props.differences && props.differences.length) &&\n props.differences.map((difference) => {\n const basketRow = basketContext.getAllValidRows().find((row) => row.getID() === difference.id);\n\n return (\n <div key={difference.id}>\n {!!basketRow && (\n <div className=\"u-marg-bottom--heavy\">\n <div className=\"u-marg-bottom--light\">\n <Headline>{basketRow.getRoom().name}</Headline>\n </div>\n <Text>{basketRow.getRate()?.name}</Text>\n </div>\n )}\n <div className=\"u-flex u-marg-bottom--light\">\n <Text type={TextType.Body}>\n <strong>Displayed price:</strong>\n </Text>\n <Text color={Color.Alert}>\n <Currency>{difference.totalPrice?.before}</Currency>\n </Text>\n </div>\n <div className=\"u-flex\">\n <Text type={TextType.Body}>\n <strong>Actual price:</strong>\n </Text>\n <Text color={Color.Success}>\n <Currency>{difference.totalPrice?.after}</Currency>\n </Text>\n </div>\n <LineBreak />\n </div>\n );\n })}\n {!!(props.warnings && props.warnings.length) &&\n props.warnings.map((warning: string, index: number) => {\n return <Text key={index}>{warning}</Text>;\n })}\n </div>\n </SimpleModal>\n );\n}\n"]}