@alicloud/console-components-search 0.1.3 → 0.2.2

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 (66) hide show
  1. package/README.md +104 -131
  2. package/demos/demo1.demo.tsx +100 -90
  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 +3 -3
  23. package/es/constants.js +4 -1
  24. package/es/index.js +1 -1
  25. package/es/modeSingleSingle/InputPrefix.js +29 -0
  26. package/es/modeSingleSingle/index2.js +369 -0
  27. package/es/search.js +2 -3
  28. package/es/searchTagList/PureTag.js +57 -0
  29. package/es/searchTagList/index.js +30 -14
  30. package/es/style.js +2 -2
  31. package/lib/constants.d.ts +2 -0
  32. package/lib/constants.js +6 -2
  33. package/lib/index.d.ts +2 -1
  34. package/lib/index.js +1 -1
  35. package/lib/modeSingleSingle/InputPrefix.d.ts +2 -0
  36. package/lib/modeSingleSingle/InputPrefix.js +43 -0
  37. package/lib/modeSingleSingle/index2.d.ts +4 -0
  38. package/lib/modeSingleSingle/index2.js +400 -0
  39. package/lib/search.js +2 -4
  40. package/lib/searchTagList/PureTag.d.ts +14 -0
  41. package/lib/searchTagList/PureTag.js +71 -0
  42. package/lib/searchTagList/index.d.ts +3 -1
  43. package/lib/searchTagList/index.js +31 -15
  44. package/lib/style.js +2 -2
  45. package/lib/types/IRcSearchProps.type.d.ts +22 -21
  46. package/lib/types/IRcSearchTagItemProps.type.d.ts +2 -2
  47. package/lib/types/IRcSearchTagListProps.type.d.ts +9 -5
  48. package/package.json +2 -1
  49. package/demos/demo2.demo.tsx +0 -81
  50. package/demos/demo3.demo.tsx +0 -90
  51. package/demos/demo4.demo.tsx +0 -137
  52. package/dist/index.css +0 -1
  53. package/dist/index.js +0 -60
  54. package/doc-dist/16.js +0 -6
  55. package/doc-dist/17.js +0 -6
  56. package/doc-dist/18.js +0 -6
  57. package/doc-dist/19.js +0 -6
  58. package/doc-dist/20.js +0 -6
  59. package/docs/markdown-render.doc.md +0 -21
  60. package/docs/test.doc.md +0 -8
  61. package/es/modeSingleMulti/index.js +0 -868
  62. package/es/modeSingleSingle/index.js +0 -201
  63. package/lib/modeSingleMulti/index.d.ts +0 -2
  64. package/lib/modeSingleMulti/index.js +0 -894
  65. package/lib/modeSingleSingle/index.d.ts +0 -2
  66. package/lib/modeSingleSingle/index.js +0 -226
package/README.md CHANGED
@@ -1,13 +1,6 @@
1
1
  # @alicloud/console-components-search
2
2
 
3
3
  基础搜索组件: 当前控制台的基础搜索主要针对列表页的搜索场景,此次基础搜索组件主要通过一个简约通用的框架满足控制台针对列表页不同场景下的搜索需求
4
- 按照使用场景分为三种使用场景
5
- - 场景一:单维度单类别单选 (eg:该功能模块下只支持“实例名称”这唯一类别的搜索);
6
- - 场景二:带着多个筛选维度的输入
7
-
8
- ### SearchTagList
9
- 场景二 需结合SearchTagList使用, SearchTagList用与展示Search已选的筛选条件(以tag的形式),分成两个组件可以更灵活的定位SearchTagList的位置(比如表格场景)
10
-
11
4
  ## install
12
5
 
13
6
  ```bash
@@ -17,20 +10,66 @@ tnpm i @alicloud/xconsole-components-search --save-dev
17
10
  ## Usage
18
11
 
19
12
  ```js
20
- import { Search, IRcSearchProps } from "@alicloud/console-components-search";
21
- let options = [
13
+ /**
14
+ * @title 场景1
15
+ */
16
+
17
+ import React from "react";
18
+ import { Search } from "@alicloud/console-components-search";
19
+
20
+ let options = [
22
21
  {
23
22
  label: '实例名称',
24
23
  dataIndex: 'name',
25
24
  template: 'input',
26
25
  templateProps: {
27
- placeholder: '默认按实例名称搜索',
26
+ placeholder: '按实例名称搜索',
28
27
  dataSource: []
29
- }
28
+ },
29
+ groupName:"test"
30
+ },
31
+ {
32
+ label: '网络类型',
33
+ dataIndex: 'type',
34
+ template: 'select',
35
+ templateProps: {
36
+ placeholder: '请选择网络类型',
37
+ dataSource: [
38
+ {label: 'A', value: 'a'},
39
+ {label: 'B', value: 'b'},
40
+ {label: 'C', value: 'c'},
41
+ {label: 'D', value: 'd'},
42
+ ]
43
+ },
44
+ groupName:"test"
45
+ },
46
+ {
47
+ label: '付费类型',
48
+ dataIndex: 'pay',
49
+ template: 'multiple',
50
+ templateProps: {
51
+ placeholder: '请选择付费类型',
52
+ dataSource: [
53
+ {label: 'A', value: 'a'},
54
+ {label: 'B', value: 'b'},
55
+ {label: 'C', value: 'c'},
56
+ {label: 'D', value: 'd'},
57
+ ]
58
+ },
59
+ groupName:"test2"
30
60
  }
31
61
  ]
32
62
 
33
63
  let options2 = [
64
+ {
65
+ label: '实例名称',
66
+ dataIndex: 'name',
67
+ template: 'input',
68
+ templateProps: {
69
+ placeholder: '按实例名称搜索',
70
+ dataSource: []
71
+ },
72
+ },
34
73
  {
35
74
  label: '网络类型',
36
75
  dataIndex: 'type',
@@ -43,144 +82,78 @@ let options2 = [
43
82
  {label: 'C', value: 'c'},
44
83
  {label: 'D', value: 'd'},
45
84
  ]
46
- }
85
+ },
86
+ },
87
+ {
88
+ label: '付费类型',
89
+ dataIndex: 'pay',
90
+ template: 'multiple',
91
+ templateProps: {
92
+ placeholder: '请选择付费类型',
93
+ dataSource: [
94
+ {label: 'A', value: 'a'},
95
+ {label: 'B', value: 'b'},
96
+ {label: 'C', value: 'c'},
97
+ {label: 'D', value: 'd'},
98
+ ]
99
+ },
47
100
  }
48
101
  ]
49
- async function onSuggestAsync (value: string, dataIndex: string) {
50
- if (!value) {
51
- return [];
52
- }
53
- return [
54
- // {label: value, value: `${dataIndex}-${value}`}
55
- `${value}-1`,
56
- `${value}-2`,
57
- `${value}-3`,
58
- `${value}-4`,
59
- `${value}-5`,
60
- ]
61
- }
62
- function onSuggestPromise (value: string, dataIndex: string) {
63
- let rtList = [];
64
- if (!value) {
65
- rtList = [];
66
- }
67
- rtList = [
68
- // {label: value, value: `${dataIndex}-${value}`}
69
- `${value}-1`,
70
- `${value}-2`,
71
- `${value}-3`,
72
- `${value}-4`,
73
- `${value}-5`,
74
- ]
75
- return Promise.resolve(rtList)
76
- }
77
-
78
- async function onChange1 (changedFileds:any, allFileds:any) {
79
- console.log(`changedFileds:`, changedFileds, 'allFileds', allFileds)
80
- }
81
-
82
- async function onSearch (allFileds:any) {
83
- console.log(`onSearch:`, 'allFileds', allFileds)
84
- alert(`提交搜索: ${JSON.stringify(allFileds)}`)
85
- }
86
- <div>
87
- 搜索类型:(async 调用)<br />
88
- <Search
89
- simple
90
- options={options}
91
- onSuggest={onSuggestAsync}
92
- onChange={onChange1}
93
- onSearch={onSearch}
94
- />
95
- <br /><br /><br /> 搜索类型:(promise调用)<br />
96
- <Search
97
- simple
98
- options={options}
99
- onSuggest={onSuggestPromise}
100
- onChange={onChange1}
101
- onSearch={onSearch}
102
- />
103
- <br /><br /><br /> 单选类型:<br />
104
- <Search
105
- simple
106
- options={options2}
107
- onChange={onChange1}
108
- onSearch={onSearch}
109
- />
110
- <br /> 单维度单类别,暂不支持多选
111
- </div>
112
102
 
113
- ```
114
-
115
- ## 使用场景
116
-
117
- ### 场景一:单维度单类别单选 (eg:该功能模块下只支持“实例名称”这唯一类别的搜索);
118
-
119
- 1、用户点击输入框直接输入要搜索的内容;<br>
120
- 2、场景一只提供‘input’类型和‘select’类型;<br>
121
- 3、模糊搜索的回调函数支持async 和 promise 调用;<br>
122
-
123
- [$XView](http://localhost:3333/?entryKey=demo1&consoleOSId=console-fe-test-rc-search-doc)
124
-
125
- > 场景一的已选值在基础搜索组件上展示, 无需引用“searchTagList”组件
126
- <br>
127
103
 
128
- ### 场景二:单维度多类别单选(eg:该功能模块下只支持“实例名称”这唯一类别的搜索网络类型包括多个子类别);
129
-
130
- 1、用户点击输入框激活下拉类别列表<br>
131
- 2、当用户直接输入内容的时候,列表消失<br>
132
- 3、用户点击类别后,在搜索框内生成类别Tag<br>
133
- 4、如果该类别有子类别/推荐项,顺次自动下拉展开<br>
134
- 5、当用户完成该类别搜索后,搜索框默认保留该类别Tag<br>
135
- 6、用户点击类别后,在搜索框内生成类别Tag<br>
136
- 7、如果该类别有子类别/推荐项,顺次自动下拉展开<br>
137
- 8、当用户完成该类别搜索后,搜索框默认保留该类别Tag<br>
138
-
139
- [$XView](http://localhost:3333/?entryKey=demo2&consoleOSId=console-fe-test-rc-search-doc)
140
-
141
- > 场景二:单维度单类别单选,同一类别下,用户切换子类别内容筛选条件区域的Tag直接被替换。当内容为空时点击输入框里面的叉, 可清除当前类别,回到初始状态。场景三的已选值在基础搜索组件外展示, 需引用“searchTagList”组件
142
-
143
- <br>
144
-
145
- ### 场景三:多维度多类别(eg:该功能模块下支持“网络类型”这一类别和其他同等类别的交集搜索);
104
+ const Demo1: React.FC<{}> = (props) => {
105
+
106
+ return (
107
+ <div>
108
+ <Search
109
+ defaultDataIndex="name"
110
+ options={options2}
111
+ onSearch={(value, dataIndex) => {
112
+ console.log(value, dataIndex)
113
+ }}
114
+ suggestions={[{label: '实例名称', children: ['222222']}, '33333333']}
115
+ />
116
+ <br/><br/>
117
+
118
+ <div>搜索条件成组</div>
119
+ <Search
120
+ defaultDataIndex="name"
121
+ options={options}
122
+ onSearch={(value, dataIndex) => {
123
+ console.log(value, dataIndex)
124
+ }}
125
+ suggestions={[{label: '实例名称', children: ['222222']}, '33333333']}
126
+ />
127
+ </div>
128
+ );
129
+ };
130
+
131
+ export default Demo1;
132
+
133
+ ```
146
134
 
147
- 1、多维度单类别单选,同一类别下,用户切换子类别内容<br>
148
- 2、筛选条件区域的Tag直接被替换;用户选择不同类别会<br>
149
- 3、生成新的筛选Tag出现在筛选区<br>
135
+ ## Demo
150
136
 
151
- [$XView](http://localhost:3333/?entryKey=demo3&consoleOSId=console-fe-test-rc-search-doc)
152
137
 
153
- > 场景三的已选值在基础搜索组件外展示, 需引用“searchTagList”组件
138
+ [$XView](https://xconsole.aliyun-inc.com/demo-playground?consoleOSId=console-fe-test-rc-search-doc&servePath=https%3A%2F%2Fopensource-microapp.oss-cn-hangzhou.aliyuncs.com%2Fapp%2Fbreezr-docs%2Fconsole-fe-test-rc-search-doc%2F-latest%2F&entryKey=demo1 )
154
139
 
155
140
  <br>
156
141
 
157
- ### 无默认分类, 默认多类别搜索;
158
-
159
- 1、当开发者没有指定默认类别且用户没有选择类别的时候;<br>
160
- 2、模糊搜索的回调函数将使用onSuggestNoDataIndex,返回<br>
161
- 3、开发者可返回多组类别的模糊搜索结果
162
- [$XView](http://localhost:3333/?entryKey=demo4&consoleOSId=console-fe-test-rc-search-doc)
163
-
164
-
165
142
  ## API
166
143
 
167
- ## rc-search
144
+ ### rc-search
168
145
 
169
146
  基础搜索组件的参数
170
- [$XView](http://localhost:3333/?entryKey=types%2FIRcSearchProps&consoleOSId=console-fe-test-rc-search-doc)
147
+ [$XView](https://xconsole.aliyun-inc.com/demo-playground?servePath=https%3A%2F%2Fopensource-microapp.oss-cn-hangzhou.aliyuncs.com%2Fapp%2Fbreezr-docs%2Fconsole-fe-test-rc-search-doc%2F-latest%2F&consoleOSId=console-fe-test-rc-search-doc&entryKey=types%2FIRcSearchProps)
171
148
 
172
- ## options
149
+ ### options
173
150
 
174
151
  配置组件类别的options
175
152
  [$XView](http://localhost:3333/?entryKey=types%2FIRcSearchOptions&consoleOSId=console-fe-test-rc-search-doc)
153
+ ### SearchFilter
176
154
 
177
- ## tags
178
-
179
- 场景二、三, 需要与SearchTagList共同使用时的参数
180
- [$XView](http://localhost:3333/?entryKey=types%2FIRcSearchTagItemProps&consoleOSId=console-fe-test-rc-search-doc)
181
-
182
- ## SearchTagList
183
-
184
- 场景二、三, 需要与Search共同使用时的参数
185
155
  [$XView](http://localhost:3333/?entryKey=types%2FIRcSearchTagListProps&consoleOSId=console-fe-test-rc-search-doc)
186
156
 
157
+ ## IRcSearchTagItemProps
158
+
159
+ [$XView](http://localhost:3333/?entryKey=types%2FIRcSearchTagItemProps&consoleOSId=console-fe-test-rc-search-doc)
@@ -1,39 +1,64 @@
1
1
  /**
2
- * @title 场景一
3
- * @describe 场景一:single-single:单维度单类别单选.
2
+ * @title 场景1
4
3
  */
5
4
 
6
5
  import React from "react";
7
- import { Search, IRcSearchProps } from "@alicloud/console-components-search";
8
-
9
- // interface IProps {}
10
-
11
- let options = [
6
+ import { Search, SearchFilter } from "@alicloud/console-components-search";
7
+ import { useState } from "react";
8
+
9
+ let options = [
12
10
  {
13
11
  label: '实例名称',
14
12
  dataIndex: 'name',
15
13
  template: 'input',
16
14
  templateProps: {
17
- placeholder: '默认按实例名称搜索',
15
+ placeholder: '按实例名称搜索',
18
16
  dataSource: []
19
- }
17
+ },
18
+ groupName:"test"
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
+ groupName:"test"
34
+ },
35
+ {
36
+ label: '付费类型',
37
+ dataIndex: 'pay',
38
+ template: 'multiple',
39
+ templateProps: {
40
+ placeholder: '请选择付费类型',
41
+ dataSource: [
42
+ {label: 'A', value: 'a'},
43
+ {label: 'B', value: 'b'},
44
+ {label: 'C', value: 'c'},
45
+ {label: 'D', value: 'd'},
46
+ ]
47
+ },
48
+ groupName:"test2"
20
49
  }
21
50
  ]
22
51
 
23
- let noFuzzyoptions = [
52
+ let options2 = [
24
53
  {
25
54
  label: '实例名称',
26
55
  dataIndex: 'name',
27
56
  template: 'input',
28
57
  templateProps: {
29
- placeholder: '默认按实例名称搜索',
30
- dataSource: [],
31
- fuzzyDisable: true // 不支持模糊搜索
32
- }
33
- }
34
- ]
35
-
36
- let options2 = [
58
+ placeholder: '按实例名称搜索',
59
+ dataSource: []
60
+ },
61
+ },
37
62
  {
38
63
  label: '网络类型',
39
64
  dataIndex: 'type',
@@ -46,86 +71,71 @@ let options2 = [
46
71
  {label: 'C', value: 'c'},
47
72
  {label: 'D', value: 'd'},
48
73
  ]
49
- }
74
+ },
75
+ },
76
+ {
77
+ label: '付费类型',
78
+ dataIndex: 'pay',
79
+ template: 'multiple',
80
+ templateProps: {
81
+ placeholder: '请选择付费类型',
82
+ dataSource: [
83
+ {label: 'A', value: 'a'},
84
+ {label: 'B', value: 'b'},
85
+ {label: 'C', value: 'c'},
86
+ {label: 'D', value: 'd'},
87
+ ]
88
+ },
50
89
  }
51
90
  ]
52
91
 
53
- const Demo1: React.FC<IRcSearchProps> = (props) => {
54
-
55
- async function onSuggestAsync (value: string, dataIndex: string) {
56
- if (!value) {
57
- return [];
58
- }
59
- return [
60
- // {label: value, value: `${dataIndex}-${value}`}
61
- `${value}-1`,
62
- `${value}-2`,
63
- `${value}-3`,
64
- `${value}-4`,
65
- `${value}-5`,
66
- ]
67
- }
68
- function onSuggestPromise (value: string, dataIndex: string) {
69
- let rtList = [];
70
- if (!value) {
71
- rtList = [];
72
- }
73
- rtList = [
74
- // {label: value, value: `${dataIndex}-${value}`}
75
- `${value}-1`,
76
- `${value}-2`,
77
- `${value}-3`,
78
- `${value}-4`,
79
- `${value}-5`,
80
- ]
81
- return Promise.resolve(rtList)
82
- }
83
-
84
- async function onChange1 (changedFileds:any, allFileds:any) {
85
- console.log(`changedFileds:`, changedFileds, 'allFileds', allFileds)
86
- }
87
92
 
88
- async function onSearch (allFileds:any) {
89
- alert(JSON.stringify(allFileds))
90
- }
91
-
92
- return (
93
+ const Demo1: React.FC<{}> = (props) => {
94
+ const [filters, setFilters] = useState<any>([]);
95
+ console.log(filters)
96
+ return (
93
97
  <div>
94
- 搜索类型:(async 调用)<br />
95
98
  <Search
96
- simple
97
- options={options}
98
- onSuggest={onSuggestAsync}
99
- onSearch={onSearch}
99
+ defaultDataIndex="name"
100
+ options={options2}
101
+ onSearch={(value, dataIndex) => {
102
+ console.log(value, dataIndex)
103
+ }}
104
+ suggestions={[{label: '实例名称', children: ['222222']}, '33333333']}
100
105
  />
101
- <br /><br /><br />
102
- 搜索类型:(promise调用)<br />
106
+ <br/><br/>
107
+
108
+ <div>搜索条件成组</div>
103
109
  <Search
104
- simple
105
- resourceType="demo"
110
+ defaultDataIndex="name"
106
111
  options={options}
107
- onSuggest={onSuggestPromise}
108
- onSearch={onSearch}
109
- />
110
- <br /><br /><br />
111
- 搜索类型:(不支持模糊搜索 fuzzyDisable: true)<br />
112
- <Search
113
- simple
114
- options={noFuzzyoptions}
115
- onSuggest={onSuggestPromise}
116
- onSearch={onSearch}
112
+ onSearch={(value, dataIndex, extra) => {
113
+ //@ts-ignore
114
+ setFilters([...filters, extra])
115
+ }}
116
+ suggestions={[{label: '实例名称', children: ['222222']}, '33333333']}
117
117
  />
118
- <br /><br /><br />
119
- 单选类型:<br />
120
- <Search
121
- simple
122
- options={options2}
123
- onSearch={onSearch}
124
- />
125
- <br />
126
- 单维度单类别,暂不支持多选
127
- </div>
128
- );
129
- };
130
118
 
131
- export default Demo1;
119
+ <div style={{marginTop: 8}}>
120
+ <SearchFilter
121
+ dataSource={filters}
122
+ onChange={(deletedFilter, list)=> {
123
+ setFilters(list)
124
+ }}
125
+ />
126
+ </div>
127
+
128
+ <div style={{marginTop: 8}}>
129
+ <SearchFilter
130
+ dataSource={[
131
+ {label: '实例名称', value: 'xxxxxx', dataIndex: 'name'},
132
+ {label: '实例名称', value: {tagKey: 'xxxx', tagValue: 'xxxxxx'}, dataIndex: 'name'}
133
+ ]}
134
+ />
135
+ </div>
136
+ </div>
137
+ );
138
+ };
139
+
140
+ export default Demo1;
141
+