@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-cjs/index.js
CHANGED
|
@@ -579,6 +579,8 @@ var QSM$g = {
|
|
|
579
579
|
GROUP_TOUR: 'جولة جماعية'
|
|
580
580
|
};
|
|
581
581
|
var SRP$f = {
|
|
582
|
+
SHOW_MORE: 'عرض المزيد',
|
|
583
|
+
SHOW_LESS: 'عرض أقل',
|
|
582
584
|
NO_RESULTS: 'لم يتم العثور على نتائج.',
|
|
583
585
|
TOTAL_RESULTS_LABEL: 'تم العثور على باقات',
|
|
584
586
|
RESET: 'إعادة تعيين',
|
|
@@ -983,6 +985,8 @@ var QSM$f = {
|
|
|
983
985
|
GROUP_TOUR: 'Grupperejse'
|
|
984
986
|
};
|
|
985
987
|
var SRP$e = {
|
|
988
|
+
SHOW_MORE: 'Vis flere',
|
|
989
|
+
SHOW_LESS: 'Vis færre',
|
|
986
990
|
NO_RESULTS: 'Ingen resultater fundet.',
|
|
987
991
|
TOTAL_RESULTS_LABEL: 'Fundne pakker',
|
|
988
992
|
RESET: 'Nulstil',
|
|
@@ -1388,6 +1392,8 @@ var QSM$e = {
|
|
|
1388
1392
|
GROUP_TOUR: 'Gruppentour'
|
|
1389
1393
|
};
|
|
1390
1394
|
var SRP$d = {
|
|
1395
|
+
SHOW_MORE: 'Mehr anzeigen',
|
|
1396
|
+
SHOW_LESS: 'Weniger anzeigen',
|
|
1391
1397
|
NO_RESULTS: 'Keine Ergebnisse gefunden.',
|
|
1392
1398
|
TOTAL_RESULTS_LABEL: 'Gefundene Pakete',
|
|
1393
1399
|
RESET: 'Zurücksetzen',
|
|
@@ -1796,6 +1802,8 @@ var QSM$d = {
|
|
|
1796
1802
|
GROUP_TOUR: 'Group tour'
|
|
1797
1803
|
};
|
|
1798
1804
|
var SRP$c = {
|
|
1805
|
+
SHOW_MORE: 'Show more',
|
|
1806
|
+
SHOW_LESS: 'Show less',
|
|
1799
1807
|
NO_RESULTS: 'No results found.',
|
|
1800
1808
|
TOTAL_RESULTS_LABEL: 'Packages found',
|
|
1801
1809
|
RESET: 'Reset',
|
|
@@ -2201,6 +2209,8 @@ var QSM$c = {
|
|
|
2201
2209
|
GROUP_TOUR: 'Tour grupal'
|
|
2202
2210
|
};
|
|
2203
2211
|
var SRP$b = {
|
|
2212
|
+
SHOW_MORE: 'Mostrar más',
|
|
2213
|
+
SHOW_LESS: 'Mostrar menos',
|
|
2204
2214
|
NO_RESULTS: 'No se han encontrado resultados.',
|
|
2205
2215
|
TOTAL_RESULTS_LABEL: 'Paquetes encontrados',
|
|
2206
2216
|
RESET: 'Restablecer',
|
|
@@ -2610,6 +2620,8 @@ var QSM$b = {
|
|
|
2610
2620
|
GROUP_TOUR: 'Tour en groupe'
|
|
2611
2621
|
};
|
|
2612
2622
|
var SRP$a = {
|
|
2623
|
+
SHOW_MORE: 'Afficher plus',
|
|
2624
|
+
SHOW_LESS: 'Afficher moins',
|
|
2613
2625
|
NO_RESULTS: 'Aucun résultat trouvé.',
|
|
2614
2626
|
TOTAL_RESULTS_LABEL: 'Forfaits trouvés',
|
|
2615
2627
|
RESET: 'Réinitialiser',
|
|
@@ -3014,6 +3026,8 @@ var QSM$a = {
|
|
|
3014
3026
|
GROUP_TOUR: 'Tour en groupe'
|
|
3015
3027
|
};
|
|
3016
3028
|
var SRP$9 = {
|
|
3029
|
+
SHOW_MORE: 'Afficher plus',
|
|
3030
|
+
SHOW_LESS: 'Afficher moins',
|
|
3017
3031
|
NO_RESULTS: 'Aucun résultat trouvé.',
|
|
3018
3032
|
TOTAL_RESULTS_LABEL: 'Forfaits trouvés',
|
|
3019
3033
|
RESET: 'Réinitialiser',
|
|
@@ -3418,6 +3432,8 @@ var QSM$9 = {
|
|
|
3418
3432
|
GROUP_TOUR: 'Ferð í hóp'
|
|
3419
3433
|
};
|
|
3420
3434
|
var SRP$8 = {
|
|
3435
|
+
SHOW_MORE: 'Sýna meira',
|
|
3436
|
+
SHOW_LESS: 'Sýna minna',
|
|
3421
3437
|
NO_RESULTS: 'Engar niðurstöður fundust.',
|
|
3422
3438
|
TOTAL_RESULTS_LABEL: 'Fundnar pakkar',
|
|
3423
3439
|
RESET: 'Endurstilla',
|
|
@@ -3823,6 +3839,8 @@ var QSM$8 = {
|
|
|
3823
3839
|
GROUP_TOUR: 'Tour di gruppo'
|
|
3824
3840
|
};
|
|
3825
3841
|
var SRP$7 = {
|
|
3842
|
+
SHOW_MORE: 'Mostra di più',
|
|
3843
|
+
SHOW_LESS: 'Mostra di meno',
|
|
3826
3844
|
NO_RESULTS: 'Nessun risultato trovato.',
|
|
3827
3845
|
TOTAL_RESULTS_LABEL: 'Pacchetti trovati',
|
|
3828
3846
|
RESET: 'Reimposta',
|
|
@@ -4232,6 +4250,8 @@ var QSM$7 = {
|
|
|
4232
4250
|
GROUP_TOUR: 'Groepsreis'
|
|
4233
4251
|
};
|
|
4234
4252
|
var SRP$6 = {
|
|
4253
|
+
SHOW_MORE: 'Toon meer',
|
|
4254
|
+
SHOW_LESS: 'Toon minder',
|
|
4235
4255
|
NO_RESULTS: 'Geen resultaten gevonden.',
|
|
4236
4256
|
TOTAL_RESULTS_LABEL: 'Gevonden pakketten',
|
|
4237
4257
|
RESET: 'Resetten',
|
|
@@ -4637,6 +4657,8 @@ var QSM$6 = {
|
|
|
4637
4657
|
GROUP_TOUR: 'Groepsreis'
|
|
4638
4658
|
};
|
|
4639
4659
|
var SRP$5 = {
|
|
4660
|
+
SHOW_MORE: 'Toon meer',
|
|
4661
|
+
SHOW_LESS: 'Toon minder',
|
|
4640
4662
|
NO_RESULTS: 'Geen resultaten gevonden.',
|
|
4641
4663
|
TOTAL_RESULTS_LABEL: 'Gevonden pakketten',
|
|
4642
4664
|
RESET: 'Resetten',
|
|
@@ -5042,6 +5064,8 @@ var QSM$5 = {
|
|
|
5042
5064
|
GROUP_TOUR: 'Gruppetur'
|
|
5043
5065
|
};
|
|
5044
5066
|
var SRP$4 = {
|
|
5067
|
+
SHOW_MORE: 'Vis mer',
|
|
5068
|
+
SHOW_LESS: 'Vis mindre',
|
|
5045
5069
|
NO_RESULTS: 'Ingen resultater funnet.',
|
|
5046
5070
|
TOTAL_RESULTS_LABEL: 'Fant pakker',
|
|
5047
5071
|
RESET: 'Tilbakestill',
|
|
@@ -5447,6 +5471,8 @@ var QSM$4 = {
|
|
|
5447
5471
|
GROUP_TOUR: 'Tour w grupie'
|
|
5448
5472
|
};
|
|
5449
5473
|
var SRP$3 = {
|
|
5474
|
+
SHOW_MORE: 'Pokaż więcej',
|
|
5475
|
+
SHOW_LESS: 'Pokaż mniej',
|
|
5450
5476
|
NO_RESULTS: 'Nie znaleziono wyników.',
|
|
5451
5477
|
TOTAL_RESULTS_LABEL: 'Znalezione pakiety',
|
|
5452
5478
|
RESET: 'Resetuj',
|
|
@@ -5852,6 +5878,8 @@ var QSM$3 = {
|
|
|
5852
5878
|
GROUP_TOUR: 'Tour em grupo'
|
|
5853
5879
|
};
|
|
5854
5880
|
var SRP$2 = {
|
|
5881
|
+
SHOW_MORE: 'Mostrar mais',
|
|
5882
|
+
SHOW_LESS: 'Mostrar menos',
|
|
5855
5883
|
NO_RESULTS: 'Nenhum resultado encontrado.',
|
|
5856
5884
|
TOTAL_RESULTS_LABEL: 'Pacotes encontrados',
|
|
5857
5885
|
RESET: 'Redefinir',
|
|
@@ -6257,6 +6285,8 @@ var QSM$2 = {
|
|
|
6257
6285
|
GROUP_TOUR: 'Gruppresa'
|
|
6258
6286
|
};
|
|
6259
6287
|
var SRP$1 = {
|
|
6288
|
+
SHOW_MORE: 'Visa mer',
|
|
6289
|
+
SHOW_LESS: 'Visa mindre',
|
|
6260
6290
|
NO_RESULTS: 'Inga resultat hittades.',
|
|
6261
6291
|
TOTAL_RESULTS_LABEL: 'Hittade paket',
|
|
6262
6292
|
RESET: 'Återställ',
|
|
@@ -6660,6 +6690,8 @@ var QSM$1 = {
|
|
|
6660
6690
|
GROUP_TOUR: 'グループツアー'
|
|
6661
6691
|
};
|
|
6662
6692
|
var SRP = {
|
|
6693
|
+
SHOW_MORE: 'もっと見る',
|
|
6694
|
+
SHOW_LESS: '閉じる',
|
|
6663
6695
|
NO_RESULTS: '結果が見つかりませんでした。',
|
|
6664
6696
|
TOTAL_RESULTS_LABEL: '見つかったパッケージ',
|
|
6665
6697
|
RESET: 'リセット',
|
|
@@ -6866,8 +6898,8 @@ var timeFromDateTime = function (dateTime) {
|
|
|
6866
6898
|
return '';
|
|
6867
6899
|
}
|
|
6868
6900
|
var date = new Date(dateTime);
|
|
6869
|
-
var hours = date.
|
|
6870
|
-
var minutes = date.
|
|
6901
|
+
var hours = date.getUTCHours();
|
|
6902
|
+
var minutes = date.getUTCMinutes();
|
|
6871
6903
|
return ''
|
|
6872
6904
|
.concat(hours, ':')
|
|
6873
6905
|
.concat(minutes < 10 ? '0' : '')
|
|
@@ -21724,7 +21756,11 @@ var FlightOptionsForm = function () {
|
|
|
21724
21756
|
setFlightGroups = _f[1];
|
|
21725
21757
|
var handleSubmit = function (e) {
|
|
21726
21758
|
if (settings.skipRouter) {
|
|
21727
|
-
|
|
21759
|
+
if (settings.roomOptions.isHidden) {
|
|
21760
|
+
dispatch(setCurrentStep(OPTIONS_FORM_STEP));
|
|
21761
|
+
} else {
|
|
21762
|
+
dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
|
|
21763
|
+
}
|
|
21728
21764
|
} else {
|
|
21729
21765
|
if (settings.roomOptions.isHidden) {
|
|
21730
21766
|
navigate(
|
|
@@ -33825,21 +33861,28 @@ var initialState$1 = {
|
|
|
33825
33861
|
packagingAccoSearchDetails: [],
|
|
33826
33862
|
selectedPackagingAccoResultCode: null,
|
|
33827
33863
|
packagingFlightResults: [],
|
|
33864
|
+
filteredPackagingFlightResults: [],
|
|
33828
33865
|
selectedPackagingFlight: null,
|
|
33866
|
+
selectedOutwardKey: null,
|
|
33867
|
+
selectedReturnKey: null,
|
|
33829
33868
|
selectedFlight: null,
|
|
33830
33869
|
selectedFlightDetails: null,
|
|
33831
33870
|
bookingPackageDetails: null,
|
|
33871
|
+
priceDetails: null,
|
|
33832
33872
|
isLoading: false,
|
|
33833
33873
|
flightsLoading: false,
|
|
33834
|
-
filters: [],
|
|
33835
33874
|
selectedSortType: null,
|
|
33875
|
+
selectedFlightSortType: null,
|
|
33876
|
+
initialFilters: [],
|
|
33877
|
+
filters: [],
|
|
33878
|
+
initialFlightFilters: [],
|
|
33879
|
+
flightFilters: [],
|
|
33836
33880
|
activeTab: 'compact',
|
|
33837
33881
|
currentPage: 1,
|
|
33882
|
+
transactionId: null,
|
|
33838
33883
|
flyInIsOpen: false,
|
|
33884
|
+
flyInType: null,
|
|
33839
33885
|
editablePackagingEntry: null,
|
|
33840
|
-
transactionId: null,
|
|
33841
|
-
accommodationFlyInStep: 'details',
|
|
33842
|
-
priceDetails: null,
|
|
33843
33886
|
itinerary: null
|
|
33844
33887
|
};
|
|
33845
33888
|
var searchResultsSlice = toolkit.createSlice({
|
|
@@ -33870,6 +33913,9 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33870
33913
|
setPackagingFlightResults: function (state, action) {
|
|
33871
33914
|
state.packagingFlightResults = action.payload;
|
|
33872
33915
|
},
|
|
33916
|
+
setFilteredPackagingFlightResults: function (state, action) {
|
|
33917
|
+
state.filteredPackagingFlightResults = action.payload;
|
|
33918
|
+
},
|
|
33873
33919
|
setSelectedPackagingFlight: function (state, action) {
|
|
33874
33920
|
state.selectedPackagingFlight = action.payload;
|
|
33875
33921
|
},
|
|
@@ -33898,6 +33944,9 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33898
33944
|
setFlightsLoading: function (state, action) {
|
|
33899
33945
|
state.flightsLoading = action.payload;
|
|
33900
33946
|
},
|
|
33947
|
+
setInitialFilters: function (state, action) {
|
|
33948
|
+
state.initialFilters = action.payload;
|
|
33949
|
+
},
|
|
33901
33950
|
setFilters: function (state, action) {
|
|
33902
33951
|
var updatedFilters = action.payload;
|
|
33903
33952
|
updatedFilters.forEach(function (updatedFilter) {
|
|
@@ -33914,9 +33963,31 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33914
33963
|
resetFilters: function (state, action) {
|
|
33915
33964
|
state.filters = action.payload;
|
|
33916
33965
|
},
|
|
33966
|
+
setInitialFlightFilters: function (state, action) {
|
|
33967
|
+
state.initialFlightFilters = action.payload;
|
|
33968
|
+
},
|
|
33969
|
+
setFlightFilters: function (state, action) {
|
|
33970
|
+
var updatedFilters = action.payload;
|
|
33971
|
+
updatedFilters.forEach(function (updatedFilter) {
|
|
33972
|
+
var existingIndex = state.flightFilters.findIndex(function (f) {
|
|
33973
|
+
return f.property === updatedFilter.property;
|
|
33974
|
+
});
|
|
33975
|
+
if (existingIndex !== -1) {
|
|
33976
|
+
state.flightFilters[existingIndex] = updatedFilter;
|
|
33977
|
+
} else {
|
|
33978
|
+
state.flightFilters.push(updatedFilter); // Optional: Add new filters if not present
|
|
33979
|
+
}
|
|
33980
|
+
});
|
|
33981
|
+
},
|
|
33982
|
+
resetFlightFilters: function (state, action) {
|
|
33983
|
+
state.flightFilters = action.payload;
|
|
33984
|
+
},
|
|
33917
33985
|
setSortType: function (state, action) {
|
|
33918
33986
|
state.selectedSortType = action.payload;
|
|
33919
33987
|
},
|
|
33988
|
+
setFlightSortType: function (state, action) {
|
|
33989
|
+
state.selectedFlightSortType = action.payload;
|
|
33990
|
+
},
|
|
33920
33991
|
setActiveTab: function (state, action) {
|
|
33921
33992
|
state.activeTab = action.payload;
|
|
33922
33993
|
},
|
|
@@ -33940,14 +34011,24 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33940
34011
|
setTransactionId: function (state, action) {
|
|
33941
34012
|
state.transactionId = action.payload;
|
|
33942
34013
|
},
|
|
33943
|
-
|
|
33944
|
-
state.
|
|
34014
|
+
setFlyInType: function (state, action) {
|
|
34015
|
+
state.flyInType = action.payload;
|
|
33945
34016
|
},
|
|
33946
34017
|
setPriceDetails: function (state, action) {
|
|
33947
34018
|
state.priceDetails = action.payload;
|
|
33948
34019
|
},
|
|
33949
34020
|
setItinerary: function (state, action) {
|
|
33950
34021
|
state.itinerary = action.payload;
|
|
34022
|
+
},
|
|
34023
|
+
setSelectedOutwardKey: function (state, action) {
|
|
34024
|
+
state.selectedOutwardKey = action.payload;
|
|
34025
|
+
},
|
|
34026
|
+
setSelectedReturnKey: function (state, action) {
|
|
34027
|
+
state.selectedReturnKey = action.payload;
|
|
34028
|
+
},
|
|
34029
|
+
resetFlightSelection: function (state) {
|
|
34030
|
+
state.selectedOutwardKey = null;
|
|
34031
|
+
state.selectedReturnKey = null;
|
|
33951
34032
|
}
|
|
33952
34033
|
}
|
|
33953
34034
|
});
|
|
@@ -33956,6 +34037,7 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
33956
34037
|
setSelectedSearchResult = _a.setSelectedSearchResult,
|
|
33957
34038
|
setPackagingAccoResults = _a.setPackagingAccoResults,
|
|
33958
34039
|
setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
|
|
34040
|
+
setFilteredPackagingFlightResults = _a.setFilteredPackagingFlightResults,
|
|
33959
34041
|
setPackagingAccoSearchDetails = _a.setPackagingAccoSearchDetails,
|
|
33960
34042
|
setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
|
|
33961
34043
|
setPackagingFlightResults = _a.setPackagingFlightResults,
|
|
@@ -33966,18 +34048,26 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
33966
34048
|
_a.selectFlight;
|
|
33967
34049
|
var setIsLoading = _a.setIsLoading,
|
|
33968
34050
|
setFlightsLoading = _a.setFlightsLoading,
|
|
34051
|
+
setInitialFilters = _a.setInitialFilters,
|
|
33969
34052
|
setFilters = _a.setFilters,
|
|
33970
34053
|
resetFilters = _a.resetFilters,
|
|
34054
|
+
setInitialFlightFilters = _a.setInitialFlightFilters,
|
|
34055
|
+
setFlightFilters = _a.setFlightFilters,
|
|
34056
|
+
resetFlightFilters = _a.resetFlightFilters,
|
|
33971
34057
|
setSortType = _a.setSortType,
|
|
34058
|
+
setFlightSortType = _a.setFlightSortType,
|
|
33972
34059
|
setActiveTab = _a.setActiveTab;
|
|
33973
34060
|
_a.setCurrentPage;
|
|
33974
34061
|
_a.resetSearchState;
|
|
33975
34062
|
var setFlyInIsOpen = _a.setFlyInIsOpen,
|
|
33976
34063
|
setEditablePackagingEntry = _a.setEditablePackagingEntry,
|
|
33977
34064
|
setTransactionId = _a.setTransactionId,
|
|
33978
|
-
|
|
34065
|
+
setFlyInType = _a.setFlyInType,
|
|
33979
34066
|
setPriceDetails = _a.setPriceDetails,
|
|
33980
|
-
setItinerary = _a.setItinerary
|
|
34067
|
+
setItinerary = _a.setItinerary,
|
|
34068
|
+
setSelectedOutwardKey = _a.setSelectedOutwardKey,
|
|
34069
|
+
setSelectedReturnKey = _a.setSelectedReturnKey;
|
|
34070
|
+
_a.resetFlightSelection;
|
|
33981
34071
|
var searchResultsReducer = searchResultsSlice.reducer;
|
|
33982
34072
|
|
|
33983
34073
|
var ItemPicker = function (_a) {
|
|
@@ -34242,7 +34332,7 @@ var Icon$1 = function (_a) {
|
|
|
34242
34332
|
title && React__default['default'].createElement('title', null, title),
|
|
34243
34333
|
React__default['default'].createElement('path', {
|
|
34244
34334
|
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',
|
|
34245
|
-
fill: 'currentColor'
|
|
34335
|
+
fill: fill !== null && fill !== void 0 ? fill : 'currentColor'
|
|
34246
34336
|
})
|
|
34247
34337
|
);
|
|
34248
34338
|
case 'ui-utensils':
|
|
@@ -43605,7 +43695,7 @@ var mapPackagingAccoResult = function (searchResult, cmsItem, languageCode, tran
|
|
|
43605
43695
|
contents: searchResult.contents
|
|
43606
43696
|
});
|
|
43607
43697
|
};
|
|
43608
|
-
var renderHotelResults = function (results, context, activeTab, translations) {
|
|
43698
|
+
var renderHotelResults = function (results, context, activeTab, translations, selectedPackagingAccoResult, isFlyIn) {
|
|
43609
43699
|
var renderedResults = results.map(function (result, index) {
|
|
43610
43700
|
var _a;
|
|
43611
43701
|
var key = ''.concat((_a = result.id) !== null && _a !== void 0 ? _a : result.code, '-').concat(index);
|
|
@@ -43620,13 +43710,22 @@ var renderHotelResults = function (results, context, activeTab, translations) {
|
|
|
43620
43710
|
return React__default['default'].createElement(
|
|
43621
43711
|
'div',
|
|
43622
43712
|
{ className: 'search__results__cards '.concat(activeTab ? 'search__results__cards--'.concat(activeTab) : '') },
|
|
43713
|
+
selectedPackagingAccoResult &&
|
|
43714
|
+
!isFlyIn &&
|
|
43715
|
+
React__default['default'].createElement(HotelCard, {
|
|
43716
|
+
key: selectedPackagingAccoResult.code,
|
|
43717
|
+
result: selectedPackagingAccoResult,
|
|
43718
|
+
translations: translations
|
|
43719
|
+
}),
|
|
43623
43720
|
renderedResults
|
|
43624
43721
|
);
|
|
43625
43722
|
};
|
|
43626
43723
|
var HotelAccommodationResults = function (_a) {
|
|
43627
43724
|
var _b, _c;
|
|
43628
|
-
var isLoading = _a.isLoading
|
|
43725
|
+
var isLoading = _a.isLoading,
|
|
43726
|
+
isFlyIn = _a.isFlyIn;
|
|
43629
43727
|
var context = React.useContext(SearchResultsConfigurationContext);
|
|
43728
|
+
var dispatch = reactRedux.useDispatch();
|
|
43630
43729
|
if (!context) {
|
|
43631
43730
|
return null;
|
|
43632
43731
|
}
|
|
@@ -43636,7 +43735,10 @@ var HotelAccommodationResults = function (_a) {
|
|
|
43636
43735
|
}),
|
|
43637
43736
|
filteredResults = _d.filteredResults,
|
|
43638
43737
|
filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
|
|
43738
|
+
packagingAccoResults = _d.packagingAccoResults,
|
|
43639
43739
|
activeTab = _d.activeTab;
|
|
43740
|
+
_d.flyInIsOpen;
|
|
43741
|
+
var selectedPackagingAccoResultCode = _d.selectedPackagingAccoResultCode;
|
|
43640
43742
|
var cmsMap = React__default['default'].useMemo(
|
|
43641
43743
|
function () {
|
|
43642
43744
|
var _a;
|
|
@@ -43699,57 +43801,971 @@ var HotelAccommodationResults = function (_a) {
|
|
|
43699
43801
|
: firstPackagingResult.fromDate;
|
|
43700
43802
|
var firstResultDay = firstResultDate ? dateFns.format(dateFns.parseISO(firstResultDate), 'd') : null;
|
|
43701
43803
|
var firstResultMonth = firstResultDate ? dateFns.format(dateFns.parseISO(firstResultDate), 'MMM') : null;
|
|
43702
|
-
|
|
43703
|
-
|
|
43704
|
-
|
|
43705
|
-
|
|
43706
|
-
|
|
43707
|
-
|
|
43708
|
-
|
|
43709
|
-
|
|
43710
|
-
|
|
43711
|
-
|
|
43804
|
+
var selectedPackagingAccoResult = React__default['default'].useMemo(
|
|
43805
|
+
function () {
|
|
43806
|
+
var selectedResult = packagingAccoResults.find(function (result) {
|
|
43807
|
+
return result.code === selectedPackagingAccoResultCode;
|
|
43808
|
+
});
|
|
43809
|
+
if (selectedResult) {
|
|
43810
|
+
return mapPackagingAccoResult(selectedResult, cmsMap.get(selectedResult.code), context.languageCode, translations);
|
|
43811
|
+
}
|
|
43812
|
+
},
|
|
43813
|
+
[packagingAccoResults, selectedPackagingAccoResultCode, cmsMap, context.languageCode, translations]
|
|
43814
|
+
);
|
|
43815
|
+
var visibleResults = React__default['default'].useMemo(
|
|
43816
|
+
function () {
|
|
43817
|
+
var shouldShowAll =
|
|
43818
|
+
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) !== build.PortalQsmType.AccommodationAndFlight || isFlyIn;
|
|
43819
|
+
if (shouldShowAll) {
|
|
43820
|
+
return mappedResults;
|
|
43821
|
+
}
|
|
43822
|
+
if (selectedPackagingAccoResult) {
|
|
43823
|
+
return mappedResults
|
|
43824
|
+
.filter(function (result) {
|
|
43825
|
+
return result.code !== selectedPackagingAccoResult.code;
|
|
43826
|
+
})
|
|
43827
|
+
.slice(0, 2);
|
|
43828
|
+
}
|
|
43829
|
+
return mappedResults.slice(0, 3);
|
|
43830
|
+
},
|
|
43831
|
+
[context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType, mappedResults, isFlyIn, selectedPackagingAccoResult]
|
|
43832
|
+
);
|
|
43833
|
+
var handleShowMoreHotels = function (flyInType) {
|
|
43834
|
+
dispatch(setFlyInType(flyInType));
|
|
43835
|
+
dispatch(setFlyInIsOpen(true));
|
|
43836
|
+
};
|
|
43712
43837
|
return React__default['default'].createElement(
|
|
43713
43838
|
React__default['default'].Fragment,
|
|
43714
43839
|
null,
|
|
43840
|
+
!isFlyIn &&
|
|
43841
|
+
React__default['default'].createElement(
|
|
43842
|
+
'div',
|
|
43843
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
43844
|
+
React__default['default'].createElement(
|
|
43845
|
+
'div',
|
|
43846
|
+
{ className: 'search__results__label__date' },
|
|
43847
|
+
firstResultDay && firstResultMonth
|
|
43848
|
+
? React__default['default'].createElement(
|
|
43849
|
+
React__default['default'].Fragment,
|
|
43850
|
+
null,
|
|
43851
|
+
React__default['default'].createElement('p', { className: 'search__results__label__date-date' }, firstResultDay),
|
|
43852
|
+
React__default['default'].createElement('p', null, firstResultMonth)
|
|
43853
|
+
)
|
|
43854
|
+
: React__default['default'].createElement(Icon$1, { name: 'ui-bed', height: 16, fill: 'white' })
|
|
43855
|
+
),
|
|
43856
|
+
React__default['default'].createElement(
|
|
43857
|
+
'div',
|
|
43858
|
+
{ className: 'search__results__label__text' },
|
|
43859
|
+
React__default['default'].createElement(
|
|
43860
|
+
'h3',
|
|
43861
|
+
null,
|
|
43862
|
+
translations.SRP.SELECT,
|
|
43863
|
+
' ',
|
|
43864
|
+
React__default['default'].createElement('strong', null, translations.SRP.ACCOMMODATION)
|
|
43865
|
+
)
|
|
43866
|
+
)
|
|
43867
|
+
),
|
|
43868
|
+
isLoading
|
|
43869
|
+
? React__default['default'].createElement(
|
|
43870
|
+
React__default['default'].Fragment,
|
|
43871
|
+
null,
|
|
43872
|
+
(_c = context.customSpinner) !== null && _c !== void 0 ? _c : React__default['default'].createElement(Spinner, null)
|
|
43873
|
+
)
|
|
43874
|
+
: renderHotelResults(visibleResults, context, activeTab, translations, selectedPackagingAccoResult, isFlyIn),
|
|
43875
|
+
packagingAccoResults.length > 3 &&
|
|
43876
|
+
!isFlyIn &&
|
|
43877
|
+
React__default['default'].createElement(
|
|
43878
|
+
'div',
|
|
43879
|
+
{ className: 'search__results__cards__actions' },
|
|
43880
|
+
React__default['default'].createElement(
|
|
43881
|
+
'button',
|
|
43882
|
+
{
|
|
43883
|
+
className: 'cta cta--secondary',
|
|
43884
|
+
onClick: function () {
|
|
43885
|
+
return handleShowMoreHotels('acco-results');
|
|
43886
|
+
}
|
|
43887
|
+
},
|
|
43888
|
+
translations.SRP.SHOW_MORE
|
|
43889
|
+
)
|
|
43890
|
+
),
|
|
43891
|
+
mappedResults.length === 0 && !isLoading && React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS)
|
|
43892
|
+
);
|
|
43893
|
+
};
|
|
43894
|
+
|
|
43895
|
+
var selectSearchResultsState = function (state) {
|
|
43896
|
+
return state.searchResults;
|
|
43897
|
+
};
|
|
43898
|
+
var selectPackagingFlightResults = toolkit.createSelector([selectSearchResultsState], function (state) {
|
|
43899
|
+
return state.packagingFlightResults;
|
|
43900
|
+
});
|
|
43901
|
+
var selectFilteredPackagingFlightResults = toolkit.createSelector([selectSearchResultsState], function (state) {
|
|
43902
|
+
return state.filteredPackagingFlightResults;
|
|
43903
|
+
});
|
|
43904
|
+
var selectSelectedOutwardKey = toolkit.createSelector([selectSearchResultsState], function (state) {
|
|
43905
|
+
return state.selectedOutwardKey;
|
|
43906
|
+
});
|
|
43907
|
+
var selectSelectedReturnKey = toolkit.createSelector([selectSearchResultsState], function (state) {
|
|
43908
|
+
return state.selectedReturnKey;
|
|
43909
|
+
});
|
|
43910
|
+
var selectUniqueOutwardFlights = toolkit.createSelector([selectFilteredPackagingFlightResults], function (packagingFlightResults) {
|
|
43911
|
+
var map = new Map();
|
|
43912
|
+
packagingFlightResults.forEach(function (flight) {
|
|
43913
|
+
var key = getFlightKey(flight.outward.segments);
|
|
43914
|
+
if (!map.has(key)) {
|
|
43915
|
+
map.set(key, flight);
|
|
43916
|
+
}
|
|
43917
|
+
});
|
|
43918
|
+
return Array.from(map.values());
|
|
43919
|
+
});
|
|
43920
|
+
var selectUniqueReturnFlights = toolkit.createSelector(
|
|
43921
|
+
[selectFilteredPackagingFlightResults, selectSelectedOutwardKey],
|
|
43922
|
+
function (packagingFlightResults, selectedOutwardKey) {
|
|
43923
|
+
if (!selectedOutwardKey) return [];
|
|
43924
|
+
var matchingCombinations = packagingFlightResults.filter(function (flight) {
|
|
43925
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
43926
|
+
});
|
|
43927
|
+
var map = new Map();
|
|
43928
|
+
matchingCombinations.forEach(function (flight) {
|
|
43929
|
+
var key = getFlightKey(flight.return.segments);
|
|
43930
|
+
if (!map.has(key)) {
|
|
43931
|
+
map.set(key, flight);
|
|
43932
|
+
}
|
|
43933
|
+
});
|
|
43934
|
+
return Array.from(map.values());
|
|
43935
|
+
}
|
|
43936
|
+
);
|
|
43937
|
+
var selectSelectedOutward = toolkit.createSelector(
|
|
43938
|
+
[selectPackagingFlightResults, selectSelectedOutwardKey],
|
|
43939
|
+
function (packagingFlightResults, selectedOutwardKey) {
|
|
43940
|
+
var _a;
|
|
43941
|
+
if (!selectedOutwardKey) return null;
|
|
43942
|
+
return (_a = packagingFlightResults.find(function (flight) {
|
|
43943
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
43944
|
+
})) !== null && _a !== void 0
|
|
43945
|
+
? _a
|
|
43946
|
+
: null;
|
|
43947
|
+
}
|
|
43948
|
+
);
|
|
43949
|
+
var selectSelectedReturn = toolkit.createSelector(
|
|
43950
|
+
[selectPackagingFlightResults, selectSelectedReturnKey],
|
|
43951
|
+
function (packagingFlightResults, selectedReturnKey) {
|
|
43952
|
+
var _a;
|
|
43953
|
+
if (!selectedReturnKey) return null;
|
|
43954
|
+
return (_a = packagingFlightResults.find(function (flight) {
|
|
43955
|
+
return getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
43956
|
+
})) !== null && _a !== void 0
|
|
43957
|
+
? _a
|
|
43958
|
+
: null;
|
|
43959
|
+
}
|
|
43960
|
+
);
|
|
43961
|
+
var selectSelectedCombinationFlight = toolkit.createSelector(
|
|
43962
|
+
[selectPackagingFlightResults, selectSelectedOutwardKey, selectSelectedReturnKey],
|
|
43963
|
+
function (packagingFlightResults, selectedOutwardKey, selectedReturnKey) {
|
|
43964
|
+
var _a;
|
|
43965
|
+
if (!selectedOutwardKey || !selectedReturnKey) return null;
|
|
43966
|
+
return (_a = packagingFlightResults.find(function (flight) {
|
|
43967
|
+
return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
43968
|
+
})) !== null && _a !== void 0
|
|
43969
|
+
? _a
|
|
43970
|
+
: null;
|
|
43971
|
+
}
|
|
43972
|
+
);
|
|
43973
|
+
|
|
43974
|
+
var IndependentFlightOption = function (_a) {
|
|
43975
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
43976
|
+
var item = _a.item,
|
|
43977
|
+
onSelect = _a.onSelect,
|
|
43978
|
+
guid = _a.guid,
|
|
43979
|
+
selectedGuid = _a.selectedGuid,
|
|
43980
|
+
isOutward = _a.isOutward,
|
|
43981
|
+
showSelectedState = _a.showSelectedState,
|
|
43982
|
+
currentSelectedPrice = _a.currentSelectedPrice,
|
|
43983
|
+
price = _a.price;
|
|
43984
|
+
var context = React.useContext(SearchResultsConfigurationContext);
|
|
43985
|
+
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
43986
|
+
var translations = getTranslations(language);
|
|
43987
|
+
var _p = React.useState(false),
|
|
43988
|
+
detailsOpen = _p[0],
|
|
43989
|
+
setDetailsOpen = _p[1];
|
|
43990
|
+
var priceDifference = price && currentSelectedPrice ? price - currentSelectedPrice : null;
|
|
43991
|
+
return React__default['default'].createElement(
|
|
43992
|
+
'div',
|
|
43993
|
+
{ className: 'search__result-card', key: 'flight-'.concat(item.code) },
|
|
43715
43994
|
React__default['default'].createElement(
|
|
43716
43995
|
'div',
|
|
43717
|
-
{ className: '
|
|
43996
|
+
{ className: 'flight '.concat(showSelectedState && selectedGuid === guid ? 'flight--selected' : '') },
|
|
43718
43997
|
React__default['default'].createElement(
|
|
43719
43998
|
'div',
|
|
43720
|
-
{ className: '
|
|
43721
|
-
React__default['default'].createElement(
|
|
43722
|
-
|
|
43999
|
+
{ className: 'flight__option' },
|
|
44000
|
+
React__default['default'].createElement(
|
|
44001
|
+
'div',
|
|
44002
|
+
{ className: 'flight__content' },
|
|
44003
|
+
React__default['default'].createElement(
|
|
44004
|
+
'div',
|
|
44005
|
+
{ className: 'flight__flights' },
|
|
44006
|
+
React__default['default'].createElement(
|
|
44007
|
+
'div',
|
|
44008
|
+
{ className: 'flight__flight' },
|
|
44009
|
+
React__default['default'].createElement(
|
|
44010
|
+
'div',
|
|
44011
|
+
{ className: 'flight__flight__header' },
|
|
44012
|
+
React__default['default'].createElement('div', { className: 'flight__status__container' }),
|
|
44013
|
+
React__default['default'].createElement(
|
|
44014
|
+
'div',
|
|
44015
|
+
{ className: 'flight__price' },
|
|
44016
|
+
price != null &&
|
|
44017
|
+
price > 0 &&
|
|
44018
|
+
(isOutward
|
|
44019
|
+
? React__default['default'].createElement(
|
|
44020
|
+
'span',
|
|
44021
|
+
{ className: 'price' },
|
|
44022
|
+
translations.QSM.ROUNDTRIP + ' ' + translations.SRP.PRICE,
|
|
44023
|
+
'\u00A0',
|
|
44024
|
+
formatPrice$2(
|
|
44025
|
+
price,
|
|
44026
|
+
'EUR',
|
|
44027
|
+
(_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
|
|
44028
|
+
)
|
|
44029
|
+
)
|
|
44030
|
+
: priceDifference != null &&
|
|
44031
|
+
Math.abs(priceDifference) > 0 &&
|
|
44032
|
+
React__default['default'].createElement(
|
|
44033
|
+
'span',
|
|
44034
|
+
{ className: 'price' },
|
|
44035
|
+
priceDifference > 0 ? '+' : '-',
|
|
44036
|
+
'\u00A0',
|
|
44037
|
+
formatPrice$2(
|
|
44038
|
+
Math.abs(priceDifference),
|
|
44039
|
+
'EUR',
|
|
44040
|
+
(_d = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
|
|
44041
|
+
)
|
|
44042
|
+
)),
|
|
44043
|
+
React__default['default'].createElement(
|
|
44044
|
+
'button',
|
|
44045
|
+
{
|
|
44046
|
+
type: 'button',
|
|
44047
|
+
className: 'cta '.concat(selectedGuid === guid ? 'cta--selected' : 'cta--select'),
|
|
44048
|
+
onClick: function () {
|
|
44049
|
+
return onSelect === null || onSelect === void 0 ? void 0 : onSelect();
|
|
44050
|
+
}
|
|
44051
|
+
},
|
|
44052
|
+
selectedGuid === guid ? 'Selected' : 'Select'
|
|
44053
|
+
)
|
|
44054
|
+
)
|
|
44055
|
+
)
|
|
44056
|
+
),
|
|
44057
|
+
React__default['default'].createElement(
|
|
44058
|
+
'div',
|
|
44059
|
+
{ className: 'flight__flight' },
|
|
44060
|
+
React__default['default'].createElement(
|
|
44061
|
+
'div',
|
|
44062
|
+
{ className: 'flight__flight__container' },
|
|
44063
|
+
React__default['default'].createElement(
|
|
44064
|
+
'div',
|
|
44065
|
+
{ className: 'flight__flight__wrapper' },
|
|
44066
|
+
React__default['default'].createElement(
|
|
44067
|
+
'div',
|
|
44068
|
+
{ className: 'flight__logo__wrapper' },
|
|
44069
|
+
React__default['default'].createElement('img', {
|
|
44070
|
+
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
|
|
44071
|
+
(_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.marketingAirlineCode,
|
|
44072
|
+
'.png?height=256'
|
|
44073
|
+
),
|
|
44074
|
+
alt: '',
|
|
44075
|
+
className: 'flight__logo'
|
|
44076
|
+
}),
|
|
44077
|
+
React__default['default'].createElement(
|
|
44078
|
+
'span',
|
|
44079
|
+
null,
|
|
44080
|
+
(_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.marketingAirlineName
|
|
44081
|
+
)
|
|
44082
|
+
),
|
|
44083
|
+
React__default['default'].createElement(
|
|
44084
|
+
'div',
|
|
44085
|
+
{ className: 'flight__info' },
|
|
44086
|
+
React__default['default'].createElement(
|
|
44087
|
+
'div',
|
|
44088
|
+
{ className: 'flight__info__times' },
|
|
44089
|
+
React__default['default'].createElement(
|
|
44090
|
+
'strong',
|
|
44091
|
+
null,
|
|
44092
|
+
timeFromDateTime((_g = getDepartureSegment(item)) === null || _g === void 0 ? void 0 : _g.departureDateTime),
|
|
44093
|
+
' ',
|
|
44094
|
+
(_h = getDepartureSegment(item)) === null || _h === void 0 ? void 0 : _h.departureAirportCode
|
|
44095
|
+
),
|
|
44096
|
+
React__default['default'].createElement(
|
|
44097
|
+
'p',
|
|
44098
|
+
null,
|
|
44099
|
+
longFormatDate((_j = getDepartureSegment(item)) === null || _j === void 0 ? void 0 : _j.departureDateTime, language)
|
|
44100
|
+
)
|
|
44101
|
+
),
|
|
44102
|
+
React__default['default'].createElement(
|
|
44103
|
+
'div',
|
|
44104
|
+
{ className: 'flight__info__duration' },
|
|
44105
|
+
React__default['default'].createElement('p', null, durationTicksInHoursString(item.durationInTicks)),
|
|
44106
|
+
React__default['default'].createElement(
|
|
44107
|
+
'div',
|
|
44108
|
+
{ className: 'flight__info__duration__stops' },
|
|
44109
|
+
React__default['default'].createElement('div', { className: 'flight__info__duration__stop' })
|
|
44110
|
+
),
|
|
44111
|
+
React__default['default'].createElement(
|
|
44112
|
+
'span',
|
|
44113
|
+
null,
|
|
44114
|
+
getNumberOfStopsLabel(item, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
|
|
44115
|
+
)
|
|
44116
|
+
),
|
|
44117
|
+
React__default['default'].createElement(
|
|
44118
|
+
'div',
|
|
44119
|
+
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44120
|
+
React__default['default'].createElement(
|
|
44121
|
+
'strong',
|
|
44122
|
+
null,
|
|
44123
|
+
timeFromDateTime((_k = getArrivalSegment(item)) === null || _k === void 0 ? void 0 : _k.arrivalDateTime),
|
|
44124
|
+
' ',
|
|
44125
|
+
(_l = getArrivalSegment(item)) === null || _l === void 0 ? void 0 : _l.arrivalAirportCode
|
|
44126
|
+
),
|
|
44127
|
+
React__default['default'].createElement(
|
|
44128
|
+
'p',
|
|
44129
|
+
null,
|
|
44130
|
+
longFormatDate((_m = getArrivalSegment(item)) === null || _m === void 0 ? void 0 : _m.arrivalDateTime, language)
|
|
44131
|
+
)
|
|
44132
|
+
)
|
|
44133
|
+
)
|
|
44134
|
+
),
|
|
44135
|
+
React__default['default'].createElement(
|
|
44136
|
+
'div',
|
|
44137
|
+
{ className: 'flight__detail__btn__wrapper' },
|
|
44138
|
+
React__default['default'].createElement(
|
|
44139
|
+
'div',
|
|
44140
|
+
{
|
|
44141
|
+
className: 'flight__detail__btn '.concat(detailsOpen ? 'flight__detail__btn--active' : ''),
|
|
44142
|
+
onClick: function () {
|
|
44143
|
+
return setDetailsOpen(function (prev) {
|
|
44144
|
+
return !prev;
|
|
44145
|
+
});
|
|
44146
|
+
}
|
|
44147
|
+
},
|
|
44148
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
|
|
44149
|
+
)
|
|
44150
|
+
)
|
|
44151
|
+
),
|
|
44152
|
+
React__default['default'].createElement(
|
|
44153
|
+
'div',
|
|
44154
|
+
{ className: 'flight__detail '.concat(detailsOpen ? 'flight__detail--active' : '') },
|
|
44155
|
+
(_o = getFlightSegments(item)) === null || _o === void 0
|
|
44156
|
+
? void 0
|
|
44157
|
+
: _o.map(function (segment, index) {
|
|
44158
|
+
return React__default['default'].createElement(
|
|
44159
|
+
React__default['default'].Fragment,
|
|
44160
|
+
{ key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
|
|
44161
|
+
React__default['default'].createElement(
|
|
44162
|
+
'div',
|
|
44163
|
+
{ className: 'flight__info' },
|
|
44164
|
+
React__default['default'].createElement(
|
|
44165
|
+
'div',
|
|
44166
|
+
{ className: 'flight__info__times__wrapper' },
|
|
44167
|
+
React__default['default'].createElement(
|
|
44168
|
+
'div',
|
|
44169
|
+
{ className: 'flight__info__times' },
|
|
44170
|
+
React__default['default'].createElement('p', null, timeFromDateTime(segment.departureDateTime)),
|
|
44171
|
+
React__default['default'].createElement('strong', null, segment.departureAirportCode),
|
|
44172
|
+
React__default['default'].createElement('p', null, longFormatDate(segment.departureDateTime, language))
|
|
44173
|
+
),
|
|
44174
|
+
React__default['default'].createElement(
|
|
44175
|
+
'div',
|
|
44176
|
+
null,
|
|
44177
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 })
|
|
44178
|
+
)
|
|
44179
|
+
),
|
|
44180
|
+
React__default['default'].createElement(
|
|
44181
|
+
'div',
|
|
44182
|
+
{ className: 'flight__info__duration' },
|
|
44183
|
+
React__default['default'].createElement('p', null, durationTicksInHoursString(segment.durationInTicks)),
|
|
44184
|
+
React__default['default'].createElement('div', { className: 'flight__info__duration__stops' }),
|
|
44185
|
+
React__default['default'].createElement('span', null, segment.marketingAirlineName),
|
|
44186
|
+
React__default['default'].createElement('strong', null, segment.operatingFlightNumber)
|
|
44187
|
+
),
|
|
44188
|
+
React__default['default'].createElement(
|
|
44189
|
+
'div',
|
|
44190
|
+
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
44191
|
+
React__default['default'].createElement(
|
|
44192
|
+
'div',
|
|
44193
|
+
null,
|
|
44194
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })
|
|
44195
|
+
),
|
|
44196
|
+
React__default['default'].createElement(
|
|
44197
|
+
'div',
|
|
44198
|
+
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44199
|
+
React__default['default'].createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
44200
|
+
React__default['default'].createElement('strong', null, segment.arrivalAirportCode),
|
|
44201
|
+
React__default['default'].createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
44202
|
+
)
|
|
44203
|
+
)
|
|
44204
|
+
),
|
|
44205
|
+
segment.transferTimeInTicks &&
|
|
44206
|
+
React__default['default'].createElement(
|
|
44207
|
+
'div',
|
|
44208
|
+
{ className: 'flight__info' },
|
|
44209
|
+
React__default['default'].createElement('div', { className: 'flight__info__times' }),
|
|
44210
|
+
React__default['default'].createElement(
|
|
44211
|
+
'div',
|
|
44212
|
+
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44213
|
+
React__default['default'].createElement(
|
|
44214
|
+
'div',
|
|
44215
|
+
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44216
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44217
|
+
),
|
|
44218
|
+
React__default['default'].createElement(
|
|
44219
|
+
'div',
|
|
44220
|
+
{ className: 'flight__info__duration__stoptime' },
|
|
44221
|
+
React__default['default'].createElement('span', null, 'Stop time'),
|
|
44222
|
+
React__default['default'].createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
44223
|
+
)
|
|
44224
|
+
),
|
|
44225
|
+
React__default['default'].createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
44226
|
+
)
|
|
44227
|
+
);
|
|
44228
|
+
})
|
|
44229
|
+
)
|
|
44230
|
+
)
|
|
44231
|
+
)
|
|
44232
|
+
)
|
|
44233
|
+
)
|
|
44234
|
+
)
|
|
44235
|
+
);
|
|
44236
|
+
};
|
|
44237
|
+
|
|
44238
|
+
var MultiRangeFilter = function (_a) {
|
|
44239
|
+
var min = _a.min,
|
|
44240
|
+
max = _a.max,
|
|
44241
|
+
selectedMin = _a.selectedMin,
|
|
44242
|
+
selectedMax = _a.selectedMax,
|
|
44243
|
+
valueFormatter = _a.valueFormatter,
|
|
44244
|
+
onChange = _a.onChange;
|
|
44245
|
+
var _b = React.useState(false),
|
|
44246
|
+
isDragging = _b[0],
|
|
44247
|
+
setIsDragging = _b[1];
|
|
44248
|
+
var _c = React.useState(0),
|
|
44249
|
+
leftPercentage = _c[0],
|
|
44250
|
+
setLeftPercentage = _c[1];
|
|
44251
|
+
var _d = React.useState(0),
|
|
44252
|
+
rightPercentage = _d[0],
|
|
44253
|
+
setRightPercentage = _d[1];
|
|
44254
|
+
var _e = React.useState(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min),
|
|
44255
|
+
minVal = _e[0],
|
|
44256
|
+
setMinVal = _e[1];
|
|
44257
|
+
var _f = React.useState(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max),
|
|
44258
|
+
maxVal = _f[0],
|
|
44259
|
+
setMaxVal = _f[1];
|
|
44260
|
+
var minGap = 5;
|
|
44261
|
+
// Sync internal state with external selectedMin/selectedMax changes
|
|
44262
|
+
React.useEffect(
|
|
44263
|
+
function () {
|
|
44264
|
+
setMinVal(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min);
|
|
44265
|
+
setMaxVal(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max);
|
|
44266
|
+
},
|
|
44267
|
+
[min, max, selectedMin, selectedMax]
|
|
44268
|
+
);
|
|
44269
|
+
// Recalculate slider track whenever values change
|
|
44270
|
+
React.useEffect(
|
|
44271
|
+
function () {
|
|
44272
|
+
var range = max - min || 1;
|
|
44273
|
+
var minPercent = ((minVal - min) / range) * 100;
|
|
44274
|
+
var maxPercent = ((maxVal - min) / range) * 100;
|
|
44275
|
+
setLeftPercentage(minPercent);
|
|
44276
|
+
setRightPercentage(100 - maxPercent);
|
|
44277
|
+
},
|
|
44278
|
+
[minVal, maxVal, min, max]
|
|
44279
|
+
);
|
|
44280
|
+
var slideMin = function (e) {
|
|
44281
|
+
var value = parseInt(e.target.value, 10);
|
|
44282
|
+
// Ensure the thumbs don’t cross and enforce minGap
|
|
44283
|
+
if (value <= maxVal - minGap) {
|
|
44284
|
+
setMinVal(value);
|
|
44285
|
+
}
|
|
44286
|
+
};
|
|
44287
|
+
var slideMax = function (e) {
|
|
44288
|
+
var value = parseInt(e.target.value, 10);
|
|
44289
|
+
// Ensure the thumbs don’t cross and enforce minGap
|
|
44290
|
+
if (value >= minVal + minGap) {
|
|
44291
|
+
setMaxVal(value);
|
|
44292
|
+
}
|
|
44293
|
+
};
|
|
44294
|
+
var startDrag = function () {
|
|
44295
|
+
setIsDragging(true);
|
|
44296
|
+
};
|
|
44297
|
+
var stopDrag = function () {
|
|
44298
|
+
setIsDragging(false);
|
|
44299
|
+
// Notify parent with the final values
|
|
44300
|
+
onChange(minVal, maxVal);
|
|
44301
|
+
};
|
|
44302
|
+
return React__default['default'].createElement(
|
|
44303
|
+
'div',
|
|
44304
|
+
{ className: 'double-slider-box' },
|
|
44305
|
+
React__default['default'].createElement(
|
|
44306
|
+
'div',
|
|
44307
|
+
{ className: 'input-box' },
|
|
44308
|
+
React__default['default'].createElement('div', { className: 'min-box' }, valueFormatter(minVal)),
|
|
44309
|
+
React__default['default'].createElement('div', { className: 'max-box' }, valueFormatter(maxVal))
|
|
44310
|
+
),
|
|
44311
|
+
React__default['default'].createElement(
|
|
44312
|
+
'div',
|
|
44313
|
+
{ className: 'range-slider' },
|
|
44314
|
+
React__default['default'].createElement('div', {
|
|
44315
|
+
className: 'slider-track',
|
|
44316
|
+
style: { left: ''.concat(leftPercentage, '%'), right: ''.concat(rightPercentage, '%') }
|
|
44317
|
+
}),
|
|
44318
|
+
React__default['default'].createElement('input', {
|
|
44319
|
+
type: 'range',
|
|
44320
|
+
min: min,
|
|
44321
|
+
max: max,
|
|
44322
|
+
value: minVal,
|
|
44323
|
+
onChange: slideMin,
|
|
44324
|
+
onMouseDown: startDrag,
|
|
44325
|
+
onMouseUp: stopDrag,
|
|
44326
|
+
onTouchStart: startDrag,
|
|
44327
|
+
onTouchEnd: stopDrag,
|
|
44328
|
+
className: 'min-val'
|
|
44329
|
+
}),
|
|
44330
|
+
React__default['default'].createElement('input', {
|
|
44331
|
+
type: 'range',
|
|
44332
|
+
min: min,
|
|
44333
|
+
max: max,
|
|
44334
|
+
value: maxVal,
|
|
44335
|
+
onChange: slideMax,
|
|
44336
|
+
onMouseDown: startDrag,
|
|
44337
|
+
onMouseUp: stopDrag,
|
|
44338
|
+
onTouchStart: startDrag,
|
|
44339
|
+
onTouchEnd: stopDrag,
|
|
44340
|
+
className: 'max-val'
|
|
44341
|
+
}),
|
|
44342
|
+
isDragging && React__default['default'].createElement('div', { className: 'min-tooltip' }, valueFormatter(minVal)),
|
|
44343
|
+
isDragging && React__default['default'].createElement('div', { className: 'max-tooltip' }, valueFormatter(maxVal))
|
|
44344
|
+
)
|
|
44345
|
+
);
|
|
44346
|
+
};
|
|
44347
|
+
|
|
44348
|
+
var Filters = function (_a) {
|
|
44349
|
+
var _b;
|
|
44350
|
+
var initialFilters = _a.initialFilters,
|
|
44351
|
+
filters = _a.filters,
|
|
44352
|
+
isOpen = _a.isOpen,
|
|
44353
|
+
handleSetIsOpen = _a.handleSetIsOpen,
|
|
44354
|
+
isLoading = _a.isLoading,
|
|
44355
|
+
setFilters = _a.setFilters,
|
|
44356
|
+
resetFilters = _a.resetFilters;
|
|
44357
|
+
var context = React.useContext(SearchResultsConfigurationContext);
|
|
44358
|
+
if (!context || !context.showFilters) {
|
|
44359
|
+
return null;
|
|
44360
|
+
}
|
|
44361
|
+
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
44362
|
+
var _c = React.useState({}),
|
|
44363
|
+
visibleFilters = _c[0],
|
|
44364
|
+
setVisibleFilters = _c[1];
|
|
44365
|
+
var toggleFilterVisibility = function (filterId) {
|
|
44366
|
+
setVisibleFilters(function (prev) {
|
|
44367
|
+
var _a;
|
|
44368
|
+
return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
|
|
44369
|
+
});
|
|
44370
|
+
};
|
|
44371
|
+
var handleCheckBoxFilter = function (filter, option) {
|
|
44372
|
+
var updated = filters.map(function (f) {
|
|
44373
|
+
var _a;
|
|
44374
|
+
if (f.property !== filter.property) return f;
|
|
44375
|
+
return __assign(__assign({}, f), {
|
|
44376
|
+
options:
|
|
44377
|
+
(_a = f.options) === null || _a === void 0
|
|
44378
|
+
? void 0
|
|
44379
|
+
: _a.map(function (opt) {
|
|
44380
|
+
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
44381
|
+
})
|
|
44382
|
+
});
|
|
44383
|
+
});
|
|
44384
|
+
setFilters(updated);
|
|
44385
|
+
};
|
|
44386
|
+
var handleSliderChange = function (filter, newMin, newMax) {
|
|
44387
|
+
var updated = filters.map(function (f) {
|
|
44388
|
+
if (f.property !== filter.property) return f;
|
|
44389
|
+
return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
|
|
44390
|
+
});
|
|
44391
|
+
setFilters(updated);
|
|
44392
|
+
};
|
|
44393
|
+
var handleFullReset = function () {
|
|
44394
|
+
if (!isLoading) {
|
|
44395
|
+
resetFilters(initialFilters);
|
|
44396
|
+
}
|
|
44397
|
+
};
|
|
44398
|
+
return React__default['default'].createElement(
|
|
44399
|
+
'div',
|
|
44400
|
+
{ className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
|
|
44401
|
+
React__default['default'].createElement('div', {
|
|
44402
|
+
className: 'search__filters--background',
|
|
44403
|
+
onClick: function () {
|
|
44404
|
+
return handleSetIsOpen();
|
|
44405
|
+
}
|
|
44406
|
+
}),
|
|
44407
|
+
React__default['default'].createElement(
|
|
44408
|
+
'button',
|
|
44409
|
+
{
|
|
44410
|
+
className: 'search__filters--close',
|
|
44411
|
+
onClick: function () {
|
|
44412
|
+
return handleSetIsOpen();
|
|
44413
|
+
}
|
|
44414
|
+
},
|
|
44415
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
44416
|
+
),
|
|
44417
|
+
React__default['default'].createElement(
|
|
44418
|
+
'div',
|
|
44419
|
+
{ className: 'search__filters' },
|
|
44420
|
+
React__default['default'].createElement(
|
|
44421
|
+
'div',
|
|
44422
|
+
{ className: 'search__filter-row search__filter__header' },
|
|
44423
|
+
React__default['default'].createElement(
|
|
44424
|
+
'div',
|
|
44425
|
+
{ className: 'search__filter-row-flex-title' },
|
|
44426
|
+
React__default['default'].createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
|
|
44427
|
+
),
|
|
44428
|
+
!isLoading &&
|
|
44429
|
+
React__default['default'].createElement(
|
|
44430
|
+
'a',
|
|
44431
|
+
{
|
|
44432
|
+
className: 'search__filter-reset',
|
|
44433
|
+
onClick: function () {
|
|
44434
|
+
return handleFullReset();
|
|
44435
|
+
}
|
|
44436
|
+
},
|
|
44437
|
+
translations.SRP.RESET
|
|
44438
|
+
)
|
|
43723
44439
|
),
|
|
44440
|
+
isLoading
|
|
44441
|
+
? React__default['default'].createElement(Spinner, null)
|
|
44442
|
+
: React__default['default'].createElement(
|
|
44443
|
+
React__default['default'].Fragment,
|
|
44444
|
+
null,
|
|
44445
|
+
React__default['default'].createElement(
|
|
44446
|
+
'div',
|
|
44447
|
+
{ className: 'search__filters__group-container' },
|
|
44448
|
+
filters.map(function (filter, index) {
|
|
44449
|
+
var _a, _b;
|
|
44450
|
+
var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
|
|
44451
|
+
return React__default['default'].createElement(
|
|
44452
|
+
'div',
|
|
44453
|
+
{ key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
|
|
44454
|
+
React__default['default'].createElement(
|
|
44455
|
+
'div',
|
|
44456
|
+
{
|
|
44457
|
+
className: 'search__filter-row search__filter-row--underline',
|
|
44458
|
+
onClick: function () {
|
|
44459
|
+
return toggleFilterVisibility(filter.property);
|
|
44460
|
+
},
|
|
44461
|
+
role: 'button',
|
|
44462
|
+
tabIndex: 0
|
|
44463
|
+
},
|
|
44464
|
+
React__default['default'].createElement('h6', { className: 'search__filter-large-title' }, filter.label),
|
|
44465
|
+
React__default['default'].createElement(
|
|
44466
|
+
'svg',
|
|
44467
|
+
{
|
|
44468
|
+
id: 'search-chevron-up-icon',
|
|
44469
|
+
className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
|
|
44470
|
+
viewBox: '0 0 10 6.063',
|
|
44471
|
+
width: 10,
|
|
44472
|
+
height: 6.063
|
|
44473
|
+
},
|
|
44474
|
+
React__default['default'].createElement('path', {
|
|
44475
|
+
id: 'Path_62',
|
|
44476
|
+
'data-name': 'Path 62',
|
|
44477
|
+
d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
|
|
44478
|
+
transform: 'translate(-240 624)',
|
|
44479
|
+
fill: '#707070'
|
|
44480
|
+
})
|
|
44481
|
+
)
|
|
44482
|
+
),
|
|
44483
|
+
isVisible &&
|
|
44484
|
+
filter.type === 'checkbox' &&
|
|
44485
|
+
React__default['default'].createElement(
|
|
44486
|
+
'div',
|
|
44487
|
+
{ className: 'search__filter-rows' },
|
|
44488
|
+
filter.options &&
|
|
44489
|
+
filter.options.map(function (option, optionIndex) {
|
|
44490
|
+
return React__default['default'].createElement(
|
|
44491
|
+
'div',
|
|
44492
|
+
{ className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
44493
|
+
React__default['default'].createElement(
|
|
44494
|
+
'div',
|
|
44495
|
+
{ className: 'checkbox' },
|
|
44496
|
+
React__default['default'].createElement(
|
|
44497
|
+
'label',
|
|
44498
|
+
{ className: 'checkbox__label' },
|
|
44499
|
+
React__default['default'].createElement('input', {
|
|
44500
|
+
type: 'checkbox',
|
|
44501
|
+
className: 'checkbox__input checkbox__input--parent',
|
|
44502
|
+
checked: option.isChecked,
|
|
44503
|
+
onChange: function (e) {
|
|
44504
|
+
return handleCheckBoxFilter(filter, option);
|
|
44505
|
+
}
|
|
44506
|
+
}),
|
|
44507
|
+
React__default['default'].createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
44508
|
+
)
|
|
44509
|
+
)
|
|
44510
|
+
);
|
|
44511
|
+
})
|
|
44512
|
+
),
|
|
44513
|
+
isVisible &&
|
|
44514
|
+
filter.type === 'toggle' &&
|
|
44515
|
+
React__default['default'].createElement(
|
|
44516
|
+
'div',
|
|
44517
|
+
{ className: 'search__filter-rows' },
|
|
44518
|
+
(_b = filter.options) === null || _b === void 0
|
|
44519
|
+
? void 0
|
|
44520
|
+
: _b.map(function (option, optionIndex) {
|
|
44521
|
+
return React__default['default'].createElement(
|
|
44522
|
+
'div',
|
|
44523
|
+
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
44524
|
+
React__default['default'].createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
44525
|
+
React__default['default'].createElement('div', { className: 'checkbox' }),
|
|
44526
|
+
React__default['default'].createElement(
|
|
44527
|
+
'label',
|
|
44528
|
+
{ className: 'checkbox__label' },
|
|
44529
|
+
React__default['default'].createElement('input', {
|
|
44530
|
+
type: 'checkbox',
|
|
44531
|
+
className: 'checkbox__input',
|
|
44532
|
+
checked: option.isChecked,
|
|
44533
|
+
onChange: function () {
|
|
44534
|
+
return handleCheckBoxFilter(filter, option);
|
|
44535
|
+
}
|
|
44536
|
+
})
|
|
44537
|
+
)
|
|
44538
|
+
);
|
|
44539
|
+
})
|
|
44540
|
+
),
|
|
44541
|
+
isVisible &&
|
|
44542
|
+
filter &&
|
|
44543
|
+
filter.type === 'slider' &&
|
|
44544
|
+
(function () {
|
|
44545
|
+
var _a, _b, _c, _d;
|
|
44546
|
+
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
44547
|
+
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
44548
|
+
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
44549
|
+
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
44550
|
+
return React__default['default'].createElement(MultiRangeFilter, {
|
|
44551
|
+
min: min,
|
|
44552
|
+
max: max,
|
|
44553
|
+
selectedMin: selectedMin,
|
|
44554
|
+
selectedMax: selectedMax,
|
|
44555
|
+
valueFormatter: function (value) {
|
|
44556
|
+
return ''.concat(value);
|
|
44557
|
+
},
|
|
44558
|
+
onChange: function (newMin, newMax) {
|
|
44559
|
+
handleSliderChange(filter, newMin, newMax);
|
|
44560
|
+
}
|
|
44561
|
+
});
|
|
44562
|
+
})()
|
|
44563
|
+
);
|
|
44564
|
+
})
|
|
44565
|
+
)
|
|
44566
|
+
)
|
|
44567
|
+
)
|
|
44568
|
+
);
|
|
44569
|
+
};
|
|
44570
|
+
|
|
44571
|
+
var PackageingFlightsFlyIn = function (_a) {
|
|
44572
|
+
var _b;
|
|
44573
|
+
_a.isOpen;
|
|
44574
|
+
_a.setIsOpen;
|
|
44575
|
+
var context = React.useContext(SearchResultsConfigurationContext);
|
|
44576
|
+
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44577
|
+
var translations = getTranslations(language);
|
|
44578
|
+
var dispatch = reactRedux.useDispatch();
|
|
44579
|
+
var _c = reactRedux.useSelector(function (state) {
|
|
44580
|
+
return state.searchResults;
|
|
44581
|
+
}),
|
|
44582
|
+
flightsLoading = _c.flightsLoading,
|
|
44583
|
+
initialFlightFilters = _c.initialFlightFilters,
|
|
44584
|
+
flightFilters = _c.flightFilters,
|
|
44585
|
+
flyInType = _c.flyInType,
|
|
44586
|
+
selectedFlightSortType = _c.selectedFlightSortType;
|
|
44587
|
+
var uniqueOutwardFlights = reactRedux.useSelector(selectUniqueOutwardFlights);
|
|
44588
|
+
var uniqueReturnFlights = reactRedux.useSelector(selectUniqueReturnFlights);
|
|
44589
|
+
var selectedOutward = reactRedux.useSelector(selectSelectedOutward);
|
|
44590
|
+
var selectedReturn = reactRedux.useSelector(selectSelectedReturn);
|
|
44591
|
+
var _d = React.useState(false),
|
|
44592
|
+
outwardStepComplete = _d[0],
|
|
44593
|
+
setOutwardStepComplete = _d[1];
|
|
44594
|
+
var handleConfirm = function () {
|
|
44595
|
+
if (!outwardStepComplete) {
|
|
44596
|
+
setOutwardStepComplete(true);
|
|
44597
|
+
dispatch(setFlyInType('flight-return-results'));
|
|
44598
|
+
return;
|
|
44599
|
+
} else {
|
|
44600
|
+
dispatch(setFlyInType(null));
|
|
44601
|
+
setOutwardStepComplete(false);
|
|
44602
|
+
dispatch(setFlyInIsOpen(false));
|
|
44603
|
+
}
|
|
44604
|
+
};
|
|
44605
|
+
var sortByTypes = [
|
|
44606
|
+
{ direction: 'asc', label: 'default' },
|
|
44607
|
+
{ direction: 'asc', label: 'price' },
|
|
44608
|
+
{ direction: 'desc', label: 'price' },
|
|
44609
|
+
{ direction: 'asc', label: 'departureTime' },
|
|
44610
|
+
{ direction: 'desc', label: 'departureTime' },
|
|
44611
|
+
{ direction: 'asc', label: 'durationInTicks' },
|
|
44612
|
+
{ direction: 'desc', label: 'durationInTicks' }
|
|
44613
|
+
];
|
|
44614
|
+
var handleSortChange = function (newSortKey, direction) {
|
|
44615
|
+
if (sortByTypes === undefined) return;
|
|
44616
|
+
var newSortByType = findSortByType(sortByTypes, newSortKey, direction !== null && direction !== void 0 ? direction : 'asc');
|
|
44617
|
+
if (newSortByType) {
|
|
44618
|
+
dispatch(setFlightSortType(newSortByType));
|
|
44619
|
+
}
|
|
44620
|
+
};
|
|
44621
|
+
return React__default['default'].createElement(
|
|
44622
|
+
React__default['default'].Fragment,
|
|
44623
|
+
null,
|
|
44624
|
+
React__default['default'].createElement(
|
|
44625
|
+
'div',
|
|
44626
|
+
{ className: 'flyin__content flyin__content--columns' },
|
|
44627
|
+
flightsLoading
|
|
44628
|
+
? React__default['default'].createElement(Spinner, null)
|
|
44629
|
+
: React__default['default'].createElement(
|
|
44630
|
+
React__default['default'].Fragment,
|
|
44631
|
+
null,
|
|
44632
|
+
React__default['default'].createElement(Filters, {
|
|
44633
|
+
initialFilters: initialFlightFilters,
|
|
44634
|
+
filters: flightFilters,
|
|
44635
|
+
isOpen: false,
|
|
44636
|
+
handleSetIsOpen: function () {},
|
|
44637
|
+
// handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
|
|
44638
|
+
isLoading: flightsLoading,
|
|
44639
|
+
setFilters: function (filters) {
|
|
44640
|
+
return dispatch(setFlightFilters(filters));
|
|
44641
|
+
},
|
|
44642
|
+
resetFilters: function (filters) {
|
|
44643
|
+
return dispatch(resetFlightFilters(filters));
|
|
44644
|
+
}
|
|
44645
|
+
}),
|
|
44646
|
+
React__default['default'].createElement(
|
|
44647
|
+
'div',
|
|
44648
|
+
{ className: 'search__results__wrapper' },
|
|
44649
|
+
React__default['default'].createElement(
|
|
44650
|
+
'div',
|
|
44651
|
+
{ className: 'search__result-row' },
|
|
44652
|
+
React__default['default'].createElement(
|
|
44653
|
+
'span',
|
|
44654
|
+
{ className: 'search__result-row-text' },
|
|
44655
|
+
(uniqueOutwardFlights === null || uniqueOutwardFlights === void 0 ? void 0 : uniqueOutwardFlights.length) && uniqueOutwardFlights.length,
|
|
44656
|
+
'\u00A0',
|
|
44657
|
+
translations.FLIGHTS_FORM.FLIGHTS_FOUND_2,
|
|
44658
|
+
'\u00A0',
|
|
44659
|
+
translations.FLIGHTS_FORM.FLIGHTS_FOUND_3
|
|
44660
|
+
),
|
|
44661
|
+
sortByTypes &&
|
|
44662
|
+
sortByTypes.length > 0 &&
|
|
44663
|
+
React__default['default'].createElement(
|
|
44664
|
+
'div',
|
|
44665
|
+
{ className: 'search__result-row-filter' },
|
|
44666
|
+
React__default['default'].createElement(ItemPicker, {
|
|
44667
|
+
items: sortByTypes,
|
|
44668
|
+
selection: (selectedFlightSortType === null || selectedFlightSortType === void 0 ? void 0 : selectedFlightSortType.label) || undefined,
|
|
44669
|
+
selectedSortByType: selectedFlightSortType || undefined,
|
|
44670
|
+
label: translations.SRP.SORTBY,
|
|
44671
|
+
placeholder: translations.SRP.SORTBY,
|
|
44672
|
+
classModifier: '',
|
|
44673
|
+
valueFormatter: function (value, direction) {
|
|
44674
|
+
return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
|
|
44675
|
+
},
|
|
44676
|
+
// onPick={handleSortChange}
|
|
44677
|
+
onPick: function (newSortKey, direction) {
|
|
44678
|
+
return handleSortChange(newSortKey, direction);
|
|
44679
|
+
}
|
|
44680
|
+
})
|
|
44681
|
+
)
|
|
44682
|
+
),
|
|
44683
|
+
React__default['default'].createElement(
|
|
44684
|
+
'div',
|
|
44685
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
44686
|
+
flyInType == 'flight-outward-results' &&
|
|
44687
|
+
uniqueOutwardFlights.map(function (result) {
|
|
44688
|
+
return React__default['default'].createElement(IndependentFlightOption, {
|
|
44689
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
44690
|
+
item: result.outward,
|
|
44691
|
+
onSelect: function () {
|
|
44692
|
+
return dispatch(setSelectedOutwardKey(getFlightKey(result.outward.segments)));
|
|
44693
|
+
},
|
|
44694
|
+
guid: result.outwardGuid,
|
|
44695
|
+
isOutward: true,
|
|
44696
|
+
price: result.price,
|
|
44697
|
+
currentSelectedPrice: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.price,
|
|
44698
|
+
selectedGuid: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.outwardGuid,
|
|
44699
|
+
showSelectedState: true
|
|
44700
|
+
});
|
|
44701
|
+
}),
|
|
44702
|
+
flyInType == 'flight-return-results' &&
|
|
44703
|
+
uniqueReturnFlights.map(function (result) {
|
|
44704
|
+
return React__default['default'].createElement(IndependentFlightOption, {
|
|
44705
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
44706
|
+
item: result.return,
|
|
44707
|
+
onSelect: function () {
|
|
44708
|
+
return dispatch(setSelectedReturnKey(getFlightKey(result.return.segments)));
|
|
44709
|
+
},
|
|
44710
|
+
guid: result.outwardGuid,
|
|
44711
|
+
isOutward: false,
|
|
44712
|
+
price: result.price,
|
|
44713
|
+
currentSelectedPrice: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.price,
|
|
44714
|
+
selectedGuid: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.outwardGuid,
|
|
44715
|
+
showSelectedState: true
|
|
44716
|
+
});
|
|
44717
|
+
})
|
|
44718
|
+
)
|
|
44719
|
+
)
|
|
44720
|
+
)
|
|
44721
|
+
),
|
|
44722
|
+
React__default['default'].createElement(
|
|
44723
|
+
'div',
|
|
44724
|
+
{ className: 'flyin__footer' },
|
|
44725
|
+
React__default['default'].createElement('div', { className: 'flyin__footer__price' }),
|
|
43724
44726
|
React__default['default'].createElement(
|
|
43725
44727
|
'div',
|
|
43726
|
-
{ className: '
|
|
44728
|
+
{ className: 'flyin__button-wrapper' },
|
|
43727
44729
|
React__default['default'].createElement(
|
|
43728
|
-
'
|
|
43729
|
-
|
|
43730
|
-
|
|
43731
|
-
|
|
43732
|
-
|
|
44730
|
+
'button',
|
|
44731
|
+
{
|
|
44732
|
+
className: 'cta cta--select',
|
|
44733
|
+
onClick: function () {
|
|
44734
|
+
return handleConfirm();
|
|
44735
|
+
}
|
|
44736
|
+
},
|
|
44737
|
+
translations.QSM.CONFIRM
|
|
43733
44738
|
)
|
|
43734
44739
|
)
|
|
43735
|
-
)
|
|
43736
|
-
renderHotelResults(mappedResults, context, activeTab, translations)
|
|
44740
|
+
)
|
|
43737
44741
|
);
|
|
43738
44742
|
};
|
|
43739
44743
|
|
|
43740
44744
|
var FlyIn = function (_a) {
|
|
43741
|
-
var
|
|
43742
|
-
|
|
44745
|
+
var _b;
|
|
44746
|
+
var srpType = _a.srpType,
|
|
43743
44747
|
isOpen = _a.isOpen,
|
|
43744
44748
|
setIsOpen = _a.setIsOpen,
|
|
43745
|
-
|
|
43746
|
-
className =
|
|
44749
|
+
_c = _a.className,
|
|
44750
|
+
className = _c === void 0 ? '' : _c,
|
|
43747
44751
|
onPanelRef = _a.onPanelRef,
|
|
43748
44752
|
detailsLoading = _a.detailsLoading,
|
|
43749
|
-
|
|
44753
|
+
flyInType = _a.flyInType,
|
|
43750
44754
|
isPackageEditFlow = _a.isPackageEditFlow,
|
|
43751
|
-
handleConfirm = _a.handleConfirm
|
|
44755
|
+
handleConfirm = _a.handleConfirm,
|
|
44756
|
+
sortByTypes = _a.sortByTypes;
|
|
43752
44757
|
var dispatch = reactRedux.useDispatch();
|
|
44758
|
+
var context = React.useContext(SearchResultsConfigurationContext);
|
|
44759
|
+
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44760
|
+
var translations = getTranslations(language);
|
|
44761
|
+
var _d = reactRedux.useSelector(function (state) {
|
|
44762
|
+
return state.searchResults;
|
|
44763
|
+
}),
|
|
44764
|
+
isLoading = _d.isLoading,
|
|
44765
|
+
initialFilters = _d.initialFilters,
|
|
44766
|
+
filters = _d.filters,
|
|
44767
|
+
filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
|
|
44768
|
+
selectedSortType = _d.selectedSortType;
|
|
43753
44769
|
var onCancelSearch = useFlightSearch().onCancelSearch;
|
|
43754
44770
|
var panelRef = React.useRef(null);
|
|
43755
44771
|
// expose DOM node if needed
|
|
@@ -43797,12 +44813,19 @@ var FlyIn = function (_a) {
|
|
|
43797
44813
|
dispatch(setSelectedSearchResult(null));
|
|
43798
44814
|
dispatch(setSelectedPackagingAccoResult(null));
|
|
43799
44815
|
}
|
|
43800
|
-
dispatch(
|
|
44816
|
+
dispatch(setFlyInType('acco-details'));
|
|
43801
44817
|
setIsOpen(false);
|
|
43802
44818
|
}
|
|
43803
44819
|
};
|
|
43804
44820
|
var handleGoBack = function () {
|
|
43805
|
-
dispatch(
|
|
44821
|
+
dispatch(setFlyInType('acco-results'));
|
|
44822
|
+
};
|
|
44823
|
+
var handleSortChange = function (newSortKey, direction) {
|
|
44824
|
+
if (sortByTypes === undefined) return;
|
|
44825
|
+
var newSortByType = findSortByType(sortByTypes, newSortKey, direction !== null && direction !== void 0 ? direction : 'asc');
|
|
44826
|
+
if (newSortByType) {
|
|
44827
|
+
dispatch(setSortType(newSortByType));
|
|
44828
|
+
}
|
|
43806
44829
|
};
|
|
43807
44830
|
return React__default['default'].createElement(
|
|
43808
44831
|
'div',
|
|
@@ -43810,7 +44833,11 @@ var FlyIn = function (_a) {
|
|
|
43810
44833
|
className: 'flyin '
|
|
43811
44834
|
.concat(isOpen ? 'flyin--active' : '', ' ')
|
|
43812
44835
|
.concat(className, ' ')
|
|
43813
|
-
.concat(
|
|
44836
|
+
.concat(
|
|
44837
|
+
isPackageEditFlow || flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' || flyInType === 'acco-results'
|
|
44838
|
+
? 'flyin--large'
|
|
44839
|
+
: ''
|
|
44840
|
+
)
|
|
43814
44841
|
},
|
|
43815
44842
|
React__default['default'].createElement(
|
|
43816
44843
|
'div',
|
|
@@ -43821,7 +44848,22 @@ var FlyIn = function (_a) {
|
|
|
43821
44848
|
React__default['default'].createElement(
|
|
43822
44849
|
'div',
|
|
43823
44850
|
{ className: 'flyin__content-title-row' },
|
|
43824
|
-
React__default['default'].createElement(
|
|
44851
|
+
React__default['default'].createElement(
|
|
44852
|
+
'h3',
|
|
44853
|
+
{ className: 'flyin__content-title' },
|
|
44854
|
+
srpType === build.PortalQsmType.Flight && 'Select your fare',
|
|
44855
|
+
srpType === build.PortalQsmType.Accommodation ||
|
|
44856
|
+
(srpType === build.PortalQsmType.AccommodationAndFlight &&
|
|
44857
|
+
(flyInType === 'acco-results' || flyInType === 'acco-details') &&
|
|
44858
|
+
''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION)),
|
|
44859
|
+
srpType === build.PortalQsmType.AccommodationAndFlight &&
|
|
44860
|
+
flyInType === 'flight-outward-results' &&
|
|
44861
|
+
''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.OUTWARD_FLIGHT),
|
|
44862
|
+
srpType === build.PortalQsmType.AccommodationAndFlight &&
|
|
44863
|
+
flyInType === 'flight-return-results' &&
|
|
44864
|
+
''.concat(translations.SRP.SELECT, ' ').concat(translations.FLIGHTS_FORM.RETURN_FLIGHT),
|
|
44865
|
+
srpType === build.PortalQsmType.AccommodationAndFlight && flyInType === 'flight-details' && 'Select your fare'
|
|
44866
|
+
),
|
|
43825
44867
|
React__default['default'].createElement(
|
|
43826
44868
|
'span',
|
|
43827
44869
|
{
|
|
@@ -43834,7 +44876,7 @@ var FlyIn = function (_a) {
|
|
|
43834
44876
|
)
|
|
43835
44877
|
),
|
|
43836
44878
|
isPackageEditFlow &&
|
|
43837
|
-
|
|
44879
|
+
flyInType === 'acco-details' &&
|
|
43838
44880
|
React__default['default'].createElement(
|
|
43839
44881
|
'div',
|
|
43840
44882
|
{ className: 'flyin__content-title-row' },
|
|
@@ -43848,15 +44890,73 @@ var FlyIn = function (_a) {
|
|
|
43848
44890
|
),
|
|
43849
44891
|
srpType === build.PortalQsmType.Flight && React__default['default'].createElement(FlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
|
|
43850
44892
|
(srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.AccommodationAndFlight) &&
|
|
43851
|
-
|
|
44893
|
+
flyInType === 'acco-results' &&
|
|
43852
44894
|
React__default['default'].createElement(
|
|
43853
44895
|
'div',
|
|
43854
|
-
{ className: 'flyin__content' },
|
|
43855
|
-
React__default['default'].createElement(
|
|
44896
|
+
{ className: 'flyin__content flyin__content--columns' },
|
|
44897
|
+
React__default['default'].createElement(Filters, {
|
|
44898
|
+
initialFilters: initialFilters,
|
|
44899
|
+
filters: filters,
|
|
44900
|
+
isOpen: false,
|
|
44901
|
+
handleSetIsOpen: function () {},
|
|
44902
|
+
// handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
|
|
44903
|
+
isLoading: isLoading,
|
|
44904
|
+
setFilters: function (filters) {
|
|
44905
|
+
return dispatch(setFilters(filters));
|
|
44906
|
+
},
|
|
44907
|
+
resetFilters: function (filters) {
|
|
44908
|
+
return dispatch(resetFilters(filters));
|
|
44909
|
+
}
|
|
44910
|
+
}),
|
|
44911
|
+
React__default['default'].createElement(
|
|
44912
|
+
'div',
|
|
44913
|
+
{ className: 'search__results__wrapper' },
|
|
44914
|
+
React__default['default'].createElement(
|
|
44915
|
+
'div',
|
|
44916
|
+
{ className: 'search__result-row' },
|
|
44917
|
+
React__default['default'].createElement(
|
|
44918
|
+
'span',
|
|
44919
|
+
{ className: 'search__result-row-text' },
|
|
44920
|
+
!isLoading &&
|
|
44921
|
+
React__default['default'].createElement(
|
|
44922
|
+
React__default['default'].Fragment,
|
|
44923
|
+
null,
|
|
44924
|
+
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
|
|
44925
|
+
filteredPackagingAccoResults.length,
|
|
44926
|
+
'\u00A0',
|
|
44927
|
+
translations.SRP.TOTAL_RESULTS_LABEL
|
|
44928
|
+
)
|
|
44929
|
+
),
|
|
44930
|
+
sortByTypes &&
|
|
44931
|
+
sortByTypes.length > 0 &&
|
|
44932
|
+
React__default['default'].createElement(
|
|
44933
|
+
'div',
|
|
44934
|
+
{ className: 'search__result-row-filter' },
|
|
44935
|
+
React__default['default'].createElement(ItemPicker, {
|
|
44936
|
+
items: sortByTypes,
|
|
44937
|
+
selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
|
|
44938
|
+
selectedSortByType: selectedSortType,
|
|
44939
|
+
label: translations.SRP.SORTBY,
|
|
44940
|
+
placeholder: translations.SRP.SORTBY,
|
|
44941
|
+
classModifier: 'travel-class-picker__items',
|
|
44942
|
+
valueFormatter: function (value, direction) {
|
|
44943
|
+
return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
|
|
44944
|
+
},
|
|
44945
|
+
onPick: function (newSortKey, direction) {
|
|
44946
|
+
return handleSortChange(newSortKey, direction);
|
|
44947
|
+
}
|
|
44948
|
+
})
|
|
44949
|
+
)
|
|
44950
|
+
),
|
|
44951
|
+
React__default['default'].createElement(HotelAccommodationResults, { isLoading: detailsLoading, isFlyIn: true })
|
|
44952
|
+
)
|
|
43856
44953
|
),
|
|
43857
44954
|
(srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.AccommodationAndFlight) &&
|
|
43858
|
-
|
|
44955
|
+
flyInType === 'acco-details' &&
|
|
43859
44956
|
React__default['default'].createElement(AccommodationFlyIn, { isLoading: detailsLoading, handleConfirm: handleConfirm }),
|
|
44957
|
+
srpType === build.PortalQsmType.AccommodationAndFlight &&
|
|
44958
|
+
(flyInType === 'flight-outward-results' || flyInType === 'flight-return-results') &&
|
|
44959
|
+
React__default['default'].createElement(PackageingFlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
|
|
43860
44960
|
srpType === build.PortalQsmType.GroupTour &&
|
|
43861
44961
|
React__default['default'].createElement(GroupTourFlyIn, { isLoading: detailsLoading, isOpen: isOpen, setIsOpen: setIsOpen })
|
|
43862
44962
|
)
|
|
@@ -44628,239 +45728,6 @@ var PairedFlightSelection = function (_a) {
|
|
|
44628
45728
|
);
|
|
44629
45729
|
};
|
|
44630
45730
|
|
|
44631
|
-
var IndependentFlightOption = function (_a) {
|
|
44632
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
44633
|
-
var item = _a.item,
|
|
44634
|
-
onSelect = _a.onSelect,
|
|
44635
|
-
guid = _a.guid,
|
|
44636
|
-
selectedGuid = _a.selectedGuid;
|
|
44637
|
-
_a.isOutward;
|
|
44638
|
-
var context = React.useContext(SearchResultsConfigurationContext);
|
|
44639
|
-
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44640
|
-
var translations = getTranslations(language);
|
|
44641
|
-
var _m = React.useState(false),
|
|
44642
|
-
detailsOpen = _m[0],
|
|
44643
|
-
setDetailsOpen = _m[1];
|
|
44644
|
-
return React__default['default'].createElement(
|
|
44645
|
-
'div',
|
|
44646
|
-
{ className: 'search__result-card', key: 'flight-'.concat(item.code) },
|
|
44647
|
-
React__default['default'].createElement(
|
|
44648
|
-
'div',
|
|
44649
|
-
{ className: 'flight' },
|
|
44650
|
-
React__default['default'].createElement(
|
|
44651
|
-
'div',
|
|
44652
|
-
{ className: 'flight__option' },
|
|
44653
|
-
React__default['default'].createElement(
|
|
44654
|
-
'div',
|
|
44655
|
-
{ className: 'flight__content' },
|
|
44656
|
-
React__default['default'].createElement(
|
|
44657
|
-
'div',
|
|
44658
|
-
{ className: 'flight__flights' },
|
|
44659
|
-
React__default['default'].createElement(
|
|
44660
|
-
'div',
|
|
44661
|
-
{ className: 'flight__flight' },
|
|
44662
|
-
React__default['default'].createElement(
|
|
44663
|
-
'div',
|
|
44664
|
-
{ className: 'flight__flight__header' },
|
|
44665
|
-
React__default['default'].createElement('div', { className: 'flight__status__container' }),
|
|
44666
|
-
React__default['default'].createElement(
|
|
44667
|
-
'div',
|
|
44668
|
-
{ className: 'flight__price' },
|
|
44669
|
-
React__default['default'].createElement(
|
|
44670
|
-
'button',
|
|
44671
|
-
{
|
|
44672
|
-
type: 'button',
|
|
44673
|
-
className: 'cta '.concat(selectedGuid === guid ? 'cta--selected' : 'cta--select'),
|
|
44674
|
-
onClick: function () {
|
|
44675
|
-
return onSelect === null || onSelect === void 0 ? void 0 : onSelect();
|
|
44676
|
-
}
|
|
44677
|
-
},
|
|
44678
|
-
selectedGuid === guid ? 'Selected' : 'Select'
|
|
44679
|
-
)
|
|
44680
|
-
)
|
|
44681
|
-
)
|
|
44682
|
-
),
|
|
44683
|
-
React__default['default'].createElement(
|
|
44684
|
-
'div',
|
|
44685
|
-
{ className: 'flight__flight' },
|
|
44686
|
-
React__default['default'].createElement(
|
|
44687
|
-
'div',
|
|
44688
|
-
{ className: 'flight__flight__container' },
|
|
44689
|
-
React__default['default'].createElement(
|
|
44690
|
-
'div',
|
|
44691
|
-
{ className: 'flight__flight__wrapper' },
|
|
44692
|
-
React__default['default'].createElement(
|
|
44693
|
-
'div',
|
|
44694
|
-
{ className: 'flight__logo__wrapper' },
|
|
44695
|
-
React__default['default'].createElement('img', {
|
|
44696
|
-
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
|
|
44697
|
-
(_c = getDepartureSegment(item)) === null || _c === void 0 ? void 0 : _c.marketingAirlineCode,
|
|
44698
|
-
'.png?height=256'
|
|
44699
|
-
),
|
|
44700
|
-
alt: '',
|
|
44701
|
-
className: 'flight__logo'
|
|
44702
|
-
}),
|
|
44703
|
-
React__default['default'].createElement(
|
|
44704
|
-
'span',
|
|
44705
|
-
null,
|
|
44706
|
-
(_d = getDepartureSegment(item)) === null || _d === void 0 ? void 0 : _d.marketingAirlineName
|
|
44707
|
-
)
|
|
44708
|
-
),
|
|
44709
|
-
React__default['default'].createElement(
|
|
44710
|
-
'div',
|
|
44711
|
-
{ className: 'flight__info' },
|
|
44712
|
-
React__default['default'].createElement(
|
|
44713
|
-
'div',
|
|
44714
|
-
{ className: 'flight__info__times' },
|
|
44715
|
-
React__default['default'].createElement(
|
|
44716
|
-
'strong',
|
|
44717
|
-
null,
|
|
44718
|
-
timeFromDateTime((_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.departureDateTime),
|
|
44719
|
-
' ',
|
|
44720
|
-
(_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.departureAirportCode
|
|
44721
|
-
),
|
|
44722
|
-
React__default['default'].createElement(
|
|
44723
|
-
'p',
|
|
44724
|
-
null,
|
|
44725
|
-
longFormatDate((_g = getDepartureSegment(item)) === null || _g === void 0 ? void 0 : _g.departureDateTime, language)
|
|
44726
|
-
)
|
|
44727
|
-
),
|
|
44728
|
-
React__default['default'].createElement(
|
|
44729
|
-
'div',
|
|
44730
|
-
{ className: 'flight__info__duration' },
|
|
44731
|
-
React__default['default'].createElement('p', null, durationTicksInHoursString(item.durationInTicks)),
|
|
44732
|
-
React__default['default'].createElement(
|
|
44733
|
-
'div',
|
|
44734
|
-
{ className: 'flight__info__duration__stops' },
|
|
44735
|
-
React__default['default'].createElement('div', { className: 'flight__info__duration__stop' })
|
|
44736
|
-
),
|
|
44737
|
-
React__default['default'].createElement(
|
|
44738
|
-
'span',
|
|
44739
|
-
null,
|
|
44740
|
-
getNumberOfStopsLabel(item, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
|
|
44741
|
-
)
|
|
44742
|
-
),
|
|
44743
|
-
React__default['default'].createElement(
|
|
44744
|
-
'div',
|
|
44745
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44746
|
-
React__default['default'].createElement(
|
|
44747
|
-
'strong',
|
|
44748
|
-
null,
|
|
44749
|
-
timeFromDateTime((_h = getArrivalSegment(item)) === null || _h === void 0 ? void 0 : _h.arrivalDateTime),
|
|
44750
|
-
' ',
|
|
44751
|
-
(_j = getArrivalSegment(item)) === null || _j === void 0 ? void 0 : _j.arrivalAirportCode
|
|
44752
|
-
),
|
|
44753
|
-
React__default['default'].createElement(
|
|
44754
|
-
'p',
|
|
44755
|
-
null,
|
|
44756
|
-
longFormatDate((_k = getArrivalSegment(item)) === null || _k === void 0 ? void 0 : _k.arrivalDateTime, language)
|
|
44757
|
-
)
|
|
44758
|
-
)
|
|
44759
|
-
)
|
|
44760
|
-
),
|
|
44761
|
-
React__default['default'].createElement(
|
|
44762
|
-
'div',
|
|
44763
|
-
{ className: 'flight__detail__btn__wrapper' },
|
|
44764
|
-
React__default['default'].createElement(
|
|
44765
|
-
'div',
|
|
44766
|
-
{
|
|
44767
|
-
className: 'flight__detail__btn '.concat(detailsOpen ? 'flight__detail__btn--active' : ''),
|
|
44768
|
-
onClick: function () {
|
|
44769
|
-
return setDetailsOpen(function (prev) {
|
|
44770
|
-
return !prev;
|
|
44771
|
-
});
|
|
44772
|
-
}
|
|
44773
|
-
},
|
|
44774
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
|
|
44775
|
-
)
|
|
44776
|
-
)
|
|
44777
|
-
),
|
|
44778
|
-
React__default['default'].createElement(
|
|
44779
|
-
'div',
|
|
44780
|
-
{ className: 'flight__detail '.concat(detailsOpen ? 'flight__detail--active' : '') },
|
|
44781
|
-
(_l = getFlightSegments(item)) === null || _l === void 0
|
|
44782
|
-
? void 0
|
|
44783
|
-
: _l.map(function (segment, index) {
|
|
44784
|
-
return React__default['default'].createElement(
|
|
44785
|
-
React__default['default'].Fragment,
|
|
44786
|
-
{ key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
|
|
44787
|
-
React__default['default'].createElement(
|
|
44788
|
-
'div',
|
|
44789
|
-
{ className: 'flight__info' },
|
|
44790
|
-
React__default['default'].createElement(
|
|
44791
|
-
'div',
|
|
44792
|
-
{ className: 'flight__info__times__wrapper' },
|
|
44793
|
-
React__default['default'].createElement(
|
|
44794
|
-
'div',
|
|
44795
|
-
{ className: 'flight__info__times' },
|
|
44796
|
-
React__default['default'].createElement('p', null, timeFromDateTime(segment.departureDateTime)),
|
|
44797
|
-
React__default['default'].createElement('strong', null, segment.departureAirportCode),
|
|
44798
|
-
React__default['default'].createElement('p', null, longFormatDate(segment.departureDateTime, language))
|
|
44799
|
-
),
|
|
44800
|
-
React__default['default'].createElement(
|
|
44801
|
-
'div',
|
|
44802
|
-
null,
|
|
44803
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 })
|
|
44804
|
-
)
|
|
44805
|
-
),
|
|
44806
|
-
React__default['default'].createElement(
|
|
44807
|
-
'div',
|
|
44808
|
-
{ className: 'flight__info__duration' },
|
|
44809
|
-
React__default['default'].createElement('p', null, durationTicksInHoursString(segment.durationInTicks)),
|
|
44810
|
-
React__default['default'].createElement('div', { className: 'flight__info__duration__stops' }),
|
|
44811
|
-
React__default['default'].createElement('span', null, segment.marketingAirlineName),
|
|
44812
|
-
React__default['default'].createElement('strong', null, segment.operatingFlightNumber)
|
|
44813
|
-
),
|
|
44814
|
-
React__default['default'].createElement(
|
|
44815
|
-
'div',
|
|
44816
|
-
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
44817
|
-
React__default['default'].createElement(
|
|
44818
|
-
'div',
|
|
44819
|
-
null,
|
|
44820
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })
|
|
44821
|
-
),
|
|
44822
|
-
React__default['default'].createElement(
|
|
44823
|
-
'div',
|
|
44824
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44825
|
-
React__default['default'].createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
44826
|
-
React__default['default'].createElement('strong', null, segment.arrivalAirportCode),
|
|
44827
|
-
React__default['default'].createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
44828
|
-
)
|
|
44829
|
-
)
|
|
44830
|
-
),
|
|
44831
|
-
segment.transferTimeInTicks &&
|
|
44832
|
-
React__default['default'].createElement(
|
|
44833
|
-
'div',
|
|
44834
|
-
{ className: 'flight__info' },
|
|
44835
|
-
React__default['default'].createElement('div', { className: 'flight__info__times' }),
|
|
44836
|
-
React__default['default'].createElement(
|
|
44837
|
-
'div',
|
|
44838
|
-
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44839
|
-
React__default['default'].createElement(
|
|
44840
|
-
'div',
|
|
44841
|
-
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44842
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44843
|
-
),
|
|
44844
|
-
React__default['default'].createElement(
|
|
44845
|
-
'div',
|
|
44846
|
-
{ className: 'flight__info__duration__stoptime' },
|
|
44847
|
-
React__default['default'].createElement('span', null, 'Stop time'),
|
|
44848
|
-
React__default['default'].createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
44849
|
-
)
|
|
44850
|
-
),
|
|
44851
|
-
React__default['default'].createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
44852
|
-
)
|
|
44853
|
-
);
|
|
44854
|
-
})
|
|
44855
|
-
)
|
|
44856
|
-
)
|
|
44857
|
-
)
|
|
44858
|
-
)
|
|
44859
|
-
)
|
|
44860
|
-
)
|
|
44861
|
-
);
|
|
44862
|
-
};
|
|
44863
|
-
|
|
44864
45731
|
var IndependentFlightSelection = function (_a) {
|
|
44865
45732
|
var _b;
|
|
44866
45733
|
var searchResults = _a.searchResults;
|
|
@@ -45056,116 +45923,6 @@ var FlightSelection = function (_a) {
|
|
|
45056
45923
|
: React__default['default'].createElement(IndependentFlightSelection, { searchResults: searchResults });
|
|
45057
45924
|
};
|
|
45058
45925
|
|
|
45059
|
-
var MultiRangeFilter = function (_a) {
|
|
45060
|
-
var min = _a.min,
|
|
45061
|
-
max = _a.max,
|
|
45062
|
-
selectedMin = _a.selectedMin,
|
|
45063
|
-
selectedMax = _a.selectedMax,
|
|
45064
|
-
valueFormatter = _a.valueFormatter,
|
|
45065
|
-
onChange = _a.onChange;
|
|
45066
|
-
var _b = React.useState(false),
|
|
45067
|
-
isDragging = _b[0],
|
|
45068
|
-
setIsDragging = _b[1];
|
|
45069
|
-
var _c = React.useState(0),
|
|
45070
|
-
leftPercentage = _c[0],
|
|
45071
|
-
setLeftPercentage = _c[1];
|
|
45072
|
-
var _d = React.useState(0),
|
|
45073
|
-
rightPercentage = _d[0],
|
|
45074
|
-
setRightPercentage = _d[1];
|
|
45075
|
-
var _e = React.useState(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min),
|
|
45076
|
-
minVal = _e[0],
|
|
45077
|
-
setMinVal = _e[1];
|
|
45078
|
-
var _f = React.useState(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max),
|
|
45079
|
-
maxVal = _f[0],
|
|
45080
|
-
setMaxVal = _f[1];
|
|
45081
|
-
var minGap = 5;
|
|
45082
|
-
// Sync internal state with external selectedMin/selectedMax changes
|
|
45083
|
-
React.useEffect(
|
|
45084
|
-
function () {
|
|
45085
|
-
setMinVal(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min);
|
|
45086
|
-
setMaxVal(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max);
|
|
45087
|
-
},
|
|
45088
|
-
[min, max, selectedMin, selectedMax]
|
|
45089
|
-
);
|
|
45090
|
-
// Recalculate slider track whenever values change
|
|
45091
|
-
React.useEffect(
|
|
45092
|
-
function () {
|
|
45093
|
-
var range = max - min || 1;
|
|
45094
|
-
var minPercent = ((minVal - min) / range) * 100;
|
|
45095
|
-
var maxPercent = ((maxVal - min) / range) * 100;
|
|
45096
|
-
setLeftPercentage(minPercent);
|
|
45097
|
-
setRightPercentage(100 - maxPercent);
|
|
45098
|
-
},
|
|
45099
|
-
[minVal, maxVal, min, max]
|
|
45100
|
-
);
|
|
45101
|
-
var slideMin = function (e) {
|
|
45102
|
-
var value = parseInt(e.target.value, 10);
|
|
45103
|
-
// Ensure the thumbs don’t cross and enforce minGap
|
|
45104
|
-
if (value <= maxVal - minGap) {
|
|
45105
|
-
setMinVal(value);
|
|
45106
|
-
}
|
|
45107
|
-
};
|
|
45108
|
-
var slideMax = function (e) {
|
|
45109
|
-
var value = parseInt(e.target.value, 10);
|
|
45110
|
-
// Ensure the thumbs don’t cross and enforce minGap
|
|
45111
|
-
if (value >= minVal + minGap) {
|
|
45112
|
-
setMaxVal(value);
|
|
45113
|
-
}
|
|
45114
|
-
};
|
|
45115
|
-
var startDrag = function () {
|
|
45116
|
-
setIsDragging(true);
|
|
45117
|
-
};
|
|
45118
|
-
var stopDrag = function () {
|
|
45119
|
-
setIsDragging(false);
|
|
45120
|
-
// Notify parent with the final values
|
|
45121
|
-
onChange(minVal, maxVal);
|
|
45122
|
-
};
|
|
45123
|
-
return React__default['default'].createElement(
|
|
45124
|
-
'div',
|
|
45125
|
-
{ className: 'double-slider-box' },
|
|
45126
|
-
React__default['default'].createElement(
|
|
45127
|
-
'div',
|
|
45128
|
-
{ className: 'input-box' },
|
|
45129
|
-
React__default['default'].createElement('div', { className: 'min-box' }, valueFormatter(minVal)),
|
|
45130
|
-
React__default['default'].createElement('div', { className: 'max-box' }, valueFormatter(maxVal))
|
|
45131
|
-
),
|
|
45132
|
-
React__default['default'].createElement(
|
|
45133
|
-
'div',
|
|
45134
|
-
{ className: 'range-slider' },
|
|
45135
|
-
React__default['default'].createElement('div', {
|
|
45136
|
-
className: 'slider-track',
|
|
45137
|
-
style: { left: ''.concat(leftPercentage, '%'), right: ''.concat(rightPercentage, '%') }
|
|
45138
|
-
}),
|
|
45139
|
-
React__default['default'].createElement('input', {
|
|
45140
|
-
type: 'range',
|
|
45141
|
-
min: min,
|
|
45142
|
-
max: max,
|
|
45143
|
-
value: minVal,
|
|
45144
|
-
onChange: slideMin,
|
|
45145
|
-
onMouseDown: startDrag,
|
|
45146
|
-
onMouseUp: stopDrag,
|
|
45147
|
-
onTouchStart: startDrag,
|
|
45148
|
-
onTouchEnd: stopDrag,
|
|
45149
|
-
className: 'min-val'
|
|
45150
|
-
}),
|
|
45151
|
-
React__default['default'].createElement('input', {
|
|
45152
|
-
type: 'range',
|
|
45153
|
-
min: min,
|
|
45154
|
-
max: max,
|
|
45155
|
-
value: maxVal,
|
|
45156
|
-
onChange: slideMax,
|
|
45157
|
-
onMouseDown: startDrag,
|
|
45158
|
-
onMouseUp: stopDrag,
|
|
45159
|
-
onTouchStart: startDrag,
|
|
45160
|
-
onTouchEnd: stopDrag,
|
|
45161
|
-
className: 'max-val'
|
|
45162
|
-
}),
|
|
45163
|
-
isDragging && React__default['default'].createElement('div', { className: 'min-tooltip' }, valueFormatter(minVal)),
|
|
45164
|
-
isDragging && React__default['default'].createElement('div', { className: 'max-tooltip' }, valueFormatter(maxVal))
|
|
45165
|
-
)
|
|
45166
|
-
);
|
|
45167
|
-
};
|
|
45168
|
-
|
|
45169
45926
|
var FlightFilters = function (_a) {
|
|
45170
45927
|
var _b;
|
|
45171
45928
|
var isOpen = _a.isOpen,
|
|
@@ -46254,228 +47011,6 @@ var FlightResultsContainer = function (_a) {
|
|
|
46254
47011
|
);
|
|
46255
47012
|
};
|
|
46256
47013
|
|
|
46257
|
-
var Filters = function (_a) {
|
|
46258
|
-
var _b;
|
|
46259
|
-
var initialFilters = _a.initialFilters,
|
|
46260
|
-
filters = _a.filters,
|
|
46261
|
-
isOpen = _a.isOpen,
|
|
46262
|
-
handleSetIsOpen = _a.handleSetIsOpen,
|
|
46263
|
-
isLoading = _a.isLoading;
|
|
46264
|
-
var context = React.useContext(SearchResultsConfigurationContext);
|
|
46265
|
-
if (!context || !context.showFilters) {
|
|
46266
|
-
return null;
|
|
46267
|
-
}
|
|
46268
|
-
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
46269
|
-
var _c = React.useState({}),
|
|
46270
|
-
visibleFilters = _c[0],
|
|
46271
|
-
setVisibleFilters = _c[1];
|
|
46272
|
-
var dispatch = reactRedux.useDispatch();
|
|
46273
|
-
var toggleFilterVisibility = function (filterId) {
|
|
46274
|
-
setVisibleFilters(function (prev) {
|
|
46275
|
-
var _a;
|
|
46276
|
-
return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
|
|
46277
|
-
});
|
|
46278
|
-
};
|
|
46279
|
-
var handleCheckBoxFilter = function (filter, option) {
|
|
46280
|
-
var updated = filters.map(function (f) {
|
|
46281
|
-
var _a;
|
|
46282
|
-
if (f.property !== filter.property) return f;
|
|
46283
|
-
return __assign(__assign({}, f), {
|
|
46284
|
-
options:
|
|
46285
|
-
(_a = f.options) === null || _a === void 0
|
|
46286
|
-
? void 0
|
|
46287
|
-
: _a.map(function (opt) {
|
|
46288
|
-
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
46289
|
-
})
|
|
46290
|
-
});
|
|
46291
|
-
});
|
|
46292
|
-
dispatch(setFilters(updated));
|
|
46293
|
-
};
|
|
46294
|
-
var handleSliderChange = function (filter, newMin, newMax) {
|
|
46295
|
-
var updated = filters.map(function (f) {
|
|
46296
|
-
if (f.property !== filter.property) return f;
|
|
46297
|
-
return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
|
|
46298
|
-
});
|
|
46299
|
-
dispatch(setFilters(updated));
|
|
46300
|
-
};
|
|
46301
|
-
var handleFullReset = function () {
|
|
46302
|
-
if (!isLoading) {
|
|
46303
|
-
dispatch(resetFilters(initialFilters));
|
|
46304
|
-
}
|
|
46305
|
-
};
|
|
46306
|
-
return React__default['default'].createElement(
|
|
46307
|
-
'div',
|
|
46308
|
-
{ className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
|
|
46309
|
-
React__default['default'].createElement('div', {
|
|
46310
|
-
className: 'search__filters--background',
|
|
46311
|
-
onClick: function () {
|
|
46312
|
-
return handleSetIsOpen();
|
|
46313
|
-
}
|
|
46314
|
-
}),
|
|
46315
|
-
React__default['default'].createElement(
|
|
46316
|
-
'button',
|
|
46317
|
-
{
|
|
46318
|
-
className: 'search__filters--close',
|
|
46319
|
-
onClick: function () {
|
|
46320
|
-
return handleSetIsOpen();
|
|
46321
|
-
}
|
|
46322
|
-
},
|
|
46323
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
46324
|
-
),
|
|
46325
|
-
React__default['default'].createElement(
|
|
46326
|
-
'div',
|
|
46327
|
-
{ className: 'search__filters' },
|
|
46328
|
-
React__default['default'].createElement(
|
|
46329
|
-
'div',
|
|
46330
|
-
{ className: 'search__filter-row search__filter__header' },
|
|
46331
|
-
React__default['default'].createElement(
|
|
46332
|
-
'div',
|
|
46333
|
-
{ className: 'search__filter-row-flex-title' },
|
|
46334
|
-
React__default['default'].createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
|
|
46335
|
-
),
|
|
46336
|
-
!isLoading &&
|
|
46337
|
-
React__default['default'].createElement(
|
|
46338
|
-
'a',
|
|
46339
|
-
{
|
|
46340
|
-
className: 'search__filter-reset',
|
|
46341
|
-
onClick: function () {
|
|
46342
|
-
return handleFullReset();
|
|
46343
|
-
}
|
|
46344
|
-
},
|
|
46345
|
-
translations.SRP.RESET
|
|
46346
|
-
)
|
|
46347
|
-
),
|
|
46348
|
-
isLoading
|
|
46349
|
-
? React__default['default'].createElement(Spinner, null)
|
|
46350
|
-
: React__default['default'].createElement(
|
|
46351
|
-
React__default['default'].Fragment,
|
|
46352
|
-
null,
|
|
46353
|
-
React__default['default'].createElement(
|
|
46354
|
-
'div',
|
|
46355
|
-
{ className: 'search__filters__group-container' },
|
|
46356
|
-
filters.map(function (filter, index) {
|
|
46357
|
-
var _a, _b;
|
|
46358
|
-
var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
|
|
46359
|
-
return React__default['default'].createElement(
|
|
46360
|
-
'div',
|
|
46361
|
-
{ key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
|
|
46362
|
-
React__default['default'].createElement(
|
|
46363
|
-
'div',
|
|
46364
|
-
{
|
|
46365
|
-
className: 'search__filter-row search__filter-row--underline',
|
|
46366
|
-
onClick: function () {
|
|
46367
|
-
return toggleFilterVisibility(filter.property);
|
|
46368
|
-
},
|
|
46369
|
-
role: 'button',
|
|
46370
|
-
tabIndex: 0
|
|
46371
|
-
},
|
|
46372
|
-
React__default['default'].createElement('h6', { className: 'search__filter-large-title' }, filter.label),
|
|
46373
|
-
React__default['default'].createElement(
|
|
46374
|
-
'svg',
|
|
46375
|
-
{
|
|
46376
|
-
id: 'search-chevron-up-icon',
|
|
46377
|
-
className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
|
|
46378
|
-
viewBox: '0 0 10 6.063',
|
|
46379
|
-
width: 10,
|
|
46380
|
-
height: 6.063
|
|
46381
|
-
},
|
|
46382
|
-
React__default['default'].createElement('path', {
|
|
46383
|
-
id: 'Path_62',
|
|
46384
|
-
'data-name': 'Path 62',
|
|
46385
|
-
d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
|
|
46386
|
-
transform: 'translate(-240 624)',
|
|
46387
|
-
fill: '#707070'
|
|
46388
|
-
})
|
|
46389
|
-
)
|
|
46390
|
-
),
|
|
46391
|
-
isVisible &&
|
|
46392
|
-
filter.type === 'checkbox' &&
|
|
46393
|
-
React__default['default'].createElement(
|
|
46394
|
-
'div',
|
|
46395
|
-
{ className: 'search__filter-rows' },
|
|
46396
|
-
filter.options &&
|
|
46397
|
-
filter.options.map(function (option, optionIndex) {
|
|
46398
|
-
return React__default['default'].createElement(
|
|
46399
|
-
'div',
|
|
46400
|
-
{ className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
46401
|
-
React__default['default'].createElement(
|
|
46402
|
-
'div',
|
|
46403
|
-
{ className: 'checkbox' },
|
|
46404
|
-
React__default['default'].createElement(
|
|
46405
|
-
'label',
|
|
46406
|
-
{ className: 'checkbox__label' },
|
|
46407
|
-
React__default['default'].createElement('input', {
|
|
46408
|
-
type: 'checkbox',
|
|
46409
|
-
className: 'checkbox__input checkbox__input--parent',
|
|
46410
|
-
checked: option.isChecked,
|
|
46411
|
-
onChange: function (e) {
|
|
46412
|
-
return handleCheckBoxFilter(filter, option);
|
|
46413
|
-
}
|
|
46414
|
-
}),
|
|
46415
|
-
React__default['default'].createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
46416
|
-
)
|
|
46417
|
-
)
|
|
46418
|
-
);
|
|
46419
|
-
})
|
|
46420
|
-
),
|
|
46421
|
-
isVisible &&
|
|
46422
|
-
filter.type === 'toggle' &&
|
|
46423
|
-
React__default['default'].createElement(
|
|
46424
|
-
'div',
|
|
46425
|
-
{ className: 'search__filter-rows' },
|
|
46426
|
-
(_b = filter.options) === null || _b === void 0
|
|
46427
|
-
? void 0
|
|
46428
|
-
: _b.map(function (option, optionIndex) {
|
|
46429
|
-
return React__default['default'].createElement(
|
|
46430
|
-
'div',
|
|
46431
|
-
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
46432
|
-
React__default['default'].createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
46433
|
-
React__default['default'].createElement('div', { className: 'checkbox' }),
|
|
46434
|
-
React__default['default'].createElement(
|
|
46435
|
-
'label',
|
|
46436
|
-
{ className: 'checkbox__label' },
|
|
46437
|
-
React__default['default'].createElement('input', {
|
|
46438
|
-
type: 'checkbox',
|
|
46439
|
-
className: 'checkbox__input',
|
|
46440
|
-
checked: option.isChecked,
|
|
46441
|
-
onChange: function () {
|
|
46442
|
-
return handleCheckBoxFilter(filter, option);
|
|
46443
|
-
}
|
|
46444
|
-
})
|
|
46445
|
-
)
|
|
46446
|
-
);
|
|
46447
|
-
})
|
|
46448
|
-
),
|
|
46449
|
-
isVisible &&
|
|
46450
|
-
filter &&
|
|
46451
|
-
filter.type === 'slider' &&
|
|
46452
|
-
(function () {
|
|
46453
|
-
var _a, _b, _c, _d;
|
|
46454
|
-
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
46455
|
-
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
46456
|
-
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
46457
|
-
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
46458
|
-
return React__default['default'].createElement(MultiRangeFilter, {
|
|
46459
|
-
min: min,
|
|
46460
|
-
max: max,
|
|
46461
|
-
selectedMin: selectedMin,
|
|
46462
|
-
selectedMax: selectedMax,
|
|
46463
|
-
valueFormatter: function (value) {
|
|
46464
|
-
return ''.concat(value);
|
|
46465
|
-
},
|
|
46466
|
-
onChange: function (newMin, newMax) {
|
|
46467
|
-
handleSliderChange(filter, newMin, newMax);
|
|
46468
|
-
}
|
|
46469
|
-
});
|
|
46470
|
-
})()
|
|
46471
|
-
);
|
|
46472
|
-
})
|
|
46473
|
-
)
|
|
46474
|
-
)
|
|
46475
|
-
)
|
|
46476
|
-
);
|
|
46477
|
-
};
|
|
46478
|
-
|
|
46479
47014
|
var GroupTourCard = function (_a) {
|
|
46480
47015
|
var _b, _c, _d, _e, _f, _g;
|
|
46481
47016
|
var result = _a.result,
|
|
@@ -46793,80 +47328,245 @@ var enrichFiltersWithResults = function (results, filters, tags) {
|
|
|
46793
47328
|
return updatedFilter;
|
|
46794
47329
|
});
|
|
46795
47330
|
};
|
|
46796
|
-
var enrichFiltersWithPackageAccoResults = function (results,
|
|
46797
|
-
|
|
46798
|
-
|
|
46799
|
-
|
|
46800
|
-
|
|
46801
|
-
|
|
46802
|
-
|
|
46803
|
-
|
|
46804
|
-
|
|
46805
|
-
|
|
46806
|
-
|
|
46807
|
-
|
|
46808
|
-
|
|
46809
|
-
|
|
46810
|
-
|
|
46811
|
-
|
|
46812
|
-
|
|
46813
|
-
|
|
46814
|
-
|
|
46815
|
-
|
|
46816
|
-
|
|
46817
|
-
|
|
46818
|
-
results.forEach(function (r) {
|
|
46819
|
-
var rooms = lodash.flatMap(r.rooms);
|
|
46820
|
-
if (rooms) {
|
|
46821
|
-
rooms.map(function (room) {
|
|
46822
|
-
room.options.map(function (option) {
|
|
46823
|
-
if (option.accommodationCode) {
|
|
46824
|
-
map_4.set(option.accommodationCode, {
|
|
46825
|
-
name: option.accommodationName,
|
|
46826
|
-
code: option.accommodationCode
|
|
46827
|
-
});
|
|
46828
|
-
}
|
|
47331
|
+
var enrichFiltersWithPackageAccoResults = function (results, tags) {
|
|
47332
|
+
var filters = [];
|
|
47333
|
+
if (!results || results.length === 0) {
|
|
47334
|
+
return filters;
|
|
47335
|
+
}
|
|
47336
|
+
var regimeFilter = {
|
|
47337
|
+
property: 'regime',
|
|
47338
|
+
label: 'Regime',
|
|
47339
|
+
type: 'checkbox',
|
|
47340
|
+
options: [],
|
|
47341
|
+
isFrontendFilter: true
|
|
47342
|
+
};
|
|
47343
|
+
var map = new Map();
|
|
47344
|
+
results.forEach(function (r) {
|
|
47345
|
+
var rooms = lodash.flatMap(r.rooms);
|
|
47346
|
+
if (rooms) {
|
|
47347
|
+
rooms.map(function (room) {
|
|
47348
|
+
room.options.map(function (option) {
|
|
47349
|
+
if (option.regimeCode) {
|
|
47350
|
+
map.set(option.regimeCode, {
|
|
47351
|
+
name: option.regimeName,
|
|
47352
|
+
code: option.regimeCode
|
|
46829
47353
|
});
|
|
46830
|
-
}
|
|
46831
|
-
}
|
|
47354
|
+
}
|
|
47355
|
+
});
|
|
46832
47356
|
});
|
|
46833
|
-
|
|
46834
|
-
|
|
46835
|
-
|
|
46836
|
-
|
|
46837
|
-
|
|
46838
|
-
|
|
46839
|
-
|
|
47357
|
+
}
|
|
47358
|
+
});
|
|
47359
|
+
regimeFilter.options = Array.from(map.values()).map(function (regime) {
|
|
47360
|
+
var _a;
|
|
47361
|
+
return {
|
|
47362
|
+
label: (_a = regime.name) !== null && _a !== void 0 ? _a : regime.code,
|
|
47363
|
+
value: regime.code,
|
|
47364
|
+
isChecked: false
|
|
47365
|
+
};
|
|
47366
|
+
});
|
|
47367
|
+
filters.push(regimeFilter);
|
|
47368
|
+
var priceFilter = {
|
|
47369
|
+
property: 'price',
|
|
47370
|
+
label: 'Prijs',
|
|
47371
|
+
type: 'slider',
|
|
47372
|
+
isFrontendFilter: true
|
|
47373
|
+
};
|
|
47374
|
+
var prices = results
|
|
47375
|
+
.map(function (r) {
|
|
47376
|
+
var _a;
|
|
47377
|
+
return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
|
|
47378
|
+
})
|
|
47379
|
+
.filter(function (p) {
|
|
47380
|
+
return p > 0;
|
|
47381
|
+
});
|
|
47382
|
+
priceFilter.min = Math.floor(Math.min.apply(Math, prices));
|
|
47383
|
+
priceFilter.max = Math.ceil(Math.max.apply(Math, prices));
|
|
47384
|
+
filters.push(priceFilter);
|
|
47385
|
+
return filters;
|
|
47386
|
+
};
|
|
47387
|
+
var enrichFiltersWithPackageFlightResults = function (results, tags, translations) {
|
|
47388
|
+
var filters = [];
|
|
47389
|
+
if (!results || results.length === 0) {
|
|
47390
|
+
return filters;
|
|
47391
|
+
}
|
|
47392
|
+
// Airlines
|
|
47393
|
+
var airlinesFilter = {
|
|
47394
|
+
label: 'Airlines',
|
|
47395
|
+
property: 'airline',
|
|
47396
|
+
type: 'checkbox',
|
|
47397
|
+
isFrontendFilter: true,
|
|
47398
|
+
options: []
|
|
47399
|
+
};
|
|
47400
|
+
var airlinesFilterMap = new Map();
|
|
47401
|
+
results.map(function (r) {
|
|
47402
|
+
var airlineCode = r.airlineCode;
|
|
47403
|
+
var airlineName = r.airlineName;
|
|
47404
|
+
if (airlineCode && airlineName) {
|
|
47405
|
+
airlinesFilterMap.set(airlineCode, {
|
|
47406
|
+
name: airlineName,
|
|
47407
|
+
code: airlineCode
|
|
46840
47408
|
});
|
|
46841
47409
|
}
|
|
46842
|
-
|
|
46843
|
-
|
|
46844
|
-
|
|
46845
|
-
|
|
46846
|
-
|
|
46847
|
-
|
|
46848
|
-
|
|
46849
|
-
|
|
46850
|
-
|
|
46851
|
-
|
|
46852
|
-
|
|
46853
|
-
|
|
46854
|
-
|
|
46855
|
-
|
|
46856
|
-
|
|
46857
|
-
|
|
47410
|
+
});
|
|
47411
|
+
airlinesFilter.options = Array.from(airlinesFilterMap.values()).map(function (airline) {
|
|
47412
|
+
var _a;
|
|
47413
|
+
return {
|
|
47414
|
+
label: (_a = airline.name) !== null && _a !== void 0 ? _a : airline.code,
|
|
47415
|
+
value: airline.code,
|
|
47416
|
+
isChecked: false
|
|
47417
|
+
};
|
|
47418
|
+
});
|
|
47419
|
+
filters.push(airlinesFilter);
|
|
47420
|
+
// Number of stops
|
|
47421
|
+
var stopsFilter = {
|
|
47422
|
+
label: 'Number of Stops',
|
|
47423
|
+
property: 'numberOfStops',
|
|
47424
|
+
type: 'checkbox',
|
|
47425
|
+
isFrontendFilter: true,
|
|
47426
|
+
options: []
|
|
47427
|
+
};
|
|
47428
|
+
var stopsMap = new Map();
|
|
47429
|
+
results.map(function (result) {
|
|
47430
|
+
var numberOfStops = getNumberOfStops(result.outward);
|
|
47431
|
+
if (!stopsMap.has(numberOfStops)) {
|
|
47432
|
+
stopsMap.set(numberOfStops, { numberOfStops: numberOfStops });
|
|
47433
|
+
}
|
|
47434
|
+
});
|
|
47435
|
+
stopsFilter.options = Array.from(stopsMap.values()).map(function (stop) {
|
|
47436
|
+
return {
|
|
47437
|
+
label: ''.concat(stop.numberOfStops == 0 ? 'direct' : stop.numberOfStops + ' Stop'.concat(stop.numberOfStops !== 1 ? 's' : '')),
|
|
47438
|
+
value: stop.numberOfStops,
|
|
47439
|
+
isChecked: false
|
|
47440
|
+
};
|
|
47441
|
+
});
|
|
47442
|
+
filters.push(stopsFilter);
|
|
47443
|
+
// Departure range
|
|
47444
|
+
var departureRangeFilter = {
|
|
47445
|
+
label: 'Departure Range',
|
|
47446
|
+
property: 'departureRange',
|
|
47447
|
+
type: 'checkbox',
|
|
47448
|
+
isFrontendFilter: true,
|
|
47449
|
+
options: []
|
|
47450
|
+
};
|
|
47451
|
+
var departureRangeMap = new Map();
|
|
47452
|
+
results.map(function (result) {
|
|
47453
|
+
var _a;
|
|
47454
|
+
var departureRange = rangeFromDateTimeInMinutes((_a = getDepartureSegment(result.outward)) === null || _a === void 0 ? void 0 : _a.departureDateTime);
|
|
47455
|
+
if (!departureRangeMap.has(departureRange)) {
|
|
47456
|
+
departureRangeMap.set(departureRange, departureRange);
|
|
47457
|
+
}
|
|
47458
|
+
});
|
|
47459
|
+
departureRangeFilter.options = lodash.orderBy(Array.from(departureRangeMap.values()), ['id'], ['asc']).map(function (range) {
|
|
47460
|
+
return {
|
|
47461
|
+
label: getDepartureRangeName(translations, range),
|
|
47462
|
+
value: range,
|
|
47463
|
+
isChecked: false
|
|
47464
|
+
};
|
|
47465
|
+
});
|
|
47466
|
+
filters.push(departureRangeFilter);
|
|
47467
|
+
// Departure Airport
|
|
47468
|
+
var departureAirportFilter = {
|
|
47469
|
+
label: 'Departure Airport',
|
|
47470
|
+
property: 'departureAirport',
|
|
47471
|
+
type: 'checkbox',
|
|
47472
|
+
isFrontendFilter: true,
|
|
47473
|
+
options: []
|
|
47474
|
+
};
|
|
47475
|
+
var departureAirportsMap = new Map();
|
|
47476
|
+
results.map(function (result) {
|
|
47477
|
+
var departureSegment = getDepartureSegment(result.outward);
|
|
47478
|
+
var departureAirport = departureSegment === null || departureSegment === void 0 ? void 0 : departureSegment.departureAirportCode;
|
|
47479
|
+
if (departureAirport && !departureAirportsMap.has(departureAirport)) {
|
|
47480
|
+
departureAirportsMap.set(departureAirport, {
|
|
47481
|
+
name: (departureSegment === null || departureSegment === void 0 ? void 0 : departureSegment.departureAirportName) + ' (' + departureAirport + ')',
|
|
47482
|
+
code: departureAirport
|
|
46858
47483
|
});
|
|
46859
|
-
|
|
46860
|
-
|
|
46861
|
-
|
|
46862
|
-
|
|
46863
|
-
|
|
46864
|
-
|
|
46865
|
-
|
|
47484
|
+
}
|
|
47485
|
+
});
|
|
47486
|
+
departureAirportFilter.options = Array.from(departureAirportsMap.values()).map(function (airport) {
|
|
47487
|
+
var _a;
|
|
47488
|
+
return {
|
|
47489
|
+
label: (_a = airport.name) !== null && _a !== void 0 ? _a : airport.code,
|
|
47490
|
+
value: airport.code,
|
|
47491
|
+
isChecked: false
|
|
47492
|
+
};
|
|
47493
|
+
});
|
|
47494
|
+
filters.push(departureAirportFilter);
|
|
47495
|
+
// Arrival Airport
|
|
47496
|
+
var arrivalAirportFilter = {
|
|
47497
|
+
label: 'Arrival Airport',
|
|
47498
|
+
property: 'arrivalAirport',
|
|
47499
|
+
type: 'checkbox',
|
|
47500
|
+
isFrontendFilter: true,
|
|
47501
|
+
options: []
|
|
47502
|
+
};
|
|
47503
|
+
var arrivalAirportsMap = new Map();
|
|
47504
|
+
results.map(function (result) {
|
|
47505
|
+
var arrivalSegment = getArrivalSegment(result.outward);
|
|
47506
|
+
var arrivalAirport = arrivalSegment === null || arrivalSegment === void 0 ? void 0 : arrivalSegment.arrivalAirportCode;
|
|
47507
|
+
if (arrivalAirport && !arrivalAirportsMap.has(arrivalAirport)) {
|
|
47508
|
+
arrivalAirportsMap.set(arrivalAirport, {
|
|
47509
|
+
name: (arrivalSegment === null || arrivalSegment === void 0 ? void 0 : arrivalSegment.arrivalAirportName) + ' (' + arrivalAirport + ')',
|
|
47510
|
+
code: arrivalAirport
|
|
46866
47511
|
});
|
|
46867
47512
|
}
|
|
46868
|
-
return updatedFilter;
|
|
46869
47513
|
});
|
|
47514
|
+
arrivalAirportFilter.options = Array.from(arrivalAirportsMap.values()).map(function (airport) {
|
|
47515
|
+
var _a;
|
|
47516
|
+
return {
|
|
47517
|
+
label: (_a = airport.name) !== null && _a !== void 0 ? _a : airport.code,
|
|
47518
|
+
value: airport.code,
|
|
47519
|
+
isChecked: false
|
|
47520
|
+
};
|
|
47521
|
+
});
|
|
47522
|
+
filters.push(arrivalAirportFilter);
|
|
47523
|
+
// Price
|
|
47524
|
+
var priceFilter = {
|
|
47525
|
+
label: 'Price',
|
|
47526
|
+
property: 'price',
|
|
47527
|
+
type: 'slider',
|
|
47528
|
+
isFrontendFilter: true
|
|
47529
|
+
};
|
|
47530
|
+
var prices = results
|
|
47531
|
+
.map(function (r) {
|
|
47532
|
+
var _a;
|
|
47533
|
+
return (_a = r.price) !== null && _a !== void 0 ? _a : 0;
|
|
47534
|
+
})
|
|
47535
|
+
.filter(function (p) {
|
|
47536
|
+
return p > 0;
|
|
47537
|
+
});
|
|
47538
|
+
if (prices.length > 0) {
|
|
47539
|
+
priceFilter.min = Math.floor(Math.min.apply(Math, prices));
|
|
47540
|
+
priceFilter.max = Math.ceil(Math.max.apply(Math, prices));
|
|
47541
|
+
}
|
|
47542
|
+
filters.push(priceFilter);
|
|
47543
|
+
// Travel duration
|
|
47544
|
+
var travelDurationFilter = {
|
|
47545
|
+
label: 'Travel Duration',
|
|
47546
|
+
property: 'travelDuration',
|
|
47547
|
+
type: 'slider',
|
|
47548
|
+
isFrontendFilter: true
|
|
47549
|
+
};
|
|
47550
|
+
var minTravelTimeDuration = Math.min.apply(
|
|
47551
|
+
Math,
|
|
47552
|
+
results.map(function (result) {
|
|
47553
|
+
return result.outward.durationInTicks;
|
|
47554
|
+
})
|
|
47555
|
+
);
|
|
47556
|
+
var maxTravelTimeDuration = Math.max.apply(
|
|
47557
|
+
Math,
|
|
47558
|
+
results.map(function (result) {
|
|
47559
|
+
return result.outward.durationInTicks;
|
|
47560
|
+
})
|
|
47561
|
+
);
|
|
47562
|
+
var minTravelTimeValue = durationInTicksInMinutes(minTravelTimeDuration);
|
|
47563
|
+
var maxTravelTimeValue = durationInTicksInMinutes(maxTravelTimeDuration);
|
|
47564
|
+
if (minTravelTimeValue != null && maxTravelTimeValue != null) {
|
|
47565
|
+
travelDurationFilter.min = minTravelTimeValue;
|
|
47566
|
+
travelDurationFilter.max = maxTravelTimeValue;
|
|
47567
|
+
}
|
|
47568
|
+
filters.push(travelDurationFilter);
|
|
47569
|
+
return filters;
|
|
46870
47570
|
};
|
|
46871
47571
|
var applyFilters = function (results, filters, sortBy) {
|
|
46872
47572
|
var filtered = results.filter(function (r) {
|
|
@@ -47008,6 +47708,147 @@ var applyFiltersToPackageAccoResults = function (results, filters, sortBy) {
|
|
|
47008
47708
|
return 0;
|
|
47009
47709
|
});
|
|
47010
47710
|
};
|
|
47711
|
+
var applyFiltersToPackageFlightResults = function (results, filters, sortBy) {
|
|
47712
|
+
var filtered = results.filter(function (result) {
|
|
47713
|
+
return filters.every(function (filter) {
|
|
47714
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
47715
|
+
if (!filter.isFrontendFilter) return true;
|
|
47716
|
+
// Airline
|
|
47717
|
+
if (filter.property === 'airline') {
|
|
47718
|
+
var selected =
|
|
47719
|
+
(_a = filter.options) === null || _a === void 0
|
|
47720
|
+
? void 0
|
|
47721
|
+
: _a
|
|
47722
|
+
.filter(function (o) {
|
|
47723
|
+
return o.isChecked;
|
|
47724
|
+
})
|
|
47725
|
+
.map(function (o) {
|
|
47726
|
+
return o.value;
|
|
47727
|
+
});
|
|
47728
|
+
if (!selected || selected.length === 0) return true;
|
|
47729
|
+
return selected.includes(result.airlineCode);
|
|
47730
|
+
}
|
|
47731
|
+
// Stops
|
|
47732
|
+
if (filter.property === 'numberOfStops') {
|
|
47733
|
+
var selected =
|
|
47734
|
+
(_b = filter.options) === null || _b === void 0
|
|
47735
|
+
? void 0
|
|
47736
|
+
: _b
|
|
47737
|
+
.filter(function (o) {
|
|
47738
|
+
return o.isChecked;
|
|
47739
|
+
})
|
|
47740
|
+
.map(function (o) {
|
|
47741
|
+
return o.value;
|
|
47742
|
+
});
|
|
47743
|
+
if (!selected || selected.length === 0) return true;
|
|
47744
|
+
return selected.includes(getNumberOfStops(result.outward)) && selected.includes(getNumberOfStops(result.return));
|
|
47745
|
+
}
|
|
47746
|
+
// Departure range
|
|
47747
|
+
if (filter.property === 'departureRange') {
|
|
47748
|
+
var selected =
|
|
47749
|
+
(_c = filter.options) === null || _c === void 0
|
|
47750
|
+
? void 0
|
|
47751
|
+
: _c
|
|
47752
|
+
.filter(function (o) {
|
|
47753
|
+
return o.isChecked;
|
|
47754
|
+
})
|
|
47755
|
+
.map(function (o) {
|
|
47756
|
+
return o.value;
|
|
47757
|
+
});
|
|
47758
|
+
if (!selected || selected.length === 0) return true;
|
|
47759
|
+
return selected.includes(
|
|
47760
|
+
rangeFromDateTimeInMinutes((_d = getDepartureSegment(result.outward)) === null || _d === void 0 ? void 0 : _d.departureDateTime)
|
|
47761
|
+
);
|
|
47762
|
+
}
|
|
47763
|
+
// Departure airport
|
|
47764
|
+
if (filter.property === 'departureAirport') {
|
|
47765
|
+
var selected =
|
|
47766
|
+
(_e = filter.options) === null || _e === void 0
|
|
47767
|
+
? void 0
|
|
47768
|
+
: _e
|
|
47769
|
+
.filter(function (o) {
|
|
47770
|
+
return o.isChecked;
|
|
47771
|
+
})
|
|
47772
|
+
.map(function (o) {
|
|
47773
|
+
return o.value;
|
|
47774
|
+
});
|
|
47775
|
+
if (!selected || selected.length === 0) return true;
|
|
47776
|
+
var departureAirportCode = (_f = getDepartureSegment(result.outward)) === null || _f === void 0 ? void 0 : _f.departureAirportCode;
|
|
47777
|
+
if (!departureAirportCode) return false;
|
|
47778
|
+
return selected.includes(departureAirportCode);
|
|
47779
|
+
}
|
|
47780
|
+
// Arrival airport
|
|
47781
|
+
if (filter.property === 'arrivalAirport') {
|
|
47782
|
+
var selected =
|
|
47783
|
+
(_g = filter.options) === null || _g === void 0
|
|
47784
|
+
? void 0
|
|
47785
|
+
: _g
|
|
47786
|
+
.filter(function (o) {
|
|
47787
|
+
return o.isChecked;
|
|
47788
|
+
})
|
|
47789
|
+
.map(function (o) {
|
|
47790
|
+
return o.value;
|
|
47791
|
+
});
|
|
47792
|
+
if (!selected || selected.length === 0) return true;
|
|
47793
|
+
var arrivalAirportCode = (_h = getArrivalSegment(result.outward)) === null || _h === void 0 ? void 0 : _h.arrivalAirportCode;
|
|
47794
|
+
if (!arrivalAirportCode) return false;
|
|
47795
|
+
return selected.includes(arrivalAirportCode);
|
|
47796
|
+
}
|
|
47797
|
+
// PRICE
|
|
47798
|
+
if (filter.property === 'price') {
|
|
47799
|
+
if (filter.selectedMin != null && result.price < filter.selectedMin) return false;
|
|
47800
|
+
if (filter.selectedMax != null && result.price > filter.selectedMax) return false;
|
|
47801
|
+
return true;
|
|
47802
|
+
}
|
|
47803
|
+
// Travel times
|
|
47804
|
+
if (filter.property === 'travelDuration') {
|
|
47805
|
+
if (
|
|
47806
|
+
filter.selectedMin != null &&
|
|
47807
|
+
durationInTicksInMinutes((_j = result.outward) === null || _j === void 0 ? void 0 : _j.durationInTicks) < filter.selectedMin
|
|
47808
|
+
)
|
|
47809
|
+
return false;
|
|
47810
|
+
if (
|
|
47811
|
+
filter.selectedMax != null &&
|
|
47812
|
+
durationInTicksInMinutes((_k = result.outward) === null || _k === void 0 ? void 0 : _k.durationInTicks) > filter.selectedMax
|
|
47813
|
+
)
|
|
47814
|
+
return false;
|
|
47815
|
+
return true;
|
|
47816
|
+
}
|
|
47817
|
+
return true;
|
|
47818
|
+
});
|
|
47819
|
+
});
|
|
47820
|
+
// SORTING
|
|
47821
|
+
if (!sortBy || sortBy.label === 'default') {
|
|
47822
|
+
return filtered;
|
|
47823
|
+
}
|
|
47824
|
+
if (sortBy.label === 'departureTime') {
|
|
47825
|
+
return lodash.orderBy(
|
|
47826
|
+
results,
|
|
47827
|
+
[
|
|
47828
|
+
function (result) {
|
|
47829
|
+
var _a;
|
|
47830
|
+
return (_a = getDepartureSegment(result.outward)) === null || _a === void 0 ? void 0 : _a.departureDateTime;
|
|
47831
|
+
}
|
|
47832
|
+
],
|
|
47833
|
+
[sortBy.direction] // or "desc"
|
|
47834
|
+
);
|
|
47835
|
+
} else if (sortBy.label === 'durationInTicks') {
|
|
47836
|
+
return lodash.orderBy(
|
|
47837
|
+
results,
|
|
47838
|
+
[
|
|
47839
|
+
function (result) {
|
|
47840
|
+
var _a, _b;
|
|
47841
|
+
return durationInTicksInMinutes(
|
|
47842
|
+
(_b = (_a = result.outward) === null || _a === void 0 ? void 0 : _a.durationInTicks) !== null && _b !== void 0 ? _b : 0
|
|
47843
|
+
);
|
|
47844
|
+
}
|
|
47845
|
+
],
|
|
47846
|
+
[sortBy.direction] // or "desc"
|
|
47847
|
+
);
|
|
47848
|
+
} else {
|
|
47849
|
+
return lodash.orderBy(results, [sortBy.label], [sortBy.direction]);
|
|
47850
|
+
}
|
|
47851
|
+
};
|
|
47011
47852
|
|
|
47012
47853
|
var getSelectedOptionsPerRoom = function (details) {
|
|
47013
47854
|
var _a;
|
|
@@ -47216,27 +48057,30 @@ var SearchResultsContainer = function () {
|
|
|
47216
48057
|
results = _c.results,
|
|
47217
48058
|
filteredResults = _c.filteredResults,
|
|
47218
48059
|
packagingAccoResults = _c.packagingAccoResults,
|
|
47219
|
-
filteredPackagingAccoResults = _c.filteredPackagingAccoResults
|
|
47220
|
-
|
|
47221
|
-
|
|
48060
|
+
filteredPackagingAccoResults = _c.filteredPackagingAccoResults,
|
|
48061
|
+
isLoading = _c.isLoading,
|
|
48062
|
+
flightsLoading = _c.flightsLoading,
|
|
48063
|
+
initialFilters = _c.initialFilters,
|
|
47222
48064
|
filters = _c.filters,
|
|
48065
|
+
flightFilters = _c.flightFilters,
|
|
47223
48066
|
selectedSortType = _c.selectedSortType,
|
|
48067
|
+
selectedFlightSortType = _c.selectedFlightSortType,
|
|
47224
48068
|
selectedSearchResult = _c.selectedSearchResult,
|
|
47225
48069
|
selectedPackagingAccoResultCode = _c.selectedPackagingAccoResultCode,
|
|
47226
48070
|
flyInIsOpen = _c.flyInIsOpen,
|
|
47227
48071
|
packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
|
|
47228
48072
|
editablePackagingEntry = _c.editablePackagingEntry,
|
|
47229
48073
|
transactionId = _c.transactionId,
|
|
47230
|
-
|
|
48074
|
+
flyInType = _c.flyInType,
|
|
47231
48075
|
itinerary = _c.itinerary,
|
|
47232
48076
|
packagingFlightResults = _c.packagingFlightResults;
|
|
47233
48077
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
47234
48078
|
var _d = React.useState(false),
|
|
47235
48079
|
initialFiltersSet = _d[0],
|
|
47236
48080
|
setInitialFiltersSet = _d[1];
|
|
47237
|
-
var _e = React.useState(
|
|
47238
|
-
|
|
47239
|
-
|
|
48081
|
+
var _e = React.useState(false),
|
|
48082
|
+
initialFlightFiltersSet = _e[0],
|
|
48083
|
+
setInitialFlightFiltersSet = _e[1];
|
|
47240
48084
|
var _f = React.useState(false),
|
|
47241
48085
|
filtersOpen = _f[0],
|
|
47242
48086
|
setFiltersOpen = _f[1];
|
|
@@ -47573,7 +48417,7 @@ var SearchResultsContainer = function () {
|
|
|
47573
48417
|
if (!seed) return [2 /*return*/];
|
|
47574
48418
|
setDetailsIsLoading(true);
|
|
47575
48419
|
setSelectedAccommodationSeed(seed);
|
|
47576
|
-
dispatch(
|
|
48420
|
+
dispatch(setFlyInType('acco-results'));
|
|
47577
48421
|
handleFlyInToggle(true);
|
|
47578
48422
|
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47579
48423
|
case 1:
|
|
@@ -47731,7 +48575,7 @@ var SearchResultsContainer = function () {
|
|
|
47731
48575
|
enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47732
48576
|
if (!initialFiltersSet) {
|
|
47733
48577
|
dispatch(resetFilters(enrichedFilters));
|
|
47734
|
-
setInitialFilters(enrichedFilters);
|
|
48578
|
+
dispatch(setInitialFilters(enrichedFilters));
|
|
47735
48579
|
setInitialFiltersSet(true);
|
|
47736
48580
|
}
|
|
47737
48581
|
dispatch(setResults(packageSearchResults));
|
|
@@ -47764,6 +48608,7 @@ var SearchResultsContainer = function () {
|
|
|
47764
48608
|
case 0:
|
|
47765
48609
|
_a.trys.push([0, 2, , 3]);
|
|
47766
48610
|
if (!context) return [2 /*return*/, null];
|
|
48611
|
+
dispatch(setIsLoading(true));
|
|
47767
48612
|
config = {
|
|
47768
48613
|
host: context.tideConnection.host,
|
|
47769
48614
|
apiKey: context.tideConnection.apiKey
|
|
@@ -47771,12 +48616,13 @@ var SearchResultsContainer = function () {
|
|
|
47771
48616
|
return [4 /*yield*/, build.startTransaction(config)];
|
|
47772
48617
|
case 1:
|
|
47773
48618
|
transaction = _a.sent();
|
|
47774
|
-
console.log('Transaction started', transaction);
|
|
47775
48619
|
dispatch(setTransactionId(transaction.transactionId));
|
|
48620
|
+
dispatch(setIsLoading(false));
|
|
47776
48621
|
return [2 /*return*/, transaction.transactionId];
|
|
47777
48622
|
case 2:
|
|
47778
48623
|
err_2 = _a.sent();
|
|
47779
48624
|
console.error('Transaction failed', err_2);
|
|
48625
|
+
dispatch(setIsLoading(false));
|
|
47780
48626
|
return [2 /*return*/, null];
|
|
47781
48627
|
case 3:
|
|
47782
48628
|
return [2 /*return*/];
|
|
@@ -47804,11 +48650,7 @@ var SearchResultsContainer = function () {
|
|
|
47804
48650
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
|
|
47805
48651
|
case 1:
|
|
47806
48652
|
packageAccoSearchResults = _d.sent();
|
|
47807
|
-
enrichedFilters = enrichFiltersWithPackageAccoResults(
|
|
47808
|
-
packageAccoSearchResults,
|
|
47809
|
-
context.filters,
|
|
47810
|
-
(_a = context.tags) !== null && _a !== void 0 ? _a : []
|
|
47811
|
-
);
|
|
48653
|
+
enrichedFilters = enrichFiltersWithPackageAccoResults(packageAccoSearchResults, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47812
48654
|
if (!initialFiltersSet) {
|
|
47813
48655
|
dispatch(resetFilters(enrichedFilters));
|
|
47814
48656
|
setInitialFilters(enrichedFilters);
|
|
@@ -47854,11 +48696,12 @@ var SearchResultsContainer = function () {
|
|
|
47854
48696
|
};
|
|
47855
48697
|
var runFlightSearch = function (currentTransactionId, seed) {
|
|
47856
48698
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47857
|
-
var config, searchRequest, packageFlightSearchResults, err_4;
|
|
47858
|
-
|
|
47859
|
-
|
|
48699
|
+
var config, searchRequest, packageFlightSearchResults, enrichedFilters, initialFilteredResults, firstResult, err_4;
|
|
48700
|
+
var _a;
|
|
48701
|
+
return __generator(this, function (_b) {
|
|
48702
|
+
switch (_b.label) {
|
|
47860
48703
|
case 0:
|
|
47861
|
-
|
|
48704
|
+
_b.trys.push([0, 2, , 3]);
|
|
47862
48705
|
if (!context) return [2 /*return*/];
|
|
47863
48706
|
dispatch(setFlightsLoading(true));
|
|
47864
48707
|
config = {
|
|
@@ -47869,12 +48712,31 @@ var SearchResultsContainer = function () {
|
|
|
47869
48712
|
searchRequest.agentId = context.agentId;
|
|
47870
48713
|
return [4 /*yield*/, build.searchPackagingFlights(config, searchRequest)];
|
|
47871
48714
|
case 1:
|
|
47872
|
-
packageFlightSearchResults =
|
|
48715
|
+
packageFlightSearchResults = _b.sent();
|
|
48716
|
+
enrichedFilters = enrichFiltersWithPackageFlightResults(
|
|
48717
|
+
packageFlightSearchResults,
|
|
48718
|
+
(_a = context.tags) !== null && _a !== void 0 ? _a : [],
|
|
48719
|
+
translations
|
|
48720
|
+
);
|
|
48721
|
+
if (!initialFlightFiltersSet) {
|
|
48722
|
+
dispatch(resetFlightFilters(enrichedFilters));
|
|
48723
|
+
dispatch(setInitialFlightFilters(enrichedFilters));
|
|
48724
|
+
setInitialFlightFiltersSet(true);
|
|
48725
|
+
}
|
|
47873
48726
|
dispatch(setPackagingFlightResults(packageFlightSearchResults));
|
|
48727
|
+
initialFilteredResults = applyFiltersToPackageFlightResults(packageFlightSearchResults, filters, null);
|
|
48728
|
+
dispatch(setFilteredPackagingFlightResults(initialFilteredResults));
|
|
48729
|
+
if (initialFilteredResults.length > 0) {
|
|
48730
|
+
firstResult = lodash.first(packageFlightSearchResults);
|
|
48731
|
+
if (firstResult) {
|
|
48732
|
+
dispatch(setSelectedOutwardKey(getFlightKey(firstResult.outward.segments)));
|
|
48733
|
+
dispatch(setSelectedReturnKey(getFlightKey(firstResult.return.segments)));
|
|
48734
|
+
}
|
|
48735
|
+
}
|
|
47874
48736
|
dispatch(setFlightsLoading(false));
|
|
47875
48737
|
return [3 /*break*/, 3];
|
|
47876
48738
|
case 2:
|
|
47877
|
-
err_4 =
|
|
48739
|
+
err_4 = _b.sent();
|
|
47878
48740
|
console.error('FlightSearch failed', err_4);
|
|
47879
48741
|
dispatch(setFlightsLoading(false));
|
|
47880
48742
|
return [3 /*break*/, 3];
|
|
@@ -47978,9 +48840,7 @@ var SearchResultsContainer = function () {
|
|
|
47978
48840
|
);
|
|
47979
48841
|
React.useEffect(
|
|
47980
48842
|
function () {
|
|
47981
|
-
console.log('packaging entry from context', context === null || context === void 0 ? void 0 : context.packagingEntry);
|
|
47982
48843
|
if (context === null || context === void 0 ? void 0 : context.packagingEntry) {
|
|
47983
|
-
console.log('original packaging entry from context', context.packagingEntry);
|
|
47984
48844
|
dispatch(setEditablePackagingEntry(structuredClone(context.packagingEntry)));
|
|
47985
48845
|
dispatch(setTransactionId(context.packagingEntry.transactionId));
|
|
47986
48846
|
}
|
|
@@ -48098,6 +48958,7 @@ var SearchResultsContainer = function () {
|
|
|
48098
48958
|
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.GroupTour
|
|
48099
48959
|
) {
|
|
48100
48960
|
handleFlyInToggle(true);
|
|
48961
|
+
dispatch(setFlyInType('acco-details'));
|
|
48101
48962
|
}
|
|
48102
48963
|
_f.label = 1;
|
|
48103
48964
|
case 1:
|
|
@@ -48189,13 +49050,15 @@ var SearchResultsContainer = function () {
|
|
|
48189
49050
|
if (selectedPackagingAccoResultCode) {
|
|
48190
49051
|
fetchPackagingAccoSearchDetails();
|
|
48191
49052
|
}
|
|
48192
|
-
dispatch(setAccommodationFlyInStep('details'));
|
|
48193
49053
|
},
|
|
48194
49054
|
[selectedSearchResult, selectedPackagingAccoResultCode]
|
|
48195
49055
|
);
|
|
48196
49056
|
React.useEffect(
|
|
48197
49057
|
function () {
|
|
48198
|
-
if (
|
|
49058
|
+
if (
|
|
49059
|
+
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation ||
|
|
49060
|
+
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight
|
|
49061
|
+
) {
|
|
48199
49062
|
var filteredPackageAccoResults = applyFiltersToPackageAccoResults(packagingAccoResults, filters, selectedSortType);
|
|
48200
49063
|
dispatch(setFilteredPackagingAccoResults(filteredPackageAccoResults));
|
|
48201
49064
|
} else {
|
|
@@ -48205,6 +49068,15 @@ var SearchResultsContainer = function () {
|
|
|
48205
49068
|
},
|
|
48206
49069
|
[filters, results, packagingAccoResults, selectedSortType]
|
|
48207
49070
|
);
|
|
49071
|
+
React.useEffect(
|
|
49072
|
+
function () {
|
|
49073
|
+
if ((context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.AccommodationAndFlight) {
|
|
49074
|
+
var filteredPackageFlightResults = applyFiltersToPackageFlightResults(packagingFlightResults, flightFilters, selectedFlightSortType);
|
|
49075
|
+
dispatch(setFilteredPackagingFlightResults(filteredPackageFlightResults));
|
|
49076
|
+
}
|
|
49077
|
+
},
|
|
49078
|
+
[flightFilters, packagingFlightResults, selectedFlightSortType]
|
|
49079
|
+
);
|
|
48208
49080
|
React.useEffect(
|
|
48209
49081
|
function () {
|
|
48210
49082
|
setInitialFiltersSet(false);
|
|
@@ -48215,27 +49087,35 @@ var SearchResultsContainer = function () {
|
|
|
48215
49087
|
function () {
|
|
48216
49088
|
var fetchPriceDetails = function () {
|
|
48217
49089
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
48218
|
-
var config, priceDetails, err_7;
|
|
48219
|
-
|
|
48220
|
-
|
|
49090
|
+
var config, request, priceDetails, err_7;
|
|
49091
|
+
var _a, _b;
|
|
49092
|
+
return __generator(this, function (_c) {
|
|
49093
|
+
switch (_c.label) {
|
|
48221
49094
|
case 0:
|
|
48222
49095
|
if (!context || !editablePackagingEntry || lodash.isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
48223
49096
|
setPricesAreLoading(true);
|
|
48224
|
-
|
|
49097
|
+
_c.label = 1;
|
|
48225
49098
|
case 1:
|
|
48226
|
-
|
|
49099
|
+
_c.trys.push([1, 3, , 4]);
|
|
48227
49100
|
config = {
|
|
48228
49101
|
host: context.tideConnection.host,
|
|
48229
49102
|
apiKey: context.tideConnection.apiKey
|
|
48230
49103
|
};
|
|
48231
|
-
|
|
49104
|
+
request = {
|
|
49105
|
+
language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
|
|
49106
|
+
officeId: context.tideConnection.officeId,
|
|
49107
|
+
catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
|
|
49108
|
+
agentId: context.agentId,
|
|
49109
|
+
payload: editablePackagingEntry
|
|
49110
|
+
};
|
|
49111
|
+
return [4 /*yield*/, build.getPriceDetails(config, request)];
|
|
48232
49112
|
case 2:
|
|
48233
|
-
priceDetails =
|
|
49113
|
+
priceDetails = _c.sent();
|
|
48234
49114
|
dispatch(setPriceDetails(priceDetails));
|
|
48235
49115
|
setPricesAreLoading(false);
|
|
48236
49116
|
return [3 /*break*/, 4];
|
|
48237
49117
|
case 3:
|
|
48238
|
-
err_7 =
|
|
49118
|
+
err_7 = _c.sent();
|
|
48239
49119
|
console.error('Error fetching price details', err_7);
|
|
48240
49120
|
setPricesAreLoading(false);
|
|
48241
49121
|
return [3 /*break*/, 4];
|
|
@@ -48247,29 +49127,35 @@ var SearchResultsContainer = function () {
|
|
|
48247
49127
|
};
|
|
48248
49128
|
var fetchItinerary = function () {
|
|
48249
49129
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
48250
|
-
var config, itinerary_1, err_8;
|
|
48251
|
-
|
|
48252
|
-
|
|
49130
|
+
var config, request, itinerary_1, err_8;
|
|
49131
|
+
var _a, _b;
|
|
49132
|
+
return __generator(this, function (_c) {
|
|
49133
|
+
switch (_c.label) {
|
|
48253
49134
|
case 0:
|
|
48254
|
-
|
|
48255
|
-
if (!context || !editablePackagingEntry || lodash.isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
49135
|
+
if (!context || !context.packagingEntry || !editablePackagingEntry || lodash.isEmpty(editablePackagingEntry.lines)) return [2 /*return*/];
|
|
48256
49136
|
setItineraryIsLoading(true);
|
|
48257
|
-
|
|
49137
|
+
_c.label = 1;
|
|
48258
49138
|
case 1:
|
|
48259
|
-
|
|
49139
|
+
_c.trys.push([1, 3, , 4]);
|
|
48260
49140
|
config = {
|
|
48261
49141
|
host: context.tideConnection.host,
|
|
48262
49142
|
apiKey: context.tideConnection.apiKey
|
|
48263
49143
|
};
|
|
48264
|
-
|
|
49144
|
+
request = {
|
|
49145
|
+
language: (_a = context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB',
|
|
49146
|
+
officeId: context.tideConnection.officeId,
|
|
49147
|
+
catalogueId: (_b = context.searchConfiguration.defaultCatalogueId) !== null && _b !== void 0 ? _b : 0,
|
|
49148
|
+
agentId: context.agentId,
|
|
49149
|
+
payload: editablePackagingEntry
|
|
49150
|
+
};
|
|
49151
|
+
return [4 /*yield*/, build.getItinerary(config, request)];
|
|
48265
49152
|
case 2:
|
|
48266
|
-
itinerary_1 =
|
|
48267
|
-
console.log('Fetched itinerary', itinerary_1);
|
|
49153
|
+
itinerary_1 = _c.sent();
|
|
48268
49154
|
dispatch(setItinerary(itinerary_1));
|
|
48269
49155
|
setItineraryIsLoading(false);
|
|
48270
49156
|
return [3 /*break*/, 4];
|
|
48271
49157
|
case 3:
|
|
48272
|
-
err_8 =
|
|
49158
|
+
err_8 = _c.sent();
|
|
48273
49159
|
console.error('Error fetching itinerary', err_8);
|
|
48274
49160
|
setItineraryIsLoading(false);
|
|
48275
49161
|
return [3 /*break*/, 4];
|
|
@@ -48285,36 +49171,22 @@ var SearchResultsContainer = function () {
|
|
|
48285
49171
|
[editablePackagingEntry]
|
|
48286
49172
|
);
|
|
48287
49173
|
// Flight selection
|
|
48288
|
-
|
|
48289
|
-
|
|
48290
|
-
|
|
48291
|
-
var
|
|
48292
|
-
|
|
48293
|
-
|
|
48294
|
-
var
|
|
48295
|
-
|
|
48296
|
-
|
|
48297
|
-
packagingFlightResults.forEach(function (flight) {
|
|
48298
|
-
var key = getFlightKey(flight.outward.segments);
|
|
48299
|
-
if (!map.has(key)) {
|
|
48300
|
-
map.set(key, flight);
|
|
48301
|
-
}
|
|
48302
|
-
});
|
|
48303
|
-
return Array.from(map.values());
|
|
48304
|
-
},
|
|
48305
|
-
[packagingFlightResults]
|
|
48306
|
-
);
|
|
48307
|
-
var _p = React.useState([]),
|
|
48308
|
-
uniqueReturnFlights = _p[0],
|
|
48309
|
-
setUniqueReturnFlights = _p[1];
|
|
49174
|
+
// const [selectedOutwardKey, setSelectedOutwardKey] = useState<string | null>(null);
|
|
49175
|
+
// const [selectedReturnKey, setSelectedReturnKey] = useState<string | null>(null);
|
|
49176
|
+
var selectedOutwardKey = reactRedux.useSelector(selectSelectedOutwardKey);
|
|
49177
|
+
var selectedReturnKey = reactRedux.useSelector(selectSelectedReturnKey);
|
|
49178
|
+
var uniqueOutwardFlights = reactRedux.useSelector(selectUniqueOutwardFlights);
|
|
49179
|
+
var uniqueReturnFlights = reactRedux.useSelector(selectUniqueReturnFlights);
|
|
49180
|
+
var selectedOutward = reactRedux.useSelector(selectSelectedOutward);
|
|
49181
|
+
var selectedReturn = reactRedux.useSelector(selectSelectedReturn);
|
|
49182
|
+
var selectedCombinationFlight = reactRedux.useSelector(selectSelectedCombinationFlight);
|
|
48310
49183
|
React.useEffect(
|
|
48311
49184
|
function () {
|
|
49185
|
+
var _a;
|
|
48312
49186
|
if (!selectedOutwardKey) {
|
|
48313
|
-
|
|
48314
|
-
setSelectedReturnKey(null);
|
|
49187
|
+
dispatch(setSelectedReturnKey(null));
|
|
48315
49188
|
return;
|
|
48316
49189
|
}
|
|
48317
|
-
// Filter combinations that match selected outward fare
|
|
48318
49190
|
var matchingCombinations = packagingFlightResults.filter(function (flight) {
|
|
48319
49191
|
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48320
49192
|
});
|
|
@@ -48326,40 +49198,26 @@ var SearchResultsContainer = function () {
|
|
|
48326
49198
|
}
|
|
48327
49199
|
});
|
|
48328
49200
|
var returns = Array.from(returnMap.values());
|
|
48329
|
-
|
|
48330
|
-
|
|
48331
|
-
|
|
48332
|
-
|
|
48333
|
-
|
|
48334
|
-
|
|
48335
|
-
|
|
48336
|
-
|
|
48337
|
-
|
|
48338
|
-
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48339
|
-
}) || null
|
|
48340
|
-
);
|
|
48341
|
-
},
|
|
48342
|
-
[packagingFlightResults, selectedOutwardKey]
|
|
48343
|
-
);
|
|
48344
|
-
var selectedReturn = React__default['default'].useMemo(
|
|
48345
|
-
function () {
|
|
48346
|
-
if (!selectedReturnKey) return null;
|
|
48347
|
-
return (
|
|
48348
|
-
packagingFlightResults.find(function (flight) {
|
|
48349
|
-
return getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
48350
|
-
}) || null
|
|
48351
|
-
);
|
|
49201
|
+
var segments = (_a = lodash.first(returns)) === null || _a === void 0 ? void 0 : _a.return.segments;
|
|
49202
|
+
var firstReturnKey = returns.length > 0 && segments ? getFlightKey(segments) : null;
|
|
49203
|
+
if (
|
|
49204
|
+
!returns.some(function (x) {
|
|
49205
|
+
return getFlightKey(x.return.segments) === selectedReturnKey;
|
|
49206
|
+
})
|
|
49207
|
+
) {
|
|
49208
|
+
dispatch(setSelectedReturnKey(firstReturnKey));
|
|
49209
|
+
}
|
|
48352
49210
|
},
|
|
48353
|
-
[packagingFlightResults, selectedReturnKey]
|
|
49211
|
+
[selectedOutwardKey, packagingFlightResults, selectedReturnKey, dispatch]
|
|
48354
49212
|
);
|
|
48355
|
-
var
|
|
49213
|
+
var visibleOutwardFlights = React__default['default'].useMemo(
|
|
48356
49214
|
function () {
|
|
48357
|
-
|
|
48358
|
-
|
|
48359
|
-
return getFlightKey(flight.outward.segments) === selectedOutwardKey && getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
49215
|
+
var withoutSelected = uniqueOutwardFlights.filter(function (x) {
|
|
49216
|
+
return getFlightKey(x.outward.segments) !== selectedOutwardKey;
|
|
48360
49217
|
});
|
|
49218
|
+
return withoutSelected.slice(0, 3);
|
|
48361
49219
|
},
|
|
48362
|
-
[
|
|
49220
|
+
[uniqueOutwardFlights, selectedOutwardKey]
|
|
48363
49221
|
);
|
|
48364
49222
|
// TODO: get details for selected combination flight and show in fly-in
|
|
48365
49223
|
// useEffect(() => {
|
|
@@ -48368,6 +49226,7 @@ var SearchResultsContainer = function () {
|
|
|
48368
49226
|
// // onFlightSearch(selectedCombinationFlight); // Trigger search to update accommodation options based on selected flight
|
|
48369
49227
|
// dispatch(setFlyInIsOpen(true));
|
|
48370
49228
|
// }, [selectedCombinationFlight, dispatch]);
|
|
49229
|
+
// Build packagingEntry
|
|
48371
49230
|
React.useEffect(
|
|
48372
49231
|
function () {
|
|
48373
49232
|
var _a, _b, _c, _d;
|
|
@@ -48395,7 +49254,6 @@ var SearchResultsContainer = function () {
|
|
|
48395
49254
|
: '',
|
|
48396
49255
|
language: (_d = context.languageCode) !== null && _d !== void 0 ? _d : 'en-GB'
|
|
48397
49256
|
});
|
|
48398
|
-
console.log('Built next packaging entry', nextEntry);
|
|
48399
49257
|
if (!nextEntry) return;
|
|
48400
49258
|
dispatch(setEditablePackagingEntry(nextEntry));
|
|
48401
49259
|
if (selectedCombinationFlight) {
|
|
@@ -48611,7 +49469,6 @@ var SearchResultsContainer = function () {
|
|
|
48611
49469
|
return r.code === selectedHotelCode;
|
|
48612
49470
|
})
|
|
48613
49471
|
: null;
|
|
48614
|
-
console.log('Selected hotel for packaging entry', selectedHotel);
|
|
48615
49472
|
// Update accommodation only when enough data exists
|
|
48616
49473
|
if (selectedHotel) {
|
|
48617
49474
|
var accommodationLines = buildAccommodationLinesFromSelection(selectedHotel, seed);
|
|
@@ -48623,8 +49480,6 @@ var SearchResultsContainer = function () {
|
|
|
48623
49480
|
// Update flights only when full selected combination exists
|
|
48624
49481
|
if (selectedFlight) {
|
|
48625
49482
|
var flightLines = buildFlightLinesFromSelection(selectedFlight);
|
|
48626
|
-
console.log('selectedFlight', selectedFlight);
|
|
48627
|
-
console.log('Built flight lines from selection', flightLines);
|
|
48628
49483
|
if (flightLines.length) {
|
|
48629
49484
|
nextLines = removeFlightLines(nextLines);
|
|
48630
49485
|
nextLines = __spreadArray(__spreadArray([], nextLines, true), flightLines, true);
|
|
@@ -48670,6 +49525,10 @@ var SearchResultsContainer = function () {
|
|
|
48670
49525
|
lines: []
|
|
48671
49526
|
};
|
|
48672
49527
|
};
|
|
49528
|
+
var handleShowMoreFlights = function (flyInType) {
|
|
49529
|
+
dispatch(setFlyInType(flyInType));
|
|
49530
|
+
dispatch(setFlyInIsOpen(true));
|
|
49531
|
+
};
|
|
48673
49532
|
return React__default['default'].createElement(
|
|
48674
49533
|
'div',
|
|
48675
49534
|
{ id: 'tide-booking', className: 'search__bg' },
|
|
@@ -48686,7 +49545,6 @@ var SearchResultsContainer = function () {
|
|
|
48686
49545
|
{ tideConnection: context.tideConnection },
|
|
48687
49546
|
React__default['default'].createElement(FlightResultsContainer, { isMobile: isMobile }),
|
|
48688
49547
|
React__default['default'].createElement(FlyIn, {
|
|
48689
|
-
title: 'Select your fare',
|
|
48690
49548
|
srpType: context.searchConfiguration.qsmType,
|
|
48691
49549
|
isOpen: flyInIsOpen,
|
|
48692
49550
|
setIsOpen: handleFlyInToggle,
|
|
@@ -48713,7 +49571,13 @@ var SearchResultsContainer = function () {
|
|
|
48713
49571
|
return setFiltersOpen(!filtersOpen);
|
|
48714
49572
|
},
|
|
48715
49573
|
// handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
|
|
48716
|
-
isLoading: isLoading
|
|
49574
|
+
isLoading: isLoading,
|
|
49575
|
+
setFilters: function (filters) {
|
|
49576
|
+
return dispatch(setFilters(filters));
|
|
49577
|
+
},
|
|
49578
|
+
resetFilters: function (filters) {
|
|
49579
|
+
return dispatch(resetFilters(filters));
|
|
49580
|
+
}
|
|
48717
49581
|
}),
|
|
48718
49582
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48719
49583
|
React__default['default'].createElement(Itinerary, {
|
|
@@ -48780,53 +49644,53 @@ var SearchResultsContainer = function () {
|
|
|
48780
49644
|
}
|
|
48781
49645
|
})
|
|
48782
49646
|
),
|
|
48783
|
-
|
|
48784
|
-
'div',
|
|
48785
|
-
{ className: 'search__result-row' },
|
|
49647
|
+
context.searchConfiguration.qsmType !== build.PortalQsmType.AccommodationAndFlight &&
|
|
48786
49648
|
React__default['default'].createElement(
|
|
48787
|
-
'
|
|
48788
|
-
{ className: 'search__result-row
|
|
48789
|
-
|
|
48790
|
-
|
|
49649
|
+
'div',
|
|
49650
|
+
{ className: 'search__result-row' },
|
|
49651
|
+
React__default['default'].createElement(
|
|
49652
|
+
'span',
|
|
49653
|
+
{ className: 'search__result-row-text' },
|
|
49654
|
+
!isLoading &&
|
|
49655
|
+
React__default['default'].createElement(
|
|
49656
|
+
React__default['default'].Fragment,
|
|
49657
|
+
null,
|
|
49658
|
+
context.searchConfiguration.qsmType === build.PortalQsmType.Accommodation &&
|
|
49659
|
+
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length) &&
|
|
49660
|
+
(filteredPackagingAccoResults === null || filteredPackagingAccoResults === void 0 ? void 0 : filteredPackagingAccoResults.length),
|
|
49661
|
+
context.searchConfiguration.qsmType !== build.PortalQsmType.Accommodation &&
|
|
49662
|
+
(filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults.length) &&
|
|
49663
|
+
filteredResults.length,
|
|
49664
|
+
'\u00A0',
|
|
49665
|
+
translations.SRP.TOTAL_RESULTS_LABEL
|
|
49666
|
+
)
|
|
49667
|
+
),
|
|
49668
|
+
!context.packagingEntry &&
|
|
49669
|
+
!isMobile &&
|
|
49670
|
+
sortByTypes &&
|
|
49671
|
+
sortByTypes.length > 0 &&
|
|
48791
49672
|
React__default['default'].createElement(
|
|
48792
|
-
|
|
48793
|
-
|
|
48794
|
-
|
|
48795
|
-
|
|
48796
|
-
(
|
|
48797
|
-
|
|
48798
|
-
|
|
48799
|
-
|
|
48800
|
-
|
|
48801
|
-
|
|
49673
|
+
'div',
|
|
49674
|
+
{ className: 'search__result-row-filter' },
|
|
49675
|
+
React__default['default'].createElement(ItemPicker, {
|
|
49676
|
+
items: sortByTypes,
|
|
49677
|
+
selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
|
|
49678
|
+
selectedSortByType: selectedSortType,
|
|
49679
|
+
label: translations.SRP.SORTBY,
|
|
49680
|
+
placeholder: translations.SRP.SORTBY,
|
|
49681
|
+
classModifier: 'travel-class-picker__items',
|
|
49682
|
+
valueFormatter: function (value, direction) {
|
|
49683
|
+
return getSortingName(
|
|
49684
|
+
translations,
|
|
49685
|
+
findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc')
|
|
49686
|
+
);
|
|
49687
|
+
},
|
|
49688
|
+
onPick: function (newSortKey, direction) {
|
|
49689
|
+
return handleSortChange(newSortKey, direction);
|
|
49690
|
+
}
|
|
49691
|
+
})
|
|
48802
49692
|
)
|
|
48803
49693
|
),
|
|
48804
|
-
!context.packagingEntry &&
|
|
48805
|
-
!isMobile &&
|
|
48806
|
-
sortByTypes &&
|
|
48807
|
-
sortByTypes.length > 0 &&
|
|
48808
|
-
React__default['default'].createElement(
|
|
48809
|
-
'div',
|
|
48810
|
-
{ className: 'search__result-row-filter' },
|
|
48811
|
-
React__default['default'].createElement(ItemPicker, {
|
|
48812
|
-
items: sortByTypes,
|
|
48813
|
-
selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
|
|
48814
|
-
selectedSortByType: selectedSortType,
|
|
48815
|
-
label: translations.SRP.SORTBY,
|
|
48816
|
-
placeholder: translations.SRP.SORTBY,
|
|
48817
|
-
classModifier: 'travel-class-picker__items',
|
|
48818
|
-
valueFormatter: function (value, direction) {
|
|
48819
|
-
return getSortingName(
|
|
48820
|
-
translations,
|
|
48821
|
-
findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc')
|
|
48822
|
-
);
|
|
48823
|
-
},
|
|
48824
|
-
onPick: function (newSortKey, direction) {
|
|
48825
|
-
return handleSortChange(newSortKey, direction);
|
|
48826
|
-
}
|
|
48827
|
-
})
|
|
48828
|
-
)
|
|
48829
|
-
),
|
|
48830
49694
|
React__default['default'].createElement(
|
|
48831
49695
|
'div',
|
|
48832
49696
|
{ className: 'search__results__wrapper' },
|
|
@@ -48865,32 +49729,59 @@ var SearchResultsContainer = function () {
|
|
|
48865
49729
|
)
|
|
48866
49730
|
)
|
|
48867
49731
|
),
|
|
48868
|
-
|
|
48869
|
-
'
|
|
48870
|
-
|
|
48871
|
-
|
|
48872
|
-
|
|
48873
|
-
|
|
48874
|
-
|
|
48875
|
-
|
|
48876
|
-
|
|
48877
|
-
|
|
48878
|
-
|
|
48879
|
-
|
|
48880
|
-
|
|
48881
|
-
|
|
48882
|
-
|
|
48883
|
-
|
|
48884
|
-
|
|
48885
|
-
|
|
48886
|
-
|
|
48887
|
-
|
|
48888
|
-
|
|
48889
|
-
|
|
48890
|
-
|
|
48891
|
-
|
|
48892
|
-
|
|
48893
|
-
|
|
49732
|
+
flightsLoading
|
|
49733
|
+
? React__default['default'].createElement(Spinner, null)
|
|
49734
|
+
: React__default['default'].createElement(
|
|
49735
|
+
React__default['default'].Fragment,
|
|
49736
|
+
null,
|
|
49737
|
+
React__default['default'].createElement(
|
|
49738
|
+
'div',
|
|
49739
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
49740
|
+
selectedOutwardKey &&
|
|
49741
|
+
selectedOutward &&
|
|
49742
|
+
React__default['default'].createElement(IndependentFlightOption, {
|
|
49743
|
+
key: 'flight-'.concat(selectedOutwardKey),
|
|
49744
|
+
item: selectedOutward.outward,
|
|
49745
|
+
guid: selectedOutward.outwardGuid,
|
|
49746
|
+
onSelect: function () {
|
|
49747
|
+
return dispatch(setSelectedOutwardKey(null));
|
|
49748
|
+
},
|
|
49749
|
+
selectedGuid: selectedOutward.outwardGuid,
|
|
49750
|
+
isOutward: true,
|
|
49751
|
+
showSelectedState: true,
|
|
49752
|
+
price: selectedOutward.price
|
|
49753
|
+
}),
|
|
49754
|
+
visibleOutwardFlights.map(function (result) {
|
|
49755
|
+
return React__default['default'].createElement(IndependentFlightOption, {
|
|
49756
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
49757
|
+
item: result.outward,
|
|
49758
|
+
onSelect: function () {
|
|
49759
|
+
return dispatch(setSelectedOutwardKey(getFlightKey(result.outward.segments)));
|
|
49760
|
+
},
|
|
49761
|
+
guid: result.outwardGuid,
|
|
49762
|
+
isOutward: true,
|
|
49763
|
+
price: result.price,
|
|
49764
|
+
currentSelectedPrice: selectedOutward === null || selectedOutward === void 0 ? void 0 : selectedOutward.price
|
|
49765
|
+
});
|
|
49766
|
+
})
|
|
49767
|
+
),
|
|
49768
|
+
uniqueOutwardFlights &&
|
|
49769
|
+
uniqueOutwardFlights.length > 3 &&
|
|
49770
|
+
React__default['default'].createElement(
|
|
49771
|
+
'div',
|
|
49772
|
+
{ className: 'search__results__cards__actions' },
|
|
49773
|
+
React__default['default'].createElement(
|
|
49774
|
+
'button',
|
|
49775
|
+
{
|
|
49776
|
+
className: 'cta cta--secondary',
|
|
49777
|
+
onClick: function () {
|
|
49778
|
+
return handleShowMoreFlights('flight-outward-results');
|
|
49779
|
+
}
|
|
49780
|
+
},
|
|
49781
|
+
translations.SRP.SHOW_MORE
|
|
49782
|
+
)
|
|
49783
|
+
)
|
|
49784
|
+
)
|
|
48894
49785
|
),
|
|
48895
49786
|
context.showHotelAccommodationResults &&
|
|
48896
49787
|
!context.packagingEntry &&
|
|
@@ -48926,25 +49817,30 @@ var SearchResultsContainer = function () {
|
|
|
48926
49817
|
React__default['default'].createElement(
|
|
48927
49818
|
'div',
|
|
48928
49819
|
{ className: 'search__results__cards search__results__cards--extended' },
|
|
48929
|
-
selectedReturnKey &&
|
|
48930
|
-
|
|
48931
|
-
|
|
48932
|
-
|
|
48933
|
-
|
|
48934
|
-
|
|
48935
|
-
|
|
48936
|
-
|
|
48937
|
-
|
|
48938
|
-
|
|
48939
|
-
|
|
48940
|
-
|
|
48941
|
-
|
|
48942
|
-
|
|
48943
|
-
|
|
48944
|
-
|
|
48945
|
-
|
|
48946
|
-
|
|
48947
|
-
|
|
49820
|
+
selectedReturnKey &&
|
|
49821
|
+
selectedReturn &&
|
|
49822
|
+
React__default['default'].createElement(IndependentFlightOption, {
|
|
49823
|
+
key: 'flight-'.concat(selectedReturnKey),
|
|
49824
|
+
item: selectedReturn.return,
|
|
49825
|
+
guid: selectedReturn.outwardGuid,
|
|
49826
|
+
selectedGuid: selectedReturn.outwardGuid,
|
|
49827
|
+
isOutward: false,
|
|
49828
|
+
showSelectedState: true,
|
|
49829
|
+
price: selectedReturn.price
|
|
49830
|
+
}),
|
|
49831
|
+
uniqueReturnFlights.map(function (result) {
|
|
49832
|
+
return React__default['default'].createElement(IndependentFlightOption, {
|
|
49833
|
+
key: 'flight-'.concat(result.outwardGuid),
|
|
49834
|
+
item: result.return,
|
|
49835
|
+
onSelect: function () {
|
|
49836
|
+
return dispatch(setSelectedReturnKey(getFlightKey(result.return.segments)));
|
|
49837
|
+
},
|
|
49838
|
+
guid: result.outwardGuid,
|
|
49839
|
+
isOutward: false,
|
|
49840
|
+
currentSelectedPrice: selectedReturn === null || selectedReturn === void 0 ? void 0 : selectedReturn.price,
|
|
49841
|
+
price: result.price
|
|
49842
|
+
});
|
|
49843
|
+
})
|
|
48948
49844
|
)
|
|
48949
49845
|
),
|
|
48950
49846
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
@@ -48954,7 +49850,6 @@ var SearchResultsContainer = function () {
|
|
|
48954
49850
|
)
|
|
48955
49851
|
),
|
|
48956
49852
|
React__default['default'].createElement(FlyIn, {
|
|
48957
|
-
title: ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION),
|
|
48958
49853
|
srpType: context.searchConfiguration.qsmType,
|
|
48959
49854
|
isOpen: flyInIsOpen,
|
|
48960
49855
|
setIsOpen: handleFlyInToggle,
|
|
@@ -48965,8 +49860,9 @@ var SearchResultsContainer = function () {
|
|
|
48965
49860
|
return (panelRef.current = el);
|
|
48966
49861
|
},
|
|
48967
49862
|
detailsLoading: detailsIsLoading,
|
|
48968
|
-
|
|
48969
|
-
isPackageEditFlow: !!context.packagingEntry
|
|
49863
|
+
flyInType: flyInType,
|
|
49864
|
+
isPackageEditFlow: !!context.packagingEntry,
|
|
49865
|
+
sortByTypes: sortByTypes
|
|
48970
49866
|
})
|
|
48971
49867
|
)
|
|
48972
49868
|
)
|