@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-cjs/index.js
CHANGED
|
@@ -32217,49 +32217,48 @@ var QSMContainer = function () {
|
|
|
32217
32217
|
React__default['default'].createElement(
|
|
32218
32218
|
'div',
|
|
32219
32219
|
{ className: 'qsm__filter' },
|
|
32220
|
-
qsmType === 'hotel' ||
|
|
32221
|
-
|
|
32220
|
+
(qsmType === 'hotel' || qsmType === 'hotel-flight') &&
|
|
32221
|
+
React__default['default'].createElement(
|
|
32222
|
+
'div',
|
|
32223
|
+
{ className: 'radiobutton-group qsm__filter__inputgroup' },
|
|
32222
32224
|
React__default['default'].createElement(
|
|
32223
32225
|
'div',
|
|
32224
|
-
{ className: 'radiobutton
|
|
32226
|
+
{ className: 'radiobutton' },
|
|
32225
32227
|
React__default['default'].createElement(
|
|
32226
|
-
'
|
|
32227
|
-
{ className: '
|
|
32228
|
-
React__default['default'].createElement(
|
|
32229
|
-
'
|
|
32230
|
-
|
|
32231
|
-
|
|
32232
|
-
|
|
32233
|
-
|
|
32234
|
-
|
|
32235
|
-
|
|
32236
|
-
|
|
32237
|
-
|
|
32238
|
-
|
|
32239
|
-
|
|
32240
|
-
|
|
32241
|
-
|
|
32242
|
-
|
|
32243
|
-
|
|
32228
|
+
'label',
|
|
32229
|
+
{ className: 'radiobutton__label' },
|
|
32230
|
+
React__default['default'].createElement('input', {
|
|
32231
|
+
type: 'radio',
|
|
32232
|
+
name: 'numberOfAccommodations',
|
|
32233
|
+
// onChange={handleMainBookerChange}
|
|
32234
|
+
// onBlur={formik.handleBlur}
|
|
32235
|
+
value: '',
|
|
32236
|
+
checked: true,
|
|
32237
|
+
readOnly: true,
|
|
32238
|
+
className: 'radiobutton__input'
|
|
32239
|
+
}),
|
|
32240
|
+
React__default['default'].createElement('span', null, translations.QSM.ONE_ACCOMMODATION)
|
|
32241
|
+
)
|
|
32242
|
+
),
|
|
32243
|
+
React__default['default'].createElement(
|
|
32244
|
+
'div',
|
|
32245
|
+
{ className: 'radiobutton' },
|
|
32244
32246
|
React__default['default'].createElement(
|
|
32245
|
-
'
|
|
32246
|
-
{ className: '
|
|
32247
|
-
React__default['default'].createElement(
|
|
32248
|
-
'
|
|
32249
|
-
|
|
32250
|
-
|
|
32251
|
-
|
|
32252
|
-
|
|
32253
|
-
|
|
32254
|
-
|
|
32255
|
-
|
|
32256
|
-
|
|
32257
|
-
disabled: true
|
|
32258
|
-
}),
|
|
32259
|
-
React__default['default'].createElement('span', null, translations.QSM.MULTIPLE_ACCOMMODATIONS)
|
|
32260
|
-
)
|
|
32247
|
+
'label',
|
|
32248
|
+
{ className: 'radiobutton__label' },
|
|
32249
|
+
React__default['default'].createElement('input', {
|
|
32250
|
+
type: 'radio',
|
|
32251
|
+
name: 'numberOfAccommodations',
|
|
32252
|
+
// onChange={handleMainBookerChange}
|
|
32253
|
+
// onBlur={formik.handleBlur}
|
|
32254
|
+
value: '',
|
|
32255
|
+
className: 'radiobutton__input',
|
|
32256
|
+
disabled: true
|
|
32257
|
+
}),
|
|
32258
|
+
React__default['default'].createElement('span', null, translations.QSM.MULTIPLE_ACCOMMODATIONS)
|
|
32261
32259
|
)
|
|
32262
|
-
)
|
|
32260
|
+
)
|
|
32261
|
+
),
|
|
32263
32262
|
qsmType === 'flight' &&
|
|
32264
32263
|
React__default['default'].createElement(
|
|
32265
32264
|
'div',
|
|
@@ -32500,9 +32499,9 @@ var setResults = ((_a = searchResultsSlice.actions), _a.setResults),
|
|
|
32500
32499
|
setBookingPackageDetails = _a.setBookingPackageDetails,
|
|
32501
32500
|
setEntry = _a.setEntry,
|
|
32502
32501
|
selectFlight = _a.selectFlight,
|
|
32503
|
-
setIsLoading = _a.setIsLoading
|
|
32504
|
-
_a.setFilters
|
|
32505
|
-
|
|
32502
|
+
setIsLoading = _a.setIsLoading,
|
|
32503
|
+
setFilters = _a.setFilters,
|
|
32504
|
+
resetFilters = _a.resetFilters,
|
|
32506
32505
|
setSortKey = _a.setSortKey,
|
|
32507
32506
|
setActiveTab = _a.setActiveTab;
|
|
32508
32507
|
_a.setCurrentPage;
|
|
@@ -39848,6 +39847,433 @@ var FlightResultsContainer = function (_a) {
|
|
|
39848
39847
|
);
|
|
39849
39848
|
};
|
|
39850
39849
|
|
|
39850
|
+
var initialFilters = [
|
|
39851
|
+
{
|
|
39852
|
+
property: 'regime',
|
|
39853
|
+
label: 'Regime',
|
|
39854
|
+
type: 'checkbox',
|
|
39855
|
+
options: [
|
|
39856
|
+
{
|
|
39857
|
+
label: 'Room only',
|
|
39858
|
+
value: ['RO', 'LO', 'OB'],
|
|
39859
|
+
isChecked: false
|
|
39860
|
+
},
|
|
39861
|
+
{
|
|
39862
|
+
label: 'Bed & Beakfast',
|
|
39863
|
+
value: ['BB', 'KO'],
|
|
39864
|
+
isChecked: false
|
|
39865
|
+
},
|
|
39866
|
+
{
|
|
39867
|
+
label: 'Half board',
|
|
39868
|
+
value: ['HB'],
|
|
39869
|
+
isChecked: false
|
|
39870
|
+
},
|
|
39871
|
+
{
|
|
39872
|
+
label: 'Full board',
|
|
39873
|
+
value: ['FB'],
|
|
39874
|
+
isChecked: false
|
|
39875
|
+
}
|
|
39876
|
+
],
|
|
39877
|
+
isFrontendFilter: false
|
|
39878
|
+
},
|
|
39879
|
+
{
|
|
39880
|
+
property: 'price',
|
|
39881
|
+
label: 'Prijs',
|
|
39882
|
+
type: 'slider',
|
|
39883
|
+
isFrontendFilter: false,
|
|
39884
|
+
min: 2244,
|
|
39885
|
+
max: 6785
|
|
39886
|
+
},
|
|
39887
|
+
{
|
|
39888
|
+
property: 'rating',
|
|
39889
|
+
label: 'Rating',
|
|
39890
|
+
type: 'star-rating',
|
|
39891
|
+
isFrontendFilter: true
|
|
39892
|
+
},
|
|
39893
|
+
{
|
|
39894
|
+
property: 'theme',
|
|
39895
|
+
label: "Thema's",
|
|
39896
|
+
type: 'toggle',
|
|
39897
|
+
options: [
|
|
39898
|
+
{
|
|
39899
|
+
label: 'Adults',
|
|
39900
|
+
value: 1,
|
|
39901
|
+
isChecked: false
|
|
39902
|
+
},
|
|
39903
|
+
{
|
|
39904
|
+
label: 'Luxury',
|
|
39905
|
+
value: 2,
|
|
39906
|
+
isChecked: false
|
|
39907
|
+
},
|
|
39908
|
+
{
|
|
39909
|
+
label: 'Welness & Spa',
|
|
39910
|
+
value: 3,
|
|
39911
|
+
isChecked: false
|
|
39912
|
+
},
|
|
39913
|
+
{
|
|
39914
|
+
label: 'familie',
|
|
39915
|
+
value: 4,
|
|
39916
|
+
isChecked: false
|
|
39917
|
+
}
|
|
39918
|
+
],
|
|
39919
|
+
isFrontendFilter: false
|
|
39920
|
+
}
|
|
39921
|
+
];
|
|
39922
|
+
var Filters = function (_a) {
|
|
39923
|
+
var _b;
|
|
39924
|
+
var filters = _a.filters,
|
|
39925
|
+
isOpen = _a.isOpen,
|
|
39926
|
+
handleSetIsOpen = _a.handleSetIsOpen,
|
|
39927
|
+
handleApplyFilters = _a.handleApplyFilters,
|
|
39928
|
+
isLoading = _a.isLoading;
|
|
39929
|
+
var context = React.useContext(SearchResultsConfigurationContext);
|
|
39930
|
+
var translations = getTranslations((_b = context === null || context === void 0 ? void 0 : context.languageCode) !== null && _b !== void 0 ? _b : 'en-GB');
|
|
39931
|
+
var _c = React.useState({}),
|
|
39932
|
+
visibleFilters = _c[0],
|
|
39933
|
+
setVisibleFilters = _c[1];
|
|
39934
|
+
var _d = React.useState([]),
|
|
39935
|
+
pendingFilters = _d[0],
|
|
39936
|
+
setPendingFilters = _d[1];
|
|
39937
|
+
React.useEffect(
|
|
39938
|
+
function () {
|
|
39939
|
+
if (initialFilters.length > 0) {
|
|
39940
|
+
setPendingFilters(initialFilters);
|
|
39941
|
+
}
|
|
39942
|
+
},
|
|
39943
|
+
[initialFilters]
|
|
39944
|
+
);
|
|
39945
|
+
var dispatch = reactRedux.useDispatch();
|
|
39946
|
+
var toggleFilterVisibility = function (filterId) {
|
|
39947
|
+
setVisibleFilters(function (prev) {
|
|
39948
|
+
var _a;
|
|
39949
|
+
return __assign(__assign({}, prev), ((_a = {}), (_a[filterId] = !prev[filterId]), _a));
|
|
39950
|
+
});
|
|
39951
|
+
};
|
|
39952
|
+
var updatePendingFilter = function (updatedFilter) {
|
|
39953
|
+
setPendingFilters(function (prevFilters) {
|
|
39954
|
+
var index = prevFilters.findIndex(function (f) {
|
|
39955
|
+
return f.property === updatedFilter.property;
|
|
39956
|
+
});
|
|
39957
|
+
if (index !== -1) {
|
|
39958
|
+
var newFilters = __spreadArray([], prevFilters, true);
|
|
39959
|
+
newFilters[index] = updatedFilter;
|
|
39960
|
+
return newFilters;
|
|
39961
|
+
} else {
|
|
39962
|
+
return __spreadArray(__spreadArray([], prevFilters, true), [updatedFilter], false);
|
|
39963
|
+
}
|
|
39964
|
+
});
|
|
39965
|
+
};
|
|
39966
|
+
var handleCheckBoxFilter = function (filter, option) {
|
|
39967
|
+
setPendingFilters(function (prev) {
|
|
39968
|
+
var _a;
|
|
39969
|
+
var updated = prev.map(function (f) {
|
|
39970
|
+
var _a;
|
|
39971
|
+
if (f.property !== filter.property) {
|
|
39972
|
+
return f;
|
|
39973
|
+
}
|
|
39974
|
+
return __assign(__assign({}, f), {
|
|
39975
|
+
options:
|
|
39976
|
+
(_a = f.options) === null || _a === void 0
|
|
39977
|
+
? void 0
|
|
39978
|
+
: _a.map(function (opt) {
|
|
39979
|
+
return opt.value === option.value ? __assign(__assign({}, opt), { isChecked: !opt.isChecked }) : opt;
|
|
39980
|
+
})
|
|
39981
|
+
});
|
|
39982
|
+
});
|
|
39983
|
+
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
39984
|
+
dispatch(setFilters(updated));
|
|
39985
|
+
(_a = context === null || context === void 0 ? void 0 : context.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(context, updated);
|
|
39986
|
+
}
|
|
39987
|
+
return updated;
|
|
39988
|
+
});
|
|
39989
|
+
};
|
|
39990
|
+
var handleSliderMinChange = function (filter, value) {
|
|
39991
|
+
var _a, _b;
|
|
39992
|
+
if (value < ((_b = (_a = filter.selectedMax) !== null && _a !== void 0 ? _a : filter.max) !== null && _b !== void 0 ? _b : 100)) {
|
|
39993
|
+
var updatedFilter = __assign(__assign({}, filter), { selectedMin: value });
|
|
39994
|
+
updatePendingFilter(updatedFilter);
|
|
39995
|
+
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
39996
|
+
applyFilters();
|
|
39997
|
+
}
|
|
39998
|
+
}
|
|
39999
|
+
};
|
|
40000
|
+
var handleSliderMaxChange = function (filter, value) {
|
|
40001
|
+
var _a, _b;
|
|
40002
|
+
if (value > ((_b = (_a = filter.selectedMin) !== null && _a !== void 0 ? _a : filter.min) !== null && _b !== void 0 ? _b : 0)) {
|
|
40003
|
+
var updatedFilter = __assign(__assign({}, filter), { selectedMax: value });
|
|
40004
|
+
updatePendingFilter(updatedFilter);
|
|
40005
|
+
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
40006
|
+
applyFilters();
|
|
40007
|
+
}
|
|
40008
|
+
}
|
|
40009
|
+
};
|
|
40010
|
+
var applyFilters = function () {
|
|
40011
|
+
var _a;
|
|
40012
|
+
dispatch(setFilters(pendingFilters));
|
|
40013
|
+
(_a = context === null || context === void 0 ? void 0 : context.onFilterChange) === null || _a === void 0 ? void 0 : _a.call(context, pendingFilters);
|
|
40014
|
+
handleApplyFilters();
|
|
40015
|
+
if (isOpen) {
|
|
40016
|
+
handleSetIsOpen();
|
|
40017
|
+
}
|
|
40018
|
+
};
|
|
40019
|
+
var handleFullReset = function () {
|
|
40020
|
+
if (!isLoading) {
|
|
40021
|
+
setPendingFilters(initialFilters);
|
|
40022
|
+
dispatch(resetFilters(initialFilters));
|
|
40023
|
+
}
|
|
40024
|
+
};
|
|
40025
|
+
var handleResetPendingChanges = function () {
|
|
40026
|
+
setPendingFilters(filters); // ← back to last applied
|
|
40027
|
+
};
|
|
40028
|
+
var hasPendingChanges = function () {
|
|
40029
|
+
return JSON.stringify(pendingFilters) !== JSON.stringify(filters);
|
|
40030
|
+
};
|
|
40031
|
+
if (!context || !context.showFilters) {
|
|
40032
|
+
return null;
|
|
40033
|
+
}
|
|
40034
|
+
return React__default['default'].createElement(
|
|
40035
|
+
React__default['default'].Fragment,
|
|
40036
|
+
null,
|
|
40037
|
+
React__default['default'].createElement(
|
|
40038
|
+
'div',
|
|
40039
|
+
{ className: 'search__filters--modal '.concat(isOpen ? 'is-open' : '') },
|
|
40040
|
+
React__default['default'].createElement('div', {
|
|
40041
|
+
className: 'search__filters--background',
|
|
40042
|
+
onClick: function () {
|
|
40043
|
+
return handleSetIsOpen();
|
|
40044
|
+
}
|
|
40045
|
+
}),
|
|
40046
|
+
React__default['default'].createElement(
|
|
40047
|
+
'button',
|
|
40048
|
+
{
|
|
40049
|
+
className: 'search__filters--close',
|
|
40050
|
+
onClick: function () {
|
|
40051
|
+
return handleSetIsOpen();
|
|
40052
|
+
}
|
|
40053
|
+
},
|
|
40054
|
+
React__default['default'].createElement(Icon$1, { name: 'ui-close', height: 24 })
|
|
40055
|
+
),
|
|
40056
|
+
React__default['default'].createElement(
|
|
40057
|
+
'div',
|
|
40058
|
+
{ className: 'search__filters' },
|
|
40059
|
+
React__default['default'].createElement(
|
|
40060
|
+
'div',
|
|
40061
|
+
{ className: 'search__filter-row search__filter__header' },
|
|
40062
|
+
React__default['default'].createElement(
|
|
40063
|
+
'div',
|
|
40064
|
+
{ className: 'search__filter-row-flex-title' },
|
|
40065
|
+
React__default['default'].createElement('p', { className: 'search__filter-small-title' }, translations.SRP.FILTERS)
|
|
40066
|
+
),
|
|
40067
|
+
!isLoading &&
|
|
40068
|
+
React__default['default'].createElement(
|
|
40069
|
+
'a',
|
|
40070
|
+
{
|
|
40071
|
+
className: 'search__filter-reset',
|
|
40072
|
+
onClick: function () {
|
|
40073
|
+
return handleFullReset();
|
|
40074
|
+
}
|
|
40075
|
+
},
|
|
40076
|
+
translations.SRP.RESET
|
|
40077
|
+
)
|
|
40078
|
+
),
|
|
40079
|
+
isLoading
|
|
40080
|
+
? React__default['default'].createElement(Spinner, null)
|
|
40081
|
+
: React__default['default'].createElement(
|
|
40082
|
+
React__default['default'].Fragment,
|
|
40083
|
+
null,
|
|
40084
|
+
React__default['default'].createElement(
|
|
40085
|
+
'div',
|
|
40086
|
+
{ className: 'search__filters__group-container' },
|
|
40087
|
+
pendingFilters.map(function (filter, index) {
|
|
40088
|
+
var _a, _b;
|
|
40089
|
+
var isVisible = (_a = visibleFilters[filter.property]) !== null && _a !== void 0 ? _a : true;
|
|
40090
|
+
return React__default['default'].createElement(
|
|
40091
|
+
'div',
|
|
40092
|
+
{ key: ''.concat(filter.property, '-').concat(index), className: 'search__filter-group' },
|
|
40093
|
+
React__default['default'].createElement(
|
|
40094
|
+
'div',
|
|
40095
|
+
{
|
|
40096
|
+
className: 'search__filter-row search__filter-row--underline',
|
|
40097
|
+
onClick: function () {
|
|
40098
|
+
return toggleFilterVisibility(filter.property);
|
|
40099
|
+
},
|
|
40100
|
+
role: 'button',
|
|
40101
|
+
tabIndex: 0
|
|
40102
|
+
},
|
|
40103
|
+
React__default['default'].createElement('h6', { className: 'search__filter-large-title' }, filter.label),
|
|
40104
|
+
React__default['default'].createElement(
|
|
40105
|
+
'svg',
|
|
40106
|
+
{
|
|
40107
|
+
id: 'search-chevron-up-icon',
|
|
40108
|
+
className: 'search__filter-chevron-icon '.concat(isVisible ? 'search__filter-chevron-icon--flipped' : '', ' '),
|
|
40109
|
+
viewBox: '0 0 10 6.063',
|
|
40110
|
+
width: 10,
|
|
40111
|
+
height: 6.063
|
|
40112
|
+
},
|
|
40113
|
+
React__default['default'].createElement('path', {
|
|
40114
|
+
id: 'Path_62',
|
|
40115
|
+
'data-name': 'Path 62',
|
|
40116
|
+
d: 'M245-617.937l-5-5L241.063-624,245-620.062,248.938-624,250-622.937Z',
|
|
40117
|
+
transform: 'translate(-240 624)',
|
|
40118
|
+
fill: '#707070'
|
|
40119
|
+
})
|
|
40120
|
+
)
|
|
40121
|
+
),
|
|
40122
|
+
isVisible &&
|
|
40123
|
+
filter.type === 'checkbox' &&
|
|
40124
|
+
React__default['default'].createElement(
|
|
40125
|
+
'div',
|
|
40126
|
+
{ className: 'search__filter-rows' },
|
|
40127
|
+
filter.options &&
|
|
40128
|
+
filter.options.map(function (option, optionIndex) {
|
|
40129
|
+
return React__default['default'].createElement(
|
|
40130
|
+
'div',
|
|
40131
|
+
{ className: 'search__filter-row search__filter-row--checkbox', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
40132
|
+
React__default['default'].createElement(
|
|
40133
|
+
'div',
|
|
40134
|
+
{ className: 'checkbox' },
|
|
40135
|
+
React__default['default'].createElement(
|
|
40136
|
+
'label',
|
|
40137
|
+
{ className: 'checkbox__label' },
|
|
40138
|
+
React__default['default'].createElement('input', {
|
|
40139
|
+
type: 'checkbox',
|
|
40140
|
+
className: 'checkbox__input checkbox__input--parent',
|
|
40141
|
+
checked: option.isChecked,
|
|
40142
|
+
onChange: function (e) {
|
|
40143
|
+
return handleCheckBoxFilter(filter, option);
|
|
40144
|
+
}
|
|
40145
|
+
}),
|
|
40146
|
+
React__default['default'].createElement('span', { className: 'radiobutton__label-text' }, option.label)
|
|
40147
|
+
)
|
|
40148
|
+
)
|
|
40149
|
+
);
|
|
40150
|
+
})
|
|
40151
|
+
),
|
|
40152
|
+
isVisible &&
|
|
40153
|
+
filter.type === 'toggle' &&
|
|
40154
|
+
React__default['default'].createElement(
|
|
40155
|
+
'div',
|
|
40156
|
+
{ className: 'search__filter-rows' },
|
|
40157
|
+
(_b = filter.options) === null || _b === void 0
|
|
40158
|
+
? void 0
|
|
40159
|
+
: _b.map(function (option, optionIndex) {
|
|
40160
|
+
return React__default['default'].createElement(
|
|
40161
|
+
'div',
|
|
40162
|
+
{ className: 'search__filter-row', key: ''.concat(option.label, '-').concat(optionIndex) },
|
|
40163
|
+
React__default['default'].createElement('span', { className: 'search__filter-toggle-label' }, option.label),
|
|
40164
|
+
React__default['default'].createElement('div', { className: 'checkbox' }),
|
|
40165
|
+
React__default['default'].createElement(
|
|
40166
|
+
'label',
|
|
40167
|
+
{ className: 'checkbox__label' },
|
|
40168
|
+
React__default['default'].createElement('input', {
|
|
40169
|
+
type: 'checkbox',
|
|
40170
|
+
className: 'checkbox__input',
|
|
40171
|
+
checked: option.isChecked,
|
|
40172
|
+
onChange: function () {
|
|
40173
|
+
return handleCheckBoxFilter(filter, option);
|
|
40174
|
+
}
|
|
40175
|
+
})
|
|
40176
|
+
)
|
|
40177
|
+
);
|
|
40178
|
+
})
|
|
40179
|
+
),
|
|
40180
|
+
isVisible &&
|
|
40181
|
+
filter &&
|
|
40182
|
+
filter.type === 'slider' &&
|
|
40183
|
+
(function () {
|
|
40184
|
+
var _a, _b, _c, _d;
|
|
40185
|
+
var min = (_a = filter.min) !== null && _a !== void 0 ? _a : 0;
|
|
40186
|
+
var max = (_b = filter.max) !== null && _b !== void 0 ? _b : 100;
|
|
40187
|
+
var selectedMin = (_c = filter.selectedMin) !== null && _c !== void 0 ? _c : min;
|
|
40188
|
+
var selectedMax = (_d = filter.selectedMax) !== null && _d !== void 0 ? _d : max;
|
|
40189
|
+
return React__default['default'].createElement(MultiRangeFilter, {
|
|
40190
|
+
min: min,
|
|
40191
|
+
max: max,
|
|
40192
|
+
selectedMin: selectedMin,
|
|
40193
|
+
selectedMax: selectedMax,
|
|
40194
|
+
valueFormatter: function (value) {
|
|
40195
|
+
return ''.concat(value);
|
|
40196
|
+
},
|
|
40197
|
+
onChange: function (newMin, newMax) {
|
|
40198
|
+
handleSliderMinChange(filter, newMin);
|
|
40199
|
+
handleSliderMaxChange(filter, newMax);
|
|
40200
|
+
}
|
|
40201
|
+
});
|
|
40202
|
+
})(),
|
|
40203
|
+
isVisible &&
|
|
40204
|
+
filter.property === 'rating' &&
|
|
40205
|
+
filter.type === 'star-rating' &&
|
|
40206
|
+
(function () {
|
|
40207
|
+
var _a;
|
|
40208
|
+
var selectedRating = (_a = filter.selectedRating) !== null && _a !== void 0 ? _a : 0;
|
|
40209
|
+
var handleRatingChange = function (rating) {
|
|
40210
|
+
var updatedFilter = __assign(__assign({}, filter), { selectedRating: rating });
|
|
40211
|
+
updatePendingFilter(updatedFilter);
|
|
40212
|
+
if (!(context === null || context === void 0 ? void 0 : context.useGlobalApplyFilterButton) && !filter.useApplyFilterButton) {
|
|
40213
|
+
applyFilters();
|
|
40214
|
+
}
|
|
40215
|
+
};
|
|
40216
|
+
return React__default['default'].createElement(
|
|
40217
|
+
'div',
|
|
40218
|
+
{ className: 'search__filter-row star-rating-filter' },
|
|
40219
|
+
[5, 4, 3, 2, 1].map(function (star) {
|
|
40220
|
+
return React__default['default'].createElement(
|
|
40221
|
+
'span',
|
|
40222
|
+
{
|
|
40223
|
+
key: star,
|
|
40224
|
+
className: 'star '.concat(star <= selectedRating ? 'filled' : ''),
|
|
40225
|
+
onClick: function () {
|
|
40226
|
+
return handleRatingChange(star);
|
|
40227
|
+
},
|
|
40228
|
+
role: 'button',
|
|
40229
|
+
tabIndex: 0,
|
|
40230
|
+
onKeyDown: function (e) {
|
|
40231
|
+
if (e.key === 'Enter' || e.key === ' ') handleRatingChange(star);
|
|
40232
|
+
}
|
|
40233
|
+
},
|
|
40234
|
+
'\u2605'
|
|
40235
|
+
);
|
|
40236
|
+
})
|
|
40237
|
+
);
|
|
40238
|
+
})()
|
|
40239
|
+
);
|
|
40240
|
+
}),
|
|
40241
|
+
context.useGlobalApplyFilterButton &&
|
|
40242
|
+
hasPendingChanges() &&
|
|
40243
|
+
React__default['default'].createElement(
|
|
40244
|
+
'div',
|
|
40245
|
+
{ className: 'search__filters__actions' },
|
|
40246
|
+
React__default['default'].createElement(
|
|
40247
|
+
'button',
|
|
40248
|
+
{
|
|
40249
|
+
className: 'cta--secondary ',
|
|
40250
|
+
onClick: function () {
|
|
40251
|
+
handleResetPendingChanges();
|
|
40252
|
+
handleSetIsOpen();
|
|
40253
|
+
},
|
|
40254
|
+
disabled: isLoading
|
|
40255
|
+
},
|
|
40256
|
+
translations.SRP.CANCEL
|
|
40257
|
+
),
|
|
40258
|
+
React__default['default'].createElement(
|
|
40259
|
+
'button',
|
|
40260
|
+
{
|
|
40261
|
+
className: 'cta',
|
|
40262
|
+
onClick: function () {
|
|
40263
|
+
return applyFilters();
|
|
40264
|
+
},
|
|
40265
|
+
disabled: isLoading
|
|
40266
|
+
},
|
|
40267
|
+
translations.SRP.APPLY
|
|
40268
|
+
)
|
|
40269
|
+
)
|
|
40270
|
+
)
|
|
40271
|
+
)
|
|
40272
|
+
)
|
|
40273
|
+
)
|
|
40274
|
+
);
|
|
40275
|
+
};
|
|
40276
|
+
|
|
39851
40277
|
var SearchResultsContainer = function () {
|
|
39852
40278
|
var _a;
|
|
39853
40279
|
var dispatch = reactRedux.useDispatch();
|
|
@@ -39866,8 +40292,8 @@ var SearchResultsContainer = function () {
|
|
|
39866
40292
|
flyInIsOpen = _b.flyInIsOpen;
|
|
39867
40293
|
var isMobile = useMediaQuery('(max-width: 1200px)');
|
|
39868
40294
|
var _c = React.useState(0),
|
|
39869
|
-
searchTrigger = _c[0]
|
|
39870
|
-
|
|
40295
|
+
searchTrigger = _c[0],
|
|
40296
|
+
setSearchTrigger = _c[1];
|
|
39871
40297
|
var _d = React.useState(false),
|
|
39872
40298
|
initialFiltersSet = _d[0],
|
|
39873
40299
|
setInitialFiltersSet = _d[1];
|
|
@@ -39881,10 +40307,11 @@ var SearchResultsContainer = function () {
|
|
|
39881
40307
|
itineraryOpen = _g[0],
|
|
39882
40308
|
setItineraryOpen = _g[1];
|
|
39883
40309
|
var panelRef = React.useRef(null);
|
|
39884
|
-
var
|
|
39885
|
-
{
|
|
39886
|
-
{
|
|
39887
|
-
{
|
|
40310
|
+
var sortByTypes = [
|
|
40311
|
+
{ direction: 'asc', label: 'price' },
|
|
40312
|
+
{ direction: 'desc', label: 'price' },
|
|
40313
|
+
{ direction: 'asc', label: 'departure' },
|
|
40314
|
+
{ direction: 'desc', label: 'departure' }
|
|
39888
40315
|
];
|
|
39889
40316
|
var handleFlyInToggle = function (isOpen) {
|
|
39890
40317
|
dispatch(setFlyInIsOpen(isOpen));
|
|
@@ -39972,7 +40399,7 @@ var SearchResultsContainer = function () {
|
|
|
39972
40399
|
return searchRequest;
|
|
39973
40400
|
};
|
|
39974
40401
|
var buildSearchFromQueryParams = function (params) {
|
|
39975
|
-
var _a
|
|
40402
|
+
var _a;
|
|
39976
40403
|
var from = getDateFromParams(params, 'fromDate');
|
|
39977
40404
|
var to = getDateFromParams(params, 'toDate');
|
|
39978
40405
|
var rooms = getRoomsFromParams(params, 'rooms');
|
|
@@ -39984,11 +40411,8 @@ var SearchResultsContainer = function () {
|
|
|
39984
40411
|
var tagId = getNumberFromParams(params, 'tagId');
|
|
39985
40412
|
// temp hardcoded params
|
|
39986
40413
|
if (!from || !to) {
|
|
39987
|
-
|
|
39988
|
-
|
|
39989
|
-
}
|
|
39990
|
-
if (!country && !region && !oord && !city) {
|
|
39991
|
-
region = 1;
|
|
40414
|
+
console.error('Missing fromDate or toDate in query params, using default values');
|
|
40415
|
+
return null;
|
|
39992
40416
|
}
|
|
39993
40417
|
if (typeof window !== 'undefined') {
|
|
39994
40418
|
window.scrollTo(0, 0);
|
|
@@ -40029,34 +40453,14 @@ var SearchResultsContainer = function () {
|
|
|
40029
40453
|
toDate: to,
|
|
40030
40454
|
earliestFromOffset: 0,
|
|
40031
40455
|
latestToOffset: 0,
|
|
40032
|
-
includeFlights: true,
|
|
40033
|
-
regimeCodes:
|
|
40034
|
-
|
|
40035
|
-
|
|
40036
|
-
|
|
40037
|
-
|
|
40038
|
-
|
|
40039
|
-
|
|
40040
|
-
? void 0
|
|
40041
|
-
: _c
|
|
40042
|
-
.filter(function (o) {
|
|
40043
|
-
return o.isChecked;
|
|
40044
|
-
})
|
|
40045
|
-
.flatMap(function (o) {
|
|
40046
|
-
return o.value.toString();
|
|
40047
|
-
})) || [],
|
|
40048
|
-
minPrice:
|
|
40049
|
-
(_d = filters.find(function (f) {
|
|
40050
|
-
return f.property === 'price';
|
|
40051
|
-
})) === null || _d === void 0
|
|
40052
|
-
? void 0
|
|
40053
|
-
: _d.selectedMin,
|
|
40054
|
-
maxPrice:
|
|
40055
|
-
(_e = filters.find(function (f) {
|
|
40056
|
-
return f.property === 'price';
|
|
40057
|
-
})) === null || _e === void 0
|
|
40058
|
-
? void 0
|
|
40059
|
-
: _e.selectedMax,
|
|
40456
|
+
includeFlights: context.type === 'hotel-flight' ? true : false,
|
|
40457
|
+
// regimeCodes:
|
|
40458
|
+
// filters
|
|
40459
|
+
// .find((f) => f.property === 'regime')
|
|
40460
|
+
// ?.options?.filter((o) => o.isChecked)
|
|
40461
|
+
// .flatMap((o) => o.value.toString()) || [],
|
|
40462
|
+
// minPrice: filters.find((f) => f.property === 'price')?.selectedMin,
|
|
40463
|
+
// maxPrice: filters.find((f) => f.property === 'price')?.selectedMax,
|
|
40060
40464
|
useExactDates: true,
|
|
40061
40465
|
onlyCachedResults: false,
|
|
40062
40466
|
includeAllAllotments: true,
|
|
@@ -40133,9 +40537,9 @@ var SearchResultsContainer = function () {
|
|
|
40133
40537
|
// seperate Search
|
|
40134
40538
|
React.useEffect(
|
|
40135
40539
|
function () {
|
|
40136
|
-
var
|
|
40540
|
+
var runHotelSearch = function () {
|
|
40137
40541
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
40138
|
-
var config, params, entryId, entryLight, searchRequest, packageSearchResults, enrichedFilters, matching, err_1;
|
|
40542
|
+
var config, params, entryId, entryLight, searchRequest, rq, packageSearchResults, enrichedFilters, matching, err_1;
|
|
40139
40543
|
var _a;
|
|
40140
40544
|
return __generator(this, function (_b) {
|
|
40141
40545
|
switch (_b.label) {
|
|
@@ -40164,7 +40568,11 @@ var SearchResultsContainer = function () {
|
|
|
40164
40568
|
searchRequest = buildSearchFromEntry(entryLight);
|
|
40165
40569
|
return [3 /*break*/, 4];
|
|
40166
40570
|
case 3:
|
|
40167
|
-
|
|
40571
|
+
rq = buildSearchFromQueryParams(params);
|
|
40572
|
+
if (!rq) {
|
|
40573
|
+
throw new Error('Invalid search parameters');
|
|
40574
|
+
}
|
|
40575
|
+
searchRequest = rq;
|
|
40168
40576
|
_b.label = 4;
|
|
40169
40577
|
case 4:
|
|
40170
40578
|
return [4 /*yield*/, build.search(config, searchRequest)];
|
|
@@ -40204,8 +40612,11 @@ var SearchResultsContainer = function () {
|
|
|
40204
40612
|
});
|
|
40205
40613
|
};
|
|
40206
40614
|
if (!(context === null || context === void 0 ? void 0 : context.showMockup)) {
|
|
40207
|
-
if (
|
|
40208
|
-
|
|
40615
|
+
if (
|
|
40616
|
+
(context === null || context === void 0 ? void 0 : context.type) === 'hotel-flight' ||
|
|
40617
|
+
(context === null || context === void 0 ? void 0 : context.type) === 'hotel'
|
|
40618
|
+
) {
|
|
40619
|
+
runHotelSearch();
|
|
40209
40620
|
}
|
|
40210
40621
|
}
|
|
40211
40622
|
},
|
|
@@ -40254,7 +40665,7 @@ var SearchResultsContainer = function () {
|
|
|
40254
40665
|
productCode: selectedItem.code,
|
|
40255
40666
|
fromDate: selectedItem.fromDate,
|
|
40256
40667
|
toDate: selectedItem.toDate,
|
|
40257
|
-
includeFlights: true,
|
|
40668
|
+
includeFlights: context.type === 'hotel-flight' ? true : false,
|
|
40258
40669
|
includeHotels: true,
|
|
40259
40670
|
includePaxTypes: true,
|
|
40260
40671
|
checkExternalAvailability: true,
|
|
@@ -40334,17 +40745,33 @@ var SearchResultsContainer = function () {
|
|
|
40334
40745
|
}
|
|
40335
40746
|
})
|
|
40336
40747
|
),
|
|
40337
|
-
context.type === 'hotel-flight' &&
|
|
40748
|
+
(context.type === 'hotel-flight' || context.type === 'hotel' || context.type === 'roundTrip') &&
|
|
40338
40749
|
React__default['default'].createElement(
|
|
40339
40750
|
React__default['default'].Fragment,
|
|
40340
40751
|
null,
|
|
40341
|
-
|
|
40342
|
-
|
|
40343
|
-
|
|
40344
|
-
|
|
40345
|
-
|
|
40346
|
-
|
|
40347
|
-
|
|
40752
|
+
context.type != 'hotel-flight' &&
|
|
40753
|
+
context.showFilters &&
|
|
40754
|
+
React__default['default'].createElement(Filters, {
|
|
40755
|
+
filters: filters,
|
|
40756
|
+
isOpen: filtersOpen,
|
|
40757
|
+
handleSetIsOpen: function () {
|
|
40758
|
+
return setFiltersOpen(!filtersOpen);
|
|
40759
|
+
},
|
|
40760
|
+
handleApplyFilters: function () {
|
|
40761
|
+
return setSearchTrigger(function (prev) {
|
|
40762
|
+
return prev + 1;
|
|
40763
|
+
});
|
|
40764
|
+
},
|
|
40765
|
+
isLoading: isLoading
|
|
40766
|
+
}),
|
|
40767
|
+
context.type === 'hotel-flight' &&
|
|
40768
|
+
React__default['default'].createElement(Itinerary, {
|
|
40769
|
+
isOpen: itineraryOpen,
|
|
40770
|
+
handleSetIsOpen: function () {
|
|
40771
|
+
return setItineraryOpen(!itineraryOpen);
|
|
40772
|
+
},
|
|
40773
|
+
isLoading: isLoading
|
|
40774
|
+
}),
|
|
40348
40775
|
React__default['default'].createElement(
|
|
40349
40776
|
'div',
|
|
40350
40777
|
{ className: 'search__results' },
|
|
@@ -40355,7 +40782,8 @@ var SearchResultsContainer = function () {
|
|
|
40355
40782
|
React__default['default'].createElement(
|
|
40356
40783
|
'div',
|
|
40357
40784
|
{ className: 'search__results__actions' },
|
|
40358
|
-
context.
|
|
40785
|
+
context.type != 'hotel-flight' &&
|
|
40786
|
+
context.showFilters &&
|
|
40359
40787
|
React__default['default'].createElement(
|
|
40360
40788
|
'div',
|
|
40361
40789
|
{
|
|
@@ -40380,10 +40808,10 @@ var SearchResultsContainer = function () {
|
|
|
40380
40808
|
translations.SRP.SHOW_ITINERARY
|
|
40381
40809
|
)
|
|
40382
40810
|
),
|
|
40383
|
-
|
|
40384
|
-
|
|
40811
|
+
sortByTypes &&
|
|
40812
|
+
sortByTypes.length > 0 &&
|
|
40385
40813
|
React__default['default'].createElement(ItemPicker, {
|
|
40386
|
-
items:
|
|
40814
|
+
items: sortByTypes,
|
|
40387
40815
|
selection: sortKey || undefined,
|
|
40388
40816
|
label: translations.SRP.SORTBY,
|
|
40389
40817
|
placeholder: translations.SRP.SORTBY,
|
|
@@ -40407,13 +40835,13 @@ var SearchResultsContainer = function () {
|
|
|
40407
40835
|
)
|
|
40408
40836
|
),
|
|
40409
40837
|
!isMobile &&
|
|
40410
|
-
|
|
40411
|
-
|
|
40838
|
+
sortByTypes &&
|
|
40839
|
+
sortByTypes.length > 0 &&
|
|
40412
40840
|
React__default['default'].createElement(
|
|
40413
40841
|
'div',
|
|
40414
40842
|
{ className: 'search__result-row-filter' },
|
|
40415
40843
|
React__default['default'].createElement(ItemPicker, {
|
|
40416
|
-
items:
|
|
40844
|
+
items: sortByTypes,
|
|
40417
40845
|
selection: sortKey || undefined,
|
|
40418
40846
|
label: translations.SRP.SORTBY,
|
|
40419
40847
|
placeholder: translations.SRP.SORTBY,
|