@blocklet/list 0.8.13 → 0.8.16
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 +21 -24
- package/lib/components/{aside.js → aside/aside.js} +11 -12
- package/lib/components/aside/category-link-list.js +78 -0
- package/lib/components/aside/index.js +13 -0
- package/lib/components/category-select.js +55 -0
- package/lib/components/{button.js → custom-select/button.js} +1 -1
- package/lib/components/{custom-select.js → custom-select/custom-select.js} +8 -6
- package/lib/components/custom-select/index.js +13 -0
- package/lib/components/filter-author.js +2 -3
- package/lib/components/{empty.js → list/empty.js} +6 -8
- package/lib/components/list/index.js +13 -0
- package/lib/components/{list.js → list/list.js} +12 -12
- package/lib/components/search.js +17 -18
- package/lib/contexts/{store.js → filter.js} +90 -159
- package/lib/index.js +6 -16
- package/lib/libs/prop-types.js +34 -0
- package/lib/{tools → libs}/utils.js +6 -6
- package/package.json +60 -64
- package/src/base.js +17 -18
- package/src/components/{aside.js → aside/aside.js} +7 -8
- package/src/components/aside/category-link-list.js +53 -0
- package/src/components/aside/index.js +3 -0
- package/src/components/category-select.js +43 -0
- package/src/components/{button.js → custom-select/button.js} +0 -0
- package/src/components/{custom-select.js → custom-select/custom-select.js} +5 -4
- package/src/components/custom-select/index.js +3 -0
- package/src/components/filter-author.js +2 -3
- package/src/components/{empty.js → list/empty.js} +7 -8
- package/src/components/list/index.js +3 -0
- package/src/components/{list.js → list/list.js} +10 -10
- package/src/components/search.js +12 -12
- package/src/contexts/filter.js +196 -0
- package/src/index.js +6 -16
- package/src/libs/prop-types.js +26 -0
- package/src/{tools → libs}/utils.js +6 -6
- package/lib/components/categories.js +0 -143
- package/lib/hooks/page-state.js +0 -69
- package/src/components/categories.js +0 -129
- package/src/contexts/store.js +0 -266
- package/src/hooks/page-state.js +0 -53
|
@@ -3,30 +3,26 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
6
|
+
exports.FilterConsumer = void 0;
|
|
7
|
+
exports.FilterProvider = FilterProvider;
|
|
8
|
+
exports.useFilterContext = useFilterContext;
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
|
|
14
|
-
var _reactRouterDom = require("react-router-dom");
|
|
15
|
-
|
|
16
14
|
var _ahooks = require("ahooks");
|
|
17
15
|
|
|
18
|
-
var _orderBy = _interopRequireDefault(require("lodash
|
|
16
|
+
var _orderBy = _interopRequireDefault(require("lodash/orderBy"));
|
|
19
17
|
|
|
20
18
|
var _axios = _interopRequireDefault(require("axios"));
|
|
21
19
|
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
var _pageState = _interopRequireDefault(require("../hooks/page-state"));
|
|
25
|
-
|
|
26
|
-
var _utils = require("../tools/utils");
|
|
20
|
+
var _utils = require("../libs/utils");
|
|
27
21
|
|
|
28
22
|
var _locale = _interopRequireDefault(require("../assets/locale"));
|
|
29
23
|
|
|
24
|
+
var _propTypes2 = require("../libs/prop-types");
|
|
25
|
+
|
|
30
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
27
|
|
|
32
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -39,34 +35,29 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
39
35
|
|
|
40
36
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
41
37
|
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
const Search = /*#__PURE__*/(0, _react.createContext)({});
|
|
38
|
+
const Filter = /*#__PURE__*/(0, _react.createContext)({});
|
|
45
39
|
const {
|
|
46
40
|
Provider,
|
|
47
41
|
Consumer
|
|
48
|
-
} =
|
|
49
|
-
exports.
|
|
42
|
+
} = Filter;
|
|
43
|
+
exports.FilterConsumer = Consumer;
|
|
50
44
|
|
|
51
|
-
function
|
|
45
|
+
function FilterProvider(_ref) {
|
|
52
46
|
let {
|
|
47
|
+
onSelectBlocklet,
|
|
48
|
+
selectedBlocklets,
|
|
49
|
+
filters,
|
|
53
50
|
children,
|
|
54
51
|
baseUrl,
|
|
55
|
-
type,
|
|
56
52
|
endpoint,
|
|
57
53
|
locale,
|
|
58
|
-
blockletRender
|
|
54
|
+
blockletRender,
|
|
55
|
+
onFilterChange
|
|
59
56
|
} = _ref;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const pathParams = (0, _reactRouterDom.useParams)();
|
|
65
|
-
const isPageMode = type === 'page';
|
|
66
|
-
|
|
67
|
-
if (isPageMode && !baseUrl) {
|
|
68
|
-
throw new Error('baseUrl is required when type is page');
|
|
69
|
-
}
|
|
57
|
+
|
|
58
|
+
const storeApi = _axios.default.create({
|
|
59
|
+
baseURL: endpoint
|
|
60
|
+
});
|
|
70
61
|
|
|
71
62
|
const {
|
|
72
63
|
data: allBlocklets,
|
|
@@ -76,7 +67,7 @@ function SearchProvider(_ref) {
|
|
|
76
67
|
} = (0, _ahooks.useRequest)(async () => {
|
|
77
68
|
const {
|
|
78
69
|
data: list
|
|
79
|
-
} = await
|
|
70
|
+
} = await storeApi.get('/api/blocklets.json');
|
|
80
71
|
return list;
|
|
81
72
|
}, {
|
|
82
73
|
initialData: [],
|
|
@@ -90,58 +81,21 @@ function SearchProvider(_ref) {
|
|
|
90
81
|
} = (0, _ahooks.useRequest)(async () => {
|
|
91
82
|
const {
|
|
92
83
|
data: list
|
|
93
|
-
} = await
|
|
84
|
+
} = await storeApi.get('/api/blocklets/categories');
|
|
94
85
|
return list;
|
|
95
86
|
}, {
|
|
96
87
|
initialData: [],
|
|
97
88
|
manual: true
|
|
98
89
|
});
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}, [
|
|
106
|
-
let sortParams; // 当作页面使用时 sort 数据比较特殊, 默认取 localStorge 中的值,如果 url query 中有sort值则优先使用
|
|
107
|
-
|
|
108
|
-
if (isPageMode) {
|
|
109
|
-
const localSortParams = (0, _pageState.default)({
|
|
110
|
-
sort: 'popularity',
|
|
111
|
-
direction: 'desc'
|
|
112
|
-
}, baseUrl);
|
|
113
|
-
const urlSortParams = {
|
|
114
|
-
sort: queryParams.get('sortBy'),
|
|
115
|
-
direction: queryParams.get('sortDirection')
|
|
116
|
-
};
|
|
117
|
-
sortParams = urlSortParams.sort && urlSortParams.direction ? urlSortParams : localSortParams;
|
|
118
|
-
} else {
|
|
119
|
-
sortParams = (0, _react.useMemo)(() => {
|
|
120
|
-
return {
|
|
121
|
-
sort: memoryParams.sortBy,
|
|
122
|
-
direction: memoryParams.sortDirection
|
|
123
|
-
};
|
|
124
|
-
}, [memoryParams]);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const isSearchPage = location.pathname === (0, _urlJoin.default)(baseUrl, '/search');
|
|
128
|
-
const selectedCategory = (0, _react.useMemo)(() => {
|
|
129
|
-
let result = null;
|
|
130
|
-
|
|
131
|
-
if (isPageMode) {
|
|
132
|
-
result = !isSearchPage ? pathParams.category : queryParams.get('category');
|
|
133
|
-
} else {
|
|
134
|
-
result = queryParams.get('category');
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
return result;
|
|
138
|
-
}, [isPageMode, pathParams, queryParams]);
|
|
139
|
-
const hasDeveloperFilter = !!queryParams.get('developer');
|
|
140
|
-
const categoryState = !hasDeveloperFilter ? {
|
|
141
|
-
data: allCategories
|
|
142
|
-
} : (0, _utils.getCategories)(allBlocklets, queryParams.get('developer'));
|
|
90
|
+
const selectedCategory = filters.category;
|
|
91
|
+
const hasDeveloperFilter = !!filters.developer;
|
|
92
|
+
const categoryState = (0, _react.useMemo)(() => {
|
|
93
|
+
return !hasDeveloperFilter ? {
|
|
94
|
+
data: allCategories
|
|
95
|
+
} : (0, _utils.getCategories)(allBlocklets, filters.developer);
|
|
96
|
+
}, [hasDeveloperFilter, allCategories]);
|
|
143
97
|
const blockletList = (0, _react.useMemo)(() => {
|
|
144
|
-
var
|
|
98
|
+
var _filters$keyword;
|
|
145
99
|
|
|
146
100
|
const sortByName = x => {
|
|
147
101
|
var _x$title, _x$name;
|
|
@@ -164,7 +118,7 @@ function SearchProvider(_ref) {
|
|
|
164
118
|
};
|
|
165
119
|
let result = allBlocklets || []; // 按照付费/免费筛选
|
|
166
120
|
|
|
167
|
-
result = (0, _utils.filterBlockletByPrice)(result,
|
|
121
|
+
result = (0, _utils.filterBlockletByPrice)(result, filters.price); // 按照分类筛选
|
|
168
122
|
|
|
169
123
|
result = result.filter(item => {
|
|
170
124
|
var _item$category;
|
|
@@ -172,8 +126,8 @@ function SearchProvider(_ref) {
|
|
|
172
126
|
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;
|
|
173
127
|
}); // 按照作者筛选
|
|
174
128
|
|
|
175
|
-
result = result.filter(item =>
|
|
176
|
-
const lowerSearch = (
|
|
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()) || ''; // 按照搜索筛选
|
|
177
131
|
|
|
178
132
|
result = result.filter(item => {
|
|
179
133
|
var _ref2, _item$description, _item$version;
|
|
@@ -181,8 +135,8 @@ function SearchProvider(_ref) {
|
|
|
181
135
|
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));
|
|
182
136
|
}); // 排序
|
|
183
137
|
|
|
184
|
-
return (0, _orderBy.default)(result, [sortMap[
|
|
185
|
-
}, [allBlocklets,
|
|
138
|
+
return (0, _orderBy.default)(result, [sortMap[filters.sortBy]], [filters.sortDirection]);
|
|
139
|
+
}, [allBlocklets, filters]);
|
|
186
140
|
const categoryList = (0, _react.useMemo)(() => {
|
|
187
141
|
const list = categoryState.data || []; // 分类按照名称排序
|
|
188
142
|
|
|
@@ -198,7 +152,7 @@ function SearchProvider(_ref) {
|
|
|
198
152
|
return (0, _utils.replaceTranslate)(_locale.default[locale][key], data);
|
|
199
153
|
};
|
|
200
154
|
|
|
201
|
-
const
|
|
155
|
+
const filterStore = {
|
|
202
156
|
errors: {
|
|
203
157
|
fetchBlockletsError,
|
|
204
158
|
fetchCategoriesError
|
|
@@ -208,58 +162,67 @@ function SearchProvider(_ref) {
|
|
|
208
162
|
fetchCategoriesLoading
|
|
209
163
|
},
|
|
210
164
|
endpoint,
|
|
211
|
-
sortParams,
|
|
212
|
-
history,
|
|
213
165
|
blockletList,
|
|
214
166
|
t: translate,
|
|
215
|
-
|
|
167
|
+
filters: _objectSpread({
|
|
168
|
+
sortBy: 'popularity',
|
|
169
|
+
sortDirection: 'desc'
|
|
170
|
+
}, filters),
|
|
216
171
|
selectedCategory,
|
|
217
|
-
isSearchPage,
|
|
218
172
|
categoryList,
|
|
219
|
-
isPageMode,
|
|
220
173
|
baseUrl,
|
|
221
174
|
blockletRender,
|
|
222
175
|
locale,
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
176
|
+
selectedBlocklets,
|
|
177
|
+
onSelectBlocklet,
|
|
178
|
+
handleSort: sort => {
|
|
179
|
+
const changeData = _objectSpread(_objectSpread({}, filters), {}, {
|
|
180
|
+
sortBy: sort,
|
|
181
|
+
sortDirection: sort === 'nameAsc' ? 'asc' : 'desc'
|
|
227
182
|
});
|
|
228
183
|
|
|
229
|
-
|
|
230
|
-
sortParams.sort = changData.sortBy;
|
|
231
|
-
sortParams.direction = changData.sortDirection;
|
|
232
|
-
history.push("".concat((0, _urlJoin.default)(baseUrl, 'search'), "?").concat((0, _utils.urlStringify)(changData)));
|
|
233
|
-
} else {
|
|
234
|
-
setMemoryParams(changData);
|
|
235
|
-
}
|
|
184
|
+
onFilterChange(changeData);
|
|
236
185
|
},
|
|
237
|
-
|
|
238
|
-
const
|
|
239
|
-
|
|
186
|
+
handleKeyword: keyWord => {
|
|
187
|
+
const changeData = _objectSpread(_objectSpread({}, filters), {}, {
|
|
188
|
+
keyword: keyWord || undefined
|
|
240
189
|
});
|
|
241
190
|
|
|
242
|
-
|
|
243
|
-
history.push("".concat((0, _urlJoin.default)(baseUrl, 'search'), "?").concat((0, _utils.urlStringify)(changData)));
|
|
244
|
-
} else {
|
|
245
|
-
setMemoryParams(changData);
|
|
246
|
-
}
|
|
191
|
+
onFilterChange(changeData);
|
|
247
192
|
},
|
|
248
|
-
|
|
249
|
-
const
|
|
250
|
-
price:
|
|
193
|
+
handlePrice: price => {
|
|
194
|
+
const changeData = _objectSpread(_objectSpread({}, filters), {}, {
|
|
195
|
+
price: price === filters.price ? undefined : price
|
|
251
196
|
});
|
|
252
197
|
|
|
253
|
-
|
|
254
|
-
|
|
198
|
+
onFilterChange(changeData);
|
|
199
|
+
},
|
|
200
|
+
handleCategory: category => {
|
|
201
|
+
if (category === 'all') {
|
|
202
|
+
const changeData = _objectSpread(_objectSpread({}, filters), {}, {
|
|
203
|
+
category: undefined
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
onFilterChange(changeData);
|
|
255
207
|
} else {
|
|
256
|
-
|
|
208
|
+
const changeData = _objectSpread(_objectSpread({}, filters), {}, {
|
|
209
|
+
category
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
onFilterChange(changeData);
|
|
257
213
|
}
|
|
258
214
|
},
|
|
259
|
-
|
|
260
|
-
|
|
215
|
+
handleDeveloper: developer => {
|
|
216
|
+
const changeData = _objectSpread(_objectSpread({}, filters), {}, {
|
|
217
|
+
developer: developer || undefined
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
onFilterChange(changeData);
|
|
221
|
+
},
|
|
222
|
+
getCategoryLocale: category => {
|
|
223
|
+
if (!category) return null;
|
|
261
224
|
let result = null;
|
|
262
|
-
const find = categoryState.data.find(item => item.name ===
|
|
225
|
+
const find = categoryState.data.find(item => item.name === category);
|
|
263
226
|
|
|
264
227
|
if (find) {
|
|
265
228
|
result = find.locales[locale];
|
|
@@ -267,34 +230,11 @@ function SearchProvider(_ref) {
|
|
|
267
230
|
|
|
268
231
|
return result;
|
|
269
232
|
},
|
|
270
|
-
handleCategorySelect: value => {
|
|
271
|
-
if (value === 'all') {
|
|
272
|
-
const changData = _objectSpread(_objectSpread({}, Object.fromEntries(queryParams.entries())), {}, {
|
|
273
|
-
category: undefined
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
if (isPageMode) {
|
|
277
|
-
history.push(!isSearchPage ? baseUrl : "".concat((0, _urlJoin.default)(baseUrl, 'search'), "?").concat((0, _utils.urlStringify)(changData)));
|
|
278
|
-
} else {
|
|
279
|
-
setMemoryParams(changData);
|
|
280
|
-
}
|
|
281
|
-
} else {
|
|
282
|
-
const changData = _objectSpread(_objectSpread({}, Object.fromEntries(queryParams.entries())), {}, {
|
|
283
|
-
category: value
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
if (isPageMode) {
|
|
287
|
-
history.push(!isSearchPage ? "".concat((0, _urlJoin.default)(baseUrl, 'category', value)) : "".concat((0, _urlJoin.default)(baseUrl, 'search'), "?").concat((0, _utils.urlStringify)(changData)));
|
|
288
|
-
} else {
|
|
289
|
-
setMemoryParams(changData);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
233
|
|
|
294
234
|
get developerName() {
|
|
295
235
|
var _allBlocklets$find, _allBlocklets$find$ow;
|
|
296
236
|
|
|
297
|
-
return ((_allBlocklets$find = allBlocklets.find(i => i.owner.did ===
|
|
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) || '';
|
|
298
238
|
}
|
|
299
239
|
|
|
300
240
|
};
|
|
@@ -307,30 +247,21 @@ function SearchProvider(_ref) {
|
|
|
307
247
|
fetchBlocklets();
|
|
308
248
|
}, [endpoint]);
|
|
309
249
|
return /*#__PURE__*/_react.default.createElement(Provider, {
|
|
310
|
-
value:
|
|
250
|
+
value: filterStore
|
|
311
251
|
}, children);
|
|
312
252
|
}
|
|
313
253
|
|
|
314
|
-
|
|
315
|
-
children: _propTypes.default.any.isRequired
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
SearchProvider.defaultProps = {
|
|
324
|
-
baseUrl: null,
|
|
325
|
-
locale: 'zh'
|
|
326
|
-
};
|
|
327
|
-
|
|
328
|
-
function useSearchContext() {
|
|
329
|
-
const searchStore = (0, _react.useContext)(Search);
|
|
330
|
-
|
|
331
|
-
if (!searchStore) {
|
|
254
|
+
FilterProvider.propTypes = _objectSpread(_objectSpread({}, _propTypes2.propTypes), {}, {
|
|
255
|
+
children: _propTypes.default.any.isRequired
|
|
256
|
+
});
|
|
257
|
+
FilterProvider.defaultProps = _propTypes2.defaultProps;
|
|
258
|
+
|
|
259
|
+
function useFilterContext() {
|
|
260
|
+
const filterStore = (0, _react.useContext)(Filter);
|
|
261
|
+
|
|
262
|
+
if (!filterStore) {
|
|
332
263
|
return {};
|
|
333
264
|
}
|
|
334
265
|
|
|
335
|
-
return
|
|
266
|
+
return filterStore;
|
|
336
267
|
}
|
package/lib/index.js
CHANGED
|
@@ -7,27 +7,17 @@ exports.default = BlockletList;
|
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
10
|
var _base = _interopRequireDefault(require("./base"));
|
|
13
11
|
|
|
14
|
-
var
|
|
12
|
+
var _filter = require("./contexts/filter");
|
|
13
|
+
|
|
14
|
+
var _propTypes = require("./libs/prop-types");
|
|
15
15
|
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
17
|
|
|
18
18
|
function BlockletList(props) {
|
|
19
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
19
|
+
return /*#__PURE__*/_react.default.createElement(_filter.FilterProvider, props, /*#__PURE__*/_react.default.createElement(_base.default, null));
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
BlockletList.propTypes =
|
|
23
|
-
|
|
24
|
-
endpoint: _propTypes.default.string.isRequired,
|
|
25
|
-
// 组件的类型: page 单独作为页面使用 持久化数据将存储在 url 和 localstorage,select 作为选择器组件使用 数据在存储在内存中
|
|
26
|
-
type: _propTypes.default.oneOf(['select', 'page']).isRequired,
|
|
27
|
-
locale: _propTypes.default.oneOf(['zh', 'en']),
|
|
28
|
-
blockletRender: _propTypes.default.func.isRequired
|
|
29
|
-
};
|
|
30
|
-
BlockletList.defaultProps = {
|
|
31
|
-
baseUrl: null,
|
|
32
|
-
locale: 'zh'
|
|
33
|
-
};
|
|
22
|
+
BlockletList.propTypes = _propTypes.propTypes;
|
|
23
|
+
BlockletList.defaultProps = _propTypes.defaultProps;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.propTypes = exports.defaultProps = void 0;
|
|
7
|
+
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
const propTypes = {
|
|
13
|
+
filters: _propTypes.default.shape({
|
|
14
|
+
keyword: _propTypes.default.string,
|
|
15
|
+
sortBy: _propTypes.default.string,
|
|
16
|
+
sortDirection: _propTypes.default.string,
|
|
17
|
+
price: _propTypes.default.string,
|
|
18
|
+
category: _propTypes.default.string,
|
|
19
|
+
developer: _propTypes.default.string
|
|
20
|
+
}),
|
|
21
|
+
endpoint: _propTypes.default.string.isRequired,
|
|
22
|
+
blockletRender: _propTypes.default.func.isRequired,
|
|
23
|
+
onFilterChange: _propTypes.default.func,
|
|
24
|
+
baseUrl: _propTypes.default.string,
|
|
25
|
+
locale: _propTypes.default.oneOf(['zh', 'en'])
|
|
26
|
+
};
|
|
27
|
+
exports.propTypes = propTypes;
|
|
28
|
+
const defaultProps = {
|
|
29
|
+
baseUrl: null,
|
|
30
|
+
locale: 'zh',
|
|
31
|
+
filters: {},
|
|
32
|
+
onFilterChange: () => {}
|
|
33
|
+
};
|
|
34
|
+
exports.defaultProps = defaultProps;
|
|
@@ -7,7 +7,7 @@ exports.urlStringify = exports.replaceTranslate = exports.removeUndefined = expo
|
|
|
7
7
|
|
|
8
8
|
var _urlJoin = _interopRequireDefault(require("url-join"));
|
|
9
9
|
|
|
10
|
-
var _cloneDeep = _interopRequireDefault(require("lodash
|
|
10
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
11
11
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
@@ -127,13 +127,13 @@ template.replace(/{(\w*)}/g, (m, key) => data.hasOwnProperty(key) ? data[key] :
|
|
|
127
127
|
exports.replaceTranslate = replaceTranslate;
|
|
128
128
|
|
|
129
129
|
const removeUndefined = obj => {
|
|
130
|
-
const
|
|
131
|
-
Object.keys(
|
|
132
|
-
if (
|
|
133
|
-
delete
|
|
130
|
+
const clone = (0, _cloneDeep.default)(obj);
|
|
131
|
+
Object.keys(clone).forEach(key => {
|
|
132
|
+
if (clone[key] === undefined) {
|
|
133
|
+
delete clone[key];
|
|
134
134
|
}
|
|
135
135
|
});
|
|
136
|
-
return
|
|
136
|
+
return clone;
|
|
137
137
|
};
|
|
138
138
|
|
|
139
139
|
exports.removeUndefined = removeUndefined;
|
package/package.json
CHANGED
|
@@ -1,66 +1,62 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"babel-plugin-inline-react-svg": "^2.0.1",
|
|
63
|
-
"babel-plugin-styled-components": "^1.10.7"
|
|
64
|
-
},
|
|
65
|
-
"gitHead": "966ec885a8c7a68eb84be25bd138be696f3b09f4"
|
|
2
|
+
"name": "@blocklet/list",
|
|
3
|
+
"version": "0.8.16",
|
|
4
|
+
"description": "Common ux components of blocklet",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"author": "machao <machao@arcblock.io>",
|
|
9
|
+
"homepage": "https://github.com/blocklet/blocklet-store#readme",
|
|
10
|
+
"license": "ISC",
|
|
11
|
+
"main": "lib/index.js",
|
|
12
|
+
"files": [
|
|
13
|
+
"lib",
|
|
14
|
+
"src",
|
|
15
|
+
"LICENSE",
|
|
16
|
+
"package.json",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git@github.com:blocklet/blocklet-store.git"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"lint": "eslint src",
|
|
25
|
+
"build": "rm -rf lib && babel src --out-dir lib --copy-files",
|
|
26
|
+
"watch": "babel src --out-dir lib -w --copy-files",
|
|
27
|
+
"precommit": "CI=1 yarn test",
|
|
28
|
+
"prepush": "CI=1 yarn test",
|
|
29
|
+
"prepublish": "npm run build"
|
|
30
|
+
},
|
|
31
|
+
"bugs": {
|
|
32
|
+
"url": "https://github.com/blocklet/blocklet-store/issues"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"@mui/material": ">=5.6.4",
|
|
36
|
+
"@mui/styles": ">=5.6.2",
|
|
37
|
+
"react": ">=18.1.0"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@arcblock/ux": "^2.1.3",
|
|
41
|
+
"@emotion/react": "^11.9.0",
|
|
42
|
+
"@emotion/styled": "^11.8.1",
|
|
43
|
+
"@mui/icons-material": "^5.6.2",
|
|
44
|
+
"ahooks": "^2.10.12",
|
|
45
|
+
"axios": "^0.27.2",
|
|
46
|
+
"flat": "^5.0.2",
|
|
47
|
+
"lodash": "^4.17.21",
|
|
48
|
+
"prop-types": "^15.7.2",
|
|
49
|
+
"styled-components": "5.3.5",
|
|
50
|
+
"url-join": "^4.0.1"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@babel/cli": "^7.8.4",
|
|
54
|
+
"@babel/core": "^7.8.4",
|
|
55
|
+
"@babel/preset-env": "^7.8.4",
|
|
56
|
+
"@babel/preset-react": "^7.8.3",
|
|
57
|
+
"@emotion/babel-plugin": "^11.9.2",
|
|
58
|
+
"babel-plugin-inline-react-svg": "^2.0.1",
|
|
59
|
+
"babel-plugin-styled-components": "^1.10.7"
|
|
60
|
+
},
|
|
61
|
+
"gitHead": "5f5a20003947fadab688b32a18ba38826d8c3369"
|
|
66
62
|
}
|