@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 +40 -37
- package/lib/components/aside.js +53 -0
- package/lib/components/{filter-author.js → filter/custom-chip.js} +21 -28
- package/lib/components/{filter-mobile/content.js → filter/group.js} +10 -8
- package/lib/components/{filter-mobile/index.js → filter/icon.js} +37 -21
- package/lib/components/filter/index.js +31 -0
- package/lib/components/list/list.js +1 -1
- package/lib/components/search.js +1 -1
- package/lib/contexts/filter.js +39 -38
- package/lib/libs/utils.js +3 -3
- package/package.json +3 -3
- package/src/base.js +61 -61
- package/src/components/aside.js +36 -0
- package/src/components/filter/custom-chip.js +33 -0
- package/src/components/{filter-mobile/content.js → filter/group.js} +22 -11
- package/src/components/{filter-mobile/index.js → filter/icon.js} +33 -16
- package/src/components/filter/index.js +5 -0
- package/src/components/list/list.js +5 -0
- package/src/components/search.js +3 -11
- package/src/contexts/filter.js +34 -40
- package/src/libs/utils.js +2 -2
- package/lib/components/aside/aside.js +0 -64
- package/lib/components/aside/category-link-list.js +0 -78
- package/lib/components/aside/index.js +0 -13
- package/src/components/aside/aside.js +0 -90
- package/src/components/aside/category-link-list.js +0 -53
- package/src/components/aside/index.js +0 -3
- package/src/components/filter-author.js +0 -38
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
|
|
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
|
|
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
|
-
|
|
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: "
|
|
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
|
-
})
|
|
66
|
+
}), /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
71
67
|
mt: 0,
|
|
72
|
-
ml: "
|
|
73
|
-
className: "
|
|
68
|
+
ml: "16px",
|
|
69
|
+
className: "filter-container"
|
|
74
70
|
}, /*#__PURE__*/_react.default.createElement(_material.Hidden, {
|
|
75
71
|
mdUp: true
|
|
76
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
72
|
+
}, /*#__PURE__*/_react.default.createElement(_filter2.FilterIcon, null)), /*#__PURE__*/_react.default.createElement(_customSelect.default, {
|
|
77
73
|
value: filters.sortBy,
|
|
78
|
-
options:
|
|
79
|
-
title:
|
|
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.
|
|
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
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
})
|
|
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;.
|
|
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
|
-
|
|
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: "
|
|
30
|
-
componentId: "sc-
|
|
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
|
|
29
|
+
const FilterChip = _ref => {
|
|
34
30
|
let {
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
label,
|
|
32
|
+
icon,
|
|
33
|
+
onDelete
|
|
37
34
|
} = _ref,
|
|
38
35
|
containerProps = _objectWithoutProperties(_ref, _excluded);
|
|
39
36
|
|
|
40
|
-
|
|
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:
|
|
46
|
-
label:
|
|
47
|
-
|
|
48
|
-
}),
|
|
49
|
-
onDelete: () => {
|
|
50
|
-
deleteUserTag();
|
|
51
|
-
}
|
|
39
|
+
icon: icon,
|
|
40
|
+
label: label,
|
|
41
|
+
onDelete: onDelete
|
|
52
42
|
}));
|
|
53
43
|
};
|
|
54
44
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
45
|
+
FilterChip.propTypes = {
|
|
46
|
+
label: _propTypes.default.string,
|
|
47
|
+
onDelete: _propTypes.default.func,
|
|
48
|
+
icon: _propTypes.default.element
|
|
58
49
|
};
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
FilterChip.defaultProps = {
|
|
51
|
+
onDelete: () => {},
|
|
52
|
+
icon: null,
|
|
53
|
+
label: null
|
|
61
54
|
};
|
|
62
|
-
var _default =
|
|
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
|
|
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("
|
|
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: "
|
|
38
|
-
componentId: "sc-
|
|
39
|
-
})([".title{font-size:18px;font-weight:bold;}.list{
|
|
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
|
-
|
|
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
|
-
|
|
49
|
+
FilterGroup.defaultProps = {
|
|
48
50
|
value: null
|
|
49
51
|
};
|
|
50
|
-
var _default =
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
39
|
-
|
|
35
|
+
categoryOptions,
|
|
36
|
+
priceOptions
|
|
40
37
|
} = (0, _filter.useFilterContext)();
|
|
41
38
|
const [open, setOpen] = (0, _react.useState)(false);
|
|
42
|
-
|
|
43
|
-
const
|
|
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(
|
|
64
|
+
}, /*#__PURE__*/_react.default.createElement(_group.default, {
|
|
57
65
|
title: t('common.price'),
|
|
58
|
-
options:
|
|
66
|
+
options: priceOptions,
|
|
59
67
|
value: filters.price,
|
|
60
|
-
onChange:
|
|
61
|
-
|
|
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:
|
|
77
|
+
options: categoryOptions,
|
|
64
78
|
value: selectedCategory,
|
|
65
|
-
onChange:
|
|
66
|
-
|
|
79
|
+
onChange: v => {
|
|
80
|
+
handelChange('category', v);
|
|
81
|
+
}
|
|
82
|
+
}))));
|
|
67
83
|
}
|
|
68
84
|
|
|
69
85
|
const StyledDiv = _styledComponents.default.div.withConfig({
|
|
70
|
-
displayName: "
|
|
71
|
-
componentId: "sc-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
var _default =
|
|
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"
|
package/lib/components/search.js
CHANGED
|
@@ -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;
|
|
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"
|
package/lib/contexts/filter.js
CHANGED
|
@@ -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
|
-
|
|
91
|
-
const
|
|
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,
|
|
99
|
+
} : (0, _utils.getCategories)(allBlocklets, finalFilters.developer);
|
|
96
100
|
}, [hasDeveloperFilter, allCategories]);
|
|
97
101
|
const blockletList = (0, _react.useMemo)(() => {
|
|
98
|
-
var
|
|
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
|
|
123
|
+
let blocklets = allBlocklets || []; // 按照付费/免费筛选
|
|
120
124
|
|
|
121
|
-
|
|
125
|
+
blocklets = (0, _utils.filterBlockletByPrice)(blocklets, finalFilters.price); // 按照分类筛选
|
|
122
126
|
|
|
123
|
-
|
|
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
|
-
|
|
130
|
-
const lowerSearch = (
|
|
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
|
-
|
|
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)(
|
|
139
|
-
}, [allBlocklets,
|
|
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:
|
|
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
|
-
|
|
177
|
-
|
|
179
|
+
categoryOptions,
|
|
180
|
+
priceOptions,
|
|
178
181
|
handleSort: sort => {
|
|
179
|
-
const changeData = _objectSpread(_objectSpread({},
|
|
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({},
|
|
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({},
|
|
195
|
-
price: 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
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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({},
|
|
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(
|
|
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.
|
|
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
|
|
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.
|
|
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);
|