@qite/tide-booking-component 1.1.3 → 1.2.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/build/build-cjs/booking-product/components/multi-range-filter.d.ts +12 -0
- package/build/build-cjs/booking-wizard/features/booking/api.d.ts +4 -1
- package/build/build-cjs/booking-wizard/features/booking/booking-slice.d.ts +7 -3
- package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +23 -17
- package/build/build-cjs/booking-wizard/features/flight-options/flight-filter.d.ts +9 -0
- package/build/build-cjs/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -0
- package/build/build-cjs/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -0
- package/build/build-cjs/booking-wizard/features/flight-options/flight-option.d.ts +4 -9
- package/build/build-cjs/booking-wizard/features/flight-options/flight-utils.d.ts +6 -0
- package/build/build-cjs/booking-wizard/features/room-options/room-utils.d.ts +9 -0
- package/build/build-cjs/booking-wizard/features/room-options/room.d.ts +12 -0
- package/build/build-cjs/booking-wizard/features/room-options/traveler-rooms.d.ts +9 -0
- package/build/build-cjs/booking-wizard/types.d.ts +101 -0
- package/build/build-cjs/index.js +1563 -606
- package/build/build-cjs/shared/utils/localization-util.d.ts +30 -2
- package/build/build-esm/booking-product/components/multi-range-filter.d.ts +12 -0
- package/build/build-esm/booking-wizard/features/booking/api.d.ts +4 -1
- package/build/build-esm/booking-wizard/features/booking/booking-slice.d.ts +7 -3
- package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +23 -17
- package/build/build-esm/booking-wizard/features/flight-options/flight-filter.d.ts +9 -0
- package/build/build-esm/booking-wizard/features/flight-options/flight-option-flight.d.ts +8 -0
- package/build/build-esm/booking-wizard/features/flight-options/flight-option-modal.d.ts +3 -0
- package/build/build-esm/booking-wizard/features/flight-options/flight-option.d.ts +4 -9
- package/build/build-esm/booking-wizard/features/flight-options/flight-utils.d.ts +6 -0
- package/build/build-esm/booking-wizard/features/room-options/room-utils.d.ts +9 -0
- package/build/build-esm/booking-wizard/features/room-options/room.d.ts +12 -0
- package/build/build-esm/booking-wizard/features/room-options/traveler-rooms.d.ts +9 -0
- package/build/build-esm/booking-wizard/types.d.ts +101 -0
- package/build/build-esm/index.js +1564 -607
- package/build/build-esm/shared/utils/localization-util.d.ts +30 -2
- package/package.json +3 -3
- package/rollup.config.js +23 -23
- package/src/booking-product/components/multi-range-filter.css +115 -0
- package/src/booking-product/components/multi-range-filter.tsx +114 -0
- 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/step-indicator.tsx +3 -3
- package/src/booking-wizard/features/booking/api.ts +12 -1
- package/src/booking-wizard/features/booking/booking-self-contained.tsx +50 -20
- package/src/booking-wizard/features/booking/booking-slice.ts +45 -9
- package/src/booking-wizard/features/booking/booking.tsx +67 -56
- package/src/booking-wizard/features/booking/selectors.ts +38 -11
- package/src/booking-wizard/features/flight-options/flight-filter.tsx +343 -0
- package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +350 -0
- package/src/booking-wizard/features/flight-options/flight-option.tsx +30 -759
- package/src/booking-wizard/features/flight-options/flight-utils.ts +401 -0
- package/src/booking-wizard/features/flight-options/index.tsx +55 -368
- package/src/booking-wizard/features/price-details/util.ts +6 -6
- package/src/booking-wizard/features/product-options/option-room.tsx +3 -5
- package/src/booking-wizard/features/product-options/options-form.tsx +46 -54
- package/src/booking-wizard/features/room-options/index.tsx +48 -144
- package/src/booking-wizard/features/room-options/room-utils.ts +143 -0
- package/src/booking-wizard/features/room-options/room.tsx +124 -0
- package/src/booking-wizard/features/room-options/traveler-rooms.tsx +63 -0
- package/src/booking-wizard/features/sidebar/sidebar-util.ts +2 -2
- package/src/booking-wizard/features/summary/summary.tsx +2 -2
- package/src/booking-wizard/features/travelers-form/travelers-form.tsx +1 -1
- package/src/booking-wizard/types.ts +116 -0
- package/src/shared/components/rating.tsx +21 -21
- package/src/shared/translations/fr-BE.json +222 -192
- package/src/shared/translations/nl-BE.json +222 -192
- package/src/shared/utils/class-util.ts +9 -9
- package/tsconfig.json +24 -24
package/build/build-cjs/index.js
CHANGED
|
@@ -60,8 +60,8 @@ function __awaiter$1(thisArg, _arguments, P, generator) {
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
function __generator$1(thisArg, body) {
|
|
63
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
64
|
-
return g =
|
|
63
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
64
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
65
65
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
66
66
|
function step(op) {
|
|
67
67
|
if (f) throw new TypeError("Generator is already executing.");
|
|
@@ -121,10 +121,33 @@ var INPUT$1 = {
|
|
|
121
121
|
};
|
|
122
122
|
var FLIGHTS_FORM$1 = {
|
|
123
123
|
OUTWARD_FLIGHTS: "",
|
|
124
|
+
OUTWARD_FLIGHT: "",
|
|
124
125
|
RETURN_FLIGHTS: "",
|
|
126
|
+
RETURN_FLIGHT: "",
|
|
125
127
|
DIRECT_FLIGHT: "",
|
|
128
|
+
STOP: "",
|
|
129
|
+
STOPS: "",
|
|
126
130
|
FLIGHT_STOPS: "",
|
|
127
|
-
DIFFERENT_OPTION_WARNING: ""
|
|
131
|
+
DIFFERENT_OPTION_WARNING: "",
|
|
132
|
+
FILTER_OPTIONS: "",
|
|
133
|
+
AIRLINES: "",
|
|
134
|
+
AIRPORTS: "",
|
|
135
|
+
NUMBER_OF_STOPS: "",
|
|
136
|
+
FLIGHT_OUTWARD: "",
|
|
137
|
+
DEPARTURE_TIME: "",
|
|
138
|
+
TRAVEL_DURATION: "",
|
|
139
|
+
CHANGE_TIME: "",
|
|
140
|
+
FLIGHT_RETURN: "",
|
|
141
|
+
NO_FLIGHTS_FOUND: "",
|
|
142
|
+
STARTING: "",
|
|
143
|
+
LOWEST_PRICE: "",
|
|
144
|
+
CHOOSE_YOUR_CLASS: "",
|
|
145
|
+
PLUS_ONE_DAY: "",
|
|
146
|
+
STOP_TIME: "",
|
|
147
|
+
NIGHT_DEPARTURE: "",
|
|
148
|
+
MORNING_DEPARTURE: "",
|
|
149
|
+
AFTERNOON_DEPARTURE: "",
|
|
150
|
+
EVENING_DEPARTURE: ""
|
|
128
151
|
};
|
|
129
152
|
var PRODUCT$1 = {
|
|
130
153
|
STAY_INCLUDED: "",
|
|
@@ -157,7 +180,9 @@ var SHARED$1 = {
|
|
|
157
180
|
ROOMS: "Chambres",
|
|
158
181
|
TOTAL_PRICE: "Prix total",
|
|
159
182
|
ADULTS: "Adultes",
|
|
160
|
-
CHILDREN: "Enfants"
|
|
183
|
+
CHILDREN: "Enfants",
|
|
184
|
+
SELECT: "Selecteer",
|
|
185
|
+
SELECTED: "Geselecteerd"
|
|
161
186
|
};
|
|
162
187
|
var SIDEBAR$1 = {
|
|
163
188
|
OVERVIEW: "Aperçu",
|
|
@@ -239,6 +264,11 @@ var TRAVELERS_FORM$1 = {
|
|
|
239
264
|
AGENT_IS_REQUIRED: "Agent de voyage est requis"
|
|
240
265
|
}
|
|
241
266
|
};
|
|
267
|
+
var ROOM_OPTIONS_FORM$1 = {
|
|
268
|
+
TRAVELER_GROUP: "",
|
|
269
|
+
ALTERNATIVES_TRAVELER_GROUP: "",
|
|
270
|
+
SHOW_ALTERNATIVES: ""
|
|
271
|
+
};
|
|
242
272
|
var OPTIONS_FORM$1 = {
|
|
243
273
|
NO_OPTIONS_TITLE: "Aucune option",
|
|
244
274
|
NO_OPTIONS_MESSAGE: "Ce voyage n'a pas d'options supplémentaires.",
|
|
@@ -301,6 +331,7 @@ var frJson = {
|
|
|
301
331
|
SHARED: SHARED$1,
|
|
302
332
|
SIDEBAR: SIDEBAR$1,
|
|
303
333
|
TRAVELERS_FORM: TRAVELERS_FORM$1,
|
|
334
|
+
ROOM_OPTIONS_FORM: ROOM_OPTIONS_FORM$1,
|
|
304
335
|
OPTIONS_FORM: OPTIONS_FORM$1,
|
|
305
336
|
SUMMARY: SUMMARY$1,
|
|
306
337
|
CONFIRMATION: CONFIRMATION$1,
|
|
@@ -326,10 +357,33 @@ var INPUT = {
|
|
|
326
357
|
};
|
|
327
358
|
var FLIGHTS_FORM = {
|
|
328
359
|
OUTWARD_FLIGHTS: "Heenvluchten",
|
|
360
|
+
OUTWARD_FLIGHT: "Heenvlucht",
|
|
329
361
|
RETURN_FLIGHTS: "Retourvluchten",
|
|
362
|
+
RETURN_FLIGHT: "Retourvlucht",
|
|
330
363
|
DIRECT_FLIGHT: "Directe vlucht",
|
|
364
|
+
STOP: "stop",
|
|
365
|
+
STOPS: "stops",
|
|
331
366
|
FLIGHT_STOPS: "tussenstop(s)",
|
|
332
|
-
DIFFERENT_OPTION_WARNING: "Opgelet: Met deze vlucht veranderd de verblijfsduur."
|
|
367
|
+
DIFFERENT_OPTION_WARNING: "Opgelet: Met deze vlucht veranderd de verblijfsduur.",
|
|
368
|
+
FILTER_OPTIONS: "Filter opties",
|
|
369
|
+
AIRLINES: "Luchtvaartmaatschappijen",
|
|
370
|
+
AIRPORTS: "Luchthavens",
|
|
371
|
+
NUMBER_OF_STOPS: "Aantal stops",
|
|
372
|
+
FLIGHT_OUTWARD: "Vlucht heenrijs",
|
|
373
|
+
DEPARTURE_TIME: "Vertrektijd",
|
|
374
|
+
TRAVEL_DURATION: "Reisduur",
|
|
375
|
+
CHANGE_TIME: "Overstaptijd",
|
|
376
|
+
FLIGHT_RETURN: "Vlucht terugreis",
|
|
377
|
+
NO_FLIGHTS_FOUND: "Geen vluchten gevonden.",
|
|
378
|
+
STARTING: "Vanaf",
|
|
379
|
+
LOWEST_PRICE: "Laagste prijs",
|
|
380
|
+
CHOOSE_YOUR_CLASS: "Kies uw klasse:",
|
|
381
|
+
PLUS_ONE_DAY: "+1 dag",
|
|
382
|
+
STOP_TIME: "Stoptijd",
|
|
383
|
+
NIGHT_DEPARTURE: "Nacht (00:00 - 05:00)",
|
|
384
|
+
MORNING_DEPARTURE: "Ochtend (05:00 - 12:00)",
|
|
385
|
+
AFTERNOON_DEPARTURE: "Namiddag (12:00 - 18:00)",
|
|
386
|
+
EVENING_DEPARTURE: "Avond (18:00 - 00:00)"
|
|
333
387
|
};
|
|
334
388
|
var PRODUCT = {
|
|
335
389
|
STAY_INCLUDED: "Inclusief verblijf",
|
|
@@ -362,7 +416,9 @@ var SHARED = {
|
|
|
362
416
|
ROOMS: "Kamers",
|
|
363
417
|
TOTAL_PRICE: "Totale prijs",
|
|
364
418
|
ADULTS: "Volwassenen",
|
|
365
|
-
CHILDREN: "Kinderen"
|
|
419
|
+
CHILDREN: "Kinderen",
|
|
420
|
+
SELECT: "Selecteer",
|
|
421
|
+
SELECTED: "Geselecteerd"
|
|
366
422
|
};
|
|
367
423
|
var SIDEBAR = {
|
|
368
424
|
OVERVIEW: "Overzicht",
|
|
@@ -458,6 +514,11 @@ var OPTIONS_FORM = {
|
|
|
458
514
|
PER_UNIT_TITLE: "Opties per gezelschap selecteren",
|
|
459
515
|
NONE: "Geen"
|
|
460
516
|
};
|
|
517
|
+
var ROOM_OPTIONS_FORM = {
|
|
518
|
+
TRAVELER_GROUP: "Reisgezelschap",
|
|
519
|
+
ALTERNATIVES_TRAVELER_GROUP: "Alternatieve kameropties voor reisgezelschap",
|
|
520
|
+
SHOW_ALTERNATIVES: "Toon alternatieve kameropties"
|
|
521
|
+
};
|
|
461
522
|
var SUMMARY = {
|
|
462
523
|
PERSONAL_DETAILS: "Persoonlijke gegevens",
|
|
463
524
|
TRAVELERS: "reizigers",
|
|
@@ -507,6 +568,7 @@ var nlJson = {
|
|
|
507
568
|
SIDEBAR: SIDEBAR,
|
|
508
569
|
TRAVELERS_FORM: TRAVELERS_FORM,
|
|
509
570
|
OPTIONS_FORM: OPTIONS_FORM,
|
|
571
|
+
ROOM_OPTIONS_FORM: ROOM_OPTIONS_FORM,
|
|
510
572
|
SUMMARY: SUMMARY,
|
|
511
573
|
CONFIRMATION: CONFIRMATION,
|
|
512
574
|
ERROR: ERROR
|
|
@@ -740,9 +802,12 @@ var ServiceType = {
|
|
|
740
802
|
restaurant: 23,
|
|
741
803
|
event: 24,
|
|
742
804
|
training: 25,
|
|
805
|
+
voucher: 26,
|
|
806
|
+
reduction: 27,
|
|
807
|
+
rocket: 28,
|
|
743
808
|
};
|
|
744
809
|
|
|
745
|
-
|
|
810
|
+
/******************************************************************************
|
|
746
811
|
Copyright (c) Microsoft Corporation.
|
|
747
812
|
|
|
748
813
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -802,9 +867,13 @@ function __generator(thisArg, body) {
|
|
|
802
867
|
f,
|
|
803
868
|
y,
|
|
804
869
|
t,
|
|
805
|
-
g
|
|
870
|
+
g = Object.create(
|
|
871
|
+
(typeof Iterator === "function" ? Iterator : Object).prototype
|
|
872
|
+
);
|
|
806
873
|
return (
|
|
807
|
-
(g =
|
|
874
|
+
(g.next = verb(0)),
|
|
875
|
+
(g["throw"] = verb(1)),
|
|
876
|
+
(g["return"] = verb(2)),
|
|
808
877
|
typeof Symbol === "function" &&
|
|
809
878
|
(g[Symbol.iterator] = function () {
|
|
810
879
|
return this;
|
|
@@ -818,7 +887,7 @@ function __generator(thisArg, body) {
|
|
|
818
887
|
}
|
|
819
888
|
function step(op) {
|
|
820
889
|
if (f) throw new TypeError("Generator is already executing.");
|
|
821
|
-
while (_)
|
|
890
|
+
while ((g && ((g = 0), op[0] && (_ = 0)), _))
|
|
822
891
|
try {
|
|
823
892
|
if (
|
|
824
893
|
((f = 1),
|
|
@@ -888,6 +957,18 @@ function __generator(thisArg, body) {
|
|
|
888
957
|
}
|
|
889
958
|
}
|
|
890
959
|
|
|
960
|
+
typeof SuppressedError === "function"
|
|
961
|
+
? SuppressedError
|
|
962
|
+
: function (error, suppressed, message) {
|
|
963
|
+
var e = new Error(message);
|
|
964
|
+
return (
|
|
965
|
+
(e.name = "SuppressedError"),
|
|
966
|
+
(e.error = error),
|
|
967
|
+
(e.suppressed = suppressed),
|
|
968
|
+
e
|
|
969
|
+
);
|
|
970
|
+
};
|
|
971
|
+
|
|
891
972
|
var post$1 = function (url, apiKey, body, token, signal, languageCode) {
|
|
892
973
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
893
974
|
var response;
|
|
@@ -919,7 +1000,38 @@ var post$1 = function (url, apiKey, body, token, signal, languageCode) {
|
|
|
919
1000
|
});
|
|
920
1001
|
});
|
|
921
1002
|
};
|
|
922
|
-
var
|
|
1003
|
+
var patch$1 = function (url, apiKey, body, token, signal, languageCode) {
|
|
1004
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
1005
|
+
var response;
|
|
1006
|
+
return __generator(this, function (_a) {
|
|
1007
|
+
switch (_a.label) {
|
|
1008
|
+
case 0:
|
|
1009
|
+
return [
|
|
1010
|
+
4 /*yield*/,
|
|
1011
|
+
fetch(url, {
|
|
1012
|
+
method: "PATCH",
|
|
1013
|
+
headers: {
|
|
1014
|
+
"Content-Type": "application/json",
|
|
1015
|
+
"Api-Key": apiKey,
|
|
1016
|
+
Language: languageCode || "nl-BE",
|
|
1017
|
+
Authorization: token ? "Bearer " + token : "",
|
|
1018
|
+
},
|
|
1019
|
+
credentials: "include",
|
|
1020
|
+
body: body,
|
|
1021
|
+
signal: signal,
|
|
1022
|
+
}),
|
|
1023
|
+
];
|
|
1024
|
+
case 1:
|
|
1025
|
+
response = _a.sent();
|
|
1026
|
+
if (!response.ok) {
|
|
1027
|
+
throw new Error(response.statusText);
|
|
1028
|
+
}
|
|
1029
|
+
return [2 /*return*/, response];
|
|
1030
|
+
}
|
|
1031
|
+
});
|
|
1032
|
+
});
|
|
1033
|
+
};
|
|
1034
|
+
var get$1 = function (url, apiKey, token, signal, languageCode) {
|
|
923
1035
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
924
1036
|
var response;
|
|
925
1037
|
return __generator(this, function (_a) {
|
|
@@ -932,6 +1044,8 @@ var get$1 = function (url, apiKey, token, signal) {
|
|
|
932
1044
|
headers: {
|
|
933
1045
|
"Content-Type": "application/json",
|
|
934
1046
|
"Api-Key": apiKey,
|
|
1047
|
+
Language: languageCode || "nl-BE",
|
|
1048
|
+
"Accept-Language": languageCode || "nl-BE",
|
|
935
1049
|
Authorization: token ? "Bearer " + token : "",
|
|
936
1050
|
},
|
|
937
1051
|
credentials: "include",
|
|
@@ -6637,20 +6751,6 @@ var reviver = function (_, value) {
|
|
|
6637
6751
|
}
|
|
6638
6752
|
return value;
|
|
6639
6753
|
};
|
|
6640
|
-
var replacer = function (_, value) {
|
|
6641
|
-
if (typeof value === "string") {
|
|
6642
|
-
if (Date.parse(value)) {
|
|
6643
|
-
var date = new Date(value);
|
|
6644
|
-
if (date.toISOString() === value) {
|
|
6645
|
-
var year = date.getFullYear();
|
|
6646
|
-
var month = date.getMonth() + 1;
|
|
6647
|
-
var day = date.getDate();
|
|
6648
|
-
return year + "-" + month + "-" + day;
|
|
6649
|
-
}
|
|
6650
|
-
}
|
|
6651
|
-
}
|
|
6652
|
-
return value;
|
|
6653
|
-
};
|
|
6654
6754
|
|
|
6655
6755
|
var post = function (
|
|
6656
6756
|
url,
|
|
@@ -6676,29 +6776,31 @@ var post = function (
|
|
|
6676
6776
|
case 2:
|
|
6677
6777
|
responseBody = _a.sent();
|
|
6678
6778
|
result = skipReviver
|
|
6679
|
-
? JSON.parse(
|
|
6680
|
-
|
|
6681
|
-
? responseBody
|
|
6682
|
-
: ""
|
|
6683
|
-
)
|
|
6684
|
-
: JSON.parse(
|
|
6685
|
-
responseBody !== null && responseBody !== void 0
|
|
6686
|
-
? responseBody
|
|
6687
|
-
: "",
|
|
6688
|
-
reviver
|
|
6689
|
-
);
|
|
6779
|
+
? JSON.parse(responseBody)
|
|
6780
|
+
: JSON.parse(responseBody, reviver);
|
|
6690
6781
|
return [2 /*return*/, result];
|
|
6691
6782
|
}
|
|
6692
6783
|
});
|
|
6693
6784
|
});
|
|
6694
6785
|
};
|
|
6695
|
-
var
|
|
6786
|
+
var patch = function (
|
|
6787
|
+
url,
|
|
6788
|
+
apiKey,
|
|
6789
|
+
body,
|
|
6790
|
+
token,
|
|
6791
|
+
signal,
|
|
6792
|
+
skipReviver,
|
|
6793
|
+
languageCode
|
|
6794
|
+
) {
|
|
6696
6795
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
6697
6796
|
var response, responseBody, result;
|
|
6698
6797
|
return __generator(this, function (_a) {
|
|
6699
6798
|
switch (_a.label) {
|
|
6700
6799
|
case 0:
|
|
6701
|
-
return [
|
|
6800
|
+
return [
|
|
6801
|
+
4 /*yield*/,
|
|
6802
|
+
patch$1(url, apiKey, body, token, signal, languageCode),
|
|
6803
|
+
];
|
|
6702
6804
|
case 1:
|
|
6703
6805
|
response = _a.sent();
|
|
6704
6806
|
return [4 /*yield*/, response.text()];
|
|
@@ -6712,234 +6814,98 @@ var get = function (url, apiKey, token, signal, skipReviver) {
|
|
|
6712
6814
|
});
|
|
6713
6815
|
});
|
|
6714
6816
|
};
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
var
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
6722
|
-
|
|
6723
|
-
|
|
6724
|
-
|
|
6725
|
-
|
|
6726
|
-
|
|
6727
|
-
|
|
6728
|
-
|
|
6729
|
-
|
|
6730
|
-
|
|
6731
|
-
|
|
6732
|
-
|
|
6733
|
-
|
|
6734
|
-
var url = "" + config.host + ENDPOINT_AVAILABLE_PRODUCTS;
|
|
6735
|
-
var apiKey = config.apiKey;
|
|
6736
|
-
var body = JSON.stringify(request);
|
|
6737
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6738
|
-
};
|
|
6739
|
-
/**
|
|
6740
|
-
* api/web/booking/package-search
|
|
6741
|
-
* @param config
|
|
6742
|
-
* @param request
|
|
6743
|
-
* @returns Travel options (excursions etc) for a specified product, accommodation and regime.
|
|
6744
|
-
* @depracted Use V2: Search
|
|
6745
|
-
*/
|
|
6746
|
-
var searchPackages = function (config, request, signal) {
|
|
6747
|
-
var url = "" + config.host + ENDPOINT_PACKAGE_SEARCH;
|
|
6748
|
-
var apiKey = config.apiKey;
|
|
6749
|
-
var body = JSON.stringify(request);
|
|
6750
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6751
|
-
};
|
|
6752
|
-
/**
|
|
6753
|
-
* api/web/booking/package-price-details
|
|
6754
|
-
* @param config
|
|
6755
|
-
* @param request
|
|
6756
|
-
* @returns A price breakdown for a specified Package (= product and selected options).
|
|
6757
|
-
* @deprecated Use V2: Price details
|
|
6758
|
-
*/
|
|
6759
|
-
var getPackagePriceDetails = function (config, request, signal) {
|
|
6760
|
-
var url = "" + config.host + ENDPOINT_PACKAGE_PRICE_DETAILS;
|
|
6761
|
-
var apiKey = config.apiKey;
|
|
6762
|
-
var body = JSON.stringify(request);
|
|
6763
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6764
|
-
};
|
|
6765
|
-
/**
|
|
6766
|
-
* api/web/booking/offer-entry
|
|
6767
|
-
* Creates an Tide Offer, based on the request.
|
|
6768
|
-
* @param config
|
|
6769
|
-
* @param request
|
|
6770
|
-
* @returns The (full) created offer Entry.
|
|
6771
|
-
* @deprecated Use V2: Book
|
|
6772
|
-
*/
|
|
6773
|
-
var createOffer = function (config, request, signal) {
|
|
6774
|
-
// Update request to use full response
|
|
6775
|
-
request.useShortResponse = false;
|
|
6776
|
-
var url = "" + config.host + ENDPOINT_CREATE_OFFER;
|
|
6777
|
-
var apiKey = config.apiKey;
|
|
6778
|
-
var body = JSON.stringify(request);
|
|
6779
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6780
|
-
};
|
|
6781
|
-
/**
|
|
6782
|
-
* api/web/booking/offer-entry
|
|
6783
|
-
* Creates a Tide Offer, based on the request.
|
|
6784
|
-
* @param config
|
|
6785
|
-
* @param request
|
|
6786
|
-
* @returns The (short) created offer Entry.
|
|
6787
|
-
* @deprecated Use V2: Book
|
|
6788
|
-
*/
|
|
6789
|
-
var createOfferWithShortResponse = function (config, request, signal) {
|
|
6790
|
-
// Update request to use short response
|
|
6791
|
-
request.useShortResponse = true;
|
|
6792
|
-
var url = "" + config.host + ENDPOINT_CREATE_OFFER;
|
|
6793
|
-
var apiKey = config.apiKey;
|
|
6794
|
-
var body = JSON.stringify(request, replacer);
|
|
6795
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6796
|
-
};
|
|
6797
|
-
/**
|
|
6798
|
-
* api/web/booking/entry-multiroom
|
|
6799
|
-
* Creates a Tide Booking, based on the request.
|
|
6800
|
-
* @param config
|
|
6801
|
-
* @param request
|
|
6802
|
-
* @returns The (full) created booking Entry.
|
|
6803
|
-
* @deprecated Use V2: Book
|
|
6804
|
-
*/
|
|
6805
|
-
var createEntry = function (config, request, signal) {
|
|
6806
|
-
// Update request to use full response
|
|
6807
|
-
request.useShortResponse = false;
|
|
6808
|
-
var url = "" + config.host + ENDPOINT_CREATE_ENTRY;
|
|
6809
|
-
var apiKey = config.apiKey;
|
|
6810
|
-
var body = JSON.stringify(request, replacer);
|
|
6811
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6812
|
-
};
|
|
6813
|
-
/**
|
|
6814
|
-
* api/web/booking/entry-multiroom
|
|
6815
|
-
* Creates a Tide Booking, based on the request.
|
|
6816
|
-
* @param config
|
|
6817
|
-
* @param request
|
|
6818
|
-
* @returns The (short) created booking Entry.
|
|
6819
|
-
* @deprecated Use V2: Book
|
|
6820
|
-
*/
|
|
6821
|
-
var createEntryWithShortResponse = function (config, request, signal) {
|
|
6822
|
-
// Update request to use short response
|
|
6823
|
-
request.useShortResponse = true;
|
|
6824
|
-
var url = "" + config.host + ENDPOINT_CREATE_ENTRY;
|
|
6825
|
-
var apiKey = config.apiKey;
|
|
6826
|
-
var body = JSON.stringify(request, replacer);
|
|
6827
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6828
|
-
};
|
|
6829
|
-
/**
|
|
6830
|
-
* api/web/booking/package-offer-entry
|
|
6831
|
-
* Creates a Tide Offer, based on the request.
|
|
6832
|
-
* @param config
|
|
6833
|
-
* @param request
|
|
6834
|
-
* @returns The (full) created offer Entry.
|
|
6835
|
-
* @depracted Use V2: Book
|
|
6836
|
-
*/
|
|
6837
|
-
var createPackageOffer = function (config, request, signal) {
|
|
6838
|
-
// Update request to use full response
|
|
6839
|
-
request.useShortResponse = false;
|
|
6840
|
-
var url = "" + config.host + ENDPOINT_CREATE_PACKAGE_OFFER;
|
|
6841
|
-
var apiKey = config.apiKey;
|
|
6842
|
-
var body = JSON.stringify(request, replacer);
|
|
6843
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6844
|
-
};
|
|
6845
|
-
/**
|
|
6846
|
-
* api/web/booking/package-offer-entry
|
|
6847
|
-
* Creates a Tide Offer, based on the request.
|
|
6848
|
-
* @param config
|
|
6849
|
-
* @param request
|
|
6850
|
-
* @returns The (short) created offer Entry.
|
|
6851
|
-
* @deprecated Use V2: Book
|
|
6852
|
-
*/
|
|
6853
|
-
var createPackageOfferWithShortResponse = function (config, request, signal) {
|
|
6854
|
-
// Update request to use short response
|
|
6855
|
-
request.useShortResponse = true;
|
|
6856
|
-
var url = "" + config.host + ENDPOINT_CREATE_PACKAGE_OFFER;
|
|
6857
|
-
var apiKey = config.apiKey;
|
|
6858
|
-
var body = JSON.stringify(request, replacer);
|
|
6859
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6860
|
-
};
|
|
6861
|
-
/**
|
|
6862
|
-
* api/web/booking/package-entry
|
|
6863
|
-
* Create a Tide Booking, based on the request.
|
|
6864
|
-
* @param config
|
|
6865
|
-
* @param request
|
|
6866
|
-
* @returns The (full) created booking Entry.
|
|
6867
|
-
* @deprecated Use V2: book
|
|
6868
|
-
*/
|
|
6869
|
-
var createPackageEntry = function (config, request, signal) {
|
|
6870
|
-
// Update request to use full response
|
|
6871
|
-
request.useShortResponse = false;
|
|
6872
|
-
var url = "" + config.host + ENDPOINT_CREATE_PACKAGE_ENTRY;
|
|
6873
|
-
var apiKey = config.apiKey;
|
|
6874
|
-
var body = JSON.stringify(request, replacer);
|
|
6875
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6876
|
-
};
|
|
6877
|
-
/**
|
|
6878
|
-
* api/web/booking/package-entry
|
|
6879
|
-
* Create a Tide Booking, based on the request.
|
|
6880
|
-
* @param config
|
|
6881
|
-
* @param request
|
|
6882
|
-
* @returns The (short) created booking Entry.
|
|
6883
|
-
* @deprecated Use V2: Book
|
|
6884
|
-
*/
|
|
6885
|
-
var createPackageEntryWithShortResponse = function (config, request, signal) {
|
|
6886
|
-
// Update request to use short response
|
|
6887
|
-
request.useShortResponse = true;
|
|
6888
|
-
var url = "" + config.host + ENDPOINT_CREATE_PACKAGE_ENTRY;
|
|
6889
|
-
var apiKey = config.apiKey;
|
|
6890
|
-
var body = JSON.stringify(request, replacer);
|
|
6891
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6892
|
-
};
|
|
6893
|
-
/**
|
|
6894
|
-
* api/web/booking/base-prices
|
|
6895
|
-
* Get base prices of a specific product and accommodation in a defined period.
|
|
6896
|
-
* @param config
|
|
6897
|
-
* @param request
|
|
6898
|
-
* @returns The base prices of a specific product and accommodation during the defined period.
|
|
6899
|
-
* @deprecated Use V2: Prices
|
|
6900
|
-
*/
|
|
6901
|
-
var getBasePrices = function (config, request, signal) {
|
|
6902
|
-
var url = "" + config.host + ENDPOINT_GET_BASE_PRICES;
|
|
6903
|
-
var apiKey = config.apiKey;
|
|
6904
|
-
var body = JSON.stringify(request, replacer);
|
|
6905
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6906
|
-
};
|
|
6907
|
-
/**
|
|
6908
|
-
* api/web/booking/base-prices-from-date
|
|
6909
|
-
* Get base prices of a specific product and accommodation starting from a specific date.
|
|
6910
|
-
* @param config
|
|
6911
|
-
* @param request
|
|
6912
|
-
* @returns The base prices of a specific product and accommodationg starting from a specific date.
|
|
6913
|
-
*/
|
|
6914
|
-
var getBasePricesFromDate = function (config, request, signal) {
|
|
6915
|
-
var url = "" + config.host + ENDPOINT_GET_BASE_PRICES_FROM_DATE;
|
|
6916
|
-
var apiKey = config.apiKey;
|
|
6917
|
-
var body = JSON.stringify(request, replacer);
|
|
6918
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6817
|
+
var get = function (url, apiKey, token, signal, skipReviver, languageCode) {
|
|
6818
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
6819
|
+
var response, responseBody, result;
|
|
6820
|
+
return __generator(this, function (_a) {
|
|
6821
|
+
switch (_a.label) {
|
|
6822
|
+
case 0:
|
|
6823
|
+
return [4 /*yield*/, get$1(url, apiKey, token, signal, languageCode)];
|
|
6824
|
+
case 1:
|
|
6825
|
+
response = _a.sent();
|
|
6826
|
+
return [4 /*yield*/, response.text()];
|
|
6827
|
+
case 2:
|
|
6828
|
+
responseBody = _a.sent();
|
|
6829
|
+
result = skipReviver
|
|
6830
|
+
? JSON.parse(responseBody)
|
|
6831
|
+
: JSON.parse(responseBody, reviver);
|
|
6832
|
+
return [2 /*return*/, result];
|
|
6833
|
+
}
|
|
6834
|
+
});
|
|
6835
|
+
});
|
|
6919
6836
|
};
|
|
6920
6837
|
|
|
6921
6838
|
var ENDPOINT$7 = "/api/web/booking/v2";
|
|
6922
|
-
var
|
|
6839
|
+
var ENDPOINT_AVAILABLE_FLIGHTS = ENDPOINT$7 + "/available-flights";
|
|
6840
|
+
var ENDPOINT_TRANSPORT_DATES = ENDPOINT$7 + "/transport-dates";
|
|
6841
|
+
var ENDPOINT_PRICES = ENDPOINT$7 + "/prices";
|
|
6842
|
+
var ENDPOINT_AVAILABLE_COUNTRIES = ENDPOINT$7 + "/available-countries";
|
|
6923
6843
|
var ENDPOINT_SEARCH = ENDPOINT$7 + "/search";
|
|
6924
6844
|
var ENDPOINT_SEARCH_WITH_ERROR_MAPPING =
|
|
6925
6845
|
ENDPOINT$7 + "/search-with-error-mapping";
|
|
6846
|
+
// const ENDPOINT_ELASTIC = `${ENDPOINT}/elastic`; // TODO
|
|
6926
6847
|
var ENDPOINT_DETAILS = ENDPOINT$7 + "/details";
|
|
6927
6848
|
var ENDPOINT_VALIDATE_VOUCHER = ENDPOINT$7 + "/validate-voucher";
|
|
6928
|
-
var ENDPOINT_ALTERNATE_HOTELS =
|
|
6929
|
-
|
|
6849
|
+
var ENDPOINT_ALTERNATE_HOTELS = function (transactionId, optionId) {
|
|
6850
|
+
return (
|
|
6851
|
+
ENDPOINT$7 + "/details/" + transactionId + "/alternate-hotels/" + optionId
|
|
6852
|
+
);
|
|
6853
|
+
};
|
|
6854
|
+
var ENDPOINT_ALTERNATE_FLIGHTS = function (transactionId) {
|
|
6855
|
+
return ENDPOINT$7 + "/details/" + transactionId + "/alternate-flights";
|
|
6856
|
+
};
|
|
6857
|
+
var ENDPOINT_BOOKABLE_DATES = ENDPOINT$7 + "/bookable-dates";
|
|
6930
6858
|
var ENDPOINT_PRICE_DETAILS = ENDPOINT$7 + "/price-details";
|
|
6931
6859
|
var ENDPOINT_BOOK = ENDPOINT$7 + "/book";
|
|
6932
6860
|
var ENDPOINT_UPDATE = ENDPOINT$7 + "/update";
|
|
6933
6861
|
var ENDPOINT_AGENTS = ENDPOINT$7 + "/agents";
|
|
6934
|
-
var ENDPOINT_AVAILABLE_ALLOTMENTS =
|
|
6862
|
+
var ENDPOINT_AVAILABLE_ALLOTMENTS = function (eventId, productCode) {
|
|
6863
|
+
return (
|
|
6864
|
+
ENDPOINT$7 + "/get-allotment-availability/" + eventId + "/" + productCode
|
|
6865
|
+
);
|
|
6866
|
+
};
|
|
6935
6867
|
var ENDPOINT_FLIGHT_POOL = ENDPOINT$7 + "/flight-pool";
|
|
6936
|
-
var ENDPOINT_BOOKABLE_DATES = ENDPOINT$7 + "/bookable-dates";
|
|
6937
6868
|
var ENDPOINT_TOUR_CODES = ENDPOINT$7 + "/tourcodes";
|
|
6938
|
-
var
|
|
6939
|
-
|
|
6869
|
+
var ENDPOINT_CUSTOM_ENTRY_STATUS$1 = function (
|
|
6870
|
+
dossierNumber,
|
|
6871
|
+
customEntryStatusId
|
|
6872
|
+
) {
|
|
6873
|
+
return (
|
|
6874
|
+
ENDPOINT$7 +
|
|
6875
|
+
"/custom-entry-status/" +
|
|
6876
|
+
dossierNumber +
|
|
6877
|
+
"/" +
|
|
6878
|
+
customEntryStatusId
|
|
6879
|
+
);
|
|
6880
|
+
};
|
|
6881
|
+
var ENDPOINT_ENTRY_STATUS = function (dossierNumber, entryStatus) {
|
|
6882
|
+
return (
|
|
6883
|
+
ENDPOINT$7 + "/custom-entry-status/" + dossierNumber + "/" + entryStatus
|
|
6884
|
+
);
|
|
6885
|
+
};
|
|
6886
|
+
var availableFlights = function (config, request, signal) {
|
|
6887
|
+
var url = "" + config.host + ENDPOINT_AVAILABLE_FLIGHTS;
|
|
6940
6888
|
var apiKey = config.apiKey;
|
|
6941
6889
|
var body = JSON.stringify(request);
|
|
6942
|
-
return post(url, apiKey, body, config.token, signal);
|
|
6890
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
6891
|
+
};
|
|
6892
|
+
var transportDates = function (config, request, signal) {
|
|
6893
|
+
var url = "" + config.host + ENDPOINT_TRANSPORT_DATES;
|
|
6894
|
+
var apiKey = config.apiKey;
|
|
6895
|
+
var body = JSON.stringify(request);
|
|
6896
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
6897
|
+
};
|
|
6898
|
+
var prices = function (config, request, signal) {
|
|
6899
|
+
var url = "" + config.host + ENDPOINT_PRICES;
|
|
6900
|
+
var apiKey = config.apiKey;
|
|
6901
|
+
var body = JSON.stringify(request);
|
|
6902
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
6903
|
+
};
|
|
6904
|
+
var availableCountries = function (config, request, signal) {
|
|
6905
|
+
var url = "" + config.host + ENDPOINT_AVAILABLE_COUNTRIES;
|
|
6906
|
+
var apiKey = config.apiKey;
|
|
6907
|
+
var body = JSON.stringify(request);
|
|
6908
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
6943
6909
|
};
|
|
6944
6910
|
// PACKAGE SEARCH
|
|
6945
6911
|
var search = function (config, request, signal) {
|
|
@@ -6966,28 +6932,23 @@ var validateVoucher = function (config, request, signal) {
|
|
|
6966
6932
|
var body = JSON.stringify(request);
|
|
6967
6933
|
return post(url, apiKey, body, config.token, signal, true);
|
|
6968
6934
|
};
|
|
6969
|
-
var alternateHotels = function (config, transactionId, signal) {
|
|
6935
|
+
var alternateHotels = function (config, transactionId, optionId, signal) {
|
|
6970
6936
|
var url =
|
|
6971
|
-
"" +
|
|
6972
|
-
config.host +
|
|
6973
|
-
ENDPOINT_DETAILS +
|
|
6974
|
-
"/" +
|
|
6975
|
-
transactionId +
|
|
6976
|
-
ENDPOINT_ALTERNATE_HOTELS;
|
|
6937
|
+
"" + config.host + ENDPOINT_ALTERNATE_HOTELS(transactionId, optionId);
|
|
6977
6938
|
var apiKey = config.apiKey;
|
|
6978
6939
|
return get(url, apiKey, config.token, signal, true);
|
|
6979
6940
|
};
|
|
6980
6941
|
var alternateFlights = function (config, transactionId, signal) {
|
|
6981
|
-
var url =
|
|
6982
|
-
"" +
|
|
6983
|
-
config.host +
|
|
6984
|
-
ENDPOINT_DETAILS +
|
|
6985
|
-
"/" +
|
|
6986
|
-
transactionId +
|
|
6987
|
-
ENDPOINT_ALTERNATE_FLIGHTS;
|
|
6942
|
+
var url = "" + config.host + ENDPOINT_ALTERNATE_FLIGHTS(transactionId);
|
|
6988
6943
|
var apiKey = config.apiKey;
|
|
6989
6944
|
return get(url, apiKey, config.token, signal, true);
|
|
6990
6945
|
};
|
|
6946
|
+
var bookableDates = function (config, request, signal) {
|
|
6947
|
+
var url = "" + config.host + ENDPOINT_BOOKABLE_DATES;
|
|
6948
|
+
var apiKey = config.apiKey;
|
|
6949
|
+
var body = JSON.stringify(request);
|
|
6950
|
+
return post(url, apiKey, body, config.token, signal, true);
|
|
6951
|
+
};
|
|
6991
6952
|
var priceDetails = function (config, request, signal, languageCode) {
|
|
6992
6953
|
var url = "" + config.host + ENDPOINT_PRICE_DETAILS;
|
|
6993
6954
|
var apiKey = config.apiKey;
|
|
@@ -7013,13 +6974,7 @@ var agents = function (config, signal) {
|
|
|
7013
6974
|
};
|
|
7014
6975
|
var getAllotmentAvailability = function (config, eventId, productCode, signal) {
|
|
7015
6976
|
var url =
|
|
7016
|
-
"" +
|
|
7017
|
-
config.host +
|
|
7018
|
-
ENDPOINT_AVAILABLE_ALLOTMENTS +
|
|
7019
|
-
"/" +
|
|
7020
|
-
eventId +
|
|
7021
|
-
"/" +
|
|
7022
|
-
productCode;
|
|
6977
|
+
"" + config.host + ENDPOINT_AVAILABLE_ALLOTMENTS(eventId, productCode);
|
|
7023
6978
|
var apiKey = config.apiKey;
|
|
7024
6979
|
return get(url, apiKey, config.token, signal, true);
|
|
7025
6980
|
};
|
|
@@ -7029,18 +6984,31 @@ var searchFlightPool = function (config, request, signal) {
|
|
|
7029
6984
|
var body = JSON.stringify(request);
|
|
7030
6985
|
return post(url, apiKey, body, config.token, signal, true);
|
|
7031
6986
|
};
|
|
7032
|
-
var bookableDates = function (config, request, signal) {
|
|
7033
|
-
var url = "" + config.host + ENDPOINT_BOOKABLE_DATES;
|
|
7034
|
-
var apiKey = config.apiKey;
|
|
7035
|
-
var body = JSON.stringify(request);
|
|
7036
|
-
return post(url, apiKey, body, config.token, signal, true);
|
|
7037
|
-
};
|
|
7038
6987
|
var tourCodes = function (config, request, signal) {
|
|
7039
6988
|
var url = "" + config.host + ENDPOINT_TOUR_CODES;
|
|
7040
6989
|
var apiKey = config.apiKey;
|
|
7041
6990
|
var body = JSON.stringify(request);
|
|
7042
6991
|
return post(url, apiKey, body, config.token, signal, true);
|
|
7043
6992
|
};
|
|
6993
|
+
var setCustomEntryStatus = function (
|
|
6994
|
+
config,
|
|
6995
|
+
dossierNumber,
|
|
6996
|
+
customEntryStatusId,
|
|
6997
|
+
signal
|
|
6998
|
+
) {
|
|
6999
|
+
var url =
|
|
7000
|
+
"" +
|
|
7001
|
+
config.host +
|
|
7002
|
+
ENDPOINT_CUSTOM_ENTRY_STATUS$1(dossierNumber, customEntryStatusId);
|
|
7003
|
+
var apiKey = config.apiKey;
|
|
7004
|
+
return get(url, apiKey, config.token, signal, true);
|
|
7005
|
+
};
|
|
7006
|
+
var setEntryStatus = function (config, dossierNumber, entryStatus, signal) {
|
|
7007
|
+
var url =
|
|
7008
|
+
"" + config.host + ENDPOINT_ENTRY_STATUS(dossierNumber, entryStatus);
|
|
7009
|
+
var apiKey = config.apiKey;
|
|
7010
|
+
return patch(url, apiKey, null, config.token, signal, true);
|
|
7011
|
+
};
|
|
7044
7012
|
|
|
7045
7013
|
var ENDPOINT$6 = "/api/member";
|
|
7046
7014
|
var ENDPOINT_LOGIN = ENDPOINT$6 + "/login";
|
|
@@ -7270,6 +7238,8 @@ var ENDPOINT_GET_PRINT_ACTIONS = ENDPOINT$3 + "/print-action";
|
|
|
7270
7238
|
var ENDPOINT_PRINT = ENDPOINT$3 + "/print-action";
|
|
7271
7239
|
var ENDPOINT_CUSTOM_ENTRY_STATUS = ENDPOINT$3 + "/custom-entry-status";
|
|
7272
7240
|
var ENDPOINT_ENUM_ENTRY_STATUS = ENDPOINT$3 + "/enum/entry-status";
|
|
7241
|
+
var ENDPOINT_CHANGE_ENTRY_AGENT_SURCHARGE =
|
|
7242
|
+
ENDPOINT$3 + "/entry/change-agent-surcharge";
|
|
7273
7243
|
/**
|
|
7274
7244
|
* api/web/agent/print-action/{print-action-group}
|
|
7275
7245
|
* @param config
|
|
@@ -7329,20 +7299,28 @@ var getInvoiceList = function (config, filterItem, gridColumns, signal) {
|
|
|
7329
7299
|
var apiKey = config.apiKey;
|
|
7330
7300
|
return get(url, apiKey, config.token, signal, true);
|
|
7331
7301
|
};
|
|
7332
|
-
var getCustomEntryStatus = function (config, signal) {
|
|
7302
|
+
var getCustomEntryStatus = function (config, signal, languageCode) {
|
|
7333
7303
|
var url = "" + config.host + ENDPOINT_CUSTOM_ENTRY_STATUS;
|
|
7334
7304
|
var apiKey = config.apiKey;
|
|
7335
|
-
return get(url, apiKey, config.token, signal, true);
|
|
7305
|
+
return get(url, apiKey, config.token, signal, true, languageCode);
|
|
7336
7306
|
};
|
|
7337
|
-
var getEntryStatus = function (config, signal) {
|
|
7307
|
+
var getEntryStatus = function (config, signal, languageCode) {
|
|
7338
7308
|
var url = "" + config.host + ENDPOINT_ENUM_ENTRY_STATUS;
|
|
7339
7309
|
var apiKey = config.apiKey;
|
|
7340
|
-
return get(url, apiKey, config.token, signal, true);
|
|
7310
|
+
return get(url, apiKey, config.token, signal, true, languageCode);
|
|
7311
|
+
};
|
|
7312
|
+
var changeEntryAgentSurcharge = function (config, request, signal) {
|
|
7313
|
+
var url = "" + config.host + ENDPOINT_CHANGE_ENTRY_AGENT_SURCHARGE;
|
|
7314
|
+
var apiKey = config.apiKey;
|
|
7315
|
+
var body = JSON.stringify(request);
|
|
7316
|
+
return post$1(url, apiKey, body, config.token, signal);
|
|
7341
7317
|
};
|
|
7342
7318
|
|
|
7343
7319
|
var ENDPOINT$2 = "/api/web";
|
|
7344
7320
|
var ENDPOINT_CREATE_CRM_CONTACT = ENDPOINT$2 + "/crmcontact";
|
|
7345
7321
|
var ENDPOINT_CREATE_AFFILIATES = ENDPOINT$2 + "/affiliates";
|
|
7322
|
+
var ENDPOINT_TRANSLATION_DICTIONARY = ENDPOINT$2 + "/translation-dictionary";
|
|
7323
|
+
var ENDPOINT_BOOKING_ACCOMMODATION = ENDPOINT$2 + "/booking-accommodation";
|
|
7346
7324
|
/**
|
|
7347
7325
|
* api/web/crmcontact
|
|
7348
7326
|
* Creates a CRM contact.
|
|
@@ -7355,7 +7333,7 @@ var createCrmContact = function (config, request, signal) {
|
|
|
7355
7333
|
var url = "" + config.host + ENDPOINT_CREATE_CRM_CONTACT;
|
|
7356
7334
|
var apiKey = config.apiKey;
|
|
7357
7335
|
var body = JSON.stringify(request);
|
|
7358
|
-
return post
|
|
7336
|
+
return post(url, apiKey, body, config.token, signal);
|
|
7359
7337
|
};
|
|
7360
7338
|
/**
|
|
7361
7339
|
* api/web/affiliates
|
|
@@ -7369,6 +7347,18 @@ var getAffiliates = function (config, signal) {
|
|
|
7369
7347
|
var apiKey = config.apiKey;
|
|
7370
7348
|
return get(url, apiKey, config.token, signal, true);
|
|
7371
7349
|
};
|
|
7350
|
+
var getTranslationDictionary = function (config, segmentKey, signal) {
|
|
7351
|
+
var url =
|
|
7352
|
+
"" + config.host + ENDPOINT_TRANSLATION_DICTIONARY + "/" + segmentKey;
|
|
7353
|
+
var apiKey = config.apiKey;
|
|
7354
|
+
return get(url, apiKey, undefined, signal);
|
|
7355
|
+
};
|
|
7356
|
+
var generateBookingAccommodations = function (config, request, signal) {
|
|
7357
|
+
var url = "" + config.host + ENDPOINT_BOOKING_ACCOMMODATION;
|
|
7358
|
+
var apiKey = config.apiKey;
|
|
7359
|
+
var body = JSON.stringify(request);
|
|
7360
|
+
return post(url, apiKey, body, config.token, signal);
|
|
7361
|
+
};
|
|
7372
7362
|
|
|
7373
7363
|
var ENDPOINT$1 = "/api/web/contact";
|
|
7374
7364
|
var ENDPOINT_CONTACT_FORM = ENDPOINT$1 + "/contact-form";
|
|
@@ -7419,31 +7409,22 @@ build.ServiceType = ServiceType;
|
|
|
7419
7409
|
var agents_1 = build.agents = agents;
|
|
7420
7410
|
build.alternateFlights = alternateFlights;
|
|
7421
7411
|
build.alternateHotels = alternateHotels;
|
|
7412
|
+
build.availableCountries = availableCountries;
|
|
7413
|
+
build.availableFlights = availableFlights;
|
|
7422
7414
|
var book_1 = build.book = book;
|
|
7423
7415
|
build.bookableDates = bookableDates;
|
|
7416
|
+
build.changeEntryAgentSurcharge = changeEntryAgentSurcharge;
|
|
7424
7417
|
build.confirm = confirm;
|
|
7425
7418
|
build.contactForm = contactForm;
|
|
7426
7419
|
build.contactHasTag = contactHasTag;
|
|
7427
7420
|
build.createCrmContact = createCrmContact;
|
|
7428
|
-
build.createEntry = createEntry;
|
|
7429
|
-
build.createEntryWithShortResponse = createEntryWithShortResponse;
|
|
7430
|
-
build.createOffer = createOffer;
|
|
7431
|
-
build.createOfferWithShortResponse = createOfferWithShortResponse;
|
|
7432
|
-
build.createPackageEntry = createPackageEntry;
|
|
7433
|
-
build.createPackageEntryWithShortResponse =
|
|
7434
|
-
createPackageEntryWithShortResponse;
|
|
7435
|
-
build.createPackageOffer = createPackageOffer;
|
|
7436
|
-
build.createPackageOfferWithShortResponse =
|
|
7437
|
-
createPackageOfferWithShortResponse;
|
|
7438
7421
|
build.createParams = createParams;
|
|
7439
7422
|
var details_1 = build.details = details;
|
|
7440
7423
|
build.feedXml = feedXml;
|
|
7441
7424
|
build.forgotPassword = forgotPassword;
|
|
7425
|
+
var generateBookingAccommodations_1 = build.generateBookingAccommodations = generateBookingAccommodations;
|
|
7442
7426
|
build.getAffiliates = getAffiliates;
|
|
7443
7427
|
build.getAllotmentAvailability = getAllotmentAvailability;
|
|
7444
|
-
build.getAvailableProducts = getAvailableProducts;
|
|
7445
|
-
build.getBasePrices = getBasePrices;
|
|
7446
|
-
build.getBasePricesFromDate = getBasePricesFromDate;
|
|
7447
7428
|
build.getCountries = getCountries;
|
|
7448
7429
|
build.getCustomEntryStatus = getCustomEntryStatus;
|
|
7449
7430
|
build.getEntryList = getEntryList;
|
|
@@ -7451,19 +7432,21 @@ build.getEntryStatus = getEntryStatus;
|
|
|
7451
7432
|
build.getEntryTotals = getEntryTotals;
|
|
7452
7433
|
build.getInvoiceList = getInvoiceList;
|
|
7453
7434
|
build.getMolliePayment = getMolliePayment;
|
|
7454
|
-
build.getPackagePriceDetails = getPackagePriceDetails;
|
|
7455
7435
|
build.getPrintActions = getPrintActions;
|
|
7436
|
+
build.getTranslationDictionary = getTranslationDictionary;
|
|
7456
7437
|
build.login = login;
|
|
7457
7438
|
build.logout = logout;
|
|
7458
7439
|
var priceDetails_1 = build.priceDetails = priceDetails;
|
|
7440
|
+
build.prices = prices;
|
|
7459
7441
|
build.print = print;
|
|
7460
|
-
build.readPackageSearchList = readPackageSearchList;
|
|
7461
7442
|
build.resetPassword = resetPassword;
|
|
7462
7443
|
build.search = search;
|
|
7463
7444
|
build.searchFlightPool = searchFlightPool;
|
|
7464
|
-
build.searchPackages = searchPackages;
|
|
7465
7445
|
build.searchWithErrorMapping = searchWithErrorMapping;
|
|
7446
|
+
build.setCustomEntryStatus = setCustomEntryStatus;
|
|
7447
|
+
build.setEntryStatus = setEntryStatus;
|
|
7466
7448
|
build.tourCodes = tourCodes;
|
|
7449
|
+
build.transportDates = transportDates;
|
|
7467
7450
|
build.update = update;
|
|
7468
7451
|
var validateVoucher_1 = build.validateVoucher = validateVoucher;
|
|
7469
7452
|
|
|
@@ -8290,14 +8273,26 @@ var fetchAgents$1 = function (signal, apiSettings) { return __awaiter$1(void 0,
|
|
|
8290
8273
|
}
|
|
8291
8274
|
});
|
|
8292
8275
|
}); };
|
|
8293
|
-
var
|
|
8294
|
-
|
|
8295
|
-
|
|
8296
|
-
|
|
8297
|
-
|
|
8298
|
-
|
|
8299
|
-
|
|
8300
|
-
|
|
8276
|
+
var fetchAccommodationViews$1 = function (request, signal, apiSettings) { return __awaiter$1(void 0, void 0, void 0, function () {
|
|
8277
|
+
var tideClientConfig;
|
|
8278
|
+
return __generator$1(this, function (_a) {
|
|
8279
|
+
switch (_a.label) {
|
|
8280
|
+
case 0:
|
|
8281
|
+
tideClientConfig = buildTideClientConfig(apiSettings);
|
|
8282
|
+
return [4 /*yield*/, generateBookingAccommodations_1(tideClientConfig, request, signal)];
|
|
8283
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
8284
|
+
}
|
|
8285
|
+
});
|
|
8286
|
+
}); };
|
|
8287
|
+
var packageApi = {
|
|
8288
|
+
fetchDetails: fetchDetails,
|
|
8289
|
+
fetchAgents: fetchAgents$1,
|
|
8290
|
+
fetchAccommodationViews: fetchAccommodationViews$1
|
|
8291
|
+
};
|
|
8292
|
+
|
|
8293
|
+
var ROOM_OPTIONS_FORM_STEP = 1;
|
|
8294
|
+
var FLIGHT_OPTIONS_FORM_STEP = 2;
|
|
8295
|
+
var OPTIONS_FORM_STEP = 3;
|
|
8301
8296
|
var TRAVELERS_FORM_STEP = 4;
|
|
8302
8297
|
var SUMMARY_STEP = 5;
|
|
8303
8298
|
var CONFIRMATION_STEP = 6;
|
|
@@ -8488,6 +8483,7 @@ var selectIsFetchingProductOptions = function (state) {
|
|
|
8488
8483
|
var selectDepartureFlight = function (state) { var _a, _b; return (_b = (_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.outwardFlights) === null || _b === void 0 ? void 0 : _b.find(function (x) { return x.isSelected; }); };
|
|
8489
8484
|
var selectReturnFlight = function (state) { var _a, _b; return (_b = (_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.returnFlights) === null || _b === void 0 ? void 0 : _b.find(function (x) { return x.isSelected; }); };
|
|
8490
8485
|
var selectPackageRooms = function (state) { var _a, _b; return (_b = (_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.options.find(function (x) { return x.isSelected; })) === null || _b === void 0 ? void 0 : _b.rooms; };
|
|
8486
|
+
var selectAvailabilities = function (state) { var _a, _b; return (_b = (_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.options.find(function (x) { return x.isSelected; })) === null || _b === void 0 ? void 0 : _b.availabilities; };
|
|
8491
8487
|
var selectPackageTags = function (state) { var _a; return (_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.tags; };
|
|
8492
8488
|
var selectIsOnRequest = function (state) { var _a, _b; return (_b = (_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.options.find(function (x) { return x.isSelected; })) === null || _b === void 0 ? void 0 : _b.isOnRequest; };
|
|
8493
8489
|
var selectPackageOptionUnits = function (state) { var _a, _b; return (_b = (_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.options.find(function (x) { return x.isSelected; })) === null || _b === void 0 ? void 0 : _b.optionUnits; };
|
|
@@ -8552,6 +8548,20 @@ var selectCalculateDeposit = function (state) {
|
|
|
8552
8548
|
var selectIsRetry = function (state) { return state.booking.isRetry; };
|
|
8553
8549
|
var selectStartDate = function (state) { var _a, _b; return (_b = (_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.options.find(function (x) { return x.isSelected; })) === null || _b === void 0 ? void 0 : _b.fromDate; };
|
|
8554
8550
|
var selectAgents = function (state) { return state.booking.agents; };
|
|
8551
|
+
var selectProductCode = function (state) { var _a; return (_a = state.booking.productAttributes) === null || _a === void 0 ? void 0 : _a.productCode; };
|
|
8552
|
+
var selectAccommodationCodes = function (state) {
|
|
8553
|
+
var _a;
|
|
8554
|
+
var accommodationCodes = [];
|
|
8555
|
+
(_a = state.booking.package) === null || _a === void 0 ? void 0 : _a.options.forEach(function (o) {
|
|
8556
|
+
o.rooms.forEach(function (r) { return r.options.forEach(function (ro) {
|
|
8557
|
+
if (!accommodationCodes.some(function (y) { return y === ro.accommodationCode; })) {
|
|
8558
|
+
accommodationCodes.push(ro.accommodationCode);
|
|
8559
|
+
}
|
|
8560
|
+
}); });
|
|
8561
|
+
});
|
|
8562
|
+
return accommodationCodes;
|
|
8563
|
+
};
|
|
8564
|
+
var selectAccommodationViews = function (state) { return state.booking.accommodationViews; };
|
|
8555
8565
|
var selectBookingQuery = function (state) {
|
|
8556
8566
|
var bookingAttributes = state.booking.bookingAttributes;
|
|
8557
8567
|
if (!bookingAttributes) {
|
|
@@ -8568,11 +8578,16 @@ var selectBookingQuery = function (state) {
|
|
|
8568
8578
|
AQF: true,
|
|
8569
8579
|
});
|
|
8570
8580
|
}
|
|
8571
|
-
if (key === "
|
|
8581
|
+
if (key === "allotmentIds" && !value.length) {
|
|
8582
|
+
value = undefined;
|
|
8583
|
+
}
|
|
8584
|
+
if (key === "flight" && value) {
|
|
8572
8585
|
var flightInfo = value;
|
|
8573
8586
|
value = JsonURL__default["default"].stringify(flightInfo, { AQF: true });
|
|
8574
8587
|
}
|
|
8575
|
-
|
|
8588
|
+
if (value) {
|
|
8589
|
+
params[key] = value;
|
|
8590
|
+
}
|
|
8576
8591
|
});
|
|
8577
8592
|
return params;
|
|
8578
8593
|
};
|
|
@@ -8764,6 +8779,9 @@ var fetchPackage = toolkit.createAsyncThunk("booking/fetchPackage", function (_,
|
|
|
8764
8779
|
_b.sent();
|
|
8765
8780
|
return [4 /*yield*/, dispatch(fetchPackageDetails())];
|
|
8766
8781
|
case 2:
|
|
8782
|
+
_b.sent();
|
|
8783
|
+
return [4 /*yield*/, dispatch(fetchAccommodationViews())];
|
|
8784
|
+
case 3:
|
|
8767
8785
|
_b.sent();
|
|
8768
8786
|
dispatch(setFetchingPackage(false));
|
|
8769
8787
|
return [2 /*return*/];
|
|
@@ -8848,6 +8866,34 @@ var fetchPackageDetails = toolkit.createAsyncThunk("booking/details", function (
|
|
|
8848
8866
|
});
|
|
8849
8867
|
});
|
|
8850
8868
|
});
|
|
8869
|
+
var fetchAccommodationViews = toolkit.createAsyncThunk("booking/accommodationViews", function (_, _a) {
|
|
8870
|
+
_a.dispatch; var getState = _a.getState, signal = _a.signal;
|
|
8871
|
+
return __awaiter$1(void 0, void 0, void 0, function () {
|
|
8872
|
+
var state, languageCode, accommodationCodes, productCode, request;
|
|
8873
|
+
return __generator$1(this, function (_b) {
|
|
8874
|
+
switch (_b.label) {
|
|
8875
|
+
case 0:
|
|
8876
|
+
state = getState();
|
|
8877
|
+
if (!state.booking.accommodationViewId)
|
|
8878
|
+
return [2 /*return*/, Promise.resolve()];
|
|
8879
|
+
languageCode = selectLanguageCode(state);
|
|
8880
|
+
accommodationCodes = selectAccommodationCodes(state);
|
|
8881
|
+
productCode = selectProductCode(state);
|
|
8882
|
+
if (!productCode) {
|
|
8883
|
+
throw Error('No product selected');
|
|
8884
|
+
}
|
|
8885
|
+
request = {
|
|
8886
|
+
languageCode: languageCode,
|
|
8887
|
+
productCode: productCode,
|
|
8888
|
+
accommodationCodes: accommodationCodes,
|
|
8889
|
+
contentViewId: state.booking.accommodationViewId
|
|
8890
|
+
};
|
|
8891
|
+
return [4 /*yield*/, packageApi.fetchAccommodationViews(request, signal, state.apiSettings)];
|
|
8892
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
8893
|
+
}
|
|
8894
|
+
});
|
|
8895
|
+
});
|
|
8896
|
+
});
|
|
8851
8897
|
var getActiveOption = function (state) {
|
|
8852
8898
|
if (state.package)
|
|
8853
8899
|
return state.package.options.find(function (x) { return x.isSelected; });
|
|
@@ -9029,17 +9075,15 @@ var bookingSlice = toolkit.createSlice({
|
|
|
9029
9075
|
document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
|
|
9030
9076
|
state.currentStep = action.payload;
|
|
9031
9077
|
},
|
|
9032
|
-
|
|
9078
|
+
setFlights: function (state, action) {
|
|
9033
9079
|
if (!state.package)
|
|
9034
9080
|
return;
|
|
9035
|
-
changeOutwardFlight(state.package, action.payload);
|
|
9081
|
+
changeOutwardFlight(state.package, action.payload.selectedOutward);
|
|
9082
|
+
changeReturnFlight(state.package, action.payload.selectedReturn);
|
|
9036
9083
|
changePackageOption(state.package);
|
|
9037
9084
|
},
|
|
9038
|
-
|
|
9039
|
-
|
|
9040
|
-
return;
|
|
9041
|
-
changeReturnFlight(state.package, action.payload);
|
|
9042
|
-
changePackageOption(state.package);
|
|
9085
|
+
setAccommodationViewId: function (state, action) {
|
|
9086
|
+
state.accommodationViewId = action.payload;
|
|
9043
9087
|
}
|
|
9044
9088
|
},
|
|
9045
9089
|
extraReducers: function (builder) {
|
|
@@ -9147,9 +9191,14 @@ var bookingSlice = toolkit.createSlice({
|
|
|
9147
9191
|
state.agents = action.payload;
|
|
9148
9192
|
}
|
|
9149
9193
|
});
|
|
9194
|
+
builder.addCase(fetchAccommodationViews.fulfilled, function (state, action) {
|
|
9195
|
+
if (action.payload) {
|
|
9196
|
+
state.accommodationViews = action.payload;
|
|
9197
|
+
}
|
|
9198
|
+
});
|
|
9150
9199
|
},
|
|
9151
9200
|
});
|
|
9152
|
-
var setOfficeId = (_a = bookingSlice.actions, _a.setOfficeId), setLanguageCode = _a.setLanguageCode, setTranslations = _a.setTranslations, setBookingOptions = _a.setBookingOptions, setBookingType = _a.setBookingType, setProductAttributes = _a.setProductAttributes, setBookingAttributes = _a.setBookingAttributes, setCalculateDeposit = _a.setCalculateDeposit, setBookingNumber = _a.setBookingNumber, setIsRetry = _a.setIsRetry, setFetchingPackage = _a.setFetchingPackage, setPackage = _a.setPackage, setPackageRooms = _a.setPackageRooms, setPackageOptionPax = _a.setPackageOptionPax, setPackageOptionUnits = _a.setPackageOptionUnits, setPackageGroups = _a.setPackageGroups, setSkipPayment = _a.setSkipPayment, setGeneratePaymentUrl = _a.setGeneratePaymentUrl, setTagIds = _a.setTagIds, setAgentAdressId = _a.setAgentAdressId, setBookingRemarks = _a.setBookingRemarks, setVoucherCodes = _a.setVoucherCodes, setCurrentStep = _a.setCurrentStep, setPackageAirlineGroups = _a.setPackageAirlineGroups, setPackageAirportGroups = _a.setPackageAirportGroups,
|
|
9201
|
+
var setOfficeId = (_a = bookingSlice.actions, _a.setOfficeId), setLanguageCode = _a.setLanguageCode, setTranslations = _a.setTranslations, setBookingOptions = _a.setBookingOptions, setBookingType = _a.setBookingType, setProductAttributes = _a.setProductAttributes, setBookingAttributes = _a.setBookingAttributes, setCalculateDeposit = _a.setCalculateDeposit, setBookingNumber = _a.setBookingNumber, setIsRetry = _a.setIsRetry, setFetchingPackage = _a.setFetchingPackage, setPackage = _a.setPackage, setPackageRooms = _a.setPackageRooms, setPackageOptionPax = _a.setPackageOptionPax, setPackageOptionUnits = _a.setPackageOptionUnits, setPackageGroups = _a.setPackageGroups, setSkipPayment = _a.setSkipPayment, setGeneratePaymentUrl = _a.setGeneratePaymentUrl, setTagIds = _a.setTagIds, setAgentAdressId = _a.setAgentAdressId, setBookingRemarks = _a.setBookingRemarks, setVoucherCodes = _a.setVoucherCodes, setCurrentStep = _a.setCurrentStep, setPackageAirlineGroups = _a.setPackageAirlineGroups, setPackageAirportGroups = _a.setPackageAirportGroups, setFlights = _a.setFlights, setAccommodationViewId = _a.setAccommodationViewId;
|
|
9153
9202
|
var bookingReducer = bookingSlice.reducer;
|
|
9154
9203
|
|
|
9155
9204
|
var initialState = {
|
|
@@ -9186,12 +9235,12 @@ var StepIndicators = function (_a) {
|
|
|
9186
9235
|
var _b = React.useContext(SettingsContext), flightOptions = _b.flightOptions, roomOptions = _b.roomOptions;
|
|
9187
9236
|
var translations = reactRedux.useSelector(selectTranslations);
|
|
9188
9237
|
var allSteps = [];
|
|
9189
|
-
if (!roomOptions.isHidden) {
|
|
9190
|
-
allSteps.push(translations.STEPS.ROOM_OPTIONS);
|
|
9191
|
-
}
|
|
9192
9238
|
if (!flightOptions.isHidden) {
|
|
9193
9239
|
allSteps.push(translations.STEPS.FLIGHT_OPTIONS);
|
|
9194
9240
|
}
|
|
9241
|
+
if (!roomOptions.isHidden) {
|
|
9242
|
+
allSteps.push(translations.STEPS.ROOM_OPTIONS);
|
|
9243
|
+
}
|
|
9195
9244
|
allSteps.push(translations.STEPS.EXTRA_OPTIONS);
|
|
9196
9245
|
allSteps.push(translations.STEPS.PERSONAL_DETAILS);
|
|
9197
9246
|
allSteps.push(translations.STEPS.SUMMARY);
|
|
@@ -9300,196 +9349,569 @@ var Error$1 = function () {
|
|
|
9300
9349
|
translations.ERROR.ERROR_TEXT3)))))));
|
|
9301
9350
|
};
|
|
9302
9351
|
|
|
9303
|
-
var
|
|
9304
|
-
var
|
|
9305
|
-
var
|
|
9306
|
-
var
|
|
9307
|
-
var
|
|
9308
|
-
|
|
9309
|
-
|
|
9310
|
-
var
|
|
9311
|
-
|
|
9312
|
-
|
|
9313
|
-
|
|
9314
|
-
var
|
|
9315
|
-
|
|
9316
|
-
|
|
9317
|
-
|
|
9318
|
-
? translations.FLIGHTS_FORM.DIRECT_FLIGHT
|
|
9319
|
-
: "".concat(item.flightMetaData.flightLines.length - 1, " ").concat(translations.FLIGHTS_FORM.FLIGHT_STOPS);
|
|
9320
|
-
return (React__default["default"].createElement("div", { className: "flight__option" },
|
|
9321
|
-
React__default["default"].createElement("div", { className: "radiobutton" },
|
|
9322
|
-
React__default["default"].createElement("div", { className: "radiobutton__label" },
|
|
9323
|
-
React__default["default"].createElement("input", { type: "radio", value: item.entryLineGuid, id: "".concat(group, "_").concat(item.entryLineGuid), name: group, className: "radiobutton__input", disabled: isDisabled, onChange: function () { return onChange(item); }, checked: isSelected }),
|
|
9324
|
-
React__default["default"].createElement("span", null,
|
|
9325
|
-
airline,
|
|
9326
|
-
" ",
|
|
9327
|
-
flightLabel,
|
|
9328
|
-
" - ",
|
|
9329
|
-
item.class),
|
|
9330
|
-
priceDifference !== 0 && (React__default["default"].createElement("span", { className: buildClassName([
|
|
9331
|
-
"price",
|
|
9332
|
-
priceDifference > 0 && "price--increase",
|
|
9333
|
-
priceDifference < 0 && "price--decrease",
|
|
9334
|
-
]) }, getPriceDifferenceText(priceDifference))),
|
|
9335
|
-
!isSameOption && (React__default["default"].createElement(Icon$1, { name: "ui-warning", title: translations.FLIGHTS_FORM.DIFFERENT_OPTION_WARNING })))),
|
|
9336
|
-
item.flightMetaData && (React__default["default"].createElement("div", null, item.flightMetaData.flightLines.map(function (fl, i) { return (React__default["default"].createElement("div", { key: i },
|
|
9337
|
-
React__default["default"].createElement("span", null,
|
|
9338
|
-
fl.departureAirportDescription,
|
|
9339
|
-
" ",
|
|
9340
|
-
dateFns.format(new Date(fl.departureDate), "dd/MM/yyyy"),
|
|
9341
|
-
" ",
|
|
9342
|
-
fl.departureTime),
|
|
9343
|
-
React__default["default"].createElement("span", null,
|
|
9344
|
-
">> ",
|
|
9345
|
-
fl.airlineCode,
|
|
9346
|
-
fl.number,
|
|
9347
|
-
" >>"),
|
|
9348
|
-
React__default["default"].createElement("span", null,
|
|
9349
|
-
fl.arrivalAirportDescription,
|
|
9350
|
-
" ",
|
|
9351
|
-
dateFns.format(new Date(fl.arrivalDate), "dd/MM/yyyy"),
|
|
9352
|
-
" ",
|
|
9353
|
-
fl.arrivalTime))); })))));
|
|
9354
|
-
};
|
|
9355
|
-
|
|
9356
|
-
var FlightOptionsForm = function () {
|
|
9357
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
9358
|
-
var settings = React.useContext(SettingsContext);
|
|
9359
|
-
var translations = reactRedux.useSelector(selectTranslations);
|
|
9360
|
-
var dispatch = useAppDispatch();
|
|
9361
|
-
var packageDetails = reactRedux.useSelector(selectPackageDetails);
|
|
9362
|
-
var bookingQueryString = reactRedux.useSelector(selectBookingQueryString);
|
|
9363
|
-
var isLoading = reactRedux.useSelector(selectIsFetchingProductOptions);
|
|
9364
|
-
var flights = reactRedux.useSelector(selectPackageFlights);
|
|
9365
|
-
var handleSubmit = function (e) {
|
|
9366
|
-
if (settings.skipRouter) {
|
|
9367
|
-
dispatch(setCurrentStep(OPTIONS_FORM_STEP));
|
|
9352
|
+
var MultiRangeFilter = function (_a) {
|
|
9353
|
+
var min = _a.min, max = _a.max, selectedMin = _a.selectedMin, selectedMax = _a.selectedMax, valueFormatter = _a.valueFormatter, onChange = _a.onChange;
|
|
9354
|
+
var _b = React.useState(false), isDragging = _b[0], setIsDragging = _b[1];
|
|
9355
|
+
var _c = React.useState(0), leftPercentage = _c[0], setLeftPercentage = _c[1];
|
|
9356
|
+
var _d = React.useState(0), rightPercentage = _d[0], setRightPercentage = _d[1];
|
|
9357
|
+
var _e = React.useState(min), minVal = _e[0], setMinVal = _e[1];
|
|
9358
|
+
var _f = React.useState(max), maxVal = _f[0], setMaxVal = _f[1];
|
|
9359
|
+
var minGap = 5;
|
|
9360
|
+
React.useEffect(function () {
|
|
9361
|
+
setSliderTrack();
|
|
9362
|
+
}, [minVal, maxVal]);
|
|
9363
|
+
var slideMin = function (e) {
|
|
9364
|
+
var value = parseInt(e.target.value, 10);
|
|
9365
|
+
if (value >= min && selectedMax - value >= minGap) {
|
|
9366
|
+
setMinVal(value);
|
|
9368
9367
|
}
|
|
9369
|
-
|
|
9370
|
-
|
|
9368
|
+
};
|
|
9369
|
+
var slideMax = function (e) {
|
|
9370
|
+
var value = parseInt(e.target.value, 10);
|
|
9371
|
+
if (value <= max && value - selectedMin >= minGap) {
|
|
9372
|
+
setMaxVal(value);
|
|
9371
9373
|
}
|
|
9372
|
-
e.preventDefault();
|
|
9373
9374
|
};
|
|
9374
|
-
var
|
|
9375
|
-
|
|
9375
|
+
var setSliderTrack = function () {
|
|
9376
|
+
var range = document.querySelector(".slider-track");
|
|
9377
|
+
if (range) {
|
|
9378
|
+
var minPercent = ((minVal - min) / (max - min)) * 100;
|
|
9379
|
+
var maxPercent = ((maxVal - min) / (max - min)) * 100;
|
|
9380
|
+
setLeftPercentage(minPercent);
|
|
9381
|
+
setRightPercentage(100 - maxPercent);
|
|
9382
|
+
}
|
|
9376
9383
|
};
|
|
9377
|
-
var
|
|
9378
|
-
|
|
9379
|
-
|
|
9380
|
-
var
|
|
9381
|
-
|
|
9382
|
-
|
|
9383
|
-
|
|
9384
|
-
|
|
9385
|
-
|
|
9386
|
-
|
|
9387
|
-
|
|
9388
|
-
|
|
9389
|
-
|
|
9390
|
-
|
|
9391
|
-
|
|
9392
|
-
|
|
9393
|
-
|
|
9394
|
-
|
|
9395
|
-
|
|
9396
|
-
|
|
9397
|
-
|
|
9398
|
-
|
|
9399
|
-
|
|
9400
|
-
|
|
9401
|
-
|
|
9384
|
+
var startDrag = function () {
|
|
9385
|
+
setIsDragging(true);
|
|
9386
|
+
};
|
|
9387
|
+
var stopDrag = function () {
|
|
9388
|
+
setIsDragging(false);
|
|
9389
|
+
onChange(minVal, maxVal);
|
|
9390
|
+
};
|
|
9391
|
+
return (React__default["default"].createElement("div", { className: "double-slider-box" },
|
|
9392
|
+
React__default["default"].createElement("div", { className: "input-box" },
|
|
9393
|
+
React__default["default"].createElement("div", { className: "min-box" }, valueFormatter(min)),
|
|
9394
|
+
React__default["default"].createElement("div", { className: "max-box" }, valueFormatter(max))),
|
|
9395
|
+
React__default["default"].createElement("div", { className: "range-slider" },
|
|
9396
|
+
React__default["default"].createElement("div", { className: "slider-track", style: { 'left': leftPercentage + '%', right: rightPercentage + '%' } }),
|
|
9397
|
+
React__default["default"].createElement("input", { type: "range", min: min, max: max, value: minVal, onChange: slideMin, onMouseDown: startDrag, onMouseUp: stopDrag, onTouchStart: startDrag, onTouchEnd: stopDrag, className: "min-val" }),
|
|
9398
|
+
React__default["default"].createElement("input", { type: "range", min: min, max: max, value: maxVal, onChange: slideMax, onMouseDown: startDrag, onMouseUp: stopDrag, onTouchStart: startDrag, onTouchEnd: stopDrag, className: "max-val" }),
|
|
9399
|
+
isDragging && React__default["default"].createElement("div", { className: "min-tooltip" }, valueFormatter(minVal)),
|
|
9400
|
+
isDragging && React__default["default"].createElement("div", { className: "max-tooltip" }, valueFormatter(maxVal)))));
|
|
9401
|
+
};
|
|
9402
|
+
|
|
9403
|
+
/*interface FlightGroup {
|
|
9404
|
+
code: string;
|
|
9405
|
+
startDate: Date,
|
|
9406
|
+
endDate: Date;
|
|
9407
|
+
options: BookingPackageFlight[];
|
|
9408
|
+
}*/
|
|
9409
|
+
var buildGroupedFlights = function (outwardFlights, returnFlights) {
|
|
9410
|
+
if (!outwardFlights || !returnFlights)
|
|
9411
|
+
return [];
|
|
9412
|
+
// let outwardGroups = groupFlights(outwardFlights);
|
|
9413
|
+
// let returnGroups = groupFlights(returnFlights);
|
|
9414
|
+
var pairs = [];
|
|
9415
|
+
outwardFlights.forEach(function (outwardFlight) {
|
|
9416
|
+
if (outwardFlight.externalGuid) {
|
|
9417
|
+
var returnFlight = returnFlights.find(function (x) { return x.externalGuid === outwardFlight.externalGuid; });
|
|
9418
|
+
pairs.push({ outward: outwardFlight, return: returnFlight });
|
|
9419
|
+
}
|
|
9420
|
+
else {
|
|
9421
|
+
var outwardCode = outwardFlight.code.substring(0, 7);
|
|
9422
|
+
var returnCode_1 = outwardCode.split(" ").reduce(function (a, b) { return "".concat(b, " ").concat(a); });
|
|
9423
|
+
returnFlights.filter(function (x) { return x.code.startsWith(returnCode_1); }).forEach(function (returnFlight) {
|
|
9424
|
+
pairs.push({ outward: outwardFlight, return: returnFlight });
|
|
9425
|
+
});
|
|
9426
|
+
}
|
|
9427
|
+
});
|
|
9428
|
+
var results = pairs.map(function (x) {
|
|
9429
|
+
var outwardFlightDetails = getFlightDetails(x.outward);
|
|
9430
|
+
var returnFlightDetails = getFlightDetails(x.return);
|
|
9431
|
+
return {
|
|
9432
|
+
isSelected: x.outward.isSelected && x.return.isSelected,
|
|
9433
|
+
price: x.outward.price + x.return.price,
|
|
9434
|
+
outward: outwardFlightDetails,
|
|
9435
|
+
return: returnFlightDetails,
|
|
9436
|
+
selectedOutward: x.outward,
|
|
9437
|
+
selectedReturn: x.return
|
|
9438
|
+
};
|
|
9439
|
+
});
|
|
9440
|
+
return results;
|
|
9441
|
+
};
|
|
9442
|
+
var buildFilterOptions = function (outwardFlights, returnFlights, translations) {
|
|
9443
|
+
if (!outwardFlights || !returnFlights)
|
|
9444
|
+
return undefined;
|
|
9445
|
+
var airports = [];
|
|
9446
|
+
var airlines = [];
|
|
9447
|
+
var numberOfStops = [];
|
|
9448
|
+
var outwardDeparturePeriods = [];
|
|
9449
|
+
var returnDeparturePeriods = [];
|
|
9450
|
+
var lowestDepartureTravelDuration = 9999;
|
|
9451
|
+
var highestDepartureTravelDuration = 0;
|
|
9452
|
+
var lowestDepartureChangeDuration = 9999;
|
|
9453
|
+
var highestDepartureChangeDuration = 0;
|
|
9454
|
+
outwardFlights.forEach(function (flight) {
|
|
9455
|
+
var _a;
|
|
9456
|
+
var airlineCode = flight.code.split('/')[1];
|
|
9457
|
+
if ((_a = flight.flightMetaData.flightLines) === null || _a === void 0 ? void 0 : _a.length) {
|
|
9458
|
+
var firstLine_1 = flight.flightMetaData.flightLines[0];
|
|
9459
|
+
if (!airports.some(function (x) { return x.value === firstLine_1.departureAirport; })) {
|
|
9460
|
+
airports.push({
|
|
9461
|
+
value: firstLine_1 === null || firstLine_1 === void 0 ? void 0 : firstLine_1.departureAirport,
|
|
9462
|
+
label: firstLine_1.departureAirportDescription,
|
|
9463
|
+
count: 0,
|
|
9464
|
+
isSelected: false
|
|
9465
|
+
});
|
|
9402
9466
|
}
|
|
9403
9467
|
}
|
|
9404
|
-
|
|
9405
|
-
|
|
9406
|
-
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
|
|
9414
|
-
|
|
9415
|
-
|
|
9416
|
-
|
|
9417
|
-
|
|
9418
|
-
|
|
9419
|
-
|
|
9420
|
-
|
|
9421
|
-
|
|
9422
|
-
|
|
9423
|
-
|
|
9424
|
-
|
|
9425
|
-
|
|
9426
|
-
|
|
9427
|
-
|
|
9428
|
-
|
|
9429
|
-
|
|
9430
|
-
|
|
9431
|
-
|
|
9432
|
-
|
|
9433
|
-
|
|
9434
|
-
|
|
9435
|
-
|
|
9436
|
-
|
|
9437
|
-
|
|
9438
|
-
|
|
9439
|
-
|
|
9440
|
-
var
|
|
9441
|
-
|
|
9442
|
-
|
|
9443
|
-
|
|
9444
|
-
|
|
9468
|
+
if (!airlines.some(function (x) { return x.value === airlineCode; })) {
|
|
9469
|
+
airlines.push({
|
|
9470
|
+
value: airlineCode,
|
|
9471
|
+
label: flight.airlineDescription,
|
|
9472
|
+
count: 0,
|
|
9473
|
+
isSelected: false
|
|
9474
|
+
});
|
|
9475
|
+
}
|
|
9476
|
+
var stopCount = flight.flightMetaData.flightLines.length - 1;
|
|
9477
|
+
if (!numberOfStops.some(function (x) { return x.value === (stopCount + ''); })) {
|
|
9478
|
+
numberOfStops.push({
|
|
9479
|
+
value: (stopCount + ''),
|
|
9480
|
+
label: stopCount === 0
|
|
9481
|
+
? translations.FLIGHTS_FORM.DIRECT_FLIGHT
|
|
9482
|
+
: stopCount == 1
|
|
9483
|
+
? "".concat(stopCount, " ").concat(translations.FLIGHTS_FORM.STOP)
|
|
9484
|
+
: "".concat(stopCount, " ").concat(translations.FLIGHTS_FORM.STOPS),
|
|
9485
|
+
count: 0,
|
|
9486
|
+
isSelected: false
|
|
9487
|
+
});
|
|
9488
|
+
}
|
|
9489
|
+
var departureTime = flight.flightMetaData.flightLines[0].departureTime;
|
|
9490
|
+
var timeBracket = determineTimeBracket(departureTime);
|
|
9491
|
+
if (!outwardDeparturePeriods.some(function (x) { return x.value === timeBracket; })) {
|
|
9492
|
+
outwardDeparturePeriods.push({
|
|
9493
|
+
value: timeBracket,
|
|
9494
|
+
label: getBracketTranslation(timeBracket, translations),
|
|
9495
|
+
count: 0,
|
|
9496
|
+
isSelected: false
|
|
9497
|
+
});
|
|
9498
|
+
}
|
|
9499
|
+
var travelDurationInMinutes = minutesFromTicks(flight.flightMetaData.durationInTicks);
|
|
9500
|
+
if (travelDurationInMinutes > highestDepartureTravelDuration)
|
|
9501
|
+
highestDepartureTravelDuration = travelDurationInMinutes;
|
|
9502
|
+
if (travelDurationInMinutes < lowestDepartureTravelDuration)
|
|
9503
|
+
lowestDepartureTravelDuration = travelDurationInMinutes;
|
|
9504
|
+
var changeDurationInMinutes = getTotalChangeDuration(flight);
|
|
9505
|
+
if (changeDurationInMinutes > highestDepartureChangeDuration)
|
|
9506
|
+
highestDepartureChangeDuration = changeDurationInMinutes;
|
|
9507
|
+
if (changeDurationInMinutes < lowestDepartureChangeDuration)
|
|
9508
|
+
lowestDepartureChangeDuration = changeDurationInMinutes;
|
|
9509
|
+
});
|
|
9510
|
+
var lowestReturnTravelDuration = 9999;
|
|
9511
|
+
var highestReturnTravelDuration = 0;
|
|
9512
|
+
var lowestReturnChangeDuration = 9999;
|
|
9513
|
+
var highestReturnChangeDuration = 0;
|
|
9514
|
+
returnFlights.forEach(function (flight) {
|
|
9515
|
+
var durationInMinutes = minutesFromTicks(flight.flightMetaData.durationInTicks);
|
|
9516
|
+
if (durationInMinutes > highestReturnTravelDuration)
|
|
9517
|
+
highestReturnTravelDuration = durationInMinutes;
|
|
9518
|
+
if (durationInMinutes < lowestReturnTravelDuration)
|
|
9519
|
+
lowestReturnTravelDuration = durationInMinutes;
|
|
9520
|
+
var changeDurationInMinutes = getTotalChangeDuration(flight);
|
|
9521
|
+
if (changeDurationInMinutes > highestReturnChangeDuration)
|
|
9522
|
+
highestReturnChangeDuration = changeDurationInMinutes;
|
|
9523
|
+
if (changeDurationInMinutes < lowestReturnChangeDuration)
|
|
9524
|
+
lowestReturnChangeDuration = changeDurationInMinutes;
|
|
9525
|
+
var departureTime = flight.flightMetaData.flightLines[0].departureTime;
|
|
9526
|
+
var timeBracket = determineTimeBracket(departureTime);
|
|
9527
|
+
if (!returnDeparturePeriods.some(function (x) { return x.value === timeBracket; })) {
|
|
9528
|
+
returnDeparturePeriods.push({
|
|
9529
|
+
value: timeBracket,
|
|
9530
|
+
label: getBracketTranslation(timeBracket, translations),
|
|
9531
|
+
count: 0,
|
|
9532
|
+
isSelected: false
|
|
9533
|
+
});
|
|
9534
|
+
}
|
|
9535
|
+
});
|
|
9536
|
+
return {
|
|
9537
|
+
airports: airports,
|
|
9538
|
+
airlines: airlines,
|
|
9539
|
+
numberOfStops: numberOfStops,
|
|
9540
|
+
outward: {
|
|
9541
|
+
departurePeriod: outwardDeparturePeriods,
|
|
9542
|
+
travelDuration: {
|
|
9543
|
+
min: lowestDepartureTravelDuration,
|
|
9544
|
+
max: highestDepartureTravelDuration,
|
|
9545
|
+
selectedMin: lowestDepartureTravelDuration,
|
|
9546
|
+
selectedMax: highestDepartureTravelDuration
|
|
9547
|
+
},
|
|
9548
|
+
changeDuration: {
|
|
9549
|
+
min: lowestDepartureChangeDuration,
|
|
9550
|
+
max: highestDepartureChangeDuration,
|
|
9551
|
+
selectedMin: lowestDepartureChangeDuration,
|
|
9552
|
+
selectedMax: highestDepartureChangeDuration
|
|
9553
|
+
}
|
|
9554
|
+
},
|
|
9555
|
+
return: {
|
|
9556
|
+
departurePeriod: returnDeparturePeriods,
|
|
9557
|
+
travelDuration: {
|
|
9558
|
+
min: lowestReturnTravelDuration,
|
|
9559
|
+
max: highestReturnTravelDuration,
|
|
9560
|
+
selectedMin: lowestReturnTravelDuration,
|
|
9561
|
+
selectedMax: highestReturnTravelDuration
|
|
9562
|
+
},
|
|
9563
|
+
changeDuration: {
|
|
9564
|
+
min: lowestReturnChangeDuration,
|
|
9565
|
+
max: highestReturnChangeDuration,
|
|
9566
|
+
selectedMin: lowestReturnChangeDuration,
|
|
9567
|
+
selectedMax: highestReturnChangeDuration
|
|
9568
|
+
}
|
|
9569
|
+
}
|
|
9570
|
+
};
|
|
9571
|
+
};
|
|
9572
|
+
var filterGroupedFlights = function (groups, filterOptions) {
|
|
9573
|
+
if (!groups.length || !filterOptions)
|
|
9574
|
+
return [];
|
|
9575
|
+
var filteredGroups = groups;
|
|
9576
|
+
if (filterOptions.airlines.some(function (x) { return x.isSelected; })) {
|
|
9577
|
+
var selectedAirlineCodes_1 = filterOptions.airlines.filter(function (x) { return x.isSelected; });
|
|
9578
|
+
filteredGroups = filteredGroups.filter(function (x) { return selectedAirlineCodes_1.some(function (y) { return y.value === x.outward.airlineCode; }); });
|
|
9579
|
+
}
|
|
9580
|
+
if (filterOptions.airports.some(function (x) { return x.isSelected; })) {
|
|
9581
|
+
var selectedAirlineCodes_2 = filterOptions.airports.filter(function (x) { return x.isSelected; });
|
|
9582
|
+
filteredGroups = filteredGroups.filter(function (x) { return selectedAirlineCodes_2.some(function (y) { return y.value === x.outward.departureAirportCode; }); });
|
|
9583
|
+
}
|
|
9584
|
+
if (filterOptions.numberOfStops.some(function (x) { return x.isSelected; })) {
|
|
9585
|
+
var selectedNumberOfStops_1 = filterOptions.airlines.filter(function (x) { return x.isSelected; });
|
|
9586
|
+
filteredGroups = filteredGroups.filter(function (x) { return selectedNumberOfStops_1.some(function (y) { return parseInt(y.value) === (x.outward.flightLines.length - 1); }); });
|
|
9587
|
+
}
|
|
9588
|
+
filteredGroups = filterGroupedFlightByDirection(filteredGroups, true, filterOptions.outward);
|
|
9589
|
+
filteredGroups = filterGroupedFlightByDirection(filteredGroups, false, filterOptions.return);
|
|
9590
|
+
return filteredGroups;
|
|
9591
|
+
};
|
|
9592
|
+
var filterGroupedFlightByDirection = function (groups, isOutward, directionFilter) {
|
|
9593
|
+
var filteredGroups = groups;
|
|
9594
|
+
if (directionFilter.departurePeriod.some(function (x) { return x.isSelected; })) {
|
|
9595
|
+
var selectedDeparturePeriods_1 = directionFilter.departurePeriod.filter(function (x) { return x.isSelected; });
|
|
9596
|
+
filteredGroups = filteredGroups.filter(function (x) { return selectedDeparturePeriods_1.some(function (y) { return y.value === determineTimeBracket((isOutward ? x.outward : x.return).departureTime); }); });
|
|
9597
|
+
}
|
|
9598
|
+
filteredGroups = filteredGroups.filter(function (x) { return directionFilter.travelDuration.selectedMin <= (isOutward ? x.outward : x.return).travelDurationMinutes && (isOutward ? x.outward : x.return).travelDurationMinutes <= directionFilter.travelDuration.selectedMax; });
|
|
9599
|
+
return filteredGroups.filter(function (x) { return directionFilter.changeDuration.selectedMin <= (isOutward ? x.outward : x.return).changeDurationMinutes && (isOutward ? x.outward : x.return).changeDurationMinutes <= directionFilter.changeDuration.selectedMax; });
|
|
9600
|
+
};
|
|
9601
|
+
var formatMinutes = function (minutes) {
|
|
9602
|
+
var hh = Math.floor(minutes / 60);
|
|
9603
|
+
var mm = Math.floor(minutes % 60);
|
|
9604
|
+
return pad(hh, 2) + ":" + pad(mm, 2);
|
|
9605
|
+
};
|
|
9606
|
+
var getFlightDetails = function (flight) {
|
|
9607
|
+
var firstLine = flight.flightMetaData.flightLines[0];
|
|
9608
|
+
var lastLine = flight.flightMetaData.flightLines[flight.flightMetaData.flightLines.length - 1];
|
|
9609
|
+
var airlineCode = flight.code.split('/')[1];
|
|
9610
|
+
var waitDurations = getWaitDurations(flight.flightMetaData.flightLines);
|
|
9611
|
+
return {
|
|
9612
|
+
airline: flight.airlineDescription,
|
|
9613
|
+
airlineCode: airlineCode,
|
|
9614
|
+
departureDate: firstLine.departureDate,
|
|
9615
|
+
departureTime: firstLine.departureTime,
|
|
9616
|
+
departureAirportCode: firstLine.departureAirport,
|
|
9617
|
+
departureAirport: firstLine.departureAirportDescription,
|
|
9618
|
+
arrivalDate: lastLine.arrivalDate,
|
|
9619
|
+
arrivalTime: lastLine.arrivalTime,
|
|
9620
|
+
arrivalAirport: lastLine.arrivalAirportDescription,
|
|
9621
|
+
travelDuration: formatDuration(flight.flightMetaData.durationInTicks),
|
|
9622
|
+
travelDurationMinutes: minutesFromTicks(flight.flightMetaData.durationInTicks),
|
|
9623
|
+
changeDurationMinutes: getTotalChangeDuration(flight),
|
|
9624
|
+
numberOfStops: flight.flightMetaData.flightLines.length - 1,
|
|
9625
|
+
isNextDay: isNextDay(firstLine.departureDate, lastLine.arrivalDate),
|
|
9626
|
+
travelClass: firstLine.travelClass,
|
|
9627
|
+
flightLines: flight.flightMetaData.flightLines.map(function (x, i) { return ({
|
|
9628
|
+
airline: x.operatingAirlineDescription,
|
|
9629
|
+
departureDate: x.departureDate,
|
|
9630
|
+
departureTime: x.departureTime,
|
|
9631
|
+
departureAirport: x.departureAirportDescription,
|
|
9632
|
+
arrivalDate: x.arrivalDate,
|
|
9633
|
+
arrivalTime: x.arrivalTime,
|
|
9634
|
+
arrivalAirport: x.arrivalAirportDescription,
|
|
9635
|
+
number: "".concat(x.airlineCode, " ").concat(x.number),
|
|
9636
|
+
travelDuration: formatDuration(x.durationInTicks),
|
|
9637
|
+
waitDuration: waitDurations.length - 1 <= i ? waitDurations[i] : undefined,
|
|
9638
|
+
}); })
|
|
9639
|
+
};
|
|
9640
|
+
};
|
|
9641
|
+
var isNextDay = function (startDateString, endDateString) {
|
|
9642
|
+
var startDate = dateFns.parseISO(startDateString);
|
|
9643
|
+
var endDate = dateFns.parseISO(endDateString);
|
|
9644
|
+
return !dateFns.isEqual(startDate, endDate);
|
|
9645
|
+
};
|
|
9646
|
+
var getWaitDurations = function (lines) {
|
|
9647
|
+
if (lines.length <= 1)
|
|
9648
|
+
return [];
|
|
9649
|
+
var arrivalDate = lines[0].arrivalDate;
|
|
9650
|
+
var arrivalTime = lines[0].arrivalTime;
|
|
9651
|
+
var waitDurations = [];
|
|
9652
|
+
for (var i = 1; i < lines.length; i++) {
|
|
9653
|
+
var line = lines[i];
|
|
9654
|
+
var waitDuration = getWaitDuration(arrivalDate, arrivalTime, line.departureDate, line.departureTime);
|
|
9655
|
+
waitDurations.push(waitDuration);
|
|
9656
|
+
arrivalDate = line.arrivalDate;
|
|
9657
|
+
arrivalTime = line.arrivalTime;
|
|
9658
|
+
}
|
|
9659
|
+
return waitDurations;
|
|
9660
|
+
};
|
|
9661
|
+
var getWaitDuration = function (arrivalDateString, arrivalTime, departureDateString, departureTime) {
|
|
9662
|
+
var minutes = getWaitDurationInMinutes(arrivalDateString, arrivalTime, departureDateString, departureTime);
|
|
9663
|
+
var hh = Math.floor(minutes / 60);
|
|
9664
|
+
var mm = Math.floor(minutes % 60);
|
|
9665
|
+
return pad(hh, 2) + ":" + pad(mm, 2);
|
|
9666
|
+
};
|
|
9667
|
+
var getWaitDurationInMinutes = function (arrivalDateString, arrivalTime, departureDateString, departureTime) {
|
|
9668
|
+
var arrivalDate = dateFns.parseISO(arrivalDateString);
|
|
9669
|
+
var arrivalTimeParts = arrivalTime.split(':');
|
|
9670
|
+
arrivalDate.setHours(parseInt(arrivalTimeParts[0]));
|
|
9671
|
+
arrivalDate.setMinutes(parseInt(arrivalTimeParts[1]));
|
|
9672
|
+
var departureDate = dateFns.parseISO(departureDateString);
|
|
9673
|
+
var departureTimeParts = departureTime.split(':');
|
|
9674
|
+
departureDate.setHours(parseInt(departureTimeParts[0]));
|
|
9675
|
+
departureDate.setMinutes(parseInt(departureTimeParts[1]));
|
|
9676
|
+
return dateFns.differenceInMinutes(departureDate, arrivalDate);
|
|
9677
|
+
};
|
|
9678
|
+
/*const groupFlights = (flights: BookingPackageFlight[]) => {
|
|
9679
|
+
let flightsPool = [...flights];
|
|
9680
|
+
let groups = [] as FlightGroup[];
|
|
9681
|
+
for (var i = 0; i < flightsPool.length; i++) {
|
|
9682
|
+
const flight = flightsPool[i];
|
|
9683
|
+
|
|
9684
|
+
const relatedFlights = flightsPool.filter(x => x != flight
|
|
9685
|
+
&& x.code === flight.code
|
|
9686
|
+
&& isDateEqual(x.startDateTime, flight.startDateTime)
|
|
9687
|
+
&& isDateEqual(x.endDateTime, flight.endDateTime)
|
|
9688
|
+
);
|
|
9689
|
+
|
|
9690
|
+
flightsPool = flightsPool.filter(x => x != flight
|
|
9691
|
+
&& relatedFlights.some(y => y != x));
|
|
9692
|
+
|
|
9693
|
+
groups.push({
|
|
9694
|
+
code: flight.code,
|
|
9695
|
+
startDate: parseISO(flight.startDateTime),
|
|
9696
|
+
endDate: parseISO(flight.endDateTime),
|
|
9697
|
+
options: [flight, ...relatedFlights]
|
|
9698
|
+
});
|
|
9699
|
+
}
|
|
9700
|
+
}
|
|
9701
|
+
|
|
9702
|
+
const isDateEqual = (first: string, second: string) => {
|
|
9703
|
+
const firstDate = parseISO(first);
|
|
9704
|
+
const secondDate = parseISO(second);
|
|
9705
|
+
|
|
9706
|
+
return isEqual(firstDate, secondDate);
|
|
9707
|
+
}*/
|
|
9708
|
+
var minutesFromTicks = function (ticks) {
|
|
9709
|
+
var totalSeconds = ticks / 10000000;
|
|
9710
|
+
return Math.floor(totalSeconds / 60);
|
|
9711
|
+
};
|
|
9712
|
+
var formatDuration = function (ticks) {
|
|
9713
|
+
if (!ticks)
|
|
9714
|
+
return '';
|
|
9715
|
+
var totalSeconds = ticks / 10000000;
|
|
9716
|
+
var hh = Math.floor(totalSeconds / 3600);
|
|
9717
|
+
var mm = Math.floor((totalSeconds % 3600) / 60);
|
|
9718
|
+
return pad(hh, 2) + ":" + pad(mm, 2);
|
|
9719
|
+
};
|
|
9720
|
+
var pad = function (input, width) {
|
|
9721
|
+
var n = input + '';
|
|
9722
|
+
return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
|
|
9723
|
+
};
|
|
9724
|
+
var determineTimeBracket = function (input) {
|
|
9725
|
+
var time = parseInt(input.replace(':', ''));
|
|
9726
|
+
if (time <= 500)
|
|
9727
|
+
return '0000-0500';
|
|
9728
|
+
if (time > 500 && time <= 1200)
|
|
9729
|
+
return '0500-1200';
|
|
9730
|
+
if (time > 1200 && time <= 1800)
|
|
9731
|
+
return '1201-1800';
|
|
9732
|
+
return '1800-2400';
|
|
9733
|
+
};
|
|
9734
|
+
var getBracketTranslation = function (input, translations) {
|
|
9735
|
+
if (input === '0000-0500')
|
|
9736
|
+
return translations.FLIGHTS_FORM.NIGHT_DEPARTURE;
|
|
9737
|
+
if (input === '0500-1200')
|
|
9738
|
+
return translations.FLIGHTS_FORM.MORNING_DEPARTURE;
|
|
9739
|
+
if (input === '1200-1800')
|
|
9740
|
+
return translations.FLIGHTS_FORM.AFTERNOON_DEPARTURE;
|
|
9741
|
+
return translations.FLIGHTS_FORM.EVENING_DEPARTURE;
|
|
9742
|
+
};
|
|
9743
|
+
var getTotalChangeDuration = function (flight) {
|
|
9744
|
+
var lines = flight.flightMetaData.flightLines;
|
|
9745
|
+
if (lines.length <= 1)
|
|
9746
|
+
return 0;
|
|
9747
|
+
var arrivalDate = lines[0].arrivalDate;
|
|
9748
|
+
var arrivalTime = lines[0].arrivalTime;
|
|
9749
|
+
var waitDuration = 0;
|
|
9750
|
+
for (var i = 1; i < lines.length; i++) {
|
|
9751
|
+
var line = lines[i];
|
|
9752
|
+
waitDuration += getWaitDurationInMinutes(arrivalDate, arrivalTime, line.departureDate, line.departureTime);
|
|
9753
|
+
}
|
|
9754
|
+
return waitDuration;
|
|
9445
9755
|
};
|
|
9446
9756
|
|
|
9447
|
-
var
|
|
9448
|
-
var
|
|
9757
|
+
var FlightFilter = function (_a) {
|
|
9758
|
+
var filterOptions = _a.filterOptions, resultCount = _a.resultCount, applyFilter = _a.applyFilter;
|
|
9449
9759
|
var translations = reactRedux.useSelector(selectTranslations);
|
|
9450
|
-
var
|
|
9451
|
-
var
|
|
9452
|
-
|
|
9453
|
-
|
|
9454
|
-
|
|
9455
|
-
|
|
9456
|
-
|
|
9457
|
-
|
|
9458
|
-
|
|
9459
|
-
|
|
9460
|
-
|
|
9461
|
-
|
|
9462
|
-
|
|
9463
|
-
|
|
9464
|
-
|
|
9465
|
-
|
|
9466
|
-
|
|
9467
|
-
|
|
9468
|
-
|
|
9469
|
-
|
|
9470
|
-
|
|
9760
|
+
var _b = React.useState(false), filtersVisible = _b[0], setFiltersVisible = _b[1];
|
|
9761
|
+
var updateAirportFilter = function (code) {
|
|
9762
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { airports: filterOptions.airports.map(function (x) {
|
|
9763
|
+
if (x.value !== code)
|
|
9764
|
+
return x;
|
|
9765
|
+
return __assign(__assign({}, x), { isSelected: !x.isSelected });
|
|
9766
|
+
}) });
|
|
9767
|
+
applyFilter(updatedFilterOptions);
|
|
9768
|
+
};
|
|
9769
|
+
var updateAirlineFilter = function (code) {
|
|
9770
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { airlines: filterOptions.airlines.map(function (x) {
|
|
9771
|
+
if (x.value !== code)
|
|
9772
|
+
return x;
|
|
9773
|
+
return __assign(__assign({}, x), { isSelected: !x.isSelected });
|
|
9774
|
+
}) });
|
|
9775
|
+
applyFilter(updatedFilterOptions);
|
|
9776
|
+
};
|
|
9777
|
+
var updateStopsFilter = function (count) {
|
|
9778
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { numberOfStops: filterOptions.airlines.map(function (x) {
|
|
9779
|
+
if (x.value !== count)
|
|
9780
|
+
return x;
|
|
9781
|
+
return __assign(__assign({}, x), { isSelected: !x.isSelected });
|
|
9782
|
+
}) });
|
|
9783
|
+
applyFilter(updatedFilterOptions);
|
|
9784
|
+
};
|
|
9785
|
+
var updateOutwardDeparture = function (period) {
|
|
9786
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { outward: __assign(__assign({}, filterOptions.outward), { departurePeriod: filterOptions.outward.departurePeriod.map(function (x) {
|
|
9787
|
+
if (x.value !== period)
|
|
9788
|
+
return x;
|
|
9789
|
+
return __assign(__assign({}, x), { isSelected: !x.isSelected });
|
|
9790
|
+
}) }) });
|
|
9791
|
+
applyFilter(updatedFilterOptions);
|
|
9792
|
+
};
|
|
9793
|
+
var updateOutwardTravelDuration = function (min, max) {
|
|
9794
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { outward: __assign(__assign({}, filterOptions.outward), { travelDuration: __assign(__assign({}, filterOptions.outward.travelDuration), { selectedMin: min, selectedMax: max }) }) });
|
|
9795
|
+
applyFilter(updatedFilterOptions);
|
|
9796
|
+
};
|
|
9797
|
+
var updateOutwardChangeDuration = function (min, max) {
|
|
9798
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { outward: __assign(__assign({}, filterOptions.outward), { changeDuration: __assign(__assign({}, filterOptions.outward.changeDuration), { selectedMin: min, selectedMax: max }) }) });
|
|
9799
|
+
applyFilter(updatedFilterOptions);
|
|
9800
|
+
};
|
|
9801
|
+
var updateReturnDeparture = function (period) {
|
|
9802
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { return: __assign(__assign({}, filterOptions.return), { departurePeriod: filterOptions.return.departurePeriod.map(function (x) {
|
|
9803
|
+
if (x.value !== period)
|
|
9804
|
+
return x;
|
|
9805
|
+
return __assign(__assign({}, x), { isSelected: !x.isSelected });
|
|
9806
|
+
}) }) });
|
|
9807
|
+
applyFilter(updatedFilterOptions);
|
|
9808
|
+
};
|
|
9809
|
+
var updateReturnTravelDuration = function (min, max) {
|
|
9810
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { return: __assign(__assign({}, filterOptions.return), { travelDuration: __assign(__assign({}, filterOptions.return.travelDuration), { selectedMin: min, selectedMax: max }) }) });
|
|
9811
|
+
applyFilter(updatedFilterOptions);
|
|
9812
|
+
};
|
|
9813
|
+
var updateReturnChangeDuration = function (min, max) {
|
|
9814
|
+
var updatedFilterOptions = __assign(__assign({}, filterOptions), { return: __assign(__assign({}, filterOptions.return), { changeDuration: __assign(__assign({}, filterOptions.return.changeDuration), { selectedMin: min, selectedMax: max }) }) });
|
|
9815
|
+
applyFilter(updatedFilterOptions);
|
|
9816
|
+
};
|
|
9817
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
9818
|
+
React__default["default"].createElement("button", { type: "button", className: "cta cta--filter", onClick: function () { return setFiltersVisible(!filtersVisible); } },
|
|
9819
|
+
React__default["default"].createElement("svg", { width: 11, height: 10 },
|
|
9820
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#filter" })),
|
|
9821
|
+
React__default["default"].createElement("span", null, translations.FLIGHTS_FORM.FILTER_OPTIONS),
|
|
9822
|
+
filtersVisible),
|
|
9823
|
+
React__default["default"].createElement("div", { className: buildClassName(["flight__filter", filtersVisible && "flight__filter--active"]) },
|
|
9824
|
+
React__default["default"].createElement("div", { className: "flight__filter__header" },
|
|
9825
|
+
React__default["default"].createElement("div", { className: "flight__filter__header__title" },
|
|
9826
|
+
React__default["default"].createElement("h3", null, translations.FLIGHTS_FORM.FILTER_OPTIONS),
|
|
9827
|
+
React__default["default"].createElement("p", null,
|
|
9828
|
+
"er zijn ",
|
|
9829
|
+
React__default["default"].createElement("strong", null,
|
|
9830
|
+
resultCount,
|
|
9831
|
+
" vluchten"),
|
|
9832
|
+
" gevonden"))),
|
|
9833
|
+
React__default["default"].createElement("div", { className: "flight__filter__body" },
|
|
9834
|
+
React__default["default"].createElement("div", { className: "flight__filter__group" },
|
|
9835
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__title" }, translations.FLIGHTS_FORM.AIRLINES),
|
|
9836
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" }, filterOptions.airlines.map(function (option, k) { return (React__default["default"].createElement("div", { className: "tree", key: k },
|
|
9837
|
+
React__default["default"].createElement("div", { className: "checkbox flight__filter__checkbox" },
|
|
9838
|
+
React__default["default"].createElement("label", { htmlFor: 'airline_' + option.value, className: "checkbox__label" },
|
|
9839
|
+
React__default["default"].createElement("input", { type: "checkbox", id: 'airline_' + option.value, className: "checkbox__input checkbox__input--parent", onClick: function () { return updateAirlineFilter(option.value); } }),
|
|
9840
|
+
React__default["default"].createElement("span", { className: "radiobutton__label-text" },
|
|
9841
|
+
option.label,
|
|
9842
|
+
" ",
|
|
9843
|
+
option.count > 0 && (React__default["default"].createElement("span", { className: "amount" },
|
|
9844
|
+
"(",
|
|
9845
|
+
option.count,
|
|
9846
|
+
")"))))))); }))),
|
|
9847
|
+
React__default["default"].createElement("div", { className: "flight__filter__group" },
|
|
9848
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__title" }, translations.FLIGHTS_FORM.AIRPORTS),
|
|
9849
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" }, filterOptions.airports.map(function (option, k) { return (React__default["default"].createElement("div", { className: "tree", key: k },
|
|
9850
|
+
React__default["default"].createElement("div", { className: "checkbox flight__filter__checkbox" },
|
|
9851
|
+
React__default["default"].createElement("label", { htmlFor: 'airport_' + option.value, className: "checkbox__label" },
|
|
9852
|
+
React__default["default"].createElement("input", { type: "checkbox", id: 'airport_' + option.value, className: "checkbox__input checkbox__input--parent", onClick: function () { return updateAirportFilter(option.value); } }),
|
|
9853
|
+
React__default["default"].createElement("span", { className: "radiobutton__label-text" },
|
|
9854
|
+
option.label,
|
|
9855
|
+
" ",
|
|
9856
|
+
option.count > 0 && (React__default["default"].createElement("span", { className: "amount" },
|
|
9857
|
+
"(",
|
|
9858
|
+
option.count,
|
|
9859
|
+
")"))))))); }))),
|
|
9860
|
+
React__default["default"].createElement("div", { className: "flight__filter__group" },
|
|
9861
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__title" }, translations.FLIGHTS_FORM.NUMBER_OF_STOPS),
|
|
9862
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" }, filterOptions.numberOfStops.map(function (option, k) { return (React__default["default"].createElement("div", { className: "tree", key: k },
|
|
9863
|
+
React__default["default"].createElement("div", { className: "checkbox flight__filter__checkbox" },
|
|
9864
|
+
React__default["default"].createElement("label", { htmlFor: 'stops_' + option.value, className: "checkbox__label" },
|
|
9865
|
+
React__default["default"].createElement("input", { type: "checkbox", id: 'stops_' + option.value, className: "checkbox__input checkbox__input--parent", onClick: function () { return updateStopsFilter(option.value); } }),
|
|
9866
|
+
React__default["default"].createElement("span", { className: "radiobutton__label-text" },
|
|
9867
|
+
option.label,
|
|
9868
|
+
" ",
|
|
9869
|
+
option.count > 0 && (React__default["default"].createElement("span", { className: "amount" },
|
|
9870
|
+
"(",
|
|
9871
|
+
option.count,
|
|
9872
|
+
")"))))))); }))),
|
|
9873
|
+
React__default["default"].createElement("div", { className: "flight__filter__group" },
|
|
9874
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__title" }, translations.FLIGHTS_FORM.FLIGHT_OUTWARD),
|
|
9875
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" },
|
|
9876
|
+
React__default["default"].createElement("p", null, translations.FLIGHTS_FORM.DEPARTURE_TIME),
|
|
9877
|
+
filterOptions.outward.departurePeriod.map(function (option, k) { return (React__default["default"].createElement("div", { className: "tree", key: k },
|
|
9878
|
+
React__default["default"].createElement("div", { className: "checkbox flight__filter__checkbox" },
|
|
9879
|
+
React__default["default"].createElement("label", { htmlFor: 'outward_time_' + option.value, className: "checkbox__label" },
|
|
9880
|
+
React__default["default"].createElement("input", { type: "checkbox", id: 'outward_time_' + option.value, className: "checkbox__input checkbox__input--parent", onClick: function () { return updateOutwardDeparture(option.value); } }),
|
|
9471
9881
|
React__default["default"].createElement("span", { className: "radiobutton__label-text" },
|
|
9472
|
-
|
|
9473
|
-
|
|
9474
|
-
|
|
9475
|
-
|
|
9476
|
-
|
|
9477
|
-
|
|
9478
|
-
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9483
|
-
|
|
9484
|
-
|
|
9485
|
-
|
|
9486
|
-
|
|
9487
|
-
|
|
9488
|
-
|
|
9489
|
-
|
|
9490
|
-
|
|
9491
|
-
|
|
9492
|
-
|
|
9882
|
+
option.label,
|
|
9883
|
+
" ",
|
|
9884
|
+
option.count > 0 && (React__default["default"].createElement("span", { className: "amount" },
|
|
9885
|
+
"(",
|
|
9886
|
+
option.count,
|
|
9887
|
+
")"))))))); })),
|
|
9888
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" },
|
|
9889
|
+
React__default["default"].createElement("p", null, translations.FLIGHTS_FORM.TRAVEL_DURATION),
|
|
9890
|
+
React__default["default"].createElement(MultiRangeFilter, { min: filterOptions.outward.travelDuration.min, max: filterOptions.outward.travelDuration.max, selectedMin: filterOptions.outward.travelDuration.selectedMin, selectedMax: filterOptions.outward.travelDuration.selectedMax, valueFormatter: formatMinutes, onChange: updateOutwardTravelDuration })),
|
|
9891
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" },
|
|
9892
|
+
React__default["default"].createElement("p", null, translations.FLIGHTS_FORM.CHANGE_TIME),
|
|
9893
|
+
React__default["default"].createElement(MultiRangeFilter, { min: filterOptions.outward.changeDuration.min, max: filterOptions.outward.changeDuration.max, selectedMin: filterOptions.outward.changeDuration.selectedMin, selectedMax: filterOptions.outward.changeDuration.selectedMax, valueFormatter: formatMinutes, onChange: updateOutwardChangeDuration }))),
|
|
9894
|
+
React__default["default"].createElement("div", { className: "flight__filter__group" },
|
|
9895
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__title" }, translations.FLIGHTS_FORM.FLIGHT_RETURN),
|
|
9896
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" },
|
|
9897
|
+
React__default["default"].createElement("p", null, translations.FLIGHTS_FORM.DEPARTURE_TIME),
|
|
9898
|
+
filterOptions.return.departurePeriod.map(function (option, k) { return (React__default["default"].createElement("div", { className: "tree", key: k },
|
|
9899
|
+
React__default["default"].createElement("div", { className: "checkbox flight__filter__checkbox" },
|
|
9900
|
+
React__default["default"].createElement("label", { htmlFor: 'return_time_' + option.value, className: "checkbox__label" },
|
|
9901
|
+
React__default["default"].createElement("input", { type: "checkbox", id: 'return_time_' + option.value, className: "checkbox__input checkbox__input--parent", onClick: function () { return updateReturnDeparture(option.value); } }),
|
|
9902
|
+
React__default["default"].createElement("span", { className: "radiobutton__label-text" },
|
|
9903
|
+
option.label,
|
|
9904
|
+
" ",
|
|
9905
|
+
option.count > 0 && (React__default["default"].createElement("span", { className: "amount" },
|
|
9906
|
+
"(",
|
|
9907
|
+
option.count,
|
|
9908
|
+
")"))))))); })),
|
|
9909
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" },
|
|
9910
|
+
React__default["default"].createElement("p", null, translations.FLIGHTS_FORM.TRAVEL_DURATION),
|
|
9911
|
+
React__default["default"].createElement(MultiRangeFilter, { min: filterOptions.return.travelDuration.min, max: filterOptions.return.travelDuration.max, selectedMin: filterOptions.return.travelDuration.selectedMin, selectedMax: filterOptions.return.travelDuration.selectedMax, valueFormatter: formatMinutes, onChange: updateReturnTravelDuration })),
|
|
9912
|
+
React__default["default"].createElement("div", { className: "flight__filter__group__wrapper" },
|
|
9913
|
+
React__default["default"].createElement("p", null, translations.FLIGHTS_FORM.CHANGE_TIME),
|
|
9914
|
+
React__default["default"].createElement(MultiRangeFilter, { min: filterOptions.return.changeDuration.min, max: filterOptions.return.changeDuration.max, selectedMin: filterOptions.return.changeDuration.selectedMin, selectedMax: filterOptions.return.changeDuration.selectedMax, valueFormatter: formatMinutes, onChange: updateReturnChangeDuration })))))));
|
|
9493
9915
|
};
|
|
9494
9916
|
|
|
9495
9917
|
var getTravelersText = function (rooms) {
|
|
@@ -9575,7 +9997,7 @@ var parseFlightLines = function (metaDatas) {
|
|
|
9575
9997
|
var parseFlightLineDateTime = function (date, time) {
|
|
9576
9998
|
try {
|
|
9577
9999
|
// Parse date
|
|
9578
|
-
var parsedDate =
|
|
10000
|
+
var parsedDate = dateFns.parseISO(date);
|
|
9579
10001
|
// Parse time
|
|
9580
10002
|
var parsedTimeHours = parseInt(time.substring(0, 2));
|
|
9581
10003
|
var parsedTimeMinutes = parseInt(time.substring(3, 5));
|
|
@@ -9590,6 +10012,521 @@ var parseFlightLineDateTime = function (date, time) {
|
|
|
9590
10012
|
}
|
|
9591
10013
|
};
|
|
9592
10014
|
|
|
10015
|
+
var FlightOptionFlight = function (_a) {
|
|
10016
|
+
var details = _a.details, isOptionsVisible = _a.isOptionsVisible;
|
|
10017
|
+
var translations = reactRedux.useSelector(selectTranslations);
|
|
10018
|
+
var _b = React.useState(false), isDetailVisible = _b[0], setIsDetailVisible = _b[1];
|
|
10019
|
+
return (React__default["default"].createElement("div", { className: "flight__flight" },
|
|
10020
|
+
React__default["default"].createElement("div", { className: "flight__flight__container" },
|
|
10021
|
+
React__default["default"].createElement("div", { className: "flight__flight__wrapper" },
|
|
10022
|
+
React__default["default"].createElement("div", { className: "flight__logo__wrapper" },
|
|
10023
|
+
React__default["default"].createElement("img", { src: "https://media.tidesoftware.be/media/shared/Airlines/".concat(details.airlineCode, ".png?height=30"), alt: "", className: "flight__logo" }),
|
|
10024
|
+
React__default["default"].createElement("span", null, details.airline)),
|
|
10025
|
+
React__default["default"].createElement("div", { className: "flight__info" },
|
|
10026
|
+
React__default["default"].createElement("div", { className: "flight__info__times" },
|
|
10027
|
+
React__default["default"].createElement("strong", null,
|
|
10028
|
+
details.departureTime,
|
|
10029
|
+
" ",
|
|
10030
|
+
details.departureAirport),
|
|
10031
|
+
React__default["default"].createElement("p", null, getDateText(details.departureDate))),
|
|
10032
|
+
React__default["default"].createElement("div", { className: "flight__info__duration" },
|
|
10033
|
+
React__default["default"].createElement("p", null, details.travelDuration),
|
|
10034
|
+
React__default["default"].createElement("div", { className: "flight__info__duration__stops" },
|
|
10035
|
+
React__default["default"].createElement("div", { className: "flight__info__duration__stop" })),
|
|
10036
|
+
details.numberOfStops > 0 && (React__default["default"].createElement("span", null,
|
|
10037
|
+
details.numberOfStops,
|
|
10038
|
+
" ",
|
|
10039
|
+
translations.FLIGHTS_FORM.FLIGHT_STOPS))),
|
|
10040
|
+
React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
|
|
10041
|
+
React__default["default"].createElement("strong", null,
|
|
10042
|
+
details.arrivalTime,
|
|
10043
|
+
" ",
|
|
10044
|
+
details.arrivalAirport),
|
|
10045
|
+
React__default["default"].createElement("p", null, getDateText(details.arrivalDate)),
|
|
10046
|
+
details.isNextDay && (React__default["default"].createElement("span", { className: "flight__info__times__days" }, translations.FLIGHTS_FORM.PLUS_ONE_DAY))))),
|
|
10047
|
+
React__default["default"].createElement("div", { className: "flight__detail__btn__wrapper" },
|
|
10048
|
+
React__default["default"].createElement("div", { className: buildClassName(["flight__detail__btn", isDetailVisible && "flight__detail__btn--active"]), onClick: function () { return setIsDetailVisible(!isDetailVisible); } },
|
|
10049
|
+
React__default["default"].createElement("svg", { width: 16, height: 16, className: "flight__detail__btn__arrow" },
|
|
10050
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#chevron" }))))),
|
|
10051
|
+
React__default["default"].createElement("div", { className: buildClassName(["flight__detail", isDetailVisible && "flight__detail--active"]) }, details.flightLines.map(function (flightLine, flightLineIndex) { return (React__default["default"].createElement(React__default["default"].Fragment, { key: flightLineIndex },
|
|
10052
|
+
React__default["default"].createElement("div", { className: "flight__info" },
|
|
10053
|
+
React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
|
|
10054
|
+
React__default["default"].createElement("div", { className: "flight__info__times" },
|
|
10055
|
+
React__default["default"].createElement("strong", null,
|
|
10056
|
+
flightLine.departureTime,
|
|
10057
|
+
" ",
|
|
10058
|
+
flightLine.departureAirport),
|
|
10059
|
+
React__default["default"].createElement("p", null, getDateText(flightLine.departureDate))),
|
|
10060
|
+
React__default["default"].createElement("div", null,
|
|
10061
|
+
React__default["default"].createElement("svg", { width: 30, height: 20 },
|
|
10062
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#plane-depart" })))),
|
|
10063
|
+
React__default["default"].createElement("div", { className: "flight__info__duration" },
|
|
10064
|
+
React__default["default"].createElement("p", null, flightLine.travelDuration),
|
|
10065
|
+
React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
|
|
10066
|
+
React__default["default"].createElement("span", null, flightLine.airline),
|
|
10067
|
+
React__default["default"].createElement("strong", null, flightLine.number)),
|
|
10068
|
+
React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
|
|
10069
|
+
React__default["default"].createElement("div", null,
|
|
10070
|
+
React__default["default"].createElement("svg", { width: 35, height: 25 },
|
|
10071
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#plane-arive" }))),
|
|
10072
|
+
React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
|
|
10073
|
+
React__default["default"].createElement("strong", null,
|
|
10074
|
+
flightLine.arrivalTime,
|
|
10075
|
+
" ",
|
|
10076
|
+
flightLine.arrivalAirport),
|
|
10077
|
+
React__default["default"].createElement("p", null, getDateText(flightLine.arrivalDate))))),
|
|
10078
|
+
flightLine.waitDuration && (React__default["default"].createElement("div", { className: "flight__info" },
|
|
10079
|
+
React__default["default"].createElement("div", { className: "flight__info__times" }),
|
|
10080
|
+
React__default["default"].createElement("div", { className: "flight__info__duration flight__info__duration--waittime" },
|
|
10081
|
+
React__default["default"].createElement("div", { className: "flight__info__duration__stops flight__info__duration__stops--stoptime" },
|
|
10082
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10083
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#clock" }))),
|
|
10084
|
+
React__default["default"].createElement("div", { className: "flight__info__duration__stoptime" },
|
|
10085
|
+
React__default["default"].createElement("span", null, translations.FLIGHTS_FORM.STOP_TIME),
|
|
10086
|
+
React__default["default"].createElement("strong", null, flightLine.waitDuration))),
|
|
10087
|
+
React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" }))))); })),
|
|
10088
|
+
React__default["default"].createElement("div", { className: buildClassName(["flight__rate", isOptionsVisible && "flight__rate--active"]) })));
|
|
10089
|
+
};
|
|
10090
|
+
|
|
10091
|
+
var FlightOption = function (_a) {
|
|
10092
|
+
var item = _a.item, isSelected = _a.isSelected, currentPrice = _a.currentPrice, onChange = _a.onChange;
|
|
10093
|
+
var translations = reactRedux.useSelector(selectTranslations);
|
|
10094
|
+
var ownTotalPrice = item.selectedOutward.price + item.selectedReturn.price;
|
|
10095
|
+
var priceDifference = item.isSelected
|
|
10096
|
+
? 0
|
|
10097
|
+
: ownTotalPrice - currentPrice;
|
|
10098
|
+
var outwardVisible = React.useState(false)[0];
|
|
10099
|
+
var returnVisible = React.useState(false)[0];
|
|
10100
|
+
var handleButtonClick = function () {
|
|
10101
|
+
if (!item.isSelected)
|
|
10102
|
+
onChange(item);
|
|
10103
|
+
};
|
|
10104
|
+
return (React__default["default"].createElement("div", { className: "flight__option" },
|
|
10105
|
+
React__default["default"].createElement("div", { className: "flight__content" },
|
|
10106
|
+
React__default["default"].createElement("div", { className: "flight__flights" },
|
|
10107
|
+
React__default["default"].createElement("div", { className: "flight__flight" },
|
|
10108
|
+
React__default["default"].createElement("div", { className: "flight__flight__header" },
|
|
10109
|
+
React__default["default"].createElement("div", { className: "flight__status__container" }),
|
|
10110
|
+
React__default["default"].createElement("div", { className: "flight__price" },
|
|
10111
|
+
!isSelected && (React__default["default"].createElement("span", { className: buildClassName(["price",
|
|
10112
|
+
priceDifference > 0 && "price--increase",
|
|
10113
|
+
priceDifference < 0 && "price--decrease"
|
|
10114
|
+
]) }, getPriceDifferenceText(priceDifference))),
|
|
10115
|
+
React__default["default"].createElement("button", { type: "button", className: "cta ".concat(isSelected ? 'cta--selected' : 'cta--secondary'), onClick: handleButtonClick }, isSelected ? translations.SHARED.SELECTED : translations.SHARED.SELECT)))),
|
|
10116
|
+
React__default["default"].createElement(FlightOptionFlight, { details: item.outward, isOptionsVisible: outwardVisible }),
|
|
10117
|
+
React__default["default"].createElement(FlightOptionFlight, { details: item.return, isOptionsVisible: returnVisible })))));
|
|
10118
|
+
};
|
|
10119
|
+
|
|
10120
|
+
var FlightOptionModal = function (_a) {
|
|
10121
|
+
return (React__default["default"].createElement("div", { className: "flight__rate__modal__container" },
|
|
10122
|
+
" ",
|
|
10123
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal" },
|
|
10124
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__header" },
|
|
10125
|
+
React__default["default"].createElement("h3", { className: "flight__rate__modal__header__title" }, "Selecteer een tarief"),
|
|
10126
|
+
React__default["default"].createElement("button", { className: "flight__rate__modal__header__close" },
|
|
10127
|
+
React__default["default"].createElement("svg", { width: 18, height: 18 },
|
|
10128
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#close" })))),
|
|
10129
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__tabs" },
|
|
10130
|
+
React__default["default"].createElement("button", { className: "flight__rate__modal__tab flight__rate__modal__tab--active" }, "Economy / Economy premium"),
|
|
10131
|
+
React__default["default"].createElement("button", { className: "flight__rate__modal__tab" }, "Business / Business premium")),
|
|
10132
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__content" },
|
|
10133
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card" },
|
|
10134
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__wrapper" },
|
|
10135
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__header" },
|
|
10136
|
+
React__default["default"].createElement("h3", { className: "flight__rate__modal__card__header__title" }, "Economy Basic"),
|
|
10137
|
+
React__default["default"].createElement("p", { className: "flight__rate__modal__card__header__class" }, "Klasse: Economy")),
|
|
10138
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__items flight__rate__modal__card__items--top" },
|
|
10139
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item flight__rate__modal__card__item--disabled" },
|
|
10140
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10141
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#ticket" })),
|
|
10142
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10143
|
+
React__default["default"].createElement("strong", null, "Wijzigingen in het ticket"),
|
|
10144
|
+
React__default["default"].createElement("p", null, "Wijzigingen toestaan"))),
|
|
10145
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item flight__rate__modal__card__item--disabled" },
|
|
10146
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10147
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#payback" })),
|
|
10148
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10149
|
+
React__default["default"].createElement("strong", null, "Terugbetaling van ticket"),
|
|
10150
|
+
React__default["default"].createElement("p", null, "Ticket retourneerbaar")))),
|
|
10151
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__items" },
|
|
10152
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10153
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10154
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#shopping-bag" })),
|
|
10155
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10156
|
+
React__default["default"].createElement("strong", null, "persoonlijke items"),
|
|
10157
|
+
React__default["default"].createElement("p", null, "Gratis"))),
|
|
10158
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10159
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10160
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#backpack" })),
|
|
10161
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10162
|
+
React__default["default"].createElement("strong", null, "Handbagage"),
|
|
10163
|
+
React__default["default"].createElement("p", null, "Gratis: 2 x 8kg"))),
|
|
10164
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10165
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10166
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#suitcase" })),
|
|
10167
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10168
|
+
React__default["default"].createElement("strong", null, "Ingecheckte bagage"),
|
|
10169
|
+
React__default["default"].createElement("p", null, "Gratis: 2 x 32kg"))))),
|
|
10170
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__footer" },
|
|
10171
|
+
React__default["default"].createElement("button", { className: "cta cta--secondary" }, "Selecteer"),
|
|
10172
|
+
React__default["default"].createElement("span", { className: "price price--increase" }, "+ \u20AC2460,00"))),
|
|
10173
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card flight__rate__modal__card--premium" },
|
|
10174
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__wrapper" },
|
|
10175
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__header" },
|
|
10176
|
+
React__default["default"].createElement("h3", { className: "flight__rate__modal__card__header__title" }, "Premium Economy Basic Plus"),
|
|
10177
|
+
React__default["default"].createElement("p", { className: "flight__rate__modal__card__header__class" }, "Klasse: Economy")),
|
|
10178
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__items flight__rate__modal__card__items--top" },
|
|
10179
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10180
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10181
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#ticket" })),
|
|
10182
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10183
|
+
React__default["default"].createElement("strong", null, "Wijzigingen in het ticket"),
|
|
10184
|
+
React__default["default"].createElement("p", null, "Wijzigingen toestaan"))),
|
|
10185
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10186
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10187
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#payback" })),
|
|
10188
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10189
|
+
React__default["default"].createElement("strong", null, "Terugbetaling van ticket"),
|
|
10190
|
+
React__default["default"].createElement("p", null, "Ticket retourneerbaar")))),
|
|
10191
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__items" },
|
|
10192
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10193
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10194
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#shopping-bag" })),
|
|
10195
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10196
|
+
React__default["default"].createElement("strong", null, "persoonlijke items"),
|
|
10197
|
+
React__default["default"].createElement("p", null, "Gratis"))),
|
|
10198
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10199
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10200
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#backpack" })),
|
|
10201
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10202
|
+
React__default["default"].createElement("strong", null, "Handbagage"),
|
|
10203
|
+
React__default["default"].createElement("p", null, "Gratis: 2 x 8kg"))),
|
|
10204
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10205
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10206
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#suitcase" })),
|
|
10207
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10208
|
+
React__default["default"].createElement("strong", null, "Ingecheckte bagage"),
|
|
10209
|
+
React__default["default"].createElement("p", null, "Gratis: 2 x 32kg"))))),
|
|
10210
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__footer" },
|
|
10211
|
+
React__default["default"].createElement("button", { className: "cta cta--secondary" }, "Selecteer"),
|
|
10212
|
+
React__default["default"].createElement("span", { className: "price price--increase" }, "+ \u20AC2460,00"))),
|
|
10213
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card flight__rate__modal__card--business" },
|
|
10214
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__wrapper" },
|
|
10215
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__header" },
|
|
10216
|
+
React__default["default"].createElement("h3", { className: "flight__rate__modal__card__header__title" }, "Business Basic Plus"),
|
|
10217
|
+
React__default["default"].createElement("p", { className: "flight__rate__modal__card__header__class" }, "Klasse: Economy")),
|
|
10218
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__items flight__rate__modal__card__items--top" },
|
|
10219
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10220
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10221
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#ticket" })),
|
|
10222
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10223
|
+
React__default["default"].createElement("strong", null, "Wijzigingen in het ticket"),
|
|
10224
|
+
React__default["default"].createElement("p", null, "Wijzigingen toestaan"))),
|
|
10225
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item flight__rate__modal__card__item--disabled" },
|
|
10226
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10227
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#payback" })),
|
|
10228
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10229
|
+
React__default["default"].createElement("strong", null, "Terugbetaling van ticket"),
|
|
10230
|
+
React__default["default"].createElement("p", null, "Ticket retourneerbaar")))),
|
|
10231
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__items" },
|
|
10232
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10233
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10234
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#shopping-bag" })),
|
|
10235
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10236
|
+
React__default["default"].createElement("strong", null, "persoonlijke items"),
|
|
10237
|
+
React__default["default"].createElement("p", null, "Gratis"))),
|
|
10238
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10239
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10240
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#backpack" })),
|
|
10241
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10242
|
+
React__default["default"].createElement("strong", null, "Handbagage"),
|
|
10243
|
+
React__default["default"].createElement("p", null, "Gratis: 2 x 8kg"))),
|
|
10244
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10245
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10246
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#suitcase" })),
|
|
10247
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10248
|
+
React__default["default"].createElement("strong", null, "Ingecheckte bagage"),
|
|
10249
|
+
React__default["default"].createElement("p", null, "Gratis: 2 x 32kg"))),
|
|
10250
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10251
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10252
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#seat-selection" })),
|
|
10253
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10254
|
+
React__default["default"].createElement("strong", null, "Stoelselectie"),
|
|
10255
|
+
React__default["default"].createElement("p", null, "kies uw stoel in het vliegtijg"))),
|
|
10256
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10257
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10258
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#check-in" })),
|
|
10259
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10260
|
+
React__default["default"].createElement("strong", null, "Sneller inchecken"),
|
|
10261
|
+
React__default["default"].createElement("p", null, "Sla de wachtrijen voor de veiligheidscontrole over"))),
|
|
10262
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10263
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10264
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#business-lounge" })),
|
|
10265
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10266
|
+
React__default["default"].createElement("strong", null, "Zakenlunge"),
|
|
10267
|
+
React__default["default"].createElement("p", null, "Ontspan voor uw vlucht"))),
|
|
10268
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item" },
|
|
10269
|
+
React__default["default"].createElement("svg", { width: 20, height: 20 },
|
|
10270
|
+
React__default["default"].createElement("use", { href: "/icons/svg-sprite.svg#priority" })),
|
|
10271
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__item__wrapper" },
|
|
10272
|
+
React__default["default"].createElement("strong", null, "Prioriteit"),
|
|
10273
|
+
React__default["default"].createElement("p", null, "Stap voor anderen aan boord"))))),
|
|
10274
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__card__footer" },
|
|
10275
|
+
React__default["default"].createElement("button", { className: "cta cta--secondary" }, "Selecteer"),
|
|
10276
|
+
React__default["default"].createElement("span", { className: "price price--increase" }, "+ \u20AC2460,00")))),
|
|
10277
|
+
React__default["default"].createElement("div", { className: "flight__rate__modal__footer" },
|
|
10278
|
+
React__default["default"].createElement("button", { className: "cta cta--secondary" }, "Toepassen")))));
|
|
10279
|
+
};
|
|
10280
|
+
|
|
10281
|
+
var FlightOptionsForm = function () {
|
|
10282
|
+
var _a, _b, _c, _d;
|
|
10283
|
+
var settings = React.useContext(SettingsContext);
|
|
10284
|
+
var translations = reactRedux.useSelector(selectTranslations);
|
|
10285
|
+
var dispatch = useAppDispatch();
|
|
10286
|
+
var packageDetails = reactRedux.useSelector(selectPackageDetails);
|
|
10287
|
+
var bookingQueryString = reactRedux.useSelector(selectBookingQueryString);
|
|
10288
|
+
var isLoading = reactRedux.useSelector(selectIsFetchingProductOptions);
|
|
10289
|
+
var flights = reactRedux.useSelector(selectPackageFlights);
|
|
10290
|
+
var _e = React.useState(), filterOptions = _e[0], setFilterOptions = _e[1];
|
|
10291
|
+
var _f = React.useState([]), flightGroups = _f[0], setFlightGroups = _f[1];
|
|
10292
|
+
var handleSubmit = function (e) {
|
|
10293
|
+
if (settings.skipRouter) {
|
|
10294
|
+
dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
|
|
10295
|
+
}
|
|
10296
|
+
else {
|
|
10297
|
+
if (settings.roomOptions.isHidden) {
|
|
10298
|
+
router.navigate("".concat(settings.basePath).concat(settings.options.pathSuffix, "?").concat(bookingQueryString));
|
|
10299
|
+
}
|
|
10300
|
+
else {
|
|
10301
|
+
router.navigate("".concat(settings.basePath).concat(settings.roomOptions.pathSuffix, "?").concat(bookingQueryString));
|
|
10302
|
+
}
|
|
10303
|
+
}
|
|
10304
|
+
e.preventDefault();
|
|
10305
|
+
};
|
|
10306
|
+
var currentFlightPrice = (((_b = (_a = flights.outward) === null || _a === void 0 ? void 0 : _a.find(function (x) { return x.isSelected; })) === null || _b === void 0 ? void 0 : _b.price) || 0)
|
|
10307
|
+
+ (((_d = (_c = flights.return) === null || _c === void 0 ? void 0 : _c.find(function (x) { return x.isSelected; })) === null || _d === void 0 ? void 0 : _d.price) || 0);
|
|
10308
|
+
React.useEffect(function () {
|
|
10309
|
+
var _a, _b;
|
|
10310
|
+
if (packageDetails && settings.roomOptions.isHidden) {
|
|
10311
|
+
var params = new URLSearchParams(location.search);
|
|
10312
|
+
var outwardFlight_1 = (_a = params.get("outwardflight")) !== null && _a !== void 0 ? _a : undefined;
|
|
10313
|
+
var returnFlight_1 = (_b = params.get("returnflight")) !== null && _b !== void 0 ? _b : undefined;
|
|
10314
|
+
if (outwardFlight_1 && returnFlight_1) {
|
|
10315
|
+
var desiredOutwardFlight_1 = packageDetails.outwardFlights.find(function (x) { return x.entryLineGuid == outwardFlight_1; });
|
|
10316
|
+
var desiredReturnFlight_1 = packageDetails.returnFlights.find(function (x) { return x.entryLineGuid == returnFlight_1; });
|
|
10317
|
+
if (desiredOutwardFlight_1 && desiredReturnFlight_1) {
|
|
10318
|
+
dispatch(setPackage(__assign(__assign({}, packageDetails), { outwardFlights: packageDetails.outwardFlights.map(function (flight) {
|
|
10319
|
+
return __assign(__assign({}, flight), { isSelected: flight.entryLineGuid == desiredOutwardFlight_1.entryLineGuid
|
|
10320
|
+
? true
|
|
10321
|
+
: false });
|
|
10322
|
+
}), returnFlights: packageDetails.returnFlights.map(function (flight) {
|
|
10323
|
+
return __assign(__assign({}, flight), { isSelected: flight.entryLineGuid == desiredReturnFlight_1.entryLineGuid
|
|
10324
|
+
? true
|
|
10325
|
+
: false });
|
|
10326
|
+
}) })));
|
|
10327
|
+
}
|
|
10328
|
+
}
|
|
10329
|
+
}
|
|
10330
|
+
dispatch(fetchPriceDetails());
|
|
10331
|
+
var filters = buildFilterOptions(flights.outward, flights.return, translations);
|
|
10332
|
+
setFilterOptions(filters);
|
|
10333
|
+
}, []);
|
|
10334
|
+
React.useEffect(function () {
|
|
10335
|
+
var groups = buildGroupedFlights(flights.outward, flights.return);
|
|
10336
|
+
setFlightGroups(groups);
|
|
10337
|
+
}, [flights]);
|
|
10338
|
+
var filteredGroups = filterGroupedFlights(flightGroups, filterOptions);
|
|
10339
|
+
var resultCount = filteredGroups.length;
|
|
10340
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
10341
|
+
React__default["default"].createElement(FlightOptionModal, null),
|
|
10342
|
+
React__default["default"].createElement("form", { className: "form", name: "booking--flights", id: "booking--flights", noValidate: true, onSubmit: handleSubmit },
|
|
10343
|
+
isLoading && settings.loaderComponent,
|
|
10344
|
+
!isLoading && (React__default["default"].createElement("div", { className: "form__group" },
|
|
10345
|
+
React__default["default"].createElement("div", { className: "booking-card" },
|
|
10346
|
+
React__default["default"].createElement("div", { className: "booking-card__body" },
|
|
10347
|
+
filterOptions && (React__default["default"].createElement(FlightFilter, { filterOptions: filterOptions, resultCount: resultCount, applyFilter: setFilterOptions })),
|
|
10348
|
+
React__default["default"].createElement("div", { className: "booking-card__group" },
|
|
10349
|
+
React__default["default"].createElement("div", { className: "flight outward__flights" },
|
|
10350
|
+
lodash.isEmpty(filteredGroups) && (React__default["default"].createElement("p", null, translations.FLIGHTS_FORM.NO_FLIGHTS_FOUND)),
|
|
10351
|
+
!lodash.isEmpty(filteredGroups) && filteredGroups.map(function (flight, index) { return (React__default["default"].createElement(FlightOption, { key: index, item: flight, isSelected: flight.isSelected, currentPrice: currentFlightPrice, onChange: function (item) {
|
|
10352
|
+
dispatch(setFlights(item));
|
|
10353
|
+
dispatch(fetchPriceDetails());
|
|
10354
|
+
} })); }))))))),
|
|
10355
|
+
React__default["default"].createElement("div", { className: "booking__navigator" },
|
|
10356
|
+
React__default["default"].createElement("button", { type: "submit", title: translations.STEPS.NEXT, disabled: isLoading, className: buildClassName(["cta", isLoading && "cta--disabled"]) }, translations.STEPS.NEXT)))));
|
|
10357
|
+
};
|
|
10358
|
+
|
|
10359
|
+
var buildSelectableRooms = function (packageRooms, accommodations, regimes, accommodationViews) {
|
|
10360
|
+
return packageRooms.map(function (x) {
|
|
10361
|
+
var _a, _b;
|
|
10362
|
+
var selectedOption = x.options.find(function (x) { return x.isSelected; });
|
|
10363
|
+
var alternativeOptions = x.options
|
|
10364
|
+
.filter(function (x) { return x.accommodationCode !== selectedOption.accommodationCode && !x.isLocked; })
|
|
10365
|
+
.sort(function (a, b) { return a.price - b.price; });
|
|
10366
|
+
var alternativeAccommodations = [];
|
|
10367
|
+
alternativeOptions.forEach(function (x) {
|
|
10368
|
+
var _a, _b, _c, _d;
|
|
10369
|
+
var alternativeAccommodation = alternativeAccommodations.find(function (y) { return y.code === x.accommodationCode; });
|
|
10370
|
+
if (alternativeAccommodation) {
|
|
10371
|
+
var regime = regimes === null || regimes === void 0 ? void 0 : regimes.find(function (y) { return y.code === x.regimeCode; });
|
|
10372
|
+
alternativeAccommodation.regimes.push({
|
|
10373
|
+
code: x.regimeCode,
|
|
10374
|
+
title: (_a = regime === null || regime === void 0 ? void 0 : regime.title) !== null && _a !== void 0 ? _a : x.regimeName,
|
|
10375
|
+
price: x.price
|
|
10376
|
+
});
|
|
10377
|
+
}
|
|
10378
|
+
else {
|
|
10379
|
+
var accommodation_1 = accommodations === null || accommodations === void 0 ? void 0 : accommodations.find(function (y) { return y.code === x.accommodationCode; });
|
|
10380
|
+
var regime = regimes === null || regimes === void 0 ? void 0 : regimes.find(function (y) { return y.code === x.regimeCode; });
|
|
10381
|
+
alternativeAccommodations.push({
|
|
10382
|
+
code: x.accommodationCode,
|
|
10383
|
+
regimeCode: x.regimeCode,
|
|
10384
|
+
from: x.from,
|
|
10385
|
+
to: x.to,
|
|
10386
|
+
price: x.price,
|
|
10387
|
+
regimes: [{
|
|
10388
|
+
code: x.regimeCode,
|
|
10389
|
+
title: (_b = regime === null || regime === void 0 ? void 0 : regime.title) !== null && _b !== void 0 ? _b : x.regimeName,
|
|
10390
|
+
price: x.price
|
|
10391
|
+
}],
|
|
10392
|
+
title: (_c = accommodation_1 === null || accommodation_1 === void 0 ? void 0 : accommodation_1.title) !== null && _c !== void 0 ? _c : x.accommodationName,
|
|
10393
|
+
image: accommodation_1 === null || accommodation_1 === void 0 ? void 0 : accommodation_1.imageUrl,
|
|
10394
|
+
usps: (_d = accommodation_1 === null || accommodation_1 === void 0 ? void 0 : accommodation_1.usps) !== null && _d !== void 0 ? _d : [],
|
|
10395
|
+
description: accommodation_1 === null || accommodation_1 === void 0 ? void 0 : accommodation_1.description,
|
|
10396
|
+
viewHtml: accommodationViews === null || accommodationViews === void 0 ? void 0 : accommodationViews[x.accommodationCode]
|
|
10397
|
+
});
|
|
10398
|
+
}
|
|
10399
|
+
});
|
|
10400
|
+
var accommodation = accommodations === null || accommodations === void 0 ? void 0 : accommodations.find(function (y) { return y.code === selectedOption.accommodationCode; });
|
|
10401
|
+
return {
|
|
10402
|
+
index: x.index,
|
|
10403
|
+
selected: {
|
|
10404
|
+
code: selectedOption.accommodationCode,
|
|
10405
|
+
regimeCode: selectedOption.regimeCode,
|
|
10406
|
+
price: selectedOption.price,
|
|
10407
|
+
from: selectedOption.from,
|
|
10408
|
+
to: selectedOption.to,
|
|
10409
|
+
regimes: x.options
|
|
10410
|
+
.filter(function (x) { return x.accommodationCode === selectedOption.accommodationCode; })
|
|
10411
|
+
.sort(function (a, b) { return a.price - b.price; })
|
|
10412
|
+
.map(function (o) {
|
|
10413
|
+
var _a;
|
|
10414
|
+
var regime = regimes === null || regimes === void 0 ? void 0 : regimes.find(function (y) { return y.code === o.regimeCode; });
|
|
10415
|
+
return {
|
|
10416
|
+
code: o.regimeCode,
|
|
10417
|
+
title: (_a = regime === null || regime === void 0 ? void 0 : regime.title) !== null && _a !== void 0 ? _a : o.regimeName,
|
|
10418
|
+
price: o.price
|
|
10419
|
+
};
|
|
10420
|
+
}),
|
|
10421
|
+
title: (_a = accommodation === null || accommodation === void 0 ? void 0 : accommodation.title) !== null && _a !== void 0 ? _a : selectedOption.accommodationName,
|
|
10422
|
+
image: accommodation === null || accommodation === void 0 ? void 0 : accommodation.imageUrl,
|
|
10423
|
+
usps: (_b = accommodation === null || accommodation === void 0 ? void 0 : accommodation.usps) !== null && _b !== void 0 ? _b : [],
|
|
10424
|
+
description: accommodation === null || accommodation === void 0 ? void 0 : accommodation.description,
|
|
10425
|
+
viewHtml: accommodationViews === null || accommodationViews === void 0 ? void 0 : accommodationViews[selectedOption.accommodationCode]
|
|
10426
|
+
},
|
|
10427
|
+
showAlternatives: false,
|
|
10428
|
+
alternatives: alternativeAccommodations
|
|
10429
|
+
};
|
|
10430
|
+
});
|
|
10431
|
+
};
|
|
10432
|
+
var updatePackageRooms = function (rooms, index, accommodationCode, regimeCode, availabilities) {
|
|
10433
|
+
var updatedRooms = rooms.map(function (room) {
|
|
10434
|
+
if (room.index !== index)
|
|
10435
|
+
return room;
|
|
10436
|
+
return __assign(__assign({}, room), { options: room.options.map(function (option) {
|
|
10437
|
+
return __assign(__assign({}, option), { isSelected: option.accommodationCode === accommodationCode &&
|
|
10438
|
+
(option.regimeCode === regimeCode || (option.regimeCode === null && regimeCode === '')) });
|
|
10439
|
+
}) });
|
|
10440
|
+
});
|
|
10441
|
+
var selectedAccommodations = new Map();
|
|
10442
|
+
updatedRooms.map(function (x) { return x.options.find(function (x) { return x.isSelected; }); }).forEach(function (x) {
|
|
10443
|
+
if (selectedAccommodations.has(x.accommodationCode)) {
|
|
10444
|
+
selectedAccommodations.set(x.accommodationCode, selectedAccommodations.get(x.accommodationCode) + 1);
|
|
10445
|
+
}
|
|
10446
|
+
else {
|
|
10447
|
+
selectedAccommodations.set(x.accommodationCode, 1);
|
|
10448
|
+
}
|
|
10449
|
+
});
|
|
10450
|
+
var accoCounter = availabilities.map(function (x) { return ({ code: x.code, count: x.count }); });
|
|
10451
|
+
return updatedRooms.map(function (room) {
|
|
10452
|
+
var selectedOption = room.options.find(function (x) { return x.isSelected; });
|
|
10453
|
+
return __assign(__assign({}, room), { options: room.options.map(function (option) {
|
|
10454
|
+
var _a, _b, _c;
|
|
10455
|
+
var isCurrentOption = selectedOption.accommodationCode === option.accommodationCode;
|
|
10456
|
+
var usedCount = (_a = selectedAccommodations.get(option.accommodationCode)) !== null && _a !== void 0 ? _a : 0;
|
|
10457
|
+
var availability = availabilities.find(function (x) { return x.code === option.accommodationCode; });
|
|
10458
|
+
if (availability) {
|
|
10459
|
+
var accoCount = accoCounter.find(function (x) { return x.code === option.accommodationCode; });
|
|
10460
|
+
var roomsLeft = availability.count - usedCount;
|
|
10461
|
+
var isOnRequest = isCurrentOption
|
|
10462
|
+
? accoCount.count < 0 && ((_b = availability === null || availability === void 0 ? void 0 : availability.onRequestPossible) !== null && _b !== void 0 ? _b : false)
|
|
10463
|
+
: roomsLeft < 0 && ((_c = availability === null || availability === void 0 ? void 0 : availability.onRequestPossible) !== null && _c !== void 0 ? _c : false);
|
|
10464
|
+
if (isCurrentOption)
|
|
10465
|
+
accoCount.count--;
|
|
10466
|
+
return __assign(__assign({}, option), { isLocked: !option.isSelected && !isOnRequest && roomsLeft < 0 && !availability.isExternal, isOnRequest: isOnRequest });
|
|
10467
|
+
}
|
|
10468
|
+
else {
|
|
10469
|
+
return option;
|
|
10470
|
+
}
|
|
10471
|
+
}) });
|
|
10472
|
+
});
|
|
10473
|
+
};
|
|
10474
|
+
|
|
10475
|
+
var NoOptions = function () {
|
|
10476
|
+
var translations = reactRedux.useSelector(selectTranslations);
|
|
10477
|
+
return (React__default["default"].createElement("div", { className: "form__group" },
|
|
10478
|
+
React__default["default"].createElement(Message, { type: "success", title: translations.OPTIONS_FORM.NO_OPTIONS_TITLE },
|
|
10479
|
+
React__default["default"].createElement("p", null, translations.OPTIONS_FORM.NO_OPTIONS_MESSAGE))));
|
|
10480
|
+
};
|
|
10481
|
+
|
|
10482
|
+
var NoneOption = function (_a) {
|
|
10483
|
+
var group = _a.group, parentId = _a.parentId, handleNoneSelectionChanged = _a.handleNoneSelectionChanged;
|
|
10484
|
+
var translations = reactRedux.useSelector(selectTranslations);
|
|
10485
|
+
var selectedOption = group.options.find(function (x) { return x.isSelected; });
|
|
10486
|
+
var showNoneOption = group.options.some(function (x) { return x.requirementType === 2; });
|
|
10487
|
+
var noneSelected = !selectedOption;
|
|
10488
|
+
var priceDifferencetext = selectedOption
|
|
10489
|
+
? "- ".concat(formatPrice(Math.abs(selectedOption.line.price)))
|
|
10490
|
+
: "";
|
|
10491
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, showNoneOption && (React__default["default"].createElement("tr", null,
|
|
10492
|
+
React__default["default"].createElement("td", null,
|
|
10493
|
+
React__default["default"].createElement("div", { className: buildClassName([
|
|
10494
|
+
"tree",
|
|
10495
|
+
noneSelected && "tree--selected",
|
|
10496
|
+
]) },
|
|
10497
|
+
React__default["default"].createElement("div", { className: "tree__level" },
|
|
10498
|
+
React__default["default"].createElement("div", { className: "tree__header" },
|
|
10499
|
+
React__default["default"].createElement("div", { className: "tree__description-collapse" },
|
|
10500
|
+
React__default["default"].createElement("div", { className: "radiobutton" },
|
|
10501
|
+
React__default["default"].createElement("div", { className: "radiobutton__label" },
|
|
10502
|
+
React__default["default"].createElement("input", { type: "radio", value: undefined, id: "".concat(parentId, "_NONE"), name: parentId, className: buildClassName([
|
|
10503
|
+
"radiobutton__input",
|
|
10504
|
+
"radiobutton__input--parent",
|
|
10505
|
+
]), defaultChecked: noneSelected, onChange: handleNoneSelectionChanged }),
|
|
10506
|
+
React__default["default"].createElement("span", { className: "radiobutton__label-text" },
|
|
10507
|
+
React__default["default"].createElement("div", { className: "date-list" },
|
|
10508
|
+
React__default["default"].createElement("span", { className: buildClassName([
|
|
10509
|
+
"date-list__item",
|
|
10510
|
+
"date-list__item--none",
|
|
10511
|
+
]) }))),
|
|
10512
|
+
React__default["default"].createElement("div", { className: "tree__columns-actions" },
|
|
10513
|
+
React__default["default"].createElement("div", { className: "tree__columns" },
|
|
10514
|
+
React__default["default"].createElement("div", { className: "tree__column" },
|
|
10515
|
+
React__default["default"].createElement("label", { htmlFor: "".concat(parentId, "_NONE"), className: buildClassName([
|
|
10516
|
+
"tree__product-name",
|
|
10517
|
+
"tree__product-name--none",
|
|
10518
|
+
]) }, translations.OPTIONS_FORM.NONE)),
|
|
10519
|
+
React__default["default"].createElement("div", { className: "tree__column" }),
|
|
10520
|
+
React__default["default"].createElement("div", { className: "tree__column" }),
|
|
10521
|
+
React__default["default"].createElement("div", { className: buildClassName([
|
|
10522
|
+
"tree__column",
|
|
10523
|
+
"tree__column--price",
|
|
10524
|
+
]) }, !noneSelected && (React__default["default"].createElement("span", { className: buildClassName([
|
|
10525
|
+
"price",
|
|
10526
|
+
"price--decrease",
|
|
10527
|
+
]) }, priceDifferencetext))))))))))))))));
|
|
10528
|
+
};
|
|
10529
|
+
|
|
9593
10530
|
var OptionItem = function (_a) {
|
|
9594
10531
|
var _b;
|
|
9595
10532
|
var option = _a.option, parentId = _a.parentId, index = _a.index, selectedPrice = _a.selectedPrice, onOptionChange = _a.onOptionChange;
|
|
@@ -10085,10 +11022,9 @@ var OptionRoom = function (_a) {
|
|
|
10085
11022
|
}
|
|
10086
11023
|
}
|
|
10087
11024
|
var accommodations = lodash.uniqBy(lodash.compact(packageRoom &&
|
|
10088
|
-
packageRoom.options
|
|
10089
|
-
|
|
10090
|
-
|
|
10091
|
-
}
|
|
11025
|
+
packageRoom.options
|
|
11026
|
+
.filter(function (x) { return x.accommodationCode && !x.isLocked; })
|
|
11027
|
+
.map(function (option) {
|
|
10092
11028
|
return {
|
|
10093
11029
|
accommodationCode: option.accommodationCode,
|
|
10094
11030
|
accommodationName: option.accommodationName,
|
|
@@ -10244,6 +11180,7 @@ var OptionsForm = function () {
|
|
|
10244
11180
|
var airportGroups = reactRedux.useSelector(selectPackageAirportGroups);
|
|
10245
11181
|
var optionUnits = reactRedux.useSelector(selectPackageOptionUnits);
|
|
10246
11182
|
var optionPax = reactRedux.useSelector(selectPackageOptionPax);
|
|
11183
|
+
var availabilities = reactRedux.useSelector(selectAvailabilities);
|
|
10247
11184
|
// ROOMS
|
|
10248
11185
|
var showRoomOptions = settings.roomOptions.isHidden;
|
|
10249
11186
|
var packageRooms = reactRedux.useSelector(selectPackageRooms);
|
|
@@ -10259,14 +11196,7 @@ var OptionsForm = function () {
|
|
|
10259
11196
|
var handleOnRoomChange = function (index, accommodationCode, regimeCode) {
|
|
10260
11197
|
if (!packageRooms)
|
|
10261
11198
|
return;
|
|
10262
|
-
var updatedPackageRooms = packageRooms
|
|
10263
|
-
if (room.index !== index)
|
|
10264
|
-
return room;
|
|
10265
|
-
return __assign(__assign({}, room), { options: room.options.map(function (option) {
|
|
10266
|
-
return __assign(__assign({}, option), { isSelected: option.accommodationCode === accommodationCode &&
|
|
10267
|
-
option.regimeCode === regimeCode });
|
|
10268
|
-
}) });
|
|
10269
|
-
});
|
|
11199
|
+
var updatedPackageRooms = updatePackageRooms(packageRooms, index, accommodationCode, regimeCode, availabilities);
|
|
10270
11200
|
dispatch(setPackageRooms(updatedPackageRooms));
|
|
10271
11201
|
dispatch(fetchPriceDetails());
|
|
10272
11202
|
};
|
|
@@ -10355,22 +11285,23 @@ var OptionsForm = function () {
|
|
|
10355
11285
|
dispatch(fetchPriceDetails());
|
|
10356
11286
|
}, []);
|
|
10357
11287
|
var goPrevious = function () {
|
|
10358
|
-
if (settings.
|
|
10359
|
-
dispatch(setCurrentStep(
|
|
11288
|
+
if (settings.roomOptions.isHidden) {
|
|
11289
|
+
dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
|
|
10360
11290
|
}
|
|
10361
11291
|
else {
|
|
10362
|
-
dispatch(setCurrentStep(
|
|
11292
|
+
dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
|
|
10363
11293
|
}
|
|
10364
11294
|
};
|
|
10365
|
-
var previousUrl = settings.
|
|
10366
|
-
? "".concat(settings.basePath).concat(settings.
|
|
10367
|
-
: "".concat(settings.basePath).concat(settings.
|
|
11295
|
+
var previousUrl = settings.roomOptions.isHidden
|
|
11296
|
+
? "".concat(settings.basePath).concat(settings.flightOptions.pathSuffix, "?").concat(bookingQueryString)
|
|
11297
|
+
: "".concat(settings.basePath).concat(settings.roomOptions.pathSuffix, "?").concat(bookingQueryString);
|
|
10368
11298
|
var hasPrevious = !settings.roomOptions.isHidden || !settings.flightOptions.isHidden;
|
|
11299
|
+
var showPackageTagsOrRoomoptions = showRoomOptions || (packageTags && !lodash.isEmpty(packageTags));
|
|
10369
11300
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
10370
11301
|
React__default["default"].createElement("form", { className: "form", name: "booking--options", id: "booking--options", noValidate: true, onSubmit: handleSubmit },
|
|
10371
11302
|
isLoading && settings.loaderComponent,
|
|
10372
11303
|
!isLoading && (React__default["default"].createElement("div", { className: "form__region" },
|
|
10373
|
-
|
|
11304
|
+
showPackageTagsOrRoomoptions && (React__default["default"].createElement("div", { className: "form__group" },
|
|
10374
11305
|
React__default["default"].createElement("div", { className: "booking-card" },
|
|
10375
11306
|
React__default["default"].createElement("div", { className: "booking-card__body" },
|
|
10376
11307
|
React__default["default"].createElement("div", { className: buildClassName([
|
|
@@ -10382,14 +11313,14 @@ var OptionsForm = function () {
|
|
|
10382
11313
|
showRoomOptions && (React__default["default"].createElement("table", { className: "table table--striped" },
|
|
10383
11314
|
React__default["default"].createElement("tbody", null, packageRooms &&
|
|
10384
11315
|
packageRooms.map(function (room) { return (React__default["default"].createElement(OptionRoom, { key: room.index, packageRoom: room, pax: getRoomPax(room.index), optionPax: optionPax, onRoomChange: handleOnRoomChange })); })))),
|
|
10385
|
-
React__default["default"].createElement("div", { className: "booking-card__tag-translations" }, packageTags.map(function (tag, index) { return (React__default["default"].createElement("label", { key: index, htmlFor: "tag-translation-".concat(index, "-").concat(tag.title), className: "checkbox__label tag-translation" },
|
|
11316
|
+
packageTags && !lodash.isEmpty(packageTags) && (React__default["default"].createElement("div", { className: "booking-card__tag-translations" }, packageTags.map(function (tag, index) { return (React__default["default"].createElement("label", { key: index, htmlFor: "tag-translation-".concat(index, "-").concat(tag.title), className: "checkbox__label tag-translation" },
|
|
10386
11317
|
React__default["default"].createElement("div", { className: "tag-translation-input__container" },
|
|
10387
11318
|
React__default["default"].createElement("input", { type: "checkbox", id: "tag-translation-".concat(index, "-").concat(tag.title), name: "tag-translation-".concat(index, "-").concat(tag.title), className: "checkbox__input", checked: tagIds === null || tagIds === void 0 ? void 0 : tagIds.includes(tag.id), onChange: function (e) {
|
|
10388
11319
|
return handleOnTagChange(tag.id, e.target.checked);
|
|
10389
11320
|
} })),
|
|
10390
11321
|
React__default["default"].createElement("span", { className: "tag-translation__title" }, tag.title),
|
|
10391
11322
|
"\u00A0",
|
|
10392
|
-
React__default["default"].createElement("span", { className: "tag-translation__description" }, tag.description))); })))))))),
|
|
11323
|
+
React__default["default"].createElement("span", { className: "tag-translation__description" }, tag.description))); }))))))))),
|
|
10393
11324
|
optionUnits && !lodash.isEmpty(optionUnits) && (React__default["default"].createElement("div", { className: "form__group" },
|
|
10394
11325
|
React__default["default"].createElement("div", { className: "booking-card" },
|
|
10395
11326
|
React__default["default"].createElement("div", { className: "booking-card__header" },
|
|
@@ -10417,28 +11348,112 @@ var OptionsForm = function () {
|
|
|
10417
11348
|
React__default["default"].createElement("button", { type: "submit", title: translations.STEPS.NEXT, disabled: isLoading, className: buildClassName(["cta", isLoading && "cta--disabled"]) }, translations.STEPS.NEXT)))));
|
|
10418
11349
|
};
|
|
10419
11350
|
|
|
11351
|
+
var RoomOption = function (_a) {
|
|
11352
|
+
var room = _a.room, hasAlternatives = _a.hasAlternatives, selectedRoomPrice = _a.selectedRoomPrice, onAcommodationChange = _a.onAcommodationChange, onRegimeChange = _a.onRegimeChange, onToggleAlternatives = _a.onToggleAlternatives;
|
|
11353
|
+
var translations = reactRedux.useSelector(selectTranslations);
|
|
11354
|
+
var _b = React.useState(0), roomPrice = _b[0], setRoomPrice = _b[1];
|
|
11355
|
+
var _c = React.useState(room.regimeCode), roomRegimeCode = _c[0], setRoomRegimeCode = _c[1];
|
|
11356
|
+
React.useEffect(function () {
|
|
11357
|
+
setRoomPrice(room.price);
|
|
11358
|
+
}, [room.code, room.regimeCode]);
|
|
11359
|
+
var getPriceDifference = function (selectedPrice, currentPrice) {
|
|
11360
|
+
var priceDifference = (selectedPrice !== null && selectedPrice !== void 0 ? selectedPrice : 0) - currentPrice;
|
|
11361
|
+
if (priceDifference !== 0) {
|
|
11362
|
+
return "(".concat(getPriceDifferenceText(priceDifference), ")");
|
|
11363
|
+
}
|
|
11364
|
+
else {
|
|
11365
|
+
return "";
|
|
11366
|
+
}
|
|
11367
|
+
};
|
|
11368
|
+
var selectAccommodation = function () {
|
|
11369
|
+
if (onAcommodationChange) {
|
|
11370
|
+
onAcommodationChange(room.code, roomRegimeCode);
|
|
11371
|
+
}
|
|
11372
|
+
};
|
|
11373
|
+
var handleRegimeChange = function (e) {
|
|
11374
|
+
var regimeCode = e.currentTarget.value;
|
|
11375
|
+
var option = room.regimes.find(function (x) { return x.code === regimeCode || (x.code === null && regimeCode === ''); });
|
|
11376
|
+
setRoomRegimeCode(option.code);
|
|
11377
|
+
setRoomPrice(option.price);
|
|
11378
|
+
if (onRegimeChange) {
|
|
11379
|
+
onRegimeChange(regimeCode);
|
|
11380
|
+
}
|
|
11381
|
+
e.preventDefault();
|
|
11382
|
+
};
|
|
11383
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
11384
|
+
React__default["default"].createElement("div", { className: "form__room" },
|
|
11385
|
+
room.viewHtml && (React__default["default"].createElement("div", { className: "form__room__wrapper", dangerouslySetInnerHTML: { __html: room.viewHtml } })),
|
|
11386
|
+
!room.viewHtml && (React__default["default"].createElement("div", { className: "form__room__wrapper" },
|
|
11387
|
+
room.image && (React__default["default"].createElement("div", { className: "form__room__image" },
|
|
11388
|
+
React__default["default"].createElement("img", { src: room.image, alt: "", className: "form__room__img" }))),
|
|
11389
|
+
React__default["default"].createElement("div", { className: "form__room__body" },
|
|
11390
|
+
React__default["default"].createElement("div", { className: "" },
|
|
11391
|
+
React__default["default"].createElement("h3", { className: "form__room__title" }, room.title),
|
|
11392
|
+
room.description && (React__default["default"].createElement("p", { className: "form__room__text" }, room.description)),
|
|
11393
|
+
React__default["default"].createElement("ul", { className: "list--usps form__room__usps" }, room.usps.map(function (usp, uspIndex) { return (React__default["default"].createElement("li", { key: uspIndex, className: "list__item" }, usp)); })))))),
|
|
11394
|
+
React__default["default"].createElement("div", { className: "form__room__footer" },
|
|
11395
|
+
React__default["default"].createElement("div", { className: "form__room__footer__top" },
|
|
11396
|
+
React__default["default"].createElement("p", { className: "form__room__dates" },
|
|
11397
|
+
getDateText(room.from),
|
|
11398
|
+
" - ",
|
|
11399
|
+
getDateText(room.to)),
|
|
11400
|
+
React__default["default"].createElement("span", { className: "form__room__days" }, getDatePeriodText(room.from, room.to))),
|
|
11401
|
+
React__default["default"].createElement("div", { className: "form__room__footer__bottom" },
|
|
11402
|
+
selectedRoomPrice != undefined && (React__default["default"].createElement("p", { className: "form__room__price form__room__price--increase" },
|
|
11403
|
+
React__default["default"].createElement("span", null, getPriceDifference(roomPrice, selectedRoomPrice)))),
|
|
11404
|
+
hasAlternatives && onToggleAlternatives && (React__default["default"].createElement("button", { type: "button", onClick: onToggleAlternatives, className: "form__room__alternatives__btn" }, translations.ROOM_OPTIONS_FORM.SHOW_ALTERNATIVES)),
|
|
11405
|
+
React__default["default"].createElement("div", { className: "select-wrapper" },
|
|
11406
|
+
React__default["default"].createElement("div", { className: "select-wrapper__select" },
|
|
11407
|
+
React__default["default"].createElement("select", { defaultValue: roomRegimeCode, onChange: handleRegimeChange }, room.regimes.map(function (regime) {
|
|
11408
|
+
var _a;
|
|
11409
|
+
return (React__default["default"].createElement("option", { key: regime.code, value: (_a = regime.code) !== null && _a !== void 0 ? _a : "" },
|
|
11410
|
+
regime.title,
|
|
11411
|
+
" ",
|
|
11412
|
+
getPriceDifference(regime.price, roomPrice)));
|
|
11413
|
+
})))),
|
|
11414
|
+
React__default["default"].createElement("button", { type: "button", onClick: selectAccommodation, className: buildClassName(['cta', selectedRoomPrice ? 'cta--secondary' : 'cta--selected']) }, selectedRoomPrice ? translations.SHARED.SELECT : translations.SHARED.SELECTED))))));
|
|
11415
|
+
};
|
|
11416
|
+
|
|
11417
|
+
var TravelerRooms = function (_a) {
|
|
11418
|
+
var index = _a.index, room = _a.room, onRoomChange = _a.onRoomChange;
|
|
11419
|
+
var translations = reactRedux.useSelector(selectTranslations);
|
|
11420
|
+
var _b = React.useState(false), showAlternatives = _b[0], setShowAlternatives = _b[1];
|
|
11421
|
+
var selectedAccommodationCode = room.selected.code;
|
|
11422
|
+
return (React__default["default"].createElement("div", { key: room.index },
|
|
11423
|
+
React__default["default"].createElement("div", { className: "form__room__header" },
|
|
11424
|
+
React__default["default"].createElement("h5", null,
|
|
11425
|
+
translations.ROOM_OPTIONS_FORM.TRAVELER_GROUP,
|
|
11426
|
+
" ",
|
|
11427
|
+
room.index + 1)),
|
|
11428
|
+
React__default["default"].createElement(RoomOption, { room: room.selected, hasAlternatives: !lodash.isEmpty(room.alternatives), onRegimeChange: function (regimeCode) { return onRoomChange(index, selectedAccommodationCode, regimeCode); }, onToggleAlternatives: function () { return setShowAlternatives(!showAlternatives); } }),
|
|
11429
|
+
!lodash.isEmpty(room.alternatives) && showAlternatives && (React__default["default"].createElement("div", { className: "form__room__alternatives" },
|
|
11430
|
+
React__default["default"].createElement("div", { className: "form__room__alternatives__header" },
|
|
11431
|
+
translations.ROOM_OPTIONS_FORM.ALTERNATIVES_TRAVELER_GROUP,
|
|
11432
|
+
" ",
|
|
11433
|
+
room.index + 1),
|
|
11434
|
+
showAlternatives && (React__default["default"].createElement(React__default["default"].Fragment, null, room.alternatives.map(function (alternative, alternativeIndex) { return (React__default["default"].createElement(RoomOption, { key: alternativeIndex, room: alternative, selectedRoomPrice: room.selected.price, onAcommodationChange: function (accommodationCode, regimeCode) {
|
|
11435
|
+
setShowAlternatives(false);
|
|
11436
|
+
onRoomChange(index, accommodationCode, regimeCode);
|
|
11437
|
+
} })); })))))));
|
|
11438
|
+
};
|
|
11439
|
+
|
|
10420
11440
|
var RoomOptionsForm = function () {
|
|
10421
|
-
var
|
|
11441
|
+
var settings = React.useContext(SettingsContext);
|
|
10422
11442
|
var translations = reactRedux.useSelector(selectTranslations);
|
|
10423
11443
|
var dispatch = useAppDispatch();
|
|
10424
11444
|
var packageDetails = reactRedux.useSelector(selectPackageDetails);
|
|
10425
|
-
var requestRooms = reactRedux.useSelector(selectRequestRooms);
|
|
10426
|
-
var pax = reactRedux.useSelector(selectBookingPackagePax);
|
|
10427
11445
|
var packageRooms = reactRedux.useSelector(selectPackageRooms);
|
|
11446
|
+
var availabilities = reactRedux.useSelector(selectAvailabilities);
|
|
10428
11447
|
var bookingQueryString = reactRedux.useSelector(selectBookingQueryString);
|
|
11448
|
+
var accommodationViews = reactRedux.useSelector(selectAccommodationViews);
|
|
10429
11449
|
var isLoading = reactRedux.useSelector(selectIsFetchingProductOptions);
|
|
10430
|
-
var
|
|
10431
|
-
var
|
|
10432
|
-
|
|
10433
|
-
var room = requestRooms === null || requestRooms === void 0 ? void 0 : requestRooms.find(function (x) { return x.index == index; });
|
|
10434
|
-
var bookingPackagePax = pax.filter(function (x) {
|
|
10435
|
-
return room === null || room === void 0 ? void 0 : room.pax.some(function (y) { return y.id == x.id; });
|
|
10436
|
-
});
|
|
10437
|
-
return bookingPackagePax.length > 0 ? bookingPackagePax : (_a = room === null || room === void 0 ? void 0 : room.pax) !== null && _a !== void 0 ? _a : [];
|
|
11450
|
+
var rooms = buildSelectableRooms(packageRooms, settings.accommodations, settings.regimes, accommodationViews);
|
|
11451
|
+
var goPrevious = function () {
|
|
11452
|
+
dispatch(setCurrentStep(FLIGHT_OPTIONS_FORM_STEP));
|
|
10438
11453
|
};
|
|
10439
11454
|
var handleSubmit = function (e) {
|
|
10440
|
-
if (skipRouter) {
|
|
10441
|
-
if (flightOptions.isHidden) {
|
|
11455
|
+
if (settings.skipRouter) {
|
|
11456
|
+
if (settings.flightOptions.isHidden) {
|
|
10442
11457
|
dispatch(setCurrentStep(OPTIONS_FORM_STEP));
|
|
10443
11458
|
}
|
|
10444
11459
|
else {
|
|
@@ -10446,26 +11461,14 @@ var RoomOptionsForm = function () {
|
|
|
10446
11461
|
}
|
|
10447
11462
|
}
|
|
10448
11463
|
else {
|
|
10449
|
-
|
|
10450
|
-
router.navigate("".concat(basePath).concat(options.pathSuffix, "?").concat(bookingQueryString));
|
|
10451
|
-
}
|
|
10452
|
-
else {
|
|
10453
|
-
router.navigate("".concat(basePath).concat(flightOptions.pathSuffix, "?").concat(bookingQueryString));
|
|
10454
|
-
}
|
|
11464
|
+
router.navigate("".concat(settings.basePath).concat(settings.options.pathSuffix, "?").concat(bookingQueryString));
|
|
10455
11465
|
}
|
|
10456
11466
|
e.preventDefault();
|
|
10457
11467
|
};
|
|
10458
11468
|
var handleOnRoomChange = function (index, accommodationCode, regimeCode) {
|
|
10459
11469
|
if (!packageRooms)
|
|
10460
11470
|
return;
|
|
10461
|
-
var updatedPackageRooms = packageRooms
|
|
10462
|
-
if (room.index !== index)
|
|
10463
|
-
return room;
|
|
10464
|
-
return __assign(__assign({}, room), { options: room.options.map(function (option) {
|
|
10465
|
-
return __assign(__assign({}, option), { isSelected: option.accommodationCode === accommodationCode &&
|
|
10466
|
-
option.regimeCode === regimeCode });
|
|
10467
|
-
}) });
|
|
10468
|
-
});
|
|
11471
|
+
var updatedPackageRooms = updatePackageRooms(packageRooms, index, accommodationCode, regimeCode, availabilities);
|
|
10469
11472
|
dispatch(setPackageRooms(updatedPackageRooms));
|
|
10470
11473
|
dispatch(fetchPriceDetails());
|
|
10471
11474
|
};
|
|
@@ -10493,61 +11496,11 @@ var RoomOptionsForm = function () {
|
|
|
10493
11496
|
}
|
|
10494
11497
|
dispatch(fetchPriceDetails());
|
|
10495
11498
|
}, []);
|
|
10496
|
-
// const [active, setActive] = useState(false)
|
|
10497
11499
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
10498
11500
|
React__default["default"].createElement("form", { className: "form", name: "booking--options", id: "booking--options", noValidate: true, onSubmit: handleSubmit },
|
|
10499
|
-
React__default["default"].createElement("div", { className: "form__wrapper" },
|
|
10500
|
-
isLoading && loaderComponent,
|
|
10501
|
-
!isLoading && (React__default["default"].createElement("div", { className: "form__region" },
|
|
10502
|
-
React__default["default"].createElement("div", { className: "form__group" },
|
|
10503
|
-
React__default["default"].createElement("div", { className: "booking-card" },
|
|
10504
|
-
React__default["default"].createElement("div", { className: "booking-card__body" },
|
|
10505
|
-
React__default["default"].createElement("div", { className: buildClassName([
|
|
10506
|
-
"booking-card__group",
|
|
10507
|
-
"booking-card__group--package",
|
|
10508
|
-
]) },
|
|
10509
|
-
React__default["default"].createElement("span", { className: "booking-card__tag" }, translations.OPTIONS_FORM.PACKAGE),
|
|
10510
|
-
React__default["default"].createElement("div", { className: "booking-card__group-body" },
|
|
10511
|
-
React__default["default"].createElement("table", { className: "table table--striped" },
|
|
10512
|
-
React__default["default"].createElement("tbody", null, packageRooms &&
|
|
10513
|
-
packageRooms.map(function (room) { return (React__default["default"].createElement(OptionRoom, { key: room.index, packageRoom: room, pax: getRoomPax(room.index), optionPax: optionPax, onRoomChange: handleOnRoomChange })); })))))))))),
|
|
10514
|
-
React__default["default"].createElement("div", { className: "form__room" },
|
|
10515
|
-
React__default["default"].createElement("div", { className: "form__room__wrapper" },
|
|
10516
|
-
React__default["default"].createElement("div", { className: "form__room__image" },
|
|
10517
|
-
React__default["default"].createElement("img", { src: "https://picsum.photos/1920/1080", alt: "", className: "form__room__img" }),
|
|
10518
|
-
React__default["default"].createElement("div", { className: "form__room__favorite" },
|
|
10519
|
-
React__default["default"].createElement("i", { className: "fa-regular fa-heart" }))),
|
|
10520
|
-
React__default["default"].createElement("div", { className: "form__room__body" },
|
|
10521
|
-
React__default["default"].createElement("div", { className: "" },
|
|
10522
|
-
React__default["default"].createElement("h3", { className: "form__room__title" }, "Tara Penthouse suite frontal seaview"),
|
|
10523
|
-
React__default["default"].createElement("p", null,
|
|
10524
|
-
" Carrer de Nicaragua, 146, Les Corts, 08029 Barcelona, Spanje \u2013 ",
|
|
10525
|
-
React__default["default"].createElement("a", { href: "#" }, "Toon kaart")),
|
|
10526
|
-
React__default["default"].createElement("ul", { className: "list--usps form__room__usps" },
|
|
10527
|
-
React__default["default"].createElement("li", { className: "list__item" }, "1 tweepersoonsbed"),
|
|
10528
|
-
React__default["default"].createElement("li", { className: "list__item" }, "Max. 2 personen"),
|
|
10529
|
-
React__default["default"].createElement("li", { className: "list__item" }, "Gratis WiFi"),
|
|
10530
|
-
React__default["default"].createElement("li", { className: "list__item" }, "Airconditioning"),
|
|
10531
|
-
React__default["default"].createElement("li", { className: "list__item" }, "Eigen badkamer")),
|
|
10532
|
-
React__default["default"].createElement("div", { className: "form__room__select" },
|
|
10533
|
-
React__default["default"].createElement("div", { className: "select-wrapper" },
|
|
10534
|
-
React__default["default"].createElement("div", { className: "select-wrapper__select" },
|
|
10535
|
-
React__default["default"].createElement("select", null,
|
|
10536
|
-
React__default["default"].createElement("option", { value: "KO" }, "Kamer & Ontbijt "),
|
|
10537
|
-
React__default["default"].createElement("option", { value: "LU" }, "Lunch (+ \u20AC\u00A0354,38)"),
|
|
10538
|
-
React__default["default"].createElement("option", { value: "HB" }, "Half Pension (+ \u20AC\u00A0740,25)"),
|
|
10539
|
-
React__default["default"].createElement("option", { value: "FB" }, "Vol Pension (+ \u20AC\u00A01.094,63)")))))))),
|
|
10540
|
-
React__default["default"].createElement("div", { className: "form__room__footer" },
|
|
10541
|
-
React__default["default"].createElement("div", { className: "form__room__footer__top" },
|
|
10542
|
-
React__default["default"].createElement("p", { className: "form__room__dates" }, "01/11 - 08/11"),
|
|
10543
|
-
React__default["default"].createElement("span", { className: "form__room__days" }, "8 dagen, 7nachten")),
|
|
10544
|
-
React__default["default"].createElement("div", { className: "form__room__footer__bottom" },
|
|
10545
|
-
React__default["default"].createElement("p", { className: "form__room__price form__room__price--increase" },
|
|
10546
|
-
"+ ",
|
|
10547
|
-
React__default["default"].createElement("span", null, "\u20AC 216,00"),
|
|
10548
|
-
" p.p."),
|
|
10549
|
-
React__default["default"].createElement("button", { className: "cta cta--secondary" }, "Selecteer"))))),
|
|
11501
|
+
React__default["default"].createElement("div", { className: "form__wrapper" }, rooms.map(function (room) { return (React__default["default"].createElement(TravelerRooms, { key: room.index, index: room.index, room: room, onRoomChange: handleOnRoomChange })); })),
|
|
10550
11502
|
React__default["default"].createElement("div", { className: "booking__navigator" },
|
|
11503
|
+
!settings.flightOptions.isHidden && (React__default["default"].createElement(React__default["default"].Fragment, null, settings.skipRouter ? (React__default["default"].createElement("button", { type: "button", title: translations.STEPS.PREVIOUS, onClick: function () { return goPrevious(); }, className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)) : (React__default["default"].createElement(router.Link, { to: "".concat(settings.basePath).concat(settings.flightOptions.pathSuffix, "?").concat(bookingQueryString), title: translations.STEPS.PREVIOUS, className: "cta cta--secondary" }, translations.STEPS.PREVIOUS)))),
|
|
10551
11504
|
React__default["default"].createElement("button", { type: "submit", title: translations.STEPS.NEXT, disabled: isLoading, className: buildClassName(["cta", isLoading && "cta--disabled"]) }, translations.STEPS.NEXT)))));
|
|
10552
11505
|
};
|
|
10553
11506
|
|
|
@@ -11016,8 +11969,8 @@ var Summary = function () {
|
|
|
11016
11969
|
return [4 /*yield*/, validateVoucher_1(tideClientConfig, request)];
|
|
11017
11970
|
case 1:
|
|
11018
11971
|
result = _b.sent();
|
|
11019
|
-
if (result
|
|
11020
|
-
setVoucher(__assign(__assign({}, voucher), { isValidated: true, isValid: result.
|
|
11972
|
+
if (result) {
|
|
11973
|
+
setVoucher(__assign(__assign({}, voucher), { isValidated: true, isValid: result.isValid }));
|
|
11021
11974
|
}
|
|
11022
11975
|
return [2 /*return*/];
|
|
11023
11976
|
}
|
|
@@ -11549,7 +12502,7 @@ var TravelersForm = function () {
|
|
|
11549
12502
|
var hasVisibleError = function (key) {
|
|
11550
12503
|
return lodash.get(formik$1.errors, key) && lodash.get(formik$1.touched, key);
|
|
11551
12504
|
};
|
|
11552
|
-
return (React__default["default"].createElement("form", { className: "form", name: "booking--travellers", id: "booking--travellers", noValidate: true, onSubmit: formik$1.handleSubmit, onReset: formik$1.handleReset },
|
|
12505
|
+
return (React__default["default"].createElement("form", { className: "form form__travelers", name: "booking--travellers", id: "booking--travellers", noValidate: true, onSubmit: formik$1.handleSubmit, onReset: formik$1.handleReset },
|
|
11553
12506
|
formik$1.values.rooms.map(function (room, rIndex) { return (React__default["default"].createElement("div", { key: rIndex },
|
|
11554
12507
|
React__default["default"].createElement("div", { className: "form__region" },
|
|
11555
12508
|
React__default["default"].createElement("div", { className: "form__region-header" },
|
|
@@ -11717,7 +12670,7 @@ var TravelersForm = function () {
|
|
|
11717
12670
|
|
|
11718
12671
|
var Booking = function (_a) {
|
|
11719
12672
|
var productCode = _a.productCode, productName = _a.productName, thumbnailUrl = _a.thumbnailUrl;
|
|
11720
|
-
var _b = React.useContext(SettingsContext), officeId = _b.officeId, bookingOptions = _b.bookingOptions, basePath = _b.basePath, roomOptions = _b.roomOptions, flightOptions = _b.flightOptions, options = _b.options, travellers = _b.travellers, summary = _b.summary, confirmation = _b.confirmation, error = _b.error, showSidebarDeposit = _b.showSidebarDeposit, includeFlights = _b.includeFlights, loaderComponent = _b.loaderComponent, skipPaymentWithAgent = _b.skipPaymentWithAgent, generatePaymentUrl = _b.generatePaymentUrl, tagIds = _b.tagIds, agentAdressId = _b.agentAdressId, language = _b.language, translationFiles = _b.translationFiles;
|
|
12673
|
+
var _b = React.useContext(SettingsContext), officeId = _b.officeId, bookingOptions = _b.bookingOptions, basePath = _b.basePath, roomOptions = _b.roomOptions, flightOptions = _b.flightOptions, options = _b.options, travellers = _b.travellers, summary = _b.summary, confirmation = _b.confirmation, error = _b.error, showSidebarDeposit = _b.showSidebarDeposit, includeFlights = _b.includeFlights, loaderComponent = _b.loaderComponent, skipPaymentWithAgent = _b.skipPaymentWithAgent, generatePaymentUrl = _b.generatePaymentUrl, tagIds = _b.tagIds, agentAdressId = _b.agentAdressId, language = _b.language, translationFiles = _b.translationFiles, accommodationViewId = _b.accommodationViewId;
|
|
11721
12674
|
var dispatch = useAppDispatch();
|
|
11722
12675
|
var location = router.useLocation();
|
|
11723
12676
|
var productAttributes = reactRedux.useSelector(selectProductAttributes);
|
|
@@ -11741,7 +12694,7 @@ var Booking = function (_a) {
|
|
|
11741
12694
|
var rooms = getRoomsFromParams(params, "rooms");
|
|
11742
12695
|
var flight = getFlightsFromParams(params, "flight");
|
|
11743
12696
|
var allotmentName = getStringFromParams(params, "allotmentName");
|
|
11744
|
-
var allotmentIds = getNumbersFromParams(params, "
|
|
12697
|
+
var allotmentIds = getNumbersFromParams(params, "allotmentId");
|
|
11745
12698
|
var tourCode = getStringFromParams(params, "tourCode");
|
|
11746
12699
|
var bookingNumber = (_a = params.get("bookingNr")) !== null && _a !== void 0 ? _a : undefined;
|
|
11747
12700
|
if (typeof window !== "undefined") {
|
|
@@ -11838,6 +12791,9 @@ var Booking = function (_a) {
|
|
|
11838
12791
|
if (agentAdressId && agentAdressId != 0) {
|
|
11839
12792
|
dispatch(setBookingType("b2b"));
|
|
11840
12793
|
}
|
|
12794
|
+
if (accommodationViewId && accommodationViewId != 0) {
|
|
12795
|
+
dispatch(setAccommodationViewId(accommodationViewId));
|
|
12796
|
+
}
|
|
11841
12797
|
}, [
|
|
11842
12798
|
officeId,
|
|
11843
12799
|
language,
|
|
@@ -11848,6 +12804,7 @@ var Booking = function (_a) {
|
|
|
11848
12804
|
setCalculateDeposit,
|
|
11849
12805
|
tagIds,
|
|
11850
12806
|
agentAdressId,
|
|
12807
|
+
accommodationViewId
|
|
11851
12808
|
]);
|
|
11852
12809
|
React.useEffect(function () {
|
|
11853
12810
|
if (!productAttributes ||
|
|
@@ -11876,8 +12833,8 @@ var Booking = function (_a) {
|
|
|
11876
12833
|
React__default["default"].createElement("div", { className: "booking__content" },
|
|
11877
12834
|
React__default["default"].createElement("div", { className: "booking__panel" },
|
|
11878
12835
|
React__default["default"].createElement(router.Router, { basepath: basePath },
|
|
11879
|
-
!roomOptions.isHidden && roomOptions.pathSuffix && (React__default["default"].createElement(StepRoute, { path: roomOptions.pathSuffix, number: numberIndex++, title: translations.STEPS.ROOM_OPTIONS, component: React__default["default"].createElement(RoomOptionsForm, null) })),
|
|
11880
12836
|
!flightOptions.isHidden && flightOptions.pathSuffix && (React__default["default"].createElement(StepRoute, { path: flightOptions.pathSuffix, number: numberIndex++, title: translations.STEPS.FLIGHT_OPTIONS, component: React__default["default"].createElement(FlightOptionsForm, null) })),
|
|
12837
|
+
!roomOptions.isHidden && roomOptions.pathSuffix && (React__default["default"].createElement(StepRoute, { path: roomOptions.pathSuffix, number: numberIndex++, title: translations.STEPS.ROOM_OPTIONS, component: React__default["default"].createElement(RoomOptionsForm, null) })),
|
|
11881
12838
|
React__default["default"].createElement(StepRoute, { path: options.pathSuffix, number: numberIndex++, title: translations.STEPS.EXTRA_OPTIONS, component: React__default["default"].createElement(OptionsForm, null) }),
|
|
11882
12839
|
React__default["default"].createElement(StepRoute, { path: travellers.pathSuffix, number: numberIndex++, title: translations.STEPS.PERSONAL_DETAILS, component: React__default["default"].createElement(TravelersForm, null) }),
|
|
11883
12840
|
React__default["default"].createElement(StepRoute, { path: summary.pathSuffix, number: numberIndex++, title: translations.STEPS.SUMMARY, component: React__default["default"].createElement(Summary, null) }),
|