@roomstay/frontend 2.6.85 → 2.6.86-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 (876) hide show
  1. package/dist/177.bundle.js +1 -1
  2. package/dist/279.bundle.js +1 -1
  3. package/dist/288.bundle.js +1 -1
  4. package/dist/370.bundle.js +1 -1
  5. package/dist/380.bundle.js +1 -0
  6. package/dist/430.bundle.js +1 -1
  7. package/dist/449.bundle.js +1 -1
  8. package/dist/456.bundle.js +1 -0
  9. package/dist/535.bundle.js +1 -1
  10. package/dist/537.bundle.js +1 -1
  11. package/dist/686.bundle.js +1 -1
  12. package/dist/873.bundle.js +1 -1
  13. package/dist/972.bundle.js +1 -1
  14. package/dist/978.bundle.js +1 -1
  15. package/dist/e2e/canChangeCurrency.spec.js +1 -1
  16. package/dist/e2e/canChangeCurrency.spec.js.map +1 -1
  17. package/dist/e2e/canCheckout.spec.js +3 -3
  18. package/dist/e2e/canCheckout.spec.js.map +1 -1
  19. package/dist/e2e/canViewFindReservationsPage.spec.js +1 -1
  20. package/dist/e2e/canViewFindReservationsPage.spec.js.map +1 -1
  21. package/dist/e2e/canViewHotelnfoPage.spec.js +1 -1
  22. package/dist/e2e/canViewHotelnfoPage.spec.js.map +1 -1
  23. package/dist/e2e/goBackAndCheckoutAgain.spec.js +1 -1
  24. package/dist/e2e/goBackAndCheckoutAgain.spec.js.map +1 -1
  25. package/dist/e2e/helpers/checkoutHelpers.js +9 -8
  26. package/dist/e2e/helpers/checkoutHelpers.js.map +1 -1
  27. package/dist/e2e/helpers/playwrightHelpers.js +2 -1
  28. package/dist/e2e/helpers/playwrightHelpers.js.map +1 -1
  29. package/dist/e2e/price.spec.js +3 -3
  30. package/dist/e2e/price.spec.js.map +1 -1
  31. package/dist/main.bundle.js +1 -1
  32. package/dist/src/animations/AutoAutoHeight.js +8 -18
  33. package/dist/src/animations/AutoAutoHeight.js.map +1 -1
  34. package/dist/src/animations/Fade.js +7 -17
  35. package/dist/src/animations/Fade.js.map +1 -1
  36. package/dist/src/api/AddonAPI.js +7 -17
  37. package/dist/src/api/AddonAPI.js.map +1 -1
  38. package/dist/src/api/AvailabilityAPI.d.ts +6 -28
  39. package/dist/src/api/AvailabilityAPI.js +106 -214
  40. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  41. package/dist/src/api/BaseAPI.js +6 -6
  42. package/dist/src/api/BaseAPI.js.map +1 -1
  43. package/dist/src/api/ErrorAPI.js.map +1 -1
  44. package/dist/src/api/ExchangeRateAPI.js.map +1 -1
  45. package/dist/src/api/HotelAPI.d.ts +1 -1
  46. package/dist/src/api/HotelAPI.js.map +1 -1
  47. package/dist/src/api/MemberAPI.js +7 -17
  48. package/dist/src/api/MemberAPI.js.map +1 -1
  49. package/dist/src/api/ReservationAPI.d.ts +3 -2
  50. package/dist/src/api/ReservationAPI.js +10 -21
  51. package/dist/src/api/ReservationAPI.js.map +1 -1
  52. package/dist/src/api/SessionAPI.js +7 -17
  53. package/dist/src/api/SessionAPI.js.map +1 -1
  54. package/dist/src/api/TrueRewardsAPI.js.map +1 -1
  55. package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -1
  56. package/dist/src/api/members-service/MembersServiceAPI.d.ts +1 -1
  57. package/dist/src/components/Event/EventCarouselContainer.js +7 -17
  58. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -1
  59. package/dist/src/components/User/Forms/ForgotPasswordForm.js +7 -17
  60. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  61. package/dist/src/components/User/Forms/SignInForm.js +7 -17
  62. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  63. package/dist/src/components/User/Forms/SignUpForm.js +7 -17
  64. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  65. package/dist/src/components/User/Forms/VerifyEmailForm.js +7 -17
  66. package/dist/src/components/User/Forms/VerifyEmailForm.js.map +1 -1
  67. package/dist/src/components/generic/AfterpayButton/AfterpayPaymentOption.js +7 -17
  68. package/dist/src/components/generic/AfterpayButton/AfterpayPaymentOption.js.map +1 -1
  69. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.js +7 -17
  70. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.js.map +1 -1
  71. package/dist/src/components/generic/Alert.js +3 -3
  72. package/dist/src/components/generic/Alert.js.map +1 -1
  73. package/dist/src/components/generic/BEButton.d.ts +0 -1
  74. package/dist/src/components/generic/BEButton.js +9 -20
  75. package/dist/src/components/generic/BEButton.js.map +1 -1
  76. package/dist/src/components/generic/BackButton.js +1 -1
  77. package/dist/src/components/generic/BackButton.js.map +1 -1
  78. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js +9 -18
  79. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js.map +1 -1
  80. package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +2 -1
  81. package/dist/src/components/generic/BookingWizard/BookingWizard.js +46 -28
  82. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  83. package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +6 -4
  84. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +43 -21
  85. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  86. package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +9 -0
  87. package/dist/src/components/generic/BookingWizard/BookingWizardContext.js.map +1 -1
  88. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.d.ts +2 -1
  89. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +9 -19
  90. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  91. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.d.ts +2 -5
  92. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +10 -20
  93. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  94. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +11 -21
  95. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  96. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +7 -17
  97. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -1
  98. package/dist/src/components/generic/BookingWizard/BookingWizardRoomGroupSelector/BookingWizardRoomGroupSelector.d.ts +15 -0
  99. package/dist/src/components/generic/BookingWizard/BookingWizardRoomGroupSelector/BookingWizardRoomGroupSelector.js +135 -0
  100. package/dist/src/components/generic/BookingWizard/BookingWizardRoomGroupSelector/BookingWizardRoomGroupSelector.js.map +1 -0
  101. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js +7 -17
  102. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js.map +1 -1
  103. package/dist/src/components/generic/Checkbox/Checkbox.js +7 -17
  104. package/dist/src/components/generic/Checkbox/Checkbox.js.map +1 -1
  105. package/dist/src/components/generic/Countdown.js +8 -18
  106. package/dist/src/components/generic/Countdown.js.map +1 -1
  107. package/dist/src/components/generic/Currency.js +8 -18
  108. package/dist/src/components/generic/Currency.js.map +1 -1
  109. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js +8 -18
  110. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js.map +1 -1
  111. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.js +9 -19
  112. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.js.map +1 -1
  113. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.js +8 -18
  114. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.js.map +1 -1
  115. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.js +8 -18
  116. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.js.map +1 -1
  117. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +7 -17
  118. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
  119. package/dist/src/components/generic/Distance.js +8 -18
  120. package/dist/src/components/generic/Distance.js.map +1 -1
  121. package/dist/src/components/generic/Event/EventCard.js +7 -17
  122. package/dist/src/components/generic/Event/EventCard.js.map +1 -1
  123. package/dist/src/components/generic/Event/EventCarousel.js +7 -17
  124. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -1
  125. package/dist/src/components/generic/ForwardedSelect.js +7 -17
  126. package/dist/src/components/generic/ForwardedSelect.js.map +1 -1
  127. package/dist/src/components/generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes.js.map +1 -1
  128. package/dist/src/components/generic/Headline.js +1 -1
  129. package/dist/src/components/generic/Headline.js.map +1 -1
  130. package/dist/src/components/generic/HtmlContentViewer.js +7 -17
  131. package/dist/src/components/generic/HtmlContentViewer.js.map +1 -1
  132. package/dist/src/components/generic/IconText/IconText.js +9 -19
  133. package/dist/src/components/generic/IconText/IconText.js.map +1 -1
  134. package/dist/src/components/generic/InputGroup/InputGroup.js +1 -1
  135. package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
  136. package/dist/src/components/generic/LineBreak.js +1 -1
  137. package/dist/src/components/generic/LineBreak.js.map +1 -1
  138. package/dist/src/components/generic/Notification.js +8 -18
  139. package/dist/src/components/generic/Notification.js.map +1 -1
  140. package/dist/src/components/generic/NumberIncrement.js +8 -18
  141. package/dist/src/components/generic/NumberIncrement.js.map +1 -1
  142. package/dist/src/components/generic/Overlay/Overlay.js +7 -17
  143. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  144. package/dist/src/components/generic/PageTitle/index.js.map +1 -1
  145. package/dist/src/components/generic/PasswordBox/PasswordBox.js +7 -17
  146. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  147. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +9 -19
  148. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -1
  149. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +7 -17
  150. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  151. package/dist/src/components/generic/Pill.js +3 -3
  152. package/dist/src/components/generic/Pill.js.map +1 -1
  153. package/dist/src/components/generic/Placeholder.js +1 -1
  154. package/dist/src/components/generic/Placeholder.js.map +1 -1
  155. package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js +7 -17
  156. package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js.map +1 -1
  157. package/dist/src/components/generic/PromoCodeInput.d.ts +0 -2
  158. package/dist/src/components/generic/PromoCodeInput.js +12 -20
  159. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  160. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +7 -17
  161. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  162. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +7 -17
  163. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  164. package/dist/src/components/generic/RecentSearchesCard.js +7 -17
  165. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  166. package/dist/src/components/generic/RoomstayMark.js +7 -17
  167. package/dist/src/components/generic/RoomstayMark.js.map +1 -1
  168. package/dist/src/components/generic/ScrollToTop.js.map +1 -1
  169. package/dist/src/components/generic/Select/InputSelect.js +8 -18
  170. package/dist/src/components/generic/Select/InputSelect.js.map +1 -1
  171. package/dist/src/components/generic/Select/Select.d.ts +1 -1
  172. package/dist/src/components/generic/Select/Select.js +7 -17
  173. package/dist/src/components/generic/Select/Select.js.map +1 -1
  174. package/dist/src/components/generic/Slider/Slider.js +7 -17
  175. package/dist/src/components/generic/Slider/Slider.js.map +1 -1
  176. package/dist/src/components/generic/Tabs/ElementChildren.js +3 -2
  177. package/dist/src/components/generic/Tabs/ElementChildren.js.map +1 -1
  178. package/dist/src/components/generic/Tabs/TabContext.js +7 -17
  179. package/dist/src/components/generic/Tabs/TabContext.js.map +1 -1
  180. package/dist/src/components/generic/Tabs/TabLink.js +7 -17
  181. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  182. package/dist/src/components/generic/Tabs/TabRouteContainer.js +9 -18
  183. package/dist/src/components/generic/Tabs/TabRouteContainer.js.map +1 -1
  184. package/dist/src/components/generic/Text.js +9 -19
  185. package/dist/src/components/generic/Text.js.map +1 -1
  186. package/dist/src/components/generic/TextArea.js +7 -17
  187. package/dist/src/components/generic/TextArea.js.map +1 -1
  188. package/dist/src/components/generic/TextBox.js +7 -17
  189. package/dist/src/components/generic/TextBox.js.map +1 -1
  190. package/dist/src/components/generic/Tooltip/Tooltip.js +8 -18
  191. package/dist/src/components/generic/Tooltip/Tooltip.js.map +1 -1
  192. package/dist/src/components/generic/badging/SSLSecureBadge.js +1 -1
  193. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  194. package/dist/src/components/generic/buttons/NextStepButton.js +8 -18
  195. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  196. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js +7 -18
  197. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js.map +1 -1
  198. package/dist/src/components/generic/date/DatePicker.d.ts +1 -1
  199. package/dist/src/components/generic/date/DatePicker.js +9 -19
  200. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  201. package/dist/src/components/generic/date/DatePickerDay.js +9 -19
  202. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  203. package/dist/src/components/generic/date/DatePickerDays.js +8 -18
  204. package/dist/src/components/generic/date/DatePickerDays.js.map +1 -1
  205. package/dist/src/components/generic/date/DatePickerMonth.js +8 -18
  206. package/dist/src/components/generic/date/DatePickerMonth.js.map +1 -1
  207. package/dist/src/components/generic/date/DatePickerWeek.js +11 -21
  208. package/dist/src/components/generic/date/DatePickerWeek.js.map +1 -1
  209. package/dist/src/components/generic/date/FloatingDatePicker.js +9 -19
  210. package/dist/src/components/generic/date/FloatingDatePicker.js.map +1 -1
  211. package/dist/src/components/generic/date/WeekViewSkeleton.js +7 -17
  212. package/dist/src/components/generic/date/WeekViewSkeleton.js.map +1 -1
  213. package/dist/src/components/generic/loader/ImageLoader.js +8 -18
  214. package/dist/src/components/generic/loader/ImageLoader.js.map +1 -1
  215. package/dist/src/components/generic/loader/LargeLoader.js +1 -1
  216. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  217. package/dist/src/components/generic/loader/SmallSpinner.js +8 -18
  218. package/dist/src/components/generic/loader/SmallSpinner.js.map +1 -1
  219. package/dist/src/components/generic/map/HotelLocationMap.js +1 -1
  220. package/dist/src/components/generic/map/HotelLocationMap.js.map +1 -1
  221. package/dist/src/components/generic/modal/ConfirmationModal.js +8 -18
  222. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  223. package/dist/src/components/generic/modal/ErrorModal.js +8 -18
  224. package/dist/src/components/generic/modal/ErrorModal.js.map +1 -1
  225. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +7 -17
  226. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  227. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +7 -17
  228. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -1
  229. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +8 -18
  230. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  231. package/dist/src/components/generic/modal/SimpleModal.js +9 -19
  232. package/dist/src/components/generic/modal/SimpleModal.js.map +1 -1
  233. package/dist/src/components/generic/modal/TabbedModal.js +8 -18
  234. package/dist/src/components/generic/modal/TabbedModal.js.map +1 -1
  235. package/dist/src/components/generic/radio/RadioFields.js +8 -18
  236. package/dist/src/components/generic/radio/RadioFields.js.map +1 -1
  237. package/dist/src/components/graphics/TravelerNotfound.js +1 -1
  238. package/dist/src/components/graphics/TravelerNotfound.js.map +1 -1
  239. package/dist/src/components/members/EditMyProfile.js +7 -17
  240. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  241. package/dist/src/components/members/InlineSignUpSection.d.ts +1 -1
  242. package/dist/src/components/members/InlineSignUpSection.js +7 -17
  243. package/dist/src/components/members/InlineSignUpSection.js.map +1 -1
  244. package/dist/src/components/members/SignInModal/ExternalMemberModal.js +7 -17
  245. package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -1
  246. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js +9 -19
  247. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -1
  248. package/dist/src/components/members/SignInModal/MemberPortalSignInModal.js +8 -18
  249. package/dist/src/components/members/SignInModal/MemberPortalSignInModal.js.map +1 -1
  250. package/dist/src/components/members/SignInModal/MemberSignInModal.js +7 -17
  251. package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -1
  252. package/dist/src/components/navigation/Header.js +8 -18
  253. package/dist/src/components/navigation/Header.js.map +1 -1
  254. package/dist/src/components/navigation/StepSelector.js +8 -18
  255. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  256. package/dist/src/components/navigation/StepSelectorModal.js +8 -18
  257. package/dist/src/components/navigation/StepSelectorModal.js.map +1 -1
  258. package/dist/src/components/pages/Account/Card/MemberCardItem.js +7 -17
  259. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  260. package/dist/src/components/pages/PageColorComponent.js +7 -17
  261. package/dist/src/components/pages/PageColorComponent.js.map +1 -1
  262. package/dist/src/components/reservation/EmptyReservation.js +7 -17
  263. package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
  264. package/dist/src/components/reservation/ReservationItem.d.ts +0 -1
  265. package/dist/src/components/reservation/ReservationItem.js +10 -20
  266. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  267. package/dist/src/components/reservation/ReservationList.d.ts +0 -1
  268. package/dist/src/components/reservation/ReservationList.js +2 -2
  269. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  270. package/dist/src/components/steps/DaysSelectedInformer.js +8 -18
  271. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  272. package/dist/src/components/steps/MinimumNightStayPill.js +8 -18
  273. package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
  274. package/dist/src/components/steps/addons/AddonCard.js +7 -25
  275. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  276. package/dist/src/components/steps/addons/AddonList.js +7 -17
  277. package/dist/src/components/steps/addons/AddonList.js.map +1 -1
  278. package/dist/src/components/steps/addons/AddonsNotFoundBlock.js +1 -1
  279. package/dist/src/components/steps/addons/AddonsNotFoundBlock.js.map +1 -1
  280. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.d.ts +1 -1
  281. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js +9 -19
  282. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js.map +1 -1
  283. package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.js +7 -17
  284. package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.js.map +1 -1
  285. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.d.ts +1 -1
  286. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.js +7 -17
  287. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.js.map +1 -1
  288. package/dist/src/components/steps/confirmation/AccountDetails.js +8 -18
  289. package/dist/src/components/steps/confirmation/AccountDetails.js.map +1 -1
  290. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.js +7 -17
  291. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.js.map +1 -1
  292. package/dist/src/components/steps/confirmation/MastercardPaymentMethod.js +7 -17
  293. package/dist/src/components/steps/confirmation/MastercardPaymentMethod.js.map +1 -1
  294. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  295. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +7 -17
  296. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  297. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +7 -17
  298. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  299. package/dist/src/components/steps/confirmation/PaymentInformation.js +7 -17
  300. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
  301. package/dist/src/components/steps/confirmation/PlanpayLabel.js +7 -17
  302. package/dist/src/components/steps/confirmation/PlanpayLabel.js.map +1 -1
  303. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js +7 -17
  304. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js.map +1 -1
  305. package/dist/src/components/steps/confirmation/RoomContactDetails.js +8 -18
  306. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  307. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +19 -28
  308. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
  309. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +8 -18
  310. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  311. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js +2 -2
  312. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js.map +1 -1
  313. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +7 -17
  314. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
  315. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +8 -18
  316. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  317. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.js +1 -1
  318. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.js.map +1 -1
  319. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +8 -18
  320. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  321. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js +8 -18
  322. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js.map +1 -1
  323. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js +12 -23
  324. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js.map +1 -1
  325. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js +13 -26
  326. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js.map +1 -1
  327. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.d.ts +1 -5
  328. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js +13 -35
  329. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js.map +1 -1
  330. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +8 -18
  331. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  332. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +8 -18
  333. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  334. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js +8 -18
  335. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js.map +1 -1
  336. package/dist/src/components/steps/date/OccupancyWarningBlock.js +1 -1
  337. package/dist/src/components/steps/date/OccupancyWarningBlock.js.map +1 -1
  338. package/dist/src/components/steps/date/PeoplePicker.js +10 -20
  339. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  340. package/dist/src/components/steps/date/PeoplePickerRow.js +9 -19
  341. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  342. package/dist/src/components/steps/date/StepDatePricePerRoom.js +8 -18
  343. package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
  344. package/dist/src/components/steps/date/StepOneDateRange.js +8 -18
  345. package/dist/src/components/steps/date/StepOneDateRange.js.map +1 -1
  346. package/dist/src/components/steps/date/StepOneDateRangePicker.js +8 -18
  347. package/dist/src/components/steps/date/StepOneDateRangePicker.js.map +1 -1
  348. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.js +8 -18
  349. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.js.map +1 -1
  350. package/dist/src/components/steps/date/StepOneNextStepButton.js +8 -18
  351. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  352. package/dist/src/components/steps/date/StepOneStatusPeople.js +8 -18
  353. package/dist/src/components/steps/date/StepOneStatusPeople.js.map +1 -1
  354. package/dist/src/components/steps/hotel/HotelCard.js +9 -19
  355. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  356. package/dist/src/components/steps/hotel/HotelCardList.js +1 -1
  357. package/dist/src/components/steps/hotel/HotelCardList.js.map +1 -1
  358. package/dist/src/components/steps/hotel/HotelCardModal.js +7 -17
  359. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  360. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js +8 -18
  361. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js.map +1 -1
  362. package/dist/src/components/steps/hotel/HotelSearchParameters.js +20 -22
  363. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  364. package/dist/src/components/steps/hotel/NoHotelsAvailable.js +1 -1
  365. package/dist/src/components/steps/hotel/NoHotelsAvailable.js.map +1 -1
  366. package/dist/src/components/steps/room/AvailableUpgradesModal.js +35 -113
  367. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  368. package/dist/src/components/steps/room/ImageGallerySlider.js +8 -18
  369. package/dist/src/components/steps/room/ImageGallerySlider.js.map +1 -1
  370. package/dist/src/components/steps/room/InactivityWindow.js +7 -17
  371. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  372. package/dist/src/components/steps/room/LargeRoomCard.js +10 -26
  373. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  374. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +8 -18
  375. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  376. package/dist/src/components/steps/room/RatesNotFoundBlock.js +1 -1
  377. package/dist/src/components/steps/room/RatesNotFoundBlock.js.map +1 -1
  378. package/dist/src/components/steps/room/RoomList.js +8 -18
  379. package/dist/src/components/steps/room/RoomList.js.map +1 -1
  380. package/dist/src/components/steps/room/RoomListAlert.js +7 -17
  381. package/dist/src/components/steps/room/RoomListAlert.js.map +1 -1
  382. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +8 -18
  383. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  384. package/dist/src/components/steps/room/RoomModal.js +8 -18
  385. package/dist/src/components/steps/room/RoomModal.js.map +1 -1
  386. package/dist/src/components/steps/room/RoomModalPerkRow.js +8 -18
  387. package/dist/src/components/steps/room/RoomModalPerkRow.js.map +1 -1
  388. package/dist/src/components/steps/room/StepRoomAlertBlocks.js +8 -18
  389. package/dist/src/components/steps/room/StepRoomAlertBlocks.js.map +1 -1
  390. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +8 -18
  391. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  392. package/dist/src/components/steps/room/StepRoomErrorForm.js +7 -17
  393. package/dist/src/components/steps/room/StepRoomErrorForm.js.map +1 -1
  394. package/dist/src/components/steps/room/StepRoomHotelDetails.js +8 -18
  395. package/dist/src/components/steps/room/StepRoomHotelDetails.js.map +1 -1
  396. package/dist/src/components/steps/room/StepRoomNextStepButton.js +8 -18
  397. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  398. package/dist/src/components/steps/room/StepRoomSortBy.js +8 -18
  399. package/dist/src/components/steps/room/StepRoomSortBy.js.map +1 -1
  400. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +8 -18
  401. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  402. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +7 -17
  403. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  404. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +7 -17
  405. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
  406. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +7 -17
  407. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -1
  408. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.d.ts +1 -1
  409. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js +8 -19
  410. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js.map +1 -1
  411. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +7 -17
  412. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -1
  413. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +20 -20
  414. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
  415. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +7 -17
  416. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  417. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js +1 -1
  418. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js.map +1 -1
  419. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js +1 -1
  420. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js.map +1 -1
  421. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js +1 -1
  422. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js.map +1 -1
  423. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +8 -18
  424. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
  425. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +23 -23
  426. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  427. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +8 -18
  428. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  429. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +9 -18
  430. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  431. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +9 -18
  432. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
  433. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +8 -18
  434. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  435. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +7 -17
  436. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  437. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js +8 -18
  438. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js.map +1 -1
  439. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js +8 -18
  440. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js.map +1 -1
  441. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +10 -20
  442. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  443. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js +8 -18
  444. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js.map +1 -1
  445. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +10 -20
  446. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  447. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +9 -19
  448. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  449. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +7 -17
  450. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  451. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +8 -18
  452. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  453. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +8 -18
  454. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  455. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +8 -18
  456. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
  457. package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.js +12 -26
  458. package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.js.map +1 -1
  459. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +8 -18
  460. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  461. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +8 -18
  462. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  463. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.js +8 -18
  464. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.js.map +1 -1
  465. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.js +8 -18
  466. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.js.map +1 -1
  467. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js +8 -18
  468. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js.map +1 -1
  469. package/dist/src/components/summary/BEMapWidget.d.ts +2 -0
  470. package/dist/src/components/summary/BEMapWidget.js +7 -17
  471. package/dist/src/components/summary/BEMapWidget.js.map +1 -1
  472. package/dist/src/components/summary/BEMobileSummary.js +8 -18
  473. package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
  474. package/dist/src/components/summary/BEMobileSummaryModal.js +18 -29
  475. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  476. package/dist/src/components/summary/BESummary.js +13 -23
  477. package/dist/src/components/summary/BESummary.js.map +1 -1
  478. package/dist/src/components/summary/BESummaryAddonRow.js +9 -19
  479. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  480. package/dist/src/components/summary/BESummaryPerkBlock.js +9 -19
  481. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  482. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +8 -18
  483. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  484. package/dist/src/components/summary/BESummaryRoomRow.js +9 -19
  485. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  486. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +8 -18
  487. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  488. package/dist/src/containers/PrivateRoute.js.map +1 -1
  489. package/dist/src/contexts/BasketContext/BasketContext.d.ts +1 -0
  490. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +4 -5
  491. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  492. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +162 -237
  493. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  494. package/dist/src/contexts/BookingEngineContext/BookingEngineContext.d.ts +1 -0
  495. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js +9 -18
  496. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
  497. package/dist/src/contexts/CompanyContext/CompanyContext.d.ts +1 -0
  498. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +14 -24
  499. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  500. package/dist/src/contexts/ConfirmationFormContext.js +9 -19
  501. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  502. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContext.d.ts +1 -0
  503. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.d.ts +1 -2
  504. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextTypes.js.map +1 -1
  505. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +23 -44
  506. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  507. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.js +7 -17
  508. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.js.map +1 -1
  509. package/dist/src/contexts/ErrorContext.js +9 -19
  510. package/dist/src/contexts/ErrorContext.js.map +1 -1
  511. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js +2 -1
  512. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js.map +1 -1
  513. package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.js +9 -18
  514. package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.js.map +1 -1
  515. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContext.d.ts +1 -0
  516. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +19 -20
  517. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  518. package/dist/src/contexts/HotelOverridesContext.js +7 -17
  519. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  520. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +2 -1
  521. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js +1 -1
  522. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  523. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +14 -40
  524. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  525. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +1 -0
  526. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +7 -17
  527. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  528. package/dist/src/contexts/ModalContext.js +9 -18
  529. package/dist/src/contexts/ModalContext.js.map +1 -1
  530. package/dist/src/contexts/NotificationContext.js +9 -19
  531. package/dist/src/contexts/NotificationContext.js.map +1 -1
  532. package/dist/src/engines/BaseEngine.js +1 -1
  533. package/dist/src/engines/BaseEngine.js.map +1 -1
  534. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +4 -1
  535. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  536. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +3 -1
  537. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
  538. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngine.js +7 -17
  539. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngine.js.map +1 -1
  540. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js +8 -18
  541. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js.map +1 -1
  542. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +17 -19
  543. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +34 -30
  544. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  545. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -1
  546. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +8 -18
  547. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
  548. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +8 -17
  549. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  550. package/dist/src/events/RoomstayEventManager.js +1 -1
  551. package/dist/src/events/RoomstayEventManager.js.map +1 -1
  552. package/dist/src/events/actions/PlacedBookingEvent.d.ts +1 -1
  553. package/dist/src/events/actions/PlacedBookingEvent.js.map +1 -1
  554. package/dist/src/events/views/CommittedBookingEvent.d.ts +1 -1
  555. package/dist/src/events/views/CommittedBookingEvent.js.map +1 -1
  556. package/dist/src/events/views/RolledBackBookingEvent.d.ts +1 -1
  557. package/dist/src/events/views/RolledBackBookingEvent.js.map +1 -1
  558. package/dist/src/handlers/BasketContextErrorHandler.d.ts +1 -1
  559. package/dist/src/handlers/BasketContextErrorHandler.js.map +1 -1
  560. package/dist/src/handlers/payment/AdyenPaymentHandler.js +7 -17
  561. package/dist/src/handlers/payment/AdyenPaymentHandler.js.map +1 -1
  562. package/dist/src/handlers/payment/PlanpayPaymentHandler.js +7 -17
  563. package/dist/src/handlers/payment/PlanpayPaymentHandler.js.map +1 -1
  564. package/dist/src/handlers/payment/TrueRewardsPaymentHandler.js +5 -8
  565. package/dist/src/handlers/payment/TrueRewardsPaymentHandler.js.map +1 -1
  566. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -1
  567. package/dist/src/handlers/payment/VGSPaymentHandler.js +9 -19
  568. package/dist/src/handlers/payment/VGSPaymentHandler.js.map +1 -1
  569. package/dist/src/hooks/AutoFocusOnSelect.d.ts +2 -23
  570. package/dist/src/hooks/AutoFocusOnSelect.js +3 -3
  571. package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
  572. package/dist/src/hooks/BodyClickHook.js.map +1 -1
  573. package/dist/src/hooks/CombineState.d.ts +1 -1
  574. package/dist/src/hooks/ConfirmationQuery.d.ts +0 -1
  575. package/dist/src/hooks/ConfirmationQuery.js +1 -2
  576. package/dist/src/hooks/ConfirmationQuery.js.map +1 -1
  577. package/dist/src/hooks/Currency.js.map +1 -1
  578. package/dist/src/hooks/CurrentHotelHook.js.map +1 -1
  579. package/dist/src/hooks/ElementSortHook.js +7 -17
  580. package/dist/src/hooks/ElementSortHook.js.map +1 -1
  581. package/dist/src/hooks/HistoryConsistentPush.js +2 -1
  582. package/dist/src/hooks/HistoryConsistentPush.js.map +1 -1
  583. package/dist/src/hooks/KeyboardControlOnSelect.d.ts +2 -2
  584. package/dist/src/hooks/KeyboardControlOnSelect.js.map +1 -1
  585. package/dist/src/hooks/LoggedInUserHook.js.map +1 -1
  586. package/dist/src/hooks/Planpay.d.ts +1 -1
  587. package/dist/src/hooks/Query.js +3 -2
  588. package/dist/src/hooks/Query.js.map +1 -1
  589. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +1 -0
  590. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
  591. package/dist/src/hooks/UpdateQueryParameters.js +2 -1
  592. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -1
  593. package/dist/src/hooks/VGSHooks.d.ts +1 -0
  594. package/dist/src/hooks/VGSHooks.js.map +1 -1
  595. package/dist/src/hooks/useCalendarNightStay.js +3 -3
  596. package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
  597. package/dist/src/hooks/useNextStepAction.js +11 -21
  598. package/dist/src/hooks/useNextStepAction.js.map +1 -1
  599. package/dist/src/hooks/usePlanpayRawPrice.js.map +1 -1
  600. package/dist/src/hooks/useRateDetails.js.map +1 -1
  601. package/dist/src/hooks/useSearchScopeHook.d.ts +1 -1
  602. package/dist/src/hooks/useSearchScopeHook.js.map +1 -1
  603. package/dist/src/index.d.ts +1 -1
  604. package/dist/src/index.js.map +1 -1
  605. package/dist/src/mockApi/AddonAPI.js.map +1 -1
  606. package/dist/src/mockApi/MemberAPI.js +7 -17
  607. package/dist/src/mockApi/MemberAPI.js.map +1 -1
  608. package/dist/src/mockApi/MockAPI.js +5 -5
  609. package/dist/src/mockApi/MockAPI.js.map +1 -1
  610. package/dist/src/mockApi/ReservationAPI.d.ts +1 -1
  611. package/dist/src/mockApi/ReservationAPI.js +8 -18
  612. package/dist/src/mockApi/ReservationAPI.js.map +1 -1
  613. package/dist/src/models/Addon/Addon.d.ts +24 -0
  614. package/dist/src/models/Addon/Addon.js.map +1 -1
  615. package/dist/src/models/Api/HotelDTO.d.ts +2 -3
  616. package/dist/src/models/Api/HotelDTO.js +1 -1
  617. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  618. package/dist/src/models/Api/IEventReservation.d.ts +0 -5
  619. package/dist/src/models/Api/IEventReservation.js.map +1 -1
  620. package/dist/src/models/Api/ReservationsDTO.d.ts +80 -0
  621. package/dist/src/models/Api/ReservationsDTO.js +3 -0
  622. package/dist/src/models/Api/ReservationsDTO.js.map +1 -0
  623. package/dist/src/models/AppQueryParameters.js +1 -1
  624. package/dist/src/models/AppQueryParameters.js.map +1 -1
  625. package/dist/src/models/BasketAddonRow.js +5 -3
  626. package/dist/src/models/BasketAddonRow.js.map +1 -1
  627. package/dist/src/models/BasketRow.d.ts +9 -63
  628. package/dist/src/models/BasketRow.js +37 -77
  629. package/dist/src/models/BasketRow.js.map +1 -1
  630. package/dist/src/models/BookingWizard/BookingWizardTypes.d.ts +4 -0
  631. package/dist/src/models/BookingWizard/BookingWizardTypes.js.map +1 -1
  632. package/dist/src/models/Client/Hotel/Company.d.ts +0 -2
  633. package/dist/src/models/Client/Hotel/Company.js.map +1 -1
  634. package/dist/src/models/Client/Hotel/DistanceUnitType.types.js +1 -1
  635. package/dist/src/models/Client/Hotel/DistanceUnitType.types.js.map +1 -1
  636. package/dist/src/models/Client/Hotel/Hotel.d.ts +2 -3
  637. package/dist/src/models/Client/Hotel/Hotel.js +1 -1
  638. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  639. package/dist/src/models/Client/Hotel/HotelDataSource.types.js +1 -1
  640. package/dist/src/models/Client/Hotel/HotelDataSource.types.js.map +1 -1
  641. package/dist/src/models/Client/Hotel/WeekdayStartsOn.types.js +1 -1
  642. package/dist/src/models/Client/Hotel/WeekdayStartsOn.types.js.map +1 -1
  643. package/dist/src/models/Confirmation.js +2 -2
  644. package/dist/src/models/Confirmation.js.map +1 -1
  645. package/dist/src/models/CountryCodesAndNumbers.js +3 -3
  646. package/dist/src/models/CountryCodesAndNumbers.js.map +1 -1
  647. package/dist/src/models/Fee.d.ts +9 -1
  648. package/dist/src/models/Fee.js +5 -4
  649. package/dist/src/models/Fee.js.map +1 -1
  650. package/dist/src/models/PaymentCard.js +1 -1
  651. package/dist/src/models/PaymentCard.js.map +1 -1
  652. package/dist/src/models/Room/Filters/BudgetFilter.js.map +1 -1
  653. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  654. package/dist/src/models/Room/Room.js.map +1 -1
  655. package/dist/src/models/Room/RoomRate.d.ts +1 -12
  656. package/dist/src/models/Room/RoomRate.js +1 -29
  657. package/dist/src/models/Room/RoomRate.js.map +1 -1
  658. package/dist/src/models/Room/RoomRateNight.d.ts +1 -1
  659. package/dist/src/models/Room/RoomRateNight.js.map +1 -1
  660. package/dist/src/models/RoomstaySession.d.ts +3 -1
  661. package/dist/src/models/RoomstaySession.js.map +1 -1
  662. package/dist/src/pages/account/AccountHome/AccountHomePage.js +8 -18
  663. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  664. package/dist/src/pages/account/AccountRoutes.d.ts +0 -5
  665. package/dist/src/pages/account/AccountRoutes.js +2 -8
  666. package/dist/src/pages/account/AccountRoutes.js.map +1 -1
  667. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js +7 -17
  668. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js.map +1 -1
  669. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +7 -17
  670. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  671. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +7 -17
  672. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  673. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +7 -17
  674. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  675. package/dist/src/pages/account/Help/AccountHelpPage.js +7 -17
  676. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  677. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +13 -38
  678. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  679. package/dist/src/pages/account/Reservations/AccountReservationsPage.js +7 -7
  680. package/dist/src/pages/account/Reservations/AccountReservationsPage.js.map +1 -1
  681. package/dist/src/pages/findReservation/FindReservation.js +9 -19
  682. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  683. package/dist/src/pages/findReservation/FindReservationResults.js +10 -20
  684. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  685. package/dist/src/pages/findReservation/ReservationRow.d.ts +1 -1
  686. package/dist/src/pages/findReservation/ReservationRow.js +8 -18
  687. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  688. package/dist/src/pages/findReservation/ReservationRowModal.d.ts +1 -1
  689. package/dist/src/pages/findReservation/ReservationRowModal.js +8 -18
  690. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  691. package/dist/src/pages/hotel/HotelInfo.js +10 -20
  692. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  693. package/dist/src/pages/hotel/HotelInfoPlaceholder.js +1 -1
  694. package/dist/src/pages/hotel/HotelInfoPlaceholder.js.map +1 -1
  695. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  696. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +8 -18
  697. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
  698. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js +7 -17
  699. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js.map +1 -1
  700. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  701. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +7 -17
  702. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
  703. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js +8 -18
  704. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js.map +1 -1
  705. package/dist/src/pages/steps/StepConfirmation/StepConfirmationValidator.js.map +1 -1
  706. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  707. package/dist/src/pages/steps/StepDate/StepDateComponent.js +7 -17
  708. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  709. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoom.js.map +1 -1
  710. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js +7 -17
  711. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js.map +1 -1
  712. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.js +8 -18
  713. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.js.map +1 -1
  714. package/dist/src/pages/steps/StepGuide.js +8 -18
  715. package/dist/src/pages/steps/StepGuide.js.map +1 -1
  716. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +7 -17
  717. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  718. package/dist/src/pages/steps/StepHotel/StepHotelLoader.js +7 -17
  719. package/dist/src/pages/steps/StepHotel/StepHotelLoader.js.map +1 -1
  720. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  721. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +7 -17
  722. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
  723. package/dist/src/pages/steps/StepRoom/StepRoomFilters.js +7 -17
  724. package/dist/src/pages/steps/StepRoom/StepRoomFilters.js.map +1 -1
  725. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js +8 -18
  726. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js.map +1 -1
  727. package/dist/src/pages/steps/StepRoom/StepRoomValidator.js.map +1 -1
  728. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  729. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +10 -25
  730. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  731. package/dist/src/pages/steps/StepThanks/StepThanksValidator.js.map +1 -1
  732. package/dist/src/providers/CurrencyProvider.js +1 -1
  733. package/dist/src/providers/CurrencyProvider.js.map +1 -1
  734. package/dist/src/providers/DIProvider.js +3 -2
  735. package/dist/src/providers/DIProvider.js.map +1 -1
  736. package/dist/src/providers/DistanceProvider.js.map +1 -1
  737. package/dist/src/providers/FeatureProvider.js +1 -1
  738. package/dist/src/providers/FeatureProvider.js.map +1 -1
  739. package/dist/src/providers/FilterProvider.d.ts +1 -1
  740. package/dist/src/providers/FilterProvider.js +3 -3
  741. package/dist/src/providers/FilterProvider.js.map +1 -1
  742. package/dist/src/providers/ImageProvider.js +1 -1
  743. package/dist/src/providers/ImageProvider.js.map +1 -1
  744. package/dist/src/providers/LanguageProvider.js +1 -1
  745. package/dist/src/providers/LanguageProvider.js.map +1 -1
  746. package/dist/src/providers/PromotionProvider.d.ts +1 -1
  747. package/dist/src/providers/PromotionProvider.js.map +1 -1
  748. package/dist/src/providers/RatePillProvider.js.map +1 -1
  749. package/dist/src/providers/RoomSortProvider.js +2 -2
  750. package/dist/src/providers/RoomSortProvider.js.map +1 -1
  751. package/dist/src/providers/RoomstayThemeEngine.js +8 -18
  752. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  753. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js.map +1 -1
  754. package/dist/src/providers/feature/Feature.d.ts +2 -0
  755. package/dist/src/providers/feature/Feature.js +4 -0
  756. package/dist/src/providers/feature/Feature.js.map +1 -1
  757. package/dist/src/providers/feature/GuestTitleFieldFeature.js.map +1 -1
  758. package/dist/src/providers/feature/InlineAddonStepFeature.js.map +1 -1
  759. package/dist/src/providers/feature/MemberPortalFeature.js.map +1 -1
  760. package/dist/src/providers/feature/RoomUpsellFeature.d.ts +0 -10
  761. package/dist/src/providers/feature/RoomUpsellFeature.js +0 -10
  762. package/dist/src/providers/feature/RoomUpsellFeature.js.map +1 -1
  763. package/dist/src/providers/storage/SessionProvider.js +2 -0
  764. package/dist/src/providers/storage/SessionProvider.js.map +1 -1
  765. package/dist/src/providers/storage/StorageProvider.d.ts +1 -1
  766. package/dist/src/providers/storage/StorageProvider.js +7 -17
  767. package/dist/src/providers/storage/StorageProvider.js.map +1 -1
  768. package/dist/src/reducers/BasketReducer.js.map +1 -1
  769. package/dist/src/stories/BookingWizard.stories.d.ts +2 -2
  770. package/dist/src/stories/Card.stories.d.ts +5 -3
  771. package/dist/src/stories/CardTypeSelect.stories.d.ts +1 -2
  772. package/dist/src/stories/Checkbox.stories.d.ts +1 -2
  773. package/dist/src/stories/ConfirmationModal.stories.js +7 -17
  774. package/dist/src/stories/ConfirmationModal.stories.js.map +1 -1
  775. package/dist/src/stories/DateRangePicker.stories.js +7 -17
  776. package/dist/src/stories/DateRangePicker.stories.js.map +1 -1
  777. package/dist/src/stories/EnhancedPhoneNumberField.stories.d.ts +1 -2
  778. package/dist/src/stories/ErrorModal.stories.js +7 -17
  779. package/dist/src/stories/ErrorModal.stories.js.map +1 -1
  780. package/dist/src/stories/EventCarousel.stories.d.ts +2 -2
  781. package/dist/src/stories/FloatingDateRangePicker.stories.d.ts +2 -2
  782. package/dist/src/stories/FloatingDateRangePicker.stories.js +7 -17
  783. package/dist/src/stories/FloatingDateRangePicker.stories.js.map +1 -1
  784. package/dist/src/stories/ForwardedSelect.stories.d.ts +1 -2
  785. package/dist/src/stories/Icon.stories.js +7 -17
  786. package/dist/src/stories/Icon.stories.js.map +1 -1
  787. package/dist/src/stories/IconNavCard.stories.d.ts +15 -6
  788. package/dist/src/stories/IconText.stories.js +7 -17
  789. package/dist/src/stories/IconText.stories.js.map +1 -1
  790. package/dist/src/stories/NumberIncrement.stories.js +7 -17
  791. package/dist/src/stories/NumberIncrement.stories.js.map +1 -1
  792. package/dist/src/stories/PasswordBox.stories.d.ts +1 -2
  793. package/dist/src/stories/PaymentCard.stories.d.ts +1 -2
  794. package/dist/src/stories/PaymentCardInput.stories.d.ts +1 -2
  795. package/dist/src/stories/PlanpayButton.stories.d.ts +1 -2
  796. package/dist/src/stories/RadioButton.stories.d.ts +1 -2
  797. package/dist/src/stories/RadioButtonGroup.stories.d.ts +3 -2
  798. package/dist/src/stories/RadioButtonGroup.stories.js +7 -17
  799. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  800. package/dist/src/stories/Select.stories.d.ts +4 -2
  801. package/dist/src/stories/Select.stories.js +7 -17
  802. package/dist/src/stories/Select.stories.js.map +1 -1
  803. package/dist/src/stories/SimpleModal.stories.js +7 -17
  804. package/dist/src/stories/SimpleModal.stories.js.map +1 -1
  805. package/dist/src/stories/Slider.stories.d.ts +7 -2
  806. package/dist/src/stories/Slider.stories.js +7 -17
  807. package/dist/src/stories/Slider.stories.js.map +1 -1
  808. package/dist/src/stories/TabbedModal.stories.js +7 -17
  809. package/dist/src/stories/TabbedModal.stories.js.map +1 -1
  810. package/dist/src/stories/Tabs.stories.d.ts +2 -2
  811. package/dist/src/stories/Text.stories.d.ts +1 -2
  812. package/dist/src/stories/TextArea.stories.d.ts +1 -2
  813. package/dist/src/stories/TextBox.stories.d.ts +1 -2
  814. package/dist/src/translations/Translation.d.ts +3 -0
  815. package/dist/src/translations/Translation.js +5 -2
  816. package/dist/src/translations/Translation.js.map +1 -1
  817. package/dist/src/translations/languages/en-gb.js +3 -0
  818. package/dist/src/translations/languages/en-gb.js.map +1 -1
  819. package/dist/src/util/Analytics/Analytics.d.ts +10 -36
  820. package/dist/src/util/Analytics/Analytics.js +0 -30
  821. package/dist/src/util/Analytics/Analytics.js.map +1 -1
  822. package/dist/src/util/Analytics/GoogleAnalytics4.d.ts +3 -4
  823. package/dist/src/util/Analytics/GoogleAnalytics4.js +4 -13
  824. package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
  825. package/dist/src/util/Analytics/UniversalAnalytics.d.ts +23 -5
  826. package/dist/src/util/Analytics/UniversalAnalytics.js +5 -24
  827. package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
  828. package/dist/src/util/AsyncAuth.js +7 -17
  829. package/dist/src/util/AsyncAuth.js.map +1 -1
  830. package/dist/src/util/CalendarHelper.js +1 -1
  831. package/dist/src/util/CalendarHelper.js.map +1 -1
  832. package/dist/src/util/Color.d.ts +1 -1
  833. package/dist/src/util/Color.js +1 -1
  834. package/dist/src/util/Color.js.map +1 -1
  835. package/dist/src/util/CurrencyHelper.js.map +1 -1
  836. package/dist/src/util/DataLayer.d.ts +3 -9
  837. package/dist/src/util/DataLayer.js +26 -61
  838. package/dist/src/util/DataLayer.js.map +1 -1
  839. package/dist/src/util/Debounce.js +3 -2
  840. package/dist/src/util/Debounce.js.map +1 -1
  841. package/dist/src/util/DefaultValueManager.js +1 -1
  842. package/dist/src/util/DefaultValueManager.js.map +1 -1
  843. package/dist/src/util/DerbysoftPixel.d.ts +1 -1
  844. package/dist/src/util/DerbysoftPixel.js +2 -2
  845. package/dist/src/util/DerbysoftPixel.js.map +1 -1
  846. package/dist/src/util/EventsHelper.d.ts +2 -2
  847. package/dist/src/util/EventsHelper.js.map +1 -1
  848. package/dist/src/util/HotelPerkHelper.js +7 -17
  849. package/dist/src/util/HotelPerkHelper.js.map +1 -1
  850. package/dist/src/util/ObjectHelper.d.ts +1 -1
  851. package/dist/src/util/ObjectHelper.js.map +1 -1
  852. package/dist/src/util/PaymentCardHelper.js.map +1 -1
  853. package/dist/src/util/RouteManager.js +1 -1
  854. package/dist/src/util/RouteManager.js.map +1 -1
  855. package/dist/src/util/StepManager.js +1 -1
  856. package/dist/src/util/StepManager.js.map +1 -1
  857. package/dist/src/util/StringHelper.js.map +1 -1
  858. package/dist/src/util/TextAlignment.js +1 -1
  859. package/dist/src/util/TextAlignment.js.map +1 -1
  860. package/dist/src/util/TimeHelper.js.map +1 -1
  861. package/dist/src/util/TotalCalculator.d.ts +24 -0
  862. package/dist/src/util/TotalCalculator.js +157 -0
  863. package/dist/src/util/TotalCalculator.js.map +1 -0
  864. package/dist/test.bundle.js +1 -1
  865. package/dist/tests/offline/entry/config/hotelSpecDefault.js +1 -0
  866. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  867. package/dist/vendors.bundle.js +1 -1
  868. package/package.json +5 -7
  869. package/dist/375.bundle.js +0 -1
  870. package/dist/984.bundle.js +0 -1
  871. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.d.ts +0 -1
  872. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.js +0 -94
  873. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.js.map +0 -1
  874. package/dist/src/components/steps/room/LargeRateCard.d.ts +0 -10
  875. package/dist/src/components/steps/room/LargeRateCard.js +0 -120
  876. package/dist/src/components/steps/room/LargeRateCard.js.map +0 -1
@@ -1 +1 @@
1
- (("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[686],{66604:function(e,n,r){"use strict";var t=r(4942),o=r(70885),a=(r(51093),r(94184)),i=r.n(a),l=r(67294),s=r(26793),c=r(79478),u=r(78886),d=r(39253),f=r(15891),p=r(63351),h=function(e,n){var r,a=(0,l.useRef)(null);(0,l.useImperativeHandle)(n,(function(){return a.current}));var h=(0,d.f)({ref:a.current,onlyAutoOpenWhenInputEmpty:!0,disableOpenOnFocus:!0}),v=h.onDropdownClosed,m=h.onItemSelected,g=h.onTriggerClicked,b=h.isDropdownOpen,y=h.isFocused,w=(0,s.$)().t,x=(0,l.useMemo)((function(){return f.T.sort((function(e,n){return"".concat((e.suggested?"000":"")+e.label).localeCompare("".concat((n.suggested?"000":"")+n.label))}))}),[f.T]),S=(0,l.useState)(null),E=(0,o.Z)(S,2),O=E[0],k=E[1],Z=e.validationStatus,j=e.name,C=e.onChange,P=e.value,I=(0,l.useMemo)((function(){var e,n=null!==(e=null==P?void 0:P.split(" "))&&void 0!==e?e:[],r=(0,o.Z)(n,2),t=r[0],a=r[1];return t?[x.find((function(e){var n=e.phone;return t===n}))||x[0],a]:[x[0],""]}),[P]),N=(0,o.Z)(I,2),T=N[0],V=N[1],A=function(e,n){var r,t=null!=n?n:V;t.startsWith("0")&&(t=t.substring(1));var o="".concat(null!==(r=null==e?void 0:e.phone)&&void 0!==r?r:T.phone).concat(" ").concat(t);P!=o&&(null==C||C({target:{name:j,value:o}}))},F=i()("rs-enhanced-phone-field",(r={},(0,t.Z)(r,"--".concat(Z),!!Z),(0,t.Z)(r,"--focused",y),(0,t.Z)(r,"--disabled",e.disabled),r));return l.createElement("div",{className:F},l.createElement("div",{className:"rs-enhanced-phone-field--country",onClick:g},l.createElement("div",{className:"rs-enhanced-phone-field--country-icon"},(0,f.H)(T.code)),l.createElement(u.ZP,{icon:u.Tu.Dropdown})),l.createElement("div",{className:"rs-enhanced-phone-field--number"},l.createElement("span",{className:"rs-enhanced-phone-field--number-prefix"},"+",T.phone),l.createElement("input",{disabled:e.disabled,ref:a,placeholder:w(c.W.Step.Confirmation.Inputs.Phone)+" *",type:"number",style:{paddingLeft:8*T.phone.length+20+"px"},onChange:function(e){var n=e.target.value;A(void 0,n)},value:V}),l.createElement("div",{className:"rs-enhanced-phone-field--number-status"})),l.createElement("div",{className:"rs-enhanced-phone-field--anchor",ref:k}),l.createElement(p.P,{open:b,onClose:v,target:O,options:x,value:T.code,onChange:function(e){return n=e,void function(e){m(),A(e,void 0)}(x.find((function(e){return e.code===n})));var n},labelName:"code",keyName:"code",renderOption:function(e){return l.createElement("div",{className:"rs-enhanced-phone-field--suggest-list-country"},l.createElement("div",{className:"rs-enhanced-phone-field--suggest-list-country-icon"},(0,f.H)(null==e?void 0:e.code)),l.createElement("div",{className:"rs-enhanced-phone-field--suggest-list-country-name"},null==e?void 0:e.label," ",l.createElement("span",null,"+",null==e?void 0:e.phone)))}}))};n.Z=l.forwardRef(h)},71291:function(e,n,r){"use strict";r.d(n,{c:function(){return O},u:function(){return E}});var t=r(42982),o=r(4942),a=r(15861),i=r(70885),l=r(64687),s=r.n(l),c=r(94184),u=r.n(c),d=r(67294),f=r(62364),p=r(41321),h=r(514);function v(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return m(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var t=0,o=function(){};return{s:o,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(l)throw a}}}}function m(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function g(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function b(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?g(Object(r),!0).forEach((function(n){(0,o.Z)(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):g(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}var y,w=null,x=null,S=function(){var e,n,r,t,o,a,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"standard",l=(0,h.W)().hotel,s=null!==(e=null==l||null===(n=l.vgs)||void 0===n||null===(r=n.vaultNames)||void 0===r?void 0:r.members)&&void 0!==e?e:"tntjyo5u2pi",c=null!==(t=null==l||null===(o=l.vgs)||void 0===o||null===(a=o.vaultNames)||void 0===a?void 0:a.standard)&&void 0!==t?t:"tntmupn9ras";return"members"===i?s:c};window.VGSCollect=window.VGSCollect||{};var E=function(e){var n=S("members"),r=(0,d.useState)(btoa((Math.random()*Math.random()*Date.now()).toString()).replace(/=/gi,"")),t=(0,i.Z)(r,1)[0],l=(0,d.useState)(!1),c=(0,i.Z)(l,2),u=c[0],h=c[1],v=(0,d.useRef)(null);(0,d.useEffect)((function(){null===w&&(w=(0,a.Z)(s().mark((function e(){return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,f.Z.loadScript("https://js.verygoodvault.com/vgs-show/2.0.2/show.js","vgs-show");case 3:y=window.VGSShow.create(n,(function(e){})).setEnvironment("live"),e.next=9;break;case 6:e.prev=6,e.t0=e.catch(0),console.error("Unable to load vgs-show "+e.t0.message);case 9:case"end":return e.stop()}}),e,null,[[0,6]])})))())}),[]);var m=function(){var n=(0,a.Z)(s().mark((function n(){var r;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,p.v)();case 2:r=n.sent,y&&null!=v&&v.current&&(v.current.classList.add(t),h(!0),r.currentAuthenticatedUser().then((function(n){var r=n.signInUserSession.idToken.jwtToken,a=y.request({name:e.name,method:"POST",path:"/members/vgs-auth",payload:(0,o.Z)({},e.name,"".concat(e.value)),headers:{Authorization:r},serializers:[y.SERIALIZERS.replace("(\\d{4})(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3 $4")],htmlWrapper:"text",jsonPathSelector:"".concat(e.name)});a.on("revealSuccess",(function(){h(!1)})),a.on("revealFail",(function(){h(!1)})),v.current&&(v.current.innerHTML=""),a.render(".".concat(t),e.styles)})));case 4:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}();return(0,d.useEffect)((function(){m()}),[y,v,e.name,e.value]),{targetRef:v,isLoading:u}},O=function(e){var n=S(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"standard"),r=e.map((function(){return(0,d.useRef)(null)})),o=function(e){return b(b({name:e.name,type:e.type},e.vgsProps),{},{disabled:e.vgsProps.disabled||void 0})},l=(0,d.useState)(!1),c=(0,i.Z)(l,2),p=c[0],h=c[1],m=(0,d.useState)(null),g=(0,i.Z)(m,2),y=g[0],w=g[1],E=(0,d.useState)(e.map((function(e){return{isFocused:!1,isValid:!1,name:e.name,label:e.label,type:e.type,vgsInput:null}}))),O=(0,i.Z)(E,2),k=O[0],Z=O[1];return(0,d.useEffect)((function(){var e=!1;return null===x?x=(0,a.Z)(s().mark((function n(){return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,f.Z.loadScript("https://js.verygoodvault.com/vgs-collect/2.18.1/vgs-collect.js","vgs-collect");case 2:e||h(!0);case 3:case"end":return n.stop()}}),n)})))():x.then((function(){e||h(!0)})),function(){e=!0}}),[]),(0,d.useEffect)((function(){var a,i=v(r);try{for(i.s();!(a=i.n()).done;){var l=a.value;if(null==l||!l.current)return}}catch(e){i.e(e)}finally{i.f()}if(p&&!y){var s=window.VGSCollect.create(n,"live",(function(e){Z((function(n){var r,o=(0,t.Z)(n),a=v(o);try{for(a.s();!(r=a.n()).done;){var i=r.value,l=e[i.name];l&&(i.isFocused=l.isFocused,i.isValid=l.isEmpty?null:l.isValid,"card-number"===i.type&&(i.cardType=l.cardType))}}catch(e){a.e(e)}finally{a.f()}return o}))}));w(s),Z((function(n){for(var a=(0,t.Z)(n),i=0;i<a.length;i++){var l=a[i],c=e[i];l.vgsInput=s.field(r[i].current,o(c))}return a}))}}),[p,y,r]),{fields:e.map((function(n,t){return{ref:r[t],state:k[t],getClasses:function(n){return function(n,r){var t,o=k[n],a=e[n];return o?u()("c-input","c-input--vgs",r,{"--selected":o.isFocused,"--success":null!==o.isValid&&o.isValid,"--error":null!==o.isValid&&!o.isValid,"--disabled":!(null==a||null===(t=a.vgsProps)||void 0===t||!t.disabled)}):""}(t,n)}}})),triggerFieldUpdate:function(){var n,t=v(r);try{for(t.s();!(n=t.n()).done;){var a=n.value;if(null==a||!a.current)return}}catch(e){t.e(e)}finally{t.f()}if(y)for(var i=0;i<k.length;i++){var l,s,c=k[i],u=e[i];c.vgsInput&&(null===(l=(s=c.vgsInput).update)||void 0===l||l.call(s,o(u)))}},vgsForm:y}}},17574:function(e,n,r){(n=r(23645)(!1)).push([e.id,".rs-enhanced-phone-field{--rs-color-input-border: var(--rs-color-light-grey);display:flex;flex-direction:row;position:relative;border:1px solid var(--rs-color-input-border);border-radius:4px;transition:.2s border}.rs-enhanced-phone-field:hover,.rs-enhanced-phone-field.--focused{--rs-color-input-border: var(--rs-color-accent-1)}.rs-enhanced-phone-field.--error{--rs-color-input-border: var(--rs-color-alert)}.rs-enhanced-phone-field.--success{--rs-color-input-border: var(--rs-color-success)}.rs-enhanced-phone-field--country{display:flex;flex-direction:row;align-items:center;justify-items:center;padding:8px 8px 8px 12px;cursor:pointer;background-color:rgba(0,0,0,0);transition:background-color .2s;border-right:1px solid var(--rs-color-input-border)}.rs-enhanced-phone-field--country:hover{background-color:var(--rs-color-snow)}.rs-enhanced-phone-field--country-icon{margin-right:7.5px}.rs-enhanced-phone-field--country *{z-index:5}.rs-enhanced-phone-field--number{flex-grow:1;position:relative}.rs-enhanced-phone-field--number-prefix{position:absolute;top:50%;left:8px;transform:translateY(-50%);font-size:14px !important;line-height:18px;color:var(--rs-color-dark-grey)}.rs-enhanced-phone-field--number input{border-radius:4px;border:none;width:100%;height:100%;appearance:none;outline:none;font-size:14px;line-height:18px;padding-left:40px;-moz-appearance:textfield}.rs-enhanced-phone-field--number input::-webkit-outer-spin-button,.rs-enhanced-phone-field--number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.rs-enhanced-phone-field--anchor{position:absolute;left:0;top:100%;width:100%;z-index:5000}.rs-enhanced-phone-field--suggest-list-country{display:flex;align-items:center}.rs-enhanced-phone-field--suggest-list-country-icon{margin-right:8px}.rs-enhanced-phone-field--suggest-list-country-name span{color:var(--rs-color-dark-grey)}.rs-enhanced-phone-field.--disabled{pointer-events:none;background-color:#f5f5f5}",""]),e.exports=n},51093:function(e,n,r){var t=r(93379),o=r(17574);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.id,o,""]]);t(o,{insert:"head",singleton:!1}),e.exports=o.locals||{}}}]);
1
+ (("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[686],{66604:function(e,n,r){"use strict";var t=r(4942),o=r(70885),a=(r(51093),r(94184)),i=r.n(a),l=r(67294),s=r(26793),c=r(79478),u=r(78886),d=r(39253),f=r(15891),p=r(63351),h=function(e,n){var r,a=(0,l.useRef)(null);(0,l.useImperativeHandle)(n,(function(){return a.current}));var h=(0,d.f)({ref:a.current,onlyAutoOpenWhenInputEmpty:!0}),v=h.onDropdownClosed,m=h.onItemSelected,g=h.onTriggerClicked,b=h.isDropdownOpen,y=h.isFocused,w=(0,s.$)().t,x=(0,l.useMemo)((function(){return f.T.sort((function(e,n){return"".concat((e.suggested?"000":"")+e.label).localeCompare("".concat((n.suggested?"000":"")+n.label))}))}),[f.T]),S=(0,l.useState)(null),E=(0,o.Z)(S,2),k=E[0],O=E[1],Z=e.validationStatus,j=e.name,C=e.onChange,P=e.value,I=(0,l.useMemo)((function(){var e,n=null!==(e=null==P?void 0:P.split(" "))&&void 0!==e?e:[],r=(0,o.Z)(n,2),t=r[0],a=r[1];return t?[x.find((function(e){var n=e.phone;return t===n}))||x[0],a]:[x[0],""]}),[P]),N=(0,o.Z)(I,2),T=N[0],V=N[1],A=function(e,n){var r,t=null!=n?n:V;t.startsWith("0")&&(t=t.substring(1));var o="".concat(null!==(r=null==e?void 0:e.phone)&&void 0!==r?r:T.phone).concat(" ").concat(t);P!=o&&(null==C||C({target:{name:j,value:o}}))},D=i()("rs-enhanced-phone-field",(r={},(0,t.Z)(r,"--".concat(Z),!!Z),(0,t.Z)(r,"--focused",y),(0,t.Z)(r,"--disabled",e.disabled),r));return l.createElement("div",{className:D},l.createElement("div",{className:"rs-enhanced-phone-field--country",onClick:g},l.createElement("div",{className:"rs-enhanced-phone-field--country-icon"},(0,f.H)(T.code)),l.createElement(u.ZP,{icon:u.Tu.Dropdown})),l.createElement("div",{className:"rs-enhanced-phone-field--number"},l.createElement("span",{className:"rs-enhanced-phone-field--number-prefix"},"+",T.phone),l.createElement("input",{disabled:e.disabled,ref:a,placeholder:w(c.W.Step.Confirmation.Inputs.Phone)+" *",type:"number",style:{paddingLeft:8*T.phone.length+20+"px"},onChange:function(e){var n=e.target.value;A(void 0,n)},value:V}),l.createElement("div",{className:"rs-enhanced-phone-field--number-status"})),l.createElement("div",{className:"rs-enhanced-phone-field--anchor",ref:O}),l.createElement(p.P,{open:b,onClose:v,target:k,options:x,value:T.code,onChange:function(e){return n=e,void function(e){m(),A(e,void 0)}(x.find((function(e){return e.code===n})));var n},labelName:"code",keyName:"code",renderOption:function(e){return l.createElement("div",{className:"rs-enhanced-phone-field--suggest-list-country"},l.createElement("div",{className:"rs-enhanced-phone-field--suggest-list-country-icon"},(0,f.H)(null==e?void 0:e.code)),l.createElement("div",{className:"rs-enhanced-phone-field--suggest-list-country-name"},null==e?void 0:e.label," ",l.createElement("span",null,"+",null==e?void 0:e.phone)))}}))};n.Z=l.forwardRef(h)},71291:function(e,n,r){"use strict";r.d(n,{c:function(){return k},u:function(){return E}});var t=r(42982),o=r(4942),a=r(15861),i=r(70885),l=r(64687),s=r.n(l),c=r(94184),u=r.n(c),d=r(67294),f=r(62364),p=r(41321),h=r(514);function v(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return m(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){r&&(e=r);var t=0,o=function(){};return{s:o,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(l)throw a}}}}function m(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function g(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function b(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?g(Object(r),!0).forEach((function(n){(0,o.Z)(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):g(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}var y,w=null,x=null,S=function(){var e,n,r,t,o,a,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"standard",l=(0,h.W)().hotel,s=null!==(e=null==l||null===(n=l.vgs)||void 0===n||null===(r=n.vaultNames)||void 0===r?void 0:r.members)&&void 0!==e?e:"tntjyo5u2pi",c=null!==(t=null==l||null===(o=l.vgs)||void 0===o||null===(a=o.vaultNames)||void 0===a?void 0:a.standard)&&void 0!==t?t:"tntmupn9ras";return"members"===i?s:c};window.VGSCollect=window.VGSCollect||{};var E=function(e){var n=S("members"),r=(0,d.useState)(btoa((Math.random()*Math.random()*Date.now()).toString()).replace(/=/gi,"")),t=(0,i.Z)(r,1)[0],l=(0,d.useState)(!1),c=(0,i.Z)(l,2),u=c[0],h=c[1],v=(0,d.useRef)(null);(0,d.useEffect)((function(){null===w&&(w=(0,a.Z)(s().mark((function e(){return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,f.Z.loadScript("https://js.verygoodvault.com/vgs-show/2.0.2/show.js","vgs-show");case 3:y=window.VGSShow.create(n,(function(e){})).setEnvironment("live"),e.next=9;break;case 6:e.prev=6,e.t0=e.catch(0),console.error("Unable to load vgs-show "+e.t0.message);case 9:case"end":return e.stop()}}),e,null,[[0,6]])})))())}),[]);var m=function(){var n=(0,a.Z)(s().mark((function n(){var r;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,p.v)();case 2:r=n.sent,y&&null!=v&&v.current&&(v.current.classList.add(t),h(!0),r.currentAuthenticatedUser().then((function(n){var r=n.signInUserSession.idToken.jwtToken,a=y.request({name:e.name,method:"POST",path:"/members/vgs-auth",payload:(0,o.Z)({},e.name,"".concat(e.value)),headers:{Authorization:r},serializers:[y.SERIALIZERS.replace("(\\d{4})(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3 $4")],htmlWrapper:"text",jsonPathSelector:"".concat(e.name)});a.on("revealSuccess",(function(){h(!1)})),a.on("revealFail",(function(){h(!1)})),v.current&&(v.current.innerHTML=""),a.render(".".concat(t),e.styles)})));case 4:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}();return(0,d.useEffect)((function(){m()}),[y,v,e.name,e.value]),{targetRef:v,isLoading:u}},k=function(e){var n=S(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"standard"),r=e.map((function(){return(0,d.useRef)(null)})),o=function(e){return b(b({name:e.name,type:e.type},e.vgsProps),{},{disabled:e.vgsProps.disabled||void 0})},l=(0,d.useState)(!1),c=(0,i.Z)(l,2),p=c[0],h=c[1],m=(0,d.useState)(null),g=(0,i.Z)(m,2),y=g[0],w=g[1],E=(0,d.useState)(e.map((function(e){return{isFocused:!1,isValid:!1,name:e.name,label:e.label,type:e.type,vgsInput:null}}))),k=(0,i.Z)(E,2),O=k[0],Z=k[1];return(0,d.useEffect)((function(){var e=!1;return null===x?x=(0,a.Z)(s().mark((function n(){return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,f.Z.loadScript("https://js.verygoodvault.com/vgs-collect/2.18.1/vgs-collect.js","vgs-collect");case 2:e||h(!0);case 3:case"end":return n.stop()}}),n)})))():x.then((function(){e||h(!0)})),function(){e=!0}}),[]),(0,d.useEffect)((function(){var a,i=v(r);try{for(i.s();!(a=i.n()).done;){var l=a.value;if(null==l||!l.current)return}}catch(e){i.e(e)}finally{i.f()}if(p&&!y){var s=window.VGSCollect.create(n,"live",(function(e){Z((function(n){var r,o=(0,t.Z)(n),a=v(o);try{for(a.s();!(r=a.n()).done;){var i=r.value,l=e[i.name];l&&(i.isFocused=l.isFocused,i.isValid=l.isEmpty?null:l.isValid,"card-number"===i.type&&(i.cardType=l.cardType))}}catch(e){a.e(e)}finally{a.f()}return o}))}));w(s),Z((function(n){for(var a=(0,t.Z)(n),i=0;i<a.length;i++){var l=a[i],c=e[i];l.vgsInput=s.field(r[i].current,o(c))}return a}))}}),[p,y,r]),{fields:e.map((function(n,t){return{ref:r[t],state:O[t],getClasses:function(n){return function(n,r){var t,o=O[n],a=e[n];return o?u()("c-input","c-input--vgs",r,{"--selected":o.isFocused,"--success":null!==o.isValid&&o.isValid,"--error":null!==o.isValid&&!o.isValid,"--disabled":!(null==a||null===(t=a.vgsProps)||void 0===t||!t.disabled)}):""}(t,n)}}})),triggerFieldUpdate:function(){var n,t=v(r);try{for(t.s();!(n=t.n()).done;){var a=n.value;if(null==a||!a.current)return}}catch(e){t.e(e)}finally{t.f()}if(y)for(var i=0;i<O.length;i++){var l,s,c=O[i],u=e[i];c.vgsInput&&(null===(l=(s=c.vgsInput).update)||void 0===l||l.call(s,o(u)))}},vgsForm:y}}},17574:function(e,n,r){(n=r(23645)(!1)).push([e.id,".rs-enhanced-phone-field{--rs-color-input-border: var(--rs-color-light-grey);display:flex;flex-direction:row;position:relative;border:1px solid var(--rs-color-input-border);border-radius:4px;transition:.2s border}.rs-enhanced-phone-field:hover,.rs-enhanced-phone-field.--focused{--rs-color-input-border: var(--rs-color-accent-1)}.rs-enhanced-phone-field.--error{--rs-color-input-border: var(--rs-color-alert)}.rs-enhanced-phone-field.--success{--rs-color-input-border: var(--rs-color-success)}.rs-enhanced-phone-field--country{display:flex;flex-direction:row;align-items:center;justify-items:center;padding:8px 8px 8px 12px;cursor:pointer;background-color:rgba(0,0,0,0);transition:background-color .2s;border-right:1px solid var(--rs-color-input-border)}.rs-enhanced-phone-field--country:hover{background-color:var(--rs-color-snow)}.rs-enhanced-phone-field--country-icon{margin-right:7.5px}.rs-enhanced-phone-field--country *{z-index:5}.rs-enhanced-phone-field--number{flex-grow:1;position:relative}.rs-enhanced-phone-field--number-prefix{position:absolute;top:50%;left:8px;transform:translateY(-50%);font-size:14px !important;line-height:18px;color:var(--rs-color-dark-grey)}.rs-enhanced-phone-field--number input{border-radius:4px;border:none;width:100%;height:100%;appearance:none;outline:none;font-size:14px;line-height:18px;padding-left:40px;-moz-appearance:textfield}.rs-enhanced-phone-field--number input::-webkit-outer-spin-button,.rs-enhanced-phone-field--number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.rs-enhanced-phone-field--anchor{position:absolute;left:0;top:100%;width:100%;z-index:5000}.rs-enhanced-phone-field--suggest-list-country{display:flex;align-items:center}.rs-enhanced-phone-field--suggest-list-country-icon{margin-right:8px}.rs-enhanced-phone-field--suggest-list-country-name span{color:var(--rs-color-dark-grey)}.rs-enhanced-phone-field.--disabled{pointer-events:none;background-color:#f5f5f5}",""]),e.exports=n},51093:function(e,n,r){var t=r(93379),o=r(17574);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.id,o,""]]);t(o,{insert:"head",singleton:!1}),e.exports=o.locals||{}}}]);
@@ -1 +1 @@
1
- "use strict";(("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[873],{49873:function(e,t,n){n.r(t),n.d(t,{default:function(){return M}});var a=n(87462),r=n(42982),o=n(15861),i=n(70885),c=n(64687),u=n.n(c),s=n(6058),l=n(88144),f=n(27484),d=n.n(f),m=n(67294),v=n(87582),Z=n(73460),h=n(64401),p=n(78886),k=n(30584),y=n(77898),E=n(97754),g=n(84544),w=n(90292),x=n(39605);function M(){var e,t,n=(0,m.useContext)(s.lN),c=(0,m.useContext)(s.g7),f=null!==(e=null!==(t=n.startDate)&&void 0!==t?t:n.currentMonth)&&void 0!==e?e:d()().add(14,"day"),M=(0,l.q_)((function(){return{x:0,config:{mass:1,tension:170,friction:20}}})),b=(0,i.Z)(M,2),N=b[0].x,C=b[1],D=(0,m.useState)(0),S=(0,i.Z)(D,2),P=S[0],A=S[1],T=(0,Z.Z)(),I=(0,i.Z)(T,2),W=(I[0],I[1],(0,m.useState)([])),j=(0,i.Z)(W,2),R=j[0],_=j[1],F=(0,m.useState)(null),z=(0,i.Z)(F,2),B=(z[0],z[1]),L=(0,m.useState)(d()()),q=(0,i.Z)(L,2),J=q[0],G=q[1],H=(0,m.useState)(0),K=(0,i.Z)(H,2),O=K[0],Q=K[1],U=(0,m.useState)(!1),V=(0,i.Z)(U,2);V[0],V[1],(0,m.useEffect)((function(){_(y.ZP.getDaysBetween(d()(),f)),n.startDate&&setTimeout((function(){Y(n.startDate)}),500)}),[]);var X=function(e){e>0&&(e=0),C({x:e}),A(e)},Y=function(e){var t;t=J?Math.abs(Number(e.diff(J,"day"))):Number(e.format("DD")),X(-62*t)},$=function(){var e=(0,o.Z)(u().mark((function e(t){var n,a=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!(a.length>1&&void 0!==a[1])||a[1],!t.isBefore(d()())){e.next=3;break}return e.abrupt("return");case 3:_((function(e){var a=n?y.ZP.getWeekFrom(t):y.ZP.getWeekTo(t);return n?[].concat((0,r.Z)(e),(0,r.Z)(a)):[].concat((0,r.Z)(a.reverse()),(0,r.Z)(e))}));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();(0,m.useEffect)((function(){B(R[R.length-1]),G(R[0]),Q(R.length)}),[R]),(0,m.useEffect)((function(){62*O-1e3<=-P&&te()}),[P]);var ee,te=function(){var e=(0,o.Z)(u().mark((function e(){var t;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:$(null!==(t=R[R.length-1])&&void 0!==t?t:f.add(7,"days"));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),ne=(0,v.c0)((function(e){var t=e.down,n=(0,i.Z)(e.movement,1)[0],a=e.velocity;if(n*=c.screenSize<=w.Z.Medium?(a*=.75)>4?4:a<1?1:a:1,t)C({x:P+n});else{var r=P+n,o=62*O,u=0;if(r>0)u=0;else if(r<-o)u=-o;else{var s=-r/62;u=-62*(r%62>-31?Math.floor(s):Math.ceil(s))}62*O-1e3<=-r&&te(),C({x:u}),A(u)}})),ae=(0,m.useMemo)((function(){return m.createElement(m.Fragment,null,R.map((function(e,t){var n=e.format("D"),a=e.unix();return m.createElement(m.Fragment,null,m.createElement(h.Z,{key:a,text:n,selectable:!0,day:e,displayType:"week",unix:a}))})))}),[R]),re=(ee=Math.floor(P/62),J?J.add(-ee,"day").format("MMMM"):f.format("MMMM"));return m.createElement(m.Fragment,null,m.createElement("div",{className:"diji-calendar-navigation"},m.createElement(p.ZP,{icon:p.Tu.ArrowLeft2,onClick:function(){g.ZP.instance.sendInteraction("Show Previous Week",g.s_.CALENDAR,g._J.DATES),X(P+434)},color:E.Il.White,backgroundColor:E.Il.Navy,borderRadius:"round",size:"24px"}),m.createElement(p.ZP,{icon:p.Tu.ArrowRight2,onClick:function(){g.ZP.instance.sendInteraction("Show Next Week",g.s_.CALENDAR,g._J.DATES),X(P-434)},color:E.Il.White,backgroundColor:E.Il.Navy,borderRadius:"round",size:"24px"})),m.createElement("div",{className:"u-marg-top"},m.createElement(k.xv,{type:k.yG.Body,bold:!0,align:x.P.Center},re)),m.createElement("div",{className:"diji-calendar-week--global-month"},re),m.createElement("div",{className:"diji-calendar-week"},m.createElement("div",(0,a.Z)({className:"diji-calendar-week--track"},ne()),m.createElement(l.q.div,{className:"diji-calendar-week--items",style:{left:N}},ae))))}}}]);
1
+ "use strict";(("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[873],{49873:function(e,t,n){n.r(t),n.d(t,{default:function(){return M}});var a=n(87462),r=n(42982),o=n(15861),i=n(70885),c=n(64687),u=n.n(c),s=n(4918),l=n(88144),f=n(27484),d=n.n(f),m=n(67294),v=n(87582),Z=n(73460),h=n(64401),p=n(78886),k=n(30584),y=n(77898),E=n(97754),g=n(84544),w=n(90292),x=n(39605);function M(){var e,t,n=(0,m.useContext)(s.lN),c=(0,m.useContext)(s.g7),f=null!==(e=null!==(t=n.startDate)&&void 0!==t?t:n.currentMonth)&&void 0!==e?e:d()().add(14,"day"),M=(0,l.q_)((function(){return{x:0,config:{mass:1,tension:170,friction:20}}})),b=(0,i.Z)(M,2),N=b[0].x,C=b[1],D=(0,m.useState)(0),S=(0,i.Z)(D,2),P=S[0],A=S[1],T=(0,Z.Z)(),I=(0,i.Z)(T,2),W=(I[0],I[1],(0,m.useState)([])),j=(0,i.Z)(W,2),R=j[0],_=j[1],F=(0,m.useState)(null),z=(0,i.Z)(F,2),B=(z[0],z[1]),L=(0,m.useState)(d()()),q=(0,i.Z)(L,2),J=q[0],G=q[1],H=(0,m.useState)(0),K=(0,i.Z)(H,2),O=K[0],Q=K[1],U=(0,m.useState)(!1),V=(0,i.Z)(U,2);V[0],V[1],(0,m.useEffect)((function(){_(y.ZP.getDaysBetween(d()(),f)),n.startDate&&setTimeout((function(){Y(n.startDate)}),500)}),[]);var X=function(e){e>0&&(e=0),C({x:e}),A(e)},Y=function(e){var t;t=J?Math.abs(Number(e.diff(J,"day"))):Number(e.format("DD")),X(-62*t)},$=function(){var e=(0,o.Z)(u().mark((function e(t){var n,a=arguments;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!(a.length>1&&void 0!==a[1])||a[1],!t.isBefore(d()())){e.next=3;break}return e.abrupt("return");case 3:_((function(e){var a=n?y.ZP.getWeekFrom(t):y.ZP.getWeekTo(t);return n?[].concat((0,r.Z)(e),(0,r.Z)(a)):[].concat((0,r.Z)(a.reverse()),(0,r.Z)(e))}));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();(0,m.useEffect)((function(){B(R[R.length-1]),G(R[0]),Q(R.length)}),[R]),(0,m.useEffect)((function(){62*O-1e3<=-P&&te()}),[P]);var ee,te=function(){var e=(0,o.Z)(u().mark((function e(){var t;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:$(null!==(t=R[R.length-1])&&void 0!==t?t:f.add(7,"days"));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),ne=(0,v.c0)((function(e){var t=e.down,n=(0,i.Z)(e.movement,1)[0],a=e.velocity;if(n*=c.screenSize<=w.Z.Medium?(a*=.75)>4?4:a<1?1:a:1,t)C({x:P+n});else{var r=P+n,o=62*O,u=0;if(r>0)u=0;else if(r<-o)u=-o;else{var s=-r/62;u=-62*(r%62>-31?Math.floor(s):Math.ceil(s))}62*O-1e3<=-r&&te(),C({x:u}),A(u)}})),ae=(0,m.useMemo)((function(){return m.createElement(m.Fragment,null,R.map((function(e,t){var n=e.format("D"),a=e.unix();return m.createElement(m.Fragment,null,m.createElement(h.Z,{key:a,text:n,selectable:!0,day:e,displayType:"week",unix:a}))})))}),[R]),re=(ee=Math.floor(P/62),J?J.add(-ee,"day").format("MMMM"):f.format("MMMM"));return m.createElement(m.Fragment,null,m.createElement("div",{className:"diji-calendar-navigation"},m.createElement(p.ZP,{icon:p.Tu.ArrowLeft2,onClick:function(){g.ZP.instance.sendInteraction("Show Previous Week",g.s_.CALENDAR,g._J.DATES),X(P+434)},color:E.Il.White,backgroundColor:E.Il.Navy,borderRadius:"round",size:"24px"}),m.createElement(p.ZP,{icon:p.Tu.ArrowRight2,onClick:function(){g.ZP.instance.sendInteraction("Show Next Week",g.s_.CALENDAR,g._J.DATES),X(P-434)},color:E.Il.White,backgroundColor:E.Il.Navy,borderRadius:"round",size:"24px"})),m.createElement("div",{className:"u-marg-top"},m.createElement(k.xv,{type:k.yG.Body,bold:!0,align:x.P.Center},re)),m.createElement("div",{className:"diji-calendar-week--global-month"},re),m.createElement("div",{className:"diji-calendar-week"},m.createElement("div",(0,a.Z)({className:"diji-calendar-week--track"},ne()),m.createElement(l.q.div,{className:"diji-calendar-week--items",style:{left:N}},ae))))}}}]);
@@ -1 +1 @@
1
- "use strict";(("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[972],{31972:function(e,t,n){n.d(t,{Z:function(){return b}});var r=n(4942),o=n(70885),c=n(6058),i=n(67294),s=n(73460),a=n(26793),l=n(79478),u=n(78029),f=n(84544);function p(){var e=(0,a.$)().t,t=(0,i.useContext)(c.hy);return i.createElement(u.Z,{text:e(l.W.Step.Room.NextStep),disabled:!t.getAllValidRows().length,onClick:function(){return new Promise((function(e){f.ZP.instance.sendInteraction("Next Step",f.s_.BUTTON,f._J.ROOMS),t.clearSelectedRates(),e(!0)}))},wideByDefault:!0})}var m=n(3933),y=n(10513),d=n(90292);function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?O(Object(n),!0).forEach((function(t){(0,r.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):O(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(){var e=(0,i.useContext)(c.g7),t=(0,i.useContext)(c.hy),n=(0,i.useState)({top:0}),r=(0,o.Z)(n,2),a=r[0],l=r[1],u=(0,s.Z)(),f=(0,o.Z)(u,2),O=f[0],b=f[1];return(0,i.useEffect)((function(){var e=window.innerHeight,t=b.height;l(e<t?{top:-(t-e+40)}:{top:150})}),[b]),(0,i.useMemo)((function(){return i.createElement("div",{ref:O,style:h({position:"sticky"},a)},!!t.getAllValidRows().length&&i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement(p,null)),e.screenSize>d.Z.Medium&&i.createElement(m.v,null),i.createElement("div",{className:"u-marg-top--heavy"},i.createElement(p,null)),e.screenSize>d.Z.Medium&&i.createElement("div",{className:"u-marg-top--heavy"},i.createElement(y.Z,null)))}),[e.screenSize,a.top])}}}]);
1
+ "use strict";(("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[972],{31972:function(e,t,n){n.d(t,{Z:function(){return b}});var r=n(4942),o=n(70885),c=n(4918),i=n(67294),s=n(73460),a=n(26793),l=n(79478),u=n(78029),f=n(84544);function p(){var e=(0,a.$)().t,t=(0,i.useContext)(c.hy);return i.createElement(u.Z,{text:e(l.W.Step.Room.NextStep),disabled:!t.getAllValidRows().length,onClick:function(){return new Promise((function(e){f.ZP.instance.sendInteraction("Next Step",f.s_.BUTTON,f._J.ROOMS),t.clearSelectedRates(),e(!0)}))},wideByDefault:!0})}var m=n(3933),y=n(10513),d=n(90292);function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?O(Object(n),!0).forEach((function(t){(0,r.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):O(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function b(){var e=(0,i.useContext)(c.g7),t=(0,i.useContext)(c.hy),n=(0,i.useState)({top:0}),r=(0,o.Z)(n,2),a=r[0],l=r[1],u=(0,s.Z)(),f=(0,o.Z)(u,2),O=f[0],b=f[1];return(0,i.useEffect)((function(){var e=window.innerHeight,t=b.height;l(e<t?{top:-(t-e+40)}:{top:150})}),[b]),(0,i.useMemo)((function(){return i.createElement("div",{ref:O,style:h({position:"sticky"},a)},!!t.getAllValidRows().length&&i.createElement("div",{className:"u-marg-bottom--heavy"},i.createElement(p,null)),e.screenSize>d.Z.Medium&&i.createElement(m.v,null),i.createElement("div",{className:"u-marg-top--heavy"},i.createElement(p,null)),e.screenSize>d.Z.Medium&&i.createElement("div",{className:"u-marg-top--heavy"},i.createElement(y.Z,null)))}),[e.screenSize,a.top])}}}]);
@@ -1 +1 @@
1
- "use strict";(("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[978],{26712:function(e,t,n){n.d(t,{e:function(){return o}});var l=n(15671),a=n(43144),i=n(60136),r=n(82963),c=n(61120);var o=function(e){(0,i.Z)(u,e);var t,n,o=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,l=(0,c.Z)(t);if(n){var a=(0,c.Z)(this).constructor;e=Reflect.construct(l,arguments,a)}else e=l.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,l.Z)(this,u),(t=o.call(this)).basketRows=void 0,t.basketRows=e,t}return(0,a.Z)(u,null,[{key:"getLabel",value:function(){return"View/Addon"}}]),u}(n(97112).x)},19370:function(e,t,n){n.r(t),n.d(t,{default:function(){return Q}});var l=n(6058),a=n(26712),i=n(67294),r=n(26793),c=n(89250),o=n(79655),u=n(79478),d=n(13821),m=n(13010),s=n(46409),g=n(19874),E=n(47304),f=n(70885),v=n(89331),p=n(83893),y=n(7832),P=n(76598),h=n(94184),N=n.n(h),A=n(97754),S=function(e){return i.createElement("div",{className:e.className},i.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i.createElement("rect",{width:"24",height:"24",rx:"12",fill:A.Il.Accent}),i.createElement("path",{d:"M7.33333 12L10.6667 15.3333L16.6667 9.33332L15.7267 8.38666L10.6667 13.4467L8.27333 11.06L7.33333 12Z",fill:"white"})))},R=n(64854),T=n(20858),b=n(11830),Z=n(16380),x=n(63351),_=n(30584),w=n(44744),C=n(84544),I=function(e){var t,n,a=e.addon,c=e.className,o=(0,r.$)().t,d=(0,v.WP)().hotel,s=i.useContext(l.hy),g=s.getRowForAddon(a),E=(0,i.useState)(1),p=(0,f.Z)(E,2),y=p[0],h=p[1],I=(0,i.useState)(g?g.getAdultQuantity():1),k=(0,f.Z)(I,2),D=k[0],W=k[1],G=(0,i.useState)(g?g.getChildQuantity():0),L=(0,f.Z)(G,2),O=L[0],M=L[1],H=(0,i.useState)({quantity:1}),Q=(0,f.Z)(H,2),z=Q[0],F=Q[1],U=(0,i.useState)(g?g.getSelectedDate():""),q=(0,f.Z)(U,2),Y=q[0],B=q[1],V=(0,i.useState)(g?g.getSelectedTime():""),j=(0,f.Z)(V,2),$=j[0],J=j[1];(0,i.useEffect)((function(){var e,t,n,l,i,r,c;g?(F(null!==(e=a.availability[g.getSelectedDate()])&&void 0!==e?e:a.availability[a.firstDate]),B(null!==(t=g.getSelectedDate())&&void 0!==t?t:a.firstDate),J(null!==(n=g.getSelectedTime())&&void 0!==n?n:""),h(g.getQuantity()),W(g.getAdultQuantity()),M(g.getChildQuantity())):(F(null!==(l=a.availability[a.firstDate])&&void 0!==l?l:[]),B(a.firstDate),J((null===(i=a.availability[a.firstDate])||void 0===i||null===(r=i.selectorTimes)||void 0===r||null===(c=r[0])||void 0===c?void 0:c.value)||""))}),[]);var K=N()({"--active":!!s.getRowForAddon(a)}),X=[{name:"Date",enabled:(null==g||null===(t=g.getNumberOfAvailableNights)||void 0===t?void 0:t.call(g))>1&&!(null!=g&&g.getAddon().hideDatePicker),element:i.createElement(x.P,{nativeOnMobile:!0,options:a.selectorDates,value:Y,onChange:function(e){var t,n,l,i;t=e,F(a.availability[t]),B(t),J((null===(n=a.availability[t])||void 0===n||null===(l=n.selectorTimes)||void 0===l||null===(i=l[0])||void 0===i?void 0:i.value)||""),a.availability[t].quantity<y&&h(a.availability[t].quantity)},keyName:"value",labelName:"text",className:"u-flex align-items-center"})},{name:"Time",enabled:0!==(null==z||null===(n=z.selectorTimes)||void 0===n?void 0:n.length),element:i.createElement(x.P,{nativeOnMobile:!0,options:(null==z?void 0:z.selectorTimes)||[],value:$,onChange:function(e){J(e)},keyName:"value",labelName:"text",className:"u-flex align-items-center"})},{name:u.W.Step.Addon.Quantity,enabled:(null==z?void 0:z.price)&&(null==z?void 0:z.quantity)>1,element:i.createElement(Z.Z,{number:y,min:1,max:z.quantity,onChange:function(e){h(e)}})},{name:u.W.Step.Date.Adult_plural,enabled:(null==z?void 0:z.adultPrice)&&a.pricingType!==P.EAddonPricingType.PER_ALL_PERSONS&&a.pricingType!==P.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT,element:i.createElement(Z.Z,{number:D,min:0,max:z.quantity-O,onChange:function(e){W(e)}})},{name:u.W.Step.Date.Child_plural,enabled:(null==z?void 0:z.childPrice)&&a.pricingType!==P.EAddonPricingType.PER_ALL_PERSONS&&a.pricingType!==P.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT,element:i.createElement(Z.Z,{number:O,min:0,max:z.quantity-D,onChange:function(e){M(e)}})}],ee=function(){switch(a.pricingType){case P.EAddonPricingType.PER_STAY:return o(u.W.Misc.QTY);case P.EAddonPricingType.PER_PERSON:return o(u.W.Misc.Person);case P.EAddonPricingType.PER_PERSON_OCCUPANCY_PER_NIGHT:case P.EAddonPricingType.PER_PERSON_PER_NIGHT:return o(u.W.Misc.PersonPerNight);case P.EAddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT:case P.EAddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT:return o(u.W.Misc.AdultPerNight);case P.EAddonPricingType.PER_NIGHT:case P.EAddonPricingType.PER_QUANTITY_NAME_PER_NIGHT:return o(u.W.Misc.Night);case P.EAddonPricingType.PER_ROOM_QUANTITY_PER_NIGHT:return o(u.W.Misc.PerRoomDay)}}(),te={};a.image?te.backgroundImage="url('".concat(w.Z.resizeImage(a.image,w.h.Original),"')"):(te.backgroundImage="url('".concat((null==d?void 0:d.logo)&&w.Z.resizeImage(null==d?void 0:d.logo,w.h.Original),"')"),te.backgroundSize="50%",te.backgroundRepeat="no-repeat");var ne=(null==d?void 0:d.fees)&&d.fees.filter((function(e){return e.appliesToAddons})).length>0;return i.createElement("div",{className:N()("u-flex u-flex-flex-start u-rounded addon-card-wrapper",c,K),style:{backgroundColor:A.Il.White}},i.createElement("div",{className:"addon-card-image",style:te}),i.createElement("div",{className:"u-marg-heavy u-marg@m- u-w-100@xl"},i.createElement("div",{className:"u-flex"},i.createElement(m.Z,{bold:!0},a.name),g?i.createElement(S,null):i.createElement(i.Fragment,null)),i.createElement(_.ZP,{color:A.Il.DarkGrey,type:_.yG.Small},i.createElement(b.R,{content:a.description})),i.createElement("div",{className:"addon-card-wrapper--price u-flex u-flex-align-flex-end"},i.createElement("div",{className:"u-w-100"},X.map((function(e){if(e.enabled)return i.createElement("div",{key:e.name,className:"u-flex justify-content-start u-marg-bot u-marg-top"},i.createElement(_.ZP,{className:"u-mw-100",bold:!0},o(e.name)),e.element)}))),i.createElement("div",{className:"addon-card-wrapper--price-action"},i.createElement("div",{className:"u-flex u-flex-direction-column u-flex-align-flex-end",style:{alignSelf:"flex-end"}},i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.Navy,inline:!0},o(u.W.Misc.From)),i.createElement("div",{className:"room-details--content-price flex-align-items-baseline flex-row"},(null==z?void 0:z.price)&&i.createElement(i.Fragment,null,i.createElement("div",{className:"u-flex align-items-end"},i.createElement(m.Z,{size:"large",bold:!0,lineHeight:"1em"},i.createElement(T.Z,{hideDecimals:!0},z.price)),i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.DarkGrey,inline:!0,className:"u-marg-left--light u-clear-font-weight"},"/ ",ee))),(!(null==z||!z.adultPrice)||!(null==z||!z.childPrice))&&i.createElement("h2",{className:"u-marg-none d-flex flex-wrap justify-content-end"},!!z.adultPrice&&i.createElement("div",{className:"d-flex align-items-end flex-row"},i.createElement(m.Z,{size:"large",bold:!0,lineHeight:"1em"},i.createElement(T.Z,null,z.adultPrice)),i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.DarkGrey,inline:!0,className:"u-marg-left--light u-clear-font-weight"},"/"," ",a.pricingType===P.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT?o(u.W.Misc.AdultPerNight):o(u.W.Step.Date.Adult))),!!z.adultPrice&&!!z.childPrice&&i.createElement("br",null),!!z.childPrice&&i.createElement("div",{className:"d-flex align-items-end flex-row"},i.createElement(m.Z,{size:"large",bold:!0,lineHeight:"1em"},i.createElement(T.Z,null,z.childPrice)),i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.DarkGrey,inline:!0,className:"u-marg-left--light u-clear-font-weight"},"/"," ",a.pricingType===P.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT?o(u.W.Misc.ChildPerNight):o(u.W.Step.Date.Child))))),i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.Grey,inline:!0,className:"u-nowrap"},null!=d&&d.enableCreditCardSurcharge||ne?o(u.W.Step.Addon.ExcludingFees):o(u.W.Step.Addon.IncludingFeesAndTaxes)))),i.createElement("div",{className:"u-marg-top--light u-flex justify-content-end u-w-100@l- flex-column flex-lg-row"},g?i.createElement("div",{className:"u-marg-right--light@l u-marg-bottom--light@l-"},i.createElement(R.Z,{onClick:function(){var e=s.basketAddonRows.find((function(e){return e.getAddon().code===a.code}));e&&s.removeBasketAddonRow(e)},textColor:A.Il.White,backgroundColor:A.Il.Navy,wide:!0},o(u.W.Step.Addon.Remove))):i.createElement(i.Fragment,null),i.createElement(R.Z,{onClick:function(){s.setAddonQuantities(a,{quantity:y,adult:D,child:O},Y,$);var e=s.basketAddonRows.find((function(e){return e.getAddon().code===a.code})),t=s.currentBasketRows[0];e&&t&&C.ZP.instance.sendRoomAddonAddToCart(e,y,t.getStartDate(),t.getStartDate())},primary:!0,filled:!0,wide:!0},o(g?u.W.Step.Addon.UpdateCart:u.W.Step.Addon.AddToCart)))))))},k=n(62734),D=n(31972),W=function(){var e=(0,i.useContext)(l.hy),t=(0,i.useContext)(l.Qm),n=(0,v.WP)().hotel,a=e.getAllValidRows(),r=(0,i.useState)(null),c=(0,f.Z)(r,2),o=c[0],u=c[1],d=(0,i.useState)(!1),m=(0,f.Z)(d,2),g=m[0],E=m[1];return i.useEffect((function(){E(!0),p.Z.Addons.findAddons(a,null==n?void 0:n.hotelID).then((function(e){E(!1),u(e)}))}),[t.currentLanguage]),i.createElement("div",{className:"u-flex"},i.createElement(s.i5,null,i.createElement(s.mV,null,g?i.createElement(y.Z,null):null!=o&&o.length?o.map((function(e,t){return i.createElement(I,{key:t,className:"u-marg-bottom",addon:e})})):i.createElement(k.Z,null)),i.createElement(s.f,null,i.createElement(D.Z,null))))},G=n(38279),L=n(40370),O=n(16337),M=n(90292),H=n(95692);function Q(){var e=(0,i.useContext)(l.g7),t=(0,i.useContext)(l.aN).currentStep,n=(0,i.useContext)(l.hy).currentBasketRows,f=(0,c.TH)(),v=(0,r.$)().t,p=(0,O.z)().raise;return(0,i.useEffect)((function(){var e=new a.e(n);p(e)}),[]),i.createElement("div",{className:"container rs-step-addon"},i.createElement(E.V,{step:"Addon"}),i.createElement(L.default,null),i.createElement(s.i5,null,i.createElement(s.mV,null,e.screenSize>M.Z.Medium&&i.createElement(i.Fragment,null,i.createElement(o.rU,{to:{pathname:H.Z.getPreviousStepUrl(t),search:f.search}},i.createElement(d.Z,null)),i.createElement("div",{className:"u-marg-top--light u-marg-bottom--heavy"},i.createElement(m.Z,{bold:!0},v(u.W.Navigation.Steps.Addon))))),e.screenSize>M.Z.Medium&&i.createElement(s.f,null,i.createElement(G.Z,null))),e.screenSize>M.Z.Medium&&i.createElement(g.Z,null),i.createElement(W,null))}}}]);
1
+ "use strict";(("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[978],{26712:function(e,t,l){l.d(t,{e:function(){return o}});var n=l(15671),a=l(43144),i=l(60136),r=l(82963),c=l(61120);var o=function(e){(0,i.Z)(u,e);var t,l,o=(t=u,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,n=(0,c.Z)(t);if(l){var a=(0,c.Z)(this).constructor;e=Reflect.construct(n,arguments,a)}else e=n.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,n.Z)(this,u),(t=o.call(this)).basketRows=void 0,t.basketRows=e,t}return(0,a.Z)(u,null,[{key:"getLabel",value:function(){return"View/Addon"}}]),u}(l(97112).x)},19370:function(e,t,l){l.r(t),l.d(t,{default:function(){return H}});var n=l(4918),a=l(26712),i=l(67294),r=l(26793),c=l(89250),o=l(79655),u=l(79478),d=l(13821),m=l(13010),s=l(46409),g=l(19874),E=l(47304),f=l(70885),p=l(89331),v=l(83893),y=l(7832),P=l(76598),h=l(94184),N=l.n(h),A=l(97754),S=function(e){return i.createElement("div",{className:e.className},i.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},i.createElement("rect",{width:"24",height:"24",rx:"12",fill:A.Il.Accent}),i.createElement("path",{d:"M7.33333 12L10.6667 15.3333L16.6667 9.33332L15.7267 8.38666L10.6667 13.4467L8.27333 11.06L7.33333 12Z",fill:"white"})))},R=l(64854),T=l(20858),b=l(11830),x=l(16380),Z=l(63351),_=l(30584),w=l(44744),C=function(e){var t,l,a=e.addon,c=e.className,o=(0,r.$)().t,d=(0,p.WP)().hotel,s=i.useContext(n.hy),g=s.getRowForAddon(a),E=(0,i.useState)(1),v=(0,f.Z)(E,2),y=v[0],h=v[1],C=(0,i.useState)(g?g.getAdultQuantity():1),I=(0,f.Z)(C,2),k=I[0],D=I[1],W=(0,i.useState)(g?g.getChildQuantity():0),G=(0,f.Z)(W,2),L=G[0],O=G[1],M=(0,i.useState)({quantity:1}),H=(0,f.Z)(M,2),Q=H[0],z=H[1],F=(0,i.useState)(g?g.getSelectedDate():""),U=(0,f.Z)(F,2),q=U[0],Y=U[1],B=(0,i.useState)(g?g.getSelectedTime():""),V=(0,f.Z)(B,2),j=V[0],$=V[1];(0,i.useEffect)((function(){var e,t,l,n,i,r,c;g?(z(null!==(e=a.availability[g.getSelectedDate()])&&void 0!==e?e:a.availability[a.firstDate]),Y(null!==(t=g.getSelectedDate())&&void 0!==t?t:a.firstDate),$(null!==(l=g.getSelectedTime())&&void 0!==l?l:""),h(g.getQuantity()),D(g.getAdultQuantity()),O(g.getChildQuantity())):(z(null!==(n=a.availability[a.firstDate])&&void 0!==n?n:[]),Y(a.firstDate),$((null===(i=a.availability[a.firstDate])||void 0===i||null===(r=i.selectorTimes)||void 0===r||null===(c=r[0])||void 0===c?void 0:c.value)||""))}),[]);var J=N()({"--active":!!s.getRowForAddon(a)}),K=[{name:"Date",enabled:(null==g||null===(t=g.getNumberOfAvailableNights)||void 0===t?void 0:t.call(g))>1&&!(null!=g&&g.getAddon().hideDatePicker),element:i.createElement(Z.P,{nativeOnMobile:!0,options:a.selectorDates,value:q,onChange:function(e){var t,l,n,i;t=e,z(a.availability[t]),Y(t),$((null===(l=a.availability[t])||void 0===l||null===(n=l.selectorTimes)||void 0===n||null===(i=n[0])||void 0===i?void 0:i.value)||""),a.availability[t].quantity<y&&h(a.availability[t].quantity)},keyName:"value",labelName:"text",className:"u-flex align-items-center"})},{name:"Time",enabled:0!==(null==Q||null===(l=Q.selectorTimes)||void 0===l?void 0:l.length),element:i.createElement(Z.P,{nativeOnMobile:!0,options:(null==Q?void 0:Q.selectorTimes)||[],value:j,onChange:function(e){$(e)},keyName:"value",labelName:"text",className:"u-flex align-items-center"})},{name:u.W.Step.Addon.Quantity,enabled:(null==Q?void 0:Q.price)&&(null==Q?void 0:Q.quantity)>1,element:i.createElement(x.Z,{number:y,min:1,max:Q.quantity,onChange:function(e){h(e)}})},{name:u.W.Step.Date.Adult_plural,enabled:(null==Q?void 0:Q.adultPrice)&&a.pricingType!==P.EAddonPricingType.PER_ALL_PERSONS&&a.pricingType!==P.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT,element:i.createElement(x.Z,{number:k,min:0,max:Q.quantity-L,onChange:function(e){D(e)}})},{name:u.W.Step.Date.Child_plural,enabled:(null==Q?void 0:Q.childPrice)&&a.pricingType!==P.EAddonPricingType.PER_ALL_PERSONS&&a.pricingType!==P.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT,element:i.createElement(x.Z,{number:L,min:0,max:Q.quantity-k,onChange:function(e){O(e)}})}],X=function(){switch(a.pricingType){case P.EAddonPricingType.PER_STAY:return o(u.W.Misc.QTY);case P.EAddonPricingType.PER_PERSON:return o(u.W.Misc.Person);case P.EAddonPricingType.PER_PERSON_OCCUPANCY_PER_NIGHT:case P.EAddonPricingType.PER_PERSON_PER_NIGHT:return o(u.W.Misc.PersonPerNight);case P.EAddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT:case P.EAddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT:return o(u.W.Misc.AdultPerNight);case P.EAddonPricingType.PER_NIGHT:case P.EAddonPricingType.PER_QUANTITY_NAME_PER_NIGHT:return o(u.W.Misc.Night);case P.EAddonPricingType.PER_ROOM_QUANTITY_PER_NIGHT:return o(u.W.Misc.PerRoomDay)}}(),ee={};a.image?ee.backgroundImage="url('".concat(w.Z.resizeImage(a.image,w.h.Original),"')"):(ee.backgroundImage="url('".concat((null==d?void 0:d.logo)&&w.Z.resizeImage(null==d?void 0:d.logo,w.h.Original),"')"),ee.backgroundSize="50%",ee.backgroundRepeat="no-repeat");var te=(null==d?void 0:d.fees)&&d.fees.filter((function(e){return e.appliesToAddons})).length>0;return i.createElement("div",{className:N()("u-flex u-flex-flex-start u-rounded addon-card-wrapper",c,J),style:{backgroundColor:A.Il.White}},i.createElement("div",{className:"addon-card-image",style:ee}),i.createElement("div",{className:"u-marg-heavy u-marg@m- u-w-100@xl"},i.createElement("div",{className:"u-flex"},i.createElement(m.Z,{bold:!0},a.name),g?i.createElement(S,null):i.createElement(i.Fragment,null)),i.createElement(_.ZP,{color:A.Il.DarkGrey,type:_.yG.Small},i.createElement(b.R,{content:a.description})),i.createElement("div",{className:"addon-card-wrapper--price u-flex u-flex-align-flex-end"},i.createElement("div",{className:"u-w-100"},K.map((function(e){if(e.enabled)return i.createElement("div",{key:e.name,className:"u-flex justify-content-start u-marg-bot u-marg-top"},i.createElement(_.ZP,{className:"u-mw-100",bold:!0},o(e.name)),e.element)}))),i.createElement("div",{className:"addon-card-wrapper--price-action"},i.createElement("div",{className:"u-flex u-flex-direction-column u-flex-align-flex-end",style:{alignSelf:"flex-end"}},i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.Navy,inline:!0},o(u.W.Misc.From)),i.createElement("div",{className:"room-details--content-price flex-align-items-baseline flex-row"},(null==Q?void 0:Q.price)&&i.createElement(i.Fragment,null,i.createElement("div",{className:"u-flex align-items-end"},i.createElement(m.Z,{size:"large",bold:!0,lineHeight:"1em"},i.createElement(T.Z,{hideDecimals:!0},Q.price)),i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.DarkGrey,inline:!0,className:"u-marg-left--light u-clear-font-weight"},"/ ",X))),(!(null==Q||!Q.adultPrice)||!(null==Q||!Q.childPrice))&&i.createElement("h2",{className:"u-marg-none d-flex flex-wrap justify-content-end"},!!Q.adultPrice&&i.createElement("div",{className:"d-flex align-items-end flex-row"},i.createElement(m.Z,{size:"large",bold:!0,lineHeight:"1em"},i.createElement(T.Z,null,Q.adultPrice)),i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.DarkGrey,inline:!0,className:"u-marg-left--light u-clear-font-weight"},"/"," ",a.pricingType===P.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT?o(u.W.Misc.AdultPerNight):o(u.W.Step.Date.Adult))),!!Q.adultPrice&&!!Q.childPrice&&i.createElement("br",null),!!Q.childPrice&&i.createElement("div",{className:"d-flex align-items-end flex-row"},i.createElement(m.Z,{size:"large",bold:!0,lineHeight:"1em"},i.createElement(T.Z,null,Q.childPrice)),i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.DarkGrey,inline:!0,className:"u-marg-left--light u-clear-font-weight"},"/"," ",a.pricingType===P.EAddonPricingType.PER_ALL_PERSONS_PER_NIGHT?o(u.W.Misc.ChildPerNight):o(u.W.Step.Date.Child))))),i.createElement("div",{className:"u-marg-bottom--light"},i.createElement(_.ZP,{type:_.yG.Small,color:A.Il.Grey,inline:!0,className:"u-nowrap"},null!=d&&d.enableCreditCardSurcharge||te?o(u.W.Step.Addon.ExcludingFees):o(u.W.Step.Addon.IncludingFeesAndTaxes)))),i.createElement("div",{className:"u-marg-top--light u-flex justify-content-end u-w-100@l- flex-column flex-lg-row"},g?i.createElement("div",{className:"u-marg-right--light@l u-marg-bottom--light@l-"},i.createElement(R.Z,{onClick:function(){var e=s.basketAddonRows.find((function(e){return e.getAddon().code===a.code}));e&&s.removeBasketAddonRow(e)},textColor:A.Il.White,backgroundColor:A.Il.Navy,wide:!0},o(u.W.Step.Addon.Remove))):i.createElement(i.Fragment,null),i.createElement(R.Z,{onClick:function(){s.setAddonQuantities(a,{quantity:y,adult:k,child:L},q,j)},primary:!0,filled:!0,wide:!0},o(g?u.W.Step.Addon.UpdateCart:u.W.Step.Addon.AddToCart)))))))},I=l(62734),k=l(31972),D=function(){var e=(0,i.useContext)(n.hy),t=(0,i.useContext)(n.Qm),l=(0,p.WP)().hotel,a=e.getAllValidRows(),r=(0,i.useState)(null),c=(0,f.Z)(r,2),o=c[0],u=c[1],d=(0,i.useState)(!1),m=(0,f.Z)(d,2),g=m[0],E=m[1];return i.useEffect((function(){E(!0),v.Z.Addons.findAddons(a,null==l?void 0:l.hotelID).then((function(e){E(!1),u(e)}))}),[t.currentLanguage]),i.createElement("div",{className:"u-flex"},i.createElement(s.i5,null,i.createElement(s.mV,null,g?i.createElement(y.Z,null):null!=o&&o.length?o.map((function(e,t){return i.createElement(C,{key:t,className:"u-marg-bottom",addon:e})})):i.createElement(I.Z,null)),i.createElement(s.f,null,i.createElement(k.Z,null))))},W=l(38279),G=l(40370),L=l(16337),O=l(90292),M=l(95692);function H(){var e=(0,i.useContext)(n.g7),t=(0,i.useContext)(n.aN).currentStep,l=(0,i.useContext)(n.hy).currentBasketRows,f=(0,c.TH)(),p=(0,r.$)().t,v=(0,L.z)().raise;return(0,i.useEffect)((function(){var e=new a.e(l);v(e)}),[]),i.createElement("div",{className:"container rs-step-addon"},i.createElement(E.V,{step:"Addon"}),i.createElement(G.default,null),i.createElement(s.i5,null,i.createElement(s.mV,null,e.screenSize>O.Z.Medium&&i.createElement(i.Fragment,null,i.createElement(o.rU,{to:{pathname:M.Z.getPreviousStepUrl(t),search:f.search}},i.createElement(d.Z,null)),i.createElement("div",{className:"u-marg-top--light u-marg-bottom--heavy"},i.createElement(m.Z,{bold:!0},p(u.W.Navigation.Steps.Addon))))),e.screenSize>O.Z.Medium&&i.createElement(s.f,null,i.createElement(W.Z,null))),e.screenSize>O.Z.Medium&&i.createElement(g.Z,null),i.createElement(D,null))}}}]);
@@ -21,7 +21,7 @@ const getNumericValueFromCurrencyString = (currencyString) => {
21
21
  return parseFloat(currencyString.replace(/[^\d.]/g, ''));
22
22
  };
23
23
  function runCanChangeCurrencyTets(config) {
24
- (0, test_1.test)(`can change currency on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
24
+ (0, test_1.test)(`can change currency on ${config.url}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
25
25
  yield page.goto(config.url);
26
26
  const currencySelector = page.locator('header.engine-header .be-select');
27
27
  yield (0, test_1.expect)(currencySelector).toBeVisible();
@@ -1 +1 @@
1
- {"version":3,"file":"canChangeCurrency.spec.js","sourceRoot":"/","sources":["e2e/canChangeCurrency.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,wBAAwB,CAAC,CAAC;AAEtD,MAAM,UAAU,GAAG;IACf,0BAA0B;IAC1B,0BAA0B;IAC1B,aAAa;CAChB,CAAC;AAEF,MAAM,iCAAiC,GAAG,CAAC,cAAsB,EAAU,EAAE;IACzE,OAAO,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAAC,MAA0B;IACxD,IAAA,WAAI,EAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,EAAE,KAAiB,EAAE,0CAAZ,EAAE,IAAI,EAAE;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACzE,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAmC,EAAE,CAAC;QAElD,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAE/B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACjE,MAAM,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YAE5C,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,YAAY,GAAG,CAAC,CAAC;YACzE,MAAM,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;YAE7B,uEAAuE;YACvE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3F,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YAErG,MAAM,IAAA,aAAM,EAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAE7D,MAAM,KAAK,GAAG,MAAM,8BAA8B,CAAC,WAAW,EAAE,CAAC;YAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;gBACnE,WAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YAED,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAEpC,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,YAAY,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAEvF,6DAA6D;QAC7D,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;QACxD,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;IAC5D,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanChangeCurrencyTets);\n\nconst currencies = [\n 'IDR - Indonesian Rupiahs',\n 'AUD - Australian Dollars',\n 'EUR - Euros',\n];\n\nconst getNumericValueFromCurrencyString = (currencyString: string): number => {\n return parseFloat(currencyString.replace(/[^\\d.]/g, ''));\n};\n\nfunction runCanChangeCurrencyTets(config: FrontendTestConfig) {\n test(`can change currency on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n const currencySelector = page.locator('header.engine-header .be-select');\n await expect(currencySelector).toBeVisible();\n\n const prices: { [currency: string]: string } = {};\n\n for (const currencyName of currencies) {\n await currencySelector.click();\n\n const currencyOptions = page.locator('.rs-select--suggest-list');\n await expect(currencyOptions).toBeVisible();\n\n const currencyOption = currencyOptions.locator(`text=\"${currencyName}\"`);\n await expect(currencyOption).toBeVisible();\n await currencyOption.click();\n \n // todo: Find a better way to check that the currency values are ready.\n await page.waitForTimeout(1000);\n\n const firstAvailableDate = page.locator('.diji-calendar-month--item.--selectable').first();\n const firstAvailableDatePriceElement = firstAvailableDate.locator('.diji-calendar-month--item-cost');\n\n await expect(firstAvailableDatePriceElement).not.toBeEmpty();\n\n const price = await firstAvailableDatePriceElement.textContent();\n\n if (!price) {\n console.error(`Failed to get price for currency: ${currencyName}`);\n test.fail();\n return;\n }\n\n prices[currencyName] = price.trim();\n\n console.log(`Currency: ${currencyName}, Price: ${price}`);\n }\n\n const idrValue = getNumericValueFromCurrencyString(prices['IDR - Indonesian Rupiahs']);\n const eurValue = getNumericValueFromCurrencyString(prices['EUR - Euros']);\n const audValue = getNumericValueFromCurrencyString(prices['AUD - Australian Dollars']);\n \n // This assumes there's no drastic changes in currency rates!\n expect(idrValue).toBeGreaterThan(audValue); // IDR > AUD\n expect(audValue).toBeGreaterThan(eurValue); // AUD > EUR\n });\n};\n"]}
1
+ {"version":3,"file":"canChangeCurrency.spec.js","sourceRoot":"/","sources":["e2e/canChangeCurrency.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,wBAAwB,CAAC,CAAC;AAEtD,MAAM,UAAU,GAAG;IACf,0BAA0B;IAC1B,0BAA0B;IAC1B,aAAa;CAChB,CAAC;AAEF,MAAM,iCAAiC,GAAG,CAAC,cAAsB,EAAU,EAAE;IACzE,OAAO,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,SAAS,wBAAwB,CAAC,MAA0B;IACxD,IAAA,WAAI,EAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,EAAE,CAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5D,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACzE,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAmC,EAAE,CAAC;QAElD,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE;YACnC,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAE/B,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACjE,MAAM,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;YAE5C,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,YAAY,GAAG,CAAC,CAAC;YACzE,MAAM,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;YAE7B,uEAAuE;YACvE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3F,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YAErG,MAAM,IAAA,aAAM,EAAC,8BAA8B,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAE7D,MAAM,KAAK,GAAG,MAAM,8BAA8B,CAAC,WAAW,EAAE,CAAC;YAEjE,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO,CAAC,KAAK,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;gBACnE,WAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;aACV;YAED,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAEpC,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,YAAY,KAAK,EAAE,CAAC,CAAC;SAC7D;QAED,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,iCAAiC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAEvF,6DAA6D;QAC7D,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;QACxD,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;IAC5D,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanChangeCurrencyTets);\n\nconst currencies = [\n 'IDR - Indonesian Rupiahs',\n 'AUD - Australian Dollars',\n 'EUR - Euros',\n];\n\nconst getNumericValueFromCurrencyString = (currencyString: string): number => {\n return parseFloat(currencyString.replace(/[^\\d.]/g, ''));\n};\n\nfunction runCanChangeCurrencyTets(config: FrontendTestConfig) {\n test(`can change currency on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n const currencySelector = page.locator('header.engine-header .be-select');\n await expect(currencySelector).toBeVisible();\n\n const prices: { [currency: string]: string } = {};\n\n for (const currencyName of currencies) {\n await currencySelector.click();\n\n const currencyOptions = page.locator('.rs-select--suggest-list');\n await expect(currencyOptions).toBeVisible();\n\n const currencyOption = currencyOptions.locator(`text=\"${currencyName}\"`);\n await expect(currencyOption).toBeVisible();\n await currencyOption.click();\n \n // todo: Find a better way to check that the currency values are ready.\n await page.waitForTimeout(1000);\n\n const firstAvailableDate = page.locator('.diji-calendar-month--item.--selectable').first();\n const firstAvailableDatePriceElement = firstAvailableDate.locator('.diji-calendar-month--item-cost');\n\n await expect(firstAvailableDatePriceElement).not.toBeEmpty();\n\n const price = await firstAvailableDatePriceElement.textContent();\n\n if (!price) {\n console.error(`Failed to get price for currency: ${currencyName}`);\n test.fail();\n return;\n }\n\n prices[currencyName] = price.trim();\n\n console.log(`Currency: ${currencyName}, Price: ${price}`);\n }\n\n const idrValue = getNumericValueFromCurrencyString(prices['IDR - Indonesian Rupiahs']);\n const eurValue = getNumericValueFromCurrencyString(prices['EUR - Euros']);\n const audValue = getNumericValueFromCurrencyString(prices['AUD - Australian Dollars']);\n \n // This assumes there's no drastic changes in currency rates!\n expect(idrValue).toBeGreaterThan(audValue); // IDR > AUD\n expect(audValue).toBeGreaterThan(eurValue); // AUD > EUR\n });\n};\n"]}
@@ -14,7 +14,7 @@ const frontendTestData_1 = require("./frontendTestData");
14
14
  const playwrightHelpers_1 = require("./helpers/playwrightHelpers");
15
15
  (0, playwrightHelpers_1.runPlaywrightTestWithConfig)(runCanCheckoutTets);
16
16
  function runCanCheckoutTets(config) {
17
- (0, test_1.test)(`can checkout on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
17
+ (0, test_1.test)(`can checkout on ${config.url}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
18
18
  // This test can take a while to complete if we need to check various different date ranges to find
19
19
  // an available check-in and check-out date, so we need to increase the timeout.
20
20
  test_1.test.setTimeout(120000); // 2 minutes.
@@ -69,8 +69,8 @@ function runCanCheckoutTets(config) {
69
69
  yield page.waitForTimeout(1000);
70
70
  }));
71
71
  }
72
- function selectAvailableDates(page_1) {
73
- return __awaiter(this, arguments, void 0, function* (page, maxRetries = 5) {
72
+ function selectAvailableDates(page, maxRetries = 5) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
74
  for (let attempt = 0; attempt < maxRetries; attempt++) {
75
75
  // Choose the first available check-in date.
76
76
  const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();
@@ -1 +1 @@
1
- {"version":3,"file":"canCheckout.spec.js","sourceRoot":"/","sources":["e2e/canCheckout.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect, Locator } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { CheckoutTestData, defaultCheckoutTestData } from './frontendTestData';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanCheckoutTets);\n\nfunction runCanCheckoutTets(config: FrontendTestConfig) {\n test(`can checkout on ${config.url}`, async ({ page }) => {\n // This test can take a while to complete if we need to check various different date ranges to find\n // an available check-in and check-out date, so we need to increase the timeout.\n test.setTimeout(120000); // 2 minutes.\n await page.goto(config.url);\n\n let foundAvailableDates = false;\n\n await test.step('Select available dates', async () => {\n foundAvailableDates = await selectAvailableDates(page);\n if (!foundAvailableDates) {\n console.error('Unable to find available dates after maximum retries.');\n test.fail();\n return;\n }\n });\n\n await test.step('Proceed to confirmation step', async () => {\n await proceedToConfirmationStep(page);\n });\n\n if (!config.proceedWithPayment) {\n console.log('Test completed up to the confirmation step.');\n return;\n } else {\n console.log('Continuing to payment step.');\n }\n\n await test.step('Fill contact information', async () => {\n await fillContactInfo(page, defaultCheckoutTestData);\n });\n\n await test.step('Fill payment information', async () => {\n await fillPaymentInformation(page, defaultCheckoutTestData);\n });\n\n await test.step('Check Privacy Policy agreement', async () => {\n // Locate the hidden checkbox using the label text\n const hiddenCheckbox = page.locator('label:has-text(\"I have understood and agree to the Booking Conditions\") input[type=\"checkbox\"]');\n\n // We can't click the actual checkbox because it's hidden (width and height of 0), so we need to find the\n // fake checkbox and click that instead.\n const fakeCheckbox = hiddenCheckbox.locator('~ span');\n if ((await fakeCheckbox.count()) === 0) {\n console.log('Privacy Policy checkbox does not exist. Skipping step.');\n return;\n }\n\n // Can't use the normal Playwright way of clicking something, I think it's because it's the ::before pseudo-element\n // that's actually clickable.\n await fakeCheckbox.evaluate((element: HTMLElement) => element.click());\n });\n\n await test.step('Submit the reservation', async () => {\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await confirmReservationButton.click();\n });\n\n await test.step('Verify booking confirmation', async () => {\n await verifyBookingConfirmation(page, defaultCheckoutTestData);\n });\n\n await page.waitForTimeout(1000);\n });\n}\n\nasync function selectAvailableDates(page: any, maxRetries: number = 5): Promise<boolean> {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n // Choose the first available check-in date.\n const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();\n await expect(checkInDateElement).toBeVisible();\n await checkInDateElement.click();\n\n let checkOutDateElement: Locator;\n if (attempt === maxRetries - 1) {\n // If this is the last attempt, try a 1-night stay (this has a higher success rate).\n checkOutDateElement = page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').first();\n } else {\n // Choose a random available check-out date.\n const checkOutDateElements = await page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').all();\n const randomIndex = Math.floor(Math.random() * checkOutDateElements.length);\n checkOutDateElement = checkOutDateElements[randomIndex];\n }\n\n await expect(checkOutDateElement).toBeVisible();\n await checkOutDateElement.click();\n\n // TODO: Instead of waiting for timeout, wait for the loading indicators on the other dates to disappear.\n // Context: After choosing checkout date, the loading indicators appear for the dates following the checkout\n // date. If we click 'Check Availability', we seem to briefly see an error message. This doesn't actually\n // make the tests fail though. Keeping this in here in case it's indicative of an issue with RoomStay itself.\n // The error is an \"Oh no, something went wrong\" message and shows the select room bar without any dates in it.\n // The error quickly goes away though.\n await page.waitForTimeout(1000);\n\n // Click the 'Check Availability' button.\n const checkAvailabilityButton = page.getByRole('button', { name: 'Check Availability' });\n await expect(checkAvailabilityButton).not.toBeDisabled();\n await checkAvailabilityButton.click();\n\n // Check for error message.\n const errorMessage = await page.waitForSelector('text=Please check your dates and', { timeout: 5000 }).catch(() => null);\n if (errorMessage) {\n console.log(`Error message found on attempt ${attempt + 1}. Retrying with different dates.`);\n const newSearchButton = page.getByRole('button', { name: 'New Search' });\n await expect(newSearchButton).toBeVisible();\n await newSearchButton.click();\n } else {\n return true;\n }\n }\n return false;\n}\n\nasync function proceedToConfirmationStep(page: any) {\n // Click the 'View Rates' button.\n const viewRatesNowButton = page.getByRole('button', { name: 'View rates now' }).first();\n await expect(viewRatesNowButton).toBeVisible();\n await expect(viewRatesNowButton).not.toBeDisabled();\n await viewRatesNowButton.click();\n\n // Click the first 'Book Now' button.\n const firstBookNowButton = page.getByRole('button', { name: 'Book Now' }).first();\n await expect(firstBookNowButton).toBeVisible();\n await firstBookNowButton.click();\n\n // Confirm that the 'Added xx' toast notification is visible.\n const addedRoomNotification = page.locator('.c-notification__inner');\n await expect(addedRoomNotification).toBeVisible();\n await expect(addedRoomNotification).toContainText('Added');\n\n // A bit hacky... Need a better way to check the current step.\n try {\n const isAddonsStep = await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Add-Ons\")', { timeout: 1000 });\n if (isAddonsStep) {\n const nextButton = page.getByRole('button', { name: 'Next Step' }).first();\n await expect(nextButton).toBeVisible();\n await nextButton.click();\n }\n } catch (error) {\n console.log('Add-ons step not found, continuing.');\n }\n\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await expect(confirmReservationButton).toHaveText('Confirm Reservation');\n}\n\nasync function fillContactInfo(page: any, data: CheckoutTestData) {\n // Fill Contact Info fields\n await page.fill('input[name=\"userProfiles.0.Forename\"]', data.firstName);\n await page.fill('input[name=\"userProfiles.0.Surname\"]', data.lastName);\n await page.fill('input[name=\"userProfiles.0.Email\"]', data.email);\n await page.fill('input[name=\"userProfiles.0.Phone\"]', data.phone);\n await page.fill('input[name=\"userProfiles.0.Address\"]', data.address);\n await page.fill('input[name=\"userProfiles.0.City\"]', data.city);\n await page.fill('input[name=\"userProfiles.0.PostCode\"]', data.zipCode);\n\n // Country selector\n await page.fill('.rs-enhanced-country-field--search input', data.country);\n await page.waitForSelector('.rs-enhanced-country-field--suggest-list-country', { state: 'visible' });\n await page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...\n}\n\nasync function fillPaymentInformation(page: any, data: CheckoutTestData) {\n // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.\n\n const cardNumberFrame = await (await page.waitForSelector('iframe[title=\"Secure card number input frame\"]')).contentFrame();\n if (cardNumberFrame) {\n await cardNumberFrame.fill('input[aria-label=\"Card Number Input\"]', data.cardNumber);\n }\n\n const cardExpiryFrame = await (await page.waitForSelector('iframe[title=\"Secure card expiration date input frame\"]')).contentFrame();\n if (cardExpiryFrame) {\n await cardExpiryFrame.fill('input[aria-label=\"Card expiration date\"]', data.cardExpiry);\n }\n\n const cardCvvFrame = await (await page.waitForSelector('iframe[title=\"Secure card security code input frame\"]')).contentFrame();\n if (cardCvvFrame) {\n await cardCvvFrame.fill('input[aria-label=\"Card Security Code\"]', data.cardCVC);\n }\n\n const cardNameFrame = await (await page.waitForSelector('iframe[title=\"Secure text input frame\"]')).contentFrame();\n if (cardNameFrame) {\n await cardNameFrame.fill('input[aria-label=\"Text input\"]', `${data.firstName} ${data.lastName}`);\n }\n}\n\nasync function verifyBookingConfirmation(page: any, data: CheckoutTestData) {\n // We should now be on the 'Thanks' step.\n await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Thanks\")', { timeout: 3000 });\n\n // There should be a message thanking us for our booking.\n const thankYouMessage = page.locator('h3:has-text(\"Thank you\")');\n await expect(thankYouMessage).toBeVisible();\n\n // Click the 'More Details' button to show a modal with our booking details.\n const moreDetailsButton = page.getByRole('button', { name: 'More Details' });\n await expect(moreDetailsButton).toBeVisible();\n await moreDetailsButton.click();\n\n const modal = page.locator('div[class*=\"roomstay-modal\"]').first();\n await expect(modal).toBeVisible();\n\n // The modal should contain our name and email address.\n await expect(modal.locator(`text=${data.firstName} ${data.lastName}`)).toBeVisible();\n await expect(modal.locator(`text=${data.email}`)).toBeVisible();\n}"]}
1
+ {"version":3,"file":"canCheckout.spec.js","sourceRoot":"/","sources":["e2e/canCheckout.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect, Locator } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { CheckoutTestData, defaultCheckoutTestData } from './frontendTestData';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanCheckoutTets);\n\nfunction runCanCheckoutTets(config: FrontendTestConfig) {\n test(`can checkout on ${config.url}`, async ({ page }) => {\n // This test can take a while to complete if we need to check various different date ranges to find\n // an available check-in and check-out date, so we need to increase the timeout.\n test.setTimeout(120000); // 2 minutes.\n await page.goto(config.url);\n\n let foundAvailableDates = false;\n\n await test.step('Select available dates', async () => {\n foundAvailableDates = await selectAvailableDates(page);\n if (!foundAvailableDates) {\n console.error('Unable to find available dates after maximum retries.');\n test.fail();\n return;\n }\n });\n\n await test.step('Proceed to confirmation step', async () => {\n await proceedToConfirmationStep(page);\n });\n\n if (!config.proceedWithPayment) {\n console.log('Test completed up to the confirmation step.');\n return;\n } else {\n console.log('Continuing to payment step.');\n }\n\n await test.step('Fill contact information', async () => {\n await fillContactInfo(page, defaultCheckoutTestData);\n });\n\n await test.step('Fill payment information', async () => {\n await fillPaymentInformation(page, defaultCheckoutTestData);\n });\n\n await test.step('Check Privacy Policy agreement', async () => {\n // Locate the hidden checkbox using the label text\n const hiddenCheckbox = page.locator('label:has-text(\"I have understood and agree to the Booking Conditions\") input[type=\"checkbox\"]');\n\n // We can't click the actual checkbox because it's hidden (width and height of 0), so we need to find the\n // fake checkbox and click that instead.\n const fakeCheckbox = hiddenCheckbox.locator('~ span');\n if ((await fakeCheckbox.count()) === 0) {\n console.log('Privacy Policy checkbox does not exist. Skipping step.');\n return;\n }\n\n // Can't use the normal Playwright way of clicking something, I think it's because it's the ::before pseudo-element\n // that's actually clickable.\n await fakeCheckbox.evaluate((element: HTMLElement) => element.click());\n });\n\n await test.step('Submit the reservation', async () => {\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await confirmReservationButton.click();\n });\n\n await test.step('Verify booking confirmation', async () => {\n await verifyBookingConfirmation(page, defaultCheckoutTestData);\n });\n\n await page.waitForTimeout(1000);\n });\n}\n\nasync function selectAvailableDates(page: any, maxRetries: number = 5): Promise<boolean> {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n // Choose the first available check-in date.\n const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();\n await expect(checkInDateElement).toBeVisible();\n await checkInDateElement.click();\n\n let checkOutDateElement: Locator;\n if (attempt === maxRetries - 1) {\n // If this is the last attempt, try a 1-night stay (this has a higher success rate).\n checkOutDateElement = page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').first();\n } else {\n // Choose a random available check-out date.\n const checkOutDateElements = await page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').all();\n const randomIndex = Math.floor(Math.random() * checkOutDateElements.length);\n checkOutDateElement = checkOutDateElements[randomIndex];\n }\n\n await expect(checkOutDateElement).toBeVisible();\n await checkOutDateElement.click();\n\n // TODO: Instead of waiting for timeout, wait for the loading indicators on the other dates to disappear.\n // Context: After choosing checkout date, the loading indicators appear for the dates following the checkout\n // date. If we click 'Check Availability', we seem to briefly see an error message. This doesn't actually\n // make the tests fail though. Keeping this in here in case it's indicative of an issue with RoomStay itself.\n // The error is an \"Oh no, something went wrong\" message and shows the select room bar without any dates in it.\n // The error quickly goes away though.\n await page.waitForTimeout(1000);\n\n // Click the 'Check Availability' button.\n const checkAvailabilityButton = page.getByRole('button', { name: 'Check Availability' });\n await expect(checkAvailabilityButton).not.toBeDisabled();\n await checkAvailabilityButton.click();\n\n // Check for error message.\n const errorMessage = await page.waitForSelector('text=Please check your dates and', { timeout: 5000 }).catch(() => null);\n if (errorMessage) {\n console.log(`Error message found on attempt ${attempt + 1}. Retrying with different dates.`);\n const newSearchButton = page.getByRole('button', { name: 'New Search' });\n await expect(newSearchButton).toBeVisible();\n await newSearchButton.click();\n } else {\n return true;\n }\n }\n return false;\n}\n\nasync function proceedToConfirmationStep(page: any) {\n // Click the 'View Rates' button.\n const viewRatesNowButton = page.getByRole('button', { name: 'View rates now' }).first();\n await expect(viewRatesNowButton).toBeVisible();\n await expect(viewRatesNowButton).not.toBeDisabled();\n await viewRatesNowButton.click();\n\n // Click the first 'Book Now' button.\n const firstBookNowButton = page.getByRole('button', { name: 'Book Now' }).first();\n await expect(firstBookNowButton).toBeVisible();\n await firstBookNowButton.click();\n\n // Confirm that the 'Added xx' toast notification is visible.\n const addedRoomNotification = page.locator('.c-notification__inner');\n await expect(addedRoomNotification).toBeVisible();\n await expect(addedRoomNotification).toContainText('Added');\n\n // A bit hacky... Need a better way to check the current step.\n try {\n const isAddonsStep = await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Add-Ons\")', { timeout: 1000 });\n if (isAddonsStep) {\n const nextButton = page.getByRole('button', { name: 'Next Step' }).first();\n await expect(nextButton).toBeVisible();\n await nextButton.click();\n }\n } catch (error) {\n console.log('Add-ons step not found, continuing.');\n }\n\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await expect(confirmReservationButton).toHaveText('Confirm Reservation');\n}\n\nasync function fillContactInfo(page: any, data: CheckoutTestData) {\n // Fill Contact Info fields\n await page.fill('input[name=\"userProfiles.0.Forename\"]', data.firstName);\n await page.fill('input[name=\"userProfiles.0.Surname\"]', data.lastName);\n await page.fill('input[name=\"userProfiles.0.Email\"]', data.email);\n await page.fill('input[name=\"userProfiles.0.Phone\"]', data.phone);\n await page.fill('input[name=\"userProfiles.0.Address\"]', data.address);\n await page.fill('input[name=\"userProfiles.0.City\"]', data.city);\n await page.fill('input[name=\"userProfiles.0.PostCode\"]', data.zipCode);\n\n // Country selector\n await page.fill('.rs-enhanced-country-field--search input', data.country);\n await page.waitForSelector('.rs-enhanced-country-field--suggest-list-country', { state: 'visible' });\n await page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...\n}\n\nasync function fillPaymentInformation(page: any, data: CheckoutTestData) {\n // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.\n\n const cardNumberFrame = await (await page.waitForSelector('iframe[title=\"Secure card number input frame\"]')).contentFrame();\n if (cardNumberFrame) {\n await cardNumberFrame.fill('input[aria-label=\"Card Number Input\"]', data.cardNumber);\n }\n\n const cardExpiryFrame = await (await page.waitForSelector('iframe[title=\"Secure card expiration date input frame\"]')).contentFrame();\n if (cardExpiryFrame) {\n await cardExpiryFrame.fill('input[aria-label=\"Card expiration date\"]', data.cardExpiry);\n }\n\n const cardCvvFrame = await (await page.waitForSelector('iframe[title=\"Secure card security code input frame\"]')).contentFrame();\n if (cardCvvFrame) {\n await cardCvvFrame.fill('input[aria-label=\"Card Security Code\"]', data.cardCVC);\n }\n\n const cardNameFrame = await (await page.waitForSelector('iframe[title=\"Secure text input frame\"]')).contentFrame();\n if (cardNameFrame) {\n await cardNameFrame.fill('input[aria-label=\"Text input\"]', `${data.firstName} ${data.lastName}`);\n }\n}\n\nasync function verifyBookingConfirmation(page: any, data: CheckoutTestData) {\n // We should now be on the 'Thanks' step.\n await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Thanks\")', { timeout: 3000 });\n\n // There should be a message thanking us for our booking.\n const thankYouMessage = page.locator('h3:has-text(\"Thank you\")');\n await expect(thankYouMessage).toBeVisible();\n\n // Click the 'More Details' button to show a modal with our booking details.\n const moreDetailsButton = page.getByRole('button', { name: 'More Details' });\n await expect(moreDetailsButton).toBeVisible();\n await moreDetailsButton.click();\n\n const modal = page.locator('div[class*=\"roomstay-modal\"]').first();\n await expect(modal).toBeVisible();\n\n // The modal should contain our name and email address.\n await expect(modal.locator(`text=${data.firstName} ${data.lastName}`)).toBeVisible();\n await expect(modal.locator(`text=${data.email}`)).toBeVisible();\n}"]}
@@ -13,7 +13,7 @@ const test_1 = require("@playwright/test");
13
13
  const playwrightHelpers_1 = require("./helpers/playwrightHelpers");
14
14
  (0, playwrightHelpers_1.runPlaywrightTestWithConfig)(runCanViewReservationsPageTest);
15
15
  function runCanViewReservationsPageTest(config) {
16
- (0, test_1.test)(`can view find reservations page on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
16
+ (0, test_1.test)(`can view find reservations page on ${config.url}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
17
17
  yield page.goto(config.url);
18
18
  // Click through to the 'Hotel info' page.
19
19
  const findReservationsLink = page.getByRole('link', { name: 'Find reservations' });
@@ -1 +1 @@
1
- {"version":3,"file":"canViewFindReservationsPage.spec.js","sourceRoot":"/","sources":["e2e/canViewFindReservationsPage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,8BAA8B,CAAC,CAAC;AAE5D,SAAS,8BAA8B,CAAC,MAA0B;IAC9D,IAAA,WAAI,EAAC,sCAAsC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAiB,EAAE,0CAAZ,EAAE,IAAI,EAAE;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,0CAA0C;QAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACnF,MAAM,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAEnC,qDAAqD;QACrD,MAAM,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAChG,MAAM,IAAA,aAAM,EAAC,0BAA0B,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvD,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACrF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;QAElD,oCAAoC;QAEpC,uDAAuD;QACvD,MAAM,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACvG,MAAM,IAAA,aAAM,EAAC,6BAA6B,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,6BAA6B,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanViewReservationsPageTest);\n\nfunction runCanViewReservationsPageTest(config: FrontendTestConfig) {\n test(`can view find reservations page on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n // Click through to the 'Hotel info' page.\n const findReservationsLink = page.getByRole('link', { name: 'Find reservations' });\n await expect(findReservationsLink).toBeVisible();\n await findReservationsLink.click();\n \n // Verify that the expected elements are on the page.\n const findYourReservationHeading = page.getByRole('heading', { name: 'Find your reservation' });\n await expect(findYourReservationHeading).toBeVisible();\n \n const findReservationButton = page.getByRole('button', { name: 'Find Reservation' });\n await expect(findReservationButton).toBeVisible();\n \n // todo: Maybe test form validation?\n \n // Verify that we can go back to the main booking page.\n const backToCheckAvailabilityButton = page.getByRole('button', { name: 'Back to check availability' });\n await expect(backToCheckAvailabilityButton).toBeVisible();\n await backToCheckAvailabilityButton.click();\n const selectYourDateHeading = page.getByRole('heading', { name: 'Select your date' });\n await expect(selectYourDateHeading).toBeVisible();\n });\n};\n"]}
1
+ {"version":3,"file":"canViewFindReservationsPage.spec.js","sourceRoot":"/","sources":["e2e/canViewFindReservationsPage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,8BAA8B,CAAC,CAAC;AAE5D,SAAS,8BAA8B,CAAC,MAA0B;IAC9D,IAAA,WAAI,EAAC,sCAAsC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACxE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,0CAA0C;QAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACnF,MAAM,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAEnC,qDAAqD;QACrD,MAAM,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAChG,MAAM,IAAA,aAAM,EAAC,0BAA0B,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvD,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACrF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;QAElD,oCAAoC;QAEpC,uDAAuD;QACvD,MAAM,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACvG,MAAM,IAAA,aAAM,EAAC,6BAA6B,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,6BAA6B,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanViewReservationsPageTest);\n\nfunction runCanViewReservationsPageTest(config: FrontendTestConfig) {\n test(`can view find reservations page on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n // Click through to the 'Hotel info' page.\n const findReservationsLink = page.getByRole('link', { name: 'Find reservations' });\n await expect(findReservationsLink).toBeVisible();\n await findReservationsLink.click();\n \n // Verify that the expected elements are on the page.\n const findYourReservationHeading = page.getByRole('heading', { name: 'Find your reservation' });\n await expect(findYourReservationHeading).toBeVisible();\n \n const findReservationButton = page.getByRole('button', { name: 'Find Reservation' });\n await expect(findReservationButton).toBeVisible();\n \n // todo: Maybe test form validation?\n \n // Verify that we can go back to the main booking page.\n const backToCheckAvailabilityButton = page.getByRole('button', { name: 'Back to check availability' });\n await expect(backToCheckAvailabilityButton).toBeVisible();\n await backToCheckAvailabilityButton.click();\n const selectYourDateHeading = page.getByRole('heading', { name: 'Select your date' });\n await expect(selectYourDateHeading).toBeVisible();\n });\n};\n"]}
@@ -13,7 +13,7 @@ const test_1 = require("@playwright/test");
13
13
  const playwrightHelpers_1 = require("./helpers/playwrightHelpers");
14
14
  (0, playwrightHelpers_1.runPlaywrightTestWithConfig)(runCanViewHotelInfoPageTest);
15
15
  function runCanViewHotelInfoPageTest(config) {
16
- (0, test_1.test)(`can view hotel info on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
16
+ (0, test_1.test)(`can view hotel info on ${config.url}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
17
17
  yield page.goto(config.url);
18
18
  // Click through to the 'Hotel info' page.
19
19
  const hotelInfoLink = page.getByRole('link', { name: 'Hotel info' });
@@ -1 +1 @@
1
- {"version":3,"file":"canViewHotelnfoPage.spec.js","sourceRoot":"/","sources":["e2e/canViewHotelnfoPage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,2BAA2B,CAAC,CAAC;AAEzD,SAAS,2BAA2B,CAAC,MAA0B;IAC3D,IAAA,WAAI,EAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,EAAE,KAAiB,EAAE,0CAAZ,EAAE,IAAI,EAAE;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,0CAA0C;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACrE,MAAM,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAE5B,mDAAmD;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC5D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAChC,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAElC,0DAA0D;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClE,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAEpC,gFAAgF;QAChF,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig, testConfigs } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanViewHotelInfoPageTest);\n\nfunction runCanViewHotelInfoPageTest(config: FrontendTestConfig) {\n test(`can view hotel info on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n // Click through to the 'Hotel info' page.\n const hotelInfoLink = page.getByRole('link', { name: 'Hotel info' });\n await expect(hotelInfoLink).toBeVisible();\n await hotelInfoLink.click();\n \n // Check that header and subheader are on the page.\n const header = page.locator('h1.c-masthead__header');\n const subheader = page.locator('h2.c-masthead__sub-header');\n expect(header).toBeVisible();\n expect(header).not.toBeEmpty();\n expect(subheader).toBeVisible();\n expect(subheader).not.toBeEmpty();\n \n // Check that the 'Powered by roomstay.io' message exists.\n const poweredByMessage = page.getByText('Powered by Roomstay.io');\n await expect(poweredByMessage).toBeVisible();\n \n // Check that the 'Book Now' button exists.\n const bookNowButton = page.getByRole('button', { name: 'Book Now' });\n expect(bookNowButton).toBeVisible();\n \n // Check that clicking the 'Book Now' button takes the user to the booking page.\n await bookNowButton.click();\n const selectYourDateHeading = page.getByRole('heading', { name: 'Select your date' });\n await expect(selectYourDateHeading).toBeVisible();\n });\n};\n"]}
1
+ {"version":3,"file":"canViewHotelnfoPage.spec.js","sourceRoot":"/","sources":["e2e/canViewHotelnfoPage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAgD;AAEhD,mEAA0E;AAE1E,IAAA,+CAA2B,EAAC,2BAA2B,CAAC,CAAC;AAEzD,SAAS,2BAA2B,CAAC,MAA0B;IAC3D,IAAA,WAAI,EAAC,0BAA0B,MAAM,CAAC,GAAG,EAAE,EAAE,CAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC5D,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5B,0CAA0C;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACrE,MAAM,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAE5B,mDAAmD;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC5D,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAChC,IAAA,aAAM,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAElC,0DAA0D;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClE,MAAM,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7C,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,IAAA,aAAM,EAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAEpC,gFAAgF;QAChF,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACtF,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAAA,CAAC","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { FrontendTestConfig, testConfigs } from './frontendTestConfigs';\nimport { runPlaywrightTestWithConfig } from './helpers/playwrightHelpers';\n\nrunPlaywrightTestWithConfig(runCanViewHotelInfoPageTest);\n\nfunction runCanViewHotelInfoPageTest(config: FrontendTestConfig) {\n test(`can view hotel info on ${config.url}`, async ({ page }) => {\n await page.goto(config.url);\n\n // Click through to the 'Hotel info' page.\n const hotelInfoLink = page.getByRole('link', { name: 'Hotel info' });\n await expect(hotelInfoLink).toBeVisible();\n await hotelInfoLink.click();\n \n // Check that header and subheader are on the page.\n const header = page.locator('h1.c-masthead__header');\n const subheader = page.locator('h2.c-masthead__sub-header');\n expect(header).toBeVisible();\n expect(header).not.toBeEmpty();\n expect(subheader).toBeVisible();\n expect(subheader).not.toBeEmpty();\n \n // Check that the 'Powered by roomstay.io' message exists.\n const poweredByMessage = page.getByText('Powered by Roomstay.io');\n await expect(poweredByMessage).toBeVisible();\n \n // Check that the 'Book Now' button exists.\n const bookNowButton = page.getByRole('button', { name: 'Book Now' });\n expect(bookNowButton).toBeVisible();\n \n // Check that clicking the 'Book Now' button takes the user to the booking page.\n await bookNowButton.click();\n const selectYourDateHeading = page.getByRole('heading', { name: 'Select your date' });\n await expect(selectYourDateHeading).toBeVisible();\n });\n};\n"]}
@@ -14,7 +14,7 @@ const checkoutHelpers_1 = require("./helpers/checkoutHelpers");
14
14
  const checkoutTestData_1 = require("./data/checkoutTestData");
15
15
  // This test just runs on the Frontend Demo, as it needs to actually be able to check out with fake payment details.
16
16
  const url = 'http://localhost:9000/';
17
- (0, test_1.test)(`can checkout on ${url}, and then go back and checkout again.`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ page }) {
17
+ (0, test_1.test)(`can checkout on ${url}, and then go back and checkout again.`, ({ page }) => __awaiter(void 0, void 0, void 0, function* () {
18
18
  // This test can take a while to complete if we need to check various different date ranges to find
19
19
  // an available check-in and check-out date, so we need to increase the timeout.
20
20
  test_1.test.setTimeout(60000); // 1 minute.
@@ -1 +1 @@
1
- {"version":3,"file":"goBackAndCheckoutAgain.spec.js","sourceRoot":"/","sources":["e2e/goBackAndCheckoutAgain.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { fillContactInfo, fillPaymentInformation, proceedToConfirmationStep, selectAvailableDates, submitBookingReservation, verifyBookingConfirmation } from './helpers/checkoutHelpers';\nimport { checkoutTestDataDefault, checkoutTestDataSecondary } from './data/checkoutTestData';\n\n// This test just runs on the Frontend Demo, as it needs to actually be able to check out with fake payment details.\nconst url = 'http://localhost:9000/';\n\ntest(`can checkout on ${url}, and then go back and checkout again.`, async ({ page }) => {\n // This test can take a while to complete if we need to check various different date ranges to find\n // an available check-in and check-out date, so we need to increase the timeout.\n test.setTimeout(60000); // 1 minute.\n await page.goto(url);\n\n await test.step('Select available dates', async () => {\n const foundAvailableDates = await selectAvailableDates(page);\n if (!foundAvailableDates) {\n console.error('Unable to find available dates after maximum retries.');\n test.fail();\n return;\n }\n });\n\n await test.step('Proceed to confirmation step', async () => {\n await proceedToConfirmationStep(page);\n });\n\n await test.step('Fill contact and payment information', async () => {\n await fillContactInfo(page, checkoutTestDataDefault);\n await fillPaymentInformation(page, checkoutTestDataDefault);\n });\n\n await test.step('Submit the reservation', async () => {\n await submitBookingReservation(page);\n });\n\n await test.step('Verify booking confirmation', async () => {\n await verifyBookingConfirmation(page, checkoutTestDataDefault);\n });\n\n // Now that we've checked out, we want to test that we can navigate back to a previous step\n await test.step('Go back to Choose Accommodation step.', async () => {\n // Clicking any step after 'Choose Accommodation' should take us back to 'Choose Accommodation'.\n // Let's click on the Confirmation step.\n const confirmationStepLink = page.locator('.step-selector__item p.text-body:has-text(\"Confirmation\")');\n await expect(confirmationStepLink).toBeVisible();\n await confirmationStepLink.click({ force: true }); // Force because of the <a> element which intercepts the click.\n\n // We should now be on the 'Choose Accommodation step'.\n const currentStep = page.locator('.step-selector__item.is-current');\n await expect(currentStep).toContainText('Choose Accommodation');\n });\n\n await test.step('Try to click back to the Thanks step (this should be prevented).', async () => {\n const thanksStepContainer = page.locator('.step-selector__item:has(p.text-body:has-text(\"Thanks\"))');\n const thanksStepAnchor = thanksStepContainer.locator('a');\n\n // The step container should have the 'not-allowed' cursor.\n const cursorStyle = await thanksStepContainer.evaluate((element) => {\n return window.getComputedStyle(element).cursor;\n });\n expect(cursorStyle).toBe('not-allowed');\n\n // This link shouldn't be clickable.\n await expect(thanksStepAnchor).not.toBeVisible();\n });\n\n await test.step('Check out again, using the same dates but with different contact information.', async () => {\n await proceedToConfirmationStep(page);\n await fillContactInfo(page, checkoutTestDataSecondary);\n await fillPaymentInformation(page, checkoutTestDataSecondary);\n await submitBookingReservation(page);\n await verifyBookingConfirmation(page, checkoutTestDataSecondary);\n });\n});"]}
1
+ {"version":3,"file":"goBackAndCheckoutAgain.spec.js","sourceRoot":"/","sources":["e2e/goBackAndCheckoutAgain.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { test, expect } from '@playwright/test';\nimport { fillContactInfo, fillPaymentInformation, proceedToConfirmationStep, selectAvailableDates, submitBookingReservation, verifyBookingConfirmation } from './helpers/checkoutHelpers';\nimport { checkoutTestDataDefault, checkoutTestDataSecondary } from './data/checkoutTestData';\n\n// This test just runs on the Frontend Demo, as it needs to actually be able to check out with fake payment details.\nconst url = 'http://localhost:9000/';\n\ntest(`can checkout on ${url}, and then go back and checkout again.`, async ({ page }) => {\n // This test can take a while to complete if we need to check various different date ranges to find\n // an available check-in and check-out date, so we need to increase the timeout.\n test.setTimeout(60000); // 1 minute.\n await page.goto(url);\n\n await test.step('Select available dates', async () => {\n const foundAvailableDates = await selectAvailableDates(page);\n if (!foundAvailableDates) {\n console.error('Unable to find available dates after maximum retries.');\n test.fail();\n return;\n }\n });\n\n await test.step('Proceed to confirmation step', async () => {\n await proceedToConfirmationStep(page);\n });\n\n await test.step('Fill contact and payment information', async () => {\n await fillContactInfo(page, checkoutTestDataDefault);\n await fillPaymentInformation(page, checkoutTestDataDefault);\n });\n\n await test.step('Submit the reservation', async () => {\n await submitBookingReservation(page);\n });\n\n await test.step('Verify booking confirmation', async () => {\n await verifyBookingConfirmation(page, checkoutTestDataDefault);\n });\n\n // Now that we've checked out, we want to test that we can navigate back to a previous step\n await test.step('Go back to Choose Accommodation step.', async () => {\n // Clicking any step after 'Choose Accommodation' should take us back to 'Choose Accommodation'.\n // Let's click on the Confirmation step.\n const confirmationStepLink = page.locator('.step-selector__item p.text-body:has-text(\"Confirmation\")');\n await expect(confirmationStepLink).toBeVisible();\n await confirmationStepLink.click({ force: true }); // Force because of the <a> element which intercepts the click.\n\n // We should now be on the 'Choose Accommodation step'.\n const currentStep = page.locator('.step-selector__item.is-current');\n await expect(currentStep).toContainText('Choose Accommodation');\n });\n\n await test.step('Try to click back to the Thanks step (this should be prevented).', async () => {\n const thanksStepContainer = page.locator('.step-selector__item:has(p.text-body:has-text(\"Thanks\"))');\n const thanksStepAnchor = thanksStepContainer.locator('a');\n\n // The step container should have the 'not-allowed' cursor.\n const cursorStyle = await thanksStepContainer.evaluate((element) => {\n return window.getComputedStyle(element).cursor;\n });\n expect(cursorStyle).toBe('not-allowed');\n\n // This link shouldn't be clickable.\n await expect(thanksStepAnchor).not.toBeVisible();\n });\n\n await test.step('Check out again, using the same dates but with different contact information.', async () => {\n await proceedToConfirmationStep(page);\n await fillContactInfo(page, checkoutTestDataSecondary);\n await fillPaymentInformation(page, checkoutTestDataSecondary);\n await submitBookingReservation(page);\n await verifyBookingConfirmation(page, checkoutTestDataSecondary);\n });\n});"]}
@@ -9,15 +9,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.selectAvailableDates = selectAvailableDates;
13
- exports.proceedToConfirmationStep = proceedToConfirmationStep;
14
- exports.fillContactInfo = fillContactInfo;
15
- exports.fillPaymentInformation = fillPaymentInformation;
16
- exports.submitBookingReservation = submitBookingReservation;
17
- exports.verifyBookingConfirmation = verifyBookingConfirmation;
12
+ exports.verifyBookingConfirmation = exports.submitBookingReservation = exports.fillPaymentInformation = exports.fillContactInfo = exports.proceedToConfirmationStep = exports.selectAvailableDates = void 0;
18
13
  const test_1 = require("@playwright/test");
19
- function selectAvailableDates(page_1) {
20
- return __awaiter(this, arguments, void 0, function* (page, maxRetries = 5) {
14
+ function selectAvailableDates(page, maxRetries = 5) {
15
+ return __awaiter(this, void 0, void 0, function* () {
21
16
  for (let attempt = 0; attempt < maxRetries; attempt++) {
22
17
  // Choose the first available check-in date.
23
18
  const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();
@@ -62,6 +57,7 @@ function selectAvailableDates(page_1) {
62
57
  return false;
63
58
  });
64
59
  }
60
+ exports.selectAvailableDates = selectAvailableDates;
65
61
  function proceedToConfirmationStep(page) {
66
62
  return __awaiter(this, void 0, void 0, function* () {
67
63
  // Click the 'View Rates' button.
@@ -95,6 +91,7 @@ function proceedToConfirmationStep(page) {
95
91
  yield (0, test_1.expect)(confirmReservationButton).toHaveText('Confirm Reservation');
96
92
  });
97
93
  }
94
+ exports.proceedToConfirmationStep = proceedToConfirmationStep;
98
95
  function fillContactInfo(page, data) {
99
96
  return __awaiter(this, void 0, void 0, function* () {
100
97
  // Fill Contact Info fields
@@ -111,6 +108,7 @@ function fillContactInfo(page, data) {
111
108
  yield page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...
112
109
  });
113
110
  }
111
+ exports.fillContactInfo = fillContactInfo;
114
112
  function fillPaymentInformation(page, data) {
115
113
  return __awaiter(this, void 0, void 0, function* () {
116
114
  // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.
@@ -132,6 +130,7 @@ function fillPaymentInformation(page, data) {
132
130
  }
133
131
  });
134
132
  }
133
+ exports.fillPaymentInformation = fillPaymentInformation;
135
134
  function submitBookingReservation(page) {
136
135
  return __awaiter(this, void 0, void 0, function* () {
137
136
  const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });
@@ -139,6 +138,7 @@ function submitBookingReservation(page) {
139
138
  yield confirmReservationButton.click();
140
139
  });
141
140
  }
141
+ exports.submitBookingReservation = submitBookingReservation;
142
142
  function verifyBookingConfirmation(page, data) {
143
143
  return __awaiter(this, void 0, void 0, function* () {
144
144
  // We should now be on the 'Thanks' step.
@@ -160,4 +160,5 @@ function verifyBookingConfirmation(page, data) {
160
160
  yield closeButton.click();
161
161
  });
162
162
  }
163
+ exports.verifyBookingConfirmation = verifyBookingConfirmation;
163
164
  //# sourceMappingURL=checkoutHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkoutHelpers.js","sourceRoot":"/","sources":["e2e/helpers/checkoutHelpers.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,oDA+CC;AAED,8DAiCC;AAED,0CAcC;AAED,wDAsBC;AAED,4DAIC;AAED,8DAuBC;AA5JD,2CAAmD;AAGnD,SAAsB,oBAAoB;yDAAC,IAAS,EAAE,aAAqB,CAAC;QACxE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACpD,4CAA4C;YAC5C,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3F,MAAM,IAAA,aAAM,EAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAEjC,IAAI,mBAA4B,CAAC;YACjC,IAAI,OAAO,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC7B,oFAAoF;gBACpF,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3G,CAAC;iBAAM,CAAC;gBACJ,4CAA4C;gBAC5C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,GAAG,EAAE,CAAC;gBAClH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAC5E,mBAAmB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,IAAA,aAAM,EAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,CAAC;YAChD,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAElC,yGAAyG;YACzG,4GAA4G;YAC5G,yGAAyG;YACzG,6GAA6G;YAC7G,+GAA+G;YAC/G,sCAAsC;YACtC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAE/B,yCAAyC;YACzC,MAAM,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;YACzF,MAAM,IAAA,aAAM,EAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,uBAAuB,CAAC,KAAK,EAAE,CAAC;YAEtC,2BAA2B;YAC3B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kCAAkC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACzH,IAAI,YAAY,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAC7F,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBACzE,MAAM,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CAAA;AAED,SAAsB,yBAAyB,CAAC,IAAS;;QACrD,iCAAiC;QACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACxF,MAAM,IAAA,aAAM,EAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,IAAA,aAAM,EAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEjC,qCAAqC;QACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAClF,MAAM,IAAA,aAAM,EAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEjC,6DAA6D;QAC7D,6FAA6F;QAC7F,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7E,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,IAAA,aAAM,EAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE3D,8DAA8D;QAC9D,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,iEAAiE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACtI,IAAI,YAAY,EAAE,CAAC;gBACf,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC3E,MAAM,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;gBACvC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC3F,MAAM,IAAA,aAAM,EAAC,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,IAAA,aAAM,EAAC,wBAAwB,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAC7E,CAAC;CAAA;AAED,SAAsB,eAAe,CAAC,IAAS,EAAE,IAAsB;;QACnE,2BAA2B;QAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,IAAI,CAAC,sCAAsC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,IAAI,CAAC,sCAAsC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvE,mBAAmB;QACnB,MAAM,IAAI,CAAC,IAAI,CAAC,0CAA0C,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,IAAI,CAAC,eAAe,CAAC,kDAAkD,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACrG,MAAM,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC,sCAAsC;IACrH,CAAC;CAAA;AAED,SAAsB,sBAAsB,CAAC,IAAS,EAAE,IAAsB;;QAC1E,gHAAgH;QAEhH,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,gDAAgD,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QAC5H,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,eAAe,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,yDAAyD,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QACrI,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,eAAe,CAAC,IAAI,CAAC,0CAA0C,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,uDAAuD,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QAChI,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,YAAY,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,yCAAyC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QACnH,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,aAAa,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrG,CAAC;IACL,CAAC;CAAA;AAED,SAAsB,wBAAwB,CAAC,IAAS;;QACpD,MAAM,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC3F,MAAM,IAAA,aAAM,EAAC,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,wBAAwB,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC;CAAA;AAED,SAAsB,yBAAyB,CAAC,IAAS,EAAE,IAAsB;;QAC7E,yCAAyC;QACzC,MAAM,IAAI,CAAC,eAAe,CAAC,gEAAgE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhH,yDAAyD;QACzD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACjE,MAAM,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QAE5C,4EAA4E;QAC5E,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC7E,MAAM,IAAA,aAAM,EAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;QACnE,MAAM,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAElC,uDAAuD;QACvD,MAAM,IAAA,aAAM,EAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACrF,MAAM,IAAA,aAAM,EAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEhE,mBAAmB;QACnB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACrD,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CAAA","sourcesContent":["import { expect, Locator } from '@playwright/test';\nimport { CheckoutTestData } from '../data/checkoutTestData';\n\nexport async function selectAvailableDates(page: any, maxRetries: number = 5): Promise<boolean> {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n // Choose the first available check-in date.\n const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();\n await expect(checkInDateElement).toBeVisible();\n await checkInDateElement.click();\n\n let checkOutDateElement: Locator;\n if (attempt === maxRetries - 1) {\n // If this is the last attempt, try a 1-night stay (this has a higher success rate).\n checkOutDateElement = page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').first();\n } else {\n // Choose a random available check-out date.\n const checkOutDateElements = await page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').all();\n const randomIndex = Math.floor(Math.random() * checkOutDateElements.length);\n checkOutDateElement = checkOutDateElements[randomIndex];\n }\n\n await expect(checkOutDateElement).toBeVisible();\n await checkOutDateElement.click();\n\n // TODO: Instead of waiting for timeout, wait for the loading indicators on the other dates to disappear.\n // Context: After choosing checkout date, the loading indicators appear for the dates following the checkout\n // date. If we click 'Check Availability', we seem to briefly see an error message. This doesn't actually\n // make the tests fail though. Keeping this in here in case it's indicative of an issue with RoomStay itself.\n // The error is an \"Oh no, something went wrong\" message and shows the select room bar without any dates in it.\n // The error quickly goes away though.\n await page.waitForTimeout(500);\n\n // Click the 'Check Availability' button.\n const checkAvailabilityButton = page.getByRole('button', { name: 'Check Availability' });\n await expect(checkAvailabilityButton).not.toBeDisabled();\n await checkAvailabilityButton.click();\n\n // Check for error message.\n const errorMessage = await page.waitForSelector('text=Please check your dates and', { timeout: 1000 }).catch(() => null);\n if (errorMessage) {\n console.log(`Error message found on attempt ${attempt + 1}. Retrying with different dates.`);\n const newSearchButton = page.getByRole('button', { name: 'New Search' });\n await expect(newSearchButton).toBeVisible();\n await newSearchButton.click();\n } else {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function proceedToConfirmationStep(page: any) {\n // Click the 'View Rates' button.\n const viewRatesNowButton = page.getByRole('button', { name: 'View rates now' }).first();\n await expect(viewRatesNowButton).toBeVisible();\n await expect(viewRatesNowButton).not.toBeDisabled();\n await viewRatesNowButton.click();\n\n // Click the first 'Book Now' button.\n const firstBookNowButton = page.getByRole('button', { name: 'Book Now' }).first();\n await expect(firstBookNowButton).toBeVisible();\n await firstBookNowButton.click();\n\n // Confirm that the 'Added xx' toast notification is visible.\n // TOODO: Sometimes there are two notifications, but I can only reproduce this in Playwright.\n const addedRoomNotification = page.locator('.c-notification__inner').first();\n await expect(addedRoomNotification).toBeVisible();\n await expect(addedRoomNotification).toContainText('Added');\n\n // A bit hacky... Need a better way to check the current step.\n try {\n const isAddonsStep = await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Add-Ons\")', { timeout: 1000 });\n if (isAddonsStep) {\n const nextButton = page.getByRole('button', { name: 'Next Step' }).first();\n await expect(nextButton).toBeVisible();\n await nextButton.click();\n }\n } catch (error) {\n console.log('Add-ons step not found, continuing.');\n }\n\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await expect(confirmReservationButton).toHaveText('Confirm Reservation');\n}\n\nexport async function fillContactInfo(page: any, data: CheckoutTestData) {\n // Fill Contact Info fields\n await page.fill('input[name=\"userProfiles.0.Forename\"]', data.firstName);\n await page.fill('input[name=\"userProfiles.0.Surname\"]', data.lastName);\n await page.fill('input[name=\"userProfiles.0.Email\"]', data.email);\n await page.fill('input[name=\"userProfiles.0.Phone\"]', data.phone);\n await page.fill('input[name=\"userProfiles.0.Address\"]', data.address);\n await page.fill('input[name=\"userProfiles.0.City\"]', data.city);\n await page.fill('input[name=\"userProfiles.0.PostCode\"]', data.zipCode);\n\n // Country selector\n await page.fill('.rs-enhanced-country-field--search input', data.country);\n await page.waitForSelector('.rs-enhanced-country-field--suggest-list-country', { state: 'visible' });\n await page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...\n}\n\nexport async function fillPaymentInformation(page: any, data: CheckoutTestData) {\n // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.\n\n const cardNumberFrame = await (await page.waitForSelector('iframe[title=\"Secure card number input frame\"]')).contentFrame();\n if (cardNumberFrame) {\n await cardNumberFrame.fill('input[aria-label=\"Card Number Input\"]', data.cardNumber);\n }\n\n const cardExpiryFrame = await (await page.waitForSelector('iframe[title=\"Secure card expiration date input frame\"]')).contentFrame();\n if (cardExpiryFrame) {\n await cardExpiryFrame.fill('input[aria-label=\"Card expiration date\"]', data.cardExpiry);\n }\n\n const cardCvvFrame = await (await page.waitForSelector('iframe[title=\"Secure card security code input frame\"]')).contentFrame();\n if (cardCvvFrame) {\n await cardCvvFrame.fill('input[aria-label=\"Card Security Code\"]', data.cardCVC);\n }\n\n const cardNameFrame = await (await page.waitForSelector('iframe[title=\"Secure text input frame\"]')).contentFrame();\n if (cardNameFrame) {\n await cardNameFrame.fill('input[aria-label=\"Text input\"]', `${data.firstName} ${data.lastName}`);\n }\n}\n\nexport async function submitBookingReservation(page: any) {\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await confirmReservationButton.click();\n}\n\nexport async function verifyBookingConfirmation(page: any, data: CheckoutTestData) {\n // We should now be on the 'Thanks' step.\n await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Thanks\")', { timeout: 5000 });\n\n // There should be a message thanking us for our booking.\n const thankYouMessage = page.locator('h3:has-text(\"Thank you\")');\n await expect(thankYouMessage).toBeVisible();\n\n // Click the 'More Details' button to show a modal with our booking details.\n const moreDetailsButton = page.getByRole('button', { name: 'More Details' });\n await expect(moreDetailsButton).toBeVisible();\n await moreDetailsButton.click();\n\n const modal = page.locator('div[class*=\"roomstay-modal\"]').first();\n await expect(modal).toBeVisible();\n\n // The modal should contain our name and email address.\n await expect(modal.locator(`text=${data.firstName} ${data.lastName}`)).toBeVisible();\n await expect(modal.locator(`text=${data.email}`)).toBeVisible();\n\n // Close the modal.\n const closeButton = modal.locator('i[name=\"Close\"]');\n await closeButton.click();\n}\n"]}
1
+ {"version":3,"file":"checkoutHelpers.js","sourceRoot":"/","sources":["e2e/helpers/checkoutHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, Locator } from '@playwright/test';\nimport { CheckoutTestData } from '../data/checkoutTestData';\n\nexport async function selectAvailableDates(page: any, maxRetries: number = 5): Promise<boolean> {\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n // Choose the first available check-in date.\n const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();\n await expect(checkInDateElement).toBeVisible();\n await checkInDateElement.click();\n\n let checkOutDateElement: Locator;\n if (attempt === maxRetries - 1) {\n // If this is the last attempt, try a 1-night stay (this has a higher success rate).\n checkOutDateElement = page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').first();\n } else {\n // Choose a random available check-out date.\n const checkOutDateElements = await page.locator('.diji-calendar-month--item.--selectable:not(.--selected)').all();\n const randomIndex = Math.floor(Math.random() * checkOutDateElements.length);\n checkOutDateElement = checkOutDateElements[randomIndex];\n }\n\n await expect(checkOutDateElement).toBeVisible();\n await checkOutDateElement.click();\n\n // TODO: Instead of waiting for timeout, wait for the loading indicators on the other dates to disappear.\n // Context: After choosing checkout date, the loading indicators appear for the dates following the checkout\n // date. If we click 'Check Availability', we seem to briefly see an error message. This doesn't actually\n // make the tests fail though. Keeping this in here in case it's indicative of an issue with RoomStay itself.\n // The error is an \"Oh no, something went wrong\" message and shows the select room bar without any dates in it.\n // The error quickly goes away though.\n await page.waitForTimeout(500);\n\n // Click the 'Check Availability' button.\n const checkAvailabilityButton = page.getByRole('button', { name: 'Check Availability' });\n await expect(checkAvailabilityButton).not.toBeDisabled();\n await checkAvailabilityButton.click();\n\n // Check for error message.\n const errorMessage = await page.waitForSelector('text=Please check your dates and', { timeout: 1000 }).catch(() => null);\n if (errorMessage) {\n console.log(`Error message found on attempt ${attempt + 1}. Retrying with different dates.`);\n const newSearchButton = page.getByRole('button', { name: 'New Search' });\n await expect(newSearchButton).toBeVisible();\n await newSearchButton.click();\n } else {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function proceedToConfirmationStep(page: any) {\n // Click the 'View Rates' button.\n const viewRatesNowButton = page.getByRole('button', { name: 'View rates now' }).first();\n await expect(viewRatesNowButton).toBeVisible();\n await expect(viewRatesNowButton).not.toBeDisabled();\n await viewRatesNowButton.click();\n\n // Click the first 'Book Now' button.\n const firstBookNowButton = page.getByRole('button', { name: 'Book Now' }).first();\n await expect(firstBookNowButton).toBeVisible();\n await firstBookNowButton.click();\n\n // Confirm that the 'Added xx' toast notification is visible.\n // TOODO: Sometimes there are two notifications, but I can only reproduce this in Playwright.\n const addedRoomNotification = page.locator('.c-notification__inner').first();\n await expect(addedRoomNotification).toBeVisible();\n await expect(addedRoomNotification).toContainText('Added');\n\n // A bit hacky... Need a better way to check the current step.\n try {\n const isAddonsStep = await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Add-Ons\")', { timeout: 1000 });\n if (isAddonsStep) {\n const nextButton = page.getByRole('button', { name: 'Next Step' }).first();\n await expect(nextButton).toBeVisible();\n await nextButton.click();\n }\n } catch (error) {\n console.log('Add-ons step not found, continuing.');\n }\n\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await expect(confirmReservationButton).toHaveText('Confirm Reservation');\n}\n\nexport async function fillContactInfo(page: any, data: CheckoutTestData) {\n // Fill Contact Info fields\n await page.fill('input[name=\"userProfiles.0.Forename\"]', data.firstName);\n await page.fill('input[name=\"userProfiles.0.Surname\"]', data.lastName);\n await page.fill('input[name=\"userProfiles.0.Email\"]', data.email);\n await page.fill('input[name=\"userProfiles.0.Phone\"]', data.phone);\n await page.fill('input[name=\"userProfiles.0.Address\"]', data.address);\n await page.fill('input[name=\"userProfiles.0.City\"]', data.city);\n await page.fill('input[name=\"userProfiles.0.PostCode\"]', data.zipCode);\n\n // Country selector\n await page.fill('.rs-enhanced-country-field--search input', data.country);\n await page.waitForSelector('.rs-enhanced-country-field--suggest-list-country', { state: 'visible' });\n await page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...\n}\n\nexport async function fillPaymentInformation(page: any, data: CheckoutTestData) {\n // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.\n\n const cardNumberFrame = await (await page.waitForSelector('iframe[title=\"Secure card number input frame\"]')).contentFrame();\n if (cardNumberFrame) {\n await cardNumberFrame.fill('input[aria-label=\"Card Number Input\"]', data.cardNumber);\n }\n\n const cardExpiryFrame = await (await page.waitForSelector('iframe[title=\"Secure card expiration date input frame\"]')).contentFrame();\n if (cardExpiryFrame) {\n await cardExpiryFrame.fill('input[aria-label=\"Card expiration date\"]', data.cardExpiry);\n }\n\n const cardCvvFrame = await (await page.waitForSelector('iframe[title=\"Secure card security code input frame\"]')).contentFrame();\n if (cardCvvFrame) {\n await cardCvvFrame.fill('input[aria-label=\"Card Security Code\"]', data.cardCVC);\n }\n\n const cardNameFrame = await (await page.waitForSelector('iframe[title=\"Secure text input frame\"]')).contentFrame();\n if (cardNameFrame) {\n await cardNameFrame.fill('input[aria-label=\"Text input\"]', `${data.firstName} ${data.lastName}`);\n }\n}\n\nexport async function submitBookingReservation(page: any) {\n const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });\n await expect(confirmReservationButton).toBeVisible();\n await confirmReservationButton.click();\n}\n\nexport async function verifyBookingConfirmation(page: any, data: CheckoutTestData) {\n // We should now be on the 'Thanks' step.\n await page.waitForSelector('.step-selector__item.is-current p.text-body:has-text(\"Thanks\")', { timeout: 5000 });\n\n // There should be a message thanking us for our booking.\n const thankYouMessage = page.locator('h3:has-text(\"Thank you\")');\n await expect(thankYouMessage).toBeVisible();\n\n // Click the 'More Details' button to show a modal with our booking details.\n const moreDetailsButton = page.getByRole('button', { name: 'More Details' });\n await expect(moreDetailsButton).toBeVisible();\n await moreDetailsButton.click();\n\n const modal = page.locator('div[class*=\"roomstay-modal\"]').first();\n await expect(modal).toBeVisible();\n\n // The modal should contain our name and email address.\n await expect(modal.locator(`text=${data.firstName} ${data.lastName}`)).toBeVisible();\n await expect(modal.locator(`text=${data.email}`)).toBeVisible();\n\n // Close the modal.\n const closeButton = modal.locator('i[name=\"Close\"]');\n await closeButton.click();\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runPlaywrightTestWithConfig = runPlaywrightTestWithConfig;
3
+ exports.runPlaywrightTestWithConfig = void 0;
4
4
  const frontendTestConfigs_1 = require("../frontendTestConfigs");
5
5
  function runPlaywrightTestWithConfig(runTest) {
6
6
  const specificUrl = process.env.URL;
@@ -23,4 +23,5 @@ function runPlaywrightTestWithConfig(runTest) {
23
23
  }
24
24
  selectedConfigs.forEach((config) => runTest(config));
25
25
  }
26
+ exports.runPlaywrightTestWithConfig = runPlaywrightTestWithConfig;
26
27
  //# sourceMappingURL=playwrightHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"playwrightHelpers.js","sourceRoot":"/","sources":["e2e/helpers/playwrightHelpers.ts"],"names":[],"mappings":";;AAEA,kEAwBC;AA1BD,gEAAyE;AAEzE,SAAgB,2BAA2B,CACzC,OAA6C;IAE7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAEzC,IAAI,eAAqC,CAAC;IAE1C,IAAI,WAAW,EAAE,CAAC;QAChB,2DAA2D;QAC3D,MAAM,UAAU,GAAG,iCAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI;YAC7E,GAAG,EAAE,WAAW;YAChB,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,eAAe,GAAG,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACxB,eAAe,GAAG,iCAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,eAAe,GAAG,iCAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxE,CAAC;IAED,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC","sourcesContent":["import { FrontendTestConfig, testConfigs } from \"../frontendTestConfigs\";\n\nexport function runPlaywrightTestWithConfig(\n runTest: (config: FrontendTestConfig) => void\n): void {\n const specificUrl = process.env.URL;\n const isClientsArg = process.env.CLIENTS;\n\n let selectedConfigs: FrontendTestConfig[];\n\n if (specificUrl) {\n // Find the matching config or create one for the given URL\n const testConfig = testConfigs.find((config) => config.url === specificUrl) || {\n url: specificUrl,\n proceedWithPayment: false,\n };\n\n selectedConfigs = [testConfig];\n } else if (isClientsArg) {\n selectedConfigs = testConfigs.filter((config) => config.isClient);\n } else {\n // No URL provided, use the default config(s)\n selectedConfigs = testConfigs.filter((config) => config.runByDefault);\n }\n\n selectedConfigs.forEach((config) => runTest(config));\n}"]}
1
+ {"version":3,"file":"playwrightHelpers.js","sourceRoot":"/","sources":["e2e/helpers/playwrightHelpers.ts"],"names":[],"mappings":";;;AAAA,gEAAyE;AAEzE,SAAgB,2BAA2B,CACzC,OAA6C;IAE7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IAEzC,IAAI,eAAqC,CAAC;IAE1C,IAAI,WAAW,EAAE;QACf,2DAA2D;QAC3D,MAAM,UAAU,GAAG,iCAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI;YAC7E,GAAG,EAAE,WAAW;YAChB,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,eAAe,GAAG,CAAC,UAAU,CAAC,CAAC;KAChC;SAAM,IAAI,YAAY,EAAE;QACvB,eAAe,GAAG,iCAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KACnE;SAAM;QACL,6CAA6C;QAC7C,eAAe,GAAG,iCAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACvE;IAED,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC;AAxBD,kEAwBC","sourcesContent":["import { FrontendTestConfig, testConfigs } from \"../frontendTestConfigs\";\n\nexport function runPlaywrightTestWithConfig(\n runTest: (config: FrontendTestConfig) => void\n): void {\n const specificUrl = process.env.URL;\n const isClientsArg = process.env.CLIENTS;\n\n let selectedConfigs: FrontendTestConfig[];\n\n if (specificUrl) {\n // Find the matching config or create one for the given URL\n const testConfig = testConfigs.find((config) => config.url === specificUrl) || {\n url: specificUrl,\n proceedWithPayment: false,\n };\n\n selectedConfigs = [testConfig];\n } else if (isClientsArg) {\n selectedConfigs = testConfigs.filter((config) => config.isClient);\n } else {\n // No URL provided, use the default config(s)\n selectedConfigs = testConfigs.filter((config) => config.runByDefault);\n }\n\n selectedConfigs.forEach((config) => runTest(config));\n}"]}