@qite/tide-booking-component 0.0.2-preview.8 → 1.0.0-preview

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 (177) hide show
  1. package/README.md +1 -0
  2. package/build/build-cjs/booking-wizard/components/icon.d.ts +7 -7
  3. package/build/build-cjs/booking-wizard/components/labeled-input.d.ts +18 -18
  4. package/build/build-cjs/booking-wizard/components/labeled-select.d.ts +21 -21
  5. package/build/build-cjs/booking-wizard/components/message.d.ts +9 -8
  6. package/build/build-cjs/booking-wizard/components/product-card.d.ts +8 -9
  7. package/build/build-cjs/booking-wizard/components/rating.d.ts +6 -6
  8. package/build/build-cjs/booking-wizard/components/step-indicator.d.ts +6 -6
  9. package/build/build-cjs/booking-wizard/components/step-route.d.ts +9 -9
  10. package/build/build-cjs/booking-wizard/features/booking/api.d.ts +21 -0
  11. package/build/build-cjs/booking-wizard/features/booking/booking-slice.d.ts +124 -18
  12. package/build/build-cjs/booking-wizard/features/booking/booking.d.ts +8 -9
  13. package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +208 -0
  14. package/build/build-cjs/booking-wizard/features/confirmation/confirmation.d.ts +4 -5
  15. package/build/build-cjs/booking-wizard/features/error/error.d.ts +4 -5
  16. package/build/build-cjs/booking-wizard/features/price-details/price-details-api.d.ts +12 -6
  17. package/build/build-cjs/booking-wizard/features/price-details/price-details-slice.d.ts +105 -10
  18. package/build/build-cjs/booking-wizard/features/price-details/util.d.ts +5 -0
  19. package/build/build-cjs/booking-wizard/features/product-options/no-options.d.ts +2 -0
  20. package/build/build-cjs/booking-wizard/features/product-options/none-option.d.ts +17 -0
  21. package/build/build-cjs/booking-wizard/features/product-options/option-booking-group.d.ts +18 -0
  22. package/build/build-cjs/booking-wizard/features/product-options/option-item.d.ts +11 -0
  23. package/build/build-cjs/booking-wizard/features/product-options/option-pax-card.d.ts +9 -0
  24. package/build/build-cjs/booking-wizard/features/product-options/option-pax-group.d.ts +20 -0
  25. package/build/build-cjs/booking-wizard/features/product-options/option-room.d.ts +16 -0
  26. package/build/build-cjs/booking-wizard/features/product-options/option-unit-group.d.ts +20 -0
  27. package/build/build-cjs/booking-wizard/features/product-options/option-units-card.d.ts +9 -0
  28. package/build/build-cjs/booking-wizard/features/product-options/options-form.d.ts +4 -5
  29. package/build/build-cjs/booking-wizard/features/product-options/validate-form.d.ts +2 -2
  30. package/build/build-cjs/booking-wizard/features/sidebar/index.d.ts +7 -3
  31. package/build/build-cjs/booking-wizard/features/sidebar/sidebar-flight.d.ts +8 -0
  32. package/build/build-cjs/booking-wizard/features/sidebar/sidebar-util.d.ts +28 -4
  33. package/build/build-cjs/booking-wizard/features/sidebar/sidebar.d.ts +29 -21
  34. package/build/build-cjs/booking-wizard/features/summary/summary-booking-option-pax.d.ts +7 -0
  35. package/build/build-cjs/booking-wizard/features/summary/summary-booking-option-unit.d.ts +7 -0
  36. package/build/build-cjs/booking-wizard/features/summary/summary-flight.d.ts +8 -0
  37. package/build/build-cjs/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +10 -0
  38. package/build/build-cjs/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +10 -0
  39. package/build/build-cjs/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +10 -0
  40. package/build/build-cjs/booking-wizard/features/summary/summary-slice.d.ts +14 -17
  41. package/build/build-cjs/booking-wizard/features/summary/summary.d.ts +4 -5
  42. package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +95 -45
  43. package/build/build-cjs/booking-wizard/features/travelers-form/travelers-form.d.ts +4 -5
  44. package/build/build-cjs/booking-wizard/features/travelers-form/type-ahead-input.d.ts +16 -15
  45. package/build/build-cjs/booking-wizard/features/travelers-form/validate-form.d.ts +7 -4
  46. package/build/build-cjs/booking-wizard/index.d.ts +12 -11
  47. package/build/build-cjs/booking-wizard/settings-context.d.ts +5 -6
  48. package/build/build-cjs/booking-wizard/store.d.ts +41 -25
  49. package/build/build-cjs/booking-wizard/types.d.ts +111 -59
  50. package/build/build-cjs/booking-wizard/utils/class-util.d.ts +1 -1
  51. package/build/build-cjs/booking-wizard/utils/localization-util.d.ts +1 -1
  52. package/build/build-cjs/booking-wizard/utils/query-string-util.d.ts +21 -2
  53. package/build/build-cjs/booking-wizard/utils/tide-api-utils.d.ts +2 -2
  54. package/build/build-cjs/index.d.ts +2 -2
  55. package/build/build-cjs/index.js +13642 -1886
  56. package/build/build-esm/booking-wizard/components/icon.d.ts +7 -7
  57. package/build/build-esm/booking-wizard/components/labeled-input.d.ts +18 -18
  58. package/build/build-esm/booking-wizard/components/labeled-select.d.ts +21 -21
  59. package/build/build-esm/booking-wizard/components/message.d.ts +9 -8
  60. package/build/build-esm/booking-wizard/components/product-card.d.ts +8 -9
  61. package/build/build-esm/booking-wizard/components/rating.d.ts +6 -6
  62. package/build/build-esm/booking-wizard/components/step-indicator.d.ts +6 -6
  63. package/build/build-esm/booking-wizard/components/step-route.d.ts +9 -9
  64. package/build/build-esm/booking-wizard/features/booking/api.d.ts +21 -0
  65. package/build/build-esm/booking-wizard/features/booking/booking-slice.d.ts +124 -18
  66. package/build/build-esm/booking-wizard/features/booking/booking.d.ts +8 -9
  67. package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +208 -0
  68. package/build/build-esm/booking-wizard/features/confirmation/confirmation.d.ts +4 -5
  69. package/build/build-esm/booking-wizard/features/error/error.d.ts +4 -5
  70. package/build/build-esm/booking-wizard/features/price-details/price-details-api.d.ts +12 -6
  71. package/build/build-esm/booking-wizard/features/price-details/price-details-slice.d.ts +105 -10
  72. package/build/build-esm/booking-wizard/features/price-details/util.d.ts +5 -0
  73. package/build/build-esm/booking-wizard/features/product-options/no-options.d.ts +2 -0
  74. package/build/build-esm/booking-wizard/features/product-options/none-option.d.ts +17 -0
  75. package/build/build-esm/booking-wizard/features/product-options/option-booking-group.d.ts +18 -0
  76. package/build/build-esm/booking-wizard/features/product-options/option-item.d.ts +11 -0
  77. package/build/build-esm/booking-wizard/features/product-options/option-pax-card.d.ts +9 -0
  78. package/build/build-esm/booking-wizard/features/product-options/option-pax-group.d.ts +20 -0
  79. package/build/build-esm/booking-wizard/features/product-options/option-room.d.ts +16 -0
  80. package/build/build-esm/booking-wizard/features/product-options/option-unit-group.d.ts +20 -0
  81. package/build/build-esm/booking-wizard/features/product-options/option-units-card.d.ts +9 -0
  82. package/build/build-esm/booking-wizard/features/product-options/options-form.d.ts +4 -5
  83. package/build/build-esm/booking-wizard/features/product-options/validate-form.d.ts +2 -2
  84. package/build/build-esm/booking-wizard/features/sidebar/index.d.ts +7 -3
  85. package/build/build-esm/booking-wizard/features/sidebar/sidebar-flight.d.ts +8 -0
  86. package/build/build-esm/booking-wizard/features/sidebar/sidebar-util.d.ts +28 -4
  87. package/build/build-esm/booking-wizard/features/sidebar/sidebar.d.ts +29 -21
  88. package/build/build-esm/booking-wizard/features/summary/summary-booking-option-pax.d.ts +7 -0
  89. package/build/build-esm/booking-wizard/features/summary/summary-booking-option-unit.d.ts +7 -0
  90. package/build/build-esm/booking-wizard/features/summary/summary-flight.d.ts +8 -0
  91. package/build/build-esm/booking-wizard/features/summary/summary-per-booking-option-group.d.ts +10 -0
  92. package/build/build-esm/booking-wizard/features/summary/summary-per-pax-option-group.d.ts +10 -0
  93. package/build/build-esm/booking-wizard/features/summary/summary-per-unit-option-group.d.ts +10 -0
  94. package/build/build-esm/booking-wizard/features/summary/summary-slice.d.ts +14 -17
  95. package/build/build-esm/booking-wizard/features/summary/summary.d.ts +4 -5
  96. package/build/build-esm/booking-wizard/features/travelers-form/travelers-form-slice.d.ts +95 -45
  97. package/build/build-esm/booking-wizard/features/travelers-form/travelers-form.d.ts +4 -5
  98. package/build/build-esm/booking-wizard/features/travelers-form/type-ahead-input.d.ts +16 -15
  99. package/build/build-esm/booking-wizard/features/travelers-form/validate-form.d.ts +7 -4
  100. package/build/build-esm/booking-wizard/index.d.ts +12 -11
  101. package/build/build-esm/booking-wizard/settings-context.d.ts +5 -6
  102. package/build/build-esm/booking-wizard/store.d.ts +41 -25
  103. package/build/build-esm/booking-wizard/types.d.ts +111 -59
  104. package/build/build-esm/booking-wizard/utils/class-util.d.ts +1 -1
  105. package/build/build-esm/booking-wizard/utils/localization-util.d.ts +1 -1
  106. package/build/build-esm/booking-wizard/utils/query-string-util.d.ts +21 -2
  107. package/build/build-esm/booking-wizard/utils/tide-api-utils.d.ts +2 -2
  108. package/build/build-esm/index.d.ts +2 -2
  109. package/build/build-esm/index.js +13478 -1875
  110. package/package.json +8 -4
  111. package/rollup.config.js +1 -6
  112. package/src/booking-wizard/components/message.tsx +14 -8
  113. package/src/booking-wizard/components/product-card.tsx +10 -39
  114. package/src/booking-wizard/components/step-indicator.tsx +1 -1
  115. package/src/booking-wizard/components/step-route.tsx +1 -1
  116. package/src/booking-wizard/features/booking/api.ts +44 -0
  117. package/src/booking-wizard/features/booking/booking-slice.ts +274 -40
  118. package/src/booking-wizard/features/booking/booking.tsx +193 -57
  119. package/src/booking-wizard/features/booking/selectors.ts +328 -0
  120. package/src/booking-wizard/features/confirmation/confirmation.tsx +22 -11
  121. package/src/booking-wizard/features/error/error.tsx +15 -2
  122. package/src/booking-wizard/features/price-details/price-details-api.ts +12 -6
  123. package/src/booking-wizard/features/price-details/price-details-slice.ts +80 -50
  124. package/src/booking-wizard/features/price-details/util.ts +135 -0
  125. package/src/booking-wizard/features/product-options/no-options.tsx +18 -0
  126. package/src/booking-wizard/features/product-options/none-option.tsx +118 -0
  127. package/src/booking-wizard/features/product-options/option-booking-group.tsx +210 -0
  128. package/src/booking-wizard/features/product-options/option-item.tsx +321 -0
  129. package/src/booking-wizard/features/product-options/option-pax-card.tsx +102 -0
  130. package/src/booking-wizard/features/product-options/option-pax-group.tsx +169 -0
  131. package/src/booking-wizard/features/product-options/option-room.tsx +300 -0
  132. package/src/booking-wizard/features/product-options/option-unit-group.tsx +192 -0
  133. package/src/booking-wizard/features/product-options/option-units-card.tsx +100 -0
  134. package/src/booking-wizard/features/product-options/options-form.tsx +226 -48
  135. package/src/booking-wizard/features/sidebar/index.tsx +43 -20
  136. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +66 -0
  137. package/src/booking-wizard/features/sidebar/sidebar-util.ts +81 -39
  138. package/src/booking-wizard/features/sidebar/sidebar.tsx +150 -100
  139. package/src/booking-wizard/features/summary/summary-booking-option-pax.tsx +25 -0
  140. package/src/booking-wizard/features/summary/summary-booking-option-unit.tsx +25 -0
  141. package/src/booking-wizard/features/summary/summary-flight.tsx +35 -0
  142. package/src/booking-wizard/features/summary/summary-per-booking-option-group.tsx +57 -0
  143. package/src/booking-wizard/features/summary/summary-per-pax-option-group.tsx +51 -0
  144. package/src/booking-wizard/features/summary/summary-per-unit-option-group.tsx +54 -0
  145. package/src/booking-wizard/features/summary/summary-slice.ts +1 -134
  146. package/src/booking-wizard/features/summary/summary.tsx +521 -134
  147. package/src/booking-wizard/features/travelers-form/travelers-form-slice.ts +55 -56
  148. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +202 -94
  149. package/src/booking-wizard/features/travelers-form/type-ahead-input.tsx +23 -3
  150. package/src/booking-wizard/features/travelers-form/validate-form.ts +40 -3
  151. package/src/booking-wizard/index.tsx +5 -6
  152. package/src/booking-wizard/settings-context.ts +33 -5
  153. package/src/booking-wizard/store.ts +5 -4
  154. package/src/booking-wizard/translations/translations.json +95 -61
  155. package/src/booking-wizard/types.ts +67 -10
  156. package/src/booking-wizard/utils/query-string-util.ts +42 -0
  157. package/build/build-cjs/booking-wizard/features/product-options/checkbox.d.ts +0 -11
  158. package/build/build-cjs/booking-wizard/features/product-options/option-details.d.ts +0 -11
  159. package/build/build-cjs/booking-wizard/features/product-options/product-options-api.d.ts +0 -26
  160. package/build/build-cjs/booking-wizard/features/product-options/product-options-slice.d.ts +0 -37
  161. package/build/build-cjs/booking-wizard/features/product-options/radio-button.d.ts +0 -10
  162. package/build/build-cjs/booking-wizard/features/product-options/rooms-slice.d.ts +0 -12
  163. package/build/build-cjs/booking-wizard/features/product-options/tree-level.d.ts +0 -7
  164. package/build/build-esm/booking-wizard/features/product-options/checkbox.d.ts +0 -11
  165. package/build/build-esm/booking-wizard/features/product-options/option-details.d.ts +0 -11
  166. package/build/build-esm/booking-wizard/features/product-options/product-options-api.d.ts +0 -26
  167. package/build/build-esm/booking-wizard/features/product-options/product-options-slice.d.ts +0 -37
  168. package/build/build-esm/booking-wizard/features/product-options/radio-button.d.ts +0 -10
  169. package/build/build-esm/booking-wizard/features/product-options/rooms-slice.d.ts +0 -12
  170. package/build/build-esm/booking-wizard/features/product-options/tree-level.d.ts +0 -7
  171. package/src/booking-wizard/features/product-options/checkbox.tsx +0 -38
  172. package/src/booking-wizard/features/product-options/option-details.tsx +0 -65
  173. package/src/booking-wizard/features/product-options/product-options-api.ts +0 -148
  174. package/src/booking-wizard/features/product-options/product-options-slice.ts +0 -149
  175. package/src/booking-wizard/features/product-options/radio-button.tsx +0 -35
  176. package/src/booking-wizard/features/product-options/rooms-slice.ts +0 -28
  177. package/src/booking-wizard/features/product-options/tree-level.tsx +0 -118
@@ -0,0 +1,57 @@
1
+ import {
2
+ BookingOptionGroup,
3
+ PerBookingPackageOption,
4
+ } from "@qite/tide-client/build/types";
5
+ import { isEmpty, isNil } from "lodash";
6
+ import React from "react";
7
+ import { getDateText } from "../sidebar/sidebar-util";
8
+ import SummaryBookingOptionPax from "./summary-booking-option-pax";
9
+ import SummaryBookingOptionUnit from "./summary-booking-option-unit";
10
+
11
+ interface SummaryPerBookingOptionGroupProps {
12
+ group: BookingOptionGroup<PerBookingPackageOption>;
13
+ }
14
+
15
+ const SummaryPerBookingOptionGroup: React.FC<
16
+ SummaryPerBookingOptionGroupProps
17
+ > = ({ group }) => {
18
+ const groupOptions = group.options.filter((x) => x.isSelected);
19
+
20
+ return (
21
+ <li className="list__item">
22
+ <h6>{group.title}</h6>
23
+
24
+ <ul className="list">
25
+ {groupOptions.map((opt) => (
26
+ <li key={opt.line.entryLineGuid} className="list__item">
27
+ {opt.line.productName}
28
+ {": "}
29
+ {opt.line.accommodationName}
30
+ {!isNil(opt.line?.regimeName) && ", "}
31
+ {opt.line.regimeName}
32
+ <br />
33
+ {getDateText(opt.line.startDate)}
34
+ {opt.line.startDate != opt.line.endDate
35
+ ? ` > ${getDateText(opt.line.endDate)}`
36
+ : ""}
37
+
38
+ <ul>
39
+ {!isEmpty(opt?.groups) &&
40
+ opt?.groups.map((x) => {
41
+ if (!x.options.some((y) => y.isSelected)) return;
42
+
43
+ return <SummaryPerBookingOptionGroup group={x} />;
44
+ })}
45
+ {!isEmpty(opt?.units) &&
46
+ opt?.units.map((x) => <SummaryBookingOptionUnit unit={x} />)}
47
+ {!isEmpty(opt?.pax) &&
48
+ opt?.pax.map((x) => <SummaryBookingOptionPax pax={x} />)}
49
+ </ul>
50
+ </li>
51
+ ))}
52
+ </ul>
53
+ </li>
54
+ );
55
+ };
56
+
57
+ export default SummaryPerBookingOptionGroup;
@@ -0,0 +1,51 @@
1
+ import {
2
+ BookingOptionGroup,
3
+ PerPaxPackageOption,
4
+ } from "@qite/tide-client/build/types";
5
+ import { isEmpty, isNil } from "lodash";
6
+ import React from "react";
7
+ import { getDateText } from "../sidebar/sidebar-util";
8
+
9
+ interface SummaryPerPaxOptionGroupProps {
10
+ group: BookingOptionGroup<PerPaxPackageOption>;
11
+ }
12
+
13
+ const SummaryPerPaxOptionGroup: React.FC<SummaryPerPaxOptionGroupProps> = ({
14
+ group,
15
+ }) => {
16
+ const groupOptions = group.options.filter((x) => x.isSelected);
17
+
18
+ return (
19
+ <li className="list__item">
20
+ <h6>{group.title}</h6>
21
+
22
+ <ul className="list">
23
+ {groupOptions.map((opt) => (
24
+ <li key={opt.line.entryLineGuid} className="list__item">
25
+ {opt.line.productName}
26
+ {": "}
27
+ {opt.line.accommodationName}
28
+ {!isNil(opt.line?.regimeName) && ", "}
29
+ {opt.line.regimeName}
30
+ <br />
31
+ {getDateText(opt.line.startDate)}
32
+ {opt.line.startDate != opt.line.endDate
33
+ ? ` > ${getDateText(opt.line.endDate)}`
34
+ : ""}
35
+
36
+ <ul className="list">
37
+ {!isEmpty(opt?.groups) &&
38
+ opt?.groups.map((x) => {
39
+ if (!x.options.some((y) => y.isSelected)) return;
40
+
41
+ return <SummaryPerPaxOptionGroup group={x} />;
42
+ })}
43
+ </ul>
44
+ </li>
45
+ ))}
46
+ </ul>
47
+ </li>
48
+ );
49
+ };
50
+
51
+ export default SummaryPerPaxOptionGroup;
@@ -0,0 +1,54 @@
1
+ import {
2
+ BookingOptionGroup,
3
+ PerUnitPackageOption,
4
+ } from "@qite/tide-client/build/types";
5
+ import { isEmpty, isNil } from "lodash";
6
+ import React from "react";
7
+ import { getDateText } from "../sidebar/sidebar-util";
8
+ import SummaryBookingOptionPax from "./summary-booking-option-pax";
9
+
10
+ interface SummaryPerUnitOptionGroupProps {
11
+ group: BookingOptionGroup<PerUnitPackageOption>;
12
+ }
13
+
14
+ const SummaryPerUnitOptionGroup: React.FC<SummaryPerUnitOptionGroupProps> = ({
15
+ group,
16
+ }) => {
17
+ const groupOptions = group.options.filter((x) => x.isSelected);
18
+
19
+ return (
20
+ <li className="list__item">
21
+ <h6>{group.title}</h6>
22
+
23
+ <ul className="list">
24
+ {groupOptions.map((opt) => (
25
+ <li key={opt.line.entryLineGuid} className="list__item">
26
+ {opt.line.productName}
27
+ {": "}
28
+ {opt.line.accommodationName}
29
+ {!isNil(opt.line?.regimeName) && ", "}
30
+ {opt.line.regimeName}
31
+ <br />
32
+ {getDateText(opt.line.startDate)}
33
+ {opt.line.startDate != opt.line.endDate
34
+ ? ` > ${getDateText(opt.line.endDate)}`
35
+ : ""}
36
+
37
+ <ul>
38
+ {!isEmpty(opt?.groups) &&
39
+ opt?.groups.map((x) => {
40
+ if (!x.options.some((y) => y.isSelected)) return;
41
+
42
+ return <SummaryPerUnitOptionGroup group={x} />;
43
+ })}
44
+ {!isEmpty(opt?.pax) &&
45
+ opt?.pax.map((x) => <SummaryBookingOptionPax pax={x} />)}
46
+ </ul>
47
+ </li>
48
+ ))}
49
+ </ul>
50
+ </li>
51
+ );
52
+ };
53
+
54
+ export default SummaryPerUnitOptionGroup;
@@ -1,25 +1,6 @@
1
- import {
2
- Address,
3
- Gender,
4
- PackageBookRequestRoom,
5
- PackageBookRequest,
6
- Pax,
7
- } from "@qite/tide-client";
8
- import { PayloadAction, createSelector, createSlice } from "@reduxjs/toolkit";
9
- import {
10
- selectAdults,
11
- selectChildren,
12
- selectMainBookerId,
13
- selectTravelersFormValues,
14
- } from "../travelers-form/travelers-form-slice";
1
+ import { PayloadAction, createSlice } from "@reduxjs/toolkit";
15
2
 
16
3
  import { RootState } from "../../store";
17
- import { first } from "lodash";
18
- import parseISO from "date-fns/parseISO";
19
- import { selectCacheKey } from "../booking/booking-slice";
20
- import { selectRooms } from "../product-options/rooms-slice";
21
- import { v4 as uuid } from "uuid";
22
- import { selectSelectedOptions } from "../product-options/product-options-slice";
23
4
 
24
5
  export interface SummaryState {
25
6
  userValidated: boolean;
@@ -44,118 +25,4 @@ export const { setUserValidated } = summarySlice.actions;
44
25
  export const selectUserValidated = (state: RootState) =>
45
26
  state.summary.userValidated;
46
27
 
47
- const selectBookRequestTravelers = createSelector(
48
- selectAdults,
49
- selectChildren,
50
- selectMainBookerId,
51
- selectTravelersFormValues,
52
- (adults, children, mainBookerId, travelersFormValues) =>
53
- [...adults, ...children].map((traveler) => {
54
- let pax: Pax = {
55
- id: parseInt(traveler.id),
56
- firstName: traveler.firstName,
57
- lastName: traveler.lastName,
58
- dateOfBirth: parseISO(traveler.birthDate),
59
- gender: parseGender(traveler.gender),
60
- isMainBooker: traveler.id === mainBookerId,
61
- guid: uuid(),
62
- };
63
-
64
- if (pax.isMainBooker) {
65
- pax.phone = travelersFormValues?.phone;
66
- pax.mobile = travelersFormValues?.phone;
67
- pax.email = travelersFormValues?.email;
68
- }
69
-
70
- return pax;
71
- })
72
- );
73
-
74
- const selectBookRequestRooms = createSelector(
75
- selectBookRequestTravelers,
76
- selectRooms,
77
- (travelers, rooms) => {
78
- const firstRoom = first(rooms);
79
-
80
- if (!firstRoom) {
81
- return undefined;
82
- }
83
-
84
- return <PackageBookRequestRoom[]>[
85
- {
86
- id: firstRoom.id,
87
- travelers: travelers,
88
- },
89
- ];
90
- }
91
- );
92
-
93
- const selectBookRequestAddress = createSelector(
94
- selectAdults,
95
- selectChildren,
96
- selectMainBookerId,
97
- selectTravelersFormValues,
98
- (adults, children, mainBookerId, travelersFormValues) => {
99
- const mainBooker = [...adults, ...children].find(
100
- (traveler) => traveler.id === mainBookerId
101
- );
102
-
103
- if (!travelersFormValues || !mainBooker) {
104
- return undefined;
105
- }
106
-
107
- const address: Address = {
108
- name: `${mainBooker.firstName} ${mainBooker.lastName}`,
109
- street: travelersFormValues.street,
110
- number: travelersFormValues.houseNumber,
111
- postalCode: travelersFormValues.zipCode,
112
- location: travelersFormValues.place,
113
- country: travelersFormValues.country,
114
- mobilePhone: travelersFormValues.phone,
115
- email: travelersFormValues.email,
116
- };
117
-
118
- return address;
119
- }
120
- );
121
-
122
- const selectBookRequestOptionGuids = createSelector(
123
- selectSelectedOptions,
124
- (selectedOptions) =>
125
- selectedOptions.map((selectedOption) => selectedOption.guid)
126
- );
127
-
128
- export const selectBookRequest = createSelector(
129
- selectCacheKey,
130
- selectBookRequestRooms,
131
- selectBookRequestAddress,
132
- selectBookRequestOptionGuids,
133
- (cacheKey, rooms, address, optionGuids) => {
134
- if (!cacheKey || !rooms || !address) {
135
- return undefined;
136
- }
137
-
138
- return <PackageBookRequest>{
139
- packageSearchResultCacheKey: cacheKey,
140
- officeId: 1,
141
- language: "nl-BE",
142
- rooms,
143
- address,
144
- optionGuids,
145
- };
146
- }
147
- );
148
-
149
28
  export default summarySlice.reducer;
150
-
151
- const parseGender = (gender: string): number => {
152
- switch (gender) {
153
- case "m":
154
- return Gender.male;
155
- case "f":
156
- return Gender.female;
157
- case "x":
158
- default:
159
- return Gender.other;
160
- }
161
- };