@qite/tide-booking-component 1.4.102 → 1.4.104

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