@kne/react-filter 1.0.1 → 1.0.3

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.
@@ -1,9 +1,10 @@
1
1
  import classnames from 'classnames';
2
- import { useContext as useContext$1, createContext, useState, useRef, useCallback, useEffect, createElement, useMemo } from 'react';
2
+ import { useContext as useContext$1, createContext, useState, useEffect, useRef, useCallback, createElement, useMemo } from 'react';
3
3
  import { Space, Row, Col, Tag, Button, Dropdown, Input, InputNumber, DatePicker, Flex, Select, App } from 'antd';
4
4
  import { useIntl, createWithIntlProvider } from '@kne/react-intl';
5
5
  import get from 'lodash/get';
6
6
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
7
+ import { UpOutlined, DownOutlined } from '@ant-design/icons';
7
8
  import clone from 'lodash/clone';
8
9
  import { createPortal } from 'react-dom';
9
10
  import isNumber from 'lodash/isNumber';
@@ -34,7 +35,7 @@ function _objectWithoutPropertiesLoose(r, e) {
34
35
  return t;
35
36
  }
36
37
 
37
- var style$1 = {"filter":"kne-react-filter_b3gMw","filter-item-icon":"kne-react-filter_e3V6h","filter-item-option-icon":"kne-react-filter_dLoYj","filter-title":"kne-react-filter_khFt2","filter-title-hidden":"kne-react-filter_j2mP1","ad-filter-title":"kne-react-filter_HptIY","ad-filter-line":"kne-react-filter_7Ob6-","filter-line":"kne-react-filter_Y9XTa","clean-btn":"kne-react-filter_CJ935","filter-item":"kne-react-filter_JpaMr","un-expand":"kne-react-filter_LfQME","ad-filter-selected":"kne-react-filter_pBsaE","filter-label":"kne-react-filter_Bx3s8","filter-item-wrap":"kne-react-filter_Co4Pg","option":"kne-react-filter_G1cRp","is-active":"kne-react-filter_Aab98","is-visited":"kne-react-filter_Ww12R","un-expand-shadow":"kne-react-filter_2ExqW","filter-item-label":"kne-react-filter_JAmeE","filter-item-field":"kne-react-filter_WvRvl","filter-drop-tag":"kne-react-filter_dG8rq","filter-list":"kne-react-filter_qlWu6","filter-list-scroll-wrap":"kne-react-filter_oaIF4","filter-list-scroll":"kne-react-filter_Jq43Q","filter-scroll-next":"kne-react-filter_BdfSI","filter-list-tag":"kne-react-filter_LV2VI","filter-tag":"kne-react-filter_yyR3u","filter-tag-value":"kne-react-filter_8nm8n","filter-value-tag":"kne-react-filter_tWyCr","filter-value-tag-label":"kne-react-filter_XPzrL","filter-value-tag-content":"kne-react-filter_6e79l","pop-util-content":"kne-react-filter_g-hXk","pop-util-body":"kne-react-filter_4n4MP","date-range-picker-popup":"kne-react-filter_6Zx60","pop-util-overlay":"kne-react-filter_m7Csi","pop-util-mask":"kne-react-filter_o2B3k","pop-util-mask-fade-in":"kne-react-filter_oCXiX","pop-util-mask-leave":"kne-react-filter_qGnRO","pop-util-mask-fade-out":"kne-react-filter_cDx1y","field-item-mobile-popup":"kne-react-filter_wq5nf","pop-util-mobile-expand-down":"kne-react-filter_6RxjE","date-picker-popup":"kne-react-filter_iwLs2","pop-util-mobile-collapse-up":"kne-react-filter_009r-","pop-util-footer":"kne-react-filter_iqe8W","pop-util-text":"kne-react-filter_72gGQ","filter-item-inner":"kne-react-filter_cYX12","filter-item-text":"kne-react-filter_cnMY-","filter-item-number-range":"kne-react-filter_Cv2Bw","filter-item-custom":"kne-react-filter_CBczA","filter-item-custom-active":"kne-react-filter_ldxUR","filter-item-number-range-split":"kne-react-filter_4p3C9","filter-item-number-input":"kne-react-filter_yy1y1","range-picker":"kne-react-filter_81zQn","cascader-select-wrap":"kne-react-filter_UHBfi","cascader-dropdown-menu":"kne-react-filter_bY8JQ","filter-advanced":"kne-react-filter_rg45N","filter-advanced-item-other":"kne-react-filter_HcsA8","filter-advanced-item-other-inner":"kne-react-filter_4Bqtz","filter-advanced-more":"kne-react-filter_jVH7z","filter-scroll-next-icon":"kne-react-filter_Fd6ab"};
38
+ var style$1 = {"filter":"kne-react-filter_b3gMw","filter-item-icon":"kne-react-filter_e3V6h","filter-item-option-icon":"kne-react-filter_dLoYj","filter-title":"kne-react-filter_khFt2","filter-title-hidden":"kne-react-filter_j2mP1","ad-filter-title":"kne-react-filter_HptIY","ad-filter-line":"kne-react-filter_7Ob6-","filter-line":"kne-react-filter_Y9XTa","clean-btn":"kne-react-filter_CJ935","filter-item":"kne-react-filter_JpaMr","un-expand":"kne-react-filter_LfQME","ad-filter-selected":"kne-react-filter_pBsaE","filter-label":"kne-react-filter_Bx3s8","filter-item-wrap":"kne-react-filter_Co4Pg","option":"kne-react-filter_G1cRp","is-active":"kne-react-filter_Aab98","is-visited":"kne-react-filter_Ww12R","un-expand-shadow":"kne-react-filter_2ExqW","filter-item-label":"kne-react-filter_JAmeE","filter-item-field":"kne-react-filter_WvRvl","filter-drop-tag":"kne-react-filter_dG8rq","filter-list":"kne-react-filter_qlWu6","filter-list-scroll-wrap":"kne-react-filter_oaIF4","filter-list-scroll":"kne-react-filter_Jq43Q","filter-scroll-next":"kne-react-filter_BdfSI","filter-list-tag":"kne-react-filter_LV2VI","filter-tag":"kne-react-filter_yyR3u","filter-tag-value":"kne-react-filter_8nm8n","filter-value-tag":"kne-react-filter_tWyCr","filter-value-tag-label":"kne-react-filter_XPzrL","filter-value-tag-content":"kne-react-filter_6e79l","filter-value-display-content":"kne-react-filter_v2dnw","filter-value-tags-wrap":"kne-react-filter_J1wBU","filter-value-tags":"kne-react-filter_rRhFE","filter-value-actions":"kne-react-filter_-Brt9","filter-value-toggle":"kne-react-filter_WuL0c","pop-util-content":"kne-react-filter_g-hXk","pop-util-body":"kne-react-filter_4n4MP","date-range-picker-popup":"kne-react-filter_6Zx60","pop-util-overlay":"kne-react-filter_m7Csi","pop-util-mask":"kne-react-filter_o2B3k","pop-util-mask-fade-in":"kne-react-filter_oCXiX","pop-util-mask-leave":"kne-react-filter_qGnRO","pop-util-mask-fade-out":"kne-react-filter_cDx1y","field-item-mobile-popup":"kne-react-filter_wq5nf","pop-util-mobile-expand-down":"kne-react-filter_6RxjE","date-picker-popup":"kne-react-filter_iwLs2","pop-util-mobile-collapse-up":"kne-react-filter_009r-","pop-util-footer":"kne-react-filter_iqe8W","pop-util-text":"kne-react-filter_72gGQ","filter-item-inner":"kne-react-filter_cYX12","filter-item-text":"kne-react-filter_cnMY-","filter-item-number-range":"kne-react-filter_Cv2Bw","filter-item-custom":"kne-react-filter_CBczA","filter-item-custom-active":"kne-react-filter_ldxUR","filter-item-number-range-split":"kne-react-filter_4p3C9","filter-item-number-input":"kne-react-filter_yy1y1","range-picker":"kne-react-filter_81zQn","cascader-select-wrap":"kne-react-filter_UHBfi","cascader-dropdown-menu":"kne-react-filter_bY8JQ","filter-advanced":"kne-react-filter_rg45N","filter-advanced-item-other":"kne-react-filter_HcsA8","filter-advanced-item-other-inner":"kne-react-filter_4Bqtz","filter-advanced-more":"kne-react-filter_jVH7z","filter-value-display":"kne-react-filter_8-R34","is-not-overflow":"kne-react-filter_TM1E2","is-expand":"kne-react-filter_7aclr","filter-value-scroll-prev-shadow":"kne-react-filter_C1t-q","filter-value-scroll-next-shadow":"kne-react-filter_ZFoeL","is-overflow":"kne-react-filter_GhFCl","filter-value-action-placeholder":"kne-react-filter_wGZp6","filter-value-action-right":"kne-react-filter_vyPwo","filter-scroll-prev-shadow":"kne-react-filter_fyhz3","filter-scroll-next-icon":"kne-react-filter_Fd6ab"};
38
39
 
39
40
  const context = /*#__PURE__*/createContext({});
40
41
  const {
@@ -42,6 +43,78 @@ const {
42
43
  } = context;
43
44
  const useContext = () => useContext$1(context);
44
45
 
46
+ const useMobile = () => {
47
+ const [isMobile, setIsMobile] = useState(false);
48
+ useEffect(() => {
49
+ if (typeof window === 'undefined') return;
50
+ const mediaQuery = window.matchMedia('(max-width: 768px)');
51
+ const updateIsMobile = () => {
52
+ setIsMobile(mediaQuery.matches);
53
+ };
54
+ updateIsMobile();
55
+ mediaQuery.addEventListener ? mediaQuery.addEventListener('change', updateIsMobile) : mediaQuery.addListener(updateIsMobile);
56
+ return () => {
57
+ mediaQuery.removeEventListener ? mediaQuery.removeEventListener('change', updateIsMobile) : mediaQuery.removeListener(updateIsMobile);
58
+ };
59
+ }, []);
60
+ return isMobile;
61
+ };
62
+
63
+ const useHorizontalScrollShadows = ({
64
+ enabled,
65
+ suspend: _suspend = false,
66
+ preserveOverflowOnSuspend: _preserveOverflowOnSuspend = false,
67
+ refreshKey
68
+ } = {}) => {
69
+ const scrollRef = useRef(null);
70
+ const [isOverflow, setIsOverflow] = useState(false);
71
+ const [showScrollPrev, setShowScrollPrev] = useState(false);
72
+ const [showScrollNext, setShowScrollNext] = useState(false);
73
+ const update = useCallback(() => {
74
+ const el = scrollRef.current;
75
+ if (!el || !enabled) {
76
+ setShowScrollPrev(false);
77
+ setShowScrollNext(false);
78
+ setIsOverflow(false);
79
+ return;
80
+ }
81
+ if (_suspend) {
82
+ setShowScrollPrev(false);
83
+ setShowScrollNext(false);
84
+ if (!_preserveOverflowOnSuspend) {
85
+ setIsOverflow(false);
86
+ }
87
+ return;
88
+ }
89
+ setIsOverflow(el.scrollWidth > el.clientWidth);
90
+ setShowScrollPrev(el.scrollLeft > 1);
91
+ setShowScrollNext(el.scrollWidth > el.clientWidth && el.scrollLeft + el.clientWidth < el.scrollWidth - 1);
92
+ }, [enabled, _preserveOverflowOnSuspend, _suspend]);
93
+ useEffect(() => {
94
+ const el = scrollRef.current;
95
+ if (!el || !enabled || _suspend) {
96
+ update();
97
+ return;
98
+ }
99
+ update();
100
+ el.addEventListener('scroll', update);
101
+ window.addEventListener('resize', update);
102
+ const rafId = window.requestAnimationFrame(update);
103
+ return () => {
104
+ el.removeEventListener('scroll', update);
105
+ window.removeEventListener('resize', update);
106
+ window.cancelAnimationFrame(rafId);
107
+ };
108
+ }, [enabled, refreshKey, _suspend, update]);
109
+ return {
110
+ scrollRef,
111
+ isOverflow,
112
+ showScrollPrev,
113
+ showScrollNext,
114
+ updateScrollShadowVisible: update
115
+ };
116
+ };
117
+
45
118
  const Line$1 = ({
46
119
  list,
47
120
  children
@@ -91,54 +164,20 @@ const FilterLines = ({
91
164
  const hasMore = _list.length > _displayLine;
92
165
  const mobileList = _list.reduce((result, item) => result.concat(Array.isArray(item) ? item : [item]), []);
93
166
  const [isExpand, setIsExpand] = useState(false);
94
- const [isMobile, setIsMobile] = useState(false);
95
- const [showScrollNext, setShowScrollNext] = useState(false);
96
- const scrollRef = useRef(null);
167
+ const isMobile = useMobile();
168
+ const {
169
+ scrollRef,
170
+ showScrollPrev,
171
+ showScrollNext
172
+ } = useHorizontalScrollShadows({
173
+ enabled: isMobile,
174
+ refreshKey: _list
175
+ });
97
176
  const {
98
177
  formatMessage
99
178
  } = useIntl({
100
179
  moduleName: 'Filter'
101
180
  });
102
- const updateScrollNextVisible = useCallback(() => {
103
- const el = scrollRef.current;
104
- if (!el) {
105
- setShowScrollNext(false);
106
- return;
107
- }
108
- setShowScrollNext(el.scrollWidth > el.clientWidth && el.scrollLeft + el.clientWidth < el.scrollWidth - 1);
109
- }, []);
110
- useEffect(() => {
111
- if (typeof window === 'undefined') return;
112
- const mediaQuery = window.matchMedia('(max-width: 768px)');
113
- const updateIsMobile = () => {
114
- setIsMobile(mediaQuery.matches);
115
- };
116
- updateIsMobile();
117
- mediaQuery.addEventListener ? mediaQuery.addEventListener('change', updateIsMobile) : mediaQuery.addListener(updateIsMobile);
118
- return () => {
119
- mediaQuery.removeEventListener ? mediaQuery.removeEventListener('change', updateIsMobile) : mediaQuery.removeListener(updateIsMobile);
120
- };
121
- }, []);
122
- useEffect(() => {
123
- if (!isMobile) {
124
- setShowScrollNext(false);
125
- return;
126
- }
127
- const el = scrollRef.current;
128
- if (!el) return;
129
- updateScrollNextVisible();
130
- const update = () => {
131
- updateScrollNextVisible();
132
- };
133
- el.addEventListener('scroll', update);
134
- window.addEventListener('resize', update);
135
- const rafId = window.requestAnimationFrame(update);
136
- return () => {
137
- el.removeEventListener('scroll', update);
138
- window.removeEventListener('resize', update);
139
- window.cancelAnimationFrame(rafId);
140
- };
141
- }, [isMobile, _list, updateScrollNextVisible]);
142
181
  const scrollToNext = useCallback(() => {
143
182
  const el = scrollRef.current;
144
183
  if (!el) return;
@@ -146,7 +185,7 @@ const FilterLines = ({
146
185
  left: el.scrollLeft + el.clientWidth * 0.8,
147
186
  behavior: 'smooth'
148
187
  });
149
- }, []);
188
+ }, [scrollRef]);
150
189
  const scrollItemIntoView = useCallback(e => {
151
190
  if (!isMobile) return;
152
191
  const container = scrollRef.current;
@@ -157,7 +196,7 @@ const FilterLines = ({
157
196
  block: 'nearest',
158
197
  inline: 'center'
159
198
  });
160
- }, [isMobile]);
199
+ }, [isMobile, scrollRef]);
161
200
  return /*#__PURE__*/jsxs(Fragment, {
162
201
  children: [/*#__PURE__*/jsxs(Space, {
163
202
  className: classnames(style$1['filter-title'], 'filter-title', className),
@@ -177,7 +216,9 @@ const FilterLines = ({
177
216
  flex: 1,
178
217
  children: /*#__PURE__*/jsxs("div", {
179
218
  className: style$1['filter-list-scroll-wrap'],
180
- children: [/*#__PURE__*/jsx("div", {
219
+ children: [isMobile && showScrollPrev ? /*#__PURE__*/jsx("div", {
220
+ className: style$1['filter-scroll-prev-shadow']
221
+ }) : null, /*#__PURE__*/jsx("div", {
181
222
  className: style$1['filter-list-scroll'],
182
223
  ref: scrollRef,
183
224
  onClick: scrollItemIntoView,
@@ -347,8 +388,44 @@ const FilterValueDisplay = withLocale(({
347
388
  } = useIntl({
348
389
  moduleName: 'Filter'
349
390
  });
391
+ const [isExpand, setIsExpand] = useState(false);
392
+ const isMobile = useMobile();
393
+ const {
394
+ scrollRef,
395
+ isOverflow,
396
+ showScrollPrev,
397
+ showScrollNext
398
+ } = useHorizontalScrollShadows({
399
+ enabled: isMobile,
400
+ suspend: isExpand,
401
+ preserveOverflowOnSuspend: true,
402
+ refreshKey: filterValue
403
+ });
404
+ const tags = filterValue.map(({
405
+ name,
406
+ label,
407
+ value
408
+ }, index) => {
409
+ const valueLabel = Array.isArray(value) ? value.map(item => item.label).join(',') : value == null ? void 0 : value.label;
410
+ return /*#__PURE__*/jsxs(Tag, {
411
+ closable: true,
412
+ className: style$1['filter-value-tag'],
413
+ onClose: () => {
414
+ const newValue = filterValue.slice(0);
415
+ newValue.splice(index, 1);
416
+ onChange(newValue);
417
+ },
418
+ children: [/*#__PURE__*/jsxs("span", {
419
+ className: style$1['filter-value-tag-label'],
420
+ children: [label, ":"]
421
+ }), /*#__PURE__*/jsx("span", {
422
+ className: style$1['filter-value-tag-content'],
423
+ children: valueLabel
424
+ })]
425
+ }, name);
426
+ });
350
427
  return /*#__PURE__*/jsxs(Space, {
351
- className: style$1['filter-title'],
428
+ className: classnames(style$1['filter-title'], style$1['filter-value-display']),
352
429
  align: "top",
353
430
  size: 16,
354
431
  children: [/*#__PURE__*/jsx("span", {
@@ -356,31 +433,57 @@ const FilterValueDisplay = withLocale(({
356
433
  children: formatMessage({
357
434
  id: 'selectedText'
358
435
  })
359
- }), /*#__PURE__*/jsxs("div", {
360
- className: style$1['filter-line'],
361
- children: [filterValue.map(({
362
- name,
363
- label,
364
- value
365
- }, index) => {
366
- const valueLabel = Array.isArray(value) ? value.map(item => item.label).join(',') : value == null ? void 0 : value.label;
367
- return /*#__PURE__*/jsxs(Tag, {
368
- closable: true,
369
- className: style$1['filter-value-tag'],
370
- onClose: () => {
371
- const newValue = filterValue.slice(0);
372
- newValue.splice(index, 1);
373
- onChange(newValue);
436
+ }), isMobile ? /*#__PURE__*/jsxs("div", {
437
+ className: classnames(style$1['filter-value-display-content'], !isOverflow && style$1['is-not-overflow']),
438
+ children: [/*#__PURE__*/jsxs("div", {
439
+ className: classnames(style$1['filter-value-tags-wrap'], isExpand && style$1['is-expand']),
440
+ children: [showScrollPrev ? /*#__PURE__*/jsx("div", {
441
+ className: classnames(style$1['filter-scroll-prev-shadow'], style$1['filter-value-scroll-prev-shadow'])
442
+ }) : null, /*#__PURE__*/jsx("div", {
443
+ ref: scrollRef,
444
+ className: classnames(style$1['filter-line'], style$1['filter-value-tags'], isExpand && style$1['is-expand']),
445
+ children: tags
446
+ }), showScrollNext ? /*#__PURE__*/jsx("div", {
447
+ className: classnames(style$1['filter-value-scroll-next-shadow'])
448
+ }) : null]
449
+ }), /*#__PURE__*/jsxs("div", {
450
+ className: classnames(style$1['filter-value-actions'], isOverflow && style$1['is-overflow']),
451
+ children: [/*#__PURE__*/jsx("div", {
452
+ className: style$1['filter-value-action-right'],
453
+ children: /*#__PURE__*/jsxs(Space, {
454
+ size: 4,
455
+ children: [extraExpand, /*#__PURE__*/jsx(Button, {
456
+ size: "small",
457
+ onClick: () => {
458
+ onChange([]);
459
+ },
460
+ children: formatMessage({
461
+ id: 'clearAllText'
462
+ })
463
+ })]
464
+ })
465
+ }), isOverflow ? /*#__PURE__*/jsx(Button, {
466
+ type: "link",
467
+ size: "small",
468
+ className: style$1['filter-value-toggle'],
469
+ icon: isExpand ? /*#__PURE__*/jsx(UpOutlined, {}) : /*#__PURE__*/jsx(DownOutlined, {}),
470
+ onClick: () => {
471
+ setIsExpand(value => !value);
374
472
  },
375
- children: [/*#__PURE__*/jsxs("span", {
376
- className: style$1['filter-value-tag-label'],
377
- children: [label, ":"]
378
- }), /*#__PURE__*/jsx("span", {
379
- className: style$1['filter-value-tag-content'],
380
- children: valueLabel
473
+ children: isExpand ? '收起' : '展开'
474
+ }) : null, /*#__PURE__*/jsxs("div", {
475
+ className: style$1['filter-value-action-placeholder'],
476
+ children: [extraExpand, /*#__PURE__*/jsx(Button, {
477
+ size: "small",
478
+ children: formatMessage({
479
+ id: 'clearAllText'
480
+ })
381
481
  })]
382
- }, name);
383
- }), /*#__PURE__*/jsxs(Space, {
482
+ })]
483
+ })]
484
+ }) : /*#__PURE__*/jsxs("div", {
485
+ className: style$1['filter-line'],
486
+ children: [tags, /*#__PURE__*/jsxs(Space, {
384
487
  size: 4,
385
488
  className: classnames(style$1['un-expand-shadow']),
386
489
  children: [extraExpand, /*#__PURE__*/jsx(Button, {
@@ -548,7 +651,7 @@ const withFieldItem = (WrappedComponent, options = {}) => _ref => {
548
651
  if (typeof document === 'undefined') return;
549
652
  document.body.style.setProperty('--react-filter-field-mobile-height', `${metrics.height}px`);
550
653
  document.body.style.setProperty('--react-filter-popover-mobile-height', `${metrics.height}px`);
551
- document.body.style.setProperty('--react-filter-field-mobile-top', `${metrics.pageTop}px`);
654
+ document.body.style.setProperty('--react-filter-field-mobile-top', `${metrics.top}px`);
552
655
  }, []);
553
656
  const updatePopupMetrics = useCallback(() => {
554
657
  if (typeof window === 'undefined' || !triggerRef.current) return;
@@ -556,7 +659,6 @@ const withFieldItem = (WrappedComponent, options = {}) => _ref => {
556
659
  const top = Math.max(rect.bottom + MOBILE_POPUP_OFFSET$1, 0);
557
660
  const metrics = {
558
661
  top,
559
- pageTop: top + window.scrollY,
560
662
  height: Math.max(window.innerHeight - top, 0)
561
663
  };
562
664
  setPopupMetrics(metrics);
@@ -625,8 +727,8 @@ const withFieldItem = (WrappedComponent, options = {}) => _ref => {
625
727
  const mobilePopupStyle = isMobile ? {
626
728
  '--react-filter-field-mobile-height': `${popupMetrics.height}px`,
627
729
  '--react-filter-popover-mobile-height': `${popupMetrics.height}px`,
628
- '--react-filter-field-mobile-top': `${popupMetrics.pageTop}px`,
629
- top: popupMetrics.pageTop,
730
+ '--react-filter-field-mobile-top': `${popupMetrics.top}px`,
731
+ top: popupMetrics.top,
630
732
  left: 0
631
733
  } : undefined;
632
734
  const mergePopupClassNames = classNames => {
@@ -647,31 +749,35 @@ const withFieldItem = (WrappedComponent, options = {}) => _ref => {
647
749
  })
648
750
  });
649
751
  };
650
- const renderChildren = otherProps => /*#__PURE__*/jsx(WrappedComponent, _extends({
651
- allowClear: false
652
- }, Object.assign({}, props, otherProps), {
653
- className: style$1['filter-item-inner'],
654
- value: typeof (interceptor == null ? void 0 : interceptor.input) === 'function' ? interceptor.input(value) : value,
655
- onChange: typeof (interceptor == null ? void 0 : interceptor.output) === 'function' ? (...args) => onChange(interceptor.output(...args)) : onChange,
656
- valueType: "all",
657
- onOpenChange: handleOpenChange,
658
- onDropdownVisibleChange: handleOpenChange,
659
- popupClassName: classnames(props.popupClassName, isMobile && style$1['field-item-mobile-popup'], isMobile && FIELD_MOBILE_POPUP_CLASS),
660
- dropdownClassName: classnames(props.dropdownClassName, isMobile && style$1['field-item-mobile-popup'], isMobile && FIELD_MOBILE_POPUP_CLASS),
661
- overlayClassName: classnames(props.overlayClassName, isMobile && style$1['field-item-mobile-popup'], isMobile && FIELD_MOBILE_POPUP_CLASS),
662
- overlayStyle: Object.assign({}, props.overlayStyle, mobilePopupStyle),
663
- popupStyle: Object.assign({}, props.popupStyle, mobilePopupStyle),
664
- dropdownStyle: Object.assign({}, props.dropdownStyle, mobilePopupStyle),
665
- classNames: mergePopupClassNames(props.classNames),
666
- styles: mergePopupStyles(props.styles),
667
- transitionName: isMobile ? '' : props.transitionName,
668
- autoAdjustOverflow: isMobile ? false : props.autoAdjustOverflow,
669
- align: isMobile ? {
670
- offset: [0, 0]
671
- } : props.align,
672
- isPopup: options.forcePopup ? true : props.isPopup,
673
- overlayWidth: isMobile && options.forcePopup ? typeof window === 'undefined' ? props.overlayWidth : window.innerWidth : props.overlayWidth
674
- }));
752
+ const renderChildren = otherProps => {
753
+ const inputValue = typeof (interceptor == null ? void 0 : interceptor.input) === 'function' ? interceptor.input(value) : value;
754
+ const fieldValue = options.forcePopup && inputValue == null ? props.single ? null : [] : inputValue;
755
+ return /*#__PURE__*/jsx(WrappedComponent, _extends({
756
+ allowClear: false
757
+ }, Object.assign({}, props, otherProps), {
758
+ className: style$1['filter-item-inner'],
759
+ value: fieldValue,
760
+ onChange: typeof (interceptor == null ? void 0 : interceptor.output) === 'function' ? (...args) => onChange(interceptor.output(...args)) : onChange,
761
+ valueType: "all",
762
+ onOpenChange: handleOpenChange,
763
+ onDropdownVisibleChange: handleOpenChange,
764
+ popupClassName: classnames(props.popupClassName, isMobile && style$1['field-item-mobile-popup'], isMobile && FIELD_MOBILE_POPUP_CLASS),
765
+ dropdownClassName: classnames(props.dropdownClassName, isMobile && style$1['field-item-mobile-popup'], isMobile && FIELD_MOBILE_POPUP_CLASS),
766
+ overlayClassName: classnames(props.overlayClassName, isMobile && style$1['field-item-mobile-popup'], isMobile && FIELD_MOBILE_POPUP_CLASS),
767
+ overlayStyle: Object.assign({}, props.overlayStyle, mobilePopupStyle),
768
+ popupStyle: Object.assign({}, props.popupStyle, mobilePopupStyle),
769
+ dropdownStyle: Object.assign({}, props.dropdownStyle, mobilePopupStyle),
770
+ classNames: mergePopupClassNames(props.classNames),
771
+ styles: mergePopupStyles(props.styles),
772
+ transitionName: isMobile ? '' : props.transitionName,
773
+ autoAdjustOverflow: isMobile ? false : props.autoAdjustOverflow,
774
+ align: isMobile ? {
775
+ offset: [0, 0]
776
+ } : props.align,
777
+ isPopup: options.forcePopup ? true : props.isPopup,
778
+ overlayWidth: isMobile && options.forcePopup ? typeof window === 'undefined' ? props.overlayWidth : window.innerWidth : props.overlayWidth
779
+ }));
780
+ };
675
781
  return /*#__PURE__*/jsxs(Fragment, {
676
782
  children: [renderMask && typeof document !== 'undefined' && /*#__PURE__*/createPortal(/*#__PURE__*/jsx("div", {
677
783
  className: classnames(style$1['pop-util-mask'], maskClosing && style$1['pop-util-mask-leave']),
@@ -679,7 +785,10 @@ const withFieldItem = (WrappedComponent, options = {}) => _ref => {
679
785
  top: popupMetrics.top,
680
786
  height: popupMetrics.height
681
787
  },
682
- onClick: closeFieldItem
788
+ onClick: closeFieldItem,
789
+ onTouchMove: e => {
790
+ e.preventDefault();
791
+ }
683
792
  }), document.body), /*#__PURE__*/jsx("span", {
684
793
  ref: triggerRef,
685
794
  children: /*#__PURE__*/jsx(FilterItem, {
@@ -749,7 +858,6 @@ const PopoverItem = withLocale(({
749
858
  const top = Math.max(rect.bottom + MOBILE_POPUP_OFFSET, 0);
750
859
  setPopupMetrics({
751
860
  top,
752
- pageTop: top + window.scrollY,
753
861
  height: Math.max(window.innerHeight - top, 0)
754
862
  });
755
863
  }, []);
@@ -793,7 +901,7 @@ const PopoverItem = withLocale(({
793
901
  }, [isMobile, onOpenChange, updatePopupMetrics, value]);
794
902
  const mobileOverlayStyle = isMobile ? {
795
903
  '--react-filter-popover-mobile-height': `${popupMetrics.height}px`,
796
- top: popupMetrics.pageTop,
904
+ top: popupMetrics.top,
797
905
  left: 0
798
906
  } : undefined;
799
907
  const overlayContent = /*#__PURE__*/jsxs("div", {
@@ -813,7 +921,7 @@ const PopoverItem = withLocale(({
813
921
  gutter: 8,
814
922
  children: [/*#__PURE__*/jsx(Col, {
815
923
  children: /*#__PURE__*/jsx(Button, {
816
- size: "small",
924
+ size: isMobile ? undefined : 'small',
817
925
  onClick: closeDropdown,
818
926
  children: formatMessage({
819
927
  id: 'cancelText'
@@ -821,7 +929,7 @@ const PopoverItem = withLocale(({
821
929
  })
822
930
  }), /*#__PURE__*/jsx(Col, {
823
931
  children: /*#__PURE__*/jsx(Button, {
824
- size: "small",
932
+ size: isMobile ? undefined : 'small',
825
933
  type: "primary",
826
934
  disabled: disabled,
827
935
  onClick: () => {
@@ -842,7 +950,10 @@ const PopoverItem = withLocale(({
842
950
  top: popupMetrics.top,
843
951
  height: popupMetrics.height
844
952
  },
845
- onClick: closeDropdown
953
+ onClick: closeDropdown,
954
+ onTouchMove: e => {
955
+ e.preventDefault();
956
+ }
846
957
  }), document.body), /*#__PURE__*/jsx(Dropdown, {
847
958
  open: open,
848
959
  trigger: ['click'],
@@ -1022,6 +1133,7 @@ const DatePickerFilterItem = withLocale(withFieldItem(_ref => {
1022
1133
  } = _ref,
1023
1134
  props = _objectWithoutPropertiesLoose(_ref, _excluded$a);
1024
1135
  return /*#__PURE__*/jsx(DatePicker, _extends({}, props, {
1136
+ inputReadOnly: true,
1025
1137
  picker: picker,
1026
1138
  classNames: _extends({}, props.classNames, {
1027
1139
  popup: _extends({}, (_props$classNames = props.classNames) == null ? void 0 : _props$classNames.popup, {
@@ -1058,6 +1170,7 @@ const DateRangePickerFilterItem = withLocale(withFieldItem(_ref => {
1058
1170
  value,
1059
1171
  onChange
1060
1172
  }) : header, /*#__PURE__*/jsx(DatePicker.RangePicker, _extends({}, props, {
1173
+ inputReadOnly: true,
1061
1174
  allowEmpty: [false, false],
1062
1175
  classNames: _extends({}, props.classNames, {
1063
1176
  popup: _extends({}, (_props$classNames = props.classNames) == null ? void 0 : _props$classNames.popup, {
@@ -1245,6 +1358,7 @@ const TypeDateRangePickerFilterItem = withLocale(_ref => {
1245
1358
  value,
1246
1359
  onChange
1247
1360
  }) => /*#__PURE__*/jsx(TypeDateRangePickerField, _extends({}, props, {
1361
+ inputReadOnly: true,
1248
1362
  className: style$1['filter-item-text'],
1249
1363
  value: get(value, 'value'),
1250
1364
  onChange: pickerValue => {