@bonlineza/luxity-lib 2.36.1-beta.4 → 2.36.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.
Files changed (90) hide show
  1. package/Accordion.js +116 -76
  2. package/AddInterest.js +777 -440
  3. package/AddProductInterest.js +644 -485
  4. package/BrandSelector.js +336 -176
  5. package/Checkbox.js +101 -68
  6. package/CheckboxButton.js +124 -79
  7. package/CommunicationPreferenceOptionsRenderer.js +169 -159
  8. package/CommunicationPreferenceSection.js +178 -166
  9. package/CommunicationPreferences.js +427 -549
  10. package/ConditionSelector.js +336 -174
  11. package/CountryCodeSelect.js +10 -7
  12. package/CurrencyInputFormatter.js +56 -29
  13. package/CurrencySelect.js +49 -23
  14. package/DropdownSelector.js +92 -68
  15. package/GALink.js +16 -6
  16. package/GenderSelector.js +142 -88
  17. package/GraphQLDropdownSelector.js +1511 -933
  18. package/GraphQLMultiSelector.js +274 -141
  19. package/IconHeader.js +25 -11
  20. package/IconWrapper.js +7 -3
  21. package/InterestCatSelector.js +74 -34
  22. package/InterestItem.js +187 -103
  23. package/Interests.js +1466 -917
  24. package/InterestsSubheading.js +10 -5
  25. package/InvertedTextButton.js +63 -27
  26. package/LuxityAppSideNav.js +22 -19
  27. package/LuxityDesktopHeader.js +663 -549
  28. package/LuxityFooter.js +325 -434
  29. package/LuxityGraphQLDropdownSelector.js +1543 -949
  30. package/LuxityGraphQLMultiselector.js +321 -167
  31. package/LuxityMobileHeader.js +807 -681
  32. package/LuxityPageReady.js +136 -74
  33. package/LuxityProductInterestItem.js +175 -97
  34. package/LuxitySideNav.js +310 -382
  35. package/MaterialSelector.js +1550 -955
  36. package/ModelSelector.js +1550 -955
  37. package/NotificationDropDown.js +221 -122
  38. package/Notify.js +1 -0
  39. package/OutlinePrimaryButton.js +58 -26
  40. package/PriceRangeSelector.js +281 -168
  41. package/PrimaryButton.js +58 -26
  42. package/RadioButtons.js +140 -114
  43. package/RangeSlider.js +242 -152
  44. package/RareStepFooter.js +41 -27
  45. package/RareStepHeader.js +190 -139
  46. package/ReactSelectWrapper.js +1 -0
  47. package/SecondaryButton.js +58 -26
  48. package/ShoeSizeRangeSelector.js +260 -162
  49. package/ShoeSizeSelector.js +263 -158
  50. package/SimpleErrorBoundary.js +106 -59
  51. package/StyleSelector.js +336 -176
  52. package/TextButton.js +58 -26
  53. package/Tooltip.js +39 -17
  54. package/Tracking.js +1 -0
  55. package/WrapperButton.js +43 -20
  56. package/build/bundle.css +1 -1
  57. package/build/bundle.js +2973 -2457
  58. package/package.json +2 -3
  59. package/svg/Accessories.js +13 -6
  60. package/svg/Account.js +13 -6
  61. package/svg/Add.js +13 -6
  62. package/svg/ArrowRight.js +13 -6
  63. package/svg/Bags.js +13 -6
  64. package/svg/BurgerMenu.js +13 -6
  65. package/svg/Calendar.js +13 -6
  66. package/svg/CalendarCircled.js +13 -6
  67. package/svg/CheckCircled.js +13 -6
  68. package/svg/Close.js +13 -6
  69. package/svg/Clothing.js +13 -6
  70. package/svg/Dot.js +13 -6
  71. package/svg/Edit.js +13 -6
  72. package/svg/Eye.js +13 -6
  73. package/svg/FileAttach.js +13 -6
  74. package/svg/FileAttachCircled.js +13 -6
  75. package/svg/LightBulb.js +13 -6
  76. package/svg/Logo.js +13 -6
  77. package/svg/LuxityMenu.js +13 -6
  78. package/svg/Minus.js +13 -6
  79. package/svg/MobileAvatar.js +13 -6
  80. package/svg/MyOrder.js +13 -6
  81. package/svg/MyPayment.js +13 -6
  82. package/svg/MyProfile.js +14 -8
  83. package/svg/MySale.js +13 -6
  84. package/svg/Notification.js +13 -6
  85. package/svg/PointerDown.js +13 -6
  86. package/svg/Search.js +13 -6
  87. package/svg/Shoes.js +13 -6
  88. package/svg/SvgWrapper.js +7 -3
  89. package/svg/Trash.js +13 -6
  90. package/svg/Watches.js +13 -6
package/LuxitySideNav.js CHANGED
@@ -8,119 +8,140 @@
8
8
  axios = axios && Object.prototype.hasOwnProperty.call(axios, 'default') ? axios['default'] : axios;
9
9
  var styled__default = 'default' in styled ? styled['default'] : styled;
10
10
 
11
- function _arrayLikeToArray(r, a) {
12
- (null == a || a > r.length) && (a = r.length);
13
- for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
14
- return n;
15
- }
16
- function _arrayWithHoles(r) {
17
- if (Array.isArray(r)) return r;
18
- }
19
- function _defineProperty(e, r, t) {
20
- return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
21
- value: t,
22
- enumerable: !0,
23
- configurable: !0,
24
- writable: !0
25
- }) : e[r] = t, e;
26
- }
27
- function _extends() {
28
- return _extends = Object.assign ? Object.assign.bind() : function (n) {
29
- for (var e = 1; e < arguments.length; e++) {
30
- var t = arguments[e];
31
- for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
32
- }
33
- return n;
34
- }, _extends.apply(null, arguments);
35
- }
36
- function _iterableToArrayLimit(r, l) {
37
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
38
- if (null != t) {
39
- var e,
40
- n,
41
- i,
42
- u,
43
- a = [],
44
- f = !0,
45
- o = !1;
46
- try {
47
- if (i = (t = t.call(r)).next, 0 === l) {
48
- if (Object(t) !== t) return;
49
- f = !1;
50
- } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
51
- } catch (r) {
52
- o = !0, n = r;
53
- } finally {
54
- try {
55
- if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
56
- } finally {
57
- if (o) throw n;
58
- }
59
- }
60
- return a;
11
+ function ownKeys(object, enumerableOnly) {
12
+ var keys = Object.keys(object);
13
+
14
+ if (Object.getOwnPropertySymbols) {
15
+ var symbols = Object.getOwnPropertySymbols(object);
16
+ enumerableOnly && (symbols = symbols.filter(function (sym) {
17
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
18
+ })), keys.push.apply(keys, symbols);
61
19
  }
20
+
21
+ return keys;
62
22
  }
63
- function _nonIterableRest() {
64
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
65
- }
66
- function ownKeys(e, r) {
67
- var t = Object.keys(e);
68
- if (Object.getOwnPropertySymbols) {
69
- var o = Object.getOwnPropertySymbols(e);
70
- r && (o = o.filter(function (r) {
71
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
72
- })), t.push.apply(t, o);
23
+
24
+ function _objectSpread2(target) {
25
+ for (var i = 1; i < arguments.length; i++) {
26
+ var source = null != arguments[i] ? arguments[i] : {};
27
+ i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
28
+ _defineProperty(target, key, source[key]);
29
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
30
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
31
+ });
73
32
  }
74
- return t;
33
+
34
+ return target;
75
35
  }
76
- function _objectSpread2(e) {
77
- for (var r = 1; r < arguments.length; r++) {
78
- var t = null != arguments[r] ? arguments[r] : {};
79
- r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
80
- _defineProperty(e, r, t[r]);
81
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
82
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
36
+
37
+ function _defineProperty(obj, key, value) {
38
+ if (key in obj) {
39
+ Object.defineProperty(obj, key, {
40
+ value: value,
41
+ enumerable: true,
42
+ configurable: true,
43
+ writable: true
83
44
  });
45
+ } else {
46
+ obj[key] = value;
84
47
  }
85
- return e;
48
+
49
+ return obj;
86
50
  }
87
- function _slicedToArray(r, e) {
88
- return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
51
+
52
+ function _extends() {
53
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
54
+ for (var i = 1; i < arguments.length; i++) {
55
+ var source = arguments[i];
56
+
57
+ for (var key in source) {
58
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
59
+ target[key] = source[key];
60
+ }
61
+ }
62
+ }
63
+
64
+ return target;
65
+ };
66
+ return _extends.apply(this, arguments);
89
67
  }
90
- function _taggedTemplateLiteral(e, t) {
91
- return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {
68
+
69
+ function _taggedTemplateLiteral(strings, raw) {
70
+ if (!raw) {
71
+ raw = strings.slice(0);
72
+ }
73
+
74
+ return Object.freeze(Object.defineProperties(strings, {
92
75
  raw: {
93
- value: Object.freeze(t)
76
+ value: Object.freeze(raw)
94
77
  }
95
78
  }));
96
79
  }
97
- function _toPrimitive(t, r) {
98
- if ("object" != typeof t || !t) return t;
99
- var e = t[Symbol.toPrimitive];
100
- if (void 0 !== e) {
101
- var i = e.call(t, r || "default");
102
- if ("object" != typeof i) return i;
103
- throw new TypeError("@@toPrimitive must return a primitive value.");
104
- }
105
- return ("string" === r ? String : Number)(t);
80
+
81
+ function _slicedToArray(arr, i) {
82
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
106
83
  }
107
- function _toPropertyKey(t) {
108
- var i = _toPrimitive(t, "string");
109
- return "symbol" == typeof i ? i : i + "";
84
+
85
+ function _arrayWithHoles(arr) {
86
+ if (Array.isArray(arr)) return arr;
110
87
  }
111
- function _unsupportedIterableToArray(r, a) {
112
- if (r) {
113
- if ("string" == typeof r) return _arrayLikeToArray(r, a);
114
- var t = {}.toString.call(r).slice(8, -1);
115
- return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
88
+
89
+ function _iterableToArrayLimit(arr, i) {
90
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
91
+
92
+ if (_i == null) return;
93
+ var _arr = [];
94
+ var _n = true;
95
+ var _d = false;
96
+
97
+ var _s, _e;
98
+
99
+ try {
100
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
101
+ _arr.push(_s.value);
102
+
103
+ if (i && _arr.length === i) break;
104
+ }
105
+ } catch (err) {
106
+ _d = true;
107
+ _e = err;
108
+ } finally {
109
+ try {
110
+ if (!_n && _i["return"] != null) _i["return"]();
111
+ } finally {
112
+ if (_d) throw _e;
113
+ }
116
114
  }
115
+
116
+ return _arr;
117
+ }
118
+
119
+ function _unsupportedIterableToArray(o, minLen) {
120
+ if (!o) return;
121
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
122
+ var n = Object.prototype.toString.call(o).slice(8, -1);
123
+ if (n === "Object" && o.constructor) n = o.constructor.name;
124
+ if (n === "Map" || n === "Set") return Array.from(o);
125
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
126
+ }
127
+
128
+ function _arrayLikeToArray(arr, len) {
129
+ if (len == null || len > arr.length) len = arr.length;
130
+
131
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
132
+
133
+ return arr2;
134
+ }
135
+
136
+ function _nonIterableRest() {
137
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
117
138
  }
118
139
 
119
140
  var StoresDropdown = function StoresDropdown(_ref) {
120
141
  var backIcon = _ref.backIcon,
121
- onBackClick = _ref.onBackClick,
122
- stores = _ref.stores,
123
- onContactUsClick = _ref.onContactUsClick;
142
+ onBackClick = _ref.onBackClick,
143
+ stores = _ref.stores,
144
+ onContactUsClick = _ref.onContactUsClick;
124
145
  return /*#__PURE__*/React__default.createElement("div", {
125
146
  className: "side-nav__sub-menu"
126
147
  }, /*#__PURE__*/React__default.createElement("button", {
@@ -160,19 +181,20 @@
160
181
 
161
182
  var BrandsDropDown = function BrandsDropDown(_ref) {
162
183
  var subMenuOpen = _ref.subMenuOpen,
163
- onBackClick = _ref.onBackClick,
164
- onCloseSideNav = _ref.onCloseSideNav,
165
- backIcon = _ref.backIcon,
166
- subMenuCategoryTitle = _ref.subMenuCategoryTitle,
167
- productUrl = _ref.productUrl,
168
- categoryElements = _ref.categoryElements,
169
- subMenuBrandsTitle = _ref.subMenuBrandsTitle,
170
- _ref$brandsList = _ref.brandsList,
171
- brandsList = _ref$brandsList === void 0 ? [] : _ref$brandsList,
172
- categorySlug = _ref.categorySlug,
173
- isLoading = _ref.isLoading,
174
- hasError = _ref.hasError,
175
- LinkComponent = _ref.LinkComponent;
184
+ onBackClick = _ref.onBackClick,
185
+ onCloseSideNav = _ref.onCloseSideNav,
186
+ backIcon = _ref.backIcon,
187
+ subMenuCategoryTitle = _ref.subMenuCategoryTitle,
188
+ productUrl = _ref.productUrl,
189
+ categoryElements = _ref.categoryElements,
190
+ subMenuBrandsTitle = _ref.subMenuBrandsTitle,
191
+ _ref$brandsList = _ref.brandsList,
192
+ brandsList = _ref$brandsList === void 0 ? [] : _ref$brandsList,
193
+ categorySlug = _ref.categorySlug,
194
+ isLoading = _ref.isLoading,
195
+ hasError = _ref.hasError,
196
+ LinkComponent = _ref.LinkComponent;
197
+
176
198
  var handleLinkClick = function handleLinkClick(event) {
177
199
  event.preventDefault();
178
200
  var href = event.currentTarget.getAttribute('href');
@@ -180,6 +202,7 @@
180
202
  onCloseSideNav();
181
203
  window.location.href = href;
182
204
  };
205
+
183
206
  return /*#__PURE__*/React__default.createElement("div", {
184
207
  className: "side-nav__content ".concat(subMenuOpen ? '' : 'side-nav__content--hidden')
185
208
  }, hasError ? /*#__PURE__*/React__default.createElement("div", {
@@ -226,6 +249,7 @@
226
249
  className: "side-nav__element"
227
250
  }, "All Brands"), !!brandsList.length && brandsList.map(function (brand) {
228
251
  return /*#__PURE__*/React__default.createElement(LinkComponent, {
252
+ key: brand.slug,
229
253
  href: "".concat(productUrl, "/").concat(categorySlug === 'new' ? 'brands' : categorySlug, "/").concat(brand.slug),
230
254
  onClick: handleLinkClick,
231
255
  className: "side-nav__element"
@@ -235,37 +259,15 @@
235
259
 
236
260
  var removeCategoryByName = function removeCategoryByName(categories, name) {
237
261
  var _categories$filter;
262
+
238
263
  return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
239
- return category.name !== name;
264
+ return category.name.toLowerCase() !== name.toLowerCase();
240
265
  })) !== null && _categories$filter !== void 0 ? _categories$filter : [];
241
266
  };
242
267
 
243
- var categories = {
244
- shoes: {
245
- name: 'Shoes',
246
- slug: 'shoes'
247
- },
248
- bags: {
249
- name: 'Bags',
250
- slug: 'bags'
251
- },
252
- clothing: {
253
- name: 'Clothing',
254
- slug: 'apparel'
255
- },
256
- watches: {
257
- name: 'Watches',
258
- slug: 'watches'
259
- },
260
- accessories: {
261
- name: 'Accessories',
262
- slug: 'accessories'
263
- }
264
- };
265
-
266
268
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
267
-
268
269
  /* position relative is required for the Body element to be positioned correctly */
270
+
269
271
  var relativeInlineStyle = styled.css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n"])));
270
272
  var topMiddleBodyStyle = styled.css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: absolute;\n z-index: 1;\n bottom: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"])));
271
273
  var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
@@ -279,31 +281,40 @@
279
281
  };
280
282
 
281
283
  var _templateObject$1;
284
+
282
285
  var getBodyStyle = function getBodyStyle() {
283
286
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
284
287
  var _props$toolTipPositio = props.toolTipPosition,
285
- toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
288
+ toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
289
+
286
290
  switch (toolTipPosition) {
287
291
  case 'top':
288
292
  return topMiddleBodyStyle;
293
+
289
294
  case 'bottom':
290
295
  return getBottomMiddleBodyStyle(props);
296
+
291
297
  default:
292
298
  return null;
293
299
  }
294
300
  };
301
+
295
302
  var getAfterStyling = function getAfterStyling() {
296
303
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
297
304
  var toolTipPosition = props.toolTipPosition;
305
+
298
306
  switch (toolTipPosition) {
299
307
  case 'top':
300
308
  return getTopMiddleArrowAfterStyle(props);
309
+
301
310
  case 'bottom':
302
311
  return getBottomMiddleArrowAfterStyle(props);
312
+
303
313
  default:
304
314
  return '';
305
315
  }
306
316
  };
317
+
307
318
  var Body = styled__default.span(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n ", ";\n visibility: hidden;\n opacity: 0;\n width: ", ";\n transition: visibility 0.3s linear, opacity 0.3s linear;\n background-color: ", ";\n color: white;\n text-align: center;\n border-radius: 5px;\n ", "\n &::after {\n content: ' ';\n position: absolute;\n ", "\n }\n"])), relativeInlineStyle, function (props) {
308
319
  return props.bodyWidth;
309
320
  }, function (props) {
@@ -383,12 +394,12 @@
383
394
 
384
395
  var Tooltip = function Tooltip(_ref) {
385
396
  var children = _ref.children,
386
- toolTipText = _ref.toolTipText,
387
- toolTipPosition = _ref.toolTipPosition,
388
- bodyWidth = _ref.bodyWidth,
389
- apexWidth = _ref.apexWidth,
390
- containerClassName = _ref.containerClassName,
391
- bodyClassName = _ref.bodyClassName;
397
+ toolTipText = _ref.toolTipText,
398
+ toolTipPosition = _ref.toolTipPosition,
399
+ bodyWidth = _ref.bodyWidth,
400
+ apexWidth = _ref.apexWidth,
401
+ containerClassName = _ref.containerClassName,
402
+ bodyClassName = _ref.bodyClassName;
392
403
  return /*#__PURE__*/React__default.createElement(Container, {
393
404
  className: containerClassName
394
405
  }, children, /*#__PURE__*/React__default.createElement(Body, {
@@ -398,6 +409,7 @@
398
409
  className: bodyClassName
399
410
  }, toolTipText));
400
411
  };
412
+
401
413
  Tooltip.defaultProps = {
402
414
  children: null,
403
415
  toolTipText: '',
@@ -411,21 +423,25 @@
411
423
 
412
424
  var CurrencySelect = function CurrencySelect(_ref) {
413
425
  var currency = _ref.currency,
414
- currencyOptions = _ref.currencyOptions,
415
- onCurrencyChange = _ref.onCurrencyChange,
416
- _ref$isCurrencySelect = _ref.isCurrencySelectionDisabled,
417
- isCurrencySelectionDisabled = _ref$isCurrencySelect === void 0 ? false : _ref$isCurrencySelect,
418
- _ref$tooltipContent = _ref.tooltipContent,
419
- tooltipContent = _ref$tooltipContent === void 0 ? '' : _ref$tooltipContent;
426
+ currencyOptions = _ref.currencyOptions,
427
+ onCurrencyChange = _ref.onCurrencyChange,
428
+ _ref$isCurrencySelect = _ref.isCurrencySelectionDisabled,
429
+ isCurrencySelectionDisabled = _ref$isCurrencySelect === void 0 ? false : _ref$isCurrencySelect,
430
+ _ref$tooltipContent = _ref.tooltipContent,
431
+ tooltipContent = _ref$tooltipContent === void 0 ? '' : _ref$tooltipContent;
432
+
420
433
  if (!currencyOptions || currencyOptions.length === 0) {
421
434
  return null;
422
435
  }
436
+
423
437
  var selectedOption = currencyOptions.find(function (opt) {
424
438
  return opt.value === currency;
425
439
  });
440
+
426
441
  if (!selectedOption) {
427
442
  return null;
428
443
  }
444
+
429
445
  return /*#__PURE__*/React__default.createElement(Tooltip$1, {
430
446
  toolTipText: isCurrencySelectionDisabled ? tooltipContent : '',
431
447
  toolTipPosition: "bottom",
@@ -454,77 +470,79 @@
454
470
 
455
471
  var LuxitySideNav = function LuxitySideNav(_ref) {
456
472
  var accordionIcon = _ref.accordionIcon,
457
- closeIcon = _ref.closeIcon,
458
- backIcon = _ref.backIcon,
459
- productUrl = _ref.productUrl,
460
- onAccountClick = _ref.onAccountClick,
461
- onCartClick = _ref.onCartClick,
462
- onContactUsClick = _ref.onContactUsClick,
463
- onOurStoryClick = _ref.onOurStoryClick,
464
- onBlogClick = _ref.onBlogClick,
465
- onSellToUsClick = _ref.onSellToUsClick,
466
- stores = _ref.stores,
467
- categoryElements = _ref.categoryElements,
468
- showSideNav = _ref.showSideNav,
469
- onMenuClick = _ref.onMenuClick,
470
- menuData = _ref.menuData,
471
- currency = _ref.currency,
472
- currencyOptions = _ref.currencyOptions,
473
- onCurrencyChange = _ref.onCurrencyChange,
474
- isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
475
- tooltipContent = _ref.tooltipContent,
476
- LinkComponent = _ref.LinkComponent;
473
+ closeIcon = _ref.closeIcon,
474
+ backIcon = _ref.backIcon,
475
+ productUrl = _ref.productUrl,
476
+ onAccountClick = _ref.onAccountClick,
477
+ onCartClick = _ref.onCartClick,
478
+ onContactUsClick = _ref.onContactUsClick,
479
+ onOurStoryClick = _ref.onOurStoryClick,
480
+ onBlogClick = _ref.onBlogClick,
481
+ onSellToUsClick = _ref.onSellToUsClick,
482
+ stores = _ref.stores,
483
+ categoryElements = _ref.categoryElements,
484
+ showSideNav = _ref.showSideNav,
485
+ onMenuClick = _ref.onMenuClick,
486
+ currency = _ref.currency,
487
+ currencyOptions = _ref.currencyOptions,
488
+ onCurrencyChange = _ref.onCurrencyChange,
489
+ isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
490
+ tooltipContent = _ref.tooltipContent,
491
+ LinkComponent = _ref.LinkComponent,
492
+ categoryConfig = _ref.categoryConfig;
493
+
477
494
  var _useState = React.useState(false),
478
- _useState2 = _slicedToArray(_useState, 2),
479
- subMenuOpen = _useState2[0],
480
- setSubMenuOpen = _useState2[1];
495
+ _useState2 = _slicedToArray(_useState, 2),
496
+ subMenuOpen = _useState2[0],
497
+ setSubMenuOpen = _useState2[1];
498
+
481
499
  var _useState3 = React.useState(''),
482
- _useState4 = _slicedToArray(_useState3, 2),
483
- displayedSubMenu = _useState4[0],
484
- setDisplayedSubMenu = _useState4[1];
500
+ _useState4 = _slicedToArray(_useState3, 2),
501
+ displayedSubMenu = _useState4[0],
502
+ setDisplayedSubMenu = _useState4[1];
503
+
485
504
  var _useState5 = React.useState(false),
486
- _useState6 = _slicedToArray(_useState5, 2),
487
- loading = _useState6[0],
488
- setLoading = _useState6[1];
489
- var _useState7 = React.useState({
490
- latestArrivals: [],
491
- bags: [],
492
- shoes: [],
493
- apparel: [],
494
- accessories: [],
495
- watches: [],
496
- accessoriesCategories: [],
497
- apparelStyles: []
498
- }),
499
- _useState8 = _slicedToArray(_useState7, 2),
500
- dropdownData = _useState8[0],
501
- setDropdownData = _useState8[1];
505
+ _useState6 = _slicedToArray(_useState5, 2),
506
+ loading = _useState6[0],
507
+ setLoading = _useState6[1];
508
+
509
+ var _useState7 = React.useState({}),
510
+ _useState8 = _slicedToArray(_useState7, 2),
511
+ dropdownData = _useState8[0],
512
+ setDropdownData = _useState8[1];
513
+
502
514
  var _useState9 = React.useState(false),
503
- _useState10 = _slicedToArray(_useState9, 2),
504
- hasError = _useState10[0],
505
- setHasError = _useState10[1];
515
+ _useState10 = _slicedToArray(_useState9, 2),
516
+ hasError = _useState10[0],
517
+ setHasError = _useState10[1];
518
+
506
519
  var onSubMenuClick = function onSubMenuClick(subMenu) {
507
520
  setSubMenuOpen(function (prev) {
508
521
  return !prev;
509
522
  });
510
523
  setDisplayedSubMenu(subMenu);
511
524
  };
525
+
512
526
  var onStoresClick = function onStoresClick() {
513
527
  setSubMenuOpen(false);
514
528
  setDisplayedSubMenu('stores');
515
529
  };
530
+
516
531
  var onBackClick = function onBackClick() {
517
532
  setSubMenuOpen(false);
518
533
  setDisplayedSubMenu('');
519
534
  };
535
+
520
536
  var onCloseSideNav = function onCloseSideNav(e) {
521
537
  onMenuClick();
522
538
  setSubMenuOpen(false);
523
539
  setDisplayedSubMenu('');
540
+
524
541
  if (e && e.key === 'Enter') {
525
542
  e.preventDefault();
526
543
  }
527
544
  };
545
+
528
546
  function addCategoryToElements(elements, categoryName) {
529
547
  return elements.map(function (element) {
530
548
  return _objectSpread2(_objectSpread2({}, element), {}, {
@@ -532,27 +550,96 @@
532
550
  });
533
551
  });
534
552
  }
553
+
535
554
  React.useMemo(function () {
536
555
  setLoading(true);
537
- axios.get("".concat(menuData)).then(function (_ref2) {
556
+ axios.get("".concat(categoryConfig.menuData)).then(function (_ref2) {
538
557
  var data = _ref2.data;
539
558
  setLoading(false);
540
- setDropdownData(function (prev) {
541
- return _objectSpread2(_objectSpread2({}, prev), {}, {
542
- latestArrivals: data.latest_arrivals,
543
- bags: data.bags,
544
- shoes: data.shoes,
545
- apparel: data.apparel,
546
- accessories: data.accessories,
547
- watches: data.watches,
548
- accessoriesCategories: data.accessories_categories,
549
- apparelStyles: data.apparel_styles
550
- });
551
- });
559
+ setDropdownData(data);
552
560
  }).catch(function () {
553
561
  return setHasError(true);
554
562
  });
555
- }, [menuData]);
563
+ }, [categoryConfig.menuData]);
564
+
565
+ var renderMenuItems = function renderMenuItems() {
566
+ return categoryConfig.categories.map(function (category) {
567
+ var title = category.title,
568
+ categorySlug = category.categorySlug;
569
+ var slug = categorySlug;
570
+
571
+ if (categorySlug === 'brands') {
572
+ slug = 'new';
573
+ }
574
+
575
+ return /*#__PURE__*/React__default.createElement("div", {
576
+ className: "side-nav__menu-item",
577
+ key: slug
578
+ }, /*#__PURE__*/React__default.createElement("button", {
579
+ type: "button",
580
+ className: "side-nav__menu-title-wrapper",
581
+ onClick: function onClick() {
582
+ return onSubMenuClick(slug);
583
+ }
584
+ }, /*#__PURE__*/React__default.createElement("span", {
585
+ className: "side-nav__menu-title"
586
+ }, title), /*#__PURE__*/React__default.createElement("img", {
587
+ src: accordionIcon,
588
+ alt: "accordion-icon",
589
+ className: "side-nav__accordion-icon"
590
+ })));
591
+ });
592
+ };
593
+
594
+ var renderDropdownLinks = function renderDropdownLinks() {
595
+ return categoryConfig.categories.map(function (category) {
596
+ var categorySlug = category.categorySlug,
597
+ categoryName = category.categoryName,
598
+ elementsKey = category.elementsKey,
599
+ subCategoryElementsKey = category.subCategoryElementsKey,
600
+ styleElementsKey = category.styleElementsKey;
601
+ var categoryElementsProcessed = categoryElements;
602
+
603
+ if (subCategoryElementsKey && dropdownData[subCategoryElementsKey]) {
604
+ // show subcategory elements
605
+ categoryElementsProcessed = removeCategoryByName(dropdownData[subCategoryElementsKey], categoryName);
606
+ } else if (styleElementsKey && dropdownData[styleElementsKey]) {
607
+ categoryElementsProcessed = addCategoryToElements(dropdownData[styleElementsKey], categorySlug);
608
+ } else {
609
+ categoryElementsProcessed = addCategoryToElements(categoryElementsProcessed, categorySlug);
610
+ }
611
+
612
+ var subMenuTitle = 'Brands';
613
+
614
+ if (categorySlug !== 'brands') {
615
+ subMenuTitle = "".concat(categoryName, " Brands");
616
+ }
617
+
618
+ var subMenu = categorySlug;
619
+
620
+ if (subMenu === 'brands') {
621
+ subMenu = 'new';
622
+ }
623
+
624
+ return /*#__PURE__*/React__default.createElement(BrandsDropDown, {
625
+ key: categorySlug,
626
+ subMenuOpen: subMenuOpen && displayedSubMenu === subMenu,
627
+ onBackClick: onBackClick,
628
+ backIcon: backIcon,
629
+ subMenuCategoryTitle: "Department",
630
+ productUrl: productUrl,
631
+ categoryElements: categoryElementsProcessed,
632
+ subMenuBrandsTitle: subMenuTitle,
633
+ brandsList: dropdownData[elementsKey],
634
+ categorySlug: displayedSubMenu,
635
+ isLoading: loading,
636
+ hasError: hasError,
637
+ onCloseSideNav: onCloseSideNav,
638
+ LinkComponent: LinkComponent
639
+ });
640
+ });
641
+ };
642
+
556
643
  return /*#__PURE__*/React__default.createElement("div", {
557
644
  className: "side-nav"
558
645
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -573,92 +660,9 @@
573
660
  className: "side-nav__close-icon"
574
661
  })), /*#__PURE__*/React__default.createElement("div", {
575
662
  className: "side-nav__menu-items-wrapper"
576
- }, /*#__PURE__*/React__default.createElement("div", {
577
- className: "side-nav__menu-item"
578
- }, /*#__PURE__*/React__default.createElement("button", {
579
- type: "button",
580
- className: "side-nav__menu-title-wrapper",
581
- onClick: function onClick() {
582
- return onSubMenuClick('new');
583
- }
584
- }, /*#__PURE__*/React__default.createElement("span", {
585
- className: "side-nav__menu-title"
586
- }, "New"), /*#__PURE__*/React__default.createElement("img", {
587
- src: accordionIcon,
588
- alt: "accordion-icon",
589
- className: "side-nav__accordion-icon"
590
- }))), /*#__PURE__*/React__default.createElement("div", {
591
- className: "side-nav__menu-item"
592
- }, /*#__PURE__*/React__default.createElement("button", {
593
- type: "button",
594
- className: "side-nav__menu-title-wrapper",
595
- onClick: function onClick() {
596
- return onSubMenuClick('bags');
597
- }
598
- }, /*#__PURE__*/React__default.createElement("span", {
599
- className: "side-nav__menu-title"
600
- }, "Bags"), /*#__PURE__*/React__default.createElement("img", {
601
- src: accordionIcon,
602
- alt: "accordion-icon",
603
- className: "side-nav__accordion-icon"
604
- }))), /*#__PURE__*/React__default.createElement("div", {
605
- className: "side-nav__menu-item"
606
- }, /*#__PURE__*/React__default.createElement("button", {
607
- type: "button",
608
- className: "side-nav__menu-title-wrapper",
609
- onClick: function onClick() {
610
- return onSubMenuClick('shoes');
611
- }
612
- }, /*#__PURE__*/React__default.createElement("span", {
613
- className: "side-nav__menu-title"
614
- }, "Shoes"), /*#__PURE__*/React__default.createElement("img", {
615
- src: accordionIcon,
616
- alt: "accordion-icon",
617
- className: "side-nav__accordion-icon"
618
- }))), /*#__PURE__*/React__default.createElement("div", {
619
- className: "side-nav__menu-item"
620
- }, /*#__PURE__*/React__default.createElement("button", {
621
- type: "button",
622
- className: "side-nav__menu-title-wrapper",
623
- onClick: function onClick() {
624
- return onSubMenuClick('apparel');
625
- }
626
- }, /*#__PURE__*/React__default.createElement("span", {
627
- className: "side-nav__menu-title"
628
- }, "Clothing"), /*#__PURE__*/React__default.createElement("img", {
629
- src: accordionIcon,
630
- alt: "accordion-icon",
631
- className: "side-nav__accordion-icon"
632
- }))), /*#__PURE__*/React__default.createElement("div", {
633
- className: "side-nav__menu-item"
634
- }, /*#__PURE__*/React__default.createElement("button", {
635
- type: "button",
636
- className: "side-nav__menu-title-wrapper",
637
- onClick: function onClick() {
638
- return onSubMenuClick('accessories');
639
- }
640
- }, /*#__PURE__*/React__default.createElement("span", {
641
- className: "side-nav__menu-title"
642
- }, "Accessories"), /*#__PURE__*/React__default.createElement("img", {
643
- src: accordionIcon,
644
- alt: "accordion-icon",
645
- className: "side-nav__accordion-icon"
646
- }))), /*#__PURE__*/React__default.createElement("div", {
647
- className: "side-nav__menu-item"
648
- }, /*#__PURE__*/React__default.createElement("button", {
649
- type: "button",
650
- className: "side-nav__menu-title-wrapper",
651
- onClick: function onClick() {
652
- return onSubMenuClick('watches');
653
- }
654
- }, /*#__PURE__*/React__default.createElement("span", {
655
- className: "side-nav__menu-title"
656
- }, "Watches"), /*#__PURE__*/React__default.createElement("img", {
657
- src: accordionIcon,
658
- alt: "accordion-icon",
659
- className: "side-nav__accordion-icon"
660
- }))), /*#__PURE__*/React__default.createElement("div", {
661
- className: "side-nav__menu-item"
663
+ }, renderMenuItems(), !!stores.length && /*#__PURE__*/React__default.createElement("div", {
664
+ className: "side-nav__menu-item",
665
+ key: "stores"
662
666
  }, /*#__PURE__*/React__default.createElement("button", {
663
667
  type: "button",
664
668
  className: "side-nav__menu-title-wrapper",
@@ -670,134 +674,58 @@
670
674
  alt: "accordion-icon",
671
675
  className: "side-nav__accordion-icon"
672
676
  }))), /*#__PURE__*/React__default.createElement("div", {
673
- className: "side-nav__menu-item"
677
+ className: "side-nav__menu-item",
678
+ key: "sell-to-us"
674
679
  }, /*#__PURE__*/React__default.createElement("button", {
675
680
  type: "button",
676
681
  className: "side-nav__block-button",
677
682
  onClick: onSellToUsClick
678
683
  }, "Sell To Us")), /*#__PURE__*/React__default.createElement("div", {
679
- className: "side-nav__menu-item"
684
+ className: "side-nav__menu-item",
685
+ key: "our-story"
680
686
  }, /*#__PURE__*/React__default.createElement("button", {
681
687
  type: "button",
682
688
  className: "side-nav__sub-link",
683
689
  onClick: onOurStoryClick
684
- }, "Our Story")), /*#__PURE__*/React__default.createElement("div", {
685
- className: "side-nav__menu-item"
690
+ }, "Our Story")), typeof onBlogClick === 'function' && /*#__PURE__*/React__default.createElement("div", {
691
+ className: "side-nav__menu-item",
692
+ key: "blog"
686
693
  }, /*#__PURE__*/React__default.createElement("button", {
687
694
  type: "button",
688
695
  className: "side-nav__sub-link",
689
696
  onClick: onBlogClick
690
697
  }, "Blog")), /*#__PURE__*/React__default.createElement("div", {
691
- className: "side-nav__menu-item"
698
+ className: "side-nav__menu-item",
699
+ key: "contact-us"
692
700
  }, /*#__PURE__*/React__default.createElement("button", {
693
701
  type: "button",
694
702
  className: "side-nav__sub-link",
695
703
  onClick: onContactUsClick
696
704
  }, "Contact Us")), /*#__PURE__*/React__default.createElement("div", {
697
- className: "side-nav__menu-item"
705
+ className: "side-nav__menu-item",
706
+ key: "my-account"
698
707
  }, /*#__PURE__*/React__default.createElement("button", {
699
708
  type: "button",
700
709
  className: "side-nav__sub-link",
701
710
  onClick: onAccountClick
702
711
  }, "My Account")), /*#__PURE__*/React__default.createElement("div", {
703
- className: "side-nav__menu-item"
712
+ className: "side-nav__menu-item",
713
+ key: "my-cart"
704
714
  }, /*#__PURE__*/React__default.createElement("button", {
705
715
  type: "button",
706
716
  className: "side-nav__sub-link",
707
717
  onClick: onCartClick
708
718
  }, "My Cart")), /*#__PURE__*/React__default.createElement(CurrencySelect, {
719
+ key: "currency",
709
720
  currency: currency,
710
721
  currencyOptions: currencyOptions,
711
722
  onCurrencyChange: onCurrencyChange,
712
723
  isCurrencySelectionDisabled: isCurrencySelectionDisabled,
713
724
  tooltipContent: tooltipContent
714
- }))), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
715
- subMenuOpen: subMenuOpen && displayedSubMenu === 'new',
716
- onBackClick: onBackClick,
717
- backIcon: backIcon,
718
- subMenuCategoryTitle: "Department",
719
- productUrl: productUrl,
720
- categoryElements: categoryElements,
721
- subMenuBrandsTitle: "Brands",
722
- brandsList: dropdownData.latestArrivals,
723
- categorySlug: displayedSubMenu,
724
- isLoading: loading,
725
- hasError: hasError,
726
- onCloseSideNav: onCloseSideNav,
727
- LinkComponent: LinkComponent
728
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
729
- subMenuOpen: subMenuOpen && displayedSubMenu === 'bags',
730
- onBackClick: onBackClick,
731
- backIcon: backIcon,
732
- subMenuCategoryTitle: "Department",
733
- productUrl: productUrl,
734
- categoryElements: addCategoryToElements(categoryElements, categories.bags.slug),
735
- subMenuBrandsTitle: "Bag Brands",
736
- brandsList: dropdownData.bags,
737
- categorySlug: displayedSubMenu,
738
- isLoading: loading,
739
- hasError: hasError,
740
- onCloseSideNav: onCloseSideNav,
741
- LinkComponent: LinkComponent
742
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
743
- subMenuOpen: subMenuOpen && displayedSubMenu === 'shoes',
744
- onBackClick: onBackClick,
745
- backIcon: backIcon,
746
- subMenuCategoryTitle: "Department",
747
- productUrl: productUrl,
748
- categoryElements: addCategoryToElements(categoryElements, categories.shoes.slug),
749
- subMenuBrandsTitle: "Shoe Brands",
750
- brandsList: dropdownData.shoes,
751
- categorySlug: displayedSubMenu,
752
- isLoading: loading,
753
- hasError: hasError,
754
- onCloseSideNav: onCloseSideNav,
755
- LinkComponent: LinkComponent
756
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
757
- subMenuOpen: subMenuOpen && displayedSubMenu === 'apparel',
758
- onBackClick: onBackClick,
759
- backIcon: backIcon,
760
- subMenuCategoryTitle: "Department",
761
- productUrl: productUrl,
762
- categoryElements: addCategoryToElements(dropdownData.apparelStyles, categories.clothing.slug),
763
- subMenuBrandsTitle: "Clothing Brands",
764
- brandsList: dropdownData.apparel,
765
- categorySlug: displayedSubMenu,
766
- isLoading: loading,
767
- hasError: hasError,
768
- onCloseSideNav: onCloseSideNav,
769
- LinkComponent: LinkComponent
770
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
771
- subMenuOpen: subMenuOpen && displayedSubMenu === 'accessories',
772
- onBackClick: onBackClick,
773
- backIcon: backIcon,
774
- subMenuCategoryTitle: "Categories",
775
- productUrl: productUrl,
776
- categoryElements: removeCategoryByName(dropdownData.accessoriesCategories, 'ACCESSORIES'),
777
- subMenuBrandsTitle: "Accessory Brands",
778
- brandsList: dropdownData.accessories,
779
- categorySlug: displayedSubMenu,
780
- isLoading: loading,
781
- hasError: hasError,
782
- onCloseSideNav: onCloseSideNav,
783
- LinkComponent: LinkComponent
784
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
785
- subMenuOpen: subMenuOpen && displayedSubMenu === 'watches',
786
- onBackClick: onBackClick,
787
- backIcon: backIcon,
788
- subMenuCategoryTitle: "Department",
789
- productUrl: productUrl,
790
- categoryElements: addCategoryToElements(categoryElements, categories.watches.slug),
791
- subMenuBrandsTitle: "Watches Brands",
792
- brandsList: dropdownData.watches,
793
- categorySlug: displayedSubMenu,
794
- isLoading: loading,
795
- hasError: hasError,
796
- onCloseSideNav: onCloseSideNav,
797
- LinkComponent: LinkComponent
798
- }), displayedSubMenu === 'stores' && /*#__PURE__*/React__default.createElement("div", {
725
+ }))), renderDropdownLinks(), displayedSubMenu === 'stores' && /*#__PURE__*/React__default.createElement("div", {
799
726
  className: "side-nav__content"
800
727
  }, /*#__PURE__*/React__default.createElement(StoresDropdown, {
728
+ key: "stores",
801
729
  backIcon: backIcon,
802
730
  onBackClick: onBackClick,
803
731
  stores: stores,