@bonlineza/luxity-lib 2.36.1-uk-platform.1 → 2.36.2
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/Accordion.js +116 -76
- package/AddInterest.js +777 -440
- package/AddProductInterest.js +644 -485
- package/BrandSelector.js +336 -176
- package/Checkbox.js +101 -68
- package/CheckboxButton.js +124 -79
- package/CommunicationPreferenceOptionsRenderer.js +169 -159
- package/CommunicationPreferenceSection.js +178 -166
- package/CommunicationPreferences.js +427 -549
- package/ConditionSelector.js +336 -174
- package/CountryCodeSelect.js +10 -7
- package/CurrencyInputFormatter.js +56 -29
- package/CurrencySelect.js +49 -23
- package/DropdownSelector.js +92 -68
- package/GALink.js +16 -6
- package/GenderSelector.js +142 -88
- package/GraphQLDropdownSelector.js +1508 -929
- package/GraphQLMultiSelector.js +274 -141
- package/IconHeader.js +25 -11
- package/IconWrapper.js +7 -3
- package/InterestCatSelector.js +74 -34
- package/InterestItem.js +187 -103
- package/Interests.js +1463 -913
- package/InterestsSubheading.js +10 -5
- package/InvertedTextButton.js +63 -27
- package/LuxityAppSideNav.js +21 -18
- package/LuxityDesktopHeader.js +451 -298
- package/LuxityFooter.js +321 -430
- package/LuxityGraphQLDropdownSelector.js +1540 -945
- package/LuxityGraphQLMultiselector.js +321 -167
- package/LuxityMobileHeader.js +544 -353
- package/LuxityPageReady.js +136 -74
- package/LuxityProductInterestItem.js +175 -97
- package/LuxitySideNav.js +244 -176
- package/MaterialSelector.js +1547 -951
- package/ModelSelector.js +1547 -951
- package/NotificationDropDown.js +218 -118
- package/Notify.js +1 -0
- package/OutlinePrimaryButton.js +58 -26
- package/PriceRangeSelector.js +281 -168
- package/PrimaryButton.js +58 -26
- package/RadioButtons.js +140 -114
- package/RangeSlider.js +242 -152
- package/RareStepFooter.js +41 -27
- package/RareStepHeader.js +190 -139
- package/ReactSelectWrapper.js +1 -0
- package/SecondaryButton.js +58 -26
- package/ShoeSizeRangeSelector.js +260 -162
- package/ShoeSizeSelector.js +263 -158
- package/SimpleErrorBoundary.js +106 -59
- package/StyleSelector.js +336 -176
- package/TestComponent.js +15 -0
- package/TextButton.js +58 -26
- package/Tooltip.js +39 -17
- package/Tracking.js +1 -0
- package/WrapperButton.js +43 -20
- package/build/CountryCodeSelect/index.js +18 -0
- package/build/ReactSelectWrapper/index.js +34 -0
- package/build/bundle.css +1 -1
- package/build/bundle.js +2616 -1974
- package/package.json +1 -1
- package/postcss.config.js +6 -0
- package/svg/Accessories.js +13 -6
- package/svg/Account.js +13 -6
- package/svg/Add.js +13 -6
- package/svg/ArrowRight.js +13 -6
- package/svg/Bags.js +13 -6
- package/svg/BurgerMenu.js +13 -6
- package/svg/Calendar.js +13 -6
- package/svg/CalendarCircled.js +13 -6
- package/svg/CheckCircled.js +13 -6
- package/svg/Close.js +13 -6
- package/svg/Clothing.js +13 -6
- package/svg/Dot.js +13 -6
- package/svg/Edit.js +13 -6
- package/svg/Eye.js +13 -6
- package/svg/FileAttach.js +13 -6
- package/svg/FileAttachCircled.js +13 -6
- package/svg/LightBulb.js +13 -6
- package/svg/Logo.js +13 -6
- package/svg/LuxityMenu.js +13 -6
- package/svg/Minus.js +13 -6
- package/svg/MobileAvatar.js +13 -6
- package/svg/MyOrder.js +13 -6
- package/svg/MyPayment.js +13 -6
- package/svg/MyProfile.js +14 -8
- package/svg/MySale.js +13 -6
- package/svg/Notification.js +13 -6
- package/svg/PointerDown.js +13 -6
- package/svg/Search.js +13 -6
- package/svg/Shoes.js +13 -6
- package/svg/SvgWrapper.js +7 -3
- package/svg/Trash.js +13 -6
- package/svg/Watches.js +13 -6
package/LuxityDesktopHeader.js
CHANGED
|
@@ -8,128 +8,149 @@
|
|
|
8
8
|
axios = axios && Object.prototype.hasOwnProperty.call(axios, 'default') ? axios['default'] : axios;
|
|
9
9
|
var styled__default = 'default' in styled ? styled['default'] : styled;
|
|
10
10
|
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
function _defineProperty(e, r, t) {
|
|
20
|
-
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
21
|
-
value: t,
|
|
22
|
-
enumerable: !0,
|
|
23
|
-
configurable: !0,
|
|
24
|
-
writable: !0
|
|
25
|
-
}) : e[r] = t, e;
|
|
26
|
-
}
|
|
27
|
-
function _extends() {
|
|
28
|
-
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
29
|
-
for (var e = 1; e < arguments.length; e++) {
|
|
30
|
-
var t = arguments[e];
|
|
31
|
-
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
32
|
-
}
|
|
33
|
-
return n;
|
|
34
|
-
}, _extends.apply(null, arguments);
|
|
35
|
-
}
|
|
36
|
-
function _iterableToArrayLimit(r, l) {
|
|
37
|
-
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
38
|
-
if (null != t) {
|
|
39
|
-
var e,
|
|
40
|
-
n,
|
|
41
|
-
i,
|
|
42
|
-
u,
|
|
43
|
-
a = [],
|
|
44
|
-
f = !0,
|
|
45
|
-
o = !1;
|
|
46
|
-
try {
|
|
47
|
-
if (i = (t = t.call(r)).next, 0 === l) {
|
|
48
|
-
if (Object(t) !== t) return;
|
|
49
|
-
f = !1;
|
|
50
|
-
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
51
|
-
} catch (r) {
|
|
52
|
-
o = !0, n = r;
|
|
53
|
-
} finally {
|
|
54
|
-
try {
|
|
55
|
-
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
56
|
-
} finally {
|
|
57
|
-
if (o) throw n;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return a;
|
|
11
|
+
function ownKeys(object, enumerableOnly) {
|
|
12
|
+
var keys = Object.keys(object);
|
|
13
|
+
|
|
14
|
+
if (Object.getOwnPropertySymbols) {
|
|
15
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
16
|
+
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
17
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
18
|
+
})), keys.push.apply(keys, symbols);
|
|
61
19
|
}
|
|
20
|
+
|
|
21
|
+
return keys;
|
|
62
22
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
})), t.push.apply(t, o);
|
|
23
|
+
|
|
24
|
+
function _objectSpread2(target) {
|
|
25
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
26
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
27
|
+
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
28
|
+
_defineProperty(target, key, source[key]);
|
|
29
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
30
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
31
|
+
});
|
|
73
32
|
}
|
|
74
|
-
|
|
33
|
+
|
|
34
|
+
return target;
|
|
75
35
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
36
|
+
|
|
37
|
+
function _defineProperty(obj, key, value) {
|
|
38
|
+
if (key in obj) {
|
|
39
|
+
Object.defineProperty(obj, key, {
|
|
40
|
+
value: value,
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
writable: true
|
|
83
44
|
});
|
|
45
|
+
} else {
|
|
46
|
+
obj[key] = value;
|
|
84
47
|
}
|
|
85
|
-
|
|
48
|
+
|
|
49
|
+
return obj;
|
|
86
50
|
}
|
|
87
|
-
|
|
88
|
-
|
|
51
|
+
|
|
52
|
+
function _extends() {
|
|
53
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
54
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
55
|
+
var source = arguments[i];
|
|
56
|
+
|
|
57
|
+
for (var key in source) {
|
|
58
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
59
|
+
target[key] = source[key];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return target;
|
|
65
|
+
};
|
|
66
|
+
return _extends.apply(this, arguments);
|
|
89
67
|
}
|
|
90
|
-
|
|
91
|
-
|
|
68
|
+
|
|
69
|
+
function _taggedTemplateLiteral(strings, raw) {
|
|
70
|
+
if (!raw) {
|
|
71
|
+
raw = strings.slice(0);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return Object.freeze(Object.defineProperties(strings, {
|
|
92
75
|
raw: {
|
|
93
|
-
value: Object.freeze(
|
|
76
|
+
value: Object.freeze(raw)
|
|
94
77
|
}
|
|
95
78
|
}));
|
|
96
79
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (void 0 !== e) {
|
|
101
|
-
var i = e.call(t, r || "default");
|
|
102
|
-
if ("object" != typeof i) return i;
|
|
103
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
104
|
-
}
|
|
105
|
-
return ("string" === r ? String : Number)(t);
|
|
80
|
+
|
|
81
|
+
function _slicedToArray(arr, i) {
|
|
82
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
106
83
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
84
|
+
|
|
85
|
+
function _arrayWithHoles(arr) {
|
|
86
|
+
if (Array.isArray(arr)) return arr;
|
|
110
87
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
88
|
+
|
|
89
|
+
function _iterableToArrayLimit(arr, i) {
|
|
90
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
91
|
+
|
|
92
|
+
if (_i == null) return;
|
|
93
|
+
var _arr = [];
|
|
94
|
+
var _n = true;
|
|
95
|
+
var _d = false;
|
|
96
|
+
|
|
97
|
+
var _s, _e;
|
|
98
|
+
|
|
99
|
+
try {
|
|
100
|
+
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
101
|
+
_arr.push(_s.value);
|
|
102
|
+
|
|
103
|
+
if (i && _arr.length === i) break;
|
|
104
|
+
}
|
|
105
|
+
} catch (err) {
|
|
106
|
+
_d = true;
|
|
107
|
+
_e = err;
|
|
108
|
+
} finally {
|
|
109
|
+
try {
|
|
110
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
111
|
+
} finally {
|
|
112
|
+
if (_d) throw _e;
|
|
113
|
+
}
|
|
116
114
|
}
|
|
115
|
+
|
|
116
|
+
return _arr;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
120
|
+
if (!o) return;
|
|
121
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
122
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
123
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
124
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
125
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function _arrayLikeToArray(arr, len) {
|
|
129
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
130
|
+
|
|
131
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
132
|
+
|
|
133
|
+
return arr2;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function _nonIterableRest() {
|
|
137
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
117
138
|
}
|
|
118
139
|
|
|
119
140
|
var Dropdown = function Dropdown(_ref) {
|
|
120
141
|
var title = _ref.title,
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
142
|
+
imageSrc = _ref.imageSrc,
|
|
143
|
+
_ref$categoryElements = _ref.categoryElements,
|
|
144
|
+
categoryElements = _ref$categoryElements === void 0 ? [] : _ref$categoryElements,
|
|
145
|
+
_ref$brandElements = _ref.brandElements,
|
|
146
|
+
brandElements = _ref$brandElements === void 0 ? [] : _ref$brandElements,
|
|
147
|
+
productsUrl = _ref.productsUrl,
|
|
148
|
+
LinkComponent = _ref.LinkComponent,
|
|
149
|
+
categorySlug = _ref.categorySlug,
|
|
150
|
+
categoryTitle = _ref.categoryTitle,
|
|
151
|
+
isLoading = _ref.isLoading,
|
|
152
|
+
hasError = _ref.hasError,
|
|
153
|
+
onMenuItemClick = _ref.onMenuItemClick;
|
|
133
154
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, hasError ? /*#__PURE__*/React__default.createElement("div", {
|
|
134
155
|
className: "dropdown__errors"
|
|
135
156
|
}, "Failed to load data.") : /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -168,11 +189,11 @@
|
|
|
168
189
|
onClick: onMenuItemClick
|
|
169
190
|
}, "All ", categoryTitle)), !!brandElements.length && brandElements.map(function (brand) {
|
|
170
191
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
171
|
-
className: "dropdown__brand-element"
|
|
192
|
+
className: "dropdown__brand-element",
|
|
193
|
+
key: brand.name
|
|
172
194
|
}, /*#__PURE__*/React__default.createElement(LinkComponent, {
|
|
173
195
|
href: "".concat(productsUrl, "/").concat(categorySlug, "/").concat(brand === null || brand === void 0 ? void 0 : brand.slug),
|
|
174
196
|
className: "dropdown__element",
|
|
175
|
-
key: brand.name,
|
|
176
197
|
onClick: onMenuItemClick
|
|
177
198
|
}, brand === null || brand === void 0 ? void 0 : brand.name));
|
|
178
199
|
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -185,22 +206,25 @@
|
|
|
185
206
|
|
|
186
207
|
var DropdownLink = function DropdownLink(_ref) {
|
|
187
208
|
var title = _ref.title,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
209
|
+
imageSrc = _ref.imageSrc,
|
|
210
|
+
categoryElements = _ref.categoryElements,
|
|
211
|
+
brandElements = _ref.brandElements,
|
|
212
|
+
productsUrl = _ref.productsUrl,
|
|
213
|
+
LinkComponent = _ref.LinkComponent,
|
|
214
|
+
categorySlug = _ref.categorySlug,
|
|
215
|
+
categoryTitle = _ref.categoryTitle,
|
|
216
|
+
isLoading = _ref.isLoading,
|
|
217
|
+
hasError = _ref.hasError;
|
|
218
|
+
|
|
197
219
|
var _useState = React.useState(false),
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
220
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
221
|
+
dropdownVisible = _useState2[0],
|
|
222
|
+
setDropdownVisible = _useState2[1];
|
|
223
|
+
|
|
201
224
|
var handleMenuItemClick = function handleMenuItemClick() {
|
|
202
225
|
setDropdownVisible(false);
|
|
203
226
|
};
|
|
227
|
+
|
|
204
228
|
return /*#__PURE__*/React__default.createElement("li", {
|
|
205
229
|
className: "navbar__link",
|
|
206
230
|
onMouseEnter: function onMouseEnter() {
|
|
@@ -232,8 +256,8 @@
|
|
|
232
256
|
|
|
233
257
|
var StoresDropdown = function StoresDropdown(_ref) {
|
|
234
258
|
var _ref$stores = _ref.stores,
|
|
235
|
-
|
|
236
|
-
|
|
259
|
+
stores = _ref$stores === void 0 ? [] : _ref$stores,
|
|
260
|
+
contactNumber = _ref.contactNumber;
|
|
237
261
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
238
262
|
className: "stores-dropdown"
|
|
239
263
|
}, !!stores.length && stores.map(function (store) {
|
|
@@ -275,25 +299,29 @@
|
|
|
275
299
|
|
|
276
300
|
var SearchResults = function SearchResults(_ref) {
|
|
277
301
|
var _searchResults$brands, _searchResults$produc, _searchResults$brands2, _searchResults$produc2, _initialSearchData$tr, _initialSearchData$la, _limitBrands, _limitBrands2, _initialSearchData$la2, _searchResults$produc3;
|
|
302
|
+
|
|
278
303
|
var searchValue = _ref.searchValue,
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
304
|
+
searchResults = _ref.searchResults,
|
|
305
|
+
onViewAll = _ref.onViewAll,
|
|
306
|
+
searchResultsRef = _ref.searchResultsRef,
|
|
307
|
+
onSearchSubmit = _ref.onSearchSubmit,
|
|
308
|
+
setSearchValue = _ref.setSearchValue,
|
|
309
|
+
initialSearchData = _ref.initialSearchData,
|
|
310
|
+
isSearchFocused = _ref.isSearchFocused,
|
|
311
|
+
setIsSearchFocused = _ref.setIsSearchFocused,
|
|
312
|
+
currency = _ref.currency,
|
|
313
|
+
currencySymbol = _ref.currencySymbol;
|
|
314
|
+
|
|
289
315
|
var _useState = React.useState(false),
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
316
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
317
|
+
isMobile = _useState2[0],
|
|
318
|
+
setIsMobile = _useState2[1];
|
|
319
|
+
|
|
293
320
|
React.useEffect(function () {
|
|
294
321
|
var checkIfMobile = function checkIfMobile() {
|
|
295
322
|
setIsMobile(window.innerWidth <= 1024);
|
|
296
323
|
};
|
|
324
|
+
|
|
297
325
|
checkIfMobile();
|
|
298
326
|
window.addEventListener('resize', checkIfMobile);
|
|
299
327
|
return function () {
|
|
@@ -303,12 +331,15 @@
|
|
|
303
331
|
var shouldShowInitialData = isSearchFocused && (!searchValue || searchValue.trim().length < 3) || (searchValue === null || searchValue === void 0 ? void 0 : searchValue.trim().length) >= 3 && !(searchResults !== null && searchResults !== void 0 && (_searchResults$brands = searchResults.brands) !== null && _searchResults$brands !== void 0 && _searchResults$brands.length) && !(searchResults !== null && searchResults !== void 0 && (_searchResults$produc = searchResults.products) !== null && _searchResults$produc !== void 0 && _searchResults$produc.length);
|
|
304
332
|
var hasResults = (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$brands2 = searchResults.brands) === null || _searchResults$brands2 === void 0 ? void 0 : _searchResults$brands2.length) > 0 || (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc2 = searchResults.products) === null || _searchResults$produc2 === void 0 ? void 0 : _searchResults$produc2.length) > 0;
|
|
305
333
|
var hasInitialData = (initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$tr = initialSearchData.trending_brands) === null || _initialSearchData$tr === void 0 ? void 0 : _initialSearchData$tr.length) > 0 || (initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$la = initialSearchData.latest_products) === null || _initialSearchData$la === void 0 ? void 0 : _initialSearchData$la.length) > 0;
|
|
334
|
+
|
|
306
335
|
if (!hasResults && !hasInitialData) {
|
|
307
336
|
return null;
|
|
308
337
|
}
|
|
309
|
-
|
|
338
|
+
|
|
339
|
+
if (!isSearchFocused) {
|
|
310
340
|
return null;
|
|
311
341
|
}
|
|
342
|
+
|
|
312
343
|
var formatPrice = function formatPrice(price) {
|
|
313
344
|
var formatter = new Intl.NumberFormat(undefined, {
|
|
314
345
|
minimumFractionDigits: 0,
|
|
@@ -316,6 +347,7 @@
|
|
|
316
347
|
});
|
|
317
348
|
return "".concat(currencySymbol).concat(formatter.format(price));
|
|
318
349
|
};
|
|
350
|
+
|
|
319
351
|
var renderProductCard = function renderProductCard(product) {
|
|
320
352
|
var selectedPrice = product.prices ? product.prices.find(function (p) {
|
|
321
353
|
return p.currency === currency;
|
|
@@ -327,7 +359,7 @@
|
|
|
327
359
|
key: product.link,
|
|
328
360
|
href: product.link,
|
|
329
361
|
className: "product-card"
|
|
330
|
-
},
|
|
362
|
+
}, product.featured_image && /*#__PURE__*/React__default.createElement("div", {
|
|
331
363
|
className: "product-card__image-container"
|
|
332
364
|
}, /*#__PURE__*/React__default.createElement("img", {
|
|
333
365
|
src: product.featured_image,
|
|
@@ -353,15 +385,19 @@
|
|
|
353
385
|
className: "product-card__condition-label"
|
|
354
386
|
}, "Condition:"), product.condition))));
|
|
355
387
|
};
|
|
388
|
+
|
|
356
389
|
var getBrandLink = function getBrandLink(brand) {
|
|
357
390
|
return "/products/brands/".concat(brand.slug);
|
|
358
391
|
};
|
|
392
|
+
|
|
359
393
|
var limitBrands = function limitBrands(brands) {
|
|
360
394
|
if (isMobile && brands && brands.length > 4) {
|
|
361
395
|
return brands.slice(0, 4);
|
|
362
396
|
}
|
|
397
|
+
|
|
363
398
|
return brands;
|
|
364
399
|
};
|
|
400
|
+
|
|
365
401
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
366
402
|
className: "search-results",
|
|
367
403
|
ref: searchResultsRef
|
|
@@ -402,6 +438,7 @@
|
|
|
402
438
|
className: "search-results__view-all-button",
|
|
403
439
|
onClick: function onClick() {
|
|
404
440
|
onViewAll();
|
|
441
|
+
|
|
405
442
|
if (!shouldShowInitialData) {
|
|
406
443
|
onSearchSubmit(searchValue);
|
|
407
444
|
setSearchValue('');
|
|
@@ -412,8 +449,8 @@
|
|
|
412
449
|
};
|
|
413
450
|
|
|
414
451
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
415
|
-
|
|
416
452
|
/* position relative is required for the Body element to be positioned correctly */
|
|
453
|
+
|
|
417
454
|
var relativeInlineStyle = styled.css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n"])));
|
|
418
455
|
var topMiddleBodyStyle = styled.css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: absolute;\n z-index: 1;\n bottom: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"])));
|
|
419
456
|
var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
|
|
@@ -427,31 +464,40 @@
|
|
|
427
464
|
};
|
|
428
465
|
|
|
429
466
|
var _templateObject$1;
|
|
467
|
+
|
|
430
468
|
var getBodyStyle = function getBodyStyle() {
|
|
431
469
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
432
470
|
var _props$toolTipPositio = props.toolTipPosition,
|
|
433
|
-
|
|
471
|
+
toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
|
|
472
|
+
|
|
434
473
|
switch (toolTipPosition) {
|
|
435
474
|
case 'top':
|
|
436
475
|
return topMiddleBodyStyle;
|
|
476
|
+
|
|
437
477
|
case 'bottom':
|
|
438
478
|
return getBottomMiddleBodyStyle(props);
|
|
479
|
+
|
|
439
480
|
default:
|
|
440
481
|
return null;
|
|
441
482
|
}
|
|
442
483
|
};
|
|
484
|
+
|
|
443
485
|
var getAfterStyling = function getAfterStyling() {
|
|
444
486
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
445
487
|
var toolTipPosition = props.toolTipPosition;
|
|
488
|
+
|
|
446
489
|
switch (toolTipPosition) {
|
|
447
490
|
case 'top':
|
|
448
491
|
return getTopMiddleArrowAfterStyle(props);
|
|
492
|
+
|
|
449
493
|
case 'bottom':
|
|
450
494
|
return getBottomMiddleArrowAfterStyle(props);
|
|
495
|
+
|
|
451
496
|
default:
|
|
452
497
|
return '';
|
|
453
498
|
}
|
|
454
499
|
};
|
|
500
|
+
|
|
455
501
|
var Body = styled__default.span(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n ", ";\n visibility: hidden;\n opacity: 0;\n width: ", ";\n transition: visibility 0.3s linear, opacity 0.3s linear;\n background-color: ", ";\n color: white;\n text-align: center;\n border-radius: 5px;\n ", "\n &::after {\n content: ' ';\n position: absolute;\n ", "\n }\n"])), relativeInlineStyle, function (props) {
|
|
456
502
|
return props.bodyWidth;
|
|
457
503
|
}, function (props) {
|
|
@@ -531,12 +577,12 @@
|
|
|
531
577
|
|
|
532
578
|
var Tooltip = function Tooltip(_ref) {
|
|
533
579
|
var children = _ref.children,
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
580
|
+
toolTipText = _ref.toolTipText,
|
|
581
|
+
toolTipPosition = _ref.toolTipPosition,
|
|
582
|
+
bodyWidth = _ref.bodyWidth,
|
|
583
|
+
apexWidth = _ref.apexWidth,
|
|
584
|
+
containerClassName = _ref.containerClassName,
|
|
585
|
+
bodyClassName = _ref.bodyClassName;
|
|
540
586
|
return /*#__PURE__*/React__default.createElement(Container, {
|
|
541
587
|
className: containerClassName
|
|
542
588
|
}, children, /*#__PURE__*/React__default.createElement(Body, {
|
|
@@ -546,6 +592,7 @@
|
|
|
546
592
|
className: bodyClassName
|
|
547
593
|
}, toolTipText));
|
|
548
594
|
};
|
|
595
|
+
|
|
549
596
|
Tooltip.defaultProps = {
|
|
550
597
|
children: null,
|
|
551
598
|
toolTipText: '',
|
|
@@ -559,21 +606,25 @@
|
|
|
559
606
|
|
|
560
607
|
var CurrencySelect = function CurrencySelect(_ref) {
|
|
561
608
|
var currency = _ref.currency,
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
609
|
+
currencyOptions = _ref.currencyOptions,
|
|
610
|
+
onCurrencyChange = _ref.onCurrencyChange,
|
|
611
|
+
_ref$isCurrencySelect = _ref.isCurrencySelectionDisabled,
|
|
612
|
+
isCurrencySelectionDisabled = _ref$isCurrencySelect === void 0 ? false : _ref$isCurrencySelect,
|
|
613
|
+
_ref$tooltipContent = _ref.tooltipContent,
|
|
614
|
+
tooltipContent = _ref$tooltipContent === void 0 ? '' : _ref$tooltipContent;
|
|
615
|
+
|
|
568
616
|
if (!currencyOptions || currencyOptions.length === 0) {
|
|
569
617
|
return null;
|
|
570
618
|
}
|
|
619
|
+
|
|
571
620
|
var selectedOption = currencyOptions.find(function (opt) {
|
|
572
621
|
return opt.value === currency;
|
|
573
622
|
});
|
|
623
|
+
|
|
574
624
|
if (!selectedOption) {
|
|
575
625
|
return null;
|
|
576
626
|
}
|
|
627
|
+
|
|
577
628
|
return /*#__PURE__*/React__default.createElement(Tooltip$1, {
|
|
578
629
|
toolTipText: isCurrencySelectionDisabled ? tooltipContent : '',
|
|
579
630
|
toolTipPosition: "bottom",
|
|
@@ -613,18 +664,21 @@
|
|
|
613
664
|
|
|
614
665
|
var useSearch = function useSearch(_ref) {
|
|
615
666
|
var endpoint = _ref.endpoint,
|
|
616
|
-
|
|
617
|
-
|
|
667
|
+
onProductIdsReceived = _ref.onProductIdsReceived,
|
|
668
|
+
currency = _ref.currency;
|
|
669
|
+
var currentSearchRequestToken = React.useRef(null);
|
|
618
670
|
var debounce = React.useCallback(function (func, wait) {
|
|
619
671
|
var timeout;
|
|
620
672
|
return function executedFunction() {
|
|
621
673
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
622
674
|
args[_key] = arguments[_key];
|
|
623
675
|
}
|
|
676
|
+
|
|
624
677
|
var later = function later() {
|
|
625
678
|
clearTimeout(timeout);
|
|
626
679
|
func.apply(void 0, args);
|
|
627
680
|
};
|
|
681
|
+
|
|
628
682
|
clearTimeout(timeout);
|
|
629
683
|
timeout = setTimeout(later, wait);
|
|
630
684
|
};
|
|
@@ -643,47 +697,75 @@
|
|
|
643
697
|
});
|
|
644
698
|
});
|
|
645
699
|
}, []);
|
|
646
|
-
var performSearch = React.useCallback(function (
|
|
647
|
-
if (!
|
|
700
|
+
var performSearch = React.useCallback(function (searchQuery, setSearchResults) {
|
|
701
|
+
if (!searchQuery || searchQuery.trim() === '') {
|
|
648
702
|
setSearchResults({
|
|
649
703
|
brands: [],
|
|
650
704
|
products: [],
|
|
651
705
|
luxity_product_ids: []
|
|
652
706
|
});
|
|
653
707
|
return;
|
|
654
|
-
}
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
708
|
+
} // Cancel any ongoing search request to prevent race conditions
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
if (currentSearchRequestToken.current) {
|
|
712
|
+
currentSearchRequestToken.current.cancel();
|
|
713
|
+
} // Create a new token for this specific search request
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
var newSearchToken = axios.CancelToken.source();
|
|
717
|
+
currentSearchRequestToken.current = newSearchToken;
|
|
718
|
+
axios.post(endpoint, searchProducts(searchQuery, 3, currency), {
|
|
719
|
+
cancelToken: newSearchToken.token
|
|
720
|
+
}).then(function (response) {
|
|
721
|
+
if (currentSearchRequestToken.current === newSearchToken) {
|
|
722
|
+
var searchResults = response.data.data.luxity_products_serach_results;
|
|
723
|
+
setSearchResults(searchResults);
|
|
724
|
+
|
|
725
|
+
if (searchResults && searchResults.luxity_product_ids) {
|
|
726
|
+
onProductIdsReceived(searchResults.luxity_product_ids);
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
currentSearchRequestToken.current = null;
|
|
730
|
+
}
|
|
731
|
+
}).catch(function (error) {
|
|
732
|
+
if (!axios.isCancel(error)) {
|
|
733
|
+
setSearchResults({
|
|
734
|
+
brands: [],
|
|
735
|
+
products: [],
|
|
736
|
+
luxity_product_ids: []
|
|
737
|
+
});
|
|
738
|
+
currentSearchRequestToken.current = null;
|
|
660
739
|
}
|
|
661
|
-
}).catch(function () {
|
|
662
|
-
setSearchResults({
|
|
663
|
-
brands: [],
|
|
664
|
-
products: [],
|
|
665
|
-
luxity_product_ids: []
|
|
666
|
-
});
|
|
667
740
|
});
|
|
668
741
|
}, [endpoint, currency, onProductIdsReceived]);
|
|
669
742
|
var debouncedSearch = React.useMemo(function () {
|
|
670
|
-
return debounce(function (
|
|
671
|
-
return performSearch(
|
|
743
|
+
return debounce(function (searchQuery, setSearchResults) {
|
|
744
|
+
return performSearch(searchQuery, setSearchResults);
|
|
672
745
|
}, 500);
|
|
673
746
|
}, [debounce, performSearch]);
|
|
674
747
|
var createDebouncedSearch = React.useCallback(function (setSearchResults) {
|
|
675
|
-
return function (
|
|
676
|
-
return debouncedSearch(
|
|
748
|
+
return function (searchQuery) {
|
|
749
|
+
return debouncedSearch(searchQuery, setSearchResults);
|
|
677
750
|
};
|
|
678
751
|
}, [debouncedSearch]);
|
|
679
752
|
var createImmediateSearch = React.useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
|
|
680
|
-
return function (
|
|
753
|
+
return function (searchQuery) {
|
|
754
|
+
/*
|
|
755
|
+
* Cancel any pending search request when immediate search is performed
|
|
756
|
+
* Immediate search is when the user types a search query and presses enter
|
|
757
|
+
*/
|
|
758
|
+
if (currentSearchRequestToken.current) {
|
|
759
|
+
currentSearchRequestToken.current.cancel();
|
|
760
|
+
currentSearchRequestToken.current = null;
|
|
761
|
+
}
|
|
762
|
+
|
|
681
763
|
setSearchValue('');
|
|
682
764
|
setSearchResults({
|
|
683
765
|
brands: [],
|
|
684
766
|
products: []
|
|
685
767
|
});
|
|
686
|
-
onSearchSubmit(
|
|
768
|
+
onSearchSubmit(searchQuery);
|
|
687
769
|
};
|
|
688
770
|
}, []);
|
|
689
771
|
return {
|
|
@@ -693,111 +775,11 @@
|
|
|
693
775
|
};
|
|
694
776
|
};
|
|
695
777
|
|
|
696
|
-
var
|
|
697
|
-
var _categories$filter;
|
|
698
|
-
return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
|
|
699
|
-
return category.name.toLowerCase() !== name.toLowerCase();
|
|
700
|
-
})) !== null && _categories$filter !== void 0 ? _categories$filter : [];
|
|
701
|
-
};
|
|
702
|
-
|
|
703
|
-
var LuxityDesktopHeader = function LuxityDesktopHeader(_ref) {
|
|
704
|
-
var accountIcon = _ref.accountIcon,
|
|
705
|
-
cartIcon = _ref.cartIcon,
|
|
706
|
-
interestIcon = _ref.interestIcon,
|
|
707
|
-
cartCount = _ref.cartCount,
|
|
708
|
-
logoSrc = _ref.logoSrc,
|
|
709
|
-
categoryElements = _ref.categoryElements,
|
|
710
|
-
stores = _ref.stores,
|
|
711
|
-
contactNumber = _ref.contactNumber,
|
|
712
|
-
productsUrl = _ref.productsUrl,
|
|
713
|
-
LinkComponent = _ref.LinkComponent,
|
|
714
|
-
onInterestClick = _ref.onInterestClick,
|
|
715
|
-
onCartClick = _ref.onCartClick,
|
|
716
|
-
onAccountClick = _ref.onAccountClick,
|
|
717
|
-
inputSearchIcon = _ref.inputSearchIcon,
|
|
718
|
-
onSearch = _ref.onSearch,
|
|
719
|
-
onSellToUsClick = _ref.onSellToUsClick,
|
|
720
|
-
contactUsLink = _ref.contactUsLink,
|
|
721
|
-
ourStoryLink = _ref.ourStoryLink,
|
|
722
|
-
onLogoClick = _ref.onLogoClick,
|
|
723
|
-
endpoint = _ref.endpoint,
|
|
724
|
-
initialSearchData = _ref.initialSearchData,
|
|
725
|
-
onSearchSubmit = _ref.onSearchSubmit,
|
|
726
|
-
onProductIdsReceived = _ref.onProductIdsReceived,
|
|
727
|
-
currency = _ref.currency,
|
|
728
|
-
currencySymbol = _ref.currencySymbol,
|
|
729
|
-
currencyOptions = _ref.currencyOptions,
|
|
730
|
-
onCurrencyChange = _ref.onCurrencyChange,
|
|
731
|
-
isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
|
|
732
|
-
tooltipContent = _ref.tooltipContent,
|
|
733
|
-
vipIcon = _ref.vipIcon,
|
|
734
|
-
name = _ref.name,
|
|
735
|
-
isVip = _ref.isVip,
|
|
736
|
-
shop = _ref.shop,
|
|
737
|
-
app = _ref.app,
|
|
738
|
-
categoryConfig = _ref.categoryConfig;
|
|
739
|
-
var _useSearch = useSearch({
|
|
740
|
-
endpoint: endpoint,
|
|
741
|
-
onProductIdsReceived: onProductIdsReceived,
|
|
742
|
-
currency: currency
|
|
743
|
-
}),
|
|
744
|
-
fetchInitialSearchData = _useSearch.fetchInitialSearchData,
|
|
745
|
-
createDebouncedSearch = _useSearch.createDebouncedSearch,
|
|
746
|
-
createImmediateSearch = _useSearch.createImmediateSearch;
|
|
747
|
-
var _useState = React.useState(''),
|
|
748
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
749
|
-
searchValue = _useState2[0],
|
|
750
|
-
setSearchValue = _useState2[1];
|
|
751
|
-
var _useState3 = React.useState(false),
|
|
752
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
753
|
-
loading = _useState4[0],
|
|
754
|
-
setLoading = _useState4[1];
|
|
755
|
-
var _useState5 = React.useState(false),
|
|
756
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
757
|
-
isSearchFocused = _useState6[0],
|
|
758
|
-
setIsSearchFocused = _useState6[1];
|
|
759
|
-
var _useState7 = React.useState({
|
|
760
|
-
trending_brands: [],
|
|
761
|
-
latest_products: []
|
|
762
|
-
}),
|
|
763
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
764
|
-
initialSearchView = _useState8[0],
|
|
765
|
-
setInitialSearchView = _useState8[1];
|
|
766
|
-
var _useState9 = React.useState({}),
|
|
767
|
-
_useState10 = _slicedToArray(_useState9, 2),
|
|
768
|
-
dropdownData = _useState10[0],
|
|
769
|
-
setDropdownData = _useState10[1];
|
|
770
|
-
var _useState11 = React.useState(false),
|
|
771
|
-
_useState12 = _slicedToArray(_useState11, 2),
|
|
772
|
-
hasError = _useState12[0],
|
|
773
|
-
setHasError = _useState12[1];
|
|
774
|
-
var _useState13 = React.useState({
|
|
775
|
-
brands: [],
|
|
776
|
-
products: []
|
|
777
|
-
}),
|
|
778
|
-
_useState14 = _slicedToArray(_useState13, 2),
|
|
779
|
-
searchResults = _useState14[0],
|
|
780
|
-
setSearchResults = _useState14[1];
|
|
781
|
-
var searchResultsRef = React.useRef(null);
|
|
782
|
-
var debouncedSearch = createDebouncedSearch(setSearchResults);
|
|
783
|
-
var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
|
|
784
|
-
var handleChange = function handleChange(event) {
|
|
785
|
-
var value = event.target.value;
|
|
786
|
-
setSearchValue(value);
|
|
787
|
-
setIsSearchFocused(true);
|
|
788
|
-
if (value.trim().length >= 3) {
|
|
789
|
-
debouncedSearch(value);
|
|
790
|
-
} else {
|
|
791
|
-
setSearchResults({
|
|
792
|
-
brands: [],
|
|
793
|
-
products: []
|
|
794
|
-
});
|
|
795
|
-
}
|
|
796
|
-
};
|
|
778
|
+
var useSearchClickOutside = function useSearchClickOutside(ref, searchResults, setCachedResults, setIsSearchFocused, setSearchResults) {
|
|
797
779
|
React.useEffect(function () {
|
|
798
780
|
var handleClickOutside = function handleClickOutside(event) {
|
|
799
|
-
if (
|
|
800
|
-
|
|
781
|
+
if (ref.current && !ref.current.contains(event.target)) {
|
|
782
|
+
setCachedResults(searchResults);
|
|
801
783
|
setIsSearchFocused(false);
|
|
802
784
|
setSearchResults({
|
|
803
785
|
brands: [],
|
|
@@ -805,22 +787,195 @@
|
|
|
805
787
|
});
|
|
806
788
|
}
|
|
807
789
|
};
|
|
790
|
+
|
|
808
791
|
document.addEventListener('mousedown', handleClickOutside);
|
|
809
792
|
return function () {
|
|
810
793
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
811
794
|
};
|
|
812
|
-
}, []);
|
|
813
|
-
|
|
795
|
+
}, [ref, searchResults, setCachedResults, setIsSearchFocused, setSearchResults]);
|
|
796
|
+
};
|
|
797
|
+
var useSearchInputChange = function useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults) {
|
|
798
|
+
return React.useCallback(function (event) {
|
|
799
|
+
var value = event.target.value;
|
|
800
|
+
setSearchValue(value);
|
|
801
|
+
setIsSearchFocused(true);
|
|
802
|
+
|
|
803
|
+
if (value.trim().length >= 3) {
|
|
804
|
+
debouncedSearch(value);
|
|
805
|
+
} else {
|
|
806
|
+
setSearchResults({
|
|
807
|
+
brands: [],
|
|
808
|
+
products: []
|
|
809
|
+
});
|
|
810
|
+
setCachedResults({
|
|
811
|
+
brands: [],
|
|
812
|
+
products: []
|
|
813
|
+
});
|
|
814
|
+
}
|
|
815
|
+
}, [setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults]);
|
|
816
|
+
};
|
|
817
|
+
var useSearchInputFocus = function useSearchInputFocus(searchValue, setIsSearchFocused, cachedResults, setSearchResults) {
|
|
818
|
+
var handleSearchClick = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;
|
|
819
|
+
return React.useCallback(function () {
|
|
820
|
+
setIsSearchFocused(true);
|
|
821
|
+
|
|
822
|
+
if (typeof handleSearchClick === 'function') {
|
|
823
|
+
handleSearchClick();
|
|
824
|
+
} else if (searchValue.trim().length >= 3) {
|
|
825
|
+
setSearchResults(cachedResults);
|
|
826
|
+
}
|
|
827
|
+
}, [searchValue, setIsSearchFocused, cachedResults, setSearchResults, handleSearchClick]);
|
|
828
|
+
};
|
|
829
|
+
var useSearchInputKeyDown = function useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused) {
|
|
830
|
+
var setSearchValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
831
|
+
return React.useCallback(function (event) {
|
|
814
832
|
if (event.key === 'Enter') {
|
|
815
833
|
event.preventDefault();
|
|
834
|
+
|
|
816
835
|
if (searchValue.trim().length >= 3) {
|
|
817
836
|
immediateSearch(searchValue);
|
|
818
837
|
}
|
|
819
|
-
|
|
838
|
+
|
|
839
|
+
setIsSearchFocused(false);
|
|
840
|
+
} else if (event.key === 'Escape' && setSearchValue) {
|
|
820
841
|
setSearchValue('');
|
|
842
|
+
setIsSearchFocused(false);
|
|
821
843
|
}
|
|
822
|
-
|
|
844
|
+
}, [searchValue, immediateSearch, setIsSearchFocused, setSearchValue]);
|
|
845
|
+
};
|
|
846
|
+
|
|
847
|
+
var removeCategoryByName = function removeCategoryByName(categories, name) {
|
|
848
|
+
var _categories$filter;
|
|
849
|
+
|
|
850
|
+
return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
|
|
851
|
+
return category.name.toLowerCase() !== name.toLowerCase();
|
|
852
|
+
})) !== null && _categories$filter !== void 0 ? _categories$filter : [];
|
|
853
|
+
};
|
|
854
|
+
|
|
855
|
+
var LuxityDesktopHeader = function LuxityDesktopHeader(_ref) {
|
|
856
|
+
var accountIcon = _ref.accountIcon,
|
|
857
|
+
cartIcon = _ref.cartIcon,
|
|
858
|
+
interestIcon = _ref.interestIcon,
|
|
859
|
+
cartCount = _ref.cartCount,
|
|
860
|
+
logoSrc = _ref.logoSrc,
|
|
861
|
+
categoryElements = _ref.categoryElements,
|
|
862
|
+
stores = _ref.stores,
|
|
863
|
+
contactNumber = _ref.contactNumber,
|
|
864
|
+
productsUrl = _ref.productsUrl,
|
|
865
|
+
LinkComponent = _ref.LinkComponent,
|
|
866
|
+
onInterestClick = _ref.onInterestClick,
|
|
867
|
+
onCartClick = _ref.onCartClick,
|
|
868
|
+
onAccountClick = _ref.onAccountClick,
|
|
869
|
+
inputSearchIcon = _ref.inputSearchIcon,
|
|
870
|
+
onSellToUsClick = _ref.onSellToUsClick,
|
|
871
|
+
contactUsLink = _ref.contactUsLink,
|
|
872
|
+
ourStoryLink = _ref.ourStoryLink,
|
|
873
|
+
onLogoClick = _ref.onLogoClick,
|
|
874
|
+
endpoint = _ref.endpoint,
|
|
875
|
+
initialSearchData = _ref.initialSearchData,
|
|
876
|
+
onSearchSubmit = _ref.onSearchSubmit,
|
|
877
|
+
onSearchClick = _ref.onSearchClick,
|
|
878
|
+
onProductIdsReceived = _ref.onProductIdsReceived,
|
|
879
|
+
currency = _ref.currency,
|
|
880
|
+
currencySymbol = _ref.currencySymbol,
|
|
881
|
+
currencyOptions = _ref.currencyOptions,
|
|
882
|
+
onCurrencyChange = _ref.onCurrencyChange,
|
|
883
|
+
isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
|
|
884
|
+
tooltipContent = _ref.tooltipContent,
|
|
885
|
+
vipIcon = _ref.vipIcon,
|
|
886
|
+
name = _ref.name,
|
|
887
|
+
isVip = _ref.isVip,
|
|
888
|
+
shop = _ref.shop,
|
|
889
|
+
app = _ref.app,
|
|
890
|
+
categoryConfig = _ref.categoryConfig;
|
|
891
|
+
|
|
892
|
+
var _useSearch = useSearch({
|
|
893
|
+
endpoint: endpoint,
|
|
894
|
+
onProductIdsReceived: onProductIdsReceived,
|
|
895
|
+
currency: currency
|
|
896
|
+
}),
|
|
897
|
+
fetchInitialSearchData = _useSearch.fetchInitialSearchData,
|
|
898
|
+
createDebouncedSearch = _useSearch.createDebouncedSearch,
|
|
899
|
+
createImmediateSearch = _useSearch.createImmediateSearch;
|
|
900
|
+
|
|
901
|
+
var _useState = React.useState(''),
|
|
902
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
903
|
+
searchValue = _useState2[0],
|
|
904
|
+
setSearchValue = _useState2[1];
|
|
905
|
+
|
|
906
|
+
var _useState3 = React.useState(false),
|
|
907
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
908
|
+
loading = _useState4[0],
|
|
909
|
+
setLoading = _useState4[1];
|
|
910
|
+
|
|
911
|
+
var _useState5 = React.useState(false),
|
|
912
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
913
|
+
isSearchFocused = _useState6[0],
|
|
914
|
+
setIsSearchFocused = _useState6[1];
|
|
915
|
+
|
|
916
|
+
var _useState7 = React.useState({
|
|
917
|
+
trending_brands: [],
|
|
918
|
+
latest_products: []
|
|
919
|
+
}),
|
|
920
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
921
|
+
initialSearchView = _useState8[0],
|
|
922
|
+
setInitialSearchView = _useState8[1];
|
|
923
|
+
|
|
924
|
+
var _useState9 = React.useState({}),
|
|
925
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
926
|
+
dropdownData = _useState10[0],
|
|
927
|
+
setDropdownData = _useState10[1];
|
|
928
|
+
|
|
929
|
+
var _useState11 = React.useState(false),
|
|
930
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
931
|
+
hasError = _useState12[0],
|
|
932
|
+
setHasError = _useState12[1];
|
|
933
|
+
|
|
934
|
+
var _useState13 = React.useState({
|
|
935
|
+
brands: [],
|
|
936
|
+
products: []
|
|
937
|
+
}),
|
|
938
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
939
|
+
searchResults = _useState14[0],
|
|
940
|
+
setSearchResults = _useState14[1];
|
|
941
|
+
|
|
942
|
+
var _useState15 = React.useState({
|
|
943
|
+
brands: [],
|
|
944
|
+
products: []
|
|
945
|
+
}),
|
|
946
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
947
|
+
cachedResults = _useState16[0],
|
|
948
|
+
setCachedResults = _useState16[1];
|
|
949
|
+
|
|
950
|
+
var searchResultsRef = React.useRef(null);
|
|
951
|
+
var debouncedSearch = createDebouncedSearch(function (results) {
|
|
952
|
+
setSearchResults(results);
|
|
953
|
+
setCachedResults(results);
|
|
954
|
+
});
|
|
955
|
+
var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
|
|
956
|
+
var handleChange = useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults);
|
|
957
|
+
useSearchClickOutside(searchResultsRef, searchResults, setCachedResults, setIsSearchFocused, setSearchResults);
|
|
958
|
+
|
|
959
|
+
var handleSearchClick = function handleSearchClick() {
|
|
960
|
+
if (typeof onSearchClick === 'function') {
|
|
961
|
+
onSearchClick();
|
|
962
|
+
return;
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
handleSearchFocus();
|
|
823
966
|
};
|
|
967
|
+
|
|
968
|
+
var handleSearchFocus = useSearchInputFocus(searchValue, setIsSearchFocused, cachedResults, setSearchResults, onSearchClick);
|
|
969
|
+
var handleKeyDown = useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused);
|
|
970
|
+
|
|
971
|
+
function addCategoryToElements(elements, categoryName) {
|
|
972
|
+
return elements.map(function (element) {
|
|
973
|
+
return _objectSpread2(_objectSpread2({}, element), {}, {
|
|
974
|
+
category: categoryName
|
|
975
|
+
});
|
|
976
|
+
});
|
|
977
|
+
}
|
|
978
|
+
|
|
824
979
|
React.useMemo(function () {
|
|
825
980
|
setLoading(true);
|
|
826
981
|
axios.get("".concat(categoryConfig.menuData)).then(function (_ref2) {
|
|
@@ -832,25 +987,24 @@
|
|
|
832
987
|
});
|
|
833
988
|
}, [categoryConfig.menuData]);
|
|
834
989
|
React.useMemo(function () {
|
|
990
|
+
if (!initialSearchData) {
|
|
991
|
+
return;
|
|
992
|
+
}
|
|
993
|
+
|
|
835
994
|
fetchInitialSearchData(initialSearchData, setInitialSearchView);
|
|
836
995
|
}, [initialSearchData, fetchInitialSearchData]);
|
|
837
|
-
|
|
838
|
-
return elements.map(function (element) {
|
|
839
|
-
return _objectSpread2(_objectSpread2({}, element), {}, {
|
|
840
|
-
category: categoryName
|
|
841
|
-
});
|
|
842
|
-
});
|
|
843
|
-
};
|
|
996
|
+
|
|
844
997
|
var renderDropdownLinks = function renderDropdownLinks() {
|
|
845
998
|
return categoryConfig.categories.map(function (category) {
|
|
846
999
|
var title = category.title,
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
1000
|
+
imageSrc = category.imageSrc,
|
|
1001
|
+
categorySlug = category.categorySlug,
|
|
1002
|
+
categoryName = category.categoryName,
|
|
1003
|
+
elementsKey = category.elementsKey,
|
|
1004
|
+
subCategoryElementsKey = category.subCategoryElementsKey,
|
|
1005
|
+
styleElementsKey = category.styleElementsKey;
|
|
853
1006
|
var categoryElementsProcessed = categoryElements;
|
|
1007
|
+
|
|
854
1008
|
if (subCategoryElementsKey && dropdownData[subCategoryElementsKey]) {
|
|
855
1009
|
// show subcategory elements
|
|
856
1010
|
categoryElementsProcessed = removeCategoryByName(dropdownData[subCategoryElementsKey], categoryName);
|
|
@@ -859,6 +1013,7 @@
|
|
|
859
1013
|
} else {
|
|
860
1014
|
categoryElementsProcessed = addCategoryToElements(categoryElementsProcessed, categorySlug);
|
|
861
1015
|
}
|
|
1016
|
+
|
|
862
1017
|
return /*#__PURE__*/React__default.createElement(DropdownLink, {
|
|
863
1018
|
key: categorySlug,
|
|
864
1019
|
title: title,
|
|
@@ -874,11 +1029,13 @@
|
|
|
874
1029
|
});
|
|
875
1030
|
});
|
|
876
1031
|
};
|
|
1032
|
+
|
|
877
1033
|
var getMarginRight = function getMarginRight(userIsVip, userName) {
|
|
878
1034
|
if (userIsVip) return '15px';
|
|
879
1035
|
if (userName) return '5px';
|
|
880
1036
|
return '18px';
|
|
881
1037
|
};
|
|
1038
|
+
|
|
882
1039
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
883
1040
|
className: "navbar"
|
|
884
1041
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -891,7 +1048,8 @@
|
|
|
891
1048
|
className: "navbar__logo"
|
|
892
1049
|
}, /*#__PURE__*/React__default.createElement("img", {
|
|
893
1050
|
src: logoSrc,
|
|
894
|
-
alt: "luxity-logo"
|
|
1051
|
+
alt: "luxity-logo",
|
|
1052
|
+
loading: "eager"
|
|
895
1053
|
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
896
1054
|
className: "navbar__section"
|
|
897
1055
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -909,13 +1067,8 @@
|
|
|
909
1067
|
value: searchValue,
|
|
910
1068
|
onChange: handleChange,
|
|
911
1069
|
onKeyDown: handleKeyDown,
|
|
912
|
-
onClick:
|
|
913
|
-
|
|
914
|
-
setIsSearchFocused(true);
|
|
915
|
-
},
|
|
916
|
-
onFocus: function onFocus() {
|
|
917
|
-
return setIsSearchFocused(true);
|
|
918
|
-
}
|
|
1070
|
+
onClick: handleSearchClick,
|
|
1071
|
+
onFocus: handleSearchFocus
|
|
919
1072
|
})), /*#__PURE__*/React__default.createElement(SearchResults, {
|
|
920
1073
|
searchValue: searchValue,
|
|
921
1074
|
searchResults: searchResults,
|