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