@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.
- package/.vs/ProjectSettings.json +3 -3
- package/.vs/VSWorkspaceState.json +5 -5
- package/README.md +8 -8
- package/build/build-cjs/booking-wizard/components/print-offer-button.d.ts +17 -0
- package/build/build-cjs/booking-wizard/types.d.ts +7 -0
- package/build/build-cjs/booking-wizard/use-offer-printer.d.ts +13 -0
- package/build/build-cjs/index.js +223 -72
- package/build/build-cjs/shared/utils/localization-util.d.ts +5 -0
- package/build/build-cjs/shared/utils/tide-api-utils.d.ts +1 -0
- package/build/build-esm/booking-wizard/components/print-offer-button.d.ts +17 -0
- package/build/build-esm/booking-wizard/types.d.ts +7 -0
- package/build/build-esm/booking-wizard/use-offer-printer.d.ts +13 -0
- package/build/build-esm/index.js +224 -73
- package/build/build-esm/shared/utils/localization-util.d.ts +5 -0
- package/build/build-esm/shared/utils/tide-api-utils.d.ts +1 -0
- package/package.json +75 -75
- package/rollup.config.js +23 -23
- package/src/booking-product/components/age-select.tsx +35 -35
- package/src/booking-product/components/amount-input.tsx +78 -78
- package/src/booking-product/components/date-range-picker/calendar-day.tsx +58 -58
- package/src/booking-product/components/date-range-picker/calendar.tsx +178 -178
- package/src/booking-product/components/date-range-picker/index.tsx +196 -196
- package/src/booking-product/components/dates.tsx +136 -136
- package/src/booking-product/components/footer.tsx +69 -69
- package/src/booking-product/components/header.tsx +79 -79
- package/src/booking-product/components/icon.tsx +251 -251
- package/src/booking-product/components/product.tsx +314 -314
- package/src/booking-product/components/rating.tsx +21 -21
- package/src/booking-product/components/rooms.tsx +195 -195
- package/src/booking-product/index.tsx +30 -30
- package/src/booking-product/settings-context.ts +14 -14
- package/src/booking-product/types.ts +28 -28
- package/src/booking-product/utils/api.ts +25 -25
- package/src/booking-product/utils/price.ts +29 -29
- package/src/booking-wizard/api-settings-slice.ts +24 -24
- package/src/booking-wizard/components/icon.tsx +508 -508
- package/src/booking-wizard/components/labeled-input.tsx +64 -64
- package/src/booking-wizard/components/labeled-select.tsx +69 -69
- package/src/booking-wizard/components/message.tsx +34 -34
- package/src/booking-wizard/components/multi-range-filter.tsx +113 -113
- package/src/booking-wizard/components/print-offer-button.tsx +66 -0
- package/src/booking-wizard/components/product-card.tsx +37 -37
- package/src/booking-wizard/components/step-indicator.tsx +51 -51
- package/src/booking-wizard/components/step-route.tsx +27 -27
- package/src/booking-wizard/declarations.d.ts +4 -4
- package/src/booking-wizard/features/booking/api.ts +49 -49
- package/src/booking-wizard/features/booking/booking-self-contained.tsx +384 -384
- package/src/booking-wizard/features/booking/booking-slice.ts +662 -662
- package/src/booking-wizard/features/booking/booking.tsx +356 -356
- package/src/booking-wizard/features/booking/constants.ts +16 -16
- package/src/booking-wizard/features/booking/selectors.ts +441 -441
- package/src/booking-wizard/features/confirmation/confirmation.tsx +97 -97
- package/src/booking-wizard/features/error/error.tsx +78 -78
- package/src/booking-wizard/features/flight-options/flight-filter.tsx +432 -432
- package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +385 -385
- package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +229 -229
- package/src/booking-wizard/features/flight-options/flight-option.tsx +81 -81
- package/src/booking-wizard/features/flight-options/flight-utils.ts +516 -516
- package/src/booking-wizard/features/flight-options/index.tsx +196 -196
- package/src/booking-wizard/features/price-details/price-details-api.ts +24 -24
- package/src/booking-wizard/features/price-details/price-details-slice.ts +178 -178
- package/src/booking-wizard/features/price-details/util.ts +155 -155
- package/src/booking-wizard/features/product-options/no-options.tsx +21 -21
- package/src/booking-wizard/features/product-options/none-option.tsx +120 -120
- package/src/booking-wizard/features/product-options/option-booking-airline-group.tsx +64 -64
- package/src/booking-wizard/features/product-options/option-booking-group.tsx +216 -216
- package/src/booking-wizard/features/product-options/option-item.tsx +317 -317
- package/src/booking-wizard/features/product-options/option-pax-card.tsx +201 -201
- package/src/booking-wizard/features/product-options/option-pax-group.tsx +175 -175
- package/src/booking-wizard/features/product-options/option-room.tsx +321 -321
- package/src/booking-wizard/features/product-options/option-unit-group.tsx +198 -198
- package/src/booking-wizard/features/product-options/option-units-card.tsx +185 -185
- package/src/booking-wizard/features/product-options/options-form.tsx +563 -459
- package/src/booking-wizard/features/room-options/index.tsx +187 -187
- package/src/booking-wizard/features/room-options/room-utils.ts +190 -190
- package/src/booking-wizard/features/room-options/room.tsx +160 -160
- package/src/booking-wizard/features/room-options/traveler-rooms.tsx +75 -75
- package/src/booking-wizard/features/sidebar/index.tsx +76 -76
- package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +68 -68
- package/src/booking-wizard/features/sidebar/sidebar-util.ts +177 -177
- package/src/booking-wizard/features/sidebar/sidebar.tsx +364 -364
- package/src/booking-wizard/features/summary/summary-booking-option-pax.tsx +25 -25
- package/src/booking-wizard/features/summary/summary-booking-option-unit.tsx +25 -25
- package/src/booking-wizard/features/summary/summary-flight.tsx +39 -39
- package/src/booking-wizard/features/summary/summary-per-booking-option-group.tsx +69 -69
- package/src/booking-wizard/features/summary/summary-per-pax-option-group.tsx +63 -63
- package/src/booking-wizard/features/summary/summary-per-unit-option-group.tsx +66 -66
- package/src/booking-wizard/features/summary/summary-slice.ts +28 -28
- package/src/booking-wizard/features/summary/summary.tsx +674 -674
- package/src/booking-wizard/features/travelers-form/travelers-form-slice.ts +164 -164
- package/src/booking-wizard/features/travelers-form/travelers-form.tsx +754 -754
- package/src/booking-wizard/features/travelers-form/type-ahead-input.tsx +101 -101
- package/src/booking-wizard/features/travelers-form/validate-form.ts +245 -245
- package/src/booking-wizard/index.tsx +36 -36
- package/src/booking-wizard/settings-context.ts +67 -60
- package/src/booking-wizard/store.ts +31 -31
- package/src/booking-wizard/types.ts +283 -276
- package/src/booking-wizard/use-offer-printer.ts +136 -0
- package/src/index.ts +4 -4
- package/src/shared/components/loader.tsx +16 -16
- package/src/shared/translations/en-GB.json +237 -232
- package/src/shared/translations/fr-BE.json +238 -233
- package/src/shared/translations/nl-BE.json +237 -232
- package/src/shared/types.ts +4 -4
- package/src/shared/utils/class-util.ts +9 -9
- package/src/shared/utils/localization-util.ts +62 -62
- package/src/shared/utils/query-string-util.ts +119 -119
- package/src/shared/utils/tide-api-utils.ts +36 -36
- package/styles/booking-product-variables.scss +394 -394
- package/styles/booking-product.scss +446 -446
- package/styles/booking-wizard-variables.scss +873 -871
- package/styles/booking-wizard.scss +59 -59
- package/styles/components/_animations.scss +39 -39
- package/styles/components/_base.scss +107 -107
- package/styles/components/_booking.scss +879 -879
- package/styles/components/_button.scss +238 -238
- package/styles/components/_checkbox.scss +219 -219
- package/styles/components/_cta.scss +208 -208
- package/styles/components/_date-list.scss +41 -41
- package/styles/components/_date-range-picker.scss +225 -225
- package/styles/components/_decrement-increment.scss +35 -35
- package/styles/components/_dropdown.scss +72 -72
- package/styles/components/_flight-option.scss +1429 -1429
- package/styles/components/_form.scss +1583 -1583
- package/styles/components/_info-message.scss +71 -71
- package/styles/components/_input.scss +25 -25
- package/styles/components/_list.scss +187 -187
- package/styles/components/_loader.scss +72 -72
- package/styles/components/_mixins.scss +550 -550
- package/styles/components/_placeholders.scss +166 -166
- package/styles/components/_pricing-summary.scss +155 -155
- package/styles/components/_qsm.scss +17 -17
- package/styles/components/_radiobutton.scss +170 -170
- package/styles/components/_select-wrapper.scss +80 -80
- package/styles/components/_spinner.scss +29 -29
- package/styles/components/_step-indicators.scss +168 -168
- package/styles/components/_table.scss +81 -81
- package/styles/components/_tree.scss +530 -530
- package/styles/components/_typeahead.scss +281 -281
- package/styles/components/_variables.scss +89 -89
- 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;
|