@bonlineza/luxity-lib 2.32.7 → 2.32.8
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/LuxityDesktopHeader.js +185 -34
- package/LuxityMobileHeader.js +175 -24
- package/LuxitySideNav.js +2 -2
- package/build/bundle.js +226 -50
- package/package.json +3 -1
- package/build/.gitignore +0 -3
- package/build/.npmignore +0 -0
package/LuxityDesktopHeader.js
CHANGED
|
@@ -107,6 +107,133 @@
|
|
|
107
107
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
var cssUnit = {
|
|
111
|
+
cm: true,
|
|
112
|
+
mm: true,
|
|
113
|
+
in: true,
|
|
114
|
+
px: true,
|
|
115
|
+
pt: true,
|
|
116
|
+
pc: true,
|
|
117
|
+
em: true,
|
|
118
|
+
ex: true,
|
|
119
|
+
ch: true,
|
|
120
|
+
rem: true,
|
|
121
|
+
vw: true,
|
|
122
|
+
vh: true,
|
|
123
|
+
vmin: true,
|
|
124
|
+
vmax: true,
|
|
125
|
+
"%": true,
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* If size is a number, append px to the value as default unit.
|
|
129
|
+
* If size is a string, validate against list of valid units.
|
|
130
|
+
* If unit is valid, return size as is.
|
|
131
|
+
* If unit is invalid, console warn issue, replace with px as the unit.
|
|
132
|
+
*
|
|
133
|
+
* @param {(number | string)} size
|
|
134
|
+
* @return {LengthObject} LengthObject
|
|
135
|
+
*/
|
|
136
|
+
function parseLengthAndUnit(size) {
|
|
137
|
+
if (typeof size === "number") {
|
|
138
|
+
return {
|
|
139
|
+
value: size,
|
|
140
|
+
unit: "px",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
var value;
|
|
144
|
+
var valueString = (size.match(/^[0-9.]*/) || "").toString();
|
|
145
|
+
if (valueString.includes(".")) {
|
|
146
|
+
value = parseFloat(valueString);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
value = parseInt(valueString, 10);
|
|
150
|
+
}
|
|
151
|
+
var unit = (size.match(/[^0-9]*$/) || "").toString();
|
|
152
|
+
if (cssUnit[unit]) {
|
|
153
|
+
return {
|
|
154
|
+
value: value,
|
|
155
|
+
unit: unit,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
console.warn("React Spinners: ".concat(size, " is not a valid css value. Defaulting to ").concat(value, "px."));
|
|
159
|
+
return {
|
|
160
|
+
value: value,
|
|
161
|
+
unit: "px",
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Take value as an input and return valid css value
|
|
166
|
+
*
|
|
167
|
+
* @param {(number | string)} value
|
|
168
|
+
* @return {string} valid css value
|
|
169
|
+
*/
|
|
170
|
+
function cssValue(value) {
|
|
171
|
+
var lengthWithunit = parseLengthAndUnit(value);
|
|
172
|
+
return "".concat(lengthWithunit.value).concat(lengthWithunit.unit);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
var createAnimation = function (loaderName, frames, suffix) {
|
|
176
|
+
var animationName = "react-spinners-".concat(loaderName, "-").concat(suffix);
|
|
177
|
+
if (typeof window == "undefined" || !window.document) {
|
|
178
|
+
return animationName;
|
|
179
|
+
}
|
|
180
|
+
var styleEl = document.createElement("style");
|
|
181
|
+
document.head.appendChild(styleEl);
|
|
182
|
+
var styleSheet = styleEl.sheet;
|
|
183
|
+
var keyFrames = "\n @keyframes ".concat(animationName, " {\n ").concat(frames, "\n }\n ");
|
|
184
|
+
if (styleSheet) {
|
|
185
|
+
styleSheet.insertRule(keyFrames, 0);
|
|
186
|
+
}
|
|
187
|
+
return animationName;
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
var __assign = (undefined && undefined.__assign) || function () {
|
|
191
|
+
__assign = Object.assign || function(t) {
|
|
192
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
193
|
+
s = arguments[i];
|
|
194
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
195
|
+
t[p] = s[p];
|
|
196
|
+
}
|
|
197
|
+
return t;
|
|
198
|
+
};
|
|
199
|
+
return __assign.apply(this, arguments);
|
|
200
|
+
};
|
|
201
|
+
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
202
|
+
var t = {};
|
|
203
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
204
|
+
t[p] = s[p];
|
|
205
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
206
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
207
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
208
|
+
t[p[i]] = s[p[i]];
|
|
209
|
+
}
|
|
210
|
+
return t;
|
|
211
|
+
};
|
|
212
|
+
var beat = createAnimation("BeatLoader", "50% {transform: scale(0.75);opacity: 0.2} 100% {transform: scale(1);opacity: 1}", "beat");
|
|
213
|
+
function BeatLoader(_a) {
|
|
214
|
+
var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? "#000000" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 15 : _f, _g = _a.margin, margin = _g === void 0 ? 2 : _g, additionalprops = __rest(_a, ["loading", "color", "speedMultiplier", "cssOverride", "size", "margin"]);
|
|
215
|
+
var wrapper = __assign({ display: "inherit" }, cssOverride);
|
|
216
|
+
var style = function (i) {
|
|
217
|
+
return {
|
|
218
|
+
display: "inline-block",
|
|
219
|
+
backgroundColor: color,
|
|
220
|
+
width: cssValue(size),
|
|
221
|
+
height: cssValue(size),
|
|
222
|
+
margin: cssValue(margin),
|
|
223
|
+
borderRadius: "100%",
|
|
224
|
+
animation: "".concat(beat, " ").concat(0.7 / speedMultiplier, "s ").concat(i % 2 ? "0s" : "".concat(0.35 / speedMultiplier, "s"), " infinite linear"),
|
|
225
|
+
animationFillMode: "both",
|
|
226
|
+
};
|
|
227
|
+
};
|
|
228
|
+
if (!loading) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
return (React.createElement("span", __assign({ style: wrapper }, additionalprops),
|
|
232
|
+
React.createElement("span", { style: style(1) }),
|
|
233
|
+
React.createElement("span", { style: style(2) }),
|
|
234
|
+
React.createElement("span", { style: style(3) })));
|
|
235
|
+
}
|
|
236
|
+
|
|
110
237
|
var getBrands = function getBrands() {
|
|
111
238
|
return {
|
|
112
239
|
query: "{\n latest_arrivals: luxity_brands(has_products: true, limit: 1000, page: 1, sort_by: \"name|asc\") {data {id name slug}}\n bags: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: BAGS, sort_by: \"name|asc\") {data {id name slug}}\n shoes: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: SHOES, sort_by: \"name|asc\") {data {id name slug}}\n apparel: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: APPAREL, sort_by: \"name|asc\") {data {id name slug}}\n accessories: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: ACCESSORIES, sort_by: \"name|asc\") {data {id name slug}}\n watches: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: WATCHES, sort_by: \"name|asc\") {data {id name slug}}\n accessories_categories: luxity_accessories_categories_list { id name slug }\n apparel_styles: luxity_apparel_styles_list { name slug }\n } "
|
|
@@ -259,22 +386,21 @@
|
|
|
259
386
|
|
|
260
387
|
var SearchResults = function SearchResults(_ref) {
|
|
261
388
|
var searchValue = _ref.searchValue,
|
|
262
|
-
searchLoading = _ref.searchLoading,
|
|
263
389
|
searchResults = _ref.searchResults,
|
|
264
390
|
onViewAll = _ref.onViewAll,
|
|
265
391
|
searchResultsRef = _ref.searchResultsRef,
|
|
266
392
|
onSearchSubmit = _ref.onSearchSubmit,
|
|
267
393
|
setSearchValue = _ref.setSearchValue;
|
|
268
394
|
|
|
269
|
-
if (searchValue.trim()
|
|
395
|
+
if (searchValue.trim().length >= 3) {
|
|
396
|
+
if (searchResults.brands.length === 0 && searchResults.products.length === 0) {
|
|
397
|
+
return null;
|
|
398
|
+
}
|
|
399
|
+
|
|
270
400
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
271
401
|
className: "z-50 absolute md:top-14 font-body bg-white w-full lg:w-1/2 flex flex-col md:flex-row md:divide-x divide-black lg:mt-1 shadow-md",
|
|
272
402
|
ref: searchResultsRef
|
|
273
|
-
},
|
|
274
|
-
className: "w-full py-20 flex items-center justify-center"
|
|
275
|
-
}, "Searching ...") : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, searchResults.brands.length === 0 && searchResults.products.length === 0 ? /*#__PURE__*/React__default.createElement("div", {
|
|
276
|
-
className: "w-full py-20 flex items-center justify-center"
|
|
277
|
-
}, "No products found") : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
403
|
+
}, /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
278
404
|
className: "w-full lg:w-1/3"
|
|
279
405
|
}, /*#__PURE__*/React__default.createElement("p", {
|
|
280
406
|
className: "font-bold p-2 px-4"
|
|
@@ -305,7 +431,7 @@
|
|
|
305
431
|
setSearchValue('');
|
|
306
432
|
},
|
|
307
433
|
className: "bottom-0 mt-5 py-3 w-full font-body text-center text-white uppercase bg-black hover:bg-gray-950 border border-black transition-all ease-in-out duration-300 cursor-pointer"
|
|
308
|
-
}, "View all"))))
|
|
434
|
+
}, "View all"))));
|
|
309
435
|
}
|
|
310
436
|
|
|
311
437
|
return null;
|
|
@@ -372,7 +498,7 @@
|
|
|
372
498
|
hasError = _useState8[0],
|
|
373
499
|
setHasError = _useState8[1];
|
|
374
500
|
|
|
375
|
-
var _useState9 = React.useState(
|
|
501
|
+
var _useState9 = React.useState(false),
|
|
376
502
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
377
503
|
searchLoading = _useState10[0],
|
|
378
504
|
setSearchLoading = _useState10[1];
|
|
@@ -386,6 +512,50 @@
|
|
|
386
512
|
setSearchResults = _useState12[1];
|
|
387
513
|
|
|
388
514
|
var searchResultsRef = React.useRef(null);
|
|
515
|
+
|
|
516
|
+
var debounce = function debounce(func, wait) {
|
|
517
|
+
var timeout;
|
|
518
|
+
return function executedFunction() {
|
|
519
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
520
|
+
args[_key] = arguments[_key];
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
var later = function later() {
|
|
524
|
+
clearTimeout(timeout);
|
|
525
|
+
func.apply(void 0, args);
|
|
526
|
+
};
|
|
527
|
+
|
|
528
|
+
clearTimeout(timeout);
|
|
529
|
+
timeout = setTimeout(later, wait);
|
|
530
|
+
};
|
|
531
|
+
};
|
|
532
|
+
|
|
533
|
+
var debouncedSearch = React.useCallback(debounce(function (nextValue) {
|
|
534
|
+
setSearchLoading(true);
|
|
535
|
+
axios.post(endpoint, searchProducts(nextValue, 6)).then(function (response) {
|
|
536
|
+
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
537
|
+
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
538
|
+
onProductIdsReceived(ids);
|
|
539
|
+
setSearchLoading(false);
|
|
540
|
+
}).catch(function () {
|
|
541
|
+
setSearchLoading(false);
|
|
542
|
+
});
|
|
543
|
+
}, 500), [endpoint]);
|
|
544
|
+
|
|
545
|
+
var handleChange = function handleChange(event) {
|
|
546
|
+
var value = event.target.value;
|
|
547
|
+
setSearchValue(value);
|
|
548
|
+
|
|
549
|
+
if (value.trim().length >= 3) {
|
|
550
|
+
debouncedSearch(value);
|
|
551
|
+
} else {
|
|
552
|
+
setSearchResults({
|
|
553
|
+
brands: [],
|
|
554
|
+
products: []
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
};
|
|
558
|
+
|
|
389
559
|
React.useEffect(function () {
|
|
390
560
|
var handleClickOutside = function handleClickOutside(event) {
|
|
391
561
|
if (searchResultsRef.current && !searchResultsRef.current.contains(event.target)) {
|
|
@@ -437,30 +607,6 @@
|
|
|
437
607
|
return setHasError(true);
|
|
438
608
|
});
|
|
439
609
|
}, [endpoint]);
|
|
440
|
-
|
|
441
|
-
var handleChange = function handleChange(event) {
|
|
442
|
-
var value = event.target.value;
|
|
443
|
-
setSearchValue(value);
|
|
444
|
-
onSearch(value);
|
|
445
|
-
|
|
446
|
-
if (value.trim() !== '') {
|
|
447
|
-
setSearchLoading(true);
|
|
448
|
-
axios.post(endpoint, searchProducts(value, 6)).then(function (response) {
|
|
449
|
-
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
450
|
-
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
451
|
-
onProductIdsReceived(ids);
|
|
452
|
-
setSearchLoading(false);
|
|
453
|
-
}).catch(function () {
|
|
454
|
-
setSearchLoading(false);
|
|
455
|
-
});
|
|
456
|
-
} else {
|
|
457
|
-
setSearchResults({
|
|
458
|
-
brands: [],
|
|
459
|
-
products: []
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
};
|
|
463
|
-
|
|
464
610
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
465
611
|
className: "navbar"
|
|
466
612
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -492,9 +638,14 @@
|
|
|
492
638
|
onChange: handleChange,
|
|
493
639
|
onKeyDown: handleKeyDown,
|
|
494
640
|
onClick: onSearch
|
|
641
|
+
}), searchLoading && /*#__PURE__*/React__default.createElement(BeatLoader, {
|
|
642
|
+
color: "#000000",
|
|
643
|
+
loading: searchLoading,
|
|
644
|
+
size: 5,
|
|
645
|
+
"aria-label": "Loading Spinner",
|
|
646
|
+
"data-testid": "loader"
|
|
495
647
|
})), /*#__PURE__*/React__default.createElement(SearchResults, {
|
|
496
648
|
searchValue: searchValue,
|
|
497
|
-
searchLoading: searchLoading,
|
|
498
649
|
searchResults: searchResults,
|
|
499
650
|
onViewAll: function onViewAll() {
|
|
500
651
|
onSearchSubmit(searchValue);
|
package/LuxityMobileHeader.js
CHANGED
|
@@ -107,6 +107,133 @@
|
|
|
107
107
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
var cssUnit = {
|
|
111
|
+
cm: true,
|
|
112
|
+
mm: true,
|
|
113
|
+
in: true,
|
|
114
|
+
px: true,
|
|
115
|
+
pt: true,
|
|
116
|
+
pc: true,
|
|
117
|
+
em: true,
|
|
118
|
+
ex: true,
|
|
119
|
+
ch: true,
|
|
120
|
+
rem: true,
|
|
121
|
+
vw: true,
|
|
122
|
+
vh: true,
|
|
123
|
+
vmin: true,
|
|
124
|
+
vmax: true,
|
|
125
|
+
"%": true,
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* If size is a number, append px to the value as default unit.
|
|
129
|
+
* If size is a string, validate against list of valid units.
|
|
130
|
+
* If unit is valid, return size as is.
|
|
131
|
+
* If unit is invalid, console warn issue, replace with px as the unit.
|
|
132
|
+
*
|
|
133
|
+
* @param {(number | string)} size
|
|
134
|
+
* @return {LengthObject} LengthObject
|
|
135
|
+
*/
|
|
136
|
+
function parseLengthAndUnit(size) {
|
|
137
|
+
if (typeof size === "number") {
|
|
138
|
+
return {
|
|
139
|
+
value: size,
|
|
140
|
+
unit: "px",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
var value;
|
|
144
|
+
var valueString = (size.match(/^[0-9.]*/) || "").toString();
|
|
145
|
+
if (valueString.includes(".")) {
|
|
146
|
+
value = parseFloat(valueString);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
value = parseInt(valueString, 10);
|
|
150
|
+
}
|
|
151
|
+
var unit = (size.match(/[^0-9]*$/) || "").toString();
|
|
152
|
+
if (cssUnit[unit]) {
|
|
153
|
+
return {
|
|
154
|
+
value: value,
|
|
155
|
+
unit: unit,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
console.warn("React Spinners: ".concat(size, " is not a valid css value. Defaulting to ").concat(value, "px."));
|
|
159
|
+
return {
|
|
160
|
+
value: value,
|
|
161
|
+
unit: "px",
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Take value as an input and return valid css value
|
|
166
|
+
*
|
|
167
|
+
* @param {(number | string)} value
|
|
168
|
+
* @return {string} valid css value
|
|
169
|
+
*/
|
|
170
|
+
function cssValue(value) {
|
|
171
|
+
var lengthWithunit = parseLengthAndUnit(value);
|
|
172
|
+
return "".concat(lengthWithunit.value).concat(lengthWithunit.unit);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
var createAnimation = function (loaderName, frames, suffix) {
|
|
176
|
+
var animationName = "react-spinners-".concat(loaderName, "-").concat(suffix);
|
|
177
|
+
if (typeof window == "undefined" || !window.document) {
|
|
178
|
+
return animationName;
|
|
179
|
+
}
|
|
180
|
+
var styleEl = document.createElement("style");
|
|
181
|
+
document.head.appendChild(styleEl);
|
|
182
|
+
var styleSheet = styleEl.sheet;
|
|
183
|
+
var keyFrames = "\n @keyframes ".concat(animationName, " {\n ").concat(frames, "\n }\n ");
|
|
184
|
+
if (styleSheet) {
|
|
185
|
+
styleSheet.insertRule(keyFrames, 0);
|
|
186
|
+
}
|
|
187
|
+
return animationName;
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
var __assign = (undefined && undefined.__assign) || function () {
|
|
191
|
+
__assign = Object.assign || function(t) {
|
|
192
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
193
|
+
s = arguments[i];
|
|
194
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
195
|
+
t[p] = s[p];
|
|
196
|
+
}
|
|
197
|
+
return t;
|
|
198
|
+
};
|
|
199
|
+
return __assign.apply(this, arguments);
|
|
200
|
+
};
|
|
201
|
+
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
202
|
+
var t = {};
|
|
203
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
204
|
+
t[p] = s[p];
|
|
205
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
206
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
207
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
208
|
+
t[p[i]] = s[p[i]];
|
|
209
|
+
}
|
|
210
|
+
return t;
|
|
211
|
+
};
|
|
212
|
+
var beat = createAnimation("BeatLoader", "50% {transform: scale(0.75);opacity: 0.2} 100% {transform: scale(1);opacity: 1}", "beat");
|
|
213
|
+
function BeatLoader(_a) {
|
|
214
|
+
var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? "#000000" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 15 : _f, _g = _a.margin, margin = _g === void 0 ? 2 : _g, additionalprops = __rest(_a, ["loading", "color", "speedMultiplier", "cssOverride", "size", "margin"]);
|
|
215
|
+
var wrapper = __assign({ display: "inherit" }, cssOverride);
|
|
216
|
+
var style = function (i) {
|
|
217
|
+
return {
|
|
218
|
+
display: "inline-block",
|
|
219
|
+
backgroundColor: color,
|
|
220
|
+
width: cssValue(size),
|
|
221
|
+
height: cssValue(size),
|
|
222
|
+
margin: cssValue(margin),
|
|
223
|
+
borderRadius: "100%",
|
|
224
|
+
animation: "".concat(beat, " ").concat(0.7 / speedMultiplier, "s ").concat(i % 2 ? "0s" : "".concat(0.35 / speedMultiplier, "s"), " infinite linear"),
|
|
225
|
+
animationFillMode: "both",
|
|
226
|
+
};
|
|
227
|
+
};
|
|
228
|
+
if (!loading) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
return (React.createElement("span", __assign({ style: wrapper }, additionalprops),
|
|
232
|
+
React.createElement("span", { style: style(1) }),
|
|
233
|
+
React.createElement("span", { style: style(2) }),
|
|
234
|
+
React.createElement("span", { style: style(3) })));
|
|
235
|
+
}
|
|
236
|
+
|
|
110
237
|
var LuxityAppSideNav = function LuxityAppSideNav(_ref) {
|
|
111
238
|
var closeIcon = _ref.closeIcon,
|
|
112
239
|
accountIcon = _ref.accountIcon,
|
|
@@ -362,7 +489,7 @@
|
|
|
362
489
|
className: "side-nav__elements"
|
|
363
490
|
}, categoryElements.map(function (category) {
|
|
364
491
|
return /*#__PURE__*/React__default.createElement("a", {
|
|
365
|
-
href: "".concat(productUrl, "/").concat(category.slug),
|
|
492
|
+
href: "".concat(productUrl, "/").concat(['new', 'apparel', 'accessories'].includes(categorySlug) ? category.slug : "".concat(categorySlug, "/").concat(category.slug)),
|
|
366
493
|
className: "side-nav__element"
|
|
367
494
|
}, category.name.toLowerCase());
|
|
368
495
|
})), /*#__PURE__*/React__default.createElement("br", null), /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -374,7 +501,7 @@
|
|
|
374
501
|
className: "side-nav__element"
|
|
375
502
|
}, "All Brands"), !!brandsList.length && brandsList.map(function (brand) {
|
|
376
503
|
return /*#__PURE__*/React__default.createElement("a", {
|
|
377
|
-
href: "".concat(productUrl, "/").concat(categorySlug, "/").concat(brand.slug),
|
|
504
|
+
href: "".concat(productUrl, "/").concat(categorySlug === 'new' ? 'brands' : categorySlug, "/").concat(brand.slug),
|
|
378
505
|
className: "side-nav__element"
|
|
379
506
|
}, brand.name);
|
|
380
507
|
})))));
|
|
@@ -733,22 +860,21 @@
|
|
|
733
860
|
|
|
734
861
|
var SearchResults = function SearchResults(_ref) {
|
|
735
862
|
var searchValue = _ref.searchValue,
|
|
736
|
-
searchLoading = _ref.searchLoading,
|
|
737
863
|
searchResults = _ref.searchResults,
|
|
738
864
|
onViewAll = _ref.onViewAll,
|
|
739
865
|
searchResultsRef = _ref.searchResultsRef,
|
|
740
866
|
onSearchSubmit = _ref.onSearchSubmit,
|
|
741
867
|
setSearchValue = _ref.setSearchValue;
|
|
742
868
|
|
|
743
|
-
if (searchValue.trim()
|
|
869
|
+
if (searchValue.trim().length >= 3) {
|
|
870
|
+
if (searchResults.brands.length === 0 && searchResults.products.length === 0) {
|
|
871
|
+
return null;
|
|
872
|
+
}
|
|
873
|
+
|
|
744
874
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
745
875
|
className: "z-50 absolute md:top-14 font-body bg-white w-full lg:w-1/2 flex flex-col md:flex-row md:divide-x divide-black lg:mt-1 shadow-md",
|
|
746
876
|
ref: searchResultsRef
|
|
747
|
-
},
|
|
748
|
-
className: "w-full py-20 flex items-center justify-center"
|
|
749
|
-
}, "Searching ...") : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, searchResults.brands.length === 0 && searchResults.products.length === 0 ? /*#__PURE__*/React__default.createElement("div", {
|
|
750
|
-
className: "w-full py-20 flex items-center justify-center"
|
|
751
|
-
}, "No products found") : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
877
|
+
}, /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
752
878
|
className: "w-full lg:w-1/3"
|
|
753
879
|
}, /*#__PURE__*/React__default.createElement("p", {
|
|
754
880
|
className: "font-bold p-2 px-4"
|
|
@@ -779,7 +905,7 @@
|
|
|
779
905
|
setSearchValue('');
|
|
780
906
|
},
|
|
781
907
|
className: "bottom-0 mt-5 py-3 w-full font-body text-center text-white uppercase bg-black hover:bg-gray-950 border border-black transition-all ease-in-out duration-300 cursor-pointer"
|
|
782
|
-
}, "View all"))))
|
|
908
|
+
}, "View all"))));
|
|
783
909
|
}
|
|
784
910
|
|
|
785
911
|
return null;
|
|
@@ -789,7 +915,6 @@
|
|
|
789
915
|
var logoSrc = _ref.logoSrc,
|
|
790
916
|
menuIcon = _ref.menuIcon,
|
|
791
917
|
inputSearchIcon = _ref.inputSearchIcon,
|
|
792
|
-
onSearch = _ref.onSearch,
|
|
793
918
|
onCartClick = _ref.onCartClick,
|
|
794
919
|
cartIcon = _ref.cartIcon,
|
|
795
920
|
cartCount = _ref.cartCount,
|
|
@@ -841,7 +966,7 @@
|
|
|
841
966
|
showSideNav = _useState6[0],
|
|
842
967
|
setShowSideNav = _useState6[1];
|
|
843
968
|
|
|
844
|
-
var _useState7 = React.useState(
|
|
969
|
+
var _useState7 = React.useState(false),
|
|
845
970
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
846
971
|
searchLoading = _useState8[0],
|
|
847
972
|
setSearchLoading = _useState8[1];
|
|
@@ -854,21 +979,41 @@
|
|
|
854
979
|
searchResults = _useState10[0],
|
|
855
980
|
setSearchResults = _useState10[1];
|
|
856
981
|
|
|
982
|
+
var debounce = function debounce(func, wait) {
|
|
983
|
+
var timeout;
|
|
984
|
+
return function executedFunction() {
|
|
985
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
986
|
+
args[_key] = arguments[_key];
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
var later = function later() {
|
|
990
|
+
clearTimeout(timeout);
|
|
991
|
+
func.apply(void 0, args);
|
|
992
|
+
};
|
|
993
|
+
|
|
994
|
+
clearTimeout(timeout);
|
|
995
|
+
timeout = setTimeout(later, wait);
|
|
996
|
+
};
|
|
997
|
+
};
|
|
998
|
+
|
|
999
|
+
var debouncedSearch = React.useCallback(debounce(function (nextValue) {
|
|
1000
|
+
setSearchLoading(true);
|
|
1001
|
+
axios.post(endpoint, searchProducts(nextValue, 6)).then(function (response) {
|
|
1002
|
+
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
1003
|
+
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
1004
|
+
onProductIdsReceived(ids);
|
|
1005
|
+
setSearchLoading(false);
|
|
1006
|
+
}).catch(function () {
|
|
1007
|
+
setSearchLoading(false);
|
|
1008
|
+
});
|
|
1009
|
+
}, 500), [endpoint]);
|
|
1010
|
+
|
|
857
1011
|
var handleChange = function handleChange(event) {
|
|
858
1012
|
var value = event.target.value;
|
|
859
1013
|
setSearchValue(value);
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
setSearchLoading(true);
|
|
864
|
-
axios.post(endpoint, searchProducts(value, 6)).then(function (response) {
|
|
865
|
-
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
866
|
-
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
867
|
-
onProductIdsReceived(ids);
|
|
868
|
-
setSearchLoading(false);
|
|
869
|
-
}).catch(function () {
|
|
870
|
-
setSearchLoading(false);
|
|
871
|
-
});
|
|
1014
|
+
|
|
1015
|
+
if (value.trim().length >= 3) {
|
|
1016
|
+
debouncedSearch(value);
|
|
872
1017
|
} else {
|
|
873
1018
|
setSearchResults({
|
|
874
1019
|
brands: [],
|
|
@@ -1012,6 +1157,12 @@
|
|
|
1012
1157
|
value: searchValue,
|
|
1013
1158
|
onChange: handleChange,
|
|
1014
1159
|
onKeyDown: handleKeyDown
|
|
1160
|
+
}), searchLoading && /*#__PURE__*/React__default.createElement(BeatLoader, {
|
|
1161
|
+
color: "#000000",
|
|
1162
|
+
loading: searchLoading,
|
|
1163
|
+
size: 5,
|
|
1164
|
+
"aria-label": "Loading Spinner",
|
|
1165
|
+
"data-testid": "loader"
|
|
1015
1166
|
})), /*#__PURE__*/React__default.createElement("button", {
|
|
1016
1167
|
type: "button",
|
|
1017
1168
|
onClick: onSearchClick
|
package/LuxitySideNav.js
CHANGED
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
className: "side-nav__elements"
|
|
188
188
|
}, categoryElements.map(function (category) {
|
|
189
189
|
return /*#__PURE__*/React__default.createElement("a", {
|
|
190
|
-
href: "".concat(productUrl, "/").concat(category.slug),
|
|
190
|
+
href: "".concat(productUrl, "/").concat(['new', 'apparel', 'accessories'].includes(categorySlug) ? category.slug : "".concat(categorySlug, "/").concat(category.slug)),
|
|
191
191
|
className: "side-nav__element"
|
|
192
192
|
}, category.name.toLowerCase());
|
|
193
193
|
})), /*#__PURE__*/React__default.createElement("br", null), /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
className: "side-nav__element"
|
|
200
200
|
}, "All Brands"), !!brandsList.length && brandsList.map(function (brand) {
|
|
201
201
|
return /*#__PURE__*/React__default.createElement("a", {
|
|
202
|
-
href: "".concat(productUrl, "/").concat(categorySlug, "/").concat(brand.slug),
|
|
202
|
+
href: "".concat(productUrl, "/").concat(categorySlug === 'new' ? 'brands' : categorySlug, "/").concat(brand.slug),
|
|
203
203
|
className: "side-nav__element"
|
|
204
204
|
}, brand.name);
|
|
205
205
|
})))));
|
package/build/bundle.js
CHANGED
|
@@ -14400,6 +14400,133 @@
|
|
|
14400
14400
|
|
|
14401
14401
|
var index$6 = themed(LuxityFooter);
|
|
14402
14402
|
|
|
14403
|
+
var cssUnit = {
|
|
14404
|
+
cm: true,
|
|
14405
|
+
mm: true,
|
|
14406
|
+
in: true,
|
|
14407
|
+
px: true,
|
|
14408
|
+
pt: true,
|
|
14409
|
+
pc: true,
|
|
14410
|
+
em: true,
|
|
14411
|
+
ex: true,
|
|
14412
|
+
ch: true,
|
|
14413
|
+
rem: true,
|
|
14414
|
+
vw: true,
|
|
14415
|
+
vh: true,
|
|
14416
|
+
vmin: true,
|
|
14417
|
+
vmax: true,
|
|
14418
|
+
"%": true,
|
|
14419
|
+
};
|
|
14420
|
+
/**
|
|
14421
|
+
* If size is a number, append px to the value as default unit.
|
|
14422
|
+
* If size is a string, validate against list of valid units.
|
|
14423
|
+
* If unit is valid, return size as is.
|
|
14424
|
+
* If unit is invalid, console warn issue, replace with px as the unit.
|
|
14425
|
+
*
|
|
14426
|
+
* @param {(number | string)} size
|
|
14427
|
+
* @return {LengthObject} LengthObject
|
|
14428
|
+
*/
|
|
14429
|
+
function parseLengthAndUnit(size) {
|
|
14430
|
+
if (typeof size === "number") {
|
|
14431
|
+
return {
|
|
14432
|
+
value: size,
|
|
14433
|
+
unit: "px",
|
|
14434
|
+
};
|
|
14435
|
+
}
|
|
14436
|
+
var value;
|
|
14437
|
+
var valueString = (size.match(/^[0-9.]*/) || "").toString();
|
|
14438
|
+
if (valueString.includes(".")) {
|
|
14439
|
+
value = parseFloat(valueString);
|
|
14440
|
+
}
|
|
14441
|
+
else {
|
|
14442
|
+
value = parseInt(valueString, 10);
|
|
14443
|
+
}
|
|
14444
|
+
var unit = (size.match(/[^0-9]*$/) || "").toString();
|
|
14445
|
+
if (cssUnit[unit]) {
|
|
14446
|
+
return {
|
|
14447
|
+
value: value,
|
|
14448
|
+
unit: unit,
|
|
14449
|
+
};
|
|
14450
|
+
}
|
|
14451
|
+
console.warn("React Spinners: ".concat(size, " is not a valid css value. Defaulting to ").concat(value, "px."));
|
|
14452
|
+
return {
|
|
14453
|
+
value: value,
|
|
14454
|
+
unit: "px",
|
|
14455
|
+
};
|
|
14456
|
+
}
|
|
14457
|
+
/**
|
|
14458
|
+
* Take value as an input and return valid css value
|
|
14459
|
+
*
|
|
14460
|
+
* @param {(number | string)} value
|
|
14461
|
+
* @return {string} valid css value
|
|
14462
|
+
*/
|
|
14463
|
+
function cssValue(value) {
|
|
14464
|
+
var lengthWithunit = parseLengthAndUnit(value);
|
|
14465
|
+
return "".concat(lengthWithunit.value).concat(lengthWithunit.unit);
|
|
14466
|
+
}
|
|
14467
|
+
|
|
14468
|
+
var createAnimation = function (loaderName, frames, suffix) {
|
|
14469
|
+
var animationName = "react-spinners-".concat(loaderName, "-").concat(suffix);
|
|
14470
|
+
if (typeof window == "undefined" || !window.document) {
|
|
14471
|
+
return animationName;
|
|
14472
|
+
}
|
|
14473
|
+
var styleEl = document.createElement("style");
|
|
14474
|
+
document.head.appendChild(styleEl);
|
|
14475
|
+
var styleSheet = styleEl.sheet;
|
|
14476
|
+
var keyFrames = "\n @keyframes ".concat(animationName, " {\n ").concat(frames, "\n }\n ");
|
|
14477
|
+
if (styleSheet) {
|
|
14478
|
+
styleSheet.insertRule(keyFrames, 0);
|
|
14479
|
+
}
|
|
14480
|
+
return animationName;
|
|
14481
|
+
};
|
|
14482
|
+
|
|
14483
|
+
var __assign = (undefined && undefined.__assign) || function () {
|
|
14484
|
+
__assign = Object.assign || function(t) {
|
|
14485
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
14486
|
+
s = arguments[i];
|
|
14487
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
14488
|
+
t[p] = s[p];
|
|
14489
|
+
}
|
|
14490
|
+
return t;
|
|
14491
|
+
};
|
|
14492
|
+
return __assign.apply(this, arguments);
|
|
14493
|
+
};
|
|
14494
|
+
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
14495
|
+
var t = {};
|
|
14496
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14497
|
+
t[p] = s[p];
|
|
14498
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
14499
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
14500
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
14501
|
+
t[p[i]] = s[p[i]];
|
|
14502
|
+
}
|
|
14503
|
+
return t;
|
|
14504
|
+
};
|
|
14505
|
+
var beat = createAnimation("BeatLoader", "50% {transform: scale(0.75);opacity: 0.2} 100% {transform: scale(1);opacity: 1}", "beat");
|
|
14506
|
+
function BeatLoader(_a) {
|
|
14507
|
+
var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? "#000000" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 15 : _f, _g = _a.margin, margin = _g === void 0 ? 2 : _g, additionalprops = __rest(_a, ["loading", "color", "speedMultiplier", "cssOverride", "size", "margin"]);
|
|
14508
|
+
var wrapper = __assign({ display: "inherit" }, cssOverride);
|
|
14509
|
+
var style = function (i) {
|
|
14510
|
+
return {
|
|
14511
|
+
display: "inline-block",
|
|
14512
|
+
backgroundColor: color,
|
|
14513
|
+
width: cssValue(size),
|
|
14514
|
+
height: cssValue(size),
|
|
14515
|
+
margin: cssValue(margin),
|
|
14516
|
+
borderRadius: "100%",
|
|
14517
|
+
animation: "".concat(beat, " ").concat(0.7 / speedMultiplier, "s ").concat(i % 2 ? "0s" : "".concat(0.35 / speedMultiplier, "s"), " infinite linear"),
|
|
14518
|
+
animationFillMode: "both",
|
|
14519
|
+
};
|
|
14520
|
+
};
|
|
14521
|
+
if (!loading) {
|
|
14522
|
+
return null;
|
|
14523
|
+
}
|
|
14524
|
+
return (React.createElement("span", __assign({ style: wrapper }, additionalprops),
|
|
14525
|
+
React.createElement("span", { style: style(1) }),
|
|
14526
|
+
React.createElement("span", { style: style(2) }),
|
|
14527
|
+
React.createElement("span", { style: style(3) })));
|
|
14528
|
+
}
|
|
14529
|
+
|
|
14403
14530
|
var getBrands = function getBrands() {
|
|
14404
14531
|
return {
|
|
14405
14532
|
query: "{\n latest_arrivals: luxity_brands(has_products: true, limit: 1000, page: 1, sort_by: \"name|asc\") {data {id name slug}}\n bags: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: BAGS, sort_by: \"name|asc\") {data {id name slug}}\n shoes: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: SHOES, sort_by: \"name|asc\") {data {id name slug}}\n apparel: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: APPAREL, sort_by: \"name|asc\") {data {id name slug}}\n accessories: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: ACCESSORIES, sort_by: \"name|asc\") {data {id name slug}}\n watches: luxity_brands(has_products: true, limit: 1000, page: 1, category_type: WATCHES, sort_by: \"name|asc\") {data {id name slug}}\n accessories_categories: luxity_accessories_categories_list { id name slug }\n apparel_styles: luxity_apparel_styles_list { name slug }\n } "
|
|
@@ -14552,22 +14679,21 @@
|
|
|
14552
14679
|
|
|
14553
14680
|
var SearchResults = function SearchResults(_ref) {
|
|
14554
14681
|
var searchValue = _ref.searchValue,
|
|
14555
|
-
searchLoading = _ref.searchLoading,
|
|
14556
14682
|
searchResults = _ref.searchResults,
|
|
14557
14683
|
onViewAll = _ref.onViewAll,
|
|
14558
14684
|
searchResultsRef = _ref.searchResultsRef,
|
|
14559
14685
|
onSearchSubmit = _ref.onSearchSubmit,
|
|
14560
14686
|
setSearchValue = _ref.setSearchValue;
|
|
14561
14687
|
|
|
14562
|
-
if (searchValue.trim()
|
|
14688
|
+
if (searchValue.trim().length >= 3) {
|
|
14689
|
+
if (searchResults.brands.length === 0 && searchResults.products.length === 0) {
|
|
14690
|
+
return null;
|
|
14691
|
+
}
|
|
14692
|
+
|
|
14563
14693
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
14564
14694
|
className: "z-50 absolute md:top-14 font-body bg-white w-full lg:w-1/2 flex flex-col md:flex-row md:divide-x divide-black lg:mt-1 shadow-md",
|
|
14565
14695
|
ref: searchResultsRef
|
|
14566
|
-
},
|
|
14567
|
-
className: "w-full py-20 flex items-center justify-center"
|
|
14568
|
-
}, "Searching ...") : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, searchResults.brands.length === 0 && searchResults.products.length === 0 ? /*#__PURE__*/React__default.createElement("div", {
|
|
14569
|
-
className: "w-full py-20 flex items-center justify-center"
|
|
14570
|
-
}, "No products found") : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
14696
|
+
}, /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
14571
14697
|
className: "w-full lg:w-1/3"
|
|
14572
14698
|
}, /*#__PURE__*/React__default.createElement("p", {
|
|
14573
14699
|
className: "font-bold p-2 px-4"
|
|
@@ -14598,7 +14724,7 @@
|
|
|
14598
14724
|
setSearchValue('');
|
|
14599
14725
|
},
|
|
14600
14726
|
className: "bottom-0 mt-5 py-3 w-full font-body text-center text-white uppercase bg-black hover:bg-gray-950 border border-black transition-all ease-in-out duration-300 cursor-pointer"
|
|
14601
|
-
}, "View all"))))
|
|
14727
|
+
}, "View all"))));
|
|
14602
14728
|
}
|
|
14603
14729
|
|
|
14604
14730
|
return null;
|
|
@@ -14665,7 +14791,7 @@
|
|
|
14665
14791
|
hasError = _useState8[0],
|
|
14666
14792
|
setHasError = _useState8[1];
|
|
14667
14793
|
|
|
14668
|
-
var _useState9 = React.useState(
|
|
14794
|
+
var _useState9 = React.useState(false),
|
|
14669
14795
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
14670
14796
|
searchLoading = _useState10[0],
|
|
14671
14797
|
setSearchLoading = _useState10[1];
|
|
@@ -14679,6 +14805,50 @@
|
|
|
14679
14805
|
setSearchResults = _useState12[1];
|
|
14680
14806
|
|
|
14681
14807
|
var searchResultsRef = React.useRef(null);
|
|
14808
|
+
|
|
14809
|
+
var debounce = function debounce(func, wait) {
|
|
14810
|
+
var timeout;
|
|
14811
|
+
return function executedFunction() {
|
|
14812
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
14813
|
+
args[_key] = arguments[_key];
|
|
14814
|
+
}
|
|
14815
|
+
|
|
14816
|
+
var later = function later() {
|
|
14817
|
+
clearTimeout(timeout);
|
|
14818
|
+
func.apply(void 0, args);
|
|
14819
|
+
};
|
|
14820
|
+
|
|
14821
|
+
clearTimeout(timeout);
|
|
14822
|
+
timeout = setTimeout(later, wait);
|
|
14823
|
+
};
|
|
14824
|
+
};
|
|
14825
|
+
|
|
14826
|
+
var debouncedSearch = React.useCallback(debounce(function (nextValue) {
|
|
14827
|
+
setSearchLoading(true);
|
|
14828
|
+
axios.post(endpoint, searchProducts(nextValue, 6)).then(function (response) {
|
|
14829
|
+
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
14830
|
+
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
14831
|
+
onProductIdsReceived(ids);
|
|
14832
|
+
setSearchLoading(false);
|
|
14833
|
+
}).catch(function () {
|
|
14834
|
+
setSearchLoading(false);
|
|
14835
|
+
});
|
|
14836
|
+
}, 500), [endpoint]);
|
|
14837
|
+
|
|
14838
|
+
var handleChange = function handleChange(event) {
|
|
14839
|
+
var value = event.target.value;
|
|
14840
|
+
setSearchValue(value);
|
|
14841
|
+
|
|
14842
|
+
if (value.trim().length >= 3) {
|
|
14843
|
+
debouncedSearch(value);
|
|
14844
|
+
} else {
|
|
14845
|
+
setSearchResults({
|
|
14846
|
+
brands: [],
|
|
14847
|
+
products: []
|
|
14848
|
+
});
|
|
14849
|
+
}
|
|
14850
|
+
};
|
|
14851
|
+
|
|
14682
14852
|
React.useEffect(function () {
|
|
14683
14853
|
var handleClickOutside = function handleClickOutside(event) {
|
|
14684
14854
|
if (searchResultsRef.current && !searchResultsRef.current.contains(event.target)) {
|
|
@@ -14730,30 +14900,6 @@
|
|
|
14730
14900
|
return setHasError(true);
|
|
14731
14901
|
});
|
|
14732
14902
|
}, [endpoint]);
|
|
14733
|
-
|
|
14734
|
-
var handleChange = function handleChange(event) {
|
|
14735
|
-
var value = event.target.value;
|
|
14736
|
-
setSearchValue(value);
|
|
14737
|
-
onSearch(value);
|
|
14738
|
-
|
|
14739
|
-
if (value.trim() !== '') {
|
|
14740
|
-
setSearchLoading(true);
|
|
14741
|
-
axios.post(endpoint, searchProducts(value, 6)).then(function (response) {
|
|
14742
|
-
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
14743
|
-
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
14744
|
-
onProductIdsReceived(ids);
|
|
14745
|
-
setSearchLoading(false);
|
|
14746
|
-
}).catch(function () {
|
|
14747
|
-
setSearchLoading(false);
|
|
14748
|
-
});
|
|
14749
|
-
} else {
|
|
14750
|
-
setSearchResults({
|
|
14751
|
-
brands: [],
|
|
14752
|
-
products: []
|
|
14753
|
-
});
|
|
14754
|
-
}
|
|
14755
|
-
};
|
|
14756
|
-
|
|
14757
14903
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
14758
14904
|
className: "navbar"
|
|
14759
14905
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -14785,9 +14931,14 @@
|
|
|
14785
14931
|
onChange: handleChange,
|
|
14786
14932
|
onKeyDown: handleKeyDown,
|
|
14787
14933
|
onClick: onSearch
|
|
14934
|
+
}), searchLoading && /*#__PURE__*/React__default.createElement(BeatLoader, {
|
|
14935
|
+
color: "#000000",
|
|
14936
|
+
loading: searchLoading,
|
|
14937
|
+
size: 5,
|
|
14938
|
+
"aria-label": "Loading Spinner",
|
|
14939
|
+
"data-testid": "loader"
|
|
14788
14940
|
})), /*#__PURE__*/React__default.createElement(SearchResults, {
|
|
14789
14941
|
searchValue: searchValue,
|
|
14790
|
-
searchLoading: searchLoading,
|
|
14791
14942
|
searchResults: searchResults,
|
|
14792
14943
|
onViewAll: function onViewAll() {
|
|
14793
14944
|
onSearchSubmit(searchValue);
|
|
@@ -15043,7 +15194,7 @@
|
|
|
15043
15194
|
className: "side-nav__elements"
|
|
15044
15195
|
}, categoryElements.map(function (category) {
|
|
15045
15196
|
return /*#__PURE__*/React__default.createElement("a", {
|
|
15046
|
-
href: "".concat(productUrl, "/").concat(category.slug),
|
|
15197
|
+
href: "".concat(productUrl, "/").concat(['new', 'apparel', 'accessories'].includes(categorySlug) ? category.slug : "".concat(categorySlug, "/").concat(category.slug)),
|
|
15047
15198
|
className: "side-nav__element"
|
|
15048
15199
|
}, category.name.toLowerCase());
|
|
15049
15200
|
})), /*#__PURE__*/React__default.createElement("br", null), /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -15055,7 +15206,7 @@
|
|
|
15055
15206
|
className: "side-nav__element"
|
|
15056
15207
|
}, "All Brands"), !!brandsList.length && brandsList.map(function (brand) {
|
|
15057
15208
|
return /*#__PURE__*/React__default.createElement("a", {
|
|
15058
|
-
href: "".concat(productUrl, "/").concat(categorySlug, "/").concat(brand.slug),
|
|
15209
|
+
href: "".concat(productUrl, "/").concat(categorySlug === 'new' ? 'brands' : categorySlug, "/").concat(brand.slug),
|
|
15059
15210
|
className: "side-nav__element"
|
|
15060
15211
|
}, brand.name);
|
|
15061
15212
|
})))));
|
|
@@ -15568,7 +15719,6 @@
|
|
|
15568
15719
|
var logoSrc = _ref.logoSrc,
|
|
15569
15720
|
menuIcon = _ref.menuIcon,
|
|
15570
15721
|
inputSearchIcon = _ref.inputSearchIcon,
|
|
15571
|
-
onSearch = _ref.onSearch,
|
|
15572
15722
|
onCartClick = _ref.onCartClick,
|
|
15573
15723
|
cartIcon = _ref.cartIcon,
|
|
15574
15724
|
cartCount = _ref.cartCount,
|
|
@@ -15620,7 +15770,7 @@
|
|
|
15620
15770
|
showSideNav = _useState6[0],
|
|
15621
15771
|
setShowSideNav = _useState6[1];
|
|
15622
15772
|
|
|
15623
|
-
var _useState7 = React.useState(
|
|
15773
|
+
var _useState7 = React.useState(false),
|
|
15624
15774
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
15625
15775
|
searchLoading = _useState8[0],
|
|
15626
15776
|
setSearchLoading = _useState8[1];
|
|
@@ -15633,21 +15783,41 @@
|
|
|
15633
15783
|
searchResults = _useState10[0],
|
|
15634
15784
|
setSearchResults = _useState10[1];
|
|
15635
15785
|
|
|
15786
|
+
var debounce = function debounce(func, wait) {
|
|
15787
|
+
var timeout;
|
|
15788
|
+
return function executedFunction() {
|
|
15789
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
15790
|
+
args[_key] = arguments[_key];
|
|
15791
|
+
}
|
|
15792
|
+
|
|
15793
|
+
var later = function later() {
|
|
15794
|
+
clearTimeout(timeout);
|
|
15795
|
+
func.apply(void 0, args);
|
|
15796
|
+
};
|
|
15797
|
+
|
|
15798
|
+
clearTimeout(timeout);
|
|
15799
|
+
timeout = setTimeout(later, wait);
|
|
15800
|
+
};
|
|
15801
|
+
};
|
|
15802
|
+
|
|
15803
|
+
var debouncedSearch = React.useCallback(debounce(function (nextValue) {
|
|
15804
|
+
setSearchLoading(true);
|
|
15805
|
+
axios.post(endpoint, searchProducts(nextValue, 6)).then(function (response) {
|
|
15806
|
+
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
15807
|
+
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
15808
|
+
onProductIdsReceived(ids);
|
|
15809
|
+
setSearchLoading(false);
|
|
15810
|
+
}).catch(function () {
|
|
15811
|
+
setSearchLoading(false);
|
|
15812
|
+
});
|
|
15813
|
+
}, 500), [endpoint]);
|
|
15814
|
+
|
|
15636
15815
|
var handleChange = function handleChange(event) {
|
|
15637
15816
|
var value = event.target.value;
|
|
15638
15817
|
setSearchValue(value);
|
|
15639
|
-
|
|
15640
|
-
|
|
15641
|
-
|
|
15642
|
-
setSearchLoading(true);
|
|
15643
|
-
axios.post(endpoint, searchProducts(value, 6)).then(function (response) {
|
|
15644
|
-
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
15645
|
-
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
15646
|
-
onProductIdsReceived(ids);
|
|
15647
|
-
setSearchLoading(false);
|
|
15648
|
-
}).catch(function () {
|
|
15649
|
-
setSearchLoading(false);
|
|
15650
|
-
});
|
|
15818
|
+
|
|
15819
|
+
if (value.trim().length >= 3) {
|
|
15820
|
+
debouncedSearch(value);
|
|
15651
15821
|
} else {
|
|
15652
15822
|
setSearchResults({
|
|
15653
15823
|
brands: [],
|
|
@@ -15791,6 +15961,12 @@
|
|
|
15791
15961
|
value: searchValue,
|
|
15792
15962
|
onChange: handleChange,
|
|
15793
15963
|
onKeyDown: handleKeyDown
|
|
15964
|
+
}), searchLoading && /*#__PURE__*/React__default.createElement(BeatLoader, {
|
|
15965
|
+
color: "#000000",
|
|
15966
|
+
loading: searchLoading,
|
|
15967
|
+
size: 5,
|
|
15968
|
+
"aria-label": "Loading Spinner",
|
|
15969
|
+
"data-testid": "loader"
|
|
15794
15970
|
})), /*#__PURE__*/React__default.createElement("button", {
|
|
15795
15971
|
type: "button",
|
|
15796
15972
|
onClick: onSearchClick
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bonlineza/luxity-lib",
|
|
3
|
-
"version": "2.32.
|
|
3
|
+
"version": "2.32.8",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"start": "start-storybook -p 9001 -c .storybook -s ./public",
|
|
6
6
|
"clean": "rimraf ./build/*.*",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@bonlineza/b-lib": "^4.0.0",
|
|
33
33
|
"js-cookie": "^2.2.0",
|
|
34
|
+
"lodash.debounce": "^4.0.8",
|
|
34
35
|
"numeral": "^2.0.6",
|
|
35
36
|
"polished": "^3.6.5",
|
|
36
37
|
"prop-types": "^15.7.2",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"react-is": "^16.13.1",
|
|
43
44
|
"react-notify-toast": "^0.5.1",
|
|
44
45
|
"react-select": "^2.3.0",
|
|
46
|
+
"react-spinners": "^0.13.8",
|
|
45
47
|
"regenerator-runtime": "^0.13.7",
|
|
46
48
|
"styled-system": "^5.1.5"
|
|
47
49
|
},
|
package/build/.gitignore
DELETED
package/build/.npmignore
DELETED
|
File without changes
|