@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
|
@@ -10,7 +10,8 @@ export declare const getTranslations: (language: string) => {
|
|
|
10
10
|
ERROR: string;
|
|
11
11
|
PREVIOUS: string;
|
|
12
12
|
NEXT: string;
|
|
13
|
-
|
|
13
|
+
SUBMIT_BOOKING: string;
|
|
14
|
+
SUBMIT_OFFER: string;
|
|
14
15
|
COMPOSE: string;
|
|
15
16
|
ROOM_OPTIONS: string;
|
|
16
17
|
FLIGHT_OPTIONS: string;
|
|
@@ -58,6 +59,7 @@ export declare const getTranslations: (language: string) => {
|
|
|
58
59
|
PER_NIGHT: string;
|
|
59
60
|
PER_PERSON_PER_NIGHT: string;
|
|
60
61
|
BOOK_NOW: string;
|
|
62
|
+
TO_YOUR_OFFER: string;
|
|
61
63
|
NOT_AVAILABLE: string;
|
|
62
64
|
NUMBER_OF_ROOMS: string;
|
|
63
65
|
AGE_BY_DEPARTURE_DATE: string;
|
|
@@ -70,9 +72,11 @@ export declare const getTranslations: (language: string) => {
|
|
|
70
72
|
RETURN_DATE: string;
|
|
71
73
|
WHO_YOU_TRAVELING_WITH: string;
|
|
72
74
|
TRAVEL_PERIOD: string;
|
|
75
|
+
CLOSE: string;
|
|
73
76
|
};
|
|
74
77
|
MAIN: {
|
|
75
78
|
PREPARING_BOOKING: string;
|
|
79
|
+
PREPARING_OFFEr: string;
|
|
76
80
|
PRODUCT_UNAVAILABLE: string;
|
|
77
81
|
};
|
|
78
82
|
SHARED: {
|
|
@@ -194,7 +198,8 @@ export declare const getTranslations: (language: string) => {
|
|
|
194
198
|
MAIN_BOOKER: string;
|
|
195
199
|
NOTIFICATIONS_TITLE: string;
|
|
196
200
|
VALIDATE_TITLE: string;
|
|
197
|
-
|
|
201
|
+
VALIDATE_TEXT_BOOKING: string;
|
|
202
|
+
VALIDATE_TEXT_OFFER: string;
|
|
198
203
|
OPTIONS: string;
|
|
199
204
|
REMARKS: string;
|
|
200
205
|
VOUCHERS: string;
|
|
@@ -204,9 +209,239 @@ export declare const getTranslations: (language: string) => {
|
|
|
204
209
|
VOUCHER_INVALID: string;
|
|
205
210
|
};
|
|
206
211
|
CONFIRMATION: {
|
|
207
|
-
|
|
212
|
+
TITLE_TEXT_OFFER: string;
|
|
213
|
+
TITLE_TEXT_BOOKING: string;
|
|
214
|
+
MESSAGE_TEXT1: string;
|
|
215
|
+
MESSAGE_TEXT2_OFFER: string;
|
|
216
|
+
MESSAGE_TEXT2_BOOKING: string;
|
|
217
|
+
QUESTIONS_TEXT1: string;
|
|
218
|
+
QUESTIONS_TEXT2: string;
|
|
219
|
+
QUESTIONS_TEXT3: string;
|
|
220
|
+
QUESTIONS_ALT: string;
|
|
221
|
+
MAIL_SUBJECT: string;
|
|
222
|
+
};
|
|
223
|
+
ERROR: {
|
|
224
|
+
TRY_AGAIN: string;
|
|
208
225
|
MESSAGE_TEXT1: string;
|
|
209
226
|
MESSAGE_TEXT2: string;
|
|
227
|
+
ERROR_TEXT1: string;
|
|
228
|
+
ERROR_TEXT2: string;
|
|
229
|
+
ERROR_TEXT3: string;
|
|
230
|
+
ERROR_ALT: string;
|
|
231
|
+
};
|
|
232
|
+
} | {
|
|
233
|
+
STEPS: {
|
|
234
|
+
PERSONAL_DETAILS: string;
|
|
235
|
+
EXTRA_OPTIONS: string;
|
|
236
|
+
SUMMARY: string;
|
|
237
|
+
CONFIRMATION: string;
|
|
238
|
+
ERROR: string;
|
|
239
|
+
PREVIOUS: string;
|
|
240
|
+
NEXT: string;
|
|
241
|
+
SUBMIT_BOOKING: string;
|
|
242
|
+
SUBMIT_OFFER: string;
|
|
243
|
+
COMPOSE: string;
|
|
244
|
+
ROOM_OPTIONS: string;
|
|
245
|
+
FLIGHT_OPTIONS: string;
|
|
246
|
+
};
|
|
247
|
+
INPUT: {
|
|
248
|
+
INCREASE: string;
|
|
249
|
+
DECREASE: string;
|
|
250
|
+
};
|
|
251
|
+
FLIGHTS_FORM: {
|
|
252
|
+
OUTWARD_FLIGHTS: string;
|
|
253
|
+
OUTWARD_FLIGHT: string;
|
|
254
|
+
RETURN_FLIGHTS: string;
|
|
255
|
+
RETURN_FLIGHT: string;
|
|
256
|
+
DIRECT_FLIGHT: string;
|
|
257
|
+
STOP: string;
|
|
258
|
+
STOPS: string;
|
|
259
|
+
FLIGHT_STOPS: string;
|
|
260
|
+
DIFFERENT_OPTION_WARNING: string;
|
|
261
|
+
FILTER_OPTIONS: string;
|
|
262
|
+
AIRLINES: string;
|
|
263
|
+
AIRPORTS: string;
|
|
264
|
+
NUMBER_OF_STOPS: string;
|
|
265
|
+
FLIGHT_OUTWARD: string;
|
|
266
|
+
DEPARTURE_TIME: string;
|
|
267
|
+
TRAVEL_DURATION: string;
|
|
268
|
+
CHANGE_TIME: string;
|
|
269
|
+
FLIGHT_RETURN: string;
|
|
270
|
+
NO_FLIGHTS_FOUND: string;
|
|
271
|
+
STARTING: string;
|
|
272
|
+
LOWEST_PRICE: string;
|
|
273
|
+
CHOOSE_YOUR_CLASS: string;
|
|
274
|
+
PLUS_ONE_DAY: string;
|
|
275
|
+
STOP_TIME: string;
|
|
276
|
+
NIGHT_DEPARTURE: string;
|
|
277
|
+
MORNING_DEPARTURE: string;
|
|
278
|
+
AFTERNOON_DEPARTURE: string;
|
|
279
|
+
EVENING_DEPARTURE: string;
|
|
280
|
+
};
|
|
281
|
+
PRODUCT: {
|
|
282
|
+
STAY_INCLUDED: string;
|
|
283
|
+
FLIGHT_INCLUDED: string;
|
|
284
|
+
TRANSFER_INCLUDED: string;
|
|
285
|
+
LOADING_PRICE: string;
|
|
286
|
+
PER_PERSON: string;
|
|
287
|
+
PER_NIGHT: string;
|
|
288
|
+
PER_PERSON_PER_NIGHT: string;
|
|
289
|
+
BOOK_NOW: string;
|
|
290
|
+
TO_YOUR_OFFER: string;
|
|
291
|
+
NOT_AVAILABLE: string;
|
|
292
|
+
NUMBER_OF_ROOMS: string;
|
|
293
|
+
AGE_BY_DEPARTURE_DATE: string;
|
|
294
|
+
YEAR: string;
|
|
295
|
+
APPLY: string;
|
|
296
|
+
EDIT: string;
|
|
297
|
+
DEPARTURE: string;
|
|
298
|
+
DEPARTURE_DATE: string;
|
|
299
|
+
RETURN: string;
|
|
300
|
+
RETURN_DATE: string;
|
|
301
|
+
WHO_YOU_TRAVELING_WITH: string;
|
|
302
|
+
TRAVEL_PERIOD: string;
|
|
303
|
+
CLOSE: string;
|
|
304
|
+
};
|
|
305
|
+
MAIN: {
|
|
306
|
+
PREPARING_BOOKING: string;
|
|
307
|
+
PREPARING_OFFER: string;
|
|
308
|
+
PRODUCT_UNAVAILABLE: string;
|
|
309
|
+
};
|
|
310
|
+
SHARED: {
|
|
311
|
+
ROOM: string;
|
|
312
|
+
ROOMS: string;
|
|
313
|
+
TOTAL_PRICE: string;
|
|
314
|
+
ADULTS: string;
|
|
315
|
+
CHILDREN: string;
|
|
316
|
+
SELECT: string;
|
|
317
|
+
SELECTED: string;
|
|
318
|
+
};
|
|
319
|
+
SIDEBAR: {
|
|
320
|
+
OVERVIEW: string;
|
|
321
|
+
SLIDE_TOTAL_PRICE: string;
|
|
322
|
+
SLIDE_DEPOSIT: string;
|
|
323
|
+
TRAVEL_INFO: string;
|
|
324
|
+
TRAVELERS: string;
|
|
325
|
+
TRAVELERS_ADULTS: string;
|
|
326
|
+
TRAVELERS_ADULT: string;
|
|
327
|
+
TRAVELERS_CHILDREN: string;
|
|
328
|
+
TRAVELERS_CHILD: string;
|
|
329
|
+
DEPARTURE: string;
|
|
330
|
+
DEPARTURE_SINGLE: string;
|
|
331
|
+
ARRIVAL: string;
|
|
332
|
+
FLIGHT: string;
|
|
333
|
+
ACCOMMODATION: string;
|
|
334
|
+
BASE_PRICE: string;
|
|
335
|
+
OPTIONS: string;
|
|
336
|
+
INCLUDED_COSTS: string;
|
|
337
|
+
EXTRA_COSTS: string;
|
|
338
|
+
DEPOSIT: string;
|
|
339
|
+
DEPOSIT_TEXT1: string;
|
|
340
|
+
DEPOSIT_TEXT2: string;
|
|
341
|
+
DEPOSIT_TEXT3: string;
|
|
342
|
+
DEPOSIT_TEXT4: string;
|
|
343
|
+
DEPOSIT_TEXT5: string;
|
|
344
|
+
DEPOSIT_TEXT6: string;
|
|
345
|
+
LUGGAGE_INCLUDED: string;
|
|
346
|
+
DEPARTURE_FLIGHT: string;
|
|
347
|
+
ARRIVAL_FLIGHT: string;
|
|
348
|
+
FLIGHT_DEPARTURE: string;
|
|
349
|
+
FLIGHT_ARRIVAL: string;
|
|
350
|
+
ON_REQUEST: string;
|
|
351
|
+
CHANGES: string;
|
|
352
|
+
};
|
|
353
|
+
TRAVELERS_FORM: {
|
|
354
|
+
TRAVELER: string;
|
|
355
|
+
ADULT: string;
|
|
356
|
+
ADULTS: string;
|
|
357
|
+
CHILD: string;
|
|
358
|
+
CHILDREN: string;
|
|
359
|
+
GENDER: string;
|
|
360
|
+
MALE: string;
|
|
361
|
+
FEMALE: string;
|
|
362
|
+
OTHER: string;
|
|
363
|
+
MAIN_BOOKER: string;
|
|
364
|
+
FIRST_NAME: string;
|
|
365
|
+
LAST_NAME: string;
|
|
366
|
+
BIRTHDATE: string;
|
|
367
|
+
STREET: string;
|
|
368
|
+
STREET_PLACEHOLDER: string;
|
|
369
|
+
HOUSE_NUMBER: string;
|
|
370
|
+
POST_BOX: string;
|
|
371
|
+
ZIPCODE: string;
|
|
372
|
+
CITY: string;
|
|
373
|
+
CITY_PLACEHOLDER: string;
|
|
374
|
+
COUNTRY: string;
|
|
375
|
+
SELECT_COUNTRY: string;
|
|
376
|
+
PHONE: string;
|
|
377
|
+
EMAIL: string;
|
|
378
|
+
REPEAT_EMAIL: string;
|
|
379
|
+
VALIDATION_MESSAGE: string;
|
|
380
|
+
BOOK_WITH_AGENT: string;
|
|
381
|
+
CHOOSE_OFFICE: string;
|
|
382
|
+
COUNTRIES: {
|
|
383
|
+
BELGIUM: string;
|
|
384
|
+
NETHERLANDS: string;
|
|
385
|
+
FRANCE: string;
|
|
386
|
+
};
|
|
387
|
+
CHOOSE_AGENT_PLACEHOLDER: string;
|
|
388
|
+
VALIDATION: {
|
|
389
|
+
TRAVELER_X_FIELD: string;
|
|
390
|
+
TRAVELER_X_IS_NO_ADULT: string;
|
|
391
|
+
TRAVELER_X_IS_NO_CHILD: string;
|
|
392
|
+
NO_MAIN_BOOKER_SELECTED: string;
|
|
393
|
+
MAIN_BOOKER_FIELD: string;
|
|
394
|
+
MAIN_BOOKER_EMAIL_IS_INVALID: string;
|
|
395
|
+
MAIN_BOOKER_EMAIL_DOES_NOT_MATCH: string;
|
|
396
|
+
AGENT_IS_REQUIRED: string;
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
OPTIONS_FORM: {
|
|
400
|
+
NO_OPTIONS_TITLE: string;
|
|
401
|
+
NO_OPTIONS_MESSAGE: string;
|
|
402
|
+
UNIT_TITLE: string;
|
|
403
|
+
PACKAGE: string;
|
|
404
|
+
DAY: string;
|
|
405
|
+
DAYS: string;
|
|
406
|
+
NIGHT: string;
|
|
407
|
+
NIGHTS: string;
|
|
408
|
+
PER_PAX_TITLE: string;
|
|
409
|
+
PER_BOOKING_TITLE: string;
|
|
410
|
+
PER_UNIT_TITLE: string;
|
|
411
|
+
NONE: string;
|
|
412
|
+
};
|
|
413
|
+
ROOM_OPTIONS_FORM: {
|
|
414
|
+
TRAVELER_GROUP: string;
|
|
415
|
+
ALTERNATIVES_TRAVELER_GROUP: string;
|
|
416
|
+
SHOW_ALTERNATIVES: string;
|
|
417
|
+
};
|
|
418
|
+
SUMMARY: {
|
|
419
|
+
PERSONAL_DETAILS: string;
|
|
420
|
+
TRAVELERS: string;
|
|
421
|
+
TRAVELER: string;
|
|
422
|
+
ADULTS: string;
|
|
423
|
+
ADULT: string;
|
|
424
|
+
CHILDREN: string;
|
|
425
|
+
CHILD: string;
|
|
426
|
+
MAIN_BOOKER: string;
|
|
427
|
+
NOTIFICATIONS_TITLE: string;
|
|
428
|
+
VALIDATE_TITLE: string;
|
|
429
|
+
VALIDATE_TEXT_BOOKING: string;
|
|
430
|
+
VALIDATE_TEXT_OFFER: string;
|
|
431
|
+
OPTIONS: string;
|
|
432
|
+
REMARKS: string;
|
|
433
|
+
VOUCHERS: string;
|
|
434
|
+
VOUCHER_VALIDATE: string;
|
|
435
|
+
ADD_VOUCHER: string;
|
|
436
|
+
VOUCHER_VALID: string;
|
|
437
|
+
VOUCHER_INVALID: string;
|
|
438
|
+
};
|
|
439
|
+
CONFIRMATION: {
|
|
440
|
+
TITLE_TEXT_OFFER: string;
|
|
441
|
+
TITLE_TEXT_BOOKING: string;
|
|
442
|
+
MESSAGE_TEXT1: string;
|
|
443
|
+
MESSAGE_TEXT2_OFFER: string;
|
|
444
|
+
MESSAGE_TEXT2_BOOKING: string;
|
|
210
445
|
QUESTIONS_TEXT1: string;
|
|
211
446
|
QUESTIONS_TEXT2: string;
|
|
212
447
|
QUESTIONS_TEXT3: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React, { useContext } from "react";
|
|
2
2
|
import { getTranslations } from "../../shared/utils/localization-util";
|
|
3
3
|
import SettingsContext from "../settings-context";
|
|
4
|
+
import { buildClassName } from "../../shared/utils/class-util";
|
|
5
|
+
import Icon from "./icon";
|
|
4
6
|
|
|
5
7
|
interface AmountInputProps {
|
|
6
8
|
label: string;
|
|
@@ -35,39 +37,25 @@ const AmountInput: React.FC<AmountInputProps> = ({
|
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
39
|
|
|
38
|
-
const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {
|
|
39
|
-
if (onChange) {
|
|
40
|
-
const value =
|
|
41
|
-
event.target.valueAsNumber < (min ?? 0) ? min ?? 0 : event.target.valueAsNumber;
|
|
42
|
-
onChange(value);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
|
|
46
40
|
return (
|
|
47
|
-
<div className="decrement-increment">
|
|
41
|
+
<div className={buildClassName(["decrement-increment", disabled && "decrement-increment--disabled"])}>
|
|
48
42
|
<label className="decrement-increment__label">{label}</label>
|
|
49
43
|
<div className="decrement-increment__ui">
|
|
50
|
-
<button
|
|
44
|
+
{!disabled && (<button
|
|
51
45
|
type="button"
|
|
52
46
|
className="button button--decrement"
|
|
53
47
|
title={translations.INPUT.DECREASE}
|
|
54
48
|
disabled={disabled}
|
|
55
49
|
onClick={handleDecreaseClick}
|
|
56
|
-
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
min={min}
|
|
60
|
-
value={value}
|
|
61
|
-
className="decrement-increment__input"
|
|
62
|
-
onChange={handleInputChange}
|
|
63
|
-
/>
|
|
64
|
-
<button
|
|
50
|
+
><Icon name="ui-min" /></button>)}
|
|
51
|
+
<span>{value}</span>
|
|
52
|
+
{!disabled && (<button
|
|
65
53
|
type="button"
|
|
66
54
|
className="button button--increment"
|
|
67
55
|
title={translations.INPUT.INCREASE}
|
|
68
56
|
disabled={disabled}
|
|
69
57
|
onClick={handleIncreaseClick}
|
|
70
|
-
|
|
58
|
+
><Icon name="ui-plus" /></button>)}
|
|
71
59
|
</div>
|
|
72
60
|
</div>
|
|
73
61
|
);
|
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
} from "date-fns";
|
|
15
15
|
import { chunk, isFunction, range } from "lodash";
|
|
16
16
|
import React, { useContext } from "react";
|
|
17
|
-
import Icon from "../../../booking-wizard/components/icon";
|
|
18
17
|
import { buildClassName } from "../../../shared/utils/class-util";
|
|
19
18
|
import { getLocale } from "../../../shared/utils/localization-util";
|
|
20
19
|
import SettingsContext from "../../settings-context";
|
|
21
20
|
import CalendarDay from "./calendar-day";
|
|
21
|
+
import Icon from "../icon";
|
|
22
22
|
|
|
23
23
|
interface CalendarProps {
|
|
24
24
|
year?: number;
|
|
@@ -145,7 +145,7 @@ const Calendar: React.FC<CalendarProps> = ({
|
|
|
145
145
|
])}
|
|
146
146
|
onClick={handlePreviousClick}
|
|
147
147
|
>
|
|
148
|
-
<Icon name="ui-chevron
|
|
148
|
+
<Icon name="ui-chevron" />
|
|
149
149
|
</div>
|
|
150
150
|
<div className="calendar__current-month">
|
|
151
151
|
{format(focusDate, "MMMM yyyy", { locale })}
|
|
@@ -157,7 +157,7 @@ const Calendar: React.FC<CalendarProps> = ({
|
|
|
157
157
|
])}
|
|
158
158
|
onClick={handleNextClick}
|
|
159
159
|
>
|
|
160
|
-
<Icon name="ui-chevron
|
|
160
|
+
<Icon name="ui-chevron" />
|
|
161
161
|
</div>
|
|
162
162
|
</div>
|
|
163
163
|
<div className="calendar__day-labels">
|
|
@@ -35,7 +35,7 @@ const Dates: React.FC<DatesProps> = ({
|
|
|
35
35
|
{
|
|
36
36
|
name: "offset",
|
|
37
37
|
options: {
|
|
38
|
-
offset: [0,
|
|
38
|
+
offset: [0, -40],
|
|
39
39
|
},
|
|
40
40
|
},
|
|
41
41
|
{
|
|
@@ -57,7 +57,7 @@ const Dates: React.FC<DatesProps> = ({
|
|
|
57
57
|
setPanelActive(false);
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
useEffect(() => {
|
|
62
62
|
document.addEventListener("mousedown", handleDocumentClick);
|
|
63
63
|
return () => {
|
|
@@ -73,8 +73,8 @@ const Dates: React.FC<DatesProps> = ({
|
|
|
73
73
|
|
|
74
74
|
return (
|
|
75
75
|
<div className="booking-product__dates" ref={setReferenceElement}>
|
|
76
|
-
<div className="booking-product__dates-title">
|
|
77
|
-
<Icon name="ui-calendar" />
|
|
76
|
+
<div className="booking-product__dates-title">
|
|
77
|
+
<Icon name="ui-calendar" width={25} height={25} />
|
|
78
78
|
{translations.PRODUCT.TRAVEL_PERIOD}
|
|
79
79
|
</div>
|
|
80
80
|
<div className="form__group form__group--datepicker form__group--icon">
|
|
@@ -102,22 +102,28 @@ const Dates: React.FC<DatesProps> = ({
|
|
|
102
102
|
/>
|
|
103
103
|
</div>
|
|
104
104
|
<div
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
105
|
+
ref={setPopperElement}
|
|
106
|
+
className={buildClassName([
|
|
107
|
+
"qsm__panel qsm__panel--bordered qsm__panel--dates-pricing",
|
|
108
|
+
panelActive && "qsm__panel--active",
|
|
109
|
+
!mql?.matches && "qsm__panel--mobile"
|
|
110
|
+
])}
|
|
111
|
+
style={mql?.matches ? styles.popper : undefined}
|
|
112
|
+
{...attributes.popper}
|
|
113
|
+
>
|
|
114
|
+
<DateRangePicker
|
|
115
|
+
fromDate={value?.fromDate}
|
|
116
|
+
toDate={value?.toDate}
|
|
117
|
+
duration={duration}
|
|
118
|
+
disabledDaysFunction={(date) => isBefore(date, startOfDay(new Date()))}
|
|
119
|
+
onSelectionChange={handleSelectionChange}
|
|
120
|
+
/>
|
|
121
|
+
{!mql?.matches && (
|
|
122
|
+
<div className="qsm__close" onClick={() => setPanelActive(false)}>
|
|
123
|
+
<Icon name="ui-close" height={25} width={25} />
|
|
124
|
+
</div>
|
|
125
|
+
)}
|
|
126
|
+
</div>
|
|
121
127
|
</div>
|
|
122
128
|
</div>
|
|
123
129
|
);
|
|
@@ -6,12 +6,14 @@ import SettingsContext from "../settings-context";
|
|
|
6
6
|
interface FooterProps {
|
|
7
7
|
priceText: string | undefined;
|
|
8
8
|
isLoading: boolean;
|
|
9
|
+
isOffer: boolean | undefined;
|
|
9
10
|
handleBookClick: () => void;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
const Footer: React.FC<FooterProps> = ({
|
|
13
14
|
priceText,
|
|
14
15
|
isLoading,
|
|
16
|
+
isOffer,
|
|
15
17
|
handleBookClick
|
|
16
18
|
}) => {
|
|
17
19
|
const {
|
|
@@ -32,7 +34,7 @@ const Footer: React.FC<FooterProps> = ({
|
|
|
32
34
|
<div className="booking-product__footer-label">
|
|
33
35
|
{translations.SHARED.TOTAL_PRICE}
|
|
34
36
|
</div>
|
|
35
|
-
<div className="booking-
|
|
37
|
+
<div className="booking-product__footer-price">
|
|
36
38
|
{priceText}
|
|
37
39
|
</div>
|
|
38
40
|
</div>
|
|
@@ -40,7 +42,7 @@ const Footer: React.FC<FooterProps> = ({
|
|
|
40
42
|
<div className="booking-product_footer-actions">
|
|
41
43
|
{priceText ? (
|
|
42
44
|
<button type="button" className="cta" onClick={handleBookClick}>
|
|
43
|
-
{translations.PRODUCT.BOOK_NOW}
|
|
45
|
+
{isOffer ? translations.PRODUCT.TO_YOUR_OFFER : translations.PRODUCT.BOOK_NOW}
|
|
44
46
|
</button>
|
|
45
47
|
) : ((alternativeActionText && alternativeAction)
|
|
46
48
|
? (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useContext } from "react";
|
|
2
2
|
import Loader from "../../shared/components/loader";
|
|
3
|
-
import Rating from "
|
|
3
|
+
import Rating from "./rating";
|
|
4
4
|
import { getTranslations } from "../../shared/utils/localization-util";
|
|
5
5
|
import SettingsContext from "../settings-context";
|
|
6
6
|
import Icon from "./icon";
|
|
@@ -44,17 +44,17 @@ const Header: React.FC<HeaderProps> = ({
|
|
|
44
44
|
<div className="package-icons">
|
|
45
45
|
{priceText && (
|
|
46
46
|
<div className="package-icons__icon">
|
|
47
|
-
<Icon name="ui-bed" title={translations.PRODUCT.STAY_INCLUDED} />
|
|
47
|
+
<Icon name="ui-bed" title={translations.PRODUCT.STAY_INCLUDED} width={25} height={25} />
|
|
48
48
|
</div>
|
|
49
49
|
)}
|
|
50
50
|
{hasFlight && (
|
|
51
51
|
<div className="package-icons__icon">
|
|
52
|
-
<Icon name="ui-flight" title={translations.PRODUCT.FLIGHT_INCLUDED} />
|
|
52
|
+
<Icon name="ui-flight" title={translations.PRODUCT.FLIGHT_INCLUDED} width={25} height={25} />
|
|
53
53
|
</div>
|
|
54
54
|
)}
|
|
55
55
|
{hasTransfer && (
|
|
56
56
|
<div className="package-icons__icon">
|
|
57
|
-
<Icon name="ui-transfer" title={translations.PRODUCT.TRANSFER_INCLUDED} />
|
|
57
|
+
<Icon name="ui-transfer" title={translations.PRODUCT.TRANSFER_INCLUDED} width={25} height={25} />
|
|
58
58
|
</div>
|
|
59
59
|
)}
|
|
60
60
|
</div>
|