@blocklet/list 0.8.21 → 0.8.24

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/lib/base.js CHANGED
@@ -13,11 +13,13 @@ var _Sort = _interopRequireDefault(require("@mui/icons-material/Sort"));
13
13
 
14
14
  var _material = require("@mui/material");
15
15
 
16
+ var _Face = _interopRequireDefault(require("@mui/icons-material/Face"));
17
+
16
18
  var _filter = require("./contexts/filter");
17
19
 
18
20
  var _customSelect = _interopRequireDefault(require("./components/custom-select"));
19
21
 
20
- var _filterAuthor = _interopRequireDefault(require("./components/filter-author"));
22
+ var _filter2 = require("./components/filter");
21
23
 
22
24
  var _utils = require("./libs/utils");
23
25
 
@@ -27,12 +29,10 @@ var _aside = _interopRequireDefault(require("./components/aside"));
27
29
 
28
30
  var _search = _interopRequireDefault(require("./components/search"));
29
31
 
30
- var _filterMobile = _interopRequireDefault(require("./components/filter-mobile"));
31
-
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
34
34
  const ListBase = () => {
35
- var _getSortOptions$find;
35
+ var _sortOptions$find, _priceOptions$find;
36
36
 
37
37
  const {
38
38
  handleDeveloper,
@@ -40,8 +40,16 @@ const ListBase = () => {
40
40
  filters,
41
41
  developerName,
42
42
  handleSort,
43
- t
43
+ handleCategory,
44
+ handlePrice,
45
+ t,
46
+ getCategoryLocale,
47
+ priceOptions
44
48
  } = (0, _filter.useFilterContext)();
49
+ const sortOptions = (0, _utils.getSortOptions)(t);
50
+ const sortLocale = ((_sortOptions$find = sortOptions.find(f => f.value === filters.sortBy)) === null || _sortOptions$find === void 0 ? void 0 : _sortOptions$find.name) || t('sort.sort');
51
+ const categoryLocale = getCategoryLocale(filters.category);
52
+ const priceLocale = (_priceOptions$find = priceOptions.find(price => price.value === filters.price)) === null || _priceOptions$find === void 0 ? void 0 : _priceOptions$find.name;
45
53
  return /*#__PURE__*/_react.default.createElement(_material.Box, {
46
54
  display: "flex",
47
55
  alignItems: "flex-start",
@@ -49,53 +57,48 @@ const ListBase = () => {
49
57
  }, /*#__PURE__*/_react.default.createElement(_material.Hidden, {
50
58
  mdDown: true
51
59
  }, /*#__PURE__*/_react.default.createElement(_aside.default, null)), /*#__PURE__*/_react.default.createElement(StyledMin, null, /*#__PURE__*/_react.default.createElement(_material.Box, {
52
- className: "marketplace-header",
60
+ className: "filter-bar",
53
61
  display: "flex",
54
62
  alignItems: "center"
55
- }, /*#__PURE__*/_react.default.createElement(_material.Hidden, {
56
- mdDown: true
57
- }, !!filters.developer && /*#__PURE__*/_react.default.createElement(_filterAuthor.default, {
58
- user: developerName,
59
- deleteUserTag: () => {
60
- handleDeveloper(null);
61
- }
62
- })), /*#__PURE__*/_react.default.createElement(_material.Box, {
63
- mt: 0,
64
- className: "searchContainer"
65
- }, /*#__PURE__*/_react.default.createElement(_material.Hidden, {
66
- mdUp: true
67
63
  }, /*#__PURE__*/_react.default.createElement(StyledSearch, {
68
- className: "search",
64
+ className: "search-container",
69
65
  placeholder: t('common.searchStore')
70
- }))), /*#__PURE__*/_react.default.createElement(_material.Box, {
66
+ }), /*#__PURE__*/_react.default.createElement(_material.Box, {
71
67
  mt: 0,
72
- ml: "10px",
73
- className: "filterContainer"
68
+ ml: "16px",
69
+ className: "filter-container"
74
70
  }, /*#__PURE__*/_react.default.createElement(_material.Hidden, {
75
71
  mdUp: true
76
- }, /*#__PURE__*/_react.default.createElement(_filterMobile.default, null)), /*#__PURE__*/_react.default.createElement(_customSelect.default, {
72
+ }, /*#__PURE__*/_react.default.createElement(_filter2.FilterIcon, null)), /*#__PURE__*/_react.default.createElement(_customSelect.default, {
77
73
  value: filters.sortBy,
78
- options: (0, _utils.getSortOptions)(t),
79
- title: ((_getSortOptions$find = (0, _utils.getSortOptions)(t).find(f => f.value === filters.sortBy)) === null || _getSortOptions$find === void 0 ? void 0 : _getSortOptions$find.name) || t('sort.sort'),
74
+ options: sortOptions,
75
+ title: sortLocale,
80
76
  icon: /*#__PURE__*/_react.default.createElement(_Sort.default, null),
81
77
  onChange: v => {
82
78
  handleSort(v);
83
79
  }
84
- }))), /*#__PURE__*/_react.default.createElement(_material.Hidden, {
85
- mdUp: true
86
- }, /*#__PURE__*/_react.default.createElement(_material.Box, {
80
+ }))), /*#__PURE__*/_react.default.createElement(_material.Box, {
87
81
  display: "flex",
88
82
  flexWrap: "wrap",
89
- alignItems: "center"
90
- }, !!filters.developer && /*#__PURE__*/_react.default.createElement(_filterAuthor.default, {
91
- user: developerName,
92
- deleteUserTag: () => {
83
+ alignItems: "center",
84
+ mb: "16px"
85
+ }, /*#__PURE__*/_react.default.createElement(_filter2.CustomChip, {
86
+ label: developerName,
87
+ icon: /*#__PURE__*/_react.default.createElement(_Face.default, null),
88
+ onDelete: () => {
93
89
  handleDeveloper(null);
94
- },
95
- style: {
96
- marginBottom: '16px'
97
90
  }
98
- }))), /*#__PURE__*/_react.default.createElement(_list.default, {
91
+ }), /*#__PURE__*/_react.default.createElement(_filter2.CustomChip, {
92
+ label: categoryLocale,
93
+ onDelete: () => {
94
+ handleCategory(null);
95
+ }
96
+ }), /*#__PURE__*/_react.default.createElement(_filter2.CustomChip, {
97
+ label: priceLocale,
98
+ onDelete: () => {
99
+ handlePrice(null);
100
+ }
101
+ })), /*#__PURE__*/_react.default.createElement(_list.default, {
99
102
  blocklets: blockletList
100
103
  })));
101
104
  };
@@ -103,7 +106,7 @@ const ListBase = () => {
103
106
  const StyledMin = _styledComponents.default.main.withConfig({
104
107
  displayName: "base__StyledMin",
105
108
  componentId: "sc-wumzlv-0"
106
- })(["flex:1;width:100%;min-width:0;.marketplace-header{justify-content:space-between;margin-bottom:20px;}.sort-button{white-space:nowrap;}.search{margin-left:0px;}@media (max-width:", "px){.searchContainer{flex:1;}.search{width:100%;}.filterContainer{flex:1;display:flex;justify-content:flex-end;}}@media (max-width:750px){.searchContainer{width:100%;}.filterContainer{width:100%;margin-left:0;display:flex;justify-content:flex-start;}.search{margin-bottom:20px;width:100%;}.marketplace-header{display:flex;flex-direction:column;align-items:flex-start;}}@media (max-width:", "px){.sort-button{font-size:12px;}}"], props => props.theme.breakpoints.values.md, props => props.theme.breakpoints.values.md);
109
+ })(["flex:1;width:100%;min-width:0;.filter-bar{justify-content:space-between;margin-bottom:", ";}.sort-button{white-space:nowrap;}.search-container{flex:2;margin-left:0px;}.filter-container{flex:1;display:flex;justify-content:flex-end;}@media (max-width:", "px){.search-container{width:100%;margin-bottom:", ";}.filter-container{margin-left:0;display:flex;justify-content:flex-start;}.filter-bar{display:flex;flex-direction:column;align-items:flex-start;}}@media (max-width:", "px){.sort-button{font-size:12px;}}"], props => props.theme.spacing(2), props => props.theme.breakpoints.values.md, props => props.theme.spacing(2), props => props.theme.breakpoints.values.md);
107
110
 
108
111
  const StyledSearch = (0, _styledComponents.default)(_search.default).withConfig({
109
112
  displayName: "base__StyledSearch",
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _filter = require("../contexts/filter");
13
+
14
+ var _filter2 = require("./filter");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ const Aside = () => {
19
+ const {
20
+ selectedCategory,
21
+ handleCategory,
22
+ t,
23
+ handlePrice,
24
+ filters,
25
+ categoryOptions,
26
+ priceOptions
27
+ } = (0, _filter.useFilterContext)();
28
+ return /*#__PURE__*/_react.default.createElement(StyledAside, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_filter2.FilterGroup, {
29
+ title: t('common.price'),
30
+ options: priceOptions,
31
+ value: filters.price,
32
+ onChange: handlePrice
33
+ })), /*#__PURE__*/_react.default.createElement("div", {
34
+ style: {
35
+ marginTop: '16px'
36
+ }
37
+ }, /*#__PURE__*/_react.default.createElement(_filter2.FilterGroup, {
38
+ title: t('common.category'),
39
+ options: categoryOptions,
40
+ value: selectedCategory,
41
+ onChange: handleCategory
42
+ })));
43
+ };
44
+
45
+ const StyledAside = _styledComponents.default.aside.withConfig({
46
+ displayName: "aside__StyledAside",
47
+ componentId: "sc-1wkvsv6-0"
48
+ })(["width:220px;margin-right:", ";height:100%;"], props => props.theme.spacing(2));
49
+
50
+ Aside.propTypes = {};
51
+ Aside.defaultProps = {};
52
+ var _default = Aside;
53
+ exports.default = _default;
@@ -13,11 +13,7 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
13
 
14
14
  var _material = require("@mui/material");
15
15
 
16
- var _Face = _interopRequireDefault(require("@mui/icons-material/Face"));
17
-
18
- var _filter = require("../contexts/filter");
19
-
20
- const _excluded = ["user", "deleteUserTag"];
16
+ const _excluded = ["label", "icon", "onDelete"];
21
17
 
22
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
19
 
@@ -26,38 +22,35 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
26
22
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
27
23
 
28
24
  const StyleDiv = _styledComponents.default.div.withConfig({
29
- displayName: "filter-author__StyleDiv",
30
- componentId: "sc-hnnc9f-0"
31
- })([".MuiChip-root{border-radius:4px;height:initial;text-transform:capitalize;}"]);
25
+ displayName: "custom-chip__StyleDiv",
26
+ componentId: "sc-4q1qqt-0"
27
+ })([".MuiChip-root{border-radius:4px;height:initial;text-transform:capitalize;margin-right:", ";padding:4px 0;}"], props => props.theme.spacing(2));
32
28
 
33
- const FilterAuthor = _ref => {
29
+ const FilterChip = _ref => {
34
30
  let {
35
- user,
36
- deleteUserTag
31
+ label,
32
+ icon,
33
+ onDelete
37
34
  } = _ref,
38
35
  containerProps = _objectWithoutProperties(_ref, _excluded);
39
36
 
40
- const {
41
- t
42
- } = (0, _filter.useFilterContext)();
43
- if (!user) return null;
37
+ if (!label) return null;
44
38
  return /*#__PURE__*/_react.default.createElement(StyleDiv, containerProps, /*#__PURE__*/_react.default.createElement(_material.Chip, {
45
- icon: /*#__PURE__*/_react.default.createElement(_Face.default, null),
46
- label: t('blocklet.owner', {
47
- name: user
48
- }),
49
- onDelete: () => {
50
- deleteUserTag();
51
- }
39
+ icon: icon,
40
+ label: label,
41
+ onDelete: onDelete
52
42
  }));
53
43
  };
54
44
 
55
- FilterAuthor.propTypes = {
56
- user: _propTypes.default.string.isRequired,
57
- deleteUserTag: _propTypes.default.func
45
+ FilterChip.propTypes = {
46
+ label: _propTypes.default.string,
47
+ onDelete: _propTypes.default.func,
48
+ icon: _propTypes.default.element
58
49
  };
59
- FilterAuthor.defaultProps = {
60
- deleteUserTag: () => {}
50
+ FilterChip.defaultProps = {
51
+ onDelete: () => {},
52
+ icon: null,
53
+ label: null
61
54
  };
62
- var _default = FilterAuthor;
55
+ var _default = FilterChip;
63
56
  exports.default = _default;
@@ -13,7 +13,7 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
- function Content(_ref) {
16
+ function FilterGroup(_ref) {
17
17
  let {
18
18
  options,
19
19
  onChange,
@@ -25,8 +25,10 @@ function Content(_ref) {
25
25
  }, title), /*#__PURE__*/_react.default.createElement("div", {
26
26
  className: "list"
27
27
  }, options.map(item => {
28
- return /*#__PURE__*/_react.default.createElement("span", {
28
+ return /*#__PURE__*/_react.default.createElement("div", {
29
+ title: item.name,
29
30
  key: item.value,
31
+ "data-cy": "filter",
30
32
  className: value === item.value ? 'select item' : 'item',
31
33
  onClick: () => onChange(item.value)
32
34
  }, item.name);
@@ -34,18 +36,18 @@ function Content(_ref) {
34
36
  }
35
37
 
36
38
  const StyledDiv = _styledComponents.default.div.withConfig({
37
- displayName: "content__StyledDiv",
38
- componentId: "sc-16pmlm6-0"
39
- })([".title{font-size:18px;font-weight:bold;}.list{display:flex;flex-direction:column;align-items:flex-start;margin-left:8px;}.item{margin:16px 0;cursor:pointer;}.select{color:", ";}"], props => props.theme.palette.primary.main);
39
+ displayName: "group__StyledDiv",
40
+ componentId: "sc-1lj02tr-0"
41
+ })([".title{font-size:18px;font-weight:bold;margin-bottom:", ";}.list{}.item{font-size:16px;padding:", ";color:#9397a1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:capitalize;cursor:pointer;&:hover{background-color:", ";color:initial;font-weight:bold;}}.select{color:", ";font-weight:bold;}"], props => props.theme.spacing(1), props => props.theme.spacing(1), props => props.theme.palette.grey[50], props => props.theme.palette.primary.main);
40
42
 
41
- Content.propTypes = {
43
+ FilterGroup.propTypes = {
42
44
  title: _propTypes.default.string.isRequired,
43
45
  options: _propTypes.default.array.isRequired,
44
46
  onChange: _propTypes.default.func.isRequired,
45
47
  value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
46
48
  };
47
- Content.defaultProps = {
49
+ FilterGroup.defaultProps = {
48
50
  value: null
49
51
  };
50
- var _default = Content;
52
+ var _default = FilterGroup;
51
53
  exports.default = _default;
@@ -17,9 +17,7 @@ var _Button = _interopRequireDefault(require("@mui/material/Button"));
17
17
 
18
18
  var _filter = require("../../contexts/filter");
19
19
 
20
- var _content = _interopRequireDefault(require("./content"));
21
-
22
- var _utils = require("../../libs/utils");
20
+ var _group = _interopRequireDefault(require("./group"));
23
21
 
24
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
23
 
@@ -27,20 +25,30 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
27
25
 
28
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
27
 
30
- // import PropTypes from 'prop-types';
31
- function MobileFilter() {
28
+ function FilterIcon() {
32
29
  const {
33
30
  selectedCategory,
34
31
  handleCategory,
35
32
  t,
36
33
  handlePrice,
37
34
  filters,
38
- categoryList,
39
- locale
35
+ categoryOptions,
36
+ priceOptions
40
37
  } = (0, _filter.useFilterContext)();
41
38
  const [open, setOpen] = (0, _react.useState)(false);
42
- const categoriesOption = (0, _utils.getCategoriesOption)(categoryList, locale);
43
- const prices = (0, _utils.getPrices)(t);
39
+
40
+ const handelChange = (type, value) => {
41
+ if (type === 'category') {
42
+ handleCategory(value);
43
+ }
44
+
45
+ if (type === 'price') {
46
+ handlePrice(value);
47
+ }
48
+
49
+ setOpen(false);
50
+ };
51
+
44
52
  return /*#__PURE__*/_react.default.createElement(StyledDiv, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
45
53
  variant: "outlined",
46
54
  className: "filter-button",
@@ -53,25 +61,33 @@ function MobileFilter() {
53
61
  title: "",
54
62
  open: open,
55
63
  onClose: () => setOpen(false)
56
- }, /*#__PURE__*/_react.default.createElement(_content.default, {
64
+ }, /*#__PURE__*/_react.default.createElement(_group.default, {
57
65
  title: t('common.price'),
58
- options: prices,
66
+ options: priceOptions,
59
67
  value: filters.price,
60
- onChange: handlePrice
61
- }), /*#__PURE__*/_react.default.createElement(_content.default, {
68
+ onChange: v => {
69
+ handelChange('price', v);
70
+ }
71
+ }), /*#__PURE__*/_react.default.createElement("div", {
72
+ style: {
73
+ marginTop: '16px'
74
+ }
75
+ }, /*#__PURE__*/_react.default.createElement(_group.default, {
62
76
  title: t('common.category'),
63
- options: categoriesOption,
77
+ options: categoryOptions,
64
78
  value: selectedCategory,
65
- onChange: handleCategory
66
- })));
79
+ onChange: v => {
80
+ handelChange('category', v);
81
+ }
82
+ }))));
67
83
  }
68
84
 
69
85
  const StyledDiv = _styledComponents.default.div.withConfig({
70
- displayName: "filter-mobile__StyledDiv",
71
- componentId: "sc-5csoa5-0"
86
+ displayName: "icon__StyledDiv",
87
+ componentId: "sc-17rafy1-0"
72
88
  })([".filter-button{margin-right:16px;border-color:rgb(240,240,240);padding:5px 8px;min-width:initial;}.filter-icon{cursor:pointer;color:", ";}"], props => props.theme.palette.grey[500]);
73
89
 
74
- MobileFilter.propTypes = {};
75
- MobileFilter.defaultProps = {};
76
- var _default = MobileFilter;
90
+ FilterIcon.propTypes = {};
91
+ FilterIcon.defaultProps = {};
92
+ var _default = FilterIcon;
77
93
  exports.default = _default;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CustomChip", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _customChip.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "FilterGroup", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _group.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "FilterIcon", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _icon.default;
22
+ }
23
+ });
24
+
25
+ var _icon = _interopRequireDefault(require("./icon"));
26
+
27
+ var _customChip = _interopRequireDefault(require("./custom-chip"));
28
+
29
+ var _group = _interopRequireDefault(require("./group"));
30
+
31
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -127,7 +127,7 @@ BlockletList.defaultProps = {};
127
127
  const StyledGrid = (0, _styledComponents.default)(_Grid.default).withConfig({
128
128
  displayName: "list__StyledGrid",
129
129
  componentId: "sc-jzgpev-0"
130
- })(["@media (max-width:", "px){&.MuiGrid-item{padding-bottom:0px;margin-left:", ";padding-right:", ";}}"], props => props.theme.breakpoints.values.sm, props => props.theme.spacing(-2), props => props.theme.spacing(0.5));
130
+ })(["@media (max-width:", "px){&.MuiGrid-item{padding-bottom:0px;margin-left:", ";padding-right:", ";}}@media (min-width:", "px){&.MuiGrid-item{margin-bottom:", ";}}"], props => props.theme.breakpoints.values.sm, props => props.theme.spacing(-2), props => props.theme.spacing(0.5), props => props.theme.breakpoints.values.sm, props => props.theme.spacing(2));
131
131
  const CustomEmpty = (0, _styledComponents.default)(_Empty.default).withConfig({
132
132
  displayName: "list__CustomEmpty",
133
133
  componentId: "sc-jzgpev-1"
@@ -94,7 +94,7 @@ Search.defaultProps = {
94
94
  const StyledSearch = (0, _styledComponents.default)(_material.OutlinedInput).withConfig({
95
95
  displayName: "search__StyledSearch",
96
96
  componentId: "sc-1ehlqka-0"
97
- })(["background-color:#fff;border-radius:12px;font-size:16px;margin:0 10px;.MuiInputBase-input{padding:12px 0px 12px 0px;}.MuiOutlinedInput-notchedOutline{border:none;}.Mui-focused{background-color:#f6f6f6;.MuiInputBase-input::placeholder{color:transparent;}}@media (max-width:", "px){font-size:14px;border-radius:6px;.MuiInputBase-input{padding:8px 0 8px 10px;}}"], props => props.theme.breakpoints.values.md);
97
+ })(["background-color:#fff;font-size:14px;border-radius:6px;.MuiInputBase-input{padding:8px 0 8px 10px;}.MuiOutlinedInput-notchedOutline{border:none;}.Mui-focused{background-color:#f6f6f6;.MuiInputBase-input::placeholder{color:transparent;}}"]);
98
98
  const StyledSearchIcon = (0, _styledComponents.default)(_Search.default).withConfig({
99
99
  displayName: "search__StyledSearchIcon",
100
100
  componentId: "sc-1ehlqka-1"
@@ -44,8 +44,6 @@ exports.FilterConsumer = Consumer;
44
44
 
45
45
  function FilterProvider(_ref) {
46
46
  let {
47
- onSelectBlocklet,
48
- selectedBlocklets,
49
47
  filters,
50
48
  children,
51
49
  baseUrl,
@@ -87,15 +85,21 @@ function FilterProvider(_ref) {
87
85
  initialData: [],
88
86
  manual: true
89
87
  });
90
- const selectedCategory = filters.category;
91
- const hasDeveloperFilter = !!filters.developer;
88
+
89
+ const finalFilters = _objectSpread({
90
+ sortBy: 'popularity',
91
+ sortDirection: 'desc'
92
+ }, filters);
93
+
94
+ const selectedCategory = finalFilters.category;
95
+ const hasDeveloperFilter = !!finalFilters.developer;
92
96
  const categoryState = (0, _react.useMemo)(() => {
93
97
  return !hasDeveloperFilter ? {
94
98
  data: allCategories
95
- } : (0, _utils.getCategories)(allBlocklets, filters.developer);
99
+ } : (0, _utils.getCategories)(allBlocklets, finalFilters.developer);
96
100
  }, [hasDeveloperFilter, allCategories]);
97
101
  const blockletList = (0, _react.useMemo)(() => {
98
- var _filters$keyword;
102
+ var _finalFilters$keyword;
99
103
 
100
104
  const sortByName = x => {
101
105
  var _x$title, _x$name;
@@ -116,27 +120,27 @@ function FilterProvider(_ref) {
116
120
  popularity: sortByPopularity,
117
121
  publishAt: sortByPublish
118
122
  };
119
- let result = allBlocklets || []; // 按照付费/免费筛选
123
+ let blocklets = allBlocklets || []; // 按照付费/免费筛选
120
124
 
121
- result = (0, _utils.filterBlockletByPrice)(result, filters.price); // 按照分类筛选
125
+ blocklets = (0, _utils.filterBlockletByPrice)(blocklets, finalFilters.price); // 按照分类筛选
122
126
 
123
- result = result.filter(item => {
127
+ blocklets = blocklets.filter(item => {
124
128
  var _item$category;
125
129
 
126
130
  return selectedCategory ? (item === null || item === void 0 ? void 0 : (_item$category = item.category) === null || _item$category === void 0 ? void 0 : _item$category.name) === selectedCategory : true;
127
131
  }); // 按照作者筛选
128
132
 
129
- result = result.filter(item => filters !== null && filters !== void 0 && filters.developer ? item.owner.did === filters.developer : true);
130
- const lowerSearch = (filters === null || filters === void 0 ? void 0 : (_filters$keyword = filters.keyword) === null || _filters$keyword === void 0 ? void 0 : _filters$keyword.toLocaleLowerCase()) || ''; // 按照搜索筛选
133
+ blocklets = blocklets.filter(item => finalFilters !== null && finalFilters !== void 0 && finalFilters.developer ? item.owner.did === finalFilters.developer : true);
134
+ const lowerSearch = (finalFilters === null || finalFilters === void 0 ? void 0 : (_finalFilters$keyword = finalFilters.keyword) === null || _finalFilters$keyword === void 0 ? void 0 : _finalFilters$keyword.toLocaleLowerCase()) || ''; // 按照搜索筛选
131
135
 
132
- result = result.filter(item => {
136
+ blocklets = blocklets.filter(item => {
133
137
  var _ref2, _item$description, _item$version;
134
138
 
135
139
  return ((_ref2 = (item === null || item === void 0 ? void 0 : item.title) || (item === null || item === void 0 ? void 0 : item.name)) === null || _ref2 === void 0 ? void 0 : _ref2.toLocaleLowerCase().includes(lowerSearch)) || ((_item$description = item.description) === null || _item$description === void 0 ? void 0 : _item$description.toLocaleLowerCase().includes(lowerSearch)) || (item === null || item === void 0 ? void 0 : (_item$version = item.version) === null || _item$version === void 0 ? void 0 : _item$version.toLocaleLowerCase().includes(lowerSearch));
136
140
  }); // 排序
137
141
 
138
- return (0, _orderBy.default)(result, [sortMap[filters.sortBy]], [filters.sortDirection]);
139
- }, [allBlocklets, filters]);
142
+ return (0, _orderBy.default)(blocklets, [sortMap[finalFilters.sortBy]], [finalFilters.sortDirection]);
143
+ }, [allBlocklets, finalFilters]);
140
144
  const categoryList = (0, _react.useMemo)(() => {
141
145
  const list = categoryState.data || []; // 分类按照名称排序
142
146
 
@@ -152,6 +156,8 @@ function FilterProvider(_ref) {
152
156
  return (0, _utils.replaceTranslate)(_locale.default[locale][key], data);
153
157
  };
154
158
 
159
+ const categoryOptions = (0, _react.useMemo)(() => (0, _utils.getCategoryOptions)(categoryList, locale), [categoryList, locale]);
160
+ const priceOptions = (0, _utils.getPrices)(translate);
155
161
  const filterStore = {
156
162
  errors: {
157
163
  fetchBlockletsError,
@@ -164,19 +170,16 @@ function FilterProvider(_ref) {
164
170
  endpoint,
165
171
  blockletList,
166
172
  t: translate,
167
- filters: _objectSpread({
168
- sortBy: 'popularity',
169
- sortDirection: 'desc'
170
- }, filters),
173
+ filters: finalFilters,
171
174
  selectedCategory,
172
175
  categoryList,
173
176
  baseUrl,
174
177
  blockletRender,
175
178
  locale,
176
- selectedBlocklets,
177
- onSelectBlocklet,
179
+ categoryOptions,
180
+ priceOptions,
178
181
  handleSort: sort => {
179
- const changeData = _objectSpread(_objectSpread({}, filters), {}, {
182
+ const changeData = _objectSpread(_objectSpread({}, finalFilters), {}, {
180
183
  sortBy: sort,
181
184
  sortDirection: sort === 'nameAsc' ? 'asc' : 'desc'
182
185
  });
@@ -184,36 +187,34 @@ function FilterProvider(_ref) {
184
187
  onFilterChange(changeData);
185
188
  },
186
189
  handleKeyword: keyWord => {
187
- const changeData = _objectSpread(_objectSpread({}, filters), {}, {
190
+ const changeData = _objectSpread(_objectSpread({}, finalFilters), {}, {
188
191
  keyword: keyWord || undefined
189
192
  });
190
193
 
191
194
  onFilterChange(changeData);
192
195
  },
193
196
  handlePrice: price => {
194
- const changeData = _objectSpread(_objectSpread({}, filters), {}, {
195
- price: price === filters.price ? undefined : price
197
+ const changeData = _objectSpread(_objectSpread({}, finalFilters), {}, {
198
+ price: price === finalFilters.price ? undefined : price
196
199
  });
197
200
 
198
201
  onFilterChange(changeData);
199
202
  },
200
203
  handleCategory: category => {
201
- if (category === 'all') {
202
- const changeData = _objectSpread(_objectSpread({}, filters), {}, {
203
- category: undefined
204
- });
205
-
206
- onFilterChange(changeData);
207
- } else {
208
- const changeData = _objectSpread(_objectSpread({}, filters), {}, {
209
- category: category === filters.category ? undefined : category
210
- });
211
-
212
- onFilterChange(changeData);
204
+ let finalCategory = category;
205
+
206
+ if (category === 'all' || category === finalFilters.category) {
207
+ finalCategory = undefined;
213
208
  }
209
+
210
+ const changeData = _objectSpread(_objectSpread({}, finalFilters), {}, {
211
+ category: finalCategory
212
+ });
213
+
214
+ onFilterChange(changeData);
214
215
  },
215
216
  handleDeveloper: developer => {
216
- const changeData = _objectSpread(_objectSpread({}, filters), {}, {
217
+ const changeData = _objectSpread(_objectSpread({}, finalFilters), {}, {
217
218
  developer: developer || undefined
218
219
  });
219
220
 
@@ -234,7 +235,7 @@ function FilterProvider(_ref) {
234
235
  get developerName() {
235
236
  var _allBlocklets$find, _allBlocklets$find$ow;
236
237
 
237
- return ((_allBlocklets$find = allBlocklets.find(i => i.owner.did === filters.developer)) === null || _allBlocklets$find === void 0 ? void 0 : (_allBlocklets$find$ow = _allBlocklets$find.owner) === null || _allBlocklets$find$ow === void 0 ? void 0 : _allBlocklets$find$ow.name) || '';
238
+ return ((_allBlocklets$find = allBlocklets.find(blocklet => blocklet.owner.did === finalFilters.developer)) === null || _allBlocklets$find === void 0 ? void 0 : (_allBlocklets$find$ow = _allBlocklets$find.owner) === null || _allBlocklets$find$ow === void 0 ? void 0 : _allBlocklets$find$ow.name) || '';
238
239
  }
239
240
 
240
241
  };
package/lib/libs/utils.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.urlStringify = exports.replaceTranslate = exports.removeUndefined = exports.getStoreDetail = exports.getSortOptions = exports.getPrices = exports.getCategoriesOption = exports.getCategories = exports.formatLogoPath = exports.formatError = exports.filterBlockletByPrice = void 0;
6
+ exports.urlStringify = exports.replaceTranslate = exports.removeUndefined = exports.getStoreDetail = exports.getSortOptions = exports.getPrices = exports.getCategoryOptions = exports.getCategories = exports.formatLogoPath = exports.formatError = exports.filterBlockletByPrice = void 0;
7
7
 
8
8
  var _urlJoin = _interopRequireDefault(require("url-join"));
9
9
 
@@ -50,7 +50,7 @@ const getPrices = t => {
50
50
 
51
51
  exports.getPrices = getPrices;
52
52
 
53
- const getCategoriesOption = function getCategoriesOption() {
53
+ const getCategoryOptions = function getCategoryOptions() {
54
54
  let list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
55
55
  let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
56
56
  return list.map(item => ({
@@ -66,7 +66,7 @@ const getCategoriesOption = function getCategoriesOption() {
66
66
  */
67
67
 
68
68
 
69
- exports.getCategoriesOption = getCategoriesOption;
69
+ exports.getCategoryOptions = getCategoryOptions;
70
70
 
71
71
  const getCategories = (list, developerDid) => {
72
72
  const filterList = list.filter(item => developerDid ? item.owner.did === developerDid : true);