@qite/tide-booking-component 1.2.0 → 1.2.1
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/build/build-cjs/booking-product/components/footer.d.ts +1 -0
- package/build/build-cjs/booking-product/components/icon.d.ts +2 -0
- package/build/build-cjs/booking-product/types.d.ts +2 -1
- package/build/build-cjs/booking-wizard/components/icon.d.ts +2 -0
- package/build/build-cjs/{booking-product → booking-wizard}/components/multi-range-filter.d.ts +0 -1
- package/build/build-cjs/booking-wizard/features/flight-options/flight-option-flight.d.ts +1 -1
- package/build/build-cjs/booking-wizard/features/flight-options/flight-option.d.ts +1 -1
- package/build/build-cjs/booking-wizard/types.d.ts +1 -0
- package/build/build-cjs/index.js +703 -451
- package/build/build-cjs/shared/utils/localization-util.d.ts +238 -3
- package/build/build-esm/booking-product/components/footer.d.ts +1 -0
- package/build/build-esm/booking-product/components/icon.d.ts +2 -0
- package/build/build-esm/booking-product/types.d.ts +2 -1
- package/build/build-esm/booking-wizard/components/icon.d.ts +2 -0
- package/build/build-esm/{booking-product → booking-wizard}/components/multi-range-filter.d.ts +0 -1
- package/build/build-esm/booking-wizard/features/flight-options/flight-option-flight.d.ts +1 -1
- package/build/build-esm/booking-wizard/features/flight-options/flight-option.d.ts +1 -1
- package/build/build-esm/booking-wizard/types.d.ts +1 -0
- package/build/build-esm/index.js +704 -452
- package/build/build-esm/shared/utils/localization-util.d.ts +238 -3
- package/package.json +1 -1
- package/src/booking-product/components/amount-input.tsx +8 -20
- package/src/booking-product/components/date-range-picker/calendar.tsx +3 -3
- package/src/booking-product/components/dates.tsx +26 -20
- package/src/booking-product/components/footer.tsx +4 -2
- package/src/booking-product/components/header.tsx +4 -4
- package/src/booking-product/components/icon.tsx +176 -11
- package/src/booking-product/components/product.tsx +31 -16
- package/src/{shared → booking-product}/components/rating.tsx +3 -3
- package/src/booking-product/components/rooms.tsx +116 -113
- package/src/booking-product/settings-context.ts +0 -1
- package/src/booking-product/types.ts +2 -1
- package/src/booking-wizard/components/icon.tsx +42 -15
- package/src/{booking-product → booking-wizard}/components/multi-range-filter.tsx +0 -1
- package/src/booking-wizard/declarations.d.ts +4 -0
- package/src/booking-wizard/features/booking/booking-self-contained.tsx +3 -2
- package/src/booking-wizard/features/booking/booking.tsx +3 -2
- package/src/booking-wizard/features/confirmation/confirmation.tsx +8 -4
- package/src/booking-wizard/features/flight-options/flight-filter.tsx +7 -6
- package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +29 -28
- package/src/booking-wizard/features/flight-options/flight-option-modal.tsx +193 -192
- package/src/booking-wizard/features/room-options/index.tsx +1 -5
- package/src/booking-wizard/features/summary/summary.tsx +23 -26
- package/src/booking-wizard/features/travelers-form/travelers-form.tsx +0 -2
- package/src/booking-wizard/features/travelers-form/validate-form.ts +1 -1
- package/src/booking-wizard/index.tsx +2 -2
- package/src/booking-wizard/types.ts +1 -0
- package/src/shared/tide-sprites.svg +117 -0
- package/src/shared/translations/fr-BE.json +229 -222
- package/src/shared/translations/nl-BE.json +229 -222
- package/styles/booking-product-variables.scss +288 -0
- package/styles/booking-product.scss +440 -0
- package/styles/booking-wizard-variables.scss +0 -0
- package/styles/booking-wizard.scss +4 -0
- package/styles/components/_animations.scss +39 -0
- package/styles/components/_base.scss +106 -0
- package/styles/components/_button.scss +185 -0
- package/styles/components/_cta.scss +67 -0
- package/styles/components/_date-range-picker.scss +224 -0
- package/styles/components/_decrement-increment.scss +37 -0
- package/styles/components/_dropdown.scss +74 -0
- package/styles/components/_form.scss +136 -0
- package/styles/components/_loader.scss +71 -0
- package/styles/components/_mixins.scss +518 -0
- package/styles/components/_placeholders.scss +166 -0
- package/styles/components/_qsm.scss +20 -0
- package/styles/components/_variables.scss +89 -0
- package/src/booking-product/components/multi-range-filter.css +0 -115
- /package/build/build-cjs/{shared → booking-product}/components/rating.d.ts +0 -0
- /package/build/build-esm/{shared → booking-product}/components/rating.d.ts +0 -0
|
@@ -1,213 +1,214 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
2
|
+
import React from "react";
|
|
3
|
+
import Icon from "../../components/icon";
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
const FlightOptionModal = ({ }) => {
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
<div className="flight__rate__modal__card__items">
|
|
45
|
-
<div className="flight__rate__modal__card__item">
|
|
46
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#shopping-bag"></use></svg>
|
|
47
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
48
|
-
<strong>persoonlijke items</strong>
|
|
49
|
-
<p>Gratis</p>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
<div className="flight__rate__modal__card__item">
|
|
53
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#backpack"></use></svg>
|
|
54
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
55
|
-
<strong>Handbagage</strong>
|
|
56
|
-
<p>Gratis: 2 x 8kg</p>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
<div className="flight__rate__modal__card__item">
|
|
60
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#suitcase"></use></svg>
|
|
61
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
62
|
-
<strong>Ingecheckte bagage</strong>
|
|
63
|
-
<p>Gratis: 2 x 32kg</p>
|
|
64
|
-
</div>
|
|
7
|
+
|
|
8
|
+
return (
|
|
9
|
+
|
|
10
|
+
<div className="flight__rate__modal__container"> {/* add "flight__rate__modal__container--active" to show modal */}
|
|
11
|
+
<div className="flight__rate__modal">
|
|
12
|
+
<div className="flight__rate__modal__header">
|
|
13
|
+
<h3 className="flight__rate__modal__header__title">Selecteer een tarief</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">Economy / Economy premium</button>
|
|
20
|
+
<button className="flight__rate__modal__tab">Business / Business premium</button>
|
|
21
|
+
</div>
|
|
22
|
+
<div className="flight__rate__modal__content">
|
|
23
|
+
<div className="flight__rate__modal__card">
|
|
24
|
+
<div className="flight__rate__modal__card__wrapper">
|
|
25
|
+
<div className="flight__rate__modal__card__header">
|
|
26
|
+
<h3 className="flight__rate__modal__card__header__title">Economy Basic</h3>
|
|
27
|
+
<p className="flight__rate__modal__card__header__class">Klasse: Economy</p>
|
|
28
|
+
</div>
|
|
29
|
+
<div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
|
|
30
|
+
<div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
|
|
31
|
+
<Icon name="ticket" width={20} height={20} />
|
|
32
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
33
|
+
<strong>Wijzigingen in het ticket</strong>
|
|
34
|
+
<p>Wijzigingen toestaan</p>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
|
|
38
|
+
<Icon name="payback" width={20} height={20} />
|
|
39
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
40
|
+
<strong>Terugbetaling van ticket</strong>
|
|
41
|
+
<p>Ticket retourneerbaar</p>
|
|
65
42
|
</div>
|
|
66
43
|
</div>
|
|
67
44
|
</div>
|
|
68
|
-
<div className="
|
|
69
|
-
<
|
|
70
|
-
|
|
45
|
+
<div className="flight__rate__modal__card__items">
|
|
46
|
+
<div className="flight__rate__modal__card__item">
|
|
47
|
+
<Icon name="shopping-bag" width={20} height={20} />
|
|
48
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
49
|
+
<strong>persoonlijke items</strong>
|
|
50
|
+
<p>Gratis</p>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
<div className="flight__rate__modal__card__item">
|
|
54
|
+
<Icon name="backpack" width={20} height={20} />
|
|
55
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
56
|
+
<strong>Handbagage</strong>
|
|
57
|
+
<p>Gratis: 2 x 8kg</p>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
<div className="flight__rate__modal__card__item">
|
|
61
|
+
<Icon name="suitcase" width={20} height={20} />
|
|
62
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
63
|
+
<strong>Ingecheckte bagage</strong>
|
|
64
|
+
<p>Gratis: 2 x 32kg</p>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
71
67
|
</div>
|
|
72
68
|
</div>
|
|
73
|
-
<div className="
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
<div className="
|
|
88
|
-
<
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#shopping-bag"></use></svg>
|
|
98
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
99
|
-
<strong>persoonlijke items</strong>
|
|
100
|
-
<p>Gratis</p>
|
|
101
|
-
</div>
|
|
102
|
-
</div>
|
|
103
|
-
<div className="flight__rate__modal__card__item">
|
|
104
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#backpack"></use></svg>
|
|
105
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
106
|
-
<strong>Handbagage</strong>
|
|
107
|
-
<p>Gratis: 2 x 8kg</p>
|
|
108
|
-
</div>
|
|
109
|
-
</div>
|
|
110
|
-
<div className="flight__rate__modal__card__item">
|
|
111
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#suitcase"></use></svg>
|
|
112
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
113
|
-
<strong>Ingecheckte bagage</strong>
|
|
114
|
-
<p>Gratis: 2 x 32kg</p>
|
|
115
|
-
</div>
|
|
69
|
+
<div className="flight__rate__modal__card__footer">
|
|
70
|
+
<button className="cta cta--secondary">Selecteer</button>
|
|
71
|
+
<span className="price price--increase">+ €2460,00</span>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
<div className="flight__rate__modal__card flight__rate__modal__card--premium">
|
|
75
|
+
<div className="flight__rate__modal__card__wrapper">
|
|
76
|
+
<div className="flight__rate__modal__card__header">
|
|
77
|
+
<h3 className="flight__rate__modal__card__header__title">Premium Economy Basic Plus</h3>
|
|
78
|
+
<p className="flight__rate__modal__card__header__class">Klasse: Economy</p>
|
|
79
|
+
</div>
|
|
80
|
+
<div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
|
|
81
|
+
<div className="flight__rate__modal__card__item">
|
|
82
|
+
<Icon name="ticket" width={20} height={20} />
|
|
83
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
84
|
+
<strong>Wijzigingen in het ticket</strong>
|
|
85
|
+
<p>Wijzigingen toestaan</p>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
<div className="flight__rate__modal__card__item">
|
|
89
|
+
<Icon name="payback" width={20} height={20} />
|
|
90
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
91
|
+
<strong>Terugbetaling van ticket</strong>
|
|
92
|
+
<p>Ticket retourneerbaar</p>
|
|
116
93
|
</div>
|
|
117
94
|
</div>
|
|
118
95
|
</div>
|
|
119
|
-
<div className="
|
|
120
|
-
<
|
|
121
|
-
|
|
96
|
+
<div className="flight__rate__modal__card__items">
|
|
97
|
+
<div className="flight__rate__modal__card__item">
|
|
98
|
+
<Icon name="shopping-bag" width={20} height={20} />
|
|
99
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
100
|
+
<strong>persoonlijke items</strong>
|
|
101
|
+
<p>Gratis</p>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
<div className="flight__rate__modal__card__item">
|
|
105
|
+
<Icon name="backpack" width={20} height={20} />
|
|
106
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
107
|
+
<strong>Handbagage</strong>
|
|
108
|
+
<p>Gratis: 2 x 8kg</p>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
<div className="flight__rate__modal__card__item">
|
|
112
|
+
<Icon name="suitcase" width={20} height={20} />
|
|
113
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
114
|
+
<strong>Ingecheckte bagage</strong>
|
|
115
|
+
<p>Gratis: 2 x 32kg</p>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
122
118
|
</div>
|
|
123
119
|
</div>
|
|
124
|
-
<div className="
|
|
125
|
-
<
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
<div className="
|
|
139
|
-
<
|
|
140
|
-
<
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#shopping-bag"></use></svg>
|
|
149
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
150
|
-
<strong>persoonlijke items</strong>
|
|
151
|
-
<p>Gratis</p>
|
|
152
|
-
</div>
|
|
153
|
-
</div>
|
|
154
|
-
<div className="flight__rate__modal__card__item">
|
|
155
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#backpack"></use></svg>
|
|
156
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
157
|
-
<strong>Handbagage</strong>
|
|
158
|
-
<p>Gratis: 2 x 8kg</p>
|
|
159
|
-
</div>
|
|
160
|
-
</div>
|
|
161
|
-
<div className="flight__rate__modal__card__item">
|
|
162
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#suitcase"></use></svg>
|
|
163
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
164
|
-
<strong>Ingecheckte bagage</strong>
|
|
165
|
-
<p>Gratis: 2 x 32kg</p>
|
|
166
|
-
</div>
|
|
167
|
-
</div>
|
|
168
|
-
<div className="flight__rate__modal__card__item">
|
|
169
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#seat-selection"></use></svg>
|
|
170
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
171
|
-
<strong>Stoelselectie</strong>
|
|
172
|
-
<p>kies uw stoel in het vliegtijg</p>
|
|
173
|
-
</div>
|
|
174
|
-
</div>
|
|
175
|
-
<div className="flight__rate__modal__card__item">
|
|
176
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#check-in"></use></svg>
|
|
177
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
178
|
-
<strong>Sneller inchecken</strong>
|
|
179
|
-
<p>Sla de wachtrijen voor de veiligheidscontrole over</p>
|
|
180
|
-
</div>
|
|
181
|
-
</div>
|
|
182
|
-
<div className="flight__rate__modal__card__item">
|
|
183
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#business-lounge"></use></svg>
|
|
184
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
185
|
-
<strong>Zakenlunge</strong>
|
|
186
|
-
<p>Ontspan voor uw vlucht</p>
|
|
187
|
-
</div>
|
|
188
|
-
</div>
|
|
189
|
-
<div className="flight__rate__modal__card__item">
|
|
190
|
-
<svg width={20} height={20}><use href="/icons/svg-sprite.svg#priority"></use></svg>
|
|
191
|
-
<div className="flight__rate__modal__card__item__wrapper">
|
|
192
|
-
<strong>Prioriteit</strong>
|
|
193
|
-
<p>Stap voor anderen aan boord</p>
|
|
194
|
-
</div>
|
|
120
|
+
<div className="flight__rate__modal__card__footer">
|
|
121
|
+
<button className="cta cta--secondary">Selecteer</button>
|
|
122
|
+
<span className="price price--increase">+ €2460,00</span>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
<div className="flight__rate__modal__card flight__rate__modal__card--business">
|
|
126
|
+
<div className="flight__rate__modal__card__wrapper">
|
|
127
|
+
<div className="flight__rate__modal__card__header">
|
|
128
|
+
<h3 className="flight__rate__modal__card__header__title">Business Basic Plus</h3>
|
|
129
|
+
<p className="flight__rate__modal__card__header__class">Klasse: Economy</p>
|
|
130
|
+
</div>
|
|
131
|
+
<div className="flight__rate__modal__card__items flight__rate__modal__card__items--top">
|
|
132
|
+
<div className="flight__rate__modal__card__item">
|
|
133
|
+
<Icon name="ticket" width={20} height={20} />
|
|
134
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
135
|
+
<strong>Wijzigingen in het ticket</strong>
|
|
136
|
+
<p>Wijzigingen toestaan</p>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
<div className="flight__rate__modal__card__item flight__rate__modal__card__item--disabled">
|
|
140
|
+
<Icon name="payback" width={20} height={20} />
|
|
141
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
142
|
+
<strong>Terugbetaling van ticket</strong>
|
|
143
|
+
<p>Ticket retourneerbaar</p>
|
|
195
144
|
</div>
|
|
196
145
|
</div>
|
|
197
146
|
</div>
|
|
198
|
-
<div className="
|
|
199
|
-
<
|
|
200
|
-
|
|
147
|
+
<div className="flight__rate__modal__card__items">
|
|
148
|
+
<div className="flight__rate__modal__card__item">
|
|
149
|
+
<Icon name="shopping-bag"width={20} height={20} />
|
|
150
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
151
|
+
<strong>persoonlijke items</strong>
|
|
152
|
+
<p>Gratis</p>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
<div className="flight__rate__modal__card__item">
|
|
156
|
+
<Icon name="backpack" width={20} height={20} />
|
|
157
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
158
|
+
<strong>Handbagage</strong>
|
|
159
|
+
<p>Gratis: 2 x 8kg</p>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
<div className="flight__rate__modal__card__item">
|
|
163
|
+
<Icon name="suitcase" width={20} height={20}/>
|
|
164
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
165
|
+
<strong>Ingecheckte bagage</strong>
|
|
166
|
+
<p>Gratis: 2 x 32kg</p>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
<div className="flight__rate__modal__card__item">
|
|
170
|
+
<Icon name="seat-selection" width={20} height={20} />
|
|
171
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
172
|
+
<strong>Stoelselectie</strong>
|
|
173
|
+
<p>kies uw stoel in het vliegtijg</p>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
<div className="flight__rate__modal__card__item">
|
|
177
|
+
<Icon name="check-in" width={20} height={20} />
|
|
178
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
179
|
+
<strong>Sneller inchecken</strong>
|
|
180
|
+
<p>Sla de wachtrijen voor de veiligheidscontrole over</p>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
<div className="flight__rate__modal__card__item">
|
|
184
|
+
<Icon name="business-lounge" width={20} height={20} />
|
|
185
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
186
|
+
<strong>Zakenlunge</strong>
|
|
187
|
+
<p>Ontspan voor uw vlucht</p>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
<div className="flight__rate__modal__card__item">
|
|
191
|
+
<Icon name="priority" width={20} height={20} />
|
|
192
|
+
<div className="flight__rate__modal__card__item__wrapper">
|
|
193
|
+
<strong>Prioriteit</strong>
|
|
194
|
+
<p>Stap voor anderen aan boord</p>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
201
197
|
</div>
|
|
202
198
|
</div>
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
199
|
+
<div className="flight__rate__modal__card__footer">
|
|
200
|
+
<button className="cta cta--secondary">Selecteer</button>
|
|
201
|
+
<span className="price price--increase">+ €2460,00</span>
|
|
202
|
+
</div>
|
|
206
203
|
</div>
|
|
207
204
|
</div>
|
|
205
|
+
<div className="flight__rate__modal__footer">
|
|
206
|
+
<button className="cta cta--secondary">Toepassen</button>
|
|
207
|
+
</div>
|
|
208
208
|
</div>
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
209
|
+
</div>
|
|
210
|
+
|
|
211
|
+
);
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
export default FlightOptionModal;
|
|
@@ -48,11 +48,7 @@ const RoomOptionsForm: React.FC<RoomOptionsFormProps> = () => {
|
|
|
48
48
|
|
|
49
49
|
const handleSubmit: React.FormEventHandler<HTMLFormElement> = (e) => {
|
|
50
50
|
if (settings.skipRouter) {
|
|
51
|
-
|
|
52
|
-
dispatch(setCurrentStep(OPTIONS_FORM_STEP));
|
|
53
|
-
} else {
|
|
54
|
-
dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
|
|
55
|
-
}
|
|
51
|
+
dispatch(setCurrentStep(OPTIONS_FORM_STEP));
|
|
56
52
|
} else {
|
|
57
53
|
navigate(`${settings.basePath}${settings.options.pathSuffix}?${bookingQueryString}`);
|
|
58
54
|
}
|
|
@@ -55,7 +55,7 @@ interface VoucherProps {
|
|
|
55
55
|
isValid?: boolean;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
interface SummaryProps {}
|
|
58
|
+
interface SummaryProps { }
|
|
59
59
|
|
|
60
60
|
const Summary: React.FC<SummaryProps> = () => {
|
|
61
61
|
const dispatch = useAppDispatch();
|
|
@@ -99,8 +99,8 @@ const Summary: React.FC<SummaryProps> = () => {
|
|
|
99
99
|
|
|
100
100
|
const notificationsValidated = !isNil(notifications)
|
|
101
101
|
? notifications
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
.filter((x) => x.hasToBeConfirmed)
|
|
103
|
+
.every((checkbox) => checkbox.isConfirmed)
|
|
104
104
|
: true;
|
|
105
105
|
|
|
106
106
|
dispatch(setUserValidated(checkboxesValidated && notificationsValidated));
|
|
@@ -244,7 +244,7 @@ const Summary: React.FC<SummaryProps> = () => {
|
|
|
244
244
|
dispatch(setCurrentStep(TRAVELERS_FORM_STEP));
|
|
245
245
|
};
|
|
246
246
|
|
|
247
|
-
const translations = useSelector(selectTranslations);
|
|
247
|
+
const translations = useSelector(selectTranslations);
|
|
248
248
|
|
|
249
249
|
return (
|
|
250
250
|
<>
|
|
@@ -274,27 +274,26 @@ const Summary: React.FC<SummaryProps> = () => {
|
|
|
274
274
|
{translations.SHARED.ROOM} {rIndex + 1}
|
|
275
275
|
</h5>
|
|
276
276
|
<p className="form__region-label">
|
|
277
|
-
{`${r.adults.length + r.children.length} ${
|
|
278
|
-
r.adults.length + r.children.length === 1
|
|
277
|
+
{`${r.adults.length + r.children.length} ${r.adults.length + r.children.length === 1
|
|
279
278
|
? translations.SUMMARY.TRAVELER
|
|
280
279
|
: translations.SUMMARY.TRAVELERS
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
}: ${compact([
|
|
281
|
+
r.adults.length,
|
|
282
|
+
r.adults.length === 1 &&
|
|
284
283
|
` ${translations.SUMMARY.ADULT}`,
|
|
285
|
-
|
|
284
|
+
r.adults.length > 1 &&
|
|
286
285
|
` ${translations.SUMMARY.ADULTS}`,
|
|
287
|
-
|
|
286
|
+
r.adults &&
|
|
288
287
|
r.adults.length &&
|
|
289
288
|
r.children &&
|
|
290
289
|
r.children.length &&
|
|
291
290
|
", ",
|
|
292
|
-
|
|
293
|
-
|
|
291
|
+
r.children.length,
|
|
292
|
+
r.children.length === 1 &&
|
|
294
293
|
` ${translations.SUMMARY.CHILD}`,
|
|
295
|
-
|
|
294
|
+
r.children.length > 1 &&
|
|
296
295
|
` ${translations.SUMMARY.CHILDREN}`,
|
|
297
|
-
|
|
296
|
+
]).join("")}`}
|
|
298
297
|
</p>
|
|
299
298
|
</div>
|
|
300
299
|
</div>
|
|
@@ -320,14 +319,12 @@ const Summary: React.FC<SummaryProps> = () => {
|
|
|
320
319
|
</li>
|
|
321
320
|
{isMainBooker && (
|
|
322
321
|
<>
|
|
323
|
-
<li className="list__item">{`${
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
travelerFormValues?.
|
|
328
|
-
|
|
329
|
-
travelerFormValues?.place
|
|
330
|
-
}`}</li>
|
|
322
|
+
<li className="list__item">{`${travelerFormValues?.street
|
|
323
|
+
} ${compact([
|
|
324
|
+
travelerFormValues?.houseNumber,
|
|
325
|
+
travelerFormValues?.box,
|
|
326
|
+
]).join(" ")}, ${travelerFormValues?.zipCode} ${travelerFormValues?.place
|
|
327
|
+
}`}</li>
|
|
331
328
|
<li className="list__item">
|
|
332
329
|
{travelerFormValues?.phone}
|
|
333
330
|
</li>
|
|
@@ -574,7 +571,7 @@ const Summary: React.FC<SummaryProps> = () => {
|
|
|
574
571
|
<Icon name="ui-tooltip" className="icon--secondary-color" />
|
|
575
572
|
<div className="info-message__copy">
|
|
576
573
|
<h5>{translations.SUMMARY.VALIDATE_TITLE}</h5>
|
|
577
|
-
<p>{translations.SUMMARY.
|
|
574
|
+
<p>{settings.isOffer ? translations.SUMMARY.VALIDATE_TEXT_OFFER : translations.SUMMARY.VALIDATE_TEXT_BOOKING}</p>
|
|
578
575
|
{checkboxes &&
|
|
579
576
|
checkboxes.map((checkbox) => (
|
|
580
577
|
<div className="checkbox" key={checkbox.id}>
|
|
@@ -625,14 +622,14 @@ const Summary: React.FC<SummaryProps> = () => {
|
|
|
625
622
|
</Link>
|
|
626
623
|
)}
|
|
627
624
|
<button
|
|
628
|
-
title={translations.STEPS.
|
|
625
|
+
title={settings.isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING}
|
|
629
626
|
className={buildClassName([
|
|
630
627
|
"cta",
|
|
631
628
|
!userValidated && "cta--disabled",
|
|
632
629
|
])}
|
|
633
630
|
disabled={!userValidated}
|
|
634
631
|
>
|
|
635
|
-
{translations.STEPS.
|
|
632
|
+
{settings.isOffer ? translations.STEPS.SUBMIT_OFFER : translations.STEPS.SUBMIT_BOOKING}
|
|
636
633
|
</button>
|
|
637
634
|
</div>
|
|
638
635
|
</form>
|
|
@@ -531,7 +531,6 @@ const TravelersForm: React.FC<TravelersFormProps> = () => {
|
|
|
531
531
|
name="street"
|
|
532
532
|
onChange={formik.handleChange}
|
|
533
533
|
onBlur={formik.handleBlur}
|
|
534
|
-
placeholder={translations.TRAVELERS_FORM.STREET_PLACEHOLDER}
|
|
535
534
|
value={formik.values.street}
|
|
536
535
|
/>
|
|
537
536
|
<LabeledInput
|
|
@@ -573,7 +572,6 @@ const TravelersForm: React.FC<TravelersFormProps> = () => {
|
|
|
573
572
|
label={translations.TRAVELERS_FORM.CITY}
|
|
574
573
|
required
|
|
575
574
|
name="place"
|
|
576
|
-
placeholder={translations.TRAVELERS_FORM.CITY_PLACEHOLDER}
|
|
577
575
|
onChange={formik.handleChange}
|
|
578
576
|
onBlur={formik.handleBlur}
|
|
579
577
|
value={formik.values.place}
|
|
@@ -5,7 +5,7 @@ import { CHILD_MAX_AGE } from "./travelers-form-slice";
|
|
|
5
5
|
import { format } from "../../../shared/utils/localization-util";
|
|
6
6
|
|
|
7
7
|
function isValidEmail(email: string) {
|
|
8
|
-
return !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,
|
|
8
|
+
return !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,24}$/i.test(email);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
function getAge(birthDateText: string, startDateText: string) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Provider } from "react-redux";
|
|
3
|
-
import
|
|
3
|
+
import Booking from "./features/booking/booking";
|
|
4
4
|
import SettingsContext from "./settings-context";
|
|
5
|
+
import { store } from "./store";
|
|
5
6
|
import { Settings } from "./types";
|
|
6
|
-
import Booking from "./features/booking/booking";
|
|
7
7
|
|
|
8
8
|
interface BookingWizardProps {
|
|
9
9
|
productCode: string;
|