@qite/tide-booking-component 1.4.69 → 1.4.70
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/index.js +585 -445
- package/build/build-cjs/src/qsm/store/qsm-slice.d.ts +4 -4
- package/build/build-cjs/src/qsm/types.d.ts +2 -14
- package/build/build-cjs/src/search-results/components/filters/filters.d.ts +1 -1
- package/build/build-cjs/src/search-results/components/filters/utility.d.ts +2 -2
- package/build/build-cjs/src/search-results/components/group-tour/group-tour-card.d.ts +8 -0
- package/build/build-cjs/src/search-results/components/group-tour/group-tour-results.d.ts +6 -0
- package/build/build-cjs/src/search-results/components/hotel/hotel-accommodation-results.d.ts +0 -2
- package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +3 -6
- package/build/build-cjs/src/search-results/types.d.ts +7 -2
- package/build/build-cjs/src/search-results/utils/search-results-utils.d.ts +3 -0
- package/build/build-cjs/src/shared/components/flyin.d.ts +1 -1
- package/build/build-cjs/src/shared/types.d.ts +12 -0
- package/build/build-cjs/src/shared/utils/localization-util.d.ts +4 -0
- package/build/build-esm/index.js +585 -444
- package/build/build-esm/src/qsm/store/qsm-slice.d.ts +4 -4
- package/build/build-esm/src/qsm/types.d.ts +2 -14
- package/build/build-esm/src/search-results/components/filters/filters.d.ts +1 -1
- package/build/build-esm/src/search-results/components/filters/utility.d.ts +2 -2
- package/build/build-esm/src/search-results/components/group-tour/group-tour-card.d.ts +8 -0
- package/build/build-esm/src/search-results/components/group-tour/group-tour-results.d.ts +6 -0
- package/build/build-esm/src/search-results/components/hotel/hotel-accommodation-results.d.ts +0 -2
- package/build/build-esm/src/search-results/store/search-results-slice.d.ts +3 -6
- package/build/build-esm/src/search-results/types.d.ts +7 -2
- package/build/build-esm/src/search-results/utils/search-results-utils.d.ts +3 -0
- package/build/build-esm/src/shared/components/flyin.d.ts +1 -1
- package/build/build-esm/src/shared/types.d.ts +12 -0
- package/build/build-esm/src/shared/utils/localization-util.d.ts +4 -0
- package/package.json +1 -1
- package/src/qsm/components/QSMContainer/qsm-container.tsx +3 -2
- package/src/qsm/store/qsm-slice.ts +4 -4
- package/src/qsm/types.ts +2 -15
- package/src/search-results/components/filters/filters.tsx +136 -293
- package/src/search-results/components/filters/utility.tsx +61 -2
- package/src/search-results/components/group-tour/group-tour-card.tsx +86 -0
- package/src/search-results/components/group-tour/group-tour-results.tsx +40 -0
- package/src/search-results/components/hotel/hotel-accommodation-results.tsx +13 -16
- package/src/search-results/components/icon.tsx +18 -0
- package/src/search-results/components/search-results-container/search-results-container.tsx +31 -19
- package/src/search-results/store/search-results-slice.ts +8 -2
- package/src/search-results/types.ts +9 -2
- package/src/search-results/utils/search-results-utils.ts +42 -0
- package/src/shared/components/flyin.tsx +2 -1
- package/src/shared/translations/ar-SA.json +2 -1
- package/src/shared/translations/da-DK.json +2 -1
- package/src/shared/translations/de-DE.json +2 -1
- package/src/shared/translations/en-GB.json +2 -1
- package/src/shared/translations/es-ES.json +2 -1
- package/src/shared/translations/fr-BE.json +2 -1
- package/src/shared/translations/fr-FR.json +2 -1
- package/src/shared/translations/is-IS.json +2 -1
- package/src/shared/translations/it-IT.json +2 -1
- package/src/shared/translations/ja-JP.json +2 -1
- package/src/shared/translations/nl-BE.json +2 -1
- package/src/shared/translations/nl-NL.json +2 -1
- package/src/shared/translations/no-NO.json +2 -1
- package/src/shared/translations/pl-PL.json +2 -1
- package/src/shared/translations/pt-PT.json +2 -1
- package/src/shared/translations/sv-SE.json +2 -1
- package/src/shared/types.ts +13 -0
- package/src/shared/utils/localization-util.ts +16 -0
package/build/build-cjs/index.js
CHANGED
|
@@ -620,7 +620,8 @@ var SRP$f = {
|
|
|
620
620
|
DEPARTURE_TIME_ASC: 'وقت المغادرة تصاعدياً',
|
|
621
621
|
DEPARTURE_TIME_DESC: 'وقت المغادرة تنازلياً',
|
|
622
622
|
DURATION_ASC: 'المدة تصاعدياً',
|
|
623
|
-
DURATION_DESC: 'المدة تنازلياً'
|
|
623
|
+
DURATION_DESC: 'المدة تنازلياً',
|
|
624
|
+
TRAVEL_GROUP: 'مجموعة المسافرين'
|
|
624
625
|
};
|
|
625
626
|
var arJson = {
|
|
626
627
|
STEPS: STEPS$f,
|
|
@@ -1019,7 +1020,8 @@ var SRP$e = {
|
|
|
1019
1020
|
DEPARTURE_TIME_ASC: 'Afgangstid stigende',
|
|
1020
1021
|
DEPARTURE_TIME_DESC: 'Afgangstid faldende',
|
|
1021
1022
|
DURATION_ASC: 'Varighed stigende',
|
|
1022
|
-
DURATION_DESC: 'Varighed faldende'
|
|
1023
|
+
DURATION_DESC: 'Varighed faldende',
|
|
1024
|
+
TRAVEL_GROUP: 'Rejseselskab'
|
|
1023
1025
|
};
|
|
1024
1026
|
var daJson = {
|
|
1025
1027
|
STEPS: STEPS$e,
|
|
@@ -1419,7 +1421,8 @@ var SRP$d = {
|
|
|
1419
1421
|
DEPARTURE_RANGE: 'Abflugzeitraum',
|
|
1420
1422
|
DEPARTURE_AIRPORTS: 'Abflughäfen',
|
|
1421
1423
|
ARRIVAL_AIRPORTS: 'Ankunftsflughäfen',
|
|
1422
|
-
PRICE: 'Preis'
|
|
1424
|
+
PRICE: 'Preis',
|
|
1425
|
+
TRAVEL_GROUP: 'Reisegruppe'
|
|
1423
1426
|
};
|
|
1424
1427
|
var deJson = {
|
|
1425
1428
|
STEPS: STEPS$d,
|
|
@@ -1822,7 +1825,8 @@ var SRP$c = {
|
|
|
1822
1825
|
NIGHT_RANGE: 'Night',
|
|
1823
1826
|
DEPARTURE_RANGE: 'Departure range',
|
|
1824
1827
|
DEPARTURE_AIRPORTS: 'Departure airports',
|
|
1825
|
-
ARRIVAL_AIRPORTS: 'Arrival airports'
|
|
1828
|
+
ARRIVAL_AIRPORTS: 'Arrival airports',
|
|
1829
|
+
TRAVEL_GROUP: 'Travel group'
|
|
1826
1830
|
};
|
|
1827
1831
|
var enJson = {
|
|
1828
1832
|
STEPS: STEPS$c,
|
|
@@ -2222,7 +2226,8 @@ var SRP$b = {
|
|
|
2222
2226
|
DEPARTURE_RANGE: 'Franja de salida',
|
|
2223
2227
|
DEPARTURE_AIRPORTS: 'Aeropuertos de salida',
|
|
2224
2228
|
ARRIVAL_AIRPORTS: 'Aeropuertos de llegada',
|
|
2225
|
-
PRICE: 'Precio'
|
|
2229
|
+
PRICE: 'Precio',
|
|
2230
|
+
TRAVEL_GROUP: 'Grupo de viaje'
|
|
2226
2231
|
};
|
|
2227
2232
|
var esJson = {
|
|
2228
2233
|
STEPS: STEPS$b,
|
|
@@ -2626,7 +2631,8 @@ var SRP$a = {
|
|
|
2626
2631
|
DEPARTURE_RANGE: 'Plage de départ',
|
|
2627
2632
|
DEPARTURE_AIRPORTS: 'Aéroports de départ',
|
|
2628
2633
|
ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
|
|
2629
|
-
PRICE: 'Prix'
|
|
2634
|
+
PRICE: 'Prix',
|
|
2635
|
+
TRAVEL_GROUP: 'Groupe de voyageurs'
|
|
2630
2636
|
};
|
|
2631
2637
|
var frBeJson = {
|
|
2632
2638
|
STEPS: STEPS$a,
|
|
@@ -3025,7 +3031,8 @@ var SRP$9 = {
|
|
|
3025
3031
|
DEPARTURE_RANGE: 'Plage de départ',
|
|
3026
3032
|
DEPARTURE_AIRPORTS: 'Aéroports de départ',
|
|
3027
3033
|
ARRIVAL_AIRPORTS: 'Aéroports d’arrivée',
|
|
3028
|
-
PRICE: 'Prix'
|
|
3034
|
+
PRICE: 'Prix',
|
|
3035
|
+
TRAVEL_GROUP: 'Groupe de voyageurs'
|
|
3029
3036
|
};
|
|
3030
3037
|
var frFrJson = {
|
|
3031
3038
|
STEPS: STEPS$9,
|
|
@@ -3424,7 +3431,8 @@ var SRP$8 = {
|
|
|
3424
3431
|
DEPARTURE_RANGE: 'Brottfarartímabil',
|
|
3425
3432
|
DEPARTURE_AIRPORTS: 'Brottfararflugvellir',
|
|
3426
3433
|
ARRIVAL_AIRPORTS: 'Komuflugvellir',
|
|
3427
|
-
PRICE: 'Verð'
|
|
3434
|
+
PRICE: 'Verð',
|
|
3435
|
+
TRAVEL_GROUP: 'Ferðahópur'
|
|
3428
3436
|
};
|
|
3429
3437
|
var isJson = {
|
|
3430
3438
|
STEPS: STEPS$8,
|
|
@@ -3824,7 +3832,8 @@ var SRP$7 = {
|
|
|
3824
3832
|
DEPARTURE_RANGE: 'Fascia di partenza',
|
|
3825
3833
|
DEPARTURE_AIRPORTS: 'Aeroporti di partenza',
|
|
3826
3834
|
ARRIVAL_AIRPORTS: 'Aeroporti di arrivo',
|
|
3827
|
-
PRICE: 'Prezzo'
|
|
3835
|
+
PRICE: 'Prezzo',
|
|
3836
|
+
TRAVEL_GROUP: 'Gruppo di viaggio'
|
|
3828
3837
|
};
|
|
3829
3838
|
var itJson = {
|
|
3830
3839
|
STEPS: STEPS$7,
|
|
@@ -4228,7 +4237,8 @@ var SRP$6 = {
|
|
|
4228
4237
|
DEPARTURE_RANGE: 'Vertrektijdstip',
|
|
4229
4238
|
DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
|
|
4230
4239
|
ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
|
|
4231
|
-
PRICE: 'Prijs'
|
|
4240
|
+
PRICE: 'Prijs',
|
|
4241
|
+
TRAVEL_GROUP: 'Reisgezelschap'
|
|
4232
4242
|
};
|
|
4233
4243
|
var nlBeJson = {
|
|
4234
4244
|
STEPS: STEPS$6,
|
|
@@ -4628,7 +4638,8 @@ var SRP$5 = {
|
|
|
4628
4638
|
DEPARTURE_RANGE: 'Vertrektijdstip',
|
|
4629
4639
|
DEPARTURE_AIRPORTS: 'Vertrekluchthavens',
|
|
4630
4640
|
ARRIVAL_AIRPORTS: 'Aankomstluchthavens',
|
|
4631
|
-
PRICE: 'Prijs'
|
|
4641
|
+
PRICE: 'Prijs',
|
|
4642
|
+
TRAVEL_GROUP: 'Reisgezelschap'
|
|
4632
4643
|
};
|
|
4633
4644
|
var nlNlJson = {
|
|
4634
4645
|
STEPS: STEPS$5,
|
|
@@ -5028,7 +5039,8 @@ var SRP$4 = {
|
|
|
5028
5039
|
DEPARTURE_RANGE: 'Avgangsperiode',
|
|
5029
5040
|
DEPARTURE_AIRPORTS: 'Avgangsflyplasser',
|
|
5030
5041
|
ARRIVAL_AIRPORTS: 'Ankomstflyplasser',
|
|
5031
|
-
PRICE: 'Pris'
|
|
5042
|
+
PRICE: 'Pris',
|
|
5043
|
+
TRAVEL_GROUP: 'Reisefølge'
|
|
5032
5044
|
};
|
|
5033
5045
|
var noJson = {
|
|
5034
5046
|
STEPS: STEPS$4,
|
|
@@ -5428,7 +5440,8 @@ var SRP$3 = {
|
|
|
5428
5440
|
DEPARTURE_RANGE: 'Zakres wylotu',
|
|
5429
5441
|
DEPARTURE_AIRPORTS: 'Lotniska wylotu',
|
|
5430
5442
|
ARRIVAL_AIRPORTS: 'Lotniska przylotu',
|
|
5431
|
-
PRICE: 'Cena'
|
|
5443
|
+
PRICE: 'Cena',
|
|
5444
|
+
TRAVEL_GROUP: 'Grupa podróżnych'
|
|
5432
5445
|
};
|
|
5433
5446
|
var plJson = {
|
|
5434
5447
|
STEPS: STEPS$3,
|
|
@@ -5828,7 +5841,8 @@ var SRP$2 = {
|
|
|
5828
5841
|
DEPARTURE_RANGE: 'Intervalo de partida',
|
|
5829
5842
|
DEPARTURE_AIRPORTS: 'Aeroportos de partida',
|
|
5830
5843
|
ARRIVAL_AIRPORTS: 'Aeroportos de chegada',
|
|
5831
|
-
PRICE: 'Preço'
|
|
5844
|
+
PRICE: 'Preço',
|
|
5845
|
+
TRAVEL_GROUP: 'Grupo de viajantes'
|
|
5832
5846
|
};
|
|
5833
5847
|
var ptJson = {
|
|
5834
5848
|
STEPS: STEPS$2,
|
|
@@ -6228,7 +6242,8 @@ var SRP$1 = {
|
|
|
6228
6242
|
DEPARTURE_RANGE: 'Avgångsintervall',
|
|
6229
6243
|
DEPARTURE_AIRPORTS: 'Avgångsflygplatser',
|
|
6230
6244
|
ARRIVAL_AIRPORTS: 'Ankomstflygplatser',
|
|
6231
|
-
PRICE: 'Pris'
|
|
6245
|
+
PRICE: 'Pris',
|
|
6246
|
+
TRAVEL_GROUP: 'Resesällskap'
|
|
6232
6247
|
};
|
|
6233
6248
|
var svJson = {
|
|
6234
6249
|
STEPS: STEPS$1,
|
|
@@ -6626,7 +6641,8 @@ var SRP = {
|
|
|
6626
6641
|
DEPARTURE_RANGE: '出発時間帯',
|
|
6627
6642
|
DEPARTURE_AIRPORTS: '出発空港',
|
|
6628
6643
|
ARRIVAL_AIRPORTS: '到着空港',
|
|
6629
|
-
PRICE: '価格'
|
|
6644
|
+
PRICE: '価格',
|
|
6645
|
+
TRAVEL_GROUP: '旅行グループ'
|
|
6630
6646
|
};
|
|
6631
6647
|
var jaJson = {
|
|
6632
6648
|
STEPS: STEPS,
|
|
@@ -6833,6 +6849,18 @@ var rangeFromDateTimeInMinutes = function (dateTime) {
|
|
|
6833
6849
|
return exports.DepartureRange.Night;
|
|
6834
6850
|
}
|
|
6835
6851
|
};
|
|
6852
|
+
var calculateNights = function (fromDate, toDate) {
|
|
6853
|
+
var from = new Date(fromDate);
|
|
6854
|
+
var to = new Date(toDate);
|
|
6855
|
+
// Normalize to midnight to avoid time issues
|
|
6856
|
+
from.setHours(0, 0, 0, 0);
|
|
6857
|
+
to.setHours(0, 0, 0, 0);
|
|
6858
|
+
var diffTime = to.getTime() - from.getTime();
|
|
6859
|
+
return diffTime / (1000 * 60 * 60 * 24);
|
|
6860
|
+
};
|
|
6861
|
+
var calculateDays = function (fromDate, toDate) {
|
|
6862
|
+
return calculateNights(fromDate, toDate) + 1;
|
|
6863
|
+
};
|
|
6836
6864
|
|
|
6837
6865
|
var getDateFromParams = function (params, name) {
|
|
6838
6866
|
var dateString = params.get(name);
|
|
@@ -33425,6 +33453,7 @@ var SearchResultsConfigurationContext = React__default['default'].createContext(
|
|
|
33425
33453
|
var _a;
|
|
33426
33454
|
var initialState$1 = {
|
|
33427
33455
|
results: [],
|
|
33456
|
+
filteredResults: [],
|
|
33428
33457
|
selectedHotelId: null,
|
|
33429
33458
|
selectedFlight: null,
|
|
33430
33459
|
selectedFlightDetails: null,
|
|
@@ -33442,7 +33471,10 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33442
33471
|
initialState: initialState$1,
|
|
33443
33472
|
reducers: {
|
|
33444
33473
|
setResults: function (state, action) {
|
|
33445
|
-
state.results = action.payload
|
|
33474
|
+
state.results = action.payload;
|
|
33475
|
+
},
|
|
33476
|
+
setFilteredResults: function (state, action) {
|
|
33477
|
+
state.filteredResults = action.payload;
|
|
33446
33478
|
},
|
|
33447
33479
|
setSelectedHotel: function (state, action) {
|
|
33448
33480
|
state.selectedHotelId = action.payload;
|
|
@@ -33511,6 +33543,7 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33511
33543
|
}
|
|
33512
33544
|
});
|
|
33513
33545
|
var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
33546
|
+
setFilteredResults = _a.setFilteredResults,
|
|
33514
33547
|
setSelectedHotel = _a.setSelectedHotel,
|
|
33515
33548
|
setSelectedFlight = _a.setSelectedFlight,
|
|
33516
33549
|
setSelectedFlightDetails = _a.setSelectedFlightDetails,
|
|
@@ -34527,6 +34560,27 @@ var Icon$1 = function (_a) {
|
|
|
34527
34560
|
fill: 'currentColor'
|
|
34528
34561
|
})
|
|
34529
34562
|
);
|
|
34563
|
+
case 'ui-other':
|
|
34564
|
+
return React__default['default'].createElement(
|
|
34565
|
+
'svg',
|
|
34566
|
+
{
|
|
34567
|
+
className: ['icon', 'icon--'.concat(name), className]
|
|
34568
|
+
.filter(function (className) {
|
|
34569
|
+
return !lodash.isEmpty(className);
|
|
34570
|
+
})
|
|
34571
|
+
.join(' '),
|
|
34572
|
+
width: width,
|
|
34573
|
+
height: height,
|
|
34574
|
+
viewBox: '0 0 640 512',
|
|
34575
|
+
fill: fill !== null && fill !== void 0 ? fill : 'currentColor'
|
|
34576
|
+
},
|
|
34577
|
+
React__default['default'].createElement(HTMLComment, { text: '!Font Awesome Free 6.7.2 - mars-and-venus' }),
|
|
34578
|
+
title && React__default['default'].createElement('title', null, title),
|
|
34579
|
+
React__default['default'].createElement('path', {
|
|
34580
|
+
d: 'M320 32c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50.7-64.2 64.2c19.5 28.4 31 62.7 31 99.8 0 97.2-78.8 176-176 176S32 401.2 32 304s78.8-176 176-176c37.1 0 71.4 11.5 99.8 31l64.2-64.2L320 96c-17.7 0-32-14.3-32-32zM208 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z',
|
|
34581
|
+
fill: 'currentColor'
|
|
34582
|
+
})
|
|
34583
|
+
);
|
|
34530
34584
|
default:
|
|
34531
34585
|
return null;
|
|
34532
34586
|
}
|
|
@@ -38036,7 +38090,9 @@ var mapSearchResult = function (searchResult, cmsItem, languageCode, translation
|
|
|
38036
38090
|
: ((_h = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.parentItem) === null || _h === void 0 ? void 0 : _h.name) || '',
|
|
38037
38091
|
price: formatPrice(searchResult.price, searchResult.currencyCode, languageCode),
|
|
38038
38092
|
ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS,
|
|
38039
|
-
days:
|
|
38093
|
+
days: ''
|
|
38094
|
+
.concat(calculateNights(searchResult.stayFromDate, searchResult.stayToDate), ' ')
|
|
38095
|
+
.concat(translations === null || translations === void 0 ? void 0 : translations.SRP.NIGHTS),
|
|
38040
38096
|
accommodation: searchResult.accommodationName,
|
|
38041
38097
|
regime: searchResult.regimeName,
|
|
38042
38098
|
stars:
|
|
@@ -38045,17 +38101,13 @@ var mapSearchResult = function (searchResult, cmsItem, languageCode, translation
|
|
|
38045
38101
|
: _k.stars) || searchResult.hotelStars
|
|
38046
38102
|
};
|
|
38047
38103
|
};
|
|
38048
|
-
var calculateNights = function (fromDate, toDate, translations) {
|
|
38049
|
-
var from = new Date(fromDate).getTime(); // returns a number
|
|
38050
|
-
var to = new Date(toDate).getTime(); // returns a number
|
|
38051
|
-
var diffTime = Math.abs(to - from);
|
|
38052
|
-
var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
|
38053
|
-
return ''.concat(diffDays, ' ').concat(translations === null || translations === void 0 ? void 0 : translations.SRP.NIGHTS);
|
|
38054
|
-
};
|
|
38055
38104
|
var HotelAccommodationResults = function (_a) {
|
|
38056
38105
|
var _b, _c;
|
|
38057
|
-
var isLoading = _a.isLoading
|
|
38058
|
-
|
|
38106
|
+
var isLoading = _a.isLoading;
|
|
38107
|
+
var context = React.useContext(SearchResultsConfigurationContext);
|
|
38108
|
+
if (!context) {
|
|
38109
|
+
return;
|
|
38110
|
+
}
|
|
38059
38111
|
if (context.showMockup) {
|
|
38060
38112
|
return showMocukups(context);
|
|
38061
38113
|
}
|
|
@@ -38072,9 +38124,9 @@ var HotelAccommodationResults = function (_a) {
|
|
|
38072
38124
|
var _d = reactRedux.useSelector(function (state) {
|
|
38073
38125
|
return state.searchResults;
|
|
38074
38126
|
}),
|
|
38075
|
-
|
|
38127
|
+
filteredResults = _d.filteredResults,
|
|
38076
38128
|
activeTab = _d.activeTab;
|
|
38077
|
-
if (!
|
|
38129
|
+
if (!filteredResults.length) {
|
|
38078
38130
|
return React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS);
|
|
38079
38131
|
}
|
|
38080
38132
|
var cmsMap = React__default['default'].useMemo(
|
|
@@ -38098,7 +38150,7 @@ var HotelAccommodationResults = function (_a) {
|
|
|
38098
38150
|
},
|
|
38099
38151
|
[context.cmsHotelData]
|
|
38100
38152
|
);
|
|
38101
|
-
var firstResult =
|
|
38153
|
+
var firstResult = filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults[0];
|
|
38102
38154
|
var firstResultDay = (firstResult === null || firstResult === void 0 ? void 0 : firstResult.fromDate)
|
|
38103
38155
|
? dateFns.format(dateFns.parseISO(firstResult.fromDate), 'd')
|
|
38104
38156
|
: null;
|
|
@@ -38129,7 +38181,7 @@ var HotelAccommodationResults = function (_a) {
|
|
|
38129
38181
|
)
|
|
38130
38182
|
)
|
|
38131
38183
|
),
|
|
38132
|
-
renderResults(
|
|
38184
|
+
renderResults(filteredResults, context, cmsMap, activeTab, translations)
|
|
38133
38185
|
);
|
|
38134
38186
|
};
|
|
38135
38187
|
var showMocukups = function (context) {
|
|
@@ -38472,12 +38524,11 @@ var RoundTripResults = function () {
|
|
|
38472
38524
|
);
|
|
38473
38525
|
};
|
|
38474
38526
|
|
|
38475
|
-
var enrichFiltersWithResults = function (results, filters) {
|
|
38527
|
+
var enrichFiltersWithResults = function (results, filters, tags) {
|
|
38476
38528
|
if (!results || results.length === 0 || !filters) {
|
|
38477
38529
|
return filters !== null && filters !== void 0 ? filters : [];
|
|
38478
38530
|
}
|
|
38479
|
-
|
|
38480
|
-
var filter = filters_1[_i];
|
|
38531
|
+
var _loop_1 = function (filter) {
|
|
38481
38532
|
if (filter.property === 'price' && (filter.min == null || filter.max == null)) {
|
|
38482
38533
|
var prices = results
|
|
38483
38534
|
.map(function (r) {
|
|
@@ -38492,6 +38543,72 @@ var enrichFiltersWithResults = function (results, filters) {
|
|
|
38492
38543
|
filter.max = Math.ceil(Math.max.apply(Math, prices));
|
|
38493
38544
|
}
|
|
38494
38545
|
}
|
|
38546
|
+
if (filter.property === 'accommodation') {
|
|
38547
|
+
var map_1 = new Map();
|
|
38548
|
+
results.forEach(function (r) {
|
|
38549
|
+
if (r.accommodationCode) {
|
|
38550
|
+
map_1.set(r.accommodationCode, {
|
|
38551
|
+
name: r.accommodationName,
|
|
38552
|
+
code: r.accommodationCode
|
|
38553
|
+
});
|
|
38554
|
+
}
|
|
38555
|
+
});
|
|
38556
|
+
console.log('map', map_1);
|
|
38557
|
+
filter.options = Array.from(map_1.values()).map(function (accommodation) {
|
|
38558
|
+
var _a;
|
|
38559
|
+
return {
|
|
38560
|
+
label: (_a = accommodation.name) !== null && _a !== void 0 ? _a : accommodation.code,
|
|
38561
|
+
value: accommodation.code,
|
|
38562
|
+
isChecked: false
|
|
38563
|
+
};
|
|
38564
|
+
});
|
|
38565
|
+
}
|
|
38566
|
+
if (filter.property === 'regime') {
|
|
38567
|
+
var map_2 = new Map();
|
|
38568
|
+
results.forEach(function (r) {
|
|
38569
|
+
if (r.regimeCode) {
|
|
38570
|
+
map_2.set(r.regimeCode, {
|
|
38571
|
+
name: r.regimeName,
|
|
38572
|
+
code: r.regimeCode
|
|
38573
|
+
});
|
|
38574
|
+
}
|
|
38575
|
+
});
|
|
38576
|
+
filter.options = Array.from(map_2.values()).map(function (regime) {
|
|
38577
|
+
var _a;
|
|
38578
|
+
return {
|
|
38579
|
+
label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
|
|
38580
|
+
value: regime.code,
|
|
38581
|
+
isChecked: false
|
|
38582
|
+
};
|
|
38583
|
+
});
|
|
38584
|
+
}
|
|
38585
|
+
if (filter.property === 'theme') {
|
|
38586
|
+
var map_3 = new Map();
|
|
38587
|
+
results.forEach(function (r) {
|
|
38588
|
+
var _a;
|
|
38589
|
+
(_a = r.tagIds) === null || _a === void 0
|
|
38590
|
+
? void 0
|
|
38591
|
+
: _a.forEach(function (tagId) {
|
|
38592
|
+
var tag = tags.find(function (t) {
|
|
38593
|
+
return t.id === tagId;
|
|
38594
|
+
});
|
|
38595
|
+
if (tag && tag.id != null && tag.name != null) {
|
|
38596
|
+
map_3.set(tag.id, { name: tag.name, id: tag.id });
|
|
38597
|
+
}
|
|
38598
|
+
});
|
|
38599
|
+
});
|
|
38600
|
+
filter.options = Array.from(map_3.values()).map(function (theme) {
|
|
38601
|
+
return {
|
|
38602
|
+
label: theme.name,
|
|
38603
|
+
value: theme.id,
|
|
38604
|
+
isChecked: false
|
|
38605
|
+
};
|
|
38606
|
+
});
|
|
38607
|
+
}
|
|
38608
|
+
};
|
|
38609
|
+
for (var _i = 0, filters_1 = filters; _i < filters_1.length; _i++) {
|
|
38610
|
+
var filter = filters_1[_i];
|
|
38611
|
+
_loop_1(filter);
|
|
38495
38612
|
}
|
|
38496
38613
|
return filters;
|
|
38497
38614
|
};
|
|
@@ -40863,101 +40980,21 @@ var FlightResultsContainer = function (_a) {
|
|
|
40863
40980
|
);
|
|
40864
40981
|
};
|
|
40865
40982
|
|
|
40866
|
-
var initialFilters = [
|
|
40867
|
-
{
|
|
40868
|
-
property: 'regime',
|
|
40869
|
-
label: 'Regime',
|
|
40870
|
-
type: 'checkbox',
|
|
40871
|
-
options: [
|
|
40872
|
-
{
|
|
40873
|
-
label: 'Room only',
|
|
40874
|
-
value: ['RO', 'LO', 'OB'],
|
|
40875
|
-
isChecked: false
|
|
40876
|
-
},
|
|
40877
|
-
{
|
|
40878
|
-
label: 'Bed & Beakfast',
|
|
40879
|
-
value: ['BB', 'KO'],
|
|
40880
|
-
isChecked: false
|
|
40881
|
-
},
|
|
40882
|
-
{
|
|
40883
|
-
label: 'Half board',
|
|
40884
|
-
value: ['HB'],
|
|
40885
|
-
isChecked: false
|
|
40886
|
-
},
|
|
40887
|
-
{
|
|
40888
|
-
label: 'Full board',
|
|
40889
|
-
value: ['FB'],
|
|
40890
|
-
isChecked: false
|
|
40891
|
-
}
|
|
40892
|
-
],
|
|
40893
|
-
isFrontendFilter: false
|
|
40894
|
-
},
|
|
40895
|
-
{
|
|
40896
|
-
property: 'price',
|
|
40897
|
-
label: 'Prijs',
|
|
40898
|
-
type: 'slider',
|
|
40899
|
-
isFrontendFilter: false,
|
|
40900
|
-
min: 2244,
|
|
40901
|
-
max: 6785
|
|
40902
|
-
},
|
|
40903
|
-
{
|
|
40904
|
-
property: 'rating',
|
|
40905
|
-
label: 'Rating',
|
|
40906
|
-
type: 'star-rating',
|
|
40907
|
-
isFrontendFilter: true
|
|
40908
|
-
},
|
|
40909
|
-
{
|
|
40910
|
-
property: 'theme',
|
|
40911
|
-
label: "Thema's",
|
|
40912
|
-
type: 'toggle',
|
|
40913
|
-
options: [
|
|
40914
|
-
{
|
|
40915
|
-
label: 'Adults',
|
|
40916
|
-
value: 1,
|
|
40917
|
-
isChecked: false
|
|
40918
|
-
},
|
|
40919
|
-
{
|
|
40920
|
-
label: 'Luxury',
|
|
40921
|
-
value: 2,
|
|
40922
|
-
isChecked: false
|
|
40923
|
-
},
|
|
40924
|
-
{
|
|
40925
|
-
label: 'Welness & Spa',
|
|
40926
|
-
value: 3,
|
|
40927
|
-
isChecked: false
|
|
40928
|
-
},
|
|
40929
|
-
{
|
|
40930
|
-
label: 'familie',
|
|
40931
|
-
value: 4,
|
|
40932
|
-
isChecked: false
|
|
40933
|
-
}
|
|
40934
|
-
],
|
|
40935
|
-
isFrontendFilter: false
|
|
40936
|
-
}
|
|
40937
|
-
];
|
|
40938
40983
|
var Filters = function (_a) {
|
|
40939
40984
|
var _b;
|
|
40940
|
-
var
|
|
40985
|
+
var initialFilters = _a.initialFilters,
|
|
40986
|
+
filters = _a.filters,
|
|
40941
40987
|
isOpen = _a.isOpen,
|
|
40942
40988
|
handleSetIsOpen = _a.handleSetIsOpen,
|
|
40943
|
-
handleApplyFilters = _a.handleApplyFilters,
|
|
40944
40989
|
isLoading = _a.isLoading;
|
|
40945
40990
|
var context = React.useContext(SearchResultsConfigurationContext);
|
|
40991
|
+
if (!context || !context.showFilters) {
|
|
40992
|
+
return null;
|
|
40993
|
+
}
|
|
40946
40994
|
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
40947
40995
|
var _c = React.useState({}),
|
|
40948
40996
|
visibleFilters = _c[0],
|
|
40949
40997
|
setVisibleFilters = _c[1];
|
|
40950
|
-
var _d = React.useState([]),
|
|
40951
|
-
pendingFilters = _d[0],
|
|
40952
|
-
setPendingFilters = _d[1];
|
|
40953
|
-
React.useEffect(
|
|
40954
|
-
function () {
|
|
40955
|
-
if (initialFilters.length > 0) {
|
|
40956
|
-
setPendingFilters(initialFilters);
|
|
40957
|
-
}
|
|
40958
|
-
},
|
|
40959
|
-
[initialFilters]
|
|
40960
|
-
);
|
|
40961
40998
|
var dispatch = reactRedux.useDispatch();
|
|
40962
40999
|
var toggleFilterVisibility = function (filterId) {
|
|
40963
41000
|
setVisibleFilters(function (prev) {
|
|
@@ -40965,331 +41002,429 @@ var Filters = function (_a) {
|
|
|
40965
41002
|
return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
|
|
40966
41003
|
});
|
|
40967
41004
|
};
|
|
40968
|
-
var updatePendingFilter = function (updatedFilter) {
|
|
40969
|
-
setPendingFilters(function (prevFilters) {
|
|
40970
|
-
var index = prevFilters.findIndex(function (f) {
|
|
40971
|
-
return f.property === updatedFilter.property;
|
|
40972
|
-
});
|
|
40973
|
-
if (index !== -1) {
|
|
40974
|
-
var newFilters = __spreadArray([], prevFilters, true);
|
|
40975
|
-
newFilters[index] = updatedFilter;
|
|
40976
|
-
return newFilters;
|
|
40977
|
-
} else {
|
|
40978
|
-
return __spreadArray(__spreadArray([], prevFilters, true), [updatedFilter], false);
|
|
40979
|
-
}
|
|
40980
|
-
});
|
|
40981
|
-
};
|
|
40982
41005
|
var handleCheckBoxFilter = function (filter, option) {
|
|
40983
|
-
|
|
41006
|
+
var updated = filters.map(function (f) {
|
|
40984
41007
|
var _a;
|
|
40985
|
-
|
|
40986
|
-
|
|
40987
|
-
|
|
40988
|
-
|
|
40989
|
-
|
|
40990
|
-
|
|
40991
|
-
|
|
40992
|
-
|
|
40993
|
-
? void 0
|
|
40994
|
-
: _a.map(function (opt) {
|
|
40995
|
-
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
40996
|
-
})
|
|
40997
|
-
});
|
|
41008
|
+
if (f.property !== filter.property) return f;
|
|
41009
|
+
return __assign(__assign({}, f), {
|
|
41010
|
+
options:
|
|
41011
|
+
(_a = f.options) === null || _a === void 0
|
|
41012
|
+
? void 0
|
|
41013
|
+
: _a.map(function (opt) {
|
|
41014
|
+
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
41015
|
+
})
|
|
40998
41016
|
});
|
|
40999
|
-
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
41000
|
-
dispatch(setFilters(updated));
|
|
41001
|
-
(_a = context === null || context === void 0 ? void 0 : context.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(context, updated);
|
|
41002
|
-
}
|
|
41003
|
-
return updated;
|
|
41004
41017
|
});
|
|
41018
|
+
dispatch(setFilters(updated));
|
|
41005
41019
|
};
|
|
41006
|
-
var
|
|
41007
|
-
var
|
|
41008
|
-
|
|
41009
|
-
|
|
41010
|
-
|
|
41011
|
-
|
|
41012
|
-
applyFilters();
|
|
41013
|
-
}
|
|
41014
|
-
}
|
|
41015
|
-
};
|
|
41016
|
-
var handleSliderMaxChange = function (filter, value) {
|
|
41017
|
-
var _a, _b;
|
|
41018
|
-
if (value > ((_b = (_a = filter.selectedMin) !== null && _a !== void 0 ? _a : filter.min) !== null && _b !== void 0 ? _b : 0)) {
|
|
41019
|
-
var updatedFilter = __assign(__assign({}, filter), { selectedMax: value });
|
|
41020
|
-
updatePendingFilter(updatedFilter);
|
|
41021
|
-
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
41022
|
-
applyFilters();
|
|
41023
|
-
}
|
|
41024
|
-
}
|
|
41025
|
-
};
|
|
41026
|
-
var applyFilters = function () {
|
|
41027
|
-
var _a;
|
|
41028
|
-
dispatch(setFilters(pendingFilters));
|
|
41029
|
-
(_a = context === null || context === void 0 ? void 0 : context.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(context, pendingFilters);
|
|
41030
|
-
handleApplyFilters();
|
|
41031
|
-
if (isOpen) {
|
|
41032
|
-
handleSetIsOpen();
|
|
41033
|
-
}
|
|
41020
|
+
var handleSliderChange = function (filter, newMin, newMax) {
|
|
41021
|
+
var updated = filters.map(function (f) {
|
|
41022
|
+
if (f.property !== filter.property) return f;
|
|
41023
|
+
return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
|
|
41024
|
+
});
|
|
41025
|
+
dispatch(setFilters(updated));
|
|
41034
41026
|
};
|
|
41035
41027
|
var handleFullReset = function () {
|
|
41036
41028
|
if (!isLoading) {
|
|
41037
|
-
setPendingFilters(initialFilters);
|
|
41038
41029
|
dispatch(resetFilters(initialFilters));
|
|
41039
41030
|
}
|
|
41040
41031
|
};
|
|
41041
|
-
var handleResetPendingChanges = function () {
|
|
41042
|
-
setPendingFilters(filters); // ← back to last applied
|
|
41043
|
-
};
|
|
41044
|
-
var hasPendingChanges = function () {
|
|
41045
|
-
return JSON.stringify(pendingFilters) !== JSON.stringify(filters);
|
|
41046
|
-
};
|
|
41047
|
-
if (!context || !context.showFilters) {
|
|
41048
|
-
return null;
|
|
41049
|
-
}
|
|
41050
41032
|
return React__default['default'].createElement(
|
|
41051
|
-
|
|
41052
|
-
|
|
41033
|
+
'div',
|
|
41034
|
+
{ className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
|
|
41035
|
+
React__default['default'].createElement('div', {
|
|
41036
|
+
className: 'search__filters--background',
|
|
41037
|
+
onClick: function () {
|
|
41038
|
+
return handleSetIsOpen();
|
|
41039
|
+
}
|
|
41040
|
+
}),
|
|
41053
41041
|
React__default['default'].createElement(
|
|
41054
|
-
'
|
|
41055
|
-
{
|
|
41056
|
-
|
|
41057
|
-
className: 'search__filters--background',
|
|
41042
|
+
'button',
|
|
41043
|
+
{
|
|
41044
|
+
className: 'search__filters--close',
|
|
41058
41045
|
onClick: function () {
|
|
41059
41046
|
return handleSetIsOpen();
|
|
41060
41047
|
}
|
|
41061
|
-
}
|
|
41062
|
-
React__default['default'].createElement(
|
|
41063
|
-
|
|
41064
|
-
|
|
41065
|
-
|
|
41066
|
-
|
|
41067
|
-
return handleSetIsOpen();
|
|
41068
|
-
}
|
|
41069
|
-
},
|
|
41070
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
41071
|
-
),
|
|
41048
|
+
},
|
|
41049
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
41050
|
+
),
|
|
41051
|
+
React__default['default'].createElement(
|
|
41052
|
+
'div',
|
|
41053
|
+
{ className: 'search__filters' },
|
|
41072
41054
|
React__default['default'].createElement(
|
|
41073
41055
|
'div',
|
|
41074
|
-
{ className: '
|
|
41056
|
+
{ className: 'search__filter-row search__filter__header' },
|
|
41075
41057
|
React__default['default'].createElement(
|
|
41076
41058
|
'div',
|
|
41077
|
-
{ className: 'search__filter-row
|
|
41059
|
+
{ className: 'search__filter-row-flex-title' },
|
|
41060
|
+
React__default['default'].createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
|
|
41061
|
+
),
|
|
41062
|
+
!isLoading &&
|
|
41078
41063
|
React__default['default'].createElement(
|
|
41079
|
-
'
|
|
41080
|
-
{
|
|
41081
|
-
|
|
41082
|
-
|
|
41083
|
-
|
|
41064
|
+
'a',
|
|
41065
|
+
{
|
|
41066
|
+
className: 'search__filter-reset',
|
|
41067
|
+
onClick: function () {
|
|
41068
|
+
return handleFullReset();
|
|
41069
|
+
}
|
|
41070
|
+
},
|
|
41071
|
+
translations.SRP.RESET
|
|
41072
|
+
)
|
|
41073
|
+
),
|
|
41074
|
+
isLoading
|
|
41075
|
+
? React__default['default'].createElement(Spinner, null)
|
|
41076
|
+
: React__default['default'].createElement(
|
|
41077
|
+
React__default['default'].Fragment,
|
|
41078
|
+
null,
|
|
41084
41079
|
React__default['default'].createElement(
|
|
41085
|
-
'
|
|
41086
|
-
{
|
|
41087
|
-
|
|
41088
|
-
|
|
41089
|
-
|
|
41090
|
-
|
|
41091
|
-
|
|
41092
|
-
|
|
41093
|
-
|
|
41094
|
-
),
|
|
41095
|
-
isLoading
|
|
41096
|
-
? React__default['default'].createElement(Spinner, null)
|
|
41097
|
-
: React__default['default'].createElement(
|
|
41098
|
-
React__default['default'].Fragment,
|
|
41099
|
-
null,
|
|
41100
|
-
React__default['default'].createElement(
|
|
41101
|
-
'div',
|
|
41102
|
-
{ className: 'search__filters__group-container' },
|
|
41103
|
-
pendingFilters.map(function (filter, index) {
|
|
41104
|
-
var _a, _b;
|
|
41105
|
-
var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
|
|
41106
|
-
return React__default['default'].createElement(
|
|
41080
|
+
'div',
|
|
41081
|
+
{ className: 'search__filters__group-container' },
|
|
41082
|
+
filters.map(function (filter, index) {
|
|
41083
|
+
var _a, _b;
|
|
41084
|
+
var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
|
|
41085
|
+
return React__default['default'].createElement(
|
|
41086
|
+
'div',
|
|
41087
|
+
{ key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
|
|
41088
|
+
React__default['default'].createElement(
|
|
41107
41089
|
'div',
|
|
41108
|
-
{
|
|
41090
|
+
{
|
|
41091
|
+
className: 'search__filter-row search__filter-row--underline',
|
|
41092
|
+
onClick: function () {
|
|
41093
|
+
return toggleFilterVisibility(filter.property);
|
|
41094
|
+
},
|
|
41095
|
+
role: 'button',
|
|
41096
|
+
tabIndex: 0
|
|
41097
|
+
},
|
|
41098
|
+
React__default['default'].createElement('h6', { className: 'search__filter-large-title' }, filter.label),
|
|
41109
41099
|
React__default['default'].createElement(
|
|
41110
|
-
'
|
|
41100
|
+
'svg',
|
|
41111
41101
|
{
|
|
41112
|
-
|
|
41113
|
-
|
|
41114
|
-
|
|
41115
|
-
|
|
41116
|
-
|
|
41117
|
-
tabIndex: 0
|
|
41102
|
+
id: 'search-chevron-up-icon',
|
|
41103
|
+
className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
|
|
41104
|
+
viewBox: '0 0 10 6.063',
|
|
41105
|
+
width: 10,
|
|
41106
|
+
height: 6.063
|
|
41118
41107
|
},
|
|
41119
|
-
React__default['default'].createElement('
|
|
41120
|
-
|
|
41121
|
-
'
|
|
41122
|
-
|
|
41123
|
-
|
|
41124
|
-
|
|
41125
|
-
|
|
41126
|
-
|
|
41127
|
-
|
|
41128
|
-
|
|
41129
|
-
|
|
41130
|
-
|
|
41131
|
-
|
|
41132
|
-
|
|
41133
|
-
|
|
41134
|
-
|
|
41108
|
+
React__default['default'].createElement('path', {
|
|
41109
|
+
id: 'Path_62',
|
|
41110
|
+
'data-name': 'Path 62',
|
|
41111
|
+
d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
|
|
41112
|
+
transform: 'translate(-240 624)',
|
|
41113
|
+
fill: '#707070'
|
|
41114
|
+
})
|
|
41115
|
+
)
|
|
41116
|
+
),
|
|
41117
|
+
isVisible &&
|
|
41118
|
+
filter.type === 'checkbox' &&
|
|
41119
|
+
React__default['default'].createElement(
|
|
41120
|
+
'div',
|
|
41121
|
+
{ className: 'search__filter-rows' },
|
|
41122
|
+
filter.options &&
|
|
41123
|
+
filter.options.map(function (option, optionIndex) {
|
|
41124
|
+
return React__default['default'].createElement(
|
|
41125
|
+
'div',
|
|
41126
|
+
{ className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
41127
|
+
React__default['default'].createElement(
|
|
41128
|
+
'div',
|
|
41129
|
+
{ className: 'checkbox' },
|
|
41130
|
+
React__default['default'].createElement(
|
|
41131
|
+
'label',
|
|
41132
|
+
{ className: 'checkbox__label' },
|
|
41133
|
+
React__default['default'].createElement('input', {
|
|
41134
|
+
type: 'checkbox',
|
|
41135
|
+
className: 'checkbox__input checkbox__input--parent',
|
|
41136
|
+
checked: option.isChecked,
|
|
41137
|
+
onChange: function (e) {
|
|
41138
|
+
return handleCheckBoxFilter(filter, option);
|
|
41139
|
+
}
|
|
41140
|
+
}),
|
|
41141
|
+
React__default['default'].createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
41142
|
+
)
|
|
41143
|
+
)
|
|
41144
|
+
);
|
|
41135
41145
|
})
|
|
41136
|
-
)
|
|
41137
41146
|
),
|
|
41138
|
-
|
|
41139
|
-
|
|
41140
|
-
|
|
41141
|
-
|
|
41142
|
-
|
|
41143
|
-
|
|
41144
|
-
|
|
41147
|
+
isVisible &&
|
|
41148
|
+
filter.type === 'toggle' &&
|
|
41149
|
+
React__default['default'].createElement(
|
|
41150
|
+
'div',
|
|
41151
|
+
{ className: 'search__filter-rows' },
|
|
41152
|
+
(_b = filter.options) === null || _b === void 0
|
|
41153
|
+
? void 0
|
|
41154
|
+
: _b.map(function (option, optionIndex) {
|
|
41145
41155
|
return React__default['default'].createElement(
|
|
41146
41156
|
'div',
|
|
41147
|
-
{ className: 'search__filter-row
|
|
41157
|
+
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
41158
|
+
React__default['default'].createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
41159
|
+
React__default['default'].createElement('div', { className: 'checkbox' }),
|
|
41148
41160
|
React__default['default'].createElement(
|
|
41149
|
-
'
|
|
41150
|
-
{ className: '
|
|
41151
|
-
React__default['default'].createElement(
|
|
41152
|
-
'
|
|
41153
|
-
|
|
41154
|
-
|
|
41155
|
-
|
|
41156
|
-
|
|
41157
|
-
|
|
41158
|
-
|
|
41159
|
-
return handleCheckBoxFilter(filter, option);
|
|
41160
|
-
}
|
|
41161
|
-
}),
|
|
41162
|
-
React__default['default'].createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
41163
|
-
)
|
|
41161
|
+
'label',
|
|
41162
|
+
{ className: 'checkbox__label' },
|
|
41163
|
+
React__default['default'].createElement('input', {
|
|
41164
|
+
type: 'checkbox',
|
|
41165
|
+
className: 'checkbox__input',
|
|
41166
|
+
checked: option.isChecked,
|
|
41167
|
+
onChange: function () {
|
|
41168
|
+
return handleCheckBoxFilter(filter, option);
|
|
41169
|
+
}
|
|
41170
|
+
})
|
|
41164
41171
|
)
|
|
41165
41172
|
);
|
|
41166
41173
|
})
|
|
41167
|
-
),
|
|
41168
|
-
isVisible &&
|
|
41169
|
-
filter.type === 'toggle' &&
|
|
41170
|
-
React__default['default'].createElement(
|
|
41171
|
-
'div',
|
|
41172
|
-
{ className: 'search__filter-rows' },
|
|
41173
|
-
(_b = filter.options) === null || _b === void 0
|
|
41174
|
-
? void 0
|
|
41175
|
-
: _b.map(function (option, optionIndex) {
|
|
41176
|
-
return React__default['default'].createElement(
|
|
41177
|
-
'div',
|
|
41178
|
-
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
41179
|
-
React__default['default'].createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
41180
|
-
React__default['default'].createElement('div', { className: 'checkbox' }),
|
|
41181
|
-
React__default['default'].createElement(
|
|
41182
|
-
'label',
|
|
41183
|
-
{ className: 'checkbox__label' },
|
|
41184
|
-
React__default['default'].createElement('input', {
|
|
41185
|
-
type: 'checkbox',
|
|
41186
|
-
className: 'checkbox__input',
|
|
41187
|
-
checked: option.isChecked,
|
|
41188
|
-
onChange: function () {
|
|
41189
|
-
return handleCheckBoxFilter(filter, option);
|
|
41190
|
-
}
|
|
41191
|
-
})
|
|
41192
|
-
)
|
|
41193
|
-
);
|
|
41194
|
-
})
|
|
41195
|
-
),
|
|
41196
|
-
isVisible &&
|
|
41197
|
-
filter &&
|
|
41198
|
-
filter.type === 'slider' &&
|
|
41199
|
-
(function () {
|
|
41200
|
-
var _a, _b, _c, _d;
|
|
41201
|
-
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
41202
|
-
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
41203
|
-
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
41204
|
-
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
41205
|
-
return React__default['default'].createElement(MultiRangeFilter, {
|
|
41206
|
-
min: min,
|
|
41207
|
-
max: max,
|
|
41208
|
-
selectedMin: selectedMin,
|
|
41209
|
-
selectedMax: selectedMax,
|
|
41210
|
-
valueFormatter: function (value) {
|
|
41211
|
-
return ''.concat(value);
|
|
41212
|
-
},
|
|
41213
|
-
onChange: function (newMin, newMax) {
|
|
41214
|
-
handleSliderMinChange(filter, newMin);
|
|
41215
|
-
handleSliderMaxChange(filter, newMax);
|
|
41216
|
-
}
|
|
41217
|
-
});
|
|
41218
|
-
})(),
|
|
41219
|
-
isVisible &&
|
|
41220
|
-
filter.property === 'rating' &&
|
|
41221
|
-
filter.type === 'star-rating' &&
|
|
41222
|
-
(function () {
|
|
41223
|
-
var _a;
|
|
41224
|
-
var selectedRating = (_a = filter.selectedRating) !== null && _a !== void 0 ? _a : 0;
|
|
41225
|
-
var handleRatingChange = function (rating) {
|
|
41226
|
-
var updatedFilter = __assign(__assign({}, filter), { selectedRating: rating });
|
|
41227
|
-
updatePendingFilter(updatedFilter);
|
|
41228
|
-
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
41229
|
-
applyFilters();
|
|
41230
|
-
}
|
|
41231
|
-
};
|
|
41232
|
-
return React__default['default'].createElement(
|
|
41233
|
-
'div',
|
|
41234
|
-
{ className: 'search__filter-row star-rating-filter' },
|
|
41235
|
-
[5, 4, 3, 2, 1].map(function (star) {
|
|
41236
|
-
return React__default['default'].createElement(
|
|
41237
|
-
'span',
|
|
41238
|
-
{
|
|
41239
|
-
key: star,
|
|
41240
|
-
className: 'star '.concat(star <= selectedRating ? 'filled' : ''),
|
|
41241
|
-
onClick: function () {
|
|
41242
|
-
return handleRatingChange(star);
|
|
41243
|
-
},
|
|
41244
|
-
role: 'button',
|
|
41245
|
-
tabIndex: 0,
|
|
41246
|
-
onKeyDown: function (e) {
|
|
41247
|
-
if (e.key === 'Enter' || e.key === ' ') handleRatingChange(star);
|
|
41248
|
-
}
|
|
41249
|
-
},
|
|
41250
|
-
'\u2605'
|
|
41251
|
-
);
|
|
41252
|
-
})
|
|
41253
|
-
);
|
|
41254
|
-
})()
|
|
41255
|
-
);
|
|
41256
|
-
}),
|
|
41257
|
-
context.useGlobalApplyFilterButton &&
|
|
41258
|
-
hasPendingChanges() &&
|
|
41259
|
-
React__default['default'].createElement(
|
|
41260
|
-
'div',
|
|
41261
|
-
{ className: 'search__filters__actions' },
|
|
41262
|
-
React__default['default'].createElement(
|
|
41263
|
-
'button',
|
|
41264
|
-
{
|
|
41265
|
-
className: 'cta--secondary ',
|
|
41266
|
-
onClick: function () {
|
|
41267
|
-
handleResetPendingChanges();
|
|
41268
|
-
handleSetIsOpen();
|
|
41269
|
-
},
|
|
41270
|
-
disabled: isLoading
|
|
41271
|
-
},
|
|
41272
|
-
translations.SRP.CANCEL
|
|
41273
41174
|
),
|
|
41274
|
-
|
|
41275
|
-
|
|
41276
|
-
|
|
41277
|
-
|
|
41278
|
-
|
|
41279
|
-
|
|
41175
|
+
isVisible &&
|
|
41176
|
+
filter &&
|
|
41177
|
+
filter.type === 'slider' &&
|
|
41178
|
+
(function () {
|
|
41179
|
+
var _a, _b, _c, _d;
|
|
41180
|
+
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
41181
|
+
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
41182
|
+
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
41183
|
+
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
41184
|
+
return React__default['default'].createElement(MultiRangeFilter, {
|
|
41185
|
+
min: min,
|
|
41186
|
+
max: max,
|
|
41187
|
+
selectedMin: selectedMin,
|
|
41188
|
+
selectedMax: selectedMax,
|
|
41189
|
+
valueFormatter: function (value) {
|
|
41190
|
+
return ''.concat(value);
|
|
41280
41191
|
},
|
|
41281
|
-
|
|
41282
|
-
|
|
41283
|
-
|
|
41284
|
-
|
|
41285
|
-
|
|
41192
|
+
onChange: function (newMin, newMax) {
|
|
41193
|
+
handleSliderChange(filter, newMin, newMax);
|
|
41194
|
+
}
|
|
41195
|
+
});
|
|
41196
|
+
})()
|
|
41197
|
+
);
|
|
41198
|
+
})
|
|
41199
|
+
)
|
|
41200
|
+
)
|
|
41201
|
+
)
|
|
41202
|
+
);
|
|
41203
|
+
};
|
|
41204
|
+
|
|
41205
|
+
var GroupTourCard = function (_a) {
|
|
41206
|
+
var _b;
|
|
41207
|
+
var result = _a.result,
|
|
41208
|
+
languageCode = _a.languageCode;
|
|
41209
|
+
var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
|
|
41210
|
+
var genders = ((_b = result.allotment) === null || _b === void 0 ? void 0 : _b.travellerGenders) || [];
|
|
41211
|
+
var maleCount = genders.filter(function (g) {
|
|
41212
|
+
return g === 0;
|
|
41213
|
+
}).length;
|
|
41214
|
+
var femaleCount = genders.filter(function (g) {
|
|
41215
|
+
return g === 1;
|
|
41216
|
+
}).length;
|
|
41217
|
+
var otherCount = genders.filter(function (g) {
|
|
41218
|
+
return g === 2;
|
|
41219
|
+
}).length;
|
|
41220
|
+
return React__default['default'].createElement(
|
|
41221
|
+
'div',
|
|
41222
|
+
{ className: 'search__result-card' },
|
|
41223
|
+
React__default['default'].createElement(
|
|
41224
|
+
'div',
|
|
41225
|
+
{ className: 'search__result-card__allotment' },
|
|
41226
|
+
React__default['default'].createElement(
|
|
41227
|
+
'div',
|
|
41228
|
+
{ className: 'search__result-card__allotment__title__wrapper' },
|
|
41229
|
+
React__default['default'].createElement(
|
|
41230
|
+
'h3',
|
|
41231
|
+
{ className: 'search__result-card__allotment__title' },
|
|
41232
|
+
result.name,
|
|
41233
|
+
React__default['default'].createElement(
|
|
41234
|
+
'span',
|
|
41235
|
+
{ className: 'search__result-card__allotment__badge' },
|
|
41236
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-circle-check', width: 14, height: 14 }),
|
|
41237
|
+
'GAR'
|
|
41238
|
+
)
|
|
41239
|
+
),
|
|
41240
|
+
React__default['default'].createElement(
|
|
41241
|
+
'div',
|
|
41242
|
+
{ className: 'search__result-card__allotment__container' },
|
|
41243
|
+
React__default['default'].createElement(
|
|
41244
|
+
'div',
|
|
41245
|
+
{ className: 'search__result-card__allotment__header' },
|
|
41246
|
+
React__default['default'].createElement(
|
|
41247
|
+
'div',
|
|
41248
|
+
{ className: 'search__result-card__allotment__wrapper' },
|
|
41249
|
+
React__default['default'].createElement(
|
|
41250
|
+
'div',
|
|
41251
|
+
{ className: 'search__result-card__allotment__date' },
|
|
41252
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-plane', height: 16 }),
|
|
41253
|
+
React__default['default'].createElement(
|
|
41254
|
+
'div',
|
|
41255
|
+
{ className: 'search__result-card__allotment__date--from' },
|
|
41256
|
+
dateFns.format(new Date(result.fromDate), 'dd/MM/yyyy')
|
|
41257
|
+
)
|
|
41258
|
+
),
|
|
41259
|
+
React__default['default'].createElement(
|
|
41260
|
+
'div',
|
|
41261
|
+
{ className: 'search__result-card__allotment__info' },
|
|
41262
|
+
React__default['default'].createElement('span', null, React__default['default'].createElement(Icon$1, { name: 'ui-calendar', height: 16 })),
|
|
41263
|
+
' ',
|
|
41264
|
+
calculateDays(result.stayFromDate, result.stayToDate),
|
|
41265
|
+
' ',
|
|
41266
|
+
translations.PRODUCT.DAYS,
|
|
41267
|
+
' -',
|
|
41268
|
+
' ',
|
|
41269
|
+
React__default['default'].createElement('span', null, React__default['default'].createElement(Icon$1, { name: 'ui-moon', height: 16 })),
|
|
41270
|
+
calculateNights(result.stayFromDate, result.stayToDate),
|
|
41271
|
+
' ',
|
|
41272
|
+
translations.SRP.NIGHTS
|
|
41273
|
+
)
|
|
41274
|
+
)
|
|
41275
|
+
),
|
|
41276
|
+
result.allotment &&
|
|
41277
|
+
React__default['default'].createElement(
|
|
41278
|
+
'div',
|
|
41279
|
+
{ className: 'search__result-card__allotment__info' },
|
|
41280
|
+
React__default['default'].createElement(
|
|
41281
|
+
'span',
|
|
41282
|
+
{ className: 'search__result-card__allotment__info__group' },
|
|
41283
|
+
translations === null || translations === void 0 ? void 0 : translations.SRP.TRAVEL_GROUP
|
|
41284
|
+
),
|
|
41285
|
+
React__default['default'].createElement(
|
|
41286
|
+
'div',
|
|
41287
|
+
{ className: 'search__result-card__allotment__persons' },
|
|
41288
|
+
React__default['default'].createElement(
|
|
41289
|
+
'div',
|
|
41290
|
+
{ className: 'search__result-card__allotment__person' },
|
|
41291
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-men', width: 16, height: 16 }),
|
|
41292
|
+
React__default['default'].createElement('span', null, maleCount, ' p.')
|
|
41293
|
+
),
|
|
41294
|
+
React__default['default'].createElement(
|
|
41295
|
+
'div',
|
|
41296
|
+
{ className: 'search__result-card__allotment__person' },
|
|
41297
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-women', width: 16, height: 16 }),
|
|
41298
|
+
React__default['default'].createElement('span', null, femaleCount, ' p.')
|
|
41299
|
+
),
|
|
41300
|
+
React__default['default'].createElement(
|
|
41301
|
+
'div',
|
|
41302
|
+
{ className: 'search__result-card__allotment__person' },
|
|
41303
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-other', width: 16, height: 16 }),
|
|
41304
|
+
React__default['default'].createElement('span', null, otherCount, ' p.')
|
|
41305
|
+
)
|
|
41286
41306
|
)
|
|
41287
41307
|
)
|
|
41308
|
+
)
|
|
41309
|
+
),
|
|
41310
|
+
React__default['default'].createElement(
|
|
41311
|
+
'div',
|
|
41312
|
+
{ className: 'search__result-card__allotment__footer' },
|
|
41313
|
+
React__default['default'].createElement(
|
|
41314
|
+
'div',
|
|
41315
|
+
{ className: 'search__result-card__allotment__price__wrapper' },
|
|
41316
|
+
React__default['default'].createElement(
|
|
41317
|
+
'div',
|
|
41318
|
+
{ className: 'search__result-card__allotment__price' },
|
|
41319
|
+
formatPrice(result.price, result.currencyCode, languageCode),
|
|
41320
|
+
' ',
|
|
41321
|
+
translations.PRODUCT.PER_PERSON
|
|
41322
|
+
)
|
|
41323
|
+
),
|
|
41324
|
+
React__default['default'].createElement('button', { className: 'cta cta--select' }, 'Bekijk reis')
|
|
41288
41325
|
)
|
|
41289
41326
|
)
|
|
41290
41327
|
);
|
|
41291
41328
|
};
|
|
41292
41329
|
|
|
41330
|
+
var GroupTourResults = function (_a) {
|
|
41331
|
+
var _b, _c;
|
|
41332
|
+
var isLoading = _a.isLoading;
|
|
41333
|
+
var context = React.useContext(SearchResultsConfigurationContext);
|
|
41334
|
+
if (!context) {
|
|
41335
|
+
return;
|
|
41336
|
+
}
|
|
41337
|
+
if (isLoading) {
|
|
41338
|
+
return React__default['default'].createElement(
|
|
41339
|
+
React__default['default'].Fragment,
|
|
41340
|
+
null,
|
|
41341
|
+
(_b = context.customSpinner) !== null && _b !== void 0 ? _b : React__default['default'].createElement(Spinner, null)
|
|
41342
|
+
);
|
|
41343
|
+
}
|
|
41344
|
+
var translations = getTranslations((_c = context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB');
|
|
41345
|
+
var _d = reactRedux.useSelector(function (state) {
|
|
41346
|
+
return state.searchResults;
|
|
41347
|
+
}),
|
|
41348
|
+
filteredResults = _d.filteredResults;
|
|
41349
|
+
_d.activeTab;
|
|
41350
|
+
if (lodash.isEmpty(filteredResults)) {
|
|
41351
|
+
return React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS);
|
|
41352
|
+
}
|
|
41353
|
+
return React__default['default'].createElement(
|
|
41354
|
+
'div',
|
|
41355
|
+
{ className: 'search__results__cards search__results__cards--list' },
|
|
41356
|
+
filteredResults.map(function (result, index) {
|
|
41357
|
+
return React__default['default'].createElement(GroupTourCard, { key: index, result: result });
|
|
41358
|
+
})
|
|
41359
|
+
);
|
|
41360
|
+
};
|
|
41361
|
+
|
|
41362
|
+
var applyFilters = function (results, filters) {
|
|
41363
|
+
return results.filter(function (r) {
|
|
41364
|
+
return filters.every(function (filter) {
|
|
41365
|
+
var _a, _b, _c, _d;
|
|
41366
|
+
if (!filter.isFrontendFilter) return true;
|
|
41367
|
+
// ACCOMMODATION
|
|
41368
|
+
if (filter.property === 'accommodation') {
|
|
41369
|
+
var selected =
|
|
41370
|
+
(_a = filter.options) === null || _a === void 0
|
|
41371
|
+
? void 0
|
|
41372
|
+
: _a
|
|
41373
|
+
.filter(function (o) {
|
|
41374
|
+
return o.isChecked;
|
|
41375
|
+
})
|
|
41376
|
+
.map(function (o) {
|
|
41377
|
+
return o.value;
|
|
41378
|
+
});
|
|
41379
|
+
if (!selected || selected.length === 0) return true;
|
|
41380
|
+
return selected.includes(r.accommodationCode);
|
|
41381
|
+
}
|
|
41382
|
+
// REGIME
|
|
41383
|
+
if (filter.property === 'regime') {
|
|
41384
|
+
var selected =
|
|
41385
|
+
(_b = filter.options) === null || _b === void 0
|
|
41386
|
+
? void 0
|
|
41387
|
+
: _b
|
|
41388
|
+
.filter(function (o) {
|
|
41389
|
+
return o.isChecked;
|
|
41390
|
+
})
|
|
41391
|
+
.map(function (o) {
|
|
41392
|
+
return o.value;
|
|
41393
|
+
});
|
|
41394
|
+
if (!selected || selected.length === 0) return true;
|
|
41395
|
+
if (!r.regimeCode) return false;
|
|
41396
|
+
return selected.includes(r.regimeCode);
|
|
41397
|
+
}
|
|
41398
|
+
// PRICE
|
|
41399
|
+
if (filter.property === 'price') {
|
|
41400
|
+
if (filter.selectedMin != null && r.price < filter.selectedMin) return false;
|
|
41401
|
+
if (filter.selectedMax != null && r.price > filter.selectedMax) return false;
|
|
41402
|
+
return true;
|
|
41403
|
+
}
|
|
41404
|
+
// THEME
|
|
41405
|
+
if (filter.property === 'theme') {
|
|
41406
|
+
var selected_1 =
|
|
41407
|
+
(_c = filter.options) === null || _c === void 0
|
|
41408
|
+
? void 0
|
|
41409
|
+
: _c
|
|
41410
|
+
.filter(function (o) {
|
|
41411
|
+
return o.isChecked;
|
|
41412
|
+
})
|
|
41413
|
+
.map(function (o) {
|
|
41414
|
+
return o.value;
|
|
41415
|
+
});
|
|
41416
|
+
if (!selected_1 || selected_1.length === 0) return true;
|
|
41417
|
+
return (_d = r.tagIds) === null || _d === void 0
|
|
41418
|
+
? void 0
|
|
41419
|
+
: _d.some(function (tagId) {
|
|
41420
|
+
return selected_1.includes(tagId);
|
|
41421
|
+
});
|
|
41422
|
+
}
|
|
41423
|
+
return true;
|
|
41424
|
+
});
|
|
41425
|
+
});
|
|
41426
|
+
};
|
|
41427
|
+
|
|
41293
41428
|
var SearchResultsContainer = function () {
|
|
41294
41429
|
var _a;
|
|
41295
41430
|
var dispatch = reactRedux.useDispatch();
|
|
@@ -41299,6 +41434,7 @@ var SearchResultsContainer = function () {
|
|
|
41299
41434
|
return state.searchResults;
|
|
41300
41435
|
}),
|
|
41301
41436
|
results = _b.results,
|
|
41437
|
+
filteredResults = _b.filteredResults,
|
|
41302
41438
|
bookingPackageDetails = _b.bookingPackageDetails,
|
|
41303
41439
|
entry = _b.entry,
|
|
41304
41440
|
isLoading = _b.isLoading,
|
|
@@ -41307,21 +41443,18 @@ var SearchResultsContainer = function () {
|
|
|
41307
41443
|
selectedHotelId = _b.selectedHotelId,
|
|
41308
41444
|
flyInIsOpen = _b.flyInIsOpen;
|
|
41309
41445
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
41310
|
-
var _c = React.useState(
|
|
41311
|
-
|
|
41312
|
-
|
|
41313
|
-
var _d = React.useState(
|
|
41314
|
-
|
|
41315
|
-
|
|
41316
|
-
var _e = React.useState(
|
|
41317
|
-
|
|
41318
|
-
|
|
41446
|
+
var _c = React.useState(false),
|
|
41447
|
+
initialFiltersSet = _c[0],
|
|
41448
|
+
setInitialFiltersSet = _c[1];
|
|
41449
|
+
var _d = React.useState([]),
|
|
41450
|
+
initialFilters = _d[0],
|
|
41451
|
+
setInitialFilters = _d[1];
|
|
41452
|
+
var _e = React.useState(false),
|
|
41453
|
+
filtersOpen = _e[0],
|
|
41454
|
+
setFiltersOpen = _e[1];
|
|
41319
41455
|
var _f = React.useState(false),
|
|
41320
|
-
|
|
41321
|
-
|
|
41322
|
-
var _g = React.useState(false),
|
|
41323
|
-
itineraryOpen = _g[0],
|
|
41324
|
-
setItineraryOpen = _g[1];
|
|
41456
|
+
itineraryOpen = _f[0],
|
|
41457
|
+
setItineraryOpen = _f[1];
|
|
41325
41458
|
var panelRef = React.useRef(null);
|
|
41326
41459
|
var sortByTypes = [
|
|
41327
41460
|
{ direction: 'asc', label: 'price' },
|
|
@@ -41425,7 +41558,6 @@ var SearchResultsContainer = function () {
|
|
|
41425
41558
|
var city = getNumberFromParams(params, 'location');
|
|
41426
41559
|
var hotel = getNumberFromParams(params, 'hotel');
|
|
41427
41560
|
var tagId = getNumberFromParams(params, 'tagId');
|
|
41428
|
-
// temp hardcoded params
|
|
41429
41561
|
if (!from || !to) {
|
|
41430
41562
|
console.error('Missing fromDate or toDate in query params, using default values');
|
|
41431
41563
|
return null;
|
|
@@ -41455,8 +41587,9 @@ var SearchResultsContainer = function () {
|
|
|
41455
41587
|
officeId: 1,
|
|
41456
41588
|
payload: {
|
|
41457
41589
|
catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
|
|
41458
|
-
serviceType:
|
|
41459
|
-
|
|
41590
|
+
serviceType:
|
|
41591
|
+
context.type === 'hotel' || context.type === 'hotel-flight' ? 3 : context.type === 'flight' ? 7 : context.type === 'roundTrip' ? 1 : undefined,
|
|
41592
|
+
searchType: context.type === 'groupTour' ? 1 : 0,
|
|
41460
41593
|
destination: {
|
|
41461
41594
|
id: Number(destinationId),
|
|
41462
41595
|
isCountry: destinationIsCountry,
|
|
@@ -41477,7 +41610,7 @@ var SearchResultsContainer = function () {
|
|
|
41477
41610
|
// .flatMap((o) => o.value.toString()) || [],
|
|
41478
41611
|
// minPrice: filters.find((f) => f.property === 'price')?.selectedMin,
|
|
41479
41612
|
// maxPrice: filters.find((f) => f.property === 'price')?.selectedMax,
|
|
41480
|
-
useExactDates: true,
|
|
41613
|
+
useExactDates: (context === null || context === void 0 ? void 0 : context.type) === 'groupTour' ? false : true,
|
|
41481
41614
|
onlyCachedResults: false,
|
|
41482
41615
|
includeAllAllotments: true,
|
|
41483
41616
|
productIds: hotel ? [hotel] : [],
|
|
@@ -41553,17 +41686,17 @@ var SearchResultsContainer = function () {
|
|
|
41553
41686
|
// seperate Search
|
|
41554
41687
|
React.useEffect(
|
|
41555
41688
|
function () {
|
|
41556
|
-
var
|
|
41689
|
+
var runSearch = function () {
|
|
41557
41690
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
41558
|
-
var config, params, entryId, entryLight, searchRequest, rq, packageSearchResults, enrichedFilters, matching, err_1;
|
|
41559
|
-
var _a;
|
|
41560
|
-
return __generator(this, function (
|
|
41561
|
-
switch (
|
|
41691
|
+
var config, params, entryId, entryLight, searchRequest, rq, packageSearchResults, enrichedFilters, initialFilteredResults, matching, err_1;
|
|
41692
|
+
var _a, _b;
|
|
41693
|
+
return __generator(this, function (_c) {
|
|
41694
|
+
switch (_c.label) {
|
|
41562
41695
|
case 0:
|
|
41563
41696
|
dispatch(setIsLoading(true));
|
|
41564
|
-
|
|
41697
|
+
_c.label = 1;
|
|
41565
41698
|
case 1:
|
|
41566
|
-
|
|
41699
|
+
_c.trys.push([1, 6, , 7]);
|
|
41567
41700
|
if (!context) {
|
|
41568
41701
|
return [2 /*return*/];
|
|
41569
41702
|
}
|
|
@@ -41578,7 +41711,7 @@ var SearchResultsContainer = function () {
|
|
|
41578
41711
|
if (!entryId) return [3 /*break*/, 3];
|
|
41579
41712
|
return [4 /*yield*/, build.getEntryLight(config, entryId)];
|
|
41580
41713
|
case 2:
|
|
41581
|
-
entryLight =
|
|
41714
|
+
entryLight = _c.sent();
|
|
41582
41715
|
// populate itinerary store
|
|
41583
41716
|
dispatch(setEntry({ entry: entryLight }));
|
|
41584
41717
|
searchRequest = buildSearchFromEntry(entryLight);
|
|
@@ -41589,19 +41722,21 @@ var SearchResultsContainer = function () {
|
|
|
41589
41722
|
throw new Error('Invalid search parameters');
|
|
41590
41723
|
}
|
|
41591
41724
|
searchRequest = rq;
|
|
41592
|
-
|
|
41725
|
+
_c.label = 4;
|
|
41593
41726
|
case 4:
|
|
41594
41727
|
return [4 /*yield*/, build.search(config, searchRequest)];
|
|
41595
41728
|
case 5:
|
|
41596
|
-
packageSearchResults =
|
|
41729
|
+
packageSearchResults = _c.sent();
|
|
41597
41730
|
console.log('Search results', packageSearchResults);
|
|
41598
|
-
enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters);
|
|
41731
|
+
enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
41599
41732
|
if (!initialFiltersSet) {
|
|
41600
41733
|
dispatch(resetFilters(enrichedFilters));
|
|
41601
41734
|
setInitialFilters(enrichedFilters);
|
|
41602
41735
|
setInitialFiltersSet(true);
|
|
41603
41736
|
}
|
|
41604
|
-
dispatch(setResults(
|
|
41737
|
+
dispatch(setResults(packageSearchResults));
|
|
41738
|
+
initialFilteredResults = applyFilters(packageSearchResults, filters);
|
|
41739
|
+
dispatch(setFilteredResults(initialFilteredResults));
|
|
41605
41740
|
if ((packageSearchResults === null || packageSearchResults === void 0 ? void 0 : packageSearchResults.length) > 0) {
|
|
41606
41741
|
if (entryId) {
|
|
41607
41742
|
matching = packageSearchResults.find(function (r) {
|
|
@@ -41611,13 +41746,13 @@ var SearchResultsContainer = function () {
|
|
|
41611
41746
|
dispatch(setSelectedHotel(matching.productId));
|
|
41612
41747
|
}
|
|
41613
41748
|
} else {
|
|
41614
|
-
dispatch(setSelectedHotel((
|
|
41749
|
+
dispatch(setSelectedHotel((_b = packageSearchResults[0]) === null || _b === void 0 ? void 0 : _b.productId));
|
|
41615
41750
|
}
|
|
41616
41751
|
}
|
|
41617
41752
|
dispatch(setIsLoading(false));
|
|
41618
41753
|
return [3 /*break*/, 7];
|
|
41619
41754
|
case 6:
|
|
41620
|
-
err_1 =
|
|
41755
|
+
err_1 = _c.sent();
|
|
41621
41756
|
console.error('Search failed', err_1);
|
|
41622
41757
|
dispatch(setIsLoading(false));
|
|
41623
41758
|
return [3 /*break*/, 7];
|
|
@@ -41630,13 +41765,14 @@ var SearchResultsContainer = function () {
|
|
|
41630
41765
|
if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
|
|
41631
41766
|
if (
|
|
41632
41767
|
(context === null || context === void 0 ? void 0 : context.type) === 'hotel-flight' ||
|
|
41633
|
-
(context === null || context === void 0 ? void 0 : context.type) === 'hotel'
|
|
41768
|
+
(context === null || context === void 0 ? void 0 : context.type) === 'hotel' ||
|
|
41769
|
+
(context === null || context === void 0 ? void 0 : context.type) === 'groupTour'
|
|
41634
41770
|
) {
|
|
41635
|
-
|
|
41771
|
+
runSearch();
|
|
41636
41772
|
}
|
|
41637
41773
|
}
|
|
41638
41774
|
},
|
|
41639
|
-
[location.search
|
|
41775
|
+
[location.search]
|
|
41640
41776
|
);
|
|
41641
41777
|
// Seperate detailsCall
|
|
41642
41778
|
React.useEffect(
|
|
@@ -41737,6 +41873,13 @@ var SearchResultsContainer = function () {
|
|
|
41737
41873
|
},
|
|
41738
41874
|
[selectedHotelId]
|
|
41739
41875
|
);
|
|
41876
|
+
React.useEffect(
|
|
41877
|
+
function () {
|
|
41878
|
+
var filteredResults = applyFilters(results, filters);
|
|
41879
|
+
dispatch(setFilteredResults(filteredResults));
|
|
41880
|
+
},
|
|
41881
|
+
[filters, results]
|
|
41882
|
+
);
|
|
41740
41883
|
return React__default['default'].createElement(
|
|
41741
41884
|
'div',
|
|
41742
41885
|
{ id: 'tide-booking', className: 'search__bg' },
|
|
@@ -41761,23 +41904,20 @@ var SearchResultsContainer = function () {
|
|
|
41761
41904
|
}
|
|
41762
41905
|
})
|
|
41763
41906
|
),
|
|
41764
|
-
(context.type === 'hotel-flight' || context.type === 'hotel' || context.type === 'roundTrip') &&
|
|
41907
|
+
(context.type === 'hotel-flight' || context.type === 'hotel' || context.type === 'groupTour' || context.type === 'roundTrip') &&
|
|
41765
41908
|
React__default['default'].createElement(
|
|
41766
41909
|
React__default['default'].Fragment,
|
|
41767
41910
|
null,
|
|
41768
41911
|
context.type != 'hotel-flight' &&
|
|
41769
41912
|
context.showFilters &&
|
|
41770
41913
|
React__default['default'].createElement(Filters, {
|
|
41914
|
+
initialFilters: initialFilters,
|
|
41771
41915
|
filters: filters,
|
|
41772
41916
|
isOpen: filtersOpen,
|
|
41773
41917
|
handleSetIsOpen: function () {
|
|
41774
41918
|
return setFiltersOpen(!filtersOpen);
|
|
41775
41919
|
},
|
|
41776
|
-
handleApplyFilters
|
|
41777
|
-
return setSearchTrigger(function (prev) {
|
|
41778
|
-
return prev + 1;
|
|
41779
|
-
});
|
|
41780
|
-
},
|
|
41920
|
+
// handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
|
|
41781
41921
|
isLoading: isLoading
|
|
41782
41922
|
}),
|
|
41783
41923
|
context.type === 'hotel-flight' &&
|
|
@@ -41845,7 +41985,7 @@ var SearchResultsContainer = function () {
|
|
|
41845
41985
|
React__default['default'].createElement(
|
|
41846
41986
|
React__default['default'].Fragment,
|
|
41847
41987
|
null,
|
|
41848
|
-
(
|
|
41988
|
+
(filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults.length) && filteredResults.length,
|
|
41849
41989
|
' ',
|
|
41850
41990
|
translations.SRP.TOTAL_RESULTS_LABEL
|
|
41851
41991
|
)
|
|
@@ -41871,6 +42011,7 @@ var SearchResultsContainer = function () {
|
|
|
41871
42011
|
{ className: 'search__results__wrapper' },
|
|
41872
42012
|
context.showTabViews && React__default['default'].createElement(TabViews, null),
|
|
41873
42013
|
context.showRoundTripResults && context.showMockup && React__default['default'].createElement(RoundTripResults, null),
|
|
42014
|
+
context.type === 'groupTour' && React__default['default'].createElement(GroupTourResults, { isLoading: isLoading }),
|
|
41874
42015
|
context.type === 'hotel-flight' &&
|
|
41875
42016
|
context.showFlightResults &&
|
|
41876
42017
|
(bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights) &&
|
|
@@ -41878,8 +42019,7 @@ var SearchResultsContainer = function () {
|
|
|
41878
42019
|
flights: bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights,
|
|
41879
42020
|
isDeparture: true
|
|
41880
42021
|
}),
|
|
41881
|
-
context.showHotelAccommodationResults &&
|
|
41882
|
-
React__default['default'].createElement(HotelAccommodationResults, { isLoading: isLoading, context: context }),
|
|
42022
|
+
context.showHotelAccommodationResults && React__default['default'].createElement(HotelAccommodationResults, { isLoading: isLoading }),
|
|
41883
42023
|
context.type === 'hotel-flight' &&
|
|
41884
42024
|
context.showFlightResults &&
|
|
41885
42025
|
(bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights) &&
|