@kne/react-filter 0.1.16 → 0.1.17

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.default;
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,7 +1,7 @@
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');
4
+ var reactCitySelect = require('@kne/react-city-select');
5
5
  var get = require('lodash/get');
6
6
  var isFunction = require('lodash/isFunction');
7
7
  var isEqual = require('lodash/isEqual');
@@ -18,6 +18,12 @@ var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
18
18
  var useClickOutSide__default = /*#__PURE__*/_interopDefaultLegacy(useClickOutSide);
19
19
  var isNumber__default = /*#__PURE__*/_interopDefaultLegacy(isNumber);
20
20
 
21
+ var context$1 = React.createContext({});
22
+ var Provider$1 = context$1.Provider;
23
+ var useConsumer = function useConsumer() {
24
+ return React.useContext(context$1);
25
+ };
26
+
21
27
  function _extends() {
22
28
  _extends = Object.assign ? Object.assign.bind() : function (target) {
23
29
  for (var i = 1; i < arguments.length; i++) {
@@ -50,19 +56,27 @@ function _objectWithoutPropertiesLoose(source, excluded) {
50
56
  return target;
51
57
  }
52
58
 
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"];
59
+ var _excluded$8 = ["label", "labelHidden", "isMore", "moreTrigger"];
60
60
 
61
61
  var FilterItem = function FilterItem(_ref) {
62
62
  var className = _ref.className,
63
63
  label = _ref.label,
64
64
  labelHidden = _ref.labelHidden,
65
+ isMore = _ref.isMore,
66
+ moreTrigger = _ref.moreTrigger,
65
67
  children = _ref.children;
68
+
69
+ if (isMore) {
70
+ return /*#__PURE__*/React__default["default"].createElement("div", {
71
+ className: classnames__default["default"]("react-filter-item-label", "is-more", className)
72
+ }, /*#__PURE__*/React__default["default"].createElement(antd.Popover, {
73
+ content: children,
74
+ trigger: moreTrigger,
75
+ placement: "bottom",
76
+ overlayClassName: "react-filter-item-popover"
77
+ }, /*#__PURE__*/React__default["default"].createElement("a", null, label)));
78
+ }
79
+
66
80
  return /*#__PURE__*/React__default["default"].createElement(antd.Space, {
67
81
  className: classnames__default["default"]('react-filter-item', className)
68
82
  }, labelHidden ? null : /*#__PURE__*/React__default["default"].createElement("div", {
@@ -76,13 +90,18 @@ var withFilterItem = function withFilterItem(WrappedComponent) {
76
90
  return function (_ref2) {
77
91
  var label = _ref2.label,
78
92
  labelHidden = _ref2.labelHidden,
93
+ isMore = _ref2.isMore,
94
+ moreTrigger = _ref2.moreTrigger,
79
95
  props = _objectWithoutPropertiesLoose(_ref2, _excluded$8);
80
96
 
81
97
  return /*#__PURE__*/React__default["default"].createElement(FilterItem, {
82
98
  label: label,
83
- labelHidden: labelHidden
99
+ labelHidden: labelHidden,
100
+ isMore: isMore,
101
+ moreTrigger: moreTrigger
84
102
  }, /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({}, props, {
85
- label: label
103
+ label: label,
104
+ isMore: isMore
86
105
  })));
87
106
  };
88
107
  };
@@ -238,7 +257,7 @@ List.defaultProps = {
238
257
  size: 2
239
258
  };
240
259
 
241
- var _excluded$6 = ["label", "labelHidden", "name", "size"];
260
+ var _excluded$6 = ["label", "labelHidden", "name", "size", "isMore"];
242
261
  var Item = List.Item;
243
262
 
244
263
  var City = function City(_ref) {
@@ -331,6 +350,7 @@ var City = function City(_ref) {
331
350
  var SearchButton = function SearchButton(_ref) {
332
351
  var name = _ref.name,
333
352
  size = _ref.size,
353
+ isMore = _ref.isMore,
334
354
  template = _ref.template,
335
355
  children = _ref.children,
336
356
  defaultValue = _ref.defaultValue,
@@ -378,7 +398,7 @@ var SearchButton = function SearchButton(_ref) {
378
398
  }, [active]);
379
399
  return /*#__PURE__*/React__default["default"].createElement("div", {
380
400
  className: classnames__default["default"]("react-filter-search-button", {
381
- "is-active": active
401
+ "is-active": active && !isMore
382
402
  }),
383
403
  ref: ref,
384
404
  onMouseEnter: function onMouseEnter() {
@@ -387,14 +407,17 @@ var SearchButton = function SearchButton(_ref) {
387
407
  onMouseLeave: function onMouseLeave() {
388
408
  active && setActive(false);
389
409
  }
390
- }, /*#__PURE__*/React__default["default"].createElement("div", {
391
- className: "inner"
410
+ }, /*#__PURE__*/React__default["default"].createElement(antd.Space, {
411
+ className: "inner",
412
+ size: 0
392
413
  }, /*#__PURE__*/React__default["default"].createElement("div", null, children({
393
414
  value: value,
394
415
  setValue: setValue,
395
416
  setActive: setActive
396
- })), active ? /*#__PURE__*/React__default["default"].createElement(antd.Button, {
397
- className: "react-filter-search-confirm",
417
+ })), active || isMore ? /*#__PURE__*/React__default["default"].createElement(antd.Button, {
418
+ className: classnames__default["default"]("react-filter-search-confirm", {
419
+ "is-more": isMore
420
+ }),
398
421
  size: "small",
399
422
  type: "primary",
400
423
  onClick: function onClick(e) {
@@ -421,6 +444,7 @@ SearchButton.defaultProps = {
421
444
  var RangeInner = function RangeInner(_ref) {
422
445
  var name = _ref.name,
423
446
  size = _ref.size,
447
+ isMore = _ref.isMore,
424
448
  defaultActive = _ref.defaultActive,
425
449
  template = _ref.template,
426
450
  onBlur = _ref.onBlur,
@@ -452,6 +476,7 @@ var RangeInner = function RangeInner(_ref) {
452
476
  return /*#__PURE__*/React__default["default"].createElement(SearchButton, {
453
477
  size: size,
454
478
  template: template,
479
+ isMore: isMore,
455
480
  onBlur: onBlur,
456
481
  defaultActive: defaultActive,
457
482
  name: name,
@@ -507,10 +532,11 @@ var RangeInner = function RangeInner(_ref) {
507
532
  };
508
533
  var Range = withFilterItem(RangeInner);
509
534
 
510
- var _excluded$5 = ["name", "label", "template", "defaultActive", "onBlur", "onSearch", "onActiveChange", "placeholder"];
535
+ var _excluded$5 = ["name", "label", "isMore", "template", "defaultActive", "onBlur", "onSearch", "onActiveChange", "placeholder"];
511
536
  var TextInner = function TextInner(_ref) {
512
537
  var name = _ref.name,
513
538
  label = _ref.label,
539
+ isMore = _ref.isMore,
514
540
  template = _ref.template,
515
541
  defaultActive = _ref.defaultActive,
516
542
  onBlur = _ref.onBlur,
@@ -521,6 +547,7 @@ var TextInner = function TextInner(_ref) {
521
547
 
522
548
  return /*#__PURE__*/React__default["default"].createElement(SearchButton, {
523
549
  defaultActive: defaultActive,
550
+ isMore: isMore,
524
551
  onBlur: onBlur,
525
552
  template: template,
526
553
  name: name,
@@ -548,7 +575,7 @@ var TextInner = function TextInner(_ref) {
548
575
  };
549
576
  var Text = withFilterItem(TextInner);
550
577
 
551
- var _excluded$4 = ["name", "label", "placeholder"];
578
+ var _excluded$4 = ["name", "label", "placeholder", "isMore"];
552
579
  var SelectorInner = function SelectorInner(_ref) {
553
580
  var name = _ref.name,
554
581
  label = _ref.label,
@@ -571,7 +598,7 @@ var SelectorInner = function SelectorInner(_ref) {
571
598
  };
572
599
  var Selector = withFilterItem(SelectorInner);
573
600
 
574
- var _excluded$3 = ["name", "label", "className"];
601
+ var _excluded$3 = ["name", "label", "className", "isMore"];
575
602
 
576
603
  var Check = function Check(_ref) {
577
604
  var name = _ref.name,
@@ -597,7 +624,7 @@ var Check = function Check(_ref) {
597
624
  }), label);
598
625
  };
599
626
 
600
- var _excluded$2 = ["label", "name", "options"];
627
+ var _excluded$2 = ["label", "name", "options", "isMore"];
601
628
  var RadioList = withFilterItem(function (_ref) {
602
629
  var name = _ref.name,
603
630
  options = _ref.options,
@@ -608,7 +635,6 @@ var RadioList = withFilterItem(function (_ref) {
608
635
  _onChange = _useConsumer.onChange;
609
636
 
610
637
  var currentValue = aValue[name];
611
- console.log(currentValue);
612
638
  return /*#__PURE__*/React__default["default"].createElement(antd.Radio.Group, _extends({}, props, {
613
639
  options: options,
614
640
  value: get__default["default"](currentValue, 'value'),
@@ -622,7 +648,7 @@ var RadioList = withFilterItem(function (_ref) {
622
648
  }));
623
649
  });
624
650
 
625
- var _excluded$1 = ["label", "name", "options"];
651
+ var _excluded$1 = ["label", "name", "options", "isMore"];
626
652
  var CheckboxList = withFilterItem(function (_ref) {
627
653
  var name = _ref.name,
628
654
  options = _ref.options,
@@ -652,57 +678,6 @@ var CheckboxList = withFilterItem(function (_ref) {
652
678
  }));
653
679
  });
654
680
 
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
681
  var filterNull = function filterNull(item) {
707
682
  var target = Object.assign({}, item);
708
683
  Object.keys(target).forEach(function (key) {
@@ -748,6 +723,9 @@ var Filter = function Filter(_ref) {
748
723
  unfoldText = _ref.unfoldText,
749
724
  foldText = _ref.foldText,
750
725
  extra = _ref.extra,
726
+ more = _ref.more,
727
+ moreTrigger = _ref.moreTrigger,
728
+ moreLabel = _ref.moreLabel,
751
729
  originValue = _ref.value,
752
730
  onChange = _ref.onChange;
753
731
  var value = React.useMemo(function () {
@@ -782,6 +760,24 @@ var Filter = function Filter(_ref) {
782
760
  onChange(filterNull(target));
783
761
  };
784
762
 
763
+ var moreFilter = more && more.length > 0 ? /*#__PURE__*/React__default["default"].createElement(antd.Space, {
764
+ className: "react-filter-line is-more"
765
+ }, /*#__PURE__*/React__default["default"].createElement(antd.Space, {
766
+ className: "react-filter-item"
767
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
768
+ className: "react-filter-item-label"
769
+ }, moreLabel, ":"), /*#__PURE__*/React__default["default"].createElement(antd.Space, {
770
+ className: "react-filter-item-children",
771
+ split: /*#__PURE__*/React__default["default"].createElement(antd.Divider, {
772
+ type: "vertical"
773
+ })
774
+ }, more.map(function (item, index) {
775
+ return React.cloneElement(item, {
776
+ key: index,
777
+ isMore: true,
778
+ moreTrigger: moreTrigger
779
+ });
780
+ })))) : null;
785
781
  return /*#__PURE__*/React__default["default"].createElement(Provider$1, {
786
782
  value: {
787
783
  value: value,
@@ -808,11 +804,11 @@ var Filter = function Filter(_ref) {
808
804
  var label = _ref2.label;
809
805
  return label;
810
806
  }).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, {
807
+ })), /*#__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
808
  className: "react-filter-divider"
813
809
  }), /*#__PURE__*/React__default["default"].createElement("div", {
814
810
  className: "react-filter-inner"
815
- }, renderList(moreList))) : /*#__PURE__*/React__default["default"].createElement("div", {
811
+ }, renderList(moreList)), moreList.length > 0 ? moreFilter : null) : /*#__PURE__*/React__default["default"].createElement("div", {
816
812
  className: "react-filter-divider-close"
817
813
  }), isExtra && list.length > displayLine ? /*#__PURE__*/React__default["default"].createElement(antd.Row, {
818
814
  className: "react-filter-switch-btn",
@@ -826,6 +822,7 @@ var Filter = function Filter(_ref) {
826
822
  }
827
823
  }, display ? foldText : unfoldText))) : null));
828
824
  };
825
+
829
826
  Filter.type = {
830
827
  City: City,
831
828
  List: List,
@@ -846,12 +843,65 @@ Filter.defaultProps = {
846
843
  defaultDisplay: false,
847
844
  isExtra: true,
848
845
  list: [[]],
846
+ more: [],
847
+ moreTrigger: 'hover',
848
+ moreLabel: '更多',
849
849
  value: {},
850
850
  extra: null,
851
851
  onChange: function onChange() {}
852
852
  };
853
853
 
854
- exports.Filter = Filter;
854
+ var _excluded = ["name", "value", "children"],
855
+ _excluded2 = ["type"];
856
+ var withMoreExtraButton = function withMoreExtraButton(WrappedComponent) {
857
+ return function (_ref) {
858
+ var name = _ref.name,
859
+ children = _ref.children,
860
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
861
+
862
+ var _useState = React.useState(false),
863
+ isEdit = _useState[0],
864
+ setIsEdit = _useState[1];
865
+
866
+ return isEdit ? /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({
867
+ defaultActive: true
868
+ }, props, {
869
+ name: name,
870
+ onBlur: function onBlur() {
871
+ setIsEdit(false);
872
+ }
873
+ })) : /*#__PURE__*/React__default["default"].createElement(List.Item, {
874
+ onClick: function onClick(e) {
875
+ e.stopPropagation();
876
+ setIsEdit(true);
877
+ },
878
+ label: children || "其他"
879
+ });
880
+ };
881
+ };
882
+ var RangeButton = withMoreExtraButton(RangeInner);
883
+ var TextButton = withMoreExtraButton(TextInner);
884
+ var SelectorButton = withMoreExtraButton(SelectorInner);
885
+ var createExtraButton = function createExtraButton(_ref2) {
886
+ var type = _ref2.type,
887
+ props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
888
+
889
+ return function (innerProps) {
890
+ var mapping = {
891
+ range: RangeButton,
892
+ text: TextButton,
893
+ selector: SelectorButton
894
+ };
895
+ var ExtraButtonComponent = mapping[type];
896
+
897
+ if (!ExtraButtonComponent) {
898
+ return null;
899
+ }
900
+
901
+ return /*#__PURE__*/React__default["default"].createElement(ExtraButtonComponent, _extends({}, props, innerProps));
902
+ };
903
+ };
904
+
855
905
  exports.FilterItem = FilterItem;
856
906
  exports.SearchButton = SearchButton;
857
907
  exports.createExtraButton = createExtraButton;