@qite/tide-booking-component 1.4.87 → 1.4.88

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.
@@ -6721,7 +6721,7 @@ exports.DepartureRange = void 0;
6721
6721
  DepartureRange[(DepartureRange['Night'] = 3)] = 'Night';
6722
6722
  })(exports.DepartureRange || (exports.DepartureRange = {}));
6723
6723
 
6724
- var formatPrice$1 = function (price, currencyCode, locale) {
6724
+ var formatPrice$2 = function (price, currencyCode, locale) {
6725
6725
  if (locale === void 0) {
6726
6726
  locale = 'nl-BE';
6727
6727
  }
@@ -6828,7 +6828,7 @@ function getLocale(code) {
6828
6828
  }
6829
6829
  }
6830
6830
  var getPriceDifferenceText = function (price, currencyCode) {
6831
- return price > 0 ? '+ '.concat(formatPrice$1(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$1(Math.abs(price), currencyCode));
6831
+ return price > 0 ? '+ '.concat(formatPrice$2(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$2(Math.abs(price), currencyCode));
6832
6832
  };
6833
6833
  function format(text, args) {
6834
6834
  return text.replace(/{([0-9]+)}/g, function (match, index) {
@@ -13552,16 +13552,16 @@ var formatPriceByMode = function (price, priceMode, personCount, duration, perPe
13552
13552
  if (!price) return '';
13553
13553
  switch (priceMode) {
13554
13554
  case 0:
13555
- return ''.concat(formatPrice$1(price, currencyCode));
13555
+ return ''.concat(formatPrice$2(price, currencyCode));
13556
13556
  case 1:
13557
13557
  var perPersonPrice = price / personCount;
13558
- return ''.concat(formatPrice$1(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
13558
+ return ''.concat(formatPrice$2(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
13559
13559
  case 2:
13560
13560
  var perNightPrice = price / duration;
13561
- return ''.concat(formatPrice$1(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
13561
+ return ''.concat(formatPrice$2(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
13562
13562
  case 3:
13563
13563
  var perPersonPerNightPrice = price / duration;
13564
- return ''.concat(formatPrice$1(perPersonPerNightPrice, currencyCode), ' / ').concat(perPersonPerNightLabel);
13564
+ return ''.concat(formatPrice$2(perPersonPerNightPrice, currencyCode), ' / ').concat(perPersonPerNightLabel);
13565
13565
  }
13566
13566
  };
13567
13567
 
@@ -22039,7 +22039,7 @@ var NoneOption = function (_a) {
22039
22039
  return x.requirementType === 2;
22040
22040
  });
22041
22041
  var noneSelected = !selectedOption;
22042
- var priceDifferencetext = selectedOption ? '- '.concat(formatPrice$1(Math.abs(selectedOption.line.price), currencyCode)) : '';
22042
+ var priceDifferencetext = selectedOption ? '- '.concat(formatPrice$2(Math.abs(selectedOption.line.price), currencyCode)) : '';
22043
22043
  return React__default['default'].createElement(
22044
22044
  React__default['default'].Fragment,
22045
22045
  null,
@@ -23316,7 +23316,7 @@ var OptionRoom = function (_a) {
23316
23316
  e.preventDefault();
23317
23317
  };
23318
23318
  var getPriceDifferenceText = function (price) {
23319
- return price > 0 ? '+ '.concat(formatPrice$1(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$1(Math.abs(price), currencyCode));
23319
+ return price > 0 ? '+ '.concat(formatPrice$2(Math.abs(price), currencyCode)) : '- '.concat(formatPrice$2(Math.abs(price), currencyCode));
23320
23320
  };
23321
23321
  var getAccommodationPriceDifference = function (accommodation) {
23322
23322
  var _a;
@@ -24847,7 +24847,7 @@ var Sidebar = function (_a) {
24847
24847
  { className: 'pricing-summary__property' },
24848
24848
  React__default['default'].createElement('h6', { className: 'pricing-summary__title' }, translations.SIDEBAR.BASE_PRICE)
24849
24849
  ),
24850
- React__default['default'].createElement('div', { className: 'pricing-summary__value' }, formatPrice$1(basePrice, currencyCode))
24850
+ React__default['default'].createElement('div', { className: 'pricing-summary__value' }, formatPrice$2(basePrice, currencyCode))
24851
24851
  ),
24852
24852
  basePricePerPaxType &&
24853
24853
  basePricePerPaxType.map(function (ppt, index) {
@@ -24867,7 +24867,7 @@ var Sidebar = function (_a) {
24867
24867
  React__default['default'].createElement(
24868
24868
  'div',
24869
24869
  { className: 'pricing-summary__value' },
24870
- formatPrice$1(ppt.pricePerPaxType, currencyCode)
24870
+ formatPrice$2(ppt.pricePerPaxType, currencyCode)
24871
24871
  )
24872
24872
  ),
24873
24873
  ppt.details.map(function (detail, dIndex) {
@@ -24887,7 +24887,7 @@ var Sidebar = function (_a) {
24887
24887
  React__default['default'].createElement(
24888
24888
  'div',
24889
24889
  { className: 'pricing-summary__value' },
24890
- formatPrice$1(detail.price / detail.numberOfPax, currencyCode)
24890
+ formatPrice$2(detail.price / detail.numberOfPax, currencyCode)
24891
24891
  )
24892
24892
  );
24893
24893
  })
@@ -24914,7 +24914,7 @@ var Sidebar = function (_a) {
24914
24914
  React__default['default'].createElement(
24915
24915
  'div',
24916
24916
  { className: 'pricing-summary__value' },
24917
- formatPrice$1(priceDetail.price * priceDetail.amount, currencyCode)
24917
+ formatPrice$2(priceDetail.price * priceDetail.amount, currencyCode)
24918
24918
  )
24919
24919
  ),
24920
24920
  React__default['default'].createElement(
@@ -24949,7 +24949,7 @@ var Sidebar = function (_a) {
24949
24949
  React__default['default'].createElement(
24950
24950
  'div',
24951
24951
  { className: 'pricing-summary__value' },
24952
- formatPrice$1(priceDetail.price * priceDetail.amount, currencyCode)
24952
+ formatPrice$2(priceDetail.price * priceDetail.amount, currencyCode)
24953
24953
  )
24954
24954
  ),
24955
24955
  React__default['default'].createElement(
@@ -24979,7 +24979,7 @@ var Sidebar = function (_a) {
24979
24979
  React__default['default'].createElement(
24980
24980
  'div',
24981
24981
  { className: 'pricing-summary__value' },
24982
- formatPrice$1(ppt.pricePerPaxType, currencyCode)
24982
+ formatPrice$2(ppt.pricePerPaxType, currencyCode)
24983
24983
  )
24984
24984
  ),
24985
24985
  ppt.details.map(function (detail, dIndex) {
@@ -24999,7 +24999,7 @@ var Sidebar = function (_a) {
24999
24999
  React__default['default'].createElement(
25000
25000
  'div',
25001
25001
  { className: 'pricing-summary__value' },
25002
- formatPrice$1(detail.price / detail.numberOfPax, currencyCode)
25002
+ formatPrice$2(detail.price / detail.numberOfPax, currencyCode)
25003
25003
  )
25004
25004
  );
25005
25005
  })
@@ -25041,7 +25041,7 @@ var Sidebar = function (_a) {
25041
25041
  React__default['default'].createElement(
25042
25042
  'div',
25043
25043
  { className: 'pricing' },
25044
- React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$1(totalPrice, currencyCode))
25044
+ React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$2(totalPrice, currencyCode))
25045
25045
  )
25046
25046
  )
25047
25047
  ),
@@ -25059,7 +25059,7 @@ var Sidebar = function (_a) {
25059
25059
  React__default['default'].createElement(
25060
25060
  'div',
25061
25061
  { className: 'pricing' },
25062
- React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$1(deposit, currencyCode))
25062
+ React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$2(deposit, currencyCode))
25063
25063
  )
25064
25064
  )
25065
25065
  ),
@@ -25075,7 +25075,7 @@ var Sidebar = function (_a) {
25075
25075
  translations.SIDEBAR.DEPOSIT_TEXT1,
25076
25076
  React__default['default'].createElement('strong', null, translations.SIDEBAR.DEPOSIT_TEXT2),
25077
25077
  translations.SIDEBAR.DEPOSIT_TEXT3,
25078
- formatPrice$1(remainingAmount, currencyCode),
25078
+ formatPrice$2(remainingAmount, currencyCode),
25079
25079
  translations.SIDEBAR.DEPOSIT_TEXT4,
25080
25080
  React__default['default'].createElement('strong', null, translations.SIDEBAR.DEPOSIT_TEXT5),
25081
25081
  translations.SIDEBAR.DEPOSIT_TEXT6
@@ -25102,7 +25102,7 @@ var Sidebar = function (_a) {
25102
25102
  React__default['default'].createElement(
25103
25103
  'div',
25104
25104
  { className: 'pricing' },
25105
- React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$1(totalPrice, currencyCode))
25105
+ React__default['default'].createElement('div', { className: 'pricing__price' }, formatPrice$2(totalPrice, currencyCode))
25106
25106
  )
25107
25107
  )
25108
25108
  )
@@ -33675,7 +33675,7 @@ var _a;
33675
33675
  var initialState$1 = {
33676
33676
  results: [],
33677
33677
  filteredResults: [],
33678
- selectedSearchResultId: null,
33678
+ selectedSearchResult: null,
33679
33679
  packagingAccoResults: [],
33680
33680
  filteredPackagingAccoResults: [],
33681
33681
  packagingAccoSearchDetails: [],
@@ -33702,7 +33702,7 @@ var searchResultsSlice = toolkit.createSlice({
33702
33702
  state.filteredResults = action.payload;
33703
33703
  },
33704
33704
  setSelectedSearchResult: function (state, action) {
33705
- state.selectedSearchResultId = action.payload;
33705
+ state.selectedSearchResult = action.payload;
33706
33706
  },
33707
33707
  setPackagingAccoResults: function (state, action) {
33708
33708
  state.packagingAccoResults = action.payload;
@@ -34983,7 +34983,7 @@ var Itinerary = function (_a) {
34983
34983
  React__default['default'].createElement(
34984
34984
  'h3',
34985
34985
  { className: 'search__filter__prices--amount' },
34986
- formatPrice$1(
34986
+ formatPrice$2(
34987
34987
  ((entry === null || entry === void 0 ? void 0 : entry.sellingPrice) || 0) /
34988
34988
  ((entry === null || entry === void 0 ? void 0 : entry.numberOfPax) || 1),
34989
34989
  (entry === null || entry === void 0 ? void 0 : entry.currencyCode) || 'EUR'
@@ -34997,7 +34997,7 @@ var Itinerary = function (_a) {
34997
34997
  'strong',
34998
34998
  null,
34999
34999
  '(',
35000
- formatPrice$1(
35000
+ formatPrice$2(
35001
35001
  (entry === null || entry === void 0 ? void 0 : entry.sellingPrice) || 0,
35002
35002
  (entry === null || entry === void 0 ? void 0 : entry.currencyCode) || 'EUR'
35003
35003
  ),
@@ -38066,7 +38066,7 @@ var FlightsFlyIn = function (_a) {
38066
38066
  );
38067
38067
  };
38068
38068
 
38069
- var formatPrice = function (price, currencyCode) {
38069
+ var formatPrice$1 = function (price, currencyCode) {
38070
38070
  if (currencyCode === void 0) {
38071
38071
  currencyCode = 'EUR';
38072
38072
  }
@@ -38197,7 +38197,7 @@ var AccommodationFlyIn = function (_a) {
38197
38197
  var totalPrice = selectedOptions.reduce(function (total, option) {
38198
38198
  return total + (option.price || 0);
38199
38199
  }, 0);
38200
- return formatPrice(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
38200
+ return formatPrice$1(totalPrice, selectedPackagingAccoSearchDetails.currencyCode);
38201
38201
  };
38202
38202
  var getPriceDifference = function (currentSelectedPrice, roomIndex, accommodationCode, regimeId) {
38203
38203
  var targetPrice = 0;
@@ -38222,7 +38222,7 @@ var AccommodationFlyIn = function (_a) {
38222
38222
  if (difference === 0) {
38223
38223
  return null;
38224
38224
  }
38225
- var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
38225
+ var formattedAbsoluteValue = formatPrice$1(Math.abs(difference), currencyCode);
38226
38226
  return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
38227
38227
  };
38228
38228
  var getPriceDifferenceClassName = function (difference) {
@@ -38503,6 +38503,310 @@ var AccommodationFlyIn = function (_a) {
38503
38503
  // </>
38504
38504
  };
38505
38505
 
38506
+ var formatPrice = function (price, currencyCode) {
38507
+ if (currencyCode === void 0) {
38508
+ currencyCode = 'EUR';
38509
+ }
38510
+ if (typeof price !== 'number') return '';
38511
+ return new Intl.NumberFormat('nl-BE', {
38512
+ style: 'currency',
38513
+ currency: currencyCode
38514
+ }).format(price);
38515
+ };
38516
+ var GroupTourFlyIn = function (_a) {
38517
+ var _b;
38518
+ _a.isLoading;
38519
+ var isOpen = _a.isOpen,
38520
+ setIsOpen = _a.setIsOpen;
38521
+ var dispatch = reactRedux.useDispatch();
38522
+ var context = React.useContext(SearchResultsConfigurationContext);
38523
+ var language = (_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB';
38524
+ var translations = getTranslations(language);
38525
+ var bookingPackageDetails = reactRedux.useSelector(function (state) {
38526
+ return state.searchResults;
38527
+ }).bookingPackageDetails;
38528
+ var selectedBookingPackageDetails = React.useMemo(
38529
+ function () {
38530
+ var _a;
38531
+ return (_a = bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.options) === null || _a === void 0
38532
+ ? void 0
38533
+ : _a.find(function (x) {
38534
+ return x.isSelected;
38535
+ });
38536
+ },
38537
+ [bookingPackageDetails]
38538
+ );
38539
+ var groupedRooms = React.useMemo(
38540
+ function () {
38541
+ if (!(selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0 ? void 0 : selectedBookingPackageDetails.rooms)) return [];
38542
+ return selectedBookingPackageDetails.rooms.map(function (room) {
38543
+ var groupedMap = new Map();
38544
+ room.options.forEach(function (option) {
38545
+ var _a;
38546
+ var key = option.accommodationCode;
38547
+ if (!groupedMap.has(key)) {
38548
+ groupedMap.set(key, {
38549
+ accommodationCode: option.accommodationCode,
38550
+ accommodationName: option.accommodationName,
38551
+ regimes: []
38552
+ });
38553
+ }
38554
+ (_a = groupedMap.get(key)) === null || _a === void 0
38555
+ ? void 0
38556
+ : _a.regimes.push({
38557
+ id: option.entryLineGuid,
38558
+ label: option.regimeName
38559
+ });
38560
+ });
38561
+ return Array.from(groupedMap.values());
38562
+ });
38563
+ },
38564
+ [selectedBookingPackageDetails]
38565
+ );
38566
+ if (!bookingPackageDetails) {
38567
+ return null;
38568
+ }
38569
+ var getSelectedOptionForRoom = function (roomIndex) {
38570
+ var _a, _b, _c;
38571
+ return (_c =
38572
+ (_b =
38573
+ (_a = selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0 ? void 0 : selectedBookingPackageDetails.rooms) === null ||
38574
+ _a === void 0
38575
+ ? void 0
38576
+ : _a[roomIndex]) === null || _b === void 0
38577
+ ? void 0
38578
+ : _b.options) === null || _c === void 0
38579
+ ? void 0
38580
+ : _c.find(function (option) {
38581
+ return option.isSelected;
38582
+ });
38583
+ };
38584
+ var getSelectedOptionForAccommodation = function (roomIndex, accommodationCode) {
38585
+ var _a, _b, _c;
38586
+ return (_c =
38587
+ (_b =
38588
+ (_a = selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0 ? void 0 : selectedBookingPackageDetails.rooms) === null ||
38589
+ _a === void 0
38590
+ ? void 0
38591
+ : _a[roomIndex]) === null || _b === void 0
38592
+ ? void 0
38593
+ : _b.options) === null || _c === void 0
38594
+ ? void 0
38595
+ : _c.find(function (option) {
38596
+ return option.accommodationCode === accommodationCode && option.isSelected;
38597
+ });
38598
+ };
38599
+ var handlePick = function (roomIndex, selectedGuid) {
38600
+ if (!bookingPackageDetails || !selectedBookingPackageDetails) return;
38601
+ var updatedBookingPackageDetails = __assign(__assign({}, bookingPackageDetails), {
38602
+ options: bookingPackageDetails.options.map(function (bookingOption) {
38603
+ if (!bookingOption.isSelected) {
38604
+ return bookingOption;
38605
+ }
38606
+ return __assign(__assign({}, bookingOption), {
38607
+ rooms: bookingOption.rooms.map(function (room, currentRoomIndex) {
38608
+ if (currentRoomIndex !== roomIndex) {
38609
+ return room;
38610
+ }
38611
+ return __assign(__assign({}, room), {
38612
+ options: room.options.map(function (roomOption) {
38613
+ return __assign(__assign({}, roomOption), { isSelected: roomOption.entryLineGuid === selectedGuid });
38614
+ })
38615
+ });
38616
+ })
38617
+ });
38618
+ })
38619
+ });
38620
+ dispatch(setBookingPackageDetails({ details: updatedBookingPackageDetails }));
38621
+ };
38622
+ var handleConfirm = function () {
38623
+ if (isOpen) {
38624
+ setIsOpen(false);
38625
+ }
38626
+ console.log('Booking package details sent to onBook callback:', bookingPackageDetails);
38627
+ if (context === null || context === void 0 ? void 0 : context.onBook) {
38628
+ context.onBook(bookingPackageDetails);
38629
+ }
38630
+ };
38631
+ var calculateTotalPrice = function () {
38632
+ var selectedOptions =
38633
+ selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0
38634
+ ? void 0
38635
+ : selectedBookingPackageDetails.rooms.flatMap(function (room) {
38636
+ return room.options.filter(function (option) {
38637
+ return option.isSelected;
38638
+ });
38639
+ });
38640
+ var totalPrice =
38641
+ selectedOptions === null || selectedOptions === void 0
38642
+ ? void 0
38643
+ : selectedOptions.reduce(function (total, option) {
38644
+ return total + (option.price || 0);
38645
+ }, 0);
38646
+ return formatPrice(totalPrice, bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.currencyCode);
38647
+ };
38648
+ var getPriceDifference = function (currentSelectedPrice, roomIndex, accommodationCode, regimeId) {
38649
+ var targetPrice = 0;
38650
+ var selectedOption = getSelectedOptionForAccommodation(roomIndex, accommodationCode);
38651
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.price) {
38652
+ targetPrice = selectedOption.price;
38653
+ } else {
38654
+ var firstOption =
38655
+ selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0
38656
+ ? void 0
38657
+ : selectedBookingPackageDetails.rooms[roomIndex].options.find(function (option) {
38658
+ return option.accommodationCode === accommodationCode;
38659
+ });
38660
+ targetPrice = (firstOption === null || firstOption === void 0 ? void 0 : firstOption.price) || 0;
38661
+ }
38662
+ if (regimeId) {
38663
+ var regimeOption =
38664
+ selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0
38665
+ ? void 0
38666
+ : selectedBookingPackageDetails.rooms[roomIndex].options.find(function (option) {
38667
+ return option.entryLineGuid === regimeId;
38668
+ });
38669
+ targetPrice = (regimeOption === null || regimeOption === void 0 ? void 0 : regimeOption.price) || 0;
38670
+ }
38671
+ return targetPrice - (currentSelectedPrice || 0);
38672
+ };
38673
+ var formatPriceDifference = function (difference, currencyCode) {
38674
+ if (difference === 0) {
38675
+ return null;
38676
+ }
38677
+ var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
38678
+ return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
38679
+ };
38680
+ var getPriceDifferenceClassName = function (difference) {
38681
+ if (difference < 0) {
38682
+ return 'flyin__acco__price flyin__acco__price--decrease';
38683
+ }
38684
+ if (difference > 0) {
38685
+ return 'flyin__acco__price flyin__acco__price--increase';
38686
+ }
38687
+ return 'flyin__acco__price';
38688
+ };
38689
+ var regimeFormatter = function (roomIndex, accommodation, regimeId, label) {
38690
+ var roomOption = getSelectedOptionForRoom(roomIndex);
38691
+ var difference = getPriceDifference(
38692
+ roomOption === null || roomOption === void 0 ? void 0 : roomOption.price,
38693
+ roomIndex,
38694
+ accommodation.accommodationCode,
38695
+ regimeId
38696
+ );
38697
+ return ''.concat(label, ' ').concat(difference !== 0 ? '('.concat(formatPriceDifference(difference, bookingPackageDetails.currencyCode), ')') : '');
38698
+ };
38699
+ return React__default['default'].createElement(
38700
+ React__default['default'].Fragment,
38701
+ null,
38702
+ React__default['default'].createElement(
38703
+ 'div',
38704
+ { className: 'flyin__content' },
38705
+ groupedRooms.map(function (roomAccommodations, roomIndex) {
38706
+ var selectedRoomOption = getSelectedOptionForRoom(roomIndex);
38707
+ return React__default['default'].createElement(
38708
+ 'div',
38709
+ { className: 'flyin__acco', key: 'room-'.concat(roomIndex) },
38710
+ React__default['default'].createElement('h3', { className: 'flyin__acco__room-title' }, 'Room ', roomIndex + 1),
38711
+ React__default['default'].createElement(
38712
+ 'div',
38713
+ { className: 'flyin__acco__cards' },
38714
+ roomAccommodations.map(function (accommodation) {
38715
+ var selectedOption = getSelectedOptionForAccommodation(roomIndex, accommodation.accommodationCode);
38716
+ var priceDifference = getPriceDifference(
38717
+ selectedRoomOption === null || selectedRoomOption === void 0 ? void 0 : selectedRoomOption.price,
38718
+ roomIndex,
38719
+ accommodation.accommodationCode
38720
+ );
38721
+ return React__default['default'].createElement(
38722
+ 'div',
38723
+ { className: 'flyin__acco__card', key: ''.concat(roomIndex, '-').concat(accommodation.accommodationCode) },
38724
+ React__default['default'].createElement(
38725
+ 'div',
38726
+ { className: 'flyin__acco__content' },
38727
+ React__default['default'].createElement('h4', { className: 'flyin__acco__title' }, accommodation.accommodationName)
38728
+ ),
38729
+ React__default['default'].createElement(
38730
+ 'div',
38731
+ { className: 'flyin__acco__footer' },
38732
+ React__default['default'].createElement(ItemPicker$1, {
38733
+ items: accommodation.regimes,
38734
+ selection: selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.regimeName,
38735
+ label: '',
38736
+ placeholder: 'Select regime',
38737
+ classModifier: '',
38738
+ onPick: function (selected, selectedGuid) {
38739
+ return handlePick(roomIndex, selectedGuid);
38740
+ },
38741
+ valueFormatter: function (id, label) {
38742
+ return regimeFormatter(roomIndex, accommodation, id, label);
38743
+ }
38744
+ }),
38745
+ React__default['default'].createElement(
38746
+ 'div',
38747
+ { className: 'flyin__acco__footer__actions' },
38748
+ React__default['default'].createElement(
38749
+ 'button',
38750
+ {
38751
+ className:
38752
+ (selectedRoomOption === null || selectedRoomOption === void 0 ? void 0 : selectedRoomOption.accommodationCode) ==
38753
+ accommodation.accommodationCode
38754
+ ? 'cta cta--select cta--selected'
38755
+ : 'cta cta--select',
38756
+ onClick: function () {
38757
+ var _a;
38758
+ handlePick(
38759
+ roomIndex,
38760
+ selectedOption
38761
+ ? selectedOption.entryLineGuid
38762
+ : (_a = lodash.first(accommodation.regimes)) === null || _a === void 0
38763
+ ? void 0
38764
+ : _a.id
38765
+ );
38766
+ }
38767
+ },
38768
+ (selectedRoomOption === null || selectedRoomOption === void 0 ? void 0 : selectedRoomOption.accommodationCode) ==
38769
+ accommodation.accommodationCode
38770
+ ? translations === null || translations === void 0
38771
+ ? void 0
38772
+ : translations.SHARED.SELECTED
38773
+ : translations === null || translations === void 0
38774
+ ? void 0
38775
+ : translations.SHARED.SELECT
38776
+ ),
38777
+ React__default['default'].createElement(
38778
+ 'div',
38779
+ { className: 'flyin__acco__price__wrapper' },
38780
+ React__default['default'].createElement(
38781
+ 'span',
38782
+ { className: getPriceDifferenceClassName(priceDifference) },
38783
+ formatPriceDifference(
38784
+ priceDifference,
38785
+ bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.currencyCode
38786
+ )
38787
+ )
38788
+ )
38789
+ )
38790
+ )
38791
+ );
38792
+ })
38793
+ )
38794
+ );
38795
+ })
38796
+ ),
38797
+ React__default['default'].createElement(
38798
+ 'div',
38799
+ { className: 'flyin__footer' },
38800
+ React__default['default'].createElement('div', { className: 'flyin__footer__price' }, 'Total price: ', calculateTotalPrice()),
38801
+ React__default['default'].createElement(
38802
+ 'div',
38803
+ { className: 'flyin__button-wrapper' },
38804
+ React__default['default'].createElement('button', { className: 'cta cta--select', onClick: handleConfirm }, translations.PRODUCT.BOOK_NOW)
38805
+ )
38806
+ )
38807
+ );
38808
+ };
38809
+
38506
38810
  var FlyIn = function (_a) {
38507
38811
  var title = _a.title,
38508
38812
  srpType = _a.srpType,
@@ -38585,8 +38889,10 @@ var FlyIn = function (_a) {
38585
38889
  )
38586
38890
  ),
38587
38891
  srpType === build.PortalQsmType.Flight && React__default['default'].createElement(FlightsFlyIn, { isOpen: isOpen, setIsOpen: setIsOpen }),
38588
- (srpType === build.PortalQsmType.Accommodation || srpType === build.PortalQsmType.GroupTour) &&
38589
- React__default['default'].createElement(AccommodationFlyIn, { isLoading: true, isOpen: isOpen, setIsOpen: setIsOpen })
38892
+ srpType === build.PortalQsmType.Accommodation &&
38893
+ React__default['default'].createElement(AccommodationFlyIn, { isLoading: true, isOpen: isOpen, setIsOpen: setIsOpen }),
38894
+ srpType === build.PortalQsmType.GroupTour &&
38895
+ React__default['default'].createElement(GroupTourFlyIn, { isLoading: true, isOpen: isOpen, setIsOpen: setIsOpen })
38590
38896
  )
38591
38897
  );
38592
38898
  };
@@ -42897,7 +43203,7 @@ var getBaseHotelResult = function (searchResult, cmsItem, languageCode, translat
42897
43203
  searchResult.countryName,
42898
43204
  (_h = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.parentItem) === null || _h === void 0 ? void 0 : _h.name
42899
43205
  ),
42900
- price: formatPrice$1(searchResult.price, searchResult.currencyCode, languageCode),
43206
+ price: formatPrice$2(searchResult.price, searchResult.currencyCode, languageCode),
42901
43207
  ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS
42902
43208
  };
42903
43209
  };
@@ -43681,7 +43987,7 @@ var PairedFlightOption = function (_a) {
43681
43987
  React__default['default'].createElement(
43682
43988
  'span',
43683
43989
  { className: 'price' },
43684
- formatPrice$1(
43990
+ formatPrice$2(
43685
43991
  item.price,
43686
43992
  'EUR',
43687
43993
  (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
@@ -45957,9 +46263,9 @@ var GroupTourCard = function (_a) {
45957
46263
  languageCode = _a.languageCode,
45958
46264
  cmsItem = _a.cmsItem;
45959
46265
  var context = React.useContext(SearchResultsConfigurationContext);
45960
- var selectedSearchResultId = reactRedux.useSelector(function (state) {
46266
+ var selectedSearchResult = reactRedux.useSelector(function (state) {
45961
46267
  return state.searchResults;
45962
- }).selectedSearchResultId;
46268
+ }).selectedSearchResult;
45963
46269
  if (!context) {
45964
46270
  return;
45965
46271
  }
@@ -45975,9 +46281,8 @@ var GroupTourCard = function (_a) {
45975
46281
  var otherCount = genders.filter(function (g) {
45976
46282
  return g === 2;
45977
46283
  }).length;
45978
- var handleChange = function (productId) {
45979
- console.log('Selected product ID:', productId);
45980
- dispatch(setSelectedSearchResult(productId));
46284
+ var handleChange = function (result) {
46285
+ dispatch(setSelectedSearchResult(result));
45981
46286
  };
45982
46287
  return React__default['default'].createElement(
45983
46288
  'div',
@@ -46092,7 +46397,7 @@ var GroupTourCard = function (_a) {
46092
46397
  React__default['default'].createElement(
46093
46398
  'div',
46094
46399
  { className: 'search__result-card__allotment__price' },
46095
- formatPrice$1(result.price, result.currencyCode, languageCode),
46400
+ formatPrice$2(result.price, result.currencyCode, languageCode),
46096
46401
  ' ',
46097
46402
  translations.PRODUCT.PER_PERSON
46098
46403
  )
@@ -46101,23 +46406,12 @@ var GroupTourCard = function (_a) {
46101
46406
  'button',
46102
46407
  {
46103
46408
  type: 'button',
46104
- className: 'cta cta--select',
46409
+ className: 'cta '.concat(selectedSearchResult === result ? 'cta--selected' : 'cta--select'),
46105
46410
  onClick: function () {
46106
- return context.onBook && context.onBook(result);
46411
+ return handleChange(result);
46107
46412
  }
46108
46413
  },
46109
- translations === null || translations === void 0 ? void 0 : translations.PRODUCT.BOOK_NOW
46110
- ),
46111
- React__default['default'].createElement(
46112
- 'button',
46113
- {
46114
- type: 'button',
46115
- className: 'cta '.concat(selectedSearchResultId === result.productId ? 'cta--selected' : 'cta--select'),
46116
- onClick: function () {
46117
- return handleChange(result.productId);
46118
- }
46119
- },
46120
- selectedSearchResultId === result.productId
46414
+ selectedSearchResult === result
46121
46415
  ? translations === null || translations === void 0
46122
46416
  ? void 0
46123
46417
  : translations.SHARED.SELECTED
@@ -46513,7 +46807,7 @@ var SearchResultsContainer = function () {
46513
46807
  isLoading = _b.isLoading,
46514
46808
  filters = _b.filters,
46515
46809
  selectedSortType = _b.selectedSortType,
46516
- selectedSearchResultId = _b.selectedSearchResultId,
46810
+ selectedSearchResult = _b.selectedSearchResult,
46517
46811
  selectedPackagingAccoResultCode = _b.selectedPackagingAccoResultCode,
46518
46812
  flyInIsOpen = _b.flyInIsOpen;
46519
46813
  var isMobile = useMediaQuery('(max-width: 1200px)');
@@ -46879,14 +47173,14 @@ var SearchResultsContainer = function () {
46879
47173
  var runSearch = function () {
46880
47174
  return __awaiter(void 0, void 0, void 0, function () {
46881
47175
  var config, params, entryId, entryLight, searchRequest, rq, packageSearchResults, enrichedFilters, initialFilteredResults, matching, err_1;
46882
- var _a, _b;
46883
- return __generator(this, function (_c) {
46884
- switch (_c.label) {
47176
+ var _a;
47177
+ return __generator(this, function (_b) {
47178
+ switch (_b.label) {
46885
47179
  case 0:
46886
47180
  dispatch(setIsLoading(true));
46887
- _c.label = 1;
47181
+ _b.label = 1;
46888
47182
  case 1:
46889
- _c.trys.push([1, 6, , 7]);
47183
+ _b.trys.push([1, 6, , 7]);
46890
47184
  if (!context) {
46891
47185
  return [2 /*return*/];
46892
47186
  }
@@ -46901,7 +47195,7 @@ var SearchResultsContainer = function () {
46901
47195
  if (!entryId) return [3 /*break*/, 3];
46902
47196
  return [4 /*yield*/, build.getEntryLight(config, entryId)];
46903
47197
  case 2:
46904
- entryLight = _c.sent();
47198
+ entryLight = _b.sent();
46905
47199
  // populate itinerary store
46906
47200
  dispatch(setEntry({ entry: entryLight }));
46907
47201
  searchRequest = buildSearchFromEntry(entryLight);
@@ -46912,11 +47206,11 @@ var SearchResultsContainer = function () {
46912
47206
  throw new Error('Invalid search parameters');
46913
47207
  }
46914
47208
  searchRequest = rq;
46915
- _c.label = 4;
47209
+ _b.label = 4;
46916
47210
  case 4:
46917
47211
  return [4 /*yield*/, build.search(config, searchRequest)];
46918
47212
  case 5:
46919
- packageSearchResults = _c.sent();
47213
+ packageSearchResults = _b.sent();
46920
47214
  console.log('Search results', packageSearchResults);
46921
47215
  enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
46922
47216
  if (!initialFiltersSet) {
@@ -46933,18 +47227,18 @@ var SearchResultsContainer = function () {
46933
47227
  return r.productId === (entry === null || entry === void 0 ? void 0 : entry.id);
46934
47228
  });
46935
47229
  if (matching) {
46936
- dispatch(setSelectedSearchResult(matching.productId));
47230
+ dispatch(setSelectedSearchResult(matching));
46937
47231
  }
46938
47232
  } else {
46939
47233
  if (context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight) {
46940
- dispatch(setSelectedSearchResult((_b = packageSearchResults[0]) === null || _b === void 0 ? void 0 : _b.productId));
47234
+ dispatch(setSelectedSearchResult(packageSearchResults[0]));
46941
47235
  }
46942
47236
  }
46943
47237
  }
46944
47238
  dispatch(setIsLoading(false));
46945
47239
  return [3 /*break*/, 7];
46946
47240
  case 6:
46947
- err_1 = _c.sent();
47241
+ err_1 = _b.sent();
46948
47242
  console.error('Search failed', err_1);
46949
47243
  dispatch(setIsLoading(false));
46950
47244
  return [3 /*break*/, 7];
@@ -47043,8 +47337,8 @@ var SearchResultsContainer = function () {
47043
47337
  return __generator(this, function (_a) {
47044
47338
  switch (_a.label) {
47045
47339
  case 0:
47046
- console.log('Fetching details for selected search result', selectedSearchResultId);
47047
- if (!selectedSearchResultId || !context) return [2 /*return*/];
47340
+ console.log('Fetching details for selected search result', selectedSearchResult);
47341
+ if (!selectedSearchResult || !context) return [2 /*return*/];
47048
47342
  if (
47049
47343
  (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation ||
47050
47344
  (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.GroupTour
@@ -47059,7 +47353,7 @@ var SearchResultsContainer = function () {
47059
47353
  apiKey: context.tideConnection.apiKey
47060
47354
  };
47061
47355
  selectedItem = results.find(function (r) {
47062
- return r.productId === selectedSearchResultId;
47356
+ return r.productId === selectedSearchResult.productId;
47063
47357
  });
47064
47358
  if (!selectedItem) {
47065
47359
  // TODO: handle this case better, show an error message to the user
@@ -47233,14 +47527,14 @@ var SearchResultsContainer = function () {
47233
47527
  });
47234
47528
  });
47235
47529
  };
47236
- if (selectedSearchResultId) {
47530
+ if (selectedSearchResult) {
47237
47531
  fetchDetails();
47238
47532
  }
47239
47533
  if (selectedPackagingAccoResultCode) {
47240
47534
  fetchPackagingAccoSearchDetails();
47241
47535
  }
47242
47536
  },
47243
- [selectedSearchResultId, selectedPackagingAccoResultCode]
47537
+ [selectedSearchResult, selectedPackagingAccoResultCode]
47244
47538
  );
47245
47539
  React.useEffect(
47246
47540
  function () {