@qite/tide-booking-component 1.4.93 → 1.4.94

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 +48786 -29655
  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 +16 -19
  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 +1 -2
  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 +11 -2
  24. package/build/build-cjs/src/booking-product/utils/price.d.ts +10 -1
  25. package/build/build-cjs/src/booking-wizard/api-settings-slice.d.ts +3 -2
  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 +26 -7
  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 +102 -42
  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 +8 -1
  41. package/build/build-cjs/src/booking-wizard/features/booking/selectors.d.ts +645 -479
  42. package/build/build-cjs/src/booking-wizard/features/confirmation/confirmation.d.ts +1 -2
  43. package/build/build-cjs/src/booking-wizard/features/error/error.d.ts +1 -2
  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 +9 -2
  48. package/build/build-cjs/src/booking-wizard/features/flight-options/index.d.ts +1 -2
  49. package/build/build-cjs/src/booking-wizard/features/price-details/price-details-api.d.ts +6 -1
  50. package/build/build-cjs/src/booking-wizard/features/price-details/price-details-slice.d.ts +15 -9
  51. package/build/build-cjs/src/booking-wizard/features/price-details/selectors.d.ts +303 -287
  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 +1 -2
  62. package/build/build-cjs/src/booking-wizard/features/room-options/index.d.ts +1 -2
  63. package/build/build-cjs/src/booking-wizard/features/room-options/room-utils.d.ts +19 -6
  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 +4 -2
  69. package/build/build-cjs/src/booking-wizard/features/sidebar/sidebar.d.ts +24 -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 +1 -2
  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 +1 -2
  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 +8 -1
  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 +1 -2
  85. package/build/build-cjs/src/booking-wizard/store.d.ts +40 -22
  86. package/build/build-cjs/src/booking-wizard/types.d.ts +240 -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 +23 -20
  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 +6 -1
  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 +17 -1
  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 +110 -58
  117. package/build/build-cjs/src/qsm/store/qsm-store.d.ts +20 -7
  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 +1 -2
  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 +1 -2
  143. package/build/build-cjs/src/search-results/features/flights/flight-search-results-self-contained.d.ts +1 -2
  144. package/build/build-cjs/src/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +1 -2
  145. package/build/build-cjs/src/search-results/features/hotels/hotel-search-results-self-contained.d.ts +1 -2
  146. package/build/build-cjs/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +1 -2
  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 +63 -26
  149. package/build/build-cjs/src/search-results/store/search-results-store.d.ts +20 -7
  150. package/build/build-cjs/src/search-results/types.d.ts +104 -104
  151. package/build/build-cjs/src/search-results/utils/flight-utils.d.ts +6 -1
  152. package/build/build-cjs/src/search-results/utils/search-results-utils.d.ts +10 -2
  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 +48504 -29596
  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 +16 -19
  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 +1 -2
  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 +11 -2
  180. package/build/build-esm/src/booking-product/utils/price.d.ts +10 -1
  181. package/build/build-esm/src/booking-wizard/api-settings-slice.d.ts +3 -2
  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 +26 -7
  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 +102 -42
  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 +8 -1
  197. package/build/build-esm/src/booking-wizard/features/booking/selectors.d.ts +645 -479
  198. package/build/build-esm/src/booking-wizard/features/confirmation/confirmation.d.ts +1 -2
  199. package/build/build-esm/src/booking-wizard/features/error/error.d.ts +1 -2
  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 +9 -2
  204. package/build/build-esm/src/booking-wizard/features/flight-options/index.d.ts +1 -2
  205. package/build/build-esm/src/booking-wizard/features/price-details/price-details-api.d.ts +6 -1
  206. package/build/build-esm/src/booking-wizard/features/price-details/price-details-slice.d.ts +15 -9
  207. package/build/build-esm/src/booking-wizard/features/price-details/selectors.d.ts +303 -287
  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 +1 -2
  218. package/build/build-esm/src/booking-wizard/features/room-options/index.d.ts +1 -2
  219. package/build/build-esm/src/booking-wizard/features/room-options/room-utils.d.ts +19 -6
  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 +4 -2
  225. package/build/build-esm/src/booking-wizard/features/sidebar/sidebar.d.ts +24 -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 +1 -2
  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 +1 -2
  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 +8 -1
  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 +1 -2
  241. package/build/build-esm/src/booking-wizard/store.d.ts +40 -22
  242. package/build/build-esm/src/booking-wizard/types.d.ts +240 -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 +23 -20
  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 +6 -1
  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 +17 -1
  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 +110 -58
  273. package/build/build-esm/src/qsm/store/qsm-store.d.ts +20 -7
  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 +1 -2
  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 +1 -2
  299. package/build/build-esm/src/search-results/features/flights/flight-search-results-self-contained.d.ts +1 -2
  300. package/build/build-esm/src/search-results/features/hotels/hotel-flight-search-results-self-contained.d.ts +1 -2
  301. package/build/build-esm/src/search-results/features/hotels/hotel-search-results-self-contained.d.ts +1 -2
  302. package/build/build-esm/src/search-results/features/roundtrips/roundtrip-search-results-self-contained.d.ts +1 -2
  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 +63 -26
  305. package/build/build-esm/src/search-results/store/search-results-store.d.ts +20 -7
  306. package/build/build-esm/src/search-results/types.d.ts +104 -104
  307. package/build/build-esm/src/search-results/utils/flight-utils.d.ts +6 -1
  308. package/build/build-esm/src/search-results/utils/search-results-utils.d.ts +10 -2
  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 +2 -2
  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 +318 -303
  352. package/src/booking-wizard/features/booking/booking-slice.ts +633 -625
  353. package/src/booking-wizard/features/booking/booking.tsx +342 -327
  354. package/src/booking-wizard/features/booking/constants.ts +16 -16
  355. package/src/booking-wizard/features/booking/selectors.ts +411 -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 +79 -77
  366. package/src/booking-wizard/features/price-details/selectors.ts +118 -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 +83 -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 +330 -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 +332 -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 -893
  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 -181
  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 +382 -381
  505. package/src/shared/translations/da-DK.json +382 -381
  506. package/src/shared/translations/de-DE.json +382 -381
  507. package/src/shared/translations/en-GB.json +386 -385
  508. package/src/shared/translations/es-ES.json +382 -381
  509. package/src/shared/translations/fr-BE.json +386 -385
  510. package/src/shared/translations/fr-FR.json +382 -381
  511. package/src/shared/translations/is-IS.json +382 -381
  512. package/src/shared/translations/it-IT.json +382 -381
  513. package/src/shared/translations/ja-JP.json +382 -381
  514. package/src/shared/translations/nl-BE.json +386 -385
  515. package/src/shared/translations/nl-NL.json +382 -381
  516. package/src/shared/translations/no-NO.json +382 -381
  517. package/src/shared/translations/pl-PL.json +382 -381
  518. package/src/shared/translations/pt-PT.json +382 -381
  519. package/src/shared/translations/sv-SE.json +382 -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,625 +1,633 @@
1
- import { PayloadAction, createAsyncThunk, createSlice } from '@reduxjs/toolkit';
2
- import { BookingAttributes, BookingOptions, GroupedFlights, ProductAttributes } from '../../types';
3
-
4
- import {
5
- AirlineBookingPackageOption,
6
- AirportBookingPackageOption,
7
- BookingAirlineGroup,
8
- BookingAirportGroup,
9
- BookingOptionGroup,
10
- BookingOptionPax,
11
- BookingOptionUnit,
12
- BookingPackage,
13
- BookingPackageDetailsRequest,
14
- BookingPackageFlight,
15
- BookingPackagePax,
16
- BookingPackageRequest,
17
- BookingPackageRequestRoom,
18
- BookingPackageRoom,
19
- BookingTravelAgent,
20
- CountryItem,
21
- GenerateBookingAccommodationRequest,
22
- PerBookingPackageOption,
23
- SelectedFlight
24
- } from '@qite/tide-client/build/types';
25
- import { first, isEmpty, isNil, range } from 'lodash';
26
- import { RootState } from '../../store';
27
- import { selectAgentId } from '../travelers-form/travelers-form-slice';
28
- import packageApi from './api';
29
- import { BookingStep, OPTIONS_FORM_STEP } from './constants';
30
- import {
31
- selectAccommodationCodes,
32
- selectBookingAttributes,
33
- selectBookingRooms,
34
- selectLanguageCode,
35
- selectOfficeId,
36
- selectProductAttributes,
37
- selectProductCode
38
- } from './selectors';
39
-
40
- export interface BookingState {
41
- officeId: number;
42
- languageCode: string;
43
- productAttributes?: ProductAttributes;
44
- bookingAttributes?: BookingAttributes;
45
- calculateDeposit: boolean;
46
- bookingNumber?: string;
47
- isRetry: boolean;
48
- package?: BookingPackage;
49
- agents?: BookingTravelAgent[];
50
- isBusy: boolean;
51
- skipPaymentWithAgent: boolean;
52
- generatePaymentUrl: boolean;
53
- isUnavailable?: boolean;
54
- tagIds?: number[];
55
- agentAdressId?: number;
56
- remarks?: string;
57
- voucherCodes?: string[];
58
- bookingOptions: BookingOptions;
59
- bookingType: string;
60
- currentStep: BookingStep;
61
- translations?: {
62
- language: string;
63
- value: any;
64
- }[];
65
- accommodationViewId?: number;
66
- accommodationViews?: { [key: string]: string };
67
- isOption?: boolean;
68
- travelersFirstStep: boolean;
69
- isFetching?: boolean;
70
- hasMounted: boolean;
71
- countries?: CountryItem[];
72
- }
73
-
74
- const initialState: BookingState = {
75
- officeId: 1,
76
- languageCode: 'nl-BE',
77
- bookingOptions: {
78
- b2b: {
79
- tagIds: [],
80
- entryStatus: 2,
81
- customEntryStatusId: undefined
82
- },
83
- b2b2c: {
84
- tagIds: [],
85
- entryStatus: 2,
86
- customEntryStatusId: undefined
87
- },
88
- b2c: {
89
- tagIds: [],
90
- entryStatus: 0,
91
- customEntryStatusId: undefined
92
- }
93
- },
94
- bookingType: 'b2c',
95
- productAttributes: undefined,
96
- bookingAttributes: undefined,
97
- calculateDeposit: false,
98
- bookingNumber: undefined,
99
- isRetry: false,
100
- package: undefined,
101
- isBusy: false,
102
- skipPaymentWithAgent: false,
103
- generatePaymentUrl: false,
104
- tagIds: [],
105
- agentAdressId: undefined,
106
- currentStep: OPTIONS_FORM_STEP,
107
- translations: undefined,
108
- travelersFirstStep: false,
109
- isFetching: false,
110
- hasMounted: false,
111
- countries: undefined
112
- };
113
-
114
- export const fetchPackage = createAsyncThunk('booking/fetchPackage', async (_, { dispatch }) => {
115
- dispatch(setFetchingPackage(true));
116
- await dispatch(fetchAgents());
117
- await dispatch(fetchCountries());
118
- await dispatch(fetchPackageDetails());
119
- await dispatch(fetchAccommodationViews());
120
- dispatch(setFetchingPackage(false));
121
- });
122
-
123
- export const fetchCountries = createAsyncThunk('booking/countries', async (_, { dispatch, getState, signal }) => {
124
- const settings = getState() as RootState;
125
- return await packageApi.fetchCountries(signal, settings.apiSettings);
126
- });
127
-
128
- const fetchAgents = createAsyncThunk('booking/agents', async (_, { dispatch, getState, signal }) => {
129
- const settings = getState() as RootState;
130
- return await packageApi.fetchAgents(signal, settings.apiSettings);
131
- });
132
-
133
- const fetchPackageDetails = createAsyncThunk('booking/details', async (_, { dispatch, getState, signal }) => {
134
- const state = getState() as RootState;
135
-
136
- const officeId = selectOfficeId(state);
137
- const productAttributes = selectProductAttributes(state);
138
- const bookingAttributes = selectBookingAttributes(state);
139
- const agentId = selectAgentId(state);
140
- const rooms = selectBookingRooms(state);
141
- const languageCode = selectLanguageCode(state);
142
-
143
- if (isNil(productAttributes)) {
144
- throw Error('productAttributes could not be found');
145
- }
146
-
147
- if (isNil(bookingAttributes)) {
148
- throw Error('bookingAttributes could not be found');
149
- }
150
-
151
- if (!rooms?.length) {
152
- throw Error('rooms could not be found');
153
- }
154
-
155
- var requestRooms = rooms?.map((x, i) => {
156
- var room = { index: i, pax: [] } as BookingPackageRequestRoom;
157
- range(0, x.adults).forEach(() => {
158
- room.pax.push({
159
- age: 30
160
- } as BookingPackagePax);
161
- });
162
- x.childAges.forEach((x) => {
163
- room.pax.push({
164
- age: x
165
- } as BookingPackagePax);
166
- });
167
- return room;
168
- });
169
-
170
- const isAllotment =
171
- bookingAttributes.tourCode || bookingAttributes.allotmentName || (bookingAttributes.allotmentIds && bookingAttributes.allotmentIds.length);
172
-
173
- let searchType = isAllotment
174
- ? 1 // ALLOTMENT
175
- : 0; // DEFAULT;
176
-
177
- let outwardFlight: SelectedFlight | undefined;
178
- let returnFlight: SelectedFlight | undefined;
179
- if (bookingAttributes.flightRouteId && bookingAttributes.flight) {
180
- searchType = 3; // FLIGHT;
181
-
182
- outwardFlight = {
183
- flightCode: bookingAttributes.flight.outwardCode,
184
- startDateTime: bookingAttributes.flight.outwardDepartureDate,
185
- endDateTime: bookingAttributes.flight.outwardArrivalDate,
186
- airlines: bookingAttributes.flight.outwardAirlines,
187
- flightNumbers: bookingAttributes.flight.outwardNumbers,
188
- fareCode: bookingAttributes.flight.outwardFareCode,
189
- marketingName: bookingAttributes.flight.outwardMarketingName,
190
- luggageIncluded: bookingAttributes.flight.luggageIncluded
191
- } as SelectedFlight;
192
-
193
- if (bookingAttributes.flight.returnCode) {
194
- returnFlight = {
195
- flightCode: bookingAttributes.flight.returnCode,
196
- startDateTime: bookingAttributes.flight.returnDepartureDate,
197
- endDateTime: bookingAttributes.flight.returnArrivalDate,
198
- airlines: bookingAttributes.flight.returnAirlines,
199
- flightNumbers: bookingAttributes.flight.returnNumbers,
200
- fareCode: bookingAttributes.flight.returnFareCode,
201
- marketingName: bookingAttributes.flight.returnMarketingName,
202
- luggageIncluded: bookingAttributes.flight.luggageIncluded
203
- } as SelectedFlight;
204
- }
205
- }
206
-
207
- const request = {
208
- officeId: officeId,
209
- agentId: agentId,
210
- payload: {
211
- searchType: searchType,
212
- catalogueId: bookingAttributes.catalogueId,
213
- productCode: productAttributes.productCode,
214
- fromDate: bookingAttributes.startDate,
215
- toDate: bookingAttributes.endDate,
216
- includeFlights: bookingAttributes.includeFlights,
217
- allotmentName: bookingAttributes.allotmentName,
218
- allotmentIds: bookingAttributes.allotmentIds ?? [],
219
- tourCode: bookingAttributes.tourCode,
220
- rooms: requestRooms,
221
- routeId: bookingAttributes.flightRouteId,
222
- outwardFlight: outwardFlight,
223
- returnFlight: returnFlight,
224
- vendorConfigurationId: bookingAttributes.vendorConfigurationId
225
- } as BookingPackageDetailsRequest
226
- } as BookingPackageRequest<BookingPackageDetailsRequest>;
227
-
228
- return await packageApi.fetchDetails(request, signal, languageCode, state.apiSettings);
229
- });
230
-
231
- const fetchAccommodationViews = createAsyncThunk('booking/accommodationViews', async (_, { dispatch, getState, signal }) => {
232
- const state = getState() as RootState;
233
- if (!state.booking.accommodationViewId) return Promise.resolve();
234
-
235
- const languageCode = selectLanguageCode(state);
236
- const accommodationCodes = selectAccommodationCodes(state);
237
- const productCode = selectProductCode(state);
238
-
239
- if (!productCode) {
240
- throw Error('No product selected');
241
- }
242
-
243
- const request = {
244
- languageCode: languageCode,
245
- productCode: productCode,
246
- accommodationCodes: accommodationCodes,
247
- contentViewId: state.booking.accommodationViewId
248
- } as GenerateBookingAccommodationRequest;
249
-
250
- return await packageApi.fetchAccommodationViews(request, signal, state.apiSettings);
251
- });
252
-
253
- const getActiveOption = (state: BookingState) => {
254
- if (state.package) return state.package.options.find((x) => x.isSelected);
255
- return null;
256
- };
257
-
258
- const changeOutwardFlight = (state: BookingPackage, flight: BookingPackageFlight) => {
259
- const currentOutwardFlight = state.outwardFlights.find((x) => x.isSelected)!;
260
- const currentReturnFlight = state.returnFlights.find((x) => x.isSelected)!;
261
-
262
- if (currentOutwardFlight?.entryLineGuid == flight.entryLineGuid) return;
263
-
264
- const newFlight = state.outwardFlights.find((x) => x.entryLineGuid == flight.entryLineGuid);
265
- if (newFlight) {
266
- newFlight.isSelected = true;
267
- currentOutwardFlight.isSelected = false;
268
-
269
- if (newFlight.externalGuid) {
270
- if (currentOutwardFlight.externalGuid !== newFlight.externalGuid) {
271
- const newReturnFlight = state.returnFlights.find((x) => x.externalGuid === newFlight.externalGuid)!;
272
-
273
- currentReturnFlight.isSelected = false;
274
- newReturnFlight.isSelected = true;
275
- }
276
- } else if (currentReturnFlight.externalGuid) {
277
- const firstInternal = state.returnFlights.find((x) => !x.externalGuid);
278
-
279
- if (firstInternal) {
280
- currentReturnFlight.isSelected = false;
281
- firstInternal.isSelected = true;
282
- }
283
- }
284
- }
285
- };
286
-
287
- const changeReturnFlight = (state: BookingPackage, flight: BookingPackageFlight) => {
288
- const currentReturnFlight = state.returnFlights.find((x) => x.isSelected)!;
289
-
290
- if (currentReturnFlight?.entryLineGuid == flight.entryLineGuid) return;
291
-
292
- const newFlight = state.outwardFlights.find((x) => x.entryLineGuid == flight.entryLineGuid);
293
- if (newFlight) {
294
- newFlight.isSelected = true;
295
- currentReturnFlight.isSelected = false;
296
- }
297
- };
298
-
299
- const changePackageOption = (state: BookingPackage) => {
300
- const selectedOutward = state.outwardFlights.find((x) => x.isSelected)!;
301
- const selectedReturn = state.returnFlights.find((x) => x.isSelected)!;
302
- const validOptions = selectedOutward.validOptions.filter((x) => selectedReturn.validOptions.some((y) => x === y));
303
-
304
- const currentOption = state.options.find((x) => x.isSelected)!;
305
- if (validOptions.some((x) => x === currentOption.id)) return;
306
-
307
- const firstOption = state.options.find((x) => validOptions.some((y) => y === x.id))!;
308
- currentOption.isSelected = false;
309
- firstOption.isSelected = true;
310
-
311
- const currentRooms = currentOption.rooms.map((r) => {
312
- const selectedOption = r.options.find((o) => o.isSelected)!;
313
-
314
- return {
315
- accommodation: selectedOption?.accommodationCode,
316
- regime: selectedOption?.regimeCode
317
- };
318
- });
319
-
320
- firstOption.rooms.forEach((r, i) => {
321
- const currentRoom = currentRooms[i];
322
-
323
- const selectedOption = r.options.find((o) => o.isSelected);
324
- const selection = r.options.find((x) => x.accommodationCode === currentRoom.accommodation && x.regimeCode === currentRoom.regime);
325
-
326
- if (selection) {
327
- if (selection.entryLineGuid !== selectedOption?.entryLineGuid) {
328
- if (selectedOption) selectedOption.isSelected = false;
329
- selection.isSelected = true;
330
- }
331
- } else {
332
- const accommodationSelection = r.options.find((x) => x.accommodationCode === currentRoom.accommodation);
333
- if (accommodationSelection) {
334
- if (accommodationSelection.entryLineGuid !== selectedOption?.entryLineGuid) {
335
- if (selectedOption) selectedOption.isSelected = false;
336
- accommodationSelection.isSelected = true;
337
- }
338
- } else {
339
- const firstOption = r.options[0];
340
- if (firstOption.entryLineGuid !== selectedOption?.entryLineGuid) {
341
- if (selectedOption) selectedOption.isSelected = false;
342
- firstOption.isSelected = true;
343
- }
344
- }
345
- }
346
- });
347
- };
348
-
349
- const bookingSlice = createSlice({
350
- name: 'booking',
351
- initialState,
352
- reducers: {
353
- setHasMounted(state, action: PayloadAction<boolean>) {
354
- state.hasMounted = action.payload;
355
- },
356
- setIsFetching(state, action: PayloadAction<boolean>) {
357
- state.isFetching = action.payload;
358
- },
359
- setOfficeId(state, action: PayloadAction<number>) {
360
- state.officeId = action.payload;
361
- },
362
- setLanguageCode(state, action: PayloadAction<string>) {
363
- state.languageCode = action.payload;
364
- },
365
- setTranslations(state, action: PayloadAction<any>) {
366
- state.translations = action.payload;
367
- },
368
- setBookingOptions(state, action: PayloadAction<BookingOptions>) {
369
- state.bookingOptions = action.payload;
370
- },
371
- setBookingType(state, action: PayloadAction<string>) {
372
- state.bookingType = action.payload;
373
- },
374
- setProductAttributes(state, action: PayloadAction<ProductAttributes | undefined>) {
375
- state.productAttributes = action.payload;
376
- },
377
- setBookingAttributes(state, action: PayloadAction<BookingAttributes | undefined>) {
378
- state.bookingAttributes = action.payload;
379
- },
380
- setCalculateDeposit(state, action: PayloadAction<boolean>) {
381
- state.calculateDeposit = action.payload;
382
- },
383
- setBookingNumber(state, action: PayloadAction<string>) {
384
- state.bookingNumber = action.payload;
385
- },
386
- setIsRetry(state, action: PayloadAction<boolean>) {
387
- state.isRetry = action.payload;
388
- },
389
- setFetchingPackage(state, action: PayloadAction<boolean>) {
390
- state.isBusy = action.payload;
391
- },
392
- setPackage(state, action: PayloadAction<BookingPackage | undefined>) {
393
- state.package = action.payload;
394
- },
395
- setPackageRooms(state, action: PayloadAction<BookingPackageRoom[]>) {
396
- const option = getActiveOption(state);
397
- if (option) option.rooms = action.payload;
398
- },
399
- setPackageOptionPax(state, action: PayloadAction<BookingOptionPax[]>) {
400
- const option = getActiveOption(state);
401
- if (option) option.optionPax = action.payload;
402
- },
403
- setPackageOptionUnits(state, action: PayloadAction<BookingOptionUnit[]>) {
404
- const option = getActiveOption(state);
405
- if (option) option.optionUnits = action.payload;
406
- },
407
- setSkipPayment(state, action: PayloadAction<boolean>) {
408
- state.skipPaymentWithAgent = action.payload;
409
- },
410
- setGeneratePaymentUrl(state, action: PayloadAction<boolean>) {
411
- state.generatePaymentUrl = action.payload;
412
- },
413
- setPackageGroups(state, action: PayloadAction<BookingOptionGroup<PerBookingPackageOption>[]>) {
414
- const option = getActiveOption(state);
415
- if (option) option.groups = action.payload;
416
- },
417
- setPackageAirlineGroups(state, action: PayloadAction<BookingAirlineGroup<AirlineBookingPackageOption>[]>) {
418
- const option = getActiveOption(state);
419
- if (option) option.airlineGroups = action.payload;
420
- },
421
- setPackageAirportGroups(state, action: PayloadAction<BookingAirportGroup<AirportBookingPackageOption>[]>) {
422
- const option = getActiveOption(state);
423
- if (option) option.airportGroups = action.payload;
424
- },
425
- setTagIds(state, action: PayloadAction<number[] | undefined>) {
426
- state.tagIds = action.payload;
427
- },
428
- setAgentAdressId(state, action: PayloadAction<number | undefined>) {
429
- state.agentAdressId = action.payload;
430
- },
431
- setBookingRemarks(state, action: PayloadAction<string>) {
432
- state.remarks = action.payload;
433
- },
434
- setVoucherCodes(state, action: PayloadAction<string[]>) {
435
- state.voucherCodes = action.payload;
436
- },
437
- setCurrentStep(state, action: PayloadAction<BookingStep>) {
438
- document.body.scrollTop = 0; // For Safari
439
- document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
440
-
441
- state.currentStep = action.payload;
442
- },
443
- setFlights(state, action: PayloadAction<GroupedFlights>) {
444
- if (!state.package) return;
445
-
446
- changeOutwardFlight(state.package, action.payload.selectedOutward);
447
- changeReturnFlight(state.package, action.payload.selectedReturn);
448
- changePackageOption(state.package);
449
- },
450
- setAccommodationViewId(state, action: PayloadAction<number>) {
451
- state.accommodationViewId = action.payload;
452
- },
453
- setIsOption(state, action: PayloadAction<boolean>) {
454
- state.isOption = action.payload;
455
- },
456
- setTravelersFirstStep(state, action: PayloadAction<boolean>) {
457
- state.travelersFirstStep = action.payload;
458
- },
459
- setIsUnavailable(state, action: PayloadAction<boolean>) {
460
- state.isUnavailable = action.payload;
461
- }
462
- },
463
- extraReducers: (builder) => {
464
- builder.addCase(fetchPackageDetails.fulfilled, (state, action) => {
465
- if (action.payload) {
466
- if (action.payload.errorCode) {
467
- console.error(action.payload.errorCode, action.payload.errorMessage, action.payload.errorDetails);
468
-
469
- state.isUnavailable = true;
470
- return;
471
- }
472
-
473
- if (!action.payload.payload) {
474
- state.isUnavailable = true;
475
- /* state.package = undefined; */
476
- return;
477
- }
478
-
479
- state.isUnavailable = false;
480
-
481
- const bookingRooms = state.bookingAttributes?.rooms;
482
- const flight = state.bookingAttributes?.flight;
483
- const packageDetails = action.payload.payload;
484
-
485
- let activeOption = packageDetails.options.find((x) => x.isSelected)!;
486
-
487
- if (flight) {
488
- const selectedOutward = packageDetails.outwardFlights.find((x) => x.isSelected);
489
- const outwardFlights = packageDetails.outwardFlights.filter(
490
- (x) =>
491
- x.code === flight.outwardCode &&
492
- x.flightMetaData.flightLines[0]!.flightClass === flight.outwardClass &&
493
- x.flightMetaData.flightLines.map((y) => y.number).join(',') === flight.outwardNumbers.join(',')
494
- );
495
-
496
- // ook bij identieke vertrekvluchten eerst kijken als de returnflight kan gekoppeld worden.
497
- // op die manier moet het juiste koppel selected worden.
498
- // Enkel werkend met externe vluchten
499
- let outwardFlight: BookingPackageFlight | undefined = undefined;
500
- if (!isEmpty(outwardFlights)) {
501
- const returnExternalGuids = packageDetails.returnFlights
502
- .filter(
503
- (x) =>
504
- x.code === flight.returnCode &&
505
- x.flightMetaData.flightLines[0]!.flightClass === flight.returnClass &&
506
- x.flightMetaData.flightLines.map((y) => y.number).join(',') === flight.returnNumbers.join(',')
507
- )
508
- .map((f) => f.externalGuid)
509
- .filter((e) => e);
510
- outwardFlight = outwardFlights.find((o) => returnExternalGuids.includes(o.externalGuid));
511
- if (!outwardFlight) {
512
- outwardFlight = first(outwardFlights);
513
- }
514
- }
515
-
516
- if (selectedOutward && outwardFlight) {
517
- selectedOutward.isSelected = false;
518
- outwardFlight.isSelected = true;
519
- }
520
-
521
- const selectedReturn = packageDetails.returnFlights.find((x) => x.isSelected);
522
- const returnFlight = outwardFlight?.externalGuid
523
- ? packageDetails.returnFlights.find((x) => x.externalGuid === outwardFlight?.externalGuid)
524
- : packageDetails.returnFlights.find(
525
- (x) =>
526
- x.code === flight.returnCode &&
527
- x.flightMetaData.flightLines[0]!.flightClass === flight.returnClass &&
528
- x.flightMetaData.flightLines.map((y) => y.number).join(',') === flight.returnNumbers.join(',')
529
- );
530
-
531
- if (selectedReturn && returnFlight) {
532
- selectedReturn.isSelected = false;
533
- returnFlight.isSelected = true;
534
- }
535
-
536
- if (outwardFlight && returnFlight) {
537
- if (!outwardFlight.validOptions.some((x) => x == activeOption.id)) {
538
- activeOption.isSelected = false;
539
-
540
- activeOption = packageDetails.options.find((x) => outwardFlight?.validOptions.some((y) => y === x.id))!;
541
- activeOption.isSelected = true;
542
- }
543
- }
544
- }
545
-
546
- if (activeOption && bookingRooms?.some((x) => x.accommodationCode || x.regimeCode)) {
547
- bookingRooms.forEach((room, i) => {
548
- if (room.accommodationCode || room.regimeCode) {
549
- activeOption.rooms[i].options = activeOption.rooms[i].options.map((ro) => ({
550
- ...ro,
551
- isSelected: ro.accommodationCode == room.accommodationCode && ro.regimeCode == room.regimeCode
552
- }));
553
- }
554
-
555
- // Fallback to an option that has the requested accommodation OR regime if the requested option is not available. If no fallback is available, select the first option.
556
- if (!activeOption.rooms[i].options.some((x) => x.isSelected)) {
557
- const fallbackOption = activeOption.rooms[i].options.find(
558
- (x) => x.accommodationCode == room.accommodationCode || x.regimeCode == room.regimeCode
559
- );
560
- if (fallbackOption) {
561
- fallbackOption.isSelected = true;
562
- } else {
563
- activeOption.rooms[i].options[0].isSelected = true;
564
- }
565
- }
566
- });
567
- }
568
-
569
- state.package = packageDetails;
570
- }
571
- });
572
- builder.addCase(fetchAgents.fulfilled, (state, action) => {
573
- if (action.payload) {
574
- state.agents = action.payload;
575
- }
576
- });
577
- builder.addCase(fetchAccommodationViews.fulfilled, (state, action) => {
578
- if (action.payload) {
579
- state.accommodationViews = action.payload;
580
- }
581
- });
582
- builder.addCase(fetchCountries.fulfilled, (state, action) => {
583
- if (action.payload.items) {
584
- state.countries = action.payload.items;
585
- }
586
- });
587
- }
588
- });
589
-
590
- export const {
591
- setOfficeId,
592
- setLanguageCode,
593
- setTranslations,
594
- setBookingOptions,
595
- setBookingType,
596
- setProductAttributes,
597
- setBookingAttributes,
598
- setCalculateDeposit,
599
- setBookingNumber,
600
- setIsRetry,
601
- setFetchingPackage,
602
- setIsFetching,
603
- setHasMounted,
604
- setPackage,
605
- setPackageRooms,
606
- setPackageOptionPax,
607
- setPackageOptionUnits,
608
- setPackageGroups,
609
- setSkipPayment,
610
- setGeneratePaymentUrl,
611
- setTagIds,
612
- setAgentAdressId,
613
- setBookingRemarks,
614
- setVoucherCodes,
615
- setCurrentStep,
616
- setPackageAirlineGroups,
617
- setPackageAirportGroups,
618
- setFlights,
619
- setAccommodationViewId,
620
- setIsOption,
621
- setTravelersFirstStep,
622
- setIsUnavailable
623
- } = bookingSlice.actions;
624
-
625
- export default bookingSlice.reducer;
1
+ import { PayloadAction, createAsyncThunk, createSlice } from '@reduxjs/toolkit';
2
+ import { BookingAttributes, BookingOptions, GroupedFlights, ProductAttributes } from '../../types';
3
+
4
+ import {
5
+ AirlineBookingPackageOption,
6
+ AirportBookingPackageOption,
7
+ BookingAirlineGroup,
8
+ BookingAirportGroup,
9
+ BookingOptionGroup,
10
+ BookingOptionPax,
11
+ BookingOptionUnit,
12
+ BookingPackage,
13
+ BookingPackageDetailsRequest,
14
+ BookingPackageFlight,
15
+ BookingPackagePax,
16
+ BookingPackageRequest,
17
+ BookingPackageRequestRoom,
18
+ BookingPackageRoom,
19
+ BookingTravelAgent,
20
+ CountryItem,
21
+ GenerateBookingAccommodationRequest,
22
+ PerBookingPackageOption,
23
+ SelectedFlight
24
+ } from '@qite/tide-client/build/types';
25
+ import { first, isEmpty, isNil, range } from 'lodash';
26
+ import { RootState } from '../../store';
27
+ import { selectAgentId } from '../travelers-form/travelers-form-slice';
28
+ import packageApi from './api';
29
+ import { BookingStep, OPTIONS_FORM_STEP } from './constants';
30
+ import {
31
+ selectAccommodationCodes,
32
+ selectAgentAdressId,
33
+ selectBookingAttributes,
34
+ selectBookingRooms,
35
+ selectLanguageCode,
36
+ selectOfficeId,
37
+ selectProductAttributes,
38
+ selectProductCode
39
+ } from './selectors';
40
+
41
+ export interface BookingState {
42
+ officeId: number;
43
+ languageCode: string;
44
+ productAttributes?: ProductAttributes;
45
+ bookingAttributes?: BookingAttributes;
46
+ calculateDeposit: boolean;
47
+ showCommission?: boolean;
48
+ bookingNumber?: string;
49
+ isRetry: boolean;
50
+ package?: BookingPackage;
51
+ agents?: BookingTravelAgent[];
52
+ isBusy: boolean;
53
+ skipPaymentWithAgent: boolean;
54
+ generatePaymentUrl: boolean;
55
+ isUnavailable?: boolean;
56
+ tagIds?: number[];
57
+ agentAdressId?: number;
58
+ remarks?: string;
59
+ voucherCodes?: string[];
60
+ bookingOptions: BookingOptions;
61
+ bookingType: string;
62
+ currentStep: BookingStep;
63
+ translations?: {
64
+ language: string;
65
+ value: any;
66
+ }[];
67
+ accommodationViewId?: number;
68
+ accommodationViews?: { [key: string]: string };
69
+ isOption?: boolean;
70
+ travelersFirstStep: boolean;
71
+ isFetching?: boolean;
72
+ hasMounted: boolean;
73
+ countries?: CountryItem[];
74
+ }
75
+
76
+ const initialState: BookingState = {
77
+ officeId: 1,
78
+ languageCode: 'nl-BE',
79
+ bookingOptions: {
80
+ b2b: {
81
+ tagIds: [],
82
+ entryStatus: 2,
83
+ customEntryStatusId: undefined
84
+ },
85
+ b2b2c: {
86
+ tagIds: [],
87
+ entryStatus: 2,
88
+ customEntryStatusId: undefined
89
+ },
90
+ b2c: {
91
+ tagIds: [],
92
+ entryStatus: 0,
93
+ customEntryStatusId: undefined
94
+ }
95
+ },
96
+ bookingType: 'b2c',
97
+ productAttributes: undefined,
98
+ bookingAttributes: undefined,
99
+ calculateDeposit: false,
100
+ showCommission: false,
101
+ bookingNumber: undefined,
102
+ isRetry: false,
103
+ package: undefined,
104
+ isBusy: false,
105
+ skipPaymentWithAgent: false,
106
+ generatePaymentUrl: false,
107
+ tagIds: [],
108
+ agentAdressId: undefined,
109
+ currentStep: OPTIONS_FORM_STEP,
110
+ translations: undefined,
111
+ travelersFirstStep: false,
112
+ isFetching: false,
113
+ hasMounted: false,
114
+ countries: undefined
115
+ };
116
+
117
+ export const fetchPackage = createAsyncThunk('booking/fetchPackage', async (_, { dispatch }) => {
118
+ dispatch(setFetchingPackage(true));
119
+ await dispatch(fetchAgents());
120
+ await dispatch(fetchCountries());
121
+ await dispatch(fetchPackageDetails());
122
+ await dispatch(fetchAccommodationViews());
123
+ dispatch(setFetchingPackage(false));
124
+ });
125
+
126
+ export const fetchCountries = createAsyncThunk('booking/countries', async (_, { dispatch, getState, signal }) => {
127
+ const settings = getState() as RootState;
128
+ return await packageApi.fetchCountries(signal, settings.apiSettings);
129
+ });
130
+
131
+ const fetchAgents = createAsyncThunk('booking/agents', async (_, { dispatch, getState, signal }) => {
132
+ const settings = getState() as RootState;
133
+ return await packageApi.fetchAgents(signal, settings.apiSettings);
134
+ });
135
+
136
+ const fetchPackageDetails = createAsyncThunk('booking/details', async (_, { dispatch, getState, signal }) => {
137
+ const state = getState() as RootState;
138
+
139
+ const officeId = selectOfficeId(state);
140
+ const productAttributes = selectProductAttributes(state);
141
+ const bookingAttributes = selectBookingAttributes(state);
142
+ const agentId = selectAgentId(state);
143
+ const agentAdressId = selectAgentAdressId(state);
144
+ const rooms = selectBookingRooms(state);
145
+ const languageCode = selectLanguageCode(state);
146
+
147
+ if (isNil(productAttributes)) {
148
+ throw Error('productAttributes could not be found');
149
+ }
150
+
151
+ if (isNil(bookingAttributes)) {
152
+ throw Error('bookingAttributes could not be found');
153
+ }
154
+
155
+ if (!rooms?.length) {
156
+ throw Error('rooms could not be found');
157
+ }
158
+
159
+ var requestRooms = rooms?.map((x, i) => {
160
+ var room = { index: i, pax: [] } as BookingPackageRequestRoom;
161
+ range(0, x.adults).forEach(() => {
162
+ room.pax.push({
163
+ age: 30
164
+ } as BookingPackagePax);
165
+ });
166
+ x.childAges.forEach((x) => {
167
+ room.pax.push({
168
+ age: x
169
+ } as BookingPackagePax);
170
+ });
171
+ return room;
172
+ });
173
+
174
+ const isAllotment =
175
+ bookingAttributes.tourCode || bookingAttributes.allotmentName || (bookingAttributes.allotmentIds && bookingAttributes.allotmentIds.length);
176
+
177
+ let searchType = isAllotment
178
+ ? 1 // ALLOTMENT
179
+ : 0; // DEFAULT;
180
+
181
+ let outwardFlight: SelectedFlight | undefined;
182
+ let returnFlight: SelectedFlight | undefined;
183
+ if (bookingAttributes.flightRouteId && bookingAttributes.flight) {
184
+ searchType = 3; // FLIGHT;
185
+
186
+ outwardFlight = {
187
+ flightCode: bookingAttributes.flight.outwardCode,
188
+ startDateTime: bookingAttributes.flight.outwardDepartureDate,
189
+ endDateTime: bookingAttributes.flight.outwardArrivalDate,
190
+ airlines: bookingAttributes.flight.outwardAirlines,
191
+ flightNumbers: bookingAttributes.flight.outwardNumbers,
192
+ fareCode: bookingAttributes.flight.outwardFareCode,
193
+ marketingName: bookingAttributes.flight.outwardMarketingName,
194
+ luggageIncluded: bookingAttributes.flight.luggageIncluded
195
+ } as SelectedFlight;
196
+
197
+ if (bookingAttributes.flight.returnCode) {
198
+ returnFlight = {
199
+ flightCode: bookingAttributes.flight.returnCode,
200
+ startDateTime: bookingAttributes.flight.returnDepartureDate,
201
+ endDateTime: bookingAttributes.flight.returnArrivalDate,
202
+ airlines: bookingAttributes.flight.returnAirlines,
203
+ flightNumbers: bookingAttributes.flight.returnNumbers,
204
+ fareCode: bookingAttributes.flight.returnFareCode,
205
+ marketingName: bookingAttributes.flight.returnMarketingName,
206
+ luggageIncluded: bookingAttributes.flight.luggageIncluded
207
+ } as SelectedFlight;
208
+ }
209
+ }
210
+
211
+ const request = {
212
+ officeId: officeId,
213
+ agentId: agentId ?? agentAdressId,
214
+ payload: {
215
+ searchType: searchType,
216
+ catalogueId: bookingAttributes.catalogueId,
217
+ productCode: productAttributes.productCode,
218
+ fromDate: bookingAttributes.startDate,
219
+ toDate: bookingAttributes.endDate,
220
+ includeFlights: bookingAttributes.includeFlights,
221
+ allotmentName: bookingAttributes.allotmentName,
222
+ allotmentIds: bookingAttributes.allotmentIds ?? [],
223
+ tourCode: bookingAttributes.tourCode,
224
+ rooms: requestRooms,
225
+ routeId: bookingAttributes.flightRouteId,
226
+ outwardFlight: outwardFlight,
227
+ returnFlight: returnFlight,
228
+ vendorConfigurationId: bookingAttributes.vendorConfigurationId
229
+ } as BookingPackageDetailsRequest
230
+ } as BookingPackageRequest<BookingPackageDetailsRequest>;
231
+
232
+ return await packageApi.fetchDetails(request, signal, languageCode, state.apiSettings);
233
+ });
234
+
235
+ const fetchAccommodationViews = createAsyncThunk('booking/accommodationViews', async (_, { dispatch, getState, signal }) => {
236
+ const state = getState() as RootState;
237
+ if (!state.booking.accommodationViewId) return Promise.resolve();
238
+
239
+ const languageCode = selectLanguageCode(state);
240
+ const accommodationCodes = selectAccommodationCodes(state);
241
+ const productCode = selectProductCode(state);
242
+
243
+ if (!productCode) {
244
+ throw Error('No product selected');
245
+ }
246
+
247
+ const request = {
248
+ languageCode: languageCode,
249
+ productCode: productCode,
250
+ accommodationCodes: accommodationCodes,
251
+ contentViewId: state.booking.accommodationViewId
252
+ } as GenerateBookingAccommodationRequest;
253
+
254
+ return await packageApi.fetchAccommodationViews(request, signal, state.apiSettings);
255
+ });
256
+
257
+ const getActiveOption = (state: BookingState) => {
258
+ if (state.package) return state.package.options.find((x) => x.isSelected);
259
+ return null;
260
+ };
261
+
262
+ const changeOutwardFlight = (state: BookingPackage, flight: BookingPackageFlight) => {
263
+ const currentOutwardFlight = state.outwardFlights.find((x) => x.isSelected)!;
264
+ const currentReturnFlight = state.returnFlights.find((x) => x.isSelected)!;
265
+
266
+ if (currentOutwardFlight?.entryLineGuid == flight.entryLineGuid) return;
267
+
268
+ const newFlight = state.outwardFlights.find((x) => x.entryLineGuid == flight.entryLineGuid);
269
+ if (newFlight) {
270
+ newFlight.isSelected = true;
271
+ currentOutwardFlight.isSelected = false;
272
+
273
+ if (newFlight.externalGuid) {
274
+ if (currentOutwardFlight.externalGuid !== newFlight.externalGuid) {
275
+ const newReturnFlight = state.returnFlights.find((x) => x.externalGuid === newFlight.externalGuid)!;
276
+
277
+ currentReturnFlight.isSelected = false;
278
+ newReturnFlight.isSelected = true;
279
+ }
280
+ } else if (currentReturnFlight.externalGuid) {
281
+ const firstInternal = state.returnFlights.find((x) => !x.externalGuid);
282
+
283
+ if (firstInternal) {
284
+ currentReturnFlight.isSelected = false;
285
+ firstInternal.isSelected = true;
286
+ }
287
+ }
288
+ }
289
+ };
290
+
291
+ const changeReturnFlight = (state: BookingPackage, flight: BookingPackageFlight) => {
292
+ const currentReturnFlight = state.returnFlights.find((x) => x.isSelected)!;
293
+
294
+ if (currentReturnFlight?.entryLineGuid == flight.entryLineGuid) return;
295
+
296
+ const newFlight = state.outwardFlights.find((x) => x.entryLineGuid == flight.entryLineGuid);
297
+ if (newFlight) {
298
+ newFlight.isSelected = true;
299
+ currentReturnFlight.isSelected = false;
300
+ }
301
+ };
302
+
303
+ const changePackageOption = (state: BookingPackage) => {
304
+ const selectedOutward = state.outwardFlights.find((x) => x.isSelected)!;
305
+ const selectedReturn = state.returnFlights.find((x) => x.isSelected)!;
306
+ const validOptions = selectedOutward.validOptions.filter((x) => selectedReturn.validOptions.some((y) => x === y));
307
+
308
+ const currentOption = state.options.find((x) => x.isSelected)!;
309
+ if (validOptions.some((x) => x === currentOption.id)) return;
310
+
311
+ const firstOption = state.options.find((x) => validOptions.some((y) => y === x.id))!;
312
+ currentOption.isSelected = false;
313
+ firstOption.isSelected = true;
314
+
315
+ const currentRooms = currentOption.rooms.map((r) => {
316
+ const selectedOption = r.options.find((o) => o.isSelected)!;
317
+
318
+ return {
319
+ accommodation: selectedOption?.accommodationCode,
320
+ regime: selectedOption?.regimeCode
321
+ };
322
+ });
323
+
324
+ firstOption.rooms.forEach((r, i) => {
325
+ const currentRoom = currentRooms[i];
326
+
327
+ const selectedOption = r.options.find((o) => o.isSelected);
328
+ const selection = r.options.find((x) => x.accommodationCode === currentRoom.accommodation && x.regimeCode === currentRoom.regime);
329
+
330
+ if (selection) {
331
+ if (selection.entryLineGuid !== selectedOption?.entryLineGuid) {
332
+ if (selectedOption) selectedOption.isSelected = false;
333
+ selection.isSelected = true;
334
+ }
335
+ } else {
336
+ const accommodationSelection = r.options.find((x) => x.accommodationCode === currentRoom.accommodation);
337
+ if (accommodationSelection) {
338
+ if (accommodationSelection.entryLineGuid !== selectedOption?.entryLineGuid) {
339
+ if (selectedOption) selectedOption.isSelected = false;
340
+ accommodationSelection.isSelected = true;
341
+ }
342
+ } else {
343
+ const firstOption = r.options[0];
344
+ if (firstOption.entryLineGuid !== selectedOption?.entryLineGuid) {
345
+ if (selectedOption) selectedOption.isSelected = false;
346
+ firstOption.isSelected = true;
347
+ }
348
+ }
349
+ }
350
+ });
351
+ };
352
+
353
+ const bookingSlice = createSlice({
354
+ name: 'booking',
355
+ initialState,
356
+ reducers: {
357
+ setHasMounted(state, action: PayloadAction<boolean>) {
358
+ state.hasMounted = action.payload;
359
+ },
360
+ setIsFetching(state, action: PayloadAction<boolean>) {
361
+ state.isFetching = action.payload;
362
+ },
363
+ setOfficeId(state, action: PayloadAction<number>) {
364
+ state.officeId = action.payload;
365
+ },
366
+ setLanguageCode(state, action: PayloadAction<string>) {
367
+ state.languageCode = action.payload;
368
+ },
369
+ setTranslations(state, action: PayloadAction<any>) {
370
+ state.translations = action.payload;
371
+ },
372
+ setBookingOptions(state, action: PayloadAction<BookingOptions>) {
373
+ state.bookingOptions = action.payload;
374
+ },
375
+ setBookingType(state, action: PayloadAction<string>) {
376
+ state.bookingType = action.payload;
377
+ },
378
+ setProductAttributes(state, action: PayloadAction<ProductAttributes | undefined>) {
379
+ state.productAttributes = action.payload;
380
+ },
381
+ setBookingAttributes(state, action: PayloadAction<BookingAttributes | undefined>) {
382
+ state.bookingAttributes = action.payload;
383
+ },
384
+ setCalculateDeposit(state, action: PayloadAction<boolean>) {
385
+ state.calculateDeposit = action.payload;
386
+ },
387
+ setShowCommission(state, action: PayloadAction<boolean | undefined>) {
388
+ state.showCommission = action.payload;
389
+ },
390
+ setBookingNumber(state, action: PayloadAction<string>) {
391
+ state.bookingNumber = action.payload;
392
+ },
393
+ setIsRetry(state, action: PayloadAction<boolean>) {
394
+ state.isRetry = action.payload;
395
+ },
396
+ setFetchingPackage(state, action: PayloadAction<boolean>) {
397
+ state.isBusy = action.payload;
398
+ },
399
+ setPackage(state, action: PayloadAction<BookingPackage | undefined>) {
400
+ state.package = action.payload;
401
+ },
402
+ setPackageRooms(state, action: PayloadAction<BookingPackageRoom[]>) {
403
+ const option = getActiveOption(state);
404
+ if (option) option.rooms = action.payload;
405
+ },
406
+ setPackageOptionPax(state, action: PayloadAction<BookingOptionPax[]>) {
407
+ const option = getActiveOption(state);
408
+ if (option) option.optionPax = action.payload;
409
+ },
410
+ setPackageOptionUnits(state, action: PayloadAction<BookingOptionUnit[]>) {
411
+ const option = getActiveOption(state);
412
+ if (option) option.optionUnits = action.payload;
413
+ },
414
+ setSkipPayment(state, action: PayloadAction<boolean>) {
415
+ state.skipPaymentWithAgent = action.payload;
416
+ },
417
+ setGeneratePaymentUrl(state, action: PayloadAction<boolean>) {
418
+ state.generatePaymentUrl = action.payload;
419
+ },
420
+ setPackageGroups(state, action: PayloadAction<BookingOptionGroup<PerBookingPackageOption>[]>) {
421
+ const option = getActiveOption(state);
422
+ if (option) option.groups = action.payload;
423
+ },
424
+ setPackageAirlineGroups(state, action: PayloadAction<BookingAirlineGroup<AirlineBookingPackageOption>[]>) {
425
+ const option = getActiveOption(state);
426
+ if (option) option.airlineGroups = action.payload;
427
+ },
428
+ setPackageAirportGroups(state, action: PayloadAction<BookingAirportGroup<AirportBookingPackageOption>[]>) {
429
+ const option = getActiveOption(state);
430
+ if (option) option.airportGroups = action.payload;
431
+ },
432
+ setTagIds(state, action: PayloadAction<number[] | undefined>) {
433
+ state.tagIds = action.payload;
434
+ },
435
+ setAgentAdressId(state, action: PayloadAction<number | undefined>) {
436
+ state.agentAdressId = action.payload;
437
+ },
438
+ setBookingRemarks(state, action: PayloadAction<string>) {
439
+ state.remarks = action.payload;
440
+ },
441
+ setVoucherCodes(state, action: PayloadAction<string[]>) {
442
+ state.voucherCodes = action.payload;
443
+ },
444
+ setCurrentStep(state, action: PayloadAction<BookingStep>) {
445
+ document.body.scrollTop = 0; // For Safari
446
+ document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
447
+
448
+ state.currentStep = action.payload;
449
+ },
450
+ setFlights(state, action: PayloadAction<GroupedFlights>) {
451
+ if (!state.package) return;
452
+
453
+ changeOutwardFlight(state.package, action.payload.selectedOutward);
454
+ changeReturnFlight(state.package, action.payload.selectedReturn);
455
+ changePackageOption(state.package);
456
+ },
457
+ setAccommodationViewId(state, action: PayloadAction<number>) {
458
+ state.accommodationViewId = action.payload;
459
+ },
460
+ setIsOption(state, action: PayloadAction<boolean>) {
461
+ state.isOption = action.payload;
462
+ },
463
+ setTravelersFirstStep(state, action: PayloadAction<boolean>) {
464
+ state.travelersFirstStep = action.payload;
465
+ },
466
+ setIsUnavailable(state, action: PayloadAction<boolean>) {
467
+ state.isUnavailable = action.payload;
468
+ }
469
+ },
470
+ extraReducers: (builder) => {
471
+ builder.addCase(fetchPackageDetails.fulfilled, (state, action) => {
472
+ if (action.payload) {
473
+ if (action.payload.errorCode) {
474
+ console.error(action.payload.errorCode, action.payload.errorMessage, action.payload.errorDetails);
475
+
476
+ state.isUnavailable = true;
477
+ return;
478
+ }
479
+
480
+ if (!action.payload.payload) {
481
+ state.isUnavailable = true;
482
+ /* state.package = undefined; */
483
+ return;
484
+ }
485
+
486
+ state.isUnavailable = false;
487
+
488
+ const bookingRooms = state.bookingAttributes?.rooms;
489
+ const flight = state.bookingAttributes?.flight;
490
+ const packageDetails = action.payload.payload;
491
+
492
+ let activeOption = packageDetails.options.find((x) => x.isSelected)!;
493
+
494
+ if (flight) {
495
+ const selectedOutward = packageDetails.outwardFlights.find((x) => x.isSelected);
496
+ const outwardFlights = packageDetails.outwardFlights.filter(
497
+ (x) =>
498
+ x.code === flight.outwardCode &&
499
+ x.flightMetaData.flightLines[0]!.flightClass === flight.outwardClass &&
500
+ x.flightMetaData.flightLines.map((y) => y.number).join(',') === flight.outwardNumbers.join(',')
501
+ );
502
+
503
+ // ook bij identieke vertrekvluchten eerst kijken als de returnflight kan gekoppeld worden.
504
+ // op die manier moet het juiste koppel selected worden.
505
+ // Enkel werkend met externe vluchten
506
+ let outwardFlight: BookingPackageFlight | undefined = undefined;
507
+ if (!isEmpty(outwardFlights)) {
508
+ const returnExternalGuids = packageDetails.returnFlights
509
+ .filter(
510
+ (x) =>
511
+ x.code === flight.returnCode &&
512
+ x.flightMetaData.flightLines[0]!.flightClass === flight.returnClass &&
513
+ x.flightMetaData.flightLines.map((y) => y.number).join(',') === flight.returnNumbers.join(',')
514
+ )
515
+ .map((f) => f.externalGuid)
516
+ .filter((e) => e);
517
+ outwardFlight = outwardFlights.find((o) => returnExternalGuids.includes(o.externalGuid));
518
+ if (!outwardFlight) {
519
+ outwardFlight = first(outwardFlights);
520
+ }
521
+ }
522
+
523
+ if (selectedOutward && outwardFlight) {
524
+ selectedOutward.isSelected = false;
525
+ outwardFlight.isSelected = true;
526
+ }
527
+
528
+ const selectedReturn = packageDetails.returnFlights.find((x) => x.isSelected);
529
+ const returnFlight = outwardFlight?.externalGuid
530
+ ? packageDetails.returnFlights.find((x) => x.externalGuid === outwardFlight?.externalGuid)
531
+ : packageDetails.returnFlights.find(
532
+ (x) =>
533
+ x.code === flight.returnCode &&
534
+ x.flightMetaData.flightLines[0]!.flightClass === flight.returnClass &&
535
+ x.flightMetaData.flightLines.map((y) => y.number).join(',') === flight.returnNumbers.join(',')
536
+ );
537
+
538
+ if (selectedReturn && returnFlight) {
539
+ selectedReturn.isSelected = false;
540
+ returnFlight.isSelected = true;
541
+ }
542
+
543
+ if (outwardFlight && returnFlight) {
544
+ if (!outwardFlight.validOptions.some((x) => x == activeOption.id)) {
545
+ activeOption.isSelected = false;
546
+
547
+ activeOption = packageDetails.options.find((x) => outwardFlight?.validOptions.some((y) => y === x.id))!;
548
+ activeOption.isSelected = true;
549
+ }
550
+ }
551
+ }
552
+
553
+ if (activeOption && bookingRooms?.some((x) => x.accommodationCode || x.regimeCode)) {
554
+ bookingRooms.forEach((room, i) => {
555
+ if (room.accommodationCode || room.regimeCode) {
556
+ activeOption.rooms[i].options = activeOption.rooms[i].options.map((ro) => ({
557
+ ...ro,
558
+ isSelected: ro.accommodationCode == room.accommodationCode && ro.regimeCode == room.regimeCode
559
+ }));
560
+ }
561
+
562
+ // Fallback to an option that has the requested accommodation OR regime if the requested option is not available. If no fallback is available, select the first option.
563
+ if (!activeOption.rooms[i].options.some((x) => x.isSelected)) {
564
+ const fallbackOption = activeOption.rooms[i].options.find(
565
+ (x) => x.accommodationCode == room.accommodationCode || x.regimeCode == room.regimeCode
566
+ );
567
+ if (fallbackOption) {
568
+ fallbackOption.isSelected = true;
569
+ } else {
570
+ activeOption.rooms[i].options[0].isSelected = true;
571
+ }
572
+ }
573
+ });
574
+ }
575
+
576
+ state.package = packageDetails;
577
+ }
578
+ });
579
+ builder.addCase(fetchAgents.fulfilled, (state, action) => {
580
+ if (action.payload) {
581
+ state.agents = action.payload;
582
+ }
583
+ });
584
+ builder.addCase(fetchAccommodationViews.fulfilled, (state, action) => {
585
+ if (action.payload) {
586
+ state.accommodationViews = action.payload;
587
+ }
588
+ });
589
+ builder.addCase(fetchCountries.fulfilled, (state, action) => {
590
+ if (action.payload.items) {
591
+ state.countries = action.payload.items;
592
+ }
593
+ });
594
+ }
595
+ });
596
+
597
+ export const {
598
+ setOfficeId,
599
+ setLanguageCode,
600
+ setTranslations,
601
+ setBookingOptions,
602
+ setBookingType,
603
+ setProductAttributes,
604
+ setBookingAttributes,
605
+ setCalculateDeposit,
606
+ setShowCommission,
607
+ setBookingNumber,
608
+ setIsRetry,
609
+ setFetchingPackage,
610
+ setIsFetching,
611
+ setHasMounted,
612
+ setPackage,
613
+ setPackageRooms,
614
+ setPackageOptionPax,
615
+ setPackageOptionUnits,
616
+ setPackageGroups,
617
+ setSkipPayment,
618
+ setGeneratePaymentUrl,
619
+ setTagIds,
620
+ setAgentAdressId,
621
+ setBookingRemarks,
622
+ setVoucherCodes,
623
+ setCurrentStep,
624
+ setPackageAirlineGroups,
625
+ setPackageAirportGroups,
626
+ setFlights,
627
+ setAccommodationViewId,
628
+ setIsOption,
629
+ setTravelersFirstStep,
630
+ setIsUnavailable
631
+ } = bookingSlice.actions;
632
+
633
+ export default bookingSlice.reducer;