@qite/tide-booking-component 1.4.31 → 1.4.33

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 (360) hide show
  1. package/build/build-cjs/booking-product/components/age-select.d.ts +8 -8
  2. package/build/build-cjs/booking-product/components/amount-input.d.ts +10 -10
  3. package/build/build-cjs/booking-product/components/date-range-picker/calendar-day.d.ts +12 -12
  4. package/build/build-cjs/booking-product/components/date-range-picker/calendar.d.ts +19 -19
  5. package/build/build-cjs/booking-product/components/date-range-picker/index.d.ts +24 -20
  6. package/build/build-cjs/booking-product/components/dates.d.ts +14 -9
  7. package/build/build-cjs/booking-product/components/footer.d.ts +10 -10
  8. package/build/build-cjs/booking-product/components/header.d.ts +11 -11
  9. package/build/build-cjs/booking-product/components/icon.d.ts +10 -10
  10. package/build/build-cjs/booking-product/components/list-view.d.ts +8 -0
  11. package/build/build-cjs/booking-product/components/product.d.ts +9 -9
  12. package/build/build-cjs/booking-product/components/rating.d.ts +6 -6
  13. package/build/build-cjs/booking-product/components/rooms.d.ts +10 -10
  14. package/build/build-cjs/booking-product/constants.d.ts +1 -0
  15. package/build/build-cjs/booking-product/index.d.ts +10 -10
  16. package/build/build-cjs/booking-product/settings-context.d.ts +6 -5
  17. package/build/build-cjs/booking-product/types.d.ts +27 -25
  18. package/build/build-cjs/booking-product/utils/api.d.ts +7 -11
  19. package/build/build-cjs/booking-product/utils/price.d.ts +1 -10
  20. package/build/build-cjs/booking-wizard/api-settings-slice.d.ts +4 -5
  21. package/build/build-cjs/booking-wizard/components/icon.d.ts +10 -10
  22. package/build/build-cjs/booking-wizard/components/labeled-input.d.ts +18 -18
  23. package/build/build-cjs/booking-wizard/components/labeled-select.d.ts +21 -21
  24. package/build/build-cjs/booking-wizard/components/message.d.ts +9 -9
  25. package/build/build-cjs/booking-wizard/components/multi-range-filter.d.ts +11 -11
  26. package/build/build-cjs/booking-wizard/components/phone-input.d.ts +17 -17
  27. package/build/build-cjs/booking-wizard/components/print-offer-button.d.ts +17 -17
  28. package/build/build-cjs/booking-wizard/components/product-card.d.ts +8 -8
  29. package/build/build-cjs/booking-wizard/components/step-indicator.d.ts +6 -6
  30. package/build/build-cjs/booking-wizard/components/step-route.d.ts +9 -9
  31. package/build/build-cjs/booking-wizard/features/booking/api.d.ts +10 -26
  32. package/build/build-cjs/booking-wizard/features/booking/booking-self-contained.d.ts +8 -8
  33. package/build/build-cjs/booking-wizard/features/booking/booking-slice.d.ts +50 -96
  34. package/build/build-cjs/booking-wizard/features/booking/booking.d.ts +8 -8
  35. package/build/build-cjs/booking-wizard/features/booking/constants.d.ts +8 -15
  36. package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +195 -280
  37. package/build/build-cjs/booking-wizard/features/confirmation/confirmation.d.ts +5 -4
  38. package/build/build-cjs/booking-wizard/features/error/error.d.ts +5 -4
  39. package/build/build-cjs/booking-wizard/features/flight-options/flight-filter.d.ts +9 -9
  40. package/build/build-cjs/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -8
  41. package/build/build-cjs/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -3
  42. package/build/build-cjs/booking-wizard/features/flight-options/flight-option.d.ts +10 -10
  43. package/build/build-cjs/booking-wizard/features/flight-options/flight-utils.d.ts +6 -13
  44. package/build/build-cjs/booking-wizard/features/flight-options/index.d.ts +5 -4
  45. package/build/build-cjs/booking-wizard/features/price-details/price-details-api.d.ts +6 -11
  46. package/build/build-cjs/booking-wizard/features/price-details/price-details-slice.d.ts +80 -105
  47. package/build/build-cjs/booking-wizard/features/price-details/util.d.ts +2 -2
  48. package/build/build-cjs/booking-wizard/features/product-options/no-options.d.ts +3 -3
  49. package/build/build-cjs/booking-wizard/features/product-options/none-option.d.ts +9 -9
  50. package/build/build-cjs/booking-wizard/features/product-options/option-booking-airline-group.d.ts +8 -8
  51. package/build/build-cjs/booking-wizard/features/product-options/option-booking-group.d.ts +12 -12
  52. package/build/build-cjs/booking-wizard/features/product-options/option-item.d.ts +11 -11
  53. package/build/build-cjs/booking-wizard/features/product-options/option-pax-card.d.ts +10 -10
  54. package/build/build-cjs/booking-wizard/features/product-options/option-pax-group.d.ts +13 -13
  55. package/build/build-cjs/booking-wizard/features/product-options/option-room.d.ts +11 -11
  56. package/build/build-cjs/booking-wizard/features/product-options/option-unit-group.d.ts +13 -13
  57. package/build/build-cjs/booking-wizard/features/product-options/option-units-card.d.ts +9 -9
  58. package/build/build-cjs/booking-wizard/features/product-options/options-form.d.ts +5 -4
  59. package/build/build-cjs/booking-wizard/features/room-options/index.d.ts +5 -4
  60. package/build/build-cjs/booking-wizard/features/room-options/room-utils.d.ts +9 -22
  61. package/build/build-cjs/booking-wizard/features/room-options/room.d.ts +12 -12
  62. package/build/build-cjs/booking-wizard/features/room-options/traveler-rooms.d.ts +9 -9
  63. package/build/build-cjs/booking-wizard/features/sidebar/index.d.ts +7 -7
  64. package/build/build-cjs/booking-wizard/features/sidebar/sidebar-flight.d.ts +8 -8
  65. package/build/build-cjs/booking-wizard/features/sidebar/sidebar-util.d.ts +12 -14
  66. package/build/build-cjs/booking-wizard/features/sidebar/sidebar.d.ts +27 -26
  67. package/build/build-cjs/booking-wizard/features/summary/summary-booking-option-pax.d.ts +7 -7
  68. package/build/build-cjs/booking-wizard/features/summary/summary-booking-option-unit.d.ts +7 -7
  69. package/build/build-cjs/booking-wizard/features/summary/summary-flight.d.ts +8 -8
  70. package/build/build-cjs/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +7 -7
  71. package/build/build-cjs/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +7 -7
  72. package/build/build-cjs/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +7 -7
  73. package/build/build-cjs/booking-wizard/features/summary/summary-slice.d.ts +8 -8
  74. package/build/build-cjs/booking-wizard/features/summary/summary.d.ts +5 -4
  75. package/build/build-cjs/booking-wizard/features/travelers-form/controls/gender-control.d.ts +5 -5
  76. package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +50 -61
  77. package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form-util.d.ts +7 -7
  78. package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form.d.ts +5 -4
  79. package/build/build-cjs/booking-wizard/features/travelers-form/type-ahead-input.d.ts +16 -16
  80. package/build/build-cjs/booking-wizard/features/travelers-form/validate-form.d.ts +4 -11
  81. package/build/build-cjs/booking-wizard/index.d.ts +12 -12
  82. package/build/build-cjs/booking-wizard/settings-context.d.ts +6 -5
  83. package/build/build-cjs/booking-wizard/store.d.ts +24 -39
  84. package/build/build-cjs/booking-wizard/types.d.ts +284 -283
  85. package/build/build-cjs/booking-wizard/use-offer-printer.d.ts +13 -13
  86. package/build/build-cjs/content/components/LanguageSwitcher.d.ts +12 -12
  87. package/build/build-cjs/content/components/accordion.d.ts +9 -9
  88. package/build/build-cjs/content/components/breadcrumb.d.ts +16 -16
  89. package/build/build-cjs/content/components/contact.d.ts +3 -3
  90. package/build/build-cjs/content/components/faq.d.ts +10 -10
  91. package/build/build-cjs/content/components/gallery.d.ts +12 -12
  92. package/build/build-cjs/content/components/icon.d.ts +10 -10
  93. package/build/build-cjs/content/components/image-with-text.d.ts +28 -28
  94. package/build/build-cjs/content/components/personal-contact-form.d.ts +3 -3
  95. package/build/build-cjs/content/components/slider.d.ts +10 -10
  96. package/build/build-cjs/content/features/content-page/content-page-self-contained.d.ts +6 -6
  97. package/build/build-cjs/content/footer/index.d.ts +4 -4
  98. package/build/build-cjs/content/footer/types.d.ts +27 -27
  99. package/build/build-cjs/content/header/index.d.ts +4 -4
  100. package/build/build-cjs/content/header/types.d.ts +22 -25
  101. package/build/build-cjs/content/navbar/index.d.ts +4 -4
  102. package/build/build-cjs/content/navbar/placeholderData.d.ts +10 -10
  103. package/build/build-cjs/content/navbar/types.d.ts +27 -27
  104. package/build/build-cjs/index.d.ts +8 -8
  105. package/build/build-cjs/index.js +20296 -26620
  106. package/build/build-cjs/qsm/components/QSMContainer/qsm-container.d.ts +3 -3
  107. package/build/build-cjs/qsm/components/date-picker/index.d.ts +3 -3
  108. package/build/build-cjs/qsm/components/date-range-picker/calendar-day.d.ts +12 -12
  109. package/build/build-cjs/qsm/components/date-range-picker/calendar.d.ts +24 -24
  110. package/build/build-cjs/qsm/components/date-range-picker/index.d.ts +10 -10
  111. package/build/build-cjs/qsm/components/double-search-input-group/index.d.ts +7 -7
  112. package/build/build-cjs/qsm/components/icon.d.ts +10 -10
  113. package/build/build-cjs/qsm/components/item-picker/index.d.ts +12 -12
  114. package/build/build-cjs/qsm/components/mobile-filter-modal/index.d.ts +3 -3
  115. package/build/build-cjs/qsm/components/search-input/index.d.ts +13 -13
  116. package/build/build-cjs/qsm/components/search-input-group/index.d.ts +11 -11
  117. package/build/build-cjs/qsm/components/travel-class-picker/index.d.ts +3 -3
  118. package/build/build-cjs/qsm/components/travel-input/index.d.ts +3 -3
  119. package/build/build-cjs/qsm/components/travel-input-group/index.d.ts +3 -3
  120. package/build/build-cjs/qsm/components/travel-nationality-picker/index.d.ts +3 -3
  121. package/build/build-cjs/qsm/components/travel-type-picker/index.d.ts +3 -3
  122. package/build/build-cjs/qsm/index.d.ts +7 -7
  123. package/build/build-cjs/qsm/qsm-configuration-context.d.ts +4 -4
  124. package/build/build-cjs/qsm/store/qsm-slice.d.ts +70 -122
  125. package/build/build-cjs/qsm/store/qsm-store.d.ts +8 -18
  126. package/build/build-cjs/qsm/types.d.ts +110 -109
  127. package/build/build-cjs/search-results/components/filters/filters.d.ts +11 -11
  128. package/build/build-cjs/search-results/components/filters/utility.d.ts +3 -3
  129. package/build/build-cjs/search-results/components/flight/flight-accommodation-results.d.ts +5 -4
  130. package/build/build-cjs/search-results/components/flight/flight-banner.d.ts +8 -8
  131. package/build/build-cjs/search-results/components/flight/flight-card.d.ts +7 -7
  132. package/build/build-cjs/search-results/components/flight/flight-leg.d.ts +7 -7
  133. package/build/build-cjs/search-results/components/flight/flight-path.d.ts +6 -6
  134. package/build/build-cjs/search-results/components/flight/flight-results.d.ts +6 -6
  135. package/build/build-cjs/search-results/components/hotel/hotel-accommodation-results.d.ts +8 -8
  136. package/build/build-cjs/search-results/components/hotel/hotel-card.d.ts +7 -7
  137. package/build/build-cjs/search-results/components/icon.d.ts +10 -10
  138. package/build/build-cjs/search-results/components/item-picker/index.d.ts +12 -12
  139. package/build/build-cjs/search-results/components/itinerary/index.d.ts +8 -8
  140. package/build/build-cjs/search-results/components/multi-range-filter.d.ts +11 -11
  141. package/build/build-cjs/search-results/components/round-trip/round-trip-results.d.ts +5 -4
  142. package/build/build-cjs/search-results/components/search-results-container/search-results-container.d.ts +3 -3
  143. package/build/build-cjs/search-results/components/spinner/spinner.d.ts +3 -3
  144. package/build/build-cjs/search-results/components/tab-views/index.d.ts +5 -4
  145. package/build/build-cjs/search-results/features/flights/flight-search-results-self-contained.d.ts +5 -4
  146. package/build/build-cjs/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +5 -4
  147. package/build/build-cjs/search-results/features/hotels/hotel-search-results-self-contained.d.ts +5 -4
  148. package/build/build-cjs/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +5 -4
  149. package/build/build-cjs/search-results/index.d.ts +7 -7
  150. package/build/build-cjs/search-results/search-results-configuration-context.d.ts +4 -4
  151. package/build/build-cjs/search-results/store/search-results-slice.d.ts +16 -25
  152. package/build/build-cjs/search-results/store/search-results-store.d.ts +8 -18
  153. package/build/build-cjs/search-results/types.d.ts +120 -120
  154. package/build/build-cjs/shared/components/loader.d.ts +6 -6
  155. package/build/build-cjs/shared/types.d.ts +4 -4
  156. package/build/build-cjs/shared/utils/class-util.d.ts +1 -1
  157. package/build/build-cjs/shared/utils/localization-util.d.ts +275 -260
  158. package/build/build-cjs/shared/utils/query-string-util.d.ts +8 -8
  159. package/build/build-cjs/shared/utils/tide-api-utils.d.ts +4 -4
  160. package/build/build-cjs/shared/utils/use-media-query-util.d.ts +2 -2
  161. package/build/build-esm/booking-product/components/age-select.d.ts +8 -8
  162. package/build/build-esm/booking-product/components/amount-input.d.ts +10 -10
  163. package/build/build-esm/booking-product/components/date-range-picker/calendar-day.d.ts +12 -12
  164. package/build/build-esm/booking-product/components/date-range-picker/calendar.d.ts +19 -19
  165. package/build/build-esm/booking-product/components/date-range-picker/index.d.ts +24 -20
  166. package/build/build-esm/booking-product/components/dates.d.ts +14 -9
  167. package/build/build-esm/booking-product/components/footer.d.ts +10 -10
  168. package/build/build-esm/booking-product/components/header.d.ts +11 -11
  169. package/build/build-esm/booking-product/components/icon.d.ts +10 -10
  170. package/build/build-esm/booking-product/components/list-view.d.ts +8 -0
  171. package/build/build-esm/booking-product/components/product.d.ts +9 -9
  172. package/build/build-esm/booking-product/components/rating.d.ts +6 -6
  173. package/build/build-esm/booking-product/components/rooms.d.ts +10 -10
  174. package/build/build-esm/booking-product/constants.d.ts +1 -0
  175. package/build/build-esm/booking-product/index.d.ts +10 -10
  176. package/build/build-esm/booking-product/settings-context.d.ts +6 -5
  177. package/build/build-esm/booking-product/types.d.ts +27 -25
  178. package/build/build-esm/booking-product/utils/api.d.ts +7 -11
  179. package/build/build-esm/booking-product/utils/price.d.ts +1 -10
  180. package/build/build-esm/booking-wizard/api-settings-slice.d.ts +4 -5
  181. package/build/build-esm/booking-wizard/components/icon.d.ts +10 -10
  182. package/build/build-esm/booking-wizard/components/labeled-input.d.ts +18 -18
  183. package/build/build-esm/booking-wizard/components/labeled-select.d.ts +21 -21
  184. package/build/build-esm/booking-wizard/components/message.d.ts +9 -9
  185. package/build/build-esm/booking-wizard/components/multi-range-filter.d.ts +11 -11
  186. package/build/build-esm/booking-wizard/components/phone-input.d.ts +17 -17
  187. package/build/build-esm/booking-wizard/components/print-offer-button.d.ts +17 -17
  188. package/build/build-esm/booking-wizard/components/product-card.d.ts +8 -8
  189. package/build/build-esm/booking-wizard/components/step-indicator.d.ts +6 -6
  190. package/build/build-esm/booking-wizard/components/step-route.d.ts +9 -9
  191. package/build/build-esm/booking-wizard/features/booking/api.d.ts +10 -26
  192. package/build/build-esm/booking-wizard/features/booking/booking-self-contained.d.ts +8 -8
  193. package/build/build-esm/booking-wizard/features/booking/booking-slice.d.ts +50 -96
  194. package/build/build-esm/booking-wizard/features/booking/booking.d.ts +8 -8
  195. package/build/build-esm/booking-wizard/features/booking/constants.d.ts +8 -15
  196. package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +195 -280
  197. package/build/build-esm/booking-wizard/features/confirmation/confirmation.d.ts +5 -4
  198. package/build/build-esm/booking-wizard/features/error/error.d.ts +5 -4
  199. package/build/build-esm/booking-wizard/features/flight-options/flight-filter.d.ts +9 -9
  200. package/build/build-esm/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -8
  201. package/build/build-esm/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -3
  202. package/build/build-esm/booking-wizard/features/flight-options/flight-option.d.ts +10 -10
  203. package/build/build-esm/booking-wizard/features/flight-options/flight-utils.d.ts +6 -13
  204. package/build/build-esm/booking-wizard/features/flight-options/index.d.ts +5 -4
  205. package/build/build-esm/booking-wizard/features/price-details/price-details-api.d.ts +6 -11
  206. package/build/build-esm/booking-wizard/features/price-details/price-details-slice.d.ts +80 -105
  207. package/build/build-esm/booking-wizard/features/price-details/util.d.ts +2 -2
  208. package/build/build-esm/booking-wizard/features/product-options/no-options.d.ts +3 -3
  209. package/build/build-esm/booking-wizard/features/product-options/none-option.d.ts +9 -9
  210. package/build/build-esm/booking-wizard/features/product-options/option-booking-airline-group.d.ts +8 -8
  211. package/build/build-esm/booking-wizard/features/product-options/option-booking-group.d.ts +12 -12
  212. package/build/build-esm/booking-wizard/features/product-options/option-item.d.ts +11 -11
  213. package/build/build-esm/booking-wizard/features/product-options/option-pax-card.d.ts +10 -10
  214. package/build/build-esm/booking-wizard/features/product-options/option-pax-group.d.ts +13 -13
  215. package/build/build-esm/booking-wizard/features/product-options/option-room.d.ts +11 -11
  216. package/build/build-esm/booking-wizard/features/product-options/option-unit-group.d.ts +13 -13
  217. package/build/build-esm/booking-wizard/features/product-options/option-units-card.d.ts +9 -9
  218. package/build/build-esm/booking-wizard/features/product-options/options-form.d.ts +5 -4
  219. package/build/build-esm/booking-wizard/features/room-options/index.d.ts +5 -4
  220. package/build/build-esm/booking-wizard/features/room-options/room-utils.d.ts +9 -22
  221. package/build/build-esm/booking-wizard/features/room-options/room.d.ts +12 -12
  222. package/build/build-esm/booking-wizard/features/room-options/traveler-rooms.d.ts +9 -9
  223. package/build/build-esm/booking-wizard/features/sidebar/index.d.ts +7 -7
  224. package/build/build-esm/booking-wizard/features/sidebar/sidebar-flight.d.ts +8 -8
  225. package/build/build-esm/booking-wizard/features/sidebar/sidebar-util.d.ts +12 -14
  226. package/build/build-esm/booking-wizard/features/sidebar/sidebar.d.ts +27 -26
  227. package/build/build-esm/booking-wizard/features/summary/summary-booking-option-pax.d.ts +7 -7
  228. package/build/build-esm/booking-wizard/features/summary/summary-booking-option-unit.d.ts +7 -7
  229. package/build/build-esm/booking-wizard/features/summary/summary-flight.d.ts +8 -8
  230. package/build/build-esm/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +7 -7
  231. package/build/build-esm/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +7 -7
  232. package/build/build-esm/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +7 -7
  233. package/build/build-esm/booking-wizard/features/summary/summary-slice.d.ts +8 -8
  234. package/build/build-esm/booking-wizard/features/summary/summary.d.ts +5 -4
  235. package/build/build-esm/booking-wizard/features/travelers-form/controls/gender-control.d.ts +5 -5
  236. package/build/build-esm/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +50 -61
  237. package/build/build-esm/booking-wizard/features/travelers-form/travelers-form-util.d.ts +7 -7
  238. package/build/build-esm/booking-wizard/features/travelers-form/travelers-form.d.ts +5 -4
  239. package/build/build-esm/booking-wizard/features/travelers-form/type-ahead-input.d.ts +16 -16
  240. package/build/build-esm/booking-wizard/features/travelers-form/validate-form.d.ts +4 -11
  241. package/build/build-esm/booking-wizard/index.d.ts +12 -12
  242. package/build/build-esm/booking-wizard/settings-context.d.ts +6 -5
  243. package/build/build-esm/booking-wizard/store.d.ts +24 -39
  244. package/build/build-esm/booking-wizard/types.d.ts +284 -283
  245. package/build/build-esm/booking-wizard/use-offer-printer.d.ts +13 -13
  246. package/build/build-esm/content/components/LanguageSwitcher.d.ts +12 -12
  247. package/build/build-esm/content/components/accordion.d.ts +9 -9
  248. package/build/build-esm/content/components/breadcrumb.d.ts +16 -16
  249. package/build/build-esm/content/components/contact.d.ts +3 -3
  250. package/build/build-esm/content/components/faq.d.ts +10 -10
  251. package/build/build-esm/content/components/gallery.d.ts +12 -12
  252. package/build/build-esm/content/components/icon.d.ts +10 -10
  253. package/build/build-esm/content/components/image-with-text.d.ts +28 -28
  254. package/build/build-esm/content/components/personal-contact-form.d.ts +3 -3
  255. package/build/build-esm/content/components/slider.d.ts +10 -10
  256. package/build/build-esm/content/features/content-page/content-page-self-contained.d.ts +6 -6
  257. package/build/build-esm/content/footer/index.d.ts +4 -4
  258. package/build/build-esm/content/footer/types.d.ts +27 -27
  259. package/build/build-esm/content/header/index.d.ts +4 -4
  260. package/build/build-esm/content/header/types.d.ts +22 -25
  261. package/build/build-esm/content/navbar/index.d.ts +4 -4
  262. package/build/build-esm/content/navbar/placeholderData.d.ts +10 -10
  263. package/build/build-esm/content/navbar/types.d.ts +27 -27
  264. package/build/build-esm/index.d.ts +8 -8
  265. package/build/build-esm/index.js +20291 -26363
  266. package/build/build-esm/qsm/components/QSMContainer/qsm-container.d.ts +3 -3
  267. package/build/build-esm/qsm/components/date-picker/index.d.ts +3 -3
  268. package/build/build-esm/qsm/components/date-range-picker/calendar-day.d.ts +12 -12
  269. package/build/build-esm/qsm/components/date-range-picker/calendar.d.ts +24 -24
  270. package/build/build-esm/qsm/components/date-range-picker/index.d.ts +10 -10
  271. package/build/build-esm/qsm/components/double-search-input-group/index.d.ts +7 -7
  272. package/build/build-esm/qsm/components/icon.d.ts +10 -10
  273. package/build/build-esm/qsm/components/item-picker/index.d.ts +12 -12
  274. package/build/build-esm/qsm/components/mobile-filter-modal/index.d.ts +3 -3
  275. package/build/build-esm/qsm/components/search-input/index.d.ts +13 -13
  276. package/build/build-esm/qsm/components/search-input-group/index.d.ts +11 -11
  277. package/build/build-esm/qsm/components/travel-class-picker/index.d.ts +3 -3
  278. package/build/build-esm/qsm/components/travel-input/index.d.ts +3 -3
  279. package/build/build-esm/qsm/components/travel-input-group/index.d.ts +3 -3
  280. package/build/build-esm/qsm/components/travel-nationality-picker/index.d.ts +3 -3
  281. package/build/build-esm/qsm/components/travel-type-picker/index.d.ts +3 -3
  282. package/build/build-esm/qsm/index.d.ts +7 -7
  283. package/build/build-esm/qsm/qsm-configuration-context.d.ts +4 -4
  284. package/build/build-esm/qsm/store/qsm-slice.d.ts +70 -122
  285. package/build/build-esm/qsm/store/qsm-store.d.ts +8 -18
  286. package/build/build-esm/qsm/types.d.ts +110 -109
  287. package/build/build-esm/search-results/components/filters/filters.d.ts +11 -11
  288. package/build/build-esm/search-results/components/filters/utility.d.ts +3 -3
  289. package/build/build-esm/search-results/components/flight/flight-accommodation-results.d.ts +5 -4
  290. package/build/build-esm/search-results/components/flight/flight-banner.d.ts +8 -8
  291. package/build/build-esm/search-results/components/flight/flight-card.d.ts +7 -7
  292. package/build/build-esm/search-results/components/flight/flight-leg.d.ts +7 -7
  293. package/build/build-esm/search-results/components/flight/flight-path.d.ts +6 -6
  294. package/build/build-esm/search-results/components/flight/flight-results.d.ts +6 -6
  295. package/build/build-esm/search-results/components/hotel/hotel-accommodation-results.d.ts +8 -8
  296. package/build/build-esm/search-results/components/hotel/hotel-card.d.ts +7 -7
  297. package/build/build-esm/search-results/components/icon.d.ts +10 -10
  298. package/build/build-esm/search-results/components/item-picker/index.d.ts +12 -12
  299. package/build/build-esm/search-results/components/itinerary/index.d.ts +8 -8
  300. package/build/build-esm/search-results/components/multi-range-filter.d.ts +11 -11
  301. package/build/build-esm/search-results/components/round-trip/round-trip-results.d.ts +5 -4
  302. package/build/build-esm/search-results/components/search-results-container/search-results-container.d.ts +3 -3
  303. package/build/build-esm/search-results/components/spinner/spinner.d.ts +3 -3
  304. package/build/build-esm/search-results/components/tab-views/index.d.ts +5 -4
  305. package/build/build-esm/search-results/features/flights/flight-search-results-self-contained.d.ts +5 -4
  306. package/build/build-esm/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +5 -4
  307. package/build/build-esm/search-results/features/hotels/hotel-search-results-self-contained.d.ts +5 -4
  308. package/build/build-esm/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +5 -4
  309. package/build/build-esm/search-results/index.d.ts +7 -7
  310. package/build/build-esm/search-results/search-results-configuration-context.d.ts +4 -4
  311. package/build/build-esm/search-results/store/search-results-slice.d.ts +16 -25
  312. package/build/build-esm/search-results/store/search-results-store.d.ts +8 -18
  313. package/build/build-esm/search-results/types.d.ts +120 -120
  314. package/build/build-esm/shared/components/loader.d.ts +6 -6
  315. package/build/build-esm/shared/types.d.ts +4 -4
  316. package/build/build-esm/shared/utils/class-util.d.ts +1 -1
  317. package/build/build-esm/shared/utils/localization-util.d.ts +275 -260
  318. package/build/build-esm/shared/utils/query-string-util.d.ts +8 -8
  319. package/build/build-esm/shared/utils/tide-api-utils.d.ts +4 -4
  320. package/build/build-esm/shared/utils/use-media-query-util.d.ts +2 -2
  321. package/package.json +77 -77
  322. package/src/booking-product/components/date-range-picker/index.tsx +29 -16
  323. package/src/booking-product/components/dates.tsx +28 -5
  324. package/src/booking-product/components/list-view.tsx +54 -0
  325. package/src/booking-product/components/product.tsx +152 -20
  326. package/src/booking-product/constants.ts +1 -0
  327. package/src/booking-product/settings-context.ts +3 -1
  328. package/src/booking-product/types.ts +2 -0
  329. package/src/booking-product/utils/api.ts +9 -3
  330. package/src/booking-wizard/features/booking/booking-self-contained.tsx +304 -301
  331. package/src/qsm/components/QSMContainer/qsm-container.tsx +218 -234
  332. package/src/qsm/store/qsm-slice.ts +261 -267
  333. package/src/qsm/types.ts +145 -144
  334. package/src/search-results/components/flight/flight-card.tsx +1 -1
  335. package/src/search-results/components/hotel/hotel-accommodation-results.tsx +11 -6
  336. package/src/search-results/components/hotel/hotel-card.tsx +15 -1
  337. package/src/search-results/components/search-results-container/search-results-container.tsx +337 -297
  338. package/src/search-results/features/flights/flight-search-results-self-contained.tsx +0 -3
  339. package/src/search-results/features/hotels/hotel-search-results-self-contained.tsx +0 -3
  340. package/src/search-results/store/search-results-slice.ts +7 -1
  341. package/src/search-results/types.ts +2 -2
  342. package/src/shared/translations/ar-SA.json +249 -0
  343. package/src/shared/translations/da-DK.json +249 -0
  344. package/src/shared/translations/de-DE.json +249 -0
  345. package/src/shared/translations/en-GB.json +3 -1
  346. package/src/shared/translations/es-ES.json +249 -0
  347. package/src/shared/translations/fr-BE.json +3 -1
  348. package/src/shared/translations/fr-FR.json +249 -0
  349. package/src/shared/translations/is-IS.json +249 -0
  350. package/src/shared/translations/it-IT.json +249 -0
  351. package/src/shared/translations/ja-JP.json +249 -0
  352. package/src/shared/translations/nl-BE.json +3 -1
  353. package/src/shared/translations/nl-NL.json +249 -0
  354. package/src/shared/translations/no-NO.json +249 -0
  355. package/src/shared/translations/pl-PL.json +249 -0
  356. package/src/shared/translations/pt-PT.json +249 -0
  357. package/src/shared/translations/sv-SE.json +249 -0
  358. package/src/shared/utils/localization-util.ts +107 -12
  359. package/styles/components/_form.scss +6 -0
  360. package/styles/components/_search.scss +1 -0
@@ -1,297 +1,337 @@
1
- import React, { useContext, useEffect, useState } from 'react';
2
- import { useDispatch, useSelector } from 'react-redux';
3
- import { SearchResultsRootState } from '../../store/search-results-store';
4
- import SearchResultsConfigurationContext from '../../search-results-configuration-context';
5
-
6
- import { resetFilters, setSortKey, setResults, setIsLoading } from '../../store/search-results-slice';
7
- import { Filter, SortingOption } from '../../types';
8
- import useMediaQuery from '../../../shared/utils/use-media-query-util';
9
- import Filters from '../filters/filters';
10
- import ItemPicker from '../item-picker';
11
-
12
- import { TideClientConfig, search } from '@qite/tide-client';
13
- import { BookingPackageDestination, BookingPackagePax, BookingPackageRequestRoom, BookingPackageSearchRequest } from '@qite/tide-client/build/types';
14
- import { getDateFromParams, getNumberFromParams, getRoomsFromParams } from '../../../shared/utils/query-string-util';
15
- import { range } from 'lodash';
16
- import { Room } from '../../../booking-wizard/types';
17
- import Icon from '../icon';
18
- import Itinerary from '../itinerary';
19
- import TabViews from '../tab-views';
20
- import HotelAccommodationResults from '../hotel/hotel-accommodation-results';
21
- import RoundTripResults from '../round-trip/round-trip-results';
22
- import { enrichFiltersWithResults } from '../filters/utility';
23
-
24
- const SearchResultsContainer: React.FC = () => {
25
- const isMobile = useMediaQuery('(max-width: 1200px)');
26
- const dispatch = useDispatch();
27
- const context = useContext(SearchResultsConfigurationContext);
28
- const { results, isLoading, filters, sortKey } = useSelector((state: SearchResultsRootState) => state.searchResults);
29
-
30
- const [searchTrigger, setSearchTrigger] = useState(0);
31
- const [initialFiltersSet, setInitialFiltersSet] = useState(false);
32
- const [initialFilters, setInitialFilters] = useState<Filter[]>([]);
33
-
34
- useEffect(() => {
35
- const runSearch = async () => {
36
- dispatch(setIsLoading(true));
37
- try {
38
- if (!context) {
39
- return;
40
- }
41
-
42
- const params = new URLSearchParams(location.search);
43
- let from = getDateFromParams(params, 'from');
44
- let to = getDateFromParams(params, 'to');
45
- const rooms = getRoomsFromParams(params, 'rooms');
46
- let country = getNumberFromParams(params, 'country');
47
- let region = getNumberFromParams(params, 'region');
48
- let oord = getNumberFromParams(params, 'oord');
49
- let city = getNumberFromParams(params, 'location');
50
-
51
- // temp hardcoded params
52
- if (!from || !to) {
53
- from = '2026-04-07';
54
- to = '2026-04-13';
55
- }
56
- if (!country && !region && !oord && !city) {
57
- region = 1;
58
- }
59
-
60
- if (typeof window !== 'undefined') {
61
- window.scrollTo(0, 0);
62
- }
63
-
64
- let destinationId: number | null = null;
65
- let destinationIsCountry = false;
66
- let destinationIsRegion = false;
67
- let destinationIsOord = false;
68
- let destinationIsLocation = false;
69
-
70
- if (country) {
71
- destinationId = country;
72
- destinationIsCountry = true;
73
- } else if (region) {
74
- destinationId = region;
75
- destinationIsRegion = true;
76
- } else if (oord) {
77
- destinationId = oord;
78
- destinationIsOord = true;
79
- } else if (city) {
80
- destinationId = city;
81
- destinationIsLocation = true;
82
- }
83
-
84
- const searchRequest = {
85
- officeId: 1,
86
- payload: {
87
- catalogueIds: context.tideConnection.catalogueIds,
88
- serviceType:
89
- context?.type === 'hotel' || context?.type === 'hotel-flight' ? 3 : context?.type === 'flight' ? 7 : context?.type === 'roundTrip' ? 1 : 0,
90
- searchType: 0,
91
- destination: {
92
- id: Number(destinationId),
93
- isCountry: destinationIsCountry,
94
- isRegion: destinationIsRegion,
95
- isOord: destinationIsOord,
96
- isLocation: destinationIsLocation
97
- } as BookingPackageDestination,
98
- rooms: getRequestRooms(rooms),
99
- fromDate: from,
100
- toDate: to,
101
- earliestFromOffset: 0,
102
- latestToOffset: 0,
103
- includeFlights: true,
104
- regimeCodes:
105
- filters
106
- .find((f) => f.property === 'regime')
107
- ?.options?.filter((o) => o.isChecked)
108
- .flatMap((o) => o.value) || [],
109
- minPrice: filters.find((f) => f.property === 'price')?.selectedMin,
110
- maxPrice: filters.find((f) => f.property === 'price')?.selectedMax,
111
- useExactDates: true,
112
- onlyCachedResults: false,
113
- includeAllAllotments: true
114
- } as BookingPackageSearchRequest
115
- };
116
-
117
- const config: TideClientConfig = {
118
- host: context.tideConnection.host,
119
- apiKey: context.tideConnection.apiKey
120
- };
121
-
122
- const packageSearchResults = await search(config, searchRequest);
123
-
124
- console.log('Search results', packageSearchResults);
125
-
126
- const enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters);
127
- if (!initialFiltersSet) {
128
- dispatch(resetFilters(enrichedFilters));
129
- setInitialFilters(enrichedFilters);
130
- setInitialFiltersSet(true);
131
- }
132
-
133
- dispatch(setResults({ results: packageSearchResults }));
134
- dispatch(setIsLoading(false));
135
- } catch (err) {
136
- console.error('Search failed', err);
137
- dispatch(setIsLoading(false));
138
- }
139
- };
140
-
141
- runSearch();
142
- }, [location.search, searchTrigger]);
143
-
144
- const getRequestRooms = (rooms: Room[] | null) => {
145
- if (!rooms) {
146
- // Fall back to 2 adults
147
- var room = { index: 0, pax: [] } as BookingPackageRequestRoom;
148
- range(0, 2).forEach(() => {
149
- room.pax.push({
150
- age: 30
151
- } as BookingPackagePax);
152
- });
153
- return [room];
154
- }
155
-
156
- const requestRooms = rooms?.map((x, i) => {
157
- var room = { index: i, pax: [] } as BookingPackageRequestRoom;
158
- range(0, x.adults).forEach(() => {
159
- room.pax.push({
160
- age: 30
161
- } as BookingPackagePax);
162
- });
163
- x.childAges.forEach((x) => {
164
- room.pax.push({
165
- age: x
166
- } as BookingPackagePax);
167
- });
168
- return room;
169
- });
170
-
171
- return requestRooms;
172
- };
173
-
174
- const [isMobileFiltersOpen, setIsMobileFiltersOpen] = useState(false);
175
-
176
- const handleSortChange = (newSortKey: string) => {
177
- console.log('Sort changed to:', newSortKey);
178
- dispatch(setSortKey(newSortKey));
179
- };
180
-
181
- const handleSetIsMobileFiltersOpen = () => {
182
- setIsMobileFiltersOpen(!isMobileFiltersOpen);
183
- };
184
-
185
- useEffect(() => {
186
- if (typeof document !== 'undefined') {
187
- document.body.classList.toggle('has-overlay', isMobileFiltersOpen);
188
- }
189
- }, [isMobileFiltersOpen]);
190
-
191
- // const getFilteredResults = () => {
192
- // const filteredResults = results.filter((result) => {
193
- // // Apply frontend filters here
194
-
195
- // const ratingFilter = filters.find((f) => f.property === 'rating' && f.selectedRating != null);
196
- // if (ratingFilter) {
197
- // const minRating = ratingFilter.selectedRating!;
198
- // const hotelStars = result.stars ?? 0;
199
- // if (hotelStars < minRating) {
200
- // return false;
201
- // }
202
- // }
203
-
204
- // // Add more frontend filters if needed
205
- // return true;
206
- // });
207
-
208
- // return filteredResults;
209
- // };
210
-
211
- const sortingOptions: SortingOption[] = [
212
- { key: 'price-asc', label: 'Price: Low to High' },
213
- { key: 'price-desc', label: 'Price: High to Low' },
214
- { key: 'departure-date', label: 'Departure Date' }
215
- ];
216
-
217
- return (
218
- <div id="tide-booking" className="search__bg">
219
- {context && (
220
- <div className="search">
221
- <div className="search__container">
222
- {context.showFilters && (
223
- <Filters
224
- filters={filters}
225
- isMobileFiltersOpen={isMobileFiltersOpen}
226
- handleSetIsMobileFiltersOpen={handleSetIsMobileFiltersOpen}
227
- handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
228
- isLoading={isLoading}
229
- />
230
- )}
231
- {context.type === 'hotel-flight' && (
232
- <Itinerary isMobileFiltersOpen={isMobileFiltersOpen} handleSetIsMobileFiltersOpen={handleSetIsMobileFiltersOpen} isLoading={isLoading} />
233
- )}
234
- {/* ---------------- Results ---------------- */}
235
- <div className="search__results">
236
- {isMobile && (
237
- <div className="search__result-row">
238
- <div className="cta cta--filter" onClick={() => setIsMobileFiltersOpen(true)}>
239
- <Icon name="ui-filter" className="mobile-filters-button__icon" height={16} />
240
- {context.translations?.filters}
241
- </div>
242
- {sortingOptions && sortingOptions.length > 0 && (
243
- <ItemPicker
244
- items={sortingOptions}
245
- selection={sortKey || undefined}
246
- label="Sort by"
247
- placeholder="Sort by"
248
- classModifier="travel-class-picker__items"
249
- onPick={handleSortChange}
250
- />
251
- )}
252
- </div>
253
- )}
254
-
255
- <div className="search__result-row">
256
- <span className="search__result-row-text">
257
- {!isLoading && (
258
- <>
259
- {results?.length ?? 4} {context.translations?.totalResultsLabel}
260
- </>
261
- )}
262
- </span>
263
- {!isMobile && sortingOptions && sortingOptions.length > 0 && (
264
- <div className="search__result-row-filter">
265
- <ItemPicker
266
- items={sortingOptions}
267
- selection={sortKey || undefined}
268
- label="Sort by"
269
- placeholder="Sort by"
270
- classModifier="travel-class-picker__items"
271
- onPick={handleSortChange}
272
- />
273
- </div>
274
- )}
275
- </div>
276
-
277
- <div className="search__results__wrapper">
278
- {context.showTabViews && <TabViews />}
279
-
280
- {context.showRoundTripResults && <RoundTripResults />}
281
-
282
- {/* {context.showFlightResults && <FlightResults isDeparture={true} />} */}
283
-
284
- {context.showHotelAccommodationResults && <HotelAccommodationResults isLoading={isLoading} context={context} />}
285
- {/* {context.showFlightAccommodationResults && <FlightAccommodationResults />} */}
286
-
287
- {/* {context.showFlightResults && <FlightResults isDeparture={false} />} */}
288
- </div>
289
- </div>
290
- </div>
291
- </div>
292
- )}
293
- </div>
294
- );
295
- };
296
-
297
- export default SearchResultsContainer;
1
+ import React, { useContext, useEffect, useState } from 'react';
2
+ import { useDispatch, useSelector } from 'react-redux';
3
+ import { SearchResultsRootState } from '../../store/search-results-store';
4
+ import SearchResultsConfigurationContext from '../../search-results-configuration-context';
5
+
6
+ import { resetFilters, setSortKey, setResults, setIsLoading, setSelectedHotel } from '../../store/search-results-slice';
7
+ import { Filter, SortingOption } from '../../types';
8
+ import useMediaQuery from '../../../shared/utils/use-media-query-util';
9
+ import Filters from '../filters/filters';
10
+ import ItemPicker from '../item-picker';
11
+
12
+ import { TideClientConfig, details, search } from '@qite/tide-client';
13
+ import {
14
+ BookingPackageDestination,
15
+ BookingPackageDetailsRequest,
16
+ BookingPackagePax,
17
+ BookingPackageRequest,
18
+ BookingPackageRequestRoom,
19
+ BookingPackageSearchRequest
20
+ } from '@qite/tide-client/build/types';
21
+ import { getDateFromParams, getNumberFromParams, getRoomsFromParams } from '../../../shared/utils/query-string-util';
22
+ import { range } from 'lodash';
23
+ import { Room } from '../../../booking-wizard/types';
24
+ import Icon from '../icon';
25
+ import Itinerary from '../itinerary';
26
+ import TabViews from '../tab-views';
27
+ import HotelAccommodationResults from '../hotel/hotel-accommodation-results';
28
+ import RoundTripResults from '../round-trip/round-trip-results';
29
+ import { enrichFiltersWithResults } from '../filters/utility';
30
+
31
+ const SearchResultsContainer: React.FC = () => {
32
+ const isMobile = useMediaQuery('(max-width: 1200px)');
33
+ const dispatch = useDispatch();
34
+ const context = useContext(SearchResultsConfigurationContext);
35
+ const { results, isLoading, filters, sortKey, selectedHotelId } = useSelector((state: SearchResultsRootState) => state.searchResults);
36
+
37
+ const [searchTrigger, setSearchTrigger] = useState(0);
38
+ const [initialFiltersSet, setInitialFiltersSet] = useState(false);
39
+ const [initialFilters, setInitialFilters] = useState<Filter[]>([]);
40
+
41
+ useEffect(() => {
42
+ const runSearch = async () => {
43
+ dispatch(setIsLoading(true));
44
+ try {
45
+ if (!context) {
46
+ return;
47
+ }
48
+
49
+ const params = new URLSearchParams(location.search);
50
+ let from = getDateFromParams(params, 'fromDate');
51
+ let to = getDateFromParams(params, 'toDate');
52
+ const rooms = getRoomsFromParams(params, 'rooms');
53
+ let country = getNumberFromParams(params, 'country');
54
+ let region = getNumberFromParams(params, 'region');
55
+ let oord = getNumberFromParams(params, 'oord');
56
+ let city = getNumberFromParams(params, 'location');
57
+
58
+ // temp hardcoded params
59
+ if (!from || !to) {
60
+ from = '2026-04-07';
61
+ to = '2026-04-13';
62
+ }
63
+ if (!country && !region && !oord && !city) {
64
+ region = 1;
65
+ }
66
+
67
+ if (typeof window !== 'undefined') {
68
+ window.scrollTo(0, 0);
69
+ }
70
+
71
+ let destinationId: number | null = null;
72
+ let destinationIsCountry = false;
73
+ let destinationIsRegion = false;
74
+ let destinationIsOord = false;
75
+ let destinationIsLocation = false;
76
+
77
+ if (country) {
78
+ destinationId = country;
79
+ destinationIsCountry = true;
80
+ } else if (region) {
81
+ destinationId = region;
82
+ destinationIsRegion = true;
83
+ } else if (oord) {
84
+ destinationId = oord;
85
+ destinationIsOord = true;
86
+ } else if (city) {
87
+ destinationId = city;
88
+ destinationIsLocation = true;
89
+ }
90
+
91
+ const searchRequest: BookingPackageRequest<BookingPackageSearchRequest> = {
92
+ officeId: 1,
93
+ payload: {
94
+ catalogueIds: context.tideConnection.catalogueIds ?? [],
95
+ serviceType:
96
+ context?.type === 'hotel' || context?.type === 'hotel-flight' ? 3 : context?.type === 'flight' ? 7 : context?.type === 'roundTrip' ? 1 : 0,
97
+ searchType: 0,
98
+ destination: {
99
+ id: Number(destinationId),
100
+ isCountry: destinationIsCountry,
101
+ isRegion: destinationIsRegion,
102
+ isOord: destinationIsOord,
103
+ isLocation: destinationIsLocation
104
+ } as BookingPackageDestination,
105
+ rooms: getRequestRooms(rooms),
106
+ fromDate: from,
107
+ toDate: to,
108
+ earliestFromOffset: 0,
109
+ latestToOffset: 0,
110
+ includeFlights: true,
111
+ regimeCodes:
112
+ filters
113
+ .find((f) => f.property === 'regime')
114
+ ?.options?.filter((o) => o.isChecked)
115
+ .flatMap((o) => o.value.toString()) || [],
116
+ minPrice: filters.find((f) => f.property === 'price')?.selectedMin,
117
+ maxPrice: filters.find((f) => f.property === 'price')?.selectedMax,
118
+ useExactDates: true,
119
+ onlyCachedResults: false,
120
+ includeAllAllotments: true
121
+ }
122
+ };
123
+
124
+ const config: TideClientConfig = {
125
+ host: context.tideConnection.host,
126
+ apiKey: context.tideConnection.apiKey
127
+ };
128
+
129
+ const packageSearchResults = await search(config, searchRequest);
130
+
131
+ console.log('Search results', packageSearchResults);
132
+
133
+ const enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters);
134
+ if (!initialFiltersSet) {
135
+ dispatch(resetFilters(enrichedFilters));
136
+ setInitialFilters(enrichedFilters);
137
+ setInitialFiltersSet(true);
138
+ }
139
+
140
+ dispatch(setResults({ results: packageSearchResults }));
141
+ if (packageSearchResults?.length > 0) {
142
+ dispatch(setSelectedHotel(packageSearchResults[0].productId));
143
+ }
144
+ dispatch(setIsLoading(false));
145
+ } catch (err) {
146
+ console.error('Search failed', err);
147
+ dispatch(setIsLoading(false));
148
+ }
149
+ };
150
+
151
+ runSearch();
152
+ }, [location.search, searchTrigger]);
153
+
154
+ useEffect(() => {
155
+ const fetchPackageDetails = async () => {
156
+ if (!selectedHotelId || !context) return;
157
+
158
+ try {
159
+ const config: TideClientConfig = {
160
+ host: context.tideConnection.host,
161
+ apiKey: context.tideConnection.apiKey
162
+ };
163
+
164
+ const selectedItem = results.find((r) => r.productId === selectedHotelId);
165
+ if (!selectedItem) return;
166
+
167
+ const params = new URLSearchParams(location.search);
168
+ const rooms = getRoomsFromParams(params, 'rooms');
169
+ const requestRooms = getRequestRooms(rooms);
170
+
171
+ const detailsRequest: BookingPackageRequest<BookingPackageDetailsRequest> = {
172
+ officeId: 1,
173
+ payload: {
174
+ catalogueId: selectedItem.catalogueId,
175
+ rooms: requestRooms,
176
+ searchType: 0, // same as search
177
+ productCode: selectedItem.code,
178
+ fromDate: selectedItem.fromDate,
179
+ toDate: selectedItem.toDate,
180
+ includeFlights: true,
181
+ includeHotels: true,
182
+ includePaxTypes: true,
183
+ checkExternalAvailability: true,
184
+ expectedPrice: selectedItem.price,
185
+ duration: null,
186
+ preNights: null,
187
+ postNights: null
188
+ }
189
+ };
190
+
191
+ const detailsResponse = await details(config, detailsRequest);
192
+
193
+ console.log('Package details:', detailsResponse);
194
+
195
+ // TODO: store flights / details in redux
196
+ // dispatch(setSelectedHotelDetails(details));
197
+ } catch (err) {
198
+ console.error('Failed to fetch package details', err);
199
+ }
200
+ };
201
+
202
+ fetchPackageDetails();
203
+ }, [selectedHotelId]);
204
+
205
+ const getRequestRooms = (rooms: Room[] | null) => {
206
+ if (!rooms) {
207
+ // Fall back to 2 adults
208
+ var room = { index: 0, pax: [] } as BookingPackageRequestRoom;
209
+ range(0, 2).forEach(() => {
210
+ room.pax.push({
211
+ age: 30
212
+ } as BookingPackagePax);
213
+ });
214
+ return [room];
215
+ }
216
+
217
+ const requestRooms = rooms?.map((x, i) => {
218
+ var room = { index: i, pax: [] } as BookingPackageRequestRoom;
219
+ range(0, x.adults).forEach(() => {
220
+ room.pax.push({
221
+ age: 30
222
+ } as BookingPackagePax);
223
+ });
224
+ x.childAges.forEach((x) => {
225
+ room.pax.push({
226
+ age: x
227
+ } as BookingPackagePax);
228
+ });
229
+ return room;
230
+ });
231
+
232
+ return requestRooms;
233
+ };
234
+
235
+ const [isMobileFiltersOpen, setIsMobileFiltersOpen] = useState(false);
236
+
237
+ const handleSortChange = (newSortKey: string) => {
238
+ dispatch(setSortKey(newSortKey));
239
+ };
240
+
241
+ const handleSetIsMobileFiltersOpen = () => {
242
+ setIsMobileFiltersOpen(!isMobileFiltersOpen);
243
+ };
244
+
245
+ useEffect(() => {
246
+ if (typeof document !== 'undefined') {
247
+ document.body.classList.toggle('has-overlay', isMobileFiltersOpen);
248
+ }
249
+ }, [isMobileFiltersOpen]);
250
+
251
+ const sortingOptions: SortingOption[] = [
252
+ { key: 'price-asc', label: 'Price: Low to High' },
253
+ { key: 'price-desc', label: 'Price: High to Low' },
254
+ { key: 'departure-date', label: 'Departure Date' }
255
+ ];
256
+
257
+ return (
258
+ <div id="tide-booking" className="search__bg">
259
+ {context && (
260
+ <div className="search">
261
+ <div className="search__container">
262
+ {context.showFilters && (
263
+ <Filters
264
+ filters={filters}
265
+ isMobileFiltersOpen={isMobileFiltersOpen}
266
+ handleSetIsMobileFiltersOpen={handleSetIsMobileFiltersOpen}
267
+ handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
268
+ isLoading={isLoading}
269
+ />
270
+ )}
271
+ {context.type === 'hotel-flight' && (
272
+ <Itinerary isMobileFiltersOpen={isMobileFiltersOpen} handleSetIsMobileFiltersOpen={handleSetIsMobileFiltersOpen} isLoading={isLoading} />
273
+ )}
274
+ {/* ---------------- Results ---------------- */}
275
+ <div className="search__results">
276
+ {isMobile && (
277
+ <div className="search__result-row">
278
+ <div className="cta cta--filter" onClick={() => setIsMobileFiltersOpen(true)}>
279
+ <Icon name="ui-filter" className="mobile-filters-button__icon" height={16} />
280
+ {context.translations?.filters}
281
+ </div>
282
+ {sortingOptions && sortingOptions.length > 0 && (
283
+ <ItemPicker
284
+ items={sortingOptions}
285
+ selection={sortKey || undefined}
286
+ label="Sort by"
287
+ placeholder="Sort by"
288
+ classModifier="travel-class-picker__items"
289
+ onPick={handleSortChange}
290
+ />
291
+ )}
292
+ </div>
293
+ )}
294
+
295
+ <div className="search__result-row">
296
+ <span className="search__result-row-text">
297
+ {!isLoading && (
298
+ <>
299
+ {results?.length ?? 4} {context.translations?.totalResultsLabel}
300
+ </>
301
+ )}
302
+ </span>
303
+ {!isMobile && sortingOptions && sortingOptions.length > 0 && (
304
+ <div className="search__result-row-filter">
305
+ <ItemPicker
306
+ items={sortingOptions}
307
+ selection={sortKey || undefined}
308
+ label="Sort by"
309
+ placeholder="Sort by"
310
+ classModifier="travel-class-picker__items"
311
+ onPick={handleSortChange}
312
+ />
313
+ </div>
314
+ )}
315
+ </div>
316
+
317
+ <div className="search__results__wrapper">
318
+ {context.showTabViews && <TabViews />}
319
+
320
+ {context.showRoundTripResults && <RoundTripResults />}
321
+
322
+ {/* {context.showFlightResults && <FlightResults isDeparture={true} />} */}
323
+
324
+ {context.showHotelAccommodationResults && <HotelAccommodationResults isLoading={isLoading} context={context} />}
325
+ {/* {context.showFlightAccommodationResults && <FlightAccommodationResults />} */}
326
+
327
+ {/* {context.showFlightResults && <FlightResults isDeparture={false} />} */}
328
+ </div>
329
+ </div>
330
+ </div>
331
+ </div>
332
+ )}
333
+ </div>
334
+ );
335
+ };
336
+
337
+ export default SearchResultsContainer;