@qite/tide-booking-component 1.4.53 → 1.4.54
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 +530 -102
- package/build/build-esm/index.js +530 -102
- package/package.json +1 -1
- package/src/qsm/components/QSMContainer/qsm-container.tsx +32 -34
- package/src/search-results/components/search-results-container/search-results-container.tsx +48 -41
- package/src/search-results/features/flights/flight-search-results-self-contained.tsx +1 -1
package/build/build-esm/index.js
CHANGED
|
@@ -32070,49 +32070,48 @@ var QSMContainer = function () {
|
|
|
32070
32070
|
React__default.createElement(
|
|
32071
32071
|
'div',
|
|
32072
32072
|
{ className: 'qsm__filter' },
|
|
32073
|
-
qsmType === 'hotel' ||
|
|
32074
|
-
(
|
|
32073
|
+
(qsmType === 'hotel' || qsmType === 'hotel-flight') &&
|
|
32074
|
+
React__default.createElement(
|
|
32075
|
+
'div',
|
|
32076
|
+
{ className: 'radiobutton-group qsm__filter__inputgroup' },
|
|
32075
32077
|
React__default.createElement(
|
|
32076
32078
|
'div',
|
|
32077
|
-
{ className: 'radiobutton
|
|
32079
|
+
{ className: 'radiobutton' },
|
|
32078
32080
|
React__default.createElement(
|
|
32079
|
-
'
|
|
32080
|
-
{ className: '
|
|
32081
|
-
React__default.createElement(
|
|
32082
|
-
'
|
|
32083
|
-
|
|
32084
|
-
|
|
32085
|
-
|
|
32086
|
-
|
|
32087
|
-
|
|
32088
|
-
|
|
32089
|
-
|
|
32090
|
-
|
|
32091
|
-
|
|
32092
|
-
|
|
32093
|
-
|
|
32094
|
-
|
|
32095
|
-
|
|
32096
|
-
|
|
32081
|
+
'label',
|
|
32082
|
+
{ className: 'radiobutton__label' },
|
|
32083
|
+
React__default.createElement('input', {
|
|
32084
|
+
type: 'radio',
|
|
32085
|
+
name: 'numberOfAccommodations',
|
|
32086
|
+
// onChange={handleMainBookerChange}
|
|
32087
|
+
// onBlur={formik.handleBlur}
|
|
32088
|
+
value: '',
|
|
32089
|
+
checked: true,
|
|
32090
|
+
readOnly: true,
|
|
32091
|
+
className: 'radiobutton__input'
|
|
32092
|
+
}),
|
|
32093
|
+
React__default.createElement('span', null, translations.QSM.ONE_ACCOMMODATION)
|
|
32094
|
+
)
|
|
32095
|
+
),
|
|
32096
|
+
React__default.createElement(
|
|
32097
|
+
'div',
|
|
32098
|
+
{ className: 'radiobutton' },
|
|
32097
32099
|
React__default.createElement(
|
|
32098
|
-
'
|
|
32099
|
-
{ className: '
|
|
32100
|
-
React__default.createElement(
|
|
32101
|
-
'
|
|
32102
|
-
|
|
32103
|
-
|
|
32104
|
-
|
|
32105
|
-
|
|
32106
|
-
|
|
32107
|
-
|
|
32108
|
-
|
|
32109
|
-
|
|
32110
|
-
disabled: true
|
|
32111
|
-
}),
|
|
32112
|
-
React__default.createElement('span', null, translations.QSM.MULTIPLE_ACCOMMODATIONS)
|
|
32113
|
-
)
|
|
32100
|
+
'label',
|
|
32101
|
+
{ className: 'radiobutton__label' },
|
|
32102
|
+
React__default.createElement('input', {
|
|
32103
|
+
type: 'radio',
|
|
32104
|
+
name: 'numberOfAccommodations',
|
|
32105
|
+
// onChange={handleMainBookerChange}
|
|
32106
|
+
// onBlur={formik.handleBlur}
|
|
32107
|
+
value: '',
|
|
32108
|
+
className: 'radiobutton__input',
|
|
32109
|
+
disabled: true
|
|
32110
|
+
}),
|
|
32111
|
+
React__default.createElement('span', null, translations.QSM.MULTIPLE_ACCOMMODATIONS)
|
|
32114
32112
|
)
|
|
32115
|
-
)
|
|
32113
|
+
)
|
|
32114
|
+
),
|
|
32116
32115
|
qsmType === 'flight' &&
|
|
32117
32116
|
React__default.createElement(
|
|
32118
32117
|
'div',
|
|
@@ -32346,9 +32345,9 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
32346
32345
|
setBookingPackageDetails = _a.setBookingPackageDetails,
|
|
32347
32346
|
setEntry = _a.setEntry,
|
|
32348
32347
|
selectFlight = _a.selectFlight,
|
|
32349
|
-
setIsLoading = _a.setIsLoading
|
|
32350
|
-
_a.setFilters
|
|
32351
|
-
|
|
32348
|
+
setIsLoading = _a.setIsLoading,
|
|
32349
|
+
setFilters = _a.setFilters,
|
|
32350
|
+
resetFilters = _a.resetFilters,
|
|
32352
32351
|
setSortKey = _a.setSortKey,
|
|
32353
32352
|
setActiveTab = _a.setActiveTab;
|
|
32354
32353
|
_a.setCurrentPage;
|
|
@@ -39583,6 +39582,433 @@ var FlightResultsContainer = function (_a) {
|
|
|
39583
39582
|
);
|
|
39584
39583
|
};
|
|
39585
39584
|
|
|
39585
|
+
var initialFilters = [
|
|
39586
|
+
{
|
|
39587
|
+
property: 'regime',
|
|
39588
|
+
label: 'Regime',
|
|
39589
|
+
type: 'checkbox',
|
|
39590
|
+
options: [
|
|
39591
|
+
{
|
|
39592
|
+
label: 'Room only',
|
|
39593
|
+
value: ['RO', 'LO', 'OB'],
|
|
39594
|
+
isChecked: false
|
|
39595
|
+
},
|
|
39596
|
+
{
|
|
39597
|
+
label: 'Bed & Beakfast',
|
|
39598
|
+
value: ['BB', 'KO'],
|
|
39599
|
+
isChecked: false
|
|
39600
|
+
},
|
|
39601
|
+
{
|
|
39602
|
+
label: 'Half board',
|
|
39603
|
+
value: ['HB'],
|
|
39604
|
+
isChecked: false
|
|
39605
|
+
},
|
|
39606
|
+
{
|
|
39607
|
+
label: 'Full board',
|
|
39608
|
+
value: ['FB'],
|
|
39609
|
+
isChecked: false
|
|
39610
|
+
}
|
|
39611
|
+
],
|
|
39612
|
+
isFrontendFilter: false
|
|
39613
|
+
},
|
|
39614
|
+
{
|
|
39615
|
+
property: 'price',
|
|
39616
|
+
label: 'Prijs',
|
|
39617
|
+
type: 'slider',
|
|
39618
|
+
isFrontendFilter: false,
|
|
39619
|
+
min: 2244,
|
|
39620
|
+
max: 6785
|
|
39621
|
+
},
|
|
39622
|
+
{
|
|
39623
|
+
property: 'rating',
|
|
39624
|
+
label: 'Rating',
|
|
39625
|
+
type: 'star-rating',
|
|
39626
|
+
isFrontendFilter: true
|
|
39627
|
+
},
|
|
39628
|
+
{
|
|
39629
|
+
property: 'theme',
|
|
39630
|
+
label: "Thema's",
|
|
39631
|
+
type: 'toggle',
|
|
39632
|
+
options: [
|
|
39633
|
+
{
|
|
39634
|
+
label: 'Adults',
|
|
39635
|
+
value: 1,
|
|
39636
|
+
isChecked: false
|
|
39637
|
+
},
|
|
39638
|
+
{
|
|
39639
|
+
label: 'Luxury',
|
|
39640
|
+
value: 2,
|
|
39641
|
+
isChecked: false
|
|
39642
|
+
},
|
|
39643
|
+
{
|
|
39644
|
+
label: 'Welness & Spa',
|
|
39645
|
+
value: 3,
|
|
39646
|
+
isChecked: false
|
|
39647
|
+
},
|
|
39648
|
+
{
|
|
39649
|
+
label: 'familie',
|
|
39650
|
+
value: 4,
|
|
39651
|
+
isChecked: false
|
|
39652
|
+
}
|
|
39653
|
+
],
|
|
39654
|
+
isFrontendFilter: false
|
|
39655
|
+
}
|
|
39656
|
+
];
|
|
39657
|
+
var Filters = function (_a) {
|
|
39658
|
+
var _b;
|
|
39659
|
+
var filters = _a.filters,
|
|
39660
|
+
isOpen = _a.isOpen,
|
|
39661
|
+
handleSetIsOpen = _a.handleSetIsOpen,
|
|
39662
|
+
handleApplyFilters = _a.handleApplyFilters,
|
|
39663
|
+
isLoading = _a.isLoading;
|
|
39664
|
+
var context = useContext(SearchResultsConfigurationContext);
|
|
39665
|
+
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
39666
|
+
var _c = useState({}),
|
|
39667
|
+
visibleFilters = _c[0],
|
|
39668
|
+
setVisibleFilters = _c[1];
|
|
39669
|
+
var _d = useState([]),
|
|
39670
|
+
pendingFilters = _d[0],
|
|
39671
|
+
setPendingFilters = _d[1];
|
|
39672
|
+
useEffect(
|
|
39673
|
+
function () {
|
|
39674
|
+
if (initialFilters.length > 0) {
|
|
39675
|
+
setPendingFilters(initialFilters);
|
|
39676
|
+
}
|
|
39677
|
+
},
|
|
39678
|
+
[initialFilters]
|
|
39679
|
+
);
|
|
39680
|
+
var dispatch = useDispatch();
|
|
39681
|
+
var toggleFilterVisibility = function (filterId) {
|
|
39682
|
+
setVisibleFilters(function (prev) {
|
|
39683
|
+
var _a;
|
|
39684
|
+
return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
|
|
39685
|
+
});
|
|
39686
|
+
};
|
|
39687
|
+
var updatePendingFilter = function (updatedFilter) {
|
|
39688
|
+
setPendingFilters(function (prevFilters) {
|
|
39689
|
+
var index = prevFilters.findIndex(function (f) {
|
|
39690
|
+
return f.property === updatedFilter.property;
|
|
39691
|
+
});
|
|
39692
|
+
if (index !== -1) {
|
|
39693
|
+
var newFilters = __spreadArray([], prevFilters, true);
|
|
39694
|
+
newFilters[index] = updatedFilter;
|
|
39695
|
+
return newFilters;
|
|
39696
|
+
} else {
|
|
39697
|
+
return __spreadArray(__spreadArray([], prevFilters, true), [updatedFilter], false);
|
|
39698
|
+
}
|
|
39699
|
+
});
|
|
39700
|
+
};
|
|
39701
|
+
var handleCheckBoxFilter = function (filter, option) {
|
|
39702
|
+
setPendingFilters(function (prev) {
|
|
39703
|
+
var _a;
|
|
39704
|
+
var updated = prev.map(function (f) {
|
|
39705
|
+
var _a;
|
|
39706
|
+
if (f.property !== filter.property) {
|
|
39707
|
+
return f;
|
|
39708
|
+
}
|
|
39709
|
+
return __assign(__assign({}, f), {
|
|
39710
|
+
options:
|
|
39711
|
+
(_a = f.options) === null || _a === void 0
|
|
39712
|
+
? void 0
|
|
39713
|
+
: _a.map(function (opt) {
|
|
39714
|
+
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
39715
|
+
})
|
|
39716
|
+
});
|
|
39717
|
+
});
|
|
39718
|
+
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
39719
|
+
dispatch(setFilters(updated));
|
|
39720
|
+
(_a = context === null || context === void 0 ? void 0 : context.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(context, updated);
|
|
39721
|
+
}
|
|
39722
|
+
return updated;
|
|
39723
|
+
});
|
|
39724
|
+
};
|
|
39725
|
+
var handleSliderMinChange = function (filter, value) {
|
|
39726
|
+
var _a, _b;
|
|
39727
|
+
if (value < ((_b = (_a = filter.selectedMax) !== null && _a !== void 0 ? _a : filter.max) !== null && _b !== void 0 ? _b : 100)) {
|
|
39728
|
+
var updatedFilter = __assign(__assign({}, filter), { selectedMin: value });
|
|
39729
|
+
updatePendingFilter(updatedFilter);
|
|
39730
|
+
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
39731
|
+
applyFilters();
|
|
39732
|
+
}
|
|
39733
|
+
}
|
|
39734
|
+
};
|
|
39735
|
+
var handleSliderMaxChange = function (filter, value) {
|
|
39736
|
+
var _a, _b;
|
|
39737
|
+
if (value > ((_b = (_a = filter.selectedMin) !== null && _a !== void 0 ? _a : filter.min) !== null && _b !== void 0 ? _b : 0)) {
|
|
39738
|
+
var updatedFilter = __assign(__assign({}, filter), { selectedMax: value });
|
|
39739
|
+
updatePendingFilter(updatedFilter);
|
|
39740
|
+
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
39741
|
+
applyFilters();
|
|
39742
|
+
}
|
|
39743
|
+
}
|
|
39744
|
+
};
|
|
39745
|
+
var applyFilters = function () {
|
|
39746
|
+
var _a;
|
|
39747
|
+
dispatch(setFilters(pendingFilters));
|
|
39748
|
+
(_a = context === null || context === void 0 ? void 0 : context.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(context, pendingFilters);
|
|
39749
|
+
handleApplyFilters();
|
|
39750
|
+
if (isOpen) {
|
|
39751
|
+
handleSetIsOpen();
|
|
39752
|
+
}
|
|
39753
|
+
};
|
|
39754
|
+
var handleFullReset = function () {
|
|
39755
|
+
if (!isLoading) {
|
|
39756
|
+
setPendingFilters(initialFilters);
|
|
39757
|
+
dispatch(resetFilters(initialFilters));
|
|
39758
|
+
}
|
|
39759
|
+
};
|
|
39760
|
+
var handleResetPendingChanges = function () {
|
|
39761
|
+
setPendingFilters(filters); // ← back to last applied
|
|
39762
|
+
};
|
|
39763
|
+
var hasPendingChanges = function () {
|
|
39764
|
+
return JSON.stringify(pendingFilters) !== JSON.stringify(filters);
|
|
39765
|
+
};
|
|
39766
|
+
if (!context || !context.showFilters) {
|
|
39767
|
+
return null;
|
|
39768
|
+
}
|
|
39769
|
+
return React__default.createElement(
|
|
39770
|
+
React__default.Fragment,
|
|
39771
|
+
null,
|
|
39772
|
+
React__default.createElement(
|
|
39773
|
+
'div',
|
|
39774
|
+
{ className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
|
|
39775
|
+
React__default.createElement('div', {
|
|
39776
|
+
className: 'search__filters--background',
|
|
39777
|
+
onClick: function () {
|
|
39778
|
+
return handleSetIsOpen();
|
|
39779
|
+
}
|
|
39780
|
+
}),
|
|
39781
|
+
React__default.createElement(
|
|
39782
|
+
'button',
|
|
39783
|
+
{
|
|
39784
|
+
className: 'search__filters--close',
|
|
39785
|
+
onClick: function () {
|
|
39786
|
+
return handleSetIsOpen();
|
|
39787
|
+
}
|
|
39788
|
+
},
|
|
39789
|
+
React__default.createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
39790
|
+
),
|
|
39791
|
+
React__default.createElement(
|
|
39792
|
+
'div',
|
|
39793
|
+
{ className: 'search__filters' },
|
|
39794
|
+
React__default.createElement(
|
|
39795
|
+
'div',
|
|
39796
|
+
{ className: 'search__filter-row search__filter__header' },
|
|
39797
|
+
React__default.createElement(
|
|
39798
|
+
'div',
|
|
39799
|
+
{ className: 'search__filter-row-flex-title' },
|
|
39800
|
+
React__default.createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
|
|
39801
|
+
),
|
|
39802
|
+
!isLoading &&
|
|
39803
|
+
React__default.createElement(
|
|
39804
|
+
'a',
|
|
39805
|
+
{
|
|
39806
|
+
className: 'search__filter-reset',
|
|
39807
|
+
onClick: function () {
|
|
39808
|
+
return handleFullReset();
|
|
39809
|
+
}
|
|
39810
|
+
},
|
|
39811
|
+
translations.SRP.RESET
|
|
39812
|
+
)
|
|
39813
|
+
),
|
|
39814
|
+
isLoading
|
|
39815
|
+
? React__default.createElement(Spinner, null)
|
|
39816
|
+
: React__default.createElement(
|
|
39817
|
+
React__default.Fragment,
|
|
39818
|
+
null,
|
|
39819
|
+
React__default.createElement(
|
|
39820
|
+
'div',
|
|
39821
|
+
{ className: 'search__filters__group-container' },
|
|
39822
|
+
pendingFilters.map(function (filter, index) {
|
|
39823
|
+
var _a, _b;
|
|
39824
|
+
var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
|
|
39825
|
+
return React__default.createElement(
|
|
39826
|
+
'div',
|
|
39827
|
+
{ key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
|
|
39828
|
+
React__default.createElement(
|
|
39829
|
+
'div',
|
|
39830
|
+
{
|
|
39831
|
+
className: 'search__filter-row search__filter-row--underline',
|
|
39832
|
+
onClick: function () {
|
|
39833
|
+
return toggleFilterVisibility(filter.property);
|
|
39834
|
+
},
|
|
39835
|
+
role: 'button',
|
|
39836
|
+
tabIndex: 0
|
|
39837
|
+
},
|
|
39838
|
+
React__default.createElement('h6', { className: 'search__filter-large-title' }, filter.label),
|
|
39839
|
+
React__default.createElement(
|
|
39840
|
+
'svg',
|
|
39841
|
+
{
|
|
39842
|
+
id: 'search-chevron-up-icon',
|
|
39843
|
+
className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
|
|
39844
|
+
viewBox: '0 0 10 6.063',
|
|
39845
|
+
width: 10,
|
|
39846
|
+
height: 6.063
|
|
39847
|
+
},
|
|
39848
|
+
React__default.createElement('path', {
|
|
39849
|
+
id: 'Path_62',
|
|
39850
|
+
'data-name': 'Path 62',
|
|
39851
|
+
d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
|
|
39852
|
+
transform: 'translate(-240 624)',
|
|
39853
|
+
fill: '#707070'
|
|
39854
|
+
})
|
|
39855
|
+
)
|
|
39856
|
+
),
|
|
39857
|
+
isVisible &&
|
|
39858
|
+
filter.type === 'checkbox' &&
|
|
39859
|
+
React__default.createElement(
|
|
39860
|
+
'div',
|
|
39861
|
+
{ className: 'search__filter-rows' },
|
|
39862
|
+
filter.options &&
|
|
39863
|
+
filter.options.map(function (option, optionIndex) {
|
|
39864
|
+
return React__default.createElement(
|
|
39865
|
+
'div',
|
|
39866
|
+
{ className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
39867
|
+
React__default.createElement(
|
|
39868
|
+
'div',
|
|
39869
|
+
{ className: 'checkbox' },
|
|
39870
|
+
React__default.createElement(
|
|
39871
|
+
'label',
|
|
39872
|
+
{ className: 'checkbox__label' },
|
|
39873
|
+
React__default.createElement('input', {
|
|
39874
|
+
type: 'checkbox',
|
|
39875
|
+
className: 'checkbox__input checkbox__input--parent',
|
|
39876
|
+
checked: option.isChecked,
|
|
39877
|
+
onChange: function (e) {
|
|
39878
|
+
return handleCheckBoxFilter(filter, option);
|
|
39879
|
+
}
|
|
39880
|
+
}),
|
|
39881
|
+
React__default.createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
39882
|
+
)
|
|
39883
|
+
)
|
|
39884
|
+
);
|
|
39885
|
+
})
|
|
39886
|
+
),
|
|
39887
|
+
isVisible &&
|
|
39888
|
+
filter.type === 'toggle' &&
|
|
39889
|
+
React__default.createElement(
|
|
39890
|
+
'div',
|
|
39891
|
+
{ className: 'search__filter-rows' },
|
|
39892
|
+
(_b = filter.options) === null || _b === void 0
|
|
39893
|
+
? void 0
|
|
39894
|
+
: _b.map(function (option, optionIndex) {
|
|
39895
|
+
return React__default.createElement(
|
|
39896
|
+
'div',
|
|
39897
|
+
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
39898
|
+
React__default.createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
39899
|
+
React__default.createElement('div', { className: 'checkbox' }),
|
|
39900
|
+
React__default.createElement(
|
|
39901
|
+
'label',
|
|
39902
|
+
{ className: 'checkbox__label' },
|
|
39903
|
+
React__default.createElement('input', {
|
|
39904
|
+
type: 'checkbox',
|
|
39905
|
+
className: 'checkbox__input',
|
|
39906
|
+
checked: option.isChecked,
|
|
39907
|
+
onChange: function () {
|
|
39908
|
+
return handleCheckBoxFilter(filter, option);
|
|
39909
|
+
}
|
|
39910
|
+
})
|
|
39911
|
+
)
|
|
39912
|
+
);
|
|
39913
|
+
})
|
|
39914
|
+
),
|
|
39915
|
+
isVisible &&
|
|
39916
|
+
filter &&
|
|
39917
|
+
filter.type === 'slider' &&
|
|
39918
|
+
(function () {
|
|
39919
|
+
var _a, _b, _c, _d;
|
|
39920
|
+
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
39921
|
+
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
39922
|
+
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
39923
|
+
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
39924
|
+
return React__default.createElement(MultiRangeFilter, {
|
|
39925
|
+
min: min,
|
|
39926
|
+
max: max,
|
|
39927
|
+
selectedMin: selectedMin,
|
|
39928
|
+
selectedMax: selectedMax,
|
|
39929
|
+
valueFormatter: function (value) {
|
|
39930
|
+
return ''.concat(value);
|
|
39931
|
+
},
|
|
39932
|
+
onChange: function (newMin, newMax) {
|
|
39933
|
+
handleSliderMinChange(filter, newMin);
|
|
39934
|
+
handleSliderMaxChange(filter, newMax);
|
|
39935
|
+
}
|
|
39936
|
+
});
|
|
39937
|
+
})(),
|
|
39938
|
+
isVisible &&
|
|
39939
|
+
filter.property === 'rating' &&
|
|
39940
|
+
filter.type === 'star-rating' &&
|
|
39941
|
+
(function () {
|
|
39942
|
+
var _a;
|
|
39943
|
+
var selectedRating = (_a = filter.selectedRating) !== null && _a !== void 0 ? _a : 0;
|
|
39944
|
+
var handleRatingChange = function (rating) {
|
|
39945
|
+
var updatedFilter = __assign(__assign({}, filter), { selectedRating: rating });
|
|
39946
|
+
updatePendingFilter(updatedFilter);
|
|
39947
|
+
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
39948
|
+
applyFilters();
|
|
39949
|
+
}
|
|
39950
|
+
};
|
|
39951
|
+
return React__default.createElement(
|
|
39952
|
+
'div',
|
|
39953
|
+
{ className: 'search__filter-row star-rating-filter' },
|
|
39954
|
+
[5, 4, 3, 2, 1].map(function (star) {
|
|
39955
|
+
return React__default.createElement(
|
|
39956
|
+
'span',
|
|
39957
|
+
{
|
|
39958
|
+
key: star,
|
|
39959
|
+
className: 'star '.concat(star <= selectedRating ? 'filled' : ''),
|
|
39960
|
+
onClick: function () {
|
|
39961
|
+
return handleRatingChange(star);
|
|
39962
|
+
},
|
|
39963
|
+
role: 'button',
|
|
39964
|
+
tabIndex: 0,
|
|
39965
|
+
onKeyDown: function (e) {
|
|
39966
|
+
if (e.key === 'Enter' || e.key === ' ') handleRatingChange(star);
|
|
39967
|
+
}
|
|
39968
|
+
},
|
|
39969
|
+
'\u2605'
|
|
39970
|
+
);
|
|
39971
|
+
})
|
|
39972
|
+
);
|
|
39973
|
+
})()
|
|
39974
|
+
);
|
|
39975
|
+
}),
|
|
39976
|
+
context.useGlobalApplyFilterButton &&
|
|
39977
|
+
hasPendingChanges() &&
|
|
39978
|
+
React__default.createElement(
|
|
39979
|
+
'div',
|
|
39980
|
+
{ className: 'search__filters__actions' },
|
|
39981
|
+
React__default.createElement(
|
|
39982
|
+
'button',
|
|
39983
|
+
{
|
|
39984
|
+
className: 'cta--secondary ',
|
|
39985
|
+
onClick: function () {
|
|
39986
|
+
handleResetPendingChanges();
|
|
39987
|
+
handleSetIsOpen();
|
|
39988
|
+
},
|
|
39989
|
+
disabled: isLoading
|
|
39990
|
+
},
|
|
39991
|
+
translations.SRP.CANCEL
|
|
39992
|
+
),
|
|
39993
|
+
React__default.createElement(
|
|
39994
|
+
'button',
|
|
39995
|
+
{
|
|
39996
|
+
className: 'cta',
|
|
39997
|
+
onClick: function () {
|
|
39998
|
+
return applyFilters();
|
|
39999
|
+
},
|
|
40000
|
+
disabled: isLoading
|
|
40001
|
+
},
|
|
40002
|
+
translations.SRP.APPLY
|
|
40003
|
+
)
|
|
40004
|
+
)
|
|
40005
|
+
)
|
|
40006
|
+
)
|
|
40007
|
+
)
|
|
40008
|
+
)
|
|
40009
|
+
);
|
|
40010
|
+
};
|
|
40011
|
+
|
|
39586
40012
|
var SearchResultsContainer = function () {
|
|
39587
40013
|
var _a;
|
|
39588
40014
|
var dispatch = useDispatch();
|
|
@@ -39601,8 +40027,8 @@ var SearchResultsContainer = function () {
|
|
|
39601
40027
|
flyInIsOpen = _b.flyInIsOpen;
|
|
39602
40028
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
39603
40029
|
var _c = useState(0),
|
|
39604
|
-
searchTrigger = _c[0]
|
|
39605
|
-
|
|
40030
|
+
searchTrigger = _c[0],
|
|
40031
|
+
setSearchTrigger = _c[1];
|
|
39606
40032
|
var _d = useState(false),
|
|
39607
40033
|
initialFiltersSet = _d[0],
|
|
39608
40034
|
setInitialFiltersSet = _d[1];
|
|
@@ -39616,10 +40042,11 @@ var SearchResultsContainer = function () {
|
|
|
39616
40042
|
itineraryOpen = _g[0],
|
|
39617
40043
|
setItineraryOpen = _g[1];
|
|
39618
40044
|
var panelRef = useRef(null);
|
|
39619
|
-
var
|
|
39620
|
-
{
|
|
39621
|
-
{
|
|
39622
|
-
{
|
|
40045
|
+
var sortByTypes = [
|
|
40046
|
+
{ direction: 'asc', label: 'price' },
|
|
40047
|
+
{ direction: 'desc', label: 'price' },
|
|
40048
|
+
{ direction: 'asc', label: 'departure' },
|
|
40049
|
+
{ direction: 'desc', label: 'departure' }
|
|
39623
40050
|
];
|
|
39624
40051
|
var handleFlyInToggle = function (isOpen) {
|
|
39625
40052
|
dispatch(setFlyInIsOpen(isOpen));
|
|
@@ -39707,7 +40134,7 @@ var SearchResultsContainer = function () {
|
|
|
39707
40134
|
return searchRequest;
|
|
39708
40135
|
};
|
|
39709
40136
|
var buildSearchFromQueryParams = function (params) {
|
|
39710
|
-
var _a
|
|
40137
|
+
var _a;
|
|
39711
40138
|
var from = getDateFromParams(params, 'fromDate');
|
|
39712
40139
|
var to = getDateFromParams(params, 'toDate');
|
|
39713
40140
|
var rooms = getRoomsFromParams(params, 'rooms');
|
|
@@ -39719,11 +40146,8 @@ var SearchResultsContainer = function () {
|
|
|
39719
40146
|
var tagId = getNumberFromParams(params, 'tagId');
|
|
39720
40147
|
// temp hardcoded params
|
|
39721
40148
|
if (!from || !to) {
|
|
39722
|
-
|
|
39723
|
-
|
|
39724
|
-
}
|
|
39725
|
-
if (!country && !region && !oord && !city) {
|
|
39726
|
-
region = 1;
|
|
40149
|
+
console.error('Missing fromDate or toDate in query params, using default values');
|
|
40150
|
+
return null;
|
|
39727
40151
|
}
|
|
39728
40152
|
if (typeof window !== 'undefined') {
|
|
39729
40153
|
window.scrollTo(0, 0);
|
|
@@ -39764,34 +40188,14 @@ var SearchResultsContainer = function () {
|
|
|
39764
40188
|
toDate: to,
|
|
39765
40189
|
earliestFromOffset: 0,
|
|
39766
40190
|
latestToOffset: 0,
|
|
39767
|
-
includeFlights: true,
|
|
39768
|
-
regimeCodes:
|
|
39769
|
-
|
|
39770
|
-
|
|
39771
|
-
|
|
39772
|
-
|
|
39773
|
-
|
|
39774
|
-
|
|
39775
|
-
? void 0
|
|
39776
|
-
: _c
|
|
39777
|
-
.filter(function (o) {
|
|
39778
|
-
return o.isChecked;
|
|
39779
|
-
})
|
|
39780
|
-
.flatMap(function (o) {
|
|
39781
|
-
return o.value.toString();
|
|
39782
|
-
})) || [],
|
|
39783
|
-
minPrice:
|
|
39784
|
-
(_d = filters.find(function (f) {
|
|
39785
|
-
return f.property === 'price';
|
|
39786
|
-
})) === null || _d === void 0
|
|
39787
|
-
? void 0
|
|
39788
|
-
: _d.selectedMin,
|
|
39789
|
-
maxPrice:
|
|
39790
|
-
(_e = filters.find(function (f) {
|
|
39791
|
-
return f.property === 'price';
|
|
39792
|
-
})) === null || _e === void 0
|
|
39793
|
-
? void 0
|
|
39794
|
-
: _e.selectedMax,
|
|
40191
|
+
includeFlights: context.type === 'hotel-flight' ? true : false,
|
|
40192
|
+
// regimeCodes:
|
|
40193
|
+
// filters
|
|
40194
|
+
// .find((f) => f.property === 'regime')
|
|
40195
|
+
// ?.options?.filter((o) => o.isChecked)
|
|
40196
|
+
// .flatMap((o) => o.value.toString()) || [],
|
|
40197
|
+
// minPrice: filters.find((f) => f.property === 'price')?.selectedMin,
|
|
40198
|
+
// maxPrice: filters.find((f) => f.property === 'price')?.selectedMax,
|
|
39795
40199
|
useExactDates: true,
|
|
39796
40200
|
onlyCachedResults: false,
|
|
39797
40201
|
includeAllAllotments: true,
|
|
@@ -39868,9 +40272,9 @@ var SearchResultsContainer = function () {
|
|
|
39868
40272
|
// seperate Search
|
|
39869
40273
|
useEffect(
|
|
39870
40274
|
function () {
|
|
39871
|
-
var
|
|
40275
|
+
var runHotelSearch = function () {
|
|
39872
40276
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
39873
|
-
var config, params, entryId, entryLight, searchRequest, packageSearchResults, enrichedFilters, matching, err_1;
|
|
40277
|
+
var config, params, entryId, entryLight, searchRequest, rq, packageSearchResults, enrichedFilters, matching, err_1;
|
|
39874
40278
|
var _a;
|
|
39875
40279
|
return __generator(this, function (_b) {
|
|
39876
40280
|
switch (_b.label) {
|
|
@@ -39899,7 +40303,11 @@ var SearchResultsContainer = function () {
|
|
|
39899
40303
|
searchRequest = buildSearchFromEntry(entryLight);
|
|
39900
40304
|
return [3 /*break*/, 4];
|
|
39901
40305
|
case 3:
|
|
39902
|
-
|
|
40306
|
+
rq = buildSearchFromQueryParams(params);
|
|
40307
|
+
if (!rq) {
|
|
40308
|
+
throw new Error('Invalid search parameters');
|
|
40309
|
+
}
|
|
40310
|
+
searchRequest = rq;
|
|
39903
40311
|
_b.label = 4;
|
|
39904
40312
|
case 4:
|
|
39905
40313
|
return [4 /*yield*/, build.search(config, searchRequest)];
|
|
@@ -39939,8 +40347,11 @@ var SearchResultsContainer = function () {
|
|
|
39939
40347
|
});
|
|
39940
40348
|
};
|
|
39941
40349
|
if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
|
|
39942
|
-
if (
|
|
39943
|
-
|
|
40350
|
+
if (
|
|
40351
|
+
(context === null || context === void 0 ? void 0 : context.type) === 'hotel-flight' ||
|
|
40352
|
+
(context === null || context === void 0 ? void 0 : context.type) === 'hotel'
|
|
40353
|
+
) {
|
|
40354
|
+
runHotelSearch();
|
|
39944
40355
|
}
|
|
39945
40356
|
}
|
|
39946
40357
|
},
|
|
@@ -39989,7 +40400,7 @@ var SearchResultsContainer = function () {
|
|
|
39989
40400
|
productCode: selectedItem.code,
|
|
39990
40401
|
fromDate: selectedItem.fromDate,
|
|
39991
40402
|
toDate: selectedItem.toDate,
|
|
39992
|
-
includeFlights: true,
|
|
40403
|
+
includeFlights: context.type === 'hotel-flight' ? true : false,
|
|
39993
40404
|
includeHotels: true,
|
|
39994
40405
|
includePaxTypes: true,
|
|
39995
40406
|
checkExternalAvailability: true,
|
|
@@ -40069,17 +40480,33 @@ var SearchResultsContainer = function () {
|
|
|
40069
40480
|
}
|
|
40070
40481
|
})
|
|
40071
40482
|
),
|
|
40072
|
-
context.type === 'hotel-flight' &&
|
|
40483
|
+
(context.type === 'hotel-flight' || context.type === 'hotel' || context.type === 'roundTrip') &&
|
|
40073
40484
|
React__default.createElement(
|
|
40074
40485
|
React__default.Fragment,
|
|
40075
40486
|
null,
|
|
40076
|
-
|
|
40077
|
-
|
|
40078
|
-
|
|
40079
|
-
|
|
40080
|
-
|
|
40081
|
-
|
|
40082
|
-
|
|
40487
|
+
context.type != 'hotel-flight' &&
|
|
40488
|
+
context.showFilters &&
|
|
40489
|
+
React__default.createElement(Filters, {
|
|
40490
|
+
filters: filters,
|
|
40491
|
+
isOpen: filtersOpen,
|
|
40492
|
+
handleSetIsOpen: function () {
|
|
40493
|
+
return setFiltersOpen(!filtersOpen);
|
|
40494
|
+
},
|
|
40495
|
+
handleApplyFilters: function () {
|
|
40496
|
+
return setSearchTrigger(function (prev) {
|
|
40497
|
+
return prev + 1;
|
|
40498
|
+
});
|
|
40499
|
+
},
|
|
40500
|
+
isLoading: isLoading
|
|
40501
|
+
}),
|
|
40502
|
+
context.type === 'hotel-flight' &&
|
|
40503
|
+
React__default.createElement(Itinerary, {
|
|
40504
|
+
isOpen: itineraryOpen,
|
|
40505
|
+
handleSetIsOpen: function () {
|
|
40506
|
+
return setItineraryOpen(!itineraryOpen);
|
|
40507
|
+
},
|
|
40508
|
+
isLoading: isLoading
|
|
40509
|
+
}),
|
|
40083
40510
|
React__default.createElement(
|
|
40084
40511
|
'div',
|
|
40085
40512
|
{ className: 'search__results' },
|
|
@@ -40090,7 +40517,8 @@ var SearchResultsContainer = function () {
|
|
|
40090
40517
|
React__default.createElement(
|
|
40091
40518
|
'div',
|
|
40092
40519
|
{ className: 'search__results__actions' },
|
|
40093
|
-
context.
|
|
40520
|
+
context.type != 'hotel-flight' &&
|
|
40521
|
+
context.showFilters &&
|
|
40094
40522
|
React__default.createElement(
|
|
40095
40523
|
'div',
|
|
40096
40524
|
{
|
|
@@ -40115,10 +40543,10 @@ var SearchResultsContainer = function () {
|
|
|
40115
40543
|
translations.SRP.SHOW_ITINERARY
|
|
40116
40544
|
)
|
|
40117
40545
|
),
|
|
40118
|
-
|
|
40119
|
-
|
|
40546
|
+
sortByTypes &&
|
|
40547
|
+
sortByTypes.length > 0 &&
|
|
40120
40548
|
React__default.createElement(ItemPicker, {
|
|
40121
|
-
items:
|
|
40549
|
+
items: sortByTypes,
|
|
40122
40550
|
selection: sortKey || undefined,
|
|
40123
40551
|
label: translations.SRP.SORTBY,
|
|
40124
40552
|
placeholder: translations.SRP.SORTBY,
|
|
@@ -40142,13 +40570,13 @@ var SearchResultsContainer = function () {
|
|
|
40142
40570
|
)
|
|
40143
40571
|
),
|
|
40144
40572
|
!isMobile &&
|
|
40145
|
-
|
|
40146
|
-
|
|
40573
|
+
sortByTypes &&
|
|
40574
|
+
sortByTypes.length > 0 &&
|
|
40147
40575
|
React__default.createElement(
|
|
40148
40576
|
'div',
|
|
40149
40577
|
{ className: 'search__result-row-filter' },
|
|
40150
40578
|
React__default.createElement(ItemPicker, {
|
|
40151
|
-
items:
|
|
40579
|
+
items: sortByTypes,
|
|
40152
40580
|
selection: sortKey || undefined,
|
|
40153
40581
|
label: translations.SRP.SORTBY,
|
|
40154
40582
|
placeholder: translations.SRP.SORTBY,
|