@kne/react-filter 0.1.20 → 0.1.23
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 +140 -14
- package/dist/index.css +7 -2
- package/dist/index.css.map +1 -1
- package/dist/index.js +158 -60
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +112 -29
- package/dist/index.modern.js.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -29,13 +29,15 @@ npm i --save @kne/react-filter
|
|
|
29
29
|
|
|
30
30
|
- 基础示例
|
|
31
31
|
- 展示一个筛选器的普通模式
|
|
32
|
-
- reactFilter(@kne/react-filter),(@kne/react-filter/dist/index.css),_(lodash)
|
|
32
|
+
- reactFilter(@kne/react-filter),(@kne/react-filter/dist/index.css),message(antd/lib/message),_(lodash)
|
|
33
33
|
|
|
34
34
|
```jsx
|
|
35
35
|
const {useState} = React;
|
|
36
36
|
const {default: Filter, createExtraButton} = reactFilter;
|
|
37
|
+
const {default: antdMessage} = message;
|
|
38
|
+
|
|
39
|
+
const {City, List, Range, Text, Selector, Check, DateTime} = Filter.type;
|
|
37
40
|
|
|
38
|
-
const {City, List, Range, Text, Selector, Check} = Filter.type;
|
|
39
41
|
const {isNumber} = _;
|
|
40
42
|
|
|
41
43
|
const BaseExample = () => {
|
|
@@ -45,7 +47,11 @@ const BaseExample = () => {
|
|
|
45
47
|
setValue(value);
|
|
46
48
|
}} more={[
|
|
47
49
|
<Text label="测试字段" name="test1"/>,
|
|
48
|
-
<Text label="测试字段2" name="test2"
|
|
50
|
+
<Text label="测试字段2" name="test2" onBeforeSearch={(value) => {
|
|
51
|
+
antdMessage.error(`提交被拦截,输入值${value}`);
|
|
52
|
+
return false;
|
|
53
|
+
}}/>,
|
|
54
|
+
<Text.Number label="测试字段7" name="test7"/>,
|
|
49
55
|
<Range label="测试字段3" name="test3"/>,
|
|
50
56
|
<Selector label="测试字段4" name="test4"
|
|
51
57
|
options={[{
|
|
@@ -54,7 +60,9 @@ const BaseExample = () => {
|
|
|
54
60
|
label: "日语", value: "jap"
|
|
55
61
|
}, {
|
|
56
62
|
label: "法语", value: "fac"
|
|
57
|
-
}]}
|
|
63
|
+
}]}/>,
|
|
64
|
+
<DateTime label="测试字段5" name="test5" showTime/>,
|
|
65
|
+
<DateTime.Range label="测试字段6" name="test6"/>
|
|
58
66
|
]} list={[[<City label="目前城市" name="currentCity" size={5}/>], [<List label="学历" name="degree" size={1}>
|
|
59
67
|
<List.Item value="0" label="初中"/>
|
|
60
68
|
<List.Item value="1" label="高中"/>
|
|
@@ -187,23 +195,135 @@ render(<Example/>);
|
|
|
187
195
|
|
|
188
196
|
```
|
|
189
197
|
|
|
198
|
+
- 扩展示例
|
|
199
|
+
- 展示扩展筛选项,自定义筛选项
|
|
200
|
+
- reactFilter(@kne/react-filter),modal(antd/lib/modal),input(antd/lib/input),space(antd/lib/space),datePicker(antd/lib/date-picker),monment(moment),_(lodash),(@kne/react-filter/dist/index.css)
|
|
201
|
+
|
|
202
|
+
```jsx
|
|
203
|
+
const {default: ReactFilter, useFilterContext, FilterItem, withFilterItem, SearchButton} = reactFilter;
|
|
204
|
+
const {default: Modal} = modal;
|
|
205
|
+
const {default: Input} = input;
|
|
206
|
+
const {default: Space} = space;
|
|
207
|
+
const {default: DatePicker} = datePicker;
|
|
208
|
+
const {useRef, useState} = React;
|
|
209
|
+
const {get} = _;
|
|
210
|
+
|
|
211
|
+
const MyFilter = (props) => {
|
|
212
|
+
const ref = useRef();
|
|
213
|
+
const {value, onChange} = useFilterContext();
|
|
214
|
+
return <FilterItem {...props} onClick={() => {
|
|
215
|
+
Modal.confirm({
|
|
216
|
+
icon: null,
|
|
217
|
+
content: <Input ref={ref} defaultValue={get(value[props.name], 'value')}/>,
|
|
218
|
+
onOk: () => {
|
|
219
|
+
const value = ref.current.input.value;
|
|
220
|
+
onChange(props.name, {
|
|
221
|
+
label: value,
|
|
222
|
+
value
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
console.log(value);
|
|
227
|
+
}}/>;
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const DateRange = withFilterItem(({
|
|
231
|
+
name,
|
|
232
|
+
size,
|
|
233
|
+
isMore,
|
|
234
|
+
defaultActive,
|
|
235
|
+
onBlur,
|
|
236
|
+
onSearch,
|
|
237
|
+
onBeforeSearch,
|
|
238
|
+
startProps,
|
|
239
|
+
endProps,
|
|
240
|
+
placeholder
|
|
241
|
+
}) => {
|
|
242
|
+
const ref = useRef();
|
|
243
|
+
|
|
244
|
+
const sort = (a, b) => {
|
|
245
|
+
if (a && b) {
|
|
246
|
+
return new Date(a) - new Date(b);
|
|
247
|
+
}
|
|
248
|
+
return 0;
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
return <SearchButton size={size} template={(value) => {
|
|
252
|
+
if (!value[0] && value[1]) {
|
|
253
|
+
return `${value[1]}之前`;
|
|
254
|
+
}
|
|
255
|
+
if (!value[1] && value[0]) {
|
|
256
|
+
return `${value[0]}之后`;
|
|
257
|
+
}
|
|
258
|
+
return value.join('~');
|
|
259
|
+
}} isMore={isMore} onBlur={onBlur} defaultActive={defaultActive}
|
|
260
|
+
name={name}
|
|
261
|
+
onSearch={onSearch}
|
|
262
|
+
onBeforeSearch={onBeforeSearch}>
|
|
263
|
+
{({value, setValue, setActive}) => {
|
|
264
|
+
return <div ref={ref}>
|
|
265
|
+
<Space>
|
|
266
|
+
<DatePicker size="small" {...startProps} getPopupContainer={() => ref.current}
|
|
267
|
+
value={get(value, 0) && monment(get(value, 0))}
|
|
268
|
+
onChange={(inputValue) => {
|
|
269
|
+
const target = [inputValue && inputValue.format('YYYY-MM-DD HH:mm:ss'), get(value, 1)];
|
|
270
|
+
setValue(target.sort(sort));
|
|
271
|
+
}} onFocus={() => {
|
|
272
|
+
setActive(true);
|
|
273
|
+
}} placeholder={Array.isArray(placeholder) ? placeholder[0] : (placeholder || "请输入")}/>
|
|
274
|
+
~
|
|
275
|
+
<DatePicker size="small" {...endProps} getPopupContainer={() => ref.current}
|
|
276
|
+
value={get(value, 1) && monment(get(value, 1))}
|
|
277
|
+
onChange={(inputValue) => {
|
|
278
|
+
const target = [get(value, 0), inputValue && inputValue.format('YYYY-MM-DD HH:mm:ss')];
|
|
279
|
+
setValue(target.sort(sort));
|
|
280
|
+
}} onFocus={() => {
|
|
281
|
+
setActive(true);
|
|
282
|
+
}} placeholder={Array.isArray(placeholder) ? placeholder[0] : (placeholder || "请输入")}/>
|
|
283
|
+
</Space>
|
|
284
|
+
</div>
|
|
285
|
+
}}
|
|
286
|
+
</SearchButton>
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
const Example = () => {
|
|
290
|
+
const [value, setValue] = useState({});
|
|
291
|
+
return <ReactFilter value={value} onChange={setValue} moreTrigger="click"
|
|
292
|
+
more={[<MyFilter name="test1" label="测试"/>, <DateRange name="test2" label="测试2"/>]}/>
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
render(<Example/>);
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
|
|
190
299
|
|
|
191
300
|
### API
|
|
192
301
|
|
|
193
|
-
| 属性名
|
|
194
|
-
|
|
195
|
-
| value
|
|
196
|
-
| onChange
|
|
197
|
-
| list
|
|
198
|
-
| more
|
|
199
|
-
| moreLabel
|
|
200
|
-
|moreTrigger
|
|
302
|
+
| 属性名 | 说明 | 类型 | 默认值 |
|
|
303
|
+
|-----------------|------------------------------------------------------------------------------|----------|-------|
|
|
304
|
+
| value | 筛选器的值,该组件为一个受控组件 | object | - |
|
|
305
|
+
| onChange | 筛选器的值发生改变的时候调用的函数 | function | - |
|
|
306
|
+
| list | 筛选器的选项,为一个二维数组,二维数组中的每一个数组为一行,内部数组的每一项为一个筛选选项,筛选选项为Filter.type中的一项或者是自行扩展的选项 | array | [] |
|
|
307
|
+
| more | 筛选项更多选项,为一个一维数组,数组中的每一项为一个筛选项,和list不同的是该筛选项默认为收起状态 | array | [] |
|
|
308
|
+
| moreLabel | 更多选项的label | string | 更多 |
|
|
309
|
+
| moreTrigger | 更多选项的触发方式,默认为hover触发,页可以设置为click | string | hover |
|
|
310
|
+
| label | 筛选器的label | string |筛选项|
|
|
311
|
+
| labelHidden | 筛选器的label及筛选内容行是否隐藏 | boolean | false |
|
|
312
|
+
| itemLabelHidden | 筛选项的label是否隐藏 | boolean |false|
|
|
313
|
+
| unfoldText | 展开提示文字 |string| 展开 |
|
|
314
|
+
| foldText | 收起提示文字 |string|收起|
|
|
315
|
+
|displayLine| 默认展开行数 |number|2|
|
|
316
|
+
|defaultDisplay| 默认是否展开 |boolean|false|
|
|
317
|
+
|isExtra| 是否将list切分成收起项和默认展开项 |boolean|true|
|
|
318
|
+
|extra| 额外内容 |boolean|null|
|
|
201
319
|
|
|
202
320
|
#### Filter.type
|
|
203
321
|
|
|
204
|
-
City(城市选择), List(列表选择,可以多选或者单选), Range(数据范围), Text(文字输入), Selector(下拉选项), Check(单项选择), RadioList(单选列表),
|
|
322
|
+
City(城市选择), List(列表选择,可以多选或者单选), Range(数据范围), Text(文字输入) Text.Number, Selector(下拉选项), Check(单项选择), RadioList(单选列表),
|
|
205
323
|
CheckboxList(多选列表)
|
|
206
324
|
|
|
325
|
+
DateTime(时间选择),DateTime.Time DateTime.Range DateTime.Week DateTime.Month DateTime.Year
|
|
326
|
+
|
|
207
327
|
公共参数
|
|
208
328
|
|
|
209
329
|
| 属性名 | 说明 | 类型 | 默认值 |
|
|
@@ -212,7 +332,13 @@ CheckboxList(多选列表)
|
|
|
212
332
|
| name | 筛选项的key | string | - |
|
|
213
333
|
| placeholder| 筛选项的placeholder(如果可以显示的话),如果不传值通常会去label的值 | string |-|
|
|
214
334
|
|
|
215
|
-
|
|
335
|
+
#### Text|Text.Number|Range
|
|
336
|
+
|
|
337
|
+
| 属性名 | 说明 | 类型 | 默认值 |
|
|
338
|
+
|-------|-------------------------------------------------------|--------|-----|
|
|
339
|
+
|onBeforeSearch| 带有确定按钮的筛选项,在点击确定后会调用该方法,如果该方法返回为false,则该选项的值不会被提交给筛选项 | function | - |
|
|
340
|
+
|
|
341
|
+
##### Range|DateTime.Range
|
|
216
342
|
|
|
217
343
|
| 属性名 | 说明 | 类型 | 默认值 |
|
|
218
344
|
|-------|--------------------------------------------------------------|----------|-----|
|
package/dist/index.css
CHANGED
|
@@ -10,12 +10,17 @@
|
|
|
10
10
|
.react-filter-item {
|
|
11
11
|
white-space: nowrap;
|
|
12
12
|
line-height: 32px; }
|
|
13
|
-
.react-filter-item .ant-input, .react-filter-item .ant-select {
|
|
13
|
+
.react-filter-item .ant-input, .react-filter-item .ant-select, .react-filter-item .ant-input-number {
|
|
14
14
|
min-width: 150px; }
|
|
15
|
+
.react-filter-item .react-filter-range .ant-input-number {
|
|
16
|
+
min-width: auto; }
|
|
15
17
|
|
|
16
|
-
.react-filter-item-popover .ant-input, .react-filter-item-popover .ant-select {
|
|
18
|
+
.react-filter-item-popover .ant-input, .react-filter-item-popover .ant-select, .react-filter-item-popover .ant-input-number {
|
|
17
19
|
min-width: 150px; }
|
|
18
20
|
|
|
21
|
+
.react-filter-item-popover .react-filter-range .ant-input-number {
|
|
22
|
+
min-width: auto; }
|
|
23
|
+
|
|
19
24
|
.react-filter-item-label {
|
|
20
25
|
font-size: 14px; }
|
|
21
26
|
.react-filter-item-label.is-more {
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.scss"],"names":[],"mappings":"AAAA;EACE,oBAAoB,EAAE;;AAExB;EACE,gBAAgB,EAAE;;AAEpB;EACE,eAAe,EAAE;;AAEnB;EACE,mBAAmB;EACnB,iBAAiB,EAAE;EACnB;IACE,gBAAgB,EAAE;;
|
|
1
|
+
{"version":3,"sources":["index.scss"],"names":[],"mappings":"AAAA;EACE,oBAAoB,EAAE;;AAExB;EACE,gBAAgB,EAAE;;AAEpB;EACE,eAAe,EAAE;;AAEnB;EACE,mBAAmB;EACnB,iBAAiB,EAAE;EACnB;IACE,gBAAgB,EAAE;EACpB;IACE,eAAe,EAAE;;AAErB;EACE,gBAAgB,EAAE;;AAEpB;EACE,eAAe,EAAE;;AAEnB;EACE,eAAe,EAAE;EACjB;IACE,eAAe,EAAE;;AAErB;EACE,aAAa;EACb,mBAAmB,EAAE;;AAEvB;EACE,kBAAkB,EAAE;EACpB;IACE,kBAAkB,EAAE;EACtB;IACE,WAAW;IACX,cAAc;IACd,kBAAkB;IAClB,WAAW;IACX,YAAY;IACZ,oBAAoB;IACpB,kBAAkB;IAClB,yBAAyB;IACzB,uBAAuB;IACvB,gCAAgC;IAChC,8CAA8C,EAAE;EAClD;IACE,UAAU,EAAE;IACZ;MACE,UAAU,EAAE;IACd;MACE,oBAAoB;MACpB,+CAA+C;MAC/C,mBAAmB,EAAE;;AAE3B;EACE,gBAAgB,EAAE;;AAEpB;EACE,kBAAkB;EAClB,QAAQ;EACR,YAAY;EACZ,gCAAgC,EAAE;;AAEpC;EACE,iBAAiB,EAAE;;AAErB;EACE,WAAW,EAAE","file":"index.css","sourcesContent":[".react-filter-inner {\n padding-right: 116px; }\n\n.react-filter-divider {\n margin: 5px auto; }\n\n.react-filter-line {\n min-width: 100%; }\n\n.react-filter-item {\n white-space: nowrap;\n line-height: 32px; }\n .react-filter-item .ant-input, .react-filter-item .ant-select, .react-filter-item .ant-input-number {\n min-width: 150px; }\n .react-filter-item .react-filter-range .ant-input-number {\n min-width: auto; }\n\n.react-filter-item-popover .ant-input, .react-filter-item-popover .ant-select, .react-filter-item-popover .ant-input-number {\n min-width: 150px; }\n\n.react-filter-item-popover .react-filter-range .ant-input-number {\n min-width: auto; }\n\n.react-filter-item-label {\n font-size: 14px; }\n .react-filter-item-label.is-more {\n cursor: pointer; }\n\n.react-filter-item-children {\n display: flex;\n align-items: center; }\n\n.react-filter-search-button {\n position: relative; }\n .react-filter-search-button .inner {\n position: relative; }\n .react-filter-search-button:before {\n content: '';\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n pointer-events: none;\n border-radius: 3px;\n padding: 4px 4px 4px 60px;\n box-sizing: content-box;\n transform: translate(-3px, -3px);\n transition: box-shadow 300ms, background 300ms; }\n .react-filter-search-button.is-active {\n z-index: 1; }\n .react-filter-search-button.is-active .inner {\n z-index: 1; }\n .react-filter-search-button.is-active:before {\n pointer-events: auto;\n box-shadow: 2px 3px 10px 4px rgba(0, 0, 0, 0.2);\n background: #FFFFFF; }\n\n.react-filter-search-confirm.is-more {\n margin-left: 8px; }\n\n.react-filter-search-confirm:not(.is-more) {\n position: absolute;\n top: 50%;\n right: -10px;\n transform: translate(100%, -50%); }\n\n.react-filter-switch-btn {\n margin-top: -32px; }\n\n.react-filter-selected {\n width: 100%; }\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
var React = require('react');
|
|
2
2
|
var antd = require('antd');
|
|
3
|
+
var useEvent = require('@kne/use-event');
|
|
3
4
|
var classnames = require('classnames');
|
|
4
5
|
var reactCitySelect = require('@kne/react-city-select');
|
|
5
6
|
var lodash = require('lodash');
|
|
6
7
|
var useClickOutSide = require('@kne/use-click-outside');
|
|
8
|
+
var moment = require('moment');
|
|
7
9
|
|
|
8
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
11
|
|
|
10
12
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
13
|
+
var useEvent__default = /*#__PURE__*/_interopDefaultLegacy(useEvent);
|
|
11
14
|
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
12
15
|
var useClickOutSide__default = /*#__PURE__*/_interopDefaultLegacy(useClickOutSide);
|
|
16
|
+
var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
|
|
13
17
|
|
|
14
18
|
var context$1 = React.createContext({});
|
|
15
19
|
var Provider$1 = context$1.Provider;
|
|
@@ -49,7 +53,26 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
49
53
|
return target;
|
|
50
54
|
}
|
|
51
55
|
|
|
52
|
-
var _excluded$
|
|
56
|
+
var _excluded$9 = ["label", "labelHidden", "isMore", "moreTrigger"];
|
|
57
|
+
|
|
58
|
+
var PopContent = function PopContent(props) {
|
|
59
|
+
var _useState = React.useState(false),
|
|
60
|
+
visible = _useState[0],
|
|
61
|
+
setVisible = _useState[1];
|
|
62
|
+
|
|
63
|
+
var _useConsumer = useConsumer(),
|
|
64
|
+
emitter = _useConsumer.emitter;
|
|
65
|
+
|
|
66
|
+
React.useEffect(function () {
|
|
67
|
+
emitter.addListener('change', function () {
|
|
68
|
+
setVisible(false);
|
|
69
|
+
});
|
|
70
|
+
}, []);
|
|
71
|
+
return /*#__PURE__*/React__default["default"].createElement(antd.Popover, _extends({}, props, {
|
|
72
|
+
visible: visible,
|
|
73
|
+
onVisibleChange: setVisible
|
|
74
|
+
}));
|
|
75
|
+
};
|
|
53
76
|
|
|
54
77
|
var FilterItem = function FilterItem(_ref) {
|
|
55
78
|
var className = _ref.className,
|
|
@@ -57,17 +80,23 @@ var FilterItem = function FilterItem(_ref) {
|
|
|
57
80
|
labelHidden = _ref.labelHidden,
|
|
58
81
|
isMore = _ref.isMore,
|
|
59
82
|
moreTrigger = _ref.moreTrigger,
|
|
83
|
+
onClick = _ref.onClick,
|
|
60
84
|
children = _ref.children;
|
|
61
85
|
|
|
62
86
|
if (isMore) {
|
|
63
87
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
64
88
|
className: classnames__default["default"]("react-filter-item-label", "is-more", className)
|
|
65
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
89
|
+
}, children ? /*#__PURE__*/React__default["default"].createElement(PopContent, {
|
|
66
90
|
content: children,
|
|
67
91
|
trigger: moreTrigger,
|
|
68
92
|
placement: "bottom",
|
|
69
93
|
overlayClassName: "react-filter-item-popover"
|
|
70
|
-
}, /*#__PURE__*/React__default["default"].createElement("a",
|
|
94
|
+
}, /*#__PURE__*/React__default["default"].createElement("a", {
|
|
95
|
+
className: "react-filter-item-more"
|
|
96
|
+
}, label)) : /*#__PURE__*/React__default["default"].createElement("a", {
|
|
97
|
+
className: "react-filter-item-more",
|
|
98
|
+
onClick: onClick
|
|
99
|
+
}, label));
|
|
71
100
|
}
|
|
72
101
|
|
|
73
102
|
return /*#__PURE__*/React__default["default"].createElement(antd.Space, {
|
|
@@ -85,7 +114,7 @@ var withFilterItem = function withFilterItem(WrappedComponent) {
|
|
|
85
114
|
labelHidden = _ref2.labelHidden,
|
|
86
115
|
isMore = _ref2.isMore,
|
|
87
116
|
moreTrigger = _ref2.moreTrigger,
|
|
88
|
-
props = _objectWithoutPropertiesLoose(_ref2, _excluded$
|
|
117
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded$9);
|
|
89
118
|
|
|
90
119
|
return /*#__PURE__*/React__default["default"].createElement(FilterItem, {
|
|
91
120
|
label: label,
|
|
@@ -99,7 +128,7 @@ var withFilterItem = function withFilterItem(WrappedComponent) {
|
|
|
99
128
|
};
|
|
100
129
|
};
|
|
101
130
|
|
|
102
|
-
var _excluded$
|
|
131
|
+
var _excluded$8 = ["value", "label"];
|
|
103
132
|
var CheckableTag = antd.Tag.CheckableTag;
|
|
104
133
|
var context = React.createContext({});
|
|
105
134
|
var Provider = context.Provider;
|
|
@@ -225,7 +254,7 @@ var List = function List(_ref) {
|
|
|
225
254
|
List.Item = function (_ref3) {
|
|
226
255
|
var value = _ref3.value,
|
|
227
256
|
label = _ref3.label,
|
|
228
|
-
props = _objectWithoutPropertiesLoose(_ref3, _excluded$
|
|
257
|
+
props = _objectWithoutPropertiesLoose(_ref3, _excluded$8);
|
|
229
258
|
|
|
230
259
|
var _useContext = React.useContext(context),
|
|
231
260
|
currentValue = _useContext.currentValue,
|
|
@@ -250,7 +279,7 @@ List.defaultProps = {
|
|
|
250
279
|
size: 2
|
|
251
280
|
};
|
|
252
281
|
|
|
253
|
-
var _excluded$
|
|
282
|
+
var _excluded$7 = ["label", "labelHidden", "name", "size", "isMore"];
|
|
254
283
|
var Item = List.Item;
|
|
255
284
|
|
|
256
285
|
var City = function City(_ref) {
|
|
@@ -258,7 +287,7 @@ var City = function City(_ref) {
|
|
|
258
287
|
labelHidden = _ref.labelHidden,
|
|
259
288
|
name = _ref.name,
|
|
260
289
|
size = _ref.size;
|
|
261
|
-
_objectWithoutPropertiesLoose(_ref, _excluded$
|
|
290
|
+
_objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
262
291
|
|
|
263
292
|
return /*#__PURE__*/React__default["default"].createElement(List, {
|
|
264
293
|
labelHidden: labelHidden,
|
|
@@ -443,6 +472,7 @@ var RangeInner = function RangeInner(_ref) {
|
|
|
443
472
|
onBlur = _ref.onBlur,
|
|
444
473
|
onSearch = _ref.onSearch,
|
|
445
474
|
_onActiveChange = _ref.onActiveChange,
|
|
475
|
+
onBeforeSearch = _ref.onBeforeSearch,
|
|
446
476
|
startProps = _ref.startProps,
|
|
447
477
|
endProps = _ref.endProps,
|
|
448
478
|
placeholder = _ref.placeholder;
|
|
@@ -463,6 +493,10 @@ var RangeInner = function RangeInner(_ref) {
|
|
|
463
493
|
return false;
|
|
464
494
|
}
|
|
465
495
|
|
|
496
|
+
if (onBeforeSearch) {
|
|
497
|
+
return onBeforeSearch(value);
|
|
498
|
+
}
|
|
499
|
+
|
|
466
500
|
return true;
|
|
467
501
|
};
|
|
468
502
|
|
|
@@ -493,7 +527,8 @@ var RangeInner = function RangeInner(_ref) {
|
|
|
493
527
|
title: error,
|
|
494
528
|
placement: "bottomRight"
|
|
495
529
|
}, /*#__PURE__*/React__default["default"].createElement(antd.Space, {
|
|
496
|
-
size: "small"
|
|
530
|
+
size: "small",
|
|
531
|
+
className: "react-filter-range"
|
|
497
532
|
}, /*#__PURE__*/React__default["default"].createElement(antd.InputNumber, _extends({
|
|
498
533
|
size: "small"
|
|
499
534
|
}, startProps, {
|
|
@@ -525,55 +560,71 @@ var RangeInner = function RangeInner(_ref) {
|
|
|
525
560
|
};
|
|
526
561
|
var Range = withFilterItem(RangeInner);
|
|
527
562
|
|
|
528
|
-
var _excluded$
|
|
529
|
-
var TextInner = function TextInner(_ref) {
|
|
530
|
-
var name = _ref.name,
|
|
531
|
-
label = _ref.label,
|
|
532
|
-
isMore = _ref.isMore,
|
|
533
|
-
template = _ref.template,
|
|
534
|
-
defaultActive = _ref.defaultActive,
|
|
535
|
-
onBlur = _ref.onBlur,
|
|
536
|
-
onSearch = _ref.onSearch,
|
|
537
|
-
_onActiveChange = _ref.onActiveChange,
|
|
538
|
-
placeholder = _ref.placeholder,
|
|
539
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
563
|
+
var _excluded$6 = ["name", "label", "isMore", "template", "defaultActive", "onBlur", "onSearch", "onBeforeSearch", "onActiveChange", "placeholder"];
|
|
540
564
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
+
var withValue$1 = function withValue(WrappedComponent, options) {
|
|
566
|
+
if (options === void 0) {
|
|
567
|
+
options = {};
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
return function (_ref) {
|
|
571
|
+
var name = _ref.name,
|
|
572
|
+
label = _ref.label,
|
|
573
|
+
isMore = _ref.isMore,
|
|
574
|
+
template = _ref.template,
|
|
575
|
+
defaultActive = _ref.defaultActive,
|
|
576
|
+
onBlur = _ref.onBlur,
|
|
577
|
+
onSearch = _ref.onSearch,
|
|
578
|
+
onBeforeSearch = _ref.onBeforeSearch,
|
|
579
|
+
_onActiveChange = _ref.onActiveChange,
|
|
580
|
+
placeholder = _ref.placeholder,
|
|
581
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
582
|
+
|
|
583
|
+
return /*#__PURE__*/React__default["default"].createElement(SearchButton, {
|
|
584
|
+
defaultActive: defaultActive,
|
|
585
|
+
isMore: isMore,
|
|
586
|
+
onBlur: onBlur,
|
|
587
|
+
template: template,
|
|
588
|
+
name: name,
|
|
589
|
+
onSearch: onSearch,
|
|
590
|
+
onBeforeSearch: onBeforeSearch,
|
|
591
|
+
onActiveChange: function onActiveChange(active) {
|
|
592
|
+
_onActiveChange && _onActiveChange(active);
|
|
565
593
|
}
|
|
566
|
-
})
|
|
567
|
-
|
|
594
|
+
}, function (_ref2) {
|
|
595
|
+
var value = _ref2.value,
|
|
596
|
+
setValue = _ref2.setValue,
|
|
597
|
+
setActive = _ref2.setActive;
|
|
598
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({
|
|
599
|
+
size: "small"
|
|
600
|
+
}, props, {
|
|
601
|
+
placeholder: placeholder || label,
|
|
602
|
+
value: value,
|
|
603
|
+
onChange: function onChange(e) {
|
|
604
|
+
setValue(options.getValue ? options.getValue(e) : e.target.value);
|
|
605
|
+
},
|
|
606
|
+
onFocus: function onFocus() {
|
|
607
|
+
setActive(true);
|
|
608
|
+
}
|
|
609
|
+
})));
|
|
610
|
+
});
|
|
611
|
+
};
|
|
568
612
|
};
|
|
569
|
-
var Text = withFilterItem(TextInner);
|
|
570
613
|
|
|
571
|
-
var
|
|
614
|
+
var TextInner = withValue$1(antd.Input);
|
|
615
|
+
var Text = withFilterItem(withValue$1(antd.Input));
|
|
616
|
+
Text.Number = withFilterItem(withValue$1(antd.InputNumber, {
|
|
617
|
+
getValue: function getValue(value) {
|
|
618
|
+
return value;
|
|
619
|
+
}
|
|
620
|
+
}));
|
|
621
|
+
|
|
622
|
+
var _excluded$5 = ["name", "label", "placeholder", "isMore"];
|
|
572
623
|
var SelectorInner = function SelectorInner(_ref) {
|
|
573
624
|
var name = _ref.name,
|
|
574
625
|
label = _ref.label,
|
|
575
626
|
placeholder = _ref.placeholder,
|
|
576
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
627
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
577
628
|
|
|
578
629
|
var _useConsumer = useConsumer(),
|
|
579
630
|
aValue = _useConsumer.value,
|
|
@@ -591,13 +642,13 @@ var SelectorInner = function SelectorInner(_ref) {
|
|
|
591
642
|
};
|
|
592
643
|
var Selector = withFilterItem(SelectorInner);
|
|
593
644
|
|
|
594
|
-
var _excluded$
|
|
645
|
+
var _excluded$4 = ["name", "label", "className", "isMore"];
|
|
595
646
|
|
|
596
647
|
var Check = function Check(_ref) {
|
|
597
648
|
var name = _ref.name,
|
|
598
649
|
label = _ref.label,
|
|
599
650
|
className = _ref.className,
|
|
600
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
651
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
601
652
|
|
|
602
653
|
var _useConsumer = useConsumer(),
|
|
603
654
|
aValue = _useConsumer.value,
|
|
@@ -617,11 +668,11 @@ var Check = function Check(_ref) {
|
|
|
617
668
|
}), label);
|
|
618
669
|
};
|
|
619
670
|
|
|
620
|
-
var _excluded$
|
|
671
|
+
var _excluded$3 = ["label", "name", "options", "isMore"];
|
|
621
672
|
var RadioList = withFilterItem(function (_ref) {
|
|
622
673
|
var name = _ref.name,
|
|
623
674
|
options = _ref.options,
|
|
624
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
675
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
625
676
|
|
|
626
677
|
var _useConsumer = useConsumer(),
|
|
627
678
|
aValue = _useConsumer.value,
|
|
@@ -641,11 +692,11 @@ var RadioList = withFilterItem(function (_ref) {
|
|
|
641
692
|
}));
|
|
642
693
|
});
|
|
643
694
|
|
|
644
|
-
var _excluded$
|
|
695
|
+
var _excluded$2 = ["label", "name", "options", "isMore"];
|
|
645
696
|
var CheckboxList = withFilterItem(function (_ref) {
|
|
646
697
|
var name = _ref.name,
|
|
647
698
|
options = _ref.options,
|
|
648
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
699
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
649
700
|
|
|
650
701
|
var _useConsumer = useConsumer(),
|
|
651
702
|
aValue = _useConsumer.value,
|
|
@@ -671,6 +722,48 @@ var CheckboxList = withFilterItem(function (_ref) {
|
|
|
671
722
|
}));
|
|
672
723
|
});
|
|
673
724
|
|
|
725
|
+
var _excluded$1 = ["name", "label", "placeholder", "template", "isMore"];
|
|
726
|
+
|
|
727
|
+
var withValue = function withValue(WrappedComponent, options) {
|
|
728
|
+
if (options === void 0) {
|
|
729
|
+
options = {};
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
return function (_ref) {
|
|
733
|
+
var name = _ref.name,
|
|
734
|
+
label = _ref.label,
|
|
735
|
+
placeholder = _ref.placeholder,
|
|
736
|
+
template = _ref.template,
|
|
737
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
738
|
+
|
|
739
|
+
var _useConsumer = useConsumer(),
|
|
740
|
+
aValue = _useConsumer.value,
|
|
741
|
+
_onChange = _useConsumer.onChange;
|
|
742
|
+
|
|
743
|
+
var currentValue = aValue[name];
|
|
744
|
+
return /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({}, props, {
|
|
745
|
+
placeholder: options.range ? placeholder || [label, label] : placeholder || label,
|
|
746
|
+
size: "small",
|
|
747
|
+
value: currentValue && moment__default["default"](currentValue),
|
|
748
|
+
onChange: function onChange(value, item) {
|
|
749
|
+
_onChange(name, {
|
|
750
|
+
label: lodash.isFunction(template) ? template(item) : options.range ? item.join('~') : item,
|
|
751
|
+
value: item
|
|
752
|
+
});
|
|
753
|
+
}
|
|
754
|
+
}));
|
|
755
|
+
};
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
var DateTime = withFilterItem(withValue(antd.DatePicker));
|
|
759
|
+
DateTime.Month = withFilterItem(withValue(antd.DatePicker.MonthPicker));
|
|
760
|
+
DateTime.Week = withFilterItem(withValue(antd.DatePicker.WeekPicker));
|
|
761
|
+
DateTime.Time = withFilterItem(withValue(antd.DatePicker.TimePicker));
|
|
762
|
+
DateTime.YearPicker = withFilterItem(withValue(antd.DatePicker.YearPicker));
|
|
763
|
+
DateTime.Range = withFilterItem(withValue(antd.DatePicker.RangePicker, {
|
|
764
|
+
range: true
|
|
765
|
+
}));
|
|
766
|
+
|
|
674
767
|
var filterNull = function filterNull(item) {
|
|
675
768
|
var target = Object.assign({}, item);
|
|
676
769
|
Object.keys(target).forEach(function (key) {
|
|
@@ -724,6 +817,7 @@ var Filter = function Filter(_ref) {
|
|
|
724
817
|
var value = React.useMemo(function () {
|
|
725
818
|
return filterNull(originValue);
|
|
726
819
|
}, [originValue]);
|
|
820
|
+
var emitter = useEvent__default["default"]();
|
|
727
821
|
|
|
728
822
|
var _useState = React.useState(defaultDisplay),
|
|
729
823
|
display = _useState[0],
|
|
@@ -750,7 +844,9 @@ var Filter = function Filter(_ref) {
|
|
|
750
844
|
var _Object$assign;
|
|
751
845
|
|
|
752
846
|
var target = Object.assign({}, value, (_Object$assign = {}, _Object$assign[name] = item, _Object$assign));
|
|
753
|
-
|
|
847
|
+
var output = filterNull(target);
|
|
848
|
+
emitter.emit('change', output);
|
|
849
|
+
onChange(output);
|
|
754
850
|
};
|
|
755
851
|
|
|
756
852
|
var moreFilter = more && more.length > 0 ? /*#__PURE__*/React__default["default"].createElement(antd.Space, {
|
|
@@ -774,7 +870,8 @@ var Filter = function Filter(_ref) {
|
|
|
774
870
|
return /*#__PURE__*/React__default["default"].createElement(Provider$1, {
|
|
775
871
|
value: {
|
|
776
872
|
value: value,
|
|
777
|
-
onChange: changeHandler
|
|
873
|
+
onChange: changeHandler,
|
|
874
|
+
emitter: emitter
|
|
778
875
|
}
|
|
779
876
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
780
877
|
className: "react-filter"
|
|
@@ -797,7 +894,7 @@ var Filter = function Filter(_ref) {
|
|
|
797
894
|
var label = _ref2.label;
|
|
798
895
|
return label;
|
|
799
896
|
}).join(",") : item.label);
|
|
800
|
-
})), /*#__PURE__*/React__default["default"].createElement("div", null, extra))), renderList(isExtra ? basicList : list), moreList.length === 0 ? moreFilter : null), display ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(antd.Divider, {
|
|
897
|
+
})), /*#__PURE__*/React__default["default"].createElement("div", null, extra))), renderList(isExtra ? basicList : list), moreList.length === 0 || isExtra === false ? moreFilter : null), display && isExtra ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(antd.Divider, {
|
|
801
898
|
className: "react-filter-divider"
|
|
802
899
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
803
900
|
className: "react-filter-inner"
|
|
@@ -824,7 +921,8 @@ Filter.type = {
|
|
|
824
921
|
Selector: Selector,
|
|
825
922
|
Check: Check,
|
|
826
923
|
RadioList: RadioList,
|
|
827
|
-
CheckboxList: CheckboxList
|
|
924
|
+
CheckboxList: CheckboxList,
|
|
925
|
+
DateTime: DateTime
|
|
828
926
|
};
|
|
829
927
|
Filter.defaultProps = {
|
|
830
928
|
label: '筛选项',
|