@qite/tide-booking-component 1.4.102 → 1.4.104
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 +1773 -877
- package/build/build-cjs/src/search-results/components/filters/filters.d.ts +2 -0
- package/build/build-cjs/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +3 -0
- package/build/build-cjs/src/search-results/components/hotel/hotel-accommodation-results.d.ts +1 -0
- package/build/build-cjs/src/search-results/store/search-results-selectors.d.ts +424 -0
- package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +27 -8
- package/build/build-cjs/src/search-results/types.d.ts +14 -2
- package/build/build-cjs/src/search-results/utils/search-results-utils.d.ts +8 -6
- package/build/build-cjs/src/shared/components/flyin/flyin.d.ts +3 -3
- package/build/build-cjs/src/shared/components/flyin/packaging-flights-flyin.d.ts +7 -0
- package/build/build-cjs/src/shared/utils/localization-util.d.ts +2 -0
- package/build/build-esm/index.js +1747 -861
- package/build/build-esm/src/search-results/components/filters/filters.d.ts +2 -0
- package/build/build-esm/src/search-results/components/flight/flight-selection/independent-flight-option.d.ts +3 -0
- package/build/build-esm/src/search-results/components/hotel/hotel-accommodation-results.d.ts +1 -0
- package/build/build-esm/src/search-results/store/search-results-selectors.d.ts +424 -0
- package/build/build-esm/src/search-results/store/search-results-slice.d.ts +27 -8
- package/build/build-esm/src/search-results/types.d.ts +14 -2
- package/build/build-esm/src/search-results/utils/search-results-utils.d.ts +8 -6
- package/build/build-esm/src/shared/components/flyin/flyin.d.ts +3 -3
- package/build/build-esm/src/shared/components/flyin/packaging-flights-flyin.d.ts +7 -0
- package/build/build-esm/src/shared/utils/localization-util.d.ts +2 -0
- package/package.json +2 -2
- package/src/booking-wizard/features/flight-options/index.tsx +6 -2
- package/src/search-results/components/filters/filters.tsx +8 -9
- package/src/search-results/components/flight/flight-selection/independent-flight-option.tsx +31 -4
- package/src/search-results/components/hotel/hotel-accommodation-results.tsx +81 -25
- package/src/search-results/components/icon.tsx +1 -1
- package/src/search-results/components/search-results-container/search-results-container.tsx +194 -130
- package/src/search-results/store/search-results-selectors.ts +73 -0
- package/src/search-results/store/search-results-slice.ts +94 -14
- package/src/search-results/types.ts +14 -2
- package/src/search-results/utils/search-results-utils.ts +310 -58
- package/src/shared/components/flyin/flyin.tsx +102 -19
- package/src/shared/components/flyin/packaging-flights-flyin.tsx +164 -0
- package/src/shared/translations/ar-SA.json +2 -0
- package/src/shared/translations/da-DK.json +2 -0
- package/src/shared/translations/de-DE.json +2 -0
- package/src/shared/translations/en-GB.json +2 -0
- package/src/shared/translations/es-ES.json +2 -0
- package/src/shared/translations/fr-BE.json +2 -0
- package/src/shared/translations/fr-FR.json +2 -0
- package/src/shared/translations/is-IS.json +2 -0
- package/src/shared/translations/it-IT.json +2 -0
- package/src/shared/translations/ja-JP.json +2 -0
- package/src/shared/translations/nl-BE.json +2 -0
- package/src/shared/translations/nl-NL.json +2 -0
- package/src/shared/translations/no-NO.json +2 -0
- package/src/shared/translations/pl-PL.json +2 -0
- package/src/shared/translations/pt-PT.json +2 -0
- package/src/shared/translations/sv-SE.json +2 -0
- package/src/shared/utils/localization-util.ts +5 -2
- package/styles/components/_flight-option.scss +14 -1
- package/styles/components/_flyin.scss +16 -0
- package/styles/components/_search.scss +9 -1
package/build/build-esm/index.js
CHANGED
|
@@ -611,6 +611,8 @@ var QSM$g = {
|
|
|
611
611
|
GROUP_TOUR: 'جولة جماعية'
|
|
612
612
|
};
|
|
613
613
|
var SRP$f = {
|
|
614
|
+
SHOW_MORE: 'عرض المزيد',
|
|
615
|
+
SHOW_LESS: 'عرض أقل',
|
|
614
616
|
NO_RESULTS: 'لم يتم العثور على نتائج.',
|
|
615
617
|
TOTAL_RESULTS_LABEL: 'تم العثور على باقات',
|
|
616
618
|
RESET: 'إعادة تعيين',
|
|
@@ -1015,6 +1017,8 @@ var QSM$f = {
|
|
|
1015
1017
|
GROUP_TOUR: 'Grupperejse'
|
|
1016
1018
|
};
|
|
1017
1019
|
var SRP$e = {
|
|
1020
|
+
SHOW_MORE: 'Vis flere',
|
|
1021
|
+
SHOW_LESS: 'Vis færre',
|
|
1018
1022
|
NO_RESULTS: 'Ingen resultater fundet.',
|
|
1019
1023
|
TOTAL_RESULTS_LABEL: 'Fundne pakker',
|
|
1020
1024
|
RESET: 'Nulstil',
|
|
@@ -1420,6 +1424,8 @@ var QSM$e = {
|
|
|
1420
1424
|
GROUP_TOUR: 'Gruppentour'
|
|
1421
1425
|
};
|
|
1422
1426
|
var SRP$d = {
|
|
1427
|
+
SHOW_MORE: 'Mehr anzeigen',
|
|
1428
|
+
SHOW_LESS: 'Weniger anzeigen',
|
|
1423
1429
|
NO_RESULTS: 'Keine Ergebnisse gefunden.',
|
|
1424
1430
|
TOTAL_RESULTS_LABEL: 'Gefundene Pakete',
|
|
1425
1431
|
RESET: 'Zurücksetzen',
|
|
@@ -1828,6 +1834,8 @@ var QSM$d = {
|
|
|
1828
1834
|
GROUP_TOUR: 'Group tour'
|
|
1829
1835
|
};
|
|
1830
1836
|
var SRP$c = {
|
|
1837
|
+
SHOW_MORE: 'Show more',
|
|
1838
|
+
SHOW_LESS: 'Show less',
|
|
1831
1839
|
NO_RESULTS: 'No results found.',
|
|
1832
1840
|
TOTAL_RESULTS_LABEL: 'Packages found',
|
|
1833
1841
|
RESET: 'Reset',
|
|
@@ -2233,6 +2241,8 @@ var QSM$c = {
|
|
|
2233
2241
|
GROUP_TOUR: 'Tour grupal'
|
|
2234
2242
|
};
|
|
2235
2243
|
var SRP$b = {
|
|
2244
|
+
SHOW_MORE: 'Mostrar más',
|
|
2245
|
+
SHOW_LESS: 'Mostrar menos',
|
|
2236
2246
|
NO_RESULTS: 'No se han encontrado resultados.',
|
|
2237
2247
|
TOTAL_RESULTS_LABEL: 'Paquetes encontrados',
|
|
2238
2248
|
RESET: 'Restablecer',
|
|
@@ -2642,6 +2652,8 @@ var QSM$b = {
|
|
|
2642
2652
|
GROUP_TOUR: 'Tour en groupe'
|
|
2643
2653
|
};
|
|
2644
2654
|
var SRP$a = {
|
|
2655
|
+
SHOW_MORE: 'Afficher plus',
|
|
2656
|
+
SHOW_LESS: 'Afficher moins',
|
|
2645
2657
|
NO_RESULTS: 'Aucun résultat trouvé.',
|
|
2646
2658
|
TOTAL_RESULTS_LABEL: 'Forfaits trouvés',
|
|
2647
2659
|
RESET: 'Réinitialiser',
|
|
@@ -3046,6 +3058,8 @@ var QSM$a = {
|
|
|
3046
3058
|
GROUP_TOUR: 'Tour en groupe'
|
|
3047
3059
|
};
|
|
3048
3060
|
var SRP$9 = {
|
|
3061
|
+
SHOW_MORE: 'Afficher plus',
|
|
3062
|
+
SHOW_LESS: 'Afficher moins',
|
|
3049
3063
|
NO_RESULTS: 'Aucun résultat trouvé.',
|
|
3050
3064
|
TOTAL_RESULTS_LABEL: 'Forfaits trouvés',
|
|
3051
3065
|
RESET: 'Réinitialiser',
|
|
@@ -3450,6 +3464,8 @@ var QSM$9 = {
|
|
|
3450
3464
|
GROUP_TOUR: 'Ferð í hóp'
|
|
3451
3465
|
};
|
|
3452
3466
|
var SRP$8 = {
|
|
3467
|
+
SHOW_MORE: 'Sýna meira',
|
|
3468
|
+
SHOW_LESS: 'Sýna minna',
|
|
3453
3469
|
NO_RESULTS: 'Engar niðurstöður fundust.',
|
|
3454
3470
|
TOTAL_RESULTS_LABEL: 'Fundnar pakkar',
|
|
3455
3471
|
RESET: 'Endurstilla',
|
|
@@ -3855,6 +3871,8 @@ var QSM$8 = {
|
|
|
3855
3871
|
GROUP_TOUR: 'Tour di gruppo'
|
|
3856
3872
|
};
|
|
3857
3873
|
var SRP$7 = {
|
|
3874
|
+
SHOW_MORE: 'Mostra di più',
|
|
3875
|
+
SHOW_LESS: 'Mostra di meno',
|
|
3858
3876
|
NO_RESULTS: 'Nessun risultato trovato.',
|
|
3859
3877
|
TOTAL_RESULTS_LABEL: 'Pacchetti trovati',
|
|
3860
3878
|
RESET: 'Reimposta',
|
|
@@ -4264,6 +4282,8 @@ var QSM$7 = {
|
|
|
4264
4282
|
GROUP_TOUR: 'Groepsreis'
|
|
4265
4283
|
};
|
|
4266
4284
|
var SRP$6 = {
|
|
4285
|
+
SHOW_MORE: 'Toon meer',
|
|
4286
|
+
SHOW_LESS: 'Toon minder',
|
|
4267
4287
|
NO_RESULTS: 'Geen resultaten gevonden.',
|
|
4268
4288
|
TOTAL_RESULTS_LABEL: 'Gevonden pakketten',
|
|
4269
4289
|
RESET: 'Resetten',
|
|
@@ -4669,6 +4689,8 @@ var QSM$6 = {
|
|
|
4669
4689
|
GROUP_TOUR: 'Groepsreis'
|
|
4670
4690
|
};
|
|
4671
4691
|
var SRP$5 = {
|
|
4692
|
+
SHOW_MORE: 'Toon meer',
|
|
4693
|
+
SHOW_LESS: 'Toon minder',
|
|
4672
4694
|
NO_RESULTS: 'Geen resultaten gevonden.',
|
|
4673
4695
|
TOTAL_RESULTS_LABEL: 'Gevonden pakketten',
|
|
4674
4696
|
RESET: 'Resetten',
|
|
@@ -5074,6 +5096,8 @@ var QSM$5 = {
|
|
|
5074
5096
|
GROUP_TOUR: 'Gruppetur'
|
|
5075
5097
|
};
|
|
5076
5098
|
var SRP$4 = {
|
|
5099
|
+
SHOW_MORE: 'Vis mer',
|
|
5100
|
+
SHOW_LESS: 'Vis mindre',
|
|
5077
5101
|
NO_RESULTS: 'Ingen resultater funnet.',
|
|
5078
5102
|
TOTAL_RESULTS_LABEL: 'Fant pakker',
|
|
5079
5103
|
RESET: 'Tilbakestill',
|
|
@@ -5479,6 +5503,8 @@ var QSM$4 = {
|
|
|
5479
5503
|
GROUP_TOUR: 'Tour w grupie'
|
|
5480
5504
|
};
|
|
5481
5505
|
var SRP$3 = {
|
|
5506
|
+
SHOW_MORE: 'Pokaż więcej',
|
|
5507
|
+
SHOW_LESS: 'Pokaż mniej',
|
|
5482
5508
|
NO_RESULTS: 'Nie znaleziono wyników.',
|
|
5483
5509
|
TOTAL_RESULTS_LABEL: 'Znalezione pakiety',
|
|
5484
5510
|
RESET: 'Resetuj',
|
|
@@ -5884,6 +5910,8 @@ var QSM$3 = {
|
|
|
5884
5910
|
GROUP_TOUR: 'Tour em grupo'
|
|
5885
5911
|
};
|
|
5886
5912
|
var SRP$2 = {
|
|
5913
|
+
SHOW_MORE: 'Mostrar mais',
|
|
5914
|
+
SHOW_LESS: 'Mostrar menos',
|
|
5887
5915
|
NO_RESULTS: 'Nenhum resultado encontrado.',
|
|
5888
5916
|
TOTAL_RESULTS_LABEL: 'Pacotes encontrados',
|
|
5889
5917
|
RESET: 'Redefinir',
|
|
@@ -6289,6 +6317,8 @@ var QSM$2 = {
|
|
|
6289
6317
|
GROUP_TOUR: 'Gruppresa'
|
|
6290
6318
|
};
|
|
6291
6319
|
var SRP$1 = {
|
|
6320
|
+
SHOW_MORE: 'Visa mer',
|
|
6321
|
+
SHOW_LESS: 'Visa mindre',
|
|
6292
6322
|
NO_RESULTS: 'Inga resultat hittades.',
|
|
6293
6323
|
TOTAL_RESULTS_LABEL: 'Hittade paket',
|
|
6294
6324
|
RESET: 'Återställ',
|
|
@@ -6692,6 +6722,8 @@ var QSM$1 = {
|
|
|
6692
6722
|
GROUP_TOUR: 'グループツアー'
|
|
6693
6723
|
};
|
|
6694
6724
|
var SRP = {
|
|
6725
|
+
SHOW_MORE: 'もっと見る',
|
|
6726
|
+
SHOW_LESS: '閉じる',
|
|
6695
6727
|
NO_RESULTS: '結果が見つかりませんでした。',
|
|
6696
6728
|
TOTAL_RESULTS_LABEL: '見つかったパッケージ',
|
|
6697
6729
|
RESET: 'リセット',
|
|
@@ -6898,8 +6930,8 @@ var timeFromDateTime = function (dateTime) {
|
|
|
6898
6930
|
return '';
|
|
6899
6931
|
}
|
|
6900
6932
|
var date = new Date(dateTime);
|
|
6901
|
-
var hours = date.
|
|
6902
|
-
var minutes = date.
|
|
6933
|
+
var hours = date.getUTCHours();
|
|
6934
|
+
var minutes = date.getUTCMinutes();
|
|
6903
6935
|
return ''
|
|
6904
6936
|
.concat(hours, ':')
|
|
6905
6937
|
.concat(minutes < 10 ? '0' : '')
|
|
@@ -21689,7 +21721,11 @@ var FlightOptionsForm = function () {
|
|
|
21689
21721
|
setFlightGroups = _f[1];
|
|
21690
21722
|
var handleSubmit = function (e) {
|
|
21691
21723
|
if (settings.skipRouter) {
|
|
21692
|
-
|
|
21724
|
+
if (settings.roomOptions.isHidden) {
|
|
21725
|
+
dispatch(setCurrentStep(OPTIONS_FORM_STEP));
|
|
21726
|
+
} else {
|
|
21727
|
+
dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
|
|
21728
|
+
}
|
|
21693
21729
|
} else {
|
|
21694
21730
|
if (settings.roomOptions.isHidden) {
|
|
21695
21731
|
navigate(
|
|
@@ -33684,21 +33720,28 @@ var initialState$1 = {
|
|
|
33684
33720
|
packagingAccoSearchDetails: [],
|
|
33685
33721
|
selectedPackagingAccoResultCode: null,
|
|
33686
33722
|
packagingFlightResults: [],
|
|
33723
|
+
filteredPackagingFlightResults: [],
|
|
33687
33724
|
selectedPackagingFlight: null,
|
|
33725
|
+
selectedOutwardKey: null,
|
|
33726
|
+
selectedReturnKey: null,
|
|
33688
33727
|
selectedFlight: null,
|
|
33689
33728
|
selectedFlightDetails: null,
|
|
33690
33729
|
bookingPackageDetails: null,
|
|
33730
|
+
priceDetails: null,
|
|
33691
33731
|
isLoading: false,
|
|
33692
33732
|
flightsLoading: false,
|
|
33693
|
-
filters: [],
|
|
33694
33733
|
selectedSortType: null,
|
|
33734
|
+
selectedFlightSortType: null,
|
|
33735
|
+
initialFilters: [],
|
|
33736
|
+
filters: [],
|
|
33737
|
+
initialFlightFilters: [],
|
|
33738
|
+
flightFilters: [],
|
|
33695
33739
|
activeTab: 'compact',
|
|
33696
33740
|
currentPage: 1,
|
|
33741
|
+
transactionId: null,
|
|
33697
33742
|
flyInIsOpen: false,
|
|
33743
|
+
flyInType: null,
|
|
33698
33744
|
editablePackagingEntry: null,
|
|
33699
|
-
transactionId: null,
|
|
33700
|
-
accommodationFlyInStep: 'details',
|
|
33701
|
-
priceDetails: null,
|
|
33702
33745
|
itinerary: null
|
|
33703
33746
|
};
|
|
33704
33747
|
var searchResultsSlice = createSlice({
|
|
@@ -33729,6 +33772,9 @@ var searchResultsSlice = createSlice({
|
|
|
33729
33772
|
setPackagingFlightResults: function (state, action) {
|
|
33730
33773
|
state.packagingFlightResults = action.payload;
|
|
33731
33774
|
},
|
|
33775
|
+
setFilteredPackagingFlightResults: function (state, action) {
|
|
33776
|
+
state.filteredPackagingFlightResults = action.payload;
|
|
33777
|
+
},
|
|
33732
33778
|
setSelectedPackagingFlight: function (state, action) {
|
|
33733
33779
|
state.selectedPackagingFlight = action.payload;
|
|
33734
33780
|
},
|
|
@@ -33757,6 +33803,9 @@ var searchResultsSlice = createSlice({
|
|
|
33757
33803
|
setFlightsLoading: function (state, action) {
|
|
33758
33804
|
state.flightsLoading = action.payload;
|
|
33759
33805
|
},
|
|
33806
|
+
setInitialFilters: function (state, action) {
|
|
33807
|
+
state.initialFilters = action.payload;
|
|
33808
|
+
},
|
|
33760
33809
|
setFilters: function (state, action) {
|
|
33761
33810
|
var updatedFilters = action.payload;
|
|
33762
33811
|
updatedFilters.forEach(function (updatedFilter) {
|
|
@@ -33773,9 +33822,31 @@ var searchResultsSlice = createSlice({
|
|
|
33773
33822
|
resetFilters: function (state, action) {
|
|
33774
33823
|
state.filters = action.payload;
|
|
33775
33824
|
},
|
|
33825
|
+
setInitialFlightFilters: function (state, action) {
|
|
33826
|
+
state.initialFlightFilters = action.payload;
|
|
33827
|
+
},
|
|
33828
|
+
setFlightFilters: function (state, action) {
|
|
33829
|
+
var updatedFilters = action.payload;
|
|
33830
|
+
updatedFilters.forEach(function (updatedFilter) {
|
|
33831
|
+
var existingIndex = state.flightFilters.findIndex(function (f) {
|
|
33832
|
+
return f.property === updatedFilter.property;
|
|
33833
|
+
});
|
|
33834
|
+
if (existingIndex !== -1) {
|
|
33835
|
+
state.flightFilters[existingIndex] = updatedFilter;
|
|
33836
|
+
} else {
|
|
33837
|
+
state.flightFilters.push(updatedFilter); // Optional: Add new filters if not present
|
|
33838
|
+
}
|
|
33839
|
+
});
|
|
33840
|
+
},
|
|
33841
|
+
resetFlightFilters: function (state, action) {
|
|
33842
|
+
state.flightFilters = action.payload;
|
|
33843
|
+
},
|
|
33776
33844
|
setSortType: function (state, action) {
|
|
33777
33845
|
state.selectedSortType = action.payload;
|
|
33778
33846
|
},
|
|
33847
|
+
setFlightSortType: function (state, action) {
|
|
33848
|
+
state.selectedFlightSortType = action.payload;
|
|
33849
|
+
},
|
|
33779
33850
|
setActiveTab: function (state, action) {
|
|
33780
33851
|
state.activeTab = action.payload;
|
|
33781
33852
|
},
|
|
@@ -33799,14 +33870,24 @@ var searchResultsSlice = createSlice({
|
|
|
33799
33870
|
setTransactionId: function (state, action) {
|
|
33800
33871
|
state.transactionId = action.payload;
|
|
33801
33872
|
},
|
|
33802
|
-
|
|
33803
|
-
state.
|
|
33873
|
+
setFlyInType: function (state, action) {
|
|
33874
|
+
state.flyInType = action.payload;
|
|
33804
33875
|
},
|
|
33805
33876
|
setPriceDetails: function (state, action) {
|
|
33806
33877
|
state.priceDetails = action.payload;
|
|
33807
33878
|
},
|
|
33808
33879
|
setItinerary: function (state, action) {
|
|
33809
33880
|
state.itinerary = action.payload;
|
|
33881
|
+
},
|
|
33882
|
+
setSelectedOutwardKey: function (state, action) {
|
|
33883
|
+
state.selectedOutwardKey = action.payload;
|
|
33884
|
+
},
|
|
33885
|
+
setSelectedReturnKey: function (state, action) {
|
|
33886
|
+
state.selectedReturnKey = action.payload;
|
|
33887
|
+
},
|
|
33888
|
+
resetFlightSelection: function (state) {
|
|
33889
|
+
state.selectedOutwardKey = null;
|
|
33890
|
+
state.selectedReturnKey = null;
|
|
33810
33891
|
}
|
|
33811
33892
|
}
|
|
33812
33893
|
});
|
|
@@ -33815,6 +33896,7 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
33815
33896
|
setSelectedSearchResult = _a.setSelectedSearchResult,
|
|
33816
33897
|
setPackagingAccoResults = _a.setPackagingAccoResults,
|
|
33817
33898
|
setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
|
|
33899
|
+
setFilteredPackagingFlightResults = _a.setFilteredPackagingFlightResults,
|
|
33818
33900
|
setPackagingAccoSearchDetails = _a.setPackagingAccoSearchDetails,
|
|
33819
33901
|
setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
|
|
33820
33902
|
setPackagingFlightResults = _a.setPackagingFlightResults,
|
|
@@ -33825,18 +33907,26 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
33825
33907
|
_a.selectFlight;
|
|
33826
33908
|
var setIsLoading = _a.setIsLoading,
|
|
33827
33909
|
setFlightsLoading = _a.setFlightsLoading,
|
|
33910
|
+
setInitialFilters = _a.setInitialFilters,
|
|
33828
33911
|
setFilters = _a.setFilters,
|
|
33829
33912
|
resetFilters = _a.resetFilters,
|
|
33913
|
+
setInitialFlightFilters = _a.setInitialFlightFilters,
|
|
33914
|
+
setFlightFilters = _a.setFlightFilters,
|
|
33915
|
+
resetFlightFilters = _a.resetFlightFilters,
|
|
33830
33916
|
setSortType = _a.setSortType,
|
|
33917
|
+
setFlightSortType = _a.setFlightSortType,
|
|
33831
33918
|
setActiveTab = _a.setActiveTab;
|
|
33832
33919
|
_a.setCurrentPage;
|
|
33833
33920
|
_a.resetSearchState;
|
|
33834
33921
|
var setFlyInIsOpen = _a.setFlyInIsOpen,
|
|
33835
33922
|
setEditablePackagingEntry = _a.setEditablePackagingEntry,
|
|
33836
33923
|
setTransactionId = _a.setTransactionId,
|
|
33837
|
-
|
|
33924
|
+
setFlyInType = _a.setFlyInType,
|
|
33838
33925
|
setPriceDetails = _a.setPriceDetails,
|
|
33839
|
-
setItinerary = _a.setItinerary
|
|
33926
|
+
setItinerary = _a.setItinerary,
|
|
33927
|
+
setSelectedOutwardKey = _a.setSelectedOutwardKey,
|
|
33928
|
+
setSelectedReturnKey = _a.setSelectedReturnKey;
|
|
33929
|
+
_a.resetFlightSelection;
|
|
33840
33930
|
var searchResultsReducer = searchResultsSlice.reducer;
|
|
33841
33931
|
|
|
33842
33932
|
var ItemPicker = function (_a) {
|
|
@@ -34099,7 +34189,7 @@ var Icon$1 = function (_a) {
|
|
|
34099
34189
|
title && React__default.createElement('title', null, title),
|
|
34100
34190
|
React__default.createElement('path', {
|
|
34101
34191
|
d: 'M32 32c17.7 0 32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32l224 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 416l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z',
|
|
34102
|
-
fill: 'currentColor'
|
|
34192
|
+
fill: fill !== null && fill !== void 0 ? fill : 'currentColor'
|
|
34103
34193
|
})
|
|
34104
34194
|
);
|
|
34105
34195
|
case 'ui-utensils':
|
|
@@ -43430,7 +43520,7 @@ var mapPackagingAccoResult = function (searchResult, cmsItem, languageCode, tran
|
|
|
43430
43520
|
contents: searchResult.contents
|
|
43431
43521
|
});
|
|
43432
43522
|
};
|
|
43433
|
-
var renderHotelResults = function (results, context, activeTab, translations) {
|
|
43523
|
+
var renderHotelResults = function (results, context, activeTab, translations, selectedPackagingAccoResult, isFlyIn) {
|
|
43434
43524
|
var renderedResults = results.map(function (result, index) {
|
|
43435
43525
|
var _a;
|
|
43436
43526
|
var key = ''.concat((_a = result.id) !== null && _a !== void 0 ? _a : result.code, '-').concat(index);
|
|
@@ -43445,13 +43535,18 @@ var renderHotelResults = function (results, context, activeTab, translations) {
|
|
|
43445
43535
|
return React__default.createElement(
|
|
43446
43536
|
'div',
|
|
43447
43537
|
{ className: 'search__results__cards '.concat(activeTab ? 'search__results__cards--'.concat(activeTab) : '') },
|
|
43538
|
+
selectedPackagingAccoResult &&
|
|
43539
|
+
!isFlyIn &&
|
|
43540
|
+
React__default.createElement(HotelCard, { key: selectedPackagingAccoResult.code, result: selectedPackagingAccoResult, translations: translations }),
|
|
43448
43541
|
renderedResults
|
|
43449
43542
|
);
|
|
43450
43543
|
};
|
|
43451
43544
|
var HotelAccommodationResults = function (_a) {
|
|
43452
43545
|
var _b, _c;
|
|
43453
|
-
var isLoading = _a.isLoading
|
|
43546
|
+
var isLoading = _a.isLoading,
|
|
43547
|
+
isFlyIn = _a.isFlyIn;
|
|
43454
43548
|
var context = useContext(SearchResultsConfigurationContext);
|
|
43549
|
+
var dispatch = useDispatch();
|
|
43455
43550
|
if (!context) {
|
|
43456
43551
|
return null;
|
|
43457
43552
|
}
|
|
@@ -43461,7 +43556,10 @@ var HotelAccommodationResults = function (_a) {
|
|
|
43461
43556
|
}),
|
|
43462
43557
|
filteredResults = _d.filteredResults,
|
|
43463
43558
|
filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
|
|
43559
|
+
packagingAccoResults = _d.packagingAccoResults,
|
|
43464
43560
|
activeTab = _d.activeTab;
|
|
43561
|
+
_d.flyInIsOpen;
|
|
43562
|
+
var selectedPackagingAccoResultCode = _d.selectedPackagingAccoResultCode;
|
|
43465
43563
|
var cmsMap = React__default.useMemo(
|
|
43466
43564
|
function () {
|
|
43467
43565
|
var _a;
|
|
@@ -43524,51 +43622,947 @@ var HotelAccommodationResults = function (_a) {
|
|
|
43524
43622
|
: firstPackagingResult.fromDate;
|
|
43525
43623
|
var firstResultDay = firstResultDate ? format$1(parseISO(firstResultDate), 'd') : null;
|
|
43526
43624
|
var firstResultMonth = firstResultDate ? format$1(parseISO(firstResultDate), 'MMM') : null;
|
|
43527
|
-
|
|
43528
|
-
|
|
43529
|
-
|
|
43530
|
-
|
|
43531
|
-
|
|
43532
|
-
|
|
43533
|
-
|
|
43534
|
-
|
|
43535
|
-
|
|
43536
|
-
|
|
43625
|
+
var selectedPackagingAccoResult = React__default.useMemo(
|
|
43626
|
+
function () {
|
|
43627
|
+
var selectedResult = packagingAccoResults.find(function (result) {
|
|
43628
|
+
return result.code === selectedPackagingAccoResultCode;
|
|
43629
|
+
});
|
|
43630
|
+
if (selectedResult) {
|
|
43631
|
+
return mapPackagingAccoResult(selectedResult, cmsMap.get(selectedResult.code), context.languageCode, translations);
|
|
43632
|
+
}
|
|
43633
|
+
},
|
|
43634
|
+
[packagingAccoResults, selectedPackagingAccoResultCode, cmsMap, context.languageCode, translations]
|
|
43635
|
+
);
|
|
43636
|
+
var visibleResults = React__default.useMemo(
|
|
43637
|
+
function () {
|
|
43638
|
+
var shouldShowAll =
|
|
43639
|
+
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) !== build.PortalQsmType.AccommodationAndFlight || isFlyIn;
|
|
43640
|
+
if (shouldShowAll) {
|
|
43641
|
+
return mappedResults;
|
|
43642
|
+
}
|
|
43643
|
+
if (selectedPackagingAccoResult) {
|
|
43644
|
+
return mappedResults
|
|
43645
|
+
.filter(function (result) {
|
|
43646
|
+
return result.code !== selectedPackagingAccoResult.code;
|
|
43647
|
+
})
|
|
43648
|
+
.slice(0, 2);
|
|
43649
|
+
}
|
|
43650
|
+
return mappedResults.slice(0, 3);
|
|
43651
|
+
},
|
|
43652
|
+
[context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType, mappedResults, isFlyIn, selectedPackagingAccoResult]
|
|
43653
|
+
);
|
|
43654
|
+
var handleShowMoreHotels = function (flyInType) {
|
|
43655
|
+
dispatch(setFlyInType(flyInType));
|
|
43656
|
+
dispatch(setFlyInIsOpen(true));
|
|
43657
|
+
};
|
|
43537
43658
|
return React__default.createElement(
|
|
43538
43659
|
React__default.Fragment,
|
|
43539
43660
|
null,
|
|
43661
|
+
!isFlyIn &&
|
|
43662
|
+
React__default.createElement(
|
|
43663
|
+
'div',
|
|
43664
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
43665
|
+
React__default.createElement(
|
|
43666
|
+
'div',
|
|
43667
|
+
{ className: 'search__results__label__date' },
|
|
43668
|
+
firstResultDay && firstResultMonth
|
|
43669
|
+
? React__default.createElement(
|
|
43670
|
+
React__default.Fragment,
|
|
43671
|
+
null,
|
|
43672
|
+
React__default.createElement('p', { className: 'search__results__label__date-date' }, firstResultDay),
|
|
43673
|
+
React__default.createElement('p', null, firstResultMonth)
|
|
43674
|
+
)
|
|
43675
|
+
: React__default.createElement(Icon$1, { name: 'ui-bed', height: 16, fill: 'white' })
|
|
43676
|
+
),
|
|
43677
|
+
React__default.createElement(
|
|
43678
|
+
'div',
|
|
43679
|
+
{ className: 'search__results__label__text' },
|
|
43680
|
+
React__default.createElement('h3', null, translations.SRP.SELECT, ' ', React__default.createElement('strong', null, translations.SRP.ACCOMMODATION))
|
|
43681
|
+
)
|
|
43682
|
+
),
|
|
43683
|
+
isLoading
|
|
43684
|
+
? React__default.createElement(
|
|
43685
|
+
React__default.Fragment,
|
|
43686
|
+
null,
|
|
43687
|
+
(_c = context.customSpinner) !== null && _c !== void 0 ? _c : React__default.createElement(Spinner, null)
|
|
43688
|
+
)
|
|
43689
|
+
: renderHotelResults(visibleResults, context, activeTab, translations, selectedPackagingAccoResult, isFlyIn),
|
|
43690
|
+
packagingAccoResults.length > 3 &&
|
|
43691
|
+
!isFlyIn &&
|
|
43692
|
+
React__default.createElement(
|
|
43693
|
+
'div',
|
|
43694
|
+
{ className: 'search__results__cards__actions' },
|
|
43695
|
+
React__default.createElement(
|
|
43696
|
+
'button',
|
|
43697
|
+
{
|
|
43698
|
+
className: 'cta cta--secondary',
|
|
43699
|
+
onClick: function () {
|
|
43700
|
+
return handleShowMoreHotels('acco-results');
|
|
43701
|
+
}
|
|
43702
|
+
},
|
|
43703
|
+
translations.SRP.SHOW_MORE
|
|
43704
|
+
)
|
|
43705
|
+
),
|
|
43706
|
+
mappedResults.length === 0 && !isLoading && React__default.createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS)
|
|
43707
|
+
);
|
|
43708
|
+
};
|
|
43709
|
+
|
|
43710
|
+
var selectSearchResultsState = function (state) {
|
|
43711
|
+
return state.searchResults;
|
|
43712
|
+
};
|
|
43713
|
+
var selectPackagingFlightResults = createSelector([selectSearchResultsState], function (state) {
|
|
43714
|
+
return state.packagingFlightResults;
|
|
43715
|
+
});
|
|
43716
|
+
var selectFilteredPackagingFlightResults = createSelector([selectSearchResultsState], function (state) {
|
|
43717
|
+
return state.filteredPackagingFlightResults;
|
|
43718
|
+
});
|
|
43719
|
+
var selectSelectedOutwardKey = createSelector([selectSearchResultsState], function (state) {
|
|
43720
|
+
return state.selectedOutwardKey;
|
|
43721
|
+
});
|
|
43722
|
+
var selectSelectedReturnKey = createSelector([selectSearchResultsState], function (state) {
|
|
43723
|
+
return state.selectedReturnKey;
|
|
43724
|
+
});
|
|
43725
|
+
var selectUniqueOutwardFlights = createSelector([selectFilteredPackagingFlightResults], function (packagingFlightResults) {
|
|
43726
|
+
var map = new Map();
|
|
43727
|
+
packagingFlightResults.forEach(function (flight) {
|
|
43728
|
+
var key = getFlightKey(flight.outward.segments);
|
|
43729
|
+
if (!map.has(key)) {
|
|
43730
|
+
map.set(key, flight);
|
|
43731
|
+
}
|
|
43732
|
+
});
|
|
43733
|
+
return Array.from(map.values());
|
|
43734
|
+
});
|
|
43735
|
+
var selectUniqueReturnFlights = createSelector(
|
|
43736
|
+
[selectFilteredPackagingFlightResults, selectSelectedOutwardKey],
|
|
43737
|
+
function (packagingFlightResults, selectedOutwardKey) {
|
|
43738
|
+
if (!selectedOutwardKey) return [];
|
|
43739
|
+
var matchingCombinations = packagingFlightResults.filter(function (flight) {
|
|
43740
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
43741
|
+
});
|
|
43742
|
+
var map = new Map();
|
|
43743
|
+
matchingCombinations.forEach(function (flight) {
|
|
43744
|
+
var key = getFlightKey(flight.return.segments);
|
|
43745
|
+
if (!map.has(key)) {
|
|
43746
|
+
map.set(key, flight);
|
|
43747
|
+
}
|
|
43748
|
+
});
|
|
43749
|
+
return Array.from(map.values());
|
|
43750
|
+
}
|
|
43751
|
+
);
|
|
43752
|
+
var selectSelectedOutward = createSelector([selectPackagingFlightResults, selectSelectedOutwardKey], function (packagingFlightResults, selectedOutwardKey) {
|
|
43753
|
+
var _a;
|
|
43754
|
+
if (!selectedOutwardKey) return null;
|
|
43755
|
+
return (_a = packagingFlightResults.find(function (flight) {
|
|
43756
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
43757
|
+
})) !== null && _a !== void 0
|
|
43758
|
+
? _a
|
|
43759
|
+
: null;
|
|
43760
|
+
});
|
|
43761
|
+
var selectSelectedReturn = createSelector([selectPackagingFlightResults, selectSelectedReturnKey], function (packagingFlightResults, selectedReturnKey) {
|
|
43762
|
+
var _a;
|
|
43763
|
+
if (!selectedReturnKey) return null;
|
|
43764
|
+
return (_a = packagingFlightResults.find(function (flight) {
|
|
43765
|
+
return getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
43766
|
+
})) !== null && _a !== void 0
|
|
43767
|
+
? _a
|
|
43768
|
+
: null;
|
|
43769
|
+
});
|
|
43770
|
+
var selectSelectedCombinationFlight = createSelector(
|
|
43771
|
+
[selectPackagingFlightResults, selectSelectedOutwardKey, selectSelectedReturnKey],
|
|
43772
|
+
function (packagingFlightResults, selectedOutwardKey, selectedReturnKey) {
|
|
43773
|
+
var _a;
|
|
43774
|
+
if (!selectedOutwardKey || !selectedReturnKey) return null;
|
|
43775
|
+
return (_a = packagingFlightResults.find(function (flight) {
|
|
43776
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
43777
|
+
})) !== null && _a !== void 0
|
|
43778
|
+
? _a
|
|
43779
|
+
: null;
|
|
43780
|
+
}
|
|
43781
|
+
);
|
|
43782
|
+
|
|
43783
|
+
var IndependentFlightOption = function (_a) {
|
|
43784
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
43785
|
+
var item = _a.item,
|
|
43786
|
+
onSelect = _a.onSelect,
|
|
43787
|
+
guid = _a.guid,
|
|
43788
|
+
selectedGuid = _a.selectedGuid,
|
|
43789
|
+
isOutward = _a.isOutward,
|
|
43790
|
+
showSelectedState = _a.showSelectedState,
|
|
43791
|
+
currentSelectedPrice = _a.currentSelectedPrice,
|
|
43792
|
+
price = _a.price;
|
|
43793
|
+
var context = useContext(SearchResultsConfigurationContext);
|
|
43794
|
+
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
43795
|
+
var translations = getTranslations(language);
|
|
43796
|
+
var _p = useState(false),
|
|
43797
|
+
detailsOpen = _p[0],
|
|
43798
|
+
setDetailsOpen = _p[1];
|
|
43799
|
+
var priceDifference = price && currentSelectedPrice ? price - currentSelectedPrice : null;
|
|
43800
|
+
return React__default.createElement(
|
|
43801
|
+
'div',
|
|
43802
|
+
{ className: 'search__result-card', key: 'flight-'.concat(item.code) },
|
|
43540
43803
|
React__default.createElement(
|
|
43541
43804
|
'div',
|
|
43542
|
-
{ className: '
|
|
43805
|
+
{ className: 'flight '.concat(showSelectedState && selectedGuid === guid ? 'flight--selected' : '') },
|
|
43543
43806
|
React__default.createElement(
|
|
43544
43807
|
'div',
|
|
43545
|
-
{ className: '
|
|
43546
|
-
React__default.createElement(
|
|
43547
|
-
|
|
43808
|
+
{ className: 'flight__option' },
|
|
43809
|
+
React__default.createElement(
|
|
43810
|
+
'div',
|
|
43811
|
+
{ className: 'flight__content' },
|
|
43812
|
+
React__default.createElement(
|
|
43813
|
+
'div',
|
|
43814
|
+
{ className: 'flight__flights' },
|
|
43815
|
+
React__default.createElement(
|
|
43816
|
+
'div',
|
|
43817
|
+
{ className: 'flight__flight' },
|
|
43818
|
+
React__default.createElement(
|
|
43819
|
+
'div',
|
|
43820
|
+
{ className: 'flight__flight__header' },
|
|
43821
|
+
React__default.createElement('div', { className: 'flight__status__container' }),
|
|
43822
|
+
React__default.createElement(
|
|
43823
|
+
'div',
|
|
43824
|
+
{ className: 'flight__price' },
|
|
43825
|
+
price != null &&
|
|
43826
|
+
price > 0 &&
|
|
43827
|
+
(isOutward
|
|
43828
|
+
? React__default.createElement(
|
|
43829
|
+
'span',
|
|
43830
|
+
{ className: 'price' },
|
|
43831
|
+
translations.QSM.ROUNDTRIP + ' ' + translations.SRP.PRICE,
|
|
43832
|
+
'\u00A0',
|
|
43833
|
+
formatPrice$2(
|
|
43834
|
+
price,
|
|
43835
|
+
'EUR',
|
|
43836
|
+
(_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
|
|
43837
|
+
)
|
|
43838
|
+
)
|
|
43839
|
+
: priceDifference != null &&
|
|
43840
|
+
Math.abs(priceDifference) > 0 &&
|
|
43841
|
+
React__default.createElement(
|
|
43842
|
+
'span',
|
|
43843
|
+
{ className: 'price' },
|
|
43844
|
+
priceDifference > 0 ? '+' : '-',
|
|
43845
|
+
'\u00A0',
|
|
43846
|
+
formatPrice$2(
|
|
43847
|
+
Math.abs(priceDifference),
|
|
43848
|
+
'EUR',
|
|
43849
|
+
(_d = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
|
|
43850
|
+
)
|
|
43851
|
+
)),
|
|
43852
|
+
React__default.createElement(
|
|
43853
|
+
'button',
|
|
43854
|
+
{
|
|
43855
|
+
type: 'button',
|
|
43856
|
+
className: 'cta '.concat(selectedGuid === guid ? 'cta--selected' : 'cta--select'),
|
|
43857
|
+
onClick: function () {
|
|
43858
|
+
return onSelect === null || onSelect === void 0 ? void 0 : onSelect();
|
|
43859
|
+
}
|
|
43860
|
+
},
|
|
43861
|
+
selectedGuid === guid ? 'Selected' : 'Select'
|
|
43862
|
+
)
|
|
43863
|
+
)
|
|
43864
|
+
)
|
|
43865
|
+
),
|
|
43866
|
+
React__default.createElement(
|
|
43867
|
+
'div',
|
|
43868
|
+
{ className: 'flight__flight' },
|
|
43869
|
+
React__default.createElement(
|
|
43870
|
+
'div',
|
|
43871
|
+
{ className: 'flight__flight__container' },
|
|
43872
|
+
React__default.createElement(
|
|
43873
|
+
'div',
|
|
43874
|
+
{ className: 'flight__flight__wrapper' },
|
|
43875
|
+
React__default.createElement(
|
|
43876
|
+
'div',
|
|
43877
|
+
{ className: 'flight__logo__wrapper' },
|
|
43878
|
+
React__default.createElement('img', {
|
|
43879
|
+
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
|
|
43880
|
+
(_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.marketingAirlineCode,
|
|
43881
|
+
'.png?height=256'
|
|
43882
|
+
),
|
|
43883
|
+
alt: '',
|
|
43884
|
+
className: 'flight__logo'
|
|
43885
|
+
}),
|
|
43886
|
+
React__default.createElement('span', null, (_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.marketingAirlineName)
|
|
43887
|
+
),
|
|
43888
|
+
React__default.createElement(
|
|
43889
|
+
'div',
|
|
43890
|
+
{ className: 'flight__info' },
|
|
43891
|
+
React__default.createElement(
|
|
43892
|
+
'div',
|
|
43893
|
+
{ className: 'flight__info__times' },
|
|
43894
|
+
React__default.createElement(
|
|
43895
|
+
'strong',
|
|
43896
|
+
null,
|
|
43897
|
+
timeFromDateTime((_g = getDepartureSegment(item)) === null || _g === void 0 ? void 0 : _g.departureDateTime),
|
|
43898
|
+
' ',
|
|
43899
|
+
(_h = getDepartureSegment(item)) === null || _h === void 0 ? void 0 : _h.departureAirportCode
|
|
43900
|
+
),
|
|
43901
|
+
React__default.createElement(
|
|
43902
|
+
'p',
|
|
43903
|
+
null,
|
|
43904
|
+
longFormatDate((_j = getDepartureSegment(item)) === null || _j === void 0 ? void 0 : _j.departureDateTime, language)
|
|
43905
|
+
)
|
|
43906
|
+
),
|
|
43907
|
+
React__default.createElement(
|
|
43908
|
+
'div',
|
|
43909
|
+
{ className: 'flight__info__duration' },
|
|
43910
|
+
React__default.createElement('p', null, durationTicksInHoursString(item.durationInTicks)),
|
|
43911
|
+
React__default.createElement(
|
|
43912
|
+
'div',
|
|
43913
|
+
{ className: 'flight__info__duration__stops' },
|
|
43914
|
+
React__default.createElement('div', { className: 'flight__info__duration__stop' })
|
|
43915
|
+
),
|
|
43916
|
+
React__default.createElement(
|
|
43917
|
+
'span',
|
|
43918
|
+
null,
|
|
43919
|
+
getNumberOfStopsLabel(item, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
|
|
43920
|
+
)
|
|
43921
|
+
),
|
|
43922
|
+
React__default.createElement(
|
|
43923
|
+
'div',
|
|
43924
|
+
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
43925
|
+
React__default.createElement(
|
|
43926
|
+
'strong',
|
|
43927
|
+
null,
|
|
43928
|
+
timeFromDateTime((_k = getArrivalSegment(item)) === null || _k === void 0 ? void 0 : _k.arrivalDateTime),
|
|
43929
|
+
' ',
|
|
43930
|
+
(_l = getArrivalSegment(item)) === null || _l === void 0 ? void 0 : _l.arrivalAirportCode
|
|
43931
|
+
),
|
|
43932
|
+
React__default.createElement(
|
|
43933
|
+
'p',
|
|
43934
|
+
null,
|
|
43935
|
+
longFormatDate((_m = getArrivalSegment(item)) === null || _m === void 0 ? void 0 : _m.arrivalDateTime, language)
|
|
43936
|
+
)
|
|
43937
|
+
)
|
|
43938
|
+
)
|
|
43939
|
+
),
|
|
43940
|
+
React__default.createElement(
|
|
43941
|
+
'div',
|
|
43942
|
+
{ className: 'flight__detail__btn__wrapper' },
|
|
43943
|
+
React__default.createElement(
|
|
43944
|
+
'div',
|
|
43945
|
+
{
|
|
43946
|
+
className: 'flight__detail__btn '.concat(detailsOpen ? 'flight__detail__btn--active' : ''),
|
|
43947
|
+
onClick: function () {
|
|
43948
|
+
return setDetailsOpen(function (prev) {
|
|
43949
|
+
return !prev;
|
|
43950
|
+
});
|
|
43951
|
+
}
|
|
43952
|
+
},
|
|
43953
|
+
React__default.createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
|
|
43954
|
+
)
|
|
43955
|
+
)
|
|
43956
|
+
),
|
|
43957
|
+
React__default.createElement(
|
|
43958
|
+
'div',
|
|
43959
|
+
{ className: 'flight__detail '.concat(detailsOpen ? 'flight__detail--active' : '') },
|
|
43960
|
+
(_o = getFlightSegments(item)) === null || _o === void 0
|
|
43961
|
+
? void 0
|
|
43962
|
+
: _o.map(function (segment, index) {
|
|
43963
|
+
return React__default.createElement(
|
|
43964
|
+
React__default.Fragment,
|
|
43965
|
+
{ key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
|
|
43966
|
+
React__default.createElement(
|
|
43967
|
+
'div',
|
|
43968
|
+
{ className: 'flight__info' },
|
|
43969
|
+
React__default.createElement(
|
|
43970
|
+
'div',
|
|
43971
|
+
{ className: 'flight__info__times__wrapper' },
|
|
43972
|
+
React__default.createElement(
|
|
43973
|
+
'div',
|
|
43974
|
+
{ className: 'flight__info__times' },
|
|
43975
|
+
React__default.createElement('p', null, timeFromDateTime(segment.departureDateTime)),
|
|
43976
|
+
React__default.createElement('strong', null, segment.departureAirportCode),
|
|
43977
|
+
React__default.createElement('p', null, longFormatDate(segment.departureDateTime, language))
|
|
43978
|
+
),
|
|
43979
|
+
React__default.createElement('div', null, React__default.createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 }))
|
|
43980
|
+
),
|
|
43981
|
+
React__default.createElement(
|
|
43982
|
+
'div',
|
|
43983
|
+
{ className: 'flight__info__duration' },
|
|
43984
|
+
React__default.createElement('p', null, durationTicksInHoursString(segment.durationInTicks)),
|
|
43985
|
+
React__default.createElement('div', { className: 'flight__info__duration__stops' }),
|
|
43986
|
+
React__default.createElement('span', null, segment.marketingAirlineName),
|
|
43987
|
+
React__default.createElement('strong', null, segment.operatingFlightNumber)
|
|
43988
|
+
),
|
|
43989
|
+
React__default.createElement(
|
|
43990
|
+
'div',
|
|
43991
|
+
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
43992
|
+
React__default.createElement('div', null, React__default.createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })),
|
|
43993
|
+
React__default.createElement(
|
|
43994
|
+
'div',
|
|
43995
|
+
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
43996
|
+
React__default.createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
43997
|
+
React__default.createElement('strong', null, segment.arrivalAirportCode),
|
|
43998
|
+
React__default.createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
43999
|
+
)
|
|
44000
|
+
)
|
|
44001
|
+
),
|
|
44002
|
+
segment.transferTimeInTicks &&
|
|
44003
|
+
React__default.createElement(
|
|
44004
|
+
'div',
|
|
44005
|
+
{ className: 'flight__info' },
|
|
44006
|
+
React__default.createElement('div', { className: 'flight__info__times' }),
|
|
44007
|
+
React__default.createElement(
|
|
44008
|
+
'div',
|
|
44009
|
+
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44010
|
+
React__default.createElement(
|
|
44011
|
+
'div',
|
|
44012
|
+
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44013
|
+
React__default.createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44014
|
+
),
|
|
44015
|
+
React__default.createElement(
|
|
44016
|
+
'div',
|
|
44017
|
+
{ className: 'flight__info__duration__stoptime' },
|
|
44018
|
+
React__default.createElement('span', null, 'Stop time'),
|
|
44019
|
+
React__default.createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
44020
|
+
)
|
|
44021
|
+
),
|
|
44022
|
+
React__default.createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
44023
|
+
)
|
|
44024
|
+
);
|
|
44025
|
+
})
|
|
44026
|
+
)
|
|
44027
|
+
)
|
|
44028
|
+
)
|
|
44029
|
+
)
|
|
44030
|
+
)
|
|
44031
|
+
)
|
|
44032
|
+
);
|
|
44033
|
+
};
|
|
44034
|
+
|
|
44035
|
+
var MultiRangeFilter = function (_a) {
|
|
44036
|
+
var min = _a.min,
|
|
44037
|
+
max = _a.max,
|
|
44038
|
+
selectedMin = _a.selectedMin,
|
|
44039
|
+
selectedMax = _a.selectedMax,
|
|
44040
|
+
valueFormatter = _a.valueFormatter,
|
|
44041
|
+
onChange = _a.onChange;
|
|
44042
|
+
var _b = useState(false),
|
|
44043
|
+
isDragging = _b[0],
|
|
44044
|
+
setIsDragging = _b[1];
|
|
44045
|
+
var _c = useState(0),
|
|
44046
|
+
leftPercentage = _c[0],
|
|
44047
|
+
setLeftPercentage = _c[1];
|
|
44048
|
+
var _d = useState(0),
|
|
44049
|
+
rightPercentage = _d[0],
|
|
44050
|
+
setRightPercentage = _d[1];
|
|
44051
|
+
var _e = useState(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min),
|
|
44052
|
+
minVal = _e[0],
|
|
44053
|
+
setMinVal = _e[1];
|
|
44054
|
+
var _f = useState(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max),
|
|
44055
|
+
maxVal = _f[0],
|
|
44056
|
+
setMaxVal = _f[1];
|
|
44057
|
+
var minGap = 5;
|
|
44058
|
+
// Sync internal state with external selectedMin/selectedMax changes
|
|
44059
|
+
useEffect(
|
|
44060
|
+
function () {
|
|
44061
|
+
setMinVal(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min);
|
|
44062
|
+
setMaxVal(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max);
|
|
44063
|
+
},
|
|
44064
|
+
[min, max, selectedMin, selectedMax]
|
|
44065
|
+
);
|
|
44066
|
+
// Recalculate slider track whenever values change
|
|
44067
|
+
useEffect(
|
|
44068
|
+
function () {
|
|
44069
|
+
var range = max - min || 1;
|
|
44070
|
+
var minPercent = ((minVal - min) / range) * 100;
|
|
44071
|
+
var maxPercent = ((maxVal - min) / range) * 100;
|
|
44072
|
+
setLeftPercentage(minPercent);
|
|
44073
|
+
setRightPercentage(100 - maxPercent);
|
|
44074
|
+
},
|
|
44075
|
+
[minVal, maxVal, min, max]
|
|
44076
|
+
);
|
|
44077
|
+
var slideMin = function (e) {
|
|
44078
|
+
var value = parseInt(e.target.value, 10);
|
|
44079
|
+
// Ensure the thumbs don’t cross and enforce minGap
|
|
44080
|
+
if (value <= maxVal - minGap) {
|
|
44081
|
+
setMinVal(value);
|
|
44082
|
+
}
|
|
44083
|
+
};
|
|
44084
|
+
var slideMax = function (e) {
|
|
44085
|
+
var value = parseInt(e.target.value, 10);
|
|
44086
|
+
// Ensure the thumbs don’t cross and enforce minGap
|
|
44087
|
+
if (value >= minVal + minGap) {
|
|
44088
|
+
setMaxVal(value);
|
|
44089
|
+
}
|
|
44090
|
+
};
|
|
44091
|
+
var startDrag = function () {
|
|
44092
|
+
setIsDragging(true);
|
|
44093
|
+
};
|
|
44094
|
+
var stopDrag = function () {
|
|
44095
|
+
setIsDragging(false);
|
|
44096
|
+
// Notify parent with the final values
|
|
44097
|
+
onChange(minVal, maxVal);
|
|
44098
|
+
};
|
|
44099
|
+
return React__default.createElement(
|
|
44100
|
+
'div',
|
|
44101
|
+
{ className: 'double-slider-box' },
|
|
44102
|
+
React__default.createElement(
|
|
44103
|
+
'div',
|
|
44104
|
+
{ className: 'input-box' },
|
|
44105
|
+
React__default.createElement('div', { className: 'min-box' }, valueFormatter(minVal)),
|
|
44106
|
+
React__default.createElement('div', { className: 'max-box' }, valueFormatter(maxVal))
|
|
44107
|
+
),
|
|
44108
|
+
React__default.createElement(
|
|
44109
|
+
'div',
|
|
44110
|
+
{ className: 'range-slider' },
|
|
44111
|
+
React__default.createElement('div', {
|
|
44112
|
+
className: 'slider-track',
|
|
44113
|
+
style: { left: ''.concat(leftPercentage, '%'), right: ''.concat(rightPercentage, '%') }
|
|
44114
|
+
}),
|
|
44115
|
+
React__default.createElement('input', {
|
|
44116
|
+
type: 'range',
|
|
44117
|
+
min: min,
|
|
44118
|
+
max: max,
|
|
44119
|
+
value: minVal,
|
|
44120
|
+
onChange: slideMin,
|
|
44121
|
+
onMouseDown: startDrag,
|
|
44122
|
+
onMouseUp: stopDrag,
|
|
44123
|
+
onTouchStart: startDrag,
|
|
44124
|
+
onTouchEnd: stopDrag,
|
|
44125
|
+
className: 'min-val'
|
|
44126
|
+
}),
|
|
44127
|
+
React__default.createElement('input', {
|
|
44128
|
+
type: 'range',
|
|
44129
|
+
min: min,
|
|
44130
|
+
max: max,
|
|
44131
|
+
value: maxVal,
|
|
44132
|
+
onChange: slideMax,
|
|
44133
|
+
onMouseDown: startDrag,
|
|
44134
|
+
onMouseUp: stopDrag,
|
|
44135
|
+
onTouchStart: startDrag,
|
|
44136
|
+
onTouchEnd: stopDrag,
|
|
44137
|
+
className: 'max-val'
|
|
44138
|
+
}),
|
|
44139
|
+
isDragging && React__default.createElement('div', { className: 'min-tooltip' }, valueFormatter(minVal)),
|
|
44140
|
+
isDragging && React__default.createElement('div', { className: 'max-tooltip' }, valueFormatter(maxVal))
|
|
44141
|
+
)
|
|
44142
|
+
);
|
|
44143
|
+
};
|
|
44144
|
+
|
|
44145
|
+
var Filters = function (_a) {
|
|
44146
|
+
var _b;
|
|
44147
|
+
var initialFilters = _a.initialFilters,
|
|
44148
|
+
filters = _a.filters,
|
|
44149
|
+
isOpen = _a.isOpen,
|
|
44150
|
+
handleSetIsOpen = _a.handleSetIsOpen,
|
|
44151
|
+
isLoading = _a.isLoading,
|
|
44152
|
+
setFilters = _a.setFilters,
|
|
44153
|
+
resetFilters = _a.resetFilters;
|
|
44154
|
+
var context = useContext(SearchResultsConfigurationContext);
|
|
44155
|
+
if (!context || !context.showFilters) {
|
|
44156
|
+
return null;
|
|
44157
|
+
}
|
|
44158
|
+
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
44159
|
+
var _c = useState({}),
|
|
44160
|
+
visibleFilters = _c[0],
|
|
44161
|
+
setVisibleFilters = _c[1];
|
|
44162
|
+
var toggleFilterVisibility = function (filterId) {
|
|
44163
|
+
setVisibleFilters(function (prev) {
|
|
44164
|
+
var _a;
|
|
44165
|
+
return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
|
|
44166
|
+
});
|
|
44167
|
+
};
|
|
44168
|
+
var handleCheckBoxFilter = function (filter, option) {
|
|
44169
|
+
var updated = filters.map(function (f) {
|
|
44170
|
+
var _a;
|
|
44171
|
+
if (f.property !== filter.property) return f;
|
|
44172
|
+
return __assign(__assign({}, f), {
|
|
44173
|
+
options:
|
|
44174
|
+
(_a = f.options) === null || _a === void 0
|
|
44175
|
+
? void 0
|
|
44176
|
+
: _a.map(function (opt) {
|
|
44177
|
+
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
44178
|
+
})
|
|
44179
|
+
});
|
|
44180
|
+
});
|
|
44181
|
+
setFilters(updated);
|
|
44182
|
+
};
|
|
44183
|
+
var handleSliderChange = function (filter, newMin, newMax) {
|
|
44184
|
+
var updated = filters.map(function (f) {
|
|
44185
|
+
if (f.property !== filter.property) return f;
|
|
44186
|
+
return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
|
|
44187
|
+
});
|
|
44188
|
+
setFilters(updated);
|
|
44189
|
+
};
|
|
44190
|
+
var handleFullReset = function () {
|
|
44191
|
+
if (!isLoading) {
|
|
44192
|
+
resetFilters(initialFilters);
|
|
44193
|
+
}
|
|
44194
|
+
};
|
|
44195
|
+
return React__default.createElement(
|
|
44196
|
+
'div',
|
|
44197
|
+
{ className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
|
|
44198
|
+
React__default.createElement('div', {
|
|
44199
|
+
className: 'search__filters--background',
|
|
44200
|
+
onClick: function () {
|
|
44201
|
+
return handleSetIsOpen();
|
|
44202
|
+
}
|
|
44203
|
+
}),
|
|
44204
|
+
React__default.createElement(
|
|
44205
|
+
'button',
|
|
44206
|
+
{
|
|
44207
|
+
className: 'search__filters--close',
|
|
44208
|
+
onClick: function () {
|
|
44209
|
+
return handleSetIsOpen();
|
|
44210
|
+
}
|
|
44211
|
+
},
|
|
44212
|
+
React__default.createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
44213
|
+
),
|
|
44214
|
+
React__default.createElement(
|
|
44215
|
+
'div',
|
|
44216
|
+
{ className: 'search__filters' },
|
|
44217
|
+
React__default.createElement(
|
|
44218
|
+
'div',
|
|
44219
|
+
{ className: 'search__filter-row search__filter__header' },
|
|
44220
|
+
React__default.createElement(
|
|
44221
|
+
'div',
|
|
44222
|
+
{ className: 'search__filter-row-flex-title' },
|
|
44223
|
+
React__default.createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
|
|
44224
|
+
),
|
|
44225
|
+
!isLoading &&
|
|
44226
|
+
React__default.createElement(
|
|
44227
|
+
'a',
|
|
44228
|
+
{
|
|
44229
|
+
className: 'search__filter-reset',
|
|
44230
|
+
onClick: function () {
|
|
44231
|
+
return handleFullReset();
|
|
44232
|
+
}
|
|
44233
|
+
},
|
|
44234
|
+
translations.SRP.RESET
|
|
44235
|
+
)
|
|
43548
44236
|
),
|
|
44237
|
+
isLoading
|
|
44238
|
+
? React__default.createElement(Spinner, null)
|
|
44239
|
+
: React__default.createElement(
|
|
44240
|
+
React__default.Fragment,
|
|
44241
|
+
null,
|
|
44242
|
+
React__default.createElement(
|
|
44243
|
+
'div',
|
|
44244
|
+
{ className: 'search__filters__group-container' },
|
|
44245
|
+
filters.map(function (filter, index) {
|
|
44246
|
+
var _a, _b;
|
|
44247
|
+
var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
|
|
44248
|
+
return React__default.createElement(
|
|
44249
|
+
'div',
|
|
44250
|
+
{ key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
|
|
44251
|
+
React__default.createElement(
|
|
44252
|
+
'div',
|
|
44253
|
+
{
|
|
44254
|
+
className: 'search__filter-row search__filter-row--underline',
|
|
44255
|
+
onClick: function () {
|
|
44256
|
+
return toggleFilterVisibility(filter.property);
|
|
44257
|
+
},
|
|
44258
|
+
role: 'button',
|
|
44259
|
+
tabIndex: 0
|
|
44260
|
+
},
|
|
44261
|
+
React__default.createElement('h6', { className: 'search__filter-large-title' }, filter.label),
|
|
44262
|
+
React__default.createElement(
|
|
44263
|
+
'svg',
|
|
44264
|
+
{
|
|
44265
|
+
id: 'search-chevron-up-icon',
|
|
44266
|
+
className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
|
|
44267
|
+
viewBox: '0 0 10 6.063',
|
|
44268
|
+
width: 10,
|
|
44269
|
+
height: 6.063
|
|
44270
|
+
},
|
|
44271
|
+
React__default.createElement('path', {
|
|
44272
|
+
id: 'Path_62',
|
|
44273
|
+
'data-name': 'Path 62',
|
|
44274
|
+
d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
|
|
44275
|
+
transform: 'translate(-240 624)',
|
|
44276
|
+
fill: '#707070'
|
|
44277
|
+
})
|
|
44278
|
+
)
|
|
44279
|
+
),
|
|
44280
|
+
isVisible &&
|
|
44281
|
+
filter.type === 'checkbox' &&
|
|
44282
|
+
React__default.createElement(
|
|
44283
|
+
'div',
|
|
44284
|
+
{ className: 'search__filter-rows' },
|
|
44285
|
+
filter.options &&
|
|
44286
|
+
filter.options.map(function (option, optionIndex) {
|
|
44287
|
+
return React__default.createElement(
|
|
44288
|
+
'div',
|
|
44289
|
+
{ className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
44290
|
+
React__default.createElement(
|
|
44291
|
+
'div',
|
|
44292
|
+
{ className: 'checkbox' },
|
|
44293
|
+
React__default.createElement(
|
|
44294
|
+
'label',
|
|
44295
|
+
{ className: 'checkbox__label' },
|
|
44296
|
+
React__default.createElement('input', {
|
|
44297
|
+
type: 'checkbox',
|
|
44298
|
+
className: 'checkbox__input checkbox__input--parent',
|
|
44299
|
+
checked: option.isChecked,
|
|
44300
|
+
onChange: function (e) {
|
|
44301
|
+
return handleCheckBoxFilter(filter, option);
|
|
44302
|
+
}
|
|
44303
|
+
}),
|
|
44304
|
+
React__default.createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
44305
|
+
)
|
|
44306
|
+
)
|
|
44307
|
+
);
|
|
44308
|
+
})
|
|
44309
|
+
),
|
|
44310
|
+
isVisible &&
|
|
44311
|
+
filter.type === 'toggle' &&
|
|
44312
|
+
React__default.createElement(
|
|
44313
|
+
'div',
|
|
44314
|
+
{ className: 'search__filter-rows' },
|
|
44315
|
+
(_b = filter.options) === null || _b === void 0
|
|
44316
|
+
? void 0
|
|
44317
|
+
: _b.map(function (option, optionIndex) {
|
|
44318
|
+
return React__default.createElement(
|
|
44319
|
+
'div',
|
|
44320
|
+
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
44321
|
+
React__default.createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
44322
|
+
React__default.createElement('div', { className: 'checkbox' }),
|
|
44323
|
+
React__default.createElement(
|
|
44324
|
+
'label',
|
|
44325
|
+
{ className: 'checkbox__label' },
|
|
44326
|
+
React__default.createElement('input', {
|
|
44327
|
+
type: 'checkbox',
|
|
44328
|
+
className: 'checkbox__input',
|
|
44329
|
+
checked: option.isChecked,
|
|
44330
|
+
onChange: function () {
|
|
44331
|
+
return handleCheckBoxFilter(filter, option);
|
|
44332
|
+
}
|
|
44333
|
+
})
|
|
44334
|
+
)
|
|
44335
|
+
);
|
|
44336
|
+
})
|
|
44337
|
+
),
|
|
44338
|
+
isVisible &&
|
|
44339
|
+
filter &&
|
|
44340
|
+
filter.type === 'slider' &&
|
|
44341
|
+
(function () {
|
|
44342
|
+
var _a, _b, _c, _d;
|
|
44343
|
+
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
44344
|
+
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
44345
|
+
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
44346
|
+
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
44347
|
+
return React__default.createElement(MultiRangeFilter, {
|
|
44348
|
+
min: min,
|
|
44349
|
+
max: max,
|
|
44350
|
+
selectedMin: selectedMin,
|
|
44351
|
+
selectedMax: selectedMax,
|
|
44352
|
+
valueFormatter: function (value) {
|
|
44353
|
+
return ''.concat(value);
|
|
44354
|
+
},
|
|
44355
|
+
onChange: function (newMin, newMax) {
|
|
44356
|
+
handleSliderChange(filter, newMin, newMax);
|
|
44357
|
+
}
|
|
44358
|
+
});
|
|
44359
|
+
})()
|
|
44360
|
+
);
|
|
44361
|
+
})
|
|
44362
|
+
)
|
|
44363
|
+
)
|
|
44364
|
+
)
|
|
44365
|
+
);
|
|
44366
|
+
};
|
|
44367
|
+
|
|
44368
|
+
var PackageingFlightsFlyIn = function (_a) {
|
|
44369
|
+
var _b;
|
|
44370
|
+
_a.isOpen;
|
|
44371
|
+
_a.setIsOpen;
|
|
44372
|
+
var context = useContext(SearchResultsConfigurationContext);
|
|
44373
|
+
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44374
|
+
var translations = getTranslations(language);
|
|
44375
|
+
var dispatch = useDispatch();
|
|
44376
|
+
var _c = useSelector(function (state) {
|
|
44377
|
+
return state.searchResults;
|
|
44378
|
+
}),
|
|
44379
|
+
flightsLoading = _c.flightsLoading,
|
|
44380
|
+
initialFlightFilters = _c.initialFlightFilters,
|
|
44381
|
+
flightFilters = _c.flightFilters,
|
|
44382
|
+
flyInType = _c.flyInType,
|
|
44383
|
+
selectedFlightSortType = _c.selectedFlightSortType;
|
|
44384
|
+
var uniqueOutwardFlights = useSelector(selectUniqueOutwardFlights);
|
|
44385
|
+
var uniqueReturnFlights = useSelector(selectUniqueReturnFlights);
|
|
44386
|
+
var selectedOutward = useSelector(selectSelectedOutward);
|
|
44387
|
+
var selectedReturn = useSelector(selectSelectedReturn);
|
|
44388
|
+
var _d = useState(false),
|
|
44389
|
+
outwardStepComplete = _d[0],
|
|
44390
|
+
setOutwardStepComplete = _d[1];
|
|
44391
|
+
var handleConfirm = function () {
|
|
44392
|
+
if (!outwardStepComplete) {
|
|
44393
|
+
setOutwardStepComplete(true);
|
|
44394
|
+
dispatch(setFlyInType('flight-return-results'));
|
|
44395
|
+
return;
|
|
44396
|
+
} else {
|
|
44397
|
+
dispatch(setFlyInType(null));
|
|
44398
|
+
setOutwardStepComplete(false);
|
|
44399
|
+
dispatch(setFlyInIsOpen(false));
|
|
44400
|
+
}
|
|
44401
|
+
};
|
|
44402
|
+
var sortByTypes = [
|
|
44403
|
+
{ direction: 'asc', label: 'default' },
|
|
44404
|
+
{ direction: 'asc', label: 'price' },
|
|
44405
|
+
{ direction: 'desc', label: 'price' },
|
|
44406
|
+
{ direction: 'asc', label: 'departureTime' },
|
|
44407
|
+
{ direction: 'desc', label: 'departureTime' },
|
|
44408
|
+
{ direction: 'asc', label: 'durationInTicks' },
|
|
44409
|
+
{ direction: 'desc', label: 'durationInTicks' }
|
|
44410
|
+
];
|
|
44411
|
+
var handleSortChange = function (newSortKey, direction) {
|
|
44412
|
+
if (sortByTypes === undefined) return;
|
|
44413
|
+
var newSortByType = findSortByType(sortByTypes, newSortKey, direction !== null && direction !== void 0 ? direction : 'asc');
|
|
44414
|
+
if (newSortByType) {
|
|
44415
|
+
dispatch(setFlightSortType(newSortByType));
|
|
44416
|
+
}
|
|
44417
|
+
};
|
|
44418
|
+
return React__default.createElement(
|
|
44419
|
+
React__default.Fragment,
|
|
44420
|
+
null,
|
|
44421
|
+
React__default.createElement(
|
|
44422
|
+
'div',
|
|
44423
|
+
{ className: 'flyin__content flyin__content--columns' },
|
|
44424
|
+
flightsLoading
|
|
44425
|
+
? React__default.createElement(Spinner, null)
|
|
44426
|
+
: React__default.createElement(
|
|
44427
|
+
React__default.Fragment,
|
|
44428
|
+
null,
|
|
44429
|
+
React__default.createElement(Filters, {
|
|
44430
|
+
initialFilters: initialFlightFilters,
|
|
44431
|
+
filters: flightFilters,
|
|
44432
|
+
isOpen: false,
|
|
44433
|
+
handleSetIsOpen: function () {},
|
|
44434
|
+
// handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
|
|
44435
|
+
isLoading: flightsLoading,
|
|
44436
|
+
setFilters: function (filters) {
|
|
44437
|
+
return dispatch(setFlightFilters(filters));
|
|
44438
|
+
},
|
|
44439
|
+
resetFilters: function (filters) {
|
|
44440
|
+
return dispatch(resetFlightFilters(filters));
|
|
44441
|
+
}
|
|
44442
|
+
}),
|
|
44443
|
+
React__default.createElement(
|
|
44444
|
+
'div',
|
|
44445
|
+
{ className: 'search__results__wrapper' },
|
|
44446
|
+
React__default.createElement(
|
|
44447
|
+
'div',
|
|
44448
|
+
{ className: 'search__result-row' },
|
|
44449
|
+
React__default.createElement(
|
|
44450
|
+
'span',
|
|
44451
|
+
{ className: 'search__result-row-text' },
|
|
44452
|
+
(uniqueOutwardFlights === null || uniqueOutwardFlights === void 0 ? void 0 : uniqueOutwardFlights.length) && uniqueOutwardFlights.length,
|
|
44453
|
+
'\u00A0',
|
|
44454
|
+
translations.FLIGHTS_FORM.FLIGHTS_FOUND_2,
|
|
44455
|
+
'\u00A0',
|
|
44456
|
+
translations.FLIGHTS_FORM.FLIGHTS_FOUND_3
|
|
44457
|
+
),
|
|
44458
|
+
sortByTypes &&
|
|
44459
|
+
sortByTypes.length > 0 &&
|
|
44460
|
+
React__default.createElement(
|
|
44461
|
+
'div',
|
|
44462
|
+
{ className: 'search__result-row-filter' },
|
|
44463
|
+
React__default.createElement(ItemPicker, {
|
|
44464
|
+
items: sortByTypes,
|
|
44465
|
+
selection: (selectedFlightSortType === null || selectedFlightSortType === void 0 ? void 0 : selectedFlightSortType.label) || undefined,
|
|
44466
|
+
selectedSortByType: selectedFlightSortType || undefined,
|
|
44467
|
+
label: translations.SRP.SORTBY,
|
|
44468
|
+
placeholder: translations.SRP.SORTBY,
|
|
44469
|
+
classModifier: '',
|
|
44470
|
+
valueFormatter: function (value, direction) {
|
|
44471
|
+
return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
|
|
44472
|
+
},
|
|
44473
|
+
// onPick={handleSortChange}
|
|
44474
|
+
onPick: function (newSortKey, direction) {
|
|
44475
|
+
return handleSortChange(newSortKey, direction);
|
|
44476
|
+
}
|
|
44477
|
+
})
|
|
44478
|
+
)
|
|
44479
|
+
),
|
|
44480
|
+
React__default.createElement(
|
|
44481
|
+
'div',
|
|
44482
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
44483
|
+
flyInType == 'flight-outward-results' &&
|
|
44484
|
+
uniqueOutwardFlights.map(function (result) {
|
|
44485
|
+
return React__default.createElement(IndependentFlightOption, {
|
|
44486
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
44487
|
+
item: result.outward,
|
|
44488
|
+
onSelect: function () {
|
|
44489
|
+
return dispatch(setSelectedOutwardKey(getFlightKey(result.outward.segments)));
|
|
44490
|
+
},
|
|
44491
|
+
guid: result.outwardGuid,
|
|
44492
|
+
isOutward: true,
|
|
44493
|
+
price: result.price,
|
|
44494
|
+
currentSelectedPrice: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.price,
|
|
44495
|
+
selectedGuid: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.outwardGuid,
|
|
44496
|
+
showSelectedState: true
|
|
44497
|
+
});
|
|
44498
|
+
}),
|
|
44499
|
+
flyInType == 'flight-return-results' &&
|
|
44500
|
+
uniqueReturnFlights.map(function (result) {
|
|
44501
|
+
return React__default.createElement(IndependentFlightOption, {
|
|
44502
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
44503
|
+
item: result.return,
|
|
44504
|
+
onSelect: function () {
|
|
44505
|
+
return dispatch(setSelectedReturnKey(getFlightKey(result.return.segments)));
|
|
44506
|
+
},
|
|
44507
|
+
guid: result.outwardGuid,
|
|
44508
|
+
isOutward: false,
|
|
44509
|
+
price: result.price,
|
|
44510
|
+
currentSelectedPrice: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.price,
|
|
44511
|
+
selectedGuid: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.outwardGuid,
|
|
44512
|
+
showSelectedState: true
|
|
44513
|
+
});
|
|
44514
|
+
})
|
|
44515
|
+
)
|
|
44516
|
+
)
|
|
44517
|
+
)
|
|
44518
|
+
),
|
|
44519
|
+
React__default.createElement(
|
|
44520
|
+
'div',
|
|
44521
|
+
{ className: 'flyin__footer' },
|
|
44522
|
+
React__default.createElement('div', { className: 'flyin__footer__price' }),
|
|
43549
44523
|
React__default.createElement(
|
|
43550
44524
|
'div',
|
|
43551
|
-
{ className: '
|
|
43552
|
-
React__default.createElement(
|
|
44525
|
+
{ className: 'flyin__button-wrapper' },
|
|
44526
|
+
React__default.createElement(
|
|
44527
|
+
'button',
|
|
44528
|
+
{
|
|
44529
|
+
className: 'cta cta--select',
|
|
44530
|
+
onClick: function () {
|
|
44531
|
+
return handleConfirm();
|
|
44532
|
+
}
|
|
44533
|
+
},
|
|
44534
|
+
translations.QSM.CONFIRM
|
|
44535
|
+
)
|
|
43553
44536
|
)
|
|
43554
|
-
)
|
|
43555
|
-
renderHotelResults(mappedResults, context, activeTab, translations)
|
|
44537
|
+
)
|
|
43556
44538
|
);
|
|
43557
44539
|
};
|
|
43558
44540
|
|
|
43559
44541
|
var FlyIn = function (_a) {
|
|
43560
|
-
var
|
|
43561
|
-
|
|
44542
|
+
var _b;
|
|
44543
|
+
var srpType = _a.srpType,
|
|
43562
44544
|
isOpen = _a.isOpen,
|
|
43563
44545
|
setIsOpen = _a.setIsOpen,
|
|
43564
|
-
|
|
43565
|
-
className =
|
|
44546
|
+
_c = _a.className,
|
|
44547
|
+
className = _c === void 0 ? '' : _c,
|
|
43566
44548
|
onPanelRef = _a.onPanelRef,
|
|
43567
44549
|
detailsLoading = _a.detailsLoading,
|
|
43568
|
-
|
|
44550
|
+
flyInType = _a.flyInType,
|
|
43569
44551
|
isPackageEditFlow = _a.isPackageEditFlow,
|
|
43570
|
-
handleConfirm = _a.handleConfirm
|
|
44552
|
+
handleConfirm = _a.handleConfirm,
|
|
44553
|
+
sortByTypes = _a.sortByTypes;
|
|
43571
44554
|
var dispatch = useDispatch();
|
|
44555
|
+
var context = useContext(SearchResultsConfigurationContext);
|
|
44556
|
+
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44557
|
+
var translations = getTranslations(language);
|
|
44558
|
+
var _d = useSelector(function (state) {
|
|
44559
|
+
return state.searchResults;
|
|
44560
|
+
}),
|
|
44561
|
+
isLoading = _d.isLoading,
|
|
44562
|
+
initialFilters = _d.initialFilters,
|
|
44563
|
+
filters = _d.filters,
|
|
44564
|
+
filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
|
|
44565
|
+
selectedSortType = _d.selectedSortType;
|
|
43572
44566
|
var onCancelSearch = useFlightSearch().onCancelSearch;
|
|
43573
44567
|
var panelRef = useRef(null);
|
|
43574
44568
|
// expose DOM node if needed
|
|
@@ -43616,12 +44610,19 @@ var FlyIn = function (_a) {
|
|
|
43616
44610
|
dispatch(setSelectedSearchResult(null));
|
|
43617
44611
|
dispatch(setSelectedPackagingAccoResult(null));
|
|
43618
44612
|
}
|
|
43619
|
-
dispatch(
|
|
44613
|
+
dispatch(setFlyInType('acco-details'));
|
|
43620
44614
|
setIsOpen(false);
|
|
43621
44615
|
}
|
|
43622
44616
|
};
|
|
43623
44617
|
var handleGoBack = function () {
|
|
43624
|
-
dispatch(
|
|
44618
|
+
dispatch(setFlyInType('acco-results'));
|
|
44619
|
+
};
|
|
44620
|
+
var handleSortChange = function (newSortKey, direction) {
|
|
44621
|
+
if (sortByTypes === undefined) return;
|
|
44622
|
+
var newSortByType = findSortByType(sortByTypes, newSortKey, direction !== null && direction !== void 0 ? direction : 'asc');
|
|
44623
|
+
if (newSortByType) {
|
|
44624
|
+
dispatch(setSortType(newSortByType));
|
|
44625
|
+
}
|
|
43625
44626
|
};
|
|
43626
44627
|
return React__default.createElement(
|
|
43627
44628
|
'div',
|
|
@@ -43629,7 +44630,11 @@ var FlyIn = function (_a) {
|
|
|
43629
44630
|
className: 'flyin '
|
|
43630
44631
|
.concat(isOpen ? 'flyin--active' : '', ' ')
|
|
43631
44632
|
.concat(className, ' ')
|
|
43632
|
-
.concat(
|
|
44633
|
+
.concat(
|
|
44634
|
+
isPackageEditFlow || flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' || flyInType === 'acco-results'
|
|
44635
|
+
? 'flyin--large'
|
|
44636
|
+
: ''
|
|
44637
|
+
)
|
|
43633
44638
|
},
|
|
43634
44639
|
React__default.createElement(
|
|
43635
44640
|
'div',
|
|
@@ -43640,7 +44645,22 @@ var FlyIn = function (_a) {
|
|
|
43640
44645
|
React__default.createElement(
|
|
43641
44646
|
'div',
|
|
43642
44647
|
{ className: 'flyin__content-title-row' },
|
|
43643
|
-
React__default.createElement(
|
|
44648
|
+
React__default.createElement(
|
|
44649
|
+
'h3',
|
|
44650
|
+
{ className: 'flyin__content-title' },
|
|
44651
|
+
srpType === build.PortalQsmType.Flight && 'Select your fare',
|
|
44652
|
+
srpType === build.PortalQsmType.Accommodation ||
|
|
44653
|
+
(srpType === build.PortalQsmType.AccommodationAndFlight &&
|
|
44654
|
+
(flyInType === 'acco-results' || flyInType === 'acco-details') &&
|
|
44655
|
+
''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION)),
|
|
44656
|
+
srpType === build.PortalQsmType.AccommodationAndFlight &&
|
|
44657
|
+
flyInType === 'flight-outward-results' &&
|
|
44658
|
+
''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.OUTWARD_FLIGHT),
|
|
44659
|
+
srpType === build.PortalQsmType.AccommodationAndFlight &&
|
|
44660
|
+
flyInType === 'flight-return-results' &&
|
|
44661
|
+
''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.RETURN_FLIGHT),
|
|
44662
|
+
srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare'
|
|
44663
|
+
),
|
|
43644
44664
|
React__default.createElement(
|
|
43645
44665
|
'span',
|
|
43646
44666
|
{
|
|
@@ -43653,7 +44673,7 @@ var FlyIn = function (_a) {
|
|
|
43653
44673
|
)
|
|
43654
44674
|
),
|
|
43655
44675
|
isPackageEditFlow &&
|
|
43656
|
-
|
|
44676
|
+
flyInType === 'acco-details' &&
|
|
43657
44677
|
React__default.createElement(
|
|
43658
44678
|
'div',
|
|
43659
44679
|
{ className: 'flyin__content-title-row' },
|
|
@@ -43667,15 +44687,73 @@ var FlyIn = function (_a) {
|
|
|
43667
44687
|
),
|
|
43668
44688
|
srpType === build.PortalQsmType.Flight && React__default.createElement(FlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
|
|
43669
44689
|
(srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.AccommodationAndFlight) &&
|
|
43670
|
-
|
|
44690
|
+
flyInType === 'acco-results' &&
|
|
43671
44691
|
React__default.createElement(
|
|
43672
44692
|
'div',
|
|
43673
|
-
{ className: 'flyin__content' },
|
|
43674
|
-
React__default.createElement(
|
|
44693
|
+
{ className: 'flyin__content flyin__content--columns' },
|
|
44694
|
+
React__default.createElement(Filters, {
|
|
44695
|
+
initialFilters: initialFilters,
|
|
44696
|
+
filters: filters,
|
|
44697
|
+
isOpen: false,
|
|
44698
|
+
handleSetIsOpen: function () {},
|
|
44699
|
+
// handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
|
|
44700
|
+
isLoading: isLoading,
|
|
44701
|
+
setFilters: function (filters) {
|
|
44702
|
+
return dispatch(setFilters(filters));
|
|
44703
|
+
},
|
|
44704
|
+
resetFilters: function (filters) {
|
|
44705
|
+
return dispatch(resetFilters(filters));
|
|
44706
|
+
}
|
|
44707
|
+
}),
|
|
44708
|
+
React__default.createElement(
|
|
44709
|
+
'div',
|
|
44710
|
+
{ className: 'search__results__wrapper' },
|
|
44711
|
+
React__default.createElement(
|
|
44712
|
+
'div',
|
|
44713
|
+
{ className: 'search__result-row' },
|
|
44714
|
+
React__default.createElement(
|
|
44715
|
+
'span',
|
|
44716
|
+
{ className: 'search__result-row-text' },
|
|
44717
|
+
!isLoading &&
|
|
44718
|
+
React__default.createElement(
|
|
44719
|
+
React__default.Fragment,
|
|
44720
|
+
null,
|
|
44721
|
+
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
|
|
44722
|
+
filteredPackagingAccoResults.length,
|
|
44723
|
+
'\u00A0',
|
|
44724
|
+
translations.SRP.TOTAL_RESULTS_LABEL
|
|
44725
|
+
)
|
|
44726
|
+
),
|
|
44727
|
+
sortByTypes &&
|
|
44728
|
+
sortByTypes.length > 0 &&
|
|
44729
|
+
React__default.createElement(
|
|
44730
|
+
'div',
|
|
44731
|
+
{ className: 'search__result-row-filter' },
|
|
44732
|
+
React__default.createElement(ItemPicker, {
|
|
44733
|
+
items: sortByTypes,
|
|
44734
|
+
selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
|
|
44735
|
+
selectedSortByType: selectedSortType,
|
|
44736
|
+
label: translations.SRP.SORTBY,
|
|
44737
|
+
placeholder: translations.SRP.SORTBY,
|
|
44738
|
+
classModifier: 'travel-class-picker__items',
|
|
44739
|
+
valueFormatter: function (value, direction) {
|
|
44740
|
+
return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
|
|
44741
|
+
},
|
|
44742
|
+
onPick: function (newSortKey, direction) {
|
|
44743
|
+
return handleSortChange(newSortKey, direction);
|
|
44744
|
+
}
|
|
44745
|
+
})
|
|
44746
|
+
)
|
|
44747
|
+
),
|
|
44748
|
+
React__default.createElement(HotelAccommodationResults, { isLoading: detailsLoading, isFlyIn: true })
|
|
44749
|
+
)
|
|
43675
44750
|
),
|
|
43676
44751
|
(srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.AccommodationAndFlight) &&
|
|
43677
|
-
|
|
44752
|
+
flyInType === 'acco-details' &&
|
|
43678
44753
|
React__default.createElement(AccommodationFlyIn, { isLoading: detailsLoading, handleConfirm: handleConfirm }),
|
|
44754
|
+
srpType === build.PortalQsmType.AccommodationAndFlight &&
|
|
44755
|
+
(flyInType === 'flight-outward-results' || flyInType === 'flight-return-results') &&
|
|
44756
|
+
React__default.createElement(PackageingFlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
|
|
43679
44757
|
srpType === build.PortalQsmType.GroupTour &&
|
|
43680
44758
|
React__default.createElement(GroupTourFlyIn, { isLoading: detailsLoading, isOpen: isOpen, setIsOpen: setIsOpen })
|
|
43681
44759
|
)
|
|
@@ -44413,227 +45491,6 @@ var PairedFlightSelection = function (_a) {
|
|
|
44413
45491
|
);
|
|
44414
45492
|
};
|
|
44415
45493
|
|
|
44416
|
-
var IndependentFlightOption = function (_a) {
|
|
44417
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
44418
|
-
var item = _a.item,
|
|
44419
|
-
onSelect = _a.onSelect,
|
|
44420
|
-
guid = _a.guid,
|
|
44421
|
-
selectedGuid = _a.selectedGuid;
|
|
44422
|
-
_a.isOutward;
|
|
44423
|
-
var context = useContext(SearchResultsConfigurationContext);
|
|
44424
|
-
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44425
|
-
var translations = getTranslations(language);
|
|
44426
|
-
var _m = useState(false),
|
|
44427
|
-
detailsOpen = _m[0],
|
|
44428
|
-
setDetailsOpen = _m[1];
|
|
44429
|
-
return React__default.createElement(
|
|
44430
|
-
'div',
|
|
44431
|
-
{ className: 'search__result-card', key: 'flight-'.concat(item.code) },
|
|
44432
|
-
React__default.createElement(
|
|
44433
|
-
'div',
|
|
44434
|
-
{ className: 'flight' },
|
|
44435
|
-
React__default.createElement(
|
|
44436
|
-
'div',
|
|
44437
|
-
{ className: 'flight__option' },
|
|
44438
|
-
React__default.createElement(
|
|
44439
|
-
'div',
|
|
44440
|
-
{ className: 'flight__content' },
|
|
44441
|
-
React__default.createElement(
|
|
44442
|
-
'div',
|
|
44443
|
-
{ className: 'flight__flights' },
|
|
44444
|
-
React__default.createElement(
|
|
44445
|
-
'div',
|
|
44446
|
-
{ className: 'flight__flight' },
|
|
44447
|
-
React__default.createElement(
|
|
44448
|
-
'div',
|
|
44449
|
-
{ className: 'flight__flight__header' },
|
|
44450
|
-
React__default.createElement('div', { className: 'flight__status__container' }),
|
|
44451
|
-
React__default.createElement(
|
|
44452
|
-
'div',
|
|
44453
|
-
{ className: 'flight__price' },
|
|
44454
|
-
React__default.createElement(
|
|
44455
|
-
'button',
|
|
44456
|
-
{
|
|
44457
|
-
type: 'button',
|
|
44458
|
-
className: 'cta '.concat(selectedGuid === guid ? 'cta--selected' : 'cta--select'),
|
|
44459
|
-
onClick: function () {
|
|
44460
|
-
return onSelect === null || onSelect === void 0 ? void 0 : onSelect();
|
|
44461
|
-
}
|
|
44462
|
-
},
|
|
44463
|
-
selectedGuid === guid ? 'Selected' : 'Select'
|
|
44464
|
-
)
|
|
44465
|
-
)
|
|
44466
|
-
)
|
|
44467
|
-
),
|
|
44468
|
-
React__default.createElement(
|
|
44469
|
-
'div',
|
|
44470
|
-
{ className: 'flight__flight' },
|
|
44471
|
-
React__default.createElement(
|
|
44472
|
-
'div',
|
|
44473
|
-
{ className: 'flight__flight__container' },
|
|
44474
|
-
React__default.createElement(
|
|
44475
|
-
'div',
|
|
44476
|
-
{ className: 'flight__flight__wrapper' },
|
|
44477
|
-
React__default.createElement(
|
|
44478
|
-
'div',
|
|
44479
|
-
{ className: 'flight__logo__wrapper' },
|
|
44480
|
-
React__default.createElement('img', {
|
|
44481
|
-
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
|
|
44482
|
-
(_c = getDepartureSegment(item)) === null || _c === void 0 ? void 0 : _c.marketingAirlineCode,
|
|
44483
|
-
'.png?height=256'
|
|
44484
|
-
),
|
|
44485
|
-
alt: '',
|
|
44486
|
-
className: 'flight__logo'
|
|
44487
|
-
}),
|
|
44488
|
-
React__default.createElement('span', null, (_d = getDepartureSegment(item)) === null || _d === void 0 ? void 0 : _d.marketingAirlineName)
|
|
44489
|
-
),
|
|
44490
|
-
React__default.createElement(
|
|
44491
|
-
'div',
|
|
44492
|
-
{ className: 'flight__info' },
|
|
44493
|
-
React__default.createElement(
|
|
44494
|
-
'div',
|
|
44495
|
-
{ className: 'flight__info__times' },
|
|
44496
|
-
React__default.createElement(
|
|
44497
|
-
'strong',
|
|
44498
|
-
null,
|
|
44499
|
-
timeFromDateTime((_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.departureDateTime),
|
|
44500
|
-
' ',
|
|
44501
|
-
(_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.departureAirportCode
|
|
44502
|
-
),
|
|
44503
|
-
React__default.createElement(
|
|
44504
|
-
'p',
|
|
44505
|
-
null,
|
|
44506
|
-
longFormatDate((_g = getDepartureSegment(item)) === null || _g === void 0 ? void 0 : _g.departureDateTime, language)
|
|
44507
|
-
)
|
|
44508
|
-
),
|
|
44509
|
-
React__default.createElement(
|
|
44510
|
-
'div',
|
|
44511
|
-
{ className: 'flight__info__duration' },
|
|
44512
|
-
React__default.createElement('p', null, durationTicksInHoursString(item.durationInTicks)),
|
|
44513
|
-
React__default.createElement(
|
|
44514
|
-
'div',
|
|
44515
|
-
{ className: 'flight__info__duration__stops' },
|
|
44516
|
-
React__default.createElement('div', { className: 'flight__info__duration__stop' })
|
|
44517
|
-
),
|
|
44518
|
-
React__default.createElement(
|
|
44519
|
-
'span',
|
|
44520
|
-
null,
|
|
44521
|
-
getNumberOfStopsLabel(item, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
|
|
44522
|
-
)
|
|
44523
|
-
),
|
|
44524
|
-
React__default.createElement(
|
|
44525
|
-
'div',
|
|
44526
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44527
|
-
React__default.createElement(
|
|
44528
|
-
'strong',
|
|
44529
|
-
null,
|
|
44530
|
-
timeFromDateTime((_h = getArrivalSegment(item)) === null || _h === void 0 ? void 0 : _h.arrivalDateTime),
|
|
44531
|
-
' ',
|
|
44532
|
-
(_j = getArrivalSegment(item)) === null || _j === void 0 ? void 0 : _j.arrivalAirportCode
|
|
44533
|
-
),
|
|
44534
|
-
React__default.createElement(
|
|
44535
|
-
'p',
|
|
44536
|
-
null,
|
|
44537
|
-
longFormatDate((_k = getArrivalSegment(item)) === null || _k === void 0 ? void 0 : _k.arrivalDateTime, language)
|
|
44538
|
-
)
|
|
44539
|
-
)
|
|
44540
|
-
)
|
|
44541
|
-
),
|
|
44542
|
-
React__default.createElement(
|
|
44543
|
-
'div',
|
|
44544
|
-
{ className: 'flight__detail__btn__wrapper' },
|
|
44545
|
-
React__default.createElement(
|
|
44546
|
-
'div',
|
|
44547
|
-
{
|
|
44548
|
-
className: 'flight__detail__btn '.concat(detailsOpen ? 'flight__detail__btn--active' : ''),
|
|
44549
|
-
onClick: function () {
|
|
44550
|
-
return setDetailsOpen(function (prev) {
|
|
44551
|
-
return !prev;
|
|
44552
|
-
});
|
|
44553
|
-
}
|
|
44554
|
-
},
|
|
44555
|
-
React__default.createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
|
|
44556
|
-
)
|
|
44557
|
-
)
|
|
44558
|
-
),
|
|
44559
|
-
React__default.createElement(
|
|
44560
|
-
'div',
|
|
44561
|
-
{ className: 'flight__detail '.concat(detailsOpen ? 'flight__detail--active' : '') },
|
|
44562
|
-
(_l = getFlightSegments(item)) === null || _l === void 0
|
|
44563
|
-
? void 0
|
|
44564
|
-
: _l.map(function (segment, index) {
|
|
44565
|
-
return React__default.createElement(
|
|
44566
|
-
React__default.Fragment,
|
|
44567
|
-
{ key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
|
|
44568
|
-
React__default.createElement(
|
|
44569
|
-
'div',
|
|
44570
|
-
{ className: 'flight__info' },
|
|
44571
|
-
React__default.createElement(
|
|
44572
|
-
'div',
|
|
44573
|
-
{ className: 'flight__info__times__wrapper' },
|
|
44574
|
-
React__default.createElement(
|
|
44575
|
-
'div',
|
|
44576
|
-
{ className: 'flight__info__times' },
|
|
44577
|
-
React__default.createElement('p', null, timeFromDateTime(segment.departureDateTime)),
|
|
44578
|
-
React__default.createElement('strong', null, segment.departureAirportCode),
|
|
44579
|
-
React__default.createElement('p', null, longFormatDate(segment.departureDateTime, language))
|
|
44580
|
-
),
|
|
44581
|
-
React__default.createElement('div', null, React__default.createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 }))
|
|
44582
|
-
),
|
|
44583
|
-
React__default.createElement(
|
|
44584
|
-
'div',
|
|
44585
|
-
{ className: 'flight__info__duration' },
|
|
44586
|
-
React__default.createElement('p', null, durationTicksInHoursString(segment.durationInTicks)),
|
|
44587
|
-
React__default.createElement('div', { className: 'flight__info__duration__stops' }),
|
|
44588
|
-
React__default.createElement('span', null, segment.marketingAirlineName),
|
|
44589
|
-
React__default.createElement('strong', null, segment.operatingFlightNumber)
|
|
44590
|
-
),
|
|
44591
|
-
React__default.createElement(
|
|
44592
|
-
'div',
|
|
44593
|
-
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
44594
|
-
React__default.createElement('div', null, React__default.createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })),
|
|
44595
|
-
React__default.createElement(
|
|
44596
|
-
'div',
|
|
44597
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44598
|
-
React__default.createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
44599
|
-
React__default.createElement('strong', null, segment.arrivalAirportCode),
|
|
44600
|
-
React__default.createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
44601
|
-
)
|
|
44602
|
-
)
|
|
44603
|
-
),
|
|
44604
|
-
segment.transferTimeInTicks &&
|
|
44605
|
-
React__default.createElement(
|
|
44606
|
-
'div',
|
|
44607
|
-
{ className: 'flight__info' },
|
|
44608
|
-
React__default.createElement('div', { className: 'flight__info__times' }),
|
|
44609
|
-
React__default.createElement(
|
|
44610
|
-
'div',
|
|
44611
|
-
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44612
|
-
React__default.createElement(
|
|
44613
|
-
'div',
|
|
44614
|
-
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44615
|
-
React__default.createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44616
|
-
),
|
|
44617
|
-
React__default.createElement(
|
|
44618
|
-
'div',
|
|
44619
|
-
{ className: 'flight__info__duration__stoptime' },
|
|
44620
|
-
React__default.createElement('span', null, 'Stop time'),
|
|
44621
|
-
React__default.createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
44622
|
-
)
|
|
44623
|
-
),
|
|
44624
|
-
React__default.createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
44625
|
-
)
|
|
44626
|
-
);
|
|
44627
|
-
})
|
|
44628
|
-
)
|
|
44629
|
-
)
|
|
44630
|
-
)
|
|
44631
|
-
)
|
|
44632
|
-
)
|
|
44633
|
-
)
|
|
44634
|
-
);
|
|
44635
|
-
};
|
|
44636
|
-
|
|
44637
45494
|
var IndependentFlightSelection = function (_a) {
|
|
44638
45495
|
var _b;
|
|
44639
45496
|
var searchResults = _a.searchResults;
|
|
@@ -44817,116 +45674,6 @@ var FlightSelection = function (_a) {
|
|
|
44817
45674
|
: React__default.createElement(IndependentFlightSelection, { searchResults: searchResults });
|
|
44818
45675
|
};
|
|
44819
45676
|
|
|
44820
|
-
var MultiRangeFilter = function (_a) {
|
|
44821
|
-
var min = _a.min,
|
|
44822
|
-
max = _a.max,
|
|
44823
|
-
selectedMin = _a.selectedMin,
|
|
44824
|
-
selectedMax = _a.selectedMax,
|
|
44825
|
-
valueFormatter = _a.valueFormatter,
|
|
44826
|
-
onChange = _a.onChange;
|
|
44827
|
-
var _b = useState(false),
|
|
44828
|
-
isDragging = _b[0],
|
|
44829
|
-
setIsDragging = _b[1];
|
|
44830
|
-
var _c = useState(0),
|
|
44831
|
-
leftPercentage = _c[0],
|
|
44832
|
-
setLeftPercentage = _c[1];
|
|
44833
|
-
var _d = useState(0),
|
|
44834
|
-
rightPercentage = _d[0],
|
|
44835
|
-
setRightPercentage = _d[1];
|
|
44836
|
-
var _e = useState(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min),
|
|
44837
|
-
minVal = _e[0],
|
|
44838
|
-
setMinVal = _e[1];
|
|
44839
|
-
var _f = useState(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max),
|
|
44840
|
-
maxVal = _f[0],
|
|
44841
|
-
setMaxVal = _f[1];
|
|
44842
|
-
var minGap = 5;
|
|
44843
|
-
// Sync internal state with external selectedMin/selectedMax changes
|
|
44844
|
-
useEffect(
|
|
44845
|
-
function () {
|
|
44846
|
-
setMinVal(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min);
|
|
44847
|
-
setMaxVal(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max);
|
|
44848
|
-
},
|
|
44849
|
-
[min, max, selectedMin, selectedMax]
|
|
44850
|
-
);
|
|
44851
|
-
// Recalculate slider track whenever values change
|
|
44852
|
-
useEffect(
|
|
44853
|
-
function () {
|
|
44854
|
-
var range = max - min || 1;
|
|
44855
|
-
var minPercent = ((minVal - min) / range) * 100;
|
|
44856
|
-
var maxPercent = ((maxVal - min) / range) * 100;
|
|
44857
|
-
setLeftPercentage(minPercent);
|
|
44858
|
-
setRightPercentage(100 - maxPercent);
|
|
44859
|
-
},
|
|
44860
|
-
[minVal, maxVal, min, max]
|
|
44861
|
-
);
|
|
44862
|
-
var slideMin = function (e) {
|
|
44863
|
-
var value = parseInt(e.target.value, 10);
|
|
44864
|
-
// Ensure the thumbs don’t cross and enforce minGap
|
|
44865
|
-
if (value <= maxVal - minGap) {
|
|
44866
|
-
setMinVal(value);
|
|
44867
|
-
}
|
|
44868
|
-
};
|
|
44869
|
-
var slideMax = function (e) {
|
|
44870
|
-
var value = parseInt(e.target.value, 10);
|
|
44871
|
-
// Ensure the thumbs don’t cross and enforce minGap
|
|
44872
|
-
if (value >= minVal + minGap) {
|
|
44873
|
-
setMaxVal(value);
|
|
44874
|
-
}
|
|
44875
|
-
};
|
|
44876
|
-
var startDrag = function () {
|
|
44877
|
-
setIsDragging(true);
|
|
44878
|
-
};
|
|
44879
|
-
var stopDrag = function () {
|
|
44880
|
-
setIsDragging(false);
|
|
44881
|
-
// Notify parent with the final values
|
|
44882
|
-
onChange(minVal, maxVal);
|
|
44883
|
-
};
|
|
44884
|
-
return React__default.createElement(
|
|
44885
|
-
'div',
|
|
44886
|
-
{ className: 'double-slider-box' },
|
|
44887
|
-
React__default.createElement(
|
|
44888
|
-
'div',
|
|
44889
|
-
{ className: 'input-box' },
|
|
44890
|
-
React__default.createElement('div', { className: 'min-box' }, valueFormatter(minVal)),
|
|
44891
|
-
React__default.createElement('div', { className: 'max-box' }, valueFormatter(maxVal))
|
|
44892
|
-
),
|
|
44893
|
-
React__default.createElement(
|
|
44894
|
-
'div',
|
|
44895
|
-
{ className: 'range-slider' },
|
|
44896
|
-
React__default.createElement('div', {
|
|
44897
|
-
className: 'slider-track',
|
|
44898
|
-
style: { left: ''.concat(leftPercentage, '%'), right: ''.concat(rightPercentage, '%') }
|
|
44899
|
-
}),
|
|
44900
|
-
React__default.createElement('input', {
|
|
44901
|
-
type: 'range',
|
|
44902
|
-
min: min,
|
|
44903
|
-
max: max,
|
|
44904
|
-
value: minVal,
|
|
44905
|
-
onChange: slideMin,
|
|
44906
|
-
onMouseDown: startDrag,
|
|
44907
|
-
onMouseUp: stopDrag,
|
|
44908
|
-
onTouchStart: startDrag,
|
|
44909
|
-
onTouchEnd: stopDrag,
|
|
44910
|
-
className: 'min-val'
|
|
44911
|
-
}),
|
|
44912
|
-
React__default.createElement('input', {
|
|
44913
|
-
type: 'range',
|
|
44914
|
-
min: min,
|
|
44915
|
-
max: max,
|
|
44916
|
-
value: maxVal,
|
|
44917
|
-
onChange: slideMax,
|
|
44918
|
-
onMouseDown: startDrag,
|
|
44919
|
-
onMouseUp: stopDrag,
|
|
44920
|
-
onTouchStart: startDrag,
|
|
44921
|
-
onTouchEnd: stopDrag,
|
|
44922
|
-
className: 'max-val'
|
|
44923
|
-
}),
|
|
44924
|
-
isDragging && React__default.createElement('div', { className: 'min-tooltip' }, valueFormatter(minVal)),
|
|
44925
|
-
isDragging && React__default.createElement('div', { className: 'max-tooltip' }, valueFormatter(maxVal))
|
|
44926
|
-
)
|
|
44927
|
-
);
|
|
44928
|
-
};
|
|
44929
|
-
|
|
44930
45677
|
var FlightFilters = function (_a) {
|
|
44931
45678
|
var _b;
|
|
44932
45679
|
var isOpen = _a.isOpen,
|
|
@@ -46015,228 +46762,6 @@ var FlightResultsContainer = function (_a) {
|
|
|
46015
46762
|
);
|
|
46016
46763
|
};
|
|
46017
46764
|
|
|
46018
|
-
var Filters = function (_a) {
|
|
46019
|
-
var _b;
|
|
46020
|
-
var initialFilters = _a.initialFilters,
|
|
46021
|
-
filters = _a.filters,
|
|
46022
|
-
isOpen = _a.isOpen,
|
|
46023
|
-
handleSetIsOpen = _a.handleSetIsOpen,
|
|
46024
|
-
isLoading = _a.isLoading;
|
|
46025
|
-
var context = useContext(SearchResultsConfigurationContext);
|
|
46026
|
-
if (!context || !context.showFilters) {
|
|
46027
|
-
return null;
|
|
46028
|
-
}
|
|
46029
|
-
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
46030
|
-
var _c = useState({}),
|
|
46031
|
-
visibleFilters = _c[0],
|
|
46032
|
-
setVisibleFilters = _c[1];
|
|
46033
|
-
var dispatch = useDispatch();
|
|
46034
|
-
var toggleFilterVisibility = function (filterId) {
|
|
46035
|
-
setVisibleFilters(function (prev) {
|
|
46036
|
-
var _a;
|
|
46037
|
-
return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
|
|
46038
|
-
});
|
|
46039
|
-
};
|
|
46040
|
-
var handleCheckBoxFilter = function (filter, option) {
|
|
46041
|
-
var updated = filters.map(function (f) {
|
|
46042
|
-
var _a;
|
|
46043
|
-
if (f.property !== filter.property) return f;
|
|
46044
|
-
return __assign(__assign({}, f), {
|
|
46045
|
-
options:
|
|
46046
|
-
(_a = f.options) === null || _a === void 0
|
|
46047
|
-
? void 0
|
|
46048
|
-
: _a.map(function (opt) {
|
|
46049
|
-
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
46050
|
-
})
|
|
46051
|
-
});
|
|
46052
|
-
});
|
|
46053
|
-
dispatch(setFilters(updated));
|
|
46054
|
-
};
|
|
46055
|
-
var handleSliderChange = function (filter, newMin, newMax) {
|
|
46056
|
-
var updated = filters.map(function (f) {
|
|
46057
|
-
if (f.property !== filter.property) return f;
|
|
46058
|
-
return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
|
|
46059
|
-
});
|
|
46060
|
-
dispatch(setFilters(updated));
|
|
46061
|
-
};
|
|
46062
|
-
var handleFullReset = function () {
|
|
46063
|
-
if (!isLoading) {
|
|
46064
|
-
dispatch(resetFilters(initialFilters));
|
|
46065
|
-
}
|
|
46066
|
-
};
|
|
46067
|
-
return React__default.createElement(
|
|
46068
|
-
'div',
|
|
46069
|
-
{ className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
|
|
46070
|
-
React__default.createElement('div', {
|
|
46071
|
-
className: 'search__filters--background',
|
|
46072
|
-
onClick: function () {
|
|
46073
|
-
return handleSetIsOpen();
|
|
46074
|
-
}
|
|
46075
|
-
}),
|
|
46076
|
-
React__default.createElement(
|
|
46077
|
-
'button',
|
|
46078
|
-
{
|
|
46079
|
-
className: 'search__filters--close',
|
|
46080
|
-
onClick: function () {
|
|
46081
|
-
return handleSetIsOpen();
|
|
46082
|
-
}
|
|
46083
|
-
},
|
|
46084
|
-
React__default.createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
46085
|
-
),
|
|
46086
|
-
React__default.createElement(
|
|
46087
|
-
'div',
|
|
46088
|
-
{ className: 'search__filters' },
|
|
46089
|
-
React__default.createElement(
|
|
46090
|
-
'div',
|
|
46091
|
-
{ className: 'search__filter-row search__filter__header' },
|
|
46092
|
-
React__default.createElement(
|
|
46093
|
-
'div',
|
|
46094
|
-
{ className: 'search__filter-row-flex-title' },
|
|
46095
|
-
React__default.createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
|
|
46096
|
-
),
|
|
46097
|
-
!isLoading &&
|
|
46098
|
-
React__default.createElement(
|
|
46099
|
-
'a',
|
|
46100
|
-
{
|
|
46101
|
-
className: 'search__filter-reset',
|
|
46102
|
-
onClick: function () {
|
|
46103
|
-
return handleFullReset();
|
|
46104
|
-
}
|
|
46105
|
-
},
|
|
46106
|
-
translations.SRP.RESET
|
|
46107
|
-
)
|
|
46108
|
-
),
|
|
46109
|
-
isLoading
|
|
46110
|
-
? React__default.createElement(Spinner, null)
|
|
46111
|
-
: React__default.createElement(
|
|
46112
|
-
React__default.Fragment,
|
|
46113
|
-
null,
|
|
46114
|
-
React__default.createElement(
|
|
46115
|
-
'div',
|
|
46116
|
-
{ className: 'search__filters__group-container' },
|
|
46117
|
-
filters.map(function (filter, index) {
|
|
46118
|
-
var _a, _b;
|
|
46119
|
-
var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
|
|
46120
|
-
return React__default.createElement(
|
|
46121
|
-
'div',
|
|
46122
|
-
{ key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
|
|
46123
|
-
React__default.createElement(
|
|
46124
|
-
'div',
|
|
46125
|
-
{
|
|
46126
|
-
className: 'search__filter-row search__filter-row--underline',
|
|
46127
|
-
onClick: function () {
|
|
46128
|
-
return toggleFilterVisibility(filter.property);
|
|
46129
|
-
},
|
|
46130
|
-
role: 'button',
|
|
46131
|
-
tabIndex: 0
|
|
46132
|
-
},
|
|
46133
|
-
React__default.createElement('h6', { className: 'search__filter-large-title' }, filter.label),
|
|
46134
|
-
React__default.createElement(
|
|
46135
|
-
'svg',
|
|
46136
|
-
{
|
|
46137
|
-
id: 'search-chevron-up-icon',
|
|
46138
|
-
className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
|
|
46139
|
-
viewBox: '0 0 10 6.063',
|
|
46140
|
-
width: 10,
|
|
46141
|
-
height: 6.063
|
|
46142
|
-
},
|
|
46143
|
-
React__default.createElement('path', {
|
|
46144
|
-
id: 'Path_62',
|
|
46145
|
-
'data-name': 'Path 62',
|
|
46146
|
-
d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
|
|
46147
|
-
transform: 'translate(-240 624)',
|
|
46148
|
-
fill: '#707070'
|
|
46149
|
-
})
|
|
46150
|
-
)
|
|
46151
|
-
),
|
|
46152
|
-
isVisible &&
|
|
46153
|
-
filter.type === 'checkbox' &&
|
|
46154
|
-
React__default.createElement(
|
|
46155
|
-
'div',
|
|
46156
|
-
{ className: 'search__filter-rows' },
|
|
46157
|
-
filter.options &&
|
|
46158
|
-
filter.options.map(function (option, optionIndex) {
|
|
46159
|
-
return React__default.createElement(
|
|
46160
|
-
'div',
|
|
46161
|
-
{ className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
46162
|
-
React__default.createElement(
|
|
46163
|
-
'div',
|
|
46164
|
-
{ className: 'checkbox' },
|
|
46165
|
-
React__default.createElement(
|
|
46166
|
-
'label',
|
|
46167
|
-
{ className: 'checkbox__label' },
|
|
46168
|
-
React__default.createElement('input', {
|
|
46169
|
-
type: 'checkbox',
|
|
46170
|
-
className: 'checkbox__input checkbox__input--parent',
|
|
46171
|
-
checked: option.isChecked,
|
|
46172
|
-
onChange: function (e) {
|
|
46173
|
-
return handleCheckBoxFilter(filter, option);
|
|
46174
|
-
}
|
|
46175
|
-
}),
|
|
46176
|
-
React__default.createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
46177
|
-
)
|
|
46178
|
-
)
|
|
46179
|
-
);
|
|
46180
|
-
})
|
|
46181
|
-
),
|
|
46182
|
-
isVisible &&
|
|
46183
|
-
filter.type === 'toggle' &&
|
|
46184
|
-
React__default.createElement(
|
|
46185
|
-
'div',
|
|
46186
|
-
{ className: 'search__filter-rows' },
|
|
46187
|
-
(_b = filter.options) === null || _b === void 0
|
|
46188
|
-
? void 0
|
|
46189
|
-
: _b.map(function (option, optionIndex) {
|
|
46190
|
-
return React__default.createElement(
|
|
46191
|
-
'div',
|
|
46192
|
-
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
46193
|
-
React__default.createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
46194
|
-
React__default.createElement('div', { className: 'checkbox' }),
|
|
46195
|
-
React__default.createElement(
|
|
46196
|
-
'label',
|
|
46197
|
-
{ className: 'checkbox__label' },
|
|
46198
|
-
React__default.createElement('input', {
|
|
46199
|
-
type: 'checkbox',
|
|
46200
|
-
className: 'checkbox__input',
|
|
46201
|
-
checked: option.isChecked,
|
|
46202
|
-
onChange: function () {
|
|
46203
|
-
return handleCheckBoxFilter(filter, option);
|
|
46204
|
-
}
|
|
46205
|
-
})
|
|
46206
|
-
)
|
|
46207
|
-
);
|
|
46208
|
-
})
|
|
46209
|
-
),
|
|
46210
|
-
isVisible &&
|
|
46211
|
-
filter &&
|
|
46212
|
-
filter.type === 'slider' &&
|
|
46213
|
-
(function () {
|
|
46214
|
-
var _a, _b, _c, _d;
|
|
46215
|
-
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
46216
|
-
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
46217
|
-
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
46218
|
-
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
46219
|
-
return React__default.createElement(MultiRangeFilter, {
|
|
46220
|
-
min: min,
|
|
46221
|
-
max: max,
|
|
46222
|
-
selectedMin: selectedMin,
|
|
46223
|
-
selectedMax: selectedMax,
|
|
46224
|
-
valueFormatter: function (value) {
|
|
46225
|
-
return ''.concat(value);
|
|
46226
|
-
},
|
|
46227
|
-
onChange: function (newMin, newMax) {
|
|
46228
|
-
handleSliderChange(filter, newMin, newMax);
|
|
46229
|
-
}
|
|
46230
|
-
});
|
|
46231
|
-
})()
|
|
46232
|
-
);
|
|
46233
|
-
})
|
|
46234
|
-
)
|
|
46235
|
-
)
|
|
46236
|
-
)
|
|
46237
|
-
);
|
|
46238
|
-
};
|
|
46239
|
-
|
|
46240
46765
|
var GroupTourCard = function (_a) {
|
|
46241
46766
|
var _b, _c, _d, _e, _f, _g;
|
|
46242
46767
|
var result = _a.result,
|
|
@@ -46554,80 +47079,245 @@ var enrichFiltersWithResults = function (results, filters, tags) {
|
|
|
46554
47079
|
return updatedFilter;
|
|
46555
47080
|
});
|
|
46556
47081
|
};
|
|
46557
|
-
var enrichFiltersWithPackageAccoResults = function (results,
|
|
46558
|
-
|
|
46559
|
-
|
|
46560
|
-
|
|
46561
|
-
|
|
46562
|
-
|
|
46563
|
-
|
|
46564
|
-
|
|
46565
|
-
|
|
46566
|
-
|
|
46567
|
-
|
|
46568
|
-
|
|
46569
|
-
|
|
46570
|
-
|
|
46571
|
-
|
|
46572
|
-
|
|
46573
|
-
|
|
46574
|
-
|
|
46575
|
-
|
|
46576
|
-
|
|
46577
|
-
|
|
46578
|
-
|
|
46579
|
-
results.forEach(function (r) {
|
|
46580
|
-
var rooms = flatMap(r.rooms);
|
|
46581
|
-
if (rooms) {
|
|
46582
|
-
rooms.map(function (room) {
|
|
46583
|
-
room.options.map(function (option) {
|
|
46584
|
-
if (option.accommodationCode) {
|
|
46585
|
-
map_4.set(option.accommodationCode, {
|
|
46586
|
-
name: option.accommodationName,
|
|
46587
|
-
code: option.accommodationCode
|
|
46588
|
-
});
|
|
46589
|
-
}
|
|
47082
|
+
var enrichFiltersWithPackageAccoResults = function (results, tags) {
|
|
47083
|
+
var filters = [];
|
|
47084
|
+
if (!results || results.length === 0) {
|
|
47085
|
+
return filters;
|
|
47086
|
+
}
|
|
47087
|
+
var regimeFilter = {
|
|
47088
|
+
property: 'regime',
|
|
47089
|
+
label: 'Regime',
|
|
47090
|
+
type: 'checkbox',
|
|
47091
|
+
options: [],
|
|
47092
|
+
isFrontendFilter: true
|
|
47093
|
+
};
|
|
47094
|
+
var map = new Map();
|
|
47095
|
+
results.forEach(function (r) {
|
|
47096
|
+
var rooms = flatMap(r.rooms);
|
|
47097
|
+
if (rooms) {
|
|
47098
|
+
rooms.map(function (room) {
|
|
47099
|
+
room.options.map(function (option) {
|
|
47100
|
+
if (option.regimeCode) {
|
|
47101
|
+
map.set(option.regimeCode, {
|
|
47102
|
+
name: option.regimeName,
|
|
47103
|
+
code: option.regimeCode
|
|
46590
47104
|
});
|
|
46591
|
-
}
|
|
46592
|
-
}
|
|
47105
|
+
}
|
|
47106
|
+
});
|
|
46593
47107
|
});
|
|
46594
|
-
|
|
46595
|
-
|
|
46596
|
-
|
|
46597
|
-
|
|
46598
|
-
|
|
46599
|
-
|
|
46600
|
-
|
|
47108
|
+
}
|
|
47109
|
+
});
|
|
47110
|
+
regimeFilter.options = Array.from(map.values()).map(function (regime) {
|
|
47111
|
+
var _a;
|
|
47112
|
+
return {
|
|
47113
|
+
label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
|
|
47114
|
+
value: regime.code,
|
|
47115
|
+
isChecked: false
|
|
47116
|
+
};
|
|
47117
|
+
});
|
|
47118
|
+
filters.push(regimeFilter);
|
|
47119
|
+
var priceFilter = {
|
|
47120
|
+
property: 'price',
|
|
47121
|
+
label: 'Prijs',
|
|
47122
|
+
type: 'slider',
|
|
47123
|
+
isFrontendFilter: true
|
|
47124
|
+
};
|
|
47125
|
+
var prices = results
|
|
47126
|
+
.map(function (r) {
|
|
47127
|
+
var _a;
|
|
47128
|
+
return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
|
|
47129
|
+
})
|
|
47130
|
+
.filter(function (p) {
|
|
47131
|
+
return p > 0;
|
|
47132
|
+
});
|
|
47133
|
+
priceFilter.min = Math.floor(Math.min.apply(Math, prices));
|
|
47134
|
+
priceFilter.max = Math.ceil(Math.max.apply(Math, prices));
|
|
47135
|
+
filters.push(priceFilter);
|
|
47136
|
+
return filters;
|
|
47137
|
+
};
|
|
47138
|
+
var enrichFiltersWithPackageFlightResults = function (results, tags, translations) {
|
|
47139
|
+
var filters = [];
|
|
47140
|
+
if (!results || results.length === 0) {
|
|
47141
|
+
return filters;
|
|
47142
|
+
}
|
|
47143
|
+
// Airlines
|
|
47144
|
+
var airlinesFilter = {
|
|
47145
|
+
label: 'Airlines',
|
|
47146
|
+
property: 'airline',
|
|
47147
|
+
type: 'checkbox',
|
|
47148
|
+
isFrontendFilter: true,
|
|
47149
|
+
options: []
|
|
47150
|
+
};
|
|
47151
|
+
var airlinesFilterMap = new Map();
|
|
47152
|
+
results.map(function (r) {
|
|
47153
|
+
var airlineCode = r.airlineCode;
|
|
47154
|
+
var airlineName = r.airlineName;
|
|
47155
|
+
if (airlineCode && airlineName) {
|
|
47156
|
+
airlinesFilterMap.set(airlineCode, {
|
|
47157
|
+
name: airlineName,
|
|
47158
|
+
code: airlineCode
|
|
46601
47159
|
});
|
|
46602
47160
|
}
|
|
46603
|
-
|
|
46604
|
-
|
|
46605
|
-
|
|
46606
|
-
|
|
46607
|
-
|
|
46608
|
-
|
|
46609
|
-
|
|
46610
|
-
|
|
46611
|
-
|
|
46612
|
-
|
|
46613
|
-
|
|
46614
|
-
|
|
46615
|
-
|
|
46616
|
-
|
|
46617
|
-
|
|
46618
|
-
|
|
47161
|
+
});
|
|
47162
|
+
airlinesFilter.options = Array.from(airlinesFilterMap.values()).map(function (airline) {
|
|
47163
|
+
var _a;
|
|
47164
|
+
return {
|
|
47165
|
+
label: (_a = airline.name) !== null && _a !== void 0 ? _a : airline.code,
|
|
47166
|
+
value: airline.code,
|
|
47167
|
+
isChecked: false
|
|
47168
|
+
};
|
|
47169
|
+
});
|
|
47170
|
+
filters.push(airlinesFilter);
|
|
47171
|
+
// Number of stops
|
|
47172
|
+
var stopsFilter = {
|
|
47173
|
+
label: 'Number of Stops',
|
|
47174
|
+
property: 'numberOfStops',
|
|
47175
|
+
type: 'checkbox',
|
|
47176
|
+
isFrontendFilter: true,
|
|
47177
|
+
options: []
|
|
47178
|
+
};
|
|
47179
|
+
var stopsMap = new Map();
|
|
47180
|
+
results.map(function (result) {
|
|
47181
|
+
var numberOfStops = getNumberOfStops(result.outward);
|
|
47182
|
+
if (!stopsMap.has(numberOfStops)) {
|
|
47183
|
+
stopsMap.set(numberOfStops, { numberOfStops: numberOfStops });
|
|
47184
|
+
}
|
|
47185
|
+
});
|
|
47186
|
+
stopsFilter.options = Array.from(stopsMap.values()).map(function (stop) {
|
|
47187
|
+
return {
|
|
47188
|
+
label: ''.concat(stop.numberOfStops == 0 ? 'direct' : stop.numberOfStops + ' Stop'.concat(stop.numberOfStops !== 1 ? 's' : '')),
|
|
47189
|
+
value: stop.numberOfStops,
|
|
47190
|
+
isChecked: false
|
|
47191
|
+
};
|
|
47192
|
+
});
|
|
47193
|
+
filters.push(stopsFilter);
|
|
47194
|
+
// Departure range
|
|
47195
|
+
var departureRangeFilter = {
|
|
47196
|
+
label: 'Departure Range',
|
|
47197
|
+
property: 'departureRange',
|
|
47198
|
+
type: 'checkbox',
|
|
47199
|
+
isFrontendFilter: true,
|
|
47200
|
+
options: []
|
|
47201
|
+
};
|
|
47202
|
+
var departureRangeMap = new Map();
|
|
47203
|
+
results.map(function (result) {
|
|
47204
|
+
var _a;
|
|
47205
|
+
var departureRange = rangeFromDateTimeInMinutes((_a = getDepartureSegment(result.outward)) === null || _a === void 0 ? void 0 : _a.departureDateTime);
|
|
47206
|
+
if (!departureRangeMap.has(departureRange)) {
|
|
47207
|
+
departureRangeMap.set(departureRange, departureRange);
|
|
47208
|
+
}
|
|
47209
|
+
});
|
|
47210
|
+
departureRangeFilter.options = orderBy(Array.from(departureRangeMap.values()), ['id'], ['asc']).map(function (range) {
|
|
47211
|
+
return {
|
|
47212
|
+
label: getDepartureRangeName(translations, range),
|
|
47213
|
+
value: range,
|
|
47214
|
+
isChecked: false
|
|
47215
|
+
};
|
|
47216
|
+
});
|
|
47217
|
+
filters.push(departureRangeFilter);
|
|
47218
|
+
// Departure Airport
|
|
47219
|
+
var departureAirportFilter = {
|
|
47220
|
+
label: 'Departure Airport',
|
|
47221
|
+
property: 'departureAirport',
|
|
47222
|
+
type: 'checkbox',
|
|
47223
|
+
isFrontendFilter: true,
|
|
47224
|
+
options: []
|
|
47225
|
+
};
|
|
47226
|
+
var departureAirportsMap = new Map();
|
|
47227
|
+
results.map(function (result) {
|
|
47228
|
+
var departureSegment = getDepartureSegment(result.outward);
|
|
47229
|
+
var departureAirport = departureSegment === null || departureSegment === void 0 ? void 0 : departureSegment.departureAirportCode;
|
|
47230
|
+
if (departureAirport && !departureAirportsMap.has(departureAirport)) {
|
|
47231
|
+
departureAirportsMap.set(departureAirport, {
|
|
47232
|
+
name: (departureSegment === null || departureSegment === void 0 ? void 0 : departureSegment.departureAirportName) + ' (' + departureAirport + ')',
|
|
47233
|
+
code: departureAirport
|
|
46619
47234
|
});
|
|
46620
|
-
|
|
46621
|
-
|
|
46622
|
-
|
|
46623
|
-
|
|
46624
|
-
|
|
46625
|
-
|
|
46626
|
-
|
|
47235
|
+
}
|
|
47236
|
+
});
|
|
47237
|
+
departureAirportFilter.options = Array.from(departureAirportsMap.values()).map(function (airport) {
|
|
47238
|
+
var _a;
|
|
47239
|
+
return {
|
|
47240
|
+
label: (_a = airport.name) !== null && _a !== void 0 ? _a : airport.code,
|
|
47241
|
+
value: airport.code,
|
|
47242
|
+
isChecked: false
|
|
47243
|
+
};
|
|
47244
|
+
});
|
|
47245
|
+
filters.push(departureAirportFilter);
|
|
47246
|
+
// Arrival Airport
|
|
47247
|
+
var arrivalAirportFilter = {
|
|
47248
|
+
label: 'Arrival Airport',
|
|
47249
|
+
property: 'arrivalAirport',
|
|
47250
|
+
type: 'checkbox',
|
|
47251
|
+
isFrontendFilter: true,
|
|
47252
|
+
options: []
|
|
47253
|
+
};
|
|
47254
|
+
var arrivalAirportsMap = new Map();
|
|
47255
|
+
results.map(function (result) {
|
|
47256
|
+
var arrivalSegment = getArrivalSegment(result.outward);
|
|
47257
|
+
var arrivalAirport = arrivalSegment === null || arrivalSegment === void 0 ? void 0 : arrivalSegment.arrivalAirportCode;
|
|
47258
|
+
if (arrivalAirport && !arrivalAirportsMap.has(arrivalAirport)) {
|
|
47259
|
+
arrivalAirportsMap.set(arrivalAirport, {
|
|
47260
|
+
name: (arrivalSegment === null || arrivalSegment === void 0 ? void 0 : arrivalSegment.arrivalAirportName) + ' (' + arrivalAirport + ')',
|
|
47261
|
+
code: arrivalAirport
|
|
46627
47262
|
});
|
|
46628
47263
|
}
|
|
46629
|
-
return updatedFilter;
|
|
46630
47264
|
});
|
|
47265
|
+
arrivalAirportFilter.options = Array.from(arrivalAirportsMap.values()).map(function (airport) {
|
|
47266
|
+
var _a;
|
|
47267
|
+
return {
|
|
47268
|
+
label: (_a = airport.name) !== null && _a !== void 0 ? _a : airport.code,
|
|
47269
|
+
value: airport.code,
|
|
47270
|
+
isChecked: false
|
|
47271
|
+
};
|
|
47272
|
+
});
|
|
47273
|
+
filters.push(arrivalAirportFilter);
|
|
47274
|
+
// Price
|
|
47275
|
+
var priceFilter = {
|
|
47276
|
+
label: 'Price',
|
|
47277
|
+
property: 'price',
|
|
47278
|
+
type: 'slider',
|
|
47279
|
+
isFrontendFilter: true
|
|
47280
|
+
};
|
|
47281
|
+
var prices = results
|
|
47282
|
+
.map(function (r) {
|
|
47283
|
+
var _a;
|
|
47284
|
+
return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
|
|
47285
|
+
})
|
|
47286
|
+
.filter(function (p) {
|
|
47287
|
+
return p > 0;
|
|
47288
|
+
});
|
|
47289
|
+
if (prices.length > 0) {
|
|
47290
|
+
priceFilter.min = Math.floor(Math.min.apply(Math, prices));
|
|
47291
|
+
priceFilter.max = Math.ceil(Math.max.apply(Math, prices));
|
|
47292
|
+
}
|
|
47293
|
+
filters.push(priceFilter);
|
|
47294
|
+
// Travel duration
|
|
47295
|
+
var travelDurationFilter = {
|
|
47296
|
+
label: 'Travel Duration',
|
|
47297
|
+
property: 'travelDuration',
|
|
47298
|
+
type: 'slider',
|
|
47299
|
+
isFrontendFilter: true
|
|
47300
|
+
};
|
|
47301
|
+
var minTravelTimeDuration = Math.min.apply(
|
|
47302
|
+
Math,
|
|
47303
|
+
results.map(function (result) {
|
|
47304
|
+
return result.outward.durationInTicks;
|
|
47305
|
+
})
|
|
47306
|
+
);
|
|
47307
|
+
var maxTravelTimeDuration = Math.max.apply(
|
|
47308
|
+
Math,
|
|
47309
|
+
results.map(function (result) {
|
|
47310
|
+
return result.outward.durationInTicks;
|
|
47311
|
+
})
|
|
47312
|
+
);
|
|
47313
|
+
var minTravelTimeValue = durationInTicksInMinutes(minTravelTimeDuration);
|
|
47314
|
+
var maxTravelTimeValue = durationInTicksInMinutes(maxTravelTimeDuration);
|
|
47315
|
+
if (minTravelTimeValue != null && maxTravelTimeValue != null) {
|
|
47316
|
+
travelDurationFilter.min = minTravelTimeValue;
|
|
47317
|
+
travelDurationFilter.max = maxTravelTimeValue;
|
|
47318
|
+
}
|
|
47319
|
+
filters.push(travelDurationFilter);
|
|
47320
|
+
return filters;
|
|
46631
47321
|
};
|
|
46632
47322
|
var applyFilters = function (results, filters, sortBy) {
|
|
46633
47323
|
var filtered = results.filter(function (r) {
|
|
@@ -46769,6 +47459,147 @@ var applyFiltersToPackageAccoResults = function (results, filters, sortBy) {
|
|
|
46769
47459
|
return 0;
|
|
46770
47460
|
});
|
|
46771
47461
|
};
|
|
47462
|
+
var applyFiltersToPackageFlightResults = function (results, filters, sortBy) {
|
|
47463
|
+
var filtered = results.filter(function (result) {
|
|
47464
|
+
return filters.every(function (filter) {
|
|
47465
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
47466
|
+
if (!filter.isFrontendFilter) return true;
|
|
47467
|
+
// Airline
|
|
47468
|
+
if (filter.property === 'airline') {
|
|
47469
|
+
var selected =
|
|
47470
|
+
(_a = filter.options) === null || _a === void 0
|
|
47471
|
+
? void 0
|
|
47472
|
+
: _a
|
|
47473
|
+
.filter(function (o) {
|
|
47474
|
+
return o.isChecked;
|
|
47475
|
+
})
|
|
47476
|
+
.map(function (o) {
|
|
47477
|
+
return o.value;
|
|
47478
|
+
});
|
|
47479
|
+
if (!selected || selected.length === 0) return true;
|
|
47480
|
+
return selected.includes(result.airlineCode);
|
|
47481
|
+
}
|
|
47482
|
+
// Stops
|
|
47483
|
+
if (filter.property === 'numberOfStops') {
|
|
47484
|
+
var selected =
|
|
47485
|
+
(_b = filter.options) === null || _b === void 0
|
|
47486
|
+
? void 0
|
|
47487
|
+
: _b
|
|
47488
|
+
.filter(function (o) {
|
|
47489
|
+
return o.isChecked;
|
|
47490
|
+
})
|
|
47491
|
+
.map(function (o) {
|
|
47492
|
+
return o.value;
|
|
47493
|
+
});
|
|
47494
|
+
if (!selected || selected.length === 0) return true;
|
|
47495
|
+
return selected.includes(getNumberOfStops(result.outward)) && selected.includes(getNumberOfStops(result.return));
|
|
47496
|
+
}
|
|
47497
|
+
// Departure range
|
|
47498
|
+
if (filter.property === 'departureRange') {
|
|
47499
|
+
var selected =
|
|
47500
|
+
(_c = filter.options) === null || _c === void 0
|
|
47501
|
+
? void 0
|
|
47502
|
+
: _c
|
|
47503
|
+
.filter(function (o) {
|
|
47504
|
+
return o.isChecked;
|
|
47505
|
+
})
|
|
47506
|
+
.map(function (o) {
|
|
47507
|
+
return o.value;
|
|
47508
|
+
});
|
|
47509
|
+
if (!selected || selected.length === 0) return true;
|
|
47510
|
+
return selected.includes(
|
|
47511
|
+
rangeFromDateTimeInMinutes((_d = getDepartureSegment(result.outward)) === null || _d === void 0 ? void 0 : _d.departureDateTime)
|
|
47512
|
+
);
|
|
47513
|
+
}
|
|
47514
|
+
// Departure airport
|
|
47515
|
+
if (filter.property === 'departureAirport') {
|
|
47516
|
+
var selected =
|
|
47517
|
+
(_e = filter.options) === null || _e === void 0
|
|
47518
|
+
? void 0
|
|
47519
|
+
: _e
|
|
47520
|
+
.filter(function (o) {
|
|
47521
|
+
return o.isChecked;
|
|
47522
|
+
})
|
|
47523
|
+
.map(function (o) {
|
|
47524
|
+
return o.value;
|
|
47525
|
+
});
|
|
47526
|
+
if (!selected || selected.length === 0) return true;
|
|
47527
|
+
var departureAirportCode = (_f = getDepartureSegment(result.outward)) === null || _f === void 0 ? void 0 : _f.departureAirportCode;
|
|
47528
|
+
if (!departureAirportCode) return false;
|
|
47529
|
+
return selected.includes(departureAirportCode);
|
|
47530
|
+
}
|
|
47531
|
+
// Arrival airport
|
|
47532
|
+
if (filter.property === 'arrivalAirport') {
|
|
47533
|
+
var selected =
|
|
47534
|
+
(_g = filter.options) === null || _g === void 0
|
|
47535
|
+
? void 0
|
|
47536
|
+
: _g
|
|
47537
|
+
.filter(function (o) {
|
|
47538
|
+
return o.isChecked;
|
|
47539
|
+
})
|
|
47540
|
+
.map(function (o) {
|
|
47541
|
+
return o.value;
|
|
47542
|
+
});
|
|
47543
|
+
if (!selected || selected.length === 0) return true;
|
|
47544
|
+
var arrivalAirportCode = (_h = getArrivalSegment(result.outward)) === null || _h === void 0 ? void 0 : _h.arrivalAirportCode;
|
|
47545
|
+
if (!arrivalAirportCode) return false;
|
|
47546
|
+
return selected.includes(arrivalAirportCode);
|
|
47547
|
+
}
|
|
47548
|
+
// PRICE
|
|
47549
|
+
if (filter.property === 'price') {
|
|
47550
|
+
if (filter.selectedMin != null && result.price < filter.selectedMin) return false;
|
|
47551
|
+
if (filter.selectedMax != null && result.price > filter.selectedMax) return false;
|
|
47552
|
+
return true;
|
|
47553
|
+
}
|
|
47554
|
+
// Travel times
|
|
47555
|
+
if (filter.property === 'travelDuration') {
|
|
47556
|
+
if (
|
|
47557
|
+
filter.selectedMin != null &&
|
|
47558
|
+
durationInTicksInMinutes((_j = result.outward) === null || _j === void 0 ? void 0 : _j.durationInTicks) < filter.selectedMin
|
|
47559
|
+
)
|
|
47560
|
+
return false;
|
|
47561
|
+
if (
|
|
47562
|
+
filter.selectedMax != null &&
|
|
47563
|
+
durationInTicksInMinutes((_k = result.outward) === null || _k === void 0 ? void 0 : _k.durationInTicks) > filter.selectedMax
|
|
47564
|
+
)
|
|
47565
|
+
return false;
|
|
47566
|
+
return true;
|
|
47567
|
+
}
|
|
47568
|
+
return true;
|
|
47569
|
+
});
|
|
47570
|
+
});
|
|
47571
|
+
// SORTING
|
|
47572
|
+
if (!sortBy || sortBy.label === 'default') {
|
|
47573
|
+
return filtered;
|
|
47574
|
+
}
|
|
47575
|
+
if (sortBy.label === 'departureTime') {
|
|
47576
|
+
return orderBy(
|
|
47577
|
+
results,
|
|
47578
|
+
[
|
|
47579
|
+
function (result) {
|
|
47580
|
+
var _a;
|
|
47581
|
+
return (_a = getDepartureSegment(result.outward)) === null || _a === void 0 ? void 0 : _a.departureDateTime;
|
|
47582
|
+
}
|
|
47583
|
+
],
|
|
47584
|
+
[sortBy.direction] // or "desc"
|
|
47585
|
+
);
|
|
47586
|
+
} else if (sortBy.label === 'durationInTicks') {
|
|
47587
|
+
return orderBy(
|
|
47588
|
+
results,
|
|
47589
|
+
[
|
|
47590
|
+
function (result) {
|
|
47591
|
+
var _a, _b;
|
|
47592
|
+
return durationInTicksInMinutes(
|
|
47593
|
+
(_b = (_a = result.outward) === null || _a === void 0 ? void 0 : _a.durationInTicks) !== null && _b !== void 0 ? _b : 0
|
|
47594
|
+
);
|
|
47595
|
+
}
|
|
47596
|
+
],
|
|
47597
|
+
[sortBy.direction] // or "desc"
|
|
47598
|
+
);
|
|
47599
|
+
} else {
|
|
47600
|
+
return orderBy(results, [sortBy.label], [sortBy.direction]);
|
|
47601
|
+
}
|
|
47602
|
+
};
|
|
46772
47603
|
|
|
46773
47604
|
var getSelectedOptionsPerRoom = function (details) {
|
|
46774
47605
|
var _a;
|
|
@@ -46977,27 +47808,30 @@ var SearchResultsContainer = function () {
|
|
|
46977
47808
|
results = _c.results,
|
|
46978
47809
|
filteredResults = _c.filteredResults,
|
|
46979
47810
|
packagingAccoResults = _c.packagingAccoResults,
|
|
46980
|
-
filteredPackagingAccoResults = _c.filteredPackagingAccoResults
|
|
46981
|
-
|
|
46982
|
-
|
|
47811
|
+
filteredPackagingAccoResults = _c.filteredPackagingAccoResults,
|
|
47812
|
+
isLoading = _c.isLoading,
|
|
47813
|
+
flightsLoading = _c.flightsLoading,
|
|
47814
|
+
initialFilters = _c.initialFilters,
|
|
46983
47815
|
filters = _c.filters,
|
|
47816
|
+
flightFilters = _c.flightFilters,
|
|
46984
47817
|
selectedSortType = _c.selectedSortType,
|
|
47818
|
+
selectedFlightSortType = _c.selectedFlightSortType,
|
|
46985
47819
|
selectedSearchResult = _c.selectedSearchResult,
|
|
46986
47820
|
selectedPackagingAccoResultCode = _c.selectedPackagingAccoResultCode,
|
|
46987
47821
|
flyInIsOpen = _c.flyInIsOpen,
|
|
46988
47822
|
packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
|
|
46989
47823
|
editablePackagingEntry = _c.editablePackagingEntry,
|
|
46990
47824
|
transactionId = _c.transactionId,
|
|
46991
|
-
|
|
47825
|
+
flyInType = _c.flyInType,
|
|
46992
47826
|
itinerary = _c.itinerary,
|
|
46993
47827
|
packagingFlightResults = _c.packagingFlightResults;
|
|
46994
47828
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
46995
47829
|
var _d = useState(false),
|
|
46996
47830
|
initialFiltersSet = _d[0],
|
|
46997
47831
|
setInitialFiltersSet = _d[1];
|
|
46998
|
-
var _e = useState(
|
|
46999
|
-
|
|
47000
|
-
|
|
47832
|
+
var _e = useState(false),
|
|
47833
|
+
initialFlightFiltersSet = _e[0],
|
|
47834
|
+
setInitialFlightFiltersSet = _e[1];
|
|
47001
47835
|
var _f = useState(false),
|
|
47002
47836
|
filtersOpen = _f[0],
|
|
47003
47837
|
setFiltersOpen = _f[1];
|
|
@@ -47333,7 +48167,7 @@ var SearchResultsContainer = function () {
|
|
|
47333
48167
|
if (!seed) return [2 /*return*/];
|
|
47334
48168
|
setDetailsIsLoading(true);
|
|
47335
48169
|
setSelectedAccommodationSeed(seed);
|
|
47336
|
-
dispatch(
|
|
48170
|
+
dispatch(setFlyInType('acco-results'));
|
|
47337
48171
|
handleFlyInToggle(true);
|
|
47338
48172
|
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47339
48173
|
case 1:
|
|
@@ -47491,7 +48325,7 @@ var SearchResultsContainer = function () {
|
|
|
47491
48325
|
enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47492
48326
|
if (!initialFiltersSet) {
|
|
47493
48327
|
dispatch(resetFilters(enrichedFilters));
|
|
47494
|
-
setInitialFilters(enrichedFilters);
|
|
48328
|
+
dispatch(setInitialFilters(enrichedFilters));
|
|
47495
48329
|
setInitialFiltersSet(true);
|
|
47496
48330
|
}
|
|
47497
48331
|
dispatch(setResults(packageSearchResults));
|
|
@@ -47524,6 +48358,7 @@ var SearchResultsContainer = function () {
|
|
|
47524
48358
|
case 0:
|
|
47525
48359
|
_a.trys.push([0, 2, , 3]);
|
|
47526
48360
|
if (!context) return [2 /*return*/, null];
|
|
48361
|
+
dispatch(setIsLoading(true));
|
|
47527
48362
|
config = {
|
|
47528
48363
|
host: context.tideConnection.host,
|
|
47529
48364
|
apiKey: context.tideConnection.apiKey
|
|
@@ -47531,12 +48366,13 @@ var SearchResultsContainer = function () {
|
|
|
47531
48366
|
return [4 /*yield*/, build.startTransaction(config)];
|
|
47532
48367
|
case 1:
|
|
47533
48368
|
transaction = _a.sent();
|
|
47534
|
-
console.log('Transaction started', transaction);
|
|
47535
48369
|
dispatch(setTransactionId(transaction.transactionId));
|
|
48370
|
+
dispatch(setIsLoading(false));
|
|
47536
48371
|
return [2 /*return*/, transaction.transactionId];
|
|
47537
48372
|
case 2:
|
|
47538
48373
|
err_2 = _a.sent();
|
|
47539
48374
|
console.error('Transaction failed', err_2);
|
|
48375
|
+
dispatch(setIsLoading(false));
|
|
47540
48376
|
return [2 /*return*/, null];
|
|
47541
48377
|
case 3:
|
|
47542
48378
|
return [2 /*return*/];
|
|
@@ -47564,11 +48400,7 @@ var SearchResultsContainer = function () {
|
|
|
47564
48400
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
|
|
47565
48401
|
case 1:
|
|
47566
48402
|
packageAccoSearchResults = _d.sent();
|
|
47567
|
-
enrichedFilters = enrichFiltersWithPackageAccoResults(
|
|
47568
|
-
packageAccoSearchResults,
|
|
47569
|
-
context.filters,
|
|
47570
|
-
(_a = context.tags) !== null && _a !== void 0 ? _a : []
|
|
47571
|
-
);
|
|
48403
|
+
enrichedFilters = enrichFiltersWithPackageAccoResults(packageAccoSearchResults, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47572
48404
|
if (!initialFiltersSet) {
|
|
47573
48405
|
dispatch(resetFilters(enrichedFilters));
|
|
47574
48406
|
setInitialFilters(enrichedFilters);
|
|
@@ -47614,11 +48446,12 @@ var SearchResultsContainer = function () {
|
|
|
47614
48446
|
};
|
|
47615
48447
|
var runFlightSearch = function (currentTransactionId, seed) {
|
|
47616
48448
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47617
|
-
var config, searchRequest, packageFlightSearchResults, err_4;
|
|
47618
|
-
|
|
47619
|
-
|
|
48449
|
+
var config, searchRequest, packageFlightSearchResults, enrichedFilters, initialFilteredResults, firstResult, err_4;
|
|
48450
|
+
var _a;
|
|
48451
|
+
return __generator(this, function (_b) {
|
|
48452
|
+
switch (_b.label) {
|
|
47620
48453
|
case 0:
|
|
47621
|
-
|
|
48454
|
+
_b.trys.push([0, 2, , 3]);
|
|
47622
48455
|
if (!context) return [2 /*return*/];
|
|
47623
48456
|
dispatch(setFlightsLoading(true));
|
|
47624
48457
|
config = {
|
|
@@ -47629,12 +48462,31 @@ var SearchResultsContainer = function () {
|
|
|
47629
48462
|
searchRequest.agentId = context.agentId;
|
|
47630
48463
|
return [4 /*yield*/, build.searchPackagingFlights(config, searchRequest)];
|
|
47631
48464
|
case 1:
|
|
47632
|
-
packageFlightSearchResults =
|
|
48465
|
+
packageFlightSearchResults = _b.sent();
|
|
48466
|
+
enrichedFilters = enrichFiltersWithPackageFlightResults(
|
|
48467
|
+
packageFlightSearchResults,
|
|
48468
|
+
(_a = context.tags) !== null && _a !== void 0 ? _a : [],
|
|
48469
|
+
translations
|
|
48470
|
+
);
|
|
48471
|
+
if (!initialFlightFiltersSet) {
|
|
48472
|
+
dispatch(resetFlightFilters(enrichedFilters));
|
|
48473
|
+
dispatch(setInitialFlightFilters(enrichedFilters));
|
|
48474
|
+
setInitialFlightFiltersSet(true);
|
|
48475
|
+
}
|
|
47633
48476
|
dispatch(setPackagingFlightResults(packageFlightSearchResults));
|
|
48477
|
+
initialFilteredResults = applyFiltersToPackageFlightResults(packageFlightSearchResults, filters, null);
|
|
48478
|
+
dispatch(setFilteredPackagingFlightResults(initialFilteredResults));
|
|
48479
|
+
if (initialFilteredResults.length > 0) {
|
|
48480
|
+
firstResult = first(packageFlightSearchResults);
|
|
48481
|
+
if (firstResult) {
|
|
48482
|
+
dispatch(setSelectedOutwardKey(getFlightKey(firstResult.outward.segments)));
|
|
48483
|
+
dispatch(setSelectedReturnKey(getFlightKey(firstResult.return.segments)));
|
|
48484
|
+
}
|
|
48485
|
+
}
|
|
47634
48486
|
dispatch(setFlightsLoading(false));
|
|
47635
48487
|
return [3 /*break*/, 3];
|
|
47636
48488
|
case 2:
|
|
47637
|
-
err_4 =
|
|
48489
|
+
err_4 = _b.sent();
|
|
47638
48490
|
console.error('FlightSearch failed', err_4);
|
|
47639
48491
|
dispatch(setFlightsLoading(false));
|
|
47640
48492
|
return [3 /*break*/, 3];
|
|
@@ -47738,9 +48590,7 @@ var SearchResultsContainer = function () {
|
|
|
47738
48590
|
);
|
|
47739
48591
|
useEffect(
|
|
47740
48592
|
function () {
|
|
47741
|
-
console.log('packaging entry from context', context === null || context === void 0 ? void 0 : context.packagingEntry);
|
|
47742
48593
|
if (context === null || context === void 0 ? void 0 : context.packagingEntry) {
|
|
47743
|
-
console.log('original packaging entry from context', context.packagingEntry);
|
|
47744
48594
|
dispatch(setEditablePackagingEntry(structuredClone(context.packagingEntry)));
|
|
47745
48595
|
dispatch(setTransactionId(context.packagingEntry.transactionId));
|
|
47746
48596
|
}
|
|
@@ -47858,6 +48708,7 @@ var SearchResultsContainer = function () {
|
|
|
47858
48708
|
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.GroupTour
|
|
47859
48709
|
) {
|
|
47860
48710
|
handleFlyInToggle(true);
|
|
48711
|
+
dispatch(setFlyInType('acco-details'));
|
|
47861
48712
|
}
|
|
47862
48713
|
_f.label = 1;
|
|
47863
48714
|
case 1:
|
|
@@ -47949,13 +48800,15 @@ var SearchResultsContainer = function () {
|
|
|
47949
48800
|
if (selectedPackagingAccoResultCode) {
|
|
47950
48801
|
fetchPackagingAccoSearchDetails();
|
|
47951
48802
|
}
|
|
47952
|
-
dispatch(setAccommodationFlyInStep('details'));
|
|
47953
48803
|
},
|
|
47954
48804
|
[selectedSearchResult, selectedPackagingAccoResultCode]
|
|
47955
48805
|
);
|
|
47956
48806
|
useEffect(
|
|
47957
48807
|
function () {
|
|
47958
|
-
if (
|
|
48808
|
+
if (
|
|
48809
|
+
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation ||
|
|
48810
|
+
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight
|
|
48811
|
+
) {
|
|
47959
48812
|
var filteredPackageAccoResults = applyFiltersToPackageAccoResults(packagingAccoResults, filters, selectedSortType);
|
|
47960
48813
|
dispatch(setFilteredPackagingAccoResults(filteredPackageAccoResults));
|
|
47961
48814
|
} else {
|
|
@@ -47965,6 +48818,15 @@ var SearchResultsContainer = function () {
|
|
|
47965
48818
|
},
|
|
47966
48819
|
[filters, results, packagingAccoResults, selectedSortType]
|
|
47967
48820
|
);
|
|
48821
|
+
useEffect(
|
|
48822
|
+
function () {
|
|
48823
|
+
if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight) {
|
|
48824
|
+
var filteredPackageFlightResults = applyFiltersToPackageFlightResults(packagingFlightResults, flightFilters, selectedFlightSortType);
|
|
48825
|
+
dispatch(setFilteredPackagingFlightResults(filteredPackageFlightResults));
|
|
48826
|
+
}
|
|
48827
|
+
},
|
|
48828
|
+
[flightFilters, packagingFlightResults, selectedFlightSortType]
|
|
48829
|
+
);
|
|
47968
48830
|
useEffect(
|
|
47969
48831
|
function () {
|
|
47970
48832
|
setInitialFiltersSet(false);
|
|
@@ -47975,27 +48837,35 @@ var SearchResultsContainer = function () {
|
|
|
47975
48837
|
function () {
|
|
47976
48838
|
var fetchPriceDetails = function () {
|
|
47977
48839
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47978
|
-
var config, priceDetails, err_7;
|
|
47979
|
-
|
|
47980
|
-
|
|
48840
|
+
var config, request, priceDetails, err_7;
|
|
48841
|
+
var _a, _b;
|
|
48842
|
+
return __generator(this, function (_c) {
|
|
48843
|
+
switch (_c.label) {
|
|
47981
48844
|
case 0:
|
|
47982
48845
|
if (!context || !editablePackagingEntry || isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
47983
48846
|
setPricesAreLoading(true);
|
|
47984
|
-
|
|
48847
|
+
_c.label = 1;
|
|
47985
48848
|
case 1:
|
|
47986
|
-
|
|
48849
|
+
_c.trys.push([1, 3, , 4]);
|
|
47987
48850
|
config = {
|
|
47988
48851
|
host: context.tideConnection.host,
|
|
47989
48852
|
apiKey: context.tideConnection.apiKey
|
|
47990
48853
|
};
|
|
47991
|
-
|
|
48854
|
+
request = {
|
|
48855
|
+
language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
|
|
48856
|
+
officeId: context.tideConnection.officeId,
|
|
48857
|
+
catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
|
|
48858
|
+
agentId: context.agentId,
|
|
48859
|
+
payload: editablePackagingEntry
|
|
48860
|
+
};
|
|
48861
|
+
return [4 /*yield*/, build.getPriceDetails(config, request)];
|
|
47992
48862
|
case 2:
|
|
47993
|
-
priceDetails =
|
|
48863
|
+
priceDetails = _c.sent();
|
|
47994
48864
|
dispatch(setPriceDetails(priceDetails));
|
|
47995
48865
|
setPricesAreLoading(false);
|
|
47996
48866
|
return [3 /*break*/, 4];
|
|
47997
48867
|
case 3:
|
|
47998
|
-
err_7 =
|
|
48868
|
+
err_7 = _c.sent();
|
|
47999
48869
|
console.error('Error fetching price details', err_7);
|
|
48000
48870
|
setPricesAreLoading(false);
|
|
48001
48871
|
return [3 /*break*/, 4];
|
|
@@ -48007,29 +48877,35 @@ var SearchResultsContainer = function () {
|
|
|
48007
48877
|
};
|
|
48008
48878
|
var fetchItinerary = function () {
|
|
48009
48879
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
48010
|
-
var config, itinerary_1, err_8;
|
|
48011
|
-
|
|
48012
|
-
|
|
48880
|
+
var config, request, itinerary_1, err_8;
|
|
48881
|
+
var _a, _b;
|
|
48882
|
+
return __generator(this, function (_c) {
|
|
48883
|
+
switch (_c.label) {
|
|
48013
48884
|
case 0:
|
|
48014
|
-
|
|
48015
|
-
if (!context || !editablePackagingEntry || isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
48885
|
+
if (!context || !context.packagingEntry || !editablePackagingEntry || isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
48016
48886
|
setItineraryIsLoading(true);
|
|
48017
|
-
|
|
48887
|
+
_c.label = 1;
|
|
48018
48888
|
case 1:
|
|
48019
|
-
|
|
48889
|
+
_c.trys.push([1, 3, , 4]);
|
|
48020
48890
|
config = {
|
|
48021
48891
|
host: context.tideConnection.host,
|
|
48022
48892
|
apiKey: context.tideConnection.apiKey
|
|
48023
48893
|
};
|
|
48024
|
-
|
|
48894
|
+
request = {
|
|
48895
|
+
language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
|
|
48896
|
+
officeId: context.tideConnection.officeId,
|
|
48897
|
+
catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
|
|
48898
|
+
agentId: context.agentId,
|
|
48899
|
+
payload: editablePackagingEntry
|
|
48900
|
+
};
|
|
48901
|
+
return [4 /*yield*/, build.getItinerary(config, request)];
|
|
48025
48902
|
case 2:
|
|
48026
|
-
itinerary_1 =
|
|
48027
|
-
console.log('Fetched itinerary', itinerary_1);
|
|
48903
|
+
itinerary_1 = _c.sent();
|
|
48028
48904
|
dispatch(setItinerary(itinerary_1));
|
|
48029
48905
|
setItineraryIsLoading(false);
|
|
48030
48906
|
return [3 /*break*/, 4];
|
|
48031
48907
|
case 3:
|
|
48032
|
-
err_8 =
|
|
48908
|
+
err_8 = _c.sent();
|
|
48033
48909
|
console.error('Error fetching itinerary', err_8);
|
|
48034
48910
|
setItineraryIsLoading(false);
|
|
48035
48911
|
return [3 /*break*/, 4];
|
|
@@ -48045,36 +48921,22 @@ var SearchResultsContainer = function () {
|
|
|
48045
48921
|
[editablePackagingEntry]
|
|
48046
48922
|
);
|
|
48047
48923
|
// Flight selection
|
|
48048
|
-
|
|
48049
|
-
|
|
48050
|
-
|
|
48051
|
-
var
|
|
48052
|
-
|
|
48053
|
-
|
|
48054
|
-
var
|
|
48055
|
-
|
|
48056
|
-
|
|
48057
|
-
packagingFlightResults.forEach(function (flight) {
|
|
48058
|
-
var key = getFlightKey(flight.outward.segments);
|
|
48059
|
-
if (!map.has(key)) {
|
|
48060
|
-
map.set(key, flight);
|
|
48061
|
-
}
|
|
48062
|
-
});
|
|
48063
|
-
return Array.from(map.values());
|
|
48064
|
-
},
|
|
48065
|
-
[packagingFlightResults]
|
|
48066
|
-
);
|
|
48067
|
-
var _p = useState([]),
|
|
48068
|
-
uniqueReturnFlights = _p[0],
|
|
48069
|
-
setUniqueReturnFlights = _p[1];
|
|
48924
|
+
// const [selectedOutwardKey, setSelectedOutwardKey] = useState<string | null>(null);
|
|
48925
|
+
// const [selectedReturnKey, setSelectedReturnKey] = useState<string | null>(null);
|
|
48926
|
+
var selectedOutwardKey = useSelector(selectSelectedOutwardKey);
|
|
48927
|
+
var selectedReturnKey = useSelector(selectSelectedReturnKey);
|
|
48928
|
+
var uniqueOutwardFlights = useSelector(selectUniqueOutwardFlights);
|
|
48929
|
+
var uniqueReturnFlights = useSelector(selectUniqueReturnFlights);
|
|
48930
|
+
var selectedOutward = useSelector(selectSelectedOutward);
|
|
48931
|
+
var selectedReturn = useSelector(selectSelectedReturn);
|
|
48932
|
+
var selectedCombinationFlight = useSelector(selectSelectedCombinationFlight);
|
|
48070
48933
|
useEffect(
|
|
48071
48934
|
function () {
|
|
48935
|
+
var _a;
|
|
48072
48936
|
if (!selectedOutwardKey) {
|
|
48073
|
-
|
|
48074
|
-
setSelectedReturnKey(null);
|
|
48937
|
+
dispatch(setSelectedReturnKey(null));
|
|
48075
48938
|
return;
|
|
48076
48939
|
}
|
|
48077
|
-
// Filter combinations that match selected outward fare
|
|
48078
48940
|
var matchingCombinations = packagingFlightResults.filter(function (flight) {
|
|
48079
48941
|
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48080
48942
|
});
|
|
@@ -48086,40 +48948,26 @@ var SearchResultsContainer = function () {
|
|
|
48086
48948
|
}
|
|
48087
48949
|
});
|
|
48088
48950
|
var returns = Array.from(returnMap.values());
|
|
48089
|
-
|
|
48090
|
-
|
|
48091
|
-
|
|
48092
|
-
|
|
48093
|
-
|
|
48094
|
-
|
|
48095
|
-
|
|
48096
|
-
|
|
48097
|
-
|
|
48098
|
-
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48099
|
-
}) || null
|
|
48100
|
-
);
|
|
48101
|
-
},
|
|
48102
|
-
[packagingFlightResults, selectedOutwardKey]
|
|
48103
|
-
);
|
|
48104
|
-
var selectedReturn = React__default.useMemo(
|
|
48105
|
-
function () {
|
|
48106
|
-
if (!selectedReturnKey) return null;
|
|
48107
|
-
return (
|
|
48108
|
-
packagingFlightResults.find(function (flight) {
|
|
48109
|
-
return getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
48110
|
-
}) || null
|
|
48111
|
-
);
|
|
48951
|
+
var segments = (_a = first(returns)) === null || _a === void 0 ? void 0 : _a.return.segments;
|
|
48952
|
+
var firstReturnKey = returns.length > 0 && segments ? getFlightKey(segments) : null;
|
|
48953
|
+
if (
|
|
48954
|
+
!returns.some(function (x) {
|
|
48955
|
+
return getFlightKey(x.return.segments) === selectedReturnKey;
|
|
48956
|
+
})
|
|
48957
|
+
) {
|
|
48958
|
+
dispatch(setSelectedReturnKey(firstReturnKey));
|
|
48959
|
+
}
|
|
48112
48960
|
},
|
|
48113
|
-
[packagingFlightResults, selectedReturnKey]
|
|
48961
|
+
[selectedOutwardKey, packagingFlightResults, selectedReturnKey, dispatch]
|
|
48114
48962
|
);
|
|
48115
|
-
var
|
|
48963
|
+
var visibleOutwardFlights = React__default.useMemo(
|
|
48116
48964
|
function () {
|
|
48117
|
-
|
|
48118
|
-
|
|
48119
|
-
return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
48965
|
+
var withoutSelected = uniqueOutwardFlights.filter(function (x) {
|
|
48966
|
+
return getFlightKey(x.outward.segments) !== selectedOutwardKey;
|
|
48120
48967
|
});
|
|
48968
|
+
return withoutSelected.slice(0, 3);
|
|
48121
48969
|
},
|
|
48122
|
-
[
|
|
48970
|
+
[uniqueOutwardFlights, selectedOutwardKey]
|
|
48123
48971
|
);
|
|
48124
48972
|
// TODO: get details for selected combination flight and show in fly-in
|
|
48125
48973
|
// useEffect(() => {
|
|
@@ -48128,6 +48976,7 @@ var SearchResultsContainer = function () {
|
|
|
48128
48976
|
// // onFlightSearch(selectedCombinationFlight); // Trigger search to update accommodation options based on selected flight
|
|
48129
48977
|
// dispatch(setFlyInIsOpen(true));
|
|
48130
48978
|
// }, [selectedCombinationFlight, dispatch]);
|
|
48979
|
+
// Build packagingEntry
|
|
48131
48980
|
useEffect(
|
|
48132
48981
|
function () {
|
|
48133
48982
|
var _a, _b, _c, _d;
|
|
@@ -48155,7 +49004,6 @@ var SearchResultsContainer = function () {
|
|
|
48155
49004
|
: '',
|
|
48156
49005
|
language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
|
|
48157
49006
|
});
|
|
48158
|
-
console.log('Built next packaging entry', nextEntry);
|
|
48159
49007
|
if (!nextEntry) return;
|
|
48160
49008
|
dispatch(setEditablePackagingEntry(nextEntry));
|
|
48161
49009
|
if (selectedCombinationFlight) {
|
|
@@ -48371,7 +49219,6 @@ var SearchResultsContainer = function () {
|
|
|
48371
49219
|
return r.code === selectedHotelCode;
|
|
48372
49220
|
})
|
|
48373
49221
|
: null;
|
|
48374
|
-
console.log('Selected hotel for packaging entry', selectedHotel);
|
|
48375
49222
|
// Update accommodation only when enough data exists
|
|
48376
49223
|
if (selectedHotel) {
|
|
48377
49224
|
var accommodationLines = buildAccommodationLinesFromSelection(selectedHotel, seed);
|
|
@@ -48383,8 +49230,6 @@ var SearchResultsContainer = function () {
|
|
|
48383
49230
|
// Update flights only when full selected combination exists
|
|
48384
49231
|
if (selectedFlight) {
|
|
48385
49232
|
var flightLines = buildFlightLinesFromSelection(selectedFlight);
|
|
48386
|
-
console.log('selectedFlight', selectedFlight);
|
|
48387
|
-
console.log('Built flight lines from selection', flightLines);
|
|
48388
49233
|
if (flightLines.length) {
|
|
48389
49234
|
nextLines = removeFlightLines(nextLines);
|
|
48390
49235
|
nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
|
|
@@ -48430,6 +49275,10 @@ var SearchResultsContainer = function () {
|
|
|
48430
49275
|
lines: []
|
|
48431
49276
|
};
|
|
48432
49277
|
};
|
|
49278
|
+
var handleShowMoreFlights = function (flyInType) {
|
|
49279
|
+
dispatch(setFlyInType(flyInType));
|
|
49280
|
+
dispatch(setFlyInIsOpen(true));
|
|
49281
|
+
};
|
|
48433
49282
|
return React__default.createElement(
|
|
48434
49283
|
'div',
|
|
48435
49284
|
{ id: 'tide-booking', className: 'search__bg' },
|
|
@@ -48446,7 +49295,6 @@ var SearchResultsContainer = function () {
|
|
|
48446
49295
|
{ tideConnection: context.tideConnection },
|
|
48447
49296
|
React__default.createElement(FlightResultsContainer, { isMobile: isMobile }),
|
|
48448
49297
|
React__default.createElement(FlyIn, {
|
|
48449
|
-
title: 'Select your fare',
|
|
48450
49298
|
srpType: context.searchConfiguration.qsmType,
|
|
48451
49299
|
isOpen: flyInIsOpen,
|
|
48452
49300
|
setIsOpen: handleFlyInToggle,
|
|
@@ -48473,7 +49321,13 @@ var SearchResultsContainer = function () {
|
|
|
48473
49321
|
return setFiltersOpen(!filtersOpen);
|
|
48474
49322
|
},
|
|
48475
49323
|
// handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
|
|
48476
|
-
isLoading: isLoading
|
|
49324
|
+
isLoading: isLoading,
|
|
49325
|
+
setFilters: function (filters) {
|
|
49326
|
+
return dispatch(setFilters(filters));
|
|
49327
|
+
},
|
|
49328
|
+
resetFilters: function (filters) {
|
|
49329
|
+
return dispatch(resetFilters(filters));
|
|
49330
|
+
}
|
|
48477
49331
|
}),
|
|
48478
49332
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48479
49333
|
React__default.createElement(Itinerary, {
|
|
@@ -48540,53 +49394,53 @@ var SearchResultsContainer = function () {
|
|
|
48540
49394
|
}
|
|
48541
49395
|
})
|
|
48542
49396
|
),
|
|
48543
|
-
|
|
48544
|
-
'div',
|
|
48545
|
-
{ className: 'search__result-row' },
|
|
49397
|
+
context.searchConfiguration.qsmType !== build.PortalQsmType.AccommodationAndFlight &&
|
|
48546
49398
|
React__default.createElement(
|
|
48547
|
-
'
|
|
48548
|
-
{ className: 'search__result-row
|
|
48549
|
-
|
|
48550
|
-
|
|
49399
|
+
'div',
|
|
49400
|
+
{ className: 'search__result-row' },
|
|
49401
|
+
React__default.createElement(
|
|
49402
|
+
'span',
|
|
49403
|
+
{ className: 'search__result-row-text' },
|
|
49404
|
+
!isLoading &&
|
|
49405
|
+
React__default.createElement(
|
|
49406
|
+
React__default.Fragment,
|
|
49407
|
+
null,
|
|
49408
|
+
context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation &&
|
|
49409
|
+
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
|
|
49410
|
+
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length),
|
|
49411
|
+
context.searchConfiguration.qsmType !== build.PortalQsmType.Accommodation &&
|
|
49412
|
+
(filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults.length) &&
|
|
49413
|
+
filteredResults.length,
|
|
49414
|
+
'\u00A0',
|
|
49415
|
+
translations.SRP.TOTAL_RESULTS_LABEL
|
|
49416
|
+
)
|
|
49417
|
+
),
|
|
49418
|
+
!context.packagingEntry &&
|
|
49419
|
+
!isMobile &&
|
|
49420
|
+
sortByTypes &&
|
|
49421
|
+
sortByTypes.length > 0 &&
|
|
48551
49422
|
React__default.createElement(
|
|
48552
|
-
|
|
48553
|
-
|
|
48554
|
-
|
|
48555
|
-
|
|
48556
|
-
(
|
|
48557
|
-
|
|
48558
|
-
|
|
48559
|
-
|
|
48560
|
-
|
|
48561
|
-
|
|
49423
|
+
'div',
|
|
49424
|
+
{ className: 'search__result-row-filter' },
|
|
49425
|
+
React__default.createElement(ItemPicker, {
|
|
49426
|
+
items: sortByTypes,
|
|
49427
|
+
selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
|
|
49428
|
+
selectedSortByType: selectedSortType,
|
|
49429
|
+
label: translations.SRP.SORTBY,
|
|
49430
|
+
placeholder: translations.SRP.SORTBY,
|
|
49431
|
+
classModifier: 'travel-class-picker__items',
|
|
49432
|
+
valueFormatter: function (value, direction) {
|
|
49433
|
+
return getSortingName(
|
|
49434
|
+
translations,
|
|
49435
|
+
findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc')
|
|
49436
|
+
);
|
|
49437
|
+
},
|
|
49438
|
+
onPick: function (newSortKey, direction) {
|
|
49439
|
+
return handleSortChange(newSortKey, direction);
|
|
49440
|
+
}
|
|
49441
|
+
})
|
|
48562
49442
|
)
|
|
48563
49443
|
),
|
|
48564
|
-
!context.packagingEntry &&
|
|
48565
|
-
!isMobile &&
|
|
48566
|
-
sortByTypes &&
|
|
48567
|
-
sortByTypes.length > 0 &&
|
|
48568
|
-
React__default.createElement(
|
|
48569
|
-
'div',
|
|
48570
|
-
{ className: 'search__result-row-filter' },
|
|
48571
|
-
React__default.createElement(ItemPicker, {
|
|
48572
|
-
items: sortByTypes,
|
|
48573
|
-
selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
|
|
48574
|
-
selectedSortByType: selectedSortType,
|
|
48575
|
-
label: translations.SRP.SORTBY,
|
|
48576
|
-
placeholder: translations.SRP.SORTBY,
|
|
48577
|
-
classModifier: 'travel-class-picker__items',
|
|
48578
|
-
valueFormatter: function (value, direction) {
|
|
48579
|
-
return getSortingName(
|
|
48580
|
-
translations,
|
|
48581
|
-
findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc')
|
|
48582
|
-
);
|
|
48583
|
-
},
|
|
48584
|
-
onPick: function (newSortKey, direction) {
|
|
48585
|
-
return handleSortChange(newSortKey, direction);
|
|
48586
|
-
}
|
|
48587
|
-
})
|
|
48588
|
-
)
|
|
48589
|
-
),
|
|
48590
49444
|
React__default.createElement(
|
|
48591
49445
|
'div',
|
|
48592
49446
|
{ className: 'search__results__wrapper' },
|
|
@@ -48625,32 +49479,59 @@ var SearchResultsContainer = function () {
|
|
|
48625
49479
|
)
|
|
48626
49480
|
)
|
|
48627
49481
|
),
|
|
48628
|
-
|
|
48629
|
-
|
|
48630
|
-
|
|
48631
|
-
|
|
48632
|
-
|
|
48633
|
-
|
|
48634
|
-
|
|
48635
|
-
|
|
48636
|
-
|
|
48637
|
-
|
|
48638
|
-
|
|
48639
|
-
|
|
48640
|
-
|
|
48641
|
-
|
|
48642
|
-
|
|
48643
|
-
|
|
48644
|
-
|
|
48645
|
-
|
|
48646
|
-
|
|
48647
|
-
|
|
48648
|
-
|
|
48649
|
-
|
|
48650
|
-
|
|
48651
|
-
|
|
48652
|
-
|
|
48653
|
-
|
|
49482
|
+
flightsLoading
|
|
49483
|
+
? React__default.createElement(Spinner, null)
|
|
49484
|
+
: React__default.createElement(
|
|
49485
|
+
React__default.Fragment,
|
|
49486
|
+
null,
|
|
49487
|
+
React__default.createElement(
|
|
49488
|
+
'div',
|
|
49489
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
49490
|
+
selectedOutwardKey &&
|
|
49491
|
+
selectedOutward &&
|
|
49492
|
+
React__default.createElement(IndependentFlightOption, {
|
|
49493
|
+
key: 'flight-'.concat(selectedOutwardKey),
|
|
49494
|
+
item: selectedOutward.outward,
|
|
49495
|
+
guid: selectedOutward.outwardGuid,
|
|
49496
|
+
onSelect: function () {
|
|
49497
|
+
return dispatch(setSelectedOutwardKey(null));
|
|
49498
|
+
},
|
|
49499
|
+
selectedGuid: selectedOutward.outwardGuid,
|
|
49500
|
+
isOutward: true,
|
|
49501
|
+
showSelectedState: true,
|
|
49502
|
+
price: selectedOutward.price
|
|
49503
|
+
}),
|
|
49504
|
+
visibleOutwardFlights.map(function (result) {
|
|
49505
|
+
return React__default.createElement(IndependentFlightOption, {
|
|
49506
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
49507
|
+
item: result.outward,
|
|
49508
|
+
onSelect: function () {
|
|
49509
|
+
return dispatch(setSelectedOutwardKey(getFlightKey(result.outward.segments)));
|
|
49510
|
+
},
|
|
49511
|
+
guid: result.outwardGuid,
|
|
49512
|
+
isOutward: true,
|
|
49513
|
+
price: result.price,
|
|
49514
|
+
currentSelectedPrice: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.price
|
|
49515
|
+
});
|
|
49516
|
+
})
|
|
49517
|
+
),
|
|
49518
|
+
uniqueOutwardFlights &&
|
|
49519
|
+
uniqueOutwardFlights.length > 3 &&
|
|
49520
|
+
React__default.createElement(
|
|
49521
|
+
'div',
|
|
49522
|
+
{ className: 'search__results__cards__actions' },
|
|
49523
|
+
React__default.createElement(
|
|
49524
|
+
'button',
|
|
49525
|
+
{
|
|
49526
|
+
className: 'cta cta--secondary',
|
|
49527
|
+
onClick: function () {
|
|
49528
|
+
return handleShowMoreFlights('flight-outward-results');
|
|
49529
|
+
}
|
|
49530
|
+
},
|
|
49531
|
+
translations.SRP.SHOW_MORE
|
|
49532
|
+
)
|
|
49533
|
+
)
|
|
49534
|
+
)
|
|
48654
49535
|
),
|
|
48655
49536
|
context.showHotelAccommodationResults &&
|
|
48656
49537
|
!context.packagingEntry &&
|
|
@@ -48686,25 +49567,30 @@ var SearchResultsContainer = function () {
|
|
|
48686
49567
|
React__default.createElement(
|
|
48687
49568
|
'div',
|
|
48688
49569
|
{ className: 'search__results__cards search__results__cards--extended' },
|
|
48689
|
-
selectedReturnKey &&
|
|
48690
|
-
|
|
48691
|
-
|
|
48692
|
-
|
|
48693
|
-
|
|
48694
|
-
|
|
48695
|
-
|
|
48696
|
-
|
|
48697
|
-
|
|
48698
|
-
|
|
48699
|
-
|
|
48700
|
-
|
|
48701
|
-
|
|
48702
|
-
|
|
48703
|
-
|
|
48704
|
-
|
|
48705
|
-
|
|
48706
|
-
|
|
48707
|
-
|
|
49570
|
+
selectedReturnKey &&
|
|
49571
|
+
selectedReturn &&
|
|
49572
|
+
React__default.createElement(IndependentFlightOption, {
|
|
49573
|
+
key: 'flight-'.concat(selectedReturnKey),
|
|
49574
|
+
item: selectedReturn.return,
|
|
49575
|
+
guid: selectedReturn.outwardGuid,
|
|
49576
|
+
selectedGuid: selectedReturn.outwardGuid,
|
|
49577
|
+
isOutward: false,
|
|
49578
|
+
showSelectedState: true,
|
|
49579
|
+
price: selectedReturn.price
|
|
49580
|
+
}),
|
|
49581
|
+
uniqueReturnFlights.map(function (result) {
|
|
49582
|
+
return React__default.createElement(IndependentFlightOption, {
|
|
49583
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
49584
|
+
item: result.return,
|
|
49585
|
+
onSelect: function () {
|
|
49586
|
+
return dispatch(setSelectedReturnKey(getFlightKey(result.return.segments)));
|
|
49587
|
+
},
|
|
49588
|
+
guid: result.outwardGuid,
|
|
49589
|
+
isOutward: false,
|
|
49590
|
+
currentSelectedPrice: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.price,
|
|
49591
|
+
price: result.price
|
|
49592
|
+
});
|
|
49593
|
+
})
|
|
48708
49594
|
)
|
|
48709
49595
|
),
|
|
48710
49596
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
@@ -48714,7 +49600,6 @@ var SearchResultsContainer = function () {
|
|
|
48714
49600
|
)
|
|
48715
49601
|
),
|
|
48716
49602
|
React__default.createElement(FlyIn, {
|
|
48717
|
-
title: ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION),
|
|
48718
49603
|
srpType: context.searchConfiguration.qsmType,
|
|
48719
49604
|
isOpen: flyInIsOpen,
|
|
48720
49605
|
setIsOpen: handleFlyInToggle,
|
|
@@ -48725,8 +49610,9 @@ var SearchResultsContainer = function () {
|
|
|
48725
49610
|
return (panelRef.current = el);
|
|
48726
49611
|
},
|
|
48727
49612
|
detailsLoading: detailsIsLoading,
|
|
48728
|
-
|
|
48729
|
-
isPackageEditFlow: !!context.packagingEntry
|
|
49613
|
+
flyInType: flyInType,
|
|
49614
|
+
isPackageEditFlow: !!context.packagingEntry,
|
|
49615
|
+
sortByTypes: sortByTypes
|
|
48730
49616
|
})
|
|
48731
49617
|
)
|
|
48732
49618
|
)
|