@qite/tide-booking-component 1.3.2 → 1.3.3

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 (305) hide show
  1. package/.vs/ProjectSettings.json +3 -3
  2. package/.vs/VSWorkspaceState.json +5 -5
  3. package/README.md +8 -8
  4. package/build/build-cjs/booking-product/components/age-select.d.ts +8 -8
  5. package/build/build-cjs/booking-product/components/amount-input.d.ts +10 -10
  6. package/build/build-cjs/booking-product/components/date-range-picker/calendar-day.d.ts +12 -12
  7. package/build/build-cjs/booking-product/components/date-range-picker/calendar.d.ts +19 -19
  8. package/build/build-cjs/booking-product/components/date-range-picker/index.d.ts +20 -23
  9. package/build/build-cjs/booking-product/components/dates.d.ts +9 -9
  10. package/build/build-cjs/booking-product/components/footer.d.ts +10 -10
  11. package/build/build-cjs/booking-product/components/header.d.ts +11 -11
  12. package/build/build-cjs/booking-product/components/icon.d.ts +10 -10
  13. package/build/build-cjs/booking-product/components/product.d.ts +9 -9
  14. package/build/build-cjs/booking-product/components/rating.d.ts +6 -6
  15. package/build/build-cjs/booking-product/components/rooms.d.ts +10 -10
  16. package/build/build-cjs/booking-product/index.d.ts +10 -10
  17. package/build/build-cjs/booking-product/settings-context.d.ts +5 -6
  18. package/build/build-cjs/booking-product/types.d.ts +25 -25
  19. package/build/build-cjs/booking-product/utils/api.d.ts +16 -6
  20. package/build/build-cjs/booking-product/utils/price.d.ts +9 -1
  21. package/build/build-cjs/booking-wizard/api-settings-slice.d.ts +14 -4
  22. package/build/build-cjs/booking-wizard/components/icon.d.ts +10 -10
  23. package/build/build-cjs/booking-wizard/components/labeled-input.d.ts +18 -18
  24. package/build/build-cjs/booking-wizard/components/labeled-select.d.ts +21 -21
  25. package/build/build-cjs/booking-wizard/components/message.d.ts +9 -9
  26. package/build/build-cjs/booking-wizard/components/multi-range-filter.d.ts +11 -11
  27. package/build/build-cjs/booking-wizard/components/print-offer-button.d.ts +17 -17
  28. package/build/build-cjs/booking-wizard/components/product-card.d.ts +8 -8
  29. package/build/build-cjs/booking-wizard/components/step-indicator.d.ts +6 -6
  30. package/build/build-cjs/booking-wizard/components/step-route.d.ts +9 -9
  31. package/build/build-cjs/booking-wizard/features/booking/api.d.ts +29 -10
  32. package/build/build-cjs/booking-wizard/features/booking/booking-self-contained.d.ts +8 -8
  33. package/build/build-cjs/booking-wizard/features/booking/booking-slice.d.ts +177 -46
  34. package/build/build-cjs/booking-wizard/features/booking/booking.d.ts +8 -8
  35. package/build/build-cjs/booking-wizard/features/booking/constants.d.ts +15 -8
  36. package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +308 -136
  37. package/build/build-cjs/booking-wizard/features/confirmation/confirmation.d.ts +4 -5
  38. package/build/build-cjs/booking-wizard/features/error/error.d.ts +4 -5
  39. package/build/build-cjs/booking-wizard/features/flight-options/flight-filter.d.ts +9 -9
  40. package/build/build-cjs/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -8
  41. package/build/build-cjs/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -3
  42. package/build/build-cjs/booking-wizard/features/flight-options/flight-option.d.ts +10 -10
  43. package/build/build-cjs/booking-wizard/features/flight-options/flight-utils.d.ts +16 -6
  44. package/build/build-cjs/booking-wizard/features/flight-options/index.d.ts +4 -5
  45. package/build/build-cjs/booking-wizard/features/price-details/price-details-api.d.ts +15 -6
  46. package/build/build-cjs/booking-wizard/features/price-details/price-details-slice.d.ts +121 -80
  47. package/build/build-cjs/booking-wizard/features/price-details/util.d.ts +5 -2
  48. package/build/build-cjs/booking-wizard/features/product-options/no-options.d.ts +3 -3
  49. package/build/build-cjs/booking-wizard/features/product-options/none-option.d.ts +17 -9
  50. package/build/build-cjs/booking-wizard/features/product-options/option-booking-airline-group.d.ts +17 -8
  51. package/build/build-cjs/booking-wizard/features/product-options/option-booking-group.d.ts +18 -12
  52. package/build/build-cjs/booking-wizard/features/product-options/option-item.d.ts +11 -11
  53. package/build/build-cjs/booking-wizard/features/product-options/option-pax-card.d.ts +13 -10
  54. package/build/build-cjs/booking-wizard/features/product-options/option-pax-group.d.ts +20 -13
  55. package/build/build-cjs/booking-wizard/features/product-options/option-room.d.ts +18 -10
  56. package/build/build-cjs/booking-wizard/features/product-options/option-unit-group.d.ts +20 -13
  57. package/build/build-cjs/booking-wizard/features/product-options/option-units-card.d.ts +9 -9
  58. package/build/build-cjs/booking-wizard/features/product-options/options-form.d.ts +4 -5
  59. package/build/build-cjs/booking-wizard/features/room-options/index.d.ts +4 -5
  60. package/build/build-cjs/booking-wizard/features/room-options/room-utils.d.ts +29 -9
  61. package/build/build-cjs/booking-wizard/features/room-options/room.d.ts +15 -12
  62. package/build/build-cjs/booking-wizard/features/room-options/traveler-rooms.d.ts +13 -9
  63. package/build/build-cjs/booking-wizard/features/sidebar/index.d.ts +7 -7
  64. package/build/build-cjs/booking-wizard/features/sidebar/sidebar-flight.d.ts +8 -8
  65. package/build/build-cjs/booking-wizard/features/sidebar/sidebar-util.d.ts +31 -12
  66. package/build/build-cjs/booking-wizard/features/sidebar/sidebar.d.ts +29 -25
  67. package/build/build-cjs/booking-wizard/features/summary/summary-booking-option-pax.d.ts +7 -7
  68. package/build/build-cjs/booking-wizard/features/summary/summary-booking-option-unit.d.ts +7 -7
  69. package/build/build-cjs/booking-wizard/features/summary/summary-flight.d.ts +8 -8
  70. package/build/build-cjs/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +10 -7
  71. package/build/build-cjs/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +10 -7
  72. package/build/build-cjs/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +10 -7
  73. package/build/build-cjs/booking-wizard/features/summary/summary-slice.d.ts +14 -8
  74. package/build/build-cjs/booking-wizard/features/summary/summary.d.ts +4 -5
  75. package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +75 -49
  76. package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form.d.ts +4 -5
  77. package/build/build-cjs/booking-wizard/features/travelers-form/type-ahead-input.d.ts +16 -16
  78. package/build/build-cjs/booking-wizard/features/travelers-form/validate-form.d.ts +9 -4
  79. package/build/build-cjs/booking-wizard/index.d.ts +12 -12
  80. package/build/build-cjs/booking-wizard/settings-context.d.ts +5 -6
  81. package/build/build-cjs/booking-wizard/store.d.ts +44 -24
  82. package/build/build-cjs/booking-wizard/types.d.ts +253 -257
  83. package/build/build-cjs/booking-wizard/use-offer-printer.d.ts +19 -13
  84. package/build/build-cjs/index.d.ts +3 -3
  85. package/build/build-cjs/index.js +16332 -7414
  86. package/build/build-cjs/shared/components/loader.d.ts +6 -6
  87. package/build/build-cjs/shared/types.d.ts +4 -4
  88. package/build/build-cjs/shared/utils/class-util.d.ts +1 -1
  89. package/build/build-cjs/shared/utils/localization-util.d.ts +248 -248
  90. package/build/build-cjs/shared/utils/query-string-util.d.ts +29 -8
  91. package/build/build-cjs/shared/utils/tide-api-utils.d.ts +6 -4
  92. package/build/build-esm/booking-product/components/age-select.d.ts +8 -8
  93. package/build/build-esm/booking-product/components/amount-input.d.ts +10 -10
  94. package/build/build-esm/booking-product/components/date-range-picker/calendar-day.d.ts +12 -12
  95. package/build/build-esm/booking-product/components/date-range-picker/calendar.d.ts +19 -19
  96. package/build/build-esm/booking-product/components/date-range-picker/index.d.ts +20 -23
  97. package/build/build-esm/booking-product/components/dates.d.ts +9 -9
  98. package/build/build-esm/booking-product/components/footer.d.ts +10 -10
  99. package/build/build-esm/booking-product/components/header.d.ts +11 -11
  100. package/build/build-esm/booking-product/components/icon.d.ts +10 -10
  101. package/build/build-esm/booking-product/components/product.d.ts +9 -9
  102. package/build/build-esm/booking-product/components/rating.d.ts +6 -6
  103. package/build/build-esm/booking-product/components/rooms.d.ts +10 -10
  104. package/build/build-esm/booking-product/index.d.ts +10 -10
  105. package/build/build-esm/booking-product/settings-context.d.ts +5 -6
  106. package/build/build-esm/booking-product/types.d.ts +25 -25
  107. package/build/build-esm/booking-product/utils/api.d.ts +16 -6
  108. package/build/build-esm/booking-product/utils/price.d.ts +9 -1
  109. package/build/build-esm/booking-wizard/api-settings-slice.d.ts +14 -4
  110. package/build/build-esm/booking-wizard/components/icon.d.ts +10 -10
  111. package/build/build-esm/booking-wizard/components/labeled-input.d.ts +18 -18
  112. package/build/build-esm/booking-wizard/components/labeled-select.d.ts +21 -21
  113. package/build/build-esm/booking-wizard/components/message.d.ts +9 -9
  114. package/build/build-esm/booking-wizard/components/multi-range-filter.d.ts +11 -11
  115. package/build/build-esm/booking-wizard/components/print-offer-button.d.ts +17 -17
  116. package/build/build-esm/booking-wizard/components/product-card.d.ts +8 -8
  117. package/build/build-esm/booking-wizard/components/step-indicator.d.ts +6 -6
  118. package/build/build-esm/booking-wizard/components/step-route.d.ts +9 -9
  119. package/build/build-esm/booking-wizard/features/booking/api.d.ts +29 -10
  120. package/build/build-esm/booking-wizard/features/booking/booking-self-contained.d.ts +8 -8
  121. package/build/build-esm/booking-wizard/features/booking/booking-slice.d.ts +177 -46
  122. package/build/build-esm/booking-wizard/features/booking/booking.d.ts +8 -8
  123. package/build/build-esm/booking-wizard/features/booking/constants.d.ts +15 -8
  124. package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +308 -136
  125. package/build/build-esm/booking-wizard/features/confirmation/confirmation.d.ts +4 -5
  126. package/build/build-esm/booking-wizard/features/error/error.d.ts +4 -5
  127. package/build/build-esm/booking-wizard/features/flight-options/flight-filter.d.ts +9 -9
  128. package/build/build-esm/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -8
  129. package/build/build-esm/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -3
  130. package/build/build-esm/booking-wizard/features/flight-options/flight-option.d.ts +10 -10
  131. package/build/build-esm/booking-wizard/features/flight-options/flight-utils.d.ts +16 -6
  132. package/build/build-esm/booking-wizard/features/flight-options/index.d.ts +4 -5
  133. package/build/build-esm/booking-wizard/features/price-details/price-details-api.d.ts +15 -6
  134. package/build/build-esm/booking-wizard/features/price-details/price-details-slice.d.ts +121 -80
  135. package/build/build-esm/booking-wizard/features/price-details/util.d.ts +5 -2
  136. package/build/build-esm/booking-wizard/features/product-options/no-options.d.ts +3 -3
  137. package/build/build-esm/booking-wizard/features/product-options/none-option.d.ts +17 -9
  138. package/build/build-esm/booking-wizard/features/product-options/option-booking-airline-group.d.ts +17 -8
  139. package/build/build-esm/booking-wizard/features/product-options/option-booking-group.d.ts +18 -12
  140. package/build/build-esm/booking-wizard/features/product-options/option-item.d.ts +11 -11
  141. package/build/build-esm/booking-wizard/features/product-options/option-pax-card.d.ts +13 -10
  142. package/build/build-esm/booking-wizard/features/product-options/option-pax-group.d.ts +20 -13
  143. package/build/build-esm/booking-wizard/features/product-options/option-room.d.ts +18 -10
  144. package/build/build-esm/booking-wizard/features/product-options/option-unit-group.d.ts +20 -13
  145. package/build/build-esm/booking-wizard/features/product-options/option-units-card.d.ts +9 -9
  146. package/build/build-esm/booking-wizard/features/product-options/options-form.d.ts +4 -5
  147. package/build/build-esm/booking-wizard/features/room-options/index.d.ts +4 -5
  148. package/build/build-esm/booking-wizard/features/room-options/room-utils.d.ts +29 -9
  149. package/build/build-esm/booking-wizard/features/room-options/room.d.ts +15 -12
  150. package/build/build-esm/booking-wizard/features/room-options/traveler-rooms.d.ts +13 -9
  151. package/build/build-esm/booking-wizard/features/sidebar/index.d.ts +7 -7
  152. package/build/build-esm/booking-wizard/features/sidebar/sidebar-flight.d.ts +8 -8
  153. package/build/build-esm/booking-wizard/features/sidebar/sidebar-util.d.ts +31 -12
  154. package/build/build-esm/booking-wizard/features/sidebar/sidebar.d.ts +29 -25
  155. package/build/build-esm/booking-wizard/features/summary/summary-booking-option-pax.d.ts +7 -7
  156. package/build/build-esm/booking-wizard/features/summary/summary-booking-option-unit.d.ts +7 -7
  157. package/build/build-esm/booking-wizard/features/summary/summary-flight.d.ts +8 -8
  158. package/build/build-esm/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +10 -7
  159. package/build/build-esm/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +10 -7
  160. package/build/build-esm/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +10 -7
  161. package/build/build-esm/booking-wizard/features/summary/summary-slice.d.ts +14 -8
  162. package/build/build-esm/booking-wizard/features/summary/summary.d.ts +4 -5
  163. package/build/build-esm/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +75 -49
  164. package/build/build-esm/booking-wizard/features/travelers-form/travelers-form.d.ts +4 -5
  165. package/build/build-esm/booking-wizard/features/travelers-form/type-ahead-input.d.ts +16 -16
  166. package/build/build-esm/booking-wizard/features/travelers-form/validate-form.d.ts +9 -4
  167. package/build/build-esm/booking-wizard/index.d.ts +12 -12
  168. package/build/build-esm/booking-wizard/settings-context.d.ts +5 -6
  169. package/build/build-esm/booking-wizard/store.d.ts +44 -24
  170. package/build/build-esm/booking-wizard/types.d.ts +253 -257
  171. package/build/build-esm/booking-wizard/use-offer-printer.d.ts +19 -13
  172. package/build/build-esm/index.d.ts +3 -3
  173. package/build/build-esm/index.js +15926 -7396
  174. package/build/build-esm/shared/components/loader.d.ts +6 -6
  175. package/build/build-esm/shared/types.d.ts +4 -4
  176. package/build/build-esm/shared/utils/class-util.d.ts +1 -1
  177. package/build/build-esm/shared/utils/localization-util.d.ts +248 -248
  178. package/build/build-esm/shared/utils/query-string-util.d.ts +29 -8
  179. package/build/build-esm/shared/utils/tide-api-utils.d.ts +6 -4
  180. package/package.json +75 -75
  181. package/rollup.config.js +23 -23
  182. package/src/booking-product/components/age-select.tsx +35 -35
  183. package/src/booking-product/components/amount-input.tsx +78 -78
  184. package/src/booking-product/components/date-range-picker/calendar-day.tsx +58 -58
  185. package/src/booking-product/components/date-range-picker/calendar.tsx +178 -178
  186. package/src/booking-product/components/date-range-picker/index.tsx +196 -196
  187. package/src/booking-product/components/dates.tsx +136 -136
  188. package/src/booking-product/components/footer.tsx +69 -69
  189. package/src/booking-product/components/header.tsx +79 -79
  190. package/src/booking-product/components/icon.tsx +251 -251
  191. package/src/booking-product/components/product.tsx +314 -314
  192. package/src/booking-product/components/rating.tsx +21 -21
  193. package/src/booking-product/components/rooms.tsx +195 -195
  194. package/src/booking-product/index.tsx +30 -30
  195. package/src/booking-product/settings-context.ts +14 -14
  196. package/src/booking-product/types.ts +28 -28
  197. package/src/booking-product/utils/api.ts +25 -25
  198. package/src/booking-product/utils/price.ts +29 -29
  199. package/src/booking-wizard/api-settings-slice.ts +24 -24
  200. package/src/booking-wizard/components/icon.tsx +508 -508
  201. package/src/booking-wizard/components/labeled-input.tsx +64 -64
  202. package/src/booking-wizard/components/labeled-select.tsx +69 -69
  203. package/src/booking-wizard/components/message.tsx +34 -34
  204. package/src/booking-wizard/components/multi-range-filter.tsx +113 -113
  205. package/src/booking-wizard/components/print-offer-button.tsx +63 -66
  206. package/src/booking-wizard/components/product-card.tsx +37 -37
  207. package/src/booking-wizard/components/step-indicator.tsx +51 -51
  208. package/src/booking-wizard/components/step-route.tsx +27 -27
  209. package/src/booking-wizard/declarations.d.ts +4 -4
  210. package/src/booking-wizard/features/booking/api.ts +49 -49
  211. package/src/booking-wizard/features/booking/booking-self-contained.tsx +389 -389
  212. package/src/booking-wizard/features/booking/booking-slice.ts +665 -663
  213. package/src/booking-wizard/features/booking/booking.tsx +361 -361
  214. package/src/booking-wizard/features/booking/constants.ts +16 -16
  215. package/src/booking-wizard/features/booking/selectors.ts +441 -441
  216. package/src/booking-wizard/features/confirmation/confirmation.tsx +97 -97
  217. package/src/booking-wizard/features/error/error.tsx +78 -78
  218. package/src/booking-wizard/features/flight-options/flight-filter.tsx +432 -432
  219. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +385 -385
  220. package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +229 -229
  221. package/src/booking-wizard/features/flight-options/flight-option.tsx +81 -81
  222. package/src/booking-wizard/features/flight-options/flight-utils.ts +516 -516
  223. package/src/booking-wizard/features/flight-options/index.tsx +196 -196
  224. package/src/booking-wizard/features/price-details/price-details-api.ts +24 -24
  225. package/src/booking-wizard/features/price-details/price-details-slice.ts +178 -178
  226. package/src/booking-wizard/features/price-details/util.ts +155 -155
  227. package/src/booking-wizard/features/product-options/no-options.tsx +21 -21
  228. package/src/booking-wizard/features/product-options/none-option.tsx +120 -120
  229. package/src/booking-wizard/features/product-options/option-booking-airline-group.tsx +64 -64
  230. package/src/booking-wizard/features/product-options/option-booking-group.tsx +216 -216
  231. package/src/booking-wizard/features/product-options/option-item.tsx +317 -317
  232. package/src/booking-wizard/features/product-options/option-pax-card.tsx +201 -201
  233. package/src/booking-wizard/features/product-options/option-pax-group.tsx +175 -175
  234. package/src/booking-wizard/features/product-options/option-room.tsx +321 -321
  235. package/src/booking-wizard/features/product-options/option-unit-group.tsx +198 -198
  236. package/src/booking-wizard/features/product-options/option-units-card.tsx +185 -185
  237. package/src/booking-wizard/features/product-options/options-form.tsx +481 -563
  238. package/src/booking-wizard/features/room-options/index.tsx +187 -187
  239. package/src/booking-wizard/features/room-options/room-utils.ts +190 -190
  240. package/src/booking-wizard/features/room-options/room.tsx +160 -160
  241. package/src/booking-wizard/features/room-options/traveler-rooms.tsx +75 -75
  242. package/src/booking-wizard/features/sidebar/index.tsx +76 -76
  243. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +68 -68
  244. package/src/booking-wizard/features/sidebar/sidebar-util.ts +177 -177
  245. package/src/booking-wizard/features/sidebar/sidebar.tsx +364 -364
  246. package/src/booking-wizard/features/summary/summary-booking-option-pax.tsx +25 -25
  247. package/src/booking-wizard/features/summary/summary-booking-option-unit.tsx +25 -25
  248. package/src/booking-wizard/features/summary/summary-flight.tsx +39 -39
  249. package/src/booking-wizard/features/summary/summary-per-booking-option-group.tsx +69 -69
  250. package/src/booking-wizard/features/summary/summary-per-pax-option-group.tsx +63 -63
  251. package/src/booking-wizard/features/summary/summary-per-unit-option-group.tsx +66 -66
  252. package/src/booking-wizard/features/summary/summary-slice.ts +28 -28
  253. package/src/booking-wizard/features/summary/summary.tsx +674 -674
  254. package/src/booking-wizard/features/travelers-form/travelers-form-slice.ts +164 -164
  255. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +754 -754
  256. package/src/booking-wizard/features/travelers-form/type-ahead-input.tsx +101 -101
  257. package/src/booking-wizard/features/travelers-form/validate-form.ts +245 -245
  258. package/src/booking-wizard/index.tsx +36 -36
  259. package/src/booking-wizard/settings-context.ts +62 -62
  260. package/src/booking-wizard/store.ts +31 -31
  261. package/src/booking-wizard/types.ts +279 -279
  262. package/src/booking-wizard/use-offer-printer.ts +117 -136
  263. package/src/index.ts +4 -4
  264. package/src/shared/components/loader.tsx +16 -16
  265. package/src/shared/translations/en-GB.json +237 -237
  266. package/src/shared/translations/fr-BE.json +238 -238
  267. package/src/shared/translations/nl-BE.json +237 -237
  268. package/src/shared/types.ts +4 -4
  269. package/src/shared/utils/class-util.ts +9 -9
  270. package/src/shared/utils/localization-util.ts +62 -62
  271. package/src/shared/utils/query-string-util.ts +119 -119
  272. package/src/shared/utils/tide-api-utils.ts +36 -36
  273. package/styles/booking-product-variables.scss +394 -394
  274. package/styles/booking-product.scss +446 -446
  275. package/styles/booking-wizard-variables.scss +873 -873
  276. package/styles/booking-wizard.scss +59 -59
  277. package/styles/components/_animations.scss +39 -39
  278. package/styles/components/_base.scss +107 -107
  279. package/styles/components/_booking.scss +879 -879
  280. package/styles/components/_button.scss +238 -238
  281. package/styles/components/_checkbox.scss +219 -219
  282. package/styles/components/_cta.scss +208 -208
  283. package/styles/components/_date-list.scss +41 -41
  284. package/styles/components/_date-range-picker.scss +225 -225
  285. package/styles/components/_decrement-increment.scss +35 -35
  286. package/styles/components/_dropdown.scss +72 -72
  287. package/styles/components/_flight-option.scss +1429 -1429
  288. package/styles/components/_form.scss +1583 -1583
  289. package/styles/components/_info-message.scss +71 -71
  290. package/styles/components/_input.scss +25 -25
  291. package/styles/components/_list.scss +187 -187
  292. package/styles/components/_loader.scss +72 -72
  293. package/styles/components/_mixins.scss +550 -550
  294. package/styles/components/_placeholders.scss +166 -166
  295. package/styles/components/_pricing-summary.scss +155 -155
  296. package/styles/components/_qsm.scss +17 -17
  297. package/styles/components/_radiobutton.scss +170 -170
  298. package/styles/components/_select-wrapper.scss +80 -80
  299. package/styles/components/_spinner.scss +29 -29
  300. package/styles/components/_step-indicators.scss +168 -168
  301. package/styles/components/_table.scss +81 -81
  302. package/styles/components/_tree.scss +530 -530
  303. package/styles/components/_typeahead.scss +281 -281
  304. package/styles/components/_variables.scss +89 -89
  305. package/tsconfig.json +24 -24
@@ -1,389 +1,389 @@
1
- import React, { useContext } from "react";
2
- import { useSelector } from "react-redux";
3
- import {
4
- getDateFromParams,
5
- getFlightsFromParams,
6
- getNumberFromParams,
7
- getNumbersFromParams,
8
- getRoomsFromParams,
9
- getStringFromParams,
10
- } from "../../../shared/utils/query-string-util";
11
- import {
12
- fetchPackage,
13
- setAccommodationViewId,
14
- setAgentAdressId,
15
- setBookingAttributes,
16
- setBookingNumber,
17
- setBookingOptions,
18
- setBookingType,
19
- setCalculateDeposit,
20
- setCurrentStep,
21
- setGeneratePaymentUrl,
22
- setLanguageCode,
23
- setOfficeId,
24
- setProductAttributes,
25
- setSkipPayment,
26
- setTagIds,
27
- setTranslations,
28
- } from "./booking-slice";
29
-
30
- import { isNil } from "lodash";
31
- import { useEffect } from "react";
32
- import Loader from "../../../shared/components/loader";
33
- import { setApiKey, setApiUrl } from "../../api-settings-slice";
34
- import StepRoute from "../../components/step-route";
35
- import SettingsContext from "../../settings-context";
36
- import { useAppDispatch } from "../../store";
37
- import Confirmation from "../confirmation/confirmation";
38
- import Error from "../error/error";
39
- import FlightOptionsForm from "../flight-options";
40
- import OptionsForm from "../product-options/options-form";
41
- import RoomOptionsForm from "../room-options";
42
- import Sidebar from "../sidebar";
43
- import Summary from "../summary/summary";
44
- import TravelersForm from "../travelers-form/travelers-form";
45
- import {
46
- CONFIRMATION_STEP,
47
- ERROR_STEP,
48
- FLIGHT_OPTIONS_FORM_STEP,
49
- OPTIONS_FORM_STEP,
50
- ROOM_OPTIONS_FORM_STEP,
51
- SUMMARY_STEP,
52
- TRAVELERS_FORM_STEP,
53
- } from "./constants";
54
- import {
55
- selectApiSettings,
56
- selectBookingAttributes,
57
- selectBookingNumber,
58
- selectBookingRooms,
59
- selectCurrentStep,
60
- selectIsUnavailable,
61
- selectPackageDetails,
62
- selectProductAttributes,
63
- selectTranslations,
64
- } from "./selectors";
65
-
66
- interface BookingProps {
67
- productCode: string;
68
- productName: string;
69
- thumbnailUrl?: string;
70
- }
71
-
72
- const BookingSelfContained: React.FC<BookingProps> = ({
73
- productCode,
74
- productName,
75
- thumbnailUrl,
76
- }) => {
77
- const {
78
- officeId,
79
- bookingOptions,
80
- showSidebarDeposit,
81
- includeFlights,
82
- skipPaymentWithAgent,
83
- generatePaymentUrl,
84
- tagIds,
85
- agentAdressId,
86
- language,
87
- apiUrl,
88
- apiKey,
89
- translationFiles,
90
- roomOptions,
91
- flightOptions,
92
- accommodationViewId,
93
- isOffer,
94
- } = useContext(SettingsContext);
95
-
96
- const dispatch = useAppDispatch();
97
-
98
- const productAttributes = useSelector(selectProductAttributes);
99
- const bookingAttributes = useSelector(selectBookingAttributes);
100
- const rooms = useSelector(selectBookingRooms);
101
- const bookingNumber = useSelector(selectBookingNumber);
102
- const packageDetails = useSelector(selectPackageDetails);
103
- const isUnvailable = useSelector(selectIsUnavailable);
104
- const currentStep = useSelector(selectCurrentStep);
105
- const apiSettings = useSelector(selectApiSettings);
106
- const translations = useSelector(selectTranslations);
107
-
108
- useEffect(() => {
109
- dispatch(setSkipPayment(skipPaymentWithAgent ?? false));
110
- dispatch(setGeneratePaymentUrl(generatePaymentUrl ?? false));
111
- }, [skipPaymentWithAgent, generatePaymentUrl]);
112
-
113
- useEffect(() => {
114
- if (!isNil(apiUrl) && !isNil(apiKey)) {
115
- dispatch(setApiUrl(apiUrl));
116
- dispatch(setApiKey(apiKey));
117
- }
118
- }, [apiUrl, apiKey]);
119
-
120
- useEffect(() => {
121
- const params = new URLSearchParams(location.search);
122
- const startDate = getDateFromParams(params, "startDate");
123
- const endDate = getDateFromParams(params, "endDate");
124
- const catalog = getNumberFromParams(params, "catalog");
125
- const rooms = getRoomsFromParams(params, "rooms");
126
- const flight = getFlightsFromParams(params, "flight");
127
- const flightRouteId = getStringFromParams(params, "flightRouteId");
128
- const vendorConfigurationId = getNumberFromParams(
129
- params,
130
- "vendorConfigurationId"
131
- );
132
- const allotmentName = getStringFromParams(params, "allotmentName");
133
- const allotmentIds = getNumbersFromParams(params, "allotmentId");
134
- const tourCode = getStringFromParams(params, "tourCode");
135
- const bookingNumber = params.get("bookingNr") ?? undefined;
136
-
137
- if (typeof window !== "undefined") {
138
- window.scrollTo(0, 0);
139
- }
140
-
141
- if (!isNil(bookingNumber)) {
142
- dispatch(setBookingNumber(bookingNumber));
143
- dispatch(setCurrentStep(CONFIRMATION_STEP));
144
- } else if (!flightOptions.isHidden) {
145
- dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
146
- } else if (!roomOptions.isHidden) {
147
- dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
148
- }
149
-
150
- if (
151
- !isNil(startDate) &&
152
- !isNil(endDate) &&
153
- !isNil(catalog) &&
154
- !isNil(rooms)
155
- ) {
156
- dispatch(
157
- setBookingAttributes({
158
- startDate,
159
- endDate,
160
- catalog,
161
- rooms,
162
- flight,
163
- includeFlights,
164
- allotmentName,
165
- allotmentIds,
166
- tourCode,
167
- flightRouteId,
168
- vendorConfigurationId,
169
- })
170
- );
171
- } else {
172
- console.error(
173
- "Failure when setting booking attributes",
174
- startDate,
175
- endDate,
176
- catalog,
177
- rooms
178
- );
179
- }
180
- }, [location.search, setBookingAttributes, setBookingNumber, includeFlights]);
181
-
182
- useEffect(() => {
183
- if (!isNil(productCode) && !isNil(productName)) {
184
- dispatch(
185
- setProductAttributes({
186
- productCode,
187
- productName,
188
- })
189
- );
190
- } else {
191
- console.error(
192
- "Failure when setting product attributes",
193
- productCode,
194
- productName
195
- );
196
- }
197
- }, [productCode, productName, setProductAttributes]);
198
-
199
- const getTranslations = async () => {
200
- const translations = translationFiles?.map((x) =>
201
- fetch(x.path)
202
- .then((y) => y.json())
203
- .then((z) => ({ language: x.language, value: z }))
204
- );
205
- return translations && (await Promise.all(translations));
206
- };
207
-
208
- useEffect(() => {
209
- const loadTranslations = async () => {
210
- const translations = await getTranslations();
211
- dispatch(setTranslations(translations)); // Now dispatch the resolved value
212
- };
213
-
214
- loadTranslations();
215
-
216
- dispatch(setOfficeId(officeId));
217
- dispatch(setLanguageCode(language));
218
- dispatch(setBookingOptions(bookingOptions));
219
- dispatch(setCalculateDeposit(showSidebarDeposit));
220
- if (tagIds && tagIds.length > 0) {
221
- dispatch(setTagIds(tagIds ?? undefined));
222
- }
223
- dispatch(setAgentAdressId(agentAdressId ?? undefined));
224
- if (agentAdressId && agentAdressId != 0) {
225
- dispatch(setBookingType("b2b"));
226
- }
227
- if (accommodationViewId && accommodationViewId != 0) {
228
- dispatch(setAccommodationViewId(accommodationViewId));
229
- }
230
- }, [
231
- officeId,
232
- language,
233
- bookingOptions,
234
- showSidebarDeposit,
235
- setOfficeId,
236
- setLanguageCode,
237
- setCalculateDeposit,
238
- tagIds,
239
- agentAdressId,
240
- accommodationViewId,
241
- ]);
242
-
243
- useEffect(() => {
244
- if (
245
- !productAttributes ||
246
- !bookingAttributes ||
247
- !rooms?.length ||
248
- !isNil(bookingNumber) ||
249
- !isNil(packageDetails)
250
- ) {
251
- return;
252
- }
253
-
254
- // Fetch data
255
- const promise = dispatch(fetchPackage());
256
- return () => {
257
- promise.abort();
258
- };
259
- }, [
260
- productAttributes,
261
- bookingAttributes,
262
- rooms,
263
- bookingNumber,
264
- packageDetails,
265
- apiSettings.apiUrl,
266
- apiSettings.apiKey,
267
- ]);
268
-
269
- const renderStep = () => {
270
- switch (currentStep) {
271
- case FLIGHT_OPTIONS_FORM_STEP:
272
- return (
273
- <StepRoute
274
- number={1}
275
- title={translations.STEPS.FLIGHT_OPTIONS}
276
- component={<FlightOptionsForm />}
277
- />
278
- );
279
- case ROOM_OPTIONS_FORM_STEP:
280
- return (
281
- <StepRoute
282
- number={1 + (flightOptions.isHidden ? 0 : 1)}
283
- title={translations.STEPS.ROOM_OPTIONS}
284
- component={<RoomOptionsForm />}
285
- />
286
- );
287
- case OPTIONS_FORM_STEP:
288
- return (
289
- <StepRoute
290
- number={
291
- 1 +
292
- (roomOptions.isHidden ? 0 : 1) +
293
- (flightOptions.isHidden ? 0 : 1)
294
- }
295
- title={translations.STEPS.EXTRA_OPTIONS}
296
- component={<OptionsForm />}
297
- />
298
- );
299
- case TRAVELERS_FORM_STEP:
300
- return (
301
- <StepRoute
302
- number={
303
- 2 +
304
- (roomOptions.isHidden ? 0 : 1) +
305
- (flightOptions.isHidden ? 0 : 1)
306
- }
307
- title={translations.STEPS.PERSONAL_DETAILS}
308
- component={<TravelersForm />}
309
- />
310
- );
311
- case SUMMARY_STEP:
312
- return (
313
- <StepRoute
314
- number={
315
- 3 +
316
- (roomOptions.isHidden ? 0 : 1) +
317
- (flightOptions.isHidden ? 0 : 1)
318
- }
319
- title={translations.STEPS.SUMMARY}
320
- component={<Summary />}
321
- />
322
- );
323
- case CONFIRMATION_STEP:
324
- return (
325
- <StepRoute
326
- number={
327
- 4 +
328
- (roomOptions.isHidden ? 0 : 1) +
329
- (flightOptions.isHidden ? 0 : 1)
330
- }
331
- title={translations.STEPS.CONFIRMATION}
332
- component={<Confirmation />}
333
- />
334
- );
335
- case ERROR_STEP:
336
- return (
337
- <StepRoute
338
- number={
339
- 5 +
340
- (roomOptions.isHidden ? 0 : 1) +
341
- (flightOptions.isHidden ? 0 : 1)
342
- }
343
- title={translations.STEPS.ERROR}
344
- component={<Error />}
345
- />
346
- );
347
- }
348
- };
349
-
350
- return (
351
- <>
352
- {((productAttributes && bookingAttributes && packageDetails) ||
353
- bookingNumber) && (
354
- <div className="booking">
355
- <div className="booking__content">
356
- <div className="booking__panel">{renderStep()}</div>
357
- <div className="backdrop" id="backdrop"></div>
358
- {packageDetails && (
359
- <Sidebar productName={productName} thumbnailUrl={thumbnailUrl} />
360
- )}
361
- </div>
362
- </div>
363
- )}
364
- {!packageDetails && !bookingNumber && !isUnvailable && (
365
- <div className="booking">
366
- <div className="booking__loader">
367
- <Loader />
368
- <p className="booking__loader-text">
369
- {isOffer
370
- ? translations.MAIN.PREPARING_OFFER
371
- : translations.MAIN.PREPARING_BOOKING}
372
- </p>
373
- </div>
374
- </div>
375
- )}
376
- {isUnvailable && (
377
- <div className="booking">
378
- <div className="booking__loader">
379
- <p className="booking__loader-text">
380
- {translations.MAIN.PRODUCT_UNAVAILABLE}
381
- </p>
382
- </div>
383
- </div>
384
- )}
385
- </>
386
- );
387
- };
388
-
389
- export default BookingSelfContained;
1
+ import React, { useContext } from "react";
2
+ import { useSelector } from "react-redux";
3
+ import {
4
+ getDateFromParams,
5
+ getFlightsFromParams,
6
+ getNumberFromParams,
7
+ getNumbersFromParams,
8
+ getRoomsFromParams,
9
+ getStringFromParams,
10
+ } from "../../../shared/utils/query-string-util";
11
+ import {
12
+ fetchPackage,
13
+ setAccommodationViewId,
14
+ setAgentAdressId,
15
+ setBookingAttributes,
16
+ setBookingNumber,
17
+ setBookingOptions,
18
+ setBookingType,
19
+ setCalculateDeposit,
20
+ setCurrentStep,
21
+ setGeneratePaymentUrl,
22
+ setLanguageCode,
23
+ setOfficeId,
24
+ setProductAttributes,
25
+ setSkipPayment,
26
+ setTagIds,
27
+ setTranslations,
28
+ } from "./booking-slice";
29
+
30
+ import { isNil } from "lodash";
31
+ import { useEffect } from "react";
32
+ import Loader from "../../../shared/components/loader";
33
+ import { setApiKey, setApiUrl } from "../../api-settings-slice";
34
+ import StepRoute from "../../components/step-route";
35
+ import SettingsContext from "../../settings-context";
36
+ import { useAppDispatch } from "../../store";
37
+ import Confirmation from "../confirmation/confirmation";
38
+ import Error from "../error/error";
39
+ import FlightOptionsForm from "../flight-options";
40
+ import OptionsForm from "../product-options/options-form";
41
+ import RoomOptionsForm from "../room-options";
42
+ import Sidebar from "../sidebar";
43
+ import Summary from "../summary/summary";
44
+ import TravelersForm from "../travelers-form/travelers-form";
45
+ import {
46
+ CONFIRMATION_STEP,
47
+ ERROR_STEP,
48
+ FLIGHT_OPTIONS_FORM_STEP,
49
+ OPTIONS_FORM_STEP,
50
+ ROOM_OPTIONS_FORM_STEP,
51
+ SUMMARY_STEP,
52
+ TRAVELERS_FORM_STEP,
53
+ } from "./constants";
54
+ import {
55
+ selectApiSettings,
56
+ selectBookingAttributes,
57
+ selectBookingNumber,
58
+ selectBookingRooms,
59
+ selectCurrentStep,
60
+ selectIsUnavailable,
61
+ selectPackageDetails,
62
+ selectProductAttributes,
63
+ selectTranslations,
64
+ } from "./selectors";
65
+
66
+ interface BookingProps {
67
+ productCode: string;
68
+ productName: string;
69
+ thumbnailUrl?: string;
70
+ }
71
+
72
+ const BookingSelfContained: React.FC<BookingProps> = ({
73
+ productCode,
74
+ productName,
75
+ thumbnailUrl,
76
+ }) => {
77
+ const {
78
+ officeId,
79
+ bookingOptions,
80
+ showSidebarDeposit,
81
+ includeFlights,
82
+ skipPaymentWithAgent,
83
+ generatePaymentUrl,
84
+ tagIds,
85
+ agentAdressId,
86
+ language,
87
+ apiUrl,
88
+ apiKey,
89
+ translationFiles,
90
+ roomOptions,
91
+ flightOptions,
92
+ accommodationViewId,
93
+ isOffer,
94
+ } = useContext(SettingsContext);
95
+
96
+ const dispatch = useAppDispatch();
97
+
98
+ const productAttributes = useSelector(selectProductAttributes);
99
+ const bookingAttributes = useSelector(selectBookingAttributes);
100
+ const rooms = useSelector(selectBookingRooms);
101
+ const bookingNumber = useSelector(selectBookingNumber);
102
+ const packageDetails = useSelector(selectPackageDetails);
103
+ const isUnvailable = useSelector(selectIsUnavailable);
104
+ const currentStep = useSelector(selectCurrentStep);
105
+ const apiSettings = useSelector(selectApiSettings);
106
+ const translations = useSelector(selectTranslations);
107
+
108
+ useEffect(() => {
109
+ dispatch(setSkipPayment(skipPaymentWithAgent ?? false));
110
+ dispatch(setGeneratePaymentUrl(generatePaymentUrl ?? false));
111
+ }, [skipPaymentWithAgent, generatePaymentUrl]);
112
+
113
+ useEffect(() => {
114
+ if (!isNil(apiUrl) && !isNil(apiKey)) {
115
+ dispatch(setApiUrl(apiUrl));
116
+ dispatch(setApiKey(apiKey));
117
+ }
118
+ }, [apiUrl, apiKey]);
119
+
120
+ useEffect(() => {
121
+ const params = new URLSearchParams(location.search);
122
+ const startDate = getDateFromParams(params, "startDate");
123
+ const endDate = getDateFromParams(params, "endDate");
124
+ const catalog = getNumberFromParams(params, "catalog");
125
+ const rooms = getRoomsFromParams(params, "rooms");
126
+ const flight = getFlightsFromParams(params, "flight");
127
+ const flightRouteId = getStringFromParams(params, "flightRouteId");
128
+ const vendorConfigurationId = getNumberFromParams(
129
+ params,
130
+ "vendorConfigurationId"
131
+ );
132
+ const allotmentName = getStringFromParams(params, "allotmentName");
133
+ const allotmentIds = getNumbersFromParams(params, "allotmentId");
134
+ const tourCode = getStringFromParams(params, "tourCode");
135
+ const bookingNumber = params.get("bookingNr") ?? undefined;
136
+
137
+ if (typeof window !== "undefined") {
138
+ window.scrollTo(0, 0);
139
+ }
140
+
141
+ if (!isNil(bookingNumber)) {
142
+ dispatch(setBookingNumber(bookingNumber));
143
+ dispatch(setCurrentStep(CONFIRMATION_STEP));
144
+ } else if (!flightOptions.isHidden) {
145
+ dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
146
+ } else if (!roomOptions.isHidden) {
147
+ dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
148
+ }
149
+
150
+ if (
151
+ !isNil(startDate) &&
152
+ !isNil(endDate) &&
153
+ !isNil(catalog) &&
154
+ !isNil(rooms)
155
+ ) {
156
+ dispatch(
157
+ setBookingAttributes({
158
+ startDate,
159
+ endDate,
160
+ catalog,
161
+ rooms,
162
+ flight,
163
+ includeFlights,
164
+ allotmentName,
165
+ allotmentIds,
166
+ tourCode,
167
+ flightRouteId,
168
+ vendorConfigurationId,
169
+ })
170
+ );
171
+ } else {
172
+ console.error(
173
+ "Failure when setting booking attributes",
174
+ startDate,
175
+ endDate,
176
+ catalog,
177
+ rooms
178
+ );
179
+ }
180
+ }, [location.search, setBookingAttributes, setBookingNumber, includeFlights]);
181
+
182
+ useEffect(() => {
183
+ if (!isNil(productCode) && !isNil(productName)) {
184
+ dispatch(
185
+ setProductAttributes({
186
+ productCode,
187
+ productName,
188
+ })
189
+ );
190
+ } else {
191
+ console.error(
192
+ "Failure when setting product attributes",
193
+ productCode,
194
+ productName
195
+ );
196
+ }
197
+ }, [productCode, productName, setProductAttributes]);
198
+
199
+ const getTranslations = async () => {
200
+ const translations = translationFiles?.map((x) =>
201
+ fetch(x.path)
202
+ .then((y) => y.json())
203
+ .then((z) => ({ language: x.language, value: z }))
204
+ );
205
+ return translations && (await Promise.all(translations));
206
+ };
207
+
208
+ useEffect(() => {
209
+ const loadTranslations = async () => {
210
+ const translations = await getTranslations();
211
+ dispatch(setTranslations(translations)); // Now dispatch the resolved value
212
+ };
213
+
214
+ loadTranslations();
215
+
216
+ dispatch(setOfficeId(officeId));
217
+ dispatch(setLanguageCode(language));
218
+ dispatch(setBookingOptions(bookingOptions));
219
+ dispatch(setCalculateDeposit(showSidebarDeposit));
220
+ if (tagIds && tagIds.length > 0) {
221
+ dispatch(setTagIds(tagIds ?? undefined));
222
+ }
223
+ dispatch(setAgentAdressId(agentAdressId ?? undefined));
224
+ if (agentAdressId && agentAdressId != 0) {
225
+ dispatch(setBookingType("b2b"));
226
+ }
227
+ if (accommodationViewId && accommodationViewId != 0) {
228
+ dispatch(setAccommodationViewId(accommodationViewId));
229
+ }
230
+ }, [
231
+ officeId,
232
+ language,
233
+ bookingOptions,
234
+ showSidebarDeposit,
235
+ setOfficeId,
236
+ setLanguageCode,
237
+ setCalculateDeposit,
238
+ tagIds,
239
+ agentAdressId,
240
+ accommodationViewId,
241
+ ]);
242
+
243
+ useEffect(() => {
244
+ if (
245
+ !productAttributes ||
246
+ !bookingAttributes ||
247
+ !rooms?.length ||
248
+ !isNil(bookingNumber) ||
249
+ !isNil(packageDetails)
250
+ ) {
251
+ return;
252
+ }
253
+
254
+ // Fetch data
255
+ const promise = dispatch(fetchPackage());
256
+ return () => {
257
+ promise.abort();
258
+ };
259
+ }, [
260
+ productAttributes,
261
+ bookingAttributes,
262
+ rooms,
263
+ bookingNumber,
264
+ packageDetails,
265
+ apiSettings.apiUrl,
266
+ apiSettings.apiKey,
267
+ ]);
268
+
269
+ const renderStep = () => {
270
+ switch (currentStep) {
271
+ case FLIGHT_OPTIONS_FORM_STEP:
272
+ return (
273
+ <StepRoute
274
+ number={1}
275
+ title={translations.STEPS.FLIGHT_OPTIONS}
276
+ component={<FlightOptionsForm />}
277
+ />
278
+ );
279
+ case ROOM_OPTIONS_FORM_STEP:
280
+ return (
281
+ <StepRoute
282
+ number={1 + (flightOptions.isHidden ? 0 : 1)}
283
+ title={translations.STEPS.ROOM_OPTIONS}
284
+ component={<RoomOptionsForm />}
285
+ />
286
+ );
287
+ case OPTIONS_FORM_STEP:
288
+ return (
289
+ <StepRoute
290
+ number={
291
+ 1 +
292
+ (roomOptions.isHidden ? 0 : 1) +
293
+ (flightOptions.isHidden ? 0 : 1)
294
+ }
295
+ title={translations.STEPS.EXTRA_OPTIONS}
296
+ component={<OptionsForm />}
297
+ />
298
+ );
299
+ case TRAVELERS_FORM_STEP:
300
+ return (
301
+ <StepRoute
302
+ number={
303
+ 2 +
304
+ (roomOptions.isHidden ? 0 : 1) +
305
+ (flightOptions.isHidden ? 0 : 1)
306
+ }
307
+ title={translations.STEPS.PERSONAL_DETAILS}
308
+ component={<TravelersForm />}
309
+ />
310
+ );
311
+ case SUMMARY_STEP:
312
+ return (
313
+ <StepRoute
314
+ number={
315
+ 3 +
316
+ (roomOptions.isHidden ? 0 : 1) +
317
+ (flightOptions.isHidden ? 0 : 1)
318
+ }
319
+ title={translations.STEPS.SUMMARY}
320
+ component={<Summary />}
321
+ />
322
+ );
323
+ case CONFIRMATION_STEP:
324
+ return (
325
+ <StepRoute
326
+ number={
327
+ 4 +
328
+ (roomOptions.isHidden ? 0 : 1) +
329
+ (flightOptions.isHidden ? 0 : 1)
330
+ }
331
+ title={translations.STEPS.CONFIRMATION}
332
+ component={<Confirmation />}
333
+ />
334
+ );
335
+ case ERROR_STEP:
336
+ return (
337
+ <StepRoute
338
+ number={
339
+ 5 +
340
+ (roomOptions.isHidden ? 0 : 1) +
341
+ (flightOptions.isHidden ? 0 : 1)
342
+ }
343
+ title={translations.STEPS.ERROR}
344
+ component={<Error />}
345
+ />
346
+ );
347
+ }
348
+ };
349
+
350
+ return (
351
+ <>
352
+ {((productAttributes && bookingAttributes && packageDetails) ||
353
+ bookingNumber) && (
354
+ <div className="booking">
355
+ <div className="booking__content">
356
+ <div className="booking__panel">{renderStep()}</div>
357
+ <div className="backdrop" id="backdrop"></div>
358
+ {packageDetails && (
359
+ <Sidebar productName={productName} thumbnailUrl={thumbnailUrl} />
360
+ )}
361
+ </div>
362
+ </div>
363
+ )}
364
+ {!packageDetails && !bookingNumber && !isUnvailable && (
365
+ <div className="booking">
366
+ <div className="booking__loader">
367
+ <Loader />
368
+ <p className="booking__loader-text">
369
+ {isOffer
370
+ ? translations.MAIN.PREPARING_OFFER
371
+ : translations.MAIN.PREPARING_BOOKING}
372
+ </p>
373
+ </div>
374
+ </div>
375
+ )}
376
+ {isUnvailable && (
377
+ <div className="booking">
378
+ <div className="booking__loader">
379
+ <p className="booking__loader-text">
380
+ {translations.MAIN.PRODUCT_UNAVAILABLE}
381
+ </p>
382
+ </div>
383
+ </div>
384
+ )}
385
+ </>
386
+ );
387
+ };
388
+
389
+ export default BookingSelfContained;