@kne/react-filter 0.1.13 → 0.1.16

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,220 @@
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),undefined(@kne/react-filter/dist/index.css),_(lodash)
33
+
34
+ ```jsx
35
+ const {useState} = React;
36
+ const {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
+ }} list={[[<City label="目前城市" name="currentCity" size={5}/>], [<List label="学历" name="degree" size={1}>
47
+ <List.Item value="0" label="初中"/>
48
+ <List.Item value="1" label="高中"/>
49
+ <List.Item value="2" label="大学专科"/>
50
+ <List.Item value="3" label="大学本科"/>
51
+ </List>], [<List label="求职意向" name="yixiang" size={1}
52
+ options={[{label: "暂时不找工作", value: 0}, {label: "在职看机会", value: 1}, {
53
+ label: "离职正在找工作", value: 2
54
+ }]}/>], [<Range label="年龄" name="age" template={(value) => {
55
+ if (!value || value.length === 0) {
56
+ return "";
57
+ }
58
+ if (!isNumber(value[0]) && isNumber(value[1])) {
59
+ return `${value[1]}岁以下`;
60
+ }
61
+ if (!isNumber(value[1]) && isNumber(value[0])) {
62
+ return `${value[0]}岁以上`;
63
+ }
64
+ return `${value[0]}-${value[1]}岁`;
65
+ }}/>, <Text label="行业" name="inter"/>, <Selector label="语言" name="lang"
66
+ options={[{
67
+ label: "英语", value: "en"
68
+ }, {
69
+ label: "日语", value: "jap"
70
+ }, {
71
+ label: "法语", value: "fac"
72
+ }]}/>], [<List size={1}
73
+ label="薪资范围"
74
+ name="sarl"
75
+ options={[{
76
+ label: "10k以下", value: [null, 10]
77
+ }, {
78
+ label: "10k-20k", value: [10, 20]
79
+ }, {
80
+ label: "20k以上", value: [20, null]
81
+ }]}
82
+ more={createExtraButton({
83
+ type: "range", template: (value) => {
84
+ if (!value || value.length === 0) {
85
+ return "";
86
+ }
87
+ if (!isNumber(value[0]) && isNumber(value[1])) {
88
+ return `${value[1]}k以下`;
89
+ }
90
+ if (!isNumber(value[1]) && isNumber(value[0])) {
91
+ return `${value[0]}k以上`;
92
+ }
93
+ return `${value[0]}k-${value[1]}k`;
94
+ }
95
+ })}/>, <Check label="海外经历" name="out"/>]]}/>;
96
+ };
97
+
98
+ render(<BaseExample/>);
99
+
100
+ ```
101
+
102
+ - 简单示例
103
+ - 展示一个简单的筛选项,一般放在列表页title extra位置
104
+ - reactFilter(@kne/react-filter),undefined(@kne/react-filter/dist/index.css),space(antd/lib/space)
105
+
106
+ ```jsx
107
+ const {useState} = React;
108
+ const {Filter} = reactFilter;
109
+ const {default: Space} = space;
110
+
111
+ const {RadioList, Selector, Text, CheckboxList} = Filter.type;
112
+
113
+ const Example = () => {
114
+ const [value, setValue] = useState([]);
115
+ const [radioValue, setRadioValue] = useState({});
116
+ const [checkboxValue, setCheckboxValue] = useState({});
117
+ console.log(value, radioValue, checkboxValue);
118
+ return <Space direction="vertical">
119
+ <Filter value={value} onChange={setValue} labelHidden itemLabelHidden list={[[
120
+ <Text name="positionName" label="职位名称"/>,
121
+ <Selector name="type" options={[
122
+ {
123
+ label: '全职',
124
+ value: 1
125
+ }, {
126
+ label: '兼职',
127
+ value: 2
128
+ }
129
+ ]} label="职位类型"/>
130
+ ]]}/>
131
+ <Filter value={radioValue} onChange={setRadioValue} labelHidden list={[[
132
+ <RadioList name="state" label="客户状态" options={[
133
+ {
134
+ label: "全部状态",
135
+ value: 0
136
+ }, {
137
+ label: "待开发",
138
+ value: 1
139
+ }, {
140
+ label: "开发中",
141
+ value: 2
142
+ }, {
143
+ label: "已签约",
144
+ value: 3
145
+ }, {
146
+ label: "已终止",
147
+ value: 4
148
+ }
149
+ ]}/>
150
+ ]]}/>
151
+ <Filter value={checkboxValue} onChange={setCheckboxValue} labelHidden list={[[
152
+ <CheckboxList name="state" label="客户状态" options={[
153
+ {
154
+ label: "全部状态",
155
+ value: 0
156
+ }, {
157
+ label: "待开发",
158
+ value: 1
159
+ }, {
160
+ label: "开发中",
161
+ value: 2
162
+ }, {
163
+ label: "已签约",
164
+ value: 3
165
+ }, {
166
+ label: "已终止",
167
+ value: 4
168
+ }
169
+ ]}/>
170
+ ]]}/>
171
+ </Space>
172
+ };
173
+
174
+ render(<Example/>);
175
+
176
+ ```
177
+
178
+
179
+ ### API
180
+
181
+ | 属性名 | 说明 | 类型 | 默认值 |
182
+ |----------|------------------------------------------------------------------------------|----------|-----|
183
+ | value | 筛选器的值,该组件为一个受控组件 | object | - |
184
+ | onChange | 筛选器的值发生改变的时候调用的函数 | function | - |
185
+ | list | 筛选器的选项,为一个二维数组,二维数组中的每一个数组为一行,内部数组的每一项为一个筛选选项,筛选选项为Filter.type中的一项或者是自行扩展的选项 | array | [] |
186
+
187
+ #### Filter.type
188
+
189
+ City(城市选择), List(列表选择,可以多选或者单选), Range(数据范围), Text(文字输入), Selector(下拉选项), Check(单项选择), RadioList(单选列表),
190
+ CheckboxList(多选列表)
191
+
192
+ 公共参数
193
+
194
+ | 属性名 | 说明 | 类型 | 默认值 |
195
+ |-------|--------------------------------------------|--------|-----|
196
+ | label | 筛选项名称 | string | - |
197
+ | name | 筛选项的key | string | - |
198
+ | placeholder| 筛选项的placeholder(如果可以显示的话),如果不传值通常会去label的值 | string |-|
199
+
200
+ ##### Range
201
+
202
+ | 属性名 | 说明 | 类型 | 默认值 |
203
+ |-------|--------------------------------------------------------------|----------|-----|
204
+ | template | 将一组数据范围显示成一段用户可阅读的问题的模版,参数为筛选项的值,要求返回一个描述的字符串 | function | - |
205
+ |placeholder| 当为字符串时前后两个输入框显示同样内容,当为一个数组时,第一个输入框显示数组的第一个值,第二个输入框显示为数组的第二个值 | string&#124;array | - |
206
+ #### List
207
+
208
+ | 属性名 | 说明 | 类型 | 默认值 |
209
+ |----------|-------------------------|-----------|-----|
210
+ | children | 筛选项的每一项的值,必须为 List.Item | List.Item | - |
211
+
212
+ #### List.Item
213
+
214
+ | 属性名 | 说明 | 类型 | 默认值 |
215
+ |-------|--------|--------|-----|
216
+ | value | 筛选项的值 | - | - |
217
+ | label | 筛选项显示项 | string | - |
218
+
219
+ 其他参数参考对应内部组件的参数
220
+
package/dist/index.css CHANGED
@@ -1,20 +1,24 @@
1
- .space-full {
2
- width: 100%; }
3
-
4
1
  .react-filter-inner {
5
2
  padding-right: 116px; }
6
3
 
7
4
  .react-filter-divider {
8
5
  margin: 5px auto; }
9
6
 
7
+ .react-filter-line {
8
+ min-width: 100%; }
9
+
10
10
  .react-filter-item {
11
+ white-space: nowrap;
11
12
  line-height: 32px; }
13
+ .react-filter-item .ant-input, .react-filter-item .ant-select {
14
+ min-width: 88px; }
12
15
 
13
16
  .react-filter-item-label {
14
17
  font-size: 14px; }
15
18
 
16
19
  .react-filter-item-children {
17
- display: flex; }
20
+ display: flex;
21
+ align-items: center; }
18
22
 
19
23
  .react-filter-search-button {
20
24
  position: relative; }
@@ -1 +1 @@
1
- {"version":3,"sources":["index.scss"],"names":[],"mappings":"AAAA;EACE,WAAW,EAAE;;AAEf;EACE,oBAAoB,EAAE;;AAExB;EACE,gBAAgB,EAAE;;AAEpB;EACE,iBAAiB,EAAE;;AAErB;EACE,eAAe,EAAE;;AAEnB;EACE,aAAa,EAAE;;AAEjB;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":[".space-full {\n width: 100%; }\n\n.react-filter-inner {\n padding-right: 116px; }\n\n.react-filter-divider {\n margin: 5px auto; }\n\n.react-filter-item {\n line-height: 32px; }\n\n.react-filter-item-label {\n font-size: 14px; }\n\n.react-filter-item-children {\n display: flex; }\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,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"]}
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ var useClickOutSide__default = /*#__PURE__*/_interopDefaultLegacy(useClickOutSid
19
19
  var isNumber__default = /*#__PURE__*/_interopDefaultLegacy(isNumber);
20
20
 
21
21
  function _extends() {
22
- _extends = Object.assign || function (target) {
22
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
23
23
  for (var i = 1; i < arguments.length; i++) {
24
24
  var source = arguments[i];
25
25
 
@@ -32,7 +32,6 @@ function _extends() {
32
32
 
33
33
  return target;
34
34
  };
35
-
36
35
  return _extends.apply(this, arguments);
37
36
  }
38
37
 
@@ -57,15 +56,16 @@ var useConsumer = function useConsumer() {
57
56
  return React.useContext(context$1);
58
57
  };
59
58
 
60
- var _excluded$5 = ["label"];
59
+ var _excluded$8 = ["label", "labelHidden"];
61
60
 
62
61
  var FilterItem = function FilterItem(_ref) {
63
62
  var className = _ref.className,
64
63
  label = _ref.label,
64
+ labelHidden = _ref.labelHidden,
65
65
  children = _ref.children;
66
66
  return /*#__PURE__*/React__default["default"].createElement(antd.Space, {
67
67
  className: classnames__default["default"]('react-filter-item', className)
68
- }, /*#__PURE__*/React__default["default"].createElement("div", {
68
+ }, labelHidden ? null : /*#__PURE__*/React__default["default"].createElement("div", {
69
69
  className: "react-filter-item-label"
70
70
  }, label, ":"), /*#__PURE__*/React__default["default"].createElement("div", {
71
71
  className: "react-filter-item-children"
@@ -75,21 +75,26 @@ var FilterItem = function FilterItem(_ref) {
75
75
  var withFilterItem = function withFilterItem(WrappedComponent) {
76
76
  return function (_ref2) {
77
77
  var label = _ref2.label,
78
- props = _objectWithoutPropertiesLoose(_ref2, _excluded$5);
78
+ labelHidden = _ref2.labelHidden,
79
+ props = _objectWithoutPropertiesLoose(_ref2, _excluded$8);
79
80
 
80
81
  return /*#__PURE__*/React__default["default"].createElement(FilterItem, {
82
+ label: label,
83
+ labelHidden: labelHidden
84
+ }, /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({}, props, {
81
85
  label: label
82
- }, /*#__PURE__*/React__default["default"].createElement(WrappedComponent, props));
86
+ })));
83
87
  };
84
88
  };
85
89
 
86
- var _excluded$4 = ["value", "label"];
90
+ var _excluded$7 = ["value", "label"];
87
91
  var CheckableTag = antd.Tag.CheckableTag;
88
92
  var context = React.createContext({});
89
93
  var Provider = context.Provider;
90
94
 
91
95
  var List = function List(_ref) {
92
96
  var label = _ref.label,
97
+ labelHidden = _ref.labelHidden,
93
98
  name = _ref.name,
94
99
  size = _ref.size,
95
100
  children = _ref.children,
@@ -171,7 +176,8 @@ var List = function List(_ref) {
171
176
  }();
172
177
 
173
178
  return /*#__PURE__*/React__default["default"].createElement(FilterItem, {
174
- label: label
179
+ label: label,
180
+ labelHidden: labelHidden
175
181
  }, /*#__PURE__*/React__default["default"].createElement(Provider, {
176
182
  value: {
177
183
  currentValue: currentValue,
@@ -207,7 +213,7 @@ var List = function List(_ref) {
207
213
  List.Item = function (_ref3) {
208
214
  var value = _ref3.value,
209
215
  label = _ref3.label,
210
- props = _objectWithoutPropertiesLoose(_ref3, _excluded$4);
216
+ props = _objectWithoutPropertiesLoose(_ref3, _excluded$7);
211
217
 
212
218
  var _useContext = React.useContext(context),
213
219
  currentValue = _useContext.currentValue,
@@ -232,13 +238,18 @@ List.defaultProps = {
232
238
  size: 2
233
239
  };
234
240
 
241
+ var _excluded$6 = ["label", "labelHidden", "name", "size"];
235
242
  var Item = List.Item;
236
243
 
237
244
  var City = function City(_ref) {
238
245
  var label = _ref.label,
246
+ labelHidden = _ref.labelHidden,
239
247
  name = _ref.name,
240
248
  size = _ref.size;
249
+ _objectWithoutPropertiesLoose(_ref, _excluded$6);
250
+
241
251
  return /*#__PURE__*/React__default["default"].createElement(List, {
252
+ labelHidden: labelHidden,
242
253
  label: label,
243
254
  name: name,
244
255
  size: size,
@@ -416,7 +427,8 @@ var RangeInner = function RangeInner(_ref) {
416
427
  onSearch = _ref.onSearch,
417
428
  _onActiveChange = _ref.onActiveChange,
418
429
  startProps = _ref.startProps,
419
- endProps = _ref.endProps;
430
+ endProps = _ref.endProps,
431
+ placeholder = _ref.placeholder;
420
432
 
421
433
  var _useState = React.useState(null),
422
434
  error = _useState[0],
@@ -475,7 +487,8 @@ var RangeInner = function RangeInner(_ref) {
475
487
  },
476
488
  onFocus: function onFocus() {
477
489
  setActive(true);
478
- }
490
+ },
491
+ placeholder: Array.isArray(placeholder) ? placeholder[0] : placeholder || "请输入"
479
492
  })), "~", /*#__PURE__*/React__default["default"].createElement(antd.InputNumber, _extends({
480
493
  size: "small"
481
494
  }, endProps, {
@@ -487,21 +500,24 @@ var RangeInner = function RangeInner(_ref) {
487
500
  },
488
501
  onFocus: function onFocus() {
489
502
  setActive(true);
490
- }
503
+ },
504
+ placeholder: Array.isArray(placeholder) ? placeholder[0] : placeholder || "请输入"
491
505
  }))));
492
506
  });
493
507
  };
494
508
  var Range = withFilterItem(RangeInner);
495
509
 
496
- var _excluded$3 = ["name", "label", "template", "defaultActive", "onBlur", "onSearch", "onActiveChange"];
510
+ var _excluded$5 = ["name", "label", "template", "defaultActive", "onBlur", "onSearch", "onActiveChange", "placeholder"];
497
511
  var TextInner = function TextInner(_ref) {
498
512
  var name = _ref.name,
513
+ label = _ref.label,
499
514
  template = _ref.template,
500
515
  defaultActive = _ref.defaultActive,
501
516
  onBlur = _ref.onBlur,
502
517
  onSearch = _ref.onSearch,
503
518
  _onActiveChange = _ref.onActiveChange,
504
- props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
519
+ placeholder = _ref.placeholder,
520
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$5);
505
521
 
506
522
  return /*#__PURE__*/React__default["default"].createElement(SearchButton, {
507
523
  defaultActive: defaultActive,
@@ -519,6 +535,7 @@ var TextInner = function TextInner(_ref) {
519
535
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(antd.Input, _extends({
520
536
  size: "small"
521
537
  }, props, {
538
+ placeholder: placeholder || label,
522
539
  value: value,
523
540
  onChange: function onChange(e) {
524
541
  setValue(e.target.value);
@@ -531,10 +548,12 @@ var TextInner = function TextInner(_ref) {
531
548
  };
532
549
  var Text = withFilterItem(TextInner);
533
550
 
534
- var _excluded$2 = ["name"];
551
+ var _excluded$4 = ["name", "label", "placeholder"];
535
552
  var SelectorInner = function SelectorInner(_ref) {
536
553
  var name = _ref.name,
537
- props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
554
+ label = _ref.label,
555
+ placeholder = _ref.placeholder,
556
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
538
557
 
539
558
  var _useConsumer = useConsumer(),
540
559
  aValue = _useConsumer.value,
@@ -542,9 +561,7 @@ var SelectorInner = function SelectorInner(_ref) {
542
561
 
543
562
  var currentValue = aValue[name];
544
563
  return /*#__PURE__*/React__default["default"].createElement(antd.Select, _extends({}, props, {
545
- style: {
546
- minWidth: "150px"
547
- },
564
+ placeholder: label || placeholder,
548
565
  size: "small",
549
566
  value: currentValue,
550
567
  onChange: function onChange(value, item) {
@@ -554,12 +571,13 @@ var SelectorInner = function SelectorInner(_ref) {
554
571
  };
555
572
  var Selector = withFilterItem(SelectorInner);
556
573
 
557
- var _excluded$1 = ["name", "label"];
574
+ var _excluded$3 = ["name", "label", "className"];
558
575
 
559
576
  var Check = function Check(_ref) {
560
577
  var name = _ref.name,
561
578
  label = _ref.label,
562
- props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
579
+ className = _ref.className,
580
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
563
581
 
564
582
  var _useConsumer = useConsumer(),
565
583
  aValue = _useConsumer.value,
@@ -567,6 +585,7 @@ var Check = function Check(_ref) {
567
585
 
568
586
  var currentValue = aValue[name];
569
587
  return /*#__PURE__*/React__default["default"].createElement(antd.Checkbox, _extends({}, props, {
588
+ className: classnames__default["default"]('react-filter-item', className),
570
589
  size: "small",
571
590
  checked: currentValue,
572
591
  onChange: function onChange(e) {
@@ -578,6 +597,61 @@ var Check = function Check(_ref) {
578
597
  }), label);
579
598
  };
580
599
 
600
+ var _excluded$2 = ["label", "name", "options"];
601
+ var RadioList = withFilterItem(function (_ref) {
602
+ var name = _ref.name,
603
+ options = _ref.options,
604
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
605
+
606
+ var _useConsumer = useConsumer(),
607
+ aValue = _useConsumer.value,
608
+ _onChange = _useConsumer.onChange;
609
+
610
+ var currentValue = aValue[name];
611
+ console.log(currentValue);
612
+ return /*#__PURE__*/React__default["default"].createElement(antd.Radio.Group, _extends({}, props, {
613
+ options: options,
614
+ value: get__default["default"](currentValue, 'value'),
615
+ onChange: function onChange(e) {
616
+ var item = options.find(function (item) {
617
+ return item.value === e.target.value;
618
+ });
619
+
620
+ _onChange(name, item);
621
+ }
622
+ }));
623
+ });
624
+
625
+ var _excluded$1 = ["label", "name", "options"];
626
+ var CheckboxList = withFilterItem(function (_ref) {
627
+ var name = _ref.name,
628
+ options = _ref.options,
629
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
630
+
631
+ var _useConsumer = useConsumer(),
632
+ aValue = _useConsumer.value,
633
+ _onChange = _useConsumer.onChange;
634
+
635
+ var currentValue = aValue[name];
636
+ return /*#__PURE__*/React__default["default"].createElement(antd.Checkbox.Group, _extends({}, props, {
637
+ value: (currentValue || []).map(function (_ref2) {
638
+ var value = _ref2.value;
639
+ return value;
640
+ }),
641
+ onChange: function onChange(value) {
642
+ var item = value.map(function (value) {
643
+ return options.find(function (item) {
644
+ return item.value === value;
645
+ });
646
+ });
647
+ console.log(item);
648
+
649
+ _onChange(name, item);
650
+ },
651
+ options: options
652
+ }));
653
+ });
654
+
581
655
  var _excluded = ["name", "value", "children"],
582
656
  _excluded2 = ["type"];
583
657
  var withMoreExtraButton = function withMoreExtraButton(WrappedComponent) {
@@ -665,15 +739,22 @@ var filterNull = function filterNull(item) {
665
739
 
666
740
  var Filter = function Filter(_ref) {
667
741
  var displayLine = _ref.displayLine,
742
+ defaultDisplay = _ref.defaultDisplay,
668
743
  isExtra = _ref.isExtra,
669
744
  list = _ref.list,
745
+ label = _ref.label,
746
+ labelHidden = _ref.labelHidden,
747
+ itemLabelHidden = _ref.itemLabelHidden,
748
+ unfoldText = _ref.unfoldText,
749
+ foldText = _ref.foldText,
750
+ extra = _ref.extra,
670
751
  originValue = _ref.value,
671
752
  onChange = _ref.onChange;
672
753
  var value = React.useMemo(function () {
673
754
  return filterNull(originValue);
674
755
  }, [originValue]);
675
756
 
676
- var _useState = React.useState(false),
757
+ var _useState = React.useState(defaultDisplay),
677
758
  display = _useState[0],
678
759
  setDisplay = _useState[1];
679
760
 
@@ -683,10 +764,12 @@ var Filter = function Filter(_ref) {
683
764
  var renderList = function renderList(list) {
684
765
  return list.map(function (item, index) {
685
766
  return /*#__PURE__*/React__default["default"].createElement(antd.Space, {
686
- key: index
767
+ key: index,
768
+ className: "react-filter-line"
687
769
  }, item.map(function (item, index) {
688
770
  return React.cloneElement(item, {
689
- key: index
771
+ key: index,
772
+ labelHidden: itemLabelHidden
690
773
  });
691
774
  }));
692
775
  });
@@ -708,9 +791,9 @@ var Filter = function Filter(_ref) {
708
791
  className: "react-filter"
709
792
  }, /*#__PURE__*/React__default["default"].createElement("div", {
710
793
  className: "react-filter-inner"
711
- }, /*#__PURE__*/React__default["default"].createElement(FilterItem, {
794
+ }, /*#__PURE__*/React__default["default"].createElement("div", null, labelHidden ? null : /*#__PURE__*/React__default["default"].createElement(antd.Space, null, /*#__PURE__*/React__default["default"].createElement(FilterItem, {
712
795
  className: "react-filter-selected",
713
- label: "\u7B5B\u9009\u9879"
796
+ label: label
714
797
  }, Object.keys(value).map(function (key) {
715
798
  var item = value[key];
716
799
  if (!item) return null;
@@ -725,7 +808,7 @@ var Filter = function Filter(_ref) {
725
808
  var label = _ref2.label;
726
809
  return label;
727
810
  }).join(",") : item.label);
728
- })), renderList(isExtra ? basicList : list)), display ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(antd.Divider, {
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, {
729
812
  className: "react-filter-divider"
730
813
  }), /*#__PURE__*/React__default["default"].createElement("div", {
731
814
  className: "react-filter-inner"
@@ -741,25 +824,34 @@ var Filter = function Filter(_ref) {
741
824
  return !display;
742
825
  });
743
826
  }
744
- }, display ? "收起筛选条件" : "展开筛选条件"))) : null));
827
+ }, display ? foldText : unfoldText))) : null));
745
828
  };
746
-
747
829
  Filter.type = {
748
830
  City: City,
749
831
  List: List,
750
832
  Range: Range,
751
833
  Text: Text,
752
834
  Selector: Selector,
753
- Check: Check
835
+ Check: Check,
836
+ RadioList: RadioList,
837
+ CheckboxList: CheckboxList
754
838
  };
755
839
  Filter.defaultProps = {
840
+ label: '筛选项',
841
+ labelHidden: false,
842
+ itemLabelHidden: false,
843
+ unfoldText: '展开',
844
+ foldText: '收起',
756
845
  displayLine: 2,
846
+ defaultDisplay: false,
757
847
  isExtra: true,
758
848
  list: [[]],
759
849
  value: {},
850
+ extra: null,
760
851
  onChange: function onChange() {}
761
852
  };
762
853
 
854
+ exports.Filter = Filter;
763
855
  exports.FilterItem = FilterItem;
764
856
  exports.SearchButton = SearchButton;
765
857
  exports.createExtraButton = createExtraButton;