@qite/tide-booking-component 1.4.87 → 1.4.89

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,320 @@ 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, _c;
38518
+ var isLoading = _a.isLoading,
38519
+ isOpen = _a.isOpen,
38520
+ setIsOpen = _a.setIsOpen;
38521
+ var dispatch = reactRedux.useDispatch();
38522
+ var context = React.useContext(SearchResultsConfigurationContext);
38523
+ if (isLoading) {
38524
+ return React__default['default'].createElement(
38525
+ React__default['default'].Fragment,
38526
+ null,
38527
+ (_b = context === null || context === void 0 ? void 0 : context.customSpinner) !== null && _b !== void 0
38528
+ ? _b
38529
+ : React__default['default'].createElement(Spinner, null)
38530
+ );
38531
+ }
38532
+ var language = (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB';
38533
+ var translations = getTranslations(language);
38534
+ var bookingPackageDetails = reactRedux.useSelector(function (state) {
38535
+ return state.searchResults;
38536
+ }).bookingPackageDetails;
38537
+ var selectedBookingPackageDetails = React.useMemo(
38538
+ function () {
38539
+ var _a;
38540
+ return (_a = bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.options) === null || _a === void 0
38541
+ ? void 0
38542
+ : _a.find(function (x) {
38543
+ return x.isSelected;
38544
+ });
38545
+ },
38546
+ [bookingPackageDetails]
38547
+ );
38548
+ var groupedRooms = React.useMemo(
38549
+ function () {
38550
+ if (!(selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0 ? void 0 : selectedBookingPackageDetails.rooms)) return [];
38551
+ return selectedBookingPackageDetails.rooms.map(function (room) {
38552
+ var groupedMap = new Map();
38553
+ room.options.forEach(function (option) {
38554
+ var _a, _b;
38555
+ var key = option.accommodationCode;
38556
+ if (!groupedMap.has(key)) {
38557
+ groupedMap.set(key, {
38558
+ accommodationCode: option.accommodationCode,
38559
+ accommodationName: option.accommodationName,
38560
+ regimes: []
38561
+ });
38562
+ }
38563
+ (_a = groupedMap.get(key)) === null || _a === void 0
38564
+ ? void 0
38565
+ : _a.regimes.push({
38566
+ id: option.entryLineGuid,
38567
+ label: (_b = option.regimeName) !== null && _b !== void 0 ? _b : 'No regime'
38568
+ });
38569
+ });
38570
+ return Array.from(groupedMap.values());
38571
+ });
38572
+ },
38573
+ [selectedBookingPackageDetails]
38574
+ );
38575
+ if (!bookingPackageDetails) {
38576
+ return null;
38577
+ }
38578
+ var getSelectedOptionForRoom = function (roomIndex) {
38579
+ var _a, _b, _c;
38580
+ return (_c =
38581
+ (_b =
38582
+ (_a = selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0 ? void 0 : selectedBookingPackageDetails.rooms) === null ||
38583
+ _a === void 0
38584
+ ? void 0
38585
+ : _a[roomIndex]) === null || _b === void 0
38586
+ ? void 0
38587
+ : _b.options) === null || _c === void 0
38588
+ ? void 0
38589
+ : _c.find(function (option) {
38590
+ return option.isSelected;
38591
+ });
38592
+ };
38593
+ var getSelectedOptionForAccommodation = function (roomIndex, accommodationCode) {
38594
+ var _a, _b, _c;
38595
+ return (_c =
38596
+ (_b =
38597
+ (_a = selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0 ? void 0 : selectedBookingPackageDetails.rooms) === null ||
38598
+ _a === void 0
38599
+ ? void 0
38600
+ : _a[roomIndex]) === null || _b === void 0
38601
+ ? void 0
38602
+ : _b.options) === null || _c === void 0
38603
+ ? void 0
38604
+ : _c.find(function (option) {
38605
+ return option.accommodationCode === accommodationCode && option.isSelected;
38606
+ });
38607
+ };
38608
+ var handlePick = function (roomIndex, selectedGuid) {
38609
+ if (!bookingPackageDetails || !selectedBookingPackageDetails) return;
38610
+ var updatedBookingPackageDetails = __assign(__assign({}, bookingPackageDetails), {
38611
+ options: bookingPackageDetails.options.map(function (bookingOption) {
38612
+ if (!bookingOption.isSelected) {
38613
+ return bookingOption;
38614
+ }
38615
+ return __assign(__assign({}, bookingOption), {
38616
+ rooms: bookingOption.rooms.map(function (room, currentRoomIndex) {
38617
+ if (currentRoomIndex !== roomIndex) {
38618
+ return room;
38619
+ }
38620
+ return __assign(__assign({}, room), {
38621
+ options: room.options.map(function (roomOption) {
38622
+ return __assign(__assign({}, roomOption), { isSelected: roomOption.entryLineGuid === selectedGuid });
38623
+ })
38624
+ });
38625
+ })
38626
+ });
38627
+ })
38628
+ });
38629
+ dispatch(setBookingPackageDetails({ details: updatedBookingPackageDetails }));
38630
+ };
38631
+ var handleConfirm = function () {
38632
+ if (isOpen) {
38633
+ setIsOpen(false);
38634
+ }
38635
+ console.log('Booking package details sent to onBook callback:', bookingPackageDetails);
38636
+ if (context === null || context === void 0 ? void 0 : context.onBook) {
38637
+ context.onBook(bookingPackageDetails);
38638
+ }
38639
+ };
38640
+ var calculateTotalPrice = function () {
38641
+ var selectedOptions =
38642
+ selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0
38643
+ ? void 0
38644
+ : selectedBookingPackageDetails.rooms.flatMap(function (room) {
38645
+ return room.options.filter(function (option) {
38646
+ return option.isSelected;
38647
+ });
38648
+ });
38649
+ var totalPrice =
38650
+ selectedOptions === null || selectedOptions === void 0
38651
+ ? void 0
38652
+ : selectedOptions.reduce(function (total, option) {
38653
+ return total + (option.price || 0);
38654
+ }, 0);
38655
+ return formatPrice(totalPrice, bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.currencyCode);
38656
+ };
38657
+ var getPriceDifference = function (currentSelectedPrice, roomIndex, accommodationCode, regimeId) {
38658
+ var targetPrice = 0;
38659
+ var selectedOption = getSelectedOptionForAccommodation(roomIndex, accommodationCode);
38660
+ if (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.price) {
38661
+ targetPrice = selectedOption.price;
38662
+ } else {
38663
+ var firstOption =
38664
+ selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0
38665
+ ? void 0
38666
+ : selectedBookingPackageDetails.rooms[roomIndex].options.find(function (option) {
38667
+ return option.accommodationCode === accommodationCode;
38668
+ });
38669
+ targetPrice = (firstOption === null || firstOption === void 0 ? void 0 : firstOption.price) || 0;
38670
+ }
38671
+ if (regimeId) {
38672
+ var regimeOption =
38673
+ selectedBookingPackageDetails === null || selectedBookingPackageDetails === void 0
38674
+ ? void 0
38675
+ : selectedBookingPackageDetails.rooms[roomIndex].options.find(function (option) {
38676
+ return option.entryLineGuid === regimeId;
38677
+ });
38678
+ targetPrice = (regimeOption === null || regimeOption === void 0 ? void 0 : regimeOption.price) || 0;
38679
+ }
38680
+ return targetPrice - (currentSelectedPrice || 0);
38681
+ };
38682
+ var formatPriceDifference = function (difference, currencyCode) {
38683
+ if (difference === 0) {
38684
+ return null;
38685
+ }
38686
+ var formattedAbsoluteValue = formatPrice(Math.abs(difference), currencyCode);
38687
+ return ''.concat(difference > 0 ? '+' : '-', ' ').concat(formattedAbsoluteValue);
38688
+ };
38689
+ var getPriceDifferenceClassName = function (difference) {
38690
+ if (difference < 0) {
38691
+ return 'flyin__acco__price flyin__acco__price--decrease';
38692
+ }
38693
+ if (difference > 0) {
38694
+ return 'flyin__acco__price flyin__acco__price--increase';
38695
+ }
38696
+ return 'flyin__acco__price';
38697
+ };
38698
+ var regimeFormatter = function (roomIndex, accommodation, regimeId, label) {
38699
+ var roomOption = getSelectedOptionForRoom(roomIndex);
38700
+ var difference = getPriceDifference(
38701
+ roomOption === null || roomOption === void 0 ? void 0 : roomOption.price,
38702
+ roomIndex,
38703
+ accommodation.accommodationCode,
38704
+ regimeId
38705
+ );
38706
+ return ''.concat(label, ' ').concat(difference !== 0 ? '('.concat(formatPriceDifference(difference, bookingPackageDetails.currencyCode), ')') : '');
38707
+ };
38708
+ return React__default['default'].createElement(
38709
+ React__default['default'].Fragment,
38710
+ null,
38711
+ React__default['default'].createElement(
38712
+ 'div',
38713
+ { className: 'flyin__content' },
38714
+ groupedRooms.map(function (roomAccommodations, roomIndex) {
38715
+ var selectedRoomOption = getSelectedOptionForRoom(roomIndex);
38716
+ return React__default['default'].createElement(
38717
+ 'div',
38718
+ { className: 'flyin__acco', key: 'room-'.concat(roomIndex) },
38719
+ React__default['default'].createElement('h3', { className: 'flyin__acco__room-title' }, 'Room ', roomIndex + 1),
38720
+ React__default['default'].createElement(
38721
+ 'div',
38722
+ { className: 'flyin__acco__cards' },
38723
+ roomAccommodations.map(function (accommodation) {
38724
+ var _a;
38725
+ var selectedOption = getSelectedOptionForAccommodation(roomIndex, accommodation.accommodationCode);
38726
+ var priceDifference = getPriceDifference(
38727
+ selectedRoomOption === null || selectedRoomOption === void 0 ? void 0 : selectedRoomOption.price,
38728
+ roomIndex,
38729
+ accommodation.accommodationCode
38730
+ );
38731
+ return React__default['default'].createElement(
38732
+ 'div',
38733
+ { className: 'flyin__acco__card', key: ''.concat(roomIndex, '-').concat(accommodation.accommodationCode) },
38734
+ React__default['default'].createElement(
38735
+ 'div',
38736
+ { className: 'flyin__acco__content' },
38737
+ React__default['default'].createElement('h4', { className: 'flyin__acco__title' }, accommodation.accommodationName)
38738
+ ),
38739
+ React__default['default'].createElement(
38740
+ 'div',
38741
+ { className: 'flyin__acco__footer' },
38742
+ React__default['default'].createElement(ItemPicker$1, {
38743
+ items: accommodation.regimes,
38744
+ selection: selectedOption != null ? ((_a = selectedOption.regimeName) !== null && _a !== void 0 ? _a : 'No regime') : undefined,
38745
+ label: '',
38746
+ placeholder: 'Select regime',
38747
+ classModifier: '',
38748
+ onPick: function (selected, selectedGuid) {
38749
+ return handlePick(roomIndex, selectedGuid);
38750
+ },
38751
+ valueFormatter: function (id, label) {
38752
+ return regimeFormatter(roomIndex, accommodation, id, label);
38753
+ }
38754
+ }),
38755
+ React__default['default'].createElement(
38756
+ 'div',
38757
+ { className: 'flyin__acco__footer__actions' },
38758
+ React__default['default'].createElement(
38759
+ 'button',
38760
+ {
38761
+ className:
38762
+ (selectedRoomOption === null || selectedRoomOption === void 0 ? void 0 : selectedRoomOption.accommodationCode) ==
38763
+ accommodation.accommodationCode
38764
+ ? 'cta cta--select cta--selected'
38765
+ : 'cta cta--select',
38766
+ onClick: function () {
38767
+ var _a;
38768
+ handlePick(
38769
+ roomIndex,
38770
+ selectedOption
38771
+ ? selectedOption.entryLineGuid
38772
+ : (_a = lodash.first(accommodation.regimes)) === null || _a === void 0
38773
+ ? void 0
38774
+ : _a.id
38775
+ );
38776
+ }
38777
+ },
38778
+ (selectedRoomOption === null || selectedRoomOption === void 0 ? void 0 : selectedRoomOption.accommodationCode) ==
38779
+ accommodation.accommodationCode
38780
+ ? translations === null || translations === void 0
38781
+ ? void 0
38782
+ : translations.SHARED.SELECTED
38783
+ : translations === null || translations === void 0
38784
+ ? void 0
38785
+ : translations.SHARED.SELECT
38786
+ ),
38787
+ React__default['default'].createElement(
38788
+ 'div',
38789
+ { className: 'flyin__acco__price__wrapper' },
38790
+ React__default['default'].createElement(
38791
+ 'span',
38792
+ { className: getPriceDifferenceClassName(priceDifference) },
38793
+ formatPriceDifference(
38794
+ priceDifference,
38795
+ bookingPackageDetails === null || bookingPackageDetails === void 0 ? void 0 : bookingPackageDetails.currencyCode
38796
+ )
38797
+ )
38798
+ )
38799
+ )
38800
+ )
38801
+ );
38802
+ })
38803
+ )
38804
+ );
38805
+ })
38806
+ ),
38807
+ React__default['default'].createElement(
38808
+ 'div',
38809
+ { className: 'flyin__footer' },
38810
+ React__default['default'].createElement('div', { className: 'flyin__footer__price' }, 'Total price: ', calculateTotalPrice()),
38811
+ React__default['default'].createElement(
38812
+ 'div',
38813
+ { className: 'flyin__button-wrapper' },
38814
+ React__default['default'].createElement('button', { className: 'cta cta--select', onClick: handleConfirm }, translations.PRODUCT.BOOK_NOW)
38815
+ )
38816
+ )
38817
+ );
38818
+ };
38819
+
38506
38820
  var FlyIn = function (_a) {
38507
38821
  var title = _a.title,
38508
38822
  srpType = _a.srpType,
@@ -38510,7 +38824,8 @@ var FlyIn = function (_a) {
38510
38824
  setIsOpen = _a.setIsOpen,
38511
38825
  _b = _a.className,
38512
38826
  className = _b === void 0 ? '' : _b,
38513
- onPanelRef = _a.onPanelRef;
38827
+ onPanelRef = _a.onPanelRef,
38828
+ detailsLoading = _a.detailsLoading;
38514
38829
  var dispatch = reactRedux.useDispatch();
38515
38830
  var onCancelSearch = useFlightSearch().onCancelSearch;
38516
38831
  var panelRef = React.useRef(null);
@@ -38585,8 +38900,10 @@ var FlyIn = function (_a) {
38585
38900
  )
38586
38901
  ),
38587
38902
  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 })
38903
+ srpType === build.PortalQsmType.Accommodation &&
38904
+ React__default['default'].createElement(AccommodationFlyIn, { isLoading: true, isOpen: isOpen, setIsOpen: setIsOpen }),
38905
+ srpType === build.PortalQsmType.GroupTour &&
38906
+ React__default['default'].createElement(GroupTourFlyIn, { isLoading: detailsLoading, isOpen: isOpen, setIsOpen: setIsOpen })
38590
38907
  )
38591
38908
  );
38592
38909
  };
@@ -42897,7 +43214,7 @@ var getBaseHotelResult = function (searchResult, cmsItem, languageCode, translat
42897
43214
  searchResult.countryName,
42898
43215
  (_h = cmsItem === null || cmsItem === void 0 ? void 0 : cmsItem.parentItem) === null || _h === void 0 ? void 0 : _h.name
42899
43216
  ),
42900
- price: formatPrice$1(searchResult.price, searchResult.currencyCode, languageCode),
43217
+ price: formatPrice$2(searchResult.price, searchResult.currencyCode, languageCode),
42901
43218
  ctaText: translations === null || translations === void 0 ? void 0 : translations.SRP.VIEW_DETAILS
42902
43219
  };
42903
43220
  };
@@ -43681,7 +43998,7 @@ var PairedFlightOption = function (_a) {
43681
43998
  React__default['default'].createElement(
43682
43999
  'span',
43683
44000
  { className: 'price' },
43684
- formatPrice$1(
44001
+ formatPrice$2(
43685
44002
  item.price,
43686
44003
  'EUR',
43687
44004
  (_c = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _c !== void 0 ? _c : 'en-GB'
@@ -45957,9 +46274,9 @@ var GroupTourCard = function (_a) {
45957
46274
  languageCode = _a.languageCode,
45958
46275
  cmsItem = _a.cmsItem;
45959
46276
  var context = React.useContext(SearchResultsConfigurationContext);
45960
- var selectedSearchResultId = reactRedux.useSelector(function (state) {
46277
+ var selectedSearchResult = reactRedux.useSelector(function (state) {
45961
46278
  return state.searchResults;
45962
- }).selectedSearchResultId;
46279
+ }).selectedSearchResult;
45963
46280
  if (!context) {
45964
46281
  return;
45965
46282
  }
@@ -45975,9 +46292,8 @@ var GroupTourCard = function (_a) {
45975
46292
  var otherCount = genders.filter(function (g) {
45976
46293
  return g === 2;
45977
46294
  }).length;
45978
- var handleChange = function (productId) {
45979
- console.log('Selected product ID:', productId);
45980
- dispatch(setSelectedSearchResult(productId));
46295
+ var handleChange = function (result) {
46296
+ dispatch(setSelectedSearchResult(result));
45981
46297
  };
45982
46298
  return React__default['default'].createElement(
45983
46299
  'div',
@@ -46092,7 +46408,7 @@ var GroupTourCard = function (_a) {
46092
46408
  React__default['default'].createElement(
46093
46409
  'div',
46094
46410
  { className: 'search__result-card__allotment__price' },
46095
- formatPrice$1(result.price, result.currencyCode, languageCode),
46411
+ formatPrice$2(result.price, result.currencyCode, languageCode),
46096
46412
  ' ',
46097
46413
  translations.PRODUCT.PER_PERSON
46098
46414
  )
@@ -46101,23 +46417,12 @@ var GroupTourCard = function (_a) {
46101
46417
  'button',
46102
46418
  {
46103
46419
  type: 'button',
46104
- className: 'cta cta--select',
46420
+ className: 'cta '.concat(selectedSearchResult === result ? 'cta--selected' : 'cta--select'),
46105
46421
  onClick: function () {
46106
- return context.onBook && context.onBook(result);
46422
+ return handleChange(result);
46107
46423
  }
46108
46424
  },
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
46425
+ selectedSearchResult === result
46121
46426
  ? translations === null || translations === void 0
46122
46427
  ? void 0
46123
46428
  : translations.SHARED.SELECTED
@@ -46513,7 +46818,7 @@ var SearchResultsContainer = function () {
46513
46818
  isLoading = _b.isLoading,
46514
46819
  filters = _b.filters,
46515
46820
  selectedSortType = _b.selectedSortType,
46516
- selectedSearchResultId = _b.selectedSearchResultId,
46821
+ selectedSearchResult = _b.selectedSearchResult,
46517
46822
  selectedPackagingAccoResultCode = _b.selectedPackagingAccoResultCode,
46518
46823
  flyInIsOpen = _b.flyInIsOpen;
46519
46824
  var isMobile = useMediaQuery('(max-width: 1200px)');
@@ -46527,8 +46832,11 @@ var SearchResultsContainer = function () {
46527
46832
  filtersOpen = _e[0],
46528
46833
  setFiltersOpen = _e[1];
46529
46834
  var _f = React.useState(false),
46530
- itineraryOpen = _f[0],
46531
- setItineraryOpen = _f[1];
46835
+ detailsIsLoading = _f[0],
46836
+ setDetailsIsLoading = _f[1];
46837
+ var _g = React.useState(false),
46838
+ itineraryOpen = _g[0],
46839
+ setItineraryOpen = _g[1];
46532
46840
  var panelRef = React.useRef(null);
46533
46841
  var sortByTypes = [
46534
46842
  { direction: 'asc', label: 'default' },
@@ -46879,14 +47187,14 @@ var SearchResultsContainer = function () {
46879
47187
  var runSearch = function () {
46880
47188
  return __awaiter(void 0, void 0, void 0, function () {
46881
47189
  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) {
47190
+ var _a;
47191
+ return __generator(this, function (_b) {
47192
+ switch (_b.label) {
46885
47193
  case 0:
46886
47194
  dispatch(setIsLoading(true));
46887
- _c.label = 1;
47195
+ _b.label = 1;
46888
47196
  case 1:
46889
- _c.trys.push([1, 6, , 7]);
47197
+ _b.trys.push([1, 6, , 7]);
46890
47198
  if (!context) {
46891
47199
  return [2 /*return*/];
46892
47200
  }
@@ -46901,7 +47209,7 @@ var SearchResultsContainer = function () {
46901
47209
  if (!entryId) return [3 /*break*/, 3];
46902
47210
  return [4 /*yield*/, build.getEntryLight(config, entryId)];
46903
47211
  case 2:
46904
- entryLight = _c.sent();
47212
+ entryLight = _b.sent();
46905
47213
  // populate itinerary store
46906
47214
  dispatch(setEntry({ entry: entryLight }));
46907
47215
  searchRequest = buildSearchFromEntry(entryLight);
@@ -46912,11 +47220,11 @@ var SearchResultsContainer = function () {
46912
47220
  throw new Error('Invalid search parameters');
46913
47221
  }
46914
47222
  searchRequest = rq;
46915
- _c.label = 4;
47223
+ _b.label = 4;
46916
47224
  case 4:
46917
47225
  return [4 /*yield*/, build.search(config, searchRequest)];
46918
47226
  case 5:
46919
- packageSearchResults = _c.sent();
47227
+ packageSearchResults = _b.sent();
46920
47228
  console.log('Search results', packageSearchResults);
46921
47229
  enrichedFilters = enrichFiltersWithResults(packageSearchResults, context.filters, (_a = context.tags) !== null && _a !== void 0 ? _a : []);
46922
47230
  if (!initialFiltersSet) {
@@ -46933,18 +47241,18 @@ var SearchResultsContainer = function () {
46933
47241
  return r.productId === (entry === null || entry === void 0 ? void 0 : entry.id);
46934
47242
  });
46935
47243
  if (matching) {
46936
- dispatch(setSelectedSearchResult(matching.productId));
47244
+ dispatch(setSelectedSearchResult(matching));
46937
47245
  }
46938
47246
  } else {
46939
47247
  if (context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight) {
46940
- dispatch(setSelectedSearchResult((_b = packageSearchResults[0]) === null || _b === void 0 ? void 0 : _b.productId));
47248
+ dispatch(setSelectedSearchResult(packageSearchResults[0]));
46941
47249
  }
46942
47250
  }
46943
47251
  }
46944
47252
  dispatch(setIsLoading(false));
46945
47253
  return [3 /*break*/, 7];
46946
47254
  case 6:
46947
- err_1 = _c.sent();
47255
+ err_1 = _b.sent();
46948
47256
  console.error('Search failed', err_1);
46949
47257
  dispatch(setIsLoading(false));
46950
47258
  return [3 /*break*/, 7];
@@ -47043,8 +47351,9 @@ var SearchResultsContainer = function () {
47043
47351
  return __generator(this, function (_a) {
47044
47352
  switch (_a.label) {
47045
47353
  case 0:
47046
- console.log('Fetching details for selected search result', selectedSearchResultId);
47047
- if (!selectedSearchResultId || !context) return [2 /*return*/];
47354
+ setDetailsIsLoading(true);
47355
+ console.log('Fetching details for selected search result', selectedSearchResult);
47356
+ if (!selectedSearchResult || !context) return [2 /*return*/];
47048
47357
  if (
47049
47358
  (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.Accommodation ||
47050
47359
  (context === null || context === void 0 ? void 0 : context.searchConfiguration.qsmType) === build.PortalQsmType.GroupTour
@@ -47059,7 +47368,7 @@ var SearchResultsContainer = function () {
47059
47368
  apiKey: context.tideConnection.apiKey
47060
47369
  };
47061
47370
  selectedItem = results.find(function (r) {
47062
- return r.productId === selectedSearchResultId;
47371
+ return r.productId === selectedSearchResult.productId;
47063
47372
  });
47064
47373
  if (!selectedItem) {
47065
47374
  // TODO: handle this case better, show an error message to the user
@@ -47106,12 +47415,14 @@ var SearchResultsContainer = function () {
47106
47415
  case 4:
47107
47416
  detailsResponse = _a.sent();
47108
47417
  dispatch(setBookingPackageDetails({ details: detailsResponse === null || detailsResponse === void 0 ? void 0 : detailsResponse.payload }));
47418
+ setDetailsIsLoading(false);
47109
47419
  _a.label = 5;
47110
47420
  case 5:
47111
47421
  return [3 /*break*/, 7];
47112
47422
  case 6:
47113
47423
  err_3 = _a.sent();
47114
47424
  console.error('Failed to fetch package details', err_3);
47425
+ setDetailsIsLoading(false);
47115
47426
  return [3 /*break*/, 7];
47116
47427
  case 7:
47117
47428
  return [2 /*return*/];
@@ -47233,14 +47544,14 @@ var SearchResultsContainer = function () {
47233
47544
  });
47234
47545
  });
47235
47546
  };
47236
- if (selectedSearchResultId) {
47547
+ if (selectedSearchResult) {
47237
47548
  fetchDetails();
47238
47549
  }
47239
47550
  if (selectedPackagingAccoResultCode) {
47240
47551
  fetchPackagingAccoSearchDetails();
47241
47552
  }
47242
47553
  },
47243
- [selectedSearchResultId, selectedPackagingAccoResultCode]
47554
+ [selectedSearchResult, selectedPackagingAccoResultCode]
47244
47555
  );
47245
47556
  React.useEffect(
47246
47557
  function () {
@@ -47276,7 +47587,8 @@ var SearchResultsContainer = function () {
47276
47587
  setIsOpen: handleFlyInToggle,
47277
47588
  onPanelRef: function (el) {
47278
47589
  return (panelRef.current = el);
47279
- }
47590
+ },
47591
+ detailsLoading: detailsIsLoading
47280
47592
  })
47281
47593
  ),
47282
47594
  (context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight ||
@@ -47440,7 +47752,8 @@ var SearchResultsContainer = function () {
47440
47752
  setIsOpen: handleFlyInToggle,
47441
47753
  onPanelRef: function (el) {
47442
47754
  return (panelRef.current = el);
47443
- }
47755
+ },
47756
+ detailsLoading: detailsIsLoading
47444
47757
  })
47445
47758
  )
47446
47759
  )