@qite/tide-booking-component 1.4.35 → 1.4.37

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.
@@ -11961,6 +11961,9 @@ var ENDPOINT_SEARCH_WITH_ERROR_MAPPING =
11961
11961
  // const ENDPOINT_ELASTIC = `${ENDPOINT}/elastic`; // TODO
11962
11962
  var ENDPOINT_DETAILS = ENDPOINT$7 + "/details";
11963
11963
  var ENDPOINT_DETAILS_WL = ENDPOINT$7 + "/details-wl";
11964
+ var ENDPOINT_ENTRYLIGHT = function (code) {
11965
+ return ENDPOINT$7 + "/entry-light/" + code;
11966
+ };
11964
11967
  var ENDPOINT_VALIDATE_VOUCHER = ENDPOINT$7 + "/validate-voucher";
11965
11968
  var ENDPOINT_ALTERNATE_HOTELS = function (transactionId, optionId) {
11966
11969
  return (
@@ -12054,6 +12057,11 @@ var detailsWL = function (config, request, signal, languageCode) {
12054
12057
  var body = JSON.stringify(request);
12055
12058
  return post(url, apiKey, body, config.token, signal, true, languageCode);
12056
12059
  };
12060
+ var getEntryLight = function (config, code, signal) {
12061
+ var url = "" + config.host + ENDPOINT_ENTRYLIGHT(code);
12062
+ var apiKey = config.apiKey;
12063
+ return get(url, apiKey, config.token, signal, true);
12064
+ };
12057
12065
  var validateVoucher = function (config, request, signal) {
12058
12066
  var url = "" + config.host + ENDPOINT_VALIDATE_VOUCHER;
12059
12067
  var apiKey = config.apiKey;
@@ -12197,6 +12205,7 @@ var getMolliePayment = function (config, request, signal) {
12197
12205
 
12198
12206
  var ENDPOINT$4 = "/api/web/search";
12199
12207
  var ENDPOINT_COUNTRIES = ENDPOINT$4 + "/countries";
12208
+ var ENDPOINT_LOCATIONS$1 = ENDPOINT$4 + "/locations";
12200
12209
  /**
12201
12210
  * api/search/countries
12202
12211
  * Gets all Countries
@@ -12209,6 +12218,15 @@ var getCountries = function (config, signal) {
12209
12218
  var apiKey = config.apiKey;
12210
12219
  return get(url, apiKey, config.token, signal, true);
12211
12220
  };
12221
+ var searchLocations = function (config, searchTerm, signal) {
12222
+ var apiKey = config.apiKey;
12223
+ var safeSearch = searchTerm.replace(/'/g, "''");
12224
+ var filter =
12225
+ "$filter=contains(tolower(Name),'" + safeSearch.toLowerCase() + "')";
12226
+ var top = "$top=10";
12227
+ var url = "" + config.host + ENDPOINT_LOCATIONS$1 + "?" + filter + "&" + top;
12228
+ return get(url, apiKey, config.token, signal, true);
12229
+ };
12212
12230
 
12213
12231
  var createParams = function (filter, all, gridColumns, mode, forceToLower) {
12214
12232
  var params = {};
@@ -12646,6 +12664,7 @@ exports.getAllotmentList = getAllotmentList;
12646
12664
  exports.getCountries = getCountries;
12647
12665
  exports.getCustomEntryStatus = getCustomEntryStatus;
12648
12666
  exports.getEntryDetailv2 = getEntryDetailv2;
12667
+ exports.getEntryLight = getEntryLight;
12649
12668
  exports.getEntryList = getEntryList;
12650
12669
  exports.getEntryListv2 = getEntryListv2;
12651
12670
  exports.getEntryStatus = getEntryStatus;
@@ -12664,6 +12683,7 @@ exports.resetPassword = resetPassword;
12664
12683
  exports.search = search;
12665
12684
  exports.searchElastic = searchElastic;
12666
12685
  exports.searchFlightPool = searchFlightPool;
12686
+ exports.searchLocations = searchLocations;
12667
12687
  exports.searchWithErrorMapping = searchWithErrorMapping;
12668
12688
  exports.setCustomEntryStatus = setCustomEntryStatus;
12669
12689
  exports.setEntryStatus = setEntryStatus;
@@ -21544,60 +21564,77 @@ var TravelInput = function () {
21544
21564
  };
21545
21565
 
21546
21566
  var MobileFilterModal = function () {
21547
- var _a = React.useContext(QSMConfigurationContext), datesIcon = _a.datesIcon, languageCode = _a.languageCode;
21567
+ var _a = React.useContext(QSMConfigurationContext), datesIcon = _a.datesIcon, languageCode = _a.languageCode, searchFields = _a.searchFields;
21548
21568
  var translations = getTranslations(languageCode !== null && languageCode !== void 0 ? languageCode : 'en-GB');
21549
21569
  var dispatch = reactRedux.useDispatch();
21550
- var _b = reactRedux.useSelector(function (state) { return state.qsm; }), mobileFilterType = _b.mobileFilterType, mobileDatePickerMode = _b.mobileDatePickerMode, activeSearchFieldProps = _b.activeSearchFieldProps, fromDate = _b.fromDate, toDate = _b.toDate;
21570
+ var _b = reactRedux.useSelector(function (state) { return state.qsm; }), mobileFilterType = _b.mobileFilterType, mobileDatePickerMode = _b.mobileDatePickerMode, activeSearchFieldProps = _b.activeSearchFieldProps, fromDate = _b.fromDate, toDate = _b.toDate, searchResults = _b.searchResults;
21551
21571
  var _c = React.useState(''), inputValue = _c[0], setInputValue = _c[1];
21552
- var _d = React.useState([]), searchResultsLocal = _d[0], setSearchResultsLocal = _d[1];
21553
- var hasTypedRef = React.useRef(false);
21554
21572
  /* ---------------------------------------------------------------- */
21555
21573
  /* Sync local state when a new field is opened */
21556
21574
  /* ---------------------------------------------------------------- */
21557
21575
  React.useEffect(function () {
21558
21576
  if (activeSearchFieldProps) {
21559
21577
  setInputValue(activeSearchFieldProps.value || '');
21560
- setSearchResultsLocal([]);
21561
- hasTypedRef.current = false;
21578
+ // setSearchResultsLocal([]);
21579
+ // hasTypedRef.current = false;
21562
21580
  }
21563
21581
  }, [activeSearchFieldProps]);
21564
21582
  /* ---------------------------------------------------------------- */
21565
21583
  /* Helpers */
21566
21584
  /* ---------------------------------------------------------------- */
21567
21585
  var closeModal = function () {
21568
- hasTypedRef.current = false;
21586
+ // hasTypedRef.current = false;
21569
21587
  dispatch(closeMobileFilter());
21570
21588
  };
21571
- // const handleLocationChange = (val: string) => {
21572
- // setInputValue(val);
21573
- // hasTypedRef.current = true;
21574
- // if (val.trim() !== '' && activeSearchFieldProps) {
21575
- // const filtered = activeSearchFieldProps.options.filter((loc) => loc.value.toLowerCase().includes(val.toLowerCase())).map((loc) => loc.value);
21576
- // setSearchResultsLocal(filtered);
21577
- // } else {
21578
- // setSearchResultsLocal([]);
21579
- // }
21580
- // };
21581
- var handleLocationChange = function (val) {
21582
- setInputValue(val);
21583
- hasTypedRef.current = true;
21584
- if (val.trim() !== '' && activeSearchFieldProps) {
21585
- var filtered = activeSearchFieldProps.options.filter(function (option) { return option.value.toLowerCase().includes(val.toLowerCase()); });
21586
- setSearchResultsLocal(filtered);
21587
- }
21588
- else {
21589
- setSearchResultsLocal([]);
21589
+ var findConfig = function (all, key) {
21590
+ for (var _i = 0, all_1 = all; _i < all_1.length; _i++) {
21591
+ var config_1 = all_1[_i];
21592
+ if (config_1.type === 'single' && config_1.fieldKey === key) {
21593
+ return config_1;
21594
+ }
21595
+ if (config_1.type === 'double') {
21596
+ var field = config_1.fields.find(function (x) { return x.fieldKey === key; });
21597
+ if (field)
21598
+ return field;
21599
+ }
21590
21600
  }
21601
+ return undefined;
21591
21602
  };
21592
- // const handleLocationSelect = (val: string) => {
21593
- // if (activeSearchFieldProps) {
21594
- // const { fieldKey } = activeSearchFieldProps;
21595
- // dispatch(setFieldValue({ fieldKey, value: val }));
21596
- // dispatch(setSearchResultsAction([]));
21597
- // dispatch(setActiveSearchField(null));
21598
- // }
21599
- // dispatch(closeMobileFilter());
21600
- // };
21603
+ var config = React.useMemo(function () {
21604
+ if (!activeSearchFieldProps)
21605
+ return undefined;
21606
+ return findConfig(searchFields, activeSearchFieldProps.fieldKey);
21607
+ }, [searchFields, activeSearchFieldProps]);
21608
+ var match = React.useCallback(function (input) {
21609
+ if (!input) {
21610
+ return [];
21611
+ }
21612
+ var lowered = input.toLowerCase();
21613
+ return activeSearchFieldProps === null || activeSearchFieldProps === void 0 ? void 0 : activeSearchFieldProps.options.filter(function (option) { var _a; return option.value.toLowerCase().includes(lowered) || ((_a = option.iataCode) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(lowered)); });
21614
+ }, [activeSearchFieldProps === null || activeSearchFieldProps === void 0 ? void 0 : activeSearchFieldProps.options]);
21615
+ var handleInputChange = React.useCallback(function (input) {
21616
+ var _a;
21617
+ setInputValue(input);
21618
+ if (!activeSearchFieldProps)
21619
+ return;
21620
+ dispatch(setFieldValue({ fieldKey: activeSearchFieldProps.fieldKey, value: input }));
21621
+ dispatch(setSearchResults([]));
21622
+ dispatch(setActiveSearchField(activeSearchFieldProps.fieldKey));
21623
+ if (config === null || config === void 0 ? void 0 : config.onChange) {
21624
+ config.onChange(input);
21625
+ return;
21626
+ }
21627
+ var filtered = (_a = match(input)) !== null && _a !== void 0 ? _a : [];
21628
+ dispatch(setSearchResults(filtered));
21629
+ }, [dispatch, activeSearchFieldProps, match]);
21630
+ React.useEffect(function () {
21631
+ var _a;
21632
+ if (!activeSearchFieldProps)
21633
+ return;
21634
+ if (!inputValue)
21635
+ return;
21636
+ dispatch(setSearchResults((_a = match(inputValue)) !== null && _a !== void 0 ? _a : []));
21637
+ }, [activeSearchFieldProps === null || activeSearchFieldProps === void 0 ? void 0 : activeSearchFieldProps.options]);
21601
21638
  var handleLocationSelect = function (option) {
21602
21639
  if (activeSearchFieldProps) {
21603
21640
  var fieldKey = activeSearchFieldProps.fieldKey;
@@ -21657,8 +21694,10 @@ var MobileFilterModal = function () {
21657
21694
  React__default["default"].createElement("span", { className: "mobile-qsm-filter__modal-header-close", onClick: closeModal }))),
21658
21695
  React__default["default"].createElement("div", { className: "qsm__double-input qsm__double-input--search-modal" },
21659
21696
  React__default["default"].createElement("label", { className: "qsm__input-wrapper" },
21660
- React__default["default"].createElement("input", { type: "text", id: "search", value: inputValue, onChange: function (e) { return handleLocationChange(e.target.value); }, className: "qsm__input qsm__input--modal qsm__from-to u-ps-2", placeholder: activeSearchFieldProps.placeholder }),
21661
- React__default["default"].createElement(SearchInput, { onChange: handleLocationChange, searchResults: searchResultsLocal, onOptionSelect: handleLocationSelect, highlightTarget: inputValue, label: activeSearchFieldProps.label }))),
21697
+ React__default["default"].createElement("input", { type: "text", id: "search", value: inputValue, onClick: function (e) { return e.stopPropagation(); }, onChange: function (e) { return handleInputChange(e.target.value); },
21698
+ // onChange={(e) => handleLocationChange(e.target.value)}
21699
+ className: "qsm__input qsm__input--modal qsm__from-to u-ps-2", placeholder: activeSearchFieldProps.placeholder }),
21700
+ React__default["default"].createElement(SearchInput, { onChange: handleInputChange, searchResults: searchResults, onOptionSelect: handleLocationSelect, highlightTarget: inputValue, label: activeSearchFieldProps.label }))),
21662
21701
  React__default["default"].createElement("div", { className: "mobile-qsm-filter__modal-footer" },
21663
21702
  React__default["default"].createElement("button", { className: "cta", onClick: closeModal }, translations.QSM.CONFIRM))));
21664
21703
  };
@@ -21721,7 +21760,7 @@ var SearchInputGroup = function (_a) {
21721
21760
  return [];
21722
21761
  }
21723
21762
  var lowered = input.toLowerCase();
21724
- return options.filter(function (option) { return option.value.toLowerCase().includes(lowered); });
21763
+ return options.filter(function (option) { var _a; return option.value.toLowerCase().includes(lowered) || ((_a = option.iataCode) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(lowered)); });
21725
21764
  }, [options]);
21726
21765
  var handleInputChange = React.useCallback(function (input) {
21727
21766
  dispatch(setFieldValue({ fieldKey: fieldKey, value: input }));
@@ -21729,8 +21768,19 @@ var SearchInputGroup = function (_a) {
21729
21768
  if (small)
21730
21769
  return;
21731
21770
  dispatch(setActiveSearchField(fieldKey));
21771
+ // if field has custom onChange (API search)
21772
+ if (config.onChange) {
21773
+ config.onChange(input);
21774
+ return;
21775
+ }
21776
+ // fallback to local filtering
21732
21777
  dispatch(setSearchResults(match(input)));
21733
- }, [dispatch, fieldKey, small, match, options]);
21778
+ }, [dispatch, fieldKey, small, match, config]);
21779
+ React.useEffect(function () {
21780
+ if (!value || activeSearchField !== fieldKey)
21781
+ return;
21782
+ dispatch(setSearchResults(match(value)));
21783
+ }, [options, value, activeSearchField, config, fieldKey]);
21734
21784
  var handleKeyDown = React.useCallback(function (e) {
21735
21785
  if (!['Tab', 'Enter'].includes(e.key))
21736
21786
  return;
@@ -22866,14 +22916,13 @@ var Itinerary = function (_a) {
22866
22916
  React__default["default"].createElement("div", { className: "search__filter-row-flex-title" },
22867
22917
  React__default["default"].createElement("p", { className: "search__filter-small-title" }, translations.SRP.ITINERARY_TITLE))),
22868
22918
  isLoading ? (React__default["default"].createElement(Spinner, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
22869
- React__default["default"].createElement("div", { className: "search__filter-group" },
22870
- React__default["default"].createElement("div", { className: "search__filter__image__wrapper" },
22871
- React__default["default"].createElement("img", { src: "", alt: "", className: "search__filter__image" }),
22872
- (entry === null || entry === void 0 ? void 0 : entry.number) && (React__default["default"].createElement("span", { className: "search__filter__image__text" },
22873
- translations.SRP.DOSSIER_NUMBER,
22874
- ": ", entry === null || entry === void 0 ? void 0 :
22875
- entry.number)),
22876
- React__default["default"].createElement("h4", { className: "search__filter__image__title" }, (location || '') + (location && country ? ' - ' : '') + (country || '')))),
22919
+ React__default["default"].createElement("div", { className: "search__filter-group" }, (context === null || context === void 0 ? void 0 : context.destinationImage) && (React__default["default"].createElement("div", { className: "search__filter__image__wrapper" },
22920
+ React__default["default"].createElement("img", { src: context.destinationImage.url, alt: context.destinationImage.alt, className: "search__filter__image" }),
22921
+ (entry === null || entry === void 0 ? void 0 : entry.number) && (React__default["default"].createElement("span", { className: "search__filter__image__text" },
22922
+ translations.SRP.DOSSIER_NUMBER,
22923
+ ": ", entry === null || entry === void 0 ? void 0 :
22924
+ entry.number)),
22925
+ React__default["default"].createElement("h4", { className: "search__filter__image__title" }, (location || '') + (location && country ? ' - ' : '') + (country || ''))))),
22877
22926
  React__default["default"].createElement("div", { className: "search__filter__prices" },
22878
22927
  React__default["default"].createElement("div", { className: "search__filter__prices__wrapper" },
22879
22928
  React__default["default"].createElement("h3", { className: "search__filter__prices--amount" }, formatPrice(((entry === null || entry === void 0 ? void 0 : entry.sellingPrice) || 0) / ((entry === null || entry === void 0 ? void 0 : entry.numberOfPax) || 1), (entry === null || entry === void 0 ? void 0 : entry.currencyCode) || 'EUR')),
@@ -23092,6 +23141,9 @@ var calculateNights = function (fromDate, toDate, translations) {
23092
23141
  var HotelAccommodationResults = function (_a) {
23093
23142
  var _b, _c;
23094
23143
  var isLoading = _a.isLoading, context = _a.context;
23144
+ if (context.showMockup) {
23145
+ return showMocukups(context);
23146
+ }
23095
23147
  var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
23096
23148
  if (isLoading) {
23097
23149
  return React__default["default"].createElement(React__default["default"].Fragment, null, (_c = context === null || context === void 0 ? void 0 : context.customSpinner) !== null && _c !== void 0 ? _c : React__default["default"].createElement(Spinner, null));
@@ -23125,6 +23177,191 @@ var HotelAccommodationResults = function (_a) {
23125
23177
  " ",
23126
23178
  React__default["default"].createElement("strong", null, translations.SRP.ACCOMMODATION)))),
23127
23179
  renderResults(results, context, cmsMap, activeTab, translations)));
23180
+ };
23181
+ var showMocukups = function (context) {
23182
+ var mockedHotelResults = [
23183
+ {
23184
+ type: 'hotel',
23185
+ id: 2,
23186
+ title: 'HTFSWILLCARL',
23187
+ image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
23188
+ description: '2 persoons kamer',
23189
+ location: 'Tenerif, Spanje',
23190
+ price: '$2244',
23191
+ ctaText: 'Bekijk details',
23192
+ days: '7 nights',
23193
+ flightInfo: null,
23194
+ accommodation: 'Hotel XYZ',
23195
+ regime: 'All-inclusive',
23196
+ stars: 5
23197
+ },
23198
+ {
23199
+ type: 'hotel',
23200
+ id: 3,
23201
+ title: 'HTFSSOFTROCK',
23202
+ image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
23203
+ description: '3 persoons kamer',
23204
+ location: 'Tenerif, Spanje',
23205
+ price: '$2244',
23206
+ ctaText: 'Bekijk details',
23207
+ days: '7 nights',
23208
+ flightInfo: null,
23209
+ accommodation: 'Hotel ABC',
23210
+ regime: 'Half-board',
23211
+ stars: 4
23212
+ },
23213
+ {
23214
+ type: 'hotel',
23215
+ id: 4,
23216
+ title: 'HTFSROYGAR',
23217
+ image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
23218
+ description: '4 persoons kamer',
23219
+ location: 'Tenerif, Spanje',
23220
+ price: '$2496',
23221
+ ctaText: 'Bekijk details',
23222
+ days: '7 nights',
23223
+ flightInfo: null,
23224
+ accommodation: 'Hotel DEF',
23225
+ regime: 'Full-board',
23226
+ stars: 5
23227
+ },
23228
+ {
23229
+ type: 'hotel',
23230
+ id: 5,
23231
+ title: 'HTFSCONBEL',
23232
+ image: 'https://images.unsplash.com/photo-1573790387438-4da905039392?q=80&w=1925&auto=format&fit=crop',
23233
+ description: '5 persoons kamer',
23234
+ location: 'Tenerif, Spanje',
23235
+ price: '$6784.8',
23236
+ ctaText: 'Bekijk details',
23237
+ days: '7 nights',
23238
+ flightInfo: null,
23239
+ accommodation: 'Hotel GHI',
23240
+ regime: 'All-inclusive',
23241
+ stars: 5
23242
+ }
23243
+ ];
23244
+ return React__default["default"].createElement(React__default["default"].Fragment, null, renderMockupResults(mockedHotelResults, context));
23245
+ };
23246
+ var renderMockupResults = function (results, context) {
23247
+ var renderedResults = results.map(function (result, index) {
23248
+ if ((context === null || context === void 0 ? void 0 : context.showCustomCards) && (context === null || context === void 0 ? void 0 : context.customCardRenderer)) {
23249
+ return (React__default["default"].createElement("div", { key: "".concat(result.id, "-").concat(index), className: "search__result-card" }, context.customCardRenderer(result)));
23250
+ }
23251
+ return React__default["default"].createElement(HotelCard, { key: "".concat(result.id, "-").concat(index), result: result });
23252
+ });
23253
+ return React__default["default"].createElement("div", { className: "search__results__cards" }, renderedResults);
23254
+ };
23255
+
23256
+ var RoundTripResults = function () {
23257
+ return (React__default["default"].createElement("div", { className: "search__results__cards search__results__cards--list" },
23258
+ React__default["default"].createElement("div", { className: "search__result-card" },
23259
+ React__default["default"].createElement("div", { className: "search__result-card__allotment" },
23260
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__title__wrapper" },
23261
+ React__default["default"].createElement("h3", { className: "search__result-card__allotment__title" },
23262
+ "Rondreis Noord-India: Rajasthan",
23263
+ React__default["default"].createElement("span", { className: "search__result-card__allotment__badge" },
23264
+ React__default["default"].createElement(Icon, { name: "ui-circle-check", width: 14, height: 14 }),
23265
+ "GAR")),
23266
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__container" },
23267
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__header" },
23268
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__wrapper" },
23269
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__date" },
23270
+ React__default["default"].createElement(Icon, { name: "ui-plane", height: 16 }),
23271
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__date--from" }, "05-04-2026")),
23272
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__info" },
23273
+ React__default["default"].createElement("span", null,
23274
+ React__default["default"].createElement(Icon, { name: "ui-calendar", height: 16 })),
23275
+ ' ',
23276
+ "8 dagen -",
23277
+ ' ',
23278
+ React__default["default"].createElement("span", null,
23279
+ React__default["default"].createElement(Icon, { name: "ui-moon", height: 16 })),
23280
+ "7 nachten"))),
23281
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__info" },
23282
+ React__default["default"].createElement("a", { href: "#", type: "button", className: "search__result-card__allotment__info__group" }, "Group"),
23283
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__persons" },
23284
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__person" },
23285
+ React__default["default"].createElement(Icon, { name: "ui-men", width: 16, height: 16 }),
23286
+ React__default["default"].createElement("span", null, "2 p.")),
23287
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__person" },
23288
+ React__default["default"].createElement(Icon, { name: "ui-women", width: 16, height: 16 }),
23289
+ React__default["default"].createElement("span", null, "3 p.")))))),
23290
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__footer" },
23291
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price__wrapper" },
23292
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price" }, "\u20AC 1.250,00 p.p."),
23293
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price__info" }, "Gelieve \u20AC 450,00 zakgeld mee te nemen")),
23294
+ React__default["default"].createElement("button", { className: "cta cta--select" }, "Bekijk reis")))),
23295
+ React__default["default"].createElement("div", { className: "search__result-card" },
23296
+ React__default["default"].createElement("div", { className: "search__result-card__allotment" },
23297
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__title__wrapper" },
23298
+ React__default["default"].createElement("h3", { className: "search__result-card__allotment__title" },
23299
+ "Rondreis Thailand",
23300
+ React__default["default"].createElement("span", { className: "search__result-card__allotment__badge search__result-card__allotment__badge--secondary" },
23301
+ React__default["default"].createElement(Icon, { name: "ui-circle-half", width: 14, height: 14 }),
23302
+ "BIJNA GAR")),
23303
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__container" },
23304
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__header" },
23305
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__wrapper" },
23306
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__date" },
23307
+ React__default["default"].createElement(Icon, { name: "ui-plane", height: 16 }),
23308
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__date--from" }, "05-04-2026")),
23309
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__info" },
23310
+ React__default["default"].createElement("span", null,
23311
+ React__default["default"].createElement(Icon, { name: "ui-calendar", height: 16 })),
23312
+ ' ',
23313
+ "8 dagen -",
23314
+ ' ',
23315
+ React__default["default"].createElement("span", null,
23316
+ React__default["default"].createElement(Icon, { name: "ui-moon", height: 16 })),
23317
+ "7 nachten"))),
23318
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__info" },
23319
+ React__default["default"].createElement("a", { href: "#", type: "button", className: "search__result-card__allotment__info__group" }, "Group"),
23320
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__persons" },
23321
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__person" },
23322
+ React__default["default"].createElement(Icon, { name: "ui-men", width: 16, height: 16 }),
23323
+ React__default["default"].createElement("span", null, "2 p.")),
23324
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__person" },
23325
+ React__default["default"].createElement(Icon, { name: "ui-women", width: 16, height: 16 }),
23326
+ React__default["default"].createElement("span", null, "3 p.")))))),
23327
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__footer" },
23328
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price__wrapper" },
23329
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price" }, "\u20AC 1.250,00 p.p."),
23330
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price__info" }, "Gelieve \u20AC 450,00 zakgeld mee te nemen")),
23331
+ React__default["default"].createElement("button", { className: "cta cta--select" }, "Bekijk reis")))),
23332
+ React__default["default"].createElement("div", { className: "search__result-card" },
23333
+ React__default["default"].createElement("div", { className: "search__result-card__allotment" },
23334
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__title__wrapper" },
23335
+ React__default["default"].createElement("h3", { className: "search__result-card__allotment__title" }, "Rondreis Timboektoe"),
23336
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__container" },
23337
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__header" },
23338
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__wrapper" },
23339
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__date" },
23340
+ React__default["default"].createElement(Icon, { name: "ui-plane", height: 16 }),
23341
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__date--from" }, "05-04-2026")),
23342
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__info" },
23343
+ React__default["default"].createElement("span", null,
23344
+ React__default["default"].createElement(Icon, { name: "ui-calendar", height: 16 })),
23345
+ ' ',
23346
+ "8 dagen -",
23347
+ ' ',
23348
+ React__default["default"].createElement("span", null,
23349
+ React__default["default"].createElement(Icon, { name: "ui-moon", height: 16 })),
23350
+ "7 nachten"))),
23351
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__info" },
23352
+ React__default["default"].createElement("a", { href: "#", type: "button", className: "search__result-card__allotment__info__group" }, "Group"),
23353
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__persons" },
23354
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__person" },
23355
+ React__default["default"].createElement(Icon, { name: "ui-men", width: 16, height: 16 }),
23356
+ React__default["default"].createElement("span", null, "2 p.")),
23357
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__person" },
23358
+ React__default["default"].createElement(Icon, { name: "ui-women", width: 16, height: 16 }),
23359
+ React__default["default"].createElement("span", null, "3 p.")))))),
23360
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__footer" },
23361
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price__wrapper" },
23362
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price" }, "\u20AC 1.250,00 p.p."),
23363
+ React__default["default"].createElement("div", { className: "search__result-card__allotment__price__info" }, "Gelieve \u20AC 450,00 zakgeld mee te nemen")),
23364
+ React__default["default"].createElement("button", { className: "cta cta--select" }, "Bekijk reis"))))));
23128
23365
  };
23129
23366
 
23130
23367
  var enrichFiltersWithResults = function (results, filters) {
@@ -23173,7 +23410,7 @@ var FlightResults = function (_a) {
23173
23410
  translations.SRP.SELECT,
23174
23411
  " ",
23175
23412
  React__default["default"].createElement("strong", null, isDeparture ? translations.SRP.DEPARTURE : translations.SRP.RETURN)))),
23176
- React__default["default"].createElement("div", { className: "search__results__cards search__results__cards--extended" }, flights.map(function (flight, index) {
23413
+ flights && flights.length > 0 && (React__default["default"].createElement("div", { className: "search__results__cards search__results__cards--extended" }, flights.map(function (flight, index) {
23177
23414
  var lines = flight.flightMetaData.flightLines;
23178
23415
  var firstLine = lines[0];
23179
23416
  var lastLine = lines[lines.length - 1];
@@ -23247,113 +23484,608 @@ var FlightResults = function (_a) {
23247
23484
  React__default["default"].createElement("strong", null, formatDuration(dateFns.parseISO(nextLine.departureDate).getTime() - dateFns.parseISO(line.arrivalDate).getTime()))))))));
23248
23485
  })))),
23249
23486
  React__default["default"].createElement("div", { className: "flight__rate" })))));
23250
- }))));
23487
+ })))));
23488
+ };
23489
+
23490
+ var FlightAccommodationResults = function () {
23491
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
23492
+ React__default["default"].createElement("div", { className: "search__results__label search__results__label--secondary" },
23493
+ React__default["default"].createElement("div", { className: "search__results__label__date" },
23494
+ React__default["default"].createElement("p", { className: "search__results__label__date-date" }, "19"),
23495
+ React__default["default"].createElement("p", null, "Jan")),
23496
+ React__default["default"].createElement("div", { className: "search__results__label__text" },
23497
+ React__default["default"].createElement("h3", null,
23498
+ "Select ",
23499
+ React__default["default"].createElement("strong", null, "Accomodation")))),
23500
+ React__default["default"].createElement("div", { className: "search__results__cards search__results__cards--extended" },
23501
+ React__default["default"].createElement("div", { key: 1, className: "search__result-card" },
23502
+ React__default["default"].createElement("div", { className: "flight" },
23503
+ React__default["default"].createElement("div", { className: "flight__option" },
23504
+ React__default["default"].createElement("div", { className: "flight__content" },
23505
+ React__default["default"].createElement("div", { className: "flight__flights" },
23506
+ React__default["default"].createElement("div", { className: "flight__flight" },
23507
+ React__default["default"].createElement("div", { className: "flight__flight__header" },
23508
+ React__default["default"].createElement("div", { className: "flight__status__container" }),
23509
+ React__default["default"].createElement("div", { className: "flight__price" },
23510
+ React__default["default"].createElement("span", { className: "price price--increase" }, "- \u20AC 375,98"),
23511
+ React__default["default"].createElement("button", { type: "button", className: "cta cta--select" }, "Select")))),
23512
+ React__default["default"].createElement("div", { className: "flight__flight" },
23513
+ React__default["default"].createElement("div", { className: "flight__flight__container" },
23514
+ React__default["default"].createElement("div", { className: "flight__flight__wrapper" },
23515
+ React__default["default"].createElement("div", { className: "flight__logo__wrapper" },
23516
+ React__default["default"].createElement("img", { src: "https://media.tidesoftware.be/media/shared/Airlines/XX.png?height=256", alt: "", className: "flight__logo" }),
23517
+ React__default["default"].createElement("span", null, "Example Airline")),
23518
+ React__default["default"].createElement("div", { className: "flight__info" },
23519
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23520
+ React__default["default"].createElement("strong", null, "08:30 JFK"),
23521
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23522
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23523
+ React__default["default"].createElement("p", null, "7h 45m"),
23524
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" },
23525
+ React__default["default"].createElement("div", { className: "flight__info__duration__stop" })),
23526
+ React__default["default"].createElement("span", null, "1 stop")),
23527
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23528
+ React__default["default"].createElement("strong", null, "22:15 AMS"),
23529
+ React__default["default"].createElement("p", null, "Tue 13 Feb 2025"),
23530
+ React__default["default"].createElement("span", { className: "flight__info__times__days" }, "+1 day")))),
23531
+ React__default["default"].createElement("div", { className: "flight__detail__btn__wrapper" },
23532
+ React__default["default"].createElement("div", { className: "flight__detail__btn" },
23533
+ React__default["default"].createElement(Icon, { name: "ui-chevron", className: "flight__detail__btn__arrow", width: 16, height: 16 })))),
23534
+ React__default["default"].createElement("div", { className: "flight__detail" },
23535
+ React__default["default"].createElement("div", { className: "flight__info" },
23536
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
23537
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23538
+ React__default["default"].createElement("p", null, "08:30"),
23539
+ React__default["default"].createElement("strong", null, "JFK"),
23540
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23541
+ React__default["default"].createElement("div", null,
23542
+ React__default["default"].createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
23543
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23544
+ React__default["default"].createElement("p", null, "6h 20m"),
23545
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
23546
+ React__default["default"].createElement("span", null, "Example Airline"),
23547
+ React__default["default"].createElement("strong", null, "EA123")),
23548
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
23549
+ React__default["default"].createElement("div", null,
23550
+ React__default["default"].createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
23551
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23552
+ React__default["default"].createElement("p", null, "20:50"),
23553
+ React__default["default"].createElement("strong", null, "LHR"),
23554
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")))),
23555
+ React__default["default"].createElement("div", { className: "flight__info" },
23556
+ React__default["default"].createElement("div", { className: "flight__info__times" }),
23557
+ React__default["default"].createElement("div", { className: "flight__info__duration flight__info__duration--waittime" },
23558
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops flight__info__duration__stops--stoptime" },
23559
+ React__default["default"].createElement(Icon, { name: "ui-clock", width: 24, height: 24 })),
23560
+ React__default["default"].createElement("div", { className: "flight__info__duration__stoptime" },
23561
+ React__default["default"].createElement("span", null, "Stop time"),
23562
+ React__default["default"].createElement("strong", null, "1h 15m"))),
23563
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" })),
23564
+ React__default["default"].createElement("div", { className: "flight__info" },
23565
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
23566
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23567
+ React__default["default"].createElement("p", null, "22:05"),
23568
+ React__default["default"].createElement("strong", null, "LHR"),
23569
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23570
+ React__default["default"].createElement("div", null,
23571
+ React__default["default"].createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
23572
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23573
+ React__default["default"].createElement("p", null, "1h 10m"),
23574
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
23575
+ React__default["default"].createElement("span", null, "Example Airline"),
23576
+ React__default["default"].createElement("strong", null, "EA456")),
23577
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
23578
+ React__default["default"].createElement("div", null,
23579
+ React__default["default"].createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
23580
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23581
+ React__default["default"].createElement("p", null, "23:15"),
23582
+ React__default["default"].createElement("strong", null, "AMS"),
23583
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025"))))),
23584
+ React__default["default"].createElement("div", { className: "flight__rate" }))))))),
23585
+ React__default["default"].createElement("div", { key: 2, className: "search__result-card" },
23586
+ React__default["default"].createElement("div", { className: "flight" },
23587
+ React__default["default"].createElement("div", { className: "flight__option" },
23588
+ React__default["default"].createElement("div", { className: "flight__content" },
23589
+ React__default["default"].createElement("div", { className: "flight__flights" },
23590
+ React__default["default"].createElement("div", { className: "flight__flight" },
23591
+ React__default["default"].createElement("div", { className: "flight__flight__header" },
23592
+ React__default["default"].createElement("div", { className: "flight__status__container" }),
23593
+ React__default["default"].createElement("div", { className: "flight__price" },
23594
+ React__default["default"].createElement("span", { className: "price price--increase" }, "- \u20AC 375,98"),
23595
+ React__default["default"].createElement("button", { type: "button", className: "cta cta--select" }, "Select")))),
23596
+ React__default["default"].createElement("div", { className: "flight__flight" },
23597
+ React__default["default"].createElement("div", { className: "flight__flight__container" },
23598
+ React__default["default"].createElement("div", { className: "flight__flight__wrapper" },
23599
+ React__default["default"].createElement("div", { className: "flight__logo__wrapper" },
23600
+ React__default["default"].createElement("img", { src: "https://media.tidesoftware.be/media/shared/Airlines/XX.png?height=256", alt: "", className: "flight__logo" }),
23601
+ React__default["default"].createElement("span", null, "Example Airline")),
23602
+ React__default["default"].createElement("div", { className: "flight__info" },
23603
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23604
+ React__default["default"].createElement("strong", null, "08:30 JFK"),
23605
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23606
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23607
+ React__default["default"].createElement("p", null, "7h 45m"),
23608
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" },
23609
+ React__default["default"].createElement("div", { className: "flight__info__duration__stop" })),
23610
+ React__default["default"].createElement("span", null, "1 stop")),
23611
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23612
+ React__default["default"].createElement("strong", null, "22:15 AMS"),
23613
+ React__default["default"].createElement("p", null, "Tue 13 Feb 2025"),
23614
+ React__default["default"].createElement("span", { className: "flight__info__times__days" }, "+1 day")))),
23615
+ React__default["default"].createElement("div", { className: "flight__detail__btn__wrapper" },
23616
+ React__default["default"].createElement("div", { className: "flight__detail__btn" },
23617
+ React__default["default"].createElement(Icon, { name: "ui-chevron", className: "flight__detail__btn__arrow", width: 16, height: 16 })))),
23618
+ React__default["default"].createElement("div", { className: "flight__detail" },
23619
+ React__default["default"].createElement("div", { className: "flight__info" },
23620
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
23621
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23622
+ React__default["default"].createElement("p", null, "08:30"),
23623
+ React__default["default"].createElement("strong", null, "JFK"),
23624
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23625
+ React__default["default"].createElement("div", null,
23626
+ React__default["default"].createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
23627
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23628
+ React__default["default"].createElement("p", null, "6h 20m"),
23629
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
23630
+ React__default["default"].createElement("span", null, "Example Airline"),
23631
+ React__default["default"].createElement("strong", null, "EA123")),
23632
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
23633
+ React__default["default"].createElement("div", null,
23634
+ React__default["default"].createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
23635
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23636
+ React__default["default"].createElement("p", null, "20:50"),
23637
+ React__default["default"].createElement("strong", null, "LHR"),
23638
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")))),
23639
+ React__default["default"].createElement("div", { className: "flight__info" },
23640
+ React__default["default"].createElement("div", { className: "flight__info__times" }),
23641
+ React__default["default"].createElement("div", { className: "flight__info__duration flight__info__duration--waittime" },
23642
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops flight__info__duration__stops--stoptime" },
23643
+ React__default["default"].createElement(Icon, { name: "ui-clock", width: 24, height: 24 })),
23644
+ React__default["default"].createElement("div", { className: "flight__info__duration__stoptime" },
23645
+ React__default["default"].createElement("span", null, "Stop time"),
23646
+ React__default["default"].createElement("strong", null, "1h 15m"))),
23647
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" })),
23648
+ React__default["default"].createElement("div", { className: "flight__info" },
23649
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
23650
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23651
+ React__default["default"].createElement("p", null, "22:05"),
23652
+ React__default["default"].createElement("strong", null, "LHR"),
23653
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23654
+ React__default["default"].createElement("div", null,
23655
+ React__default["default"].createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
23656
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23657
+ React__default["default"].createElement("p", null, "1h 10m"),
23658
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
23659
+ React__default["default"].createElement("span", null, "Example Airline"),
23660
+ React__default["default"].createElement("strong", null, "EA456")),
23661
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
23662
+ React__default["default"].createElement("div", null,
23663
+ React__default["default"].createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
23664
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23665
+ React__default["default"].createElement("p", null, "23:15"),
23666
+ React__default["default"].createElement("strong", null, "AMS"),
23667
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025"))))),
23668
+ React__default["default"].createElement("div", { className: "flight__rate" }))))))),
23669
+ React__default["default"].createElement("div", { key: 3, className: "search__result-card" },
23670
+ React__default["default"].createElement("div", { className: "flight" },
23671
+ React__default["default"].createElement("div", { className: "flight__option" },
23672
+ React__default["default"].createElement("div", { className: "flight__content" },
23673
+ React__default["default"].createElement("div", { className: "flight__flights" },
23674
+ React__default["default"].createElement("div", { className: "flight__flight" },
23675
+ React__default["default"].createElement("div", { className: "flight__flight__header" },
23676
+ React__default["default"].createElement("div", { className: "flight__status__container" }),
23677
+ React__default["default"].createElement("div", { className: "flight__price" },
23678
+ React__default["default"].createElement("span", { className: "price price--increase" }, "- \u20AC 375,98"),
23679
+ React__default["default"].createElement("button", { type: "button", className: "cta cta--select" }, "Select")))),
23680
+ React__default["default"].createElement("div", { className: "flight__flight" },
23681
+ React__default["default"].createElement("div", { className: "flight__flight__container" },
23682
+ React__default["default"].createElement("div", { className: "flight__flight__wrapper" },
23683
+ React__default["default"].createElement("div", { className: "flight__logo__wrapper" },
23684
+ React__default["default"].createElement("img", { src: "https://media.tidesoftware.be/media/shared/Airlines/XX.png?height=256", alt: "", className: "flight__logo" }),
23685
+ React__default["default"].createElement("span", null, "Example Airline")),
23686
+ React__default["default"].createElement("div", { className: "flight__info" },
23687
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23688
+ React__default["default"].createElement("strong", null, "08:30 JFK"),
23689
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23690
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23691
+ React__default["default"].createElement("p", null, "7h 45m"),
23692
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" },
23693
+ React__default["default"].createElement("div", { className: "flight__info__duration__stop" })),
23694
+ React__default["default"].createElement("span", null, "1 stop")),
23695
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23696
+ React__default["default"].createElement("strong", null, "22:15 AMS"),
23697
+ React__default["default"].createElement("p", null, "Tue 13 Feb 2025"),
23698
+ React__default["default"].createElement("span", { className: "flight__info__times__days" }, "+1 day")))),
23699
+ React__default["default"].createElement("div", { className: "flight__detail__btn__wrapper" },
23700
+ React__default["default"].createElement("div", { className: "flight__detail__btn" },
23701
+ React__default["default"].createElement(Icon, { name: "ui-chevron", className: "flight__detail__btn__arrow", width: 16, height: 16 })))),
23702
+ React__default["default"].createElement("div", { className: "flight__detail" },
23703
+ React__default["default"].createElement("div", { className: "flight__info" },
23704
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
23705
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23706
+ React__default["default"].createElement("p", null, "08:30"),
23707
+ React__default["default"].createElement("strong", null, "JFK"),
23708
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23709
+ React__default["default"].createElement("div", null,
23710
+ React__default["default"].createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
23711
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23712
+ React__default["default"].createElement("p", null, "6h 20m"),
23713
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
23714
+ React__default["default"].createElement("span", null, "Example Airline"),
23715
+ React__default["default"].createElement("strong", null, "EA123")),
23716
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
23717
+ React__default["default"].createElement("div", null,
23718
+ React__default["default"].createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
23719
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23720
+ React__default["default"].createElement("p", null, "20:50"),
23721
+ React__default["default"].createElement("strong", null, "LHR"),
23722
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")))),
23723
+ React__default["default"].createElement("div", { className: "flight__info" },
23724
+ React__default["default"].createElement("div", { className: "flight__info__times" }),
23725
+ React__default["default"].createElement("div", { className: "flight__info__duration flight__info__duration--waittime" },
23726
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops flight__info__duration__stops--stoptime" },
23727
+ React__default["default"].createElement(Icon, { name: "ui-clock", width: 24, height: 24 })),
23728
+ React__default["default"].createElement("div", { className: "flight__info__duration__stoptime" },
23729
+ React__default["default"].createElement("span", null, "Stop time"),
23730
+ React__default["default"].createElement("strong", null, "1h 15m"))),
23731
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" })),
23732
+ React__default["default"].createElement("div", { className: "flight__info" },
23733
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
23734
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23735
+ React__default["default"].createElement("p", null, "22:05"),
23736
+ React__default["default"].createElement("strong", null, "LHR"),
23737
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23738
+ React__default["default"].createElement("div", null,
23739
+ React__default["default"].createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
23740
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23741
+ React__default["default"].createElement("p", null, "1h 10m"),
23742
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
23743
+ React__default["default"].createElement("span", null, "Example Airline"),
23744
+ React__default["default"].createElement("strong", null, "EA456")),
23745
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
23746
+ React__default["default"].createElement("div", null,
23747
+ React__default["default"].createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
23748
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23749
+ React__default["default"].createElement("p", null, "23:15"),
23750
+ React__default["default"].createElement("strong", null, "AMS"),
23751
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025"))))),
23752
+ React__default["default"].createElement("div", { className: "flight__rate" }))))))),
23753
+ React__default["default"].createElement("div", { key: 4, className: "search__result-card" },
23754
+ React__default["default"].createElement("div", { className: "flight" },
23755
+ React__default["default"].createElement("div", { className: "flight__option" },
23756
+ React__default["default"].createElement("div", { className: "flight__content" },
23757
+ React__default["default"].createElement("div", { className: "flight__flights" },
23758
+ React__default["default"].createElement("div", { className: "flight__flight" },
23759
+ React__default["default"].createElement("div", { className: "flight__flight__header" },
23760
+ React__default["default"].createElement("div", { className: "flight__status__container" }),
23761
+ React__default["default"].createElement("div", { className: "flight__price" },
23762
+ React__default["default"].createElement("span", { className: "price price--increase" }, "- \u20AC 375,98"),
23763
+ React__default["default"].createElement("button", { type: "button", className: "cta cta--select" }, "Select")))),
23764
+ React__default["default"].createElement("div", { className: "flight__flight" },
23765
+ React__default["default"].createElement("div", { className: "flight__flight__container" },
23766
+ React__default["default"].createElement("div", { className: "flight__flight__wrapper" },
23767
+ React__default["default"].createElement("div", { className: "flight__logo__wrapper" },
23768
+ React__default["default"].createElement("img", { src: "https://media.tidesoftware.be/media/shared/Airlines/XX.png?height=256", alt: "", className: "flight__logo" }),
23769
+ React__default["default"].createElement("span", null, "Example Airline")),
23770
+ React__default["default"].createElement("div", { className: "flight__info" },
23771
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23772
+ React__default["default"].createElement("strong", null, "08:30 JFK"),
23773
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23774
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23775
+ React__default["default"].createElement("p", null, "7h 45m"),
23776
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" },
23777
+ React__default["default"].createElement("div", { className: "flight__info__duration__stop" })),
23778
+ React__default["default"].createElement("span", null, "1 stop")),
23779
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23780
+ React__default["default"].createElement("strong", null, "22:15 AMS"),
23781
+ React__default["default"].createElement("p", null, "Tue 13 Feb 2025"),
23782
+ React__default["default"].createElement("span", { className: "flight__info__times__days" }, "+1 day")))),
23783
+ React__default["default"].createElement("div", { className: "flight__detail__btn__wrapper" },
23784
+ React__default["default"].createElement("div", { className: "flight__detail__btn" },
23785
+ React__default["default"].createElement(Icon, { name: "ui-chevron", className: "flight__detail__btn__arrow", width: 16, height: 16 })))),
23786
+ React__default["default"].createElement("div", { className: "flight__detail" },
23787
+ React__default["default"].createElement("div", { className: "flight__info" },
23788
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
23789
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23790
+ React__default["default"].createElement("p", null, "08:30"),
23791
+ React__default["default"].createElement("strong", null, "JFK"),
23792
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23793
+ React__default["default"].createElement("div", null,
23794
+ React__default["default"].createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
23795
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23796
+ React__default["default"].createElement("p", null, "6h 20m"),
23797
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
23798
+ React__default["default"].createElement("span", null, "Example Airline"),
23799
+ React__default["default"].createElement("strong", null, "EA123")),
23800
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
23801
+ React__default["default"].createElement("div", null,
23802
+ React__default["default"].createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
23803
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23804
+ React__default["default"].createElement("p", null, "20:50"),
23805
+ React__default["default"].createElement("strong", null, "LHR"),
23806
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")))),
23807
+ React__default["default"].createElement("div", { className: "flight__info" },
23808
+ React__default["default"].createElement("div", { className: "flight__info__times" }),
23809
+ React__default["default"].createElement("div", { className: "flight__info__duration flight__info__duration--waittime" },
23810
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops flight__info__duration__stops--stoptime" },
23811
+ React__default["default"].createElement(Icon, { name: "ui-clock", width: 24, height: 24 })),
23812
+ React__default["default"].createElement("div", { className: "flight__info__duration__stoptime" },
23813
+ React__default["default"].createElement("span", null, "Stop time"),
23814
+ React__default["default"].createElement("strong", null, "1h 15m"))),
23815
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" })),
23816
+ React__default["default"].createElement("div", { className: "flight__info" },
23817
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper" },
23818
+ React__default["default"].createElement("div", { className: "flight__info__times" },
23819
+ React__default["default"].createElement("p", null, "22:05"),
23820
+ React__default["default"].createElement("strong", null, "LHR"),
23821
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025")),
23822
+ React__default["default"].createElement("div", null,
23823
+ React__default["default"].createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
23824
+ React__default["default"].createElement("div", { className: "flight__info__duration" },
23825
+ React__default["default"].createElement("p", null, "1h 10m"),
23826
+ React__default["default"].createElement("div", { className: "flight__info__duration__stops" }),
23827
+ React__default["default"].createElement("span", null, "Example Airline"),
23828
+ React__default["default"].createElement("strong", null, "EA456")),
23829
+ React__default["default"].createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
23830
+ React__default["default"].createElement("div", null,
23831
+ React__default["default"].createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
23832
+ React__default["default"].createElement("div", { className: "flight__info__times flight__info__times--arrival" },
23833
+ React__default["default"].createElement("p", null, "23:15"),
23834
+ React__default["default"].createElement("strong", null, "AMS"),
23835
+ React__default["default"].createElement("p", null, "Mon 12 Feb 2025"))))),
23836
+ React__default["default"].createElement("div", { className: "flight__rate" }))))))))));
23251
23837
  };
23252
23838
 
23253
23839
  var SearchResultsContainer = function () {
23254
23840
  var _a, _b;
23255
- var isMobile = useMediaQuery('(max-width: 1200px)');
23256
23841
  var dispatch = reactRedux.useDispatch();
23257
23842
  var context = React.useContext(SearchResultsConfigurationContext);
23258
23843
  var translations = getTranslations((_a = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _a !== void 0 ? _a : 'en-GB');
23259
- var _c = reactRedux.useSelector(function (state) { return state.searchResults; }), results = _c.results, bookingPackageDetails = _c.bookingPackageDetails, isLoading = _c.isLoading, filters = _c.filters, sortKey = _c.sortKey, selectedHotelId = _c.selectedHotelId;
23844
+ var _c = reactRedux.useSelector(function (state) { return state.searchResults; }), results = _c.results, bookingPackageDetails = _c.bookingPackageDetails, entry = _c.entry, isLoading = _c.isLoading, filters = _c.filters, sortKey = _c.sortKey, selectedHotelId = _c.selectedHotelId;
23845
+ var isMobile = useMediaQuery('(max-width: 1200px)');
23260
23846
  var _d = React.useState(0), searchTrigger = _d[0], setSearchTrigger = _d[1];
23261
23847
  var _e = React.useState(false), initialFiltersSet = _e[0], setInitialFiltersSet = _e[1];
23262
23848
  var _f = React.useState([]); _f[0]; var setInitialFilters = _f[1];
23849
+ var _g = React.useState(false), filtersOpen = _g[0], setFiltersOpen = _g[1];
23850
+ var _h = React.useState(false), itineraryOpen = _h[0], setItineraryOpen = _h[1];
23851
+ var sortingOptions = [
23852
+ { key: 'price-asc', label: translations.SRP.PRICE_ASC },
23853
+ { key: 'price-desc', label: translations.SRP.PRICE_DESC },
23854
+ { key: 'departure-date', label: translations.SRP.DEPARTURE_ASC }
23855
+ ];
23856
+ var handleSortChange = function (newSortKey) {
23857
+ dispatch(setSortKey(newSortKey));
23858
+ };
23859
+ var buildSearchFromEntry = function (entry) {
23860
+ var _a;
23861
+ var from = new Date(Math.min.apply(Math, entry.items.map(function (i) { return i.startDate.getTime(); }))).toISOString();
23862
+ var to = new Date(Math.max.apply(Math, entry.items.map(function (i) { return i.endDate.getTime(); }))).toISOString();
23863
+ var rooms = entry.rooms;
23864
+ var hotelItem = entry.items.find(function (i) { return i.productType === 3; });
23865
+ var country = hotelItem ? hotelItem.countryId : null;
23866
+ var region = hotelItem ? hotelItem.regionId : null;
23867
+ var oord = hotelItem ? hotelItem.oordId : null;
23868
+ var city = hotelItem ? hotelItem.locationId : null;
23869
+ var hotel = hotelItem ? hotelItem.productCode : null;
23870
+ if (typeof window !== 'undefined') {
23871
+ window.scrollTo(0, 0);
23872
+ }
23873
+ var destinationId = null;
23874
+ var destinationIsCountry = false;
23875
+ var destinationIsRegion = false;
23876
+ var destinationIsOord = false;
23877
+ var destinationIsLocation = false;
23878
+ if (country) {
23879
+ destinationId = country;
23880
+ destinationIsCountry = true;
23881
+ }
23882
+ else if (region) {
23883
+ destinationId = region;
23884
+ destinationIsRegion = true;
23885
+ }
23886
+ else if (oord) {
23887
+ destinationId = oord;
23888
+ destinationIsOord = true;
23889
+ }
23890
+ else if (city) {
23891
+ destinationId = city;
23892
+ destinationIsLocation = true;
23893
+ }
23894
+ var searchRequest = {
23895
+ officeId: 1,
23896
+ payload: {
23897
+ catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
23898
+ serviceType: context.type === 'hotel' || context.type === 'hotel-flight' ? 3 : context.type === 'flight' ? 7 : context.type === 'roundTrip' ? 1 : 0,
23899
+ searchType: 0,
23900
+ destination: {
23901
+ id: Number(destinationId),
23902
+ isCountry: destinationIsCountry,
23903
+ isRegion: destinationIsRegion,
23904
+ isOord: destinationIsOord,
23905
+ isLocation: destinationIsLocation
23906
+ },
23907
+ rooms: getRequestRoomsFromEntry(rooms),
23908
+ fromDate: from,
23909
+ toDate: to,
23910
+ earliestFromOffset: 0,
23911
+ latestToOffset: 0,
23912
+ includeFlights: true,
23913
+ regimeCodes: entry.items.map(function (i) { return i.regimeCode; }) || [],
23914
+ useExactDates: true,
23915
+ onlyCachedResults: false,
23916
+ includeAllAllotments: true,
23917
+ productCodes: hotel ? [hotel] : []
23918
+ }
23919
+ };
23920
+ return searchRequest;
23921
+ };
23922
+ var buildSearchFromQueryParams = function (params) {
23923
+ var _a, _b, _c, _d, _e;
23924
+ var from = getDateFromParams(params, 'fromDate');
23925
+ var to = getDateFromParams(params, 'toDate');
23926
+ var rooms = getRoomsFromParams(params, 'rooms');
23927
+ var country = getNumberFromParams(params, 'country');
23928
+ var region = getNumberFromParams(params, 'region');
23929
+ var oord = getNumberFromParams(params, 'oord');
23930
+ var city = getNumberFromParams(params, 'location');
23931
+ var hotel = getNumberFromParams(params, 'hotel');
23932
+ var tagId = getNumberFromParams(params, 'tagId');
23933
+ // temp hardcoded params
23934
+ if (!from || !to) {
23935
+ from = '2026-04-07';
23936
+ to = '2026-04-13';
23937
+ }
23938
+ if (!country && !region && !oord && !city) {
23939
+ region = 1;
23940
+ }
23941
+ if (typeof window !== 'undefined') {
23942
+ window.scrollTo(0, 0);
23943
+ }
23944
+ var destinationId = null;
23945
+ var destinationIsCountry = false;
23946
+ var destinationIsRegion = false;
23947
+ var destinationIsOord = false;
23948
+ var destinationIsLocation = false;
23949
+ if (country) {
23950
+ destinationId = country;
23951
+ destinationIsCountry = true;
23952
+ }
23953
+ else if (region) {
23954
+ destinationId = region;
23955
+ destinationIsRegion = true;
23956
+ }
23957
+ else if (oord) {
23958
+ destinationId = oord;
23959
+ destinationIsOord = true;
23960
+ }
23961
+ else if (city) {
23962
+ destinationId = city;
23963
+ destinationIsLocation = true;
23964
+ }
23965
+ var searchRequest = {
23966
+ officeId: 1,
23967
+ payload: {
23968
+ catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
23969
+ serviceType: context.type === 'hotel' || context.type === 'hotel-flight' ? 3 : context.type === 'flight' ? 7 : context.type === 'roundTrip' ? 1 : 0,
23970
+ searchType: 0,
23971
+ destination: {
23972
+ id: Number(destinationId),
23973
+ isCountry: destinationIsCountry,
23974
+ isRegion: destinationIsRegion,
23975
+ isOord: destinationIsOord,
23976
+ isLocation: destinationIsLocation
23977
+ },
23978
+ rooms: getRequestRooms(rooms),
23979
+ fromDate: from,
23980
+ toDate: to,
23981
+ earliestFromOffset: 0,
23982
+ latestToOffset: 0,
23983
+ includeFlights: true,
23984
+ regimeCodes: ((_c = (_b = filters
23985
+ .find(function (f) { return f.property === 'regime'; })) === null || _b === void 0 ? void 0 : _b.options) === null || _c === void 0 ? void 0 : _c.filter(function (o) { return o.isChecked; }).flatMap(function (o) { return o.value.toString(); })) || [],
23986
+ minPrice: (_d = filters.find(function (f) { return f.property === 'price'; })) === null || _d === void 0 ? void 0 : _d.selectedMin,
23987
+ maxPrice: (_e = filters.find(function (f) { return f.property === 'price'; })) === null || _e === void 0 ? void 0 : _e.selectedMax,
23988
+ useExactDates: true,
23989
+ onlyCachedResults: false,
23990
+ includeAllAllotments: true,
23991
+ productIds: hotel ? [hotel] : [],
23992
+ productTagIds: tagId ? [tagId] : []
23993
+ }
23994
+ };
23995
+ return searchRequest;
23996
+ };
23997
+ var getRequestRoomsFromEntry = function (rooms) {
23998
+ if (!rooms) {
23999
+ // Fall back to 2 adults
24000
+ var room = { index: 0, pax: [] };
24001
+ lodash.range(0, 2).forEach(function () {
24002
+ room.pax.push({
24003
+ age: 30
24004
+ });
24005
+ });
24006
+ return [room];
24007
+ }
24008
+ var requestRooms = rooms === null || rooms === void 0 ? void 0 : rooms.map(function (x, i) {
24009
+ var room = { index: i, pax: [] };
24010
+ x.travellers.forEach(function (p) {
24011
+ room.pax.push({
24012
+ age: p.age,
24013
+ dateOfBirth: p.dateOfBirth
24014
+ });
24015
+ });
24016
+ return room;
24017
+ });
24018
+ return requestRooms;
24019
+ };
24020
+ var getRequestRooms = function (rooms) {
24021
+ if (!rooms) {
24022
+ // Fall back to 2 adults
24023
+ var room = { index: 0, pax: [] };
24024
+ lodash.range(0, 2).forEach(function () {
24025
+ room.pax.push({
24026
+ age: 30
24027
+ });
24028
+ });
24029
+ return [room];
24030
+ }
24031
+ var requestRooms = rooms === null || rooms === void 0 ? void 0 : rooms.map(function (x, i) {
24032
+ var room = { index: i, pax: [] };
24033
+ lodash.range(0, x.adults).forEach(function () {
24034
+ room.pax.push({
24035
+ age: 30
24036
+ });
24037
+ });
24038
+ x.childAges.forEach(function (x) {
24039
+ room.pax.push({
24040
+ age: x
24041
+ });
24042
+ });
24043
+ return room;
24044
+ });
24045
+ return requestRooms;
24046
+ };
24047
+ React.useEffect(function () {
24048
+ if (typeof document !== 'undefined') {
24049
+ document.body.classList.toggle('has-overlay', filtersOpen);
24050
+ }
24051
+ }, [filtersOpen]);
23263
24052
  // seperate Search
23264
24053
  React.useEffect(function () {
23265
24054
  var runSearch = function () { return __awaiter(void 0, void 0, void 0, function () {
23266
- var params, from, to, rooms, country, region, oord, city, hotel, tagId, destinationId, destinationIsCountry, destinationIsRegion, destinationIsOord, destinationIsLocation, searchRequest, config, packageSearchResults, enrichedFilters, err_1;
23267
- var _a, _b, _c, _d, _e;
23268
- return __generator(this, function (_f) {
23269
- switch (_f.label) {
24055
+ var config, params, entryId, entryLight, searchRequest, packageSearchResults, enrichedFilters, matching, err_1;
24056
+ var _a;
24057
+ return __generator(this, function (_b) {
24058
+ switch (_b.label) {
23270
24059
  case 0:
23271
24060
  dispatch(setIsLoading(true));
23272
- _f.label = 1;
24061
+ _b.label = 1;
23273
24062
  case 1:
23274
- _f.trys.push([1, 3, , 4]);
24063
+ _b.trys.push([1, 6, , 7]);
23275
24064
  if (!context) {
23276
24065
  return [2 /*return*/];
23277
24066
  }
23278
- params = new URLSearchParams(location.search);
23279
- from = getDateFromParams(params, 'fromDate');
23280
- to = getDateFromParams(params, 'toDate');
23281
- rooms = getRoomsFromParams(params, 'rooms');
23282
- country = getNumberFromParams(params, 'country');
23283
- region = getNumberFromParams(params, 'region');
23284
- oord = getNumberFromParams(params, 'oord');
23285
- city = getNumberFromParams(params, 'location');
23286
- hotel = getNumberFromParams(params, 'hotel');
23287
- tagId = getNumberFromParams(params, 'tagId');
23288
- // temp hardcoded params
23289
- if (!from || !to) {
23290
- from = '2026-04-07';
23291
- to = '2026-04-13';
23292
- }
23293
- if (!country && !region && !oord && !city) {
23294
- region = 1;
23295
- }
23296
- if (typeof window !== 'undefined') {
23297
- window.scrollTo(0, 0);
23298
- }
23299
- destinationId = null;
23300
- destinationIsCountry = false;
23301
- destinationIsRegion = false;
23302
- destinationIsOord = false;
23303
- destinationIsLocation = false;
23304
- if (country) {
23305
- destinationId = country;
23306
- destinationIsCountry = true;
23307
- }
23308
- else if (region) {
23309
- destinationId = region;
23310
- destinationIsRegion = true;
23311
- }
23312
- else if (oord) {
23313
- destinationId = oord;
23314
- destinationIsOord = true;
23315
- }
23316
- else if (city) {
23317
- destinationId = city;
23318
- destinationIsLocation = true;
23319
- }
23320
- searchRequest = {
23321
- officeId: 1,
23322
- payload: {
23323
- catalogueIds: (_a = context.tideConnection.catalogueIds) !== null && _a !== void 0 ? _a : [],
23324
- serviceType: (context === null || context === void 0 ? void 0 : context.type) === 'hotel' || (context === null || context === void 0 ? void 0 : context.type) === 'hotel-flight' ? 3 : (context === null || context === void 0 ? void 0 : context.type) === 'flight' ? 7 : (context === null || context === void 0 ? void 0 : context.type) === 'roundTrip' ? 1 : 0,
23325
- searchType: 0,
23326
- destination: {
23327
- id: Number(destinationId),
23328
- isCountry: destinationIsCountry,
23329
- isRegion: destinationIsRegion,
23330
- isOord: destinationIsOord,
23331
- isLocation: destinationIsLocation
23332
- },
23333
- rooms: getRequestRooms(rooms),
23334
- fromDate: from,
23335
- toDate: to,
23336
- earliestFromOffset: 0,
23337
- latestToOffset: 0,
23338
- includeFlights: true,
23339
- regimeCodes: ((_c = (_b = filters
23340
- .find(function (f) { return f.property === 'regime'; })) === null || _b === void 0 ? void 0 : _b.options) === null || _c === void 0 ? void 0 : _c.filter(function (o) { return o.isChecked; }).flatMap(function (o) { return o.value.toString(); })) || [],
23341
- minPrice: (_d = filters.find(function (f) { return f.property === 'price'; })) === null || _d === void 0 ? void 0 : _d.selectedMin,
23342
- maxPrice: (_e = filters.find(function (f) { return f.property === 'price'; })) === null || _e === void 0 ? void 0 : _e.selectedMax,
23343
- useExactDates: true,
23344
- onlyCachedResults: false,
23345
- includeAllAllotments: true,
23346
- productIds: hotel ? [hotel] : [],
23347
- productTagIds: tagId ? [tagId] : []
23348
- }
23349
- };
23350
24067
  config = {
23351
24068
  host: context.tideConnection.host,
23352
24069
  apiKey: context.tideConnection.apiKey
23353
24070
  };
23354
- return [4 /*yield*/, build.search(config, searchRequest)];
24071
+ params = new URLSearchParams(location.search);
24072
+ entryId = getStringFromParams(params, 'entryId');
24073
+ entryLight = null;
24074
+ searchRequest = void 0;
24075
+ if (!entryId) return [3 /*break*/, 3];
24076
+ return [4 /*yield*/, build.getEntryLight(config, entryId)];
23355
24077
  case 2:
23356
- packageSearchResults = _f.sent();
24078
+ entryLight = _b.sent();
24079
+ // populate itinerary store
24080
+ dispatch(setEntry({ entry: entryLight }));
24081
+ searchRequest = buildSearchFromEntry(entryLight);
24082
+ return [3 /*break*/, 4];
24083
+ case 3:
24084
+ searchRequest = buildSearchFromQueryParams(params);
24085
+ _b.label = 4;
24086
+ case 4: return [4 /*yield*/, build.search(config, searchRequest)];
24087
+ case 5:
24088
+ packageSearchResults = _b.sent();
23357
24089
  console.log('Search results', packageSearchResults);
23358
24090
  enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters);
23359
24091
  if (!initialFiltersSet) {
@@ -23363,25 +24095,35 @@ var SearchResultsContainer = function () {
23363
24095
  }
23364
24096
  dispatch(setResults({ results: packageSearchResults }));
23365
24097
  if ((packageSearchResults === null || packageSearchResults === void 0 ? void 0 : packageSearchResults.length) > 0) {
23366
- dispatch(setSelectedHotel(packageSearchResults[0].productId));
24098
+ if (entryId) {
24099
+ matching = packageSearchResults.find(function (r) { return r.productId === (entry === null || entry === void 0 ? void 0 : entry.id); });
24100
+ if (matching) {
24101
+ dispatch(setSelectedHotel(matching.productId));
24102
+ }
24103
+ }
24104
+ else {
24105
+ dispatch(setSelectedHotel((_a = packageSearchResults[0]) === null || _a === void 0 ? void 0 : _a.productId));
24106
+ }
23367
24107
  }
23368
24108
  dispatch(setIsLoading(false));
23369
- return [3 /*break*/, 4];
23370
- case 3:
23371
- err_1 = _f.sent();
24109
+ return [3 /*break*/, 7];
24110
+ case 6:
24111
+ err_1 = _b.sent();
23372
24112
  console.error('Search failed', err_1);
23373
24113
  dispatch(setIsLoading(false));
23374
- return [3 /*break*/, 4];
23375
- case 4: return [2 /*return*/];
24114
+ return [3 /*break*/, 7];
24115
+ case 7: return [2 /*return*/];
23376
24116
  }
23377
24117
  });
23378
24118
  }); };
23379
- runSearch();
24119
+ if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
24120
+ runSearch();
24121
+ }
23380
24122
  }, [location.search, searchTrigger]);
23381
24123
  // Seperate detailsCall
23382
24124
  React.useEffect(function () {
23383
24125
  var fetchPackageDetails = function () { return __awaiter(void 0, void 0, void 0, function () {
23384
- var config, selectedItem, params, rooms, requestRooms, detailsRequest, detailsWLResponse, err_2;
24126
+ var config, selectedItem, params, entryId, requestRooms, rooms, detailsRequest, detailsResponse, detailsWLResponse, err_2;
23385
24127
  var _a, _b;
23386
24128
  return __generator(this, function (_c) {
23387
24129
  switch (_c.label) {
@@ -23390,17 +24132,26 @@ var SearchResultsContainer = function () {
23390
24132
  return [2 /*return*/];
23391
24133
  _c.label = 1;
23392
24134
  case 1:
23393
- _c.trys.push([1, 3, , 4]);
24135
+ _c.trys.push([1, 6, , 7]);
23394
24136
  config = {
23395
24137
  host: context.tideConnection.host,
23396
24138
  apiKey: context.tideConnection.apiKey
23397
24139
  };
23398
24140
  selectedItem = results.find(function (r) { return r.productId === selectedHotelId; });
23399
- if (!selectedItem)
24141
+ if (!selectedItem) {
24142
+ // TODO: handle this case better, show an error message to the user
23400
24143
  return [2 /*return*/];
24144
+ }
23401
24145
  params = new URLSearchParams(location.search);
23402
- rooms = getRoomsFromParams(params, 'rooms');
23403
- requestRooms = getRequestRooms(rooms);
24146
+ entryId = getStringFromParams(params, 'entryId');
24147
+ requestRooms = void 0;
24148
+ if (entry && entryId) {
24149
+ requestRooms = getRequestRoomsFromEntry(entry.rooms);
24150
+ }
24151
+ else {
24152
+ rooms = getRoomsFromParams(params, 'rooms');
24153
+ requestRooms = getRequestRooms(rooms);
24154
+ }
23404
24155
  detailsRequest = {
23405
24156
  officeId: 1,
23406
24157
  payload: {
@@ -23420,65 +24171,32 @@ var SearchResultsContainer = function () {
23420
24171
  postNights: null
23421
24172
  }
23422
24173
  };
23423
- return [4 /*yield*/, build.detailsWL(config, detailsRequest)];
24174
+ if (!(entry && entryId)) return [3 /*break*/, 3];
24175
+ requestRooms = getRequestRoomsFromEntry(entry.rooms);
24176
+ return [4 /*yield*/, build.details(config, detailsRequest)];
23424
24177
  case 2:
24178
+ detailsResponse = _c.sent();
24179
+ console.log('Details:', detailsResponse);
24180
+ dispatch(setBookingPackageDetails({ details: detailsResponse === null || detailsResponse === void 0 ? void 0 : detailsResponse.payload }));
24181
+ return [3 /*break*/, 5];
24182
+ case 3: return [4 /*yield*/, build.detailsWL(config, detailsRequest)];
24183
+ case 4:
23425
24184
  detailsWLResponse = _c.sent();
23426
24185
  console.log('Details with entryLight:', detailsWLResponse);
23427
24186
  dispatch(setBookingPackageDetails({ details: (_a = detailsWLResponse === null || detailsWLResponse === void 0 ? void 0 : detailsWLResponse.payload) === null || _a === void 0 ? void 0 : _a.bookingPackage }));
23428
24187
  dispatch(setEntry({ entry: (_b = detailsWLResponse === null || detailsWLResponse === void 0 ? void 0 : detailsWLResponse.payload) === null || _b === void 0 ? void 0 : _b.entry }));
23429
- return [3 /*break*/, 4];
23430
- case 3:
24188
+ _c.label = 5;
24189
+ case 5: return [3 /*break*/, 7];
24190
+ case 6:
23431
24191
  err_2 = _c.sent();
23432
24192
  console.error('Failed to fetch package details', err_2);
23433
- return [3 /*break*/, 4];
23434
- case 4: return [2 /*return*/];
24193
+ return [3 /*break*/, 7];
24194
+ case 7: return [2 /*return*/];
23435
24195
  }
23436
24196
  });
23437
24197
  }); };
23438
24198
  fetchPackageDetails();
23439
24199
  }, [selectedHotelId]);
23440
- var getRequestRooms = function (rooms) {
23441
- if (!rooms) {
23442
- // Fall back to 2 adults
23443
- var room = { index: 0, pax: [] };
23444
- lodash.range(0, 2).forEach(function () {
23445
- room.pax.push({
23446
- age: 30
23447
- });
23448
- });
23449
- return [room];
23450
- }
23451
- var requestRooms = rooms === null || rooms === void 0 ? void 0 : rooms.map(function (x, i) {
23452
- var room = { index: i, pax: [] };
23453
- lodash.range(0, x.adults).forEach(function () {
23454
- room.pax.push({
23455
- age: 30
23456
- });
23457
- });
23458
- x.childAges.forEach(function (x) {
23459
- room.pax.push({
23460
- age: x
23461
- });
23462
- });
23463
- return room;
23464
- });
23465
- return requestRooms;
23466
- };
23467
- var _g = React.useState(false), filtersOpen = _g[0], setFiltersOpen = _g[1];
23468
- var _h = React.useState(false), itineraryOpen = _h[0], setItineraryOpen = _h[1];
23469
- var handleSortChange = function (newSortKey) {
23470
- dispatch(setSortKey(newSortKey));
23471
- };
23472
- React.useEffect(function () {
23473
- if (typeof document !== 'undefined') {
23474
- document.body.classList.toggle('has-overlay', filtersOpen);
23475
- }
23476
- }, [filtersOpen]);
23477
- var sortingOptions = [
23478
- { key: 'price-asc', label: translations.SRP.PRICE_ASC },
23479
- { key: 'price-desc', label: translations.SRP.PRICE_DESC },
23480
- { key: 'departure-date', label: translations.SRP.DEPARTURE_ASC }
23481
- ];
23482
24200
  return (React__default["default"].createElement("div", { id: "tide-booking", className: "search__bg" }, context && (React__default["default"].createElement("div", { className: "search" },
23483
24201
  React__default["default"].createElement("div", { className: "search__container" },
23484
24202
  context.showFilters && (React__default["default"].createElement(Filters, { filters: filters, isOpen: filtersOpen, handleSetIsOpen: function () { return setFiltersOpen(!filtersOpen); }, handleApplyFilters: function () { return setSearchTrigger(function (prev) { return prev + 1; }); }, isLoading: isLoading })),
@@ -23501,9 +24219,11 @@ var SearchResultsContainer = function () {
23501
24219
  React__default["default"].createElement(ItemPicker, { items: sortingOptions, selection: sortKey || undefined, label: translations.SRP.SORTBY, placeholder: translations.SRP.SORTBY, classModifier: "travel-class-picker__items", onPick: handleSortChange })))),
23502
24220
  React__default["default"].createElement("div", { className: "search__results__wrapper" },
23503
24221
  context.showTabViews && React__default["default"].createElement(TabViews, null),
23504
- context.showFlightResults && (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights) && (React__default["default"].createElement(FlightResults, { flights: bookingPackageDetails.outwardFlights, isDeparture: true })),
24222
+ context.showRoundTripResults && context.showMockup && React__default["default"].createElement(RoundTripResults, null),
24223
+ context.showFlightResults && (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights) && (React__default["default"].createElement(FlightResults, { flights: bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.outwardFlights, isDeparture: true })),
23505
24224
  context.showHotelAccommodationResults && React__default["default"].createElement(HotelAccommodationResults, { isLoading: isLoading, context: context }),
23506
- context.showFlightResults && (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights) && (React__default["default"].createElement(FlightResults, { flights: bookingPackageDetails.returnFlights, isDeparture: false })))))))));
24225
+ context.showFlightAccommodationResults && context.showMockup && React__default["default"].createElement(FlightAccommodationResults, null),
24226
+ context.showFlightResults && (bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights) && (React__default["default"].createElement(FlightResults, { flights: bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.returnFlights, isDeparture: false })))))))));
23507
24227
  };
23508
24228
 
23509
24229
  var createSearchResultsStore = function () {