@qite/tide-booking-component 1.4.103 → 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 +2167 -1400
- package/build/build-cjs/src/search-results/components/filters/filters.d.ts +2 -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-esm/index.js +2152 -1395
- package/build/build-esm/src/search-results/components/filters/filters.d.ts +2 -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/package.json +1 -1
- 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/hotel/hotel-accommodation-results.tsx +81 -24
- package/src/search-results/components/search-results-container/search-results-container.tsx +118 -102
- 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/styles/components/_flyin.scss +16 -0
- package/styles/components/_search.scss +4 -1
package/build/build-cjs/index.js
CHANGED
|
@@ -21756,7 +21756,11 @@ var FlightOptionsForm = function () {
|
|
|
21756
21756
|
setFlightGroups = _f[1];
|
|
21757
21757
|
var handleSubmit = function (e) {
|
|
21758
21758
|
if (settings.skipRouter) {
|
|
21759
|
-
|
|
21759
|
+
if (settings.roomOptions.isHidden) {
|
|
21760
|
+
dispatch(setCurrentStep(OPTIONS_FORM_STEP));
|
|
21761
|
+
} else {
|
|
21762
|
+
dispatch(setCurrentStep(ROOM_OPTIONS_FORM_STEP));
|
|
21763
|
+
}
|
|
21760
21764
|
} else {
|
|
21761
21765
|
if (settings.roomOptions.isHidden) {
|
|
21762
21766
|
navigate(
|
|
@@ -33857,21 +33861,28 @@ var initialState$1 = {
|
|
|
33857
33861
|
packagingAccoSearchDetails: [],
|
|
33858
33862
|
selectedPackagingAccoResultCode: null,
|
|
33859
33863
|
packagingFlightResults: [],
|
|
33864
|
+
filteredPackagingFlightResults: [],
|
|
33860
33865
|
selectedPackagingFlight: null,
|
|
33866
|
+
selectedOutwardKey: null,
|
|
33867
|
+
selectedReturnKey: null,
|
|
33861
33868
|
selectedFlight: null,
|
|
33862
33869
|
selectedFlightDetails: null,
|
|
33863
33870
|
bookingPackageDetails: null,
|
|
33871
|
+
priceDetails: null,
|
|
33864
33872
|
isLoading: false,
|
|
33865
33873
|
flightsLoading: false,
|
|
33866
|
-
filters: [],
|
|
33867
33874
|
selectedSortType: null,
|
|
33875
|
+
selectedFlightSortType: null,
|
|
33876
|
+
initialFilters: [],
|
|
33877
|
+
filters: [],
|
|
33878
|
+
initialFlightFilters: [],
|
|
33879
|
+
flightFilters: [],
|
|
33868
33880
|
activeTab: 'compact',
|
|
33869
33881
|
currentPage: 1,
|
|
33882
|
+
transactionId: null,
|
|
33870
33883
|
flyInIsOpen: false,
|
|
33884
|
+
flyInType: null,
|
|
33871
33885
|
editablePackagingEntry: null,
|
|
33872
|
-
transactionId: null,
|
|
33873
|
-
accommodationFlyInStep: 'details',
|
|
33874
|
-
priceDetails: null,
|
|
33875
33886
|
itinerary: null
|
|
33876
33887
|
};
|
|
33877
33888
|
var searchResultsSlice = toolkit.createSlice({
|
|
@@ -33902,6 +33913,9 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33902
33913
|
setPackagingFlightResults: function (state, action) {
|
|
33903
33914
|
state.packagingFlightResults = action.payload;
|
|
33904
33915
|
},
|
|
33916
|
+
setFilteredPackagingFlightResults: function (state, action) {
|
|
33917
|
+
state.filteredPackagingFlightResults = action.payload;
|
|
33918
|
+
},
|
|
33905
33919
|
setSelectedPackagingFlight: function (state, action) {
|
|
33906
33920
|
state.selectedPackagingFlight = action.payload;
|
|
33907
33921
|
},
|
|
@@ -33930,6 +33944,9 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33930
33944
|
setFlightsLoading: function (state, action) {
|
|
33931
33945
|
state.flightsLoading = action.payload;
|
|
33932
33946
|
},
|
|
33947
|
+
setInitialFilters: function (state, action) {
|
|
33948
|
+
state.initialFilters = action.payload;
|
|
33949
|
+
},
|
|
33933
33950
|
setFilters: function (state, action) {
|
|
33934
33951
|
var updatedFilters = action.payload;
|
|
33935
33952
|
updatedFilters.forEach(function (updatedFilter) {
|
|
@@ -33946,9 +33963,31 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33946
33963
|
resetFilters: function (state, action) {
|
|
33947
33964
|
state.filters = action.payload;
|
|
33948
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
|
+
},
|
|
33949
33985
|
setSortType: function (state, action) {
|
|
33950
33986
|
state.selectedSortType = action.payload;
|
|
33951
33987
|
},
|
|
33988
|
+
setFlightSortType: function (state, action) {
|
|
33989
|
+
state.selectedFlightSortType = action.payload;
|
|
33990
|
+
},
|
|
33952
33991
|
setActiveTab: function (state, action) {
|
|
33953
33992
|
state.activeTab = action.payload;
|
|
33954
33993
|
},
|
|
@@ -33972,14 +34011,24 @@ var searchResultsSlice = toolkit.createSlice({
|
|
|
33972
34011
|
setTransactionId: function (state, action) {
|
|
33973
34012
|
state.transactionId = action.payload;
|
|
33974
34013
|
},
|
|
33975
|
-
|
|
33976
|
-
state.
|
|
34014
|
+
setFlyInType: function (state, action) {
|
|
34015
|
+
state.flyInType = action.payload;
|
|
33977
34016
|
},
|
|
33978
34017
|
setPriceDetails: function (state, action) {
|
|
33979
34018
|
state.priceDetails = action.payload;
|
|
33980
34019
|
},
|
|
33981
34020
|
setItinerary: function (state, action) {
|
|
33982
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;
|
|
33983
34032
|
}
|
|
33984
34033
|
}
|
|
33985
34034
|
});
|
|
@@ -33988,6 +34037,7 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
33988
34037
|
setSelectedSearchResult = _a.setSelectedSearchResult,
|
|
33989
34038
|
setPackagingAccoResults = _a.setPackagingAccoResults,
|
|
33990
34039
|
setFilteredPackagingAccoResults = _a.setFilteredPackagingAccoResults,
|
|
34040
|
+
setFilteredPackagingFlightResults = _a.setFilteredPackagingFlightResults,
|
|
33991
34041
|
setPackagingAccoSearchDetails = _a.setPackagingAccoSearchDetails,
|
|
33992
34042
|
setSelectedPackagingAccoResult = _a.setSelectedPackagingAccoResult,
|
|
33993
34043
|
setPackagingFlightResults = _a.setPackagingFlightResults,
|
|
@@ -33998,18 +34048,26 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
33998
34048
|
_a.selectFlight;
|
|
33999
34049
|
var setIsLoading = _a.setIsLoading,
|
|
34000
34050
|
setFlightsLoading = _a.setFlightsLoading,
|
|
34051
|
+
setInitialFilters = _a.setInitialFilters,
|
|
34001
34052
|
setFilters = _a.setFilters,
|
|
34002
34053
|
resetFilters = _a.resetFilters,
|
|
34054
|
+
setInitialFlightFilters = _a.setInitialFlightFilters,
|
|
34055
|
+
setFlightFilters = _a.setFlightFilters,
|
|
34056
|
+
resetFlightFilters = _a.resetFlightFilters,
|
|
34003
34057
|
setSortType = _a.setSortType,
|
|
34058
|
+
setFlightSortType = _a.setFlightSortType,
|
|
34004
34059
|
setActiveTab = _a.setActiveTab;
|
|
34005
34060
|
_a.setCurrentPage;
|
|
34006
34061
|
_a.resetSearchState;
|
|
34007
34062
|
var setFlyInIsOpen = _a.setFlyInIsOpen,
|
|
34008
34063
|
setEditablePackagingEntry = _a.setEditablePackagingEntry,
|
|
34009
34064
|
setTransactionId = _a.setTransactionId,
|
|
34010
|
-
|
|
34065
|
+
setFlyInType = _a.setFlyInType,
|
|
34011
34066
|
setPriceDetails = _a.setPriceDetails,
|
|
34012
|
-
setItinerary = _a.setItinerary
|
|
34067
|
+
setItinerary = _a.setItinerary,
|
|
34068
|
+
setSelectedOutwardKey = _a.setSelectedOutwardKey,
|
|
34069
|
+
setSelectedReturnKey = _a.setSelectedReturnKey;
|
|
34070
|
+
_a.resetFlightSelection;
|
|
34013
34071
|
var searchResultsReducer = searchResultsSlice.reducer;
|
|
34014
34072
|
|
|
34015
34073
|
var ItemPicker = function (_a) {
|
|
@@ -43637,7 +43695,7 @@ var mapPackagingAccoResult = function (searchResult, cmsItem, languageCode, tran
|
|
|
43637
43695
|
contents: searchResult.contents
|
|
43638
43696
|
});
|
|
43639
43697
|
};
|
|
43640
|
-
var renderHotelResults = function (results, context, activeTab, translations) {
|
|
43698
|
+
var renderHotelResults = function (results, context, activeTab, translations, selectedPackagingAccoResult, isFlyIn) {
|
|
43641
43699
|
var renderedResults = results.map(function (result, index) {
|
|
43642
43700
|
var _a;
|
|
43643
43701
|
var key = ''.concat((_a = result.id) !== null && _a !== void 0 ? _a : result.code, '-').concat(index);
|
|
@@ -43652,13 +43710,22 @@ var renderHotelResults = function (results, context, activeTab, translations) {
|
|
|
43652
43710
|
return React__default['default'].createElement(
|
|
43653
43711
|
'div',
|
|
43654
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
|
+
}),
|
|
43655
43720
|
renderedResults
|
|
43656
43721
|
);
|
|
43657
43722
|
};
|
|
43658
43723
|
var HotelAccommodationResults = function (_a) {
|
|
43659
43724
|
var _b, _c;
|
|
43660
|
-
var isLoading = _a.isLoading
|
|
43725
|
+
var isLoading = _a.isLoading,
|
|
43726
|
+
isFlyIn = _a.isFlyIn;
|
|
43661
43727
|
var context = React.useContext(SearchResultsConfigurationContext);
|
|
43728
|
+
var dispatch = reactRedux.useDispatch();
|
|
43662
43729
|
if (!context) {
|
|
43663
43730
|
return null;
|
|
43664
43731
|
}
|
|
@@ -43668,7 +43735,10 @@ var HotelAccommodationResults = function (_a) {
|
|
|
43668
43735
|
}),
|
|
43669
43736
|
filteredResults = _d.filteredResults,
|
|
43670
43737
|
filteredPackagingAccoResults = _d.filteredPackagingAccoResults,
|
|
43738
|
+
packagingAccoResults = _d.packagingAccoResults,
|
|
43671
43739
|
activeTab = _d.activeTab;
|
|
43740
|
+
_d.flyInIsOpen;
|
|
43741
|
+
var selectedPackagingAccoResultCode = _d.selectedPackagingAccoResultCode;
|
|
43672
43742
|
var cmsMap = React__default['default'].useMemo(
|
|
43673
43743
|
function () {
|
|
43674
43744
|
var _a;
|
|
@@ -43731,193 +43801,1188 @@ var HotelAccommodationResults = function (_a) {
|
|
|
43731
43801
|
: firstPackagingResult.fromDate;
|
|
43732
43802
|
var firstResultDay = firstResultDate ? dateFns.format(dateFns.parseISO(firstResultDate), 'd') : null;
|
|
43733
43803
|
var firstResultMonth = firstResultDate ? dateFns.format(dateFns.parseISO(firstResultDate), 'MMM') : null;
|
|
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
|
+
};
|
|
43734
43837
|
return React__default['default'].createElement(
|
|
43735
43838
|
React__default['default'].Fragment,
|
|
43736
43839
|
null,
|
|
43737
|
-
|
|
43738
|
-
'div',
|
|
43739
|
-
{ className: 'search__results__label search__results__label--secondary' },
|
|
43740
|
-
React__default['default'].createElement(
|
|
43741
|
-
'div',
|
|
43742
|
-
{ className: 'search__results__label__date' },
|
|
43743
|
-
firstResultDay && firstResultMonth
|
|
43744
|
-
? React__default['default'].createElement(
|
|
43745
|
-
React__default['default'].Fragment,
|
|
43746
|
-
null,
|
|
43747
|
-
React__default['default'].createElement('p', { className: 'search__results__label__date-date' }, firstResultDay),
|
|
43748
|
-
React__default['default'].createElement('p', null, firstResultMonth)
|
|
43749
|
-
)
|
|
43750
|
-
: React__default['default'].createElement(Icon$1, { name: 'ui-bed', height: 16, fill: 'white' })
|
|
43751
|
-
),
|
|
43840
|
+
!isFlyIn &&
|
|
43752
43841
|
React__default['default'].createElement(
|
|
43753
43842
|
'div',
|
|
43754
|
-
{ className: '
|
|
43843
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
43755
43844
|
React__default['default'].createElement(
|
|
43756
|
-
'
|
|
43757
|
-
|
|
43758
|
-
|
|
43759
|
-
|
|
43760
|
-
|
|
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
|
+
)
|
|
43761
43866
|
)
|
|
43762
|
-
)
|
|
43763
|
-
),
|
|
43867
|
+
),
|
|
43764
43868
|
isLoading
|
|
43765
43869
|
? React__default['default'].createElement(
|
|
43766
43870
|
React__default['default'].Fragment,
|
|
43767
43871
|
null,
|
|
43768
43872
|
(_c = context.customSpinner) !== null && _c !== void 0 ? _c : React__default['default'].createElement(Spinner, null)
|
|
43769
43873
|
)
|
|
43770
|
-
: renderHotelResults(
|
|
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
|
+
),
|
|
43771
43891
|
mappedResults.length === 0 && !isLoading && React__default['default'].createElement('div', { className: 'no-results' }, translations.SRP.NO_RESULTS)
|
|
43772
43892
|
);
|
|
43773
43893
|
};
|
|
43774
43894
|
|
|
43775
|
-
var
|
|
43776
|
-
|
|
43777
|
-
|
|
43778
|
-
|
|
43779
|
-
|
|
43780
|
-
|
|
43781
|
-
|
|
43782
|
-
|
|
43783
|
-
|
|
43784
|
-
|
|
43785
|
-
|
|
43786
|
-
|
|
43787
|
-
|
|
43788
|
-
|
|
43789
|
-
|
|
43790
|
-
|
|
43791
|
-
|
|
43792
|
-
|
|
43793
|
-
|
|
43794
|
-
|
|
43795
|
-
|
|
43796
|
-
};
|
|
43797
|
-
},
|
|
43798
|
-
[onPanelRef]
|
|
43799
|
-
);
|
|
43800
|
-
React.useEffect(
|
|
43801
|
-
function () {
|
|
43802
|
-
// click outside detection
|
|
43803
|
-
var handleClickOutside = function (event) {
|
|
43804
|
-
if (isOpen && panelRef.current && !panelRef.current.contains(event.target)) {
|
|
43805
|
-
handleClose();
|
|
43806
|
-
}
|
|
43807
|
-
};
|
|
43808
|
-
document.addEventListener('mousedown', handleClickOutside);
|
|
43809
|
-
return function () {
|
|
43810
|
-
return document.removeEventListener('mousedown', handleClickOutside);
|
|
43811
|
-
};
|
|
43812
|
-
},
|
|
43813
|
-
[isOpen, setIsOpen]
|
|
43814
|
-
);
|
|
43815
|
-
// body scroll lock
|
|
43816
|
-
React.useEffect(
|
|
43817
|
-
function () {
|
|
43818
|
-
document.body.style.overflow = isOpen ? 'hidden' : '';
|
|
43819
|
-
return function () {
|
|
43820
|
-
document.body.style.overflow = '';
|
|
43821
|
-
};
|
|
43822
|
-
},
|
|
43823
|
-
[isOpen]
|
|
43824
|
-
);
|
|
43825
|
-
var handleClose = function () {
|
|
43826
|
-
if (isOpen && panelRef.current) {
|
|
43827
|
-
if (srpType === build.PortalQsmType.Flight) {
|
|
43828
|
-
dispatch(setSelectedFlight(null));
|
|
43829
|
-
dispatch(setSelectedFlightDetails(null));
|
|
43830
|
-
onCancelSearch();
|
|
43831
|
-
} else {
|
|
43832
|
-
dispatch(setSelectedSearchResult(null));
|
|
43833
|
-
dispatch(setSelectedPackagingAccoResult(null));
|
|
43834
|
-
}
|
|
43835
|
-
dispatch(setAccommodationFlyInStep('details'));
|
|
43836
|
-
setIsOpen(false);
|
|
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);
|
|
43837
43916
|
}
|
|
43838
|
-
};
|
|
43839
|
-
|
|
43840
|
-
|
|
43841
|
-
|
|
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;
|
|
43842
43991
|
return React__default['default'].createElement(
|
|
43843
43992
|
'div',
|
|
43844
|
-
{
|
|
43845
|
-
className: 'flyin '
|
|
43846
|
-
.concat(isOpen ? 'flyin--active' : '', ' ')
|
|
43847
|
-
.concat(className, ' ')
|
|
43848
|
-
.concat(isPackageEditFlow ? 'flyin--large' : '')
|
|
43849
|
-
},
|
|
43993
|
+
{ className: 'search__result-card', key: 'flight-'.concat(item.code) },
|
|
43850
43994
|
React__default['default'].createElement(
|
|
43851
43995
|
'div',
|
|
43852
|
-
{ className: '
|
|
43996
|
+
{ className: 'flight '.concat(showSelectedState && selectedGuid === guid ? 'flight--selected' : '') },
|
|
43853
43997
|
React__default['default'].createElement(
|
|
43854
43998
|
'div',
|
|
43855
|
-
{ className: '
|
|
43999
|
+
{ className: 'flight__option' },
|
|
43856
44000
|
React__default['default'].createElement(
|
|
43857
44001
|
'div',
|
|
43858
|
-
{ className: '
|
|
43859
|
-
React__default['default'].createElement('h3', { className: 'flyin__content-title' }, title),
|
|
43860
|
-
React__default['default'].createElement(
|
|
43861
|
-
'span',
|
|
43862
|
-
{
|
|
43863
|
-
className: 'flyin__close',
|
|
43864
|
-
onClick: function () {
|
|
43865
|
-
return handleClose();
|
|
43866
|
-
}
|
|
43867
|
-
},
|
|
43868
|
-
React__default['default'].createElement(Icon, { name: 'ui-close', width: 30, height: 30, 'aria-hidden': 'true' })
|
|
43869
|
-
)
|
|
43870
|
-
),
|
|
43871
|
-
isPackageEditFlow &&
|
|
43872
|
-
accommodationStep === 'details' &&
|
|
44002
|
+
{ className: 'flight__content' },
|
|
43873
44003
|
React__default['default'].createElement(
|
|
43874
44004
|
'div',
|
|
43875
|
-
{ className: '
|
|
44005
|
+
{ className: 'flight__flights' },
|
|
43876
44006
|
React__default['default'].createElement(
|
|
43877
44007
|
'div',
|
|
43878
|
-
{
|
|
43879
|
-
React__default['default'].createElement(
|
|
43880
|
-
|
|
43881
|
-
|
|
43882
|
-
|
|
43883
|
-
|
|
43884
|
-
|
|
43885
|
-
|
|
43886
|
-
|
|
43887
|
-
|
|
43888
|
-
|
|
43889
|
-
|
|
43890
|
-
|
|
43891
|
-
|
|
43892
|
-
|
|
43893
|
-
|
|
43894
|
-
|
|
43895
|
-
|
|
43896
|
-
|
|
43897
|
-
|
|
43898
|
-
|
|
43899
|
-
|
|
43900
|
-
|
|
43901
|
-
|
|
43902
|
-
|
|
43903
|
-
|
|
43904
|
-
|
|
43905
|
-
|
|
43906
|
-
|
|
43907
|
-
|
|
43908
|
-
|
|
43909
|
-
|
|
43910
|
-
|
|
43911
|
-
|
|
43912
|
-
|
|
43913
|
-
|
|
43914
|
-
|
|
43915
|
-
|
|
43916
|
-
|
|
43917
|
-
|
|
43918
|
-
|
|
43919
|
-
|
|
43920
|
-
|
|
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
|
+
)
|
|
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' }),
|
|
44726
|
+
React__default['default'].createElement(
|
|
44727
|
+
'div',
|
|
44728
|
+
{ className: 'flyin__button-wrapper' },
|
|
44729
|
+
React__default['default'].createElement(
|
|
44730
|
+
'button',
|
|
44731
|
+
{
|
|
44732
|
+
className: 'cta cta--select',
|
|
44733
|
+
onClick: function () {
|
|
44734
|
+
return handleConfirm();
|
|
44735
|
+
}
|
|
44736
|
+
},
|
|
44737
|
+
translations.QSM.CONFIRM
|
|
44738
|
+
)
|
|
44739
|
+
)
|
|
44740
|
+
)
|
|
44741
|
+
);
|
|
44742
|
+
};
|
|
44743
|
+
|
|
44744
|
+
var FlyIn = function (_a) {
|
|
44745
|
+
var _b;
|
|
44746
|
+
var srpType = _a.srpType,
|
|
44747
|
+
isOpen = _a.isOpen,
|
|
44748
|
+
setIsOpen = _a.setIsOpen,
|
|
44749
|
+
_c = _a.className,
|
|
44750
|
+
className = _c === void 0 ? '' : _c,
|
|
44751
|
+
onPanelRef = _a.onPanelRef,
|
|
44752
|
+
detailsLoading = _a.detailsLoading,
|
|
44753
|
+
flyInType = _a.flyInType,
|
|
44754
|
+
isPackageEditFlow = _a.isPackageEditFlow,
|
|
44755
|
+
handleConfirm = _a.handleConfirm,
|
|
44756
|
+
sortByTypes = _a.sortByTypes;
|
|
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;
|
|
44769
|
+
var onCancelSearch = useFlightSearch().onCancelSearch;
|
|
44770
|
+
var panelRef = React.useRef(null);
|
|
44771
|
+
// expose DOM node if needed
|
|
44772
|
+
React.useEffect(
|
|
44773
|
+
function () {
|
|
44774
|
+
onPanelRef === null || onPanelRef === void 0 ? void 0 : onPanelRef(panelRef.current);
|
|
44775
|
+
return function () {
|
|
44776
|
+
return onPanelRef === null || onPanelRef === void 0 ? void 0 : onPanelRef(null);
|
|
44777
|
+
};
|
|
44778
|
+
},
|
|
44779
|
+
[onPanelRef]
|
|
44780
|
+
);
|
|
44781
|
+
React.useEffect(
|
|
44782
|
+
function () {
|
|
44783
|
+
// click outside detection
|
|
44784
|
+
var handleClickOutside = function (event) {
|
|
44785
|
+
if (isOpen && panelRef.current && !panelRef.current.contains(event.target)) {
|
|
44786
|
+
handleClose();
|
|
44787
|
+
}
|
|
44788
|
+
};
|
|
44789
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
44790
|
+
return function () {
|
|
44791
|
+
return document.removeEventListener('mousedown', handleClickOutside);
|
|
44792
|
+
};
|
|
44793
|
+
},
|
|
44794
|
+
[isOpen, setIsOpen]
|
|
44795
|
+
);
|
|
44796
|
+
// body scroll lock
|
|
44797
|
+
React.useEffect(
|
|
44798
|
+
function () {
|
|
44799
|
+
document.body.style.overflow = isOpen ? 'hidden' : '';
|
|
44800
|
+
return function () {
|
|
44801
|
+
document.body.style.overflow = '';
|
|
44802
|
+
};
|
|
44803
|
+
},
|
|
44804
|
+
[isOpen]
|
|
44805
|
+
);
|
|
44806
|
+
var handleClose = function () {
|
|
44807
|
+
if (isOpen && panelRef.current) {
|
|
44808
|
+
if (srpType === build.PortalQsmType.Flight) {
|
|
44809
|
+
dispatch(setSelectedFlight(null));
|
|
44810
|
+
dispatch(setSelectedFlightDetails(null));
|
|
44811
|
+
onCancelSearch();
|
|
44812
|
+
} else {
|
|
44813
|
+
dispatch(setSelectedSearchResult(null));
|
|
44814
|
+
dispatch(setSelectedPackagingAccoResult(null));
|
|
44815
|
+
}
|
|
44816
|
+
dispatch(setFlyInType('acco-details'));
|
|
44817
|
+
setIsOpen(false);
|
|
44818
|
+
}
|
|
44819
|
+
};
|
|
44820
|
+
var handleGoBack = function () {
|
|
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
|
+
}
|
|
44829
|
+
};
|
|
44830
|
+
return React__default['default'].createElement(
|
|
44831
|
+
'div',
|
|
44832
|
+
{
|
|
44833
|
+
className: 'flyin '
|
|
44834
|
+
.concat(isOpen ? 'flyin--active' : '', ' ')
|
|
44835
|
+
.concat(className, ' ')
|
|
44836
|
+
.concat(
|
|
44837
|
+
isPackageEditFlow || flyInType === 'flight-outward-results' || flyInType === 'flight-return-results' || flyInType === 'acco-results'
|
|
44838
|
+
? 'flyin--large'
|
|
44839
|
+
: ''
|
|
44840
|
+
)
|
|
44841
|
+
},
|
|
44842
|
+
React__default['default'].createElement(
|
|
44843
|
+
'div',
|
|
44844
|
+
{ className: 'flyin__panel '.concat(isOpen ? 'flyin__panel--active' : ''), ref: panelRef },
|
|
44845
|
+
React__default['default'].createElement(
|
|
44846
|
+
'div',
|
|
44847
|
+
{ className: 'flyin__content' },
|
|
44848
|
+
React__default['default'].createElement(
|
|
44849
|
+
'div',
|
|
44850
|
+
{ className: 'flyin__content-title-row' },
|
|
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
|
+
),
|
|
44867
|
+
React__default['default'].createElement(
|
|
44868
|
+
'span',
|
|
44869
|
+
{
|
|
44870
|
+
className: 'flyin__close',
|
|
44871
|
+
onClick: function () {
|
|
44872
|
+
return handleClose();
|
|
44873
|
+
}
|
|
44874
|
+
},
|
|
44875
|
+
React__default['default'].createElement(Icon, { name: 'ui-close', width: 30, height: 30, 'aria-hidden': 'true' })
|
|
44876
|
+
)
|
|
44877
|
+
),
|
|
44878
|
+
isPackageEditFlow &&
|
|
44879
|
+
flyInType === 'acco-details' &&
|
|
44880
|
+
React__default['default'].createElement(
|
|
44881
|
+
'div',
|
|
44882
|
+
{ className: 'flyin__content-title-row' },
|
|
44883
|
+
React__default['default'].createElement(
|
|
44884
|
+
'div',
|
|
44885
|
+
{ onClick: handleGoBack, className: 'flyin__content-title__back' },
|
|
44886
|
+
React__default['default'].createElement(Icon, { name: 'ui-chevron', width: 14, height: 14, 'aria-hidden': 'true' }),
|
|
44887
|
+
'Go Back'
|
|
44888
|
+
)
|
|
44889
|
+
)
|
|
44890
|
+
),
|
|
44891
|
+
srpType === build.PortalQsmType.Flight && React__default['default'].createElement(FlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
|
|
44892
|
+
(srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.AccommodationAndFlight) &&
|
|
44893
|
+
flyInType === 'acco-results' &&
|
|
44894
|
+
React__default['default'].createElement(
|
|
44895
|
+
'div',
|
|
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
|
+
)
|
|
44953
|
+
),
|
|
44954
|
+
(srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.AccommodationAndFlight) &&
|
|
44955
|
+
flyInType === 'acco-details' &&
|
|
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 }),
|
|
44960
|
+
srpType === build.PortalQsmType.GroupTour &&
|
|
44961
|
+
React__default['default'].createElement(GroupTourFlyIn, { isLoading: detailsLoading, isOpen: isOpen, setIsOpen: setIsOpen })
|
|
44962
|
+
)
|
|
44963
|
+
);
|
|
44964
|
+
};
|
|
44965
|
+
|
|
44966
|
+
var RoundTripResults = function () {
|
|
44967
|
+
var activeTab = reactRedux.useSelector(function (state) {
|
|
44968
|
+
return state.searchResults;
|
|
44969
|
+
}).activeTab;
|
|
44970
|
+
var dispatch = reactRedux.useDispatch();
|
|
44971
|
+
React.useEffect(
|
|
44972
|
+
function () {
|
|
44973
|
+
if (activeTab === 'compact') {
|
|
44974
|
+
dispatch(setActiveTab('list'));
|
|
44975
|
+
}
|
|
44976
|
+
},
|
|
44977
|
+
[activeTab]
|
|
44978
|
+
);
|
|
44979
|
+
return React__default['default'].createElement(
|
|
44980
|
+
'div',
|
|
44981
|
+
{ className: 'search__results__cards search__results__cards--'.concat(activeTab) },
|
|
44982
|
+
React__default['default'].createElement(
|
|
44983
|
+
'div',
|
|
44984
|
+
{ className: 'search__result-card' },
|
|
44985
|
+
React__default['default'].createElement(
|
|
43921
44986
|
'div',
|
|
43922
44987
|
{ className: 'search__result-card__allotment' },
|
|
43923
44988
|
React__default['default'].createElement(
|
|
@@ -44214,238 +45279,65 @@ var PairedFlightOption = function (_a) {
|
|
|
44214
45279
|
var _v = React.useState(false),
|
|
44215
45280
|
isOutwardOpen = _v[0],
|
|
44216
45281
|
setIsOutwardOpen = _v[1];
|
|
44217
|
-
var _w = React.useState(false),
|
|
44218
|
-
isReturnOpen = _w[0],
|
|
44219
|
-
setIsReturnOpen = _w[1];
|
|
44220
|
-
var handleSelect = function (flight) {
|
|
44221
|
-
dispatch(setSelectedFlight(flight));
|
|
44222
|
-
onFlightSearch(flight); // Trigger search to update accommodation options based on selected flight
|
|
44223
|
-
dispatch(setFlyInIsOpen(true));
|
|
44224
|
-
};
|
|
44225
|
-
return React__default['default'].createElement(
|
|
44226
|
-
'div',
|
|
44227
|
-
{ className: 'search__result-card', key: 'flight-'.concat(item.guid) },
|
|
44228
|
-
React__default['default'].createElement(
|
|
44229
|
-
'div',
|
|
44230
|
-
{ className: 'flight' },
|
|
44231
|
-
React__default['default'].createElement(
|
|
44232
|
-
'div',
|
|
44233
|
-
{ className: 'flight__option' },
|
|
44234
|
-
React__default['default'].createElement(
|
|
44235
|
-
'div',
|
|
44236
|
-
{ className: 'flight__content' },
|
|
44237
|
-
React__default['default'].createElement(
|
|
44238
|
-
'div',
|
|
44239
|
-
{ className: 'flight__flights' },
|
|
44240
|
-
React__default['default'].createElement(
|
|
44241
|
-
'div',
|
|
44242
|
-
{ className: 'flight__flight' },
|
|
44243
|
-
React__default['default'].createElement(
|
|
44244
|
-
'div',
|
|
44245
|
-
{ className: 'flight__flight__header' },
|
|
44246
|
-
React__default['default'].createElement('div', { className: 'flight__status__container' }),
|
|
44247
|
-
React__default['default'].createElement(
|
|
44248
|
-
'div',
|
|
44249
|
-
{ className: 'flight__price' },
|
|
44250
|
-
React__default['default'].createElement(
|
|
44251
|
-
'span',
|
|
44252
|
-
{ className: 'price' },
|
|
44253
|
-
formatPrice$2(
|
|
44254
|
-
item.price,
|
|
44255
|
-
'EUR',
|
|
44256
|
-
(_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
|
|
44257
|
-
)
|
|
44258
|
-
),
|
|
44259
|
-
React__default['default'].createElement(
|
|
44260
|
-
'button',
|
|
44261
|
-
{
|
|
44262
|
-
type: 'button',
|
|
44263
|
-
className: 'cta '.concat(
|
|
44264
|
-
(selectedFlight === null || selectedFlight === void 0 ? void 0 : selectedFlight.guid) === item.guid ? 'cta--selected' : 'cta--select'
|
|
44265
|
-
),
|
|
44266
|
-
onClick: function () {
|
|
44267
|
-
return handleSelect(item);
|
|
44268
|
-
}
|
|
44269
|
-
},
|
|
44270
|
-
(selectedFlight === null || selectedFlight === void 0 ? void 0 : selectedFlight.guid) === item.guid ? 'Selected' : 'Select'
|
|
44271
|
-
)
|
|
44272
|
-
)
|
|
44273
|
-
)
|
|
44274
|
-
),
|
|
44275
|
-
item.outward &&
|
|
44276
|
-
React__default['default'].createElement(
|
|
44277
|
-
'div',
|
|
44278
|
-
{ className: 'flight__flight' },
|
|
44279
|
-
React__default['default'].createElement(
|
|
44280
|
-
'div',
|
|
44281
|
-
{ className: 'flight__flight__container' },
|
|
44282
|
-
React__default['default'].createElement(
|
|
44283
|
-
'div',
|
|
44284
|
-
{ className: 'flight__flight__wrapper' },
|
|
44285
|
-
React__default['default'].createElement(
|
|
44286
|
-
'div',
|
|
44287
|
-
{ className: 'flight__logo__wrapper' },
|
|
44288
|
-
React__default['default'].createElement('img', {
|
|
44289
|
-
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
|
|
44290
|
-
(_d = getDepartureSegment(item.outward)) === null || _d === void 0 ? void 0 : _d.marketingAirlineCode,
|
|
44291
|
-
'.png?height=256'
|
|
44292
|
-
),
|
|
44293
|
-
alt: '',
|
|
44294
|
-
className: 'flight__logo'
|
|
44295
|
-
}),
|
|
44296
|
-
React__default['default'].createElement(
|
|
44297
|
-
'span',
|
|
44298
|
-
null,
|
|
44299
|
-
(_e = getDepartureSegment(item.outward)) === null || _e === void 0 ? void 0 : _e.marketingAirlineName
|
|
44300
|
-
)
|
|
44301
|
-
),
|
|
44302
|
-
React__default['default'].createElement(
|
|
44303
|
-
'div',
|
|
44304
|
-
{ className: 'flight__info' },
|
|
44305
|
-
React__default['default'].createElement(
|
|
44306
|
-
'div',
|
|
44307
|
-
{ className: 'flight__info__times' },
|
|
44308
|
-
React__default['default'].createElement(
|
|
44309
|
-
'strong',
|
|
44310
|
-
null,
|
|
44311
|
-
timeFromDateTime((_f = getDepartureSegment(item.outward)) === null || _f === void 0 ? void 0 : _f.departureDateTime),
|
|
44312
|
-
' ',
|
|
44313
|
-
(_g = getDepartureSegment(item.outward)) === null || _g === void 0 ? void 0 : _g.departureAirportCode
|
|
44314
|
-
),
|
|
44315
|
-
React__default['default'].createElement(
|
|
44316
|
-
'p',
|
|
44317
|
-
null,
|
|
44318
|
-
longFormatDate((_h = getDepartureSegment(item.outward)) === null || _h === void 0 ? void 0 : _h.departureDateTime, language)
|
|
44319
|
-
)
|
|
44320
|
-
),
|
|
44321
|
-
React__default['default'].createElement(
|
|
44322
|
-
'div',
|
|
44323
|
-
{ className: 'flight__info__duration' },
|
|
44324
|
-
React__default['default'].createElement('p', null, durationTicksInHoursString(item.outward.durationInTicks)),
|
|
44325
|
-
React__default['default'].createElement(
|
|
44326
|
-
'div',
|
|
44327
|
-
{ className: 'flight__info__duration__stops' },
|
|
44328
|
-
React__default['default'].createElement('div', { className: 'flight__info__duration__stop' })
|
|
44329
|
-
),
|
|
44330
|
-
React__default['default'].createElement(
|
|
44331
|
-
'span',
|
|
44332
|
-
null,
|
|
44333
|
-
getNumberOfStopsLabel(item.outward, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
|
|
44334
|
-
)
|
|
44335
|
-
),
|
|
44336
|
-
React__default['default'].createElement(
|
|
44337
|
-
'div',
|
|
44338
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44339
|
-
React__default['default'].createElement(
|
|
44340
|
-
'strong',
|
|
44341
|
-
null,
|
|
44342
|
-
timeFromDateTime((_j = getArrivalSegment(item.outward)) === null || _j === void 0 ? void 0 : _j.arrivalDateTime),
|
|
44343
|
-
' ',
|
|
44344
|
-
(_k = getArrivalSegment(item.outward)) === null || _k === void 0 ? void 0 : _k.arrivalAirportCode
|
|
44345
|
-
),
|
|
44346
|
-
React__default['default'].createElement(
|
|
44347
|
-
'p',
|
|
44348
|
-
null,
|
|
44349
|
-
longFormatDate((_l = getArrivalSegment(item.outward)) === null || _l === void 0 ? void 0 : _l.arrivalDateTime, language)
|
|
44350
|
-
)
|
|
44351
|
-
)
|
|
44352
|
-
)
|
|
44353
|
-
),
|
|
44354
|
-
React__default['default'].createElement(
|
|
44355
|
-
'div',
|
|
44356
|
-
{ className: 'flight__detail__btn__wrapper' },
|
|
44357
|
-
React__default['default'].createElement(
|
|
44358
|
-
'div',
|
|
44359
|
-
{
|
|
44360
|
-
className: 'flight__detail__btn '.concat(isOutwardOpen ? 'flight__detail__btn--active' : ''),
|
|
44361
|
-
onClick: function () {
|
|
44362
|
-
return setIsOutwardOpen(function (prev) {
|
|
44363
|
-
return !prev;
|
|
44364
|
-
});
|
|
44365
|
-
}
|
|
44366
|
-
},
|
|
44367
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
|
|
44368
|
-
)
|
|
44369
|
-
)
|
|
44370
|
-
),
|
|
44371
|
-
React__default['default'].createElement(
|
|
44372
|
-
'div',
|
|
44373
|
-
{ className: 'flight__detail '.concat(isOutwardOpen ? 'flight__detail--active' : '') },
|
|
44374
|
-
getFlightSegments(item.outward).map(function (segment, index) {
|
|
44375
|
-
return React__default['default'].createElement(
|
|
44376
|
-
React__default['default'].Fragment,
|
|
44377
|
-
{ key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
|
|
44378
|
-
React__default['default'].createElement(
|
|
44379
|
-
'div',
|
|
44380
|
-
{ className: 'flight__info' },
|
|
44381
|
-
React__default['default'].createElement(
|
|
44382
|
-
'div',
|
|
44383
|
-
{ className: 'flight__info__times__wrapper' },
|
|
44384
|
-
React__default['default'].createElement(
|
|
44385
|
-
'div',
|
|
44386
|
-
{ className: 'flight__info__times' },
|
|
44387
|
-
React__default['default'].createElement('p', null, timeFromDateTime(segment.departureDateTime)),
|
|
44388
|
-
React__default['default'].createElement('strong', null, segment.departureAirportCode),
|
|
44389
|
-
React__default['default'].createElement('p', null, longFormatDate(segment.departureDateTime, language))
|
|
44390
|
-
),
|
|
44391
|
-
React__default['default'].createElement(
|
|
44392
|
-
'div',
|
|
44393
|
-
null,
|
|
44394
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 })
|
|
44395
|
-
)
|
|
44396
|
-
),
|
|
44397
|
-
React__default['default'].createElement(
|
|
44398
|
-
'div',
|
|
44399
|
-
{ className: 'flight__info__duration' },
|
|
44400
|
-
React__default['default'].createElement('p', null, durationTicksInHoursString(segment.durationInTicks)),
|
|
44401
|
-
React__default['default'].createElement('div', { className: 'flight__info__duration__stops' }),
|
|
44402
|
-
React__default['default'].createElement('span', null, segment.marketingAirlineName),
|
|
44403
|
-
React__default['default'].createElement('strong', null, segment.operatingFlightNumber)
|
|
44404
|
-
),
|
|
44405
|
-
React__default['default'].createElement(
|
|
44406
|
-
'div',
|
|
44407
|
-
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
44408
|
-
React__default['default'].createElement(
|
|
44409
|
-
'div',
|
|
44410
|
-
null,
|
|
44411
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })
|
|
44412
|
-
),
|
|
44413
|
-
React__default['default'].createElement(
|
|
44414
|
-
'div',
|
|
44415
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44416
|
-
React__default['default'].createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
44417
|
-
React__default['default'].createElement('strong', null, segment.arrivalAirportCode),
|
|
44418
|
-
React__default['default'].createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
44419
|
-
)
|
|
44420
|
-
)
|
|
45282
|
+
var _w = React.useState(false),
|
|
45283
|
+
isReturnOpen = _w[0],
|
|
45284
|
+
setIsReturnOpen = _w[1];
|
|
45285
|
+
var handleSelect = function (flight) {
|
|
45286
|
+
dispatch(setSelectedFlight(flight));
|
|
45287
|
+
onFlightSearch(flight); // Trigger search to update accommodation options based on selected flight
|
|
45288
|
+
dispatch(setFlyInIsOpen(true));
|
|
45289
|
+
};
|
|
45290
|
+
return React__default['default'].createElement(
|
|
45291
|
+
'div',
|
|
45292
|
+
{ className: 'search__result-card', key: 'flight-'.concat(item.guid) },
|
|
45293
|
+
React__default['default'].createElement(
|
|
45294
|
+
'div',
|
|
45295
|
+
{ className: 'flight' },
|
|
45296
|
+
React__default['default'].createElement(
|
|
45297
|
+
'div',
|
|
45298
|
+
{ className: 'flight__option' },
|
|
45299
|
+
React__default['default'].createElement(
|
|
45300
|
+
'div',
|
|
45301
|
+
{ className: 'flight__content' },
|
|
45302
|
+
React__default['default'].createElement(
|
|
45303
|
+
'div',
|
|
45304
|
+
{ className: 'flight__flights' },
|
|
45305
|
+
React__default['default'].createElement(
|
|
45306
|
+
'div',
|
|
45307
|
+
{ className: 'flight__flight' },
|
|
45308
|
+
React__default['default'].createElement(
|
|
45309
|
+
'div',
|
|
45310
|
+
{ className: 'flight__flight__header' },
|
|
45311
|
+
React__default['default'].createElement('div', { className: 'flight__status__container' }),
|
|
45312
|
+
React__default['default'].createElement(
|
|
45313
|
+
'div',
|
|
45314
|
+
{ className: 'flight__price' },
|
|
45315
|
+
React__default['default'].createElement(
|
|
45316
|
+
'span',
|
|
45317
|
+
{ className: 'price' },
|
|
45318
|
+
formatPrice$2(
|
|
45319
|
+
item.price,
|
|
45320
|
+
'EUR',
|
|
45321
|
+
(_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
|
|
45322
|
+
)
|
|
45323
|
+
),
|
|
45324
|
+
React__default['default'].createElement(
|
|
45325
|
+
'button',
|
|
45326
|
+
{
|
|
45327
|
+
type: 'button',
|
|
45328
|
+
className: 'cta '.concat(
|
|
45329
|
+
(selectedFlight === null || selectedFlight === void 0 ? void 0 : selectedFlight.guid) === item.guid ? 'cta--selected' : 'cta--select'
|
|
44421
45330
|
),
|
|
44422
|
-
|
|
44423
|
-
|
|
44424
|
-
|
|
44425
|
-
|
|
44426
|
-
|
|
44427
|
-
|
|
44428
|
-
'div',
|
|
44429
|
-
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44430
|
-
React__default['default'].createElement(
|
|
44431
|
-
'div',
|
|
44432
|
-
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44433
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44434
|
-
),
|
|
44435
|
-
React__default['default'].createElement(
|
|
44436
|
-
'div',
|
|
44437
|
-
{ className: 'flight__info__duration__stoptime' },
|
|
44438
|
-
React__default['default'].createElement('span', null, 'Stop time'),
|
|
44439
|
-
React__default['default'].createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
44440
|
-
)
|
|
44441
|
-
),
|
|
44442
|
-
React__default['default'].createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
44443
|
-
)
|
|
44444
|
-
);
|
|
44445
|
-
})
|
|
45331
|
+
onClick: function () {
|
|
45332
|
+
return handleSelect(item);
|
|
45333
|
+
}
|
|
45334
|
+
},
|
|
45335
|
+
(selectedFlight === null || selectedFlight === void 0 ? void 0 : selectedFlight.guid) === item.guid ? 'Selected' : 'Select'
|
|
45336
|
+
)
|
|
44446
45337
|
)
|
|
44447
|
-
)
|
|
44448
|
-
|
|
45338
|
+
)
|
|
45339
|
+
),
|
|
45340
|
+
item.outward &&
|
|
44449
45341
|
React__default['default'].createElement(
|
|
44450
45342
|
'div',
|
|
44451
45343
|
{ className: 'flight__flight' },
|
|
@@ -44460,7 +45352,7 @@ var PairedFlightOption = function (_a) {
|
|
|
44460
45352
|
{ className: 'flight__logo__wrapper' },
|
|
44461
45353
|
React__default['default'].createElement('img', {
|
|
44462
45354
|
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
|
|
44463
|
-
(
|
|
45355
|
+
(_d = getDepartureSegment(item.outward)) === null || _d === void 0 ? void 0 : _d.marketingAirlineCode,
|
|
44464
45356
|
'.png?height=256'
|
|
44465
45357
|
),
|
|
44466
45358
|
alt: '',
|
|
@@ -44469,7 +45361,7 @@ var PairedFlightOption = function (_a) {
|
|
|
44469
45361
|
React__default['default'].createElement(
|
|
44470
45362
|
'span',
|
|
44471
45363
|
null,
|
|
44472
|
-
(
|
|
45364
|
+
(_e = getDepartureSegment(item.outward)) === null || _e === void 0 ? void 0 : _e.marketingAirlineName
|
|
44473
45365
|
)
|
|
44474
45366
|
),
|
|
44475
45367
|
React__default['default'].createElement(
|
|
@@ -44481,20 +45373,20 @@ var PairedFlightOption = function (_a) {
|
|
|
44481
45373
|
React__default['default'].createElement(
|
|
44482
45374
|
'strong',
|
|
44483
45375
|
null,
|
|
44484
|
-
timeFromDateTime((
|
|
45376
|
+
timeFromDateTime((_f = getDepartureSegment(item.outward)) === null || _f === void 0 ? void 0 : _f.departureDateTime),
|
|
44485
45377
|
' ',
|
|
44486
|
-
(
|
|
45378
|
+
(_g = getDepartureSegment(item.outward)) === null || _g === void 0 ? void 0 : _g.departureAirportCode
|
|
44487
45379
|
),
|
|
44488
45380
|
React__default['default'].createElement(
|
|
44489
45381
|
'p',
|
|
44490
45382
|
null,
|
|
44491
|
-
longFormatDate((
|
|
45383
|
+
longFormatDate((_h = getDepartureSegment(item.outward)) === null || _h === void 0 ? void 0 : _h.departureDateTime, language)
|
|
44492
45384
|
)
|
|
44493
45385
|
),
|
|
44494
45386
|
React__default['default'].createElement(
|
|
44495
45387
|
'div',
|
|
44496
45388
|
{ className: 'flight__info__duration' },
|
|
44497
|
-
React__default['default'].createElement('p', null, durationTicksInHoursString(item.
|
|
45389
|
+
React__default['default'].createElement('p', null, durationTicksInHoursString(item.outward.durationInTicks)),
|
|
44498
45390
|
React__default['default'].createElement(
|
|
44499
45391
|
'div',
|
|
44500
45392
|
{ className: 'flight__info__duration__stops' },
|
|
@@ -44503,7 +45395,7 @@ var PairedFlightOption = function (_a) {
|
|
|
44503
45395
|
React__default['default'].createElement(
|
|
44504
45396
|
'span',
|
|
44505
45397
|
null,
|
|
44506
|
-
getNumberOfStopsLabel(item.
|
|
45398
|
+
getNumberOfStopsLabel(item.outward, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
|
|
44507
45399
|
)
|
|
44508
45400
|
),
|
|
44509
45401
|
React__default['default'].createElement(
|
|
@@ -44512,14 +45404,14 @@ var PairedFlightOption = function (_a) {
|
|
|
44512
45404
|
React__default['default'].createElement(
|
|
44513
45405
|
'strong',
|
|
44514
45406
|
null,
|
|
44515
|
-
timeFromDateTime((
|
|
45407
|
+
timeFromDateTime((_j = getArrivalSegment(item.outward)) === null || _j === void 0 ? void 0 : _j.arrivalDateTime),
|
|
44516
45408
|
' ',
|
|
44517
|
-
(
|
|
45409
|
+
(_k = getArrivalSegment(item.outward)) === null || _k === void 0 ? void 0 : _k.arrivalAirportCode
|
|
44518
45410
|
),
|
|
44519
45411
|
React__default['default'].createElement(
|
|
44520
45412
|
'p',
|
|
44521
45413
|
null,
|
|
44522
|
-
longFormatDate((
|
|
45414
|
+
longFormatDate((_l = getArrivalSegment(item.outward)) === null || _l === void 0 ? void 0 : _l.arrivalDateTime, language)
|
|
44523
45415
|
)
|
|
44524
45416
|
)
|
|
44525
45417
|
)
|
|
@@ -44530,9 +45422,9 @@ var PairedFlightOption = function (_a) {
|
|
|
44530
45422
|
React__default['default'].createElement(
|
|
44531
45423
|
'div',
|
|
44532
45424
|
{
|
|
44533
|
-
className: 'flight__detail__btn '.concat(
|
|
45425
|
+
className: 'flight__detail__btn '.concat(isOutwardOpen ? 'flight__detail__btn--active' : ''),
|
|
44534
45426
|
onClick: function () {
|
|
44535
|
-
return
|
|
45427
|
+
return setIsOutwardOpen(function (prev) {
|
|
44536
45428
|
return !prev;
|
|
44537
45429
|
});
|
|
44538
45430
|
}
|
|
@@ -44543,11 +45435,11 @@ var PairedFlightOption = function (_a) {
|
|
|
44543
45435
|
),
|
|
44544
45436
|
React__default['default'].createElement(
|
|
44545
45437
|
'div',
|
|
44546
|
-
{ className: 'flight__detail '.concat(
|
|
44547
|
-
getFlightSegments(item.
|
|
45438
|
+
{ className: 'flight__detail '.concat(isOutwardOpen ? 'flight__detail--active' : '') },
|
|
45439
|
+
getFlightSegments(item.outward).map(function (segment, index) {
|
|
44548
45440
|
return React__default['default'].createElement(
|
|
44549
45441
|
React__default['default'].Fragment,
|
|
44550
|
-
{ key: '
|
|
45442
|
+
{ key: 'outward-segment-'.concat(index, '-').concat(segment.flightNumber) },
|
|
44551
45443
|
React__default['default'].createElement(
|
|
44552
45444
|
'div',
|
|
44553
45445
|
{ className: 'flight__info' },
|
|
@@ -44574,352 +45466,223 @@ var PairedFlightOption = function (_a) {
|
|
|
44574
45466
|
React__default['default'].createElement('div', { className: 'flight__info__duration__stops' }),
|
|
44575
45467
|
React__default['default'].createElement('span', null, segment.marketingAirlineName),
|
|
44576
45468
|
React__default['default'].createElement('strong', null, segment.operatingFlightNumber)
|
|
44577
|
-
),
|
|
44578
|
-
React__default['default'].createElement(
|
|
44579
|
-
'div',
|
|
44580
|
-
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
44581
|
-
React__default['default'].createElement(
|
|
44582
|
-
'div',
|
|
44583
|
-
null,
|
|
44584
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })
|
|
44585
|
-
),
|
|
44586
|
-
React__default['default'].createElement(
|
|
44587
|
-
'div',
|
|
44588
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44589
|
-
React__default['default'].createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
44590
|
-
React__default['default'].createElement('strong', null, segment.arrivalAirportCode),
|
|
44591
|
-
React__default['default'].createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
44592
|
-
)
|
|
44593
|
-
)
|
|
44594
|
-
),
|
|
44595
|
-
segment.transferTimeInTicks &&
|
|
44596
|
-
React__default['default'].createElement(
|
|
44597
|
-
'div',
|
|
44598
|
-
{ className: 'flight__info' },
|
|
44599
|
-
React__default['default'].createElement('div', { className: 'flight__info__times' }),
|
|
44600
|
-
React__default['default'].createElement(
|
|
44601
|
-
'div',
|
|
44602
|
-
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44603
|
-
React__default['default'].createElement(
|
|
44604
|
-
'div',
|
|
44605
|
-
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44606
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44607
|
-
),
|
|
44608
|
-
React__default['default'].createElement(
|
|
44609
|
-
'div',
|
|
44610
|
-
{ className: 'flight__info__duration__stoptime' },
|
|
44611
|
-
React__default['default'].createElement('span', null, 'Stop time'),
|
|
44612
|
-
React__default['default'].createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
44613
|
-
)
|
|
44614
|
-
),
|
|
44615
|
-
React__default['default'].createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
44616
|
-
)
|
|
44617
|
-
);
|
|
44618
|
-
})
|
|
44619
|
-
)
|
|
44620
|
-
)
|
|
44621
|
-
)
|
|
44622
|
-
)
|
|
44623
|
-
)
|
|
44624
|
-
)
|
|
44625
|
-
);
|
|
44626
|
-
};
|
|
44627
|
-
|
|
44628
|
-
var PairedFlightSelection = function (_a) {
|
|
44629
|
-
var _b;
|
|
44630
|
-
var searchResults = _a.searchResults;
|
|
44631
|
-
var context = React.useContext(SearchResultsConfigurationContext);
|
|
44632
|
-
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
44633
|
-
return React__default['default'].createElement(
|
|
44634
|
-
React__default['default'].Fragment,
|
|
44635
|
-
null,
|
|
44636
|
-
React__default['default'].createElement(
|
|
44637
|
-
'div',
|
|
44638
|
-
{ className: 'search__results__label search__results__label--secondary' },
|
|
44639
|
-
React__default['default'].createElement(
|
|
44640
|
-
'div',
|
|
44641
|
-
{ className: 'search__results__label__date' },
|
|
44642
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
|
|
44643
|
-
),
|
|
44644
|
-
React__default['default'].createElement(
|
|
44645
|
-
'div',
|
|
44646
|
-
{ className: 'search__results__label__text' },
|
|
44647
|
-
React__default['default'].createElement(
|
|
44648
|
-
'h3',
|
|
44649
|
-
null,
|
|
44650
|
-
translations.SRP.SELECT,
|
|
44651
|
-
' ',
|
|
44652
|
-
React__default['default'].createElement('strong', null, ' ', translations.SIDEBAR.FLIGHT)
|
|
44653
|
-
)
|
|
44654
|
-
)
|
|
44655
|
-
),
|
|
44656
|
-
React__default['default'].createElement(
|
|
44657
|
-
'div',
|
|
44658
|
-
{ className: 'search__results__cards search__results__cards--extended' },
|
|
44659
|
-
searchResults.map(function (result) {
|
|
44660
|
-
return React__default['default'].createElement(PairedFlightOption, { key: 'flight-'.concat(result.guid), item: result });
|
|
44661
|
-
})
|
|
44662
|
-
)
|
|
44663
|
-
);
|
|
44664
|
-
};
|
|
44665
|
-
|
|
44666
|
-
var IndependentFlightOption = function (_a) {
|
|
44667
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
44668
|
-
var item = _a.item,
|
|
44669
|
-
onSelect = _a.onSelect,
|
|
44670
|
-
guid = _a.guid,
|
|
44671
|
-
selectedGuid = _a.selectedGuid,
|
|
44672
|
-
isOutward = _a.isOutward,
|
|
44673
|
-
showSelectedState = _a.showSelectedState,
|
|
44674
|
-
currentSelectedPrice = _a.currentSelectedPrice,
|
|
44675
|
-
price = _a.price;
|
|
44676
|
-
var context = React.useContext(SearchResultsConfigurationContext);
|
|
44677
|
-
var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
|
|
44678
|
-
var translations = getTranslations(language);
|
|
44679
|
-
var _p = React.useState(false),
|
|
44680
|
-
detailsOpen = _p[0],
|
|
44681
|
-
setDetailsOpen = _p[1];
|
|
44682
|
-
var priceDifference = price && currentSelectedPrice ? price - currentSelectedPrice : null;
|
|
44683
|
-
return React__default['default'].createElement(
|
|
44684
|
-
'div',
|
|
44685
|
-
{ className: 'search__result-card', key: 'flight-'.concat(item.code) },
|
|
44686
|
-
React__default['default'].createElement(
|
|
44687
|
-
'div',
|
|
44688
|
-
{ className: 'flight '.concat(showSelectedState && selectedGuid === guid ? 'flight--selected' : '') },
|
|
44689
|
-
React__default['default'].createElement(
|
|
44690
|
-
'div',
|
|
44691
|
-
{ className: 'flight__option' },
|
|
44692
|
-
React__default['default'].createElement(
|
|
44693
|
-
'div',
|
|
44694
|
-
{ className: 'flight__content' },
|
|
44695
|
-
React__default['default'].createElement(
|
|
44696
|
-
'div',
|
|
44697
|
-
{ className: 'flight__flights' },
|
|
44698
|
-
React__default['default'].createElement(
|
|
44699
|
-
'div',
|
|
44700
|
-
{ className: 'flight__flight' },
|
|
44701
|
-
React__default['default'].createElement(
|
|
44702
|
-
'div',
|
|
44703
|
-
{ className: 'flight__flight__header' },
|
|
44704
|
-
React__default['default'].createElement('div', { className: 'flight__status__container' }),
|
|
44705
|
-
React__default['default'].createElement(
|
|
44706
|
-
'div',
|
|
44707
|
-
{ className: 'flight__price' },
|
|
44708
|
-
price != null &&
|
|
44709
|
-
price > 0 &&
|
|
44710
|
-
(isOutward
|
|
44711
|
-
? React__default['default'].createElement(
|
|
44712
|
-
'span',
|
|
44713
|
-
{ className: 'price' },
|
|
44714
|
-
translations.QSM.ROUNDTRIP + ' ' + translations.SRP.PRICE,
|
|
44715
|
-
'\u00A0',
|
|
44716
|
-
formatPrice$2(
|
|
44717
|
-
price,
|
|
44718
|
-
'EUR',
|
|
44719
|
-
(_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
|
|
45469
|
+
),
|
|
45470
|
+
React__default['default'].createElement(
|
|
45471
|
+
'div',
|
|
45472
|
+
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
45473
|
+
React__default['default'].createElement(
|
|
45474
|
+
'div',
|
|
45475
|
+
null,
|
|
45476
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })
|
|
45477
|
+
),
|
|
45478
|
+
React__default['default'].createElement(
|
|
45479
|
+
'div',
|
|
45480
|
+
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
45481
|
+
React__default['default'].createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
45482
|
+
React__default['default'].createElement('strong', null, segment.arrivalAirportCode),
|
|
45483
|
+
React__default['default'].createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
44720
45484
|
)
|
|
44721
45485
|
)
|
|
44722
|
-
|
|
44723
|
-
|
|
45486
|
+
),
|
|
45487
|
+
segment.transferTimeInTicks &&
|
|
44724
45488
|
React__default['default'].createElement(
|
|
44725
|
-
'
|
|
44726
|
-
{ className: '
|
|
44727
|
-
|
|
44728
|
-
'
|
|
44729
|
-
|
|
44730
|
-
|
|
44731
|
-
'
|
|
44732
|
-
|
|
44733
|
-
|
|
44734
|
-
|
|
44735
|
-
|
|
44736
|
-
|
|
44737
|
-
|
|
44738
|
-
|
|
44739
|
-
|
|
44740
|
-
|
|
44741
|
-
|
|
44742
|
-
|
|
44743
|
-
|
|
44744
|
-
|
|
44745
|
-
|
|
45489
|
+
'div',
|
|
45490
|
+
{ className: 'flight__info' },
|
|
45491
|
+
React__default['default'].createElement('div', { className: 'flight__info__times' }),
|
|
45492
|
+
React__default['default'].createElement(
|
|
45493
|
+
'div',
|
|
45494
|
+
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
45495
|
+
React__default['default'].createElement(
|
|
45496
|
+
'div',
|
|
45497
|
+
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
45498
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
45499
|
+
),
|
|
45500
|
+
React__default['default'].createElement(
|
|
45501
|
+
'div',
|
|
45502
|
+
{ className: 'flight__info__duration__stoptime' },
|
|
45503
|
+
React__default['default'].createElement('span', null, 'Stop time'),
|
|
45504
|
+
React__default['default'].createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
45505
|
+
)
|
|
45506
|
+
),
|
|
45507
|
+
React__default['default'].createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
45508
|
+
)
|
|
45509
|
+
);
|
|
45510
|
+
})
|
|
44746
45511
|
)
|
|
44747
|
-
)
|
|
44748
|
-
|
|
44749
|
-
React__default['default'].createElement(
|
|
44750
|
-
'div',
|
|
44751
|
-
{ className: 'flight__flight' },
|
|
45512
|
+
),
|
|
45513
|
+
item.return &&
|
|
44752
45514
|
React__default['default'].createElement(
|
|
44753
45515
|
'div',
|
|
44754
|
-
{ className: '
|
|
45516
|
+
{ className: 'flight__flight' },
|
|
44755
45517
|
React__default['default'].createElement(
|
|
44756
45518
|
'div',
|
|
44757
|
-
{ className: '
|
|
44758
|
-
React__default['default'].createElement(
|
|
44759
|
-
'div',
|
|
44760
|
-
{ className: 'flight__logo__wrapper' },
|
|
44761
|
-
React__default['default'].createElement('img', {
|
|
44762
|
-
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
|
|
44763
|
-
(_e = getDepartureSegment(item)) === null || _e === void 0 ? void 0 : _e.marketingAirlineCode,
|
|
44764
|
-
'.png?height=256'
|
|
44765
|
-
),
|
|
44766
|
-
alt: '',
|
|
44767
|
-
className: 'flight__logo'
|
|
44768
|
-
}),
|
|
44769
|
-
React__default['default'].createElement(
|
|
44770
|
-
'span',
|
|
44771
|
-
null,
|
|
44772
|
-
(_f = getDepartureSegment(item)) === null || _f === void 0 ? void 0 : _f.marketingAirlineName
|
|
44773
|
-
)
|
|
44774
|
-
),
|
|
45519
|
+
{ className: 'flight__flight__container' },
|
|
44775
45520
|
React__default['default'].createElement(
|
|
44776
45521
|
'div',
|
|
44777
|
-
{ className: '
|
|
45522
|
+
{ className: 'flight__flight__wrapper' },
|
|
44778
45523
|
React__default['default'].createElement(
|
|
44779
45524
|
'div',
|
|
44780
|
-
{ className: '
|
|
44781
|
-
React__default['default'].createElement(
|
|
44782
|
-
'
|
|
44783
|
-
|
|
44784
|
-
|
|
44785
|
-
|
|
44786
|
-
|
|
44787
|
-
|
|
45525
|
+
{ className: 'flight__logo__wrapper' },
|
|
45526
|
+
React__default['default'].createElement('img', {
|
|
45527
|
+
src: 'https://media.tidesoftware.be/media/shared/Airlines/'.concat(
|
|
45528
|
+
(_m = getDepartureSegment(item.return)) === null || _m === void 0 ? void 0 : _m.marketingAirlineCode,
|
|
45529
|
+
'.png?height=256'
|
|
45530
|
+
),
|
|
45531
|
+
alt: '',
|
|
45532
|
+
className: 'flight__logo'
|
|
45533
|
+
}),
|
|
44788
45534
|
React__default['default'].createElement(
|
|
44789
|
-
'
|
|
45535
|
+
'span',
|
|
44790
45536
|
null,
|
|
44791
|
-
|
|
45537
|
+
(_o = getDepartureSegment(item.return)) === null || _o === void 0 ? void 0 : _o.marketingAirlineName
|
|
44792
45538
|
)
|
|
44793
45539
|
),
|
|
44794
45540
|
React__default['default'].createElement(
|
|
44795
45541
|
'div',
|
|
44796
|
-
{ className: '
|
|
44797
|
-
React__default['default'].createElement('p', null, durationTicksInHoursString(item.durationInTicks)),
|
|
45542
|
+
{ className: 'flight__info' },
|
|
44798
45543
|
React__default['default'].createElement(
|
|
44799
45544
|
'div',
|
|
44800
|
-
{ className: '
|
|
44801
|
-
React__default['default'].createElement(
|
|
45545
|
+
{ className: 'flight__info__times' },
|
|
45546
|
+
React__default['default'].createElement(
|
|
45547
|
+
'strong',
|
|
45548
|
+
null,
|
|
45549
|
+
timeFromDateTime((_p = getDepartureSegment(item.return)) === null || _p === void 0 ? void 0 : _p.departureDateTime),
|
|
45550
|
+
' ',
|
|
45551
|
+
(_q = getDepartureSegment(item.return)) === null || _q === void 0 ? void 0 : _q.departureAirportCode
|
|
45552
|
+
),
|
|
45553
|
+
React__default['default'].createElement(
|
|
45554
|
+
'p',
|
|
45555
|
+
null,
|
|
45556
|
+
longFormatDate((_r = getDepartureSegment(item.return)) === null || _r === void 0 ? void 0 : _r.departureDateTime, language)
|
|
45557
|
+
)
|
|
44802
45558
|
),
|
|
44803
45559
|
React__default['default'].createElement(
|
|
44804
|
-
'
|
|
44805
|
-
|
|
44806
|
-
|
|
44807
|
-
|
|
44808
|
-
|
|
44809
|
-
|
|
44810
|
-
|
|
44811
|
-
|
|
44812
|
-
|
|
44813
|
-
|
|
44814
|
-
|
|
44815
|
-
|
|
44816
|
-
|
|
44817
|
-
(_l = getArrivalSegment(item)) === null || _l === void 0 ? void 0 : _l.arrivalAirportCode
|
|
45560
|
+
'div',
|
|
45561
|
+
{ className: 'flight__info__duration' },
|
|
45562
|
+
React__default['default'].createElement('p', null, durationTicksInHoursString(item.return.durationInTicks)),
|
|
45563
|
+
React__default['default'].createElement(
|
|
45564
|
+
'div',
|
|
45565
|
+
{ className: 'flight__info__duration__stops' },
|
|
45566
|
+
React__default['default'].createElement('div', { className: 'flight__info__duration__stop' })
|
|
45567
|
+
),
|
|
45568
|
+
React__default['default'].createElement(
|
|
45569
|
+
'span',
|
|
45570
|
+
null,
|
|
45571
|
+
getNumberOfStopsLabel(item.return, translations.SRP.DIRECT, translations.SRP.STOPS, translations.SRP.STOP)
|
|
45572
|
+
)
|
|
44818
45573
|
),
|
|
44819
45574
|
React__default['default'].createElement(
|
|
44820
|
-
'
|
|
44821
|
-
|
|
44822
|
-
|
|
45575
|
+
'div',
|
|
45576
|
+
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
45577
|
+
React__default['default'].createElement(
|
|
45578
|
+
'strong',
|
|
45579
|
+
null,
|
|
45580
|
+
timeFromDateTime((_s = getArrivalSegment(item.return)) === null || _s === void 0 ? void 0 : _s.arrivalDateTime),
|
|
45581
|
+
' ',
|
|
45582
|
+
(_t = getArrivalSegment(item.return)) === null || _t === void 0 ? void 0 : _t.arrivalAirportCode
|
|
45583
|
+
),
|
|
45584
|
+
React__default['default'].createElement(
|
|
45585
|
+
'p',
|
|
45586
|
+
null,
|
|
45587
|
+
longFormatDate((_u = getArrivalSegment(item.return)) === null || _u === void 0 ? void 0 : _u.arrivalDateTime, language)
|
|
45588
|
+
)
|
|
44823
45589
|
)
|
|
44824
45590
|
)
|
|
45591
|
+
),
|
|
45592
|
+
React__default['default'].createElement(
|
|
45593
|
+
'div',
|
|
45594
|
+
{ className: 'flight__detail__btn__wrapper' },
|
|
45595
|
+
React__default['default'].createElement(
|
|
45596
|
+
'div',
|
|
45597
|
+
{
|
|
45598
|
+
className: 'flight__detail__btn '.concat(isReturnOpen ? 'flight__detail__btn--active' : ''),
|
|
45599
|
+
onClick: function () {
|
|
45600
|
+
return setIsReturnOpen(function (prev) {
|
|
45601
|
+
return !prev;
|
|
45602
|
+
});
|
|
45603
|
+
}
|
|
45604
|
+
},
|
|
45605
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-chevron', className: 'flight__detail__btn__arrow', width: 16, height: 16 })
|
|
45606
|
+
)
|
|
44825
45607
|
)
|
|
44826
45608
|
),
|
|
44827
45609
|
React__default['default'].createElement(
|
|
44828
45610
|
'div',
|
|
44829
|
-
{ className: '
|
|
44830
|
-
|
|
44831
|
-
'
|
|
44832
|
-
|
|
44833
|
-
|
|
44834
|
-
|
|
44835
|
-
|
|
44836
|
-
|
|
44837
|
-
|
|
44838
|
-
|
|
44839
|
-
|
|
44840
|
-
|
|
44841
|
-
|
|
44842
|
-
|
|
44843
|
-
|
|
44844
|
-
|
|
44845
|
-
|
|
44846
|
-
|
|
44847
|
-
|
|
44848
|
-
|
|
44849
|
-
|
|
44850
|
-
|
|
44851
|
-
|
|
44852
|
-
|
|
45611
|
+
{ className: 'flight__detail '.concat(isReturnOpen ? 'flight__detail--active' : '') },
|
|
45612
|
+
getFlightSegments(item.return).map(function (segment, index) {
|
|
45613
|
+
return React__default['default'].createElement(
|
|
45614
|
+
React__default['default'].Fragment,
|
|
45615
|
+
{ key: 'return-segment-'.concat(index, '-').concat(segment.flightNumber) },
|
|
45616
|
+
React__default['default'].createElement(
|
|
45617
|
+
'div',
|
|
45618
|
+
{ className: 'flight__info' },
|
|
45619
|
+
React__default['default'].createElement(
|
|
45620
|
+
'div',
|
|
45621
|
+
{ className: 'flight__info__times__wrapper' },
|
|
45622
|
+
React__default['default'].createElement(
|
|
45623
|
+
'div',
|
|
45624
|
+
{ className: 'flight__info__times' },
|
|
45625
|
+
React__default['default'].createElement('p', null, timeFromDateTime(segment.departureDateTime)),
|
|
45626
|
+
React__default['default'].createElement('strong', null, segment.departureAirportCode),
|
|
45627
|
+
React__default['default'].createElement('p', null, longFormatDate(segment.departureDateTime, language))
|
|
45628
|
+
),
|
|
45629
|
+
React__default['default'].createElement(
|
|
45630
|
+
'div',
|
|
45631
|
+
null,
|
|
45632
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-plane-depart', width: 30, height: 20 })
|
|
45633
|
+
)
|
|
45634
|
+
),
|
|
45635
|
+
React__default['default'].createElement(
|
|
45636
|
+
'div',
|
|
45637
|
+
{ className: 'flight__info__duration' },
|
|
45638
|
+
React__default['default'].createElement('p', null, durationTicksInHoursString(segment.durationInTicks)),
|
|
45639
|
+
React__default['default'].createElement('div', { className: 'flight__info__duration__stops' }),
|
|
45640
|
+
React__default['default'].createElement('span', null, segment.marketingAirlineName),
|
|
45641
|
+
React__default['default'].createElement('strong', null, segment.operatingFlightNumber)
|
|
45642
|
+
),
|
|
45643
|
+
React__default['default'].createElement(
|
|
45644
|
+
'div',
|
|
45645
|
+
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
45646
|
+
React__default['default'].createElement(
|
|
45647
|
+
'div',
|
|
45648
|
+
null,
|
|
45649
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })
|
|
45650
|
+
),
|
|
45651
|
+
React__default['default'].createElement(
|
|
45652
|
+
'div',
|
|
45653
|
+
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
45654
|
+
React__default['default'].createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
45655
|
+
React__default['default'].createElement('strong', null, segment.arrivalAirportCode),
|
|
45656
|
+
React__default['default'].createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
45657
|
+
)
|
|
45658
|
+
)
|
|
45659
|
+
),
|
|
45660
|
+
segment.transferTimeInTicks &&
|
|
44853
45661
|
React__default['default'].createElement(
|
|
44854
45662
|
'div',
|
|
44855
45663
|
{ className: 'flight__info' },
|
|
45664
|
+
React__default['default'].createElement('div', { className: 'flight__info__times' }),
|
|
44856
45665
|
React__default['default'].createElement(
|
|
44857
45666
|
'div',
|
|
44858
|
-
{ className: '
|
|
45667
|
+
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44859
45668
|
React__default['default'].createElement(
|
|
44860
45669
|
'div',
|
|
44861
|
-
{ className: '
|
|
44862
|
-
React__default['default'].createElement('
|
|
44863
|
-
React__default['default'].createElement('strong', null, segment.departureAirportCode),
|
|
44864
|
-
React__default['default'].createElement('p', null, longFormatDate(segment.departureDateTime, language))
|
|
45670
|
+
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
45671
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44865
45672
|
),
|
|
44866
45673
|
React__default['default'].createElement(
|
|
44867
45674
|
'div',
|
|
44868
|
-
|
|
44869
|
-
React__default['default'].createElement(
|
|
45675
|
+
{ className: 'flight__info__duration__stoptime' },
|
|
45676
|
+
React__default['default'].createElement('span', null, 'Stop time'),
|
|
45677
|
+
React__default['default'].createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
44870
45678
|
)
|
|
44871
45679
|
),
|
|
44872
|
-
React__default['default'].createElement(
|
|
44873
|
-
|
|
44874
|
-
|
|
44875
|
-
|
|
44876
|
-
|
|
44877
|
-
React__default['default'].createElement('span', null, segment.marketingAirlineName),
|
|
44878
|
-
React__default['default'].createElement('strong', null, segment.operatingFlightNumber)
|
|
44879
|
-
),
|
|
44880
|
-
React__default['default'].createElement(
|
|
44881
|
-
'div',
|
|
44882
|
-
{ className: 'flight__info__times__wrapper flight__info__times__wrapper--arrival' },
|
|
44883
|
-
React__default['default'].createElement(
|
|
44884
|
-
'div',
|
|
44885
|
-
null,
|
|
44886
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-plane-arrive', width: 30, height: 20 })
|
|
44887
|
-
),
|
|
44888
|
-
React__default['default'].createElement(
|
|
44889
|
-
'div',
|
|
44890
|
-
{ className: 'flight__info__times flight__info__times--arrival' },
|
|
44891
|
-
React__default['default'].createElement('p', null, timeFromDateTime(segment.arrivalDateTime)),
|
|
44892
|
-
React__default['default'].createElement('strong', null, segment.arrivalAirportCode),
|
|
44893
|
-
React__default['default'].createElement('p', null, longFormatDate(segment.arrivalDateTime, language))
|
|
44894
|
-
)
|
|
44895
|
-
)
|
|
44896
|
-
),
|
|
44897
|
-
segment.transferTimeInTicks &&
|
|
44898
|
-
React__default['default'].createElement(
|
|
44899
|
-
'div',
|
|
44900
|
-
{ className: 'flight__info' },
|
|
44901
|
-
React__default['default'].createElement('div', { className: 'flight__info__times' }),
|
|
44902
|
-
React__default['default'].createElement(
|
|
44903
|
-
'div',
|
|
44904
|
-
{ className: 'flight__info__duration flight__info__duration--waittime' },
|
|
44905
|
-
React__default['default'].createElement(
|
|
44906
|
-
'div',
|
|
44907
|
-
{ className: 'flight__info__duration__stops flight__info__duration__stops--stoptime' },
|
|
44908
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-clock', width: 24, height: 24 })
|
|
44909
|
-
),
|
|
44910
|
-
React__default['default'].createElement(
|
|
44911
|
-
'div',
|
|
44912
|
-
{ className: 'flight__info__duration__stoptime' },
|
|
44913
|
-
React__default['default'].createElement('span', null, 'Stop time'),
|
|
44914
|
-
React__default['default'].createElement('strong', null, durationTicksInHoursString(segment.transferTimeInTicks))
|
|
44915
|
-
)
|
|
44916
|
-
),
|
|
44917
|
-
React__default['default'].createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
44918
|
-
)
|
|
44919
|
-
);
|
|
44920
|
-
})
|
|
45680
|
+
React__default['default'].createElement('div', { className: 'flight__info__times flight__info__times--arrival' })
|
|
45681
|
+
)
|
|
45682
|
+
);
|
|
45683
|
+
})
|
|
45684
|
+
)
|
|
44921
45685
|
)
|
|
44922
|
-
)
|
|
44923
45686
|
)
|
|
44924
45687
|
)
|
|
44925
45688
|
)
|
|
@@ -44927,6 +45690,44 @@ var IndependentFlightOption = function (_a) {
|
|
|
44927
45690
|
);
|
|
44928
45691
|
};
|
|
44929
45692
|
|
|
45693
|
+
var PairedFlightSelection = function (_a) {
|
|
45694
|
+
var _b;
|
|
45695
|
+
var searchResults = _a.searchResults;
|
|
45696
|
+
var context = React.useContext(SearchResultsConfigurationContext);
|
|
45697
|
+
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
45698
|
+
return React__default['default'].createElement(
|
|
45699
|
+
React__default['default'].Fragment,
|
|
45700
|
+
null,
|
|
45701
|
+
React__default['default'].createElement(
|
|
45702
|
+
'div',
|
|
45703
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
45704
|
+
React__default['default'].createElement(
|
|
45705
|
+
'div',
|
|
45706
|
+
{ className: 'search__results__label__date' },
|
|
45707
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
|
|
45708
|
+
),
|
|
45709
|
+
React__default['default'].createElement(
|
|
45710
|
+
'div',
|
|
45711
|
+
{ className: 'search__results__label__text' },
|
|
45712
|
+
React__default['default'].createElement(
|
|
45713
|
+
'h3',
|
|
45714
|
+
null,
|
|
45715
|
+
translations.SRP.SELECT,
|
|
45716
|
+
' ',
|
|
45717
|
+
React__default['default'].createElement('strong', null, ' ', translations.SIDEBAR.FLIGHT)
|
|
45718
|
+
)
|
|
45719
|
+
)
|
|
45720
|
+
),
|
|
45721
|
+
React__default['default'].createElement(
|
|
45722
|
+
'div',
|
|
45723
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
45724
|
+
searchResults.map(function (result) {
|
|
45725
|
+
return React__default['default'].createElement(PairedFlightOption, { key: 'flight-'.concat(result.guid), item: result });
|
|
45726
|
+
})
|
|
45727
|
+
)
|
|
45728
|
+
);
|
|
45729
|
+
};
|
|
45730
|
+
|
|
44930
45731
|
var IndependentFlightSelection = function (_a) {
|
|
44931
45732
|
var _b;
|
|
44932
45733
|
var searchResults = _a.searchResults;
|
|
@@ -45049,189 +45850,79 @@ var IndependentFlightSelection = function (_a) {
|
|
|
45049
45850
|
? React__default['default'].createElement(IndependentFlightOption, {
|
|
45050
45851
|
key: 'flight-'.concat(selectedOutwardKey),
|
|
45051
45852
|
item: selectedOutward.outward,
|
|
45052
|
-
guid: selectedOutward.guid,
|
|
45053
|
-
onSelect: function () {
|
|
45054
|
-
return setSelectedOutwardKey(null);
|
|
45055
|
-
},
|
|
45056
|
-
selectedGuid: selectedOutward.guid,
|
|
45057
|
-
isOutward: true
|
|
45058
|
-
})
|
|
45059
|
-
: uniqueOutwardFlights.map(function (result) {
|
|
45060
|
-
return React__default['default'].createElement(IndependentFlightOption, {
|
|
45061
|
-
key: 'flight-'.concat(result.guid),
|
|
45062
|
-
item: result.outward,
|
|
45063
|
-
onSelect: function () {
|
|
45064
|
-
return setSelectedOutwardKey(getFlightKey(result.outward.segments));
|
|
45065
|
-
},
|
|
45066
|
-
guid: result.guid,
|
|
45067
|
-
isOutward: true
|
|
45068
|
-
});
|
|
45069
|
-
})
|
|
45070
|
-
),
|
|
45071
|
-
React__default['default'].createElement(
|
|
45072
|
-
'div',
|
|
45073
|
-
{ className: 'search__results__label search__results__label--secondary' },
|
|
45074
|
-
React__default['default'].createElement(
|
|
45075
|
-
'div',
|
|
45076
|
-
{ className: 'search__results__label__date' },
|
|
45077
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
|
|
45078
|
-
),
|
|
45079
|
-
React__default['default'].createElement(
|
|
45080
|
-
'div',
|
|
45081
|
-
{ className: 'search__results__label__text' },
|
|
45082
|
-
React__default['default'].createElement(
|
|
45083
|
-
'h3',
|
|
45084
|
-
null,
|
|
45085
|
-
translations.SRP.SELECT,
|
|
45086
|
-
' ',
|
|
45087
|
-
React__default['default'].createElement('strong', null, ' ', translations.SRP.RETURN)
|
|
45088
|
-
)
|
|
45089
|
-
)
|
|
45090
|
-
),
|
|
45091
|
-
React__default['default'].createElement(
|
|
45092
|
-
'div',
|
|
45093
|
-
{ className: 'search__results__cards search__results__cards--extended' },
|
|
45094
|
-
selectedReturnKey && selectedReturn
|
|
45095
|
-
? React__default['default'].createElement(IndependentFlightOption, {
|
|
45096
|
-
key: 'flight-'.concat(selectedReturnKey),
|
|
45097
|
-
item: selectedReturn.return,
|
|
45098
|
-
guid: selectedReturn.guid,
|
|
45099
|
-
selectedGuid: selectedReturn.guid,
|
|
45100
|
-
isOutward: false
|
|
45101
|
-
})
|
|
45102
|
-
: uniqueReturnFlights.map(function (result) {
|
|
45103
|
-
return React__default['default'].createElement(IndependentFlightOption, {
|
|
45104
|
-
key: 'flight-'.concat(result.guid),
|
|
45105
|
-
item: result.return,
|
|
45106
|
-
onSelect: function () {
|
|
45107
|
-
return setSelectedReturnKey(getFlightKey(result.return.segments));
|
|
45108
|
-
},
|
|
45109
|
-
guid: result.guid,
|
|
45110
|
-
isOutward: false
|
|
45111
|
-
});
|
|
45112
|
-
})
|
|
45113
|
-
)
|
|
45114
|
-
);
|
|
45115
|
-
};
|
|
45116
|
-
|
|
45117
|
-
var FlightSelection = function (_a) {
|
|
45118
|
-
var searchResults = _a.searchResults,
|
|
45119
|
-
flightSelectionType = _a.flightSelectionType;
|
|
45120
|
-
return flightSelectionType === 'paired'
|
|
45121
|
-
? React__default['default'].createElement(PairedFlightSelection, { searchResults: searchResults })
|
|
45122
|
-
: React__default['default'].createElement(IndependentFlightSelection, { searchResults: searchResults });
|
|
45123
|
-
};
|
|
45124
|
-
|
|
45125
|
-
var MultiRangeFilter = function (_a) {
|
|
45126
|
-
var min = _a.min,
|
|
45127
|
-
max = _a.max,
|
|
45128
|
-
selectedMin = _a.selectedMin,
|
|
45129
|
-
selectedMax = _a.selectedMax,
|
|
45130
|
-
valueFormatter = _a.valueFormatter,
|
|
45131
|
-
onChange = _a.onChange;
|
|
45132
|
-
var _b = React.useState(false),
|
|
45133
|
-
isDragging = _b[0],
|
|
45134
|
-
setIsDragging = _b[1];
|
|
45135
|
-
var _c = React.useState(0),
|
|
45136
|
-
leftPercentage = _c[0],
|
|
45137
|
-
setLeftPercentage = _c[1];
|
|
45138
|
-
var _d = React.useState(0),
|
|
45139
|
-
rightPercentage = _d[0],
|
|
45140
|
-
setRightPercentage = _d[1];
|
|
45141
|
-
var _e = React.useState(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min),
|
|
45142
|
-
minVal = _e[0],
|
|
45143
|
-
setMinVal = _e[1];
|
|
45144
|
-
var _f = React.useState(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max),
|
|
45145
|
-
maxVal = _f[0],
|
|
45146
|
-
setMaxVal = _f[1];
|
|
45147
|
-
var minGap = 5;
|
|
45148
|
-
// Sync internal state with external selectedMin/selectedMax changes
|
|
45149
|
-
React.useEffect(
|
|
45150
|
-
function () {
|
|
45151
|
-
setMinVal(selectedMin !== null && selectedMin !== void 0 ? selectedMin : min);
|
|
45152
|
-
setMaxVal(selectedMax !== null && selectedMax !== void 0 ? selectedMax : max);
|
|
45153
|
-
},
|
|
45154
|
-
[min, max, selectedMin, selectedMax]
|
|
45155
|
-
);
|
|
45156
|
-
// Recalculate slider track whenever values change
|
|
45157
|
-
React.useEffect(
|
|
45158
|
-
function () {
|
|
45159
|
-
var range = max - min || 1;
|
|
45160
|
-
var minPercent = ((minVal - min) / range) * 100;
|
|
45161
|
-
var maxPercent = ((maxVal - min) / range) * 100;
|
|
45162
|
-
setLeftPercentage(minPercent);
|
|
45163
|
-
setRightPercentage(100 - maxPercent);
|
|
45164
|
-
},
|
|
45165
|
-
[minVal, maxVal, min, max]
|
|
45166
|
-
);
|
|
45167
|
-
var slideMin = function (e) {
|
|
45168
|
-
var value = parseInt(e.target.value, 10);
|
|
45169
|
-
// Ensure the thumbs don’t cross and enforce minGap
|
|
45170
|
-
if (value <= maxVal - minGap) {
|
|
45171
|
-
setMinVal(value);
|
|
45172
|
-
}
|
|
45173
|
-
};
|
|
45174
|
-
var slideMax = function (e) {
|
|
45175
|
-
var value = parseInt(e.target.value, 10);
|
|
45176
|
-
// Ensure the thumbs don’t cross and enforce minGap
|
|
45177
|
-
if (value >= minVal + minGap) {
|
|
45178
|
-
setMaxVal(value);
|
|
45179
|
-
}
|
|
45180
|
-
};
|
|
45181
|
-
var startDrag = function () {
|
|
45182
|
-
setIsDragging(true);
|
|
45183
|
-
};
|
|
45184
|
-
var stopDrag = function () {
|
|
45185
|
-
setIsDragging(false);
|
|
45186
|
-
// Notify parent with the final values
|
|
45187
|
-
onChange(minVal, maxVal);
|
|
45188
|
-
};
|
|
45189
|
-
return React__default['default'].createElement(
|
|
45190
|
-
'div',
|
|
45191
|
-
{ className: 'double-slider-box' },
|
|
45853
|
+
guid: selectedOutward.guid,
|
|
45854
|
+
onSelect: function () {
|
|
45855
|
+
return setSelectedOutwardKey(null);
|
|
45856
|
+
},
|
|
45857
|
+
selectedGuid: selectedOutward.guid,
|
|
45858
|
+
isOutward: true
|
|
45859
|
+
})
|
|
45860
|
+
: uniqueOutwardFlights.map(function (result) {
|
|
45861
|
+
return React__default['default'].createElement(IndependentFlightOption, {
|
|
45862
|
+
key: 'flight-'.concat(result.guid),
|
|
45863
|
+
item: result.outward,
|
|
45864
|
+
onSelect: function () {
|
|
45865
|
+
return setSelectedOutwardKey(getFlightKey(result.outward.segments));
|
|
45866
|
+
},
|
|
45867
|
+
guid: result.guid,
|
|
45868
|
+
isOutward: true
|
|
45869
|
+
});
|
|
45870
|
+
})
|
|
45871
|
+
),
|
|
45192
45872
|
React__default['default'].createElement(
|
|
45193
45873
|
'div',
|
|
45194
|
-
{ className: '
|
|
45195
|
-
React__default['default'].createElement(
|
|
45196
|
-
|
|
45874
|
+
{ className: 'search__results__label search__results__label--secondary' },
|
|
45875
|
+
React__default['default'].createElement(
|
|
45876
|
+
'div',
|
|
45877
|
+
{ className: 'search__results__label__date' },
|
|
45878
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-flight', height: 16, fill: 'white' })
|
|
45879
|
+
),
|
|
45880
|
+
React__default['default'].createElement(
|
|
45881
|
+
'div',
|
|
45882
|
+
{ className: 'search__results__label__text' },
|
|
45883
|
+
React__default['default'].createElement(
|
|
45884
|
+
'h3',
|
|
45885
|
+
null,
|
|
45886
|
+
translations.SRP.SELECT,
|
|
45887
|
+
' ',
|
|
45888
|
+
React__default['default'].createElement('strong', null, ' ', translations.SRP.RETURN)
|
|
45889
|
+
)
|
|
45890
|
+
)
|
|
45197
45891
|
),
|
|
45198
45892
|
React__default['default'].createElement(
|
|
45199
45893
|
'div',
|
|
45200
|
-
{ className: '
|
|
45201
|
-
|
|
45202
|
-
|
|
45203
|
-
|
|
45204
|
-
|
|
45205
|
-
|
|
45206
|
-
|
|
45207
|
-
|
|
45208
|
-
|
|
45209
|
-
|
|
45210
|
-
|
|
45211
|
-
|
|
45212
|
-
|
|
45213
|
-
|
|
45214
|
-
|
|
45215
|
-
|
|
45216
|
-
|
|
45217
|
-
|
|
45218
|
-
|
|
45219
|
-
|
|
45220
|
-
max: max,
|
|
45221
|
-
value: maxVal,
|
|
45222
|
-
onChange: slideMax,
|
|
45223
|
-
onMouseDown: startDrag,
|
|
45224
|
-
onMouseUp: stopDrag,
|
|
45225
|
-
onTouchStart: startDrag,
|
|
45226
|
-
onTouchEnd: stopDrag,
|
|
45227
|
-
className: 'max-val'
|
|
45228
|
-
}),
|
|
45229
|
-
isDragging && React__default['default'].createElement('div', { className: 'min-tooltip' }, valueFormatter(minVal)),
|
|
45230
|
-
isDragging && React__default['default'].createElement('div', { className: 'max-tooltip' }, valueFormatter(maxVal))
|
|
45894
|
+
{ className: 'search__results__cards search__results__cards--extended' },
|
|
45895
|
+
selectedReturnKey && selectedReturn
|
|
45896
|
+
? React__default['default'].createElement(IndependentFlightOption, {
|
|
45897
|
+
key: 'flight-'.concat(selectedReturnKey),
|
|
45898
|
+
item: selectedReturn.return,
|
|
45899
|
+
guid: selectedReturn.guid,
|
|
45900
|
+
selectedGuid: selectedReturn.guid,
|
|
45901
|
+
isOutward: false
|
|
45902
|
+
})
|
|
45903
|
+
: uniqueReturnFlights.map(function (result) {
|
|
45904
|
+
return React__default['default'].createElement(IndependentFlightOption, {
|
|
45905
|
+
key: 'flight-'.concat(result.guid),
|
|
45906
|
+
item: result.return,
|
|
45907
|
+
onSelect: function () {
|
|
45908
|
+
return setSelectedReturnKey(getFlightKey(result.return.segments));
|
|
45909
|
+
},
|
|
45910
|
+
guid: result.guid,
|
|
45911
|
+
isOutward: false
|
|
45912
|
+
});
|
|
45913
|
+
})
|
|
45231
45914
|
)
|
|
45232
45915
|
);
|
|
45233
45916
|
};
|
|
45234
45917
|
|
|
45918
|
+
var FlightSelection = function (_a) {
|
|
45919
|
+
var searchResults = _a.searchResults,
|
|
45920
|
+
flightSelectionType = _a.flightSelectionType;
|
|
45921
|
+
return flightSelectionType === 'paired'
|
|
45922
|
+
? React__default['default'].createElement(PairedFlightSelection, { searchResults: searchResults })
|
|
45923
|
+
: React__default['default'].createElement(IndependentFlightSelection, { searchResults: searchResults });
|
|
45924
|
+
};
|
|
45925
|
+
|
|
45235
45926
|
var FlightFilters = function (_a) {
|
|
45236
45927
|
var _b;
|
|
45237
45928
|
var isOpen = _a.isOpen,
|
|
@@ -46233,311 +46924,89 @@ var FlightResultsContainer = function (_a) {
|
|
|
46233
46924
|
placeholder: translations.SRP.SORTBY,
|
|
46234
46925
|
classModifier: 'travel-class-picker__items',
|
|
46235
46926
|
valueFormatter: function (value, direction) {
|
|
46236
|
-
return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
|
|
46237
|
-
},
|
|
46238
|
-
onPick: handleSortChange
|
|
46239
|
-
})
|
|
46240
|
-
),
|
|
46241
|
-
React__default['default'].createElement(
|
|
46242
|
-
'div',
|
|
46243
|
-
{ className: 'search__result-row' },
|
|
46244
|
-
React__default['default'].createElement(
|
|
46245
|
-
'span',
|
|
46246
|
-
{ className: 'search__result-row-text' },
|
|
46247
|
-
!flightsLoading &&
|
|
46248
|
-
React__default['default'].createElement(
|
|
46249
|
-
React__default['default'].Fragment,
|
|
46250
|
-
null,
|
|
46251
|
-
(results === null || results === void 0 ? void 0 : results.length) &&
|
|
46252
|
-
React__default['default'].createElement(React__default['default'].Fragment, null, results.length, ' ', translations.SRP.TOTAL_RESULTS_LABEL)
|
|
46253
|
-
)
|
|
46254
|
-
),
|
|
46255
|
-
!isMobile &&
|
|
46256
|
-
React__default['default'].createElement(
|
|
46257
|
-
React__default['default'].Fragment,
|
|
46258
|
-
null,
|
|
46259
|
-
React__default['default'].createElement(
|
|
46260
|
-
'div',
|
|
46261
|
-
{ className: 'search__result-row-filter' },
|
|
46262
|
-
React__default['default'].createElement(ItemPicker, {
|
|
46263
|
-
items: selectionTypes,
|
|
46264
|
-
selection:
|
|
46265
|
-
((_c = selectionTypes.find(function (type) {
|
|
46266
|
-
return type.id === flightSelectionType;
|
|
46267
|
-
})) === null || _c === void 0
|
|
46268
|
-
? void 0
|
|
46269
|
-
: _c.label) || undefined,
|
|
46270
|
-
label: 'Selection Type',
|
|
46271
|
-
placeholder: 'Selection Type',
|
|
46272
|
-
classModifier: 'travel-class-picker__items',
|
|
46273
|
-
valueFormatter: function (value) {
|
|
46274
|
-
return value;
|
|
46275
|
-
},
|
|
46276
|
-
onPick: function (value) {
|
|
46277
|
-
var _a;
|
|
46278
|
-
return setFlightSelectionType(
|
|
46279
|
-
((_a = selectionTypes.find(function (type) {
|
|
46280
|
-
return type.label === value;
|
|
46281
|
-
})) === null || _a === void 0
|
|
46282
|
-
? void 0
|
|
46283
|
-
: _a.id) || 'independent'
|
|
46284
|
-
);
|
|
46285
|
-
}
|
|
46286
|
-
})
|
|
46287
|
-
),
|
|
46288
|
-
sortByTypes &&
|
|
46289
|
-
sortByTypes.length > 0 &&
|
|
46290
|
-
React__default['default'].createElement(
|
|
46291
|
-
'div',
|
|
46292
|
-
{ className: 'search__result-row-filter' },
|
|
46293
|
-
React__default['default'].createElement(ItemPicker, {
|
|
46294
|
-
items: sortByTypes,
|
|
46295
|
-
selection: (selectedSortByType === null || selectedSortByType === void 0 ? void 0 : selectedSortByType.label) || undefined,
|
|
46296
|
-
selectedSortByType: selectedSortByType || undefined,
|
|
46297
|
-
label: translations.SRP.SORTBY,
|
|
46298
|
-
placeholder: translations.SRP.SORTBY,
|
|
46299
|
-
classModifier: 'travel-class-picker__items',
|
|
46300
|
-
valueFormatter: function (value, direction) {
|
|
46301
|
-
return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
|
|
46302
|
-
},
|
|
46303
|
-
onPick: handleSortChange
|
|
46304
|
-
})
|
|
46305
|
-
)
|
|
46306
|
-
)
|
|
46307
|
-
),
|
|
46308
|
-
React__default['default'].createElement(
|
|
46309
|
-
'div',
|
|
46310
|
-
{ className: 'search__results__wrapper' },
|
|
46311
|
-
flightsLoading && React__default['default'].createElement(Spinner, null),
|
|
46312
|
-
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) == build.PortalQsmType.Flight &&
|
|
46313
|
-
(context === null || context === void 0 ? void 0 : context.showFlightAccommodationResults) &&
|
|
46314
|
-
results &&
|
|
46315
|
-
results.length > 0 &&
|
|
46316
|
-
React__default['default'].createElement(FlightSelection, { searchResults: results, flightSelectionType: flightSelectionType })
|
|
46317
|
-
)
|
|
46318
|
-
)
|
|
46319
|
-
)
|
|
46320
|
-
);
|
|
46321
|
-
};
|
|
46322
|
-
|
|
46323
|
-
var Filters = function (_a) {
|
|
46324
|
-
var _b;
|
|
46325
|
-
var initialFilters = _a.initialFilters,
|
|
46326
|
-
filters = _a.filters,
|
|
46327
|
-
isOpen = _a.isOpen,
|
|
46328
|
-
handleSetIsOpen = _a.handleSetIsOpen,
|
|
46329
|
-
isLoading = _a.isLoading;
|
|
46330
|
-
var context = React.useContext(SearchResultsConfigurationContext);
|
|
46331
|
-
if (!context || !context.showFilters) {
|
|
46332
|
-
return null;
|
|
46333
|
-
}
|
|
46334
|
-
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
46335
|
-
var _c = React.useState({}),
|
|
46336
|
-
visibleFilters = _c[0],
|
|
46337
|
-
setVisibleFilters = _c[1];
|
|
46338
|
-
var dispatch = reactRedux.useDispatch();
|
|
46339
|
-
var toggleFilterVisibility = function (filterId) {
|
|
46340
|
-
setVisibleFilters(function (prev) {
|
|
46341
|
-
var _a;
|
|
46342
|
-
return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
|
|
46343
|
-
});
|
|
46344
|
-
};
|
|
46345
|
-
var handleCheckBoxFilter = function (filter, option) {
|
|
46346
|
-
var updated = filters.map(function (f) {
|
|
46347
|
-
var _a;
|
|
46348
|
-
if (f.property !== filter.property) return f;
|
|
46349
|
-
return __assign(__assign({}, f), {
|
|
46350
|
-
options:
|
|
46351
|
-
(_a = f.options) === null || _a === void 0
|
|
46352
|
-
? void 0
|
|
46353
|
-
: _a.map(function (opt) {
|
|
46354
|
-
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
46355
|
-
})
|
|
46356
|
-
});
|
|
46357
|
-
});
|
|
46358
|
-
dispatch(setFilters(updated));
|
|
46359
|
-
};
|
|
46360
|
-
var handleSliderChange = function (filter, newMin, newMax) {
|
|
46361
|
-
var updated = filters.map(function (f) {
|
|
46362
|
-
if (f.property !== filter.property) return f;
|
|
46363
|
-
return __assign(__assign({}, f), { selectedMin: newMin, selectedMax: newMax });
|
|
46364
|
-
});
|
|
46365
|
-
dispatch(setFilters(updated));
|
|
46366
|
-
};
|
|
46367
|
-
var handleFullReset = function () {
|
|
46368
|
-
if (!isLoading) {
|
|
46369
|
-
dispatch(resetFilters(initialFilters));
|
|
46370
|
-
}
|
|
46371
|
-
};
|
|
46372
|
-
return React__default['default'].createElement(
|
|
46373
|
-
'div',
|
|
46374
|
-
{ className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
|
|
46375
|
-
React__default['default'].createElement('div', {
|
|
46376
|
-
className: 'search__filters--background',
|
|
46377
|
-
onClick: function () {
|
|
46378
|
-
return handleSetIsOpen();
|
|
46379
|
-
}
|
|
46380
|
-
}),
|
|
46381
|
-
React__default['default'].createElement(
|
|
46382
|
-
'button',
|
|
46383
|
-
{
|
|
46384
|
-
className: 'search__filters--close',
|
|
46385
|
-
onClick: function () {
|
|
46386
|
-
return handleSetIsOpen();
|
|
46387
|
-
}
|
|
46388
|
-
},
|
|
46389
|
-
React__default['default'].createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
46390
|
-
),
|
|
46391
|
-
React__default['default'].createElement(
|
|
46392
|
-
'div',
|
|
46393
|
-
{ className: 'search__filters' },
|
|
46394
|
-
React__default['default'].createElement(
|
|
46395
|
-
'div',
|
|
46396
|
-
{ className: 'search__filter-row search__filter__header' },
|
|
46927
|
+
return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
|
|
46928
|
+
},
|
|
46929
|
+
onPick: handleSortChange
|
|
46930
|
+
})
|
|
46931
|
+
),
|
|
46397
46932
|
React__default['default'].createElement(
|
|
46398
46933
|
'div',
|
|
46399
|
-
{ className: '
|
|
46400
|
-
React__default['default'].createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
|
|
46401
|
-
),
|
|
46402
|
-
!isLoading &&
|
|
46934
|
+
{ className: 'search__result-row' },
|
|
46403
46935
|
React__default['default'].createElement(
|
|
46404
|
-
'
|
|
46405
|
-
{
|
|
46406
|
-
|
|
46407
|
-
|
|
46408
|
-
|
|
46409
|
-
|
|
46410
|
-
|
|
46411
|
-
|
|
46412
|
-
|
|
46413
|
-
|
|
46414
|
-
|
|
46415
|
-
? React__default['default'].createElement(Spinner, null)
|
|
46416
|
-
: React__default['default'].createElement(
|
|
46417
|
-
React__default['default'].Fragment,
|
|
46418
|
-
null,
|
|
46936
|
+
'span',
|
|
46937
|
+
{ className: 'search__result-row-text' },
|
|
46938
|
+
!flightsLoading &&
|
|
46939
|
+
React__default['default'].createElement(
|
|
46940
|
+
React__default['default'].Fragment,
|
|
46941
|
+
null,
|
|
46942
|
+
(results === null || results === void 0 ? void 0 : results.length) &&
|
|
46943
|
+
React__default['default'].createElement(React__default['default'].Fragment, null, results.length, ' ', translations.SRP.TOTAL_RESULTS_LABEL)
|
|
46944
|
+
)
|
|
46945
|
+
),
|
|
46946
|
+
!isMobile &&
|
|
46419
46947
|
React__default['default'].createElement(
|
|
46420
|
-
'
|
|
46421
|
-
|
|
46422
|
-
|
|
46423
|
-
|
|
46424
|
-
|
|
46425
|
-
|
|
46948
|
+
React__default['default'].Fragment,
|
|
46949
|
+
null,
|
|
46950
|
+
React__default['default'].createElement(
|
|
46951
|
+
'div',
|
|
46952
|
+
{ className: 'search__result-row-filter' },
|
|
46953
|
+
React__default['default'].createElement(ItemPicker, {
|
|
46954
|
+
items: selectionTypes,
|
|
46955
|
+
selection:
|
|
46956
|
+
((_c = selectionTypes.find(function (type) {
|
|
46957
|
+
return type.id === flightSelectionType;
|
|
46958
|
+
})) === null || _c === void 0
|
|
46959
|
+
? void 0
|
|
46960
|
+
: _c.label) || undefined,
|
|
46961
|
+
label: 'Selection Type',
|
|
46962
|
+
placeholder: 'Selection Type',
|
|
46963
|
+
classModifier: 'travel-class-picker__items',
|
|
46964
|
+
valueFormatter: function (value) {
|
|
46965
|
+
return value;
|
|
46966
|
+
},
|
|
46967
|
+
onPick: function (value) {
|
|
46968
|
+
var _a;
|
|
46969
|
+
return setFlightSelectionType(
|
|
46970
|
+
((_a = selectionTypes.find(function (type) {
|
|
46971
|
+
return type.label === value;
|
|
46972
|
+
})) === null || _a === void 0
|
|
46973
|
+
? void 0
|
|
46974
|
+
: _a.id) || 'independent'
|
|
46975
|
+
);
|
|
46976
|
+
}
|
|
46977
|
+
})
|
|
46978
|
+
),
|
|
46979
|
+
sortByTypes &&
|
|
46980
|
+
sortByTypes.length > 0 &&
|
|
46981
|
+
React__default['default'].createElement(
|
|
46426
46982
|
'div',
|
|
46427
|
-
{
|
|
46428
|
-
React__default['default'].createElement(
|
|
46429
|
-
|
|
46430
|
-
|
|
46431
|
-
|
|
46432
|
-
|
|
46433
|
-
|
|
46434
|
-
|
|
46435
|
-
|
|
46436
|
-
|
|
46983
|
+
{ className: 'search__result-row-filter' },
|
|
46984
|
+
React__default['default'].createElement(ItemPicker, {
|
|
46985
|
+
items: sortByTypes,
|
|
46986
|
+
selection: (selectedSortByType === null || selectedSortByType === void 0 ? void 0 : selectedSortByType.label) || undefined,
|
|
46987
|
+
selectedSortByType: selectedSortByType || undefined,
|
|
46988
|
+
label: translations.SRP.SORTBY,
|
|
46989
|
+
placeholder: translations.SRP.SORTBY,
|
|
46990
|
+
classModifier: 'travel-class-picker__items',
|
|
46991
|
+
valueFormatter: function (value, direction) {
|
|
46992
|
+
return getSortingName(translations, findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc'));
|
|
46437
46993
|
},
|
|
46438
|
-
|
|
46439
|
-
|
|
46440
|
-
|
|
46441
|
-
{
|
|
46442
|
-
id: 'search-chevron-up-icon',
|
|
46443
|
-
className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
|
|
46444
|
-
viewBox: '0 0 10 6.063',
|
|
46445
|
-
width: 10,
|
|
46446
|
-
height: 6.063
|
|
46447
|
-
},
|
|
46448
|
-
React__default['default'].createElement('path', {
|
|
46449
|
-
id: 'Path_62',
|
|
46450
|
-
'data-name': 'Path 62',
|
|
46451
|
-
d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
|
|
46452
|
-
transform: 'translate(-240 624)',
|
|
46453
|
-
fill: '#707070'
|
|
46454
|
-
})
|
|
46455
|
-
)
|
|
46456
|
-
),
|
|
46457
|
-
isVisible &&
|
|
46458
|
-
filter.type === 'checkbox' &&
|
|
46459
|
-
React__default['default'].createElement(
|
|
46460
|
-
'div',
|
|
46461
|
-
{ className: 'search__filter-rows' },
|
|
46462
|
-
filter.options &&
|
|
46463
|
-
filter.options.map(function (option, optionIndex) {
|
|
46464
|
-
return React__default['default'].createElement(
|
|
46465
|
-
'div',
|
|
46466
|
-
{ className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
46467
|
-
React__default['default'].createElement(
|
|
46468
|
-
'div',
|
|
46469
|
-
{ className: 'checkbox' },
|
|
46470
|
-
React__default['default'].createElement(
|
|
46471
|
-
'label',
|
|
46472
|
-
{ className: 'checkbox__label' },
|
|
46473
|
-
React__default['default'].createElement('input', {
|
|
46474
|
-
type: 'checkbox',
|
|
46475
|
-
className: 'checkbox__input checkbox__input--parent',
|
|
46476
|
-
checked: option.isChecked,
|
|
46477
|
-
onChange: function (e) {
|
|
46478
|
-
return handleCheckBoxFilter(filter, option);
|
|
46479
|
-
}
|
|
46480
|
-
}),
|
|
46481
|
-
React__default['default'].createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
46482
|
-
)
|
|
46483
|
-
)
|
|
46484
|
-
);
|
|
46485
|
-
})
|
|
46486
|
-
),
|
|
46487
|
-
isVisible &&
|
|
46488
|
-
filter.type === 'toggle' &&
|
|
46489
|
-
React__default['default'].createElement(
|
|
46490
|
-
'div',
|
|
46491
|
-
{ className: 'search__filter-rows' },
|
|
46492
|
-
(_b = filter.options) === null || _b === void 0
|
|
46493
|
-
? void 0
|
|
46494
|
-
: _b.map(function (option, optionIndex) {
|
|
46495
|
-
return React__default['default'].createElement(
|
|
46496
|
-
'div',
|
|
46497
|
-
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
46498
|
-
React__default['default'].createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
46499
|
-
React__default['default'].createElement('div', { className: 'checkbox' }),
|
|
46500
|
-
React__default['default'].createElement(
|
|
46501
|
-
'label',
|
|
46502
|
-
{ className: 'checkbox__label' },
|
|
46503
|
-
React__default['default'].createElement('input', {
|
|
46504
|
-
type: 'checkbox',
|
|
46505
|
-
className: 'checkbox__input',
|
|
46506
|
-
checked: option.isChecked,
|
|
46507
|
-
onChange: function () {
|
|
46508
|
-
return handleCheckBoxFilter(filter, option);
|
|
46509
|
-
}
|
|
46510
|
-
})
|
|
46511
|
-
)
|
|
46512
|
-
);
|
|
46513
|
-
})
|
|
46514
|
-
),
|
|
46515
|
-
isVisible &&
|
|
46516
|
-
filter &&
|
|
46517
|
-
filter.type === 'slider' &&
|
|
46518
|
-
(function () {
|
|
46519
|
-
var _a, _b, _c, _d;
|
|
46520
|
-
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
46521
|
-
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
46522
|
-
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
46523
|
-
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
46524
|
-
return React__default['default'].createElement(MultiRangeFilter, {
|
|
46525
|
-
min: min,
|
|
46526
|
-
max: max,
|
|
46527
|
-
selectedMin: selectedMin,
|
|
46528
|
-
selectedMax: selectedMax,
|
|
46529
|
-
valueFormatter: function (value) {
|
|
46530
|
-
return ''.concat(value);
|
|
46531
|
-
},
|
|
46532
|
-
onChange: function (newMin, newMax) {
|
|
46533
|
-
handleSliderChange(filter, newMin, newMax);
|
|
46534
|
-
}
|
|
46535
|
-
});
|
|
46536
|
-
})()
|
|
46537
|
-
);
|
|
46538
|
-
})
|
|
46994
|
+
onPick: handleSortChange
|
|
46995
|
+
})
|
|
46996
|
+
)
|
|
46539
46997
|
)
|
|
46540
|
-
|
|
46998
|
+
),
|
|
46999
|
+
React__default['default'].createElement(
|
|
47000
|
+
'div',
|
|
47001
|
+
{ className: 'search__results__wrapper' },
|
|
47002
|
+
flightsLoading && React__default['default'].createElement(Spinner, null),
|
|
47003
|
+
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) == build.PortalQsmType.Flight &&
|
|
47004
|
+
(context === null || context === void 0 ? void 0 : context.showFlightAccommodationResults) &&
|
|
47005
|
+
results &&
|
|
47006
|
+
results.length > 0 &&
|
|
47007
|
+
React__default['default'].createElement(FlightSelection, { searchResults: results, flightSelectionType: flightSelectionType })
|
|
47008
|
+
)
|
|
47009
|
+
)
|
|
46541
47010
|
)
|
|
46542
47011
|
);
|
|
46543
47012
|
};
|
|
@@ -46859,80 +47328,245 @@ var enrichFiltersWithResults = function (results, filters, tags) {
|
|
|
46859
47328
|
return updatedFilter;
|
|
46860
47329
|
});
|
|
46861
47330
|
};
|
|
46862
|
-
var enrichFiltersWithPackageAccoResults = function (results,
|
|
46863
|
-
|
|
46864
|
-
|
|
46865
|
-
|
|
46866
|
-
|
|
46867
|
-
|
|
46868
|
-
|
|
46869
|
-
|
|
46870
|
-
|
|
46871
|
-
|
|
46872
|
-
|
|
46873
|
-
|
|
46874
|
-
|
|
46875
|
-
|
|
46876
|
-
|
|
46877
|
-
|
|
46878
|
-
|
|
46879
|
-
|
|
46880
|
-
|
|
46881
|
-
|
|
46882
|
-
|
|
46883
|
-
|
|
46884
|
-
results.forEach(function (r) {
|
|
46885
|
-
var rooms = lodash.flatMap(r.rooms);
|
|
46886
|
-
if (rooms) {
|
|
46887
|
-
rooms.map(function (room) {
|
|
46888
|
-
room.options.map(function (option) {
|
|
46889
|
-
if (option.accommodationCode) {
|
|
46890
|
-
map_4.set(option.accommodationCode, {
|
|
46891
|
-
name: option.accommodationName,
|
|
46892
|
-
code: option.accommodationCode
|
|
46893
|
-
});
|
|
46894
|
-
}
|
|
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
|
|
46895
47353
|
});
|
|
46896
|
-
}
|
|
46897
|
-
}
|
|
47354
|
+
}
|
|
47355
|
+
});
|
|
46898
47356
|
});
|
|
46899
|
-
|
|
46900
|
-
|
|
46901
|
-
|
|
46902
|
-
|
|
46903
|
-
|
|
46904
|
-
|
|
46905
|
-
|
|
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
|
|
46906
47408
|
});
|
|
46907
47409
|
}
|
|
46908
|
-
|
|
46909
|
-
|
|
46910
|
-
|
|
46911
|
-
|
|
46912
|
-
|
|
46913
|
-
|
|
46914
|
-
|
|
46915
|
-
|
|
46916
|
-
|
|
46917
|
-
|
|
46918
|
-
|
|
46919
|
-
|
|
46920
|
-
|
|
46921
|
-
|
|
46922
|
-
|
|
46923
|
-
|
|
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
|
|
46924
47483
|
});
|
|
46925
|
-
|
|
46926
|
-
|
|
46927
|
-
|
|
46928
|
-
|
|
46929
|
-
|
|
46930
|
-
|
|
46931
|
-
|
|
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
|
|
46932
47511
|
});
|
|
46933
47512
|
}
|
|
46934
|
-
return updatedFilter;
|
|
46935
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;
|
|
46936
47570
|
};
|
|
46937
47571
|
var applyFilters = function (results, filters, sortBy) {
|
|
46938
47572
|
var filtered = results.filter(function (r) {
|
|
@@ -47074,6 +47708,147 @@ var applyFiltersToPackageAccoResults = function (results, filters, sortBy) {
|
|
|
47074
47708
|
return 0;
|
|
47075
47709
|
});
|
|
47076
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
|
+
};
|
|
47077
47852
|
|
|
47078
47853
|
var getSelectedOptionsPerRoom = function (details) {
|
|
47079
47854
|
var _a;
|
|
@@ -47282,28 +48057,30 @@ var SearchResultsContainer = function () {
|
|
|
47282
48057
|
results = _c.results,
|
|
47283
48058
|
filteredResults = _c.filteredResults,
|
|
47284
48059
|
packagingAccoResults = _c.packagingAccoResults,
|
|
47285
|
-
filteredPackagingAccoResults = _c.filteredPackagingAccoResults
|
|
47286
|
-
|
|
47287
|
-
var isLoading = _c.isLoading,
|
|
48060
|
+
filteredPackagingAccoResults = _c.filteredPackagingAccoResults,
|
|
48061
|
+
isLoading = _c.isLoading,
|
|
47288
48062
|
flightsLoading = _c.flightsLoading,
|
|
48063
|
+
initialFilters = _c.initialFilters,
|
|
47289
48064
|
filters = _c.filters,
|
|
48065
|
+
flightFilters = _c.flightFilters,
|
|
47290
48066
|
selectedSortType = _c.selectedSortType,
|
|
48067
|
+
selectedFlightSortType = _c.selectedFlightSortType,
|
|
47291
48068
|
selectedSearchResult = _c.selectedSearchResult,
|
|
47292
48069
|
selectedPackagingAccoResultCode = _c.selectedPackagingAccoResultCode,
|
|
47293
48070
|
flyInIsOpen = _c.flyInIsOpen,
|
|
47294
48071
|
packagingAccoSearchDetails = _c.packagingAccoSearchDetails,
|
|
47295
48072
|
editablePackagingEntry = _c.editablePackagingEntry,
|
|
47296
48073
|
transactionId = _c.transactionId,
|
|
47297
|
-
|
|
48074
|
+
flyInType = _c.flyInType,
|
|
47298
48075
|
itinerary = _c.itinerary,
|
|
47299
48076
|
packagingFlightResults = _c.packagingFlightResults;
|
|
47300
48077
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
47301
48078
|
var _d = React.useState(false),
|
|
47302
48079
|
initialFiltersSet = _d[0],
|
|
47303
48080
|
setInitialFiltersSet = _d[1];
|
|
47304
|
-
var _e = React.useState(
|
|
47305
|
-
|
|
47306
|
-
|
|
48081
|
+
var _e = React.useState(false),
|
|
48082
|
+
initialFlightFiltersSet = _e[0],
|
|
48083
|
+
setInitialFlightFiltersSet = _e[1];
|
|
47307
48084
|
var _f = React.useState(false),
|
|
47308
48085
|
filtersOpen = _f[0],
|
|
47309
48086
|
setFiltersOpen = _f[1];
|
|
@@ -47323,9 +48100,6 @@ var SearchResultsContainer = function () {
|
|
|
47323
48100
|
selectedAccommodationSeed = _l[0],
|
|
47324
48101
|
setSelectedAccommodationSeed = _l[1];
|
|
47325
48102
|
var skipInitialPackagingAccoDetailsRef = React.useRef(false);
|
|
47326
|
-
var _m = React.useState(false),
|
|
47327
|
-
showAllOutwardFlights = _m[0],
|
|
47328
|
-
setShowAllOutwardFlights = _m[1];
|
|
47329
48103
|
var panelRef = React.useRef(null);
|
|
47330
48104
|
var sortByTypes = [
|
|
47331
48105
|
{ direction: 'asc', label: 'default' },
|
|
@@ -47643,7 +48417,7 @@ var SearchResultsContainer = function () {
|
|
|
47643
48417
|
if (!seed) return [2 /*return*/];
|
|
47644
48418
|
setDetailsIsLoading(true);
|
|
47645
48419
|
setSelectedAccommodationSeed(seed);
|
|
47646
|
-
dispatch(
|
|
48420
|
+
dispatch(setFlyInType('acco-results'));
|
|
47647
48421
|
handleFlyInToggle(true);
|
|
47648
48422
|
return [4 /*yield*/, getOrCreateTransactionId()];
|
|
47649
48423
|
case 1:
|
|
@@ -47801,7 +48575,7 @@ var SearchResultsContainer = function () {
|
|
|
47801
48575
|
enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47802
48576
|
if (!initialFiltersSet) {
|
|
47803
48577
|
dispatch(resetFilters(enrichedFilters));
|
|
47804
|
-
setInitialFilters(enrichedFilters);
|
|
48578
|
+
dispatch(setInitialFilters(enrichedFilters));
|
|
47805
48579
|
setInitialFiltersSet(true);
|
|
47806
48580
|
}
|
|
47807
48581
|
dispatch(setResults(packageSearchResults));
|
|
@@ -47876,11 +48650,7 @@ var SearchResultsContainer = function () {
|
|
|
47876
48650
|
return [4 /*yield*/, build.searchPackagingAccommodations(config, searchRequest)];
|
|
47877
48651
|
case 1:
|
|
47878
48652
|
packageAccoSearchResults = _d.sent();
|
|
47879
|
-
enrichedFilters = enrichFiltersWithPackageAccoResults(
|
|
47880
|
-
packageAccoSearchResults,
|
|
47881
|
-
context.filters,
|
|
47882
|
-
(_a = context.tags) !== null && _a !== void 0 ? _a : []
|
|
47883
|
-
);
|
|
48653
|
+
enrichedFilters = enrichFiltersWithPackageAccoResults(packageAccoSearchResults, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
|
|
47884
48654
|
if (!initialFiltersSet) {
|
|
47885
48655
|
dispatch(resetFilters(enrichedFilters));
|
|
47886
48656
|
setInitialFilters(enrichedFilters);
|
|
@@ -47926,11 +48696,12 @@ var SearchResultsContainer = function () {
|
|
|
47926
48696
|
};
|
|
47927
48697
|
var runFlightSearch = function (currentTransactionId, seed) {
|
|
47928
48698
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
47929
|
-
var config, searchRequest, packageFlightSearchResults, firstResult, err_4;
|
|
47930
|
-
|
|
47931
|
-
|
|
48699
|
+
var config, searchRequest, packageFlightSearchResults, enrichedFilters, initialFilteredResults, firstResult, err_4;
|
|
48700
|
+
var _a;
|
|
48701
|
+
return __generator(this, function (_b) {
|
|
48702
|
+
switch (_b.label) {
|
|
47932
48703
|
case 0:
|
|
47933
|
-
|
|
48704
|
+
_b.trys.push([0, 2, , 3]);
|
|
47934
48705
|
if (!context) return [2 /*return*/];
|
|
47935
48706
|
dispatch(setFlightsLoading(true));
|
|
47936
48707
|
config = {
|
|
@@ -47941,17 +48712,31 @@ var SearchResultsContainer = function () {
|
|
|
47941
48712
|
searchRequest.agentId = context.agentId;
|
|
47942
48713
|
return [4 /*yield*/, build.searchPackagingFlights(config, searchRequest)];
|
|
47943
48714
|
case 1:
|
|
47944
|
-
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
|
+
}
|
|
47945
48726
|
dispatch(setPackagingFlightResults(packageFlightSearchResults));
|
|
47946
|
-
|
|
47947
|
-
|
|
47948
|
-
|
|
47949
|
-
|
|
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
|
+
}
|
|
47950
48735
|
}
|
|
47951
48736
|
dispatch(setFlightsLoading(false));
|
|
47952
48737
|
return [3 /*break*/, 3];
|
|
47953
48738
|
case 2:
|
|
47954
|
-
err_4 =
|
|
48739
|
+
err_4 = _b.sent();
|
|
47955
48740
|
console.error('FlightSearch failed', err_4);
|
|
47956
48741
|
dispatch(setFlightsLoading(false));
|
|
47957
48742
|
return [3 /*break*/, 3];
|
|
@@ -48173,6 +48958,7 @@ var SearchResultsContainer = function () {
|
|
|
48173
48958
|
(context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.GroupTour
|
|
48174
48959
|
) {
|
|
48175
48960
|
handleFlyInToggle(true);
|
|
48961
|
+
dispatch(setFlyInType('acco-details'));
|
|
48176
48962
|
}
|
|
48177
48963
|
_f.label = 1;
|
|
48178
48964
|
case 1:
|
|
@@ -48264,13 +49050,15 @@ var SearchResultsContainer = function () {
|
|
|
48264
49050
|
if (selectedPackagingAccoResultCode) {
|
|
48265
49051
|
fetchPackagingAccoSearchDetails();
|
|
48266
49052
|
}
|
|
48267
|
-
dispatch(setAccommodationFlyInStep('details'));
|
|
48268
49053
|
},
|
|
48269
49054
|
[selectedSearchResult, selectedPackagingAccoResultCode]
|
|
48270
49055
|
);
|
|
48271
49056
|
React.useEffect(
|
|
48272
49057
|
function () {
|
|
48273
|
-
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
|
+
) {
|
|
48274
49062
|
var filteredPackageAccoResults = applyFiltersToPackageAccoResults(packagingAccoResults, filters, selectedSortType);
|
|
48275
49063
|
dispatch(setFilteredPackagingAccoResults(filteredPackageAccoResults));
|
|
48276
49064
|
} else {
|
|
@@ -48280,6 +49068,15 @@ var SearchResultsContainer = function () {
|
|
|
48280
49068
|
},
|
|
48281
49069
|
[filters, results, packagingAccoResults, selectedSortType]
|
|
48282
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
|
+
);
|
|
48283
49080
|
React.useEffect(
|
|
48284
49081
|
function () {
|
|
48285
49082
|
setInitialFiltersSet(false);
|
|
@@ -48354,7 +49151,6 @@ var SearchResultsContainer = function () {
|
|
|
48354
49151
|
return [4 /*yield*/, build.getItinerary(config, request)];
|
|
48355
49152
|
case 2:
|
|
48356
49153
|
itinerary_1 = _c.sent();
|
|
48357
|
-
console.log('Fetched itinerary', itinerary_1);
|
|
48358
49154
|
dispatch(setItinerary(itinerary_1));
|
|
48359
49155
|
setItineraryIsLoading(false);
|
|
48360
49156
|
return [3 /*break*/, 4];
|
|
@@ -48375,37 +49171,22 @@ var SearchResultsContainer = function () {
|
|
|
48375
49171
|
[editablePackagingEntry]
|
|
48376
49172
|
);
|
|
48377
49173
|
// Flight selection
|
|
48378
|
-
|
|
48379
|
-
|
|
48380
|
-
|
|
48381
|
-
var
|
|
48382
|
-
|
|
48383
|
-
|
|
48384
|
-
var
|
|
48385
|
-
|
|
48386
|
-
|
|
48387
|
-
packagingFlightResults.forEach(function (flight) {
|
|
48388
|
-
var key = getFlightKey(flight.outward.segments);
|
|
48389
|
-
if (!map.has(key)) {
|
|
48390
|
-
map.set(key, flight);
|
|
48391
|
-
}
|
|
48392
|
-
});
|
|
48393
|
-
return Array.from(map.values());
|
|
48394
|
-
},
|
|
48395
|
-
[packagingFlightResults]
|
|
48396
|
-
);
|
|
48397
|
-
var _q = React.useState([]),
|
|
48398
|
-
uniqueReturnFlights = _q[0],
|
|
48399
|
-
setUniqueReturnFlights = _q[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);
|
|
48400
49183
|
React.useEffect(
|
|
48401
49184
|
function () {
|
|
48402
49185
|
var _a;
|
|
48403
49186
|
if (!selectedOutwardKey) {
|
|
48404
|
-
|
|
48405
|
-
setSelectedReturnKey(null);
|
|
49187
|
+
dispatch(setSelectedReturnKey(null));
|
|
48406
49188
|
return;
|
|
48407
49189
|
}
|
|
48408
|
-
// Filter combinations that match selected outward fare
|
|
48409
49190
|
var matchingCombinations = packagingFlightResults.filter(function (flight) {
|
|
48410
49191
|
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48411
49192
|
});
|
|
@@ -48417,44 +49198,26 @@ var SearchResultsContainer = function () {
|
|
|
48417
49198
|
}
|
|
48418
49199
|
});
|
|
48419
49200
|
var returns = Array.from(returnMap.values());
|
|
48420
|
-
|
|
48421
|
-
var firstReturnKey = returns.length > 0 ? getFlightKey(
|
|
48422
|
-
if (
|
|
48423
|
-
|
|
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));
|
|
48424
49209
|
}
|
|
48425
49210
|
},
|
|
48426
|
-
[selectedOutwardKey, packagingFlightResults]
|
|
48427
|
-
);
|
|
48428
|
-
var selectedOutward = React__default['default'].useMemo(
|
|
48429
|
-
function () {
|
|
48430
|
-
if (!selectedOutwardKey) return null;
|
|
48431
|
-
return (
|
|
48432
|
-
packagingFlightResults.find(function (flight) {
|
|
48433
|
-
return getFlightKey(flight.outward.segments) === selectedOutwardKey;
|
|
48434
|
-
}) || null
|
|
48435
|
-
);
|
|
48436
|
-
},
|
|
48437
|
-
[packagingFlightResults, selectedOutwardKey]
|
|
48438
|
-
);
|
|
48439
|
-
var selectedReturn = React__default['default'].useMemo(
|
|
48440
|
-
function () {
|
|
48441
|
-
if (!selectedReturnKey) return null;
|
|
48442
|
-
return (
|
|
48443
|
-
packagingFlightResults.find(function (flight) {
|
|
48444
|
-
return getFlightKey(flight.return.segments) === selectedReturnKey;
|
|
48445
|
-
}) || null
|
|
48446
|
-
);
|
|
48447
|
-
},
|
|
48448
|
-
[packagingFlightResults, selectedReturnKey]
|
|
49211
|
+
[selectedOutwardKey, packagingFlightResults, selectedReturnKey, dispatch]
|
|
48449
49212
|
);
|
|
48450
|
-
var
|
|
49213
|
+
var visibleOutwardFlights = React__default['default'].useMemo(
|
|
48451
49214
|
function () {
|
|
48452
|
-
|
|
48453
|
-
|
|
48454
|
-
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;
|
|
48455
49217
|
});
|
|
49218
|
+
return withoutSelected.slice(0, 3);
|
|
48456
49219
|
},
|
|
48457
|
-
[
|
|
49220
|
+
[uniqueOutwardFlights, selectedOutwardKey]
|
|
48458
49221
|
);
|
|
48459
49222
|
// TODO: get details for selected combination flight and show in fly-in
|
|
48460
49223
|
// useEffect(() => {
|
|
@@ -48463,6 +49226,7 @@ var SearchResultsContainer = function () {
|
|
|
48463
49226
|
// // onFlightSearch(selectedCombinationFlight); // Trigger search to update accommodation options based on selected flight
|
|
48464
49227
|
// dispatch(setFlyInIsOpen(true));
|
|
48465
49228
|
// }, [selectedCombinationFlight, dispatch]);
|
|
49229
|
+
// Build packagingEntry
|
|
48466
49230
|
React.useEffect(
|
|
48467
49231
|
function () {
|
|
48468
49232
|
var _a, _b, _c, _d;
|
|
@@ -48761,12 +49525,10 @@ var SearchResultsContainer = function () {
|
|
|
48761
49525
|
lines: []
|
|
48762
49526
|
};
|
|
48763
49527
|
};
|
|
48764
|
-
var
|
|
48765
|
-
|
|
48766
|
-
|
|
48767
|
-
|
|
48768
|
-
[showAllOutwardFlights, uniqueOutwardFlights]
|
|
48769
|
-
);
|
|
49528
|
+
var handleShowMoreFlights = function (flyInType) {
|
|
49529
|
+
dispatch(setFlyInType(flyInType));
|
|
49530
|
+
dispatch(setFlyInIsOpen(true));
|
|
49531
|
+
};
|
|
48770
49532
|
return React__default['default'].createElement(
|
|
48771
49533
|
'div',
|
|
48772
49534
|
{ id: 'tide-booking', className: 'search__bg' },
|
|
@@ -48783,7 +49545,6 @@ var SearchResultsContainer = function () {
|
|
|
48783
49545
|
{ tideConnection: context.tideConnection },
|
|
48784
49546
|
React__default['default'].createElement(FlightResultsContainer, { isMobile: isMobile }),
|
|
48785
49547
|
React__default['default'].createElement(FlyIn, {
|
|
48786
|
-
title: 'Select your fare',
|
|
48787
49548
|
srpType: context.searchConfiguration.qsmType,
|
|
48788
49549
|
isOpen: flyInIsOpen,
|
|
48789
49550
|
setIsOpen: handleFlyInToggle,
|
|
@@ -48810,7 +49571,13 @@ var SearchResultsContainer = function () {
|
|
|
48810
49571
|
return setFiltersOpen(!filtersOpen);
|
|
48811
49572
|
},
|
|
48812
49573
|
// handleApplyFilters={() => setSearchTrigger((prev) => prev + 1)}
|
|
48813
|
-
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
|
+
}
|
|
48814
49581
|
}),
|
|
48815
49582
|
context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight &&
|
|
48816
49583
|
React__default['default'].createElement(Itinerary, {
|
|
@@ -48877,53 +49644,53 @@ var SearchResultsContainer = function () {
|
|
|
48877
49644
|
}
|
|
48878
49645
|
})
|
|
48879
49646
|
),
|
|
48880
|
-
|
|
48881
|
-
'div',
|
|
48882
|
-
{ className: 'search__result-row' },
|
|
49647
|
+
context.searchConfiguration.qsmType !== build.PortalQsmType.AccommodationAndFlight &&
|
|
48883
49648
|
React__default['default'].createElement(
|
|
48884
|
-
'
|
|
48885
|
-
{ className: 'search__result-row
|
|
48886
|
-
|
|
48887
|
-
|
|
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 &&
|
|
48888
49672
|
React__default['default'].createElement(
|
|
48889
|
-
|
|
48890
|
-
|
|
48891
|
-
|
|
48892
|
-
|
|
48893
|
-
(
|
|
48894
|
-
|
|
48895
|
-
|
|
48896
|
-
|
|
48897
|
-
|
|
48898
|
-
|
|
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
|
+
})
|
|
48899
49692
|
)
|
|
48900
49693
|
),
|
|
48901
|
-
!context.packagingEntry &&
|
|
48902
|
-
!isMobile &&
|
|
48903
|
-
sortByTypes &&
|
|
48904
|
-
sortByTypes.length > 0 &&
|
|
48905
|
-
React__default['default'].createElement(
|
|
48906
|
-
'div',
|
|
48907
|
-
{ className: 'search__result-row-filter' },
|
|
48908
|
-
React__default['default'].createElement(ItemPicker, {
|
|
48909
|
-
items: sortByTypes,
|
|
48910
|
-
selection: (selectedSortType === null || selectedSortType === void 0 ? void 0 : selectedSortType.label) || undefined,
|
|
48911
|
-
selectedSortByType: selectedSortType,
|
|
48912
|
-
label: translations.SRP.SORTBY,
|
|
48913
|
-
placeholder: translations.SRP.SORTBY,
|
|
48914
|
-
classModifier: 'travel-class-picker__items',
|
|
48915
|
-
valueFormatter: function (value, direction) {
|
|
48916
|
-
return getSortingName(
|
|
48917
|
-
translations,
|
|
48918
|
-
findSortByType(sortByTypes, value, direction !== null && direction !== void 0 ? direction : 'asc')
|
|
48919
|
-
);
|
|
48920
|
-
},
|
|
48921
|
-
onPick: function (newSortKey, direction) {
|
|
48922
|
-
return handleSortChange(newSortKey, direction);
|
|
48923
|
-
}
|
|
48924
|
-
})
|
|
48925
|
-
)
|
|
48926
|
-
),
|
|
48927
49694
|
React__default['default'].createElement(
|
|
48928
49695
|
'div',
|
|
48929
49696
|
{ className: 'search__results__wrapper' },
|
|
@@ -48977,7 +49744,7 @@ var SearchResultsContainer = function () {
|
|
|
48977
49744
|
item: selectedOutward.outward,
|
|
48978
49745
|
guid: selectedOutward.outwardGuid,
|
|
48979
49746
|
onSelect: function () {
|
|
48980
|
-
return setSelectedOutwardKey(null);
|
|
49747
|
+
return dispatch(setSelectedOutwardKey(null));
|
|
48981
49748
|
},
|
|
48982
49749
|
selectedGuid: selectedOutward.outwardGuid,
|
|
48983
49750
|
isOutward: true,
|
|
@@ -48989,7 +49756,7 @@ var SearchResultsContainer = function () {
|
|
|
48989
49756
|
key: 'flight-'.concat(result.outwardGuid),
|
|
48990
49757
|
item: result.outward,
|
|
48991
49758
|
onSelect: function () {
|
|
48992
|
-
return setSelectedOutwardKey(getFlightKey(result.outward.segments));
|
|
49759
|
+
return dispatch(setSelectedOutwardKey(getFlightKey(result.outward.segments)));
|
|
48993
49760
|
},
|
|
48994
49761
|
guid: result.outwardGuid,
|
|
48995
49762
|
isOutward: true,
|
|
@@ -49008,10 +49775,10 @@ var SearchResultsContainer = function () {
|
|
|
49008
49775
|
{
|
|
49009
49776
|
className: 'cta cta--secondary',
|
|
49010
49777
|
onClick: function () {
|
|
49011
|
-
return
|
|
49778
|
+
return handleShowMoreFlights('flight-outward-results');
|
|
49012
49779
|
}
|
|
49013
49780
|
},
|
|
49014
|
-
|
|
49781
|
+
translations.SRP.SHOW_MORE
|
|
49015
49782
|
)
|
|
49016
49783
|
)
|
|
49017
49784
|
)
|
|
@@ -49066,7 +49833,7 @@ var SearchResultsContainer = function () {
|
|
|
49066
49833
|
key: 'flight-'.concat(result.outwardGuid),
|
|
49067
49834
|
item: result.return,
|
|
49068
49835
|
onSelect: function () {
|
|
49069
|
-
return setSelectedReturnKey(getFlightKey(result.return.segments));
|
|
49836
|
+
return dispatch(setSelectedReturnKey(getFlightKey(result.return.segments)));
|
|
49070
49837
|
},
|
|
49071
49838
|
guid: result.outwardGuid,
|
|
49072
49839
|
isOutward: false,
|
|
@@ -49083,7 +49850,6 @@ var SearchResultsContainer = function () {
|
|
|
49083
49850
|
)
|
|
49084
49851
|
),
|
|
49085
49852
|
React__default['default'].createElement(FlyIn, {
|
|
49086
|
-
title: ''.concat(translations.SRP.SELECT, ' ').concat(translations.SRP.ACCOMMODATION),
|
|
49087
49853
|
srpType: context.searchConfiguration.qsmType,
|
|
49088
49854
|
isOpen: flyInIsOpen,
|
|
49089
49855
|
setIsOpen: handleFlyInToggle,
|
|
@@ -49094,8 +49860,9 @@ var SearchResultsContainer = function () {
|
|
|
49094
49860
|
return (panelRef.current = el);
|
|
49095
49861
|
},
|
|
49096
49862
|
detailsLoading: detailsIsLoading,
|
|
49097
|
-
|
|
49098
|
-
isPackageEditFlow: !!context.packagingEntry
|
|
49863
|
+
flyInType: flyInType,
|
|
49864
|
+
isPackageEditFlow: !!context.packagingEntry,
|
|
49865
|
+
sortByTypes: sortByTypes
|
|
49099
49866
|
})
|
|
49100
49867
|
)
|
|
49101
49868
|
)
|