@bonlineza/luxity-lib 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/bundle.js CHANGED
@@ -868,6 +868,22 @@
868
868
  return /*#__PURE__*/React__default.createElement("span", {
869
869
  key: "".concat(style.name, "-").concat(data.id)
870
870
  }, style.name);
871
+ }) : 'All')), /*#__PURE__*/React__default.createElement("div", {
872
+ className: "interest-item__container_heading"
873
+ }, /*#__PURE__*/React__default.createElement(InterestItemTitle, null, "Models:"), /*#__PURE__*/React__default.createElement("div", {
874
+ className: "list-items"
875
+ }, data.luxity_models != null && data.luxity_models.length > 0 ? data.luxity_models.map(function (model) {
876
+ return /*#__PURE__*/React__default.createElement("span", {
877
+ key: "".concat(model.name, "-").concat(data.id)
878
+ }, model.name);
879
+ }) : 'All')), /*#__PURE__*/React__default.createElement("div", {
880
+ className: "interest-item__container_heading"
881
+ }, /*#__PURE__*/React__default.createElement(InterestItemTitle, null, "Materials:"), /*#__PURE__*/React__default.createElement("div", {
882
+ className: "list-items"
883
+ }, data.luxity_materials != null && data.luxity_materials.length > 0 ? data.luxity_materials.map(function (material) {
884
+ return /*#__PURE__*/React__default.createElement("span", {
885
+ key: "".concat(material.name, "-").concat(data.id)
886
+ }, material.name);
871
887
  }) : 'All')), /*#__PURE__*/React__default.createElement("div", {
872
888
  className: "interest-item__container_heading ".concat(data.category_type === interestCategories.SHOES ? '' : 'no-shoe-size-section')
873
889
  }, data.category_type === interestCategories.SHOES ? /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(InterestItemTitle, null, "Shoe Size:"), /*#__PURE__*/React__default.createElement("div", {
@@ -894,7 +910,7 @@
894
910
  var SheoSizeContentDiv = styled__default.div(_templateObject$9 || (_templateObject$9 = _taggedTemplateLiteral(["\n @media (max-width: ", ") {\n display: none;\n }\n"])), media.xs);
895
911
  var InterestItemTitle = styled__default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n font-weight: bold;\n display: none;\n\n @media (max-width: ", ") {\n display: inline;\n }\n"])), media.xs);
896
912
  var InterestItemContainer = styled__default.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n\n .no-shoe-size-section {\n @media (max-width: ", ") {\n display: none;\n }\n }\n"])), media.xs);
897
- var InterestItemContent = styled__default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n width: 95%;\n height: 100%;\n border: 1px solid ", ";\n padding: 0.5em;\n margin-bottom: ", ";\n\n .interest-item__container_heading {\n color: ", ";\n flex-basis: calc(100% / 6);\n margin-left: ", ";\n margin-top: 0.3rem;\n\n @media (max-width: ", ") {\n display: inline;\n }\n }\n\n .list-items {\n display: inline-flex;\n flex-direction: column;\n\n @media (max-width: ", ") {\n margin-left: ", ";\n }\n }\n\n @media (max-width: ", ") {\n flex-direction: column;\n }\n"])), function (props) {
913
+ var InterestItemContent = styled__default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n width: 95%;\n height: 100%;\n border: 1px solid ", ";\n padding: 0.5em;\n margin-bottom: ", ";\n\n .interest-item__container_heading {\n color: ", ";\n flex-basis: calc(100% / 8);\n margin-left: ", ";\n margin-top: 0.3rem;\n\n @media (max-width: ", ") {\n display: inline;\n }\n }\n\n .list-items {\n display: inline-flex;\n flex-direction: column;\n\n @media (max-width: ", ") {\n margin-left: ", ";\n }\n }\n\n @media (max-width: ", ") {\n flex-direction: column;\n }\n"])), function (props) {
898
914
  return props.theme.colors.borderColor;
899
915
  }, function (props) {
900
916
  return props.theme.marginPaddings[1];
@@ -10288,15 +10304,298 @@
10288
10304
 
10289
10305
  var NotificationDropDown$1 = themed(NotificationDropDown);
10290
10306
 
10291
- var _templateObject$F, _templateObject2$7;
10307
+ var _templateObject$F;
10292
10308
  var ALL_ITEM = {
10309
+ label: 'ALL',
10310
+ value: 'ALL'
10311
+ };
10312
+ var StyledMultiselector = styled__default.div(_templateObject$F || (_templateObject$F = _taggedTemplateLiteral(["\n .multiselector__selected-items,\n .multiselector__selectable-items {\n display: flex;\n flex-flow: no-wrap;\n margin-bottom: 40px;\n .dropdown-select-container {\n width: 100%;\n .dropdown-select {\n &__control {\n border-color: ", ";\n border-radius: 0px;\n background-color: ", ";\n color: ", ";\n }\n &__multi-value {\n background-color: ", ";\n }\n &__multi-value__label {\n color: ", ";\n font-size: 100%;\n }\n &__multi-value__remove {\n svg {\n fill: ", ";\n }\n }\n }\n }\n }\n"])), function (props) {
10313
+ return props.theme.colors.primary;
10314
+ }, function (props) {
10315
+ return props.theme.colors.ntrlMin;
10316
+ }, function (props) {
10317
+ return props.theme.colors.primary;
10318
+ }, function (props) {
10319
+ return props.theme.colors.primary;
10320
+ }, function (props) {
10321
+ return props.theme.colors.ntrlMin;
10322
+ }, function (props) {
10323
+ return props.theme.colors.ntrlMin;
10324
+ });
10325
+ /**
10326
+ * Multiselector with a GraphQL flavour (TODO: to be revised to make it remote api agnostic)
10327
+ */
10328
+
10329
+ var GraphQLDropdownSelector = /*#__PURE__*/function (_React$Component) {
10330
+ _inherits(GraphQLDropdownSelector, _React$Component);
10331
+
10332
+ var _super = _createSuper(GraphQLDropdownSelector);
10333
+
10334
+ function GraphQLDropdownSelector(props) {
10335
+ var _this;
10336
+
10337
+ _classCallCheck(this, GraphQLDropdownSelector);
10338
+
10339
+ _this = _super.call(this, props);
10340
+
10341
+ _defineProperty(_assertThisInitialized(_this), "componentDidUpdate", function (prevProps) {
10342
+ if (prevProps.graphQuery !== _this.props.graphQuery) {
10343
+ _this.makeRequest();
10344
+ }
10345
+ });
10346
+
10347
+ _defineProperty(_assertThisInitialized(_this), "makeRequest", function () {
10348
+ _this.pageReady.refreshPage();
10349
+ });
10350
+
10351
+ _defineProperty(_assertThisInitialized(_this), "emptySelected", function () {
10352
+ return _this.setState({
10353
+ selected: [ALL_ITEM]
10354
+ });
10355
+ });
10356
+
10357
+ _defineProperty(_assertThisInitialized(_this), "setNewResults", function (res) {
10358
+ var selectedIds = _this.state.selected.map(function (sel) {
10359
+ return sel.value;
10360
+ });
10361
+
10362
+ var pagination = _this.props.resultProcessor(res);
10363
+
10364
+ var allSelected = _this.state.selected.some(function (item) {
10365
+ return item.value === ALL_ITEM.value;
10366
+ });
10367
+
10368
+ var newList = pagination.filter(function (newItem) {
10369
+ return !selectedIds.includes(newItem.value);
10370
+ });
10371
+ newList = allSelected ? newList : [ALL_ITEM].concat(_toConsumableArray(newList)); // eslint-disable-next-line react/no-unused-state
10372
+
10373
+ _this.setState({
10374
+ list: newList,
10375
+ pagination: pagination
10376
+ });
10377
+ });
10378
+
10379
+ _defineProperty(_assertThisInitialized(_this), "onAddItem", function (addSelectedItem) {
10380
+ var newSelectedList;
10381
+
10382
+ if (addSelectedItem.includes(ALL_ITEM)) {
10383
+ newSelectedList = [ALL_ITEM];
10384
+ } else {
10385
+ newSelectedList = addSelectedItem.filter(function (item) {
10386
+ return item.value !== ALL_ITEM.value;
10387
+ });
10388
+ }
10389
+
10390
+ _this.setState(function (prevState) {
10391
+ return _objectSpread2(_objectSpread2({}, prevState), {}, {
10392
+ selected: newSelectedList
10393
+ });
10394
+ }, function () {
10395
+ _this.props.onChange(_this.state.selected.filter(function (item) {
10396
+ return item.value !== ALL_ITEM.value;
10397
+ }));
10398
+ });
10399
+ });
10400
+
10401
+ _defineProperty(_assertThisInitialized(_this), "onIsLoading", function (flag) {
10402
+ _this.setState({
10403
+ isLoading: flag
10404
+ });
10405
+ });
10406
+
10407
+ _defineProperty(_assertThisInitialized(_this), "render", function () {
10408
+ var _this$props = _this.props,
10409
+ baseClass = _this$props.baseClass,
10410
+ identifier = _this$props.identifier,
10411
+ triggerRequest = _this$props.triggerRequest,
10412
+ className = _this$props.className;
10413
+ var list = _this.state.list;
10414
+ return /*#__PURE__*/React__default.createElement(StyledMultiselector, null, /*#__PURE__*/React__default.createElement("div", {
10415
+ "data-qe-id": identifier,
10416
+ className: "".concat(className, " ").concat(baseClass)
10417
+ }, /*#__PURE__*/React__default.createElement(LuxityPageReady, {
10418
+ ref: function ref(inst) {
10419
+ _this.pageReady = inst;
10420
+ },
10421
+ onData: _this.setNewResults,
10422
+ onIsLoading: _this.onIsLoading,
10423
+ getRequestPromise: function getRequestPromise() {
10424
+ return triggerRequest();
10425
+ }
10426
+ }), /*#__PURE__*/React__default.createElement("div", {
10427
+ className: "".concat(baseClass, "__selectable-items")
10428
+ }, /*#__PURE__*/React__default.createElement(ReactSelectWrapper, {
10429
+ options: list,
10430
+ onChange: function onChange(value) {
10431
+ _this.onAddItem(value);
10432
+ },
10433
+ isMulti: true,
10434
+ isSearchable: true
10435
+ }))));
10436
+ });
10437
+
10438
+ _this.state = {
10439
+ selected: [ALL_ITEM],
10440
+ list: [],
10441
+ pagination: {},
10442
+ isLoading: false
10443
+ };
10444
+ return _this;
10445
+ }
10446
+
10447
+ return _createClass(GraphQLDropdownSelector);
10448
+ }(React__default.Component);
10449
+
10450
+ GraphQLDropdownSelector.defaultProps = {
10451
+ baseClass: 'multiselector'
10452
+ };
10453
+ var GraphQLDropdownSelector$1 = themed(GraphQLDropdownSelector);
10454
+
10455
+ /**
10456
+ * Luxity flavoured GraphQLMultiselector with text Search, category and limit controls
10457
+ */
10458
+ var LuxityGraphQLDropdownSelector = /*#__PURE__*/function (_React$Component) {
10459
+ _inherits(LuxityGraphQLDropdownSelector, _React$Component);
10460
+
10461
+ var _super = _createSuper(LuxityGraphQLDropdownSelector);
10462
+
10463
+ function LuxityGraphQLDropdownSelector(props) {
10464
+ var _this;
10465
+
10466
+ _classCallCheck(this, LuxityGraphQLDropdownSelector);
10467
+
10468
+ _this = _super.call(this, props);
10469
+
10470
+ _defineProperty(_assertThisInitialized(_this), "multiSelectorRef", /*#__PURE__*/React__default.createRef());
10471
+
10472
+ _defineProperty(_assertThisInitialized(_this), "increaseLimit", function () {
10473
+ _this.setState(function (prevState) {
10474
+ return {
10475
+ limit: prevState.limit + _this.props.queryLimitIncrement
10476
+ };
10477
+ });
10478
+ });
10479
+
10480
+ _defineProperty(_assertThisInitialized(_this), "onChange", function (selection) {
10481
+ _this.props.onChange(selection);
10482
+ });
10483
+
10484
+ _defineProperty(_assertThisInitialized(_this), "render", function () {
10485
+ var _this$state = _this.state,
10486
+ limit = _this$state.limit,
10487
+ query_arguments = _this$state.query_arguments;
10488
+ var _this$props = _this.props,
10489
+ title = _this$props.title,
10490
+ baseClass = _this$props.baseClass,
10491
+ getGraphQuery = _this$props.getGraphQuery,
10492
+ resultProcessor = _this$props.resultProcessor,
10493
+ graphApi = _this$props.graphApi,
10494
+ identifier = _this$props.identifier,
10495
+ requestInstance = _this$props.requestInstance;
10496
+ return /*#__PURE__*/React__default.createElement("div", {
10497
+ className: baseClass
10498
+ }, /*#__PURE__*/React__default.createElement(InterestsSubheading, {
10499
+ className: "".concat(baseClass, "__title"),
10500
+ title: title
10501
+ }), /*#__PURE__*/React__default.createElement(React.Fragment, null, /*#__PURE__*/React__default.createElement(GraphQLDropdownSelector$1, {
10502
+ triggerRequest: function triggerRequest() {
10503
+ return requestInstance.post(graphApi, {
10504
+ query: getGraphQuery(limit, 1, 'id|desc', query_arguments)
10505
+ });
10506
+ },
10507
+ graphQuery: getGraphQuery(limit, 1, 'id|desc', query_arguments),
10508
+ identifier: identifier,
10509
+ ref: _this.multiSelectorRef,
10510
+ onChange: _this.onChange,
10511
+ resultProcessor: resultProcessor
10512
+ })));
10513
+ });
10514
+
10515
+ _this.state = {
10516
+ limit: props.baseQueryLimit,
10517
+ query_arguments: props.query_arguments
10518
+ };
10519
+ return _this;
10520
+ }
10521
+
10522
+ _createClass(LuxityGraphQLDropdownSelector, [{
10523
+ key: "componentDidUpdate",
10524
+ value: function componentDidUpdate(prevProps) {
10525
+ var _this$multiSelectorRe;
10526
+
10527
+ if (prevProps.query_arguments !== this.props.query_arguments && (_this$multiSelectorRe = this.multiSelectorRef) !== null && _this$multiSelectorRe !== void 0 && _this$multiSelectorRe.current) {
10528
+ this.multiSelectorRef.current.emptySelected();
10529
+ }
10530
+ }
10531
+ }], [{
10532
+ key: "getDerivedStateFromProps",
10533
+ value: function getDerivedStateFromProps(props, prevState) {
10534
+ if (prevState.query_arguments !== props.query_arguments) {
10535
+ return {
10536
+ query_arguments: props.query_arguments
10537
+ };
10538
+ }
10539
+
10540
+ return null;
10541
+ }
10542
+ }]);
10543
+
10544
+ return LuxityGraphQLDropdownSelector;
10545
+ }(React__default.Component);
10546
+
10547
+ LuxityGraphQLDropdownSelector.defaultProps = {
10548
+ baseClass: '',
10549
+ searchPlaceHolder: '',
10550
+ queryLimitIncrement: 12,
10551
+ baseQueryLimit: 12
10552
+ };
10553
+
10554
+ var BrandSelector = function BrandSelector(_ref) {
10555
+ var onChange = _ref.onChange,
10556
+ category = _ref.category,
10557
+ graphApi = _ref.graphApi,
10558
+ getGraphQuery = _ref.getGraphQuery,
10559
+ resultProcessor = _ref.resultProcessor,
10560
+ requestInstance = _ref.requestInstance;
10561
+ return /*#__PURE__*/React__default.createElement(LuxityGraphQLDropdownSelector, {
10562
+ baseQueryLimit: 9999,
10563
+ title: "Brands",
10564
+ queryId: "getBrands",
10565
+ baseClass: "brand-selector",
10566
+ identifier: "brand-selector",
10567
+ searchPlaceHolder: "Search brands",
10568
+ query_arguments: category,
10569
+ onChange: onChange,
10570
+ graphApi: graphApi,
10571
+ getGraphQuery: getGraphQuery,
10572
+ resultProcessor: resultProcessor,
10573
+ requestInstance: requestInstance
10574
+ });
10575
+ };
10576
+
10577
+ BrandSelector.defaultProps = {
10578
+ resultProcessor: function resultProcessor(result) {
10579
+ return result.data.data.luxity_brands.data.map(function (_ref2) {
10580
+ var id = _ref2.id,
10581
+ name = _ref2.name;
10582
+ return {
10583
+ label: name,
10584
+ value: id
10585
+ };
10586
+ });
10587
+ }
10588
+ };
10589
+
10590
+ var _templateObject$G, _templateObject2$7;
10591
+ var ALL_ITEM$1 = {
10293
10592
  id: 'ALL',
10294
10593
  name: 'ALL'
10295
10594
  };
10296
10595
  var multiSelectorItemMaxHeight = '3rem';
10297
10596
  var multiSelectorItemAnimationDuration = '300ms';
10298
- var multiselectorItemFadeIn = styled.keyframes(_templateObject$F || (_templateObject$F = _taggedTemplateLiteral(["\n from {\n margin: 0;\n max-height: 0px;\n opacity: 0;\n }\n to {\n max-height: ", ";\n opacity: 1;\n }\n"])), multiSelectorItemMaxHeight);
10299
- var StyledMultiselector = styled__default.div(_templateObject2$7 || (_templateObject2$7 = _taggedTemplateLiteral(["\n .multiselector__selected-items,\n .multiselector__selectable-items {\n display: flex;\n flex-flow: wrap;\n margin-left: calc(-1 * ", ");\n button {\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n border-color: ", ";\n background-color: ", ";\n color: ", ";\n padding: ", ";\n text-transform: none;\n box-sizing: border-box;\n animation: ", " ease-in-out\n ", " forwards;\n flex-basis: calc(25% - ", ");\n margin-bottom: ", ";\n margin-left: ", ";\n text-overflow: ellipsis;\n overflow-x: hidden;\n min-height: 40px;\n\n @media (max-width: ", ") {\n flex-basis: calc(50% - ", ");\n }\n }\n }\n\n .multiselector__footer {\n display: flex;\n justify-content: center;\n button {\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n background-color: ", ";\n color: ", ";\n }\n }\n"])), function (props) {
10597
+ var multiselectorItemFadeIn = styled.keyframes(_templateObject$G || (_templateObject$G = _taggedTemplateLiteral(["\n from {\n margin: 0;\n max-height: 0px;\n opacity: 0;\n }\n to {\n max-height: ", ";\n opacity: 1;\n }\n"])), multiSelectorItemMaxHeight);
10598
+ var StyledMultiselector$1 = styled__default.div(_templateObject2$7 || (_templateObject2$7 = _taggedTemplateLiteral(["\n .multiselector__selected-items,\n .multiselector__selectable-items {\n display: flex;\n flex-flow: wrap;\n margin-left: calc(-1 * ", ");\n button {\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n border-color: ", ";\n background-color: ", ";\n color: ", ";\n padding: ", ";\n text-transform: none;\n box-sizing: border-box;\n animation: ", " ease-in-out\n ", " forwards;\n flex-basis: calc(25% - ", ");\n margin-bottom: ", ";\n margin-left: ", ";\n text-overflow: ellipsis;\n overflow-x: hidden;\n min-height: 40px;\n\n @media (max-width: ", ") {\n flex-basis: calc(50% - ", ");\n }\n }\n }\n\n .multiselector__footer {\n display: flex;\n justify-content: center;\n button {\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n background-color: ", ";\n color: ", ";\n }\n }\n"])), function (props) {
10300
10599
  return props.theme.marginPaddings[2];
10301
10600
  }, function (props) {
10302
10601
  return props.theme.colors.ntrlMin;
@@ -10355,7 +10654,7 @@
10355
10654
 
10356
10655
  _defineProperty(_assertThisInitialized(_this), "emptySelected", function () {
10357
10656
  return _this.setState({
10358
- selected: [ALL_ITEM]
10657
+ selected: [ALL_ITEM$1]
10359
10658
  });
10360
10659
  });
10361
10660
 
@@ -10367,13 +10666,13 @@
10367
10666
  var pagination = _this.props.resultProcessor(res);
10368
10667
 
10369
10668
  var allSelected = _this.state.selected.some(function (item) {
10370
- return item.id === ALL_ITEM.id;
10669
+ return item.id === ALL_ITEM$1.id;
10371
10670
  });
10372
10671
 
10373
10672
  var newList = pagination.data.filter(function (newItem) {
10374
10673
  return !selectedIds.includes(newItem.id);
10375
10674
  });
10376
- newList = allSelected ? newList : [ALL_ITEM].concat(_toConsumableArray(newList));
10675
+ newList = allSelected ? newList : [ALL_ITEM$1].concat(_toConsumableArray(newList));
10377
10676
 
10378
10677
  _this.setState({
10379
10678
  list: newList,
@@ -10386,21 +10685,21 @@
10386
10685
  var newSelectedList;
10387
10686
  var newList;
10388
10687
 
10389
- if (addSelectedItem.id === ALL_ITEM.id) {
10688
+ if (addSelectedItem.id === ALL_ITEM$1.id) {
10390
10689
  // Clear Selected List
10391
10690
  // and move previous Selected items to list
10392
- newSelectedList = [ALL_ITEM];
10691
+ newSelectedList = [ALL_ITEM$1];
10393
10692
  newList = prevState.list.filter(function (item) {
10394
- return item.id !== ALL_ITEM.id;
10693
+ return item.id !== ALL_ITEM$1.id;
10395
10694
  }).concat(prevState.selected).sort(function (a, b) {
10396
10695
  return a.id - b.id;
10397
10696
  });
10398
10697
  } else {
10399
10698
  newSelectedList = _toConsumableArray(prevState.selected.filter(function (item) {
10400
- return item.id !== ALL_ITEM.id;
10699
+ return item.id !== ALL_ITEM$1.id;
10401
10700
  })).concat(addSelectedItem);
10402
- newList = [ALL_ITEM].concat(_toConsumableArray(prevState.list.filter(function (item) {
10403
- return item.id !== ALL_ITEM.id;
10701
+ newList = [ALL_ITEM$1].concat(_toConsumableArray(prevState.list.filter(function (item) {
10702
+ return item.id !== ALL_ITEM$1.id;
10404
10703
  }).filter(function (item) {
10405
10704
  return item.id !== addSelectedItem.id;
10406
10705
  })));
@@ -10412,7 +10711,7 @@
10412
10711
  };
10413
10712
  }, function () {
10414
10713
  _this.props.onChange(_this.state.selected.filter(function (item) {
10415
- return item.id !== ALL_ITEM.id;
10714
+ return item.id !== ALL_ITEM$1.id;
10416
10715
  }));
10417
10716
  });
10418
10717
  });
@@ -10420,7 +10719,7 @@
10420
10719
  _defineProperty(_assertThisInitialized(_this), "onRemoveItem", function (removeSelectedItem) {
10421
10720
  _this.setState(function (prevState) {
10422
10721
  // Cannot remove ALL from selection by unselecting it
10423
- if ((removeSelectedItem === null || removeSelectedItem === void 0 ? void 0 : removeSelectedItem.id) === ALL_ITEM.id) {
10722
+ if ((removeSelectedItem === null || removeSelectedItem === void 0 ? void 0 : removeSelectedItem.id) === ALL_ITEM$1.id) {
10424
10723
  return {};
10425
10724
  }
10426
10725
 
@@ -10429,18 +10728,18 @@
10429
10728
  });
10430
10729
 
10431
10730
  var newList = _toConsumableArray(prevState.list).concat(removeSelectedItem).filter(function (item) {
10432
- return item.id !== ALL_ITEM.id;
10731
+ return item.id !== ALL_ITEM$1.id;
10433
10732
  }).sort(function (a, b) {
10434
10733
  return a.id - b.id;
10435
10734
  });
10436
10735
 
10437
10736
  return {
10438
10737
  list: newList,
10439
- selected: newSelectedList.length ? newSelectedList : [ALL_ITEM]
10738
+ selected: newSelectedList.length ? newSelectedList : [ALL_ITEM$1]
10440
10739
  };
10441
10740
  }, function () {
10442
10741
  _this.props.onChange(_this.state.selected.filter(function (item) {
10443
- return item.id !== ALL_ITEM.id;
10742
+ return item.id !== ALL_ITEM$1.id;
10444
10743
  }));
10445
10744
  });
10446
10745
  });
@@ -10463,7 +10762,7 @@
10463
10762
  selected = _this$state.selected,
10464
10763
  pagination = _this$state.pagination,
10465
10764
  isLoading = _this$state.isLoading;
10466
- return /*#__PURE__*/React__default.createElement(StyledMultiselector, null, /*#__PURE__*/React__default.createElement("div", {
10765
+ return /*#__PURE__*/React__default.createElement(StyledMultiselector$1, null, /*#__PURE__*/React__default.createElement("div", {
10467
10766
  "data-qe-id": identifier,
10468
10767
  className: "".concat(className, " ").concat(baseClass)
10469
10768
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -10503,7 +10802,7 @@
10503
10802
  });
10504
10803
 
10505
10804
  _this.state = {
10506
- selected: [ALL_ITEM],
10805
+ selected: [ALL_ITEM$1],
10507
10806
  list: [],
10508
10807
  pagination: {},
10509
10808
  isLoading: false
@@ -10533,7 +10832,7 @@
10533
10832
  }));
10534
10833
  });
10535
10834
 
10536
- var _templateObject$G;
10835
+ var _templateObject$H;
10537
10836
 
10538
10837
  var Title$3 = function Title(_ref) {
10539
10838
  var baseClass = _ref.baseClass,
@@ -10554,7 +10853,7 @@
10554
10853
  })));
10555
10854
  };
10556
10855
 
10557
- var StyledTitle = styled__default(Title$3)(_templateObject$G || (_templateObject$G = _taggedTemplateLiteral(["\n margin-bottom: ", ";\n font-weight: bold;\n display: flex;\n align-items: center;\n font-size: ", ";\n\n .title__search,\n .title__search {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 30px;\n margin-bottom: ", ";\n\n svg {\n margin-left: ", ";\n fill: ", ";\n stroke: ", ";\n }\n\n input {\n width: 140px;\n border: none;\n font-size: ", ";\n transition: 0.2s border-color ease-in-out;\n margin-left: ", ";\n padding: 0;\n\n :focus {\n border-color: ", ";\n border-bottom: none;\n }\n }\n }\n"])), function (props) {
10856
+ var StyledTitle = styled__default(Title$3)(_templateObject$H || (_templateObject$H = _taggedTemplateLiteral(["\n margin-bottom: ", ";\n font-weight: bold;\n display: flex;\n align-items: center;\n font-size: ", ";\n\n .title__search,\n .title__search {\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 30px;\n margin-bottom: ", ";\n\n svg {\n margin-left: ", ";\n fill: ", ";\n stroke: ", ";\n }\n\n input {\n width: 140px;\n border: none;\n font-size: ", ";\n transition: 0.2s border-color ease-in-out;\n margin-left: ", ";\n padding: 0;\n\n :focus {\n border-color: ", ";\n border-bottom: none;\n }\n }\n }\n"])), function (props) {
10558
10857
  return props.theme.marginPaddings[2];
10559
10858
  }, function (props) {
10560
10859
  return props.theme.fontSizes[2];
@@ -10694,8 +10993,8 @@
10694
10993
  baseQueryLimit: 12
10695
10994
  };
10696
10995
 
10697
- var _templateObject$H;
10698
- var BaseButton = styled__default.button(_templateObject$H || (_templateObject$H = _taggedTemplateLiteral(["\n color: ", ";\n border: 1px solid ", ";\n background-color: ", ";\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n"])), function (props) {
10996
+ var _templateObject$I;
10997
+ var BaseButton = styled__default.button(_templateObject$I || (_templateObject$I = _taggedTemplateLiteral(["\n color: ", ";\n border: 1px solid ", ";\n background-color: ", ";\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n"])), function (props) {
10699
10998
  return props.theme.colors.base;
10700
10999
  }, function (props) {
10701
11000
  return props.theme.colors.borderColor;
@@ -10721,38 +11020,6 @@
10721
11020
  return selected ? /*#__PURE__*/React__default.createElement(PrimaryButton$1, props, item.name) : /*#__PURE__*/React__default.createElement(UnselectedButton, props, item.name);
10722
11021
  };
10723
11022
 
10724
- var BrandSelector = function BrandSelector(_ref) {
10725
- var onChange = _ref.onChange,
10726
- category = _ref.category,
10727
- graphApi = _ref.graphApi,
10728
- itemRenderer = _ref.itemRenderer,
10729
- getGraphQuery = _ref.getGraphQuery,
10730
- resultProcessor = _ref.resultProcessor,
10731
- requestInstance = _ref.requestInstance;
10732
- return /*#__PURE__*/React__default.createElement(LuxityGraphQLMultiselector, {
10733
- baseQueryLimit: 16,
10734
- title: "Brands",
10735
- queryId: "getBrands",
10736
- baseClass: "brand-selector",
10737
- identifier: "brand-selector",
10738
- searchPlaceHolder: "Search brands",
10739
- category: category,
10740
- onChange: onChange,
10741
- graphApi: graphApi,
10742
- itemRenderer: itemRenderer,
10743
- getGraphQuery: getGraphQuery,
10744
- resultProcessor: resultProcessor,
10745
- requestInstance: requestInstance
10746
- });
10747
- };
10748
-
10749
- BrandSelector.defaultProps = {
10750
- itemRenderer: ItemRenderer,
10751
- resultProcessor: function resultProcessor(result) {
10752
- return result.data.data.luxity_brands;
10753
- }
10754
- };
10755
-
10756
11023
  var StyleSelector = function StyleSelector(_ref) {
10757
11024
  var onChange = _ref.onChange,
10758
11025
  category = _ref.category,
@@ -10796,8 +11063,8 @@
10796
11063
  }
10797
11064
  };
10798
11065
 
10799
- var _templateObject$I, _templateObject2$8;
10800
- var TitleWrapper = styled__default.div(_templateObject$I || (_templateObject$I = _taggedTemplateLiteral(["\n display: flex;\n flex-flow: nowrap row;\n justify-content: space-between;\n margin-bottom: ", ";\n label {\n margin-bottom: 0;\n }\n"])), function (props) {
11066
+ var _templateObject$J, _templateObject2$8;
11067
+ var TitleWrapper = styled__default.div(_templateObject$J || (_templateObject$J = _taggedTemplateLiteral(["\n display: flex;\n flex-flow: nowrap row;\n justify-content: space-between;\n margin-bottom: ", ";\n label {\n margin-bottom: 0;\n }\n"])), function (props) {
10801
11068
  return props.theme.marginPaddings[4];
10802
11069
  });
10803
11070
  var onShoeSizeTypeChangeTimeout = 300;
@@ -10935,8 +11202,8 @@
10935
11202
  }
10936
11203
  };
10937
11204
 
10938
- var _templateObject$J;
10939
- var SelectionWrapper = styled__default.div(_templateObject$J || (_templateObject$J = _taggedTemplateLiteral(["\n display: flex;\n margin-left: calc(-1 * ", ");\n label {\n margin-bottom: ", ";\n flex-basis: calc(33.33% - ", ");\n margin-bottom: ", ";\n margin-left: ", ";\n }\n @media (max-width: ", ") {\n label {\n flex-basis: calc(50% - ", ");\n }\n }\n"])), function (props) {
11205
+ var _templateObject$K;
11206
+ var SelectionWrapper = styled__default.div(_templateObject$K || (_templateObject$K = _taggedTemplateLiteral(["\n display: flex;\n margin-left: calc(-1 * ", ");\n label {\n margin-bottom: ", ";\n flex-basis: calc(33.33% - ", ");\n margin-bottom: ", ";\n margin-left: ", ";\n }\n @media (max-width: ", ") {\n label {\n flex-basis: calc(50% - ", ");\n }\n }\n"])), function (props) {
10940
11207
  return props.theme.marginPaddings[2];
10941
11208
  }, function (props) {
10942
11209
  return props.theme.marginPaddings[2];
@@ -10952,8 +11219,8 @@
10952
11219
 
10953
11220
  var _excluded$7 = ["title", "checked", "renderIcon", "onChange", "checkedValue", "unCheckedValue"];
10954
11221
 
10955
- var _templateObject$K, _templateObject2$9, _templateObject3$4;
10956
- var Content = styled__default.div(_templateObject$K || (_templateObject$K = _taggedTemplateLiteral(["\n background-color: transparent;\n border: 1px solid ", ";\n transition: 200ms ease-in-out;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ", ";\n cursor: pointer;\n"])), function (props) {
11222
+ var _templateObject$L, _templateObject2$9, _templateObject3$4;
11223
+ var Content = styled__default.div(_templateObject$L || (_templateObject$L = _taggedTemplateLiteral(["\n background-color: transparent;\n border: 1px solid ", ";\n transition: 200ms ease-in-out;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ", ";\n cursor: pointer;\n"])), function (props) {
10957
11224
  return props.theme.colors.primary;
10958
11225
  }, function (props) {
10959
11226
  return props.theme.marginPaddings[0];
@@ -11118,9 +11385,79 @@
11118
11385
  }));
11119
11386
  });
11120
11387
 
11121
- var _templateObject$L, _templateObject2$a, _templateObject3$5, _templateObject4$3, _templateObject5$1;
11388
+ var ModelSelector = function ModelSelector(_ref) {
11389
+ var onChange = _ref.onChange,
11390
+ brands = _ref.brands,
11391
+ graphApi = _ref.graphApi,
11392
+ getGraphQuery = _ref.getGraphQuery,
11393
+ resultProcessor = _ref.resultProcessor,
11394
+ requestInstance = _ref.requestInstance;
11395
+ return /*#__PURE__*/React__default.createElement(LuxityGraphQLDropdownSelector, {
11396
+ baseQueryLimit: 1000,
11397
+ title: "Models",
11398
+ queryId: "getModels",
11399
+ baseClass: "model-selector",
11400
+ identifier: "model-selector",
11401
+ query_arguments: brands,
11402
+ onChange: onChange,
11403
+ graphApi: graphApi,
11404
+ getGraphQuery: getGraphQuery,
11405
+ resultProcessor: resultProcessor,
11406
+ requestInstance: requestInstance
11407
+ });
11408
+ };
11409
+
11410
+ ModelSelector.defaultProps = {
11411
+ resultProcessor: function resultProcessor(result) {
11412
+ return result.data.data.luxity_models.data.map(function (_ref2) {
11413
+ var id = _ref2.id,
11414
+ name = _ref2.name;
11415
+ return {
11416
+ label: name,
11417
+ value: id
11418
+ };
11419
+ });
11420
+ }
11421
+ };
11422
+
11423
+ var MaterialSelector = function MaterialSelector(_ref) {
11424
+ var onChange = _ref.onChange,
11425
+ brands = _ref.brands,
11426
+ graphApi = _ref.graphApi,
11427
+ getGraphQuery = _ref.getGraphQuery,
11428
+ resultProcessor = _ref.resultProcessor,
11429
+ requestInstance = _ref.requestInstance;
11430
+ return /*#__PURE__*/React__default.createElement(LuxityGraphQLDropdownSelector, {
11431
+ baseQueryLimit: 1000,
11432
+ title: "Materials",
11433
+ queryId: "getMaterials",
11434
+ baseClass: "material-selector",
11435
+ identifier: "material-selector",
11436
+ query_arguments: brands,
11437
+ onChange: onChange,
11438
+ graphApi: graphApi,
11439
+ getGraphQuery: getGraphQuery,
11440
+ resultProcessor: resultProcessor,
11441
+ requestInstance: requestInstance
11442
+ });
11443
+ };
11444
+
11445
+ MaterialSelector.defaultProps = {
11446
+ resultProcessor: function resultProcessor(result) {
11447
+ return result.data.data.luxity_materials.data.map(function (_ref2) {
11448
+ var id = _ref2.id,
11449
+ name = _ref2.name;
11450
+ return {
11451
+ label: name,
11452
+ value: id
11453
+ };
11454
+ });
11455
+ }
11456
+ };
11457
+
11458
+ var _templateObject$M, _templateObject2$a, _templateObject3$5, _templateObject4$3, _templateObject5$1;
11122
11459
  var UNISEX$1 = genders.UNISEX;
11123
- var AddInterestContainer = styled__default.div(_templateObject$L || (_templateObject$L = _taggedTemplateLiteral(["\n margin-bottom: ", ";\n border: 1px solid ", ";\n padding: ", ";\n"])), function (props) {
11460
+ var AddInterestContainer = styled__default.div(_templateObject$M || (_templateObject$M = _taggedTemplateLiteral(["\n margin-bottom: ", ";\n border: 1px solid ", ";\n padding: ", ";\n"])), function (props) {
11124
11461
  return props.theme.marginPaddings[6];
11125
11462
  }, function (props) {
11126
11463
  return props.theme.colors.borderColor;
@@ -11169,7 +11506,9 @@
11169
11506
  styles: [],
11170
11507
  gender: [],
11171
11508
  request: _objectSpread2({}, request),
11172
- isCategoriesShown: false
11509
+ isCategoriesShown: false,
11510
+ models: [],
11511
+ materials: []
11173
11512
  };
11174
11513
  /**
11175
11514
  * Generates Interest UI and submits graph payloads as a highly specialised component
@@ -11223,7 +11562,7 @@
11223
11562
  _defineProperty(_assertThisInitialized(_this), "onBrandsChanged", function (brandsArray) {
11224
11563
  _this.setState({
11225
11564
  brands: brandsArray.map(function (brand) {
11226
- return brand.id;
11565
+ return brand.value;
11227
11566
  })
11228
11567
  });
11229
11568
  });
@@ -11244,6 +11583,22 @@
11244
11583
  });
11245
11584
  });
11246
11585
 
11586
+ _defineProperty(_assertThisInitialized(_this), "onModelsChanged", function (modelsArray) {
11587
+ _this.setState({
11588
+ models: modelsArray.map(function (model) {
11589
+ return model.value;
11590
+ })
11591
+ });
11592
+ });
11593
+
11594
+ _defineProperty(_assertThisInitialized(_this), "onMaterialsChanged", function (materialsArray) {
11595
+ _this.setState({
11596
+ materials: materialsArray.map(function (material) {
11597
+ return material.value;
11598
+ })
11599
+ });
11600
+ });
11601
+
11247
11602
  _defineProperty(_assertThisInitialized(_this), "payloadIsValid", function () {
11248
11603
  // price/shoe-size always have initial values as soon as category is set
11249
11604
  var category_type = _this.state.category_type;
@@ -11267,7 +11622,9 @@
11267
11622
  styles = _this$state.styles,
11268
11623
  category_type = _this$state.category_type,
11269
11624
  requestState = _this$state.request,
11270
- gender = _this$state.gender;
11625
+ gender = _this$state.gender,
11626
+ models = _this$state.models,
11627
+ materials = _this$state.materials;
11271
11628
  var payloadGender = gender[0];
11272
11629
 
11273
11630
  if (gender.length > 1 || !gender.length) {
@@ -11281,7 +11638,9 @@
11281
11638
  max_price: max_price,
11282
11639
  styles: styles,
11283
11640
  gender: payloadGender,
11284
- request: requestState
11641
+ request: requestState,
11642
+ models: models,
11643
+ materials: materials
11285
11644
  };
11286
11645
  var shoeSizesPayload = category_type === interestCategories.SHOES ? {
11287
11646
  min_shoe_size_id: min_shoe_size_id,
@@ -11338,14 +11697,17 @@
11338
11697
  _defineProperty(_assertThisInitialized(_this), "render", function () {
11339
11698
  var _this$state2 = _this.state,
11340
11699
  category_type = _this$state2.category_type,
11341
- fetching = _this$state2.request.fetching;
11700
+ fetching = _this$state2.request.fetching,
11701
+ brands = _this$state2.brands;
11342
11702
  var _this$props = _this.props,
11343
11703
  requestInstance = _this$props.requestInstance,
11344
11704
  baseGraphApi = _this$props.baseGraphApi,
11345
11705
  getBrandsGraphQuery = _this$props.getBrandsGraphQuery,
11346
11706
  getStylesGraphQuery = _this$props.getStylesGraphQuery,
11347
11707
  getShoesGraphQuery = _this$props.getShoesGraphQuery,
11348
- defaultShoeSizeType = _this$props.defaultShoeSizeType;
11708
+ defaultShoeSizeType = _this$props.defaultShoeSizeType,
11709
+ getModelsGraphQuery = _this$props.getModelsGraphQuery,
11710
+ getMaterialsGraphQuery = _this$props.getMaterialsGraphQuery;
11349
11711
  return /*#__PURE__*/React__default.createElement(React.Fragment, null, !_this.state.isCategoriesShown && /*#__PURE__*/React__default.createElement(AddInterestButtonContainer, {
11350
11712
  onClick: _this.onAddInterestClick
11351
11713
  }, /*#__PURE__*/React__default.createElement(AddInterestButton, null, "Add Interest"), /*#__PURE__*/React__default.createElement(AddIcon, {
@@ -11361,7 +11723,19 @@
11361
11723
  requestInstance: requestInstance,
11362
11724
  graphApi: "".concat(baseGraphApi, "?id=getBrands"),
11363
11725
  getGraphQuery: getBrandsGraphQuery
11364
- }), category_type === interestCategories.SHOES && /*#__PURE__*/React__default.createElement(WrappedShoeSizeSelector, {
11726
+ }), brands.length > 0 && /*#__PURE__*/React__default.createElement(React.Fragment, null, /*#__PURE__*/React__default.createElement(ModelSelector, {
11727
+ brands: brands,
11728
+ getGraphQuery: getModelsGraphQuery,
11729
+ graphApi: "".concat(baseGraphApi, "?id=getModels"),
11730
+ requestInstance: requestInstance,
11731
+ onChange: _this.onModelsChanged
11732
+ }), /*#__PURE__*/React__default.createElement(MaterialSelector, {
11733
+ brands: brands,
11734
+ getGraphQuery: getMaterialsGraphQuery,
11735
+ graphApi: "".concat(baseGraphApi, "?id=getMaterials"),
11736
+ requestInstance: requestInstance,
11737
+ onChange: _this.onMaterialsChanged
11738
+ })), category_type === interestCategories.SHOES && /*#__PURE__*/React__default.createElement(WrappedShoeSizeSelector, {
11365
11739
  defaultShoeSizeType: defaultShoeSizeType,
11366
11740
  getGraphQuery: getShoesGraphQuery,
11367
11741
  graphApi: "".concat(baseGraphApi, "?id=shoeSizeQuery"),
@@ -11408,8 +11782,8 @@
11408
11782
 
11409
11783
  var AddInterest$1 = themed(AddInterest);
11410
11784
 
11411
- var _templateObject$M;
11412
- var MyInterestTitleHeadingContainer = styled__default.div(_templateObject$M || (_templateObject$M = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n\n .heading-title-section {\n display: flex;\n justify-content: space-between;\n width: 95%;\n padding: ", ";\n }\n\n .heading-title {\n color: ", ";\n font-weight: bold;\n flex-basis: calc(100% / 6);\n margin-left: ", ";\n padding-bottom: 0;\n }\n\n .heading-title-empty {\n flex-basis: 5%;\n margin-left: 1rem;\n }\n\n @media (max-width: ", ") {\n display: none;\n }\n"])), function (props) {
11785
+ var _templateObject$N;
11786
+ var MyInterestTitleHeadingContainer = styled__default.div(_templateObject$N || (_templateObject$N = _taggedTemplateLiteral(["\n display: flex;\n justify-content: space-between;\n\n .heading-title-section {\n display: flex;\n justify-content: space-between;\n width: 95%;\n padding: ", ";\n }\n\n .heading-title {\n color: ", ";\n font-weight: bold;\n flex-basis: calc(100% / 6);\n margin-left: ", ";\n padding-bottom: 0;\n }\n\n .heading-title-empty {\n flex-basis: 5%;\n margin-left: 1rem;\n }\n\n @media (max-width: ", ") {\n display: none;\n }\n"])), function (props) {
11413
11787
  return props.theme.marginPaddings[0];
11414
11788
  }, function (props) {
11415
11789
  return props.theme.colors.primary;
@@ -11432,6 +11806,10 @@
11432
11806
  className: "heading-title"
11433
11807
  }, "Style"), /*#__PURE__*/React__default.createElement("div", {
11434
11808
  className: "heading-title"
11809
+ }, "Models"), /*#__PURE__*/React__default.createElement("div", {
11810
+ className: "heading-title"
11811
+ }, "Materials"), /*#__PURE__*/React__default.createElement("div", {
11812
+ className: "heading-title"
11435
11813
  }, "Shoe Size")), /*#__PURE__*/React__default.createElement("div", {
11436
11814
  className: "heading-title-empty"
11437
11815
  }));
@@ -11439,8 +11817,8 @@
11439
11817
 
11440
11818
  var MyInterestTitleHeading$1 = themed(MyInterestTitleHeading);
11441
11819
 
11442
- var _templateObject$N;
11443
- var SvgWrapper$2 = styled__default.span(_templateObject$N || (_templateObject$N = _taggedTemplateLiteral(["\n svg {\n path {\n fill: ", ";\n }\n }\n"])), function (props) {
11820
+ var _templateObject$O;
11821
+ var SvgWrapper$2 = styled__default.span(_templateObject$O || (_templateObject$O = _taggedTemplateLiteral(["\n svg {\n path {\n fill: ", ";\n }\n }\n"])), function (props) {
11444
11822
  return props.theme.colors.primary;
11445
11823
  });
11446
11824
  var AccountIcon = themed(function () {
@@ -11522,6 +11900,8 @@
11522
11900
  getBrandsGraphQuery = _this$props2.getBrandsGraphQuery,
11523
11901
  getStylesGraphQuery = _this$props2.getStylesGraphQuery,
11524
11902
  getShoesGraphQuery = _this$props2.getShoesGraphQuery,
11903
+ getModelsGraphQuery = _this$props2.getModelsGraphQuery,
11904
+ getMaterialsGraphQuery = _this$props2.getMaterialsGraphQuery,
11525
11905
  deleteInterestApi = _this$props2.deleteInterestApi,
11526
11906
  setSchedule = _this$props2.setSchedule,
11527
11907
  getSchedule = _this$props2.getSchedule,
@@ -11555,7 +11935,9 @@
11555
11935
  getBrandsGraphQuery: getBrandsGraphQuery,
11556
11936
  getStylesGraphQuery: getStylesGraphQuery,
11557
11937
  getShoesGraphQuery: getShoesGraphQuery,
11558
- defaultShoeSizeType: defaultShoeSizeType
11938
+ defaultShoeSizeType: defaultShoeSizeType,
11939
+ getModelsGraphQuery: getModelsGraphQuery,
11940
+ getMaterialsGraphQuery: getMaterialsGraphQuery
11559
11941
  }), interests.length > 0 ? /*#__PURE__*/React__default.createElement(MyInterestTitleHeading$1, null) : '', /*#__PURE__*/React__default.createElement(LuxityPageReady, {
11560
11942
  getRequestPromise: function getRequestPromise() {
11561
11943
  return _this2.triggerInterestRequest();