@kne/react-filter 0.1.16 → 0.1.19

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 CHANGED
@@ -29,11 +29,11 @@ npm i --save @kne/react-filter
29
29
 
30
30
  - 基础示例
31
31
  - 展示一个筛选器的普通模式
32
- - reactFilter(@kne/react-filter),undefined(@kne/react-filter/dist/index.css),_(lodash)
32
+ - reactFilter(@kne/react-filter),_(lodash)
33
33
 
34
34
  ```jsx
35
35
  const {useState} = React;
36
- const {Filter, createExtraButton} = reactFilter;
36
+ const {default: Filter, createExtraButton} = reactFilter;
37
37
 
38
38
  const {City, List, Range, Text, Selector, Check} = Filter.type;
39
39
  const {isNumber} = _;
@@ -43,7 +43,19 @@ const BaseExample = () => {
43
43
  console.log(value);
44
44
  return <Filter value={value} onChange={(value) => {
45
45
  setValue(value);
46
- }} list={[[<City label="目前城市" name="currentCity" size={5}/>], [<List label="学历" name="degree" size={1}>
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}>
47
59
  <List.Item value="0" label="初中"/>
48
60
  <List.Item value="1" label="高中"/>
49
61
  <List.Item value="2" label="大学专科"/>
@@ -105,7 +117,7 @@ render(<BaseExample/>);
105
117
 
106
118
  ```jsx
107
119
  const {useState} = React;
108
- const {Filter} = reactFilter;
120
+ const {default: Filter} = reactFilter.default;
109
121
  const {default: Space} = space;
110
122
 
111
123
  const {RadioList, Selector, Text, CheckboxList} = Filter.type;
@@ -178,11 +190,14 @@ render(<Example/>);
178
190
 
179
191
  ### API
180
192
 
181
- | 属性名 | 说明 | 类型 | 默认值 |
182
- |----------|------------------------------------------------------------------------------|----------|-----|
183
- | value | 筛选器的值,该组件为一个受控组件 | object | - |
184
- | onChange | 筛选器的值发生改变的时候调用的函数 | function | - |
185
- | list | 筛选器的选项,为一个二维数组,二维数组中的每一个数组为一行,内部数组的每一项为一个筛选选项,筛选选项为Filter.type中的一项或者是自行扩展的选项 | array | [] |
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 |
186
201
 
187
202
  #### Filter.type
188
203
 
@@ -203,6 +218,7 @@ CheckboxList(多选列表)
203
218
  |-------|--------------------------------------------------------------|----------|-----|
204
219
  | template | 将一组数据范围显示成一段用户可阅读的问题的模版,参数为筛选项的值,要求返回一个描述的字符串 | function | - |
205
220
  |placeholder| 当为字符串时前后两个输入框显示同样内容,当为一个数组时,第一个输入框显示数组的第一个值,第二个输入框显示为数组的第二个值 | string&#124;array | - |
221
+
206
222
  #### List
207
223
 
208
224
  | 属性名 | 说明 | 类型 | 默认值 |
package/dist/index.css CHANGED
@@ -11,10 +11,15 @@
11
11
  white-space: nowrap;
12
12
  line-height: 32px; }
13
13
  .react-filter-item .ant-input, .react-filter-item .ant-select {
14
- min-width: 88px; }
14
+ min-width: 150px; }
15
+
16
+ .react-filter-item-popover .ant-input, .react-filter-item-popover .ant-select {
17
+ min-width: 150px; }
15
18
 
16
19
  .react-filter-item-label {
17
20
  font-size: 14px; }
21
+ .react-filter-item-label.is-more {
22
+ cursor: pointer; }
18
23
 
19
24
  .react-filter-item-children {
20
25
  display: flex;
@@ -45,7 +50,10 @@
45
50
  box-shadow: 2px 3px 10px 4px rgba(0, 0, 0, 0.2);
46
51
  background: #FFFFFF; }
47
52
 
48
- .react-filter-search-confirm {
53
+ .react-filter-search-confirm.is-more {
54
+ margin-left: 8px; }
55
+
56
+ .react-filter-search-confirm:not(.is-more) {
49
57
  position: absolute;
50
58
  top: 50%;
51
59
  right: -10px;
@@ -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,eAAe,EAAE;;AAErB;EACE,eAAe,EAAE;;AAEnB;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,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 {\n min-width: 88px; }\n\n.react-filter-item-label {\n font-size: 14px; }\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 {\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"]}
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;;AAEtB;EACE,gBAAgB,EAAE;;AAEpB;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 {\n min-width: 150px; }\n\n.react-filter-item-popover .ant-input, .react-filter-item-popover .ant-select {\n min-width: 150px; }\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,22 +1,21 @@
1
1
  var React = require('react');
2
2
  var antd = require('antd');
3
- var reactCitySelect = require('@kne/react-city-select');
4
3
  var classnames = require('classnames');
5
- var get = require('lodash/get');
6
- var isFunction = require('lodash/isFunction');
7
- var isEqual = require('lodash/isEqual');
4
+ var reactCitySelect = require('@kne/react-city-select');
5
+ var lodash = require('lodash');
8
6
  var useClickOutSide = require('@kne/use-click-outside');
9
- var isNumber = require('lodash/isNumber');
10
7
 
11
8
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
9
 
13
10
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
11
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
15
- var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
16
- var isFunction__default = /*#__PURE__*/_interopDefaultLegacy(isFunction);
17
- var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
18
12
  var useClickOutSide__default = /*#__PURE__*/_interopDefaultLegacy(useClickOutSide);
19
- var isNumber__default = /*#__PURE__*/_interopDefaultLegacy(isNumber);
13
+
14
+ var context$1 = React.createContext({});
15
+ var Provider$1 = context$1.Provider;
16
+ var useConsumer = function useConsumer() {
17
+ return React.useContext(context$1);
18
+ };
20
19
 
21
20
  function _extends() {
22
21
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -50,19 +49,27 @@ function _objectWithoutPropertiesLoose(source, excluded) {
50
49
  return target;
51
50
  }
52
51
 
53
- var context$1 = React.createContext({});
54
- var Provider$1 = context$1.Provider;
55
- var useConsumer = function useConsumer() {
56
- return React.useContext(context$1);
57
- };
58
-
59
- var _excluded$8 = ["label", "labelHidden"];
52
+ var _excluded$8 = ["label", "labelHidden", "isMore", "moreTrigger"];
60
53
 
61
54
  var FilterItem = function FilterItem(_ref) {
62
55
  var className = _ref.className,
63
56
  label = _ref.label,
64
57
  labelHidden = _ref.labelHidden,
58
+ isMore = _ref.isMore,
59
+ moreTrigger = _ref.moreTrigger,
65
60
  children = _ref.children;
61
+
62
+ if (isMore) {
63
+ return /*#__PURE__*/React__default["default"].createElement("div", {
64
+ className: classnames__default["default"]("react-filter-item-label", "is-more", className)
65
+ }, /*#__PURE__*/React__default["default"].createElement(antd.Popover, {
66
+ content: children,
67
+ trigger: moreTrigger,
68
+ placement: "bottom",
69
+ overlayClassName: "react-filter-item-popover"
70
+ }, /*#__PURE__*/React__default["default"].createElement("a", null, label)));
71
+ }
72
+
66
73
  return /*#__PURE__*/React__default["default"].createElement(antd.Space, {
67
74
  className: classnames__default["default"]('react-filter-item', className)
68
75
  }, labelHidden ? null : /*#__PURE__*/React__default["default"].createElement("div", {
@@ -76,13 +83,18 @@ var withFilterItem = function withFilterItem(WrappedComponent) {
76
83
  return function (_ref2) {
77
84
  var label = _ref2.label,
78
85
  labelHidden = _ref2.labelHidden,
86
+ isMore = _ref2.isMore,
87
+ moreTrigger = _ref2.moreTrigger,
79
88
  props = _objectWithoutPropertiesLoose(_ref2, _excluded$8);
80
89
 
81
90
  return /*#__PURE__*/React__default["default"].createElement(FilterItem, {
82
91
  label: label,
83
- labelHidden: labelHidden
92
+ labelHidden: labelHidden,
93
+ isMore: isMore,
94
+ moreTrigger: moreTrigger
84
95
  }, /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({}, props, {
85
- label: label
96
+ label: label,
97
+ isMore: isMore
86
98
  })));
87
99
  };
88
100
  };
@@ -106,7 +118,7 @@ var List = function List(_ref) {
106
118
  onChange = _useConsumer.onChange;
107
119
 
108
120
  var currentValue = function () {
109
- var originValue = get__default["default"](value, name);
121
+ var originValue = lodash.get(value, name);
110
122
 
111
123
  if (size === 1) {
112
124
  return originValue !== void 0 ? [originValue] : [];
@@ -165,7 +177,7 @@ var List = function List(_ref) {
165
177
  });
166
178
  }
167
179
 
168
- if (isFunction__default["default"](children)) {
180
+ if (lodash.isFunction(children)) {
169
181
  return children({
170
182
  value: currentValue,
171
183
  onChange: changeHandler
@@ -184,7 +196,7 @@ var List = function List(_ref) {
184
196
  createCheckedChangeHandler: createCheckedChangeHandler
185
197
  }
186
198
  }, computedChildren, more ? function () {
187
- if (isFunction__default["default"](more)) {
199
+ if (lodash.isFunction(more)) {
188
200
  return more({
189
201
  name: name,
190
202
  size: size,
@@ -223,7 +235,7 @@ List.Item = function (_ref3) {
223
235
 
224
236
  if (value !== void 0) {
225
237
  itemProps.checked = currentValue.findIndex(function (item) {
226
- return isEqual__default["default"](get__default["default"](item, 'value'), value);
238
+ return lodash.isEqual(lodash.get(item, 'value'), value);
227
239
  }) > -1;
228
240
  itemProps.onChange = createCheckedChangeHandler({
229
241
  label: label,
@@ -238,7 +250,7 @@ List.defaultProps = {
238
250
  size: 2
239
251
  };
240
252
 
241
- var _excluded$6 = ["label", "labelHidden", "name", "size"];
253
+ var _excluded$6 = ["label", "labelHidden", "name", "size", "isMore"];
242
254
  var Item = List.Item;
243
255
 
244
256
  var City = function City(_ref) {
@@ -331,6 +343,7 @@ var City = function City(_ref) {
331
343
  var SearchButton = function SearchButton(_ref) {
332
344
  var name = _ref.name,
333
345
  size = _ref.size,
346
+ isMore = _ref.isMore,
334
347
  template = _ref.template,
335
348
  children = _ref.children,
336
349
  defaultValue = _ref.defaultValue,
@@ -347,7 +360,7 @@ var SearchButton = function SearchButton(_ref) {
347
360
 
348
361
  var currentValue = aValue[name];
349
362
 
350
- var _useState = React.useState(defaultValue || get__default["default"](currentValue, "value")),
363
+ var _useState = React.useState(defaultValue || lodash.get(currentValue, "value")),
351
364
  value = _useState[0],
352
365
  setValue = _useState[1];
353
366
 
@@ -362,12 +375,12 @@ var SearchButton = function SearchButton(_ref) {
362
375
 
363
376
  return {
364
377
  value: value,
365
- label: isFunction__default["default"](template) ? template(value) : value.toString()
378
+ label: lodash.isFunction(template) ? template(value) : value.toString()
366
379
  };
367
380
  };
368
381
 
369
382
  var ref = useClickOutSide__default["default"](function () {
370
- setValue(get__default["default"](currentValue, "value"));
383
+ setValue(lodash.get(currentValue, "value"));
371
384
  setActive(false);
372
385
  onBlur && onBlur();
373
386
  });
@@ -378,7 +391,7 @@ var SearchButton = function SearchButton(_ref) {
378
391
  }, [active]);
379
392
  return /*#__PURE__*/React__default["default"].createElement("div", {
380
393
  className: classnames__default["default"]("react-filter-search-button", {
381
- "is-active": active
394
+ "is-active": active && !isMore
382
395
  }),
383
396
  ref: ref,
384
397
  onMouseEnter: function onMouseEnter() {
@@ -387,14 +400,17 @@ var SearchButton = function SearchButton(_ref) {
387
400
  onMouseLeave: function onMouseLeave() {
388
401
  active && setActive(false);
389
402
  }
390
- }, /*#__PURE__*/React__default["default"].createElement("div", {
391
- className: "inner"
403
+ }, /*#__PURE__*/React__default["default"].createElement(antd.Space, {
404
+ className: "inner",
405
+ size: 0
392
406
  }, /*#__PURE__*/React__default["default"].createElement("div", null, children({
393
407
  value: value,
394
408
  setValue: setValue,
395
409
  setActive: setActive
396
- })), active ? /*#__PURE__*/React__default["default"].createElement(antd.Button, {
397
- className: "react-filter-search-confirm",
410
+ })), active || isMore ? /*#__PURE__*/React__default["default"].createElement(antd.Button, {
411
+ className: classnames__default["default"]("react-filter-search-confirm", {
412
+ "is-more": isMore
413
+ }),
398
414
  size: "small",
399
415
  type: "primary",
400
416
  onClick: function onClick(e) {
@@ -421,6 +437,7 @@ SearchButton.defaultProps = {
421
437
  var RangeInner = function RangeInner(_ref) {
422
438
  var name = _ref.name,
423
439
  size = _ref.size,
440
+ isMore = _ref.isMore,
424
441
  defaultActive = _ref.defaultActive,
425
442
  template = _ref.template,
426
443
  onBlur = _ref.onBlur,
@@ -441,7 +458,7 @@ var RangeInner = function RangeInner(_ref) {
441
458
  return false;
442
459
  }
443
460
 
444
- if (isNumber__default["default"](value[1]) && value[0] > value[1]) {
461
+ if (lodash.isNumber(value[1]) && value[0] > value[1]) {
445
462
  setError("最大值不能小于最小值");
446
463
  return false;
447
464
  }
@@ -452,6 +469,7 @@ var RangeInner = function RangeInner(_ref) {
452
469
  return /*#__PURE__*/React__default["default"].createElement(SearchButton, {
453
470
  size: size,
454
471
  template: template,
472
+ isMore: isMore,
455
473
  onBlur: onBlur,
456
474
  defaultActive: defaultActive,
457
475
  name: name,
@@ -479,9 +497,9 @@ var RangeInner = function RangeInner(_ref) {
479
497
  }, /*#__PURE__*/React__default["default"].createElement(antd.InputNumber, _extends({
480
498
  size: "small"
481
499
  }, startProps, {
482
- value: get__default["default"](value, 0),
500
+ value: lodash.get(value, 0),
483
501
  onChange: function onChange(inputValue) {
484
- var target = [inputValue, get__default["default"](value, 1)];
502
+ var target = [inputValue, lodash.get(value, 1)];
485
503
  check(target);
486
504
  setValue(target);
487
505
  },
@@ -492,9 +510,9 @@ var RangeInner = function RangeInner(_ref) {
492
510
  })), "~", /*#__PURE__*/React__default["default"].createElement(antd.InputNumber, _extends({
493
511
  size: "small"
494
512
  }, endProps, {
495
- value: get__default["default"](value, 1),
513
+ value: lodash.get(value, 1),
496
514
  onChange: function onChange(inputValue) {
497
- var target = [get__default["default"](value, 0), inputValue];
515
+ var target = [lodash.get(value, 0), inputValue];
498
516
  check(target);
499
517
  setValue(target);
500
518
  },
@@ -507,10 +525,11 @@ var RangeInner = function RangeInner(_ref) {
507
525
  };
508
526
  var Range = withFilterItem(RangeInner);
509
527
 
510
- var _excluded$5 = ["name", "label", "template", "defaultActive", "onBlur", "onSearch", "onActiveChange", "placeholder"];
528
+ var _excluded$5 = ["name", "label", "isMore", "template", "defaultActive", "onBlur", "onSearch", "onActiveChange", "placeholder"];
511
529
  var TextInner = function TextInner(_ref) {
512
530
  var name = _ref.name,
513
531
  label = _ref.label,
532
+ isMore = _ref.isMore,
514
533
  template = _ref.template,
515
534
  defaultActive = _ref.defaultActive,
516
535
  onBlur = _ref.onBlur,
@@ -521,6 +540,7 @@ var TextInner = function TextInner(_ref) {
521
540
 
522
541
  return /*#__PURE__*/React__default["default"].createElement(SearchButton, {
523
542
  defaultActive: defaultActive,
543
+ isMore: isMore,
524
544
  onBlur: onBlur,
525
545
  template: template,
526
546
  name: name,
@@ -548,7 +568,7 @@ var TextInner = function TextInner(_ref) {
548
568
  };
549
569
  var Text = withFilterItem(TextInner);
550
570
 
551
- var _excluded$4 = ["name", "label", "placeholder"];
571
+ var _excluded$4 = ["name", "label", "placeholder", "isMore"];
552
572
  var SelectorInner = function SelectorInner(_ref) {
553
573
  var name = _ref.name,
554
574
  label = _ref.label,
@@ -571,7 +591,7 @@ var SelectorInner = function SelectorInner(_ref) {
571
591
  };
572
592
  var Selector = withFilterItem(SelectorInner);
573
593
 
574
- var _excluded$3 = ["name", "label", "className"];
594
+ var _excluded$3 = ["name", "label", "className", "isMore"];
575
595
 
576
596
  var Check = function Check(_ref) {
577
597
  var name = _ref.name,
@@ -597,7 +617,7 @@ var Check = function Check(_ref) {
597
617
  }), label);
598
618
  };
599
619
 
600
- var _excluded$2 = ["label", "name", "options"];
620
+ var _excluded$2 = ["label", "name", "options", "isMore"];
601
621
  var RadioList = withFilterItem(function (_ref) {
602
622
  var name = _ref.name,
603
623
  options = _ref.options,
@@ -608,10 +628,9 @@ var RadioList = withFilterItem(function (_ref) {
608
628
  _onChange = _useConsumer.onChange;
609
629
 
610
630
  var currentValue = aValue[name];
611
- console.log(currentValue);
612
631
  return /*#__PURE__*/React__default["default"].createElement(antd.Radio.Group, _extends({}, props, {
613
632
  options: options,
614
- value: get__default["default"](currentValue, 'value'),
633
+ value: lodash.get(currentValue, 'value'),
615
634
  onChange: function onChange(e) {
616
635
  var item = options.find(function (item) {
617
636
  return item.value === e.target.value;
@@ -622,7 +641,7 @@ var RadioList = withFilterItem(function (_ref) {
622
641
  }));
623
642
  });
624
643
 
625
- var _excluded$1 = ["label", "name", "options"];
644
+ var _excluded$1 = ["label", "name", "options", "isMore"];
626
645
  var CheckboxList = withFilterItem(function (_ref) {
627
646
  var name = _ref.name,
628
647
  options = _ref.options,
@@ -652,57 +671,6 @@ var CheckboxList = withFilterItem(function (_ref) {
652
671
  }));
653
672
  });
654
673
 
655
- var _excluded = ["name", "value", "children"],
656
- _excluded2 = ["type"];
657
- var withMoreExtraButton = function withMoreExtraButton(WrappedComponent) {
658
- return function (_ref) {
659
- var name = _ref.name,
660
- children = _ref.children,
661
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
662
-
663
- var _useState = React.useState(false),
664
- isEdit = _useState[0],
665
- setIsEdit = _useState[1];
666
-
667
- return isEdit ? /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({
668
- defaultActive: true
669
- }, props, {
670
- name: name,
671
- onBlur: function onBlur() {
672
- setIsEdit(false);
673
- }
674
- })) : /*#__PURE__*/React__default["default"].createElement(List.Item, {
675
- onClick: function onClick(e) {
676
- e.stopPropagation();
677
- setIsEdit(true);
678
- },
679
- label: children || "其他"
680
- });
681
- };
682
- };
683
- var RangeButton = withMoreExtraButton(RangeInner);
684
- var TextButton = withMoreExtraButton(TextInner);
685
- var SelectorButton = withMoreExtraButton(SelectorInner);
686
- var createExtraButton = function createExtraButton(_ref2) {
687
- var type = _ref2.type,
688
- props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
689
-
690
- return function (innerProps) {
691
- var mapping = {
692
- range: RangeButton,
693
- text: TextButton,
694
- selector: SelectorButton
695
- };
696
- var ExtraButtonComponent = mapping[type];
697
-
698
- if (!ExtraButtonComponent) {
699
- return null;
700
- }
701
-
702
- return /*#__PURE__*/React__default["default"].createElement(ExtraButtonComponent, _extends({}, props, innerProps));
703
- };
704
- };
705
-
706
674
  var filterNull = function filterNull(item) {
707
675
  var target = Object.assign({}, item);
708
676
  Object.keys(target).forEach(function (key) {
@@ -748,6 +716,9 @@ var Filter = function Filter(_ref) {
748
716
  unfoldText = _ref.unfoldText,
749
717
  foldText = _ref.foldText,
750
718
  extra = _ref.extra,
719
+ more = _ref.more,
720
+ moreTrigger = _ref.moreTrigger,
721
+ moreLabel = _ref.moreLabel,
751
722
  originValue = _ref.value,
752
723
  onChange = _ref.onChange;
753
724
  var value = React.useMemo(function () {
@@ -782,6 +753,24 @@ var Filter = function Filter(_ref) {
782
753
  onChange(filterNull(target));
783
754
  };
784
755
 
756
+ var moreFilter = more && more.length > 0 ? /*#__PURE__*/React__default["default"].createElement(antd.Space, {
757
+ className: "react-filter-line is-more"
758
+ }, /*#__PURE__*/React__default["default"].createElement(antd.Space, {
759
+ className: "react-filter-item"
760
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
761
+ className: "react-filter-item-label"
762
+ }, moreLabel, ":"), /*#__PURE__*/React__default["default"].createElement(antd.Space, {
763
+ className: "react-filter-item-children",
764
+ split: /*#__PURE__*/React__default["default"].createElement(antd.Divider, {
765
+ type: "vertical"
766
+ })
767
+ }, more.map(function (item, index) {
768
+ return React.cloneElement(item, {
769
+ key: index,
770
+ isMore: true,
771
+ moreTrigger: moreTrigger
772
+ });
773
+ })))) : null;
785
774
  return /*#__PURE__*/React__default["default"].createElement(Provider$1, {
786
775
  value: {
787
776
  value: value,
@@ -808,11 +797,11 @@ var Filter = function Filter(_ref) {
808
797
  var label = _ref2.label;
809
798
  return label;
810
799
  }).join(",") : item.label);
811
- })), /*#__PURE__*/React__default["default"].createElement("div", null, extra))), renderList(isExtra ? basicList : list)), display ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(antd.Divider, {
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, {
812
801
  className: "react-filter-divider"
813
802
  }), /*#__PURE__*/React__default["default"].createElement("div", {
814
803
  className: "react-filter-inner"
815
- }, renderList(moreList))) : /*#__PURE__*/React__default["default"].createElement("div", {
804
+ }, renderList(moreList)), moreList.length > 0 ? moreFilter : null) : /*#__PURE__*/React__default["default"].createElement("div", {
816
805
  className: "react-filter-divider-close"
817
806
  }), isExtra && list.length > displayLine ? /*#__PURE__*/React__default["default"].createElement(antd.Row, {
818
807
  className: "react-filter-switch-btn",
@@ -826,6 +815,7 @@ var Filter = function Filter(_ref) {
826
815
  }
827
816
  }, display ? foldText : unfoldText))) : null));
828
817
  };
818
+
829
819
  Filter.type = {
830
820
  City: City,
831
821
  List: List,
@@ -846,12 +836,65 @@ Filter.defaultProps = {
846
836
  defaultDisplay: false,
847
837
  isExtra: true,
848
838
  list: [[]],
839
+ more: [],
840
+ moreTrigger: 'hover',
841
+ moreLabel: '更多',
849
842
  value: {},
850
843
  extra: null,
851
844
  onChange: function onChange() {}
852
845
  };
853
846
 
854
- exports.Filter = Filter;
847
+ var _excluded = ["name", "value", "children"],
848
+ _excluded2 = ["type"];
849
+ var withMoreExtraButton = function withMoreExtraButton(WrappedComponent) {
850
+ return function (_ref) {
851
+ var name = _ref.name,
852
+ children = _ref.children,
853
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
854
+
855
+ var _useState = React.useState(false),
856
+ isEdit = _useState[0],
857
+ setIsEdit = _useState[1];
858
+
859
+ return isEdit ? /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({
860
+ defaultActive: true
861
+ }, props, {
862
+ name: name,
863
+ onBlur: function onBlur() {
864
+ setIsEdit(false);
865
+ }
866
+ })) : /*#__PURE__*/React__default["default"].createElement(List.Item, {
867
+ onClick: function onClick(e) {
868
+ e.stopPropagation();
869
+ setIsEdit(true);
870
+ },
871
+ label: children || "其他"
872
+ });
873
+ };
874
+ };
875
+ var RangeButton = withMoreExtraButton(RangeInner);
876
+ var TextButton = withMoreExtraButton(TextInner);
877
+ var SelectorButton = withMoreExtraButton(SelectorInner);
878
+ var createExtraButton = function createExtraButton(_ref2) {
879
+ var type = _ref2.type,
880
+ props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
881
+
882
+ return function (innerProps) {
883
+ var mapping = {
884
+ range: RangeButton,
885
+ text: TextButton,
886
+ selector: SelectorButton
887
+ };
888
+ var ExtraButtonComponent = mapping[type];
889
+
890
+ if (!ExtraButtonComponent) {
891
+ return null;
892
+ }
893
+
894
+ return /*#__PURE__*/React__default["default"].createElement(ExtraButtonComponent, _extends({}, props, innerProps));
895
+ };
896
+ };
897
+
855
898
  exports.FilterItem = FilterItem;
856
899
  exports.SearchButton = SearchButton;
857
900
  exports.createExtraButton = createExtraButton;