@kne/react-filter 0.1.18 → 0.1.21

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/dist/index.cjs DELETED
@@ -1,905 +0,0 @@
1
- var React = require('react');
2
- var antd = require('antd');
3
- var classnames = require('classnames');
4
- var reactCitySelect = require('@kne/react-city-select');
5
- var lodash = require('lodash');
6
- var useClickOutSide = require('@kne/use-click-outside');
7
-
8
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
-
10
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
- var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
12
- var useClickOutSide__default = /*#__PURE__*/_interopDefaultLegacy(useClickOutSide);
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
- };
19
-
20
- function _extends() {
21
- _extends = Object.assign ? Object.assign.bind() : function (target) {
22
- for (var i = 1; i < arguments.length; i++) {
23
- var source = arguments[i];
24
-
25
- for (var key in source) {
26
- if (Object.prototype.hasOwnProperty.call(source, key)) {
27
- target[key] = source[key];
28
- }
29
- }
30
- }
31
-
32
- return target;
33
- };
34
- return _extends.apply(this, arguments);
35
- }
36
-
37
- function _objectWithoutPropertiesLoose(source, excluded) {
38
- if (source == null) return {};
39
- var target = {};
40
- var sourceKeys = Object.keys(source);
41
- var key, i;
42
-
43
- for (i = 0; i < sourceKeys.length; i++) {
44
- key = sourceKeys[i];
45
- if (excluded.indexOf(key) >= 0) continue;
46
- target[key] = source[key];
47
- }
48
-
49
- return target;
50
- }
51
-
52
- var _excluded$8 = ["label", "labelHidden", "isMore", "moreTrigger"];
53
-
54
- var FilterItem = function FilterItem(_ref) {
55
- var className = _ref.className,
56
- label = _ref.label,
57
- labelHidden = _ref.labelHidden,
58
- isMore = _ref.isMore,
59
- moreTrigger = _ref.moreTrigger,
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
-
73
- return /*#__PURE__*/React__default["default"].createElement(antd.Space, {
74
- className: classnames__default["default"]('react-filter-item', className)
75
- }, labelHidden ? null : /*#__PURE__*/React__default["default"].createElement("div", {
76
- className: "react-filter-item-label"
77
- }, label, ":"), /*#__PURE__*/React__default["default"].createElement("div", {
78
- className: "react-filter-item-children"
79
- }, children));
80
- };
81
-
82
- var withFilterItem = function withFilterItem(WrappedComponent) {
83
- return function (_ref2) {
84
- var label = _ref2.label,
85
- labelHidden = _ref2.labelHidden,
86
- isMore = _ref2.isMore,
87
- moreTrigger = _ref2.moreTrigger,
88
- props = _objectWithoutPropertiesLoose(_ref2, _excluded$8);
89
-
90
- return /*#__PURE__*/React__default["default"].createElement(FilterItem, {
91
- label: label,
92
- labelHidden: labelHidden,
93
- isMore: isMore,
94
- moreTrigger: moreTrigger
95
- }, /*#__PURE__*/React__default["default"].createElement(WrappedComponent, _extends({}, props, {
96
- label: label,
97
- isMore: isMore
98
- })));
99
- };
100
- };
101
-
102
- var _excluded$7 = ["value", "label"];
103
- var CheckableTag = antd.Tag.CheckableTag;
104
- var context = React.createContext({});
105
- var Provider = context.Provider;
106
-
107
- var List = function List(_ref) {
108
- var label = _ref.label,
109
- labelHidden = _ref.labelHidden,
110
- name = _ref.name,
111
- size = _ref.size,
112
- children = _ref.children,
113
- options = _ref.options,
114
- more = _ref.more;
115
-
116
- var _useConsumer = useConsumer(),
117
- value = _useConsumer.value,
118
- onChange = _useConsumer.onChange;
119
-
120
- var currentValue = function () {
121
- var originValue = lodash.get(value, name);
122
-
123
- if (size === 1) {
124
- return originValue !== void 0 ? [originValue] : [];
125
- } else {
126
- return originValue || [];
127
- }
128
- }();
129
-
130
- var changeHandler = function changeHandler(value) {
131
- if (size === 1) {
132
- return onChange(name, value[0]);
133
- } else {
134
- return onChange(name, value);
135
- }
136
- };
137
-
138
- var createCheckedChangeHandler = function createCheckedChangeHandler(value) {
139
- return function (checked) {
140
- if (checked) {
141
- var newList = currentValue.slice(0);
142
-
143
- if (currentValue.length < size) {
144
- newList.push(value);
145
- }
146
-
147
- if (currentValue.length === size && size === 1) {
148
- newList = [value];
149
- }
150
-
151
- if (currentValue.length >= size && size > 1) {
152
- antd.message.error("\u6700\u591A\u9009\u62E9" + size + "\u4E2A");
153
- return;
154
- }
155
-
156
- changeHandler(newList);
157
- } else {
158
- var _newList = currentValue.slice(0);
159
-
160
- _newList.splice(currentValue.indexOf(value), 1);
161
-
162
- changeHandler(_newList);
163
- }
164
- };
165
- };
166
-
167
- var computedChildren = function () {
168
- if (Array.isArray(options)) {
169
- return options.map(function (_ref2) {
170
- var label = _ref2.label,
171
- value = _ref2.value;
172
- return /*#__PURE__*/React__default["default"].createElement(List.Item, {
173
- key: value,
174
- value: value,
175
- label: label
176
- });
177
- });
178
- }
179
-
180
- if (lodash.isFunction(children)) {
181
- return children({
182
- value: currentValue,
183
- onChange: changeHandler
184
- });
185
- }
186
-
187
- return children;
188
- }();
189
-
190
- return /*#__PURE__*/React__default["default"].createElement(FilterItem, {
191
- label: label,
192
- labelHidden: labelHidden
193
- }, /*#__PURE__*/React__default["default"].createElement(Provider, {
194
- value: {
195
- currentValue: currentValue,
196
- createCheckedChangeHandler: createCheckedChangeHandler
197
- }
198
- }, computedChildren, more ? function () {
199
- if (lodash.isFunction(more)) {
200
- return more({
201
- name: name,
202
- size: size,
203
- label: label,
204
- value: currentValue,
205
- onChange: changeHandler
206
- });
207
- }
208
-
209
- var children = more.children,
210
- _onClick = more.onClick;
211
- return /*#__PURE__*/React__default["default"].createElement(List.Item, _extends({}, more, {
212
- onClick: function onClick(e) {
213
- _onClick({
214
- name: name,
215
- label: label,
216
- value: currentValue,
217
- onChange: changeHandler
218
- }, e);
219
- },
220
- label: children || "其他"
221
- }));
222
- }() : null));
223
- };
224
-
225
- List.Item = function (_ref3) {
226
- var value = _ref3.value,
227
- label = _ref3.label,
228
- props = _objectWithoutPropertiesLoose(_ref3, _excluded$7);
229
-
230
- var _useContext = React.useContext(context),
231
- currentValue = _useContext.currentValue,
232
- createCheckedChangeHandler = _useContext.createCheckedChangeHandler;
233
-
234
- var itemProps = {};
235
-
236
- if (value !== void 0) {
237
- itemProps.checked = currentValue.findIndex(function (item) {
238
- return lodash.isEqual(lodash.get(item, 'value'), value);
239
- }) > -1;
240
- itemProps.onChange = createCheckedChangeHandler({
241
- label: label,
242
- value: value
243
- });
244
- }
245
-
246
- return /*#__PURE__*/React__default["default"].createElement(CheckableTag, _extends({}, props, itemProps), label);
247
- };
248
-
249
- List.defaultProps = {
250
- size: 2
251
- };
252
-
253
- var _excluded$6 = ["label", "labelHidden", "name", "size", "isMore"];
254
- var Item = List.Item;
255
-
256
- var City = function City(_ref) {
257
- var label = _ref.label,
258
- labelHidden = _ref.labelHidden,
259
- name = _ref.name,
260
- size = _ref.size;
261
- _objectWithoutPropertiesLoose(_ref, _excluded$6);
262
-
263
- return /*#__PURE__*/React__default["default"].createElement(List, {
264
- labelHidden: labelHidden,
265
- label: label,
266
- name: name,
267
- size: size,
268
- more: {
269
- children: "其他",
270
- onClick: function onClick(_ref2) {
271
- var value = _ref2.value,
272
- _onChange = _ref2.onChange;
273
- reactCitySelect.createCitySelect({
274
- size: size,
275
- defaultValue: value.map(function (_ref3) {
276
- var value = _ref3.value;
277
- return value;
278
- }),
279
- onChange: function onChange(value) {
280
- Promise.all(value.map(function (id) {
281
- return reactCitySelect.apis.getCity(id).then(function (_ref4) {
282
- var city = _ref4.city;
283
- return {
284
- label: city.name,
285
- value: city.code
286
- };
287
- });
288
- })).then(function (value) {
289
- return _onChange(value);
290
- });
291
- }
292
- });
293
- }
294
- }
295
- }, function (_ref5) {
296
- var currentValue = _ref5.value;
297
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(reactCitySelect.RemoteData, {
298
- loader: reactCitySelect.apis.getChinaHotCities
299
- }, function (data) {
300
- var otherList = currentValue.filter(function (_ref6) {
301
- var code = _ref6.value;
302
- return !data.find(function (item) {
303
- return item.code === code;
304
- });
305
- });
306
- var extraLength = 0;
307
- data.forEach(function (item, index) {
308
- if (currentValue.findIndex(function (_ref7) {
309
- var value = _ref7.value;
310
- return value === item.code;
311
- }) > -1 && index >= data.length - otherList.length) {
312
- extraLength += 1;
313
- }
314
- });
315
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, otherList.map(function (_ref8) {
316
- var code = _ref8.value;
317
- return /*#__PURE__*/React__default["default"].createElement(reactCitySelect.DisplayCity, {
318
- id: code,
319
- key: code
320
- }, function (_ref9) {
321
- var item = _ref9.city;
322
- return /*#__PURE__*/React__default["default"].createElement(Item, {
323
- value: code,
324
- label: item.name
325
- });
326
- });
327
- }), data.filter(function (item, index) {
328
- return currentValue.findIndex(function (_ref10) {
329
- var value = _ref10.value;
330
- return value === item.code;
331
- }) > -1 || index < data.length - otherList.length - extraLength;
332
- }).map(function (item) {
333
- return /*#__PURE__*/React__default["default"].createElement(Item, {
334
- key: item.code,
335
- value: item.code,
336
- label: item.name
337
- });
338
- }));
339
- }));
340
- });
341
- };
342
-
343
- var SearchButton = function SearchButton(_ref) {
344
- var name = _ref.name,
345
- size = _ref.size,
346
- isMore = _ref.isMore,
347
- template = _ref.template,
348
- children = _ref.children,
349
- defaultValue = _ref.defaultValue,
350
- defaultActive = _ref.defaultActive,
351
- onBlur = _ref.onBlur,
352
- onSearch = _ref.onSearch,
353
- onBeforeSearch = _ref.onBeforeSearch,
354
- onActiveChange = _ref.onActiveChange,
355
- buttonText = _ref.buttonText;
356
-
357
- var _useConsumer = useConsumer(),
358
- aValue = _useConsumer.value,
359
- onChange = _useConsumer.onChange;
360
-
361
- var currentValue = aValue[name];
362
-
363
- var _useState = React.useState(defaultValue || lodash.get(currentValue, "value")),
364
- value = _useState[0],
365
- setValue = _useState[1];
366
-
367
- var _useState2 = React.useState(defaultActive),
368
- active = _useState2[0],
369
- setActive = _useState2[1];
370
-
371
- var withTemplate = function withTemplate(value) {
372
- if (value === void 0) {
373
- value = '';
374
- }
375
-
376
- return {
377
- value: value,
378
- label: lodash.isFunction(template) ? template(value) : value.toString()
379
- };
380
- };
381
-
382
- var ref = useClickOutSide__default["default"](function () {
383
- setValue(lodash.get(currentValue, "value"));
384
- setActive(false);
385
- onBlur && onBlur();
386
- });
387
- var activeChangeRef = React.useRef(onActiveChange);
388
- activeChangeRef.current = onActiveChange;
389
- React.useEffect(function () {
390
- activeChangeRef.current && activeChangeRef.current(active);
391
- }, [active]);
392
- return /*#__PURE__*/React__default["default"].createElement("div", {
393
- className: classnames__default["default"]("react-filter-search-button", {
394
- "is-active": active && !isMore
395
- }),
396
- ref: ref,
397
- onMouseEnter: function onMouseEnter() {
398
- !active && setActive(true);
399
- },
400
- onMouseLeave: function onMouseLeave() {
401
- active && setActive(false);
402
- }
403
- }, /*#__PURE__*/React__default["default"].createElement(antd.Space, {
404
- className: "inner",
405
- size: 0
406
- }, /*#__PURE__*/React__default["default"].createElement("div", null, children({
407
- value: value,
408
- setValue: setValue,
409
- setActive: setActive
410
- })), active || isMore ? /*#__PURE__*/React__default["default"].createElement(antd.Button, {
411
- className: classnames__default["default"]("react-filter-search-confirm", {
412
- "is-more": isMore
413
- }),
414
- size: "small",
415
- type: "primary",
416
- onClick: function onClick(e) {
417
- e.stopPropagation();
418
-
419
- if (onBeforeSearch && onBeforeSearch(value) === false) {
420
- return;
421
- }
422
-
423
- onChange(name, Number.isInteger(size) && size > 1 ? [withTemplate(value)] : withTemplate(value));
424
- setActive(false);
425
- onSearch && onSearch({
426
- value: value
427
- });
428
- }
429
- }, buttonText) : null));
430
- };
431
-
432
- SearchButton.defaultProps = {
433
- defaultActive: false,
434
- buttonText: "确定"
435
- };
436
-
437
- var RangeInner = function RangeInner(_ref) {
438
- var name = _ref.name,
439
- size = _ref.size,
440
- isMore = _ref.isMore,
441
- defaultActive = _ref.defaultActive,
442
- template = _ref.template,
443
- onBlur = _ref.onBlur,
444
- onSearch = _ref.onSearch,
445
- _onActiveChange = _ref.onActiveChange,
446
- startProps = _ref.startProps,
447
- endProps = _ref.endProps,
448
- placeholder = _ref.placeholder;
449
-
450
- var _useState = React.useState(null),
451
- error = _useState[0],
452
- setError = _useState[1];
453
-
454
- var check = function check(value) {
455
- setError(null);
456
-
457
- if (!Array.isArray(value)) {
458
- return false;
459
- }
460
-
461
- if (lodash.isNumber(value[1]) && value[0] > value[1]) {
462
- setError("最大值不能小于最小值");
463
- return false;
464
- }
465
-
466
- return true;
467
- };
468
-
469
- return /*#__PURE__*/React__default["default"].createElement(SearchButton, {
470
- size: size,
471
- template: template,
472
- isMore: isMore,
473
- onBlur: onBlur,
474
- defaultActive: defaultActive,
475
- name: name,
476
- onSearch: onSearch,
477
- onBeforeSearch: function onBeforeSearch(value) {
478
- return check(value);
479
- },
480
- onActiveChange: function onActiveChange(active) {
481
- if (!active) {
482
- setError(null);
483
- }
484
-
485
- _onActiveChange && _onActiveChange(active);
486
- }
487
- }, function (_ref2) {
488
- var value = _ref2.value,
489
- setValue = _ref2.setValue,
490
- setActive = _ref2.setActive;
491
- return /*#__PURE__*/React__default["default"].createElement(antd.Tooltip, {
492
- visible: !!error,
493
- title: error,
494
- placement: "bottomRight"
495
- }, /*#__PURE__*/React__default["default"].createElement(antd.Space, {
496
- size: "small"
497
- }, /*#__PURE__*/React__default["default"].createElement(antd.InputNumber, _extends({
498
- size: "small"
499
- }, startProps, {
500
- value: lodash.get(value, 0),
501
- onChange: function onChange(inputValue) {
502
- var target = [inputValue, lodash.get(value, 1)];
503
- check(target);
504
- setValue(target);
505
- },
506
- onFocus: function onFocus() {
507
- setActive(true);
508
- },
509
- placeholder: Array.isArray(placeholder) ? placeholder[0] : placeholder || "请输入"
510
- })), "~", /*#__PURE__*/React__default["default"].createElement(antd.InputNumber, _extends({
511
- size: "small"
512
- }, endProps, {
513
- value: lodash.get(value, 1),
514
- onChange: function onChange(inputValue) {
515
- var target = [lodash.get(value, 0), inputValue];
516
- check(target);
517
- setValue(target);
518
- },
519
- onFocus: function onFocus() {
520
- setActive(true);
521
- },
522
- placeholder: Array.isArray(placeholder) ? placeholder[0] : placeholder || "请输入"
523
- }))));
524
- });
525
- };
526
- var Range = withFilterItem(RangeInner);
527
-
528
- var _excluded$5 = ["name", "label", "isMore", "template", "defaultActive", "onBlur", "onSearch", "onActiveChange", "placeholder"];
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);
540
-
541
- return /*#__PURE__*/React__default["default"].createElement(SearchButton, {
542
- defaultActive: defaultActive,
543
- isMore: isMore,
544
- onBlur: onBlur,
545
- template: template,
546
- name: name,
547
- onSearch: onSearch,
548
- onActiveChange: function onActiveChange(active) {
549
- _onActiveChange && _onActiveChange(active);
550
- }
551
- }, function (_ref2) {
552
- var value = _ref2.value,
553
- setValue = _ref2.setValue,
554
- setActive = _ref2.setActive;
555
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(antd.Input, _extends({
556
- size: "small"
557
- }, props, {
558
- placeholder: placeholder || label,
559
- value: value,
560
- onChange: function onChange(e) {
561
- setValue(e.target.value);
562
- },
563
- onFocus: function onFocus() {
564
- setActive(true);
565
- }
566
- })));
567
- });
568
- };
569
- var Text = withFilterItem(TextInner);
570
-
571
- var _excluded$4 = ["name", "label", "placeholder", "isMore"];
572
- var SelectorInner = function SelectorInner(_ref) {
573
- var name = _ref.name,
574
- label = _ref.label,
575
- placeholder = _ref.placeholder,
576
- props = _objectWithoutPropertiesLoose(_ref, _excluded$4);
577
-
578
- var _useConsumer = useConsumer(),
579
- aValue = _useConsumer.value,
580
- _onChange = _useConsumer.onChange;
581
-
582
- var currentValue = aValue[name];
583
- return /*#__PURE__*/React__default["default"].createElement(antd.Select, _extends({}, props, {
584
- placeholder: label || placeholder,
585
- size: "small",
586
- value: currentValue,
587
- onChange: function onChange(value, item) {
588
- _onChange(name, item);
589
- }
590
- }));
591
- };
592
- var Selector = withFilterItem(SelectorInner);
593
-
594
- var _excluded$3 = ["name", "label", "className", "isMore"];
595
-
596
- var Check = function Check(_ref) {
597
- var name = _ref.name,
598
- label = _ref.label,
599
- className = _ref.className,
600
- props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
601
-
602
- var _useConsumer = useConsumer(),
603
- aValue = _useConsumer.value,
604
- _onChange = _useConsumer.onChange;
605
-
606
- var currentValue = aValue[name];
607
- return /*#__PURE__*/React__default["default"].createElement(antd.Checkbox, _extends({}, props, {
608
- className: classnames__default["default"]('react-filter-item', className),
609
- size: "small",
610
- checked: currentValue,
611
- onChange: function onChange(e) {
612
- _onChange(name, e.target.checked ? {
613
- value: true,
614
- label: label
615
- } : null);
616
- }
617
- }), label);
618
- };
619
-
620
- var _excluded$2 = ["label", "name", "options", "isMore"];
621
- var RadioList = withFilterItem(function (_ref) {
622
- var name = _ref.name,
623
- options = _ref.options,
624
- props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
625
-
626
- var _useConsumer = useConsumer(),
627
- aValue = _useConsumer.value,
628
- _onChange = _useConsumer.onChange;
629
-
630
- var currentValue = aValue[name];
631
- return /*#__PURE__*/React__default["default"].createElement(antd.Radio.Group, _extends({}, props, {
632
- options: options,
633
- value: lodash.get(currentValue, 'value'),
634
- onChange: function onChange(e) {
635
- var item = options.find(function (item) {
636
- return item.value === e.target.value;
637
- });
638
-
639
- _onChange(name, item);
640
- }
641
- }));
642
- });
643
-
644
- var _excluded$1 = ["label", "name", "options", "isMore"];
645
- var CheckboxList = withFilterItem(function (_ref) {
646
- var name = _ref.name,
647
- options = _ref.options,
648
- props = _objectWithoutPropertiesLoose(_ref, _excluded$1);
649
-
650
- var _useConsumer = useConsumer(),
651
- aValue = _useConsumer.value,
652
- _onChange = _useConsumer.onChange;
653
-
654
- var currentValue = aValue[name];
655
- return /*#__PURE__*/React__default["default"].createElement(antd.Checkbox.Group, _extends({}, props, {
656
- value: (currentValue || []).map(function (_ref2) {
657
- var value = _ref2.value;
658
- return value;
659
- }),
660
- onChange: function onChange(value) {
661
- var item = value.map(function (value) {
662
- return options.find(function (item) {
663
- return item.value === value;
664
- });
665
- });
666
- console.log(item);
667
-
668
- _onChange(name, item);
669
- },
670
- options: options
671
- }));
672
- });
673
-
674
- var filterNull = function filterNull(item) {
675
- var target = Object.assign({}, item);
676
- Object.keys(target).forEach(function (key) {
677
- var item = target[key];
678
-
679
- (function () {
680
- if (Array.isArray(item) && item.length > 0 && item.every(function (item) {
681
- return item.value === void 0 || item.value === null || item.value === "";
682
- })) {
683
- delete target[key];
684
- return;
685
- }
686
-
687
- if (Array.isArray(item) && item.length === 0) {
688
- delete target[key];
689
- return;
690
- }
691
-
692
- if (item && Array.isArray(item.value) && (item.value.length === 0 || item.value.every(function (item) {
693
- return item === void 0 || item === null || item === "";
694
- }))) {
695
- delete target[key];
696
- return;
697
- }
698
-
699
- if (item === void 0 || item === null || !Array.isArray(item) && item && (item.value === void 0 || item.value === null || item.value === "")) {
700
- delete target[key];
701
- return;
702
- }
703
- })();
704
- });
705
- return target;
706
- };
707
-
708
- var Filter = function Filter(_ref) {
709
- var displayLine = _ref.displayLine,
710
- defaultDisplay = _ref.defaultDisplay,
711
- isExtra = _ref.isExtra,
712
- list = _ref.list,
713
- label = _ref.label,
714
- labelHidden = _ref.labelHidden,
715
- itemLabelHidden = _ref.itemLabelHidden,
716
- unfoldText = _ref.unfoldText,
717
- foldText = _ref.foldText,
718
- extra = _ref.extra,
719
- more = _ref.more,
720
- moreTrigger = _ref.moreTrigger,
721
- moreLabel = _ref.moreLabel,
722
- originValue = _ref.value,
723
- onChange = _ref.onChange;
724
- var value = React.useMemo(function () {
725
- return filterNull(originValue);
726
- }, [originValue]);
727
-
728
- var _useState = React.useState(defaultDisplay),
729
- display = _useState[0],
730
- setDisplay = _useState[1];
731
-
732
- var basicList = list.slice(0, displayLine),
733
- moreList = list.slice(displayLine);
734
-
735
- var renderList = function renderList(list) {
736
- return list.map(function (item, index) {
737
- return /*#__PURE__*/React__default["default"].createElement(antd.Space, {
738
- key: index,
739
- className: "react-filter-line"
740
- }, item.map(function (item, index) {
741
- return React.cloneElement(item, {
742
- key: index,
743
- labelHidden: itemLabelHidden
744
- });
745
- }));
746
- });
747
- };
748
-
749
- var changeHandler = function changeHandler(name, item) {
750
- var _Object$assign;
751
-
752
- var target = Object.assign({}, value, (_Object$assign = {}, _Object$assign[name] = item, _Object$assign));
753
- onChange(filterNull(target));
754
- };
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;
774
- return /*#__PURE__*/React__default["default"].createElement(Provider$1, {
775
- value: {
776
- value: value,
777
- onChange: changeHandler
778
- }
779
- }, /*#__PURE__*/React__default["default"].createElement("div", {
780
- className: "react-filter"
781
- }, /*#__PURE__*/React__default["default"].createElement("div", {
782
- className: "react-filter-inner"
783
- }, /*#__PURE__*/React__default["default"].createElement("div", null, labelHidden ? null : /*#__PURE__*/React__default["default"].createElement(antd.Space, null, /*#__PURE__*/React__default["default"].createElement(FilterItem, {
784
- className: "react-filter-selected",
785
- label: label
786
- }, Object.keys(value).map(function (key) {
787
- var item = value[key];
788
- if (!item) return null;
789
- if (Array.isArray(item) && item.length === 0) return null;
790
- return /*#__PURE__*/React__default["default"].createElement(antd.Tag, {
791
- key: key,
792
- closable: true,
793
- onClose: function onClose() {
794
- changeHandler(key, null);
795
- }
796
- }, Array.isArray(item) ? item.map(function (_ref2) {
797
- var label = _ref2.label;
798
- return label;
799
- }).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, {
801
- className: "react-filter-divider"
802
- }), /*#__PURE__*/React__default["default"].createElement("div", {
803
- className: "react-filter-inner"
804
- }, renderList(moreList)), moreList.length > 0 ? moreFilter : null) : /*#__PURE__*/React__default["default"].createElement("div", {
805
- className: "react-filter-divider-close"
806
- }), isExtra && list.length > displayLine ? /*#__PURE__*/React__default["default"].createElement(antd.Row, {
807
- className: "react-filter-switch-btn",
808
- justify: "end"
809
- }, /*#__PURE__*/React__default["default"].createElement(antd.Col, null, /*#__PURE__*/React__default["default"].createElement(antd.Button, {
810
- type: "link",
811
- onClick: function onClick() {
812
- setDisplay(function (display) {
813
- return !display;
814
- });
815
- }
816
- }, display ? foldText : unfoldText))) : null));
817
- };
818
-
819
- Filter.type = {
820
- City: City,
821
- List: List,
822
- Range: Range,
823
- Text: Text,
824
- Selector: Selector,
825
- Check: Check,
826
- RadioList: RadioList,
827
- CheckboxList: CheckboxList
828
- };
829
- Filter.defaultProps = {
830
- label: '筛选项',
831
- labelHidden: false,
832
- itemLabelHidden: false,
833
- unfoldText: '展开',
834
- foldText: '收起',
835
- displayLine: 2,
836
- defaultDisplay: false,
837
- isExtra: true,
838
- list: [[]],
839
- more: [],
840
- moreTrigger: 'hover',
841
- moreLabel: '更多',
842
- value: {},
843
- extra: null,
844
- onChange: function onChange() {}
845
- };
846
-
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
-
898
- exports.FilterItem = FilterItem;
899
- exports.SearchButton = SearchButton;
900
- exports.createExtraButton = createExtraButton;
901
- exports["default"] = Filter;
902
- exports.useFilterContext = useConsumer;
903
- exports.withFilterItem = withFilterItem;
904
- exports.withMoreExtraButton = withMoreExtraButton;
905
- //# sourceMappingURL=index.cjs.map