@alicloud/console-components-search 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +104 -138
  2. package/demos/demo1.demo.tsx +91 -94
  3. package/doc-dist/0.js +1917 -16
  4. package/doc-dist/1.js +16 -1917
  5. package/doc-dist/10.js +1 -1
  6. package/doc-dist/11.js +1 -1
  7. package/doc-dist/12.js +1 -1
  8. package/doc-dist/13.js +1 -1
  9. package/doc-dist/14.js +1 -1
  10. package/doc-dist/15.js +1 -1
  11. package/doc-dist/3.js +5 -5
  12. package/doc-dist/4.js +1 -1
  13. package/doc-dist/5.js +2 -2
  14. package/doc-dist/6.js +1 -1
  15. package/doc-dist/7.js +1 -1
  16. package/doc-dist/8.js +1 -1
  17. package/doc-dist/9.js +1 -1
  18. package/doc-dist/deps/main.css +1 -1
  19. package/doc-dist/deps/main.js +8 -8
  20. package/doc-dist/deps/main.os.css +1 -1
  21. package/doc-dist/index.js +3 -3
  22. package/doc-dist/log-deps-build.log +1 -1
  23. package/es/index.js +1 -1
  24. package/es/modeSingleSingle/InputPrefix.js +29 -0
  25. package/es/modeSingleSingle/index2.js +342 -0
  26. package/es/search.js +2 -3
  27. package/es/searchTagList/index.js +5 -10
  28. package/es/style.js +1 -1
  29. package/es/useCssVar.js +38 -0
  30. package/lib/index.d.ts +1 -1
  31. package/lib/index.js +1 -1
  32. package/lib/modeSingleSingle/InputPrefix.d.ts +2 -0
  33. package/lib/modeSingleSingle/InputPrefix.js +43 -0
  34. package/lib/modeSingleSingle/index2.d.ts +4 -0
  35. package/lib/modeSingleSingle/index2.js +372 -0
  36. package/lib/search.js +2 -4
  37. package/lib/searchTagList/index.d.ts +3 -1
  38. package/lib/searchTagList/index.js +5 -11
  39. package/lib/style.js +1 -1
  40. package/lib/types/IRcSearchOptions.type.d.ts +3 -2
  41. package/lib/types/IRcSearchProps.type.d.ts +24 -34
  42. package/lib/types/IRcSearchTagItemProps.type.d.ts +1 -1
  43. package/lib/types/IRcSearchTagListProps.type.d.ts +3 -3
  44. package/lib/useCssVar.d.ts +1 -0
  45. package/lib/useCssVar.js +52 -0
  46. package/package.json +3 -2
  47. package/demos/demo2.demo.tsx +0 -83
  48. package/demos/demo3.demo.tsx +0 -87
  49. package/demos/demo4.demo.tsx +0 -142
  50. package/dist/index.css +0 -1
  51. package/dist/index.js +0 -60
  52. package/doc-dist/16.js +0 -6
  53. package/doc-dist/17.js +0 -6
  54. package/doc-dist/18.js +0 -6
  55. package/doc-dist/19.js +0 -6
  56. package/doc-dist/20.js +0 -6
  57. package/docs/markdown-render.doc.md +0 -21
  58. package/docs/test.doc.md +0 -8
  59. package/es/modeSingleMulti/index.js +0 -825
  60. package/es/modeSingleSingle/index.js +0 -217
  61. package/lib/modeSingleMulti/index.d.ts +0 -2
  62. package/lib/modeSingleMulti/index.js +0 -850
  63. package/lib/modeSingleSingle/index.d.ts +0 -2
  64. package/lib/modeSingleSingle/index.js +0 -242
@@ -0,0 +1,372 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
+
18
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
+
20
+ var _classnames = _interopRequireDefault(require("classnames"));
21
+
22
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
23
+
24
+ var _groupBy = _interopRequireDefault(require("lodash/groupBy"));
25
+
26
+ var _isArray = _interopRequireDefault(require("lodash/isArray"));
27
+
28
+ var _react = _interopRequireWildcard(require("react"));
29
+
30
+ var _consoleComponents = require("@alicloud/console-components");
31
+
32
+ var _style = require("../style");
33
+
34
+ var _InputPrefix = _interopRequireDefault(require("./InputPrefix"));
35
+
36
+ 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); }
37
+
38
+ 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; }
39
+
40
+ 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; }
41
+
42
+ 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) { (0, _defineProperty2.default)(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; }
43
+
44
+ var AutoComplete = _consoleComponents.Select.AutoComplete;
45
+ /**
46
+ *
47
+ * @param IRcSearchOptionsProps options
48
+ * @returns
49
+ */
50
+
51
+ var normalizeOptions = function normalizeOptions(options) {
52
+ var optionsCopy = (0, _cloneDeep.default)(options);
53
+ optionsCopy.forEach(function (o) {
54
+ var _o$groupName;
55
+
56
+ return (_o$groupName = o.groupName) !== null && _o$groupName !== void 0 ? _o$groupName : o.groupName = "选择筛选条件";
57
+ });
58
+ return Object.entries((0, _groupBy.default)(optionsCopy, 'groupName')).map(function (_ref) {
59
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
60
+ groupName = _ref2[0],
61
+ children = _ref2[1];
62
+
63
+ return {
64
+ label: groupName,
65
+ children: children.map(function (l) {
66
+ return {
67
+ label: l.label,
68
+ value: l.dataIndex
69
+ };
70
+ })
71
+ };
72
+ });
73
+ };
74
+
75
+ var normalizeSelectDataSource = function normalizeSelectDataSource(title, list) {
76
+ return [{
77
+ label: title || '',
78
+ children: (0, _toConsumableArray2.default)(list)
79
+ }];
80
+ };
81
+
82
+ var normalizeSearchOptions = function normalizeSearchOptions(dataIndex, value, options) {
83
+ var opt = options.find(function (o) {
84
+ return o.dataIndex === dataIndex;
85
+ });
86
+ var valueLabel = value;
87
+
88
+ if ((opt === null || opt === void 0 ? void 0 : opt.template) === 'select') {
89
+ var _opt$templateProps;
90
+
91
+ valueLabel = (_opt$templateProps = opt.templateProps) === null || _opt$templateProps === void 0 ? void 0 : _opt$templateProps.dataSource.find(function (d) {
92
+ return d.value === value;
93
+ }).label;
94
+ }
95
+
96
+ if ((opt === null || opt === void 0 ? void 0 : opt.template) === 'multiple') {
97
+ var _opt$templateProps2, _opt$templateProps3;
98
+
99
+ console.log((_opt$templateProps2 = opt.templateProps) === null || _opt$templateProps2 === void 0 ? void 0 : _opt$templateProps2.dataSource.filter(function (d) {
100
+ return value.indexOf(d.value) !== -1;
101
+ }));
102
+ valueLabel = (_opt$templateProps3 = opt.templateProps) === null || _opt$templateProps3 === void 0 ? void 0 : _opt$templateProps3.dataSource.filter(function (d) {
103
+ return value.indexOf(d.value) !== -1;
104
+ }).map(function (d) {
105
+ return d.label;
106
+ }).join('/');
107
+ }
108
+
109
+ return {
110
+ label: opt === null || opt === void 0 ? void 0 : opt.label,
111
+ valueLabel: valueLabel
112
+ };
113
+ };
114
+
115
+ var ComplexSearch = function ComplexSearch(props) {
116
+ var options = props.options,
117
+ fuzzy = props.fuzzy,
118
+ defaultDataIndex = props.defaultDataIndex,
119
+ placeholder = props.placeholder,
120
+ onSearch = props.onSearch,
121
+ onSuggest = props.onSuggest,
122
+ _props$suggestions = props.suggestions,
123
+ suggestions = _props$suggestions === void 0 ? [] : _props$suggestions,
124
+ _props$prefix = props.prefix,
125
+ prefix = _props$prefix === void 0 ? 'next-' : _props$prefix;
126
+
127
+ var _useState = (0, _react.useState)(null),
128
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
129
+ selectedFilterType = _useState2[0],
130
+ setSelectedFilterType = _useState2[1];
131
+
132
+ var _useState3 = (0, _react.useState)(false),
133
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
134
+ focused = _useState4[0],
135
+ setFocused = _useState4[1];
136
+
137
+ var autoRef = (0, _react.useRef)(null);
138
+
139
+ var field = _consoleComponents.Field.useField();
140
+
141
+ var init = field.init,
142
+ getValue = field.getValue,
143
+ reset = field.reset,
144
+ getError = field.getError;
145
+ var focusProps = {
146
+ onFocus: function onFocus() {
147
+ setFocused(true);
148
+ },
149
+ onBlur: function onBlur() {
150
+ setFocused(false);
151
+ }
152
+ }; //计算视图,根据内部状态和输入的 props 决定一些值
153
+
154
+ var isFuzzy = (!!defaultDataIndex || fuzzy) && !!getValue('filterInputValue');
155
+ var defaultFilter = options.find(function (t) {
156
+ return t.dataIndex === defaultDataIndex;
157
+ });
158
+ /**
159
+ * 处理筛选类型选中的情况
160
+ */
161
+
162
+ var handlerFilterTypeChange = function handlerFilterTypeChange(type) {
163
+ var resetValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
164
+ setSelectedFilterType(options.find(function (o) {
165
+ return o.dataIndex === type;
166
+ }));
167
+ resetValue && reset();
168
+ };
169
+ /**
170
+ * 处理当筛选类型没选中,用户输入筛选类型,或者是做默认搜索的情况
171
+ */
172
+
173
+
174
+ var handlerFilterTypeInput = function handlerFilterTypeInput(value, actionType, isFuzzy) {
175
+ var isFuzzySearch = isFuzzy && getValue('filterInputValue'); // 如果是模糊搜索,则直接处理
176
+
177
+ if (isFuzzySearch) {
178
+ if (actionType !== 'change') {
179
+ handleSearch();
180
+ } else {
181
+ onSuggest && onSuggest(value, defaultDataIndex || '');
182
+ }
183
+
184
+ return;
185
+ } // 否则处理筛选项改变的情况
186
+
187
+
188
+ handlerFilterTypeChange(value, false);
189
+ };
190
+
191
+ var handlerFilterClear = function handlerFilterClear() {
192
+ setSelectedFilterType(null);
193
+ reset();
194
+ };
195
+
196
+ var handleSearch = function handleSearch() {
197
+ if (onSearch) {
198
+ var value = getValue('searchValue');
199
+
200
+ if (defaultDataIndex && !selectedFilterType) {
201
+ onSearch(getValue('filterInputValue'), defaultDataIndex, normalizeSearchOptions(defaultDataIndex, getValue('filterInputValue'), options));
202
+ }
203
+
204
+ if (selectedFilterType) {
205
+ onSearch(value, selectedFilterType.dataIndex, normalizeSearchOptions(selectedFilterType.dataIndex, value, options));
206
+ }
207
+ }
208
+
209
+ reset();
210
+ setFocused(false);
211
+ };
212
+
213
+ var handleKeyUp = function handleKeyUp(e) {
214
+ if (e.keyCode === 13 && e.currentTarget.value) {
215
+ handleSearch();
216
+ document.body.click();
217
+ }
218
+ };
219
+
220
+ var renderMultipleSelectorItem = function renderMultipleSelectorItem(item) {
221
+ var searchValue = getValue('searchValue');
222
+ var checked = (0, _isArray.default)(searchValue) && searchValue.some(function (v) {
223
+ return v === item.value;
224
+ });
225
+ return /*#__PURE__*/_react.default.createElement(_consoleComponents.Checkbox, {
226
+ checked: checked
227
+ }, item.label);
228
+ };
229
+
230
+ var renderSelectedFilter = function renderSelectedFilter() {
231
+ var _selectedFilterType$t, _selectedFilterType$t2;
232
+
233
+ var type = selectedFilterType === null || selectedFilterType === void 0 ? void 0 : selectedFilterType.template;
234
+ var searchValue = getValue('searchValue');
235
+
236
+ var props = _objectSpread({
237
+ hasBorder: false,
238
+ autoFocus: true,
239
+ hasClear: true,
240
+ key: type,
241
+ placeholder: (selectedFilterType === null || selectedFilterType === void 0 ? void 0 : (_selectedFilterType$t = selectedFilterType.templateProps) === null || _selectedFilterType$t === void 0 ? void 0 : _selectedFilterType$t.placeholder) || "\u9ED8\u8BA4\u6309".concat(selectedFilterType === null || selectedFilterType === void 0 ? void 0 : selectedFilterType.label, "\u641C\u7D22")
242
+ }, focusProps);
243
+
244
+ var selectProps = {
245
+ dataSource: normalizeSelectDataSource(selectedFilterType === null || selectedFilterType === void 0 ? void 0 : selectedFilterType.label, (selectedFilterType === null || selectedFilterType === void 0 ? void 0 : (_selectedFilterType$t2 = selectedFilterType.templateProps) === null || _selectedFilterType$t2 === void 0 ? void 0 : _selectedFilterType$t2.dataSource) || []),
246
+ defaultVisible: true,
247
+ popupStyle: {
248
+ width: 'auto'
249
+ }
250
+ };
251
+
252
+ switch (type) {
253
+ case 'input':
254
+ return /*#__PURE__*/_react.default.createElement(AutoComplete, (0, _extends2.default)({}, init('searchValue', {}), {
255
+ className: (0, _classnames.default)('main-input', 'multi')
256
+ }, props, {
257
+ onKeyUp: handleKeyUp
258
+ }));
259
+
260
+ case 'select':
261
+ return /*#__PURE__*/_react.default.createElement(_consoleComponents.Select, (0, _extends2.default)({
262
+ className: (0, _classnames.default)('main-input', 'select')
263
+ }, init('searchValue', {
264
+ props: {
265
+ onChange: handleSearch
266
+ }
267
+ }), props, selectProps));
268
+
269
+ case 'multiple':
270
+ return /*#__PURE__*/_react.default.createElement(_consoleComponents.Select, (0, _extends2.default)({
271
+ className: (0, _classnames.default)('main-input', 'multi')
272
+ }, init('searchValue', {}), props, selectProps, {
273
+ itemRender: renderMultipleSelectorItem,
274
+ popupClassName: "xconsole-rcsearch-multi-pop",
275
+ mode: "multiple",
276
+ maxTagCount: 0,
277
+ menuProps: {
278
+ footer: /*#__PURE__*/_react.default.createElement(_style.MultiBtnWarp, {
279
+ prefix: prefix
280
+ }, /*#__PURE__*/_react.default.createElement(_consoleComponents.Button, {
281
+ size: "small",
282
+ className: (0, _classnames.default)("pri-btn"),
283
+ type: "primary",
284
+ disabled: !(searchValue !== null && searchValue !== void 0 && searchValue.length),
285
+ onClick: function onClick() {
286
+ handleSearch();
287
+ }
288
+ }, "\u786E\u5B9A"), /*#__PURE__*/_react.default.createElement(_consoleComponents.Button, {
289
+ size: "small",
290
+ className: (0, _classnames.default)("cancel-btn"),
291
+ type: "normal",
292
+ onClick: function onClick() {
293
+ reset();
294
+ }
295
+ }, "\u53D6\u6D88"))
296
+ }
297
+ }));
298
+
299
+ default:
300
+ return null;
301
+ }
302
+ };
303
+
304
+ var renderSelectFilterCloseIcon = function renderSelectFilterCloseIcon() {
305
+ var hasFilterTypeClearBtn = !!selectedFilterType && !((selectedFilterType === null || selectedFilterType === void 0 ? void 0 : selectedFilterType.template) === 'input' && !!getValue('searchValue'));
306
+ return hasFilterTypeClearBtn && /*#__PURE__*/_react.default.createElement("div", {
307
+ className: "clear-level1"
308
+ }, /*#__PURE__*/_react.default.createElement("span", {
309
+ className: "".concat(prefix, "input-control")
310
+ }, /*#__PURE__*/_react.default.createElement("span", {
311
+ className: "".concat(prefix, "input-hint-wrap")
312
+ }, /*#__PURE__*/_react.default.createElement("i", {
313
+ className: "".concat(prefix, "icon ").concat(prefix, "icon-delete-filling ").concat(prefix, "medium ").concat(prefix, "input-hint ").concat(prefix, "input-clear-icon"),
314
+ role: "button",
315
+ "aria-label": "\u6E05\u9664",
316
+ onClick: function onClick() {
317
+ handlerFilterClear();
318
+ }
319
+ }))));
320
+ };
321
+
322
+ return /*#__PURE__*/_react.default.createElement(_style.SearchWarp, {
323
+ prefix: prefix
324
+ }, /*#__PURE__*/_react.default.createElement("div", {
325
+ className: (0, _classnames.default)('left-wrap', "".concat(prefix, "input"), {
326
+ 'focus': focused
327
+ })
328
+ }, /*#__PURE__*/_react.default.createElement("div", {
329
+ className: (0, _classnames.default)('condition')
330
+ }, selectedFilterType ? /*#__PURE__*/_react.default.createElement(_InputPrefix.default, {
331
+ dataSource: normalizeOptions(options),
332
+ label: selectedFilterType === null || selectedFilterType === void 0 ? void 0 : selectedFilterType.label,
333
+ defaultValue: selectedFilterType === null || selectedFilterType === void 0 ? void 0 : selectedFilterType.dataIndex,
334
+ onChange: function onChange(value) {
335
+ handlerFilterTypeChange(value);
336
+ }
337
+ }) : null), /*#__PURE__*/_react.default.createElement("div", {
338
+ className: (0, _classnames.default)('forms')
339
+ }, !selectedFilterType ? /*#__PURE__*/_react.default.createElement(AutoComplete, (0, _extends2.default)({}, init('filterInputValue', {
340
+ props: {
341
+ // @ts-ignore
342
+ onChange: function onChange(value, actionType) {
343
+ handlerFilterTypeInput(value, actionType, isFuzzy);
344
+ }
345
+ }
346
+ }), {
347
+ ref: autoRef,
348
+ placeholder: placeholder ? placeholder : defaultFilter !== null && defaultFilter !== void 0 && defaultFilter.label ? "\u9ED8\u8BA4\u6309".concat(defaultFilter === null || defaultFilter === void 0 ? void 0 : defaultFilter.label, "\u641C\u7D22") : '请搜索',
349
+ className: (0, _classnames.default)('main-input', 'multi'),
350
+ hasBorder: false,
351
+ onKeyUp: handleKeyUp,
352
+ dataSource: // 如果是指定了默认的筛选类型或者是直接指定模糊搜索模式 ,并且用户在这个输入框里面已经输入了值
353
+ // 则表示需要模糊搜索,调用 handleSuggest
354
+ isFuzzy ? suggestions : normalizeOptions(options),
355
+ popupStyle: {
356
+ width: 'auto'
357
+ }
358
+ }, focusProps)) : null, renderSelectedFilter(), renderSelectFilterCloseIcon())), /*#__PURE__*/_react.default.createElement("div", {
359
+ className: (0, _classnames.default)('right-wrap')
360
+ }, /*#__PURE__*/_react.default.createElement(_consoleComponents.Button, {
361
+ className: (0, _classnames.default)('search-btn', {
362
+ 'focus': focused
363
+ }),
364
+ onClick: handleSearch
365
+ }, /*#__PURE__*/_react.default.createElement(_consoleComponents.Icon, {
366
+ type: "search"
367
+ }))));
368
+ };
369
+
370
+ var _default = _consoleComponents.ConfigProvider.config(ComplexSearch);
371
+
372
+ exports.default = _default;
package/lib/search.js CHANGED
@@ -9,9 +9,7 @@ exports.Search = void 0;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
12
- var _modeSingleSingle = _interopRequireDefault(require("./modeSingleSingle"));
13
-
14
- var _modeSingleMulti = _interopRequireDefault(require("./modeSingleMulti"));
12
+ var _index = _interopRequireDefault(require("./modeSingleSingle/index2"));
15
13
 
16
14
  var _classnames = _interopRequireDefault(require("classnames"));
17
15
 
@@ -37,7 +35,7 @@ var Search = function Search(props) {
37
35
  }), /*#__PURE__*/_react.default.createElement(SearchWrap, {
38
36
  className: (0, _classnames.default)(_constants.baseClassName, className),
39
37
  style: style
40
- }, simple ? /*#__PURE__*/_react.default.createElement(_modeSingleSingle.default, props) : /*#__PURE__*/_react.default.createElement(_modeSingleMulti.default, props)));
38
+ }, /*#__PURE__*/_react.default.createElement(_index.default, props)));
41
39
  };
42
40
 
43
41
  exports.Search = Search;
@@ -1,2 +1,4 @@
1
- declare const _default: any;
1
+ import React from "react";
2
+ import { IRcSearchTagListProps } from '../types/IRcSearchTagListProps.type';
3
+ declare const _default: React.FC<IRcSearchTagListProps>;
2
4
  export default _default;
@@ -15,8 +15,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
15
15
 
16
16
  var _consoleComponents = require("@alicloud/console-components");
17
17
 
18
- var _LoggerProvider = _interopRequireDefault(require("../provider/LoggerProvider"));
19
-
20
18
  var _style = require("../style");
21
19
 
22
20
  var _constants = require("../constants");
@@ -25,7 +23,7 @@ var TagGroup = _consoleComponents.Tag.Group,
25
23
  ClosableTag = _consoleComponents.Tag.Closeable;
26
24
 
27
25
  var SearchTagList = function SearchTagList(props) {
28
- var tagList = props.tagList,
26
+ var dataSource = props.dataSource,
29
27
  className = props.className,
30
28
  style = props.style,
31
29
  onChange = props.onChange,
@@ -33,7 +31,7 @@ var SearchTagList = function SearchTagList(props) {
33
31
  prefix = _props$prefix === void 0 ? "next-" : _props$prefix;
34
32
 
35
33
  function onRemoveTag(item) {
36
- var newTagList = (0, _toConsumableArray2.default)(tagList);
34
+ var newTagList = (0, _toConsumableArray2.default)(dataSource);
37
35
 
38
36
  if (onChange) {
39
37
  var resFindIndex = newTagList.findIndex(function (x) {
@@ -54,11 +52,7 @@ var SearchTagList = function SearchTagList(props) {
54
52
  prefix: prefix,
55
53
  className: (0, _classnames.default)(_constants.baseTagListClassName, className),
56
54
  style: style
57
- }, /*#__PURE__*/_react.default.createElement(_LoggerProvider.default, {
58
- regionId: props.regionId,
59
- resourceType: props.resourceType || '',
60
- componentName: "RcSearch"
61
- }), /*#__PURE__*/_react.default.createElement(TagGroup, null, tagList && tagList.length > 0 && tagList.map(function (tagItem) {
55
+ }, /*#__PURE__*/_react.default.createElement(TagGroup, null, dataSource && dataSource.length > 0 && dataSource.map(function (tagItem) {
62
56
  return /*#__PURE__*/_react.default.createElement(ClosableTag, {
63
57
  key: tagItem.dataIndex + tagItem.value,
64
58
  type: "normal",
@@ -67,8 +61,8 @@ var SearchTagList = function SearchTagList(props) {
67
61
  onRemoveTag(tagItem);
68
62
  return true;
69
63
  }
70
- }, tagItem.label, ":", tagItem.valueShow);
71
- }), tagList && tagList.length > 0 && /*#__PURE__*/_react.default.createElement("a", {
64
+ }, tagItem.label, ":", tagItem.valueLabel);
65
+ }), dataSource && dataSource.length > 0 && /*#__PURE__*/_react.default.createElement("a", {
72
66
  className: "remove-btn",
73
67
  onClick: onRemoveAllTag
74
68
  }, "\u6E05\u9664\u7B5B\u9009\u6761\u4EF6")));
package/lib/style.js CHANGED
@@ -15,7 +15,7 @@ var prefix = function prefix(props) {
15
15
 
16
16
  var SearchWarp = _styledComponents.default.div.withConfig({
17
17
  componentId: "sc-1afc1cn-0"
18
- })(["height:100%;width:100%;display:flex;.left-wrap{flex:1;border-left:1px solid rgba(192,198,204,1);border-bottom:1px solid rgba(192,198,204,1);border-top:1px solid rgba(192,198,204,1);border-right:1px solid rgba(192,198,204,1);display:flex;border-bottom-left-radius:2px;border-top-left-radius:2px;&.focus{border:1px solid #0064c8;}.condition{height:26px;display:inline-block;margin-top:2px;}.condition-item{height:26px;display:inline-block;line-height:26px;background:#EFF3F8;border-radius:2px;background-color:#EFF3F8;padding:0 8px;margin:0 2px;font-size:12px;color:#333;position:relative;&-txt{padding-right:4px;}&:hover{background-color:#E0E4E8;}}.condition-select{width:100%;height:100%;opacity:0;position:absolute;top:0;left:0;min-width:auto;", "select-inner{min-width:auto;}}.forms{flex:1;position:relative;.clear-level1{position:absolute;top:1px;right:1px;height:28px;width:30px;background-color:#fff;z-index:99;color:#333;text-align:center;line-height:28px;font-size:12px;cursor:pointer;padding:6px 0 0 6px;}}.main-input{height:auto;border:none;box-shadow:none;&.single{flex:1;}&.select{width:100%;}&.multi{width:100%;}", "input,", "-input{height:auto;box-shadow:none;}}", "-input", "-medium{height:auto;}}.right-wrap{width:32px;.search-btn{width:32px;padding:0 !important;border-bottom-left-radius:0;border-top-left-radius:0;border-left:none;}}"], prefix, prefix, prefix, prefix, prefix);
18
+ })(["height:100%;width:100%;display:flex;.left-wrap{flex:1;border-left:1px solid rgba(192,198,204,1);border-bottom:1px solid rgba(192,198,204,1);border-top:1px solid rgba(192,198,204,1);border-right:1px solid rgba(192,198,204,1);display:flex;border-bottom-left-radius:2px;border-top-left-radius:2px;&.focus{border:1px solid #0064c8;border:1px solid var(--input-focus-border-color,#0064c8);;border-right:1px solid rgba(192,198,204,1);}.condition{height:26px;display:inline-block;margin-top:2px;}.condition-item{height:26px;display:inline-block;line-height:26px;background:#EFF3F8;border-radius:2px;background-color:#EFF3F8;padding:0 8px;margin:0 2px;font-size:12px;color:#333;position:relative;&-txt{padding-right:4px;}&:hover{background-color:#E0E4E8;}}.condition-select{width:100%;height:100%;opacity:0;position:absolute;top:0;left:0;min-width:auto;", "select-inner{min-width:auto;}}.forms{flex:1;position:relative;.clear-level1{position:absolute;top:1px;right:1px;height:28px;width:30px;background-color:#fff;z-index:99;color:#333;text-align:center;line-height:28px;font-size:12px;cursor:pointer;padding:6px 0 0 6px;}}.main-input{height:auto;border:none;box-shadow:none;&.single{flex:1;}&.select{width:100%;}&.multi{width:100%;}", "input,", "input{height:auto;box-shadow:none;}}", "input", "medium{height:auto;}}.right-wrap{width:32px;.search-btn{width:32px;padding:0 !important;border-bottom-left-radius:0;border-top-left-radius:0;&.focus{border-color:#0064c8;border-color:var(--input-focus-border-color,#0064c8);}border-left:none;}}"], prefix, prefix, prefix, prefix, prefix);
19
19
 
20
20
  exports.SearchWarp = SearchWarp;
21
21
 
@@ -16,11 +16,12 @@ export interface IRcSearchOptionsProps {
16
16
  * - select:单选<br />
17
17
  * - multiple:多选<br />
18
18
  */
19
- template: string;
19
+ template?: string;
20
20
  /**
21
21
  * 定义传给表单项的属性
22
22
  * templateProps.placeholder
23
23
  * templateProps.dataSource
24
24
  */
25
- templateProps: any;
25
+ templateProps?: any;
26
+ groupName?: string;
26
27
  }
@@ -1,12 +1,13 @@
1
+ /**
2
+ * 这是IRcSearchProps的说明。breezr-docs支持从源码中提取接口信息并文档化,因此你可以使用接口来定义Props,从而能便捷地将Props的信息通过文档透出。
3
+ *
4
+ * 下面列举的props其实是随便写的,仅仅用来说明breezr-docs的接口提取功能。
5
+ */
1
6
  import { IRcSearchOptionsProps } from './IRcSearchOptions.type';
2
- import { IRcSearchTagItemProps } from './IRcSearchTagItemProps.type';
3
7
  export interface IRcSearchProps {
4
8
  /**
5
- * 组件适应的场景:<br />
6
- * - 场景一:single-single:单维度单类别单选<br />
7
- * - 场景二:single-multi:单维度多类别单选<br />
8
- * - 场景三:multi-multi:多维度多类别单选<br />
9
- * @default "single-single"
9
+ * 是否是简单搜索, 不支持多 filter, 但是支持模糊
10
+ * @default false
10
11
  */
11
12
  simple?: boolean;
12
13
  /**
@@ -23,50 +24,39 @@ export interface IRcSearchProps {
23
24
  */
24
25
  options: IRcSearchOptionsProps[];
25
26
  /**
26
- * tags 传入的taglist, 用于, 同步
27
+ * 默认placeholder
27
28
  */
28
- tags?: IRcSearchTagItemProps[];
29
+ placeholder?: string;
29
30
  /**
30
31
  * 默认类别
31
- * 仅在mode是"single-multi" | "multi-multi"生效
32
32
  */
33
33
  defaultDataIndex?: string;
34
34
  /**
35
- * 默认placeholder
36
- * 仅在mode是"single-multi" | "multi-multi"生效, 且, 未配置默认值时生效
37
- */
38
- defaultPlaceholder?: string;
39
- /**
40
- * regionId
35
+ * 搜索触发
41
36
  */
42
- regionId?: string;
43
- /**
44
- * resourceType
45
- */
46
- resourceType?: string;
37
+ onSearch?: (value: string, dataIndex: string, extra?: any) => void;
47
38
  /**
48
- * 点击搜索按钮, 触发搜索回调。
39
+ * 模糊搜索的回调函数(仅输入框返回),用于构建模糊搜索的联想列表
49
40
  */
50
- onSearch?: (allFields: any) => void;
41
+ onSuggest?: (value: string, dataIndex: string) => void;
51
42
  /**
52
- * 包括onInput的回车;onSelect; 对Tag的增减。
43
+ * 模糊搜索的 suggestions
53
44
  */
54
- onChange?: (changeFields: any, allFields: any) => void;
45
+ suggestions?: any[];
55
46
  /**
56
- * input的input
47
+ * 是否是模糊搜索
57
48
  */
58
- onInput?: () => void;
49
+ fuzzy?: boolean;
59
50
  /**
60
- * 模糊搜索的回调函数(仅输入框返回),用于构建模糊搜索的联想列表
51
+ * regionId, 数据上报用
61
52
  */
62
- onSuggest?: (value: string, dataIndex: string) => void;
53
+ regionId?: string;
63
54
  /**
64
- * 模糊搜索的回调函数(仅输入框返回),当没设置defaultDataIndex,且有多个input类别时触发,
65
- * 可自定义二级返回List
66
- */
67
- onSuggestNoDataIndex?: (value: string) => Promise<any>;
55
+ * resourceType, 数据上报用, 格式 ACS::ECS::INSTANCE
56
+ */
57
+ resourceType?: string;
68
58
  /**
69
- * 提供单选和多选, 触发。
59
+ * 样式 class 前缀
70
60
  */
71
- onSelect?: () => void;
61
+ prefix?: string;
72
62
  }
@@ -19,5 +19,5 @@ export interface IRcSearchTagItemProps {
19
19
  /**
20
20
  * tag的类别的展示值
21
21
  */
22
- valueShow: string;
22
+ valueLabel: string;
23
23
  }
@@ -14,13 +14,13 @@ export interface IRcSearchTagListProps {
14
14
  */
15
15
  style?: any;
16
16
  /**
17
- * tags 传入的taglist, 用于, 同步
17
+ * 筛选项
18
18
  */
19
- tagList: IRcSearchTagItemProps[];
19
+ dataSource: IRcSearchTagItemProps[];
20
20
  /**
21
21
  * regionId
22
22
  */
23
- regionId: string;
23
+ regionId?: string;
24
24
  /**
25
25
  * resourceType
26
26
  */
@@ -0,0 +1 @@
1
+ export declare function useCssVar(cssVarName: string): string;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useCssVar = useCssVar;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _react = require("react");
13
+
14
+ var _consoleComponents = require("@alicloud/console-components");
15
+
16
+ var nextId = 0;
17
+
18
+ function useCssVar(cssVarName) {
19
+ var _useState = (0, _react.useState)(''),
20
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
21
+ v = _useState2[0],
22
+ setV = _useState2[1];
23
+
24
+ var refElement = _consoleComponents.ConfigProvider.useRefElement();
25
+
26
+ (0, _react.useLayoutEffect)(function () {
27
+ var _window$__recheck_css;
28
+
29
+ check(); // @ts-ignore
30
+
31
+ var checkArr = window['__recheck_css_var'] = (_window$__recheck_css = window['__recheck_css_var']) !== null && _window$__recheck_css !== void 0 ? _window$__recheck_css : [];
32
+
33
+ while (checkArr[nextId]) {
34
+ // 如果一个页面下有份此组件库(即有多个nextId指针),需要避免冲突
35
+ nextId++;
36
+ }
37
+
38
+ var id = nextId++;
39
+ checkArr[id] = check;
40
+ return function () {
41
+ delete checkArr[id];
42
+ };
43
+
44
+ function check() {
45
+ var _window$getComputedSt, _window$getComputedSt2, _window;
46
+
47
+ var val = (_window$getComputedSt = (_window$getComputedSt2 = (_window = window).getComputedStyle) === null || _window$getComputedSt2 === void 0 ? void 0 : _window$getComputedSt2.call(_window, refElement).getPropertyValue(cssVarName)) !== null && _window$getComputedSt !== void 0 ? _window$getComputedSt : '';
48
+ setV(val);
49
+ }
50
+ }, [refElement, cssVarName]);
51
+ return v;
52
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alicloud/console-components-search",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "license": "MIT",
@@ -14,7 +14,8 @@
14
14
  "babel:esm": "breezr build --engine babel --es-module",
15
15
  "types": "tsc -p src --emitDeclarationOnly",
16
16
  "build": "breezr build --engine webpack",
17
- "clean": "rm -rf dist lib es doc-dist"
17
+ "clean": "rm -rf dist lib es doc-dist",
18
+ "prepublishOnly": "npm run clean && npm run babel && npm run babel:esm && npm run types && npm run build && npm run doc:build"
18
19
  },
19
20
  "devDependencies": {
20
21
  "@alicloud/console-toolkit-cli": "^1.2.0",