@roomstay/frontend 2.6.75 → 2.6.77-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/dist/153.bundle.js +1 -0
  2. package/dist/176.bundle.js +1 -0
  3. package/dist/273.bundle.js +1 -0
  4. package/dist/292.bundle.js +1 -0
  5. package/dist/316.bundle.js +1 -0
  6. package/dist/349.bundle.js +2 -0
  7. package/dist/{535.bundle.js.LICENSE.txt → 349.bundle.js.LICENSE.txt} +1 -1
  8. package/dist/352.bundle.js +1 -0
  9. package/dist/41.bundle.js +1 -0
  10. package/dist/{151.bundle.js → 451.bundle.js} +1 -1
  11. package/dist/479.bundle.js +1 -0
  12. package/dist/534.bundle.js +1 -0
  13. package/dist/557.bundle.js +1 -0
  14. package/dist/620.bundle.js +1 -0
  15. package/dist/696.bundle.js +1 -0
  16. package/dist/734.bundle.js +1 -0
  17. package/dist/83.bundle.js +1 -0
  18. package/dist/910.bundle.js +1 -0
  19. package/dist/922.bundle.js +1 -0
  20. package/dist/99.bundle.js +1 -0
  21. package/dist/main.bundle.js +1 -1
  22. package/dist/src/animations/AutoAutoHeight.d.ts +1 -1
  23. package/dist/src/api/HotelAPI.d.ts +2 -0
  24. package/dist/src/api/HotelAPI.js +7 -0
  25. package/dist/src/api/HotelAPI.js.map +1 -1
  26. package/dist/src/api/ReservationAPI.js +12 -9
  27. package/dist/src/api/ReservationAPI.js.map +1 -1
  28. package/dist/src/components/User/Forms/ForgotPasswordForm.d.ts +2 -1
  29. package/dist/src/components/User/Forms/SignUpForm.d.ts +2 -1
  30. package/dist/src/components/User/Forms/VerifyEmailForm.d.ts +2 -1
  31. package/dist/src/components/generic/AgedBetweenLabel/AgedBetweenLabel.d.ts +2 -1
  32. package/dist/src/components/generic/Alert.d.ts +2 -2
  33. package/dist/src/components/generic/BEButton.d.ts +1 -1
  34. package/dist/src/components/generic/BackButton.d.ts +2 -1
  35. package/dist/src/components/generic/BookingWizard/BookingWizard.d.ts +1 -0
  36. package/dist/src/components/generic/BookingWizard/BookingWizard.js +7 -1
  37. package/dist/src/components/generic/BookingWizard/BookingWizard.js.map +1 -1
  38. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.d.ts +2 -2
  39. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js +0 -1
  40. package/dist/src/components/generic/BookingWizard/BookingWizardBottomSheet/BookingWizardBottomSheet.js.map +1 -1
  41. package/dist/src/components/generic/BookingWizard/BookingWizardContent.d.ts +14 -5
  42. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js +24 -10
  43. package/dist/src/components/generic/BookingWizard/BookingWizardContent.js.map +1 -1
  44. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js +1 -1
  45. package/dist/src/components/generic/BookingWizard/BookingWizardDateSelector/BookingWizardDateSelector.js.map +1 -1
  46. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.d.ts +10 -2
  47. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js +187 -22
  48. package/dist/src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.js.map +1 -1
  49. package/dist/src/components/generic/Card/IconNavCard/IconNavCard.d.ts +2 -2
  50. package/dist/src/components/generic/Countdown.d.ts +2 -1
  51. package/dist/src/components/generic/Currency.d.ts +2 -1
  52. package/dist/src/components/generic/DateRangePicker/DateRangePicker.d.ts +2 -1
  53. package/dist/src/components/generic/DateRangePicker/DateRangePickerDay.d.ts +2 -1
  54. package/dist/src/components/generic/DateRangePicker/DateRangePickerDays.d.ts +2 -1
  55. package/dist/src/components/generic/DateRangePicker/DateRangePickerMonth.d.ts +2 -1
  56. package/dist/src/components/generic/Distance.d.ts +2 -1
  57. package/dist/src/components/generic/Headline.d.ts +1 -1
  58. package/dist/src/components/generic/HtmlContentViewer.d.ts +2 -1
  59. package/dist/src/components/generic/InputGroup/InputGroup.d.ts +2 -2
  60. package/dist/src/components/generic/LineBreak.d.ts +2 -1
  61. package/dist/src/components/generic/Notification.d.ts +1 -1
  62. package/dist/src/components/generic/NumberIncrement.d.ts +2 -1
  63. package/dist/src/components/generic/Overlay/Overlay.d.ts +2 -2
  64. package/dist/src/components/generic/PageTitle/index.d.ts +2 -1
  65. package/dist/src/components/generic/PaymentCard/PaymentCard.d.ts +2 -1
  66. package/dist/src/components/generic/Pill.d.ts +1 -1
  67. package/dist/src/components/generic/Placeholder.d.ts +2 -1
  68. package/dist/src/components/generic/PromoCodeInput.d.ts +2 -1
  69. package/dist/src/components/generic/RecentSearchesCard.d.ts +2 -1
  70. package/dist/src/components/generic/RoomstayMark.d.ts +2 -1
  71. package/dist/src/components/generic/Select/Select.d.ts +2 -1
  72. package/dist/src/components/generic/Select/Select.js +2 -2
  73. package/dist/src/components/generic/Select/Select.js.map +1 -1
  74. package/dist/src/components/generic/Slider/Slider.d.ts +1 -1
  75. package/dist/src/components/generic/Tabs/TabRouteContainer.d.ts +2 -2
  76. package/dist/src/components/generic/Tooltip/Tooltip.d.ts +2 -2
  77. package/dist/src/components/generic/badging/SSLSecureBadge.d.ts +2 -1
  78. package/dist/src/components/generic/buttons/NextStepButton.d.ts +2 -1
  79. package/dist/src/components/generic/date/DatePicker.d.ts +2 -1
  80. package/dist/src/components/generic/date/DatePickerDay.d.ts +2 -1
  81. package/dist/src/components/generic/date/DatePickerDays.d.ts +2 -1
  82. package/dist/src/components/generic/date/DatePickerMonth.d.ts +2 -1
  83. package/dist/src/components/generic/date/DatePickerWeek.d.ts +2 -1
  84. package/dist/src/components/generic/date/FloatingDatePicker.d.ts +1 -1
  85. package/dist/src/components/generic/date/WeekViewSkeleton.d.ts +2 -1
  86. package/dist/src/components/generic/loader/ImageLoader.d.ts +1 -1
  87. package/dist/src/components/generic/loader/LargeLoader.d.ts +2 -1
  88. package/dist/src/components/generic/loader/OverlayLoader.d.ts +2 -1
  89. package/dist/src/components/generic/loader/SmallSpinner.d.ts +2 -1
  90. package/dist/src/components/generic/map/HotelLocationMap.d.ts +2 -1
  91. package/dist/src/components/generic/modal/ConfirmationModal.d.ts +2 -1
  92. package/dist/src/components/generic/modal/ErrorModal.d.ts +1 -1
  93. package/dist/src/components/generic/modal/SigninModal/UnauthenticatedUserModal.d.ts +2 -1
  94. package/dist/src/components/generic/modal/SimpleModal.d.ts +1 -1
  95. package/dist/src/components/generic/modal/TabbedModal.d.ts +1 -1
  96. package/dist/src/components/generic/radio/RadioFields.d.ts +2 -1
  97. package/dist/src/components/graphics/TravelerNotfound.d.ts +2 -1
  98. package/dist/src/components/iconComponents/BookNowPayLaterIcon.d.ts +2 -1
  99. package/dist/src/components/members/InlineSignUpSection.d.ts +2 -1
  100. package/dist/src/components/members/SignInModal/ExternalMemberModal.d.ts +2 -1
  101. package/dist/src/components/members/SignInModal/InternalMemberSignInModal.d.ts +2 -1
  102. package/dist/src/components/members/SignInModal/MemberPortalSignInModal.d.ts +2 -1
  103. package/dist/src/components/members/SignInModal/MemberSignInModal.d.ts +2 -1
  104. package/dist/src/components/navigation/Header.d.ts +2 -1
  105. package/dist/src/components/navigation/StepSelector.d.ts +2 -1
  106. package/dist/src/components/navigation/StepSelectorModal.d.ts +2 -1
  107. package/dist/src/components/pages/Account/Card/MemberCardItem.d.ts +2 -1
  108. package/dist/src/components/pages/PageColorComponent.d.ts +2 -1
  109. package/dist/src/components/reservation/ReservationItem.d.ts +2 -1
  110. package/dist/src/components/steps/DaysSelectedInformer.d.ts +2 -1
  111. package/dist/src/components/steps/MinimumNightStayPill.d.ts +2 -1
  112. package/dist/src/components/steps/addons/AddonCard.d.ts +2 -1
  113. package/dist/src/components/steps/addons/AddonList.d.ts +2 -1
  114. package/dist/src/components/steps/addons/AddonsNotFoundBlock.d.ts +2 -1
  115. package/dist/src/components/steps/common/CommonAddonSummary/CommonAddonSummary.d.ts +2 -1
  116. package/dist/src/components/steps/common/ItemisedFeesListing/ItemisedFeesListing.d.ts +2 -1
  117. package/dist/src/components/steps/common/ItemisedFeesSummary/ItemisedFeesSummary.d.ts +2 -1
  118. package/dist/src/components/steps/confirmation/AccountDetails.d.ts +2 -1
  119. package/dist/src/components/steps/confirmation/PaymentDetails/ExistingCardPicker.d.ts +2 -1
  120. package/dist/src/components/steps/confirmation/PaymentInformation.d.ts +2 -1
  121. package/dist/src/components/steps/confirmation/PlanpayLabel.d.ts +2 -1
  122. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.d.ts +2 -1
  123. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js +11 -10
  124. package/dist/src/components/steps/confirmation/StepConfirmationAcknowledgement.js.map +1 -1
  125. package/dist/src/components/steps/confirmation/StepConfirmationCheckoutDifferencesModal.d.ts +2 -1
  126. package/dist/src/components/steps/confirmation/StepConfirmationCommentsComponent.d.ts +2 -1
  127. package/dist/src/components/steps/confirmation/StepConfirmationForm.d.ts +2 -1
  128. package/dist/src/components/steps/confirmation/StepConfirmationForm.js +11 -4
  129. package/dist/src/components/steps/confirmation/StepConfirmationForm.js.map +1 -1
  130. package/dist/src/components/steps/confirmation/StepConfirmationFormProvider.d.ts +2 -1
  131. package/dist/src/components/steps/confirmation/StepConfirmationImportantInformation.d.ts +7 -0
  132. package/dist/src/components/steps/confirmation/StepConfirmationImportantInformation.js +54 -0
  133. package/dist/src/components/steps/confirmation/StepConfirmationImportantInformation.js.map +1 -0
  134. package/dist/src/components/steps/confirmation/StepConfirmationLimitedOffer.d.ts +2 -1
  135. package/dist/src/components/steps/confirmation/StepConfirmationPoliciesSection.d.ts +2 -1
  136. package/dist/src/components/steps/confirmation/StepConfirmationPolicyBlock.d.ts +2 -1
  137. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffers.d.ts +2 -1
  138. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersColumn.d.ts +2 -1
  139. package/dist/src/components/steps/confirmation/additionalOffers/AdditionalOffersModal.d.ts +2 -1
  140. package/dist/src/components/steps/date/OccupancyWarningBlock.d.ts +2 -1
  141. package/dist/src/components/steps/date/PeoplePicker.d.ts +2 -1
  142. package/dist/src/components/steps/date/PeoplePickerRow.d.ts +2 -1
  143. package/dist/src/components/steps/date/StepDatePricePerRoom.d.ts +2 -1
  144. package/dist/src/components/steps/date/StepOneDateRange.d.ts +2 -1
  145. package/dist/src/components/steps/date/StepOneDateRangePicker.d.ts +2 -1
  146. package/dist/src/components/steps/date/StepOneDateRangePickerLegend.d.ts +2 -1
  147. package/dist/src/components/steps/date/StepOneNextStepButton.d.ts +2 -1
  148. package/dist/src/components/steps/date/StepOneStatusPeople.d.ts +2 -1
  149. package/dist/src/components/steps/hotel/HotelCard.d.ts +2 -1
  150. package/dist/src/components/steps/hotel/HotelCardList.d.ts +2 -1
  151. package/dist/src/components/steps/hotel/HotelCardModal.d.ts +2 -1
  152. package/dist/src/components/steps/hotel/HotelInfoPerksRow.d.ts +2 -1
  153. package/dist/src/components/steps/hotel/HotelSearchParameters.d.ts +2 -1
  154. package/dist/src/components/steps/hotel/NoHotelsAvailable.d.ts +2 -1
  155. package/dist/src/components/steps/room/AvailableUpgradesModal.js +0 -5
  156. package/dist/src/components/steps/room/AvailableUpgradesModal.js.map +1 -1
  157. package/dist/src/components/steps/room/ImageGallerySlider.d.ts +2 -1
  158. package/dist/src/components/steps/room/InactivityWindow.d.ts +2 -1
  159. package/dist/src/components/steps/room/LargeRoomCard.d.ts +2 -1
  160. package/dist/src/components/steps/room/NoRoomsFoundBlock.d.ts +2 -1
  161. package/dist/src/components/steps/room/RatesNotFoundBlock.d.ts +2 -1
  162. package/dist/src/components/steps/room/RoomList.d.ts +2 -1
  163. package/dist/src/components/steps/room/RoomList.js +1 -1
  164. package/dist/src/components/steps/room/RoomList.js.map +1 -1
  165. package/dist/src/components/steps/room/RoomModal.d.ts +2 -1
  166. package/dist/src/components/steps/room/RoomModalPerkRow.d.ts +2 -1
  167. package/dist/src/components/steps/room/StepRoomAlertBlocks.d.ts +2 -1
  168. package/dist/src/components/steps/room/StepRoomBestRateAlert.d.ts +2 -1
  169. package/dist/src/components/steps/room/StepRoomErrorForm.d.ts +2 -1
  170. package/dist/src/components/steps/room/StepRoomHotelDetails.d.ts +2 -1
  171. package/dist/src/components/steps/room/StepRoomSortBy.d.ts +2 -1
  172. package/dist/src/components/steps/room/StepRoomSummaryAndButton.d.ts +2 -1
  173. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.d.ts +2 -1
  174. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js +3 -2
  175. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRoomList.js.map +1 -1
  176. package/dist/src/components/steps/room/TabGroupedRooms/TabGroupedRooms.d.ts +2 -1
  177. package/dist/src/components/steps/room/TripteaseLodgingSearchSchema.d.ts +2 -1
  178. package/dist/src/components/steps/room/UserSearchSummary/PromoCodeVerificationAlert.d.ts +2 -1
  179. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummary.d.ts +2 -1
  180. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryForm.d.ts +25 -0
  181. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryForm.js +38 -0
  182. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryForm.js.map +1 -0
  183. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryPromocodeInput.d.ts +2 -1
  184. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.d.ts +2 -1
  185. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js +17 -23
  186. package/dist/src/components/steps/room/UserSearchSummary/UserSearchSummaryRow.js.map +1 -1
  187. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfAdultsPicker.d.ts +2 -1
  188. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfChildrenPicker.d.ts +2 -1
  189. package/dist/src/components/steps/room/roomBuilderProgress/NumberOfInfantsPicker.d.ts +2 -1
  190. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgress.d.ts +2 -1
  191. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.d.ts +2 -1
  192. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js +59 -28
  193. package/dist/src/components/steps/room/roomBuilderProgress/RoomBuilderProgressRow.js.map +1 -1
  194. package/dist/src/components/steps/room/roomDetails/RoomDetails.d.ts +2 -1
  195. package/dist/src/components/steps/room/roomDetails/RoomDetailsBedsBlock.d.ts +2 -1
  196. package/dist/src/components/steps/room/roomDetails/RoomDetailsPerkBlock.d.ts +2 -1
  197. package/dist/src/components/steps/room/roomDetails/RoomDetailsPriceBlock.d.ts +2 -1
  198. package/dist/src/components/steps/room/roomDetails/roomRates/BookNowButton.d.ts +2 -1
  199. package/dist/src/components/steps/room/roomDetails/roomRates/MembersOnlyRow.d.ts +2 -1
  200. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.d.ts +3 -2
  201. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js +2 -2
  202. package/dist/src/components/steps/room/roomDetails/roomRates/PriceBreakdownBlock.js.map +1 -1
  203. package/dist/src/components/steps/room/roomDetails/roomRates/ReadMoreRoomRateRow.d.ts +2 -1
  204. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDescriptionTab.d.ts +3 -2
  205. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateDetailsAndPriceBreakdownModal.d.ts +2 -1
  206. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateListPromotion/RoomRateListPromotion.d.ts +2 -1
  207. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRatePills.d.ts +2 -1
  208. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRateRow.d.ts +2 -1
  209. package/dist/src/components/steps/room/roomDetails/roomRates/RoomRates.d.ts +2 -1
  210. package/dist/src/components/steps/room/roomDetails/unavailableRoom/UnavailableRoom.d.ts +2 -1
  211. package/dist/src/components/steps/room/roomFilter/AppliedFiltersBlock.d.ts +2 -1
  212. package/dist/src/components/steps/room/roomFilter/RoomFilterOverlay.d.ts +2 -1
  213. package/dist/src/components/steps/room/roomFilter/RoomFilterPriceSlider.d.ts +2 -1
  214. package/dist/src/components/steps/room/roomFilter/RoomFilterRateType.d.ts +2 -1
  215. package/dist/src/components/steps/room/roomFilter/RoomFilterRoomType.d.ts +2 -1
  216. package/dist/src/components/summary/BEMobileSummary.d.ts +2 -1
  217. package/dist/src/components/summary/BEMobileSummaryModal.d.ts +2 -1
  218. package/dist/src/components/summary/BESummary.d.ts +2 -1
  219. package/dist/src/components/summary/BESummaryAddonRow.d.ts +2 -1
  220. package/dist/src/components/summary/BESummaryPerkBlock.d.ts +2 -1
  221. package/dist/src/components/summary/BESummaryPrivacyPolicy.d.ts +2 -1
  222. package/dist/src/components/summary/BESummaryRoomRow.d.ts +2 -1
  223. package/dist/src/components/summary/BESummaryRoomRow.js +1 -1
  224. package/dist/src/components/summary/BESummaryRoomRow.js.map +1 -1
  225. package/dist/src/components/summary/TransportDistanceFromHotelBlock.d.ts +2 -1
  226. package/dist/src/contexts/BasketContext/BasketContextWrapper.d.ts +1 -1
  227. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +63 -11
  228. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  229. package/dist/src/contexts/BookingEngineContext/BookingEngineContextWrapper.d.ts +1 -1
  230. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.d.ts +2 -2
  231. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js +1 -0
  232. package/dist/src/contexts/CompanyContext/CompanyContextWrapper.js.map +1 -1
  233. package/dist/src/contexts/ConfirmationFormContext.d.ts +1 -1
  234. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +3 -2
  235. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  236. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepErrorModal.d.ts +2 -1
  237. package/dist/src/contexts/ErrorContext.d.ts +1 -1
  238. package/dist/src/contexts/FullPageEngineContext/EngineBodyLayout.d.ts +2 -1
  239. package/dist/src/contexts/FullPageEngineContext/EnginePageLayout.d.ts +2 -1
  240. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.d.ts +2 -1
  241. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js +10 -2
  242. package/dist/src/contexts/FullPageEngineContext/FullPageEngineContextWrapper.js.map +1 -1
  243. package/dist/src/contexts/HotelOverridesContext.d.ts +1 -1
  244. package/dist/src/contexts/ModalContext.d.ts +1 -1
  245. package/dist/src/contexts/NotificationContext.d.ts +1 -1
  246. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.d.ts +7 -0
  247. package/dist/src/engines/BookingWizardEngine/BookingWizardEngine.js.map +1 -1
  248. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.d.ts +2 -1
  249. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js +1 -0
  250. package/dist/src/engines/BookingWizardEngine/BookingWizardEngineElement.js.map +1 -1
  251. package/dist/src/engines/FullPageBookingEngine/FullPageBookingEngineElement.d.ts +2 -1
  252. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.d.ts +2 -2
  253. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js +3 -0
  254. package/dist/src/engines/InlineRoomMiniEngine/InlineRoomMiniEngineElement.js.map +1 -1
  255. package/dist/src/engines/MemberPortalWidget/MemberPortalWidgetElement.d.ts +2 -1
  256. package/dist/src/engines/RecentSearchesEngine/RecentSearchesEngineElement.d.ts +2 -1
  257. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js +2 -1
  258. package/dist/src/hooks/RoomRateAvailabilityListFromApi.js.map +1 -1
  259. package/dist/src/hooks/useNextStepAction.d.ts +2 -1
  260. package/dist/src/icons/Check.d.ts +2 -1
  261. package/dist/src/index.d.ts +1 -0
  262. package/dist/src/index.js +4 -2
  263. package/dist/src/index.js.map +1 -1
  264. package/dist/src/models/Api/HotelDTO.d.ts +1 -0
  265. package/dist/src/models/Api/HotelDTO.js.map +1 -1
  266. package/dist/src/models/BasketRow.d.ts +2 -1
  267. package/dist/src/models/BasketRow.js +32 -2
  268. package/dist/src/models/BasketRow.js.map +1 -1
  269. package/dist/src/models/BookingWizard/BookingWizardProperty.d.ts +13 -0
  270. package/dist/src/models/BookingWizard/BookingWizardProperty.js.map +1 -1
  271. package/dist/src/models/Client/Hotel/Hotel.d.ts +1 -0
  272. package/dist/src/models/Client/Hotel/Hotel.js.map +1 -1
  273. package/dist/src/models/RoomstaySession.d.ts +1 -0
  274. package/dist/src/models/RoomstaySession.js.map +1 -1
  275. package/dist/src/pages/account/AccountHome/AccountHomePage.d.ts +2 -1
  276. package/dist/src/pages/account/AccountOutlet.d.ts +1 -1
  277. package/dist/src/pages/account/AccountRouter.d.ts +2 -1
  278. package/dist/src/pages/account/ChangePassword/AccountChangePasswordPage.d.ts +2 -1
  279. package/dist/src/pages/account/Details/AccountDetailsCardsPage.d.ts +2 -1
  280. package/dist/src/pages/account/Details/AccountDetailsProfilePage.d.ts +2 -1
  281. package/dist/src/pages/account/Help/AccountHelpPage.d.ts +2 -1
  282. package/dist/src/pages/account/Reservations/AccountReservationSinglePage.d.ts +2 -1
  283. package/dist/src/pages/account/Reservations/AccountReservationsPage.d.ts +2 -1
  284. package/dist/src/pages/findReservation/FindReservation.d.ts +2 -1
  285. package/dist/src/pages/findReservation/FindReservationResults.d.ts +2 -1
  286. package/dist/src/pages/findReservation/ReservationRow.d.ts +2 -1
  287. package/dist/src/pages/findReservation/ReservationRowModal.d.ts +2 -1
  288. package/dist/src/pages/hotel/HotelInfo.d.ts +2 -1
  289. package/dist/src/pages/hotel/HotelInfoPlaceholder.d.ts +2 -1
  290. package/dist/src/pages/steps/StepAddon/StepAddon.d.ts +2 -1
  291. package/dist/src/pages/steps/StepAddon/StepAddonComponent.d.ts +2 -1
  292. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +1 -1
  293. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
  294. package/dist/src/pages/steps/StepAddon/StepAddonLoader.d.ts +2 -1
  295. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.d.ts +2 -1
  296. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +1 -1
  297. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
  298. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.d.ts +2 -1
  299. package/dist/src/pages/steps/StepDate/StepDate.d.ts +2 -1
  300. package/dist/src/pages/steps/StepDate/StepDateComponent.d.ts +2 -1
  301. package/dist/src/pages/steps/StepDate/StepDateComponent.js +1 -1
  302. package/dist/src/pages/steps/StepDate/StepDateComponent.js.map +1 -1
  303. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.d.ts +2 -1
  304. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js +1 -1
  305. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomComponent.js.map +1 -1
  306. package/dist/src/pages/steps/StepGroupedRoom/StepGroupedRoomLoader.d.ts +2 -1
  307. package/dist/src/pages/steps/StepGuide.d.ts +1 -1
  308. package/dist/src/pages/steps/StepHotel/StepHotel.d.ts +2 -1
  309. package/dist/src/pages/steps/StepHotel/StepHotelComponent.d.ts +2 -1
  310. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js +1 -1
  311. package/dist/src/pages/steps/StepHotel/StepHotelComponent.js.map +1 -1
  312. package/dist/src/pages/steps/StepHotel/StepHotelLoader.d.ts +2 -1
  313. package/dist/src/pages/steps/StepRoom/StepRoomComponent.d.ts +2 -1
  314. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +1 -1
  315. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
  316. package/dist/src/pages/steps/StepRoom/StepRoomLoader.d.ts +2 -1
  317. package/dist/src/pages/steps/StepThanks/StepThanksComponent.d.ts +2 -1
  318. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js +1 -1
  319. package/dist/src/pages/steps/StepThanks/StepThanksComponent.js.map +1 -1
  320. package/dist/src/providers/DIProvider.d.ts +2 -1
  321. package/dist/src/providers/FeatureProvider.js +2 -0
  322. package/dist/src/providers/FeatureProvider.js.map +1 -1
  323. package/dist/src/providers/feature/ConfirmationImportantInformationFeature.d.ts +10 -0
  324. package/dist/src/providers/feature/ConfirmationImportantInformationFeature.js +13 -0
  325. package/dist/src/providers/feature/ConfirmationImportantInformationFeature.js.map +1 -0
  326. package/dist/src/providers/feature/Feature.d.ts +2 -0
  327. package/dist/src/providers/feature/Feature.js +4 -0
  328. package/dist/src/providers/feature/Feature.js.map +1 -1
  329. package/dist/src/providers/storage/SessionProvider.js +2 -0
  330. package/dist/src/providers/storage/SessionProvider.js.map +1 -1
  331. package/dist/src/routes/NaturallyProgressedStepRoute.d.ts +2 -1
  332. package/dist/src/stories/BookingWizard.stories.d.ts +1 -1
  333. package/dist/src/stories/ConfirmationModal.stories.d.ts +2 -1
  334. package/dist/src/stories/DateRangePicker.stories.d.ts +5 -4
  335. package/dist/src/stories/ErrorModal.stories.d.ts +2 -1
  336. package/dist/src/stories/EventCarousel.stories.d.ts +2 -2
  337. package/dist/src/stories/FloatingDateRangePicker.stories.d.ts +2 -2
  338. package/dist/src/stories/IconNavCard.stories.d.ts +2 -2
  339. package/dist/src/stories/NumberIncrement.stories.d.ts +2 -1
  340. package/dist/src/stories/PaymentCard.stories.d.ts +3 -2
  341. package/dist/src/stories/RadioButtonGroup.stories.d.ts +3 -3
  342. package/dist/src/stories/Select.stories.d.ts +3 -3
  343. package/dist/src/stories/SimpleModal.stories.d.ts +2 -1
  344. package/dist/src/stories/Slider.stories.d.ts +3 -2
  345. package/dist/src/stories/TabbedModal.stories.d.ts +2 -1
  346. package/dist/src/stories/Tabs.stories.d.ts +1 -1
  347. package/dist/src/translations/Translation.d.ts +6 -0
  348. package/dist/src/translations/Translation.js +6 -0
  349. package/dist/src/translations/Translation.js.map +1 -1
  350. package/dist/src/translations/languages/en-gb.js +6 -0
  351. package/dist/src/translations/languages/en-gb.js.map +1 -1
  352. package/dist/src/util/TotalCalculator.js.map +1 -1
  353. package/dist/test.bundle.js +1 -1
  354. package/dist/tests/offline/entry/config/hotelSpecDefault.d.ts +2 -1
  355. package/dist/vendors.bundle.js +1 -1
  356. package/dist/vendors.bundle.js.LICENSE.txt +6 -6
  357. package/package.json +2 -2
  358. package/dist/279.bundle.js +0 -1
  359. package/dist/288.bundle.js +0 -1
  360. package/dist/370.bundle.js +0 -1
  361. package/dist/430.bundle.js +0 -1
  362. package/dist/439.bundle.js +0 -1
  363. package/dist/446.bundle.js +0 -1
  364. package/dist/449.bundle.js +0 -1
  365. package/dist/535.bundle.js +0 -2
  366. package/dist/537.bundle.js +0 -1
  367. package/dist/619.bundle.js +0 -1
  368. package/dist/625.bundle.js +0 -1
  369. package/dist/659.bundle.js +0 -1
  370. package/dist/686.bundle.js +0 -1
  371. package/dist/873.bundle.js +0 -1
  372. package/dist/903.bundle.js +0 -1
  373. package/dist/972.bundle.js +0 -1
  374. package/dist/978.bundle.js +0 -1
  375. package/dist/984.bundle.js +0 -1
@@ -22,6 +22,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
25
34
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
36
  };
@@ -32,6 +41,7 @@ const classnames_1 = __importDefault(require("classnames"));
32
41
  const react_1 = __importStar(require("react"));
33
42
  const react_i18next_1 = require("react-i18next");
34
43
  const AutoAutoHeight_1 = __importDefault(require("../../../../animations/AutoAutoHeight"));
44
+ const BookingAPI_1 = __importDefault(require("../../../../api/BookingAPI"));
35
45
  const Text_1 = __importStar(require("../../Text"));
36
46
  const Translation_1 = require("../../../../translations/Translation");
37
47
  const Color_1 = require("../../../../util/Color");
@@ -39,6 +49,7 @@ const Select_1 = require("../../Select/Select");
39
49
  const BookingWizard_1 = require("../BookingWizard");
40
50
  const BookingWizard_module_scss_1 = __importDefault(require("../BookingWizard.module.scss"));
41
51
  const BookingWizardBottomSheet_1 = __importStar(require("../BookingWizardBottomSheet/BookingWizardBottomSheet"));
52
+ const BookingWizardContent_1 = require("../BookingWizardContent");
42
53
  const BookingWizardContext_1 = require("../BookingWizardContext");
43
54
  const BookingWizardHotelSelector_module_scss_1 = __importDefault(require("./BookingWizardHotelSelector.module.scss"));
44
55
  const BookingWizardHotelSelector = (props) => {
@@ -46,17 +57,127 @@ const BookingWizardHotelSelector = (props) => {
46
57
  const { t } = (0, react_i18next_1.useTranslation)();
47
58
  const [open, setOpen] = (0, react_1.useState)(false);
48
59
  const [isOnlyProperty, setIsOnlyProperty] = (0, react_1.useState)(false);
49
- const { selectedProperty, properties, contentClassName, followElement } = props;
60
+ const [finalProperties, setFinalProperties] = (0, react_1.useState)({});
61
+ const { selectedProperty, properties, contentClassName, followElement, searchConfig } = props;
62
+ const unGrouped = t(Translation_1.Translation.Misc.Ungrouped);
50
63
  (0, react_1.useEffect)(() => {
51
64
  if (stateSections && stateSections[BookingWizard_1.EBookingWizardSection.Property]) {
52
65
  setOpen(stateSections[BookingWizard_1.EBookingWizardSection.Property].opening);
53
66
  }
54
67
  }, [stateSections]);
68
+ function getBookingWizardRegions(properties) {
69
+ return Array.from(new Set(properties.map((p) => p.bookingWizardRegion)));
70
+ }
71
+ const combineAddress = (address) => {
72
+ if (searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.combineAddress) {
73
+ return searchConfig.combineAddress(address);
74
+ }
75
+ const format = (vals) => vals.filter((v) => v && v !== '0').join(', ');
76
+ return [format([address === null || address === void 0 ? void 0 : address.line1, address === null || address === void 0 ? void 0 : address.city]), format([address === null || address === void 0 ? void 0 : address.postalCode, address === null || address === void 0 ? void 0 : address.state])].filter(Boolean).join(', ');
77
+ };
78
+ const fetchPropertyData = () => __awaiter(void 0, void 0, void 0, function* () {
79
+ if (!(searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.companyId)) {
80
+ setFinalProperties(properties);
81
+ return;
82
+ }
83
+ const fetchedData = yield BookingAPI_1.default.Hotel.fetchBookingWizardData(searchConfig.companyId);
84
+ const regions = getBookingWizardRegions(fetchedData);
85
+ let tmpFinalProperties = {};
86
+ if (regions.length > 1) {
87
+ // Build lookup for client properties
88
+ const clientMap = Object.fromEntries(Object.values(properties)
89
+ .flat()
90
+ .map((p) => [p.id, p]));
91
+ // Group by API-provided regions
92
+ for (const region of regions) {
93
+ const matches = fetchedData
94
+ .filter((fp) => fp.bookingWizardRegion === region)
95
+ .map((fp) => {
96
+ var _a;
97
+ const clientProp = clientMap[fp.id];
98
+ if (!clientProp)
99
+ return null;
100
+ return Object.assign(Object.assign({}, clientProp), { name: fp.name, address: fp.address, card: {
101
+ image: ((_a = clientProp.card) === null || _a === void 0 ? void 0 : _a.image) || fp.logo,
102
+ text: combineAddress(fp.address),
103
+ } });
104
+ })
105
+ .filter(Boolean);
106
+ if (matches.length > 0) {
107
+ tmpFinalProperties[region || unGrouped] = matches;
108
+ }
109
+ }
110
+ }
111
+ else {
112
+ const fetchedDataMap = Object.fromEntries(fetchedData.map((p) => [p.id, p]));
113
+ // Fallback: enrich clientProperties with address
114
+ for (const [region, hotels] of Object.entries(properties)) {
115
+ tmpFinalProperties[region] = hotels.map((hotel) => {
116
+ var _a, _b, _c;
117
+ return (Object.assign(Object.assign({}, hotel), { address: (_a = fetchedDataMap[hotel.id]) === null || _a === void 0 ? void 0 : _a.address, card: {
118
+ image: (_b = hotel.card) === null || _b === void 0 ? void 0 : _b.image,
119
+ text: combineAddress((_c = fetchedDataMap[hotel.id]) === null || _c === void 0 ? void 0 : _c.address),
120
+ } }));
121
+ });
122
+ }
123
+ }
124
+ if (searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.sortCompareFn) {
125
+ // Use custom comparator
126
+ tmpFinalProperties = Object.fromEntries(Object.entries(tmpFinalProperties)
127
+ .sort(([a], [b]) => searchConfig.sortCompareFn(a, b)) // Sort regions
128
+ .map(([region, props]) => [region, props.sort((p1, p2) => searchConfig.sortCompareFn(p1, p2))]) // Sort properties
129
+ );
130
+ }
131
+ else {
132
+ // Default: Sort regions alphabetically, move unGrouped to the end,
133
+ // and also sort properties by name inside each region
134
+ tmpFinalProperties = Object.fromEntries(Object.entries(tmpFinalProperties)
135
+ .sort(([a], [b]) => {
136
+ if (a === unGrouped)
137
+ return 1;
138
+ if (b === unGrouped)
139
+ return -1;
140
+ return a.localeCompare(b);
141
+ })
142
+ .map(([region, props]) => [region, props.sort((p1, p2) => p1.name.localeCompare(p2.name))]));
143
+ }
144
+ setFinalProperties(tmpFinalProperties);
145
+ });
146
+ (0, react_1.useEffect)(() => {
147
+ fetchPropertyData();
148
+ }, [searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.companyId]);
149
+ const searchFilter = (bwProperties, searchQuery) => {
150
+ var _a, _b;
151
+ if (searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchFilter) {
152
+ // Use custom search
153
+ return searchConfig.searchFilter(bwProperties, searchQuery);
154
+ }
155
+ // Default search
156
+ const query = ((_a = searchQuery === null || searchQuery === void 0 ? void 0 : searchQuery.trim()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
157
+ if (!query || (query && selectedProperty && query === ((_b = selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name) === null || _b === void 0 ? void 0 : _b.toLowerCase()))) {
158
+ return bwProperties;
159
+ }
160
+ const filtered = {};
161
+ for (const [region, hotels] of Object.entries(bwProperties)) {
162
+ const matches = hotels.filter((hotel) => {
163
+ if (!hotel)
164
+ return false;
165
+ const { city = '', state = '' } = (hotel === null || hotel === void 0 ? void 0 : hotel.address) || {};
166
+ const keywords = [hotel.name, region, city, state].filter(Boolean).map((kw) => kw.toLowerCase());
167
+ return keywords.some((kw) => kw.includes(query));
168
+ });
169
+ if (matches.length > 0) {
170
+ filtered[region] = matches;
171
+ }
172
+ }
173
+ return filtered;
174
+ };
55
175
  const optionedProperties = (0, react_1.useMemo)(() => {
56
176
  let isOnly = false;
57
177
  const options = [];
178
+ const filteredProperties = searchFilter(finalProperties, searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchQuery);
58
179
  // Here we group each key as a new TOption Group to order hotels better.
59
- const propertyKeys = Object.keys(properties);
180
+ const propertyKeys = Object.keys(filteredProperties);
60
181
  if (propertyKeys.length > 1) {
61
182
  propertyKeys.forEach((propertyKey) => {
62
183
  var _a;
@@ -66,30 +187,38 @@ const BookingWizardHotelSelector = (props) => {
66
187
  options: [],
67
188
  colors: {},
68
189
  };
69
- for (const property of properties[propertyKey]) {
190
+ for (const property of filteredProperties[propertyKey]) {
70
191
  (_a = option.options) === null || _a === void 0 ? void 0 : _a.push(property);
71
192
  }
72
193
  options.push(option);
73
194
  });
74
195
  }
75
196
  else if (propertyKeys.length === 1) {
76
- properties[propertyKeys[0]].forEach((option) => {
197
+ filteredProperties[propertyKeys[0]].forEach((option) => {
77
198
  options.push(option);
78
199
  });
79
- if (properties[propertyKeys[0]].length == 1 && properties[propertyKeys[0]][0].id === (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.id)) {
200
+ if (filteredProperties[propertyKeys[0]].length == 1 && filteredProperties[propertyKeys[0]][0].id === (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.id)) {
80
201
  isOnly = true;
81
202
  }
82
203
  }
83
204
  setIsOnlyProperty(isOnly);
84
205
  return options;
85
- }, [properties]);
206
+ }, [properties, searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchQuery, finalProperties]);
86
207
  const onPropertyClick = (property) => {
87
208
  var _a;
88
209
  (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, property);
210
+ searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.setSearchQuery((property === null || property === void 0 ? void 0 : property.name) || '');
89
211
  if (!isImagesThemeMobile) {
90
212
  setOpen(false);
91
213
  }
92
214
  };
215
+ const onClearAllHandler = (event) => {
216
+ var _a;
217
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props);
218
+ searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.setSearchQuery('');
219
+ event === null || event === void 0 ? void 0 : event.preventDefault();
220
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
221
+ };
93
222
  const getOption = (key) => {
94
223
  const indexes = Object.keys(properties);
95
224
  for (const index of indexes) {
@@ -101,16 +230,17 @@ const BookingWizardHotelSelector = (props) => {
101
230
  }
102
231
  };
103
232
  const renderOptions = () => {
104
- const indexes = Object.keys(properties);
233
+ const filteredProperties = searchFilter(finalProperties, searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchQuery);
234
+ const indexes = Object.keys(filteredProperties);
105
235
  if (indexes.length > 1) {
106
- return indexes.map((indexName) => renderGroup(indexName, properties[indexName]));
236
+ return indexes.map((indexName) => renderGroup(indexName, filteredProperties[indexName]));
107
237
  }
108
238
  else if (indexes.length === 1) {
109
- return properties[indexes[0]].map((property) => renderOption(property));
239
+ return filteredProperties[indexes[0]].map((property) => renderOption(property));
110
240
  }
111
241
  };
112
242
  const renderGroup = (name, options) => {
113
- return (react_1.default.createElement(react_1.default.Fragment, null,
243
+ return (react_1.default.createElement("div", { key: name },
114
244
  react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['container--suggest-list-hotel'], BookingWizardHotelSelector_module_scss_1.default['--group-title']) },
115
245
  react_1.default.createElement(Text_1.default, { type: Text_1.TextType.Small, color: Color_1.Color.DarkGrey }, name)),
116
246
  options.map((option) => renderOption(option))));
@@ -134,7 +264,7 @@ const BookingWizardHotelSelector = (props) => {
134
264
  const onOpenDrawer = () => {
135
265
  setOpen(true);
136
266
  };
137
- if (isOnlyProperty) {
267
+ if (isOnlyProperty && !searchConfig) {
138
268
  return react_1.default.createElement(Text_1.default, null, selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name);
139
269
  }
140
270
  if (type === 'inline') {
@@ -146,24 +276,40 @@ const BookingWizardHotelSelector = (props) => {
146
276
  const ItemDisplay = () => {
147
277
  return (react_1.default.createElement("div", { className: (0, classnames_1.default)({
148
278
  [BookingWizardHotelSelector_module_scss_1.default['--mini']]: !isImagesThemeMobile && layout === 'horizontal-condensed',
149
- [BookingWizardHotelSelector_module_scss_1.default['item-display']]: isImagesThemeMobile,
279
+ [BookingWizardHotelSelector_module_scss_1.default['item-display']]: isImagesThemeMobile || !!searchConfig,
280
+ [BookingWizardHotelSelector_module_scss_1.default['--searchable']]: !!searchConfig,
150
281
  }), onClick: onOpenDrawer },
151
- react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.optionLabel, { [BookingWizardHotelSelector_module_scss_1.default.placeholder]: !(selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name) }), bold: true }, (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name) || t(Translation_1.Translation.Misc.PleaseSelectHotelMobile)),
152
- isImagesThemeMobile ? react_1.default.createElement(ui_1.Icon, { icon: ui_1.IconType.Dropdown }) : null));
282
+ react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.optionLabel, {
283
+ [BookingWizardHotelSelector_module_scss_1.default.placeholder]: !(selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name),
284
+ [BookingWizardHotelSelector_module_scss_1.default['text-ellipsis-with-icon']]: !!searchConfig,
285
+ }), bold: true }, (selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name) || t(Translation_1.Translation.Misc.PleaseSelectHotelMobile)),
286
+ isImagesThemeMobile && !searchConfig ? react_1.default.createElement(ui_1.Icon, { icon: ui_1.IconType.Dropdown }) : null,
287
+ searchConfig && react_1.default.createElement(BookingWizardContent_1.BWClearButton, { show: !!searchConfig.searchQuery, onClick: onClearAllHandler, hasLabel: true, hasSearchInput: true }),
288
+ searchConfig && react_1.default.createElement(BookingWizardContent_1.BWSearchButton, { show: !searchConfig.searchQuery, hasLabel: true, hasSearchInput: true })));
153
289
  };
154
- return (react_1.default.createElement(react_1.default.Fragment, null,
290
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)({
291
+ [BookingWizardHotelSelector_module_scss_1.default['container-searchable']]: !!searchConfig,
292
+ }) },
155
293
  react_1.default.createElement(ItemDisplay, null),
156
- react_1.default.createElement(BookingWizardBottomSheet_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.container, BookingWizardHotelSelector_module_scss_1.default['--bottom-sheet'], {
294
+ react_1.default.createElement(BookingWizardBottomSheet_1.default, Object.assign({ className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.container, BookingWizardHotelSelector_module_scss_1.default['--bottom-sheet'], {
157
295
  [BookingWizardHotelSelector_module_scss_1.default['custom-overlay-images-theme']]: isImagesTheme,
158
296
  }), open: open, onDismiss: () => {
159
297
  if (!isImagesThemeMobile) {
160
298
  setOpen(false);
161
299
  }
162
- }, header: react_1.default.createElement(BookingWizardBottomSheet_1.BWBottomSheetHeader, { title: t(Translation_1.Translation.Misc.ChooseHotelMobile), onClose: () => setOpen(false) }), footer: react_1.default.createElement(BookingWizardBottomSheet_1.BWBottomSheetFooter, { hidePrev: stateSections[BookingWizard_1.EBookingWizardSection.Property].isFirst, onNext: () => onNextHandler(BookingWizard_1.EBookingWizardSection.Property), disabledNext: !selectedProperty }) },
163
- react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.content, contentClassName) }, renderOptions()))));
300
+ }, header: react_1.default.createElement(react_1.default.Fragment, null,
301
+ react_1.default.createElement(BookingWizardBottomSheet_1.BWBottomSheetHeader, { title: t(Translation_1.Translation.Misc.ChooseHotelMobile), onClose: () => setOpen(false) }),
302
+ searchConfig && (react_1.default.createElement("div", { className: BookingWizardHotelSelector_module_scss_1.default.header },
303
+ react_1.default.createElement(SelectorSearchBox, { option: selectedProperty, searchConfig: searchConfig, onClearAllHandler: onClearAllHandler })))), footer: react_1.default.createElement(BookingWizardBottomSheet_1.BWBottomSheetFooter, { hidePrev: stateSections[BookingWizard_1.EBookingWizardSection.Property].isFirst, onNext: () => onNextHandler(BookingWizard_1.EBookingWizardSection.Property), disabledNext: !selectedProperty }) }, (searchConfig
304
+ ? {
305
+ snapPoints: () => [window.innerHeight],
306
+ defaultSnap: ({ maxHeight }) => maxHeight,
307
+ }
308
+ : {})),
309
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.content, contentClassName) }, renderOptions() || react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['input-no-options']) }, t(Translation_1.Translation.Misc.EmptySearchHotel))))));
164
310
  }
165
311
  return (react_1.default.createElement("div", { className: (0, classnames_1.default)({ [BookingWizardHotelSelector_module_scss_1.default['--mini']]: layout === 'horizontal-condensed' }) },
166
- react_1.default.createElement(Select_1.Select, { target: followElement, offset: overlay === null || overlay === void 0 ? void 0 : overlay.offset, options: optionedProperties, value: selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.id, onChange: (value) => onPropertyClick(getOption(value)), keyName: "id", labelName: "name", hideExpandIcon: layout === 'horizontal-condensed', disableNative: true, overlay: {
312
+ react_1.default.createElement(Select_1.Select, { target: followElement, offset: overlay === null || overlay === void 0 ? void 0 : overlay.offset, options: optionedProperties, value: selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.id, onChange: (value) => onPropertyClick(getOption(value)), keyName: "id", labelName: "name", hideExpandIcon: layout === 'horizontal-condensed' || !!searchConfig, disableNative: true, overlay: {
167
313
  containerClassName: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['custom-overlay'], {
168
314
  [BookingWizardHotelSelector_module_scss_1.default['small-container']]: isSmallContainer,
169
315
  [BookingWizardHotelSelector_module_scss_1.default['custom-overlay-images-theme']]: isImagesTheme,
@@ -177,9 +323,28 @@ const BookingWizardHotelSelector = (props) => {
177
323
  if (property)
178
324
  return renderOption(property);
179
325
  return null;
180
- }, renderLabel: (option) => {
181
- return (react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.optionLabel, BookingWizard_module_scss_1.default['value']), bold: true }, (option === null || option === void 0 ? void 0 : option.name) || (react_1.default.createElement("span", { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['hotel-dropdown-label'], BookingWizard_module_scss_1.default['value']) }, t(Translation_1.Translation.Misc.PleaseSelectHotel)))));
182
- } })));
326
+ }, renderLabel: (option) => react_1.default.createElement(SelectorSearchBox, { option: option, searchConfig: searchConfig, onClearAllHandler: onClearAllHandler }), renderNoOptions: (targetRef) => {
327
+ var _a;
328
+ const width = (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
329
+ return (react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['input-no-options']), style: {
330
+ width: width,
331
+ } }, t(Translation_1.Translation.Misc.EmptySearchHotel)));
332
+ }, open: searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.focused })));
183
333
  };
184
334
  exports.BookingWizardHotelSelector = BookingWizardHotelSelector;
335
+ const SelectorSearchBox = ({ option, searchConfig, onClearAllHandler, }) => {
336
+ const { t } = (0, react_i18next_1.useTranslation)();
337
+ (0, react_1.useEffect)(() => {
338
+ if ((searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchQuery.trim()) === '') {
339
+ onClearAllHandler();
340
+ }
341
+ }, [searchConfig === null || searchConfig === void 0 ? void 0 : searchConfig.searchQuery]);
342
+ if (!searchConfig) {
343
+ return (react_1.default.createElement(Text_1.default, { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default.optionLabel, BookingWizard_module_scss_1.default['value']), bold: true }, (option === null || option === void 0 ? void 0 : option.name) || react_1.default.createElement("span", { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['hotel-dropdown-label'], BookingWizard_module_scss_1.default['value']) }, t(Translation_1.Translation.Misc.PleaseSelectHotel))));
344
+ }
345
+ return (react_1.default.createElement(react_1.default.Fragment, null,
346
+ react_1.default.createElement("input", { className: (0, classnames_1.default)(BookingWizardHotelSelector_module_scss_1.default['input-search'], BookingWizard_module_scss_1.default['text-ellipsis-with-icon'], BookingWizard_module_scss_1.default['value']), type: "text", value: searchConfig.searchQuery || (option === null || option === void 0 ? void 0 : option.name) || '', placeholder: t(Translation_1.Translation.Misc.PleaseSelectHotel), onChange: (e) => searchConfig.setSearchQuery(e.target.value), autoComplete: "off" }),
347
+ searchConfig && react_1.default.createElement(BookingWizardContent_1.BWClearButton, { show: !!searchConfig.searchQuery, onClick: onClearAllHandler, hasLabel: true, hasSearchInput: true }),
348
+ searchConfig && react_1.default.createElement(BookingWizardContent_1.BWSearchButton, { show: !searchConfig.searchQuery, hasLabel: true, hasSearchInput: true })));
349
+ };
185
350
  //# sourceMappingURL=BookingWizardHotelSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BookingWizardHotelSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IHotelColorScheme } from '@roomstay/core';\nimport { Icon, IconType } from '@roomstay/ui';\nimport classNames from 'classnames';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { BookingWizardProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport { Select } from '../../Select/Select';\nimport { EBookingWizardSection } from '../BookingWizard';\nimport bookingWizardStyles from '../BookingWizard.module.scss';\nimport BookingWizardBottomSheet, { BWBottomSheetFooter, BWBottomSheetHeader } from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardHotelSelector.module.scss';\ninterface BookingWizardHotelSelectorProps {\n disabled?: boolean;\n\n selectedProperty?: BookingWizardProperty;\n properties: TBookingWizardProperties;\n\n contentClassName?: string;\n followElement?: HTMLElement | null;\n\n onChange?: (hotel: BookingWizardProperty | null) => void;\n}\n\ninterface TOptionedProperties extends BookingWizardProperty {\n options?: BookingWizardProperty[];\n}\n\nexport const BookingWizardHotelSelector = (props: BookingWizardHotelSelectorProps) => {\n const { overlay, type, layout, isSmallContainer, stateSections, isImagesTheme, isImagesThemeMobile, onNextHandler } = useBookingWizard();\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [isOnlyProperty, setIsOnlyProperty] = useState(false);\n\n const { selectedProperty, properties, contentClassName, followElement } = props;\n\n useEffect(() => {\n if (stateSections && stateSections[EBookingWizardSection.Property]) {\n setOpen(stateSections[EBookingWizardSection.Property].opening);\n }\n }, [stateSections]);\n\n const optionedProperties = useMemo(() => {\n let isOnly = false;\n\n const options: TOptionedProperties[] = [];\n\n // Here we group each key as a new TOption Group to order hotels better.\n const propertyKeys = Object.keys(properties);\n if (propertyKeys.length > 1) {\n propertyKeys.forEach((propertyKey: string) => {\n const option: TOptionedProperties = {\n name: propertyKey,\n id: '',\n options: [],\n colors: {} as IHotelColorScheme,\n };\n\n for (const property of properties[propertyKey]) {\n option.options?.push(property);\n }\n\n options.push(option);\n });\n } else if (propertyKeys.length === 1) {\n properties[propertyKeys[0]].forEach((option) => {\n options.push(option);\n });\n\n if (properties[propertyKeys[0]].length == 1 && properties[propertyKeys[0]][0].id === selectedProperty?.id) {\n isOnly = true;\n }\n }\n\n setIsOnlyProperty(isOnly);\n\n return options;\n }, [properties]);\n\n const onPropertyClick = (property: BookingWizardProperty): void => {\n props.onChange?.(property);\n\n if (!isImagesThemeMobile) {\n setOpen(false);\n }\n };\n\n const getOption = (key: BookingWizardProperty['id']): BookingWizardProperty | undefined => {\n const indexes = Object.keys(properties);\n\n for (const index of indexes) {\n for (const property of properties[index]) {\n if (key === property.id) {\n return property;\n }\n }\n }\n };\n\n const renderOptions = (): any => {\n const indexes = Object.keys(properties);\n\n if (indexes.length > 1) {\n return indexes.map((indexName) => renderGroup(indexName, properties[indexName]));\n } else if (indexes.length === 1) {\n return properties[indexes[0]].map((property) => renderOption(property));\n }\n };\n\n const renderGroup = (name: string, options: BookingWizardProperty[]) => {\n return (\n <>\n <div className={classNames(styles['container--suggest-list-hotel'], styles['--group-title'])}>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {name}\n </Text>\n </div>\n {options.map((option) => renderOption(option))}\n </>\n );\n };\n\n const renderOption = (property: BookingWizardProperty) => {\n if (isImagesTheme) {\n return (\n <div\n key={property.id}\n className={classNames(styles['card'], { [styles['--selected']]: selectedProperty?.id === property.id })}\n onClick={() => onPropertyClick(property)}\n >\n <div className={styles['card-img']}>\n <img src={property?.card?.image} />\n </div>\n <div className={styles['card-body']}>\n <div className={styles['card-title']}>{property.name}</div>\n <div className={styles['card-sub-title']}>{property?.card?.text}</div>\n </div>\n </div>\n );\n } else {\n return (\n <div\n key={property.id}\n className={classNames(styles['container--suggest-list-hotel'], { [styles['--selected']]: selectedProperty?.id === property.id })}\n onClick={() => onPropertyClick(property)}\n >\n <div className={styles['container--suggest-list-hotel-name']}>{property.name}</div>\n <div className={styles.check}></div>\n </div>\n );\n }\n };\n\n const onOpenDrawer = () => {\n setOpen(true);\n };\n\n if (isOnlyProperty) {\n return <Text>{selectedProperty?.name}</Text>;\n }\n\n if (type === 'inline') {\n return (\n <div className={styles['inline-container']}>\n <AutoAutoHeight open={open}>\n <div className={styles['inline-box']}>{renderOptions()}</div>\n </AutoAutoHeight>\n </div>\n );\n }\n\n if (type === 'bottom-sheet') {\n const ItemDisplay = () => {\n return (\n <div\n className={classNames({\n [styles['--mini']]: !isImagesThemeMobile && layout === 'horizontal-condensed',\n [styles['item-display']]: isImagesThemeMobile,\n })}\n onClick={onOpenDrawer}\n >\n <Text className={classNames(styles.optionLabel, { [styles.placeholder]: !selectedProperty?.name })} bold>\n {selectedProperty?.name || t(Translation.Misc.PleaseSelectHotelMobile)}\n </Text>\n {isImagesThemeMobile ? <Icon icon={IconType.Dropdown} /> : null}\n </div>\n );\n };\n return (\n <>\n <ItemDisplay />\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'], {\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n })}\n open={open}\n onDismiss={() => {\n if (!isImagesThemeMobile) {\n setOpen(false);\n }\n }}\n header={<BWBottomSheetHeader title={t(Translation.Misc.ChooseHotelMobile)} onClose={() => setOpen(false)} />}\n footer={\n <BWBottomSheetFooter\n hidePrev={stateSections[EBookingWizardSection.Property].isFirst}\n onNext={() => onNextHandler(EBookingWizardSection.Property)}\n disabledNext={!selectedProperty}\n />\n }\n >\n <div className={classNames(styles.content, contentClassName)}>{renderOptions()}</div>\n </BookingWizardBottomSheet>\n </>\n );\n }\n\n return (\n <div className={classNames({ [styles['--mini']]: layout === 'horizontal-condensed' })}>\n <Select<BookingWizardProperty, 'id'>\n target={followElement}\n offset={overlay?.offset}\n options={optionedProperties}\n value={selectedProperty?.id}\n onChange={(value) => onPropertyClick(getOption(value) as BookingWizardProperty)}\n keyName=\"id\"\n labelName=\"name\"\n hideExpandIcon={layout === 'horizontal-condensed'}\n disableNative\n overlay={{\n containerClassName: classNames(styles['custom-overlay'], {\n [styles['small-container']]: isSmallContainer,\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n }),\n strategy: 'absolute',\n usePortal: false,\n placement: overlay?.placement || 'bottom',\n fallbackPlacements: overlay?.fallbackPlacements || 'bottom',\n hideStyles: true,\n }}\n renderOption={(property) => {\n if (property) return renderOption(property);\n return null;\n }}\n renderLabel={(option) => {\n return (\n <Text className={classNames(styles.optionLabel, bookingWizardStyles['value'])} bold>\n {option?.name || (\n <span className={classNames(styles['hotel-dropdown-label'], bookingWizardStyles['value'])}>{t(Translation.Misc.PleaseSelectHotel)}</span>\n )}\n </Text>\n );\n }}\n />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"BookingWizardHotelSelector.js","sourceRoot":"/","sources":["src/components/generic/BookingWizard/BookingWizardHotelSelector/BookingWizardHotelSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IHotelColorScheme } from '@roomstay/core';\nimport { Icon, IconType } from '@roomstay/ui';\nimport classNames from 'classnames';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport AutoAutoHeight from '@/animations/AutoAutoHeight';\nimport API from '@/api/BookingAPI';\nimport Text, { TextType } from '@/components/generic/Text';\nimport { BookingWizardEngineConfig } from '@/engines/BookingWizardEngine/BookingWizardEngine';\nimport { BookingWizardProperty, IBookingWizardSearchProperty } from '@/models/BookingWizard/BookingWizardProperty';\nimport { TBookingWizardProperties } from '@/models/BookingWizard/BookingWizardTypes';\nimport { Translation } from '@/translations/Translation';\nimport { Color } from '@/util/Color';\n\nimport { Select } from '../../Select/Select';\nimport { EBookingWizardSection } from '../BookingWizard';\nimport bookingWizardStyles from '../BookingWizard.module.scss';\nimport BookingWizardBottomSheet, { BWBottomSheetFooter, BWBottomSheetHeader } from '../BookingWizardBottomSheet/BookingWizardBottomSheet';\nimport { BWClearButton, BWSearchButton } from '../BookingWizardContent';\nimport { useBookingWizard } from '../BookingWizardContext';\nimport styles from './BookingWizardHotelSelector.module.scss';\n\ninterface BookingWizardHotelSelectorProps {\n disabled?: boolean;\n searchable?: boolean;\n\n selectedProperty?: BookingWizardProperty;\n properties: TBookingWizardProperties;\n\n contentClassName?: string;\n followElement?: HTMLElement | null;\n\n onChange?: (hotel?: BookingWizardProperty) => void;\n\n // Search box properties\n searchConfig?: BookingWizardEngineConfig['searchConfig'] & {\n searchQuery: string;\n setSearchQuery: React.Dispatch<React.SetStateAction<string>>;\n focused: boolean;\n };\n}\n\ninterface TOptionedProperties extends BookingWizardProperty {\n options?: BookingWizardProperty[];\n}\n\nexport const BookingWizardHotelSelector = (props: BookingWizardHotelSelectorProps) => {\n const { overlay, type, layout, isSmallContainer, stateSections, isImagesTheme, isImagesThemeMobile, onNextHandler } = useBookingWizard();\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [isOnlyProperty, setIsOnlyProperty] = useState(false);\n const [finalProperties, setFinalProperties] = useState<TBookingWizardProperties>({});\n const { selectedProperty, properties, contentClassName, followElement, searchConfig } = props;\n const unGrouped = t(Translation.Misc.Ungrouped);\n\n useEffect(() => {\n if (stateSections && stateSections[EBookingWizardSection.Property]) {\n setOpen(stateSections[EBookingWizardSection.Property].opening);\n }\n }, [stateSections]);\n\n function getBookingWizardRegions(properties: IBookingWizardSearchProperty[]): string[] {\n return Array.from(new Set(properties.map((p) => p.bookingWizardRegion)));\n }\n\n const combineAddress = (address: BookingWizardProperty['address']): string => {\n if (searchConfig?.combineAddress) {\n return searchConfig.combineAddress(address);\n }\n const format = (vals: (string | undefined)[]) => vals.filter((v) => v && v !== '0').join(', ');\n return [format([address?.line1, address?.city]), format([address?.postalCode, address?.state])].filter(Boolean).join(', ');\n };\n\n const fetchPropertyData = async () => {\n if (!searchConfig?.companyId) {\n setFinalProperties(properties);\n return;\n }\n\n const fetchedData = await API.Hotel.fetchBookingWizardData(searchConfig.companyId);\n const regions = getBookingWizardRegions(fetchedData);\n let tmpFinalProperties: TBookingWizardProperties = {};\n\n if (regions.length > 1) {\n // Build lookup for client properties\n const clientMap: {\n [k: string]: BookingWizardProperty;\n } = Object.fromEntries(\n Object.values(properties)\n .flat()\n .map((p) => [p.id, p])\n );\n // Group by API-provided regions\n for (const region of regions) {\n const matches = fetchedData\n .filter((fp) => fp.bookingWizardRegion === region)\n .map((fp) => {\n const clientProp = clientMap[fp.id];\n if (!clientProp) return null;\n\n return {\n ...clientProp,\n name: fp.name, // merge name\n address: fp.address, // merge address\n card: {\n image: clientProp.card?.image || fp.logo,\n text: combineAddress(fp.address),\n },\n };\n })\n .filter(Boolean);\n if (matches.length > 0) {\n tmpFinalProperties[region || unGrouped] = matches as BookingWizardProperty[];\n }\n }\n } else {\n const fetchedDataMap: {\n [k: string]: IBookingWizardSearchProperty;\n } = Object.fromEntries(fetchedData.map((p) => [p.id, p]));\n // Fallback: enrich clientProperties with address\n for (const [region, hotels] of Object.entries(properties)) {\n tmpFinalProperties[region] = hotels.map((hotel) => ({\n ...hotel,\n address: fetchedDataMap[hotel.id]?.address, // attach if found\n card: {\n image: hotel.card?.image,\n text: combineAddress(fetchedDataMap[hotel.id]?.address),\n },\n })) as BookingWizardProperty[];\n }\n }\n\n if (searchConfig?.sortCompareFn) {\n // Use custom comparator\n tmpFinalProperties = Object.fromEntries(\n Object.entries(tmpFinalProperties)\n .sort(([a], [b]) => searchConfig.sortCompareFn!(a, b)) // Sort regions\n .map(([region, props]) => [region, props.sort((p1, p2) => searchConfig.sortCompareFn!(p1, p2))]) // Sort properties\n );\n } else {\n // Default: Sort regions alphabetically, move unGrouped to the end,\n // and also sort properties by name inside each region\n tmpFinalProperties = Object.fromEntries(\n Object.entries(tmpFinalProperties)\n .sort(([a], [b]) => {\n if (a === unGrouped) return 1;\n if (b === unGrouped) return -1;\n return a.localeCompare(b);\n })\n .map(([region, props]) => [region, props.sort((p1, p2) => p1.name.localeCompare(p2.name))])\n );\n }\n setFinalProperties(tmpFinalProperties);\n };\n\n useEffect(() => {\n fetchPropertyData();\n }, [searchConfig?.companyId]);\n\n const searchFilter = (bwProperties: TBookingWizardProperties, searchQuery?: string): TBookingWizardProperties => {\n if (searchConfig?.searchFilter) {\n // Use custom search\n return searchConfig.searchFilter(bwProperties, searchQuery);\n }\n // Default search\n const query = searchQuery?.trim()?.toLowerCase() || '';\n\n if (!query || (query && selectedProperty && query === selectedProperty?.name?.toLowerCase())) {\n return bwProperties;\n }\n\n const filtered: TBookingWizardProperties = {};\n\n for (const [region, hotels] of Object.entries(bwProperties)) {\n const matches = hotels.filter((hotel) => {\n if (!hotel) return false;\n\n const { city = '', state = '' } = hotel?.address || {};\n const keywords = [hotel.name, region, city, state].filter(Boolean).map((kw) => kw.toLowerCase());\n\n return keywords.some((kw) => kw.includes(query));\n });\n\n if (matches.length > 0) {\n filtered[region] = matches;\n }\n }\n return filtered;\n };\n\n const optionedProperties = useMemo(() => {\n let isOnly = false;\n\n const options: TOptionedProperties[] = [];\n const filteredProperties = searchFilter(finalProperties, searchConfig?.searchQuery);\n\n // Here we group each key as a new TOption Group to order hotels better.\n const propertyKeys = Object.keys(filteredProperties);\n if (propertyKeys.length > 1) {\n propertyKeys.forEach((propertyKey: string) => {\n const option: TOptionedProperties = {\n name: propertyKey,\n id: '',\n options: [],\n colors: {} as IHotelColorScheme,\n };\n\n for (const property of filteredProperties[propertyKey]) {\n option.options?.push(property);\n }\n\n options.push(option);\n });\n } else if (propertyKeys.length === 1) {\n filteredProperties[propertyKeys[0]].forEach((option) => {\n options.push(option);\n });\n\n if (filteredProperties[propertyKeys[0]].length == 1 && filteredProperties[propertyKeys[0]][0].id === selectedProperty?.id) {\n isOnly = true;\n }\n }\n\n setIsOnlyProperty(isOnly);\n\n return options;\n }, [properties, searchConfig?.searchQuery, finalProperties]);\n\n const onPropertyClick = (property?: BookingWizardProperty): void => {\n props.onChange?.(property);\n searchConfig?.setSearchQuery(property?.name || '');\n\n if (!isImagesThemeMobile) {\n setOpen(false);\n }\n };\n\n const onClearAllHandler = (event?: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n props.onChange?.();\n searchConfig?.setSearchQuery('');\n event?.preventDefault();\n event?.stopPropagation();\n };\n\n const getOption = (key: BookingWizardProperty['id']): BookingWizardProperty | undefined => {\n const indexes = Object.keys(properties);\n\n for (const index of indexes) {\n for (const property of properties[index]) {\n if (key === property.id) {\n return property;\n }\n }\n }\n };\n\n const renderOptions = (): any => {\n const filteredProperties = searchFilter(finalProperties, searchConfig?.searchQuery);\n\n const indexes = Object.keys(filteredProperties);\n\n if (indexes.length > 1) {\n return indexes.map((indexName) => renderGroup(indexName, filteredProperties[indexName]));\n } else if (indexes.length === 1) {\n return filteredProperties[indexes[0]].map((property) => renderOption(property));\n }\n };\n\n const renderGroup = (name: string, options: BookingWizardProperty[]) => {\n return (\n <div key={name}>\n <div className={classNames(styles['container--suggest-list-hotel'], styles['--group-title'])}>\n <Text type={TextType.Small} color={Color.DarkGrey}>\n {name}\n </Text>\n </div>\n {options.map((option) => renderOption(option))}\n </div>\n );\n };\n\n const renderOption = (property: BookingWizardProperty) => {\n if (isImagesTheme) {\n return (\n <div\n key={property.id}\n className={classNames(styles['card'], { [styles['--selected']]: selectedProperty?.id === property.id })}\n onClick={() => onPropertyClick(property)}\n >\n <div className={styles['card-img']}>\n <img src={property?.card?.image} />\n </div>\n <div className={styles['card-body']}>\n <div className={styles['card-title']}>{property.name}</div>\n <div className={styles['card-sub-title']}>{property?.card?.text}</div>\n </div>\n </div>\n );\n } else {\n return (\n <div\n key={property.id}\n className={classNames(styles['container--suggest-list-hotel'], { [styles['--selected']]: selectedProperty?.id === property.id })}\n onClick={() => onPropertyClick(property)}\n >\n <div className={styles['container--suggest-list-hotel-name']}>{property.name}</div>\n <div className={styles.check}></div>\n </div>\n );\n }\n };\n\n const onOpenDrawer = () => {\n setOpen(true);\n };\n\n if (isOnlyProperty && !searchConfig) {\n return <Text>{selectedProperty?.name}</Text>;\n }\n\n if (type === 'inline') {\n return (\n <div className={styles['inline-container']}>\n <AutoAutoHeight open={open}>\n <div className={styles['inline-box']}>{renderOptions()}</div>\n </AutoAutoHeight>\n </div>\n );\n }\n\n if (type === 'bottom-sheet') {\n const ItemDisplay = () => {\n return (\n <div\n className={classNames({\n [styles['--mini']]: !isImagesThemeMobile && layout === 'horizontal-condensed',\n [styles['item-display']]: isImagesThemeMobile || !!searchConfig,\n [styles['--searchable']]: !!searchConfig,\n })}\n onClick={onOpenDrawer}\n >\n <Text\n className={classNames(styles.optionLabel, {\n [styles.placeholder]: !selectedProperty?.name,\n [styles['text-ellipsis-with-icon']]: !!searchConfig,\n })}\n bold\n >\n {selectedProperty?.name || t(Translation.Misc.PleaseSelectHotelMobile)}\n </Text>\n {isImagesThemeMobile && !searchConfig ? <Icon icon={IconType.Dropdown} /> : null}\n {searchConfig && <BWClearButton show={!!searchConfig.searchQuery} onClick={onClearAllHandler} hasLabel hasSearchInput />}\n {searchConfig && <BWSearchButton show={!searchConfig.searchQuery} hasLabel hasSearchInput />}\n </div>\n );\n };\n return (\n <div\n className={classNames({\n [styles['container-searchable']]: !!searchConfig,\n })}\n >\n <ItemDisplay />\n <BookingWizardBottomSheet\n className={classNames(styles.container, styles['--bottom-sheet'], {\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n })}\n open={open}\n onDismiss={() => {\n if (!isImagesThemeMobile) {\n setOpen(false);\n }\n }}\n header={\n <>\n <BWBottomSheetHeader title={t(Translation.Misc.ChooseHotelMobile)} onClose={() => setOpen(false)} />\n {searchConfig && (\n <div className={styles.header}>\n <SelectorSearchBox option={selectedProperty} searchConfig={searchConfig} onClearAllHandler={onClearAllHandler} />\n </div>\n )}\n </>\n }\n footer={\n <BWBottomSheetFooter\n hidePrev={stateSections[EBookingWizardSection.Property].isFirst}\n onNext={() => onNextHandler(EBookingWizardSection.Property)}\n disabledNext={!selectedProperty}\n />\n }\n {...(searchConfig\n ? {\n snapPoints: () => [window.innerHeight],\n defaultSnap: ({ maxHeight }: { maxHeight: number }) => maxHeight,\n }\n : {})}\n >\n <div className={classNames(styles.content, contentClassName)}>\n {renderOptions() || <Text className={classNames(styles['input-no-options'])}>{t(Translation.Misc.EmptySearchHotel)}</Text>}\n </div>\n </BookingWizardBottomSheet>\n </div>\n );\n }\n\n return (\n <div className={classNames({ [styles['--mini']]: layout === 'horizontal-condensed' })}>\n <Select<BookingWizardProperty, 'id'>\n target={followElement}\n offset={overlay?.offset}\n options={optionedProperties}\n value={selectedProperty?.id}\n onChange={(value) => onPropertyClick(getOption(value) as BookingWizardProperty)}\n keyName=\"id\"\n labelName=\"name\"\n hideExpandIcon={layout === 'horizontal-condensed' || !!searchConfig}\n disableNative\n overlay={{\n containerClassName: classNames(styles['custom-overlay'], {\n [styles['small-container']]: isSmallContainer,\n [styles['custom-overlay-images-theme']]: isImagesTheme,\n }),\n strategy: 'absolute',\n usePortal: false,\n placement: overlay?.placement || 'bottom',\n fallbackPlacements: overlay?.fallbackPlacements || 'bottom',\n hideStyles: true,\n }}\n renderOption={(property) => {\n if (property) return renderOption(property);\n return null;\n }}\n renderLabel={(option) => <SelectorSearchBox option={option} searchConfig={searchConfig} onClearAllHandler={onClearAllHandler} />}\n renderNoOptions={(targetRef: React.RefObject<HTMLSpanElement>) => {\n const width = targetRef.current?.clientWidth;\n return (\n <Text\n className={classNames(styles['input-no-options'])}\n style={{\n width: width,\n }}\n >\n {t(Translation.Misc.EmptySearchHotel)}\n </Text>\n );\n }}\n open={searchConfig?.focused}\n />\n </div>\n );\n};\n\nconst SelectorSearchBox = ({\n option,\n searchConfig,\n onClearAllHandler,\n}: {\n option?: BookingWizardProperty | null;\n onClearAllHandler: (event?: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n} & Pick<BookingWizardHotelSelectorProps, 'searchConfig'>) => {\n const { t } = useTranslation();\n useEffect(() => {\n if (searchConfig?.searchQuery.trim() === '') {\n onClearAllHandler();\n }\n }, [searchConfig?.searchQuery]);\n\n if (!searchConfig) {\n return (\n <Text className={classNames(styles.optionLabel, bookingWizardStyles['value'])} bold>\n {option?.name || <span className={classNames(styles['hotel-dropdown-label'], bookingWizardStyles['value'])}>{t(Translation.Misc.PleaseSelectHotel)}</span>}\n </Text>\n );\n }\n\n return (\n <>\n <input\n className={classNames(styles['input-search'], bookingWizardStyles['text-ellipsis-with-icon'], bookingWizardStyles['value'])}\n type=\"text\"\n value={searchConfig.searchQuery || option?.name || ''}\n placeholder={t(Translation.Misc.PleaseSelectHotel)}\n onChange={(e) => searchConfig.setSearchQuery(e.target.value)}\n autoComplete=\"off\"\n />\n {searchConfig && <BWClearButton show={!!searchConfig.searchQuery} onClick={onClearAllHandler} hasLabel hasSearchInput />}\n {searchConfig && <BWSearchButton show={!searchConfig.searchQuery} hasLabel hasSearchInput />}\n </>\n );\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { IconType } from '../../Icon/Icon';
3
3
  import { Color } from '../../../../util/Color';
4
4
  type IconNavCardProps = {
@@ -12,5 +12,5 @@ type IconNavCardProps = {
12
12
  color?: Color;
13
13
  };
14
14
  };
15
- export declare const IconNavCard: (props: IconNavCardProps) => JSX.Element | null;
15
+ export declare const IconNavCard: (props: IconNavCardProps) => React.JSX.Element | null;
16
16
  export {};
@@ -1,7 +1,8 @@
1
1
  import dayjs from 'dayjs';
2
+ import React from 'react';
2
3
  interface CountdownProps {
3
4
  endTimeDate: dayjs.Dayjs;
4
5
  onEnd?: () => void;
5
6
  }
6
- export default function Countdown(props: CountdownProps): JSX.Element;
7
+ export default function Countdown(props: CountdownProps): React.JSX.Element;
7
8
  export {};
@@ -1,4 +1,5 @@
1
+ import React from 'react';
1
2
  import { UseCurrencyProps } from '../../hooks/Currency';
2
3
  export default function Currency(props: UseCurrencyProps & {
3
4
  forceHideDecimals?: boolean;
4
- }): JSX.Element;
5
+ }): React.JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import dayjs from 'dayjs';
2
+ import React from 'react';
2
3
  import { ShowYearOnCalendarProps } from '../../../models/Api/HotelOverrideDTO';
3
4
  import { EBookingWizardTheme } from '../BookingWizard/BookingWizard';
4
5
  export interface DatePickerProps extends ShowYearOnCalendarProps {
@@ -18,4 +19,4 @@ export interface DatePickerProps extends ShowYearOnCalendarProps {
18
19
  theme?: EBookingWizardTheme;
19
20
  className?: string;
20
21
  }
21
- export default function DateRangePicker(props: DatePickerProps): JSX.Element;
22
+ export default function DateRangePicker(props: DatePickerProps): React.JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import * as dayjs from 'dayjs';
2
+ import React from 'react';
2
3
  import { Color } from '../../../util/Color';
3
4
  interface DatePickerDayProps {
4
5
  text: any;
@@ -17,5 +18,5 @@ export declare enum DatePickerDayStatus {
17
18
  Loading = "--loading",
18
19
  Selected = "--selected"
19
20
  }
20
- export default function DateRangePickerDay(props: DatePickerDayProps): JSX.Element;
21
+ export default function DateRangePickerDay(props: DatePickerDayProps): React.JSX.Element;
21
22
  export {};
@@ -1,6 +1,7 @@
1
1
  import * as dayjs from 'dayjs';
2
+ import React from 'react';
2
3
  interface DatePickerDaysProps {
3
4
  showingMonth: dayjs.Dayjs;
4
5
  }
5
- export default function DateRangePickerDays(props: DatePickerDaysProps): JSX.Element;
6
+ export default function DateRangePickerDays(props: DatePickerDaysProps): React.JSX.Element;
6
7
  export {};
@@ -1,8 +1,9 @@
1
1
  import * as dayjs from 'dayjs';
2
+ import React from 'react';
2
3
  import { ShowYearOnCalendarProps } from '../../../models/Api/HotelOverrideDTO';
3
4
  interface DatePickerMonthProps extends ShowYearOnCalendarProps {
4
5
  showingMonth: dayjs.Dayjs;
5
6
  small?: boolean;
6
7
  }
7
- export default function DateRangePickerMonth(props: DatePickerMonthProps): JSX.Element;
8
+ export default function DateRangePickerMonth(props: DatePickerMonthProps): React.JSX.Element;
8
9
  export {};
@@ -1,6 +1,7 @@
1
+ import React from 'react';
1
2
  interface DistanceProps {
2
3
  distance: number | string;
3
4
  unit?: string;
4
5
  }
5
- export default function Distance({ distance, unit }: DistanceProps): JSX.Element;
6
+ export default function Distance({ distance, unit }: DistanceProps): React.JSX.Element;
6
7
  export {};
@@ -11,4 +11,4 @@ export interface HeadlineProps extends PropsWithChildren<any> {
11
11
  className?: string;
12
12
  [x: string]: React.ReactNode;
13
13
  }
14
- export default function Headline(props: HeadlineProps): JSX.Element;
14
+ export default function Headline(props: HeadlineProps): React.JSX.Element;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  export declare const HtmlContentViewer: ({ content }: {
2
3
  content: string;
3
- }) => JSX.Element;
4
+ }) => React.JSX.Element;
@@ -1,8 +1,8 @@
1
- import { ReactNode } from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { InputGroupDimensions } from './InputGroup.types';
3
3
  export interface InputGroupProps {
4
4
  children: ReactNode | ReactNode[];
5
5
  dimensions?: InputGroupDimensions;
6
6
  noMargin?: boolean;
7
7
  }
8
- export default function InputGroup(props: InputGroupProps): JSX.Element;
8
+ export default function InputGroup(props: InputGroupProps): React.JSX.Element;
@@ -1,7 +1,8 @@
1
+ import React from 'react';
1
2
  export interface LineBreakProps {
2
3
  darker?: boolean;
3
4
  noMargins?: boolean;
4
5
  smallMargins?: boolean;
5
6
  fullBleed?: boolean;
6
7
  }
7
- export default function LineBreak(props: LineBreakProps): JSX.Element;
8
+ export default function LineBreak(props: LineBreakProps): React.JSX.Element;
@@ -9,5 +9,5 @@ interface NotificationProps {
9
9
  data: NotificationType;
10
10
  onRemove?: (id: number) => void;
11
11
  }
12
- export default function Notification(props: NotificationProps): JSX.Element;
12
+ export default function Notification(props: NotificationProps): React.JSX.Element;
13
13
  export {};
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { TextType } from './Text';
2
3
  export interface NumberIncrementProps {
3
4
  number?: number;
@@ -7,4 +8,4 @@ export interface NumberIncrementProps {
7
8
  textSize?: TextType;
8
9
  hideTooltips?: boolean;
9
10
  }
10
- export default function NumberIncrement(props: NumberIncrementProps): JSX.Element;
11
+ export default function NumberIncrement(props: NumberIncrementProps): React.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { Placement, PositioningStrategy } from '@popperjs/core';
2
- import { LegacyRef, ReactNode } from 'react';
2
+ import React, { LegacyRef, ReactNode } from 'react';
3
3
  export type OverlayProps = {
4
4
  children: ReactNode | ReactNode[];
5
5
  open: boolean;
@@ -18,4 +18,4 @@ export type OverlayProps = {
18
18
  preventScroll?: boolean;
19
19
  isAboveNav?: boolean;
20
20
  };
21
- export declare const Overlay: (props: OverlayProps) => JSX.Element;
21
+ export declare const Overlay: (props: OverlayProps) => React.JSX.Element;