@roomstay/frontend 2.6.82 → 2.6.84

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 (775) hide show
  1. package/dist/375.bundle.js +1 -1
  2. package/dist/430.bundle.js +1 -1
  3. package/dist/e2e/canChangeCurrency.spec.js +1 -1
  4. package/dist/e2e/canChangeCurrency.spec.js.map +1 -1
  5. package/dist/e2e/canCheckout.spec.js +3 -3
  6. package/dist/e2e/canCheckout.spec.js.map +1 -1
  7. package/dist/e2e/canViewFindReservationsPage.spec.js +1 -1
  8. package/dist/e2e/canViewFindReservationsPage.spec.js.map +1 -1
  9. package/dist/e2e/canViewHotelnfoPage.spec.js +1 -1
  10. package/dist/e2e/canViewHotelnfoPage.spec.js.map +1 -1
  11. package/dist/e2e/goBackAndCheckoutAgain.spec.js +1 -1
  12. package/dist/e2e/goBackAndCheckoutAgain.spec.js.map +1 -1
  13. package/dist/e2e/helpers/checkoutHelpers.js +8 -9
  14. package/dist/e2e/helpers/checkoutHelpers.js.map +1 -1
  15. package/dist/e2e/helpers/playwrightHelpers.js +1 -2
  16. package/dist/e2e/helpers/playwrightHelpers.js.map +1 -1
  17. package/dist/e2e/price.spec.js +3 -3
  18. package/dist/e2e/price.spec.js.map +1 -1
  19. package/dist/main.bundle.js +1 -1
  20. package/dist/src/animations/AutoAutoHeight.js +18 -8
  21. package/dist/src/animations/AutoAutoHeight.js.map +1 -1
  22. package/dist/src/animations/Fade.js +17 -7
  23. package/dist/src/animations/Fade.js.map +1 -1
  24. package/dist/src/api/AddonAPI.js +17 -7
  25. package/dist/src/api/AddonAPI.js.map +1 -1
  26. package/dist/src/api/AvailabilityAPI.d.ts +6 -5
  27. package/dist/src/api/AvailabilityAPI.js +40 -24
  28. package/dist/src/api/AvailabilityAPI.js.map +1 -1
  29. package/dist/src/api/BaseAPI.js +6 -6
  30. package/dist/src/api/BaseAPI.js.map +1 -1
  31. package/dist/src/api/ErrorAPI.js.map +1 -1
  32. package/dist/src/api/ExchangeRateAPI.js.map +1 -1
  33. package/dist/src/api/HotelAPI.d.ts +1 -1
  34. package/dist/src/api/HotelAPI.js.map +1 -1
  35. package/dist/src/api/MemberAPI.js +17 -7
  36. package/dist/src/api/MemberAPI.js.map +1 -1
  37. package/dist/src/api/ReservationAPI.js +19 -9
  38. package/dist/src/api/ReservationAPI.js.map +1 -1
  39. package/dist/src/api/SessionAPI.js +17 -7
  40. package/dist/src/api/SessionAPI.js.map +1 -1
  41. package/dist/src/api/TrueRewardsAPI.js.map +1 -1
  42. package/dist/src/api/events-service/EventsServiceAPI.js.map +1 -1
  43. package/dist/src/api/members-service/MembersServiceAPI.d.ts +1 -1
  44. package/dist/src/components/Event/EventCarouselContainer.js +17 -7
  45. package/dist/src/components/Event/EventCarouselContainer.js.map +1 -1
  46. package/dist/src/components/User/Forms/ForgotPasswordForm.js +17 -7
  47. package/dist/src/components/User/Forms/ForgotPasswordForm.js.map +1 -1
  48. package/dist/src/components/User/Forms/SignInForm.js +17 -7
  49. package/dist/src/components/User/Forms/SignInForm.js.map +1 -1
  50. package/dist/src/components/User/Forms/SignUpForm.js +17 -7
  51. package/dist/src/components/User/Forms/SignUpForm.js.map +1 -1
  52. package/dist/src/components/User/Forms/VerifyEmailForm.js +17 -7
  53. package/dist/src/components/User/Forms/VerifyEmailForm.js.map +1 -1
  54. package/dist/src/components/generic/AfterpayButton/AfterpayPaymentOption.js +17 -7
  55. package/dist/src/components/generic/AfterpayButton/AfterpayPaymentOption.js.map +1 -1
  56. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.js +17 -7
  57. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.js.map +1 -1
  58. package/dist/src/components/generic/Alert.js +3 -3
  59. package/dist/src/components/generic/Alert.js.map +1 -1
  60. package/dist/src/components/generic/BEButton.js +18 -8
  61. package/dist/src/components/generic/BEButton.js.map +1 -1
  62. package/dist/src/components/generic/BackButton.js +1 -1
  63. package/dist/src/components/generic/BackButton.js.map +1 -1
  64. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js +18 -9
  65. package/dist/src/components/generic/BookNowPayLaterInfoBlock.js.map +1 -1
  66. package/dist/src/components/generic/BookingWizard/BookingWizard.js +20 -10
  67. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  68. package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +2 -2
  69. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +17 -7
  70. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  71. package/dist/src/components/generic/BookingWizard/BookingWizardContext.d.ts +0 -1
  72. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +17 -7
  73. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  74. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js +17 -7
  75. package/dist/src/components/generic/BookingWizard/BookingWizardGuestSelector/BookingWizardGuestSelector.js.map +1 -1
  76. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +17 -7
  77. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  78. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js +17 -7
  79. package/dist/src/components/generic/BookingWizard/BookingWizardPromoCode/BookingWizardPromoCode.js.map +1 -1
  80. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js +17 -7
  81. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.js.map +1 -1
  82. package/dist/src/components/generic/Checkbox/Checkbox.js +17 -7
  83. package/dist/src/components/generic/Checkbox/Checkbox.js.map +1 -1
  84. package/dist/src/components/generic/Countdown.js +18 -8
  85. package/dist/src/components/generic/Countdown.js.map +1 -1
  86. package/dist/src/components/generic/Currency.js +18 -8
  87. package/dist/src/components/generic/Currency.js.map +1 -1
  88. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js +18 -8
  89. package/dist/src/components/generic/DateRangePicker/DateRangePicker.js.map +1 -1
  90. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.js +19 -9
  91. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.js.map +1 -1
  92. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.js +18 -8
  93. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.js.map +1 -1
  94. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.js +18 -8
  95. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.js.map +1 -1
  96. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js +17 -7
  97. package/dist/src/components/generic/DateRangePicker/FloatingDateRangePicker.js.map +1 -1
  98. package/dist/src/components/generic/Distance.js +18 -8
  99. package/dist/src/components/generic/Distance.js.map +1 -1
  100. package/dist/src/components/generic/Event/EventCard.js +17 -7
  101. package/dist/src/components/generic/Event/EventCard.js.map +1 -1
  102. package/dist/src/components/generic/Event/EventCarousel.js +17 -7
  103. package/dist/src/components/generic/Event/EventCarousel.js.map +1 -1
  104. package/dist/src/components/generic/ForwardedSelect.js +17 -7
  105. package/dist/src/components/generic/ForwardedSelect.js.map +1 -1
  106. package/dist/src/components/generic/GroupedCheckInOutTimes/GroupedCheckInOutTimes.js.map +1 -1
  107. package/dist/src/components/generic/Headline.js +1 -1
  108. package/dist/src/components/generic/Headline.js.map +1 -1
  109. package/dist/src/components/generic/HtmlContentViewer.js +17 -7
  110. package/dist/src/components/generic/HtmlContentViewer.js.map +1 -1
  111. package/dist/src/components/generic/IconText/IconText.js +19 -9
  112. package/dist/src/components/generic/IconText/IconText.js.map +1 -1
  113. package/dist/src/components/generic/InputGroup/InputGroup.js +1 -1
  114. package/dist/src/components/generic/InputGroup/InputGroup.js.map +1 -1
  115. package/dist/src/components/generic/LineBreak.js +1 -1
  116. package/dist/src/components/generic/LineBreak.js.map +1 -1
  117. package/dist/src/components/generic/Notification.js +18 -8
  118. package/dist/src/components/generic/Notification.js.map +1 -1
  119. package/dist/src/components/generic/NumberIncrement.js +18 -8
  120. package/dist/src/components/generic/NumberIncrement.js.map +1 -1
  121. package/dist/src/components/generic/Overlay/Overlay.js +17 -7
  122. package/dist/src/components/generic/Overlay/Overlay.js.map +1 -1
  123. package/dist/src/components/generic/PageTitle/index.js.map +1 -1
  124. package/dist/src/components/generic/PasswordBox/PasswordBox.js +17 -7
  125. package/dist/src/components/generic/PasswordBox/PasswordBox.js.map +1 -1
  126. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js +17 -7
  127. package/dist/src/components/generic/PaymentCard/InlinePaymentOption.js.map +1 -1
  128. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js +17 -7
  129. package/dist/src/components/generic/PaymentCard/PaymentCardInput.js.map +1 -1
  130. package/dist/src/components/generic/Pill.js +3 -3
  131. package/dist/src/components/generic/Pill.js.map +1 -1
  132. package/dist/src/components/generic/Placeholder.js +1 -1
  133. package/dist/src/components/generic/Placeholder.js.map +1 -1
  134. package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js +17 -7
  135. package/dist/src/components/generic/PlanpayPrice/PlanpayPrice.js.map +1 -1
  136. package/dist/src/components/generic/PromoCodeInput.js +18 -8
  137. package/dist/src/components/generic/PromoCodeInput.js.map +1 -1
  138. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js +17 -7
  139. package/dist/src/components/generic/RadioButtonGroup/RadioButton.js.map +1 -1
  140. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js +17 -7
  141. package/dist/src/components/generic/RadioButtonGroup/RadioButtonGroup.js.map +1 -1
  142. package/dist/src/components/generic/RecentSearchesCard.js +17 -7
  143. package/dist/src/components/generic/RecentSearchesCard.js.map +1 -1
  144. package/dist/src/components/generic/RoomstayMark.js +17 -7
  145. package/dist/src/components/generic/RoomstayMark.js.map +1 -1
  146. package/dist/src/components/generic/ScrollToTop.js.map +1 -1
  147. package/dist/src/components/generic/Select/InputSelect.js +18 -8
  148. package/dist/src/components/generic/Select/InputSelect.js.map +1 -1
  149. package/dist/src/components/generic/Select/Select.d.ts +1 -1
  150. package/dist/src/components/generic/Select/Select.js +17 -7
  151. package/dist/src/components/generic/Select/Select.js.map +1 -1
  152. package/dist/src/components/generic/Slider/Slider.js +17 -7
  153. package/dist/src/components/generic/Slider/Slider.js.map +1 -1
  154. package/dist/src/components/generic/Tabs/ElementChildren.js +2 -3
  155. package/dist/src/components/generic/Tabs/ElementChildren.js.map +1 -1
  156. package/dist/src/components/generic/Tabs/TabContext.js +17 -7
  157. package/dist/src/components/generic/Tabs/TabContext.js.map +1 -1
  158. package/dist/src/components/generic/Tabs/TabLink.js +17 -7
  159. package/dist/src/components/generic/Tabs/TabLink.js.map +1 -1
  160. package/dist/src/components/generic/Tabs/TabRouteContainer.js +18 -9
  161. package/dist/src/components/generic/Tabs/TabRouteContainer.js.map +1 -1
  162. package/dist/src/components/generic/Text.js +19 -9
  163. package/dist/src/components/generic/Text.js.map +1 -1
  164. package/dist/src/components/generic/TextArea.js +17 -7
  165. package/dist/src/components/generic/TextArea.js.map +1 -1
  166. package/dist/src/components/generic/TextBox.js +17 -7
  167. package/dist/src/components/generic/TextBox.js.map +1 -1
  168. package/dist/src/components/generic/Tooltip/Tooltip.js +18 -8
  169. package/dist/src/components/generic/Tooltip/Tooltip.js.map +1 -1
  170. package/dist/src/components/generic/badging/SSLSecureBadge.js +1 -1
  171. package/dist/src/components/generic/badging/SSLSecureBadge.js.map +1 -1
  172. package/dist/src/components/generic/buttons/NextStepButton.js +18 -8
  173. package/dist/src/components/generic/buttons/NextStepButton.js.map +1 -1
  174. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js +17 -7
  175. package/dist/src/components/generic/custom/EnhancedPhoneNumberField/EnhancedPhoneNumberField.js.map +1 -1
  176. package/dist/src/components/generic/date/DatePicker.d.ts +1 -1
  177. package/dist/src/components/generic/date/DatePicker.js +19 -9
  178. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  179. package/dist/src/components/generic/date/DatePickerDay.js +19 -9
  180. package/dist/src/components/generic/date/DatePickerDay.js.map +1 -1
  181. package/dist/src/components/generic/date/DatePickerDays.js +18 -8
  182. package/dist/src/components/generic/date/DatePickerDays.js.map +1 -1
  183. package/dist/src/components/generic/date/DatePickerMonth.js +18 -8
  184. package/dist/src/components/generic/date/DatePickerMonth.js.map +1 -1
  185. package/dist/src/components/generic/date/DatePickerWeek.js +21 -11
  186. package/dist/src/components/generic/date/DatePickerWeek.js.map +1 -1
  187. package/dist/src/components/generic/date/FloatingDatePicker.js +19 -9
  188. package/dist/src/components/generic/date/FloatingDatePicker.js.map +1 -1
  189. package/dist/src/components/generic/date/WeekViewSkeleton.js +17 -7
  190. package/dist/src/components/generic/date/WeekViewSkeleton.js.map +1 -1
  191. package/dist/src/components/generic/loader/ImageLoader.js +18 -8
  192. package/dist/src/components/generic/loader/ImageLoader.js.map +1 -1
  193. package/dist/src/components/generic/loader/LargeLoader.js +1 -1
  194. package/dist/src/components/generic/loader/LargeLoader.js.map +1 -1
  195. package/dist/src/components/generic/loader/SmallSpinner.js +18 -8
  196. package/dist/src/components/generic/loader/SmallSpinner.js.map +1 -1
  197. package/dist/src/components/generic/map/HotelLocationMap.js +1 -1
  198. package/dist/src/components/generic/map/HotelLocationMap.js.map +1 -1
  199. package/dist/src/components/generic/modal/ConfirmationModal.js +18 -8
  200. package/dist/src/components/generic/modal/ConfirmationModal.js.map +1 -1
  201. package/dist/src/components/generic/modal/ErrorModal.js +18 -8
  202. package/dist/src/components/generic/modal/ErrorModal.js.map +1 -1
  203. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js +17 -7
  204. package/dist/src/components/generic/modal/SigninModal/AuthenticatedUserModal.js.map +1 -1
  205. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js +17 -7
  206. package/dist/src/components/generic/modal/SigninModal/FormContent/SignUpFormContent.js.map +1 -1
  207. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js +18 -8
  208. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.js.map +1 -1
  209. package/dist/src/components/generic/modal/SimpleModal.js +19 -9
  210. package/dist/src/components/generic/modal/SimpleModal.js.map +1 -1
  211. package/dist/src/components/generic/modal/TabbedModal.js +18 -8
  212. package/dist/src/components/generic/modal/TabbedModal.js.map +1 -1
  213. package/dist/src/components/generic/radio/RadioFields.js +18 -8
  214. package/dist/src/components/generic/radio/RadioFields.js.map +1 -1
  215. package/dist/src/components/graphics/TravelerNotfound.js +1 -1
  216. package/dist/src/components/graphics/TravelerNotfound.js.map +1 -1
  217. package/dist/src/components/members/EditMyProfile.js +17 -7
  218. package/dist/src/components/members/EditMyProfile.js.map +1 -1
  219. package/dist/src/components/members/InlineSignUpSection.js +17 -7
  220. package/dist/src/components/members/InlineSignUpSection.js.map +1 -1
  221. package/dist/src/components/members/SignInModal/ExternalMemberModal.js +17 -7
  222. package/dist/src/components/members/SignInModal/ExternalMemberModal.js.map +1 -1
  223. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js +19 -9
  224. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.js.map +1 -1
  225. package/dist/src/components/members/SignInModal/MemberPortalSignInModal.js +18 -8
  226. package/dist/src/components/members/SignInModal/MemberPortalSignInModal.js.map +1 -1
  227. package/dist/src/components/members/SignInModal/MemberSignInModal.js +17 -7
  228. package/dist/src/components/members/SignInModal/MemberSignInModal.js.map +1 -1
  229. package/dist/src/components/navigation/Header.js +18 -8
  230. package/dist/src/components/navigation/Header.js.map +1 -1
  231. package/dist/src/components/navigation/StepSelector.js +18 -8
  232. package/dist/src/components/navigation/StepSelector.js.map +1 -1
  233. package/dist/src/components/navigation/StepSelectorModal.js +18 -8
  234. package/dist/src/components/navigation/StepSelectorModal.js.map +1 -1
  235. package/dist/src/components/pages/Account/Card/MemberCardItem.js +17 -7
  236. package/dist/src/components/pages/Account/Card/MemberCardItem.js.map +1 -1
  237. package/dist/src/components/pages/PageColorComponent.js +17 -7
  238. package/dist/src/components/pages/PageColorComponent.js.map +1 -1
  239. package/dist/src/components/reservation/EmptyReservation.js +17 -7
  240. package/dist/src/components/reservation/EmptyReservation.js.map +1 -1
  241. package/dist/src/components/reservation/ReservationItem.js +18 -8
  242. package/dist/src/components/reservation/ReservationItem.js.map +1 -1
  243. package/dist/src/components/reservation/ReservationList.js.map +1 -1
  244. package/dist/src/components/steps/DaysSelectedInformer.js +18 -8
  245. package/dist/src/components/steps/DaysSelectedInformer.js.map +1 -1
  246. package/dist/src/components/steps/MinimumNightStayPill.js +18 -8
  247. package/dist/src/components/steps/MinimumNightStayPill.js.map +1 -1
  248. package/dist/src/components/steps/addons/AddonCard.js +17 -7
  249. package/dist/src/components/steps/addons/AddonCard.js.map +1 -1
  250. package/dist/src/components/steps/addons/AddonList.js +17 -7
  251. package/dist/src/components/steps/addons/AddonList.js.map +1 -1
  252. package/dist/src/components/steps/addons/AddonsNotFoundBlock.js +1 -1
  253. package/dist/src/components/steps/addons/AddonsNotFoundBlock.js.map +1 -1
  254. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js +17 -7
  255. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.js.map +1 -1
  256. package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.js +17 -7
  257. package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.js.map +1 -1
  258. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.js +17 -7
  259. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.js.map +1 -1
  260. package/dist/src/components/steps/confirmation/AccountDetails.js +18 -8
  261. package/dist/src/components/steps/confirmation/AccountDetails.js.map +1 -1
  262. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.js +17 -7
  263. package/dist/src/components/steps/confirmation/AdyenPaymentOption/AdyenPaymentOption.js.map +1 -1
  264. package/dist/src/components/steps/confirmation/MastercardPaymentMethod.js +17 -7
  265. package/dist/src/components/steps/confirmation/MastercardPaymentMethod.js.map +1 -1
  266. package/dist/src/components/steps/confirmation/PaymentDetails/AcceptablePaymentCard.js.map +1 -1
  267. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js +17 -7
  268. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.js.map +1 -1
  269. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js +17 -7
  270. package/dist/src/components/steps/confirmation/PaymentDetails/StepConfirmationPaymentDetails.js.map +1 -1
  271. package/dist/src/components/steps/confirmation/PaymentInformation.js +17 -7
  272. package/dist/src/components/steps/confirmation/PaymentInformation.js.map +1 -1
  273. package/dist/src/components/steps/confirmation/PlanpayLabel.js +17 -7
  274. package/dist/src/components/steps/confirmation/PlanpayLabel.js.map +1 -1
  275. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js +17 -7
  276. package/dist/src/components/steps/confirmation/PlanpayPaymentMethod.js.map +1 -1
  277. package/dist/src/components/steps/confirmation/RoomContactDetails.js +18 -8
  278. package/dist/src/components/steps/confirmation/RoomContactDetails.js.map +1 -1
  279. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +18 -8
  280. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
  281. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js +18 -8
  282. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.js.map +1 -1
  283. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js +2 -2
  284. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.js.map +1 -1
  285. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js +17 -7
  286. package/dist/src/components/steps/confirmation/StepConfirmationCountrySelector.js.map +1 -1
  287. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +18 -8
  288. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  289. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.js +1 -1
  290. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.js.map +1 -1
  291. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js +18 -8
  292. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.js.map +1 -1
  293. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js +18 -8
  294. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.js.map +1 -1
  295. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js +18 -8
  296. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.js.map +1 -1
  297. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js +17 -7
  298. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsLabel.js.map +1 -1
  299. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.js +23 -9
  300. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsModal.js.map +1 -1
  301. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js +20 -7
  302. package/dist/src/components/steps/confirmation/TrueRewardsPaymentOption/TrueRewardsPaymentMethod.js.map +1 -1
  303. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js +18 -8
  304. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.js.map +1 -1
  305. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js +18 -8
  306. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.js.map +1 -1
  307. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js +18 -8
  308. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.js.map +1 -1
  309. package/dist/src/components/steps/date/OccupancyWarningBlock.js +1 -1
  310. package/dist/src/components/steps/date/OccupancyWarningBlock.js.map +1 -1
  311. package/dist/src/components/steps/date/PeoplePicker.js +18 -8
  312. package/dist/src/components/steps/date/PeoplePicker.js.map +1 -1
  313. package/dist/src/components/steps/date/PeoplePickerRow.js +19 -9
  314. package/dist/src/components/steps/date/PeoplePickerRow.js.map +1 -1
  315. package/dist/src/components/steps/date/StepDatePricePerRoom.js +18 -8
  316. package/dist/src/components/steps/date/StepDatePricePerRoom.js.map +1 -1
  317. package/dist/src/components/steps/date/StepOneDateRange.js +18 -8
  318. package/dist/src/components/steps/date/StepOneDateRange.js.map +1 -1
  319. package/dist/src/components/steps/date/StepOneDateRangePicker.js +18 -8
  320. package/dist/src/components/steps/date/StepOneDateRangePicker.js.map +1 -1
  321. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.js +18 -8
  322. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.js.map +1 -1
  323. package/dist/src/components/steps/date/StepOneNextStepButton.js +18 -8
  324. package/dist/src/components/steps/date/StepOneNextStepButton.js.map +1 -1
  325. package/dist/src/components/steps/date/StepOneStatusPeople.js +18 -8
  326. package/dist/src/components/steps/date/StepOneStatusPeople.js.map +1 -1
  327. package/dist/src/components/steps/hotel/HotelCard.js +19 -9
  328. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  329. package/dist/src/components/steps/hotel/HotelCardList.js +1 -1
  330. package/dist/src/components/steps/hotel/HotelCardList.js.map +1 -1
  331. package/dist/src/components/steps/hotel/HotelCardModal.js +17 -7
  332. package/dist/src/components/steps/hotel/HotelCardModal.js.map +1 -1
  333. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js +18 -8
  334. package/dist/src/components/steps/hotel/HotelInfoPerksRow.js.map +1 -1
  335. package/dist/src/components/steps/hotel/HotelSearchParameters.js +17 -7
  336. package/dist/src/components/steps/hotel/HotelSearchParameters.js.map +1 -1
  337. package/dist/src/components/steps/hotel/NoHotelsAvailable.js +1 -1
  338. package/dist/src/components/steps/hotel/NoHotelsAvailable.js.map +1 -1
  339. package/dist/src/components/steps/room/AvailableUpgradesModal.js +17 -7
  340. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  341. package/dist/src/components/steps/room/ImageGallerySlider.js +18 -8
  342. package/dist/src/components/steps/room/ImageGallerySlider.js.map +1 -1
  343. package/dist/src/components/steps/room/InactivityWindow.js +17 -7
  344. package/dist/src/components/steps/room/InactivityWindow.js.map +1 -1
  345. package/dist/src/components/steps/room/LargeRoomCard.js +17 -7
  346. package/dist/src/components/steps/room/LargeRoomCard.js.map +1 -1
  347. package/dist/src/components/steps/room/NoRoomsFoundBlock.js +18 -8
  348. package/dist/src/components/steps/room/NoRoomsFoundBlock.js.map +1 -1
  349. package/dist/src/components/steps/room/RatesNotFoundBlock.js +1 -1
  350. package/dist/src/components/steps/room/RatesNotFoundBlock.js.map +1 -1
  351. package/dist/src/components/steps/room/RoomList.js +18 -8
  352. package/dist/src/components/steps/room/RoomList.js.map +1 -1
  353. package/dist/src/components/steps/room/RoomListAlert.js +17 -7
  354. package/dist/src/components/steps/room/RoomListAlert.js.map +1 -1
  355. package/dist/src/components/steps/room/RoomListCrossSellBlock.js +18 -8
  356. package/dist/src/components/steps/room/RoomListCrossSellBlock.js.map +1 -1
  357. package/dist/src/components/steps/room/RoomModal.js +18 -8
  358. package/dist/src/components/steps/room/RoomModal.js.map +1 -1
  359. package/dist/src/components/steps/room/RoomModalPerkRow.js +18 -8
  360. package/dist/src/components/steps/room/RoomModalPerkRow.js.map +1 -1
  361. package/dist/src/components/steps/room/StepRoomAlertBlocks.js +18 -8
  362. package/dist/src/components/steps/room/StepRoomAlertBlocks.js.map +1 -1
  363. package/dist/src/components/steps/room/StepRoomBestRateAlert.js +18 -8
  364. package/dist/src/components/steps/room/StepRoomBestRateAlert.js.map +1 -1
  365. package/dist/src/components/steps/room/StepRoomErrorForm.js +17 -7
  366. package/dist/src/components/steps/room/StepRoomErrorForm.js.map +1 -1
  367. package/dist/src/components/steps/room/StepRoomHotelDetails.js +18 -8
  368. package/dist/src/components/steps/room/StepRoomHotelDetails.js.map +1 -1
  369. package/dist/src/components/steps/room/StepRoomNextStepButton.js +18 -8
  370. package/dist/src/components/steps/room/StepRoomNextStepButton.js.map +1 -1
  371. package/dist/src/components/steps/room/StepRoomSortBy.js +18 -8
  372. package/dist/src/components/steps/room/StepRoomSortBy.js.map +1 -1
  373. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js +18 -8
  374. package/dist/src/components/steps/room/StepRoomSummaryAndButton.js.map +1 -1
  375. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +17 -7
  376. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  377. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js +17 -7
  378. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.js.map +1 -1
  379. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js +17 -7
  380. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.js.map +1 -1
  381. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js +17 -7
  382. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.js.map +1 -1
  383. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js +17 -7
  384. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.js.map +1 -1
  385. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js +17 -7
  386. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.js.map +1 -1
  387. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +17 -7
  388. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  389. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js +1 -1
  390. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.js.map +1 -1
  391. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js +1 -1
  392. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.js.map +1 -1
  393. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js +1 -1
  394. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.js.map +1 -1
  395. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js +18 -8
  396. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.js.map +1 -1
  397. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +18 -8
  398. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  399. package/dist/src/components/steps/room/roomDetails/RoomDetails.js +18 -8
  400. package/dist/src/components/steps/room/roomDetails/RoomDetails.js.map +1 -1
  401. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js +18 -9
  402. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.js.map +1 -1
  403. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js +18 -9
  404. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.js.map +1 -1
  405. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js +18 -8
  406. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.js.map +1 -1
  407. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js +17 -7
  408. package/dist/src/components/steps/room/roomDetails/RoomDetailsRetargeting.js.map +1 -1
  409. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js +18 -8
  410. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.js.map +1 -1
  411. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js +18 -8
  412. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.js.map +1 -1
  413. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +18 -8
  414. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  415. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js +18 -8
  416. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.js.map +1 -1
  417. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js +18 -8
  418. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.js.map +1 -1
  419. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js +19 -9
  420. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.js.map +1 -1
  421. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js +17 -7
  422. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.js.map +1 -1
  423. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js +18 -8
  424. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.js.map +1 -1
  425. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js +18 -8
  426. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.js.map +1 -1
  427. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js +18 -8
  428. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.js.map +1 -1
  429. package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.js +20 -10
  430. package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.js.map +1 -1
  431. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js +18 -8
  432. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.js.map +1 -1
  433. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js +18 -8
  434. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.js.map +1 -1
  435. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.js +18 -8
  436. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.js.map +1 -1
  437. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.js +18 -8
  438. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.js.map +1 -1
  439. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js +18 -8
  440. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.js.map +1 -1
  441. package/dist/src/components/summary/BEMapWidget.d.ts +0 -2
  442. package/dist/src/components/summary/BEMapWidget.js +17 -7
  443. package/dist/src/components/summary/BEMapWidget.js.map +1 -1
  444. package/dist/src/components/summary/BEMobileSummary.js +18 -8
  445. package/dist/src/components/summary/BEMobileSummary.js.map +1 -1
  446. package/dist/src/components/summary/BEMobileSummaryModal.js +18 -8
  447. package/dist/src/components/summary/BEMobileSummaryModal.js.map +1 -1
  448. package/dist/src/components/summary/BESummary.js +19 -9
  449. package/dist/src/components/summary/BESummary.js.map +1 -1
  450. package/dist/src/components/summary/BESummaryAddonRow.js +18 -8
  451. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  452. package/dist/src/components/summary/BESummaryPerkBlock.js +19 -9
  453. package/dist/src/components/summary/BESummaryPerkBlock.js.map +1 -1
  454. package/dist/src/components/summary/BESummaryPrivacyPolicy.js +18 -8
  455. package/dist/src/components/summary/BESummaryPrivacyPolicy.js.map +1 -1
  456. package/dist/src/components/summary/BESummaryRoomRow.js +18 -8
  457. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  458. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js +18 -8
  459. package/dist/src/components/summary/TransportDistanceFromHotelBlock.js.map +1 -1
  460. package/dist/src/containers/PrivateRoute.js.map +1 -1
  461. package/dist/src/contexts/BasketContext/BasketContext.d.ts +0 -1
  462. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +36 -16
  463. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  464. package/dist/src/contexts/BookingEngineContext/BookingEngineContext.d.ts +0 -1
  465. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js +18 -9
  466. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.js.map +1 -1
  467. package/dist/src/contexts/CompanyContext/CompanyContext.d.ts +0 -1
  468. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +21 -11
  469. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  470. package/dist/src/contexts/ConfirmationFormContext.js +19 -9
  471. package/dist/src/contexts/ConfirmationFormContext.js.map +1 -1
  472. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContext.d.ts +0 -1
  473. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +25 -15
  474. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  475. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.js +17 -7
  476. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.js.map +1 -1
  477. package/dist/src/contexts/ErrorContext.js +19 -9
  478. package/dist/src/contexts/ErrorContext.js.map +1 -1
  479. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js +1 -2
  480. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.js.map +1 -1
  481. package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.js +18 -9
  482. package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.js.map +1 -1
  483. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContext.d.ts +0 -1
  484. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +18 -9
  485. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  486. package/dist/src/contexts/HotelOverridesContext.js +17 -7
  487. package/dist/src/contexts/HotelOverridesContext.js.map +1 -1
  488. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.d.ts +1 -2
  489. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js +1 -1
  490. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContext.js.map +1 -1
  491. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js +17 -7
  492. package/dist/src/contexts/Members/AuthenticationContext/AuthenticationContextProvider.js.map +1 -1
  493. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContext.d.ts +0 -1
  494. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js +17 -7
  495. package/dist/src/contexts/Members/RoomstayMemberContext/RoomstayMemberContextProvider.js.map +1 -1
  496. package/dist/src/contexts/ModalContext.js +18 -9
  497. package/dist/src/contexts/ModalContext.js.map +1 -1
  498. package/dist/src/contexts/NotificationContext.js +19 -9
  499. package/dist/src/contexts/NotificationContext.js.map +1 -1
  500. package/dist/src/engines/BaseEngine.js +1 -1
  501. package/dist/src/engines/BaseEngine.js.map +1 -1
  502. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +1 -1
  503. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
  504. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngine.js +17 -7
  505. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngine.js.map +1 -1
  506. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js +18 -8
  507. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.js.map +1 -1
  508. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +16 -16
  509. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +20 -10
  510. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  511. package/dist/src/engines/MemberPortalWidget/MemberPortalWidget.js.map +1 -1
  512. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js +18 -8
  513. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.js.map +1 -1
  514. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js +17 -7
  515. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.js.map +1 -1
  516. package/dist/src/events/RoomstayEventManager.js +1 -1
  517. package/dist/src/events/RoomstayEventManager.js.map +1 -1
  518. package/dist/src/handlers/BasketContextErrorHandler.d.ts +1 -1
  519. package/dist/src/handlers/BasketContextErrorHandler.js.map +1 -1
  520. package/dist/src/handlers/payment/AdyenPaymentHandler.js +17 -7
  521. package/dist/src/handlers/payment/AdyenPaymentHandler.js.map +1 -1
  522. package/dist/src/handlers/payment/PlanpayPaymentHandler.js +17 -7
  523. package/dist/src/handlers/payment/PlanpayPaymentHandler.js.map +1 -1
  524. package/dist/src/handlers/payment/VGSMemberPaymentHandler.js.map +1 -1
  525. package/dist/src/handlers/payment/VGSPaymentHandler.js +19 -9
  526. package/dist/src/handlers/payment/VGSPaymentHandler.js.map +1 -1
  527. package/dist/src/hooks/AutoFocusOnSelect.d.ts +0 -1
  528. package/dist/src/hooks/AutoFocusOnSelect.js.map +1 -1
  529. package/dist/src/hooks/BodyClickHook.js.map +1 -1
  530. package/dist/src/hooks/CombineState.d.ts +1 -1
  531. package/dist/src/hooks/Currency.js.map +1 -1
  532. package/dist/src/hooks/CurrentHotelHook.js.map +1 -1
  533. package/dist/src/hooks/ElementSortHook.js +17 -7
  534. package/dist/src/hooks/ElementSortHook.js.map +1 -1
  535. package/dist/src/hooks/HistoryConsistentPush.js +1 -2
  536. package/dist/src/hooks/HistoryConsistentPush.js.map +1 -1
  537. package/dist/src/hooks/KeyboardControlOnSelect.d.ts +2 -2
  538. package/dist/src/hooks/KeyboardControlOnSelect.js.map +1 -1
  539. package/dist/src/hooks/LoggedInUserHook.js.map +1 -1
  540. package/dist/src/hooks/Planpay.d.ts +1 -1
  541. package/dist/src/hooks/Query.js +2 -3
  542. package/dist/src/hooks/Query.js.map +1 -1
  543. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
  544. package/dist/src/hooks/UpdateQueryParameters.js +1 -2
  545. package/dist/src/hooks/UpdateQueryParameters.js.map +1 -1
  546. package/dist/src/hooks/VGSHooks.d.ts +0 -1
  547. package/dist/src/hooks/VGSHooks.js.map +1 -1
  548. package/dist/src/hooks/useCalendarNightStay.js +3 -3
  549. package/dist/src/hooks/useCalendarNightStay.js.map +1 -1
  550. package/dist/src/hooks/useNextStepAction.js +21 -11
  551. package/dist/src/hooks/useNextStepAction.js.map +1 -1
  552. package/dist/src/hooks/usePlanpayRawPrice.js.map +1 -1
  553. package/dist/src/hooks/useRateDetails.js.map +1 -1
  554. package/dist/src/hooks/useSearchScopeHook.d.ts +1 -1
  555. package/dist/src/hooks/useSearchScopeHook.js.map +1 -1
  556. package/dist/src/index.d.ts +1 -1
  557. package/dist/src/mockApi/AddonAPI.js.map +1 -1
  558. package/dist/src/mockApi/MemberAPI.js +17 -7
  559. package/dist/src/mockApi/MemberAPI.js.map +1 -1
  560. package/dist/src/mockApi/MockAPI.js +5 -5
  561. package/dist/src/mockApi/MockAPI.js.map +1 -1
  562. package/dist/src/mockApi/ReservationAPI.js +18 -8
  563. package/dist/src/mockApi/ReservationAPI.js.map +1 -1
  564. package/dist/src/models/Addon/Addon.js.map +1 -1
  565. package/dist/src/models/Api/HotelDTO.js +1 -1
  566. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  567. package/dist/src/models/AppQueryParameters.js +1 -1
  568. package/dist/src/models/AppQueryParameters.js.map +1 -1
  569. package/dist/src/models/BasketAddonRow.js.map +1 -1
  570. package/dist/src/models/BasketRow.d.ts +2 -1
  571. package/dist/src/models/BasketRow.js +4 -3
  572. package/dist/src/models/BasketRow.js.map +1 -1
  573. package/dist/src/models/Client/Hotel/DistanceUnitType.types.js +1 -1
  574. package/dist/src/models/Client/Hotel/DistanceUnitType.types.js.map +1 -1
  575. package/dist/src/models/Client/Hotel/Hotel.js +1 -1
  576. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  577. package/dist/src/models/Client/Hotel/HotelDataSource.types.js +1 -1
  578. package/dist/src/models/Client/Hotel/HotelDataSource.types.js.map +1 -1
  579. package/dist/src/models/Client/Hotel/WeekdayStartsOn.types.js +1 -1
  580. package/dist/src/models/Client/Hotel/WeekdayStartsOn.types.js.map +1 -1
  581. package/dist/src/models/Confirmation.js +2 -2
  582. package/dist/src/models/Confirmation.js.map +1 -1
  583. package/dist/src/models/CountryCodesAndNumbers.js +3 -3
  584. package/dist/src/models/CountryCodesAndNumbers.js.map +1 -1
  585. package/dist/src/models/Fee.js +4 -5
  586. package/dist/src/models/Fee.js.map +1 -1
  587. package/dist/src/models/PaymentCard.js +1 -1
  588. package/dist/src/models/PaymentCard.js.map +1 -1
  589. package/dist/src/models/Room/Filters/BudgetFilter.js.map +1 -1
  590. package/dist/src/models/Room/Filters/RoomTypeFilter.js.map +1 -1
  591. package/dist/src/models/Room/Room.js.map +1 -1
  592. package/dist/src/models/Room/RoomRate.js +1 -1
  593. package/dist/src/models/Room/RoomRate.js.map +1 -1
  594. package/dist/src/pages/account/AccountHome/AccountHomePage.js +17 -7
  595. package/dist/src/pages/account/AccountHome/AccountHomePage.js.map +1 -1
  596. package/dist/src/pages/account/AccountRoutes.js +1 -1
  597. package/dist/src/pages/account/AccountRoutes.js.map +1 -1
  598. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js +17 -7
  599. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.js.map +1 -1
  600. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js +17 -7
  601. package/dist/src/pages/account/Details/AccountDetailsCardsPage.js.map +1 -1
  602. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js +17 -7
  603. package/dist/src/pages/account/Details/AccountDetailsNoCardsPage.js.map +1 -1
  604. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js +17 -7
  605. package/dist/src/pages/account/Details/AccountDetailsProfilePage.js.map +1 -1
  606. package/dist/src/pages/account/Help/AccountHelpPage.js +17 -7
  607. package/dist/src/pages/account/Help/AccountHelpPage.js.map +1 -1
  608. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js +17 -7
  609. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.js.map +1 -1
  610. package/dist/src/pages/findReservation/FindReservation.js +19 -9
  611. package/dist/src/pages/findReservation/FindReservation.js.map +1 -1
  612. package/dist/src/pages/findReservation/FindReservationResults.js +18 -8
  613. package/dist/src/pages/findReservation/FindReservationResults.js.map +1 -1
  614. package/dist/src/pages/findReservation/ReservationRow.js +18 -8
  615. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  616. package/dist/src/pages/findReservation/ReservationRowModal.js +18 -8
  617. package/dist/src/pages/findReservation/ReservationRowModal.js.map +1 -1
  618. package/dist/src/pages/hotel/HotelInfo.js +20 -10
  619. package/dist/src/pages/hotel/HotelInfo.js.map +1 -1
  620. package/dist/src/pages/hotel/HotelInfoPlaceholder.js +1 -1
  621. package/dist/src/pages/hotel/HotelInfoPlaceholder.js.map +1 -1
  622. package/dist/src/pages/steps/StepAddon/StepAddon.js.map +1 -1
  623. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +18 -8
  624. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
  625. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js +17 -7
  626. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js.map +1 -1
  627. package/dist/src/pages/steps/StepConfirmation/StepConfirmation.js.map +1 -1
  628. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +17 -7
  629. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
  630. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js +18 -8
  631. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js.map +1 -1
  632. package/dist/src/pages/steps/StepConfirmation/StepConfirmationValidator.js.map +1 -1
  633. package/dist/src/pages/steps/StepDate/StepDate.js.map +1 -1
  634. package/dist/src/pages/steps/StepDate/StepDateComponent.js +17 -7
  635. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  636. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoom.js.map +1 -1
  637. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js +17 -7
  638. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js.map +1 -1
  639. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.js +18 -8
  640. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.js.map +1 -1
  641. package/dist/src/pages/steps/StepGuide.js +18 -8
  642. package/dist/src/pages/steps/StepGuide.js.map +1 -1
  643. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +17 -7
  644. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  645. package/dist/src/pages/steps/StepHotel/StepHotelLoader.js +17 -7
  646. package/dist/src/pages/steps/StepHotel/StepHotelLoader.js.map +1 -1
  647. package/dist/src/pages/steps/StepRoom/StepRoom.js.map +1 -1
  648. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +17 -7
  649. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
  650. package/dist/src/pages/steps/StepRoom/StepRoomFilters.js +17 -7
  651. package/dist/src/pages/steps/StepRoom/StepRoomFilters.js.map +1 -1
  652. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js +18 -8
  653. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js.map +1 -1
  654. package/dist/src/pages/steps/StepRoom/StepRoomValidator.js.map +1 -1
  655. package/dist/src/pages/steps/StepThanks/StepThanks.js.map +1 -1
  656. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +18 -8
  657. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  658. package/dist/src/pages/steps/StepThanks/StepThanksValidator.js.map +1 -1
  659. package/dist/src/providers/CurrencyProvider.js +1 -1
  660. package/dist/src/providers/CurrencyProvider.js.map +1 -1
  661. package/dist/src/providers/DIProvider.js +2 -3
  662. package/dist/src/providers/DIProvider.js.map +1 -1
  663. package/dist/src/providers/DistanceProvider.js.map +1 -1
  664. package/dist/src/providers/FeatureProvider.js +1 -1
  665. package/dist/src/providers/FeatureProvider.js.map +1 -1
  666. package/dist/src/providers/FilterProvider.d.ts +1 -1
  667. package/dist/src/providers/FilterProvider.js +3 -3
  668. package/dist/src/providers/FilterProvider.js.map +1 -1
  669. package/dist/src/providers/ImageProvider.js +1 -1
  670. package/dist/src/providers/ImageProvider.js.map +1 -1
  671. package/dist/src/providers/LanguageProvider.js +1 -1
  672. package/dist/src/providers/LanguageProvider.js.map +1 -1
  673. package/dist/src/providers/PromotionProvider.d.ts +1 -1
  674. package/dist/src/providers/PromotionProvider.js.map +1 -1
  675. package/dist/src/providers/RatePillProvider.js.map +1 -1
  676. package/dist/src/providers/RoomSortProvider.js +2 -2
  677. package/dist/src/providers/RoomSortProvider.js.map +1 -1
  678. package/dist/src/providers/RoomstayThemeEngine.js +18 -8
  679. package/dist/src/providers/RoomstayThemeEngine.js.map +1 -1
  680. package/dist/src/providers/feature/DerbysoftClickTrackingFeature.js.map +1 -1
  681. package/dist/src/providers/feature/GuestTitleFieldFeature.js.map +1 -1
  682. package/dist/src/providers/feature/InlineAddonStepFeature.js.map +1 -1
  683. package/dist/src/providers/feature/MemberPortalFeature.js.map +1 -1
  684. package/dist/src/providers/storage/SessionProvider.js.map +1 -1
  685. package/dist/src/providers/storage/StorageProvider.d.ts +1 -1
  686. package/dist/src/providers/storage/StorageProvider.js +17 -7
  687. package/dist/src/providers/storage/StorageProvider.js.map +1 -1
  688. package/dist/src/reducers/BasketReducer.js.map +1 -1
  689. package/dist/src/stories/BookingWizard.stories.d.ts +2 -2
  690. package/dist/src/stories/Card.stories.d.ts +3 -5
  691. package/dist/src/stories/CardTypeSelect.stories.d.ts +2 -1
  692. package/dist/src/stories/Checkbox.stories.d.ts +2 -1
  693. package/dist/src/stories/ConfirmationModal.stories.js +17 -7
  694. package/dist/src/stories/ConfirmationModal.stories.js.map +1 -1
  695. package/dist/src/stories/DateRangePicker.stories.js +17 -7
  696. package/dist/src/stories/DateRangePicker.stories.js.map +1 -1
  697. package/dist/src/stories/EnhancedPhoneNumberField.stories.d.ts +2 -1
  698. package/dist/src/stories/ErrorModal.stories.js +17 -7
  699. package/dist/src/stories/ErrorModal.stories.js.map +1 -1
  700. package/dist/src/stories/EventCarousel.stories.d.ts +2 -2
  701. package/dist/src/stories/FloatingDateRangePicker.stories.d.ts +2 -2
  702. package/dist/src/stories/FloatingDateRangePicker.stories.js +17 -7
  703. package/dist/src/stories/FloatingDateRangePicker.stories.js.map +1 -1
  704. package/dist/src/stories/ForwardedSelect.stories.d.ts +2 -1
  705. package/dist/src/stories/Icon.stories.js +17 -7
  706. package/dist/src/stories/Icon.stories.js.map +1 -1
  707. package/dist/src/stories/IconNavCard.stories.d.ts +6 -15
  708. package/dist/src/stories/IconText.stories.js +17 -7
  709. package/dist/src/stories/IconText.stories.js.map +1 -1
  710. package/dist/src/stories/NumberIncrement.stories.js +17 -7
  711. package/dist/src/stories/NumberIncrement.stories.js.map +1 -1
  712. package/dist/src/stories/PasswordBox.stories.d.ts +2 -1
  713. package/dist/src/stories/PaymentCard.stories.d.ts +2 -1
  714. package/dist/src/stories/PaymentCardInput.stories.d.ts +2 -1
  715. package/dist/src/stories/PlanpayButton.stories.d.ts +2 -1
  716. package/dist/src/stories/RadioButton.stories.d.ts +2 -1
  717. package/dist/src/stories/RadioButtonGroup.stories.d.ts +2 -3
  718. package/dist/src/stories/RadioButtonGroup.stories.js +17 -7
  719. package/dist/src/stories/RadioButtonGroup.stories.js.map +1 -1
  720. package/dist/src/stories/Select.stories.d.ts +2 -4
  721. package/dist/src/stories/Select.stories.js +17 -7
  722. package/dist/src/stories/Select.stories.js.map +1 -1
  723. package/dist/src/stories/SimpleModal.stories.js +17 -7
  724. package/dist/src/stories/SimpleModal.stories.js.map +1 -1
  725. package/dist/src/stories/Slider.stories.d.ts +2 -7
  726. package/dist/src/stories/Slider.stories.js +17 -7
  727. package/dist/src/stories/Slider.stories.js.map +1 -1
  728. package/dist/src/stories/TabbedModal.stories.js +17 -7
  729. package/dist/src/stories/TabbedModal.stories.js.map +1 -1
  730. package/dist/src/stories/Tabs.stories.d.ts +2 -2
  731. package/dist/src/stories/Text.stories.d.ts +2 -1
  732. package/dist/src/stories/TextArea.stories.d.ts +2 -1
  733. package/dist/src/stories/TextBox.stories.d.ts +2 -1
  734. package/dist/src/translations/Translation.d.ts +1 -0
  735. package/dist/src/translations/Translation.js +3 -2
  736. package/dist/src/translations/Translation.js.map +1 -1
  737. package/dist/src/translations/languages/en-gb.js +1 -0
  738. package/dist/src/translations/languages/en-gb.js.map +1 -1
  739. package/dist/src/util/Analytics/GoogleAnalytics4.js.map +1 -1
  740. package/dist/src/util/Analytics/UniversalAnalytics.js.map +1 -1
  741. package/dist/src/util/AsyncAuth.js +17 -7
  742. package/dist/src/util/AsyncAuth.js.map +1 -1
  743. package/dist/src/util/CalendarHelper.js +1 -1
  744. package/dist/src/util/CalendarHelper.js.map +1 -1
  745. package/dist/src/util/Color.d.ts +1 -1
  746. package/dist/src/util/Color.js +1 -1
  747. package/dist/src/util/Color.js.map +1 -1
  748. package/dist/src/util/CurrencyHelper.js.map +1 -1
  749. package/dist/src/util/DataLayer.js +4 -4
  750. package/dist/src/util/DataLayer.js.map +1 -1
  751. package/dist/src/util/Debounce.js +2 -3
  752. package/dist/src/util/Debounce.js.map +1 -1
  753. package/dist/src/util/DefaultValueManager.js +1 -1
  754. package/dist/src/util/DefaultValueManager.js.map +1 -1
  755. package/dist/src/util/DerbysoftPixel.js +2 -2
  756. package/dist/src/util/DerbysoftPixel.js.map +1 -1
  757. package/dist/src/util/EventsHelper.d.ts +2 -2
  758. package/dist/src/util/EventsHelper.js.map +1 -1
  759. package/dist/src/util/HotelPerkHelper.js +17 -7
  760. package/dist/src/util/HotelPerkHelper.js.map +1 -1
  761. package/dist/src/util/ObjectHelper.d.ts +1 -1
  762. package/dist/src/util/ObjectHelper.js.map +1 -1
  763. package/dist/src/util/PaymentCardHelper.js.map +1 -1
  764. package/dist/src/util/RouteManager.js +1 -1
  765. package/dist/src/util/RouteManager.js.map +1 -1
  766. package/dist/src/util/StepManager.js +1 -1
  767. package/dist/src/util/StepManager.js.map +1 -1
  768. package/dist/src/util/StringHelper.js.map +1 -1
  769. package/dist/src/util/TextAlignment.js +1 -1
  770. package/dist/src/util/TextAlignment.js.map +1 -1
  771. package/dist/src/util/TimeHelper.js.map +1 -1
  772. package/dist/test.bundle.js +1 -1
  773. package/dist/tests/offline/entry/config/hotelSpecDefault.js.map +1 -1
  774. package/dist/vendors.bundle.js +1 -1
  775. package/package.json +7 -4
@@ -1 +1 @@
1
- (("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[430],{72258:function(e,t,n){"use strict";n.d(t,{Z:function(){return y}});var r=n(70885),o=n(4918),a=n(67294),l=n(26793),i=n(79478),c=n(1126),m=n(83893),s=n(20858),u=n(13010),d=n(78886),p=n(64485),A=n(30584),g=n(57133),f=n(44744),v=n(97754),C=n(90292);function y(e){var t=(0,l.$)().t,n=(0,a.useContext)(o.g7),y=(0,a.useContext)(o.hy),h=(0,a.useState)(!1),E=(0,r.Z)(h,2),b=E[0],_=E[1],x=(0,a.useState)(!0),S=(0,r.Z)(x,2),B=S[0],Z=S[1],k=(0,a.useState)(!0),R=(0,r.Z)(k,2),w=R[0],O=R[1],P=(0,a.useState)(""),N=(0,r.Z)(P,2),D=N[0],j=N[1],I=(0,a.useState)(""),M=(0,r.Z)(I,2),F=M[0],W=M[1],L=(0,a.useState)(""),z=(0,r.Z)(L,2),U=z[0],T=z[1],G=(0,a.useState)(""),Y=(0,r.Z)(G,2),q=Y[0],J=Y[1],Q=(0,a.useState)([]),V=(0,r.Z)(Q,2),H=V[0],$=V[1],X=(0,g.t)().memberNumber;return(0,a.useEffect)((function(){var t=y.selectedBasketRow;t&&m.Z.Availability.getCheapestPricePerDay(t.getStartDate(),t.getEndDate(),t.getAdults(),t.getChildren(),t.getInfants(),t.getPromoCode(),t.getRoomCode(),e.hotelId,X,!0).catch().then((function(n){if(n){for(var r=!0,o=t.getStartDate();o.isBefore(t.getEndDate(),"day");o=o.add(1,"day"))if(!n[o.format(c.yJ)]){r=!1;break}if(_(r),Z(!0),r){O(!0);var a=m.Z.Availability.getCrossSellHotelInfo(e.hotelId);W(a.name),j(a.image||""),T(a.description);var l=["arrive="+t.getStartDate().format("YYYY-M-D"),"depart="+t.getEndDate().format("YYYY-M-D")];t.getAdults()>1&&l.push("adults="+t.getAdults()),t.getChildren()>0&&l.push("children="+t.getChildren()),t.getInfants()>0&&l.push("infants="+t.getInfants()),t.getPromoCode()&&l.push("promocode="+t.getPromoCode()),J(a.checkoutUrl+"#/step/room/?"+l.join("&")),m.Z.Availability.fetchAvailabilityData(t,e.hotelId,X,!0).catch((function(e){return[]})).then((function(e){null!=e&&e.length?($(e),O(!1)):(Z(!1),O(!1))}))}}}))}),[y.selectedBasketRow]),b?a.createElement("div",{className:"u-marg-top--heavy u-marg-bottom"},a.createElement("div",{className:"cross-sell-module"},a.createElement("div",{className:"cross-sell-module--image",style:{backgroundImage:"url('".concat(f.Z.resizeImage(D,f.h.Original),"')")}}),a.createElement("div",{className:"cross-sell-module--content u-pad--heavy u-pad@m-"},a.createElement("div",{className:"u-marg-bottom--heavy"},a.createElement("div",{className:"cross-sell-module--content-title u-marg-bottom--light"},a.createElement(u.Z,{bold:!0,size:B?"large":"normal"},t(w?i.W.Step.Room.CrossSellBlock.AvailabilityNearBy1:B?i.W.Step.Room.CrossSellBlock.AvailabilityNearBy2:i.W.Step.Room.CrossSellBlock.DateUnavailable))),B&&a.createElement("div",{className:"cross-sell-module--content-description u-marg-bottom--light"},a.createElement(A.ZP,{color:v.Il.DarkGrey,type:A.yG.Body},a.createElement("strong",{style:{color:v.Il.Accent}},F),a.createElement("div",{dangerouslySetInnerHTML:{__html:U}})))),w?a.createElement(p.Z,null):a.createElement(a.Fragment,null,H.slice(0,4).map((function(e,n){var r=q+"&room="+e.code,o="u-flex align-items-end";return n<H.length-1&&(o+=" u-pad-bottom u-border-bottom u-marg-bottom"),a.createElement("a",{key:e.code,className:o,href:r,target:"_blank",rel:"noreferrer"},a.createElement("div",{className:"u-flex flex-column align-items-start justify-content-start"},a.createElement(A.ZP,{type:A.yG.Body,color:v.Il.Accent,bold:!0},e.name),a.createElement(A.ZP,{type:A.yG.Small,color:v.Il.DarkGrey},t(i.W.Step.Room.Sleeps,{maxOccupancy:e.occupancy}))),a.createElement("div",{className:"u-flex flex-column align-items-end align-items-md-end"},a.createElement(A.ZP,{type:A.yG.Small,color:v.Il.DarkGrey,inline:!0},t(i.W.Misc.From)),a.createElement(A.ZP,{type:A.yG.Body,color:v.Il.Accent,bold:!0},a.createElement(s.Z,null,e.getLowestPrice(!0)))))}))),B&&a.createElement("div",{className:"u-marg-top--light u-flex justify-content-start u-w-100@m- u-marg-top--heavy"},a.createElement("a",{className:"link-button --primary --filled --success --icon-right --normal"+(n.screenSize<=C.Z.Medium?" --wide":""),tabIndex:0,type:"button",href:q,target:"_blank",rel:"noreferrer"},a.createElement("span",null,"See all ",H.length," rooms",a.createElement(d.ZP,{icon:d.Tu.ArrowRight,size:"1em"}))))))):null}},32458:function(e,t,n){"use strict";n.d(t,{Z:function(){return y}});var r=n(42982),o=n(4918),a=n(89331),l=n(67294),i=n(26793),c=n(79478),m=n(13010),s=n(78886),u=n(19874),d=n(65128),p=n(30584),A=n(40291),g=n(98013),f=n(8643),v=n(97754),C=n(98631);function y(e){var t,n=(0,l.useContext)(o.O8).roomModalDescSideBySide,y=(0,i.$)().t,h=(0,a.WP)().hotel,E=h.rooms,b=e.room.getRoomPerks({hotel:h,room:e.room}),_=b.roomPerks,x=b.prePerkDisclaimer,S=null==E?void 0:E[e.room.code],B=null!=S&&S.amenities?(0,r.Z)(S.amenities):[];null!=S&&null!==(t=S.features)&&void 0!==t&&t.length&&S.features.forEach((function(e){B.push(e)}));var Z=(null==x?void 0:x.replace(/<br(\/|)>/g,""))||"",k=function(){return l.createElement("div",{className:"u-marg-bottom--heavy rs-room-modal-long-description"},l.createElement(p.ZP,{type:p.yG.Small,color:v.Il.Graphite},l.createElement("span",{dangerouslySetInnerHTML:{__html:e.room.getLongDescription()||""}})))};return l.createElement(d.Z,{title:e.room.name+" "+y(c.W.Step.Room.RoomInfo.Information),open:e.open,size:d.g.Small,onClose:e.onClose},l.createElement("div",{className:"rs-room-modal"},l.createElement("div",{style:{height:"350px"}},l.createElement(A.Z,{images:e.room.getImages()})),l.createElement("div",{className:"u-marg-heavy u-marg@m- rs-room-modal-container"},l.createElement("div",{className:"u-marg-bottom--light rs-room-modal-headline"},l.createElement(m.Z,{bold:!0,size:"large"},e.room.name)),l.createElement(g.R,{room:e.room}),l.createElement("div",{className:"u-marg-bottom--heavy rs-room-modal-short-description"},l.createElement(p.ZP,{color:v.Il.DarkGrey,type:p.yG.Small},l.createElement("span",{dangerouslySetInnerHTML:{__html:e.room.getShortDescription(!1)||""}}))),n?l.createElement(l.Fragment,null,l.createElement(k,null),l.createElement(u.Z,null)):null,!(null!=h&&h.perksHideOnRoomDetail)&&_&&l.createElement("div",{className:"u-marg-bottom--heavy rs-room-modal-perks"},l.createElement("div",{className:"row"},l.createElement(C.Z,{hotel:h,room:e.room,roomPerks:_})),(null==h?void 0:h.perksShowDisclaimer)&&l.createElement("div",{className:"row u-marg-top--lighter"},l.createElement("small",{className:"col-12"},y(c.W.Misc.PerksDisclaimer)))),!(null==B||!B.length)&&l.createElement(l.Fragment,null,l.createElement("div",{className:"u-marg-bottom"},l.createElement(p.ZP,{color:v.Il.Accent,type:p.yG.Small},l.createElement("strong",null,y(c.W.Step.Room.RoomInfo.RoomAmenities)))),l.createElement("div",{className:"row"},B.map((function(e){return l.createElement("div",{key:e.description,className:"col-sm-6 u-marg-bottom--light u-flex justify-content-start"},l.createElement(s.ZP,{icon:s.Tu.Check,color:v.Il.White,backgroundColor:v.Il.Navy,borderRadius:"round",noPadding:!0,size:"16px"}),l.createElement("div",{className:"u-marg-left--light u-flex"},l.createElement(p.ZP,{type:p.yG.Small,inline:!0},e.description)))})))),l.createElement(u.Z,null),n?null:l.createElement(k,null),!!Z&&l.createElement("div",{className:"u-marg-bottom--heavy rs-room-modal-disclaimer"},l.createElement(p.ZP,{type:p.yG.Small},l.createElement("strong",null,y(c.W.Step.Room.RoomInfo.Disclaimer))),l.createElement(p.ZP,{type:p.yG.Small},l.createElement("span",{dangerouslySetInnerHTML:{__html:Z}})))),l.createElement(f.Z,{featuredRates:e.featuredRates,rates:e.rates,roomCode:e.room.code})))}},49368:function(e,t,n){"use strict";n.d(t,{F:function(){return B}});var r=n(87462),o=n(15861),a=n(70885),l=n(64687),i=n.n(l),c=n(4918),m=n(27484),s=n.n(m),u=n(67294),d=n(87536),p=n(26793),A=n(79478),g=n(79740),f=n(83893),v=n(87933),C=n(64854),y=n(13010),h=n(78886),E=n(30584),b=n(41432),_=n(514),x=n(97754),S=n(16431),B=function(){var e=(0,d.cI)(),t=e.register,n=e.handleSubmit,l=e.formState,m=(0,_.W)().hotel,B=(0,u.useContext)(c.hy),Z=(0,p.$)().t,k=(0,u.useState)({}),R=(0,a.Z)(k,2),w=R[0],O=R[1],P=(0,u.useState)(!1),N=(0,a.Z)(P,2),D=N[0],j=N[1],I=function(){var e=(0,o.Z)(i().mark((function e(t){var n,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return O({}),j(!0),e.prev=2,n=B.selectedBasketRow,r="",[{name:"Adults",value:n.getAdults()},{name:"Children",value:n.getChildren()},{name:"Infants",value:n.getInfants()},{name:"Promo Code",value:n.getPromoCode()},{name:"Dates range",value:n.getStayDateRange("ddd D MMM YYYY"," till ")},{name:"Date Sent",value:s()().format("dd D MMM YYYY")}].forEach((function(e){var t=e.name,n=e.value;n&&(r+="".concat(t,": ").concat(n,"\n"))})),e.next=8,f.Z.Error.sendRoomFallbackForm(null==m?void 0:m.hotelID,{name:t.name,telephone:t.telephone,email:t.email,searchQuery:r});case 8:O({success:!0}),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(2),O({success:!1,message:Z(A.W.Step.Room.ErrorForm.APIError)});case 14:j(!1);case 15:case"end":return e.stop()}}),e,null,[[2,11]])})));return function(t){return e.apply(this,arguments)}}();return u.createElement("div",{className:"u-fill-white u-rounded"},u.createElement("div",{className:"row u-pad--heavy"},u.createElement("div",{className:"col-lg-6 d-flex justify-content-center flex-column"},u.createElement("div",{className:"u-marg-bottom--light"},u.createElement(h.ZP,{icon:h.Tu.Error,color:x.Il.Alert,size:"24px"})),u.createElement("div",{className:"u-marg-bottom--light"},u.createElement(y.Z,{bold:!0,color:x.Il.Alert},u.createElement("span",{style:{color:"inherit"},dangerouslySetInnerHTML:{__html:Z(A.W.Step.Room.ErrorForm.Title)}}))),u.createElement(E.ZP,{type:E.yG.Small},u.createElement("span",{dangerouslySetInnerHTML:{__html:Z(A.W.Step.Room.ErrorForm.Description)}}))),u.createElement("div",{className:"col-lg-6"},u.createElement("form",null,u.createElement(g.Z,{open:!!l.errors},Object.values(l.errors).map((function(e,t){return u.createElement(v.ZP,{key:t,type:v.NK.Danger},u.createElement(E.ZP,{type:E.yG.Small},null==e?void 0:e.message))}))),u.createElement("div",{className:"u-marg-bottom--light u-marg-top"},u.createElement(b.Z,(0,r.Z)({placeholder:Z(A.W.Step.Room.ErrorForm.Inputs.Name)},t("name",{required:{value:!0,message:"".concat(Z(A.W.Step.Room.ErrorForm.Inputs.Name)," is a required field")}})))),u.createElement("div",{className:"u-marg-bottom--light"},u.createElement(b.Z,(0,r.Z)({placeholder:Z(A.W.Step.Room.ErrorForm.Inputs.Email)},t("email",{required:{value:!0,message:"".concat(Z(A.W.Step.Room.ErrorForm.Inputs.Email)," is a required field")},pattern:{value:S.CU,message:"Email must be valid"}})))),u.createElement("div",{className:"u-marg-bottom--light"},u.createElement(b.Z,(0,r.Z)({placeholder:Z(A.W.Step.Room.ErrorForm.Inputs.Telephone)},t("telephone",{required:{value:!0,message:"".concat(Z(A.W.Step.Room.ErrorForm.Inputs.Telephone)," is a required field")}})))),u.createElement(C.Z,{filled:!0,primary:!0,onClick:n(I),isLoading:D,disabled:D||w.success},Z(A.W.Step.Room.ErrorForm.ContactUsButton)),u.createElement(g.Z,{open:!!w.success},u.createElement("div",{className:"u-pad-top"},u.createElement(E.ZP,{color:x.Il.Success},Z(A.W.Step.Room.ErrorForm.ConfirmationMessage)))),u.createElement(g.Z,{open:!1===w.success},u.createElement("div",{className:"u-pad-top"},u.createElement(E.ZP,{color:x.Il.Alert},w.message)))))))}},72870:function(e,t,n){"use strict";n.d(t,{y:function(){return a}});var r=n(4918),o=n(67294),a=function(){var e,t,n=(0,o.useContext)(r.hy).selectedBasketRow;return o.createElement("script",{type:"application/ld+json"},JSON.stringify({"@context":"https://structured-data.triptease.io","@type":"LodgingSearch",checkinTime:null==n||null===(e=n.getStartDate())||void 0===e?void 0:e.format("YYYY-M-D"),checkoutTime:null==n||null===(t=n.getEndDate())||void 0===t?void 0:t.format("YYYY-M-D"),numAdults:null==n?void 0:n.getAdults(),numChildren:null==n?void 0:n.getChildren(),numInfants:null==n?void 0:n.getInfants(),numRooms:"1",offerCode:null==n?void 0:n.getPromoCode()}))}},16318:function(e,t,n){"use strict";n.d(t,{Z:function(){return Y}});var r=n(4942),o=n(70885),a=n(4918),l=n(89331),i=n(94184),c=n.n(i),m=n(67294),s=n(26793),u=n(79740),d=n(64854),p=n(20858),A=n(13010),g=n(78886),f=n(19874),v=n(26573),C=n(30584),y=n(40291),h=n(98013),E=n(42041),b=n(90292);function _(e){var t,n=(0,m.useContext)(a.g7),r=(0,l.WP)().hotel,i=e.perks,s=e.room,u=n.screenSize<=b.Z.Large,d=(0,m.useState)(null===(t=i[0])||void 0===t?void 0:t.name),p=(0,o.Z)(d,2),A=p[0],g=p[1],f=c()("room-perk-icon",{"--has-bg":u});return m.createElement(m.Fragment,null,!(null==i||!i.length)&&m.createElement("ul",null,i.map((function(e,t){if(!(u&&t>=4)){var o=(0,E.W)(e);return m.createElement("li",{key:t,onClick:function(){g(e.name)}},m.createElement("div",{className:f},o),m.createElement("div",{className:"u-marg-right u-none@l- u-block@m- "+(u&&A!==e.name||n.screenSize===b.Z.Tiny?"u-none-2":"")},m.createElement(C.xv,{type:C.yG.Small},null!=e&&e.perkNameRenderer?e.perkNameRenderer({hotel:r,room:s}):e.name)))}}))))}var x=n(57700),S=n(8643),B=n(83966),Z=n(40742),k=n(79478),R=n(97754),w=n(80131),O=n.n(w);function P(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 N(e){var t,n,i=e.room,p=(0,s.$)().t,A=(0,m.useContext)(a.g7),f=A.screenSize,v=A.currentFilters,y=A.setCurrentFilters,h=(0,l.WP)().hotel,E=(0,m.useContext)(a.hy),_=E.currentBasketRows,x=null!==(t=E.selectedBasketRow)&&void 0!==t?t:_[_.length-1],S=(0,m.useState)(void 0),w=(0,o.Z)(S,2),N=w[0],D=w[1],j=(0,m.useState)(void 0),I=(0,o.Z)(j,2),M=I[0],F=I[1],W=(0,m.useState)(!1),L=(0,o.Z)(W,2),z=L[0],U=L[1];return m.createElement(m.Fragment,null,m.createElement("div",{className:c()(O().container,(0,r.Z)({},O().calendarOpen,z))},m.createElement("div",{className:O().info},m.createElement(C.ZP,{bold:!0},p(k.W.Step.Room.RoomInfo.Unfortunately)),m.createElement(C.ZP,{color:R.Il.Accent},null==x?void 0:x.getStartDate().format("ddd, DD MMM")," — ",null==x?void 0:x.getEndDate().format("ddd, DD MMM")),m.createElement(C.ZP,{type:C.yG.Small},p(k.W.Step.Room.RoomInfo.IsUnavailableForRoom,{room:i.name}))),m.createElement(d.Z,{className:O().findDatesBtn,name:"FindAvailableDatesButton",primary:!0,primaryActive:z,filled:!0,icon:z?g.Tu.ArrowUp2:g.Tu.ArrowDown2,iconPosition:"right",stopIconAnimation:!0,textColor:(0,R.pJ)(z?null==h?void 0:h.colors.accent3:null==h?void 0:h.colors.accent),onClick:function(){return U((function(e){return!e}))},size:f<=b.Z.Mobile?"small":"normal"},p(k.W.Step.Room.RoomInfo.FindAvailableDatesForRoom)),m.createElement(u.Z,{open:z,topOffset:21},m.createElement("div",{className:O().calendarOverlay},m.createElement(B.Z,{showMonthOnLoad:x.getStartDate(),showMultipleMonths:f>b.Z.ExtraLarge,supportsMultiSelecting:!0,supportsWeek:!1,className:O().calendar,roomCode:null!==(n=i.code)&&void 0!==n?n:"",small:!0,onStartDateChanged:D,onEndDateChanged:F}),m.createElement("div",{className:O().calendarFooter},m.createElement(C.ZP,{bold:!0,color:N?R.Il.Accent:void 0},N?"".concat(N.format("ddd, DD MMM")).concat(M?" — ".concat(M.format("ddd, DD MMM")):""):p(k.W.Step.Room.RoomInfo.SelectDate)),m.createElement(d.Z,{primary:!0,filled:!0,onClick:function(){if(N&&M&&i.code){E.setStartDate(N),E.setEndDate(M);var e=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach((function(t){(0,r.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},v);e.RoomType=new Z.Z([i.code]),y(e)}},disabled:!(N&&M),mobileWidth:!0},p(k.W.Step.Room.RoomInfo.SelectCheckoutDate)))))))}var D=n(32458),j=n(49723),I=n(46716),M=n(50234),F=n(78361),W=n(73633),L=n(44744),z=n(61715),U=n(84544),T=n(39605);function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Y(e){var t=e.room,n=(0,m.useState)([]),i=(0,o.Z)(n,2),E=i[0],B=i[1],Z=(0,m.useState)([]),w=(0,o.Z)(Z,2),O=w[0],P=w[1],Y=(0,m.useState)(!t.isAvailable()),q=(0,o.Z)(Y,2),J=q[0],Q=q[1],V=(0,m.useState)(!1),H=(0,o.Z)(V,2),$=H[0],X=H[1],K=(0,s.$)().t,ee=(0,m.useContext)(a.g7),te=(0,m.useContext)(a.hy),ne=(0,m.useContext)(a.Qm),re=(0,l.WP)().hotel,oe=(0,m.useContext)(a.O8),ae=c()("room-details",(0,r.Z)({},"+is-open",J));(0,m.useEffect)((function(){var n;null!==(n=te.selectedBasketRow)&&void 0!==n&&n.getRoom()&&te.selectedBasketRow.getRoom().code===e.room.code&&Q(!0);var r=te.selectedBasketRow;r&&U.ZP.instance.addRoomImpression(t,{to:r.getStartDate(),from:r.getEndDate()},r.getPromoCode())}),[te.selectedBasketRow]),(0,m.useEffect)((function(){var e=[],n=[];if(W.Z.isActive()){var r,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return G(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?G(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},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,l=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){i=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(i)throw a}}}}(t.getRates());try{for(o.s();!(r=o.n()).done;){var a,l,i,c=r.value;(null===(a=c.promoCode)||void 0===a?void 0:a.toLowerCase())===(null===(l=te.selectedBasketRow)||void 0===l||null===(i=l.getPromoCode())||void 0===i?void 0:i.toLowerCase())?n.unshift(c):e.push(c)}}catch(e){o.e(e)}finally{o.f()}n.length>0&&(Q(!0),B(n))}else e=t.getRates();P(e)}),[t.getRates()]);var le=t.getShortDescription(),ie=(0,M.i)().isMobile,ce=J||ee.screenSize<=b.Z.Medium&&null===J&&!(null!=re&&re.mobileDefaultRatesClosed),me=t.getLowestPrice(!1,!0),se=oe.alwaysShowDecimals?me:Math.round(me),ue=ee.screenSize>b.Z.Medium&&se.toLocaleString().length<7?"large":"normal",de=function(e){return Math.round(z.z7(e,!0,ne.currentCurrency,null==re?void 0:re.defaultCurrency))},pe=(0,j.Z)({hideDecimals:!0,children:se}),Ae=pe.value,ge=pe.isLoading,fe=te.selectedBasketRow,ve=(0,I.Z)().hasPricePreview,Ce=t.getRoomPerks({hotel:re,room:t,perksLimitNumber:5}).roomPerks;return m.createElement("div",{className:"room-details-container ".concat(e.disableMarginBottom?"":"u-marg-bottom")},m.createElement("div",{className:ae},m.createElement("div",{className:"room-details--image"},m.createElement(y.Z,{images:e.room.getImages(),imageSize:L.h.Medium})),m.createElement("div",{className:"room-details--content u-pad--heavy u-pad@l-"},m.createElement("div",{className:"u-marg-bottom"},ee.screenSize>b.Z.Large&&m.createElement(m.Fragment,null,m.createElement("div",{className:"u-marg-bottom"},m.createElement(x.Z,{room:t,limit:2}))),m.createElement("div",{className:"room-details--content-title u-marg-bottom--light"},m.createElement(A.Z,{bold:!0},t.name)),m.createElement(h.R,{room:t}),(null==le?void 0:le.replace(/<br(\/|)>/g,""))&&m.createElement("div",{className:"room-details--content-description u-marg-bottom--light"},m.createElement(C.ZP,{color:R.Il.DarkGrey,type:C.yG.Small},m.createElement("span",{dangerouslySetInnerHTML:{__html:(null==le?void 0:le.replace(/<br(\/|)>/g,""))||""}})))),m.createElement("div",{className:"row"},!(null!=re&&re.perksHideOnRoomRow)&&m.createElement("div",{className:"col-12 u-flex u-marg-bottom@m- flex-column align-items-start"},m.createElement("div",{className:"room-details--content-perks u-marg-bottom@m-"},ie&&m.createElement("div",{className:"u-marg-bottom"},m.createElement(C.ZP,{type:C.yG.Small,bold:!0,color:R.Il.Accent},(null==re?void 0:re.perkTitle)||K(k.W.Misc.Perks.AndYouGetAll))),m.createElement(_,{perks:Ce,room:t}))),(null==re?void 0:re.showDescriptionOnRoomDetails)&&m.createElement("div",{className:"col-12"},m.createElement(f.Z,{noMargins:!0}),m.createElement("div",{className:"u-marg-top u-text-overflow-ellipsis-3 u-marg-bottom"},m.createElement(C.ZP,{type:C.yG.Small,color:R.Il.Graphite},m.createElement("span",{dangerouslySetInnerHTML:{__html:e.room.getLongDescription()||""}})))),m.createElement("div",{className:"col-md-6 u-flex u-marg-bottom@m- flex-column align-items-start"},m.createElement(d.Z,{icon:g.Tu.ArrowRight2,isText:!0,primary:!0,size:"tiny",iconPosition:"right",onClick:function(){U.ZP.instance.sendInteraction("More Room Details",U.s_.LINK,U._J.ROOMS),X(!0)}},K(k.W.Step.Room.RoomInfo.MoreDetails))),t.isAvailable()&&m.createElement("div",{className:"col-md-6 u-flex justify-content-end flex-column align-items-start align-items-md-end"},m.createElement(C.ZP,{type:C.yG.Small,color:R.Il.Navy,inline:!0},K(k.W.Misc.From)),m.createElement("div",{className:"room-details--content-price flex-row align-items-end"},m.createElement(A.Z,{size:ue,bold:!0},m.createElement(p.Z,{hideDecimals:!0},se)),m.createElement(C.ZP,{color:R.Il.DarkGrey,inline:!0},"/",K(k.W.Misc.Night))),m.createElement(C.ZP,{type:C.yG.Small,color:R.Il.Grey,className:"u-nowrap",align:ie?T.P.Left:T.P.Right},m.createElement("span",{dangerouslySetInnerHTML:{__html:t.getLowestPriceType()===F.I.IncludingFeesAndTaxes?K(k.W.Step.Room.RoomInfo.IncludesTaxes):K(k.W.Step.Room.ExcludingTaxes)}})))),m.createElement("div",{className:"u-flex-direction-column u-flex u-flex-align-flex-end u-flex-align-flex-start@m- u-w-100@m-"},!ge&&ve?m.createElement("div",{className:"u-marg-top--light"},m.createElement(v.C,{price:Ae,checkin:((null==fe?void 0:fe.getStartDate())||te.endDate).format("YYYY-MM-DD"),currency:ne.currentCurrency})):null,m.createElement(d.Z,{className:"u-marg-top--light",name:"ViewRatesNowButton",primary:!0,primaryActive:!!ce,filled:!0,stopIconAnimation:!0,icon:ce?g.Tu.ArrowUp2:g.Tu.ArrowDown2,iconPosition:"right",onClick:function(){if(!ce){var e=te.selectedBasketRow;e&&U.ZP.instance.sendRoomClick(t,e.getStartDate(),e.getEndDate(),e.getPromoCode())}Q(!ce)},wide:ee.screenSize<=b.Z.Large,textColor:(0,R.pJ)(ce?null==re?void 0:re.colors.accent3:null==re?void 0:re.colors.accent)},K(ce?k.W.Step.Room.RoomInfo.CloseRates:k.W.Step.Room.RoomInfo.ViewRates))))),m.createElement(u.Z,{open:!!ce},t.isAvailable()?m.createElement(S.Z,{roomCode:t.code,rates:O,featuredRates:E}):m.createElement(N,{room:t})),m.createElement(D.Z,{open:$,room:e.room,rates:O,featuredRates:E,onClose:function(){X(!1)}}),t.getRates().map((function(e){return m.createElement("script",{key:t.code+"-"+e.code,type:"application/ld+json"},JSON.stringify({"@context":"http://schema.org/","@type":"Offer",itemOffered:{"@type":"HotelRoom",name:t.name},name:e.name,identifier:e.code,priceSpecification:{"@type":"UnitPriceSpecification",price:de(e.getAveragePrice(!0)),basePrice:de(e.getTotalPrice(!0)),totalPrice:de(e.getAveragePrice()),priceCurrency:ne.currentCurrency,unitText:"Nightly"}}))})))}},98013:function(e,t,n){"use strict";n.d(t,{R:function(){return s}});var r=n(89331),o=n(67294),a=n(26793),l=n(78886),i=n(30584),c=n(79478),m=n(97754);function s(e){var t,n,s,u,d,p,A,g=(0,r.WP)().hotel,f=(0,a.$)().t,v=null==g||null===(t=g.rooms)||void 0===t?void 0:t[null===(n=e.room)||void 0===n?void 0:n.code],C=null==v?void 0:v.roomSize,y=null==g||null===(s=g.overwrites)||void 0===s||null===(u=s[null===(d=e.room)||void 0===d?void 0:d.code])||void 0===u?void 0:u.RoomDimensions,h=null!=y?y:C?"".concat(C," m²"):void 0,E=!(null==v||!v.petFriendly),b=null!==(p=e.textColor)&&void 0!==p?p:m.Il.DarkGrey,_="".concat((null==v?void 0:v.bedQuantity)>0?null==v?void 0:v.bedQuantity:""," ").concat(null==v?void 0:v.bedType);return null!=v&&null!==(A=v.bedTypeOverride)&&void 0!==A&&A.trim()&&(_=v.bedTypeOverride),o.createElement("ul",{className:"u-inline-flex u-flex-gap u-flex-wrap u-marg-bottom rs-room-details-beds-block"},o.createElement("li",{className:"u-flex align-items-center"},o.createElement(l.ZP,{icon:l.Tu.People,size:"24px",color:m.Il.Navy}),o.createElement("div",{className:"u-pad-left--light"},o.createElement(i.xv,{type:i.yG.Small,inline:!0,color:b},f(c.W.Step.Room.Sleeps,{maxOccupancy:null==v?void 0:v.maxOccupancy})))),!1!==(null==v?void 0:v.showBedType)&&o.createElement("li",{className:"u-flex align-items-center"},o.createElement(l.ZP,{icon:l.Tu.Bed,size:"24px",color:m.Il.Navy}),o.createElement("div",{className:"u-pad-left--light"},o.createElement(i.xv,{type:i.yG.Small,inline:!0,color:b},_))),!!h&&o.createElement("li",{className:"u-flex align-items-center"},o.createElement(l.ZP,{icon:l.Tu.RoomSize,size:"24px",color:m.Il.Navy}),o.createElement("div",{className:"u-pad-left--light"},o.createElement(i.xv,{type:i.yG.Small,inline:!0,color:b},h))),E&&o.createElement("li",{className:"u-flex align-items-center"},o.createElement(l.ZP,{icon:l.Tu.PetFriendly,size:"24px",color:m.Il.Navy}),o.createElement("div",{className:"u-pad-left--light"},o.createElement(i.xv,{type:i.yG.Small,inline:!0,color:b},f(c.W.Step.Room.PetFriendly)))))}},50840:function(e,t,n){"use strict";n.d(t,{Y:function(){return te}});var r=n(70885),o=n(4918),a=n(67294),l=n(26793),i=n(79478),c=n(78886),m=n(30584),s=n(4942),u=n(64854),d=n(33409),p=n(27930);function A(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 g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?A(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):A(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function f(){var e=(0,a.useContext)(o.g7),t=(0,l.$)().t,n=Object.keys(e.currentFilters).filter((function(t){return t&&e.currentFilters[t]instanceof p.Z}));return n.length?a.createElement("div",{className:"u-flex w-100"},a.createElement("div",{className:"filter-height"},n&&(n.length<=2?n.map((function(n){var r;if(n&&e.currentFilters[n]instanceof p.Z)return a.createElement(d.ZP,{key:n,onClickIcon:function(){e.setCurrentFilters(g(g({},e.currentFilters),{},(0,s.Z)({},n,null)))},type:d.Rm.Secondary,icon:c.Tu.Close,iconPosition:"right"},null===(r=e.currentFilters[n])||void 0===r?void 0:r.getLabel(t))})):a.createElement(d.ZP,{onClickIcon:function(){e.setCurrentFilters({})},type:d.Rm.Secondary,icon:c.Tu.Close,iconPosition:"right"},n.length," Filters Applied"))),!!Object.values(e.currentFilters).filter((function(e){return!!e})).length&&a.createElement(u.Z,{isText:!0,size:"tiny",onClick:function(){e.setCurrentFilters({})}},t(i.W.Misc.ClearAll))):a.createElement(a.Fragment,null)}var v=n(89331),C=n(13010),y=n(19874),h=n(65128),E=n(89089),b=n(94184),_=n.n(b),x=n(20858),S=n(64485),B=n(42982),Z=n(55061),k=n.n(Z),R=function(e){var t,n,r,o=_()(k().marker,(n={},(0,s.Z)(n,k()["--fixed"],e.fixed),(0,s.Z)(n,k()["--hidden"],!(null!==(t=e.marker)&&void 0!==t&&t.isVisible)),(0,s.Z)(n,k()["--".concat(e.isEdge)],!!e.isEdge),n)),l=_()(k()["marker-label"],(r={},(0,s.Z)(r,k()["--fixed"],e.fixed),(0,s.Z)(r,k()["--".concat(e.isEdge)],!!e.isEdge),r)),i={};return e.offset&&(i.left=Math.max(Math.min(100,e.offset),0)+"%"),a.createElement("span",{className:o,style:i},e.marker&&!!e.marker.label&&a.createElement("span",{className:l},e.marker.label))},w=function(e){var t,n,o=e.min,l=void 0===o?0:o,i=e.max,c=void 0===i?100:i,m=(0,a.useState)(!1),s=(0,r.Z)(m,2),u=(s[0],s[1]),d=(0,a.useState)(null),p=(0,r.Z)(d,2),A=p[0],g=p[1],f=(0,a.useRef)(null),v=function(t){var n,r,o=null==f||null===(n=f.current)||void 0===n?void 0:n.getBoundingClientRect();if(o){for(var a=o.x,i=o.x+o.width,m=Math.max(Math.min(Math.round(l+(c-l)*(t.clientX-a)/(i-a)),e.max),e.min),s=A,u=e.markers,d=0;d<u.length;d++)u[d].isVisible&&(null===s||Math.abs(m-u[s].value)>Math.abs(m-u[d].value))&&(s=d);var p=(0,B.Z)(e.markers);null!==s&&(p[s].value=m),null===(r=e.onChange)||void 0===r||r.call(e,p),g(s)}},C=function(e){var t;return t=(e-l)/(c-l)*100,Math.min(Math.max(t,0),100)};return(0,a.useEffect)((function(){var e,t=!1,n=null==f||null===(e=f.current)||void 0===e?void 0:e.getBoundingClientRect();if(n){n.x,n.x,n.width;var r=function(e){t||null===A||v(e)},o=function(){u(!1),g(null)};return document.body.addEventListener("mouseup",o),document.body.addEventListener("mousemove",r),function(){t=!0,document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",r)}}}),[A]),a.createElement("div",{className:k().slider,onMouseDown:function(e){u(!0),v(e)},ref:f},a.createElement("div",{className:k()["slider-track"]},null===(t=null!==(n=e.backgroundMarkers)&&void 0!==n?n:[])||void 0===t?void 0:t.map((function(e,t){return a.createElement(R,{key:t,offset:C(e.value),marker:e,fixed:!0,isEdge:e.isEdge})})),a.createElement("div",{className:k()["slider-rail"],style:{left:"".concat(C(e.markers[0].value),"%"),right:"".concat(100-C(e.markers[1].value),"%")}}),e.markers.map((function(e,t){return a.createElement(R,{key:t,offset:C(e.value),marker:e})}))))},O=n(43144),P=n(15671),N=n(60136),D=n(82963),j=n(61120);var I=function(e){(0,N.Z)(o,e);var t,n,r=(t=o,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,r=(0,j.Z)(t);if(n){var o=(0,j.Z)(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return(0,D.Z)(this,e)});function o(e,t){var n;return(0,P.Z)(this,o),(n=r.call(this)).min=void 0,n.max=void 0,n.getMin=function(){return n.min},n.getMax=function(){return n.max},n.getLabel=function(){return"Budget"},n.check=function(e){if(e.getLowestPrice()>n.max)return null;var t=[];return e.getOriginalRates().forEach((function(e){e.getAveragePrice()<=n.max&&e.getAveragePrice()>=n.min&&t.push(e)})),e.filteredRates=t,e},n.min=e,n.max=t,n}return(0,O.Z)(o)}(p.Z),M=n(97754);function F(e){var t,n,o,c,s,d=(0,l.$)().t,p=(0,a.useState)([null!==(t=null===(n=e.filter)||void 0===n?void 0:n.getMin())&&void 0!==t?t:0,null!==(o=null===(c=e.filter)||void 0===c?void 0:c.getMax())&&void 0!==o?o:0]),A=(0,r.Z)(p,2),g=A[0],f=A[1],v=(0,a.useState)(g),C=(0,r.Z)(v,2),y=C[0],h=C[1],E=(0,a.useState)(null),b=(0,r.Z)(E,2),B=b[0],Z=b[1];(0,a.useEffect)((function(){var t,n,r,o,a,l,i=null!==(t=e.roomList)&&void 0!==t&&t.length?e.roomList.reduce((function(e,t){var n=t.getLowestPrice(!0);return e<n&&e?e:n}),0):0,c=null!==(n=e.roomList)&&void 0!==n&&n.length?e.roomList.reduce((function(e,t){var n=t.getHighestPrice(!0);return e>n&&e?e:n}),0):0;f([i,c]),h([null!==(r=null===(o=e.filter)||void 0===o?void 0:o.getMin())&&void 0!==r?r:i,null!==(a=null===(l=e.filter)||void 0===l?void 0:l.getMax())&&void 0!==a?a:c])}),[e.roomList]),(0,a.useEffect)((function(){var e=g[1]-g[0];y[1]<g[0]+.3*e?Z("left"):y[0]>g[1]-.3*e?Z("right"):Z(null)}),[y]);var k=function(e){return a.createElement(x.Z,{hideDecimals:!0,disableLoading:!0},e)},R=(M.Il.Grey,k(g[0]),g[0],M.Il.Grey,k(g[1]),g[1],k(y[0]),k(y[1]),y[1],y[0],y[0],[{isVisible:!0,value:y[0]},{isVisible:!0,value:y[1]},{isVisible:!1,label:a.createElement(a.Fragment,null,k(y[0])," - ",k(y[1])),value:y[0]+(y[1]-y[0])/2}]),O=[{isVisible:!0,value:g[0],label:k(g[0]),isEdge:"start"},{isVisible:!0,value:g[1],label:k(g[1]),isEdge:"end"}];return a.createElement(a.Fragment,null,a.createElement("div",{className:"u-flex"},a.createElement("div",null,a.createElement(m.ZP,{inline:!0,type:m.yG.Small},a.createElement("strong",null,d(i.W.Step.Room.Filter.Budget))),a.createElement(m.ZP,{inline:!0,type:m.yG.Small},"/",d(i.W.Misc.PerNight))),a.createElement("div",null,a.createElement(u.Z,{size:"tiny",isText:!0,disabled:!e.filter,onClick:function(){return h(g),void e.onChange(null)}},d(i.W.Misc.Clear)))),(null===(s=e.roomList)||void 0===s?void 0:s.length)>0?a.createElement("div",{className:_()("roomstay-slider",{"--min-limit":"left"===B,"--max-limit":"right"===B})},a.createElement(w,{min:g[0],max:g[1],onChange:function(t){h(t.map((function(e){return e.value}))),e.onChange(new I(t[0].value,t[1].value))},markers:R,backgroundMarkers:O})):a.createElement("div",{className:"u-marg-top-bottom u-flex justify-content-center"},a.createElement(S.Z,null)))}var W=n(69024),L=n(89087);function z(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 U(e){var t,n=(0,l.$)().t,o=(0,a.useState)({}),c=(0,r.Z)(o,2),d=c[0],p=c[1],A=(0,a.useState)(0),g=(0,r.Z)(A,2),f=g[0],v=g[1],C=(0,a.useRef)(null);return(0,a.useEffect)((function(){if(e.roomList){var t={},n=e.filter?e.filter.getViewOnly():null;e.roomList.forEach((function(e){e.getOriginalRates().forEach((function(e){t[e.name]={status:!n||n.includes(e.name)}}))})),p(t)}}),[e.roomList,f]),(0,a.useEffect)((function(){var t;if(null!=C&&C.current&&null!==(t=e.roomList)&&void 0!==t&&t.length){var n=Object.keys(d),r=n.filter((function(e){return d[e].status}));n.length===r.length?e.onChange(null):e.onChange(new L.Z(r))}}),[d]),a.createElement(a.Fragment,null,a.createElement("div",{className:"u-flex u-marg-bottom",ref:C},a.createElement(m.ZP,{inline:!0,type:m.yG.Small},a.createElement("strong",null,n(i.W.Step.Room.Filter.RateType))),a.createElement(u.Z,{size:"tiny",isText:!0,disabled:!e.filter,onClick:function(){e.onChange(null),v((function(e){return e+1}))}},n(i.W.Misc.Clear))),a.createElement("div",null,(null===(t=e.roomList)||void 0===t?void 0:t.length)>0?d&&Object.keys(d).map((function(e){return a.createElement("div",{className:"u-marg-bottom--light",key:e},a.createElement(W.Z,{label:e,checked:d[e].status,onChange:function(t){var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?z(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):z(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},d);n[e].status=t.target.checked,p(n)}}))})):a.createElement("div",{className:"u-marg-top-bottom u-flex justify-content-center"},a.createElement(S.Z,null))))}var T=n(40742);function G(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 Y(e){var t,n=(0,l.$)().t,o=(0,a.useState)({}),c=(0,r.Z)(o,2),d=c[0],p=c[1],A=(0,a.useState)(0),g=(0,r.Z)(A,2),f=g[0],v=g[1],C=(0,a.useRef)(null);(0,a.useEffect)((function(){if(e.roomList){var t={},n=e.filter?e.filter.getVisibleRooms():null;e.roomList.forEach((function(e){t[e.name]={status:!n||n.includes(e.name)||n.includes(e.code)}})),p(t)}}),[e.roomList,f]);var y=Object.keys(d),h=y.filter((function(e){return d[e].status}));return(0,a.useEffect)((function(){var t;null!=C&&C.current&&null!==(t=e.roomList)&&void 0!==t&&t.length&&(h.length===y.length?e.onChange(null):e.onChange(new T.Z(h)))}),[d]),a.createElement(a.Fragment,null,a.createElement("div",{className:"u-flex u-marg-bottom u-marg-top--heavy",ref:C},a.createElement(m.ZP,{inline:!0,type:m.yG.Small},a.createElement("strong",null,n(i.W.Step.Room.Filter.RoomType))),a.createElement(u.Z,{size:"tiny",isText:!0,disabled:!e.filter,onClick:function(){e.onChange(null),v((function(e){return e+1}))}},n(i.W.Misc.Clear))),a.createElement("div",null,(null===(t=e.roomList)||void 0===t?void 0:t.length)>0?d&&Object.keys(d).map((function(e){return a.createElement("div",{className:"u-marg-bottom--light",key:e},a.createElement(W.Z,{label:e,checked:d[e].status,onChange:function(t){var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},d);n[e].status=t.target.checked,p(n)}}))})):a.createElement("div",{className:"u-marg-top-bottom u-flex justify-content-center"},a.createElement(S.Z,null))))}var q=n(54862),J=n(84544),Q=n(90292);function V(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?V(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):V(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function $(e){var t=(0,a.useContext)(o.g7),n=(0,a.useContext)(o.hy),c=(0,v.WP)().hotel,d=(0,l.$)().t,p=(0,a.useState)(t.currentFilters),A=(0,r.Z)(p,2),g=A[0],f=A[1],b=(0,a.useState)([]),_=(0,r.Z)(b,2),x=_[0],S=_[1];(0,a.useEffect)((function(){if(f(H({},t.currentFilters)),e.open){var r,o=n.getAllValidRows();q.Z.getUnfilteredRoomList(null!==(r=n.selectedBasketRow)&&void 0!==r?r:o[o.length-1],null==c?void 0:c.hotelID).then((function(e){S(e)}))}}),[e.open]);var B=a.createElement("div",{className:"u-flex align-items-center justify-content-between justify-content-md-end"},a.createElement("div",{className:"u-marg-right--heavy"},a.createElement(m.ZP,{color:M.Il.Accent},a.createElement("strong",null,q.Z.filterRooms(x,Object.values(g)).length," ",d(i.W.Step.Room.Filter.MatchingRoomsRates)))),a.createElement(u.Z,{primary:!0,filled:!0,onClick:function(){var n;J.ZP.instance.sendInteraction("Apply Filters",J.s_.BUTTON,J._J.ROOMS),t.setCurrentFilters(g),null===(n=e.onClose)||void 0===n||n.call(e)}},d(i.W.Misc.ApplyChanges))),Z=function(e,t){f((function(n){return H(H({},n),{},(0,s.Z)({},e,t))}))},k=a.createElement("div",{className:"room-filter"},a.createElement("div",{className:"u-pad--heavy u-pad-bottom--none"},t.screenSize>Q.Z.Medium&&a.createElement("div",{className:"u-marg-bottom"},a.createElement(C.Z,{bold:!0},d(i.W.Step.Room.FilterBy))),a.createElement("div",{className:"row"},a.createElement("div",{className:"col-md-6"},a.createElement(F,{filter:g.Budget,onChange:function(e){return Z("Budget",e)},roomList:x}),a.createElement("div",{className:"u-marg-bottom--heavy"},a.createElement(Y,{roomList:x,filter:g.RoomType,onChange:function(e){return Z("RoomType",e)}}))),a.createElement("div",{className:"col-md-6"},a.createElement("div",{className:"u-marg-bottom--heavy"},a.createElement(U,{roomList:x,filter:g.RateType,onChange:function(e){return Z("RateType",e)}}))))));return t.screenSize>Q.Z.Medium?a.createElement(E.a,{followElement:e.anchorEl,onClose:e.onClose,open:e.open,placement:"bottom-start"},a.createElement(a.Fragment,null,k,a.createElement("div",{className:"u-pad--heavy u-pad-top--none"},a.createElement(y.Z,null),B))):a.createElement(h.Z,{open:e.open,onClose:e.onClose,title:d(i.W.Step.Room.FilterBy),mobileFooter:B},k)}var X=n(63351),K=n(60281);function ee(){var e=(0,a.useContext)(o.g7).screenSize<=Q.Z.Medium,t=(0,a.useContext)(o.g7),n=(0,a.useState)(t.currentRoomSort),l=(0,r.Z)(n,2),i=l[0],c=l[1];return a.createElement(X.P,{nativeOnMobile:!0,options:Object.values(K.s).map((function(e){return{text:e,value:e}})),value:i,onChange:function(e){J.ZP.instance.sendInteraction("Change Sort",J.s_.DROPDOWN,J._J.ROOMS),c(e),t.setCurrentRoomSort(e)},keyName:"value",labelName:"text",className:_()("u-flex align-items-center",{"text-small":e})})}var te=function(){var e=(0,a.useContext)(o.g7),t=(0,l.$)().t,n=(0,a.useRef)(null),s=(0,a.useState)(!1),u=(0,r.Z)(s,2),d=u[0],p=u[1];return a.createElement("div",{className:"row align-items-end"},a.createElement("div",{className:"col-6 col-md-4 col-lg-3"},a.createElement(m.ZP,{type:m.yG.Label,color:M.Il.DarkGrey},a.createElement("strong",null,t(i.W.Step.Room.SortBy))),a.createElement("div",null,a.createElement(ee,null))),a.createElement("div",{className:"col-6 col-md-2 col-lg-2"},a.createElement("div",{ref:n},a.createElement("div",{className:"filter-button d-flex align-items-center u-cursor-pointer",onClick:function(){J.ZP.instance.sendInteraction("Show Filters",J.s_.DROPDOWN,J._J.ROOMS),p(!0)}},a.createElement(m.ZP,null,e.screenSize>Q.Z.Medium?t(i.W.Step.Room.FilterBy):t(i.W.Step.Room.Filter.ShowFilters)),a.createElement(c.ZP,{icon:c.Tu.Dropdown,color:M.Il.DarkGrey})),a.createElement($,{open:d,anchorEl:n.current,onClose:function(){p(!1)}}))),a.createElement("div",{className:"col-md-12 col-lg-7 u-align-right u-marg-top@l- u-empty-none filter-push-down"},a.createElement(f,null)))}},48229:function(e,t,n){(t=n(23645)(!0)).push([e.id,".Slider-module__slider___2f65h{width:100%;display:flex;padding:13px 0;user-select:none}.Slider-module__slider-track___3uTXL{height:4px;width:100%;background-color:var(--rs-color-snow);position:relative;border-radius:4px;z-index:1}.Slider-module__slider-rail___2Jeoy{top:0;left:0;right:0;bottom:0;background-color:var(--rs-color-accent-1);position:absolute;display:block;border-radius:4px;z-index:2}.Slider-module__marker___1duEi{position:absolute;top:50%;transform:translate(-50%, -50%);border-radius:100%;width:14px;height:14px;background-color:var(--rs-color-accent-1);border:2px solid var(--rs-color-white);cursor:grab}.Slider-module__marker___1duEi.Slider-module__--hidden___2PnRK{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.Slider-module__marker___1duEi.Slider-module__--fixed___3P_lS{background-color:var(--rs-color-navy);width:8px;height:8px;border:unset}.Slider-module__marker___1duEi.Slider-module__--start___2VXUn{left:0}.Slider-module__marker___1duEi.Slider-module__--end___1d_8m{left:100%}.Slider-module__marker-label___2nSLZ{position:absolute;left:50%;top:16px;transform:translateX(-50%);display:block;white-space:nowrap;user-select:none;font-size:14px !important;line-height:1em !important}.Slider-module__marker-label___2nSLZ.Slider-module__--fixed___3P_lS{color:var(--rs-color-grey)}.Slider-module__marker-label___2nSLZ:not(.Slider-module__--fixed___3P_lS){background-color:#fff;padding:0px 4px}.Slider-module__marker-label___2nSLZ.Slider-module__--start___2VXUn{transform:translateX(-10%)}.Slider-module__marker-label___2nSLZ.Slider-module__--end___1d_8m{transform:translateX(-75%)}","",{version:3,sources:["Slider.module.scss"],names:[],mappings:"AAAA,+BAAQ,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,qCAAc,UAAU,CAAC,UAAU,CAAC,qCAAqC,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,oCAAa,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,yCAAyC,CAAC,iBAAiB,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,+BAAQ,iBAAiB,CAAC,OAAO,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,yCAAyC,CAAC,sCAAsC,CAAC,WAAW,CAAC,+DAAiB,8BAA8B,CAAC,0BAA0B,CAAC,8DAAgB,qCAAqC,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,8DAAgB,MAAM,CAAC,4DAAc,SAAS,CAAC,qCAAc,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,0BAA0B,CAAC,aAAa,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,oEAAsB,0BAA0B,CAAC,0EAA4B,qBAAqB,CAAC,eAAe,CAAC,oEAAsB,0BAA0B,CAAC,kEAAoB,0BAA0B",file:"Slider.module.scss",sourcesContent:[".slider{width:100%;display:flex;padding:13px 0;user-select:none}.slider-track{height:4px;width:100%;background-color:var(--rs-color-snow);position:relative;border-radius:4px;z-index:1}.slider-rail{top:0;left:0;right:0;bottom:0;background-color:var(--rs-color-accent-1);position:absolute;display:block;border-radius:4px;z-index:2}.marker{position:absolute;top:50%;transform:translate(-50%, -50%);border-radius:100%;width:14px;height:14px;background-color:var(--rs-color-accent-1);border:2px solid var(--rs-color-white);cursor:grab}.marker.--hidden{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.marker.--fixed{background-color:var(--rs-color-navy);width:8px;height:8px;border:unset}.marker.--start{left:0}.marker.--end{left:100%}.marker-label{position:absolute;left:50%;top:16px;transform:translateX(-50%);display:block;white-space:nowrap;user-select:none;font-size:14px !important;line-height:1em !important}.marker-label.--fixed{color:var(--rs-color-grey)}.marker-label:not(.--fixed){background-color:#fff;padding:0px 4px}.marker-label.--start{transform:translateX(-10%)}.marker-label.--end{transform:translateX(-75%)}"]}]),t.locals={slider:"Slider-module__slider___2f65h","slider-track":"Slider-module__slider-track___3uTXL","slider-rail":"Slider-module__slider-rail___2Jeoy",marker:"Slider-module__marker___1duEi","--hidden":"Slider-module__--hidden___2PnRK","--fixed":"Slider-module__--fixed___3P_lS","--start":"Slider-module__--start___2VXUn","--end":"Slider-module__--end___1d_8m","marker-label":"Slider-module__marker-label___2nSLZ"},e.exports=t},6273:function(e,t,n){(t=n(23645)(!0)).push([e.id,".UnavailableRoom-module__container___uzzJu{display:flex;flex-direction:column;align-items:stretch;text-align:center;padding:30px 15px;background-color:#f3f3f3}@media(max-width: 576px){.UnavailableRoom-module__container___uzzJu{padding-left:0;padding-right:0}}@media(min-width: 767px){.UnavailableRoom-module__container___uzzJu{padding-left:0;padding-right:0}}@media(min-width: 991px){.UnavailableRoom-module__container___uzzJu{padding:30px 15px}}.UnavailableRoom-module__container___uzzJu.UnavailableRoom-module__calendarOpen___1mV12{padding-bottom:15px}@media(max-width: 576px){.UnavailableRoom-module__container___uzzJu.UnavailableRoom-module__calendarOpen___1mV12{padding-bottom:0}}@media(min-width: 767px){.UnavailableRoom-module__container___uzzJu.UnavailableRoom-module__calendarOpen___1mV12{padding-bottom:0}}@media(min-width: 991px){.UnavailableRoom-module__container___uzzJu.UnavailableRoom-module__calendarOpen___1mV12{padding-bottom:15px}}.UnavailableRoom-module__info___1H4gd{display:flex;flex-direction:column;gap:5px;padding-bottom:15px}.UnavailableRoom-module__findDatesBtn___vWuEJ{z-index:5;align-self:center}.UnavailableRoom-module__calendarOverlay___3c-Kn{background:#fff;border-radius:20px;padding:60px 0 20px;margin-top:-21px;display:flex;flex-direction:column;gap:20px;align-items:center}.UnavailableRoom-module__calendarFooter___2b-0Q{display:flex;justify-content:space-between;align-items:center;width:100%;padding-left:20px;padding-right:20px}@media(max-width: 767px){.UnavailableRoom-module__calendarFooter___2b-0Q{flex-direction:column;gap:20px}.UnavailableRoom-module__calendarFooter___2b-0Q>:last-child{align-self:center;justify-content:center}}.UnavailableRoom-module__calendar___1jd-j{border:none !important;padding:0 !important;gap:0 !important}.UnavailableRoom-module__calendar___1jd-j [class*=diji-calendar-month]{gap:0 !important;padding:0 !important}.UnavailableRoom-module__calendar___1jd-j [class*=diji-calendar-month--items]{padding:0 !important;gap:0 !important;margin:0 !important}.UnavailableRoom-module__calendar___1jd-j [class*=diji-calendar-month--item]{gap:0 !important;padding:0 !important;margin:1.5px !important}.UnavailableRoom-module__calendar___1jd-j [class*=diji-calendar-navigation]{top:-25px !important;left:30px !important;right:30px !important}","",{version:3,sources:["UnavailableRoom.module.scss"],names:[],mappings:"AAAA,2CAAW,YAAY,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,yBAAyB,2CAAW,cAAc,CAAC,eAAe,CAAC,CAAC,yBAAyB,2CAAW,cAAc,CAAC,eAAe,CAAC,CAAC,yBAAyB,2CAAW,iBAAiB,CAAC,CAAC,wFAAwB,mBAAmB,CAAC,yBAAyB,wFAAwB,gBAAgB,CAAC,CAAC,yBAAyB,wFAAwB,gBAAgB,CAAC,CAAC,yBAAyB,wFAAwB,mBAAmB,CAAC,CAAC,sCAAM,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,mBAAmB,CAAC,8CAAc,SAAS,CAAC,iBAAiB,CAAC,iDAAiB,eAAe,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,gDAAgB,YAAY,CAAC,6BAA6B,CAAC,kBAAkB,CAAC,UAAU,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,yBAAyB,gDAAgB,qBAAqB,CAAC,QAAQ,CAAC,4DAA4B,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,0CAAU,sBAAsB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,uEAAuC,gBAAgB,CAAC,oBAAoB,CAAC,8EAA8C,oBAAoB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,6EAA6C,gBAAgB,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,4EAA4C,oBAAoB,CAAC,oBAAoB,CAAC,qBAAqB",file:"UnavailableRoom.module.scss",sourcesContent:[".container{display:flex;flex-direction:column;align-items:stretch;text-align:center;padding:30px 15px;background-color:#f3f3f3}@media(max-width: 576px){.container{padding-left:0;padding-right:0}}@media(min-width: 767px){.container{padding-left:0;padding-right:0}}@media(min-width: 991px){.container{padding:30px 15px}}.container.calendarOpen{padding-bottom:15px}@media(max-width: 576px){.container.calendarOpen{padding-bottom:0}}@media(min-width: 767px){.container.calendarOpen{padding-bottom:0}}@media(min-width: 991px){.container.calendarOpen{padding-bottom:15px}}.info{display:flex;flex-direction:column;gap:5px;padding-bottom:15px}.findDatesBtn{z-index:5;align-self:center}.calendarOverlay{background:#fff;border-radius:20px;padding:60px 0 20px;margin-top:-21px;display:flex;flex-direction:column;gap:20px;align-items:center}.calendarFooter{display:flex;justify-content:space-between;align-items:center;width:100%;padding-left:20px;padding-right:20px}@media(max-width: 767px){.calendarFooter{flex-direction:column;gap:20px}.calendarFooter>:last-child{align-self:center;justify-content:center}}.calendar{border:none !important;padding:0 !important;gap:0 !important}.calendar [class*=diji-calendar-month]{gap:0 !important;padding:0 !important}.calendar [class*=diji-calendar-month--items]{padding:0 !important;gap:0 !important;margin:0 !important}.calendar [class*=diji-calendar-month--item]{gap:0 !important;padding:0 !important;margin:1.5px !important}.calendar [class*=diji-calendar-navigation]{top:-25px !important;left:30px !important;right:30px !important}"]}]),t.locals={container:"UnavailableRoom-module__container___uzzJu",calendarOpen:"UnavailableRoom-module__calendarOpen___1mV12",info:"UnavailableRoom-module__info___1H4gd",findDatesBtn:"UnavailableRoom-module__findDatesBtn___vWuEJ",calendarOverlay:"UnavailableRoom-module__calendarOverlay___3c-Kn",calendarFooter:"UnavailableRoom-module__calendarFooter___2b-0Q",calendar:"UnavailableRoom-module__calendar___1jd-j"},e.exports=t},55061:function(e,t,n){var r=n(93379),o=n(48229);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.id,o,""]]);r(o,{insert:"head",singleton:!1}),e.exports=o.locals||{}},80131:function(e,t,n){var r=n(93379),o=n(6273);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.id,o,""]]);r(o,{insert:"head",singleton:!1}),e.exports=o.locals||{}}}]);
1
+ (("undefined"!=typeof self?self:this).webpackChunkroomstay=("undefined"!=typeof self?self:this).webpackChunkroomstay||[]).push([[430],{72258:function(e,t,n){"use strict";n.d(t,{Z:function(){return y}});var r=n(70885),o=n(4918),a=n(67294),l=n(26793),i=n(79478),c=n(1126),m=n(83893),s=n(20858),u=n(13010),d=n(78886),p=n(64485),A=n(30584),g=n(57133),f=n(44744),v=n(97754),C=n(90292);function y(e){var t=(0,l.$)().t,n=(0,a.useContext)(o.g7),y=(0,a.useContext)(o.hy),h=(0,a.useState)(!1),E=(0,r.Z)(h,2),b=E[0],_=E[1],x=(0,a.useState)(!0),S=(0,r.Z)(x,2),B=S[0],Z=S[1],k=(0,a.useState)(!0),R=(0,r.Z)(k,2),w=R[0],O=R[1],P=(0,a.useState)(""),N=(0,r.Z)(P,2),D=N[0],j=N[1],I=(0,a.useState)(""),M=(0,r.Z)(I,2),F=M[0],W=M[1],L=(0,a.useState)(""),z=(0,r.Z)(L,2),U=z[0],T=z[1],G=(0,a.useState)(""),Y=(0,r.Z)(G,2),q=Y[0],J=Y[1],Q=(0,a.useState)([]),V=(0,r.Z)(Q,2),H=V[0],$=V[1],X=(0,g.t)().memberNumber;return(0,a.useEffect)((function(){var t=y.selectedBasketRow;t&&m.Z.Availability.getCheapestPricePerDay(t.getStartDate(),t.getEndDate(),t.getAdults(),t.getChildren(),t.getInfants(),t.getPromoCode(),t.getRoomCode(),e.hotelId,X,!0).catch().then((function(n){if(n){for(var r=!0,o=t.getStartDate();o.isBefore(t.getEndDate(),"day");o=o.add(1,"day"))if(!n[o.format(c.yJ)]){r=!1;break}if(_(r),Z(!0),r){O(!0);var a=m.Z.Availability.getCrossSellHotelInfo(e.hotelId);W(a.name),j(a.image||""),T(a.description);var l=["arrive="+t.getStartDate().format("YYYY-M-D"),"depart="+t.getEndDate().format("YYYY-M-D")];t.getAdults()>1&&l.push("adults="+t.getAdults()),t.getChildren()>0&&l.push("children="+t.getChildren()),t.getInfants()>0&&l.push("infants="+t.getInfants()),t.getPromoCode()&&l.push("promocode="+t.getPromoCode()),J(a.checkoutUrl+"#/step/room/?"+l.join("&")),m.Z.Availability.fetchAvailabilityData(t,e.hotelId,X,!0).catch((function(e){return[]})).then((function(e){null!=e&&e.length?($(e),O(!1)):(Z(!1),O(!1))}))}}}))}),[y.selectedBasketRow]),b?a.createElement("div",{className:"u-marg-top--heavy u-marg-bottom"},a.createElement("div",{className:"cross-sell-module"},a.createElement("div",{className:"cross-sell-module--image",style:{backgroundImage:"url('".concat(f.Z.resizeImage(D,f.h.Original),"')")}}),a.createElement("div",{className:"cross-sell-module--content u-pad--heavy u-pad@m-"},a.createElement("div",{className:"u-marg-bottom--heavy"},a.createElement("div",{className:"cross-sell-module--content-title u-marg-bottom--light"},a.createElement(u.Z,{bold:!0,size:B?"large":"normal"},t(w?i.W.Step.Room.CrossSellBlock.AvailabilityNearBy1:B?i.W.Step.Room.CrossSellBlock.AvailabilityNearBy2:i.W.Step.Room.CrossSellBlock.DateUnavailable))),B&&a.createElement("div",{className:"cross-sell-module--content-description u-marg-bottom--light"},a.createElement(A.ZP,{color:v.Il.DarkGrey,type:A.yG.Body},a.createElement("strong",{style:{color:v.Il.Accent}},F),a.createElement("div",{dangerouslySetInnerHTML:{__html:U}})))),w?a.createElement(p.Z,null):a.createElement(a.Fragment,null,H.slice(0,4).map((function(e,n){var r=q+"&room="+e.code,o="u-flex align-items-end";return n<H.length-1&&(o+=" u-pad-bottom u-border-bottom u-marg-bottom"),a.createElement("a",{key:e.code,className:o,href:r,target:"_blank",rel:"noreferrer"},a.createElement("div",{className:"u-flex flex-column align-items-start justify-content-start"},a.createElement(A.ZP,{type:A.yG.Body,color:v.Il.Accent,bold:!0},e.name),a.createElement(A.ZP,{type:A.yG.Small,color:v.Il.DarkGrey},t(i.W.Step.Room.Sleeps,{maxOccupancy:e.occupancy}))),a.createElement("div",{className:"u-flex flex-column align-items-end align-items-md-end"},a.createElement(A.ZP,{type:A.yG.Small,color:v.Il.DarkGrey,inline:!0},t(i.W.Misc.From)),a.createElement(A.ZP,{type:A.yG.Body,color:v.Il.Accent,bold:!0},a.createElement(s.Z,null,e.getLowestPrice(!0)))))}))),B&&a.createElement("div",{className:"u-marg-top--light u-flex justify-content-start u-w-100@m- u-marg-top--heavy"},a.createElement("a",{className:"link-button --primary --filled --success --icon-right --normal"+(n.screenSize<=C.Z.Medium?" --wide":""),tabIndex:0,type:"button",href:q,target:"_blank",rel:"noreferrer"},a.createElement("span",null,"See all ",H.length," rooms",a.createElement(d.ZP,{icon:d.Tu.ArrowRight,size:"1em"}))))))):null}},32458:function(e,t,n){"use strict";n.d(t,{Z:function(){return y}});var r=n(42982),o=n(4918),a=n(89331),l=n(67294),i=n(26793),c=n(79478),m=n(13010),s=n(78886),u=n(19874),d=n(65128),p=n(30584),A=n(40291),g=n(98013),f=n(8643),v=n(97754),C=n(98631);function y(e){var t,n=(0,l.useContext)(o.O8).roomModalDescSideBySide,y=(0,i.$)().t,h=(0,a.WP)().hotel,E=h.rooms,b=e.room.getRoomPerks({hotel:h,room:e.room}),_=b.roomPerks,x=b.prePerkDisclaimer,S=null==E?void 0:E[e.room.code],B=null!=S&&S.amenities?(0,r.Z)(S.amenities):[];null!=S&&null!==(t=S.features)&&void 0!==t&&t.length&&S.features.forEach((function(e){B.push(e)}));var Z=(null==x?void 0:x.replace(/<br(\/|)>/g,""))||"",k=function(){return l.createElement("div",{className:"u-marg-bottom--heavy rs-room-modal-long-description"},l.createElement(p.ZP,{type:p.yG.Small,color:v.Il.Graphite},l.createElement("span",{dangerouslySetInnerHTML:{__html:e.room.getLongDescription()||""}})))};return l.createElement(d.Z,{title:e.room.name+" "+y(c.W.Step.Room.RoomInfo.Information),open:e.open,size:d.g.Small,onClose:e.onClose},l.createElement("div",{className:"rs-room-modal"},l.createElement("div",{style:{height:"350px"}},l.createElement(A.Z,{images:e.room.getImages()})),l.createElement("div",{className:"u-marg-heavy u-marg@m- rs-room-modal-container"},l.createElement("div",{className:"u-marg-bottom--light rs-room-modal-headline"},l.createElement(m.Z,{bold:!0,size:"large"},e.room.name)),l.createElement(g.R,{room:e.room}),l.createElement("div",{className:"u-marg-bottom--heavy rs-room-modal-short-description"},l.createElement(p.ZP,{color:v.Il.DarkGrey,type:p.yG.Small},l.createElement("span",{dangerouslySetInnerHTML:{__html:e.room.getShortDescription(!1)||""}}))),n?l.createElement(l.Fragment,null,l.createElement(k,null),l.createElement(u.Z,null)):null,!(null!=h&&h.perksHideOnRoomDetail)&&_&&l.createElement("div",{className:"u-marg-bottom--heavy rs-room-modal-perks"},l.createElement("div",{className:"row"},l.createElement(C.Z,{hotel:h,room:e.room,roomPerks:_})),(null==h?void 0:h.perksShowDisclaimer)&&l.createElement("div",{className:"row u-marg-top--lighter"},l.createElement("small",{className:"col-12"},y(c.W.Misc.PerksDisclaimer)))),!(null==B||!B.length)&&l.createElement(l.Fragment,null,l.createElement("div",{className:"u-marg-bottom"},l.createElement(p.ZP,{color:v.Il.Accent,type:p.yG.Small},l.createElement("strong",null,y(c.W.Step.Room.RoomInfo.RoomAmenities)))),l.createElement("div",{className:"row"},B.map((function(e){return l.createElement("div",{key:e.description,className:"col-sm-6 u-marg-bottom--light u-flex justify-content-start"},l.createElement(s.ZP,{icon:s.Tu.Check,color:v.Il.White,backgroundColor:v.Il.Navy,borderRadius:"round",noPadding:!0,size:"16px"}),l.createElement("div",{className:"u-marg-left--light u-flex"},l.createElement(p.ZP,{type:p.yG.Small,inline:!0},e.description)))})))),l.createElement(u.Z,null),n?null:l.createElement(k,null),!!Z&&l.createElement("div",{className:"u-marg-bottom--heavy rs-room-modal-disclaimer"},l.createElement(p.ZP,{type:p.yG.Small},l.createElement("strong",null,y(c.W.Step.Room.RoomInfo.Disclaimer))),l.createElement(p.ZP,{type:p.yG.Small},l.createElement("span",{dangerouslySetInnerHTML:{__html:Z}})))),l.createElement(f.Z,{featuredRates:e.featuredRates,rates:e.rates,roomCode:e.room.code})))}},49368:function(e,t,n){"use strict";n.d(t,{F:function(){return B}});var r=n(87462),o=n(15861),a=n(70885),l=n(64687),i=n.n(l),c=n(4918),m=n(27484),s=n.n(m),u=n(67294),d=n(87536),p=n(26793),A=n(79478),g=n(79740),f=n(83893),v=n(87933),C=n(64854),y=n(13010),h=n(78886),E=n(30584),b=n(41432),_=n(514),x=n(97754),S=n(16431),B=function(){var e=(0,d.cI)(),t=e.register,n=e.handleSubmit,l=e.formState,m=(0,_.W)().hotel,B=(0,u.useContext)(c.hy),Z=(0,p.$)().t,k=(0,u.useState)({}),R=(0,a.Z)(k,2),w=R[0],O=R[1],P=(0,u.useState)(!1),N=(0,a.Z)(P,2),D=N[0],j=N[1],I=function(){var e=(0,o.Z)(i().mark((function e(t){var n,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return O({}),j(!0),e.prev=2,n=B.selectedBasketRow,r="",[{name:"Adults",value:n.getAdults()},{name:"Children",value:n.getChildren()},{name:"Infants",value:n.getInfants()},{name:"Promo Code",value:n.getPromoCode()},{name:"Dates range",value:n.getStayDateRange("ddd D MMM YYYY"," till ")},{name:"Date Sent",value:s()().format("dd D MMM YYYY")}].forEach((function(e){var t=e.name,n=e.value;n&&(r+="".concat(t,": ").concat(n,"\n"))})),e.next=8,f.Z.Error.sendRoomFallbackForm(null==m?void 0:m.hotelID,{name:t.name,telephone:t.telephone,email:t.email,searchQuery:r});case 8:O({success:!0}),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(2),O({success:!1,message:Z(A.W.Step.Room.ErrorForm.APIError)});case 14:j(!1);case 15:case"end":return e.stop()}}),e,null,[[2,11]])})));return function(t){return e.apply(this,arguments)}}();return u.createElement("div",{className:"u-fill-white u-rounded"},u.createElement("div",{className:"row u-pad--heavy"},u.createElement("div",{className:"col-lg-6 d-flex justify-content-center flex-column"},u.createElement("div",{className:"u-marg-bottom--light"},u.createElement(h.ZP,{icon:h.Tu.Error,color:x.Il.Alert,size:"24px"})),u.createElement("div",{className:"u-marg-bottom--light"},u.createElement(y.Z,{bold:!0,color:x.Il.Alert},u.createElement("span",{style:{color:"inherit"},dangerouslySetInnerHTML:{__html:Z(A.W.Step.Room.ErrorForm.Title)}}))),u.createElement(E.ZP,{type:E.yG.Small},u.createElement("span",{dangerouslySetInnerHTML:{__html:Z(A.W.Step.Room.ErrorForm.Description)}}))),u.createElement("div",{className:"col-lg-6"},u.createElement("form",null,u.createElement(g.Z,{open:!!l.errors},Object.values(l.errors).map((function(e,t){return u.createElement(v.ZP,{key:t,type:v.NK.Danger},u.createElement(E.ZP,{type:E.yG.Small},null==e?void 0:e.message))}))),u.createElement("div",{className:"u-marg-bottom--light u-marg-top"},u.createElement(b.Z,(0,r.Z)({placeholder:Z(A.W.Step.Room.ErrorForm.Inputs.Name)},t("name",{required:{value:!0,message:"".concat(Z(A.W.Step.Room.ErrorForm.Inputs.Name)," is a required field")}})))),u.createElement("div",{className:"u-marg-bottom--light"},u.createElement(b.Z,(0,r.Z)({placeholder:Z(A.W.Step.Room.ErrorForm.Inputs.Email)},t("email",{required:{value:!0,message:"".concat(Z(A.W.Step.Room.ErrorForm.Inputs.Email)," is a required field")},pattern:{value:S.CU,message:"Email must be valid"}})))),u.createElement("div",{className:"u-marg-bottom--light"},u.createElement(b.Z,(0,r.Z)({placeholder:Z(A.W.Step.Room.ErrorForm.Inputs.Telephone)},t("telephone",{required:{value:!0,message:"".concat(Z(A.W.Step.Room.ErrorForm.Inputs.Telephone)," is a required field")}})))),u.createElement(C.Z,{filled:!0,primary:!0,onClick:n(I),isLoading:D,disabled:D||w.success},Z(A.W.Step.Room.ErrorForm.ContactUsButton)),u.createElement(g.Z,{open:!!w.success},u.createElement("div",{className:"u-pad-top"},u.createElement(E.ZP,{color:x.Il.Success},Z(A.W.Step.Room.ErrorForm.ConfirmationMessage)))),u.createElement(g.Z,{open:!1===w.success},u.createElement("div",{className:"u-pad-top"},u.createElement(E.ZP,{color:x.Il.Alert},w.message)))))))}},72870:function(e,t,n){"use strict";n.d(t,{y:function(){return a}});var r=n(4918),o=n(67294),a=function(){var e,t,n=(0,o.useContext)(r.hy).selectedBasketRow;return o.createElement("script",{type:"application/ld+json"},JSON.stringify({"@context":"https://structured-data.triptease.io","@type":"LodgingSearch",checkinTime:null==n||null===(e=n.getStartDate())||void 0===e?void 0:e.format("YYYY-M-D"),checkoutTime:null==n||null===(t=n.getEndDate())||void 0===t?void 0:t.format("YYYY-M-D"),numAdults:null==n?void 0:n.getAdults(),numChildren:null==n?void 0:n.getChildren(),numInfants:null==n?void 0:n.getInfants(),numRooms:"1",offerCode:null==n?void 0:n.getPromoCode()}))}},16318:function(e,t,n){"use strict";n.d(t,{Z:function(){return Y}});var r=n(4942),o=n(70885),a=n(4918),l=n(89331),i=n(94184),c=n.n(i),m=n(67294),s=n(26793),u=n(79740),d=n(64854),p=n(20858),A=n(13010),g=n(78886),f=n(19874),v=n(26573),C=n(30584),y=n(40291),h=n(98013),E=n(42041),b=n(90292);function _(e){var t,n=(0,m.useContext)(a.g7),r=(0,l.WP)().hotel,i=e.perks,s=e.room,u=n.screenSize<=b.Z.Large,d=(0,m.useState)(null===(t=i[0])||void 0===t?void 0:t.name),p=(0,o.Z)(d,2),A=p[0],g=p[1],f=c()("room-perk-icon",{"--has-bg":u});return m.createElement(m.Fragment,null,!(null==i||!i.length)&&m.createElement("ul",null,i.map((function(e,t){if(!(u&&t>=4)){var o=(0,E.W)(e);return m.createElement("li",{key:t,onClick:function(){g(e.name)}},m.createElement("div",{className:f},o),m.createElement("div",{className:"u-marg-right u-none@l- u-block@m- "+(u&&A!==e.name||n.screenSize===b.Z.Tiny?"u-none-2":"")},m.createElement(C.xv,{type:C.yG.Small},null!=e&&e.perkNameRenderer?e.perkNameRenderer({hotel:r,room:s}):e.name)))}}))))}var x=n(57700),S=n(8643),B=n(83966),Z=n(40742),k=n(79478),R=n(97754),w=n(80131),O=n.n(w);function P(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 N(e){var t,n,i=e.room,p=(0,s.$)().t,A=(0,m.useContext)(a.g7),f=A.screenSize,v=A.currentFilters,y=A.setCurrentFilters,h=(0,l.WP)().hotel,E=(0,m.useContext)(a.hy),_=E.currentBasketRows,x=null!==(t=E.selectedBasketRow)&&void 0!==t?t:_[_.length-1],S=(0,m.useState)(null),w=(0,o.Z)(S,2),N=w[0],D=w[1],j=(0,m.useState)(null),I=(0,o.Z)(j,2),M=I[0],F=I[1],W=(0,m.useState)(!1),L=(0,o.Z)(W,2),z=L[0],U=L[1];return m.createElement(m.Fragment,null,m.createElement("div",{className:c()(O().container,(0,r.Z)({},O().calendarOpen,z))},m.createElement("div",{className:O().info},m.createElement(C.ZP,{bold:!0},p(k.W.Step.Room.RoomInfo.Unfortunately)),m.createElement(C.ZP,{color:R.Il.Accent},null==x?void 0:x.getStartDate().format("ddd, DD MMM")," — ",null==x?void 0:x.getEndDate().format("ddd, DD MMM")),m.createElement(C.ZP,{type:C.yG.Small},p(k.W.Step.Room.RoomInfo.IsUnavailableForRoom,{room:i.name}))),m.createElement(d.Z,{className:O().findDatesBtn,name:"FindAvailableDatesButton",primary:!0,primaryActive:z,filled:!0,icon:z?g.Tu.ArrowUp2:g.Tu.ArrowDown2,iconPosition:"right",stopIconAnimation:!0,textColor:(0,R.pJ)(z?null==h?void 0:h.colors.accent3:null==h?void 0:h.colors.accent),onClick:function(){return U((function(e){return!e}))},size:f<=b.Z.Mobile?"small":"normal"},p(k.W.Step.Room.RoomInfo.FindAvailableDatesForRoom)),m.createElement(u.Z,{open:z,topOffset:21},m.createElement("div",{className:O().calendarOverlay},m.createElement(B.Z,{showMonthOnLoad:x.getStartDate(),showMultipleMonths:f>b.Z.ExtraLarge,supportsMultiSelecting:!0,supportsWeek:!1,className:O().calendar,roomCode:null!==(n=i.code)&&void 0!==n?n:"",small:!0,onStartDateChanged:D,onEndDateChanged:F}),m.createElement("div",{className:O().calendarFooter},m.createElement(C.ZP,{bold:!0,color:N?R.Il.Accent:void 0},N?"".concat(N.format("ddd, DD MMM")).concat(M?" — ".concat(M.format("ddd, DD MMM")):""):p(k.W.Step.Room.RoomInfo.SelectDate)),m.createElement(d.Z,{primary:!0,filled:!0,onClick:function(){if(N&&M&&i.code){E.setStartDate(N),E.setEndDate(M);var e=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach((function(t){(0,r.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},v);e.RoomType=new Z.Z([i.code]),y(e)}},disabled:!(N&&M),mobileWidth:!0},p(k.W.Step.Room.RoomInfo.SelectCheckoutDate)))))))}var D=n(32458),j=n(49723),I=n(46716),M=n(50234),F=n(78361),W=n(73633),L=n(44744),z=n(61715),U=n(84544),T=n(39605);function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Y(e){var t=e.room,n=(0,m.useState)([]),i=(0,o.Z)(n,2),E=i[0],B=i[1],Z=(0,m.useState)([]),w=(0,o.Z)(Z,2),O=w[0],P=w[1],Y=(0,m.useState)(!t.isAvailable()),q=(0,o.Z)(Y,2),J=q[0],Q=q[1],V=(0,m.useState)(!1),H=(0,o.Z)(V,2),$=H[0],X=H[1],K=(0,s.$)().t,ee=(0,m.useContext)(a.g7),te=(0,m.useContext)(a.hy),ne=(0,m.useContext)(a.Qm),re=(0,l.WP)().hotel,oe=(0,m.useContext)(a.O8),ae=c()("room-details",(0,r.Z)({},"+is-open",J));(0,m.useEffect)((function(){var n;null!==(n=te.selectedBasketRow)&&void 0!==n&&n.getRoom()&&te.selectedBasketRow.getRoom().code===e.room.code&&Q(!0);var r=te.selectedBasketRow;r&&U.ZP.instance.addRoomImpression(t,{to:r.getStartDate(),from:r.getEndDate()},r.getPromoCode())}),[te.selectedBasketRow]),(0,m.useEffect)((function(){var e=[],n=[];if(W.Z.isActive()){var r,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return G(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?G(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},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,l=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){i=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(i)throw a}}}}(t.getRates());try{for(o.s();!(r=o.n()).done;){var a,l,i,c=r.value;(null===(a=c.promoCode)||void 0===a?void 0:a.toLowerCase())===(null===(l=te.selectedBasketRow)||void 0===l||null===(i=l.getPromoCode())||void 0===i?void 0:i.toLowerCase())?n.unshift(c):e.push(c)}}catch(e){o.e(e)}finally{o.f()}n.length>0&&(Q(!0),B(n))}else e=t.getRates();P(e)}),[t.getRates()]);var le=t.getShortDescription(),ie=(0,M.i)().isMobile,ce=J||ee.screenSize<=b.Z.Medium&&null===J&&!(null!=re&&re.mobileDefaultRatesClosed),me=t.getLowestPrice(!1,!0),se=oe.alwaysShowDecimals?me:Math.round(me),ue=ee.screenSize>b.Z.Medium&&se.toLocaleString().length<7?"large":"normal",de=function(e){return Math.round(z.z7(e,!0,ne.currentCurrency,null==re?void 0:re.defaultCurrency))},pe=(0,j.Z)({hideDecimals:!0,children:se}),Ae=pe.value,ge=pe.isLoading,fe=te.selectedBasketRow,ve=(0,I.Z)().hasPricePreview,Ce=t.getRoomPerks({hotel:re,room:t,perksLimitNumber:5}).roomPerks;return m.createElement("div",{className:"room-details-container ".concat(e.disableMarginBottom?"":"u-marg-bottom")},m.createElement("div",{className:ae},m.createElement("div",{className:"room-details--image"},m.createElement(y.Z,{images:e.room.getImages(),imageSize:L.h.Medium})),m.createElement("div",{className:"room-details--content u-pad--heavy u-pad@l-"},m.createElement("div",{className:"u-marg-bottom"},ee.screenSize>b.Z.Large&&m.createElement(m.Fragment,null,m.createElement("div",{className:"u-marg-bottom"},m.createElement(x.Z,{room:t,limit:2}))),m.createElement("div",{className:"room-details--content-title u-marg-bottom--light"},m.createElement(A.Z,{bold:!0},t.name)),m.createElement(h.R,{room:t}),(null==le?void 0:le.replace(/<br(\/|)>/g,""))&&m.createElement("div",{className:"room-details--content-description u-marg-bottom--light"},m.createElement(C.ZP,{color:R.Il.DarkGrey,type:C.yG.Small},m.createElement("span",{dangerouslySetInnerHTML:{__html:(null==le?void 0:le.replace(/<br(\/|)>/g,""))||""}})))),m.createElement("div",{className:"row"},!(null!=re&&re.perksHideOnRoomRow)&&m.createElement("div",{className:"col-12 u-flex u-marg-bottom@m- flex-column align-items-start"},m.createElement("div",{className:"room-details--content-perks u-marg-bottom@m-"},ie&&m.createElement("div",{className:"u-marg-bottom"},m.createElement(C.ZP,{type:C.yG.Small,bold:!0,color:R.Il.Accent},(null==re?void 0:re.perkTitle)||K(k.W.Misc.Perks.AndYouGetAll))),m.createElement(_,{perks:Ce,room:t}))),(null==re?void 0:re.showDescriptionOnRoomDetails)&&m.createElement("div",{className:"col-12"},m.createElement(f.Z,{noMargins:!0}),m.createElement("div",{className:"u-marg-top u-text-overflow-ellipsis-3 u-marg-bottom"},m.createElement(C.ZP,{type:C.yG.Small,color:R.Il.Graphite},m.createElement("span",{dangerouslySetInnerHTML:{__html:e.room.getLongDescription()||""}})))),m.createElement("div",{className:"col-md-6 u-flex u-marg-bottom@m- flex-column align-items-start"},m.createElement(d.Z,{icon:g.Tu.ArrowRight2,isText:!0,primary:!0,size:"tiny",iconPosition:"right",onClick:function(){U.ZP.instance.sendInteraction("More Room Details",U.s_.LINK,U._J.ROOMS),X(!0)}},K(k.W.Step.Room.RoomInfo.MoreDetails))),t.isAvailable()&&m.createElement("div",{className:"col-md-6 u-flex justify-content-end flex-column align-items-start align-items-md-end"},m.createElement(C.ZP,{type:C.yG.Small,color:R.Il.Navy,inline:!0},K(k.W.Misc.From)),m.createElement("div",{className:"room-details--content-price flex-row align-items-end"},m.createElement(A.Z,{size:ue,bold:!0},m.createElement(p.Z,{hideDecimals:!0},se)),m.createElement(C.ZP,{color:R.Il.DarkGrey,inline:!0},"/",K(k.W.Misc.Night))),m.createElement(C.ZP,{type:C.yG.Small,color:R.Il.Grey,className:"u-nowrap",align:ie?T.P.Left:T.P.Right},m.createElement("span",{dangerouslySetInnerHTML:{__html:t.getLowestPriceType()===F.I.IncludingFeesAndTaxes?K(k.W.Step.Room.RoomInfo.IncludesTaxes):K(k.W.Step.Room.ExcludingTaxes)}})))),m.createElement("div",{className:"u-flex-direction-column u-flex u-flex-align-flex-end u-flex-align-flex-start@m- u-w-100@m-"},!ge&&ve?m.createElement("div",{className:"u-marg-top--light"},m.createElement(v.C,{price:Ae,checkin:((null==fe?void 0:fe.getStartDate())||te.endDate).format("YYYY-MM-DD"),currency:ne.currentCurrency})):null,m.createElement(d.Z,{className:"u-marg-top--light",name:"ViewRatesNowButton",primary:!0,primaryActive:!!ce,filled:!0,stopIconAnimation:!0,icon:ce?g.Tu.ArrowUp2:g.Tu.ArrowDown2,iconPosition:"right",onClick:function(){if(!ce){var e=te.selectedBasketRow;e&&U.ZP.instance.sendRoomClick(t,e.getStartDate(),e.getEndDate(),e.getPromoCode())}Q(!ce)},wide:ee.screenSize<=b.Z.Large,textColor:(0,R.pJ)(ce?null==re?void 0:re.colors.accent3:null==re?void 0:re.colors.accent)},K(ce?k.W.Step.Room.RoomInfo.CloseRates:k.W.Step.Room.RoomInfo.ViewRates))))),m.createElement(u.Z,{open:!!ce},t.isAvailable()?m.createElement(S.Z,{roomCode:t.code,rates:O,featuredRates:E}):m.createElement(N,{room:t})),m.createElement(D.Z,{open:$,room:e.room,rates:O,featuredRates:E,onClose:function(){X(!1)}}),t.getRates().map((function(e){return m.createElement("script",{key:t.code+"-"+e.code,type:"application/ld+json"},JSON.stringify({"@context":"http://schema.org/","@type":"Offer",itemOffered:{"@type":"HotelRoom",name:t.name},name:e.name,identifier:e.code,priceSpecification:{"@type":"UnitPriceSpecification",price:de(e.getAveragePrice(!0)),basePrice:de(e.getTotalPrice(!0)),totalPrice:de(e.getAveragePrice()),priceCurrency:ne.currentCurrency,unitText:"Nightly"}}))})))}},98013:function(e,t,n){"use strict";n.d(t,{R:function(){return s}});var r=n(89331),o=n(67294),a=n(26793),l=n(78886),i=n(30584),c=n(79478),m=n(97754);function s(e){var t,n,s,u,d,p,A,g=(0,r.WP)().hotel,f=(0,a.$)().t,v=null==g||null===(t=g.rooms)||void 0===t?void 0:t[null===(n=e.room)||void 0===n?void 0:n.code],C=null==v?void 0:v.roomSize,y=null==g||null===(s=g.overwrites)||void 0===s||null===(u=s[null===(d=e.room)||void 0===d?void 0:d.code])||void 0===u?void 0:u.RoomDimensions,h=null!=y?y:C?"".concat(C," m²"):void 0,E=!(null==v||!v.petFriendly),b=null!==(p=e.textColor)&&void 0!==p?p:m.Il.DarkGrey,_="".concat((null==v?void 0:v.bedQuantity)>0?null==v?void 0:v.bedQuantity:""," ").concat(null==v?void 0:v.bedType);return null!=v&&null!==(A=v.bedTypeOverride)&&void 0!==A&&A.trim()&&(_=v.bedTypeOverride),o.createElement("ul",{className:"u-inline-flex u-flex-gap u-flex-wrap u-marg-bottom rs-room-details-beds-block"},o.createElement("li",{className:"u-flex align-items-center"},o.createElement(l.ZP,{icon:l.Tu.People,size:"24px",color:m.Il.Navy}),o.createElement("div",{className:"u-pad-left--light"},o.createElement(i.xv,{type:i.yG.Small,inline:!0,color:b},f(c.W.Step.Room.Sleeps,{maxOccupancy:null==v?void 0:v.maxOccupancy})))),!1!==(null==v?void 0:v.showBedType)&&o.createElement("li",{className:"u-flex align-items-center"},o.createElement(l.ZP,{icon:l.Tu.Bed,size:"24px",color:m.Il.Navy}),o.createElement("div",{className:"u-pad-left--light"},o.createElement(i.xv,{type:i.yG.Small,inline:!0,color:b},_))),!!h&&o.createElement("li",{className:"u-flex align-items-center"},o.createElement(l.ZP,{icon:l.Tu.RoomSize,size:"24px",color:m.Il.Navy}),o.createElement("div",{className:"u-pad-left--light"},o.createElement(i.xv,{type:i.yG.Small,inline:!0,color:b},h))),E&&o.createElement("li",{className:"u-flex align-items-center"},o.createElement(l.ZP,{icon:l.Tu.PetFriendly,size:"24px",color:m.Il.Navy}),o.createElement("div",{className:"u-pad-left--light"},o.createElement(i.xv,{type:i.yG.Small,inline:!0,color:b},f(c.W.Step.Room.PetFriendly)))))}},50840:function(e,t,n){"use strict";n.d(t,{Y:function(){return te}});var r=n(70885),o=n(4918),a=n(67294),l=n(26793),i=n(79478),c=n(78886),m=n(30584),s=n(4942),u=n(64854),d=n(33409),p=n(27930);function A(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 g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?A(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):A(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function f(){var e=(0,a.useContext)(o.g7),t=(0,l.$)().t,n=Object.keys(e.currentFilters).filter((function(t){return t&&e.currentFilters[t]instanceof p.Z}));return n.length?a.createElement("div",{className:"u-flex w-100"},a.createElement("div",{className:"filter-height"},n&&(n.length<=2?n.map((function(n){var r;if(n&&e.currentFilters[n]instanceof p.Z)return a.createElement(d.ZP,{key:n,onClickIcon:function(){e.setCurrentFilters(g(g({},e.currentFilters),{},(0,s.Z)({},n,null)))},type:d.Rm.Secondary,icon:c.Tu.Close,iconPosition:"right"},null===(r=e.currentFilters[n])||void 0===r?void 0:r.getLabel(t))})):a.createElement(d.ZP,{onClickIcon:function(){e.setCurrentFilters({})},type:d.Rm.Secondary,icon:c.Tu.Close,iconPosition:"right"},n.length," Filters Applied"))),!!Object.values(e.currentFilters).filter((function(e){return!!e})).length&&a.createElement(u.Z,{isText:!0,size:"tiny",onClick:function(){e.setCurrentFilters({})}},t(i.W.Misc.ClearAll))):a.createElement(a.Fragment,null)}var v=n(89331),C=n(13010),y=n(19874),h=n(65128),E=n(89089),b=n(94184),_=n.n(b),x=n(20858),S=n(64485),B=n(42982),Z=n(55061),k=n.n(Z),R=function(e){var t,n,r,o=_()(k().marker,(n={},(0,s.Z)(n,k()["--fixed"],e.fixed),(0,s.Z)(n,k()["--hidden"],!(null!==(t=e.marker)&&void 0!==t&&t.isVisible)),(0,s.Z)(n,k()["--".concat(e.isEdge)],!!e.isEdge),n)),l=_()(k()["marker-label"],(r={},(0,s.Z)(r,k()["--fixed"],e.fixed),(0,s.Z)(r,k()["--".concat(e.isEdge)],!!e.isEdge),r)),i={};return e.offset&&(i.left=Math.max(Math.min(100,e.offset),0)+"%"),a.createElement("span",{className:o,style:i},e.marker&&!!e.marker.label&&a.createElement("span",{className:l},e.marker.label))},w=function(e){var t,n,o=e.min,l=void 0===o?0:o,i=e.max,c=void 0===i?100:i,m=(0,a.useState)(!1),s=(0,r.Z)(m,2),u=(s[0],s[1]),d=(0,a.useState)(null),p=(0,r.Z)(d,2),A=p[0],g=p[1],f=(0,a.useRef)(null),v=function(t){var n,r,o=null==f||null===(n=f.current)||void 0===n?void 0:n.getBoundingClientRect();if(o){for(var a=o.x,i=o.x+o.width,m=Math.max(Math.min(Math.round(l+(c-l)*(t.clientX-a)/(i-a)),e.max),e.min),s=A,u=e.markers,d=0;d<u.length;d++)u[d].isVisible&&(null===s||Math.abs(m-u[s].value)>Math.abs(m-u[d].value))&&(s=d);var p=(0,B.Z)(e.markers);null!==s&&(p[s].value=m),null===(r=e.onChange)||void 0===r||r.call(e,p),g(s)}},C=function(e){var t;return t=(e-l)/(c-l)*100,Math.min(Math.max(t,0),100)};return(0,a.useEffect)((function(){var e,t=!1,n=null==f||null===(e=f.current)||void 0===e?void 0:e.getBoundingClientRect();if(n){n.x,n.x,n.width;var r=function(e){t||null===A||v(e)},o=function(){u(!1),g(null)};return document.body.addEventListener("mouseup",o),document.body.addEventListener("mousemove",r),function(){t=!0,document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",r)}}}),[A]),a.createElement("div",{className:k().slider,onMouseDown:function(e){u(!0),v(e)},ref:f},a.createElement("div",{className:k()["slider-track"]},null===(t=null!==(n=e.backgroundMarkers)&&void 0!==n?n:[])||void 0===t?void 0:t.map((function(e,t){return a.createElement(R,{key:t,offset:C(e.value),marker:e,fixed:!0,isEdge:e.isEdge})})),a.createElement("div",{className:k()["slider-rail"],style:{left:"".concat(C(e.markers[0].value),"%"),right:"".concat(100-C(e.markers[1].value),"%")}}),e.markers.map((function(e,t){return a.createElement(R,{key:t,offset:C(e.value),marker:e})}))))},O=n(43144),P=n(15671),N=n(60136),D=n(82963),j=n(61120);var I=function(e){(0,N.Z)(o,e);var t,n,r=(t=o,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,r=(0,j.Z)(t);if(n){var o=(0,j.Z)(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return(0,D.Z)(this,e)});function o(e,t){var n;return(0,P.Z)(this,o),(n=r.call(this)).min=void 0,n.max=void 0,n.getMin=function(){return n.min},n.getMax=function(){return n.max},n.getLabel=function(){return"Budget"},n.check=function(e){if(e.getLowestPrice()>n.max)return null;var t=[];return e.getOriginalRates().forEach((function(e){e.getAveragePrice()<=n.max&&e.getAveragePrice()>=n.min&&t.push(e)})),e.filteredRates=t,e},n.min=e,n.max=t,n}return(0,O.Z)(o)}(p.Z),M=n(97754);function F(e){var t,n,o,c,s,d=(0,l.$)().t,p=(0,a.useState)([null!==(t=null===(n=e.filter)||void 0===n?void 0:n.getMin())&&void 0!==t?t:0,null!==(o=null===(c=e.filter)||void 0===c?void 0:c.getMax())&&void 0!==o?o:0]),A=(0,r.Z)(p,2),g=A[0],f=A[1],v=(0,a.useState)(g),C=(0,r.Z)(v,2),y=C[0],h=C[1],E=(0,a.useState)(null),b=(0,r.Z)(E,2),B=b[0],Z=b[1];(0,a.useEffect)((function(){var t,n,r,o,a,l,i=null!==(t=e.roomList)&&void 0!==t&&t.length?e.roomList.reduce((function(e,t){var n=t.getLowestPrice(!0);return e<n&&e?e:n}),0):0,c=null!==(n=e.roomList)&&void 0!==n&&n.length?e.roomList.reduce((function(e,t){var n=t.getHighestPrice(!0);return e>n&&e?e:n}),0):0;f([i,c]),h([null!==(r=null===(o=e.filter)||void 0===o?void 0:o.getMin())&&void 0!==r?r:i,null!==(a=null===(l=e.filter)||void 0===l?void 0:l.getMax())&&void 0!==a?a:c])}),[e.roomList]),(0,a.useEffect)((function(){var e=g[1]-g[0];y[1]<g[0]+.3*e?Z("left"):y[0]>g[1]-.3*e?Z("right"):Z(null)}),[y]);var k=function(e){return a.createElement(x.Z,{hideDecimals:!0,disableLoading:!0},e)},R=(M.Il.Grey,k(g[0]),g[0],M.Il.Grey,k(g[1]),g[1],k(y[0]),k(y[1]),y[1],y[0],y[0],[{isVisible:!0,value:y[0]},{isVisible:!0,value:y[1]},{isVisible:!1,label:a.createElement(a.Fragment,null,k(y[0])," - ",k(y[1])),value:y[0]+(y[1]-y[0])/2}]),O=[{isVisible:!0,value:g[0],label:k(g[0]),isEdge:"start"},{isVisible:!0,value:g[1],label:k(g[1]),isEdge:"end"}];return a.createElement(a.Fragment,null,a.createElement("div",{className:"u-flex"},a.createElement("div",null,a.createElement(m.ZP,{inline:!0,type:m.yG.Small},a.createElement("strong",null,d(i.W.Step.Room.Filter.Budget))),a.createElement(m.ZP,{inline:!0,type:m.yG.Small},"/",d(i.W.Misc.PerNight))),a.createElement("div",null,a.createElement(u.Z,{size:"tiny",isText:!0,disabled:!e.filter,onClick:function(){return h(g),void e.onChange(null)}},d(i.W.Misc.Clear)))),(null===(s=e.roomList)||void 0===s?void 0:s.length)>0?a.createElement("div",{className:_()("roomstay-slider",{"--min-limit":"left"===B,"--max-limit":"right"===B})},a.createElement(w,{min:g[0],max:g[1],onChange:function(t){h(t.map((function(e){return e.value}))),e.onChange(new I(t[0].value,t[1].value))},markers:R,backgroundMarkers:O})):a.createElement("div",{className:"u-marg-top-bottom u-flex justify-content-center"},a.createElement(S.Z,null)))}var W=n(69024),L=n(89087);function z(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 U(e){var t,n=(0,l.$)().t,o=(0,a.useState)({}),c=(0,r.Z)(o,2),d=c[0],p=c[1],A=(0,a.useState)(0),g=(0,r.Z)(A,2),f=g[0],v=g[1],C=(0,a.useRef)(null);return(0,a.useEffect)((function(){if(e.roomList){var t={},n=e.filter?e.filter.getViewOnly():null;e.roomList.forEach((function(e){e.getOriginalRates().forEach((function(e){t[e.name]={status:!n||n.includes(e.name)}}))})),p(t)}}),[e.roomList,f]),(0,a.useEffect)((function(){var t;if(null!=C&&C.current&&null!==(t=e.roomList)&&void 0!==t&&t.length){var n=Object.keys(d),r=n.filter((function(e){return d[e].status}));n.length===r.length?e.onChange(null):e.onChange(new L.Z(r))}}),[d]),a.createElement(a.Fragment,null,a.createElement("div",{className:"u-flex u-marg-bottom",ref:C},a.createElement(m.ZP,{inline:!0,type:m.yG.Small},a.createElement("strong",null,n(i.W.Step.Room.Filter.RateType))),a.createElement(u.Z,{size:"tiny",isText:!0,disabled:!e.filter,onClick:function(){e.onChange(null),v((function(e){return e+1}))}},n(i.W.Misc.Clear))),a.createElement("div",null,(null===(t=e.roomList)||void 0===t?void 0:t.length)>0?d&&Object.keys(d).map((function(e){return a.createElement("div",{className:"u-marg-bottom--light",key:e},a.createElement(W.Z,{label:e,checked:d[e].status,onChange:function(t){var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?z(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):z(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},d);n[e].status=t.target.checked,p(n)}}))})):a.createElement("div",{className:"u-marg-top-bottom u-flex justify-content-center"},a.createElement(S.Z,null))))}var T=n(40742);function G(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 Y(e){var t,n=(0,l.$)().t,o=(0,a.useState)({}),c=(0,r.Z)(o,2),d=c[0],p=c[1],A=(0,a.useState)(0),g=(0,r.Z)(A,2),f=g[0],v=g[1],C=(0,a.useRef)(null);(0,a.useEffect)((function(){if(e.roomList){var t={},n=e.filter?e.filter.getVisibleRooms():null;e.roomList.forEach((function(e){t[e.name]={status:!n||n.includes(e.name)||n.includes(e.code)}})),p(t)}}),[e.roomList,f]);var y=Object.keys(d),h=y.filter((function(e){return d[e].status}));return(0,a.useEffect)((function(){var t;null!=C&&C.current&&null!==(t=e.roomList)&&void 0!==t&&t.length&&(h.length===y.length?e.onChange(null):e.onChange(new T.Z(h)))}),[d]),a.createElement(a.Fragment,null,a.createElement("div",{className:"u-flex u-marg-bottom u-marg-top--heavy",ref:C},a.createElement(m.ZP,{inline:!0,type:m.yG.Small},a.createElement("strong",null,n(i.W.Step.Room.Filter.RoomType))),a.createElement(u.Z,{size:"tiny",isText:!0,disabled:!e.filter,onClick:function(){e.onChange(null),v((function(e){return e+1}))}},n(i.W.Misc.Clear))),a.createElement("div",null,(null===(t=e.roomList)||void 0===t?void 0:t.length)>0?d&&Object.keys(d).map((function(e){return a.createElement("div",{className:"u-marg-bottom--light",key:e},a.createElement(W.Z,{label:e,checked:d[e].status,onChange:function(t){var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},d);n[e].status=t.target.checked,p(n)}}))})):a.createElement("div",{className:"u-marg-top-bottom u-flex justify-content-center"},a.createElement(S.Z,null))))}var q=n(54862),J=n(84544),Q=n(90292);function V(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?V(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):V(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function $(e){var t=(0,a.useContext)(o.g7),n=(0,a.useContext)(o.hy),c=(0,v.WP)().hotel,d=(0,l.$)().t,p=(0,a.useState)(t.currentFilters),A=(0,r.Z)(p,2),g=A[0],f=A[1],b=(0,a.useState)([]),_=(0,r.Z)(b,2),x=_[0],S=_[1];(0,a.useEffect)((function(){if(f(H({},t.currentFilters)),e.open){var r,o=n.getAllValidRows();q.Z.getUnfilteredRoomList(null!==(r=n.selectedBasketRow)&&void 0!==r?r:o[o.length-1],null==c?void 0:c.hotelID).then((function(e){S(e)}))}}),[e.open]);var B=a.createElement("div",{className:"u-flex align-items-center justify-content-between justify-content-md-end"},a.createElement("div",{className:"u-marg-right--heavy"},a.createElement(m.ZP,{color:M.Il.Accent},a.createElement("strong",null,q.Z.filterRooms(x,Object.values(g)).length," ",d(i.W.Step.Room.Filter.MatchingRoomsRates)))),a.createElement(u.Z,{primary:!0,filled:!0,onClick:function(){var n;J.ZP.instance.sendInteraction("Apply Filters",J.s_.BUTTON,J._J.ROOMS),t.setCurrentFilters(g),null===(n=e.onClose)||void 0===n||n.call(e)}},d(i.W.Misc.ApplyChanges))),Z=function(e,t){f((function(n){return H(H({},n),{},(0,s.Z)({},e,t))}))},k=a.createElement("div",{className:"room-filter"},a.createElement("div",{className:"u-pad--heavy u-pad-bottom--none"},t.screenSize>Q.Z.Medium&&a.createElement("div",{className:"u-marg-bottom"},a.createElement(C.Z,{bold:!0},d(i.W.Step.Room.FilterBy))),a.createElement("div",{className:"row"},a.createElement("div",{className:"col-md-6"},a.createElement(F,{filter:g.Budget,onChange:function(e){return Z("Budget",e)},roomList:x}),a.createElement("div",{className:"u-marg-bottom--heavy"},a.createElement(Y,{roomList:x,filter:g.RoomType,onChange:function(e){return Z("RoomType",e)}}))),a.createElement("div",{className:"col-md-6"},a.createElement("div",{className:"u-marg-bottom--heavy"},a.createElement(U,{roomList:x,filter:g.RateType,onChange:function(e){return Z("RateType",e)}}))))));return t.screenSize>Q.Z.Medium?a.createElement(E.a,{followElement:e.anchorEl,onClose:e.onClose,open:e.open,placement:"bottom-start"},a.createElement(a.Fragment,null,k,a.createElement("div",{className:"u-pad--heavy u-pad-top--none"},a.createElement(y.Z,null),B))):a.createElement(h.Z,{open:e.open,onClose:e.onClose,title:d(i.W.Step.Room.FilterBy),mobileFooter:B},k)}var X=n(63351),K=n(60281);function ee(){var e=(0,a.useContext)(o.g7).screenSize<=Q.Z.Medium,t=(0,a.useContext)(o.g7),n=(0,a.useState)(t.currentRoomSort),l=(0,r.Z)(n,2),i=l[0],c=l[1];return a.createElement(X.P,{nativeOnMobile:!0,options:Object.values(K.s).map((function(e){return{text:e,value:e}})),value:i,onChange:function(e){J.ZP.instance.sendInteraction("Change Sort",J.s_.DROPDOWN,J._J.ROOMS),c(e),t.setCurrentRoomSort(e)},keyName:"value",labelName:"text",className:_()("u-flex align-items-center",{"text-small":e})})}var te=function(){var e=(0,a.useContext)(o.g7),t=(0,l.$)().t,n=(0,a.useRef)(null),s=(0,a.useState)(!1),u=(0,r.Z)(s,2),d=u[0],p=u[1];return a.createElement("div",{className:"row align-items-end"},a.createElement("div",{className:"col-6 col-md-4 col-lg-3"},a.createElement(m.ZP,{type:m.yG.Label,color:M.Il.DarkGrey},a.createElement("strong",null,t(i.W.Step.Room.SortBy))),a.createElement("div",null,a.createElement(ee,null))),a.createElement("div",{className:"col-6 col-md-2 col-lg-2"},a.createElement("div",{ref:n},a.createElement("div",{className:"filter-button d-flex align-items-center u-cursor-pointer",onClick:function(){J.ZP.instance.sendInteraction("Show Filters",J.s_.DROPDOWN,J._J.ROOMS),p(!0)}},a.createElement(m.ZP,null,e.screenSize>Q.Z.Medium?t(i.W.Step.Room.FilterBy):t(i.W.Step.Room.Filter.ShowFilters)),a.createElement(c.ZP,{icon:c.Tu.Dropdown,color:M.Il.DarkGrey})),a.createElement($,{open:d,anchorEl:n.current,onClose:function(){p(!1)}}))),a.createElement("div",{className:"col-md-12 col-lg-7 u-align-right u-marg-top@l- u-empty-none filter-push-down"},a.createElement(f,null)))}},48229:function(e,t,n){(t=n(23645)(!0)).push([e.id,".Slider-module__slider___2f65h{width:100%;display:flex;padding:13px 0;user-select:none}.Slider-module__slider-track___3uTXL{height:4px;width:100%;background-color:var(--rs-color-snow);position:relative;border-radius:4px;z-index:1}.Slider-module__slider-rail___2Jeoy{top:0;left:0;right:0;bottom:0;background-color:var(--rs-color-accent-1);position:absolute;display:block;border-radius:4px;z-index:2}.Slider-module__marker___1duEi{position:absolute;top:50%;transform:translate(-50%, -50%);border-radius:100%;width:14px;height:14px;background-color:var(--rs-color-accent-1);border:2px solid var(--rs-color-white);cursor:grab}.Slider-module__marker___1duEi.Slider-module__--hidden___2PnRK{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.Slider-module__marker___1duEi.Slider-module__--fixed___3P_lS{background-color:var(--rs-color-navy);width:8px;height:8px;border:unset}.Slider-module__marker___1duEi.Slider-module__--start___2VXUn{left:0}.Slider-module__marker___1duEi.Slider-module__--end___1d_8m{left:100%}.Slider-module__marker-label___2nSLZ{position:absolute;left:50%;top:16px;transform:translateX(-50%);display:block;white-space:nowrap;user-select:none;font-size:14px !important;line-height:1em !important}.Slider-module__marker-label___2nSLZ.Slider-module__--fixed___3P_lS{color:var(--rs-color-grey)}.Slider-module__marker-label___2nSLZ:not(.Slider-module__--fixed___3P_lS){background-color:#fff;padding:0px 4px}.Slider-module__marker-label___2nSLZ.Slider-module__--start___2VXUn{transform:translateX(-10%)}.Slider-module__marker-label___2nSLZ.Slider-module__--end___1d_8m{transform:translateX(-75%)}","",{version:3,sources:["Slider.module.scss"],names:[],mappings:"AAAA,+BAAQ,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,qCAAc,UAAU,CAAC,UAAU,CAAC,qCAAqC,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,oCAAa,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,yCAAyC,CAAC,iBAAiB,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,+BAAQ,iBAAiB,CAAC,OAAO,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,yCAAyC,CAAC,sCAAsC,CAAC,WAAW,CAAC,+DAAiB,8BAA8B,CAAC,0BAA0B,CAAC,8DAAgB,qCAAqC,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,8DAAgB,MAAM,CAAC,4DAAc,SAAS,CAAC,qCAAc,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,0BAA0B,CAAC,aAAa,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,oEAAsB,0BAA0B,CAAC,0EAA4B,qBAAqB,CAAC,eAAe,CAAC,oEAAsB,0BAA0B,CAAC,kEAAoB,0BAA0B",file:"Slider.module.scss",sourcesContent:[".slider{width:100%;display:flex;padding:13px 0;user-select:none}.slider-track{height:4px;width:100%;background-color:var(--rs-color-snow);position:relative;border-radius:4px;z-index:1}.slider-rail{top:0;left:0;right:0;bottom:0;background-color:var(--rs-color-accent-1);position:absolute;display:block;border-radius:4px;z-index:2}.marker{position:absolute;top:50%;transform:translate(-50%, -50%);border-radius:100%;width:14px;height:14px;background-color:var(--rs-color-accent-1);border:2px solid var(--rs-color-white);cursor:grab}.marker.--hidden{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.marker.--fixed{background-color:var(--rs-color-navy);width:8px;height:8px;border:unset}.marker.--start{left:0}.marker.--end{left:100%}.marker-label{position:absolute;left:50%;top:16px;transform:translateX(-50%);display:block;white-space:nowrap;user-select:none;font-size:14px !important;line-height:1em !important}.marker-label.--fixed{color:var(--rs-color-grey)}.marker-label:not(.--fixed){background-color:#fff;padding:0px 4px}.marker-label.--start{transform:translateX(-10%)}.marker-label.--end{transform:translateX(-75%)}"]}]),t.locals={slider:"Slider-module__slider___2f65h","slider-track":"Slider-module__slider-track___3uTXL","slider-rail":"Slider-module__slider-rail___2Jeoy",marker:"Slider-module__marker___1duEi","--hidden":"Slider-module__--hidden___2PnRK","--fixed":"Slider-module__--fixed___3P_lS","--start":"Slider-module__--start___2VXUn","--end":"Slider-module__--end___1d_8m","marker-label":"Slider-module__marker-label___2nSLZ"},e.exports=t},6273:function(e,t,n){(t=n(23645)(!0)).push([e.id,".UnavailableRoom-module__container___uzzJu{display:flex;flex-direction:column;align-items:stretch;text-align:center;padding:30px 15px;background-color:#f3f3f3}@media(max-width: 576px){.UnavailableRoom-module__container___uzzJu{padding-left:0;padding-right:0}}@media(min-width: 767px){.UnavailableRoom-module__container___uzzJu{padding-left:0;padding-right:0}}@media(min-width: 991px){.UnavailableRoom-module__container___uzzJu{padding:30px 15px}}.UnavailableRoom-module__container___uzzJu.UnavailableRoom-module__calendarOpen___1mV12{padding-bottom:15px}@media(max-width: 576px){.UnavailableRoom-module__container___uzzJu.UnavailableRoom-module__calendarOpen___1mV12{padding-bottom:0}}@media(min-width: 767px){.UnavailableRoom-module__container___uzzJu.UnavailableRoom-module__calendarOpen___1mV12{padding-bottom:0}}@media(min-width: 991px){.UnavailableRoom-module__container___uzzJu.UnavailableRoom-module__calendarOpen___1mV12{padding-bottom:15px}}.UnavailableRoom-module__info___1H4gd{display:flex;flex-direction:column;gap:5px;padding-bottom:15px}.UnavailableRoom-module__findDatesBtn___vWuEJ{z-index:5;align-self:center}.UnavailableRoom-module__calendarOverlay___3c-Kn{background:#fff;border-radius:20px;padding:60px 0 20px;margin-top:-21px;display:flex;flex-direction:column;gap:20px;align-items:center}.UnavailableRoom-module__calendarFooter___2b-0Q{display:flex;justify-content:space-between;align-items:center;width:100%;padding-left:20px;padding-right:20px}@media(max-width: 767px){.UnavailableRoom-module__calendarFooter___2b-0Q{flex-direction:column;gap:20px}.UnavailableRoom-module__calendarFooter___2b-0Q>:last-child{align-self:center;justify-content:center}}.UnavailableRoom-module__calendar___1jd-j{border:none !important;padding:0 !important;gap:0 !important}.UnavailableRoom-module__calendar___1jd-j [class*=diji-calendar-month]{gap:0 !important;padding:0 !important}.UnavailableRoom-module__calendar___1jd-j [class*=diji-calendar-month--items]{padding:0 !important;gap:0 !important;margin:0 !important}.UnavailableRoom-module__calendar___1jd-j [class*=diji-calendar-month--item]{gap:0 !important;padding:0 !important;margin:1.5px !important}.UnavailableRoom-module__calendar___1jd-j [class*=diji-calendar-navigation]{top:-25px !important;left:30px !important;right:30px !important}","",{version:3,sources:["UnavailableRoom.module.scss"],names:[],mappings:"AAAA,2CAAW,YAAY,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,yBAAyB,2CAAW,cAAc,CAAC,eAAe,CAAC,CAAC,yBAAyB,2CAAW,cAAc,CAAC,eAAe,CAAC,CAAC,yBAAyB,2CAAW,iBAAiB,CAAC,CAAC,wFAAwB,mBAAmB,CAAC,yBAAyB,wFAAwB,gBAAgB,CAAC,CAAC,yBAAyB,wFAAwB,gBAAgB,CAAC,CAAC,yBAAyB,wFAAwB,mBAAmB,CAAC,CAAC,sCAAM,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,mBAAmB,CAAC,8CAAc,SAAS,CAAC,iBAAiB,CAAC,iDAAiB,eAAe,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,gDAAgB,YAAY,CAAC,6BAA6B,CAAC,kBAAkB,CAAC,UAAU,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,yBAAyB,gDAAgB,qBAAqB,CAAC,QAAQ,CAAC,4DAA4B,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,0CAAU,sBAAsB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,uEAAuC,gBAAgB,CAAC,oBAAoB,CAAC,8EAA8C,oBAAoB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,6EAA6C,gBAAgB,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,4EAA4C,oBAAoB,CAAC,oBAAoB,CAAC,qBAAqB",file:"UnavailableRoom.module.scss",sourcesContent:[".container{display:flex;flex-direction:column;align-items:stretch;text-align:center;padding:30px 15px;background-color:#f3f3f3}@media(max-width: 576px){.container{padding-left:0;padding-right:0}}@media(min-width: 767px){.container{padding-left:0;padding-right:0}}@media(min-width: 991px){.container{padding:30px 15px}}.container.calendarOpen{padding-bottom:15px}@media(max-width: 576px){.container.calendarOpen{padding-bottom:0}}@media(min-width: 767px){.container.calendarOpen{padding-bottom:0}}@media(min-width: 991px){.container.calendarOpen{padding-bottom:15px}}.info{display:flex;flex-direction:column;gap:5px;padding-bottom:15px}.findDatesBtn{z-index:5;align-self:center}.calendarOverlay{background:#fff;border-radius:20px;padding:60px 0 20px;margin-top:-21px;display:flex;flex-direction:column;gap:20px;align-items:center}.calendarFooter{display:flex;justify-content:space-between;align-items:center;width:100%;padding-left:20px;padding-right:20px}@media(max-width: 767px){.calendarFooter{flex-direction:column;gap:20px}.calendarFooter>:last-child{align-self:center;justify-content:center}}.calendar{border:none !important;padding:0 !important;gap:0 !important}.calendar [class*=diji-calendar-month]{gap:0 !important;padding:0 !important}.calendar [class*=diji-calendar-month--items]{padding:0 !important;gap:0 !important;margin:0 !important}.calendar [class*=diji-calendar-month--item]{gap:0 !important;padding:0 !important;margin:1.5px !important}.calendar [class*=diji-calendar-navigation]{top:-25px !important;left:30px !important;right:30px !important}"]}]),t.locals={container:"UnavailableRoom-module__container___uzzJu",calendarOpen:"UnavailableRoom-module__calendarOpen___1mV12",info:"UnavailableRoom-module__info___1H4gd",findDatesBtn:"UnavailableRoom-module__findDatesBtn___vWuEJ",calendarOverlay:"UnavailableRoom-module__calendarOverlay___3c-Kn",calendarFooter:"UnavailableRoom-module__calendarFooter___2b-0Q",calendar:"UnavailableRoom-module__calendar___1jd-j"},e.exports=t},55061:function(e,t,n){var r=n(93379),o=n(48229);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.id,o,""]]);r(o,{insert:"head",singleton:!1}),e.exports=o.locals||{}},80131:function(e,t,n){var r=n(93379),o=n(6273);"string"==typeof(o=o.__esModule?o.default:o)&&(o=[[e.id,o,""]]);r(o,{insert:"head",singleton:!1}),e.exports=o.locals||{}}}]);
@@ -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}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
24
+ (0, test_1.test)(`can change currency on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
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,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"]}
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"]}
@@ -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}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
17
+ (0, test_1.test)(`can checkout on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
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, maxRetries = 5) {
73
- return __awaiter(this, void 0, void 0, function* () {
72
+ function selectAvailableDates(page_1) {
73
+ return __awaiter(this, arguments, void 0, function* (page, maxRetries = 5) {
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}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
16
+ (0, test_1.test)(`can view find reservations page on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
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,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"]}
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"]}
@@ -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}`, ({ page }) => __awaiter(this, void 0, void 0, function* () {
16
+ (0, test_1.test)(`can view hotel info on ${config.url}`, (_a) => __awaiter(this, [_a], void 0, function* ({ page }) {
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,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"]}
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"]}
@@ -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.`, ({ page }) => __awaiter(void 0, void 0, void 0, function* () {
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 }) {
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,10 +9,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.verifyBookingConfirmation = exports.submitBookingReservation = exports.fillPaymentInformation = exports.fillContactInfo = exports.proceedToConfirmationStep = exports.selectAvailableDates = void 0;
12
+ exports.selectAvailableDates = selectAvailableDates;
13
+ exports.proceedToConfirmationStep = proceedToConfirmationStep;
14
+ exports.fillContactInfo = fillContactInfo;
15
+ exports.fillPaymentInformation = fillPaymentInformation;
16
+ exports.submitBookingReservation = submitBookingReservation;
17
+ exports.verifyBookingConfirmation = verifyBookingConfirmation;
13
18
  const test_1 = require("@playwright/test");
14
- function selectAvailableDates(page, maxRetries = 5) {
15
- return __awaiter(this, void 0, void 0, function* () {
19
+ function selectAvailableDates(page_1) {
20
+ return __awaiter(this, arguments, void 0, function* (page, maxRetries = 5) {
16
21
  for (let attempt = 0; attempt < maxRetries; attempt++) {
17
22
  // Choose the first available check-in date.
18
23
  const checkInDateElement = page.locator('.diji-calendar-month--item.--selectable').first();
@@ -57,7 +62,6 @@ function selectAvailableDates(page, maxRetries = 5) {
57
62
  return false;
58
63
  });
59
64
  }
60
- exports.selectAvailableDates = selectAvailableDates;
61
65
  function proceedToConfirmationStep(page) {
62
66
  return __awaiter(this, void 0, void 0, function* () {
63
67
  // Click the 'View Rates' button.
@@ -91,7 +95,6 @@ function proceedToConfirmationStep(page) {
91
95
  yield (0, test_1.expect)(confirmReservationButton).toHaveText('Confirm Reservation');
92
96
  });
93
97
  }
94
- exports.proceedToConfirmationStep = proceedToConfirmationStep;
95
98
  function fillContactInfo(page, data) {
96
99
  return __awaiter(this, void 0, void 0, function* () {
97
100
  // Fill Contact Info fields
@@ -108,7 +111,6 @@ function fillContactInfo(page, data) {
108
111
  yield page.click('.rs-enhanced-country-field--suggest-list-country-name'); // Assuming there's only one result...
109
112
  });
110
113
  }
111
- exports.fillContactInfo = fillContactInfo;
112
114
  function fillPaymentInformation(page, data) {
113
115
  return __awaiter(this, void 0, void 0, function* () {
114
116
  // Fill Payment Information. Each of these fields is within their own secure iframe that we need to enter first.
@@ -130,7 +132,6 @@ function fillPaymentInformation(page, data) {
130
132
  }
131
133
  });
132
134
  }
133
- exports.fillPaymentInformation = fillPaymentInformation;
134
135
  function submitBookingReservation(page) {
135
136
  return __awaiter(this, void 0, void 0, function* () {
136
137
  const confirmReservationButton = page.getByRole('button', { name: 'Confirm Reservation' });
@@ -138,7 +139,6 @@ function submitBookingReservation(page) {
138
139
  yield confirmReservationButton.click();
139
140
  });
140
141
  }
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,5 +160,4 @@ function verifyBookingConfirmation(page, data) {
160
160
  yield closeButton.click();
161
161
  });
162
162
  }
163
- exports.verifyBookingConfirmation = verifyBookingConfirmation;
164
163
  //# sourceMappingURL=checkoutHelpers.js.map