@blocklet/list 0.10.32 → 0.10.34
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/assets/locale.js +0 -2
- package/lib/base.js +7 -24
- package/lib/components/aside.js +0 -10
- package/lib/components/autocomplete/index.js +8 -61
- package/lib/components/base-search.js +84 -0
- package/lib/components/custom-select/button.js +6 -22
- package/lib/components/custom-select/custom-select.js +9 -35
- package/lib/components/custom-select/index.js +0 -3
- package/lib/components/filter/custom-chip.js +5 -22
- package/lib/components/filter/group.js +0 -9
- package/lib/components/filter/icon.js +0 -18
- package/lib/components/filter/index.js +0 -4
- package/lib/components/list/empty.js +0 -13
- package/lib/components/list/index.js +3 -34
- package/lib/contexts/filter.js +9 -42
- package/lib/index.js +0 -16
- package/lib/libs/prop-types.js +4 -5
- package/lib/libs/utils.js +3 -44
- package/package.json +3 -4
- package/src/base.js +8 -1
- package/src/components/base-search.js +93 -0
- package/src/contexts/filter.js +2 -0
- package/src/libs/prop-types.js +2 -0
package/lib/assets/locale.js
CHANGED
package/lib/base.js
CHANGED
|
@@ -4,44 +4,26 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
9
|
-
|
|
10
8
|
var _Sort = _interopRequireDefault(require("@mui/icons-material/Sort"));
|
|
11
|
-
|
|
12
9
|
var _material = require("@mui/material");
|
|
13
|
-
|
|
14
10
|
var _Face = _interopRequireDefault(require("@mui/icons-material/Face"));
|
|
15
|
-
|
|
16
11
|
var _reactErrorBoundary = require("react-error-boundary");
|
|
17
|
-
|
|
18
12
|
var _ErrorBoundary = require("@arcblock/ux/lib/ErrorBoundary");
|
|
19
|
-
|
|
20
13
|
var _filter = require("./contexts/filter");
|
|
21
|
-
|
|
22
14
|
var _customSelect = _interopRequireDefault(require("./components/custom-select"));
|
|
23
|
-
|
|
24
15
|
var _filter2 = require("./components/filter");
|
|
25
|
-
|
|
26
16
|
var _utils = require("./libs/utils");
|
|
27
|
-
|
|
28
17
|
var _list = _interopRequireDefault(require("./components/list"));
|
|
29
|
-
|
|
30
18
|
var _aside = _interopRequireDefault(require("./components/aside"));
|
|
31
|
-
|
|
19
|
+
var _baseSearch = _interopRequireDefault(require("./components/base-search"));
|
|
32
20
|
var _autocomplete = _interopRequireDefault(require("./components/autocomplete"));
|
|
33
|
-
|
|
34
21
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
35
|
-
|
|
36
22
|
var _templateObject, _templateObject2;
|
|
37
|
-
|
|
38
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
|
-
|
|
40
24
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
41
|
-
|
|
42
25
|
function ListBase() {
|
|
43
26
|
var _sortOptions$find, _priceOptions$find;
|
|
44
|
-
|
|
45
27
|
const {
|
|
46
28
|
handleDeveloper,
|
|
47
29
|
blockletList,
|
|
@@ -54,7 +36,8 @@ function ListBase() {
|
|
|
54
36
|
t,
|
|
55
37
|
getCategoryLocale,
|
|
56
38
|
priceOptions,
|
|
57
|
-
wrapChildren
|
|
39
|
+
wrapChildren,
|
|
40
|
+
baseSearch
|
|
58
41
|
} = (0, _filter.useFilterContext)();
|
|
59
42
|
const sortOptions = (0, _utils.getSortOptions)(t);
|
|
60
43
|
const sortLocale = ((_sortOptions$find = sortOptions.find(f => f.value === filters.sortBy)) === null || _sortOptions$find === void 0 ? void 0 : _sortOptions$find.name) || t('sort.sort');
|
|
@@ -73,7 +56,10 @@ function ListBase() {
|
|
|
73
56
|
className: "filter-bar",
|
|
74
57
|
display: "flex",
|
|
75
58
|
alignItems: "center",
|
|
76
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
59
|
+
children: [baseSearch ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_baseSearch.default, {
|
|
60
|
+
className: "bl-search-container",
|
|
61
|
+
placeholder: t('common.searchStore')
|
|
62
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_autocomplete.default, {
|
|
77
63
|
onSelect: handleSearchSelect,
|
|
78
64
|
wrapChildren: wrapChildren
|
|
79
65
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
|
|
@@ -132,10 +118,7 @@ function ListBase() {
|
|
|
132
118
|
})]
|
|
133
119
|
});
|
|
134
120
|
}
|
|
135
|
-
|
|
136
121
|
const StyledMin = _styled.default.main(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n height: 100%;\n .filter-bar {\n justify-content: space-between;\n margin-bottom: ", ";\n }\n .sort-button {\n white-space: nowrap;\n }\n .bl-search-container {\n flex: 2;\n margin-left: 0px;\n }\n\n .filter-container {\n flex: 1;\n display: flex;\n justify-content: flex-end;\n }\n @media (max-width: ", "px) {\n .bl-search-container {\n width: 100%;\n margin-bottom: ", ";\n }\n .filter-container {\n margin-left: 0;\n display: flex;\n justify-content: flex-start;\n }\n .filter-bar {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n }\n @media (max-width: ", "px) {\n .sort-button {\n font-size: 12px;\n }\n }\n"])), props => props.theme.spacing(2), props => props.theme.breakpoints.values.md, props => props.theme.spacing(2), props => props.theme.breakpoints.values.md);
|
|
137
|
-
|
|
138
122
|
const FilterContainer = _styled.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: sticky;\n top: 0;\n z-index: 9;\n background-color: white;\n"])));
|
|
139
|
-
|
|
140
123
|
var _default = ListBase;
|
|
141
124
|
exports.default = _default;
|
package/lib/components/aside.js
CHANGED
|
@@ -4,21 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
9
|
-
|
|
10
8
|
var _filter = require("../contexts/filter");
|
|
11
|
-
|
|
12
9
|
var _filter2 = require("./filter");
|
|
13
|
-
|
|
14
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
-
|
|
16
11
|
var _templateObject;
|
|
17
|
-
|
|
18
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
13
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
21
|
-
|
|
22
14
|
function Aside() {
|
|
23
15
|
const {
|
|
24
16
|
selectedCategory,
|
|
@@ -50,9 +42,7 @@ function Aside() {
|
|
|
50
42
|
})]
|
|
51
43
|
});
|
|
52
44
|
}
|
|
53
|
-
|
|
54
45
|
const StyledAside = _styled.default.aside(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 220px;\n margin-right: ", ";\n height: 100%;\n position: sticky;\n top: 0;\n overflow-y: auto;\n z-index: auto;\n"])), props => props.theme.spacing(2));
|
|
55
|
-
|
|
56
46
|
Aside.propTypes = {};
|
|
57
47
|
Aside.defaultProps = {};
|
|
58
48
|
var _default = Aside;
|
|
@@ -4,41 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = Autocomplete;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
9
|
var _client = require("react-dom/client");
|
|
13
|
-
|
|
14
10
|
var _autocompleteJs = require("@algolia/autocomplete-js");
|
|
15
|
-
|
|
16
11
|
var _reactHotkeysHook = require("react-hotkeys-hook");
|
|
17
|
-
|
|
18
12
|
var _urlJoin = _interopRequireDefault(require("url-join"));
|
|
19
|
-
|
|
20
13
|
var _constant = _interopRequireDefault(require("../../libs/constant"));
|
|
21
|
-
|
|
22
14
|
var _utils = require("../../libs/utils");
|
|
23
|
-
|
|
24
15
|
var _filter = require("../../contexts/filter");
|
|
25
|
-
|
|
26
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
|
-
|
|
28
17
|
const _excluded = ["query", "state"];
|
|
29
|
-
|
|
30
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
-
|
|
32
19
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
33
|
-
|
|
34
20
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
35
|
-
|
|
36
21
|
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; }
|
|
37
|
-
|
|
38
22
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
39
|
-
|
|
40
23
|
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; }
|
|
41
|
-
|
|
42
24
|
function Autocomplete(_ref) {
|
|
43
25
|
let {
|
|
44
26
|
onSelect,
|
|
@@ -55,54 +37,46 @@ function Autocomplete(_ref) {
|
|
|
55
37
|
handleKeyword,
|
|
56
38
|
t
|
|
57
39
|
} = (0, _filter.useFilterContext)();
|
|
58
|
-
|
|
59
40
|
const getBlocklets = async params => {
|
|
60
41
|
const {
|
|
61
42
|
data
|
|
62
43
|
} = await storeApi.get(_constant.default.blockletsPath, {
|
|
63
44
|
params
|
|
64
45
|
});
|
|
65
|
-
const blocklets = data.dataList || [];
|
|
66
|
-
|
|
46
|
+
const blocklets = data.dataList || [];
|
|
47
|
+
// 头部插入的一条 item 用于展示 `点击展开 xx条 结果`,如果没有blocklet 返回,不展示
|
|
67
48
|
if (blocklets.length > 0) {
|
|
68
49
|
blocklets.unshift({
|
|
69
50
|
type: 'more-result',
|
|
70
51
|
total: data.total || 0
|
|
71
52
|
});
|
|
72
53
|
}
|
|
73
|
-
|
|
74
54
|
return blocklets;
|
|
75
55
|
};
|
|
76
|
-
|
|
77
56
|
const onSubmit = autocompleteState => {
|
|
78
57
|
handleKeyword(autocompleteState.state.query);
|
|
79
58
|
autocompleteState.setIsOpen(false);
|
|
80
59
|
};
|
|
81
|
-
|
|
82
60
|
const setFocus = () => {
|
|
83
61
|
if (containerRef.current) {
|
|
84
62
|
// see: https://discourse.algolia.com/t/autocomplete-focus-input-field/4019/5
|
|
85
63
|
setTimeout(() => {
|
|
86
64
|
const input = containerRef.current.querySelector('input.bl-autocomplete-input');
|
|
87
|
-
|
|
88
65
|
if (input) {
|
|
89
66
|
input.focus();
|
|
90
67
|
}
|
|
91
68
|
});
|
|
92
69
|
}
|
|
93
70
|
};
|
|
94
|
-
|
|
95
71
|
const onReset = autocompleteState => {
|
|
96
72
|
autocompleteState.setIsOpen(false);
|
|
97
73
|
setFocus();
|
|
98
74
|
};
|
|
99
|
-
|
|
100
75
|
const onStateChange = _ref2 => {
|
|
101
76
|
let {
|
|
102
77
|
prevState,
|
|
103
78
|
state
|
|
104
79
|
} = _ref2;
|
|
105
|
-
|
|
106
80
|
// 当搜索框中的值清空时, 更新页面中的搜索结果
|
|
107
81
|
if (prevState.query !== state.query) {
|
|
108
82
|
if (!state.query) {
|
|
@@ -110,7 +84,6 @@ function Autocomplete(_ref) {
|
|
|
110
84
|
}
|
|
111
85
|
}
|
|
112
86
|
};
|
|
113
|
-
|
|
114
87
|
(0, _reactHotkeysHook.useHotkeys)('ctrl + k, command + k', e => {
|
|
115
88
|
e.stopPropagation();
|
|
116
89
|
e.preventDefault();
|
|
@@ -126,7 +99,6 @@ function Autocomplete(_ref) {
|
|
|
126
99
|
if (!containerRef.current) {
|
|
127
100
|
return undefined;
|
|
128
101
|
}
|
|
129
|
-
|
|
130
102
|
const search = (0, _autocompleteJs.autocomplete)({
|
|
131
103
|
container: containerRef.current,
|
|
132
104
|
renderer: {
|
|
@@ -134,23 +106,18 @@ function Autocomplete(_ref) {
|
|
|
134
106
|
Fragment: _react.Fragment,
|
|
135
107
|
render: () => {}
|
|
136
108
|
},
|
|
137
|
-
|
|
138
109
|
render(_ref3, root) {
|
|
139
110
|
let {
|
|
140
111
|
children
|
|
141
112
|
} = _ref3;
|
|
142
|
-
|
|
143
113
|
if (!panelRootRef.current || rootRef.current !== root) {
|
|
144
114
|
var _panelRootRef$current;
|
|
145
|
-
|
|
146
115
|
rootRef.current = root;
|
|
147
116
|
(_panelRootRef$current = panelRootRef.current) === null || _panelRootRef$current === void 0 ? void 0 : _panelRootRef$current.unmount();
|
|
148
117
|
panelRootRef.current = (0, _client.createRoot)(root);
|
|
149
118
|
}
|
|
150
|
-
|
|
151
119
|
panelRootRef.current.render(wrapChildren(children));
|
|
152
120
|
},
|
|
153
|
-
|
|
154
121
|
autoFocus: true,
|
|
155
122
|
openOnFocus: false,
|
|
156
123
|
classNames: {
|
|
@@ -164,80 +131,64 @@ function Autocomplete(_ref) {
|
|
|
164
131
|
initialState: {
|
|
165
132
|
query: filters.keyword
|
|
166
133
|
},
|
|
167
|
-
|
|
168
134
|
onStateChange(autocompleteState) {
|
|
169
135
|
onStateChange(autocompleteState);
|
|
170
136
|
},
|
|
171
|
-
|
|
172
137
|
onSubmit,
|
|
173
|
-
|
|
174
138
|
onReset(autocompleteState) {
|
|
175
139
|
onReset(autocompleteState);
|
|
176
140
|
},
|
|
177
|
-
|
|
178
141
|
getSources(_ref4) {
|
|
179
142
|
let {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
143
|
+
query,
|
|
144
|
+
state
|
|
145
|
+
} = _ref4,
|
|
146
|
+
setters = _objectWithoutProperties(_ref4, _excluded);
|
|
185
147
|
const params = _objectSpread(_objectSpread({}, filters), {}, {
|
|
186
148
|
sortBy: _constant.default[filters.sortBy],
|
|
187
149
|
page: 1,
|
|
188
150
|
pageSize: 10,
|
|
189
151
|
keyword: query
|
|
190
152
|
});
|
|
191
|
-
|
|
192
153
|
return (0, _utils.debounced)([{
|
|
193
154
|
sourceId: 'blocklets',
|
|
194
|
-
|
|
195
155
|
getItems() {
|
|
196
156
|
return getBlocklets(params);
|
|
197
157
|
},
|
|
198
|
-
|
|
199
158
|
// 选中后填充 搜索框中值
|
|
200
159
|
getItemInputValue(_ref5) {
|
|
201
160
|
let {
|
|
202
161
|
item
|
|
203
162
|
} = _ref5;
|
|
204
|
-
|
|
205
163
|
if (item.type === 'more-result') {
|
|
206
164
|
return query;
|
|
207
165
|
}
|
|
208
|
-
|
|
209
166
|
return item.title;
|
|
210
167
|
},
|
|
211
|
-
|
|
212
168
|
// 选中或者点击自动完成列表中的 item 时触发
|
|
213
169
|
onSelect(_ref6) {
|
|
214
170
|
let {
|
|
215
171
|
event,
|
|
216
172
|
item
|
|
217
173
|
} = _ref6;
|
|
218
|
-
|
|
219
174
|
if (item.type === 'more-result') {
|
|
220
175
|
setters.setIsOpen(false);
|
|
221
176
|
return handleKeyword(query);
|
|
222
177
|
}
|
|
223
|
-
|
|
224
178
|
if (event.type === 'keydown') {
|
|
225
179
|
return handleKeyword(item.title);
|
|
226
180
|
}
|
|
227
|
-
|
|
228
181
|
return onSelect({
|
|
229
182
|
blocklet: item,
|
|
230
183
|
detailUrl: (0, _urlJoin.default)(endpoint, "/blocklets/".concat(item.did)),
|
|
231
184
|
storeUrl: endpoint
|
|
232
185
|
});
|
|
233
186
|
},
|
|
234
|
-
|
|
235
187
|
templates: {
|
|
236
188
|
item(_ref7) {
|
|
237
189
|
let {
|
|
238
190
|
item
|
|
239
191
|
} = _ref7;
|
|
240
|
-
|
|
241
192
|
if (item.type === 'more-result') {
|
|
242
193
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
243
194
|
children: t('autocomplete.expandResult', {
|
|
@@ -246,32 +197,28 @@ function Autocomplete(_ref) {
|
|
|
246
197
|
})
|
|
247
198
|
});
|
|
248
199
|
}
|
|
249
|
-
|
|
250
200
|
return blockletRender({
|
|
251
201
|
blocklet: item,
|
|
252
202
|
autocompleteSetters: setters
|
|
253
203
|
});
|
|
254
204
|
},
|
|
255
|
-
|
|
256
205
|
noResults() {
|
|
257
206
|
return t('blocklet.noResults');
|
|
258
207
|
}
|
|
259
|
-
|
|
260
208
|
}
|
|
261
209
|
}]);
|
|
262
210
|
}
|
|
263
|
-
|
|
264
211
|
});
|
|
265
212
|
return () => {
|
|
266
213
|
search.destroy();
|
|
267
|
-
};
|
|
214
|
+
};
|
|
215
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
268
216
|
}, [filters, blockletRender]);
|
|
269
217
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
270
218
|
className: "bl-search-container",
|
|
271
219
|
ref: containerRef
|
|
272
220
|
});
|
|
273
221
|
}
|
|
274
|
-
|
|
275
222
|
Autocomplete.propTypes = {
|
|
276
223
|
onSelect: _propTypes.default.func.isRequired,
|
|
277
224
|
wrapChildren: _propTypes.default.func
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _Search = _interopRequireDefault(require("@mui/icons-material/Search"));
|
|
10
|
+
var _Close = _interopRequireDefault(require("@mui/icons-material/Close"));
|
|
11
|
+
var _material = require("@mui/material");
|
|
12
|
+
var _ahooks = require("ahooks");
|
|
13
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
14
|
+
var _filter = require("../contexts/filter");
|
|
15
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
17
|
+
const _excluded = ["placeholder"];
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
22
|
+
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; }
|
|
23
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
24
|
+
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; }
|
|
25
|
+
function BaseSearch(_ref) {
|
|
26
|
+
let {
|
|
27
|
+
placeholder
|
|
28
|
+
} = _ref,
|
|
29
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
30
|
+
const {
|
|
31
|
+
filters,
|
|
32
|
+
handleKeyword
|
|
33
|
+
} = (0, _filter.useFilterContext)();
|
|
34
|
+
const [searchStr, setSearchStr] = (0, _react.useState)(filters.keyword || '');
|
|
35
|
+
const debouncedSearch = (0, _ahooks.useDebounceFn)(handleKeyword, {
|
|
36
|
+
wait: 300
|
|
37
|
+
});
|
|
38
|
+
const handleChange = event => {
|
|
39
|
+
const {
|
|
40
|
+
value
|
|
41
|
+
} = event.target;
|
|
42
|
+
setSearchStr(value);
|
|
43
|
+
debouncedSearch.run(value);
|
|
44
|
+
};
|
|
45
|
+
const handleClose = () => {
|
|
46
|
+
setSearchStr('');
|
|
47
|
+
handleKeyword();
|
|
48
|
+
};
|
|
49
|
+
(0, _react.useEffect)(() => {
|
|
50
|
+
setSearchStr(filters.keyword || '');
|
|
51
|
+
}, [filters.keyword]);
|
|
52
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledSearch, _objectSpread({
|
|
53
|
+
inputProps: {
|
|
54
|
+
'data-cy': 'search-blocklet'
|
|
55
|
+
},
|
|
56
|
+
startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.InputAdornment, {
|
|
57
|
+
position: "start",
|
|
58
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledSearchIcon, {})
|
|
59
|
+
}),
|
|
60
|
+
onChange: handleChange,
|
|
61
|
+
placeholder: placeholder,
|
|
62
|
+
value: searchStr,
|
|
63
|
+
title: placeholder,
|
|
64
|
+
"data-cy": "search",
|
|
65
|
+
endAdornment: searchStr && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.InputAdornment, {
|
|
66
|
+
position: "end",
|
|
67
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledCloseIcon, {
|
|
68
|
+
"data-cy": "search-delete",
|
|
69
|
+
onClick: handleClose
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
}, rest));
|
|
73
|
+
}
|
|
74
|
+
BaseSearch.propTypes = {
|
|
75
|
+
placeholder: _propTypes.default.string
|
|
76
|
+
};
|
|
77
|
+
BaseSearch.defaultProps = {
|
|
78
|
+
placeholder: 'Type to search...'
|
|
79
|
+
};
|
|
80
|
+
const StyledSearch = (0, _styled.default)(_material.OutlinedInput)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background-color: ", ";\n font-size: 14px;\n border-radius: 6px;\n .MuiInputBase-input {\n padding: 8px 0 8px 10px;\n }\n .MuiOutlinedInput-notchedOutline {\n border: none;\n }\n .Mui-focused {\n background-color: #f6f6f6;\n .MuiInputBase-input::placeholder {\n color: transparent;\n }\n }\n"])), props => props.theme.palette.grey[50]);
|
|
81
|
+
const StyledSearchIcon = (0, _styled.default)(_Search.default)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 28px;\n @media (max-width: ", "px) {\n font-size: 24px;\n }\n"])), props => props.theme.palette.grey[500], props => props.theme.breakpoints.values.md);
|
|
82
|
+
const StyledCloseIcon = (0, _styled.default)(_Close.default)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 16px;\n cursor: pointer;\n"])), props => props.theme.palette.grey[500]);
|
|
83
|
+
var _default = BaseSearch;
|
|
84
|
+
exports.default = _default;
|
|
@@ -4,45 +4,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
9
|
var _material = require("@mui/material");
|
|
13
|
-
|
|
14
10
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
15
|
-
|
|
16
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
-
|
|
18
12
|
const _excluded = ["children", "rounded", "loading", "disabled"];
|
|
19
|
-
|
|
20
13
|
var _templateObject;
|
|
21
|
-
|
|
22
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
-
|
|
24
15
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
-
|
|
26
16
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
27
|
-
|
|
28
17
|
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; }
|
|
29
|
-
|
|
30
18
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
31
|
-
|
|
32
19
|
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; }
|
|
33
|
-
|
|
34
20
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
35
|
-
|
|
36
21
|
const StyledButton = (0, _styled.default)(_material.Button)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n border-radius: 4px;\n"])));
|
|
37
22
|
const Button = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
38
23
|
let {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
24
|
+
children,
|
|
25
|
+
rounded,
|
|
26
|
+
loading,
|
|
27
|
+
disabled
|
|
28
|
+
} = _ref,
|
|
29
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
46
30
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledButton, _objectSpread(_objectSpread({
|
|
47
31
|
ref: ref,
|
|
48
32
|
disableElevation: true,
|
|
@@ -4,55 +4,35 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _styles = require("@mui/material/styles");
|
|
11
|
-
|
|
12
9
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
13
|
-
|
|
14
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
-
|
|
16
11
|
var _material = require("@mui/material");
|
|
17
|
-
|
|
18
12
|
var _KeyboardArrowDown = _interopRequireDefault(require("@mui/icons-material/KeyboardArrowDown"));
|
|
19
|
-
|
|
20
13
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
21
|
-
|
|
22
14
|
var _button = _interopRequireDefault(require("./button"));
|
|
23
|
-
|
|
24
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
25
|
-
|
|
26
16
|
var _templateObject, _templateObject2;
|
|
27
|
-
|
|
28
17
|
const _excluded = ["title", "value", "icon", "prepend", "options", "onChange", "itemRender"];
|
|
29
|
-
|
|
30
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
-
|
|
32
19
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
33
|
-
|
|
34
20
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
35
|
-
|
|
36
21
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
37
|
-
|
|
38
22
|
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; }
|
|
39
|
-
|
|
40
23
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
41
|
-
|
|
42
24
|
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; }
|
|
43
|
-
|
|
44
25
|
function CustomSelect(_ref) {
|
|
45
26
|
let {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
27
|
+
title,
|
|
28
|
+
value,
|
|
29
|
+
icon,
|
|
30
|
+
prepend,
|
|
31
|
+
options,
|
|
32
|
+
onChange,
|
|
33
|
+
itemRender
|
|
34
|
+
} = _ref,
|
|
35
|
+
buttonProps = _objectWithoutProperties(_ref, _excluded);
|
|
56
36
|
const anchorRef = (0, _react.useRef)(null);
|
|
57
37
|
const theme = (0, _styles.useTheme)();
|
|
58
38
|
const [open, setOpen] = (0, _react.useState)(false);
|
|
@@ -67,20 +47,16 @@ function CustomSelect(_ref) {
|
|
|
67
47
|
const openMenu = (0, _react.useCallback)(() => {
|
|
68
48
|
setOpen(true);
|
|
69
49
|
}, []);
|
|
70
|
-
|
|
71
50
|
function toggle(option) {
|
|
72
51
|
setCurrentValue(option.value);
|
|
73
52
|
onChange(option.value);
|
|
74
|
-
|
|
75
53
|
if (isSm) {
|
|
76
54
|
closeMenu();
|
|
77
55
|
}
|
|
78
56
|
}
|
|
79
|
-
|
|
80
57
|
function containsValue(optionValue) {
|
|
81
58
|
return optionValue === currentValue;
|
|
82
59
|
}
|
|
83
|
-
|
|
84
60
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
85
61
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(StyledButton, _objectSpread(_objectSpread({
|
|
86
62
|
ref: anchorRef,
|
|
@@ -124,7 +100,6 @@ function CustomSelect(_ref) {
|
|
|
124
100
|
if (itemRender) {
|
|
125
101
|
return itemRender(option);
|
|
126
102
|
}
|
|
127
|
-
|
|
128
103
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
|
|
129
104
|
onClick: () => toggle(option),
|
|
130
105
|
className: ['my-select__option', containsValue(option.value) ? 'my-select__option--active' : ''].join(' '),
|
|
@@ -139,7 +114,6 @@ function CustomSelect(_ref) {
|
|
|
139
114
|
})]
|
|
140
115
|
});
|
|
141
116
|
}
|
|
142
|
-
|
|
143
117
|
CustomSelect.propTypes = {
|
|
144
118
|
options: _propTypes.default.array.isRequired,
|
|
145
119
|
value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.array]),
|
|
@@ -4,10 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _customSelect = _interopRequireDefault(require("./custom-select"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
var _default = _customSelect.default;
|
|
13
10
|
exports.default = _default;
|