@alicloud/console-components-search 0.1.3 → 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 (59) hide show
  1. package/README.md +104 -131
  2. package/config/components-with-style.tsx +1 -1
  3. package/demos/demo1.demo.tsx +91 -90
  4. package/doc-dist/0.js +1917 -16
  5. package/doc-dist/1.js +16 -1917
  6. package/doc-dist/10.js +1 -1
  7. package/doc-dist/11.js +1 -1
  8. package/doc-dist/12.js +1 -1
  9. package/doc-dist/13.js +1 -1
  10. package/doc-dist/14.js +1 -1
  11. package/doc-dist/15.js +1 -1
  12. package/doc-dist/3.js +5 -5
  13. package/doc-dist/4.js +1 -1
  14. package/doc-dist/5.js +2 -2
  15. package/doc-dist/6.js +1 -1
  16. package/doc-dist/7.js +1 -1
  17. package/doc-dist/8.js +1 -1
  18. package/doc-dist/9.js +1 -1
  19. package/doc-dist/deps/main.js +8 -8
  20. package/doc-dist/index.js +3 -3
  21. package/doc-dist/log-deps-build.log +3 -3
  22. package/es/index.js +1 -1
  23. package/es/modeSingleSingle/InputPrefix.js +29 -0
  24. package/es/modeSingleSingle/index2.js +342 -0
  25. package/es/search.js +2 -3
  26. package/es/searchTagList/index.js +5 -10
  27. package/es/style.js +1 -1
  28. package/lib/index.d.ts +1 -1
  29. package/lib/index.js +1 -1
  30. package/lib/modeSingleSingle/InputPrefix.d.ts +2 -0
  31. package/lib/modeSingleSingle/InputPrefix.js +43 -0
  32. package/lib/modeSingleSingle/index2.d.ts +4 -0
  33. package/lib/modeSingleSingle/index2.js +372 -0
  34. package/lib/search.js +2 -4
  35. package/lib/searchTagList/index.d.ts +3 -1
  36. package/lib/searchTagList/index.js +5 -11
  37. package/lib/style.js +1 -1
  38. package/lib/types/IRcSearchProps.type.d.ts +22 -21
  39. package/lib/types/IRcSearchTagItemProps.type.d.ts +1 -1
  40. package/lib/types/IRcSearchTagListProps.type.d.ts +3 -3
  41. package/package.json +1 -1
  42. package/demos/demo2.demo.tsx +0 -81
  43. package/demos/demo3.demo.tsx +0 -90
  44. package/demos/demo4.demo.tsx +0 -137
  45. package/dist/index.css +0 -1
  46. package/dist/index.js +0 -60
  47. package/doc-dist/16.js +0 -6
  48. package/doc-dist/17.js +0 -6
  49. package/doc-dist/18.js +0 -6
  50. package/doc-dist/19.js +0 -6
  51. package/doc-dist/20.js +0 -6
  52. package/docs/markdown-render.doc.md +0 -21
  53. package/docs/test.doc.md +0 -8
  54. package/es/modeSingleMulti/index.js +0 -868
  55. package/es/modeSingleSingle/index.js +0 -201
  56. package/lib/modeSingleMulti/index.d.ts +0 -2
  57. package/lib/modeSingleMulti/index.js +0 -894
  58. package/lib/modeSingleSingle/index.d.ts +0 -2
  59. package/lib/modeSingleSingle/index.js +0 -226
@@ -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;border:1px solid var(--input-hover-border-color,#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
 
@@ -1,5 +1,9 @@
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
9
  * 是否是简单搜索, 不支持多 filter, 但是支持模糊
@@ -20,42 +24,39 @@ export interface IRcSearchProps {
20
24
  */
21
25
  options: IRcSearchOptionsProps[];
22
26
  /**
23
- * tags 传入的taglist, 用于, 同步
27
+ * 默认placeholder
24
28
  */
25
- tags?: IRcSearchTagItemProps[];
29
+ placeholder?: string;
26
30
  /**
27
31
  * 默认类别
28
- * 仅在mode是"single-multi" | "multi-multi"生效
29
32
  */
30
33
  defaultDataIndex?: string;
31
34
  /**
32
- * 默认placeholder
33
- * 仅在mode是"single-multi" | "multi-multi"生效, 且, 未配置默认值时生效
35
+ * 搜索触发
34
36
  */
35
- defaultPlaceholder?: string;
37
+ onSearch?: (value: string, dataIndex: string, extra?: any) => void;
36
38
  /**
37
- * regionId
39
+ * 模糊搜索的回调函数(仅输入框返回),用于构建模糊搜索的联想列表
38
40
  */
39
- regionId?: string;
41
+ onSuggest?: (value: string, dataIndex: string) => void;
40
42
  /**
41
- * resourceType
43
+ * 模糊搜索的 suggestions
42
44
  */
43
- resourceType?: string;
45
+ suggestions?: any[];
44
46
  /**
45
- * 搜索触发
47
+ * 是否是模糊搜索
46
48
  */
47
- onSearch?: (allFields: any) => void;
49
+ fuzzy?: boolean;
48
50
  /**
49
- * 模糊搜索的回调函数(仅输入框返回),用于构建模糊搜索的联想列表
51
+ * regionId, 数据上报用
50
52
  */
51
- onSuggest?: (value: string, dataIndex: string) => void;
53
+ regionId?: string;
52
54
  /**
53
- * 模糊搜索的回调函数(仅输入框返回),当没设置defaultDataIndex,且有多个input类别时触发,
54
- * 可自定义二级返回List
55
- */
56
- onSuggestNoDataIndex?: (value: string) => Promise<any>;
55
+ * resourceType, 数据上报用, 格式 ACS::ECS::INSTANCE
56
+ */
57
+ resourceType?: string;
57
58
  /**
58
- * 提供单选和多选, 触发。
59
+ * 样式 class 前缀
59
60
  */
60
- onSelect?: () => void;
61
+ prefix?: string;
61
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
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alicloud/console-components-search",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "license": "MIT",
@@ -1,81 +0,0 @@
1
- /**
2
- * @title 场景二 + 结合SearchTagList使用
3
- * @canFullScreen
4
- */
5
-
6
- import React, {useState} from "react";
7
- import { Search, IRcSearchProps, SearchTagList } from "@alicloud/console-components-search";
8
-
9
- // interface IProps {}
10
- let options = [
11
- {
12
- label: '实例名称',
13
- dataIndex: 'name',
14
- template: 'input',
15
- templateProps: {
16
- placeholder: '按实例名称搜索',
17
- dataSource: []
18
- }
19
- },
20
- {
21
- label: '网络类型',
22
- dataIndex: 'type',
23
- template: 'select',
24
- templateProps: {
25
- placeholder: '请选择网络类型',
26
- dataSource: [
27
- {label: 'A', value: 'a'},
28
- {label: 'B', value: 'b'},
29
- {label: 'C', value: 'c'},
30
- {label: 'D', value: 'd'},
31
- ]
32
- }
33
- },
34
- {
35
- label: '付费类型',
36
- dataIndex: 'pay',
37
- template: 'multiple',
38
- templateProps: {
39
- placeholder: '请选择付费类型',
40
- dataSource: [
41
- {label: 'A', value: 'a'},
42
- {label: 'B', value: 'b'},
43
- {label: 'C', value: 'c'},
44
- {label: 'D', value: 'd'},
45
- ]
46
- }
47
- }
48
- ]
49
-
50
- const Demo2: React.FC<IRcSearchProps> = (props) => {
51
- const [tagList, setTagList] = useState<any>([]);
52
-
53
- function onTagChangeByTagList (newTags: any) {
54
- console.log(`onTagChange:`, newTags);
55
- setTagList(newTags);
56
- }
57
-
58
- async function onSearch (field:any) {
59
- console.log(`onSearch:`, 'allFileds', field)
60
- console.log(`提交搜索: ${JSON.stringify(field)}`)
61
- }
62
-
63
-
64
- return (
65
- <div>
66
- <Search
67
- defaultDataIndex="name"
68
- regionId="demo"
69
- resourceType="demo"
70
- options={options}
71
- onSearch={onSearch}
72
- tags={tagList}
73
- />
74
- <SearchTagList regionId="demo" resourceType="demo" style={{marginTop: '8px'}} tagList={tagList} onChange={onTagChangeByTagList} />
75
-
76
- </div>
77
-
78
- )
79
- };
80
-
81
- export default Demo2;