@kne/react-filter 0.1.15 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,236 @@
1
+
2
+ # react-filter
3
+
4
+
5
+ ### 描述
6
+
7
+ 筛选器
8
+
9
+
10
+ ### 安装
11
+
12
+ ```shell
13
+ npm i --save @kne/react-filter
14
+ ```
15
+
16
+
17
+ ### 概述
18
+
19
+ 用户列表数据的筛选
20
+
21
+ * 默认提供了常见的几种筛选项
22
+
23
+ * 支持自定义筛选项类型扩展
24
+
25
+
26
+ ### 示例(全屏)
27
+
28
+ #### 示例代码
29
+
30
+ - 基础示例
31
+ - 展示一个筛选器的普通模式
32
+ - reactFilter(@kne/react-filter),_(lodash)
33
+
34
+ ```jsx
35
+ const {useState} = React;
36
+ const {default: Filter, createExtraButton} = reactFilter;
37
+
38
+ const {City, List, Range, Text, Selector, Check} = Filter.type;
39
+ const {isNumber} = _;
40
+
41
+ const BaseExample = () => {
42
+ const [value, setValue] = useState({});
43
+ console.log(value);
44
+ return <Filter value={value} onChange={(value) => {
45
+ setValue(value);
46
+ }} more={[
47
+ <Text label="测试字段" name="test1"/>,
48
+ <Text label="测试字段2" name="test2"/>,
49
+ <Range label="测试字段3" name="test3"/>,
50
+ <Selector label="测试字段4" name="test4"
51
+ options={[{
52
+ label: "英语", value: "en"
53
+ }, {
54
+ label: "日语", value: "jap"
55
+ }, {
56
+ label: "法语", value: "fac"
57
+ }]}/>
58
+ ]} list={[[<City label="目前城市" name="currentCity" size={5}/>], [<List label="学历" name="degree" size={1}>
59
+ <List.Item value="0" label="初中"/>
60
+ <List.Item value="1" label="高中"/>
61
+ <List.Item value="2" label="大学专科"/>
62
+ <List.Item value="3" label="大学本科"/>
63
+ </List>], [<List label="求职意向" name="yixiang" size={1}
64
+ options={[{label: "暂时不找工作", value: 0}, {label: "在职看机会", value: 1}, {
65
+ label: "离职正在找工作", value: 2
66
+ }]}/>], [<Range label="年龄" name="age" template={(value) => {
67
+ if (!value || value.length === 0) {
68
+ return "";
69
+ }
70
+ if (!isNumber(value[0]) && isNumber(value[1])) {
71
+ return `${value[1]}岁以下`;
72
+ }
73
+ if (!isNumber(value[1]) && isNumber(value[0])) {
74
+ return `${value[0]}岁以上`;
75
+ }
76
+ return `${value[0]}-${value[1]}岁`;
77
+ }}/>, <Text label="行业" name="inter"/>, <Selector label="语言" name="lang"
78
+ options={[{
79
+ label: "英语", value: "en"
80
+ }, {
81
+ label: "日语", value: "jap"
82
+ }, {
83
+ label: "法语", value: "fac"
84
+ }]}/>], [<List size={1}
85
+ label="薪资范围"
86
+ name="sarl"
87
+ options={[{
88
+ label: "10k以下", value: [null, 10]
89
+ }, {
90
+ label: "10k-20k", value: [10, 20]
91
+ }, {
92
+ label: "20k以上", value: [20, null]
93
+ }]}
94
+ more={createExtraButton({
95
+ type: "range", template: (value) => {
96
+ if (!value || value.length === 0) {
97
+ return "";
98
+ }
99
+ if (!isNumber(value[0]) && isNumber(value[1])) {
100
+ return `${value[1]}k以下`;
101
+ }
102
+ if (!isNumber(value[1]) && isNumber(value[0])) {
103
+ return `${value[0]}k以上`;
104
+ }
105
+ return `${value[0]}k-${value[1]}k`;
106
+ }
107
+ })}/>, <Check label="海外经历" name="out"/>]]}/>;
108
+ };
109
+
110
+ render(<BaseExample/>);
111
+
112
+ ```
113
+
114
+ - 简单示例
115
+ - 展示一个简单的筛选项,一般放在列表页title extra位置
116
+ - reactFilter(@kne/react-filter),undefined(@kne/react-filter/dist/index.css),space(antd/lib/space)
117
+
118
+ ```jsx
119
+ const {useState} = React;
120
+ const {default: Filter} = reactFilter.default;
121
+ const {default: Space} = space;
122
+
123
+ const {RadioList, Selector, Text, CheckboxList} = Filter.type;
124
+
125
+ const Example = () => {
126
+ const [value, setValue] = useState([]);
127
+ const [radioValue, setRadioValue] = useState({});
128
+ const [checkboxValue, setCheckboxValue] = useState({});
129
+ console.log(value, radioValue, checkboxValue);
130
+ return <Space direction="vertical">
131
+ <Filter value={value} onChange={setValue} labelHidden itemLabelHidden list={[[
132
+ <Text name="positionName" label="职位名称"/>,
133
+ <Selector name="type" options={[
134
+ {
135
+ label: '全职',
136
+ value: 1
137
+ }, {
138
+ label: '兼职',
139
+ value: 2
140
+ }
141
+ ]} label="职位类型"/>
142
+ ]]}/>
143
+ <Filter value={radioValue} onChange={setRadioValue} labelHidden list={[[
144
+ <RadioList name="state" label="客户状态" options={[
145
+ {
146
+ label: "全部状态",
147
+ value: 0
148
+ }, {
149
+ label: "待开发",
150
+ value: 1
151
+ }, {
152
+ label: "开发中",
153
+ value: 2
154
+ }, {
155
+ label: "已签约",
156
+ value: 3
157
+ }, {
158
+ label: "已终止",
159
+ value: 4
160
+ }
161
+ ]}/>
162
+ ]]}/>
163
+ <Filter value={checkboxValue} onChange={setCheckboxValue} labelHidden list={[[
164
+ <CheckboxList name="state" label="客户状态" options={[
165
+ {
166
+ label: "全部状态",
167
+ value: 0
168
+ }, {
169
+ label: "待开发",
170
+ value: 1
171
+ }, {
172
+ label: "开发中",
173
+ value: 2
174
+ }, {
175
+ label: "已签约",
176
+ value: 3
177
+ }, {
178
+ label: "已终止",
179
+ value: 4
180
+ }
181
+ ]}/>
182
+ ]]}/>
183
+ </Space>
184
+ };
185
+
186
+ render(<Example/>);
187
+
188
+ ```
189
+
190
+
191
+ ### API
192
+
193
+ | 属性名 | 说明 | 类型 | 默认值 |
194
+ |-----------|------------------------------------------------------------------------------|----------|-------|
195
+ | value | 筛选器的值,该组件为一个受控组件 | object | - |
196
+ | onChange | 筛选器的值发生改变的时候调用的函数 | function | - |
197
+ | list | 筛选器的选项,为一个二维数组,二维数组中的每一个数组为一行,内部数组的每一项为一个筛选选项,筛选选项为Filter.type中的一项或者是自行扩展的选项 | array | [] |
198
+ | more | 筛选项更多选项,为一个一维数组,数组中的每一项为一个筛选项,和list不同的是该筛选项默认为收起状态|array| [] |
199
+ | moreLabel | 更多选项的label|string| 更多 |
200
+ |moreTrigger|更多选项的触发方式,默认为hover触发,页可以设置为click|string| hover |
201
+
202
+ #### Filter.type
203
+
204
+ City(城市选择), List(列表选择,可以多选或者单选), Range(数据范围), Text(文字输入), Selector(下拉选项), Check(单项选择), RadioList(单选列表),
205
+ CheckboxList(多选列表)
206
+
207
+ 公共参数
208
+
209
+ | 属性名 | 说明 | 类型 | 默认值 |
210
+ |-------|--------------------------------------------|--------|-----|
211
+ | label | 筛选项名称 | string | - |
212
+ | name | 筛选项的key | string | - |
213
+ | placeholder| 筛选项的placeholder(如果可以显示的话),如果不传值通常会去label的值 | string |-|
214
+
215
+ ##### Range
216
+
217
+ | 属性名 | 说明 | 类型 | 默认值 |
218
+ |-------|--------------------------------------------------------------|----------|-----|
219
+ | template | 将一组数据范围显示成一段用户可阅读的问题的模版,参数为筛选项的值,要求返回一个描述的字符串 | function | - |
220
+ |placeholder| 当为字符串时前后两个输入框显示同样内容,当为一个数组时,第一个输入框显示数组的第一个值,第二个输入框显示为数组的第二个值 | string&#124;array | - |
221
+
222
+ #### List
223
+
224
+ | 属性名 | 说明 | 类型 | 默认值 |
225
+ |----------|-------------------------|-----------|-----|
226
+ | children | 筛选项的每一项的值,必须为 List.Item | List.Item | - |
227
+
228
+ #### List.Item
229
+
230
+ | 属性名 | 说明 | 类型 | 默认值 |
231
+ |-------|--------|--------|-----|
232
+ | value | 筛选项的值 | - | - |
233
+ | label | 筛选项显示项 | string | - |
234
+
235
+ 其他参数参考对应内部组件的参数
236
+