@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.
- package/build/build-cjs/index.js +361 -67
- package/build/build-cjs/src/search-results/store/search-results-slice.d.ts +2 -2
- package/build/build-cjs/src/search-results/types.d.ts +2 -2
- package/build/build-cjs/src/shared/components/flyin/group-tour-flyin.d.ts +8 -0
- package/build/build-esm/index.js +356 -67
- package/build/build-esm/src/search-results/store/search-results-slice.d.ts +2 -2
- package/build/build-esm/src/search-results/types.d.ts +2 -2
- package/build/build-esm/src/shared/components/flyin/group-tour-flyin.d.ts +8 -0
- package/package.json +1 -1
- package/src/search-results/components/group-tour/group-tour-card.tsx +5 -11
- package/src/search-results/components/search-results-container/search-results-container.tsx +8 -8
- package/src/search-results/store/search-results-slice.ts +4 -4
- package/src/search-results/types.ts +2 -2
- package/src/shared/components/flyin/flyin.tsx +3 -3
- package/src/shared/components/flyin/group-tour-flyin.tsx +254 -0
- package/styles/components/_booking.scss +2 -2
- package/styles/components/_form.scss +3 -3
package/build/build-cjs/index.js
CHANGED
|
@@ -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$
|
|
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$
|
|
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$
|
|
13555
|
+
return ''.concat(formatPrice$2(price, currencyCode));
|
|
13556
13556
|
case 1:
|
|
13557
13557
|
var perPersonPrice = price / personCount;
|
|
13558
|
-
return ''.concat(formatPrice$
|
|
13558
|
+
return ''.concat(formatPrice$2(perPersonPrice, currencyCode), ' / ').concat(perPersonLabel);
|
|
13559
13559
|
case 2:
|
|
13560
13560
|
var perNightPrice = price / duration;
|
|
13561
|
-
return ''.concat(formatPrice$
|
|
13561
|
+
return ''.concat(formatPrice$2(perNightPrice, currencyCode), ' / ').concat(perNightLabel);
|
|
13562
13562
|
case 3:
|
|
13563
13563
|
var perPersonPerNightPrice = price / duration;
|
|
13564
|
-
return ''.concat(formatPrice$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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.
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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$
|
|
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$
|
|
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
|
|
46266
|
+
var selectedSearchResult = reactRedux.useSelector(function (state) {
|
|
45961
46267
|
return state.searchResults;
|
|
45962
|
-
}).
|
|
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 (
|
|
45979
|
-
|
|
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$
|
|
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
|
|
46411
|
+
return handleChange(result);
|
|
46107
46412
|
}
|
|
46108
46413
|
},
|
|
46109
|
-
|
|
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
|
-
|
|
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
|
|
46883
|
-
return __generator(this, function (
|
|
46884
|
-
switch (
|
|
47176
|
+
var _a;
|
|
47177
|
+
return __generator(this, function (_b) {
|
|
47178
|
+
switch (_b.label) {
|
|
46885
47179
|
case 0:
|
|
46886
47180
|
dispatch(setIsLoading(true));
|
|
46887
|
-
|
|
47181
|
+
_b.label = 1;
|
|
46888
47182
|
case 1:
|
|
46889
|
-
|
|
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 =
|
|
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
|
-
|
|
47209
|
+
_b.label = 4;
|
|
46916
47210
|
case 4:
|
|
46917
47211
|
return [4 /*yield*/, build.search(config, searchRequest)];
|
|
46918
47212
|
case 5:
|
|
46919
|
-
packageSearchResults =
|
|
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
|
|
47230
|
+
dispatch(setSelectedSearchResult(matching));
|
|
46937
47231
|
}
|
|
46938
47232
|
} else {
|
|
46939
47233
|
if (context.searchConfiguration.qsmType === build.PortalQsmType.AccommodationAndFlight) {
|
|
46940
|
-
dispatch(setSelectedSearchResult(
|
|
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 =
|
|
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',
|
|
47047
|
-
if (!
|
|
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 ===
|
|
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 (
|
|
47530
|
+
if (selectedSearchResult) {
|
|
47237
47531
|
fetchDetails();
|
|
47238
47532
|
}
|
|
47239
47533
|
if (selectedPackagingAccoResultCode) {
|
|
47240
47534
|
fetchPackagingAccoSearchDetails();
|
|
47241
47535
|
}
|
|
47242
47536
|
},
|
|
47243
|
-
[
|
|
47537
|
+
[selectedSearchResult, selectedPackagingAccoResultCode]
|
|
47244
47538
|
);
|
|
47245
47539
|
React.useEffect(
|
|
47246
47540
|
function () {
|