@qite/tide-booking-component 1.4.91 → 1.4.93

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 (591) hide show
  1. package/.prettierrc +9 -9
  2. package/.vs/ProjectSettings.json +3 -3
  3. package/.vs/VSWorkspaceState.json +5 -5
  4. package/README.md +24 -24
  5. package/build/build-cjs/index.js +29559 -48609
  6. package/build/build-cjs/src/booking-product/components/age-select.d.ts +3 -3
  7. package/build/build-cjs/src/booking-product/components/amount-input.d.ts +5 -5
  8. package/build/build-cjs/src/booking-product/components/date-range-picker/calendar-day.d.ts +8 -8
  9. package/build/build-cjs/src/booking-product/components/date-range-picker/calendar.d.ts +14 -14
  10. package/build/build-cjs/src/booking-product/components/date-range-picker/index.d.ts +19 -16
  11. package/build/build-cjs/src/booking-product/components/dates.d.ts +8 -8
  12. package/build/build-cjs/src/booking-product/components/footer.d.ts +5 -5
  13. package/build/build-cjs/src/booking-product/components/header.d.ts +6 -6
  14. package/build/build-cjs/src/booking-product/components/icon.d.ts +5 -5
  15. package/build/build-cjs/src/booking-product/components/list-view.d.ts +2 -2
  16. package/build/build-cjs/src/booking-product/components/product.d.ts +4 -4
  17. package/build/build-cjs/src/booking-product/components/rating.d.ts +1 -1
  18. package/build/build-cjs/src/booking-product/components/rooms.d.ts +4 -4
  19. package/build/build-cjs/src/booking-product/constants.d.ts +1 -1
  20. package/build/build-cjs/src/booking-product/index.d.ts +4 -4
  21. package/build/build-cjs/src/booking-product/settings-context.d.ts +2 -1
  22. package/build/build-cjs/src/booking-product/types.d.ts +21 -21
  23. package/build/build-cjs/src/booking-product/utils/api.d.ts +2 -11
  24. package/build/build-cjs/src/booking-product/utils/price.d.ts +1 -10
  25. package/build/build-cjs/src/booking-wizard/api-settings-slice.d.ts +2 -3
  26. package/build/build-cjs/src/booking-wizard/components/icon.d.ts +5 -5
  27. package/build/build-cjs/src/booking-wizard/components/labeled-input.d.ts +13 -13
  28. package/build/build-cjs/src/booking-wizard/components/labeled-select.d.ts +16 -16
  29. package/build/build-cjs/src/booking-wizard/components/message.d.ts +4 -4
  30. package/build/build-cjs/src/booking-wizard/components/multi-range-filter.d.ts +6 -6
  31. package/build/build-cjs/src/booking-wizard/components/phone-input.d.ts +11 -11
  32. package/build/build-cjs/src/booking-wizard/components/print-offer-button.d.ts +11 -11
  33. package/build/build-cjs/src/booking-wizard/components/product-card.d.ts +3 -3
  34. package/build/build-cjs/src/booking-wizard/components/step-indicator.d.ts +1 -1
  35. package/build/build-cjs/src/booking-wizard/components/step-route.d.ts +3 -3
  36. package/build/build-cjs/src/booking-wizard/features/booking/api.d.ts +7 -26
  37. package/build/build-cjs/src/booking-wizard/features/booking/booking-self-contained.d.ts +3 -3
  38. package/build/build-cjs/src/booking-wizard/features/booking/booking-slice.d.ts +42 -100
  39. package/build/build-cjs/src/booking-wizard/features/booking/booking.d.ts +3 -3
  40. package/build/build-cjs/src/booking-wizard/features/booking/constants.d.ts +1 -8
  41. package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +479 -641
  42. package/build/build-cjs/src/booking-wizard/features/confirmation/confirmation.d.ts +2 -1
  43. package/build/build-cjs/src/booking-wizard/features/error/error.d.ts +2 -1
  44. package/build/build-cjs/src/booking-wizard/features/flight-options/flight-filter.d.ts +3 -3
  45. package/build/build-cjs/src/booking-wizard/features/flight-options/flight-option-flight.d.ts +2 -2
  46. package/build/build-cjs/src/booking-wizard/features/flight-options/flight-option.d.ts +4 -4
  47. package/build/build-cjs/src/booking-wizard/features/flight-options/flight-utils.d.ts +2 -9
  48. package/build/build-cjs/src/booking-wizard/features/flight-options/index.d.ts +2 -1
  49. package/build/build-cjs/src/booking-wizard/features/price-details/price-details-api.d.ts +1 -6
  50. package/build/build-cjs/src/booking-wizard/features/price-details/price-details-slice.d.ts +9 -14
  51. package/build/build-cjs/src/booking-wizard/features/price-details/selectors.d.ts +287 -302
  52. package/build/build-cjs/src/booking-wizard/features/product-options/none-option.d.ts +3 -3
  53. package/build/build-cjs/src/booking-wizard/features/product-options/option-booking-airline-group.d.ts +2 -2
  54. package/build/build-cjs/src/booking-wizard/features/product-options/option-booking-group.d.ts +6 -6
  55. package/build/build-cjs/src/booking-wizard/features/product-options/option-item.d.ts +5 -5
  56. package/build/build-cjs/src/booking-wizard/features/product-options/option-pax-card.d.ts +4 -4
  57. package/build/build-cjs/src/booking-wizard/features/product-options/option-pax-group.d.ts +7 -7
  58. package/build/build-cjs/src/booking-wizard/features/product-options/option-room.d.ts +5 -5
  59. package/build/build-cjs/src/booking-wizard/features/product-options/option-unit-group.d.ts +7 -7
  60. package/build/build-cjs/src/booking-wizard/features/product-options/option-units-card.d.ts +3 -3
  61. package/build/build-cjs/src/booking-wizard/features/product-options/options-form.d.ts +2 -1
  62. package/build/build-cjs/src/booking-wizard/features/room-options/index.d.ts +2 -1
  63. package/build/build-cjs/src/booking-wizard/features/room-options/room-utils.d.ts +6 -19
  64. package/build/build-cjs/src/booking-wizard/features/room-options/room.d.ts +6 -6
  65. package/build/build-cjs/src/booking-wizard/features/room-options/traveler-rooms.d.ts +3 -3
  66. package/build/build-cjs/src/booking-wizard/features/sidebar/index.d.ts +2 -2
  67. package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar-flight.d.ts +2 -2
  68. package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar-util.d.ts +2 -4
  69. package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar.d.ts +23 -23
  70. package/build/build-cjs/src/booking-wizard/features/summary/summary-booking-option-pax.d.ts +1 -1
  71. package/build/build-cjs/src/booking-wizard/features/summary/summary-booking-option-unit.d.ts +1 -1
  72. package/build/build-cjs/src/booking-wizard/features/summary/summary-flight.d.ts +2 -2
  73. package/build/build-cjs/src/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +1 -1
  74. package/build/build-cjs/src/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +1 -1
  75. package/build/build-cjs/src/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +1 -1
  76. package/build/build-cjs/src/booking-wizard/features/summary/summary-slice.d.ts +3 -3
  77. package/build/build-cjs/src/booking-wizard/features/summary/summary.d.ts +2 -1
  78. package/build/build-cjs/src/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +75 -75
  79. package/build/build-cjs/src/booking-wizard/features/travelers-form/travelers-form-util.d.ts +4 -4
  80. package/build/build-cjs/src/booking-wizard/features/travelers-form/travelers-form.d.ts +2 -1
  81. package/build/build-cjs/src/booking-wizard/features/travelers-form/type-ahead-input.d.ts +11 -11
  82. package/build/build-cjs/src/booking-wizard/features/travelers-form/validate-form.d.ts +1 -8
  83. package/build/build-cjs/src/booking-wizard/index.d.ts +6 -6
  84. package/build/build-cjs/src/booking-wizard/settings-context.d.ts +2 -1
  85. package/build/build-cjs/src/booking-wizard/store.d.ts +22 -40
  86. package/build/build-cjs/src/booking-wizard/types.d.ts +239 -239
  87. package/build/build-cjs/src/booking-wizard/use-offer-printer.d.ts +8 -8
  88. package/build/build-cjs/src/content/components/LanguageSwitcher.d.ts +5 -5
  89. package/build/build-cjs/src/content/components/accordion.d.ts +4 -4
  90. package/build/build-cjs/src/content/components/breadcrumb.d.ts +7 -7
  91. package/build/build-cjs/src/content/components/faq.d.ts +4 -4
  92. package/build/build-cjs/src/content/components/gallery.d.ts +6 -6
  93. package/build/build-cjs/src/content/components/icon.d.ts +5 -5
  94. package/build/build-cjs/src/content/components/image-with-text.d.ts +18 -18
  95. package/build/build-cjs/src/content/components/slider.d.ts +5 -5
  96. package/build/build-cjs/src/content/featured-trips/types.d.ts +8 -8
  97. package/build/build-cjs/src/content/features/content-page/content-page-self-contained.d.ts +1 -1
  98. package/build/build-cjs/src/content/footer/types.d.ts +17 -17
  99. package/build/build-cjs/src/content/header/types.d.ts +20 -23
  100. package/build/build-cjs/src/content/image-card-grid/types.d.ts +8 -8
  101. package/build/build-cjs/src/content/image-with-text-section/types.d.ts +15 -15
  102. package/build/build-cjs/src/content/login/login-services.d.ts +1 -6
  103. package/build/build-cjs/src/content/login/types.d.ts +19 -19
  104. package/build/build-cjs/src/content/navbar/placeholderData.d.ts +2 -2
  105. package/build/build-cjs/src/content/navbar/types.d.ts +22 -22
  106. package/build/build-cjs/src/index.d.ts +1 -17
  107. package/build/build-cjs/src/qsm/components/date-range-picker/calendar-day.d.ts +7 -7
  108. package/build/build-cjs/src/qsm/components/date-range-picker/calendar.d.ts +18 -18
  109. package/build/build-cjs/src/qsm/components/date-range-picker/index.d.ts +5 -5
  110. package/build/build-cjs/src/qsm/components/double-search-input-group/index.d.ts +2 -2
  111. package/build/build-cjs/src/qsm/components/icon.d.ts +5 -5
  112. package/build/build-cjs/src/qsm/components/item-picker/index.d.ts +7 -7
  113. package/build/build-cjs/src/qsm/components/search-input/index.d.ts +9 -9
  114. package/build/build-cjs/src/qsm/components/search-input-group/index.d.ts +7 -7
  115. package/build/build-cjs/src/qsm/index.d.ts +1 -1
  116. package/build/build-cjs/src/qsm/store/qsm-slice.d.ts +58 -110
  117. package/build/build-cjs/src/qsm/store/qsm-store.d.ts +7 -20
  118. package/build/build-cjs/src/qsm/types.d.ts +59 -59
  119. package/build/build-cjs/src/search-results/components/filters/filters.d.ts +5 -5
  120. package/build/build-cjs/src/search-results/components/filters/flight-filters.d.ts +3 -3
  121. package/build/build-cjs/src/search-results/components/flight/flight-banner.d.ts +2 -2
  122. package/build/build-cjs/src/search-results/components/flight/flight-card.d.ts +1 -1
  123. package/build/build-cjs/src/search-results/components/flight/flight-leg.d.ts +1 -1
  124. package/build/build-cjs/src/search-results/components/flight/flight-path.d.ts +1 -1
  125. package/build/build-cjs/src/search-results/components/flight/flight-results.d.ts +2 -2
  126. package/build/build-cjs/src/search-results/components/flight/flight-search-context/index.d.ts +29 -29
  127. package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +5 -5
  128. package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-selection.d.ts +1 -1
  129. package/build/build-cjs/src/search-results/components/flight/flight-selection/index.d.ts +2 -2
  130. package/build/build-cjs/src/search-results/components/flight/flight-selection/paired-flight-option.d.ts +1 -1
  131. package/build/build-cjs/src/search-results/components/flight/flight-selection/paired-flight-selection.d.ts +1 -1
  132. package/build/build-cjs/src/search-results/components/group-tour/group-tour-card.d.ts +3 -3
  133. package/build/build-cjs/src/search-results/components/group-tour/group-tour-results.d.ts +1 -1
  134. package/build/build-cjs/src/search-results/components/hotel/hotel-accommodation-results.d.ts +1 -1
  135. package/build/build-cjs/src/search-results/components/hotel/hotel-card.d.ts +2 -2
  136. package/build/build-cjs/src/search-results/components/icon.d.ts +6 -6
  137. package/build/build-cjs/src/search-results/components/item-picker/index.d.ts +8 -8
  138. package/build/build-cjs/src/search-results/components/itinerary/index.d.ts +3 -3
  139. package/build/build-cjs/src/search-results/components/multi-range-filter.d.ts +6 -6
  140. package/build/build-cjs/src/search-results/components/round-trip/round-trip-results.d.ts +2 -1
  141. package/build/build-cjs/src/search-results/components/search-results-container/flight-search-results.d.ts +1 -1
  142. package/build/build-cjs/src/search-results/components/tab-views/index.d.ts +2 -1
  143. package/build/build-cjs/src/search-results/features/flights/flight-search-results-self-contained.d.ts +2 -1
  144. package/build/build-cjs/src/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +2 -1
  145. package/build/build-cjs/src/search-results/features/hotels/hotel-search-results-self-contained.d.ts +2 -1
  146. package/build/build-cjs/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +2 -1
  147. package/build/build-cjs/src/search-results/index.d.ts +1 -1
  148. package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +26 -63
  149. package/build/build-cjs/src/search-results/store/search-results-store.d.ts +7 -20
  150. package/build/build-cjs/src/search-results/types.d.ts +104 -103
  151. package/build/build-cjs/src/search-results/utils/flight-utils.d.ts +1 -6
  152. package/build/build-cjs/src/search-results/utils/search-results-utils.d.ts +2 -10
  153. package/build/build-cjs/src/shared/components/flyin/accommodation-flyin.d.ts +3 -3
  154. package/build/build-cjs/src/shared/components/flyin/flights-flyin.d.ts +2 -2
  155. package/build/build-cjs/src/shared/components/flyin/flyin.d.ts +7 -7
  156. package/build/build-cjs/src/shared/components/flyin/group-tour-flyin.d.ts +3 -3
  157. package/build/build-cjs/src/shared/components/icon.d.ts +5 -5
  158. package/build/build-cjs/src/shared/components/loader.d.ts +1 -1
  159. package/build/build-cjs/src/shared/types.d.ts +9 -9
  160. package/build/build-cjs/src/shared/utils/localization-util.d.ts +395 -395
  161. package/build/build-esm/index.js +29536 -48363
  162. package/build/build-esm/src/booking-product/components/age-select.d.ts +3 -3
  163. package/build/build-esm/src/booking-product/components/amount-input.d.ts +5 -5
  164. package/build/build-esm/src/booking-product/components/date-range-picker/calendar-day.d.ts +8 -8
  165. package/build/build-esm/src/booking-product/components/date-range-picker/calendar.d.ts +14 -14
  166. package/build/build-esm/src/booking-product/components/date-range-picker/index.d.ts +19 -16
  167. package/build/build-esm/src/booking-product/components/dates.d.ts +8 -8
  168. package/build/build-esm/src/booking-product/components/footer.d.ts +5 -5
  169. package/build/build-esm/src/booking-product/components/header.d.ts +6 -6
  170. package/build/build-esm/src/booking-product/components/icon.d.ts +5 -5
  171. package/build/build-esm/src/booking-product/components/list-view.d.ts +2 -2
  172. package/build/build-esm/src/booking-product/components/product.d.ts +4 -4
  173. package/build/build-esm/src/booking-product/components/rating.d.ts +1 -1
  174. package/build/build-esm/src/booking-product/components/rooms.d.ts +4 -4
  175. package/build/build-esm/src/booking-product/constants.d.ts +1 -1
  176. package/build/build-esm/src/booking-product/index.d.ts +4 -4
  177. package/build/build-esm/src/booking-product/settings-context.d.ts +2 -1
  178. package/build/build-esm/src/booking-product/types.d.ts +21 -21
  179. package/build/build-esm/src/booking-product/utils/api.d.ts +2 -11
  180. package/build/build-esm/src/booking-product/utils/price.d.ts +1 -10
  181. package/build/build-esm/src/booking-wizard/api-settings-slice.d.ts +2 -3
  182. package/build/build-esm/src/booking-wizard/components/icon.d.ts +5 -5
  183. package/build/build-esm/src/booking-wizard/components/labeled-input.d.ts +13 -13
  184. package/build/build-esm/src/booking-wizard/components/labeled-select.d.ts +16 -16
  185. package/build/build-esm/src/booking-wizard/components/message.d.ts +4 -4
  186. package/build/build-esm/src/booking-wizard/components/multi-range-filter.d.ts +6 -6
  187. package/build/build-esm/src/booking-wizard/components/phone-input.d.ts +11 -11
  188. package/build/build-esm/src/booking-wizard/components/print-offer-button.d.ts +11 -11
  189. package/build/build-esm/src/booking-wizard/components/product-card.d.ts +3 -3
  190. package/build/build-esm/src/booking-wizard/components/step-indicator.d.ts +1 -1
  191. package/build/build-esm/src/booking-wizard/components/step-route.d.ts +3 -3
  192. package/build/build-esm/src/booking-wizard/features/booking/api.d.ts +7 -26
  193. package/build/build-esm/src/booking-wizard/features/booking/booking-self-contained.d.ts +3 -3
  194. package/build/build-esm/src/booking-wizard/features/booking/booking-slice.d.ts +42 -100
  195. package/build/build-esm/src/booking-wizard/features/booking/booking.d.ts +3 -3
  196. package/build/build-esm/src/booking-wizard/features/booking/constants.d.ts +1 -8
  197. package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +479 -641
  198. package/build/build-esm/src/booking-wizard/features/confirmation/confirmation.d.ts +2 -1
  199. package/build/build-esm/src/booking-wizard/features/error/error.d.ts +2 -1
  200. package/build/build-esm/src/booking-wizard/features/flight-options/flight-filter.d.ts +3 -3
  201. package/build/build-esm/src/booking-wizard/features/flight-options/flight-option-flight.d.ts +2 -2
  202. package/build/build-esm/src/booking-wizard/features/flight-options/flight-option.d.ts +4 -4
  203. package/build/build-esm/src/booking-wizard/features/flight-options/flight-utils.d.ts +2 -9
  204. package/build/build-esm/src/booking-wizard/features/flight-options/index.d.ts +2 -1
  205. package/build/build-esm/src/booking-wizard/features/price-details/price-details-api.d.ts +1 -6
  206. package/build/build-esm/src/booking-wizard/features/price-details/price-details-slice.d.ts +9 -14
  207. package/build/build-esm/src/booking-wizard/features/price-details/selectors.d.ts +287 -302
  208. package/build/build-esm/src/booking-wizard/features/product-options/none-option.d.ts +3 -3
  209. package/build/build-esm/src/booking-wizard/features/product-options/option-booking-airline-group.d.ts +2 -2
  210. package/build/build-esm/src/booking-wizard/features/product-options/option-booking-group.d.ts +6 -6
  211. package/build/build-esm/src/booking-wizard/features/product-options/option-item.d.ts +5 -5
  212. package/build/build-esm/src/booking-wizard/features/product-options/option-pax-card.d.ts +4 -4
  213. package/build/build-esm/src/booking-wizard/features/product-options/option-pax-group.d.ts +7 -7
  214. package/build/build-esm/src/booking-wizard/features/product-options/option-room.d.ts +5 -5
  215. package/build/build-esm/src/booking-wizard/features/product-options/option-unit-group.d.ts +7 -7
  216. package/build/build-esm/src/booking-wizard/features/product-options/option-units-card.d.ts +3 -3
  217. package/build/build-esm/src/booking-wizard/features/product-options/options-form.d.ts +2 -1
  218. package/build/build-esm/src/booking-wizard/features/room-options/index.d.ts +2 -1
  219. package/build/build-esm/src/booking-wizard/features/room-options/room-utils.d.ts +6 -19
  220. package/build/build-esm/src/booking-wizard/features/room-options/room.d.ts +6 -6
  221. package/build/build-esm/src/booking-wizard/features/room-options/traveler-rooms.d.ts +3 -3
  222. package/build/build-esm/src/booking-wizard/features/sidebar/index.d.ts +2 -2
  223. package/build/build-esm/src/booking-wizard/features/sidebar/sidebar-flight.d.ts +2 -2
  224. package/build/build-esm/src/booking-wizard/features/sidebar/sidebar-util.d.ts +2 -4
  225. package/build/build-esm/src/booking-wizard/features/sidebar/sidebar.d.ts +23 -23
  226. package/build/build-esm/src/booking-wizard/features/summary/summary-booking-option-pax.d.ts +1 -1
  227. package/build/build-esm/src/booking-wizard/features/summary/summary-booking-option-unit.d.ts +1 -1
  228. package/build/build-esm/src/booking-wizard/features/summary/summary-flight.d.ts +2 -2
  229. package/build/build-esm/src/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +1 -1
  230. package/build/build-esm/src/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +1 -1
  231. package/build/build-esm/src/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +1 -1
  232. package/build/build-esm/src/booking-wizard/features/summary/summary-slice.d.ts +3 -3
  233. package/build/build-esm/src/booking-wizard/features/summary/summary.d.ts +2 -1
  234. package/build/build-esm/src/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +75 -75
  235. package/build/build-esm/src/booking-wizard/features/travelers-form/travelers-form-util.d.ts +4 -4
  236. package/build/build-esm/src/booking-wizard/features/travelers-form/travelers-form.d.ts +2 -1
  237. package/build/build-esm/src/booking-wizard/features/travelers-form/type-ahead-input.d.ts +11 -11
  238. package/build/build-esm/src/booking-wizard/features/travelers-form/validate-form.d.ts +1 -8
  239. package/build/build-esm/src/booking-wizard/index.d.ts +6 -6
  240. package/build/build-esm/src/booking-wizard/settings-context.d.ts +2 -1
  241. package/build/build-esm/src/booking-wizard/store.d.ts +22 -40
  242. package/build/build-esm/src/booking-wizard/types.d.ts +239 -239
  243. package/build/build-esm/src/booking-wizard/use-offer-printer.d.ts +8 -8
  244. package/build/build-esm/src/content/components/LanguageSwitcher.d.ts +5 -5
  245. package/build/build-esm/src/content/components/accordion.d.ts +4 -4
  246. package/build/build-esm/src/content/components/breadcrumb.d.ts +7 -7
  247. package/build/build-esm/src/content/components/faq.d.ts +4 -4
  248. package/build/build-esm/src/content/components/gallery.d.ts +6 -6
  249. package/build/build-esm/src/content/components/icon.d.ts +5 -5
  250. package/build/build-esm/src/content/components/image-with-text.d.ts +18 -18
  251. package/build/build-esm/src/content/components/slider.d.ts +5 -5
  252. package/build/build-esm/src/content/featured-trips/types.d.ts +8 -8
  253. package/build/build-esm/src/content/features/content-page/content-page-self-contained.d.ts +1 -1
  254. package/build/build-esm/src/content/footer/types.d.ts +17 -17
  255. package/build/build-esm/src/content/header/types.d.ts +20 -23
  256. package/build/build-esm/src/content/image-card-grid/types.d.ts +8 -8
  257. package/build/build-esm/src/content/image-with-text-section/types.d.ts +15 -15
  258. package/build/build-esm/src/content/login/login-services.d.ts +1 -6
  259. package/build/build-esm/src/content/login/types.d.ts +19 -19
  260. package/build/build-esm/src/content/navbar/placeholderData.d.ts +2 -2
  261. package/build/build-esm/src/content/navbar/types.d.ts +22 -22
  262. package/build/build-esm/src/index.d.ts +1 -17
  263. package/build/build-esm/src/qsm/components/date-range-picker/calendar-day.d.ts +7 -7
  264. package/build/build-esm/src/qsm/components/date-range-picker/calendar.d.ts +18 -18
  265. package/build/build-esm/src/qsm/components/date-range-picker/index.d.ts +5 -5
  266. package/build/build-esm/src/qsm/components/double-search-input-group/index.d.ts +2 -2
  267. package/build/build-esm/src/qsm/components/icon.d.ts +5 -5
  268. package/build/build-esm/src/qsm/components/item-picker/index.d.ts +7 -7
  269. package/build/build-esm/src/qsm/components/search-input/index.d.ts +9 -9
  270. package/build/build-esm/src/qsm/components/search-input-group/index.d.ts +7 -7
  271. package/build/build-esm/src/qsm/index.d.ts +1 -1
  272. package/build/build-esm/src/qsm/store/qsm-slice.d.ts +58 -110
  273. package/build/build-esm/src/qsm/store/qsm-store.d.ts +7 -20
  274. package/build/build-esm/src/qsm/types.d.ts +59 -59
  275. package/build/build-esm/src/search-results/components/filters/filters.d.ts +5 -5
  276. package/build/build-esm/src/search-results/components/filters/flight-filters.d.ts +3 -3
  277. package/build/build-esm/src/search-results/components/flight/flight-banner.d.ts +2 -2
  278. package/build/build-esm/src/search-results/components/flight/flight-card.d.ts +1 -1
  279. package/build/build-esm/src/search-results/components/flight/flight-leg.d.ts +1 -1
  280. package/build/build-esm/src/search-results/components/flight/flight-path.d.ts +1 -1
  281. package/build/build-esm/src/search-results/components/flight/flight-results.d.ts +2 -2
  282. package/build/build-esm/src/search-results/components/flight/flight-search-context/index.d.ts +29 -29
  283. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +5 -5
  284. package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-selection.d.ts +1 -1
  285. package/build/build-esm/src/search-results/components/flight/flight-selection/index.d.ts +2 -2
  286. package/build/build-esm/src/search-results/components/flight/flight-selection/paired-flight-option.d.ts +1 -1
  287. package/build/build-esm/src/search-results/components/flight/flight-selection/paired-flight-selection.d.ts +1 -1
  288. package/build/build-esm/src/search-results/components/group-tour/group-tour-card.d.ts +3 -3
  289. package/build/build-esm/src/search-results/components/group-tour/group-tour-results.d.ts +1 -1
  290. package/build/build-esm/src/search-results/components/hotel/hotel-accommodation-results.d.ts +1 -1
  291. package/build/build-esm/src/search-results/components/hotel/hotel-card.d.ts +2 -2
  292. package/build/build-esm/src/search-results/components/icon.d.ts +6 -6
  293. package/build/build-esm/src/search-results/components/item-picker/index.d.ts +8 -8
  294. package/build/build-esm/src/search-results/components/itinerary/index.d.ts +3 -3
  295. package/build/build-esm/src/search-results/components/multi-range-filter.d.ts +6 -6
  296. package/build/build-esm/src/search-results/components/round-trip/round-trip-results.d.ts +2 -1
  297. package/build/build-esm/src/search-results/components/search-results-container/flight-search-results.d.ts +1 -1
  298. package/build/build-esm/src/search-results/components/tab-views/index.d.ts +2 -1
  299. package/build/build-esm/src/search-results/features/flights/flight-search-results-self-contained.d.ts +2 -1
  300. package/build/build-esm/src/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +2 -1
  301. package/build/build-esm/src/search-results/features/hotels/hotel-search-results-self-contained.d.ts +2 -1
  302. package/build/build-esm/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +2 -1
  303. package/build/build-esm/src/search-results/index.d.ts +1 -1
  304. package/build/build-esm/src/search-results/store/search-results-slice.d.ts +26 -63
  305. package/build/build-esm/src/search-results/store/search-results-store.d.ts +7 -20
  306. package/build/build-esm/src/search-results/types.d.ts +104 -103
  307. package/build/build-esm/src/search-results/utils/flight-utils.d.ts +1 -6
  308. package/build/build-esm/src/search-results/utils/search-results-utils.d.ts +2 -10
  309. package/build/build-esm/src/shared/components/flyin/accommodation-flyin.d.ts +3 -3
  310. package/build/build-esm/src/shared/components/flyin/flights-flyin.d.ts +2 -2
  311. package/build/build-esm/src/shared/components/flyin/flyin.d.ts +7 -7
  312. package/build/build-esm/src/shared/components/flyin/group-tour-flyin.d.ts +3 -3
  313. package/build/build-esm/src/shared/components/icon.d.ts +5 -5
  314. package/build/build-esm/src/shared/components/loader.d.ts +1 -1
  315. package/build/build-esm/src/shared/types.d.ts +9 -9
  316. package/build/build-esm/src/shared/utils/localization-util.d.ts +395 -395
  317. package/package.json +1 -1
  318. package/rollup.config.js +16 -16
  319. package/src/booking-product/components/age-select.tsx +35 -35
  320. package/src/booking-product/components/amount-input.tsx +51 -51
  321. package/src/booking-product/components/date-range-picker/calendar-day.tsx +46 -46
  322. package/src/booking-product/components/date-range-picker/calendar.tsx +155 -155
  323. package/src/booking-product/components/date-range-picker/index.tsx +185 -185
  324. package/src/booking-product/components/dates.tsx +153 -153
  325. package/src/booking-product/components/footer.tsx +54 -54
  326. package/src/booking-product/components/header.tsx +57 -57
  327. package/src/booking-product/components/icon.tsx +200 -200
  328. package/src/booking-product/components/list-view.tsx +54 -54
  329. package/src/booking-product/components/product.tsx +379 -379
  330. package/src/booking-product/components/rating.tsx +21 -21
  331. package/src/booking-product/components/rooms.tsx +171 -171
  332. package/src/booking-product/constants.ts +1 -1
  333. package/src/booking-product/index.tsx +21 -21
  334. package/src/booking-product/settings-context.ts +16 -16
  335. package/src/booking-product/types.ts +30 -30
  336. package/src/booking-product/utils/api.ts +26 -26
  337. package/src/booking-product/utils/price.ts +28 -28
  338. package/src/booking-wizard/api-settings-slice.ts +24 -24
  339. package/src/booking-wizard/components/icon.tsx +398 -398
  340. package/src/booking-wizard/components/labeled-input.tsx +56 -56
  341. package/src/booking-wizard/components/labeled-select.tsx +54 -54
  342. package/src/booking-wizard/components/message.tsx +21 -21
  343. package/src/booking-wizard/components/multi-range-filter.tsx +99 -99
  344. package/src/booking-wizard/components/phone-input.tsx +146 -146
  345. package/src/booking-wizard/components/print-offer-button.tsx +53 -53
  346. package/src/booking-wizard/components/product-card.tsx +23 -23
  347. package/src/booking-wizard/components/step-indicator.tsx +57 -57
  348. package/src/booking-wizard/components/step-route.tsx +26 -26
  349. package/src/booking-wizard/declarations.d.ts +4 -4
  350. package/src/booking-wizard/features/booking/api.ts +44 -44
  351. package/src/booking-wizard/features/booking/booking-self-contained.tsx +303 -303
  352. package/src/booking-wizard/features/booking/booking-slice.ts +625 -625
  353. package/src/booking-wizard/features/booking/booking.tsx +327 -326
  354. package/src/booking-wizard/features/booking/constants.ts +16 -16
  355. package/src/booking-wizard/features/booking/selectors.ts +406 -406
  356. package/src/booking-wizard/features/confirmation/confirmation.tsx +90 -90
  357. package/src/booking-wizard/features/error/error.tsx +71 -71
  358. package/src/booking-wizard/features/flight-options/flight-filter.tsx +371 -371
  359. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +354 -354
  360. package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +211 -211
  361. package/src/booking-wizard/features/flight-options/flight-option.tsx +57 -57
  362. package/src/booking-wizard/features/flight-options/flight-utils.ts +423 -423
  363. package/src/booking-wizard/features/flight-options/index.tsx +166 -166
  364. package/src/booking-wizard/features/price-details/price-details-api.ts +20 -20
  365. package/src/booking-wizard/features/price-details/price-details-slice.ts +77 -77
  366. package/src/booking-wizard/features/price-details/selectors.ts +117 -117
  367. package/src/booking-wizard/features/price-details/util.ts +115 -115
  368. package/src/booking-wizard/features/product-options/no-options.tsx +18 -18
  369. package/src/booking-wizard/features/product-options/none-option.tsx +73 -73
  370. package/src/booking-wizard/features/product-options/option-booking-airline-group.tsx +53 -53
  371. package/src/booking-wizard/features/product-options/option-booking-group.tsx +152 -152
  372. package/src/booking-wizard/features/product-options/option-item.tsx +236 -236
  373. package/src/booking-wizard/features/product-options/option-pax-card.tsx +159 -159
  374. package/src/booking-wizard/features/product-options/option-pax-group.tsx +122 -122
  375. package/src/booking-wizard/features/product-options/option-room.tsx +226 -226
  376. package/src/booking-wizard/features/product-options/option-unit-group.tsx +138 -138
  377. package/src/booking-wizard/features/product-options/option-units-card.tsx +148 -148
  378. package/src/booking-wizard/features/product-options/options-form.tsx +382 -382
  379. package/src/booking-wizard/features/room-options/index.tsx +132 -132
  380. package/src/booking-wizard/features/room-options/room-utils.ts +154 -154
  381. package/src/booking-wizard/features/room-options/room.tsx +123 -123
  382. package/src/booking-wizard/features/room-options/traveler-rooms.tsx +64 -64
  383. package/src/booking-wizard/features/sidebar/index.tsx +81 -81
  384. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +66 -66
  385. package/src/booking-wizard/features/sidebar/sidebar-util.ts +147 -147
  386. package/src/booking-wizard/features/sidebar/sidebar.tsx +316 -316
  387. package/src/booking-wizard/features/summary/summary-booking-option-pax.tsx +23 -23
  388. package/src/booking-wizard/features/summary/summary-booking-option-unit.tsx +23 -23
  389. package/src/booking-wizard/features/summary/summary-flight.tsx +36 -36
  390. package/src/booking-wizard/features/summary/summary-per-booking-option-group.tsx +60 -60
  391. package/src/booking-wizard/features/summary/summary-per-pax-option-group.tsx +56 -56
  392. package/src/booking-wizard/features/summary/summary-per-unit-option-group.tsx +58 -58
  393. package/src/booking-wizard/features/summary/summary-slice.ts +27 -27
  394. package/src/booking-wizard/features/summary/summary.tsx +562 -562
  395. package/src/booking-wizard/features/travelers-form/controls/gender-control.tsx +60 -60
  396. package/src/booking-wizard/features/travelers-form/travelers-form-slice.ts +157 -157
  397. package/src/booking-wizard/features/travelers-form/travelers-form-util.ts +10 -10
  398. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +1101 -1101
  399. package/src/booking-wizard/features/travelers-form/type-ahead-input.tsx +85 -85
  400. package/src/booking-wizard/features/travelers-form/validate-form.ts +178 -178
  401. package/src/booking-wizard/index.tsx +27 -27
  402. package/src/booking-wizard/settings-context.ts +64 -64
  403. package/src/booking-wizard/store.ts +26 -26
  404. package/src/booking-wizard/types.ts +331 -331
  405. package/src/booking-wizard/use-offer-printer.ts +108 -108
  406. package/src/content/components/LanguageSwitcher.tsx +158 -158
  407. package/src/content/components/accordion.tsx +30 -30
  408. package/src/content/components/breadcrumb.tsx +67 -67
  409. package/src/content/components/contact.tsx +211 -211
  410. package/src/content/components/faq.tsx +42 -42
  411. package/src/content/components/gallery.tsx +153 -153
  412. package/src/content/components/icon.tsx +695 -695
  413. package/src/content/components/image-with-text.tsx +120 -120
  414. package/src/content/components/login.tsx +162 -162
  415. package/src/content/components/personal-contact-form.tsx +809 -809
  416. package/src/content/components/slider.tsx +237 -237
  417. package/src/content/featured-trips/featured-trip-card.tsx +48 -48
  418. package/src/content/featured-trips/index.tsx +19 -19
  419. package/src/content/featured-trips/types.ts +13 -13
  420. package/src/content/features/content-page/content-page-self-contained.tsx +895 -895
  421. package/src/content/footer/index.tsx +159 -159
  422. package/src/content/footer/types.ts +36 -36
  423. package/src/content/header/index.tsx +43 -43
  424. package/src/content/header/types.ts +26 -26
  425. package/src/content/image-card-grid/index.tsx +34 -34
  426. package/src/content/image-card-grid/types.ts +13 -13
  427. package/src/content/image-with-text-section/card.tsx +58 -58
  428. package/src/content/image-with-text-section/index.tsx +22 -22
  429. package/src/content/image-with-text-section/types.ts +20 -20
  430. package/src/content/login/confirm-component.tsx +149 -149
  431. package/src/content/login/index.tsx +70 -70
  432. package/src/content/login/login-component.tsx +159 -159
  433. package/src/content/login/login-services.ts +109 -109
  434. package/src/content/login/reset-password-component.tsx +191 -191
  435. package/src/content/login/types.ts +29 -29
  436. package/src/content/navbar/index.tsx +354 -354
  437. package/src/content/navbar/placeholderData.tsx +173 -173
  438. package/src/content/navbar/types.ts +43 -43
  439. package/src/index.ts +44 -44
  440. package/src/qsm/components/QSMContainer/qsm-container.tsx +512 -512
  441. package/src/qsm/components/date-picker/index.tsx +152 -152
  442. package/src/qsm/components/date-range-picker/calendar-day.tsx +49 -49
  443. package/src/qsm/components/date-range-picker/calendar.tsx +211 -211
  444. package/src/qsm/components/date-range-picker/index.tsx +404 -404
  445. package/src/qsm/components/double-search-input-group/index.tsx +78 -78
  446. package/src/qsm/components/icon.tsx +354 -354
  447. package/src/qsm/components/item-picker/index.tsx +69 -69
  448. package/src/qsm/components/mobile-filter-modal/index.tsx +307 -307
  449. package/src/qsm/components/search-input/index.tsx +91 -91
  450. package/src/qsm/components/search-input-group/index.tsx +199 -199
  451. package/src/qsm/components/travel-class-picker/index.tsx +28 -28
  452. package/src/qsm/components/travel-input/index.tsx +243 -243
  453. package/src/qsm/components/travel-input-group/index.tsx +114 -114
  454. package/src/qsm/components/travel-nationality-picker/index.tsx +28 -28
  455. package/src/qsm/components/travel-type-picker/index.tsx +28 -28
  456. package/src/qsm/index.tsx +26 -26
  457. package/src/qsm/qsm-configuration-context.ts +31 -31
  458. package/src/qsm/store/qsm-slice.ts +275 -275
  459. package/src/qsm/store/qsm-store.ts +13 -13
  460. package/src/qsm/types.ts +110 -110
  461. package/src/search-results/components/filters/filters.tsx +230 -230
  462. package/src/search-results/components/filters/flight-filters.tsx +671 -671
  463. package/src/search-results/components/flight/flight-banner.tsx +35 -35
  464. package/src/search-results/components/flight/flight-card.tsx +38 -38
  465. package/src/search-results/components/flight/flight-leg.tsx +61 -61
  466. package/src/search-results/components/flight/flight-path.tsx +23 -23
  467. package/src/search-results/components/flight/flight-results.tsx +208 -208
  468. package/src/search-results/components/flight/flight-search-context/index.tsx +628 -628
  469. package/src/search-results/components/flight/flight-selection/independent-flight-option.tsx +147 -147
  470. package/src/search-results/components/flight/flight-selection/independent-flight-selection.tsx +172 -172
  471. package/src/search-results/components/flight/flight-selection/index.tsx +19 -19
  472. package/src/search-results/components/flight/flight-selection/paired-flight-option.tsx +255 -255
  473. package/src/search-results/components/flight/flight-selection/paired-flight-selection.tsx +38 -38
  474. package/src/search-results/components/group-tour/group-tour-card.tsx +105 -105
  475. package/src/search-results/components/group-tour/group-tour-results.tsx +62 -62
  476. package/src/search-results/components/hotel/hotel-accommodation-results.tsx +176 -176
  477. package/src/search-results/components/hotel/hotel-card.tsx +113 -113
  478. package/src/search-results/components/icon.tsx +680 -680
  479. package/src/search-results/components/item-picker/index.tsx +81 -81
  480. package/src/search-results/components/itinerary/index.tsx +310 -310
  481. package/src/search-results/components/multi-range-filter.tsx +104 -104
  482. package/src/search-results/components/round-trip/round-trip-results.tsx +199 -199
  483. package/src/search-results/components/search-results-container/flight-search-results.tsx +137 -137
  484. package/src/search-results/components/search-results-container/search-results-container.tsx +893 -891
  485. package/src/search-results/components/spinner/spinner.tsx +16 -16
  486. package/src/search-results/components/tab-views/index.tsx +53 -53
  487. package/src/search-results/features/flights/flight-search-results-self-contained.tsx +294 -294
  488. package/src/search-results/features/hotels/hotel-flight-search-results-self-contained.tsx +143 -143
  489. package/src/search-results/features/hotels/hotel-search-results-self-contained.tsx +220 -220
  490. package/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.tsx +65 -65
  491. package/src/search-results/index.tsx +24 -24
  492. package/src/search-results/search-results-configuration-context.ts +6 -6
  493. package/src/search-results/store/search-results-slice.ts +158 -158
  494. package/src/search-results/store/search-results-store.ts +13 -13
  495. package/src/search-results/types.ts +181 -180
  496. package/src/search-results/utils/flight-utils.ts +93 -93
  497. package/src/search-results/utils/search-results-utils.ts +251 -251
  498. package/src/shared/components/flyin/accommodation-flyin.tsx +422 -422
  499. package/src/shared/components/flyin/flights-flyin.tsx +503 -503
  500. package/src/shared/components/flyin/flyin.tsx +82 -82
  501. package/src/shared/components/flyin/group-tour-flyin.tsx +293 -293
  502. package/src/shared/components/icon.tsx +826 -826
  503. package/src/shared/components/loader.tsx +16 -16
  504. package/src/shared/translations/ar-SA.json +381 -381
  505. package/src/shared/translations/da-DK.json +381 -381
  506. package/src/shared/translations/de-DE.json +381 -381
  507. package/src/shared/translations/en-GB.json +385 -385
  508. package/src/shared/translations/es-ES.json +381 -381
  509. package/src/shared/translations/fr-BE.json +385 -385
  510. package/src/shared/translations/fr-FR.json +381 -381
  511. package/src/shared/translations/is-IS.json +381 -381
  512. package/src/shared/translations/it-IT.json +381 -381
  513. package/src/shared/translations/ja-JP.json +381 -381
  514. package/src/shared/translations/nl-BE.json +385 -385
  515. package/src/shared/translations/nl-NL.json +381 -381
  516. package/src/shared/translations/no-NO.json +381 -381
  517. package/src/shared/translations/pl-PL.json +381 -381
  518. package/src/shared/translations/pt-PT.json +381 -381
  519. package/src/shared/translations/sv-SE.json +381 -381
  520. package/src/shared/types.ts +31 -31
  521. package/src/shared/utils/class-util.ts +7 -7
  522. package/src/shared/utils/localization-util.ts +275 -275
  523. package/src/shared/utils/query-string-util.ts +91 -91
  524. package/src/shared/utils/tide-api-utils.ts +34 -34
  525. package/src/shared/utils/use-media-query-util.ts +19 -19
  526. package/styles/abstracts/_mixins.scss +74 -74
  527. package/styles/abstracts/_variables.scss +57 -57
  528. package/styles/base/_fonts.scss +2 -2
  529. package/styles/base/_normalize.scss +227 -227
  530. package/styles/base/_typography.scss +35 -35
  531. package/styles/booking-joker-variables.scss +596 -596
  532. package/styles/booking-product-variables.scss +330 -330
  533. package/styles/booking-product.scss +438 -438
  534. package/styles/booking-qsm-variables.scss +501 -501
  535. package/styles/booking-qsm.scss +52 -52
  536. package/styles/booking-search-results-variables.scss +728 -728
  537. package/styles/booking-search-results.scss +53 -53
  538. package/styles/booking-wizard-variables.scss +603 -603
  539. package/styles/booking-wizard.scss +61 -61
  540. package/styles/components/_accordion.scss +67 -67
  541. package/styles/components/_animations.scss +39 -39
  542. package/styles/components/_base.scss +107 -107
  543. package/styles/components/_booking.scss +872 -872
  544. package/styles/components/_breadcrumb.scss +92 -92
  545. package/styles/components/_button.scss +238 -238
  546. package/styles/components/_checkbox.scss +230 -230
  547. package/styles/components/_contact.scss +239 -239
  548. package/styles/components/_content.scss +336 -336
  549. package/styles/components/_cta.scss +238 -238
  550. package/styles/components/_date-list.scss +41 -41
  551. package/styles/components/_date-range-picker.scss +223 -223
  552. package/styles/components/_decrement-increment.scss +35 -35
  553. package/styles/components/_dropdown.scss +72 -72
  554. package/styles/components/_faq.scss +27 -27
  555. package/styles/components/_flight-option.scss +1419 -1419
  556. package/styles/components/_flyin.scss +727 -727
  557. package/styles/components/_footer.scss +141 -141
  558. package/styles/components/_form.scss +1634 -1634
  559. package/styles/components/_gallery.scss +314 -314
  560. package/styles/components/_header.scss +113 -113
  561. package/styles/components/_image-with-text.scss +206 -206
  562. package/styles/components/_img-slider.scss +175 -175
  563. package/styles/components/_info-message.scss +75 -75
  564. package/styles/components/_input.scss +35 -35
  565. package/styles/components/_list.scss +185 -185
  566. package/styles/components/_loader.scss +70 -70
  567. package/styles/components/_login.scss +140 -140
  568. package/styles/components/_mixins.scss +579 -579
  569. package/styles/components/_navbar.scss +765 -765
  570. package/styles/components/_passenger-picker.scss +306 -306
  571. package/styles/components/_phone-input.scss +8 -8
  572. package/styles/components/_placeholders.scss +165 -165
  573. package/styles/components/_pricing-summary.scss +163 -163
  574. package/styles/components/_qsm.scss +17 -17
  575. package/styles/components/_radiobutton.scss +170 -170
  576. package/styles/components/_search.scss +2009 -2009
  577. package/styles/components/_select-wrapper.scss +76 -76
  578. package/styles/components/_slider.scss +128 -128
  579. package/styles/components/_spinner.scss +29 -29
  580. package/styles/components/_step-indicators.scss +161 -161
  581. package/styles/components/_table.scss +81 -81
  582. package/styles/components/_tree.scss +648 -648
  583. package/styles/components/_typeahead.scss +275 -275
  584. package/styles/components/_variables.scss +89 -89
  585. package/styles/content-blocks-variables.scss +507 -507
  586. package/styles/content-blocks.scss +64 -64
  587. package/styles/font.scss +2 -2
  588. package/styles/qsm/_calendar.scss +274 -274
  589. package/styles/qsm/_qsm.scss +1094 -1094
  590. package/styles/search.scss +1200 -1200
  591. package/tsconfig.json +24 -24
@@ -1,406 +1,406 @@
1
- import JsonURL from '@jsonurl/jsonurl';
2
- import { Gender } from '@qite/tide-client';
3
- import { BookingPackageAddress, BookingPackageBookRequest, BookingPackagePax, BookingPackageRequest } from '@qite/tide-client/build/types';
4
- import { createSelector } from '@reduxjs/toolkit';
5
- import { format, parseISO } from 'date-fns';
6
- import { omit } from 'lodash';
7
- import { getTranslations } from '../../../shared/utils/localization-util';
8
- import { RootState } from '../../store';
9
- import { FlightInfo, Room, Traveler } from '../../types';
10
- import { selectNotifications } from '../price-details/price-details-slice';
11
- import { selectAgentId, selectTravelersFormValues } from '../travelers-form/travelers-form-slice';
12
-
13
- export const selectHasMounted = (state: RootState) => state.booking.hasMounted;
14
-
15
- export const selectIsFetching = (state: RootState) => state.booking.isFetching;
16
-
17
- export const selectCurrentStep = (state: RootState) => state.booking.currentStep;
18
-
19
- export const selectGeneratePaymentUrl = (state: RootState) => state.booking.generatePaymentUrl;
20
-
21
- export const selectSkipPaymentWithAgent = (state: RootState) => state.booking.skipPaymentWithAgent;
22
-
23
- export const selectIsFetchingProductOptions = (state: RootState) => state.booking.isBusy;
24
-
25
- export const selectDepartureFlight = (state: RootState) => state.booking.package?.outwardFlights?.find((x) => x.isSelected);
26
-
27
- export const selectReturnFlight = (state: RootState) => state.booking.package?.returnFlights?.find((x) => x.isSelected);
28
-
29
- export const selectPackageRooms = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.rooms;
30
-
31
- export const selectIncludedServiceTypes = (state: RootState) => selectActiveOption(state)?.includedServiceTypes;
32
-
33
- export const selectAvailabilities = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.availabilities;
34
-
35
- export const selectPackageTags = (state: RootState) => state.booking.package?.tags;
36
-
37
- export const selectIsOnRequest = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.isOnRequest;
38
-
39
- export const selectPackageOptionUnits = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.optionUnits;
40
-
41
- export const selectPackageOptionPax = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.optionPax;
42
-
43
- export const selectPackageGroups = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.groups;
44
-
45
- export const selectPackageDetails = (state: RootState) => state.booking.package;
46
-
47
- export const selectPackageFlights = (state: RootState) => ({
48
- outward: state.booking.package?.outwardFlights,
49
- return: state.booking.package?.returnFlights
50
- });
51
-
52
- export const selectFlightMetaData = (state: RootState) => state.booking.package?.flightInfo.metaData;
53
-
54
- export const selectActiveOption = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected);
55
-
56
- export const selectPackageAirlineGroups = createSelector(
57
- selectActiveOption,
58
- selectDepartureFlight,
59
- selectReturnFlight,
60
- (option, departureFlight, returnFlight) =>
61
- option?.airlineGroups.filter((x) => x.flightIds.includes(departureFlight?.entryLineGuid ?? '') || x.flightIds.includes(returnFlight?.entryLineGuid ?? ''))
62
- );
63
-
64
- export const selectPackageAirportGroups = createSelector(
65
- selectActiveOption,
66
- selectDepartureFlight,
67
- selectReturnFlight,
68
- (option, departureFlight, returnFlight) =>
69
- option?.airportGroups.filter((x) => x.flightIds.includes(departureFlight?.entryLineGuid ?? '') || x.flightIds.includes(returnFlight?.entryLineGuid ?? ''))
70
- );
71
-
72
- export const selectRoomOptionDepartureFlightsMetaData = createSelector(selectActiveOption, selectFlightMetaData, (ativeOption, flightMetaData) => {
73
- const roomOptions = ativeOption?.rooms.map((r) => r.options.filter((o) => o.isSelected).shift());
74
- return roomOptions?.map((ro) => flightMetaData?.find((f) => f.entryLineGuid === ro?.entryLineGuid)?.flightMetaData).filter((f) => f !== undefined) ?? [];
75
- });
76
-
77
- export const selectRoomOptionReturnFlightsMetaData = createSelector(selectActiveOption, selectFlightMetaData, (ativeOption, flightMetaData) => {
78
- const selectedRoomOptions = ativeOption?.rooms.map((r) => r.options.filter((o) => o.isSelected));
79
- // check if there are return flights selected
80
- if (selectedRoomOptions?.some((ro) => ro.length > 1)) {
81
- const roomOptions = ativeOption?.rooms.map((r) =>
82
- r.options
83
- .filter((o) => o.isSelected)
84
- .reverse()
85
- .shift()
86
- );
87
- return roomOptions?.map((ro) => flightMetaData?.find((f) => f.entryLineGuid === ro?.entryLineGuid)?.flightMetaData).filter((f) => f !== undefined) ?? [];
88
- }
89
- return undefined;
90
- });
91
-
92
- export const selectApiSettings = (state: RootState) => state.apiSettings;
93
-
94
- export const selectIsUnavailable = (state: RootState) => state.booking.isUnavailable;
95
-
96
- export const selectRequestRooms = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.requestRooms;
97
-
98
- export const selectOfficeId = (state: RootState) => state.booking.officeId;
99
-
100
- export const selectLanguageCode = (state: RootState) => state.booking.languageCode;
101
-
102
- export const selectCurrencyCode = (state: RootState) => state.booking.package?.currencyCode ?? 'EUR';
103
-
104
- export const selectDefaultStaticTranslations = (state: RootState) => getTranslations(state.booking.languageCode) as Record<string, any>;
105
-
106
- export const selectLanguage = (state: RootState) => state.booking.languageCode;
107
-
108
- export const selectAllDynamicTranslations = (state: RootState) => state.booking.translations;
109
-
110
- export const selectDynamicTranslations = createSelector([selectAllDynamicTranslations, selectLanguage], (allDynamicTranslations, language) => {
111
- return allDynamicTranslations?.find((x) => x.language == language)?.value ?? {};
112
- });
113
-
114
- export const selectTranslations = createSelector(
115
- [selectDefaultStaticTranslations, selectDynamicTranslations],
116
- (defaultStaticTranslations, dynamicTranslations) => {
117
- const merged = {} as Record<string, any>;
118
-
119
- for (const key of Array.from(new Set([...Object.keys(defaultStaticTranslations), ...Object.keys(dynamicTranslations)]))) {
120
- merged[key] = {
121
- ...(defaultStaticTranslations[key] || {}),
122
- ...(dynamicTranslations[key] || {})
123
- };
124
- }
125
-
126
- return merged;
127
- }
128
- );
129
-
130
- export const selectBookingOptions = (state: RootState) => state.booking.bookingOptions;
131
-
132
- export const selectBookingType = (state: RootState) => state.booking.bookingType;
133
-
134
- export const selectTagIds = (state: RootState) => state.booking.tagIds;
135
-
136
- export const selectAgentAdressId = (state: RootState) => state.booking.agentAdressId;
137
-
138
- export const selectProductAttributes = (state: RootState) => state.booking.productAttributes;
139
-
140
- export const selectBookingAttributes = (state: RootState) => state.booking.bookingAttributes;
141
-
142
- export const selectBookingNumber = (state: RootState) => state.booking.bookingNumber;
143
-
144
- export const selectIsOption = (state: RootState) => state.booking.isOption;
145
-
146
- export const selectBookingRooms = (state: RootState) => state.booking.bookingAttributes?.rooms;
147
-
148
- export const selectBookingRemarks = (state: RootState) => state.booking.remarks;
149
-
150
- export const selectVoucherCodes = (state: RootState) => state.booking.voucherCodes;
151
-
152
- export const selectCalculateDeposit = (state: RootState) => state.booking.calculateDeposit;
153
-
154
- export const selectIsRetry = (state: RootState) => state.booking.isRetry;
155
-
156
- export const selectStartDate = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.fromDate;
157
-
158
- export const selectAgents = (state: RootState) => state.booking.agents;
159
-
160
- export const selectCountries = (state: RootState) => state.booking.countries;
161
-
162
- export const selectProductCode = (state: RootState) => state.booking.productAttributes?.productCode;
163
-
164
- export const selectAccommodationCodes = (state: RootState) => {
165
- const accommodationCodes: string[] = [];
166
- state.booking.package?.options.forEach((o) => {
167
- o.rooms.forEach((r) =>
168
- r.options.forEach((ro) => {
169
- if (!accommodationCodes.some((y) => y === ro.accommodationCode)) {
170
- accommodationCodes.push(ro.accommodationCode);
171
- }
172
- })
173
- );
174
- });
175
- return accommodationCodes;
176
- };
177
-
178
- export const selectAccommodationViews = (state: RootState) => state.booking.accommodationViews;
179
-
180
- export const selectBookingQuery = (state: RootState) => {
181
- const bookingAttributes = state.booking.bookingAttributes;
182
-
183
- if (!bookingAttributes) {
184
- return undefined;
185
- }
186
-
187
- const params: Record<string, string> = {};
188
- Object.entries(bookingAttributes).forEach(([key, value]) => {
189
- if (key === 'startDate' || key === 'endDate') {
190
- value = format(parseISO(value), 'yyyy-MM-dd');
191
- }
192
-
193
- if (key === 'rooms') {
194
- value = JsonURL.stringify(
195
- (value as Room[]).map((room) => omit(room, ['children'])),
196
- {
197
- AQF: true
198
- }
199
- );
200
- }
201
-
202
- if (key === 'allotmentIds' && !value.length) {
203
- value = undefined;
204
- }
205
-
206
- if (key === 'flight' && value) {
207
- var flightInfo = value as FlightInfo;
208
- value = JsonURL.stringify(flightInfo, { AQF: true });
209
- }
210
-
211
- if (value) {
212
- params[key] = value;
213
- }
214
- });
215
-
216
- return params;
217
- };
218
-
219
- export const selectBookingQueryString = createSelector(selectBookingQuery, (params) => {
220
- if (!params) {
221
- return undefined;
222
- }
223
-
224
- return Object.keys(params)
225
- .filter((key) => typeof params[key] !== 'undefined')
226
- .map((key) => `${key}=${params[key]}`)
227
- .join('&');
228
- });
229
-
230
- export const selectMainBookerId = createSelector(selectTravelersFormValues, (formValues) => formValues?.mainBookerId);
231
-
232
- export const selectBookingPackagePax = createSelector(selectTravelersFormValues, (formValues) => {
233
- var pax: BookingPackagePax[] = [];
234
-
235
- formValues?.rooms.forEach((r) =>
236
- r.adults.forEach((x) => {
237
- const adultPax = buildPax(x, formValues?.mainBookerId);
238
-
239
- if (adultPax.isMainBooker) {
240
- adultPax.mobilePhone = formValues?.phone;
241
- adultPax.email = formValues?.email;
242
- }
243
-
244
- pax.push(adultPax);
245
- })
246
- );
247
-
248
- formValues?.rooms.forEach((r) =>
249
- r.children.forEach((x) => {
250
- pax.push(buildPax(x));
251
- })
252
- );
253
-
254
- return pax;
255
- });
256
-
257
- export const selectBookingAddress = createSelector(selectTravelersFormValues, selectBookingPackagePax, selectBookingType, (formValues, pax, bookingType) => {
258
- const mainBooker = pax.find((x) => x.isMainBooker);
259
- if (!mainBooker || bookingType == 'b2b') return undefined;
260
-
261
- return {
262
- name: `${mainBooker.firstName} ${mainBooker.lastName}`,
263
- street: formValues?.street,
264
- number: formValues?.houseNumber,
265
- box: formValues?.box,
266
- postalCode: formValues?.zipCode,
267
- location: formValues?.place,
268
- country: formValues?.country,
269
- mobilePhone: formValues?.phone,
270
- email: formValues?.email
271
- } as BookingPackageAddress;
272
- });
273
-
274
- export const selectBookingPackageRequest = createSelector(selectOfficeId, selectAgentId, selectAgentAdressId, (officeId, agentId, agentAdressId) => {
275
- const agencyId = (agentId ?? agentAdressId ?? 0) > 0 ? agentId ?? agentAdressId : null;
276
-
277
- return {
278
- officeId: officeId,
279
- agentId: agencyId,
280
- payload: null
281
- } as BookingPackageRequest<any>;
282
- });
283
-
284
- export const selectBookingPackageBookRequest = createSelector(
285
- selectBookingPackageRequest,
286
- selectBookingOptions,
287
- selectBookingType,
288
- selectBookingPackagePax,
289
- selectBookingAddress,
290
- selectPackageDetails,
291
- selectCalculateDeposit,
292
- selectAgentId,
293
- selectGeneratePaymentUrl,
294
- selectSkipPaymentWithAgent,
295
- selectNotifications,
296
- selectTagIds,
297
- selectBookingRemarks,
298
- selectVoucherCodes,
299
- (
300
- bookingPackageRequest: BookingPackageRequest<BookingPackageBookRequest>,
301
- bookingOptions,
302
- bookingType,
303
- pax,
304
- address,
305
- packageDetails,
306
- calculateDeposit,
307
- agentId,
308
- generatePaymentUrl,
309
- skipPaymentWithAgent,
310
- notifications,
311
- tagIds,
312
- remarks,
313
- voucherCodes
314
- ) => {
315
- if (!packageDetails) return null;
316
-
317
- let returnPaymentUrl = false;
318
-
319
- if (generatePaymentUrl && (!skipPaymentWithAgent || (agentId ?? 0) == 0)) {
320
- returnPaymentUrl = true;
321
- }
322
-
323
- var entryStatus = 0;
324
- var customEntryStatusId = undefined;
325
-
326
- switch (bookingType) {
327
- case 'b2b':
328
- if (bookingOptions.b2b.tagIds && bookingOptions.b2b.tagIds.length > 0) {
329
- tagIds = tagIds?.concat(bookingOptions.b2b.tagIds);
330
- }
331
- if (bookingOptions.b2b.entryStatus) {
332
- entryStatus = bookingOptions.b2b.entryStatus;
333
- }
334
- if (bookingOptions.b2b.customEntryStatusId) {
335
- customEntryStatusId = bookingOptions.b2b.customEntryStatusId;
336
- }
337
- break;
338
- case 'b2b2c':
339
- if (bookingOptions.b2b2c.tagIds && bookingOptions.b2b2c.tagIds.length > 0) {
340
- tagIds = tagIds?.concat(bookingOptions.b2b2c.tagIds);
341
- }
342
- if (bookingOptions.b2b2c.entryStatus) {
343
- entryStatus = bookingOptions.b2b2c.entryStatus;
344
- }
345
- if (bookingOptions.b2b2c.customEntryStatusId) {
346
- customEntryStatusId = bookingOptions.b2b2c.customEntryStatusId;
347
- }
348
- break;
349
- default:
350
- if (bookingOptions.b2c.tagIds && bookingOptions.b2c.tagIds.length > 0) {
351
- tagIds = tagIds?.concat(bookingOptions.b2c.tagIds);
352
- }
353
- if (bookingOptions.b2c.entryStatus) {
354
- entryStatus = bookingOptions.b2c.entryStatus;
355
- }
356
- if (bookingOptions.b2c.customEntryStatusId) {
357
- customEntryStatusId = bookingOptions.b2c.customEntryStatusId;
358
- }
359
- break;
360
- }
361
-
362
- bookingPackageRequest.payload = {
363
- package: packageDetails,
364
- status: entryStatus,
365
- customStatusId: customEntryStatusId,
366
- address: address,
367
- pax: pax?.length != 0 ? pax : packageDetails.options[0].requestRooms.flatMap((x) => x.pax),
368
- nonTravelPax: [],
369
- calculateDeposit: calculateDeposit,
370
- returnPaymentUrl: returnPaymentUrl,
371
- notifications: notifications,
372
- tagIds: tagIds,
373
- remarks: remarks,
374
- voucherCodes: voucherCodes,
375
- customerRequests: []
376
- };
377
-
378
- return bookingPackageRequest;
379
- }
380
- );
381
-
382
- export const selectTravelersFirstStep = (state: any) => state.booking.travelersFirstStep;
383
-
384
- const buildPax = (traveler: Traveler, mainBookerId?: number) => {
385
- return {
386
- id: traveler.id,
387
- gender: parseGender(traveler.gender),
388
- firstName: traveler.firstName,
389
- lastName: traveler.lastName,
390
- dateOfBirth: traveler.birthDate,
391
- age: traveler.birthDate ? null : traveler.age,
392
- isMainBooker: traveler.id == mainBookerId
393
- } as BookingPackagePax;
394
- };
395
-
396
- const parseGender = (gender: string): number => {
397
- switch (gender) {
398
- case 'm':
399
- return Gender.male;
400
- case 'f':
401
- return Gender.female;
402
- case 'x':
403
- default:
404
- return Gender.other;
405
- }
406
- };
1
+ import JsonURL from '@jsonurl/jsonurl';
2
+ import { Gender } from '@qite/tide-client';
3
+ import { BookingPackageAddress, BookingPackageBookRequest, BookingPackagePax, BookingPackageRequest } from '@qite/tide-client/build/types';
4
+ import { createSelector } from '@reduxjs/toolkit';
5
+ import { format, parseISO } from 'date-fns';
6
+ import { omit } from 'lodash';
7
+ import { getTranslations } from '../../../shared/utils/localization-util';
8
+ import { RootState } from '../../store';
9
+ import { FlightInfo, Room, Traveler } from '../../types';
10
+ import { selectNotifications } from '../price-details/price-details-slice';
11
+ import { selectAgentId, selectTravelersFormValues } from '../travelers-form/travelers-form-slice';
12
+
13
+ export const selectHasMounted = (state: RootState) => state.booking.hasMounted;
14
+
15
+ export const selectIsFetching = (state: RootState) => state.booking.isFetching;
16
+
17
+ export const selectCurrentStep = (state: RootState) => state.booking.currentStep;
18
+
19
+ export const selectGeneratePaymentUrl = (state: RootState) => state.booking.generatePaymentUrl;
20
+
21
+ export const selectSkipPaymentWithAgent = (state: RootState) => state.booking.skipPaymentWithAgent;
22
+
23
+ export const selectIsFetchingProductOptions = (state: RootState) => state.booking.isBusy;
24
+
25
+ export const selectDepartureFlight = (state: RootState) => state.booking.package?.outwardFlights?.find((x) => x.isSelected);
26
+
27
+ export const selectReturnFlight = (state: RootState) => state.booking.package?.returnFlights?.find((x) => x.isSelected);
28
+
29
+ export const selectPackageRooms = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.rooms;
30
+
31
+ export const selectIncludedServiceTypes = (state: RootState) => selectActiveOption(state)?.includedServiceTypes;
32
+
33
+ export const selectAvailabilities = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.availabilities;
34
+
35
+ export const selectPackageTags = (state: RootState) => state.booking.package?.tags;
36
+
37
+ export const selectIsOnRequest = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.isOnRequest;
38
+
39
+ export const selectPackageOptionUnits = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.optionUnits;
40
+
41
+ export const selectPackageOptionPax = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.optionPax;
42
+
43
+ export const selectPackageGroups = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.groups;
44
+
45
+ export const selectPackageDetails = (state: RootState) => state.booking.package;
46
+
47
+ export const selectPackageFlights = (state: RootState) => ({
48
+ outward: state.booking.package?.outwardFlights,
49
+ return: state.booking.package?.returnFlights
50
+ });
51
+
52
+ export const selectFlightMetaData = (state: RootState) => state.booking.package?.flightInfo.metaData;
53
+
54
+ export const selectActiveOption = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected);
55
+
56
+ export const selectPackageAirlineGroups = createSelector(
57
+ selectActiveOption,
58
+ selectDepartureFlight,
59
+ selectReturnFlight,
60
+ (option, departureFlight, returnFlight) =>
61
+ option?.airlineGroups.filter((x) => x.flightIds.includes(departureFlight?.entryLineGuid ?? '') || x.flightIds.includes(returnFlight?.entryLineGuid ?? ''))
62
+ );
63
+
64
+ export const selectPackageAirportGroups = createSelector(
65
+ selectActiveOption,
66
+ selectDepartureFlight,
67
+ selectReturnFlight,
68
+ (option, departureFlight, returnFlight) =>
69
+ option?.airportGroups.filter((x) => x.flightIds.includes(departureFlight?.entryLineGuid ?? '') || x.flightIds.includes(returnFlight?.entryLineGuid ?? ''))
70
+ );
71
+
72
+ export const selectRoomOptionDepartureFlightsMetaData = createSelector(selectActiveOption, selectFlightMetaData, (ativeOption, flightMetaData) => {
73
+ const roomOptions = ativeOption?.rooms.map((r) => r.options.filter((o) => o.isSelected).shift());
74
+ return roomOptions?.map((ro) => flightMetaData?.find((f) => f.entryLineGuid === ro?.entryLineGuid)?.flightMetaData).filter((f) => f !== undefined) ?? [];
75
+ });
76
+
77
+ export const selectRoomOptionReturnFlightsMetaData = createSelector(selectActiveOption, selectFlightMetaData, (ativeOption, flightMetaData) => {
78
+ const selectedRoomOptions = ativeOption?.rooms.map((r) => r.options.filter((o) => o.isSelected));
79
+ // check if there are return flights selected
80
+ if (selectedRoomOptions?.some((ro) => ro.length > 1)) {
81
+ const roomOptions = ativeOption?.rooms.map((r) =>
82
+ r.options
83
+ .filter((o) => o.isSelected)
84
+ .reverse()
85
+ .shift()
86
+ );
87
+ return roomOptions?.map((ro) => flightMetaData?.find((f) => f.entryLineGuid === ro?.entryLineGuid)?.flightMetaData).filter((f) => f !== undefined) ?? [];
88
+ }
89
+ return undefined;
90
+ });
91
+
92
+ export const selectApiSettings = (state: RootState) => state.apiSettings;
93
+
94
+ export const selectIsUnavailable = (state: RootState) => state.booking.isUnavailable;
95
+
96
+ export const selectRequestRooms = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.requestRooms;
97
+
98
+ export const selectOfficeId = (state: RootState) => state.booking.officeId;
99
+
100
+ export const selectLanguageCode = (state: RootState) => state.booking.languageCode;
101
+
102
+ export const selectCurrencyCode = (state: RootState) => state.booking.package?.currencyCode ?? 'EUR';
103
+
104
+ export const selectDefaultStaticTranslations = (state: RootState) => getTranslations(state.booking.languageCode) as Record<string, any>;
105
+
106
+ export const selectLanguage = (state: RootState) => state.booking.languageCode;
107
+
108
+ export const selectAllDynamicTranslations = (state: RootState) => state.booking.translations;
109
+
110
+ export const selectDynamicTranslations = createSelector([selectAllDynamicTranslations, selectLanguage], (allDynamicTranslations, language) => {
111
+ return allDynamicTranslations?.find((x) => x.language == language)?.value ?? {};
112
+ });
113
+
114
+ export const selectTranslations = createSelector(
115
+ [selectDefaultStaticTranslations, selectDynamicTranslations],
116
+ (defaultStaticTranslations, dynamicTranslations) => {
117
+ const merged = {} as Record<string, any>;
118
+
119
+ for (const key of Array.from(new Set([...Object.keys(defaultStaticTranslations), ...Object.keys(dynamicTranslations)]))) {
120
+ merged[key] = {
121
+ ...(defaultStaticTranslations[key] || {}),
122
+ ...(dynamicTranslations[key] || {})
123
+ };
124
+ }
125
+
126
+ return merged;
127
+ }
128
+ );
129
+
130
+ export const selectBookingOptions = (state: RootState) => state.booking.bookingOptions;
131
+
132
+ export const selectBookingType = (state: RootState) => state.booking.bookingType;
133
+
134
+ export const selectTagIds = (state: RootState) => state.booking.tagIds;
135
+
136
+ export const selectAgentAdressId = (state: RootState) => state.booking.agentAdressId;
137
+
138
+ export const selectProductAttributes = (state: RootState) => state.booking.productAttributes;
139
+
140
+ export const selectBookingAttributes = (state: RootState) => state.booking.bookingAttributes;
141
+
142
+ export const selectBookingNumber = (state: RootState) => state.booking.bookingNumber;
143
+
144
+ export const selectIsOption = (state: RootState) => state.booking.isOption;
145
+
146
+ export const selectBookingRooms = (state: RootState) => state.booking.bookingAttributes?.rooms;
147
+
148
+ export const selectBookingRemarks = (state: RootState) => state.booking.remarks;
149
+
150
+ export const selectVoucherCodes = (state: RootState) => state.booking.voucherCodes;
151
+
152
+ export const selectCalculateDeposit = (state: RootState) => state.booking.calculateDeposit;
153
+
154
+ export const selectIsRetry = (state: RootState) => state.booking.isRetry;
155
+
156
+ export const selectStartDate = (state: RootState) => state.booking.package?.options.find((x) => x.isSelected)?.fromDate;
157
+
158
+ export const selectAgents = (state: RootState) => state.booking.agents;
159
+
160
+ export const selectCountries = (state: RootState) => state.booking.countries;
161
+
162
+ export const selectProductCode = (state: RootState) => state.booking.productAttributes?.productCode;
163
+
164
+ export const selectAccommodationCodes = (state: RootState) => {
165
+ const accommodationCodes: string[] = [];
166
+ state.booking.package?.options.forEach((o) => {
167
+ o.rooms.forEach((r) =>
168
+ r.options.forEach((ro) => {
169
+ if (!accommodationCodes.some((y) => y === ro.accommodationCode)) {
170
+ accommodationCodes.push(ro.accommodationCode);
171
+ }
172
+ })
173
+ );
174
+ });
175
+ return accommodationCodes;
176
+ };
177
+
178
+ export const selectAccommodationViews = (state: RootState) => state.booking.accommodationViews;
179
+
180
+ export const selectBookingQuery = (state: RootState) => {
181
+ const bookingAttributes = state.booking.bookingAttributes;
182
+
183
+ if (!bookingAttributes) {
184
+ return undefined;
185
+ }
186
+
187
+ const params: Record<string, string> = {};
188
+ Object.entries(bookingAttributes).forEach(([key, value]) => {
189
+ if (key === 'startDate' || key === 'endDate') {
190
+ value = format(parseISO(value), 'yyyy-MM-dd');
191
+ }
192
+
193
+ if (key === 'rooms') {
194
+ value = JsonURL.stringify(
195
+ (value as Room[]).map((room) => omit(room, ['children'])),
196
+ {
197
+ AQF: true
198
+ }
199
+ );
200
+ }
201
+
202
+ if (key === 'allotmentIds' && !value.length) {
203
+ value = undefined;
204
+ }
205
+
206
+ if (key === 'flight' && value) {
207
+ var flightInfo = value as FlightInfo;
208
+ value = JsonURL.stringify(flightInfo, { AQF: true });
209
+ }
210
+
211
+ if (value) {
212
+ params[key] = value;
213
+ }
214
+ });
215
+
216
+ return params;
217
+ };
218
+
219
+ export const selectBookingQueryString = createSelector(selectBookingQuery, (params) => {
220
+ if (!params) {
221
+ return undefined;
222
+ }
223
+
224
+ return Object.keys(params)
225
+ .filter((key) => typeof params[key] !== 'undefined')
226
+ .map((key) => `${key}=${params[key]}`)
227
+ .join('&');
228
+ });
229
+
230
+ export const selectMainBookerId = createSelector(selectTravelersFormValues, (formValues) => formValues?.mainBookerId);
231
+
232
+ export const selectBookingPackagePax = createSelector(selectTravelersFormValues, (formValues) => {
233
+ var pax: BookingPackagePax[] = [];
234
+
235
+ formValues?.rooms.forEach((r) =>
236
+ r.adults.forEach((x) => {
237
+ const adultPax = buildPax(x, formValues?.mainBookerId);
238
+
239
+ if (adultPax.isMainBooker) {
240
+ adultPax.mobilePhone = formValues?.phone;
241
+ adultPax.email = formValues?.email;
242
+ }
243
+
244
+ pax.push(adultPax);
245
+ })
246
+ );
247
+
248
+ formValues?.rooms.forEach((r) =>
249
+ r.children.forEach((x) => {
250
+ pax.push(buildPax(x));
251
+ })
252
+ );
253
+
254
+ return pax;
255
+ });
256
+
257
+ export const selectBookingAddress = createSelector(selectTravelersFormValues, selectBookingPackagePax, selectBookingType, (formValues, pax, bookingType) => {
258
+ const mainBooker = pax.find((x) => x.isMainBooker);
259
+ if (!mainBooker || bookingType == 'b2b') return undefined;
260
+
261
+ return {
262
+ name: `${mainBooker.firstName} ${mainBooker.lastName}`,
263
+ street: formValues?.street,
264
+ number: formValues?.houseNumber,
265
+ box: formValues?.box,
266
+ postalCode: formValues?.zipCode,
267
+ location: formValues?.place,
268
+ country: formValues?.country,
269
+ mobilePhone: formValues?.phone,
270
+ email: formValues?.email
271
+ } as BookingPackageAddress;
272
+ });
273
+
274
+ export const selectBookingPackageRequest = createSelector(selectOfficeId, selectAgentId, selectAgentAdressId, (officeId, agentId, agentAdressId) => {
275
+ const agencyId = (agentId ?? agentAdressId ?? 0) > 0 ? agentId ?? agentAdressId : null;
276
+
277
+ return {
278
+ officeId: officeId,
279
+ agentId: agencyId,
280
+ payload: null
281
+ } as BookingPackageRequest<any>;
282
+ });
283
+
284
+ export const selectBookingPackageBookRequest = createSelector(
285
+ selectBookingPackageRequest,
286
+ selectBookingOptions,
287
+ selectBookingType,
288
+ selectBookingPackagePax,
289
+ selectBookingAddress,
290
+ selectPackageDetails,
291
+ selectCalculateDeposit,
292
+ selectAgentId,
293
+ selectGeneratePaymentUrl,
294
+ selectSkipPaymentWithAgent,
295
+ selectNotifications,
296
+ selectTagIds,
297
+ selectBookingRemarks,
298
+ selectVoucherCodes,
299
+ (
300
+ bookingPackageRequest: BookingPackageRequest<BookingPackageBookRequest>,
301
+ bookingOptions,
302
+ bookingType,
303
+ pax,
304
+ address,
305
+ packageDetails,
306
+ calculateDeposit,
307
+ agentId,
308
+ generatePaymentUrl,
309
+ skipPaymentWithAgent,
310
+ notifications,
311
+ tagIds,
312
+ remarks,
313
+ voucherCodes
314
+ ) => {
315
+ if (!packageDetails) return null;
316
+
317
+ let returnPaymentUrl = false;
318
+
319
+ if (generatePaymentUrl && (!skipPaymentWithAgent || (agentId ?? 0) == 0)) {
320
+ returnPaymentUrl = true;
321
+ }
322
+
323
+ var entryStatus = 0;
324
+ var customEntryStatusId = undefined;
325
+
326
+ switch (bookingType) {
327
+ case 'b2b':
328
+ if (bookingOptions.b2b.tagIds && bookingOptions.b2b.tagIds.length > 0) {
329
+ tagIds = tagIds?.concat(bookingOptions.b2b.tagIds);
330
+ }
331
+ if (bookingOptions.b2b.entryStatus) {
332
+ entryStatus = bookingOptions.b2b.entryStatus;
333
+ }
334
+ if (bookingOptions.b2b.customEntryStatusId) {
335
+ customEntryStatusId = bookingOptions.b2b.customEntryStatusId;
336
+ }
337
+ break;
338
+ case 'b2b2c':
339
+ if (bookingOptions.b2b2c.tagIds && bookingOptions.b2b2c.tagIds.length > 0) {
340
+ tagIds = tagIds?.concat(bookingOptions.b2b2c.tagIds);
341
+ }
342
+ if (bookingOptions.b2b2c.entryStatus) {
343
+ entryStatus = bookingOptions.b2b2c.entryStatus;
344
+ }
345
+ if (bookingOptions.b2b2c.customEntryStatusId) {
346
+ customEntryStatusId = bookingOptions.b2b2c.customEntryStatusId;
347
+ }
348
+ break;
349
+ default:
350
+ if (bookingOptions.b2c.tagIds && bookingOptions.b2c.tagIds.length > 0) {
351
+ tagIds = tagIds?.concat(bookingOptions.b2c.tagIds);
352
+ }
353
+ if (bookingOptions.b2c.entryStatus) {
354
+ entryStatus = bookingOptions.b2c.entryStatus;
355
+ }
356
+ if (bookingOptions.b2c.customEntryStatusId) {
357
+ customEntryStatusId = bookingOptions.b2c.customEntryStatusId;
358
+ }
359
+ break;
360
+ }
361
+
362
+ bookingPackageRequest.payload = {
363
+ package: packageDetails,
364
+ status: entryStatus,
365
+ customStatusId: customEntryStatusId,
366
+ address: address,
367
+ pax: pax?.length != 0 ? pax : packageDetails.options[0].requestRooms.flatMap((x) => x.pax),
368
+ nonTravelPax: [],
369
+ calculateDeposit: calculateDeposit,
370
+ returnPaymentUrl: returnPaymentUrl,
371
+ notifications: notifications,
372
+ tagIds: tagIds,
373
+ remarks: remarks,
374
+ voucherCodes: voucherCodes,
375
+ customerRequests: []
376
+ };
377
+
378
+ return bookingPackageRequest;
379
+ }
380
+ );
381
+
382
+ export const selectTravelersFirstStep = (state: any) => state.booking.travelersFirstStep;
383
+
384
+ const buildPax = (traveler: Traveler, mainBookerId?: number) => {
385
+ return {
386
+ id: traveler.id,
387
+ gender: parseGender(traveler.gender),
388
+ firstName: traveler.firstName,
389
+ lastName: traveler.lastName,
390
+ dateOfBirth: traveler.birthDate,
391
+ age: traveler.birthDate ? null : traveler.age,
392
+ isMainBooker: traveler.id == mainBookerId
393
+ } as BookingPackagePax;
394
+ };
395
+
396
+ const parseGender = (gender: string): number => {
397
+ switch (gender) {
398
+ case 'm':
399
+ return Gender.male;
400
+ case 'f':
401
+ return Gender.female;
402
+ case 'x':
403
+ default:
404
+ return Gender.other;
405
+ }
406
+ };