@qite/tide-booking-component 1.2.5 → 1.3.0

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 (141) 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-wizard/components/print-offer-button.d.ts +17 -0
  5. package/build/build-cjs/booking-wizard/types.d.ts +7 -0
  6. package/build/build-cjs/booking-wizard/use-offer-printer.d.ts +13 -0
  7. package/build/build-cjs/index.js +223 -72
  8. package/build/build-cjs/shared/utils/localization-util.d.ts +5 -0
  9. package/build/build-cjs/shared/utils/tide-api-utils.d.ts +1 -0
  10. package/build/build-esm/booking-wizard/components/print-offer-button.d.ts +17 -0
  11. package/build/build-esm/booking-wizard/types.d.ts +7 -0
  12. package/build/build-esm/booking-wizard/use-offer-printer.d.ts +13 -0
  13. package/build/build-esm/index.js +224 -73
  14. package/build/build-esm/shared/utils/localization-util.d.ts +5 -0
  15. package/build/build-esm/shared/utils/tide-api-utils.d.ts +1 -0
  16. package/package.json +75 -75
  17. package/rollup.config.js +23 -23
  18. package/src/booking-product/components/age-select.tsx +35 -35
  19. package/src/booking-product/components/amount-input.tsx +78 -78
  20. package/src/booking-product/components/date-range-picker/calendar-day.tsx +58 -58
  21. package/src/booking-product/components/date-range-picker/calendar.tsx +178 -178
  22. package/src/booking-product/components/date-range-picker/index.tsx +196 -196
  23. package/src/booking-product/components/dates.tsx +136 -136
  24. package/src/booking-product/components/footer.tsx +69 -69
  25. package/src/booking-product/components/header.tsx +79 -79
  26. package/src/booking-product/components/icon.tsx +251 -251
  27. package/src/booking-product/components/product.tsx +314 -314
  28. package/src/booking-product/components/rating.tsx +21 -21
  29. package/src/booking-product/components/rooms.tsx +195 -195
  30. package/src/booking-product/index.tsx +30 -30
  31. package/src/booking-product/settings-context.ts +14 -14
  32. package/src/booking-product/types.ts +28 -28
  33. package/src/booking-product/utils/api.ts +25 -25
  34. package/src/booking-product/utils/price.ts +29 -29
  35. package/src/booking-wizard/api-settings-slice.ts +24 -24
  36. package/src/booking-wizard/components/icon.tsx +508 -508
  37. package/src/booking-wizard/components/labeled-input.tsx +64 -64
  38. package/src/booking-wizard/components/labeled-select.tsx +69 -69
  39. package/src/booking-wizard/components/message.tsx +34 -34
  40. package/src/booking-wizard/components/multi-range-filter.tsx +113 -113
  41. package/src/booking-wizard/components/print-offer-button.tsx +66 -0
  42. package/src/booking-wizard/components/product-card.tsx +37 -37
  43. package/src/booking-wizard/components/step-indicator.tsx +51 -51
  44. package/src/booking-wizard/components/step-route.tsx +27 -27
  45. package/src/booking-wizard/declarations.d.ts +4 -4
  46. package/src/booking-wizard/features/booking/api.ts +49 -49
  47. package/src/booking-wizard/features/booking/booking-self-contained.tsx +384 -384
  48. package/src/booking-wizard/features/booking/booking-slice.ts +662 -662
  49. package/src/booking-wizard/features/booking/booking.tsx +356 -356
  50. package/src/booking-wizard/features/booking/constants.ts +16 -16
  51. package/src/booking-wizard/features/booking/selectors.ts +441 -441
  52. package/src/booking-wizard/features/confirmation/confirmation.tsx +97 -97
  53. package/src/booking-wizard/features/error/error.tsx +78 -78
  54. package/src/booking-wizard/features/flight-options/flight-filter.tsx +432 -432
  55. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +385 -385
  56. package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +229 -229
  57. package/src/booking-wizard/features/flight-options/flight-option.tsx +81 -81
  58. package/src/booking-wizard/features/flight-options/flight-utils.ts +516 -516
  59. package/src/booking-wizard/features/flight-options/index.tsx +196 -196
  60. package/src/booking-wizard/features/price-details/price-details-api.ts +24 -24
  61. package/src/booking-wizard/features/price-details/price-details-slice.ts +178 -178
  62. package/src/booking-wizard/features/price-details/util.ts +155 -155
  63. package/src/booking-wizard/features/product-options/no-options.tsx +21 -21
  64. package/src/booking-wizard/features/product-options/none-option.tsx +120 -120
  65. package/src/booking-wizard/features/product-options/option-booking-airline-group.tsx +64 -64
  66. package/src/booking-wizard/features/product-options/option-booking-group.tsx +216 -216
  67. package/src/booking-wizard/features/product-options/option-item.tsx +317 -317
  68. package/src/booking-wizard/features/product-options/option-pax-card.tsx +201 -201
  69. package/src/booking-wizard/features/product-options/option-pax-group.tsx +175 -175
  70. package/src/booking-wizard/features/product-options/option-room.tsx +321 -321
  71. package/src/booking-wizard/features/product-options/option-unit-group.tsx +198 -198
  72. package/src/booking-wizard/features/product-options/option-units-card.tsx +185 -185
  73. package/src/booking-wizard/features/product-options/options-form.tsx +563 -459
  74. package/src/booking-wizard/features/room-options/index.tsx +187 -187
  75. package/src/booking-wizard/features/room-options/room-utils.ts +190 -190
  76. package/src/booking-wizard/features/room-options/room.tsx +160 -160
  77. package/src/booking-wizard/features/room-options/traveler-rooms.tsx +75 -75
  78. package/src/booking-wizard/features/sidebar/index.tsx +76 -76
  79. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +68 -68
  80. package/src/booking-wizard/features/sidebar/sidebar-util.ts +177 -177
  81. package/src/booking-wizard/features/sidebar/sidebar.tsx +364 -364
  82. package/src/booking-wizard/features/summary/summary-booking-option-pax.tsx +25 -25
  83. package/src/booking-wizard/features/summary/summary-booking-option-unit.tsx +25 -25
  84. package/src/booking-wizard/features/summary/summary-flight.tsx +39 -39
  85. package/src/booking-wizard/features/summary/summary-per-booking-option-group.tsx +69 -69
  86. package/src/booking-wizard/features/summary/summary-per-pax-option-group.tsx +63 -63
  87. package/src/booking-wizard/features/summary/summary-per-unit-option-group.tsx +66 -66
  88. package/src/booking-wizard/features/summary/summary-slice.ts +28 -28
  89. package/src/booking-wizard/features/summary/summary.tsx +674 -674
  90. package/src/booking-wizard/features/travelers-form/travelers-form-slice.ts +164 -164
  91. package/src/booking-wizard/features/travelers-form/travelers-form.tsx +754 -754
  92. package/src/booking-wizard/features/travelers-form/type-ahead-input.tsx +101 -101
  93. package/src/booking-wizard/features/travelers-form/validate-form.ts +245 -245
  94. package/src/booking-wizard/index.tsx +36 -36
  95. package/src/booking-wizard/settings-context.ts +67 -60
  96. package/src/booking-wizard/store.ts +31 -31
  97. package/src/booking-wizard/types.ts +283 -276
  98. package/src/booking-wizard/use-offer-printer.ts +136 -0
  99. package/src/index.ts +4 -4
  100. package/src/shared/components/loader.tsx +16 -16
  101. package/src/shared/translations/en-GB.json +237 -232
  102. package/src/shared/translations/fr-BE.json +238 -233
  103. package/src/shared/translations/nl-BE.json +237 -232
  104. package/src/shared/types.ts +4 -4
  105. package/src/shared/utils/class-util.ts +9 -9
  106. package/src/shared/utils/localization-util.ts +62 -62
  107. package/src/shared/utils/query-string-util.ts +119 -119
  108. package/src/shared/utils/tide-api-utils.ts +36 -36
  109. package/styles/booking-product-variables.scss +394 -394
  110. package/styles/booking-product.scss +446 -446
  111. package/styles/booking-wizard-variables.scss +873 -871
  112. package/styles/booking-wizard.scss +59 -59
  113. package/styles/components/_animations.scss +39 -39
  114. package/styles/components/_base.scss +107 -107
  115. package/styles/components/_booking.scss +879 -879
  116. package/styles/components/_button.scss +238 -238
  117. package/styles/components/_checkbox.scss +219 -219
  118. package/styles/components/_cta.scss +208 -208
  119. package/styles/components/_date-list.scss +41 -41
  120. package/styles/components/_date-range-picker.scss +225 -225
  121. package/styles/components/_decrement-increment.scss +35 -35
  122. package/styles/components/_dropdown.scss +72 -72
  123. package/styles/components/_flight-option.scss +1429 -1429
  124. package/styles/components/_form.scss +1583 -1583
  125. package/styles/components/_info-message.scss +71 -71
  126. package/styles/components/_input.scss +25 -25
  127. package/styles/components/_list.scss +187 -187
  128. package/styles/components/_loader.scss +72 -72
  129. package/styles/components/_mixins.scss +550 -550
  130. package/styles/components/_placeholders.scss +166 -166
  131. package/styles/components/_pricing-summary.scss +155 -155
  132. package/styles/components/_qsm.scss +17 -17
  133. package/styles/components/_radiobutton.scss +170 -170
  134. package/styles/components/_select-wrapper.scss +80 -80
  135. package/styles/components/_spinner.scss +29 -29
  136. package/styles/components/_step-indicators.scss +168 -168
  137. package/styles/components/_table.scss +81 -81
  138. package/styles/components/_tree.scss +530 -530
  139. package/styles/components/_typeahead.scss +281 -281
  140. package/styles/components/_variables.scss +89 -89
  141. package/tsconfig.json +24 -24
@@ -1,229 +1,229 @@
1
- import React from "react";
2
- import Icon from "../../components/icon";
3
-
4
- const FlightOptionModal = ({}) => {
5
- return (
6
- <div className="flight__rate__modal__container">
7
- {" "}
8
- {/* add "flight__rate__modal__container--active" to show modal */}
9
- <div className="flight__rate__modal">
10
- <div className="flight__rate__modal__header">
11
- <h3 className="flight__rate__modal__header__title">
12
- Selecteer een tarief
13
- </h3>
14
- <button className="flight__rate__modal__header__close">
15
- <Icon name="close" width={18} height={18} />
16
- </button>
17
- </div>
18
- <div className="flight__rate__modal__tabs">
19
- <button className="flight__rate__modal__tab flight__rate__modal__tab--active">
20
- Economy / Economy premium
21
- </button>
22
- <button className="flight__rate__modal__tab">
23
- Business / Business premium
24
- </button>
25
- </div>
26
- <div className="flight__rate__modal__content">
27
- <div className="flight__rate__modal__card">
28
- <div className="flight__rate__modal__card__wrapper">
29
- <div className="flight__rate__modal__card__header">
30
- <h3 className="flight__rate__modal__card__header__title">
31
- Economy Basic
32
- </h3>
33
- <p className="flight__rate__modal__card__header__class">
34
- Klasse: Economy
35
- </p>
36
- </div>
37
- <div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
38
- <div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
39
- <Icon name="ticket" width={20} height={20} />
40
- <div className="flight__rate__modal__card__item__wrapper">
41
- <strong>Wijzigingen in het ticket</strong>
42
- <p>Wijzigingen toestaan</p>
43
- </div>
44
- </div>
45
- <div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
46
- <Icon name="payback" width={20} height={20} />
47
- <div className="flight__rate__modal__card__item__wrapper">
48
- <strong>Terugbetaling van ticket</strong>
49
- <p>Ticket retourneerbaar</p>
50
- </div>
51
- </div>
52
- </div>
53
- <div className="flight__rate__modal__card__items">
54
- <div className="flight__rate__modal__card__item">
55
- <Icon name="shopping-bag" width={20} height={20} />
56
- <div className="flight__rate__modal__card__item__wrapper">
57
- <strong>persoonlijke items</strong>
58
- <p>Gratis</p>
59
- </div>
60
- </div>
61
- <div className="flight__rate__modal__card__item">
62
- <Icon name="backpack" width={20} height={20} />
63
- <div className="flight__rate__modal__card__item__wrapper">
64
- <strong>Handbagage</strong>
65
- <p>Gratis: 2 x 8kg</p>
66
- </div>
67
- </div>
68
- <div className="flight__rate__modal__card__item">
69
- <Icon name="suitcase" width={20} height={20} />
70
- <div className="flight__rate__modal__card__item__wrapper">
71
- <strong>Ingecheckte bagage</strong>
72
- <p>Gratis: 2 x 32kg</p>
73
- </div>
74
- </div>
75
- </div>
76
- </div>
77
- <div className="flight__rate__modal__card__footer">
78
- <button className="cta cta--secondary">Selecteer</button>
79
- <span className="price price--increase">+ €2460,00</span>
80
- </div>
81
- </div>
82
- <div className="flight__rate__modal__card flight__rate__modal__card--premium">
83
- <div className="flight__rate__modal__card__wrapper">
84
- <div className="flight__rate__modal__card__header">
85
- <h3 className="flight__rate__modal__card__header__title">
86
- Premium Economy Basic Plus
87
- </h3>
88
- <p className="flight__rate__modal__card__header__class">
89
- Klasse: Economy
90
- </p>
91
- </div>
92
- <div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
93
- <div className="flight__rate__modal__card__item">
94
- <Icon name="ticket" width={20} height={20} />
95
- <div className="flight__rate__modal__card__item__wrapper">
96
- <strong>Wijzigingen in het ticket</strong>
97
- <p>Wijzigingen toestaan</p>
98
- </div>
99
- </div>
100
- <div className="flight__rate__modal__card__item">
101
- <Icon name="payback" width={20} height={20} />
102
- <div className="flight__rate__modal__card__item__wrapper">
103
- <strong>Terugbetaling van ticket</strong>
104
- <p>Ticket retourneerbaar</p>
105
- </div>
106
- </div>
107
- </div>
108
- <div className="flight__rate__modal__card__items">
109
- <div className="flight__rate__modal__card__item">
110
- <Icon name="shopping-bag" width={20} height={20} />
111
- <div className="flight__rate__modal__card__item__wrapper">
112
- <strong>persoonlijke items</strong>
113
- <p>Gratis</p>
114
- </div>
115
- </div>
116
- <div className="flight__rate__modal__card__item">
117
- <Icon name="backpack" width={20} height={20} />
118
- <div className="flight__rate__modal__card__item__wrapper">
119
- <strong>Handbagage</strong>
120
- <p>Gratis: 2 x 8kg</p>
121
- </div>
122
- </div>
123
- <div className="flight__rate__modal__card__item">
124
- <Icon name="suitcase" width={20} height={20} />
125
- <div className="flight__rate__modal__card__item__wrapper">
126
- <strong>Ingecheckte bagage</strong>
127
- <p>Gratis: 2 x 32kg</p>
128
- </div>
129
- </div>
130
- </div>
131
- </div>
132
- <div className="flight__rate__modal__card__footer">
133
- <button className="cta cta--secondary">Selecteer</button>
134
- <span className="price price--increase">+ €2460,00</span>
135
- </div>
136
- </div>
137
- <div className="flight__rate__modal__card flight__rate__modal__card--business">
138
- <div className="flight__rate__modal__card__wrapper">
139
- <div className="flight__rate__modal__card__header">
140
- <h3 className="flight__rate__modal__card__header__title">
141
- Business Basic Plus
142
- </h3>
143
- <p className="flight__rate__modal__card__header__class">
144
- Klasse: Economy
145
- </p>
146
- </div>
147
- <div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
148
- <div className="flight__rate__modal__card__item">
149
- <Icon name="ticket" width={20} height={20} />
150
- <div className="flight__rate__modal__card__item__wrapper">
151
- <strong>Wijzigingen in het ticket</strong>
152
- <p>Wijzigingen toestaan</p>
153
- </div>
154
- </div>
155
- <div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
156
- <Icon name="payback" width={20} height={20} />
157
- <div className="flight__rate__modal__card__item__wrapper">
158
- <strong>Terugbetaling van ticket</strong>
159
- <p>Ticket retourneerbaar</p>
160
- </div>
161
- </div>
162
- </div>
163
- <div className="flight__rate__modal__card__items">
164
- <div className="flight__rate__modal__card__item">
165
- <Icon name="shopping-bag" width={20} height={20} />
166
- <div className="flight__rate__modal__card__item__wrapper">
167
- <strong>persoonlijke items</strong>
168
- <p>Gratis</p>
169
- </div>
170
- </div>
171
- <div className="flight__rate__modal__card__item">
172
- <Icon name="backpack" width={20} height={20} />
173
- <div className="flight__rate__modal__card__item__wrapper">
174
- <strong>Handbagage</strong>
175
- <p>Gratis: 2 x 8kg</p>
176
- </div>
177
- </div>
178
- <div className="flight__rate__modal__card__item">
179
- <Icon name="suitcase" width={20} height={20} />
180
- <div className="flight__rate__modal__card__item__wrapper">
181
- <strong>Ingecheckte bagage</strong>
182
- <p>Gratis: 2 x 32kg</p>
183
- </div>
184
- </div>
185
- <div className="flight__rate__modal__card__item">
186
- <Icon name="seat-selection" width={20} height={20} />
187
- <div className="flight__rate__modal__card__item__wrapper">
188
- <strong>Stoelselectie</strong>
189
- <p>kies uw stoel in het vliegtijg</p>
190
- </div>
191
- </div>
192
- <div className="flight__rate__modal__card__item">
193
- <Icon name="check-in" width={20} height={20} />
194
- <div className="flight__rate__modal__card__item__wrapper">
195
- <strong>Sneller inchecken</strong>
196
- <p>Sla de wachtrijen voor de veiligheidscontrole over</p>
197
- </div>
198
- </div>
199
- <div className="flight__rate__modal__card__item">
200
- <Icon name="business-lounge" width={20} height={20} />
201
- <div className="flight__rate__modal__card__item__wrapper">
202
- <strong>Zakenlunge</strong>
203
- <p>Ontspan voor uw vlucht</p>
204
- </div>
205
- </div>
206
- <div className="flight__rate__modal__card__item">
207
- <Icon name="priority" width={20} height={20} />
208
- <div className="flight__rate__modal__card__item__wrapper">
209
- <strong>Prioriteit</strong>
210
- <p>Stap voor anderen aan boord</p>
211
- </div>
212
- </div>
213
- </div>
214
- </div>
215
- <div className="flight__rate__modal__card__footer">
216
- <button className="cta cta--secondary">Selecteer</button>
217
- <span className="price price--increase">+ €2460,00</span>
218
- </div>
219
- </div>
220
- </div>
221
- <div className="flight__rate__modal__footer">
222
- <button className="cta cta--secondary">Toepassen</button>
223
- </div>
224
- </div>
225
- </div>
226
- );
227
- };
228
-
229
- export default FlightOptionModal;
1
+ import React from "react";
2
+ import Icon from "../../components/icon";
3
+
4
+ const FlightOptionModal = ({}) => {
5
+ return (
6
+ <div className="flight__rate__modal__container">
7
+ {" "}
8
+ {/* add "flight__rate__modal__container--active" to show modal */}
9
+ <div className="flight__rate__modal">
10
+ <div className="flight__rate__modal__header">
11
+ <h3 className="flight__rate__modal__header__title">
12
+ Selecteer een tarief
13
+ </h3>
14
+ <button className="flight__rate__modal__header__close">
15
+ <Icon name="close" width={18} height={18} />
16
+ </button>
17
+ </div>
18
+ <div className="flight__rate__modal__tabs">
19
+ <button className="flight__rate__modal__tab flight__rate__modal__tab--active">
20
+ Economy / Economy premium
21
+ </button>
22
+ <button className="flight__rate__modal__tab">
23
+ Business / Business premium
24
+ </button>
25
+ </div>
26
+ <div className="flight__rate__modal__content">
27
+ <div className="flight__rate__modal__card">
28
+ <div className="flight__rate__modal__card__wrapper">
29
+ <div className="flight__rate__modal__card__header">
30
+ <h3 className="flight__rate__modal__card__header__title">
31
+ Economy Basic
32
+ </h3>
33
+ <p className="flight__rate__modal__card__header__class">
34
+ Klasse: Economy
35
+ </p>
36
+ </div>
37
+ <div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
38
+ <div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
39
+ <Icon name="ticket" width={20} height={20} />
40
+ <div className="flight__rate__modal__card__item__wrapper">
41
+ <strong>Wijzigingen in het ticket</strong>
42
+ <p>Wijzigingen toestaan</p>
43
+ </div>
44
+ </div>
45
+ <div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
46
+ <Icon name="payback" width={20} height={20} />
47
+ <div className="flight__rate__modal__card__item__wrapper">
48
+ <strong>Terugbetaling van ticket</strong>
49
+ <p>Ticket retourneerbaar</p>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <div className="flight__rate__modal__card__items">
54
+ <div className="flight__rate__modal__card__item">
55
+ <Icon name="shopping-bag" width={20} height={20} />
56
+ <div className="flight__rate__modal__card__item__wrapper">
57
+ <strong>persoonlijke items</strong>
58
+ <p>Gratis</p>
59
+ </div>
60
+ </div>
61
+ <div className="flight__rate__modal__card__item">
62
+ <Icon name="backpack" width={20} height={20} />
63
+ <div className="flight__rate__modal__card__item__wrapper">
64
+ <strong>Handbagage</strong>
65
+ <p>Gratis: 2 x 8kg</p>
66
+ </div>
67
+ </div>
68
+ <div className="flight__rate__modal__card__item">
69
+ <Icon name="suitcase" width={20} height={20} />
70
+ <div className="flight__rate__modal__card__item__wrapper">
71
+ <strong>Ingecheckte bagage</strong>
72
+ <p>Gratis: 2 x 32kg</p>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ <div className="flight__rate__modal__card__footer">
78
+ <button className="cta cta--secondary">Selecteer</button>
79
+ <span className="price price--increase">+ €2460,00</span>
80
+ </div>
81
+ </div>
82
+ <div className="flight__rate__modal__card flight__rate__modal__card--premium">
83
+ <div className="flight__rate__modal__card__wrapper">
84
+ <div className="flight__rate__modal__card__header">
85
+ <h3 className="flight__rate__modal__card__header__title">
86
+ Premium Economy Basic Plus
87
+ </h3>
88
+ <p className="flight__rate__modal__card__header__class">
89
+ Klasse: Economy
90
+ </p>
91
+ </div>
92
+ <div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
93
+ <div className="flight__rate__modal__card__item">
94
+ <Icon name="ticket" width={20} height={20} />
95
+ <div className="flight__rate__modal__card__item__wrapper">
96
+ <strong>Wijzigingen in het ticket</strong>
97
+ <p>Wijzigingen toestaan</p>
98
+ </div>
99
+ </div>
100
+ <div className="flight__rate__modal__card__item">
101
+ <Icon name="payback" width={20} height={20} />
102
+ <div className="flight__rate__modal__card__item__wrapper">
103
+ <strong>Terugbetaling van ticket</strong>
104
+ <p>Ticket retourneerbaar</p>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ <div className="flight__rate__modal__card__items">
109
+ <div className="flight__rate__modal__card__item">
110
+ <Icon name="shopping-bag" width={20} height={20} />
111
+ <div className="flight__rate__modal__card__item__wrapper">
112
+ <strong>persoonlijke items</strong>
113
+ <p>Gratis</p>
114
+ </div>
115
+ </div>
116
+ <div className="flight__rate__modal__card__item">
117
+ <Icon name="backpack" width={20} height={20} />
118
+ <div className="flight__rate__modal__card__item__wrapper">
119
+ <strong>Handbagage</strong>
120
+ <p>Gratis: 2 x 8kg</p>
121
+ </div>
122
+ </div>
123
+ <div className="flight__rate__modal__card__item">
124
+ <Icon name="suitcase" width={20} height={20} />
125
+ <div className="flight__rate__modal__card__item__wrapper">
126
+ <strong>Ingecheckte bagage</strong>
127
+ <p>Gratis: 2 x 32kg</p>
128
+ </div>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ <div className="flight__rate__modal__card__footer">
133
+ <button className="cta cta--secondary">Selecteer</button>
134
+ <span className="price price--increase">+ €2460,00</span>
135
+ </div>
136
+ </div>
137
+ <div className="flight__rate__modal__card flight__rate__modal__card--business">
138
+ <div className="flight__rate__modal__card__wrapper">
139
+ <div className="flight__rate__modal__card__header">
140
+ <h3 className="flight__rate__modal__card__header__title">
141
+ Business Basic Plus
142
+ </h3>
143
+ <p className="flight__rate__modal__card__header__class">
144
+ Klasse: Economy
145
+ </p>
146
+ </div>
147
+ <div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
148
+ <div className="flight__rate__modal__card__item">
149
+ <Icon name="ticket" width={20} height={20} />
150
+ <div className="flight__rate__modal__card__item__wrapper">
151
+ <strong>Wijzigingen in het ticket</strong>
152
+ <p>Wijzigingen toestaan</p>
153
+ </div>
154
+ </div>
155
+ <div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
156
+ <Icon name="payback" width={20} height={20} />
157
+ <div className="flight__rate__modal__card__item__wrapper">
158
+ <strong>Terugbetaling van ticket</strong>
159
+ <p>Ticket retourneerbaar</p>
160
+ </div>
161
+ </div>
162
+ </div>
163
+ <div className="flight__rate__modal__card__items">
164
+ <div className="flight__rate__modal__card__item">
165
+ <Icon name="shopping-bag" width={20} height={20} />
166
+ <div className="flight__rate__modal__card__item__wrapper">
167
+ <strong>persoonlijke items</strong>
168
+ <p>Gratis</p>
169
+ </div>
170
+ </div>
171
+ <div className="flight__rate__modal__card__item">
172
+ <Icon name="backpack" width={20} height={20} />
173
+ <div className="flight__rate__modal__card__item__wrapper">
174
+ <strong>Handbagage</strong>
175
+ <p>Gratis: 2 x 8kg</p>
176
+ </div>
177
+ </div>
178
+ <div className="flight__rate__modal__card__item">
179
+ <Icon name="suitcase" width={20} height={20} />
180
+ <div className="flight__rate__modal__card__item__wrapper">
181
+ <strong>Ingecheckte bagage</strong>
182
+ <p>Gratis: 2 x 32kg</p>
183
+ </div>
184
+ </div>
185
+ <div className="flight__rate__modal__card__item">
186
+ <Icon name="seat-selection" width={20} height={20} />
187
+ <div className="flight__rate__modal__card__item__wrapper">
188
+ <strong>Stoelselectie</strong>
189
+ <p>kies uw stoel in het vliegtijg</p>
190
+ </div>
191
+ </div>
192
+ <div className="flight__rate__modal__card__item">
193
+ <Icon name="check-in" width={20} height={20} />
194
+ <div className="flight__rate__modal__card__item__wrapper">
195
+ <strong>Sneller inchecken</strong>
196
+ <p>Sla de wachtrijen voor de veiligheidscontrole over</p>
197
+ </div>
198
+ </div>
199
+ <div className="flight__rate__modal__card__item">
200
+ <Icon name="business-lounge" width={20} height={20} />
201
+ <div className="flight__rate__modal__card__item__wrapper">
202
+ <strong>Zakenlunge</strong>
203
+ <p>Ontspan voor uw vlucht</p>
204
+ </div>
205
+ </div>
206
+ <div className="flight__rate__modal__card__item">
207
+ <Icon name="priority" width={20} height={20} />
208
+ <div className="flight__rate__modal__card__item__wrapper">
209
+ <strong>Prioriteit</strong>
210
+ <p>Stap voor anderen aan boord</p>
211
+ </div>
212
+ </div>
213
+ </div>
214
+ </div>
215
+ <div className="flight__rate__modal__card__footer">
216
+ <button className="cta cta--secondary">Selecteer</button>
217
+ <span className="price price--increase">+ €2460,00</span>
218
+ </div>
219
+ </div>
220
+ </div>
221
+ <div className="flight__rate__modal__footer">
222
+ <button className="cta cta--secondary">Toepassen</button>
223
+ </div>
224
+ </div>
225
+ </div>
226
+ );
227
+ };
228
+
229
+ export default FlightOptionModal;
@@ -1,81 +1,81 @@
1
- import React, { useState } from "react";
2
- import { useSelector } from "react-redux";
3
- import { buildClassName } from "../../../shared/utils/class-util";
4
- import { getPriceDifferenceText } from "../../../shared/utils/localization-util";
5
- import { GroupedFlights } from "../../types";
6
- import { selectTranslations } from "../booking/selectors";
7
- import FlightOptionFlight from "./flight-option-flight";
8
-
9
- interface FlightOptionProps {
10
- item: GroupedFlights;
11
- isSelected: boolean;
12
- currentPrice: number;
13
- onChange: (item: GroupedFlights) => void;
14
- }
15
-
16
- const FlightOption: React.FC<FlightOptionProps> = ({
17
- item,
18
- isSelected,
19
- currentPrice,
20
- onChange,
21
- }) => {
22
- const translations = useSelector(selectTranslations);
23
-
24
- const ownTotalPrice = item.selectedOutward.price + item.selectedReturn.price;
25
- const priceDifference = item.isSelected ? 0 : ownTotalPrice - currentPrice;
26
-
27
- const [outwardVisible] = useState<boolean>(false);
28
- const [returnVisible] = useState<boolean>(false);
29
-
30
- const handleButtonClick = () => {
31
- if (!item.isSelected) onChange(item);
32
- };
33
-
34
- return (
35
- <div className="flight__option">
36
- <div className="flight__content">
37
- <div className="flight__flights">
38
- <div className="flight__flight">
39
- <div className="flight__flight__header">
40
- <div className="flight__status__container"></div>
41
- <div className="flight__price">
42
- {!isSelected && (
43
- <span
44
- className={buildClassName([
45
- "price",
46
- priceDifference > 0 && "price--increase",
47
- priceDifference < 0 && "price--decrease",
48
- ])}
49
- >
50
- {getPriceDifferenceText(priceDifference)}
51
- </span>
52
- )}
53
- <button
54
- type="button"
55
- className={`cta ${
56
- isSelected ? "cta--selected" : "cta--select"
57
- }`}
58
- onClick={handleButtonClick}
59
- >
60
- {isSelected
61
- ? translations.SHARED.SELECTED
62
- : translations.SHARED.SELECT}
63
- </button>
64
- </div>
65
- </div>
66
- </div>
67
- <FlightOptionFlight
68
- details={item.outward}
69
- isOptionsVisible={outwardVisible}
70
- />
71
- <FlightOptionFlight
72
- details={item.return}
73
- isOptionsVisible={returnVisible}
74
- />
75
- </div>
76
- </div>
77
- </div>
78
- );
79
- };
80
-
81
- export default FlightOption;
1
+ import React, { useState } from "react";
2
+ import { useSelector } from "react-redux";
3
+ import { buildClassName } from "../../../shared/utils/class-util";
4
+ import { getPriceDifferenceText } from "../../../shared/utils/localization-util";
5
+ import { GroupedFlights } from "../../types";
6
+ import { selectTranslations } from "../booking/selectors";
7
+ import FlightOptionFlight from "./flight-option-flight";
8
+
9
+ interface FlightOptionProps {
10
+ item: GroupedFlights;
11
+ isSelected: boolean;
12
+ currentPrice: number;
13
+ onChange: (item: GroupedFlights) => void;
14
+ }
15
+
16
+ const FlightOption: React.FC<FlightOptionProps> = ({
17
+ item,
18
+ isSelected,
19
+ currentPrice,
20
+ onChange,
21
+ }) => {
22
+ const translations = useSelector(selectTranslations);
23
+
24
+ const ownTotalPrice = item.selectedOutward.price + item.selectedReturn.price;
25
+ const priceDifference = item.isSelected ? 0 : ownTotalPrice - currentPrice;
26
+
27
+ const [outwardVisible] = useState<boolean>(false);
28
+ const [returnVisible] = useState<boolean>(false);
29
+
30
+ const handleButtonClick = () => {
31
+ if (!item.isSelected) onChange(item);
32
+ };
33
+
34
+ return (
35
+ <div className="flight__option">
36
+ <div className="flight__content">
37
+ <div className="flight__flights">
38
+ <div className="flight__flight">
39
+ <div className="flight__flight__header">
40
+ <div className="flight__status__container"></div>
41
+ <div className="flight__price">
42
+ {!isSelected && (
43
+ <span
44
+ className={buildClassName([
45
+ "price",
46
+ priceDifference > 0 && "price--increase",
47
+ priceDifference < 0 && "price--decrease",
48
+ ])}
49
+ >
50
+ {getPriceDifferenceText(priceDifference)}
51
+ </span>
52
+ )}
53
+ <button
54
+ type="button"
55
+ className={`cta ${
56
+ isSelected ? "cta--selected" : "cta--select"
57
+ }`}
58
+ onClick={handleButtonClick}
59
+ >
60
+ {isSelected
61
+ ? translations.SHARED.SELECTED
62
+ : translations.SHARED.SELECT}
63
+ </button>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ <FlightOptionFlight
68
+ details={item.outward}
69
+ isOptionsVisible={outwardVisible}
70
+ />
71
+ <FlightOptionFlight
72
+ details={item.return}
73
+ isOptionsVisible={returnVisible}
74
+ />
75
+ </div>
76
+ </div>
77
+ </div>
78
+ );
79
+ };
80
+
81
+ export default FlightOption;