@roomstay/frontend 2.1.32 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/213.bundle.js +1 -0
  3. package/dist/279.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/423.bundle.js +1 -1
  6. package/dist/449.bundle.js +1 -1
  7. package/dist/535.bundle.js +2 -0
  8. package/dist/548.bundle.js +1 -0
  9. package/dist/686.bundle.js +1 -0
  10. package/dist/855.bundle.js +1 -1
  11. package/dist/873.bundle.js +1 -1
  12. package/dist/882.bundle.js +1 -1
  13. package/dist/93.bundle.js +1 -0
  14. package/dist/972.bundle.js +1 -1
  15. package/dist/main.bundle.js +1 -1
  16. package/dist/src/api/HotelAPI.d.ts +1 -1
  17. package/dist/src/api/HotelAPI.js.map +1 -1
  18. package/dist/src/api/ReservationAPI.d.ts +0 -6
  19. package/dist/src/api/ReservationAPI.js.map +1 -1
  20. package/dist/src/api/events-service/EventsServiceAPI.d.ts +3 -0
  21. package/dist/src/api/events-service/EventsServiceAPI.js +62 -0
  22. package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -0
  23. package/dist/src/components/Event/EventCarouselContainer.d.ts +8 -0
  24. package/dist/src/components/Event/EventCarouselContainer.js +97 -0
  25. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -0
  26. package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +1 -0
  27. package/dist/src/components/User/Forms/ForgotPasswordForm.js +38 -24
  28. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  29. package/dist/src/components/User/Forms/SignInForm.d.ts +4 -3
  30. package/dist/src/components/User/Forms/SignInForm.js +32 -14
  31. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  32. package/dist/src/components/User/Forms/SignUpForm.d.ts +1 -0
  33. package/dist/src/components/User/Forms/SignUpForm.js +30 -26
  34. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  35. package/dist/src/components/generic/BookingWizard/BookingWizard.js +5 -2
  36. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  37. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +6 -3
  38. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  39. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +8 -5
  40. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  41. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +15 -9
  42. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  43. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +4 -1
  44. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  45. package/dist/src/components/generic/Currency.js +5 -5
  46. package/dist/src/components/generic/Currency.js.map +1 -1
  47. package/dist/src/components/generic/Event/EventCard.d.ts +8 -0
  48. package/dist/src/components/generic/Event/EventCard.js +70 -0
  49. package/dist/src/components/generic/Event/EventCard.js.map +1 -0
  50. package/dist/src/components/generic/Event/EventCarousel.d.ts +9 -0
  51. package/dist/src/components/generic/Event/EventCarousel.js +72 -0
  52. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -0
  53. package/dist/src/components/generic/Headline.d.ts +2 -2
  54. package/dist/src/components/generic/Headline.js +8 -4
  55. package/dist/src/components/generic/Headline.js.map +1 -1
  56. package/dist/src/components/generic/Icon/Icon.d.ts +5 -1
  57. package/dist/src/components/generic/Icon/Icon.js +4 -0
  58. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  59. package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -1
  60. package/dist/src/components/generic/Overlay/Overlay.js +50 -7
  61. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  62. package/dist/src/components/generic/PasswordBox/PasswordBox.js +2 -2
  63. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  64. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.d.ts +8 -0
  65. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js +16 -0
  66. package/dist/src/components/generic/PaymentCard/InlinePaymentCard.js.map +1 -0
  67. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.d.ts +8 -0
  68. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +61 -0
  69. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -0
  70. package/dist/src/components/generic/PaymentCard/PaymentCard.js +6 -3
  71. package/dist/src/components/generic/PaymentCard/PaymentCard.js.map +1 -1
  72. package/dist/src/components/generic/PaymentCard/PaymentCardInput.d.ts +2 -3
  73. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +34 -28
  74. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  75. package/dist/src/components/generic/PromoCodeInput.js +15 -18
  76. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  77. package/dist/src/components/generic/RadioButtonGroup/RadioButton.d.ts +5 -4
  78. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +33 -10
  79. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  80. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.d.ts +14 -11
  81. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +69 -11
  82. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  83. package/dist/src/components/generic/RatioImage/RatioImage.d.ts +11 -0
  84. package/dist/src/components/generic/RatioImage/RatioImage.js +12 -0
  85. package/dist/src/components/generic/RatioImage/RatioImage.js.map +1 -0
  86. package/dist/src/components/generic/RecentSearchesCard.js +6 -5
  87. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  88. package/dist/src/components/generic/Tabs/TabLink.js +28 -3
  89. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  90. package/dist/src/components/generic/TextBox.js +1 -1
  91. package/dist/src/components/generic/TextBox.js.map +1 -1
  92. package/dist/src/components/generic/badging/SSLSecureBadge.js +4 -1
  93. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  94. package/dist/src/components/generic/buttons/NextStepButton.d.ts +0 -3
  95. package/dist/src/components/generic/buttons/NextStepButton.js +4 -1
  96. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  97. package/dist/src/components/generic/loader/LargeLoader.js +31 -6
  98. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  99. package/dist/src/components/generic/modal/ConfirmationModal.js +6 -3
  100. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  101. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.d.ts +14 -2
  102. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +34 -26
  103. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  104. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.d.ts +7 -0
  105. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js +14 -0
  106. package/dist/src/components/generic/modal/SigninModal/FormContent/ForgotPasswordFormContent.js.map +1 -0
  107. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.d.ts +8 -0
  108. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js +25 -0
  109. package/dist/src/components/generic/modal/SigninModal/FormContent/SignInFormContent.js.map +1 -0
  110. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.d.ts +7 -0
  111. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +49 -0
  112. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -0
  113. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +5 -2
  114. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +30 -39
  115. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  116. package/dist/src/components/generic/print/NoPrint.d.ts +3 -0
  117. package/dist/src/components/generic/print/NoPrint.js +11 -0
  118. package/dist/src/components/generic/print/NoPrint.js.map +1 -0
  119. package/dist/src/components/generic/print/PrintOnly.d.ts +3 -0
  120. package/dist/src/components/generic/print/PrintOnly.js +11 -0
  121. package/dist/src/components/generic/print/PrintOnly.js.map +1 -0
  122. package/dist/src/components/graphics/AddCard.d.ts +7 -0
  123. package/dist/src/components/graphics/AddCard.js +28 -0
  124. package/dist/src/components/graphics/AddCard.js.map +1 -0
  125. package/dist/src/components/graphics/HomeEmptyCard.d.ts +7 -0
  126. package/dist/src/components/graphics/HomeEmptyCard.js +53 -0
  127. package/dist/src/components/graphics/HomeEmptyCard.js.map +1 -0
  128. package/dist/src/components/graphics/HomeEmptyReservation.d.ts +7 -0
  129. package/dist/src/components/graphics/HomeEmptyReservation.js +136 -0
  130. package/dist/src/components/graphics/HomeEmptyReservation.js.map +1 -0
  131. package/dist/src/components/iconComponents/CreditCardOff.d.ts +6 -0
  132. package/dist/src/components/iconComponents/CreditCardOff.js +16 -0
  133. package/dist/src/components/iconComponents/CreditCardOff.js.map +1 -0
  134. package/dist/src/components/members/EditMyProfile.js +19 -21
  135. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  136. package/dist/src/components/navigation/Header.js +29 -9
  137. package/dist/src/components/navigation/Header.js.map +1 -1
  138. package/dist/src/components/navigation/StepSelector.js +2 -1
  139. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  140. package/dist/src/components/pages/Account/Card/MemberCardItem.js +5 -2
  141. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  142. package/dist/src/components/reservation/EmptyReservation.js +3 -3
  143. package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
  144. package/dist/src/components/reservation/ReservationItem.d.ts +4 -3
  145. package/dist/src/components/reservation/ReservationItem.js +45 -33
  146. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  147. package/dist/src/components/reservation/ReservationList.d.ts +2 -2
  148. package/dist/src/components/reservation/ReservationList.js +1 -1
  149. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  150. package/dist/src/components/steps/DaysSelectedInformer.js +15 -10
  151. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  152. package/dist/src/components/steps/addons/AddonCard.js +10 -12
  153. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  154. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  155. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +26 -7
  156. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  157. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.d.ts +1 -2
  158. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +36 -44
  159. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  160. package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +7 -0
  161. package/dist/src/components/steps/confirmation/PaymentInformation.js +119 -0
  162. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -0
  163. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +12 -10
  164. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  165. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +43 -80
  166. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  167. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +7 -5
  168. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  169. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +10 -12
  170. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  171. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +8 -2
  172. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  173. package/dist/src/components/steps/date/PeoplePicker.js +9 -9
  174. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  175. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  176. package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +1 -1
  177. package/dist/src/components/steps/date/StepOneNextStepButton.js +2 -4
  178. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  179. package/dist/src/components/steps/hotel/HotelCard.js +5 -11
  180. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  181. package/dist/src/components/steps/hotel/HotelCardModal.js +5 -6
  182. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  183. package/dist/src/components/steps/hotel/HotelSearchParameters.js +8 -8
  184. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  185. package/dist/src/components/steps/room/AvailableUpgradesModal.js +8 -9
  186. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  187. package/dist/src/components/steps/room/InactivityWindow.js +3 -5
  188. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  189. package/dist/src/components/steps/room/LargeRoomCard.js +5 -4
  190. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  191. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js +42 -40
  192. package/dist/src/components/steps/room/MemberSignInModal/MemberSignInModal.js.map +1 -1
  193. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +7 -9
  194. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  195. package/dist/src/components/steps/room/RatesNotFound.js +6 -3
  196. package/dist/src/components/steps/room/RatesNotFound.js.map +1 -1
  197. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +3 -3
  198. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  199. package/dist/src/components/steps/room/StepRoomNextStepButton.d.ts +2 -1
  200. package/dist/src/components/steps/room/StepRoomNextStepButton.js +3 -3
  201. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  202. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +2 -6
  203. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  204. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +16 -18
  205. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  206. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +2 -2
  207. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  208. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +6 -3
  209. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  210. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +3 -1
  211. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  212. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +7 -8
  213. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  214. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +4 -6
  215. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  216. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +4 -5
  217. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  218. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +7 -5
  219. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  220. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +4 -1
  221. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  222. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +5 -2
  223. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  224. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +11 -10
  225. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  226. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +1 -1
  227. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  228. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +7 -8
  229. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  230. package/dist/src/components/summary/BEMobileSummaryModal.js +1 -1
  231. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  232. package/dist/src/components/summary/BESummaryPerkBlock.js +4 -1
  233. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  234. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +5 -10
  235. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  236. package/dist/src/components/summary/BESummaryRoomRow.js +4 -6
  237. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  238. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +5 -1
  239. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  240. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
  241. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  242. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +36 -13
  243. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  244. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +26 -2
  245. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  246. package/dist/src/contexts/ConfirmationFormContext.d.ts +0 -2
  247. package/dist/src/contexts/ConfirmationFormContext.js +0 -3
  248. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  249. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +13 -8
  250. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  251. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +1 -6
  252. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +24 -18
  253. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  254. package/dist/src/contexts/HotelOverridesContext.js +4 -0
  255. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  256. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +10 -6
  257. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  258. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +76 -26
  259. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  260. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +8 -5
  261. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.js.map +1 -1
  262. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +35 -4
  263. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  264. package/dist/src/engines/BaseEngine.d.ts +2 -1
  265. package/dist/src/engines/BaseEngine.js +1 -1
  266. package/dist/src/engines/BaseEngine.js.map +1 -1
  267. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  268. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +24 -25
  269. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  270. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.d.ts +22 -0
  271. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js +33 -0
  272. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -0
  273. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +6 -0
  274. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +116 -0
  275. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -0
  276. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +11 -10
  277. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  278. package/dist/src/errors/GetAvailabilityError.d.ts +2 -1
  279. package/dist/src/errors/GetAvailabilityError.js +10 -3
  280. package/dist/src/errors/GetAvailabilityError.js.map +1 -1
  281. package/dist/src/hooks/HistoryConsistentPush.d.ts +1 -0
  282. package/dist/src/hooks/HistoryConsistentPush.js +12 -0
  283. package/dist/src/hooks/HistoryConsistentPush.js.map +1 -0
  284. package/dist/src/hooks/LoggedInUserHook.d.ts +3 -3
  285. package/dist/src/hooks/Query.js +2 -6
  286. package/dist/src/hooks/Query.js.map +1 -1
  287. package/dist/src/hooks/UpdateQueryParameters.d.ts +1 -0
  288. package/dist/src/hooks/UpdateQueryParameters.js +16 -0
  289. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -0
  290. package/dist/src/hooks/VGSHooks.d.ts +11 -1
  291. package/dist/src/hooks/VGSHooks.js +26 -11
  292. package/dist/src/hooks/VGSHooks.js.map +1 -1
  293. package/dist/src/index.d.ts +2 -3
  294. package/dist/src/index.js +2 -0
  295. package/dist/src/index.js.map +1 -1
  296. package/dist/src/mockApi/HotelAPI.d.ts +1 -1
  297. package/dist/src/mockApi/HotelAPI.js.map +1 -1
  298. package/dist/src/models/Api/HotelDTO.d.ts +11 -3
  299. package/dist/src/models/Api/HotelDTO.js +17 -8
  300. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  301. package/dist/src/models/Api/HotelOverrideDTO.d.ts +1 -0
  302. package/dist/src/models/Api/HotelOverrideDTO.js.map +1 -1
  303. package/dist/src/models/Api/ReservationsDTO.d.ts +2 -0
  304. package/dist/src/models/Api/ReservationsDTO.js.map +1 -1
  305. package/dist/src/models/AppQueryParameters.d.ts +14 -0
  306. package/dist/src/models/AppQueryParameters.js +19 -0
  307. package/dist/src/models/AppQueryParameters.js.map +1 -0
  308. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +2 -2
  309. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  310. package/dist/src/models/Client/Hotel/ColorProfile.d.ts +3 -0
  311. package/dist/src/models/Client/Hotel/ColorProfile.js.map +1 -1
  312. package/dist/src/models/Client/Hotel/Company.d.ts +2 -2
  313. package/dist/src/models/Client/Hotel/Company.js.map +1 -1
  314. package/dist/src/models/Client/Hotel/Hotel.d.ts +15 -5
  315. package/dist/src/models/Client/Hotel/Hotel.js +3 -1
  316. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  317. package/dist/src/models/Confirmation.d.ts +1 -1
  318. package/dist/src/models/Confirmation.js.map +1 -1
  319. package/dist/src/models/Room/Filters/Filter.d.ts +2 -1
  320. package/dist/src/models/Room/Filters/Filter.js.map +1 -1
  321. package/dist/src/models/Room/Filters/RateTypeFilter.d.ts +2 -1
  322. package/dist/src/models/Room/Filters/RateTypeFilter.js +3 -2
  323. package/dist/src/models/Room/Filters/RateTypeFilter.js.map +1 -1
  324. package/dist/src/models/Room/Filters/RoomTypeFilter.d.ts +2 -1
  325. package/dist/src/models/Room/Filters/RoomTypeFilter.js +3 -2
  326. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  327. package/dist/src/pages/account/AccountHome/AccountHomePage.js +9 -10
  328. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  329. package/dist/src/pages/account/AccountRouter.js +7 -9
  330. package/dist/src/pages/account/AccountRouter.js.map +1 -1
  331. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +19 -32
  332. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  333. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +9 -7
  334. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  335. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +25 -38
  336. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  337. package/dist/src/pages/account/Help/AccountHelpPage.js +16 -25
  338. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  339. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +68 -52
  340. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  341. package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
  342. package/dist/src/pages/findReservation/FindReservation.js +40 -23
  343. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  344. package/dist/src/pages/findReservation/ReservationRow.js +10 -9
  345. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  346. package/dist/src/pages/findReservation/ReservationRowModal.js +3 -3
  347. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  348. package/dist/src/pages/hotel/HotelInfo.js +6 -6
  349. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  350. package/dist/src/pages/steps/Step.d.ts +2 -2
  351. package/dist/src/pages/steps/Step.js.map +1 -1
  352. package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +2 -2
  353. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  354. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.d.ts +2 -2
  355. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  356. package/dist/src/pages/steps/StepDate/StepDate.d.ts +2 -2
  357. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  358. package/dist/src/pages/steps/StepDate/StepDateComponent.js +1 -1
  359. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  360. package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +2 -2
  361. package/dist/src/pages/steps/StepHotel/StepHotel.js.map +1 -1
  362. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +10 -7
  363. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  364. package/dist/src/pages/steps/StepRoom/StepRoom.d.ts +2 -2
  365. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  366. package/dist/src/pages/steps/StepThanks/StepThanks.d.ts +2 -2
  367. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  368. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +5 -0
  369. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  370. package/dist/src/providers/FeatureProvider.js +2 -0
  371. package/dist/src/providers/FeatureProvider.js.map +1 -1
  372. package/dist/src/providers/RoomstayThemeEngine.d.ts +3 -3
  373. package/dist/src/providers/RoomstayThemeEngine.js +4 -18
  374. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  375. package/dist/src/providers/feature/ModifyBookingFeature.d.ts +6 -0
  376. package/dist/src/providers/feature/ModifyBookingFeature.js +10 -0
  377. package/dist/src/providers/feature/ModifyBookingFeature.js.map +1 -0
  378. package/dist/src/stories/EventCarousel.stories.d.ts +6 -0
  379. package/dist/src/stories/EventCarousel.stories.js +236 -0
  380. package/dist/src/stories/EventCarousel.stories.js.map +1 -0
  381. package/dist/src/stories/RadioButton.stories.d.ts +3 -3
  382. package/dist/src/stories/RadioButtonGroup.stories.d.ts +4 -1
  383. package/dist/src/stories/RadioButtonGroup.stories.js +73 -1
  384. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  385. package/dist/src/translations/Translation.d.ts +196 -8
  386. package/dist/src/translations/Translation.js +198 -10
  387. package/dist/src/translations/Translation.js.map +1 -1
  388. package/dist/src/translations/languages/en-gb.js +198 -10
  389. package/dist/src/translations/languages/en-gb.js.map +1 -1
  390. package/dist/src/util/Color.d.ts +3 -0
  391. package/dist/src/util/Color.js +21 -1
  392. package/dist/src/util/Color.js.map +1 -1
  393. package/dist/src/util/CurrencyHelper.d.ts +11 -3
  394. package/dist/src/util/CurrencyHelper.js +306 -5
  395. package/dist/src/util/CurrencyHelper.js.map +1 -1
  396. package/dist/src/util/EventsHelper.d.ts +11 -0
  397. package/dist/src/util/EventsHelper.js +43 -0
  398. package/dist/src/util/EventsHelper.js.map +1 -0
  399. package/dist/src/util/StringHelper.d.ts +2 -2
  400. package/dist/src/util/StringHelper.js +5 -4
  401. package/dist/src/util/StringHelper.js.map +1 -1
  402. package/dist/src/util/TextAlignment.d.ts +2 -1
  403. package/dist/src/util/TextAlignment.js +1 -0
  404. package/dist/src/util/TextAlignment.js.map +1 -1
  405. package/dist/src/util/Validation.d.ts +17 -13
  406. package/dist/src/util/Validation.js +34 -18
  407. package/dist/src/util/Validation.js.map +1 -1
  408. package/dist/test.bundle.js +1 -1
  409. package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +1 -0
  410. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +41 -0
  411. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +1 -0
  412. package/dist/tests/jest/events/EventManager.test.d.ts +1 -0
  413. package/dist/tests/jest/events/EventManager.test.js +101 -0
  414. package/dist/tests/jest/events/EventManager.test.js.map +1 -0
  415. package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +1 -0
  416. package/dist/tests/jest/helpers/ObjectHelper.test.js +72 -0
  417. package/dist/tests/jest/helpers/ObjectHelper.test.js.map +1 -0
  418. package/dist/tests/jest/models/RoomRate.test.d.ts +1 -0
  419. package/dist/tests/jest/models/RoomRate.test.js +133 -0
  420. package/dist/tests/jest/models/RoomRate.test.js.map +1 -0
  421. package/dist/tests/jest/providers/LanguageProvider.test.d.ts +1 -0
  422. package/dist/tests/jest/providers/LanguageProvider.test.js +32 -0
  423. package/dist/tests/jest/providers/LanguageProvider.test.js.map +1 -0
  424. package/dist/tests/jest/providers/SessionProvider.test.d.ts +1 -0
  425. package/dist/tests/jest/providers/SessionProvider.test.js +230 -0
  426. package/dist/tests/jest/providers/SessionProvider.test.js.map +1 -0
  427. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +1 -0
  428. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +126 -0
  429. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +1 -0
  430. package/dist/tests/jest/reducers/BasketReducer.test.d.ts +1 -0
  431. package/dist/tests/jest/reducers/BasketReducer.test.js +103 -0
  432. package/dist/tests/jest/reducers/BasketReducer.test.js.map +1 -0
  433. package/dist/tests/offline/RoomstayBestRateAlert.d.ts +1 -0
  434. package/dist/tests/offline/RoomstayBestRateAlert.js +48 -0
  435. package/dist/tests/offline/RoomstayBestRateAlert.js.map +1 -0
  436. package/dist/tests/offline/entry/RSCompany.js +7 -2
  437. package/dist/tests/offline/entry/RSCompany.js.map +1 -1
  438. package/dist/tests/offline/entry/ReactWrapper.d.ts +1 -0
  439. package/dist/tests/offline/entry/ReactWrapper.js +140 -0
  440. package/dist/tests/offline/entry/ReactWrapper.js.map +1 -0
  441. package/dist/tests/offline/entry/allEngines.d.ts +1 -0
  442. package/dist/tests/offline/entry/allEngines.js +50 -0
  443. package/dist/tests/offline/entry/allEngines.js.map +1 -0
  444. package/dist/tests/offline/entry/components/TestPicker.d.ts +1 -0
  445. package/dist/tests/offline/entry/components/TestPicker.js +214 -0
  446. package/dist/tests/offline/entry/components/TestPicker.js.map +1 -0
  447. package/dist/tests/offline/entry/context/EngineContext.d.ts +9 -0
  448. package/dist/tests/offline/entry/context/EngineContext.js +37 -0
  449. package/dist/tests/offline/entry/context/EngineContext.js.map +1 -0
  450. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.d.ts +1 -0
  451. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js +68 -0
  452. package/dist/tests/offline/entry/engineRenderer/memberPortalWidgetRenderer.js.map +1 -0
  453. package/dist/tests/setupTests.d.ts +0 -0
  454. package/dist/tests/setupTests.js +12 -0
  455. package/dist/tests/setupTests.js.map +1 -0
  456. package/dist/vendors.bundle.js +1 -1
  457. package/package.json +3 -3
  458. package/dist/14.bundle.js +0 -1
  459. package/dist/399.bundle.js +0 -2
  460. package/dist/559.bundle.js +0 -1
  461. package/dist/848.bundle.js +0 -1
  462. package/dist/962.bundle.js +0 -1
  463. package/dist/src/components/temp/Login.d.ts +0 -2
  464. package/dist/src/components/temp/Login.js +0 -79
  465. package/dist/src/components/temp/Login.js.map +0 -1
  466. /package/dist/{399.bundle.js.LICENSE.txt → 535.bundle.js.LICENSE.txt} +0 -0
@@ -1,5 +1,5 @@
1
1
  import BaseAPI from './BaseAPI';
2
- import HotelDTO from '../models/Api/HotelDTO';
2
+ import { HotelDTO } from '../models/Api/HotelDTO';
3
3
  import { Language } from '../providers/LanguageProvider';
4
4
  import { Hotel } from '../models/Client/Hotel/Hotel';
5
5
  import { HotelOverrideDTO } from '../models/Api/HotelOverrideDTO';
@@ -1 +1 @@
1
- {"version":3,"file":"HotelAPI.js","sourceRoot":"/","sources":["src/api/HotelAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;AAMpC,MAAqB,QAAS,SAAQ,iBAAO;IAA7C;;QACY,oBAAe,GAA+B,EAAE,CAAC;QACjD,mBAAc,GAAwC,EAAE,CAAC;QAEzD,eAAU,GAAG,CAAC,MAAa,EAAE,EAAE;YACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEK,cAAS,GAAG,CAAO,IAAc,EAAE,KAAa,EAAqB,EAAE;YAC1E,MAAM,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC;YAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,OAAO,aAAa,IAAI,EAAE,EAAE;oBAClF,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;iBAC1C,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEtD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAA,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC;QAEF,sBAAsB;QACf,mBAAc,GAAG,CAAO,UAAkB,EAAE,SAAkB,EAA6B,EAAE;YAChG,gEAAgE;YAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,UAAU,aAAa,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3H,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;IACN,CAAC;CAAA;AA1CD,2BA0CC","sourcesContent":["import BaseAPI from '@/api/BaseAPI';\nimport HotelDTO from '@/models/Api/HotelDTO';\nimport { Language } from '@/providers/LanguageProvider';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\n\nexport default class HotelAPI extends BaseAPI {\n private cachedResponses: { [id: string]: HotelDTO } = {};\n private pendingQueries: { [id: string]: Promise<HotelDTO> } = {};\n\n private getQueryID = (params: any[]) => {\n return params.join('-');\n };\n\n public fetchData = async (lang: Language, hotel?: Hotel): Promise<HotelDTO> => {\n const hotelID = hotel?.hotelID;\n\n const queryID = this.getQueryID([lang, hotelID]);\n\n if (this.cachedResponses[queryID]) {\n return this.cachedResponses[queryID];\n }\n\n if (!!this.pendingQueries[queryID]) {\n return this.pendingQueries[queryID];\n }\n\n this.pendingQueries[queryID] = new Promise(async (resolve, reject) => {\n const response = await fetch(this.getApiPath() + `hotel/${hotelID}?language=${lang}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n this.cachedResponses[queryID] = await response.json();\n\n resolve(this.cachedResponses[queryID]);\n });\n\n return this.pendingQueries[queryID];\n };\n\n // TODO: Return typing\n public fetchOverrides = async (frontendId: string, companyId?: string): Promise<HotelOverrideDTO> => {\n // TODO: Fetch using hotelID + companyId, rather than frontendId\n const response = await fetch(this.getApiPath() + `hotel/${frontendId}/overrides${companyId ? `?companyId=${companyId}` : ''}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n const json = await response.json();\n return json;\n };\n}\n"]}
1
+ {"version":3,"file":"HotelAPI.js","sourceRoot":"/","sources":["src/api/HotelAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4DAAoC;AAMpC,MAAqB,QAAS,SAAQ,iBAAO;IAA7C;;QACY,oBAAe,GAA+B,EAAE,CAAC;QACjD,mBAAc,GAAwC,EAAE,CAAC;QAEzD,eAAU,GAAG,CAAC,MAAa,EAAE,EAAE;YACnC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEK,cAAS,GAAG,CAAO,IAAc,EAAE,KAAa,EAAqB,EAAE;YAC1E,MAAM,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC;YAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;gBACjE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,OAAO,aAAa,IAAI,EAAE,EAAE;oBAClF,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;iBAC1C,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEtD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,CAAC,CAAA,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC;QAEF,sBAAsB;QACf,mBAAc,GAAG,CAAO,UAAkB,EAAE,SAAkB,EAA6B,EAAE;YAChG,gEAAgE;YAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS,UAAU,aAAa,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3H,OAAO,EAAE,MAAM,iBAAO,CAAC,cAAc,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAA,CAAC;IACN,CAAC;CAAA;AA1CD,2BA0CC","sourcesContent":["import BaseAPI from '@/api/BaseAPI';\nimport { HotelDTO } from '@/models/Api/HotelDTO';\nimport { Language } from '@/providers/LanguageProvider';\nimport { Hotel } from '@/models/Client/Hotel/Hotel';\nimport { HotelOverrideDTO } from '@/models/Api/HotelOverrideDTO';\n\nexport default class HotelAPI extends BaseAPI {\n private cachedResponses: { [id: string]: HotelDTO } = {};\n private pendingQueries: { [id: string]: Promise<HotelDTO> } = {};\n\n private getQueryID = (params: any[]) => {\n return params.join('-');\n };\n\n public fetchData = async (lang: Language, hotel?: Hotel): Promise<HotelDTO> => {\n const hotelID = hotel?.hotelID;\n\n const queryID = this.getQueryID([lang, hotelID]);\n\n if (this.cachedResponses[queryID]) {\n return this.cachedResponses[queryID];\n }\n\n if (!!this.pendingQueries[queryID]) {\n return this.pendingQueries[queryID];\n }\n\n this.pendingQueries[queryID] = new Promise(async (resolve, reject) => {\n const response = await fetch(this.getApiPath() + `hotel/${hotelID}?language=${lang}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n this.cachedResponses[queryID] = await response.json();\n\n resolve(this.cachedResponses[queryID]);\n });\n\n return this.pendingQueries[queryID];\n };\n\n // TODO: Return typing\n public fetchOverrides = async (frontendId: string, companyId?: string): Promise<HotelOverrideDTO> => {\n // TODO: Fetch using hotelID + companyId, rather than frontendId\n const response = await fetch(this.getApiPath() + `hotel/${frontendId}/overrides${companyId ? `?companyId=${companyId}` : ''}`, {\n headers: await BaseAPI.getBaseHeaders(),\n });\n const json = await response.json();\n return json;\n };\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  import BaseAPI from './BaseAPI';
2
2
  import BasketRow from '../models/BasketRow';
3
3
  import UserProfile from '../models/UserProfile';
4
- import PaymentCard from '../models/PaymentCard';
5
4
  import ReservationsDTO from '../models/Api/ReservationsDTO';
6
5
  import BasketAddonRow from '../models/BasketAddonRow';
7
6
  import { IBookingPayment } from '@roomstay/core';
@@ -9,11 +8,6 @@ export declare enum EPaymentMethod {
9
8
  PLANPAY = "Planpay",
10
9
  CARD = "Card"
11
10
  }
12
- export interface IPayment {
13
- Type: EPaymentMethod;
14
- PlanpayCheckoutId?: string;
15
- PaymentCard?: PaymentCard;
16
- }
17
11
  export default class ReservationAPI extends BaseAPI {
18
12
  private storedReservations;
19
13
  bookNow: (basketRows: BasketRow[], userProfiles: UserProfile[], payment: IBookingPayment, addonRows: BasketAddonRow[], comments: string, hotelId: string, specialReq?: string | undefined) => Promise<ReservationsDTO>;
@@ -1 +1 @@
1
- {"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import BaseAPI, { APIEndpoint } from '@/api/BaseAPI';\nimport BasketRow from '@/models/BasketRow';\nimport UserProfile from '@/models/UserProfile';\nimport PaymentCard from '@/models/PaymentCard';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { IBookingPayment } from '@roomstay/core';\n\nexport enum EPaymentMethod {\n PLANPAY = 'Planpay',\n CARD = 'Card',\n}\nexport interface IPayment {\n Type: EPaymentMethod;\n PlanpayCheckoutId?: string;\n PaymentCard?: PaymentCard;\n}\n\nexport default class ReservationAPI extends BaseAPI {\n private storedReservations: { [ref: string]: any } = {};\n\n public bookNow = async (\n basketRows: BasketRow[],\n userProfiles: UserProfile[],\n payment: IBookingPayment,\n addonRows: BasketAddonRow[],\n comments: string,\n hotelId: string,\n specialReq: string | undefined = undefined\n ): Promise<ReservationsDTO> => {\n const rooms: any[] = [];\n\n basketRows.forEach((row) => {\n const room = {\n RoomType: row.getRoom().code,\n RatePlan: row.getRate()?.code,\n PromoCode: row.getPromoCode(),\n Adults: row.getAdults(),\n Children: row.getChildren(),\n CheckInDate: row.getStartDate().format('YYYY-MM-DD'),\n CheckOutDate: row.getEndDate().format('YYYY-MM-DD'),\n };\n\n rooms.push(room);\n });\n\n const addons = addonRows.map((row) => {\n const addon = row.getAddon();\n const priceInfo = addon.availability[row.getSelectedDate()];\n\n const response: any = {\n Code: addon.code,\n StartDate: row.getSelectedDate(),\n };\n if (addon?.ratePlanCode) {\n response.RatePlanCode = row.getAddon().ratePlanCode;\n }\n if (row.getSelectedTime()) {\n response.StartTime = row.getSelectedTime();\n }\n\n if (priceInfo.price) {\n response.Quantity = row.getQuantity();\n }\n if (priceInfo.adultPrice) {\n response.Adults = row.getAdultQuantity();\n }\n if (priceInfo.childPrice) {\n response.Children = row.getChildQuantity();\n }\n\n if (addon.pricingType) {\n response.PricingType = addon.pricingType;\n }\n\n return response;\n });\n\n return this.post(\n APIEndpoint.Reservations,\n {\n Rooms: rooms,\n Services: addons,\n SpecialRequest: specialReq,\n Comments: comments,\n Profiles: userProfiles,\n Payment: payment,\n },\n hotelId\n );\n };\n\n public commit = async (reservations: string[], itineraryId: string, hotelId: string, planpayCheckoutId?: string): Promise<ReservationsDTO> => {\n return this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n planpayCheckoutId,\n },\n hotelId,\n {},\n 'commit'\n );\n };\n\n public rollback = async (reservations: string[], itineraryId: string, hotelId: string): Promise<boolean> => {\n await this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n },\n hotelId,\n {},\n 'rollback'\n );\n\n return true;\n };\n\n public cancelReservation = (id: string, email: string, hotelId: string): Promise<boolean> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.delete(APIEndpoint.Reservations, {}, hotelId, { email: encodeURIComponent(email) }, id);\n\n this.storedReservations[id]?.reservations?.forEach((reservation: ReservationDTO) => {\n if (reservation.reservationNumber === id) {\n reservation.status = 'Cancelled';\n }\n });\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public findReservation = (id: string, email: string, hotelId: string): Promise<ReservationsDTO> =>\n new Promise(async (resolve, reject) => {\n /*\n resolve with locally cached data, so we don't have to re-query this again\n */\n if (this.storedReservations[id]) {\n return resolve(this.storedReservations[id]);\n }\n\n try {\n const response = await this.get(APIEndpoint.Reservations, { email: encodeURIComponent(email) }, id, hotelId);\n\n this.storedReservations[id] = response;\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n}\n"]}
1
+ {"version":3,"file":"ReservationAPI.js","sourceRoot":"/","sources":["src/api/ReservationAPI.ts"],"names":[],"mappings":"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","sourcesContent":["import BaseAPI, { APIEndpoint } from '@/api/BaseAPI';\nimport BasketRow from '@/models/BasketRow';\nimport UserProfile from '@/models/UserProfile';\nimport ReservationsDTO, { ReservationDTO } from '@/models/Api/ReservationsDTO';\nimport BasketAddonRow from '@/models/BasketAddonRow';\nimport { IBookingPayment } from '@roomstay/core';\n\nexport enum EPaymentMethod {\n PLANPAY = 'Planpay',\n CARD = 'Card',\n}\n\nexport default class ReservationAPI extends BaseAPI {\n private storedReservations: { [ref: string]: any } = {};\n\n public bookNow = async (\n basketRows: BasketRow[],\n userProfiles: UserProfile[],\n payment: IBookingPayment,\n addonRows: BasketAddonRow[],\n comments: string,\n hotelId: string,\n specialReq: string | undefined = undefined\n ): Promise<ReservationsDTO> => {\n const rooms: any[] = [];\n\n basketRows.forEach((row) => {\n const room = {\n RoomType: row.getRoom().code,\n RatePlan: row.getRate()?.code,\n PromoCode: row.getPromoCode(),\n Adults: row.getAdults(),\n Children: row.getChildren(),\n CheckInDate: row.getStartDate().format('YYYY-MM-DD'),\n CheckOutDate: row.getEndDate().format('YYYY-MM-DD'),\n };\n\n rooms.push(room);\n });\n\n const addons = addonRows.map((row) => {\n const addon = row.getAddon();\n const priceInfo = addon.availability[row.getSelectedDate()];\n\n const response: any = {\n Code: addon.code,\n StartDate: row.getSelectedDate(),\n };\n if (addon?.ratePlanCode) {\n response.RatePlanCode = row.getAddon().ratePlanCode;\n }\n if (row.getSelectedTime()) {\n response.StartTime = row.getSelectedTime();\n }\n\n if (priceInfo.price) {\n response.Quantity = row.getQuantity();\n }\n if (priceInfo.adultPrice) {\n response.Adults = row.getAdultQuantity();\n }\n if (priceInfo.childPrice) {\n response.Children = row.getChildQuantity();\n }\n\n if (addon.pricingType) {\n response.PricingType = addon.pricingType;\n }\n\n return response;\n });\n\n return this.post(\n APIEndpoint.Reservations,\n {\n Rooms: rooms,\n Services: addons,\n SpecialRequest: specialReq,\n Comments: comments,\n Profiles: userProfiles,\n Payment: payment,\n },\n hotelId\n );\n };\n\n public commit = async (reservations: string[], itineraryId: string, hotelId: string, planpayCheckoutId?: string): Promise<ReservationsDTO> => {\n return this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n planpayCheckoutId,\n },\n hotelId,\n {},\n 'commit'\n );\n };\n\n public rollback = async (reservations: string[], itineraryId: string, hotelId: string): Promise<boolean> => {\n await this.post(\n APIEndpoint.Reservations,\n {\n itineraryId: itineraryId,\n reservationIds: reservations,\n },\n hotelId,\n {},\n 'rollback'\n );\n\n return true;\n };\n\n public cancelReservation = (id: string, email: string, hotelId: string): Promise<boolean> =>\n new Promise(async (resolve, reject) => {\n try {\n const response = await this.delete(APIEndpoint.Reservations, {}, hotelId, { email: encodeURIComponent(email) }, id);\n\n this.storedReservations[id]?.reservations?.forEach((reservation: ReservationDTO) => {\n if (reservation.reservationNumber === id) {\n reservation.status = 'Cancelled';\n }\n });\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n\n public findReservation = (id: string, email: string, hotelId: string): Promise<ReservationsDTO> =>\n new Promise(async (resolve, reject) => {\n /*\n resolve with locally cached data, so we don't have to re-query this again\n */\n if (this.storedReservations[id]) {\n return resolve(this.storedReservations[id]);\n }\n\n try {\n const response = await this.get(APIEndpoint.Reservations, { email: encodeURIComponent(email) }, id, hotelId);\n\n this.storedReservations[id] = response;\n\n resolve(response);\n } catch (ex) {\n reject(ex);\n }\n });\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import type { IRoomstayEvent } from '@roomstay/core';
2
+ export declare const getEventsForCity: (city: string) => Promise<IRoomstayEvent[]>;
3
+ export declare const getEventsFromHotelId: (hotelId: string, unixStartTime?: number) => Promise<IRoomstayEvent[]>;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getEventsFromHotelId = exports.getEventsForCity = void 0;
16
+ const BaseAPI_1 = __importDefault(require("../BaseAPI"));
17
+ const cachedCityEvents = {};
18
+ const getEventsForCity = (city) => __awaiter(void 0, void 0, void 0, function* () {
19
+ const headers = yield BaseAPI_1.default.getBaseHeaders();
20
+ if (cachedCityEvents[city]) {
21
+ return cachedCityEvents[city];
22
+ }
23
+ cachedCityEvents[city] = (() => __awaiter(void 0, void 0, void 0, function* () {
24
+ try {
25
+ const response = yield fetch(`${EVENTS_API_URL}?city=${city}`, { headers });
26
+ const responseJson = yield response.json();
27
+ return responseJson.data;
28
+ }
29
+ catch (ex) {
30
+ console.log(`Error fetching events for ${city}: `, ex);
31
+ }
32
+ return [];
33
+ }))();
34
+ return cachedCityEvents[city];
35
+ });
36
+ exports.getEventsForCity = getEventsForCity;
37
+ const cachedHotelEvents = {};
38
+ const getEventsFromHotelId = (hotelId, unixStartTime) => __awaiter(void 0, void 0, void 0, function* () {
39
+ const hotelEventKey = hotelId + unixStartTime;
40
+ const headers = yield BaseAPI_1.default.getBaseHeaders();
41
+ if (cachedHotelEvents[hotelEventKey]) {
42
+ return cachedHotelEvents[hotelEventKey];
43
+ }
44
+ cachedHotelEvents[hotelEventKey] = (() => __awaiter(void 0, void 0, void 0, function* () {
45
+ try {
46
+ const response = yield fetch(`${EVENTS_API_URL}hotel/${hotelId}?${unixStartTime
47
+ ? new URLSearchParams({
48
+ unixStartTime: unixStartTime === null || unixStartTime === void 0 ? void 0 : unixStartTime.toString(),
49
+ })
50
+ : ''}`, { headers });
51
+ const responseJson = yield response.json();
52
+ return responseJson.data;
53
+ }
54
+ catch (ex) {
55
+ console.log(`Error fetching events for hotelID ${hotelId}: `, ex);
56
+ throw new Error();
57
+ }
58
+ }))();
59
+ return cachedHotelEvents[hotelEventKey];
60
+ });
61
+ exports.getEventsFromHotelId = getEventsFromHotelId;
62
+ //# sourceMappingURL=EventsServiceAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventsServiceAPI.js","sourceRoot":"/","sources":["src/api/events-service/EventsServiceAPI.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,4DAAoC;AAIpC,MAAM,gBAAgB,GAAyE,EAAE,CAAC;AAE3F,MAAM,gBAAgB,GAAG,CAAO,IAAY,EAA6B,EAAE;IAC9E,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,cAAc,EAAE,CAAC;IAE/C,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;QACxB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAS,EAAE;QACjC,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,SAAS,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAE5E,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3C,OAAO,YAAY,CAAC,IAAI,CAAC;SAC5B;QAAC,OAAO,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;SAC1D;QAED,OAAO,EAAE,CAAC;IACd,CAAC,CAAA,CAAC,EAAE,CAAC;IAEL,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAA,CAAC;AAtBW,QAAA,gBAAgB,oBAsB3B;AAEF,MAAM,iBAAiB,GAAoE,EAAE,CAAC;AACvF,MAAM,oBAAoB,GAAG,CAAO,OAAe,EAAE,aAAsB,EAA6B,EAAE;IAC7G,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,CAAC;IAE9C,MAAM,OAAO,GAAG,MAAM,iBAAO,CAAC,cAAc,EAAE,CAAC;IAE/C,IAAI,iBAAiB,CAAC,aAAa,CAAC,EAAE;QAClC,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;KAC3C;IAED,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,GAAS,EAAE;QAC3C,IAAI;YACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CACxB,GAAG,cAAc,SAAS,OAAO,IAC7B,aAAa;gBACT,CAAC,CAAC,IAAI,eAAe,CAAC;oBAChB,aAAa,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE;iBAC3C,CAAC;gBACJ,CAAC,CAAC,EACV,EAAE,EACF,EAAE,OAAO,EAAE,CACd,CAAC;YAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE3C,OAAO,YAAY,CAAC,IAAI,CAAC;SAC5B;QAAC,OAAO,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;YAElE,MAAM,IAAI,KAAK,EAAE,CAAC;SACrB;IACL,CAAC,CAAA,CAAC,EAAE,CAAC;IAEL,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC,CAAA,CAAC;AAjCW,QAAA,oBAAoB,wBAiC/B","sourcesContent":["import type { IRoomstayEvent } from '@roomstay/core';\nimport BaseAPI from '@/api/BaseAPI';\n\ndeclare const EVENTS_API_URL: string;\n\nconst cachedCityEvents: { [cityName: string]: IRoomstayEvent[] | Promise<IRoomstayEvent[]> } = {};\n\nexport const getEventsForCity = async (city: string): Promise<IRoomstayEvent[]> => {\n const headers = await BaseAPI.getBaseHeaders();\n\n if (cachedCityEvents[city]) {\n return cachedCityEvents[city];\n }\n\n cachedCityEvents[city] = (async () => {\n try {\n const response = await fetch(`${EVENTS_API_URL}?city=${city}`, { headers });\n\n const responseJson = await response.json();\n\n return responseJson.data;\n } catch (ex) {\n console.log(`Error fetching events for ${city}: `, ex);\n }\n\n return [];\n })();\n\n return cachedCityEvents[city];\n};\n\nconst cachedHotelEvents: { [key: string]: IRoomstayEvent[] | Promise<IRoomstayEvent[]> } = {};\nexport const getEventsFromHotelId = async (hotelId: string, unixStartTime?: number): Promise<IRoomstayEvent[]> => {\n const hotelEventKey = hotelId + unixStartTime;\n\n const headers = await BaseAPI.getBaseHeaders();\n\n if (cachedHotelEvents[hotelEventKey]) {\n return cachedHotelEvents[hotelEventKey];\n }\n\n cachedHotelEvents[hotelEventKey] = (async () => {\n try {\n const response = await fetch(\n `${EVENTS_API_URL}hotel/${hotelId}?${\n unixStartTime\n ? new URLSearchParams({\n unixStartTime: unixStartTime?.toString(),\n })\n : ''\n }`,\n { headers }\n );\n\n const responseJson = await response.json();\n\n return responseJson.data;\n } catch (ex) {\n console.log(`Error fetching events for hotelID ${hotelId}: `, ex);\n\n throw new Error();\n }\n })();\n\n return cachedHotelEvents[hotelEventKey];\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { FC } from 'react';
2
+ interface EventCarouselContainerProps {
3
+ defaultExpanded?: boolean;
4
+ hotelId: string;
5
+ checkInDate: string;
6
+ }
7
+ declare const EventCarouselContainer: FC<EventCarouselContainerProps>;
8
+ export default EventCarouselContainer;
@@ -0,0 +1,97 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const react_1 = __importStar(require("react"));
39
+ const EventsServiceAPI_1 = require("../../api/events-service/EventsServiceAPI");
40
+ const EventCarousel_1 = __importDefault(require("../generic/Event/EventCarousel"));
41
+ const ScreenSize_1 = __importDefault(require("../../util/ScreenSize"));
42
+ const contexts_1 = require("../../contexts");
43
+ const EventsHelper = __importStar(require("../../util/EventsHelper"));
44
+ const dayjs_1 = __importDefault(require("dayjs"));
45
+ const EventCarouselContainer = ({ hotelId, defaultExpanded, checkInDate }) => {
46
+ const [loadedEvents, setLoadedEvents] = (0, react_1.useState)([]);
47
+ const beContext = (0, react_1.useContext)(contexts_1.BookingEngineContext);
48
+ const isMobile = beContext.screenSize <= ScreenSize_1.default.Medium;
49
+ const unixStartTime = (0, dayjs_1.default)(checkInDate).valueOf();
50
+ const getEventsFromStorage = () => __awaiter(void 0, void 0, void 0, function* () {
51
+ let cachedEvent = undefined;
52
+ try {
53
+ cachedEvent = yield EventsHelper.read(hotelId, unixStartTime);
54
+ }
55
+ catch (e) {
56
+ console.log(e);
57
+ }
58
+ return cachedEvent || undefined;
59
+ });
60
+ const getEventsFromApi = () => __awaiter(void 0, void 0, void 0, function* () {
61
+ if (!hotelId) {
62
+ return;
63
+ }
64
+ return (0, EventsServiceAPI_1.getEventsFromHotelId)(hotelId, unixStartTime).then(EventsHelper.getValidEvents);
65
+ });
66
+ const getEvents = () => __awaiter(void 0, void 0, void 0, function* () {
67
+ // const cachedEvents = await getEventsFromStorage();
68
+ // if (cachedEvents && EventsHelper.isCachedEventValid(cachedEvents)) {
69
+ // const validEvents = EventsHelper.getValidEvents(cachedEvents.events);
70
+ // EventsHelper.write({
71
+ // expired: cachedEvents.expired,
72
+ // events: validEvents,
73
+ // });
74
+ // setLoadedEvents(validEvents);
75
+ // } else {
76
+ // TODO: Commented out event caching temporarily
77
+ const newEvents = yield getEventsFromApi();
78
+ if (newEvents) {
79
+ EventsHelper.write(hotelId, unixStartTime, {
80
+ expired: (0, dayjs_1.default)().add(1, 'd').valueOf(),
81
+ events: newEvents,
82
+ });
83
+ setLoadedEvents(EventsHelper.getApplicableEvents(newEvents));
84
+ }
85
+ // }
86
+ });
87
+ (0, react_1.useEffect)(() => {
88
+ if (hotelId) {
89
+ getEvents();
90
+ }
91
+ }, [hotelId]);
92
+ if (!loadedEvents.length)
93
+ return null;
94
+ return react_1.default.createElement(EventCarousel_1.default, { small: isMobile, data: loadedEvents, defaultExpanded: defaultExpanded });
95
+ };
96
+ exports.default = EventCarouselContainer;
97
+ //# sourceMappingURL=EventCarouselContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventCarouselContainer.js","sourceRoot":"/","sources":["src/components/Event/EventCarouselContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAmE;AAEnE,4EAA6E;AAC7E,6FAAqE;AACrE,mEAA2C;AAC3C,yCAAkD;AAElD,kEAAoD;AACpD,kDAA0B;AAQ1B,MAAM,sBAAsB,GAAoC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,EAAE;IAC1G,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAmB,EAAE,CAAC,CAAC;IAEvE,MAAM,SAAS,GAAG,IAAA,kBAAU,EAAC,+BAAoB,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,IAAI,oBAAU,CAAC,MAAM,CAAC;IAE3D,MAAM,aAAa,GAAG,IAAA,eAAK,EAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;IAEnD,MAAM,oBAAoB,GAAG,GAA6C,EAAE;QACxE,IAAI,WAAW,GAAqC,SAAS,CAAC;QAC9D,IAAI;YACA,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;SACjE;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,OAAO,WAAW,IAAI,SAAS,CAAC;IACpC,CAAC,CAAA,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAS,EAAE;QAChC,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;SACV;QAED,OAAO,IAAA,uCAAoB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC1F,CAAC,CAAA,CAAC;IAEF,MAAM,SAAS,GAAG,GAAS,EAAE;QACzB,qDAAqD;QACrD,uEAAuE;QACvE,4EAA4E;QAC5E,2BAA2B;QAC3B,yCAAyC;QACzC,+BAA+B;QAC/B,UAAU;QACV,oCAAoC;QACpC,WAAW;QACX,gDAAgD;QAEhD,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE3C,IAAI,SAAS,EAAE;YACX,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE;gBACvC,OAAO,EAAE,IAAA,eAAK,GAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;gBACtC,MAAM,EAAE,SAAS;aACpB,CAAC,CAAC;YACH,eAAe,CAAC,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;SAChE;QACD,IAAI;IACR,CAAC,CAAA,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,OAAO,EAAE;YACT,SAAS,EAAE,CAAC;SACf;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO,8BAAC,uBAAa,IAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,GAAI,CAAC;AACpG,CAAC,CAAC;AAEF,kBAAe,sBAAsB,CAAC","sourcesContent":["import React, { FC, useContext, useEffect, useState } from 'react';\nimport { IRoomstayEvent } from '@roomstay/core';\nimport { getEventsFromHotelId } from '@/api/events-service/EventsServiceAPI';\nimport EventCarousel from '@/components/generic/Event/EventCarousel';\nimport ScreenSize from '@/util/ScreenSize';\nimport { BookingEngineContext } from '@/contexts';\nimport type { ICachedEvents } from '@/util/EventsHelper';\nimport * as EventsHelper from '@/util/EventsHelper';\nimport dayjs from 'dayjs';\n\ninterface EventCarouselContainerProps {\n defaultExpanded?: boolean;\n hotelId: string;\n checkInDate: string;\n}\n\nconst EventCarouselContainer: FC<EventCarouselContainerProps> = ({ hotelId, defaultExpanded, checkInDate }) => {\n const [loadedEvents, setLoadedEvents] = useState<IRoomstayEvent[]>([]);\n\n const beContext = useContext(BookingEngineContext);\n\n const isMobile = beContext.screenSize <= ScreenSize.Medium;\n\n const unixStartTime = dayjs(checkInDate).valueOf();\n\n const getEventsFromStorage = async (): Promise<ICachedEvents | undefined> => {\n let cachedEvent: ICachedEvents | undefined | null = undefined;\n try {\n cachedEvent = await EventsHelper.read(hotelId, unixStartTime);\n } catch (e) {\n console.log(e);\n }\n return cachedEvent || undefined;\n };\n\n const getEventsFromApi = async () => {\n if (!hotelId) {\n return;\n }\n\n return getEventsFromHotelId(hotelId, unixStartTime).then(EventsHelper.getValidEvents);\n };\n\n const getEvents = async () => {\n // const cachedEvents = await getEventsFromStorage();\n // if (cachedEvents && EventsHelper.isCachedEventValid(cachedEvents)) {\n // const validEvents = EventsHelper.getValidEvents(cachedEvents.events);\n // EventsHelper.write({\n // expired: cachedEvents.expired,\n // events: validEvents,\n // });\n // setLoadedEvents(validEvents);\n // } else {\n // TODO: Commented out event caching temporarily\n\n const newEvents = await getEventsFromApi();\n\n if (newEvents) {\n EventsHelper.write(hotelId, unixStartTime, {\n expired: dayjs().add(1, 'd').valueOf(),\n events: newEvents,\n });\n setLoadedEvents(EventsHelper.getApplicableEvents(newEvents));\n }\n // }\n };\n\n useEffect(() => {\n if (hotelId) {\n getEvents();\n }\n }, [hotelId]);\n\n if (!loadedEvents.length) return null;\n\n return <EventCarousel small={isMobile} data={loadedEvents} defaultExpanded={defaultExpanded} />;\n};\n\nexport default EventCarouselContainer;\n"]}
@@ -1,6 +1,7 @@
1
1
  type ForgotPasswordFormProps = {
2
2
  onPasswordReset?: () => void;
3
3
  onCancelled?: () => void;
4
+ onDone?: () => void;
4
5
  };
5
6
  export declare const ForgotPasswordForm: (props: ForgotPasswordFormProps) => JSX.Element;
6
7
  export {};
@@ -49,6 +49,7 @@ const contexts_1 = require("../../../contexts/index.js");
49
49
  const AutoAutoHeight_1 = __importDefault(require("../../../animations/AutoAutoHeight"));
50
50
  const Validation_1 = require("../../../util/Validation");
51
51
  const PasswordBox_1 = require("../../generic/PasswordBox/PasswordBox");
52
+ const hooks_1 = require("../../../hooks/index.js");
52
53
  const LabelAndInputGroup = (props) => {
53
54
  const { label, component, error } = props;
54
55
  return (react_1.default.createElement("div", { className: "u-marg-bottom--light" },
@@ -59,7 +60,8 @@ const LabelAndInputGroup = (props) => {
59
60
  };
60
61
  const ForgotPasswordForm = (props) => {
61
62
  const { t } = (0, react_i18next_1.useTranslation)();
62
- const { cognitoLoginState, loading: cognitoLoading, error, login, confirmAccount, forgotPassword, resetPassword, reset } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
63
+ const { cognitoLoginState, loading: cognitoLoading, forgotPassword, resetPassword, reset } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
64
+ const { hotel } = (0, hooks_1.useCurrentHotel)();
63
65
  const { register, formState, handleSubmit, watch, setError } = (0, react_hook_form_1.useForm)({
64
66
  mode: 'onSubmit',
65
67
  });
@@ -77,20 +79,32 @@ const ForgotPasswordForm = (props) => {
77
79
  const forgotPasswordStates = [contexts_1.CognitoLoginState.ForgotPassword, contexts_1.CognitoLoginState.CodeMismatch];
78
80
  const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState);
79
81
  const onSubmit = (values) => __awaiter(void 0, void 0, void 0, function* () {
82
+ var _a;
80
83
  setIsLoading(true);
81
- if (areResettingPassword) {
82
- const state = yield resetPassword(values.email, values.code, values.password);
83
- if (state === contexts_1.CognitoLoginState.CodeMismatch)
84
- setError('code', {
85
- message: 'Invalid verification code provided, please try again.',
86
- });
84
+ try {
85
+ if (areResettingPassword) {
86
+ const state = yield resetPassword(values.email, values.code, values.password, { hotel });
87
+ if (state === contexts_1.CognitoLoginState.CodeMismatch)
88
+ setError('code', {
89
+ message: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Validation.InvalidCode),
90
+ });
91
+ else
92
+ (_a = props.onDone) === null || _a === void 0 ? void 0 : _a.call(props);
93
+ }
94
+ else {
95
+ const state = yield forgotPassword(values.email, { hotel });
96
+ if (state === contexts_1.CognitoLoginState.UserNotFound) {
97
+ setError('email', {
98
+ message: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Validation.UserNotFound),
99
+ });
100
+ }
101
+ }
102
+ }
103
+ catch (ex) {
104
+ console.error(ex);
87
105
  }
88
- else {
89
- const state = yield forgotPassword(values.email);
90
- if (state === contexts_1.CognitoLoginState.UserNotFound)
91
- setError('email', {
92
- message: 'User could not be found',
93
- });
106
+ finally {
107
+ setIsLoading(false);
94
108
  }
95
109
  });
96
110
  const onCancelPressed = () => {
@@ -103,26 +117,26 @@ const ForgotPasswordForm = (props) => {
103
117
  react_1.default.createElement(Headline_1.default, { color: Color_1.Color.Navy, bold: true, className: "u-marg-bottom--light" }, t(Translation_1.Translation.Navigation.ForgotPassword.Title)),
104
118
  areResettingPassword && (react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.Success }, t(Translation_1.Translation.Navigation.ForgotPassword.CodeSent)))),
105
119
  react_1.default.createElement("form", { onSubmit: handleSubmit(onSubmit) },
106
- react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Label), error: formState.errors.email, component: react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder), required: true, validationStatus: getValidationClass('email'), inputProps: { disabled: areResettingPassword } }, register('email', {
120
+ react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Label), error: formState.errors.email, component: react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder), required: true, validationStatus: getValidationClass('email'), inputProps: { disabled: areResettingPassword || isLoading || cognitoLoading } }, register('email', {
107
121
  required: true,
108
- pattern: Validation_1.emailPatternRule,
122
+ pattern: (0, Validation_1.makeEmailPatternRule)(t),
109
123
  }))) }),
110
124
  react_1.default.createElement(AutoAutoHeight_1.default, { open: areResettingPassword },
111
- react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Label), error: formState.errors.code, component: react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder), validationStatus: getValidationClass('code') }, register('code', {
112
- required: (0, Validation_1.makeRequiredRule)(areResettingPassword),
125
+ react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Label), error: formState.errors.code, component: react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder), validationStatus: getValidationClass('code'), inputProps: { disabled: isLoading || cognitoLoading } }, register('code', {
126
+ required: (0, Validation_1.makeRequiredRule)(t)(areResettingPassword, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Code.Label)),
113
127
  }))) }),
114
- react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Label), error: formState.errors.password, component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder), validationStatus: getValidationClass('password') }, register('password', {
115
- required: (0, Validation_1.makeRequiredRule)(areResettingPassword),
116
- pattern: Validation_1.passwordPatternRule,
128
+ react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Label), error: formState.errors.password, component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder), validationStatus: getValidationClass('password'), inputProps: { disabled: isLoading || cognitoLoading } }, register('password', {
129
+ required: (0, Validation_1.makeRequiredRule)(t)(areResettingPassword, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.Password.Label)),
130
+ pattern: (0, Validation_1.makePasswordPatternRule)(t),
117
131
  }))) }),
118
- react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label), error: formState.errors.confirmPassword, component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder), validationStatus: getValidationClass('confirmPassword') }, register('confirmPassword', {
119
- required: (0, Validation_1.makeRequiredRule)(areResettingPassword),
132
+ react_1.default.createElement(LabelAndInputGroup, { label: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label), error: formState.errors.confirmPassword, component: react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder), validationStatus: getValidationClass('confirmPassword'), inputProps: { disabled: isLoading || cognitoLoading } }, register('confirmPassword', {
133
+ required: (0, Validation_1.makeRequiredRule)(t)(areResettingPassword, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)),
120
134
  validate: {
121
- isSame: (0, Validation_1.isPassWordMatch)(watch('password')),
135
+ isSame: (0, Validation_1.isPasswordMatch)(t)(watch('password')),
122
136
  },
123
137
  }))) })),
124
138
  react_1.default.createElement("div", { className: "u-marg-top" },
125
- react_1.default.createElement(BEButton_1.default, { primary: true, filled: true, wide: true, htmlType: "submit", isLoading: cognitoLoading }, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label))),
139
+ react_1.default.createElement(BEButton_1.default, { primary: true, filled: true, wide: true, htmlType: "submit", isLoading: cognitoLoading || isLoading }, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label))),
126
140
  react_1.default.createElement("div", { className: "u-marg-top u-align-center" },
127
141
  react_1.default.createElement(BEButton_1.default, { isText: true, onClick: onCancelPressed, size: "small" }, t(Translation_1.Translation.Navigation.ForgotPassword.Inputs.CancelButton.Label))))));
128
142
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ForgotPasswordForm.js","sourceRoot":"/","sources":["src/components/User/Forms/ForgotPasswordForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Headline from '@/components/generic/Headline';\nimport { Color } from '@/util/Color';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { FieldError, useForm } from 'react-hook-form';\nimport BEButton from '@/components/generic/BEButton';\nimport { AuthenticationContext, CognitoLoginState } from '@frontend/contexts';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport { emailPatternRule, isPassWordMatch, makeRequiredRule, passwordPatternRule } from '../../../util/Validation';\nimport { PasswordBox } from '../../generic/PasswordBox/PasswordBox';\n\ntype ForgotPasswordFormProps = {\n onPasswordReset?: () => void;\n onCancelled?: () => void;\n};\n\ntype ForgotPasswordFormValues = {\n email: string;\n code: number;\n password: string;\n confirmPassword: string;\n};\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, error } = props;\n\n return (\n <div className=\"u-marg-bottom--light\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {label}\n </Text>\n </div>\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n </div>\n );\n};\n\nexport const ForgotPasswordForm = (props: ForgotPasswordFormProps) => {\n const { t } = useTranslation();\n\n const { cognitoLoginState, loading: cognitoLoading, error, login, confirmAccount, forgotPassword, resetPassword, reset } = useContext(AuthenticationContext);\n\n const { register, formState, handleSubmit, watch, setError } = useForm<ForgotPasswordFormValues>({\n mode: 'onSubmit',\n });\n\n const [isLoading, setIsLoading] = useState(false);\n\n const getValidationClass = (name: keyof ForgotPasswordFormValues) => {\n if (formState.errors) {\n if (formState.errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const forgotPasswordStates: CognitoLoginState[] = [CognitoLoginState.ForgotPassword, CognitoLoginState.CodeMismatch];\n\n const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState as CognitoLoginState);\n\n const onSubmit = async (values: any) => {\n setIsLoading(true);\n\n if (areResettingPassword) {\n const state = await resetPassword(values.email, values.code, values.password);\n if (state === CognitoLoginState.CodeMismatch)\n setError('code', {\n message: 'Invalid verification code provided, please try again.',\n });\n } else {\n const state = await forgotPassword(values.email);\n if (state === CognitoLoginState.UserNotFound)\n setError('email', {\n message: 'User could not be found',\n });\n }\n };\n\n const onCancelPressed = () => {\n reset();\n props.onCancelled?.();\n };\n\n return (\n <div>\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.ForgotPassword.Title)}\n </Headline>\n {areResettingPassword && (\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Navigation.ForgotPassword.CodeSent)}\n </Text>\n )}\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Email.Label)}\n error={formState.errors.email}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder)}\n required\n validationStatus={getValidationClass('email')}\n inputProps={{ disabled: areResettingPassword }}\n {...register('email', {\n required: true,\n pattern: emailPatternRule,\n })}\n />\n }\n />\n\n <AutoAutoHeight open={areResettingPassword}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)}\n error={formState.errors.code}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder)}\n validationStatus={getValidationClass('code')}\n {...register('code', {\n required: makeRequiredRule(areResettingPassword),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)}\n error={formState.errors.password}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder)}\n validationStatus={getValidationClass('password')}\n {...register('password', {\n required: makeRequiredRule(areResettingPassword),\n pattern: passwordPatternRule,\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)}\n error={formState.errors.confirmPassword}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder)}\n validationStatus={getValidationClass('confirmPassword')}\n {...register('confirmPassword', {\n required: makeRequiredRule(areResettingPassword),\n validate: {\n isSame: isPassWordMatch(watch('password')),\n },\n })}\n />\n }\n />\n </AutoAutoHeight>\n <div className=\"u-marg-top\">\n <BEButton primary filled wide htmlType=\"submit\" isLoading={cognitoLoading}>\n {t(Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label)}\n </BEButton>\n </div>\n <div className=\"u-marg-top u-align-center\">\n <BEButton isText onClick={onCancelPressed} size=\"small\">\n {t(Translation.Navigation.ForgotPassword.Inputs.CancelButton.Label)}\n </BEButton>\n </div>\n </form>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"ForgotPasswordForm.js","sourceRoot":"/","sources":["src/components/User/Forms/ForgotPasswordForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Headline from '@/components/generic/Headline';\nimport { Color } from '@/util/Color';\nimport { Translation } from 'translations/Translation';\nimport Text, { TextType } from '@/components/generic/Text';\nimport TextBox from '@/components/generic/TextBox';\nimport { FieldError, useForm } from 'react-hook-form';\nimport BEButton from '@/components/generic/BEButton';\nimport { AuthenticationContext, CognitoLoginState } from '@frontend/contexts';\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport { isPasswordMatch, makeEmailPatternRule, makePasswordPatternRule, makeRequiredRule } from '../../../util/Validation';\nimport { PasswordBox } from '../../generic/PasswordBox/PasswordBox';\nimport { useCurrentHotel } from '@frontend/hooks';\n\ntype ForgotPasswordFormProps = {\n onPasswordReset?: () => void;\n onCancelled?: () => void;\n onDone?: () => void;\n};\n\ntype ForgotPasswordFormValues = {\n email: string;\n code: number;\n password: string;\n confirmPassword: string;\n};\n\ntype LabelAndInputGroupProps = {\n component: React.ReactNode;\n label: string;\n\n error?: FieldError;\n};\n\nconst LabelAndInputGroup = (props: LabelAndInputGroupProps) => {\n const { label, component, error } = props;\n\n return (\n <div className=\"u-marg-bottom--light\">\n <div className=\"u-marg-bottom--light\">\n <Text type={TextType.Label} color={Color.Navy} bold>\n {label}\n </Text>\n </div>\n {component}\n {!!error && (\n <p className=\"text-small\" style={{ color: '#ED4362' }}>\n {error.message}\n </p>\n )}\n </div>\n );\n};\n\nexport const ForgotPasswordForm = (props: ForgotPasswordFormProps) => {\n const { t } = useTranslation();\n\n const { cognitoLoginState, loading: cognitoLoading, forgotPassword, resetPassword, reset } = useContext(AuthenticationContext);\n const { hotel } = useCurrentHotel();\n\n const { register, formState, handleSubmit, watch, setError } = useForm<ForgotPasswordFormValues>({\n mode: 'onSubmit',\n });\n\n const [isLoading, setIsLoading] = useState(false);\n\n const getValidationClass = (name: keyof ForgotPasswordFormValues) => {\n if (formState.errors) {\n if (formState.errors[name]) {\n return 'error';\n } else {\n return 'success';\n }\n }\n };\n\n const forgotPasswordStates: CognitoLoginState[] = [CognitoLoginState.ForgotPassword, CognitoLoginState.CodeMismatch];\n\n const areResettingPassword = forgotPasswordStates.includes(cognitoLoginState as CognitoLoginState);\n\n const onSubmit = async (values: any) => {\n setIsLoading(true);\n\n try {\n if (areResettingPassword) {\n const state = await resetPassword(values.email, values.code, values.password, { hotel });\n if (state === CognitoLoginState.CodeMismatch)\n setError('code', {\n message: t(Translation.Navigation.ForgotPassword.Inputs.Code.Validation.InvalidCode),\n });\n else props.onDone?.();\n } else {\n const state = await forgotPassword(values.email, { hotel });\n if (state === CognitoLoginState.UserNotFound) {\n setError('email', {\n message: t(Translation.Navigation.ForgotPassword.Inputs.Email.Validation.UserNotFound),\n });\n }\n }\n } catch (ex) {\n console.error(ex);\n } finally {\n setIsLoading(false);\n }\n };\n\n const onCancelPressed = () => {\n reset();\n props.onCancelled?.();\n };\n\n return (\n <div>\n <div className=\"u-marg-bottom--heavy\">\n <Headline color={Color.Navy} bold className=\"u-marg-bottom--light\">\n {t(Translation.Navigation.ForgotPassword.Title)}\n </Headline>\n {areResettingPassword && (\n <Text type={TextType.Small} color={Color.Success}>\n {t(Translation.Navigation.ForgotPassword.CodeSent)}\n </Text>\n )}\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Email.Label)}\n error={formState.errors.email}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Email.Placeholder)}\n required\n validationStatus={getValidationClass('email')}\n inputProps={{ disabled: areResettingPassword || isLoading || cognitoLoading }}\n {...register('email', {\n required: true,\n pattern: makeEmailPatternRule(t),\n })}\n />\n }\n />\n\n <AutoAutoHeight open={areResettingPassword}>\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)}\n error={formState.errors.code}\n component={\n <TextBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Code.Placeholder)}\n validationStatus={getValidationClass('code')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('code', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.Code.Label)),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)}\n error={formState.errors.password}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.Password.Placeholder)}\n validationStatus={getValidationClass('password')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('password', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.Password.Label)),\n pattern: makePasswordPatternRule(t),\n })}\n />\n }\n />\n <LabelAndInputGroup\n label={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)}\n error={formState.errors.confirmPassword}\n component={\n <PasswordBox\n placeholder={t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Placeholder)}\n validationStatus={getValidationClass('confirmPassword')}\n inputProps={{ disabled: isLoading || cognitoLoading }}\n {...register('confirmPassword', {\n required: makeRequiredRule(t)(areResettingPassword, t(Translation.Navigation.ForgotPassword.Inputs.RepeatPassword.Label)),\n validate: {\n isSame: isPasswordMatch(t)(watch('password')),\n },\n })}\n />\n }\n />\n </AutoAutoHeight>\n <div className=\"u-marg-top\">\n <BEButton primary filled wide htmlType=\"submit\" isLoading={cognitoLoading || isLoading}>\n {t(Translation.Navigation.ForgotPassword.Inputs.SubmitButton.Label)}\n </BEButton>\n </div>\n <div className=\"u-marg-top u-align-center\">\n <BEButton isText onClick={onCancelPressed} size=\"small\">\n {t(Translation.Navigation.ForgotPassword.Inputs.CancelButton.Label)}\n </BEButton>\n </div>\n </form>\n </div>\n );\n};\n"]}
@@ -1,6 +1,7 @@
1
- type SignInFormProps = {
1
+ import { FC } from 'react';
2
+ export type SignInFormProps = {
2
3
  onForgotPassword?: () => void;
3
4
  onSignedIn?: () => void;
5
+ onDone?: () => void;
4
6
  };
5
- export declare const SignInForm: (props: SignInFormProps) => JSX.Element;
6
- export {};
7
+ export declare const SignInForm: FC<SignInFormProps>;
@@ -22,15 +22,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
25
34
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
36
  };
28
37
  Object.defineProperty(exports, "__esModule", { value: true });
29
38
  exports.SignInForm = void 0;
30
- const react_1 = __importDefault(require("react"));
39
+ const react_1 = __importStar(require("react"));
31
40
  const react_hook_form_1 = require("react-hook-form");
32
41
  const react_i18next_1 = require("react-i18next");
33
- const react_2 = require("react");
34
42
  const Translation_1 = require("translations/Translation");
35
43
  const AutoAutoHeight_1 = __importDefault(require("../../../animations/AutoAutoHeight"));
36
44
  const contexts_1 = require("../../../contexts/index.js");
@@ -42,12 +50,12 @@ const Icon_1 = require("../../generic/Icon/Icon");
42
50
  const TextBox_1 = __importDefault(require("../../generic/TextBox"));
43
51
  const BEButton_1 = __importDefault(require("../../generic/BEButton"));
44
52
  const PasswordBox_1 = require("../../generic/PasswordBox/PasswordBox");
53
+ const hooks_1 = require("../../../hooks/index.js");
45
54
  const SignInForm = (props) => {
46
55
  const { t } = (0, react_i18next_1.useTranslation)();
47
- const { cognitoLoginState, loading, error, login, confirmAccount, forgotPassword, reset } = (0, react_2.useContext)(contexts_1.AuthenticationContext);
48
- // TODO: Handle outlying cases
49
- const [isLoading, setIsLoading] = (0, react_2.useState)(false);
50
- const [apiErrorMessages, setApiErrorMessages] = (0, react_2.useState)('');
56
+ const { error, login, reset } = (0, react_1.useContext)(contexts_1.AuthenticationContext);
57
+ const { loading } = (0, contexts_1.useMemberContext)();
58
+ const { hotel } = (0, hooks_1.useCurrentHotel)();
51
59
  const { register, formState, handleSubmit, clearErrors } = (0, react_hook_form_1.useForm)({
52
60
  mode: 'onSubmit',
53
61
  });
@@ -62,13 +70,20 @@ const SignInForm = (props) => {
62
70
  }
63
71
  }
64
72
  };
65
- const onSubmit = (values) => {
73
+ const onSubmit = (values) => __awaiter(void 0, void 0, void 0, function* () {
74
+ var _a;
75
+ if (loading)
76
+ return;
66
77
  clearErrors();
67
78
  reset();
68
- setIsLoading(true);
69
- setApiErrorMessages('');
70
- login(values.email, values.password);
71
- };
79
+ try {
80
+ yield login(values.email, values.password, { hotel });
81
+ (_a = props.onDone) === null || _a === void 0 ? void 0 : _a.call(props);
82
+ }
83
+ catch (ex) {
84
+ console.error(ex);
85
+ }
86
+ });
72
87
  const onInvalid = () => {
73
88
  reset();
74
89
  };
@@ -94,8 +109,11 @@ const SignInForm = (props) => {
94
109
  react_1.default.createElement("div", { className: "u-marg-bottom" },
95
110
  react_1.default.createElement("div", { className: "u-marg-bottom--light" },
96
111
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Navy, bold: true }, t(Translation_1.Translation.Navigation.SignIn.EmailAddress))),
97
- react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: "example@mail.com", required: true, validationStatus: getValidationClass('email') }, register('email', {
98
- required: { message: `${t(Translation_1.Translation.Navigation.SignIn.EmailAddress)} is required`, value: true },
112
+ react_1.default.createElement(TextBox_1.default, Object.assign({ placeholder: "example@mail.com", required: true, validationStatus: getValidationClass('email'), inputProps: { disabled: loading } }, register('email', {
113
+ required: {
114
+ message: `${t(Translation_1.Translation.Navigation.SignIn.EmailAddress)} is required`,
115
+ value: true,
116
+ },
99
117
  pattern: {
100
118
  value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,
101
119
  message: t(Translation_1.Translation.FindReservation.InvalidEmailAddress),
@@ -104,7 +122,7 @@ const SignInForm = (props) => {
104
122
  react_1.default.createElement("div", { className: "u-marg-bottom" },
105
123
  react_1.default.createElement("div", { className: "u-marg-bottom--light" },
106
124
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Label, color: Color_1.Color.Navy, bold: true }, t(Translation_1.Translation.Navigation.SignIn.Password))),
107
- react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", required: true, validationStatus: getValidationClass('password') }, register('password', {
125
+ react_1.default.createElement(PasswordBox_1.PasswordBox, Object.assign({ inputProps: { disabled: loading }, placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", required: true, validationStatus: getValidationClass('password') }, register('password', {
108
126
  required: { message: 'Password is required', value: true },
109
127
  minLength: { message: 'Password must be at least 8 characters long', value: 8 },
110
128
  }))),