@bonlineza/luxity-lib 2.36.1-beta.3 → 2.36.1-uk-platform.1
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/GraphQLDropdownSelector.js +5 -6
- package/Interests.js +5 -6
- package/LuxityAppSideNav.js +1 -1
- package/LuxityDesktopHeader.js +345 -384
- package/LuxityFooter.js +4 -4
- package/LuxityGraphQLDropdownSelector.js +5 -6
- package/LuxityMobileHeader.js +386 -449
- package/LuxitySideNav.js +79 -219
- package/MaterialSelector.js +5 -6
- package/ModelSelector.js +5 -6
- package/NotificationDropDown.js +5 -6
- package/build/bundle.css +1 -1
- package/build/bundle.js +520 -644
- package/package.json +2 -3
package/LuxityMobileHeader.js
CHANGED
|
@@ -116,133 +116,6 @@
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
var cssUnit = {
|
|
120
|
-
cm: true,
|
|
121
|
-
mm: true,
|
|
122
|
-
in: true,
|
|
123
|
-
px: true,
|
|
124
|
-
pt: true,
|
|
125
|
-
pc: true,
|
|
126
|
-
em: true,
|
|
127
|
-
ex: true,
|
|
128
|
-
ch: true,
|
|
129
|
-
rem: true,
|
|
130
|
-
vw: true,
|
|
131
|
-
vh: true,
|
|
132
|
-
vmin: true,
|
|
133
|
-
vmax: true,
|
|
134
|
-
"%": true,
|
|
135
|
-
};
|
|
136
|
-
/**
|
|
137
|
-
* If size is a number, append px to the value as default unit.
|
|
138
|
-
* If size is a string, validate against list of valid units.
|
|
139
|
-
* If unit is valid, return size as is.
|
|
140
|
-
* If unit is invalid, console warn issue, replace with px as the unit.
|
|
141
|
-
*
|
|
142
|
-
* @param {(number | string)} size
|
|
143
|
-
* @return {LengthObject} LengthObject
|
|
144
|
-
*/
|
|
145
|
-
function parseLengthAndUnit(size) {
|
|
146
|
-
if (typeof size === "number") {
|
|
147
|
-
return {
|
|
148
|
-
value: size,
|
|
149
|
-
unit: "px",
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
var value;
|
|
153
|
-
var valueString = (size.match(/^[0-9.]*/) || "").toString();
|
|
154
|
-
if (valueString.includes(".")) {
|
|
155
|
-
value = parseFloat(valueString);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
value = parseInt(valueString, 10);
|
|
159
|
-
}
|
|
160
|
-
var unit = (size.match(/[^0-9]*$/) || "").toString();
|
|
161
|
-
if (cssUnit[unit]) {
|
|
162
|
-
return {
|
|
163
|
-
value: value,
|
|
164
|
-
unit: unit,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
console.warn("React Spinners: ".concat(size, " is not a valid css value. Defaulting to ").concat(value, "px."));
|
|
168
|
-
return {
|
|
169
|
-
value: value,
|
|
170
|
-
unit: "px",
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Take value as an input and return valid css value
|
|
175
|
-
*
|
|
176
|
-
* @param {(number | string)} value
|
|
177
|
-
* @return {string} valid css value
|
|
178
|
-
*/
|
|
179
|
-
function cssValue(value) {
|
|
180
|
-
var lengthWithunit = parseLengthAndUnit(value);
|
|
181
|
-
return "".concat(lengthWithunit.value).concat(lengthWithunit.unit);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
var createAnimation = function (loaderName, frames, suffix) {
|
|
185
|
-
var animationName = "react-spinners-".concat(loaderName, "-").concat(suffix);
|
|
186
|
-
if (typeof window == "undefined" || !window.document) {
|
|
187
|
-
return animationName;
|
|
188
|
-
}
|
|
189
|
-
var styleEl = document.createElement("style");
|
|
190
|
-
document.head.appendChild(styleEl);
|
|
191
|
-
var styleSheet = styleEl.sheet;
|
|
192
|
-
var keyFrames = "\n @keyframes ".concat(animationName, " {\n ").concat(frames, "\n }\n ");
|
|
193
|
-
if (styleSheet) {
|
|
194
|
-
styleSheet.insertRule(keyFrames, 0);
|
|
195
|
-
}
|
|
196
|
-
return animationName;
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
var __assign = (undefined && undefined.__assign) || function () {
|
|
200
|
-
__assign = Object.assign || function(t) {
|
|
201
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
202
|
-
s = arguments[i];
|
|
203
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
204
|
-
t[p] = s[p];
|
|
205
|
-
}
|
|
206
|
-
return t;
|
|
207
|
-
};
|
|
208
|
-
return __assign.apply(this, arguments);
|
|
209
|
-
};
|
|
210
|
-
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
211
|
-
var t = {};
|
|
212
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
213
|
-
t[p] = s[p];
|
|
214
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
215
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
216
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
217
|
-
t[p[i]] = s[p[i]];
|
|
218
|
-
}
|
|
219
|
-
return t;
|
|
220
|
-
};
|
|
221
|
-
var beat = createAnimation("BeatLoader", "50% {transform: scale(0.75);opacity: 0.2} 100% {transform: scale(1);opacity: 1}", "beat");
|
|
222
|
-
function BeatLoader(_a) {
|
|
223
|
-
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"]);
|
|
224
|
-
var wrapper = __assign({ display: "inherit" }, cssOverride);
|
|
225
|
-
var style = function (i) {
|
|
226
|
-
return {
|
|
227
|
-
display: "inline-block",
|
|
228
|
-
backgroundColor: color,
|
|
229
|
-
width: cssValue(size),
|
|
230
|
-
height: cssValue(size),
|
|
231
|
-
margin: cssValue(margin),
|
|
232
|
-
borderRadius: "100%",
|
|
233
|
-
animation: "".concat(beat, " ").concat(0.7 / speedMultiplier, "s ").concat(i % 2 ? "0s" : "".concat(0.35 / speedMultiplier, "s"), " infinite linear"),
|
|
234
|
-
animationFillMode: "both",
|
|
235
|
-
};
|
|
236
|
-
};
|
|
237
|
-
if (!loading) {
|
|
238
|
-
return null;
|
|
239
|
-
}
|
|
240
|
-
return (React.createElement("span", __assign({ style: wrapper }, additionalprops),
|
|
241
|
-
React.createElement("span", { style: style(1) }),
|
|
242
|
-
React.createElement("span", { style: style(2) }),
|
|
243
|
-
React.createElement("span", { style: style(3) })));
|
|
244
|
-
}
|
|
245
|
-
|
|
246
119
|
var LuxityAppSideNav = function LuxityAppSideNav(_ref) {
|
|
247
120
|
var closeIcon = _ref.closeIcon,
|
|
248
121
|
accountIcon = _ref.accountIcon,
|
|
@@ -300,7 +173,7 @@
|
|
|
300
173
|
src: accountIcon,
|
|
301
174
|
alt: "close-icon",
|
|
302
175
|
className: "side-nav__menu-icon"
|
|
303
|
-
}), "Account"))), /*#__PURE__*/React__default.createElement("div", {
|
|
176
|
+
}), "Account"))), onInterestClick && /*#__PURE__*/React__default.createElement("div", {
|
|
304
177
|
className: "side-nav__menu-item"
|
|
305
178
|
}, /*#__PURE__*/React__default.createElement("button", {
|
|
306
179
|
type: "button",
|
|
@@ -544,33 +417,10 @@
|
|
|
544
417
|
var removeCategoryByName = function removeCategoryByName(categories, name) {
|
|
545
418
|
var _categories$filter;
|
|
546
419
|
return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
|
|
547
|
-
return category.name !== name;
|
|
420
|
+
return category.name.toLowerCase() !== name.toLowerCase();
|
|
548
421
|
})) !== null && _categories$filter !== void 0 ? _categories$filter : [];
|
|
549
422
|
};
|
|
550
423
|
|
|
551
|
-
var categories = {
|
|
552
|
-
shoes: {
|
|
553
|
-
name: 'Shoes',
|
|
554
|
-
slug: 'shoes'
|
|
555
|
-
},
|
|
556
|
-
bags: {
|
|
557
|
-
name: 'Bags',
|
|
558
|
-
slug: 'bags'
|
|
559
|
-
},
|
|
560
|
-
clothing: {
|
|
561
|
-
name: 'Clothing',
|
|
562
|
-
slug: 'apparel'
|
|
563
|
-
},
|
|
564
|
-
watches: {
|
|
565
|
-
name: 'Watches',
|
|
566
|
-
slug: 'watches'
|
|
567
|
-
},
|
|
568
|
-
accessories: {
|
|
569
|
-
name: 'Accessories',
|
|
570
|
-
slug: 'accessories'
|
|
571
|
-
}
|
|
572
|
-
};
|
|
573
|
-
|
|
574
424
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
575
425
|
|
|
576
426
|
/* position relative is required for the Body element to be positioned correctly */
|
|
@@ -769,7 +619,8 @@
|
|
|
769
619
|
onCartClick = _ref.onCartClick,
|
|
770
620
|
onContactUsClick = _ref.onContactUsClick,
|
|
771
621
|
onOurStoryClick = _ref.onOurStoryClick,
|
|
772
|
-
onBlogClick = _ref.onBlogClick,
|
|
622
|
+
_ref$onBlogClick = _ref.onBlogClick,
|
|
623
|
+
onBlogClick = _ref$onBlogClick === void 0 ? undefined : _ref$onBlogClick,
|
|
773
624
|
onSellToUsClick = _ref.onSellToUsClick,
|
|
774
625
|
stores = _ref.stores,
|
|
775
626
|
categoryElements = _ref.categoryElements,
|
|
@@ -781,7 +632,8 @@
|
|
|
781
632
|
onCurrencyChange = _ref.onCurrencyChange,
|
|
782
633
|
isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
|
|
783
634
|
tooltipContent = _ref.tooltipContent,
|
|
784
|
-
LinkComponent = _ref.LinkComponent
|
|
635
|
+
LinkComponent = _ref.LinkComponent,
|
|
636
|
+
categoryConfig = _ref.categoryConfig;
|
|
785
637
|
var _useState = React.useState(false),
|
|
786
638
|
_useState2 = _slicedToArray(_useState, 2),
|
|
787
639
|
subMenuOpen = _useState2[0],
|
|
@@ -794,16 +646,7 @@
|
|
|
794
646
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
795
647
|
loading = _useState6[0],
|
|
796
648
|
setLoading = _useState6[1];
|
|
797
|
-
var _useState7 = React.useState({
|
|
798
|
-
latestArrivals: [],
|
|
799
|
-
bags: [],
|
|
800
|
-
shoes: [],
|
|
801
|
-
apparel: [],
|
|
802
|
-
accessories: [],
|
|
803
|
-
watches: [],
|
|
804
|
-
accessoriesCategories: [],
|
|
805
|
-
apparelStyles: []
|
|
806
|
-
}),
|
|
649
|
+
var _useState7 = React.useState({}),
|
|
807
650
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
808
651
|
dropdownData = _useState8[0],
|
|
809
652
|
setDropdownData = _useState8[1];
|
|
@@ -845,22 +688,77 @@
|
|
|
845
688
|
axios.get("".concat(menuData)).then(function (_ref2) {
|
|
846
689
|
var data = _ref2.data;
|
|
847
690
|
setLoading(false);
|
|
848
|
-
setDropdownData(
|
|
849
|
-
return _objectSpread2(_objectSpread2({}, prev), {}, {
|
|
850
|
-
latestArrivals: data.latest_arrivals,
|
|
851
|
-
bags: data.bags,
|
|
852
|
-
shoes: data.shoes,
|
|
853
|
-
apparel: data.apparel,
|
|
854
|
-
accessories: data.accessories,
|
|
855
|
-
watches: data.watches,
|
|
856
|
-
accessoriesCategories: data.accessories_categories,
|
|
857
|
-
apparelStyles: data.apparel_styles
|
|
858
|
-
});
|
|
859
|
-
});
|
|
691
|
+
setDropdownData(data);
|
|
860
692
|
}).catch(function () {
|
|
861
693
|
return setHasError(true);
|
|
862
694
|
});
|
|
863
695
|
}, [menuData]);
|
|
696
|
+
var renderMenuItems = function renderMenuItems() {
|
|
697
|
+
return categoryConfig.categories.map(function (category) {
|
|
698
|
+
var title = category.title,
|
|
699
|
+
categorySlug = category.categorySlug;
|
|
700
|
+
var slug = categorySlug;
|
|
701
|
+
if (categorySlug === 'brands') {
|
|
702
|
+
slug = 'new';
|
|
703
|
+
}
|
|
704
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
705
|
+
className: "side-nav__menu-item"
|
|
706
|
+
}, /*#__PURE__*/React__default.createElement("button", {
|
|
707
|
+
type: "button",
|
|
708
|
+
className: "side-nav__menu-title-wrapper",
|
|
709
|
+
onClick: function onClick() {
|
|
710
|
+
return onSubMenuClick(slug);
|
|
711
|
+
}
|
|
712
|
+
}, /*#__PURE__*/React__default.createElement("span", {
|
|
713
|
+
className: "side-nav__menu-title"
|
|
714
|
+
}, title), /*#__PURE__*/React__default.createElement("img", {
|
|
715
|
+
src: accordionIcon,
|
|
716
|
+
alt: "accordion-icon",
|
|
717
|
+
className: "side-nav__accordion-icon"
|
|
718
|
+
})));
|
|
719
|
+
});
|
|
720
|
+
};
|
|
721
|
+
var renderDropdownLinks = function renderDropdownLinks() {
|
|
722
|
+
return categoryConfig.categories.map(function (category) {
|
|
723
|
+
var categorySlug = category.categorySlug,
|
|
724
|
+
categoryName = category.categoryName,
|
|
725
|
+
elementsKey = category.elementsKey,
|
|
726
|
+
subCategoryElementsKey = category.subCategoryElementsKey,
|
|
727
|
+
styleElementsKey = category.styleElementsKey;
|
|
728
|
+
var categoryElementsProcessed = categoryElements;
|
|
729
|
+
if (subCategoryElementsKey && dropdownData[subCategoryElementsKey]) {
|
|
730
|
+
// show subcategory elements
|
|
731
|
+
categoryElementsProcessed = removeCategoryByName(dropdownData[subCategoryElementsKey], categoryName);
|
|
732
|
+
} else if (styleElementsKey && dropdownData[styleElementsKey]) {
|
|
733
|
+
categoryElementsProcessed = addCategoryToElements(dropdownData[styleElementsKey], categorySlug);
|
|
734
|
+
} else {
|
|
735
|
+
categoryElementsProcessed = addCategoryToElements(categoryElementsProcessed, categorySlug);
|
|
736
|
+
}
|
|
737
|
+
var subMenuTitle = 'Brands';
|
|
738
|
+
if (categorySlug !== 'brands') {
|
|
739
|
+
subMenuTitle = "".concat(categoryName, " Brands");
|
|
740
|
+
}
|
|
741
|
+
var subMenu = categorySlug;
|
|
742
|
+
if (subMenu === 'brands') {
|
|
743
|
+
subMenu = 'new';
|
|
744
|
+
}
|
|
745
|
+
return /*#__PURE__*/React__default.createElement(BrandsDropDown, {
|
|
746
|
+
subMenuOpen: subMenuOpen && displayedSubMenu === subMenu,
|
|
747
|
+
onBackClick: onBackClick,
|
|
748
|
+
backIcon: backIcon,
|
|
749
|
+
subMenuCategoryTitle: "Department",
|
|
750
|
+
productUrl: productUrl,
|
|
751
|
+
categoryElements: categoryElementsProcessed,
|
|
752
|
+
subMenuBrandsTitle: subMenuTitle,
|
|
753
|
+
brandsList: dropdownData[elementsKey],
|
|
754
|
+
categorySlug: displayedSubMenu,
|
|
755
|
+
isLoading: loading,
|
|
756
|
+
hasError: hasError,
|
|
757
|
+
onCloseSideNav: onCloseSideNav,
|
|
758
|
+
LinkComponent: LinkComponent
|
|
759
|
+
});
|
|
760
|
+
});
|
|
761
|
+
};
|
|
864
762
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
865
763
|
className: "side-nav"
|
|
866
764
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -881,91 +779,7 @@
|
|
|
881
779
|
className: "side-nav__close-icon"
|
|
882
780
|
})), /*#__PURE__*/React__default.createElement("div", {
|
|
883
781
|
className: "side-nav__menu-items-wrapper"
|
|
884
|
-
}, /*#__PURE__*/React__default.createElement("div", {
|
|
885
|
-
className: "side-nav__menu-item"
|
|
886
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
887
|
-
type: "button",
|
|
888
|
-
className: "side-nav__menu-title-wrapper",
|
|
889
|
-
onClick: function onClick() {
|
|
890
|
-
return onSubMenuClick('new');
|
|
891
|
-
}
|
|
892
|
-
}, /*#__PURE__*/React__default.createElement("span", {
|
|
893
|
-
className: "side-nav__menu-title"
|
|
894
|
-
}, "New"), /*#__PURE__*/React__default.createElement("img", {
|
|
895
|
-
src: accordionIcon,
|
|
896
|
-
alt: "accordion-icon",
|
|
897
|
-
className: "side-nav__accordion-icon"
|
|
898
|
-
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
899
|
-
className: "side-nav__menu-item"
|
|
900
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
901
|
-
type: "button",
|
|
902
|
-
className: "side-nav__menu-title-wrapper",
|
|
903
|
-
onClick: function onClick() {
|
|
904
|
-
return onSubMenuClick('bags');
|
|
905
|
-
}
|
|
906
|
-
}, /*#__PURE__*/React__default.createElement("span", {
|
|
907
|
-
className: "side-nav__menu-title"
|
|
908
|
-
}, "Bags"), /*#__PURE__*/React__default.createElement("img", {
|
|
909
|
-
src: accordionIcon,
|
|
910
|
-
alt: "accordion-icon",
|
|
911
|
-
className: "side-nav__accordion-icon"
|
|
912
|
-
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
913
|
-
className: "side-nav__menu-item"
|
|
914
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
915
|
-
type: "button",
|
|
916
|
-
className: "side-nav__menu-title-wrapper",
|
|
917
|
-
onClick: function onClick() {
|
|
918
|
-
return onSubMenuClick('shoes');
|
|
919
|
-
}
|
|
920
|
-
}, /*#__PURE__*/React__default.createElement("span", {
|
|
921
|
-
className: "side-nav__menu-title"
|
|
922
|
-
}, "Shoes"), /*#__PURE__*/React__default.createElement("img", {
|
|
923
|
-
src: accordionIcon,
|
|
924
|
-
alt: "accordion-icon",
|
|
925
|
-
className: "side-nav__accordion-icon"
|
|
926
|
-
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
927
|
-
className: "side-nav__menu-item"
|
|
928
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
929
|
-
type: "button",
|
|
930
|
-
className: "side-nav__menu-title-wrapper",
|
|
931
|
-
onClick: function onClick() {
|
|
932
|
-
return onSubMenuClick('apparel');
|
|
933
|
-
}
|
|
934
|
-
}, /*#__PURE__*/React__default.createElement("span", {
|
|
935
|
-
className: "side-nav__menu-title"
|
|
936
|
-
}, "Clothing"), /*#__PURE__*/React__default.createElement("img", {
|
|
937
|
-
src: accordionIcon,
|
|
938
|
-
alt: "accordion-icon",
|
|
939
|
-
className: "side-nav__accordion-icon"
|
|
940
|
-
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
941
|
-
className: "side-nav__menu-item"
|
|
942
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
943
|
-
type: "button",
|
|
944
|
-
className: "side-nav__menu-title-wrapper",
|
|
945
|
-
onClick: function onClick() {
|
|
946
|
-
return onSubMenuClick('accessories');
|
|
947
|
-
}
|
|
948
|
-
}, /*#__PURE__*/React__default.createElement("span", {
|
|
949
|
-
className: "side-nav__menu-title"
|
|
950
|
-
}, "Accessories"), /*#__PURE__*/React__default.createElement("img", {
|
|
951
|
-
src: accordionIcon,
|
|
952
|
-
alt: "accordion-icon",
|
|
953
|
-
className: "side-nav__accordion-icon"
|
|
954
|
-
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
955
|
-
className: "side-nav__menu-item"
|
|
956
|
-
}, /*#__PURE__*/React__default.createElement("button", {
|
|
957
|
-
type: "button",
|
|
958
|
-
className: "side-nav__menu-title-wrapper",
|
|
959
|
-
onClick: function onClick() {
|
|
960
|
-
return onSubMenuClick('watches');
|
|
961
|
-
}
|
|
962
|
-
}, /*#__PURE__*/React__default.createElement("span", {
|
|
963
|
-
className: "side-nav__menu-title"
|
|
964
|
-
}, "Watches"), /*#__PURE__*/React__default.createElement("img", {
|
|
965
|
-
src: accordionIcon,
|
|
966
|
-
alt: "accordion-icon",
|
|
967
|
-
className: "side-nav__accordion-icon"
|
|
968
|
-
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
782
|
+
}, renderMenuItems(), !!stores.length && /*#__PURE__*/React__default.createElement("div", {
|
|
969
783
|
className: "side-nav__menu-item"
|
|
970
784
|
}, /*#__PURE__*/React__default.createElement("button", {
|
|
971
785
|
type: "button",
|
|
@@ -989,7 +803,7 @@
|
|
|
989
803
|
type: "button",
|
|
990
804
|
className: "side-nav__sub-link",
|
|
991
805
|
onClick: onOurStoryClick
|
|
992
|
-
}, "Our Story")), /*#__PURE__*/React__default.createElement("div", {
|
|
806
|
+
}, "Our Story")), typeof onBlogClick === 'function' && /*#__PURE__*/React__default.createElement("div", {
|
|
993
807
|
className: "side-nav__menu-item"
|
|
994
808
|
}, /*#__PURE__*/React__default.createElement("button", {
|
|
995
809
|
type: "button",
|
|
@@ -1019,91 +833,7 @@
|
|
|
1019
833
|
onCurrencyChange: onCurrencyChange,
|
|
1020
834
|
isCurrencySelectionDisabled: isCurrencySelectionDisabled,
|
|
1021
835
|
tooltipContent: tooltipContent
|
|
1022
|
-
}))), /*#__PURE__*/React__default.createElement(
|
|
1023
|
-
subMenuOpen: subMenuOpen && displayedSubMenu === 'new',
|
|
1024
|
-
onBackClick: onBackClick,
|
|
1025
|
-
backIcon: backIcon,
|
|
1026
|
-
subMenuCategoryTitle: "Department",
|
|
1027
|
-
productUrl: productUrl,
|
|
1028
|
-
categoryElements: categoryElements,
|
|
1029
|
-
subMenuBrandsTitle: "Brands",
|
|
1030
|
-
brandsList: dropdownData.latestArrivals,
|
|
1031
|
-
categorySlug: displayedSubMenu,
|
|
1032
|
-
isLoading: loading,
|
|
1033
|
-
hasError: hasError,
|
|
1034
|
-
onCloseSideNav: onCloseSideNav,
|
|
1035
|
-
LinkComponent: LinkComponent
|
|
1036
|
-
}), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
|
|
1037
|
-
subMenuOpen: subMenuOpen && displayedSubMenu === 'bags',
|
|
1038
|
-
onBackClick: onBackClick,
|
|
1039
|
-
backIcon: backIcon,
|
|
1040
|
-
subMenuCategoryTitle: "Department",
|
|
1041
|
-
productUrl: productUrl,
|
|
1042
|
-
categoryElements: addCategoryToElements(categoryElements, categories.bags.slug),
|
|
1043
|
-
subMenuBrandsTitle: "Bag Brands",
|
|
1044
|
-
brandsList: dropdownData.bags,
|
|
1045
|
-
categorySlug: displayedSubMenu,
|
|
1046
|
-
isLoading: loading,
|
|
1047
|
-
hasError: hasError,
|
|
1048
|
-
onCloseSideNav: onCloseSideNav,
|
|
1049
|
-
LinkComponent: LinkComponent
|
|
1050
|
-
}), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
|
|
1051
|
-
subMenuOpen: subMenuOpen && displayedSubMenu === 'shoes',
|
|
1052
|
-
onBackClick: onBackClick,
|
|
1053
|
-
backIcon: backIcon,
|
|
1054
|
-
subMenuCategoryTitle: "Department",
|
|
1055
|
-
productUrl: productUrl,
|
|
1056
|
-
categoryElements: addCategoryToElements(categoryElements, categories.shoes.slug),
|
|
1057
|
-
subMenuBrandsTitle: "Shoe Brands",
|
|
1058
|
-
brandsList: dropdownData.shoes,
|
|
1059
|
-
categorySlug: displayedSubMenu,
|
|
1060
|
-
isLoading: loading,
|
|
1061
|
-
hasError: hasError,
|
|
1062
|
-
onCloseSideNav: onCloseSideNav,
|
|
1063
|
-
LinkComponent: LinkComponent
|
|
1064
|
-
}), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
|
|
1065
|
-
subMenuOpen: subMenuOpen && displayedSubMenu === 'apparel',
|
|
1066
|
-
onBackClick: onBackClick,
|
|
1067
|
-
backIcon: backIcon,
|
|
1068
|
-
subMenuCategoryTitle: "Department",
|
|
1069
|
-
productUrl: productUrl,
|
|
1070
|
-
categoryElements: addCategoryToElements(dropdownData.apparelStyles, categories.clothing.slug),
|
|
1071
|
-
subMenuBrandsTitle: "Clothing Brands",
|
|
1072
|
-
brandsList: dropdownData.apparel,
|
|
1073
|
-
categorySlug: displayedSubMenu,
|
|
1074
|
-
isLoading: loading,
|
|
1075
|
-
hasError: hasError,
|
|
1076
|
-
onCloseSideNav: onCloseSideNav,
|
|
1077
|
-
LinkComponent: LinkComponent
|
|
1078
|
-
}), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
|
|
1079
|
-
subMenuOpen: subMenuOpen && displayedSubMenu === 'accessories',
|
|
1080
|
-
onBackClick: onBackClick,
|
|
1081
|
-
backIcon: backIcon,
|
|
1082
|
-
subMenuCategoryTitle: "Categories",
|
|
1083
|
-
productUrl: productUrl,
|
|
1084
|
-
categoryElements: removeCategoryByName(dropdownData.accessoriesCategories, 'ACCESSORIES'),
|
|
1085
|
-
subMenuBrandsTitle: "Accessory Brands",
|
|
1086
|
-
brandsList: dropdownData.accessories,
|
|
1087
|
-
categorySlug: displayedSubMenu,
|
|
1088
|
-
isLoading: loading,
|
|
1089
|
-
hasError: hasError,
|
|
1090
|
-
onCloseSideNav: onCloseSideNav,
|
|
1091
|
-
LinkComponent: LinkComponent
|
|
1092
|
-
}), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
|
|
1093
|
-
subMenuOpen: subMenuOpen && displayedSubMenu === 'watches',
|
|
1094
|
-
onBackClick: onBackClick,
|
|
1095
|
-
backIcon: backIcon,
|
|
1096
|
-
subMenuCategoryTitle: "Department",
|
|
1097
|
-
productUrl: productUrl,
|
|
1098
|
-
categoryElements: addCategoryToElements(categoryElements, categories.watches.slug),
|
|
1099
|
-
subMenuBrandsTitle: "Watches Brands",
|
|
1100
|
-
brandsList: dropdownData.watches,
|
|
1101
|
-
categorySlug: displayedSubMenu,
|
|
1102
|
-
isLoading: loading,
|
|
1103
|
-
hasError: hasError,
|
|
1104
|
-
onCloseSideNav: onCloseSideNav,
|
|
1105
|
-
LinkComponent: LinkComponent
|
|
1106
|
-
}), displayedSubMenu === 'stores' && /*#__PURE__*/React__default.createElement("div", {
|
|
836
|
+
}))), renderDropdownLinks(), displayedSubMenu === 'stores' && /*#__PURE__*/React__default.createElement("div", {
|
|
1107
837
|
className: "side-nav__content"
|
|
1108
838
|
}, /*#__PURE__*/React__default.createElement(StoresDropdown, {
|
|
1109
839
|
backIcon: backIcon,
|
|
@@ -1112,65 +842,239 @@
|
|
|
1112
842
|
onContactUsClick: onContactUsClick
|
|
1113
843
|
})));
|
|
1114
844
|
};
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
return {
|
|
1118
|
-
query: "\n query SearchProducts($search: String!, $limit: Int!) {\n luxity_products_serach_results(search: $search, limit: $limit) {\n brands {\n name\n link\n }\n products {\n name\n link\n }\n luxity_product_ids\n }\n }\n ",
|
|
1119
|
-
variables: {
|
|
1120
|
-
search: search,
|
|
1121
|
-
limit: limit
|
|
1122
|
-
}
|
|
1123
|
-
};
|
|
845
|
+
LuxitySideNav.defaultProps = {
|
|
846
|
+
onBlogClick: undefined
|
|
1124
847
|
};
|
|
1125
848
|
|
|
1126
849
|
var SearchResults = function SearchResults(_ref) {
|
|
850
|
+
var _searchResults$brands, _searchResults$produc, _searchResults$brands2, _searchResults$produc2, _initialSearchData$tr, _initialSearchData$la, _limitBrands, _limitBrands2, _initialSearchData$la2, _searchResults$produc3;
|
|
1127
851
|
var searchValue = _ref.searchValue,
|
|
1128
852
|
searchResults = _ref.searchResults,
|
|
1129
853
|
onViewAll = _ref.onViewAll,
|
|
1130
854
|
searchResultsRef = _ref.searchResultsRef,
|
|
1131
855
|
onSearchSubmit = _ref.onSearchSubmit,
|
|
1132
|
-
setSearchValue = _ref.setSearchValue
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
856
|
+
setSearchValue = _ref.setSearchValue,
|
|
857
|
+
initialSearchData = _ref.initialSearchData,
|
|
858
|
+
isSearchFocused = _ref.isSearchFocused,
|
|
859
|
+
setIsSearchFocused = _ref.setIsSearchFocused,
|
|
860
|
+
currency = _ref.currency,
|
|
861
|
+
currencySymbol = _ref.currencySymbol;
|
|
862
|
+
var _useState = React.useState(false),
|
|
863
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
864
|
+
isMobile = _useState2[0],
|
|
865
|
+
setIsMobile = _useState2[1];
|
|
866
|
+
React.useEffect(function () {
|
|
867
|
+
var checkIfMobile = function checkIfMobile() {
|
|
868
|
+
setIsMobile(window.innerWidth <= 1024);
|
|
869
|
+
};
|
|
870
|
+
checkIfMobile();
|
|
871
|
+
window.addEventListener('resize', checkIfMobile);
|
|
872
|
+
return function () {
|
|
873
|
+
window.removeEventListener('resize', checkIfMobile);
|
|
874
|
+
};
|
|
875
|
+
}, []);
|
|
876
|
+
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);
|
|
877
|
+
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;
|
|
878
|
+
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;
|
|
879
|
+
if (!hasResults && !hasInitialData) {
|
|
880
|
+
return null;
|
|
881
|
+
}
|
|
882
|
+
if (!isSearchFocused && !hasResults) {
|
|
883
|
+
return null;
|
|
884
|
+
}
|
|
885
|
+
var formatPrice = function formatPrice(price) {
|
|
886
|
+
var formatter = new Intl.NumberFormat(undefined, {
|
|
887
|
+
minimumFractionDigits: 0,
|
|
888
|
+
maximumFractionDigits: 2
|
|
889
|
+
});
|
|
890
|
+
return "".concat(currencySymbol).concat(formatter.format(price));
|
|
891
|
+
};
|
|
892
|
+
var renderProductCard = function renderProductCard(product) {
|
|
893
|
+
var selectedPrice = product.prices ? product.prices.find(function (p) {
|
|
894
|
+
return p.currency === currency;
|
|
895
|
+
}) : {
|
|
896
|
+
price: product.price,
|
|
897
|
+
retail_price: product.est_retail_price
|
|
898
|
+
};
|
|
899
|
+
return /*#__PURE__*/React__default.createElement("a", {
|
|
900
|
+
key: product.link,
|
|
901
|
+
href: product.link,
|
|
902
|
+
className: "product-card"
|
|
903
|
+
}, (product.image_url || product.featured_image) && /*#__PURE__*/React__default.createElement("div", {
|
|
904
|
+
className: "product-card__image-container"
|
|
905
|
+
}, /*#__PURE__*/React__default.createElement("img", {
|
|
906
|
+
src: product.featured_image,
|
|
907
|
+
alt: product.name,
|
|
908
|
+
className: "product-card__image"
|
|
1152
909
|
})), /*#__PURE__*/React__default.createElement("div", {
|
|
1153
|
-
className: "
|
|
1154
|
-
}, /*#__PURE__*/React__default.createElement("
|
|
1155
|
-
className: "
|
|
1156
|
-
}, "
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
910
|
+
className: "product-card__details"
|
|
911
|
+
}, /*#__PURE__*/React__default.createElement("h3", {
|
|
912
|
+
className: "product-card__name"
|
|
913
|
+
}, shouldShowInitialData ? /*#__PURE__*/React__default.createElement("span", null, /*#__PURE__*/React__default.createElement("span", {
|
|
914
|
+
className: "product-card__brand-name"
|
|
915
|
+
}, product.brand.toUpperCase()), ' ', product.name) : product.name), /*#__PURE__*/React__default.createElement("div", {
|
|
916
|
+
className: "product-card__info-row"
|
|
917
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
918
|
+
className: "product-card__price-group"
|
|
919
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
920
|
+
className: "product-card__price"
|
|
921
|
+
}, formatPrice(selectedPrice.price)), selectedPrice.retail_price > 1 && /*#__PURE__*/React__default.createElement("div", {
|
|
922
|
+
className: "product-card__retail-price"
|
|
923
|
+
}, "Est. Retail: ", formatPrice(selectedPrice.retail_price))), /*#__PURE__*/React__default.createElement("div", {
|
|
924
|
+
className: "product-card__condition"
|
|
925
|
+
}, /*#__PURE__*/React__default.createElement("span", {
|
|
926
|
+
className: "product-card__condition-label"
|
|
927
|
+
}, "Condition:"), product.condition))));
|
|
928
|
+
};
|
|
929
|
+
var getBrandLink = function getBrandLink(brand) {
|
|
930
|
+
return "/products/brands/".concat(brand.slug);
|
|
931
|
+
};
|
|
932
|
+
var limitBrands = function limitBrands(brands) {
|
|
933
|
+
if (isMobile && brands && brands.length > 4) {
|
|
934
|
+
return brands.slice(0, 4);
|
|
935
|
+
}
|
|
936
|
+
return brands;
|
|
937
|
+
};
|
|
938
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
939
|
+
className: "search-results",
|
|
940
|
+
ref: searchResultsRef
|
|
941
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
942
|
+
className: "search-results__section"
|
|
943
|
+
}, /*#__PURE__*/React__default.createElement("h2", {
|
|
944
|
+
className: "search-results__header"
|
|
945
|
+
}, shouldShowInitialData ? 'TRENDING SEARCHES' : 'BRANDS'), /*#__PURE__*/React__default.createElement("div", {
|
|
946
|
+
className: "search-results__list"
|
|
947
|
+
}, shouldShowInitialData ? (_limitBrands = limitBrands(initialSearchData === null || initialSearchData === void 0 ? void 0 : initialSearchData.trending_brands)) === null || _limitBrands === void 0 ? void 0 : _limitBrands.map(function (brand) {
|
|
948
|
+
return /*#__PURE__*/React__default.createElement("a", {
|
|
949
|
+
key: brand.id,
|
|
950
|
+
href: getBrandLink(brand),
|
|
951
|
+
className: "search-results__item"
|
|
952
|
+
}, brand.name);
|
|
953
|
+
}) : (_limitBrands2 = limitBrands(searchResults === null || searchResults === void 0 ? void 0 : searchResults.brands)) === null || _limitBrands2 === void 0 ? void 0 : _limitBrands2.map(function (brand) {
|
|
954
|
+
return /*#__PURE__*/React__default.createElement("a", {
|
|
955
|
+
key: brand.link,
|
|
956
|
+
href: brand.link,
|
|
957
|
+
className: "search-results__item"
|
|
958
|
+
}, brand.name);
|
|
959
|
+
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
960
|
+
className: "search-results__section"
|
|
961
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
962
|
+
className: "search-results__section-header"
|
|
963
|
+
}, /*#__PURE__*/React__default.createElement("h2", {
|
|
964
|
+
className: "search-results__header"
|
|
965
|
+
}, shouldShowInitialData ? 'POPULAR' : 'TOP MATCHES'), /*#__PURE__*/React__default.createElement("button", {
|
|
966
|
+
type: "button",
|
|
967
|
+
className: "search-results__view-all-link",
|
|
968
|
+
onClick: function onClick() {
|
|
969
|
+
onViewAll();
|
|
970
|
+
}
|
|
971
|
+
}, "View all items")), /*#__PURE__*/React__default.createElement("div", {
|
|
972
|
+
className: "search-results__product-list"
|
|
973
|
+
}, shouldShowInitialData ? initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$la2 = initialSearchData.latest_products) === null || _initialSearchData$la2 === void 0 ? void 0 : _initialSearchData$la2.map(renderProductCard) : searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc3 = searchResults.products) === null || _searchResults$produc3 === void 0 ? void 0 : _searchResults$produc3.map(renderProductCard)), /*#__PURE__*/React__default.createElement("button", {
|
|
974
|
+
type: "button",
|
|
975
|
+
className: "search-results__view-all-button",
|
|
976
|
+
onClick: function onClick() {
|
|
977
|
+
onViewAll();
|
|
978
|
+
if (!shouldShowInitialData) {
|
|
1167
979
|
onSearchSubmit(searchValue);
|
|
1168
980
|
setSearchValue('');
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
}
|
|
1172
|
-
}
|
|
1173
|
-
|
|
981
|
+
setIsSearchFocused(false);
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
}, "View all items")));
|
|
985
|
+
};
|
|
986
|
+
|
|
987
|
+
var searchProducts = function searchProducts(search, limit, currencyCode) {
|
|
988
|
+
return {
|
|
989
|
+
query: "\n query SearchProducts($search: String!, $limit: Int!, $currencyCode: String!) {\n luxity_products_serach_results(search: $search, limit: $limit, currency_code: $currencyCode) {\n brands {\n name\n link\n }\n products {\n name\n link\n price\n est_retail_price\n condition\n featured_image\n }\n luxity_product_ids\n }\n }\n ",
|
|
990
|
+
variables: {
|
|
991
|
+
search: search,
|
|
992
|
+
limit: limit,
|
|
993
|
+
currencyCode: currencyCode
|
|
994
|
+
}
|
|
995
|
+
};
|
|
996
|
+
};
|
|
997
|
+
|
|
998
|
+
var useSearch = function useSearch(_ref) {
|
|
999
|
+
var endpoint = _ref.endpoint,
|
|
1000
|
+
onProductIdsReceived = _ref.onProductIdsReceived,
|
|
1001
|
+
currency = _ref.currency;
|
|
1002
|
+
var debounce = React.useCallback(function (func, wait) {
|
|
1003
|
+
var timeout;
|
|
1004
|
+
return function executedFunction() {
|
|
1005
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
1006
|
+
args[_key] = arguments[_key];
|
|
1007
|
+
}
|
|
1008
|
+
var later = function later() {
|
|
1009
|
+
clearTimeout(timeout);
|
|
1010
|
+
func.apply(void 0, args);
|
|
1011
|
+
};
|
|
1012
|
+
clearTimeout(timeout);
|
|
1013
|
+
timeout = setTimeout(later, wait);
|
|
1014
|
+
};
|
|
1015
|
+
}, []);
|
|
1016
|
+
var fetchInitialSearchData = React.useCallback(function (initialSearchDataUrl, setInitialSearchView) {
|
|
1017
|
+
axios.get("".concat(initialSearchDataUrl)).then(function (_ref2) {
|
|
1018
|
+
var data = _ref2.data;
|
|
1019
|
+
setInitialSearchView({
|
|
1020
|
+
trending_brands: data.trending_brands,
|
|
1021
|
+
latest_products: data.latest_products
|
|
1022
|
+
});
|
|
1023
|
+
}).catch(function () {
|
|
1024
|
+
setInitialSearchView({
|
|
1025
|
+
trending_brands: [],
|
|
1026
|
+
latest_products: []
|
|
1027
|
+
});
|
|
1028
|
+
});
|
|
1029
|
+
}, []);
|
|
1030
|
+
var performSearch = React.useCallback(function (nextValue, setSearchResults) {
|
|
1031
|
+
if (!nextValue || nextValue.trim() === '') {
|
|
1032
|
+
setSearchResults({
|
|
1033
|
+
brands: [],
|
|
1034
|
+
products: [],
|
|
1035
|
+
luxity_product_ids: []
|
|
1036
|
+
});
|
|
1037
|
+
return;
|
|
1038
|
+
}
|
|
1039
|
+
axios.post(endpoint, searchProducts(nextValue, 3, currency)).then(function (response) {
|
|
1040
|
+
var searchResults = response.data.data.luxity_products_serach_results;
|
|
1041
|
+
setSearchResults(searchResults);
|
|
1042
|
+
if (searchResults && searchResults.luxity_product_ids) {
|
|
1043
|
+
onProductIdsReceived(searchResults.luxity_product_ids);
|
|
1044
|
+
}
|
|
1045
|
+
}).catch(function () {
|
|
1046
|
+
setSearchResults({
|
|
1047
|
+
brands: [],
|
|
1048
|
+
products: [],
|
|
1049
|
+
luxity_product_ids: []
|
|
1050
|
+
});
|
|
1051
|
+
});
|
|
1052
|
+
}, [endpoint, currency, onProductIdsReceived]);
|
|
1053
|
+
var debouncedSearch = React.useMemo(function () {
|
|
1054
|
+
return debounce(function (nextValue, setSearchResults) {
|
|
1055
|
+
return performSearch(nextValue, setSearchResults);
|
|
1056
|
+
}, 500);
|
|
1057
|
+
}, [debounce, performSearch]);
|
|
1058
|
+
var createDebouncedSearch = React.useCallback(function (setSearchResults) {
|
|
1059
|
+
return function (nextValue) {
|
|
1060
|
+
return debouncedSearch(nextValue, setSearchResults);
|
|
1061
|
+
};
|
|
1062
|
+
}, [debouncedSearch]);
|
|
1063
|
+
var createImmediateSearch = React.useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
|
|
1064
|
+
return function (value) {
|
|
1065
|
+
setSearchValue('');
|
|
1066
|
+
setSearchResults({
|
|
1067
|
+
brands: [],
|
|
1068
|
+
products: []
|
|
1069
|
+
});
|
|
1070
|
+
onSearchSubmit(value);
|
|
1071
|
+
};
|
|
1072
|
+
}, []);
|
|
1073
|
+
return {
|
|
1074
|
+
fetchInitialSearchData: fetchInitialSearchData,
|
|
1075
|
+
createDebouncedSearch: createDebouncedSearch,
|
|
1076
|
+
createImmediateSearch: createImmediateSearch
|
|
1077
|
+
};
|
|
1174
1078
|
};
|
|
1175
1079
|
|
|
1176
1080
|
var LuxityMobileHeader = function LuxityMobileHeader(_ref) {
|
|
@@ -1193,13 +1097,15 @@
|
|
|
1193
1097
|
onDashboardClick = _ref.onDashboardClick,
|
|
1194
1098
|
onContactUsClick = _ref.onContactUsClick,
|
|
1195
1099
|
onOurStoryClick = _ref.onOurStoryClick,
|
|
1196
|
-
onBlogClick = _ref.onBlogClick,
|
|
1100
|
+
_ref$onBlogClick = _ref.onBlogClick,
|
|
1101
|
+
onBlogClick = _ref$onBlogClick === void 0 ? undefined : _ref$onBlogClick,
|
|
1197
1102
|
bugReportLink = _ref.bugReportLink,
|
|
1198
1103
|
onSellToUsClick = _ref.onSellToUsClick,
|
|
1199
1104
|
onLogoClick = _ref.onLogoClick,
|
|
1200
1105
|
onLuxityShopClick = _ref.onLuxityShopClick,
|
|
1201
1106
|
endpoint = _ref.endpoint,
|
|
1202
1107
|
menuData = _ref.menuData,
|
|
1108
|
+
initialSearchData = _ref.initialSearchData,
|
|
1203
1109
|
onSearchSubmit = _ref.onSearchSubmit,
|
|
1204
1110
|
onProductIdsReceived = _ref.onProductIdsReceived,
|
|
1205
1111
|
onLogoutClick = _ref.onLogoutClick,
|
|
@@ -1213,13 +1119,23 @@
|
|
|
1213
1119
|
onPastSalesClick = _ref.onPastSalesClick,
|
|
1214
1120
|
onPaidOutClick = _ref.onPaidOutClick,
|
|
1215
1121
|
currency = _ref.currency,
|
|
1122
|
+
currencySymbol = _ref.currencySymbol,
|
|
1216
1123
|
currencyOptions = _ref.currencyOptions,
|
|
1217
1124
|
onCurrencyChange = _ref.onCurrencyChange,
|
|
1218
1125
|
isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
|
|
1219
1126
|
tooltipContent = _ref.tooltipContent,
|
|
1220
1127
|
LinkComponent = _ref.LinkComponent,
|
|
1221
1128
|
shop = _ref.shop,
|
|
1222
|
-
app = _ref.app
|
|
1129
|
+
app = _ref.app,
|
|
1130
|
+
categoryConfig = _ref.categoryConfig;
|
|
1131
|
+
var _useSearch = useSearch({
|
|
1132
|
+
endpoint: endpoint,
|
|
1133
|
+
onProductIdsReceived: onProductIdsReceived,
|
|
1134
|
+
currency: currency
|
|
1135
|
+
}),
|
|
1136
|
+
fetchInitialSearchData = _useSearch.fetchInitialSearchData,
|
|
1137
|
+
createDebouncedSearch = _useSearch.createDebouncedSearch,
|
|
1138
|
+
createImmediateSearch = _useSearch.createImmediateSearch;
|
|
1223
1139
|
var _useState = React.useState(''),
|
|
1224
1140
|
_useState2 = _slicedToArray(_useState, 2),
|
|
1225
1141
|
searchValue = _useState2[0],
|
|
@@ -1232,53 +1148,32 @@
|
|
|
1232
1148
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
1233
1149
|
showSideNav = _useState6[0],
|
|
1234
1150
|
setShowSideNav = _useState6[1];
|
|
1235
|
-
var _useState7 = React.useState(
|
|
1236
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
1237
|
-
searchLoading = _useState8[0],
|
|
1238
|
-
setSearchLoading = _useState8[1];
|
|
1239
|
-
var _useState9 = React.useState({
|
|
1151
|
+
var _useState7 = React.useState({
|
|
1240
1152
|
brands: [],
|
|
1241
1153
|
products: []
|
|
1242
1154
|
}),
|
|
1155
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
1156
|
+
searchResults = _useState8[0],
|
|
1157
|
+
setSearchResults = _useState8[1];
|
|
1158
|
+
var _useState9 = React.useState(false),
|
|
1243
1159
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
var
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
timeout = setTimeout(later, wait);
|
|
1258
|
-
};
|
|
1259
|
-
};
|
|
1260
|
-
var debouncedSearch = React.useCallback(debounce(function (nextValue) {
|
|
1261
|
-
setSearchLoading(true);
|
|
1262
|
-
axios.post(endpoint, searchProducts(nextValue, 6)).then(function (response) {
|
|
1263
|
-
setSearchResults(response.data.data.luxity_products_serach_results);
|
|
1264
|
-
var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
|
|
1265
|
-
onProductIdsReceived(ids);
|
|
1266
|
-
setSearchLoading(false);
|
|
1267
|
-
}).catch(function () {
|
|
1268
|
-
setSearchLoading(false);
|
|
1269
|
-
});
|
|
1270
|
-
}, 500), [endpoint]);
|
|
1271
|
-
var immediateSearch = React.useCallback(function (value) {
|
|
1272
|
-
setSearchValue('');
|
|
1273
|
-
setSearchResults({
|
|
1274
|
-
brands: [],
|
|
1275
|
-
products: []
|
|
1276
|
-
});
|
|
1277
|
-
onSearchSubmit(value);
|
|
1278
|
-
}, [onSearchSubmit]);
|
|
1160
|
+
isSearchFocused = _useState10[0],
|
|
1161
|
+
setIsSearchFocused = _useState10[1];
|
|
1162
|
+
var _useState11 = React.useState({
|
|
1163
|
+
trending_brands: [],
|
|
1164
|
+
latest_products: []
|
|
1165
|
+
}),
|
|
1166
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
1167
|
+
initialSearchView = _useState12[0],
|
|
1168
|
+
setInitialSearchView = _useState12[1];
|
|
1169
|
+
var searchResultsRef = React.useRef(null);
|
|
1170
|
+
var searchInputRef = React.useRef(null);
|
|
1171
|
+
var debouncedSearch = createDebouncedSearch(setSearchResults);
|
|
1172
|
+
var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
|
|
1279
1173
|
var handleChange = function handleChange(event) {
|
|
1280
1174
|
var value = event.target.value;
|
|
1281
1175
|
setSearchValue(value);
|
|
1176
|
+
setIsSearchFocused(true);
|
|
1282
1177
|
if (value.trim().length >= 3) {
|
|
1283
1178
|
debouncedSearch(value);
|
|
1284
1179
|
} else {
|
|
@@ -1293,16 +1188,49 @@
|
|
|
1293
1188
|
event.preventDefault();
|
|
1294
1189
|
if (searchValue.trim().length >= 3) {
|
|
1295
1190
|
immediateSearch(searchValue);
|
|
1191
|
+
setIsSearchFocused(false);
|
|
1296
1192
|
}
|
|
1297
1193
|
} else if (event.key === 'Escape') {
|
|
1298
1194
|
setSearchValue('');
|
|
1195
|
+
setIsSearchFocused(false);
|
|
1299
1196
|
}
|
|
1300
1197
|
};
|
|
1198
|
+
React.useMemo(function () {
|
|
1199
|
+
fetchInitialSearchData(initialSearchData, setInitialSearchView);
|
|
1200
|
+
}, [initialSearchData, fetchInitialSearchData]);
|
|
1201
|
+
React.useEffect(function () {
|
|
1202
|
+
var handleClickOutside = function handleClickOutside(event) {
|
|
1203
|
+
if (searchResultsRef.current && !searchResultsRef.current.contains(event.target)) {
|
|
1204
|
+
setSearchValue('');
|
|
1205
|
+
setIsSearchFocused(false);
|
|
1206
|
+
setSearchResults({
|
|
1207
|
+
brands: [],
|
|
1208
|
+
products: []
|
|
1209
|
+
});
|
|
1210
|
+
}
|
|
1211
|
+
};
|
|
1212
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
1213
|
+
return function () {
|
|
1214
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
1215
|
+
};
|
|
1216
|
+
}, []);
|
|
1217
|
+
React.useEffect(function () {
|
|
1218
|
+
if (showSearchBar && searchInputRef.current) {
|
|
1219
|
+
searchInputRef.current.focus();
|
|
1220
|
+
}
|
|
1221
|
+
}, [showSearchBar]);
|
|
1301
1222
|
var onSearchClick = function onSearchClick() {
|
|
1302
1223
|
setShowSearchbar(function (prev) {
|
|
1303
1224
|
return !prev;
|
|
1304
1225
|
});
|
|
1305
1226
|
setSearchValue('');
|
|
1227
|
+
setIsSearchFocused(!showSearchBar);
|
|
1228
|
+
if (showSearchBar) {
|
|
1229
|
+
setSearchResults({
|
|
1230
|
+
brands: [],
|
|
1231
|
+
products: []
|
|
1232
|
+
});
|
|
1233
|
+
}
|
|
1306
1234
|
};
|
|
1307
1235
|
var onMenuClick = function onMenuClick() {
|
|
1308
1236
|
setShowSideNav(function (prev) {
|
|
@@ -1364,9 +1292,9 @@
|
|
|
1364
1292
|
var handleOurStoryClick = function handleOurStoryClick() {
|
|
1365
1293
|
return handleClick(onOurStoryClick);
|
|
1366
1294
|
};
|
|
1367
|
-
var handleBlogClick = function
|
|
1295
|
+
var handleBlogClick = onBlogClick ? function () {
|
|
1368
1296
|
return handleClick(onBlogClick);
|
|
1369
|
-
};
|
|
1297
|
+
} : undefined;
|
|
1370
1298
|
return /*#__PURE__*/React__default.createElement(React.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
|
|
1371
1299
|
className: "navbar navbar__mobile-wrapper"
|
|
1372
1300
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
@@ -1418,18 +1346,16 @@
|
|
|
1418
1346
|
}, /*#__PURE__*/React__default.createElement("div", {
|
|
1419
1347
|
className: "navbar__product-search"
|
|
1420
1348
|
}, /*#__PURE__*/React__default.createElement("input", {
|
|
1349
|
+
ref: searchInputRef,
|
|
1421
1350
|
className: "navbar__form-input",
|
|
1422
1351
|
type: "text",
|
|
1423
1352
|
placeholder: "Search for items and designs",
|
|
1424
1353
|
value: searchValue,
|
|
1425
1354
|
onChange: handleChange,
|
|
1426
|
-
onKeyDown: handleKeyDown
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
size: 5,
|
|
1431
|
-
"aria-label": "Loading Spinner",
|
|
1432
|
-
"data-testid": "loader"
|
|
1355
|
+
onKeyDown: handleKeyDown,
|
|
1356
|
+
onFocus: function onFocus() {
|
|
1357
|
+
return setIsSearchFocused(true);
|
|
1358
|
+
}
|
|
1433
1359
|
})), /*#__PURE__*/React__default.createElement("button", {
|
|
1434
1360
|
type: "button",
|
|
1435
1361
|
onClick: onSearchClick
|
|
@@ -1439,14 +1365,24 @@
|
|
|
1439
1365
|
className: "navbar__input-close-icon"
|
|
1440
1366
|
})))), /*#__PURE__*/React__default.createElement(SearchResults, {
|
|
1441
1367
|
searchValue: searchValue,
|
|
1442
|
-
searchLoading: searchLoading,
|
|
1443
1368
|
searchResults: searchResults,
|
|
1444
1369
|
onViewAll: function onViewAll() {
|
|
1445
1370
|
onSearchSubmit(searchValue);
|
|
1446
1371
|
setSearchValue('');
|
|
1372
|
+
setSearchResults({
|
|
1373
|
+
brands: [],
|
|
1374
|
+
products: []
|
|
1375
|
+
});
|
|
1376
|
+
setIsSearchFocused(false);
|
|
1447
1377
|
},
|
|
1448
1378
|
onSearchSubmit: onSearchSubmit,
|
|
1449
|
-
setSearchValue: setSearchValue
|
|
1379
|
+
setSearchValue: setSearchValue,
|
|
1380
|
+
searchResultsRef: searchResultsRef,
|
|
1381
|
+
initialSearchData: initialSearchView,
|
|
1382
|
+
isSearchFocused: isSearchFocused,
|
|
1383
|
+
setIsSearchFocused: setIsSearchFocused,
|
|
1384
|
+
currency: currency,
|
|
1385
|
+
currencySymbol: currencySymbol
|
|
1450
1386
|
}), shop && /*#__PURE__*/React__default.createElement(LuxitySideNav, {
|
|
1451
1387
|
accordionIcon: accordionIcon,
|
|
1452
1388
|
logoSrc: logoSrc,
|
|
@@ -1470,7 +1406,8 @@
|
|
|
1470
1406
|
onCurrencyChange: onCurrencyChange,
|
|
1471
1407
|
isCurrencySelectionDisabled: isCurrencySelectionDisabled,
|
|
1472
1408
|
tooltipContent: tooltipContent,
|
|
1473
|
-
LinkComponent: LinkComponent
|
|
1409
|
+
LinkComponent: LinkComponent,
|
|
1410
|
+
categoryConfig: categoryConfig
|
|
1474
1411
|
}), app && /*#__PURE__*/React__default.createElement(LuxityAppSideNav, {
|
|
1475
1412
|
accordionIcon: accordionIcon,
|
|
1476
1413
|
closeIcon: closeIcon,
|