antd-mobile 5.29.1 → 5.31.0

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.
Files changed (180) hide show
  1. package/2x/README.md +1 -1
  2. package/2x/bundle/antd-mobile.cjs.development.js +3919 -3845
  3. package/2x/bundle/antd-mobile.cjs.js +9 -9
  4. package/2x/bundle/antd-mobile.es.development.js +3907 -3833
  5. package/2x/bundle/antd-mobile.es.js +7782 -7731
  6. package/2x/bundle/antd-mobile.umd.development.js +3919 -3845
  7. package/2x/bundle/antd-mobile.umd.js +9 -9
  8. package/2x/bundle/style.css +4 -2
  9. package/2x/cjs/components/avatar/avatar.js +1 -1
  10. package/2x/cjs/components/button/button.d.ts +2 -2
  11. package/2x/cjs/components/cascader/cascader.js +1 -6
  12. package/2x/cjs/components/cascader-view/cascader-view.d.ts +1 -0
  13. package/2x/cjs/components/cascader-view/cascader-view.js +2 -1
  14. package/2x/cjs/components/collapse/collapse.js +3 -1
  15. package/2x/cjs/components/date-picker/date-picker-date-utils.d.ts +1 -1
  16. package/2x/cjs/components/date-picker/date-picker-utils.d.ts +1 -1
  17. package/2x/cjs/components/date-picker/date-picker-week-utils.d.ts +1 -1
  18. package/2x/cjs/components/date-picker/date-picker.d.ts +1 -1
  19. package/2x/cjs/components/date-picker/index.d.ts +1 -1
  20. package/2x/cjs/components/dropdown/dropdown.d.ts +3 -0
  21. package/2x/cjs/components/dropdown/dropdown.js +4 -1
  22. package/2x/cjs/components/dropdown/index.d.ts +1 -0
  23. package/2x/cjs/components/ellipsis/ellipsis.d.ts +2 -2
  24. package/2x/cjs/components/ellipsis/ellipsis.js +18 -18
  25. package/2x/cjs/components/footer/footer.css +1 -1
  26. package/2x/cjs/components/form/form-subscribe.js +4 -1
  27. package/2x/cjs/components/form/form.js +1 -1
  28. package/2x/cjs/components/form/index.d.ts +1 -1
  29. package/2x/cjs/components/image/image.d.ts +1 -1
  30. package/2x/cjs/components/image/image.js +10 -0
  31. package/2x/cjs/components/image-uploader/image-uploader.js +4 -5
  32. package/2x/cjs/components/input/input.d.ts +2 -4
  33. package/2x/cjs/components/list/list-item.d.ts +1 -1
  34. package/2x/cjs/components/notice-bar/notice-bar.d.ts +2 -0
  35. package/2x/cjs/components/notice-bar/notice-bar.js +2 -1
  36. package/2x/cjs/components/page-indicator/page-indicator.css +1 -1
  37. package/2x/cjs/components/picker-view/picker-view.d.ts +2 -2
  38. package/2x/cjs/components/popup/popup.d.ts +1 -0
  39. package/2x/cjs/components/popup/popup.js +29 -16
  40. package/2x/cjs/components/pull-to-refresh/pull-to-refresh.js +4 -2
  41. package/2x/cjs/components/search-bar/search-bar.d.ts +2 -2
  42. package/2x/cjs/components/search-bar/search-bar.js +6 -2
  43. package/2x/cjs/components/slider/slider.js +6 -4
  44. package/2x/cjs/components/steps/steps.css +2 -0
  45. package/2x/cjs/components/swiper/swiper.js +21 -15
  46. package/2x/cjs/components/text-area/text-area.d.ts +1 -1
  47. package/2x/cjs/components/text-area/text-area.js +5 -3
  48. package/2x/cjs/utils/reduce-and-restore-motion.js +1 -1
  49. package/2x/es/components/avatar/avatar.js +1 -1
  50. package/2x/es/components/button/button.d.ts +2 -2
  51. package/2x/es/components/cascader/cascader.js +1 -6
  52. package/2x/es/components/cascader-view/cascader-view.d.ts +1 -0
  53. package/2x/es/components/cascader-view/cascader-view.js +2 -1
  54. package/2x/es/components/collapse/collapse.js +3 -1
  55. package/2x/es/components/date-picker/date-picker-date-utils.d.ts +1 -1
  56. package/2x/es/components/date-picker/date-picker-utils.d.ts +1 -1
  57. package/2x/es/components/date-picker/date-picker-week-utils.d.ts +1 -1
  58. package/2x/es/components/date-picker/date-picker.d.ts +1 -1
  59. package/2x/es/components/date-picker/index.d.ts +1 -1
  60. package/2x/es/components/dropdown/dropdown.d.ts +3 -0
  61. package/2x/es/components/dropdown/dropdown.js +4 -1
  62. package/2x/es/components/dropdown/index.d.ts +1 -0
  63. package/2x/es/components/ellipsis/ellipsis.d.ts +2 -2
  64. package/2x/es/components/ellipsis/ellipsis.js +18 -18
  65. package/2x/es/components/footer/footer.css +1 -1
  66. package/2x/es/components/form/form-subscribe.js +4 -1
  67. package/2x/es/components/form/form.js +1 -1
  68. package/2x/es/components/form/index.d.ts +1 -1
  69. package/2x/es/components/image/image.d.ts +1 -1
  70. package/2x/es/components/image/image.js +11 -1
  71. package/2x/es/components/image-uploader/image-uploader.js +4 -5
  72. package/2x/es/components/input/input.d.ts +2 -4
  73. package/2x/es/components/list/list-item.d.ts +1 -1
  74. package/2x/es/components/notice-bar/notice-bar.d.ts +2 -0
  75. package/2x/es/components/notice-bar/notice-bar.js +2 -1
  76. package/2x/es/components/page-indicator/page-indicator.css +1 -1
  77. package/2x/es/components/picker-view/picker-view.d.ts +2 -2
  78. package/2x/es/components/popup/popup.d.ts +1 -0
  79. package/2x/es/components/popup/popup.js +29 -16
  80. package/2x/es/components/pull-to-refresh/pull-to-refresh.js +4 -2
  81. package/2x/es/components/search-bar/search-bar.d.ts +2 -2
  82. package/2x/es/components/search-bar/search-bar.js +6 -2
  83. package/2x/es/components/slider/slider.js +6 -4
  84. package/2x/es/components/steps/steps.css +2 -0
  85. package/2x/es/components/swiper/swiper.js +22 -16
  86. package/2x/es/components/text-area/text-area.d.ts +1 -1
  87. package/2x/es/components/text-area/text-area.js +4 -3
  88. package/2x/es/utils/reduce-and-restore-motion.js +1 -1
  89. package/2x/package.json +10 -10
  90. package/README.md +1 -1
  91. package/bundle/antd-mobile.cjs.development.js +3919 -3845
  92. package/bundle/antd-mobile.cjs.js +9 -9
  93. package/bundle/antd-mobile.compatible.umd.js +1 -1
  94. package/bundle/antd-mobile.es.development.js +3907 -3833
  95. package/bundle/antd-mobile.es.js +7782 -7731
  96. package/bundle/antd-mobile.umd.development.js +3919 -3845
  97. package/bundle/antd-mobile.umd.js +9 -9
  98. package/bundle/style.css +1 -1
  99. package/cjs/components/avatar/avatar.js +1 -1
  100. package/cjs/components/button/button.d.ts +2 -2
  101. package/cjs/components/cascader/cascader.js +1 -6
  102. package/cjs/components/cascader-view/cascader-view.d.ts +1 -0
  103. package/cjs/components/cascader-view/cascader-view.js +2 -1
  104. package/cjs/components/collapse/collapse.js +3 -1
  105. package/cjs/components/date-picker/date-picker-date-utils.d.ts +1 -1
  106. package/cjs/components/date-picker/date-picker-utils.d.ts +1 -1
  107. package/cjs/components/date-picker/date-picker-week-utils.d.ts +1 -1
  108. package/cjs/components/date-picker/date-picker.d.ts +1 -1
  109. package/cjs/components/date-picker/index.d.ts +1 -1
  110. package/cjs/components/dropdown/dropdown.d.ts +3 -0
  111. package/cjs/components/dropdown/dropdown.js +4 -1
  112. package/cjs/components/dropdown/index.d.ts +1 -0
  113. package/cjs/components/ellipsis/ellipsis.d.ts +2 -2
  114. package/cjs/components/ellipsis/ellipsis.js +18 -18
  115. package/cjs/components/footer/footer.css +1 -1
  116. package/cjs/components/form/form-subscribe.js +4 -1
  117. package/cjs/components/form/form.js +1 -1
  118. package/cjs/components/form/index.d.ts +1 -1
  119. package/cjs/components/image/image.d.ts +1 -1
  120. package/cjs/components/image/image.js +10 -0
  121. package/cjs/components/image-uploader/image-uploader.js +4 -5
  122. package/cjs/components/input/input.d.ts +2 -4
  123. package/cjs/components/list/list-item.d.ts +1 -1
  124. package/cjs/components/notice-bar/notice-bar.d.ts +2 -0
  125. package/cjs/components/notice-bar/notice-bar.js +2 -1
  126. package/cjs/components/page-indicator/page-indicator.css +1 -1
  127. package/cjs/components/picker-view/picker-view.d.ts +2 -2
  128. package/cjs/components/popup/popup.d.ts +1 -0
  129. package/cjs/components/popup/popup.js +29 -16
  130. package/cjs/components/pull-to-refresh/pull-to-refresh.js +4 -2
  131. package/cjs/components/search-bar/search-bar.d.ts +2 -2
  132. package/cjs/components/search-bar/search-bar.js +6 -2
  133. package/cjs/components/slider/slider.js +6 -4
  134. package/cjs/components/steps/steps.css +2 -0
  135. package/cjs/components/swiper/swiper.js +21 -15
  136. package/cjs/components/text-area/text-area.d.ts +1 -1
  137. package/cjs/components/text-area/text-area.js +5 -3
  138. package/cjs/utils/reduce-and-restore-motion.js +1 -1
  139. package/es/components/avatar/avatar.js +1 -1
  140. package/es/components/button/button.d.ts +2 -2
  141. package/es/components/cascader/cascader.js +1 -6
  142. package/es/components/cascader-view/cascader-view.d.ts +1 -0
  143. package/es/components/cascader-view/cascader-view.js +2 -1
  144. package/es/components/collapse/collapse.js +3 -1
  145. package/es/components/date-picker/date-picker-date-utils.d.ts +1 -1
  146. package/es/components/date-picker/date-picker-utils.d.ts +1 -1
  147. package/es/components/date-picker/date-picker-week-utils.d.ts +1 -1
  148. package/es/components/date-picker/date-picker.d.ts +1 -1
  149. package/es/components/date-picker/index.d.ts +1 -1
  150. package/es/components/dropdown/dropdown.d.ts +3 -0
  151. package/es/components/dropdown/dropdown.js +4 -1
  152. package/es/components/dropdown/index.d.ts +1 -0
  153. package/es/components/ellipsis/ellipsis.d.ts +2 -2
  154. package/es/components/ellipsis/ellipsis.js +18 -18
  155. package/es/components/footer/footer.css +1 -1
  156. package/es/components/form/form-subscribe.js +4 -1
  157. package/es/components/form/form.js +1 -1
  158. package/es/components/form/index.d.ts +1 -1
  159. package/es/components/image/image.d.ts +1 -1
  160. package/es/components/image/image.js +11 -1
  161. package/es/components/image-uploader/image-uploader.js +4 -5
  162. package/es/components/input/input.d.ts +2 -4
  163. package/es/components/list/list-item.d.ts +1 -1
  164. package/es/components/notice-bar/notice-bar.d.ts +2 -0
  165. package/es/components/notice-bar/notice-bar.js +2 -1
  166. package/es/components/page-indicator/page-indicator.css +1 -1
  167. package/es/components/picker-view/picker-view.d.ts +2 -2
  168. package/es/components/popup/popup.d.ts +1 -0
  169. package/es/components/popup/popup.js +29 -16
  170. package/es/components/pull-to-refresh/pull-to-refresh.js +4 -2
  171. package/es/components/search-bar/search-bar.d.ts +2 -2
  172. package/es/components/search-bar/search-bar.js +6 -2
  173. package/es/components/slider/slider.js +6 -4
  174. package/es/components/steps/steps.css +2 -0
  175. package/es/components/swiper/swiper.js +22 -16
  176. package/es/components/text-area/text-area.d.ts +1 -1
  177. package/es/components/text-area/text-area.js +4 -3
  178. package/es/utils/reduce-and-restore-motion.js +1 -1
  179. package/package.json +10 -10
  180. package/umd/antd-mobile.js +1 -1
@@ -13,8 +13,10 @@ import { CloseOutline } from 'antd-mobile-icons';
13
13
  import { defaultPopupBaseProps } from './popup-base-props';
14
14
  import { useInnerVisible } from '../../utils/use-inner-visible';
15
15
  import { useConfig } from '../config-provider';
16
+ import { useDrag } from '@use-gesture/react';
16
17
  const classPrefix = `adm-popup`;
17
18
  const defaultProps = Object.assign(Object.assign({}, defaultPopupBaseProps), {
19
+ closeOnSwipe: false,
18
20
  position: 'bottom'
19
21
  });
20
22
  export const Popup = p => {
@@ -53,14 +55,27 @@ export const Popup = p => {
53
55
  }
54
56
  }
55
57
  });
58
+ const bind = useDrag(({
59
+ swipe: [, swipeY]
60
+ }) => {
61
+ var _a;
62
+ if (!props.closeOnSwipe) return;
63
+ if (swipeY === 1 && props.position === 'bottom' || swipeY === -1 && props.position === 'top') {
64
+ (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
65
+ }
66
+ }, {
67
+ axis: 'y',
68
+ enabled: ['top', 'bottom'].includes(props.position)
69
+ });
56
70
  const maskVisible = useInnerVisible(active && props.visible);
57
- const node = withStopPropagation(props.stopPropagation, withNativeProps(props, React.createElement("div", {
71
+ const node = withStopPropagation(props.stopPropagation, withNativeProps(props, React.createElement("div", Object.assign({
58
72
  className: classPrefix,
59
73
  onClick: props.onClick,
60
74
  style: {
61
- display: active ? undefined : 'none'
75
+ display: active ? undefined : 'none',
76
+ touchAction: ['top', 'bottom'].includes(props.position) ? 'none' : 'auto'
62
77
  }
63
- }, props.mask && React.createElement(Mask, {
78
+ }, bind()), props.mask && React.createElement(Mask, {
64
79
  visible: maskVisible,
65
80
  forceRender: props.forceRender,
66
81
  destroyOnClose: props.destroyOnClose,
@@ -79,19 +94,17 @@ export const Popup = p => {
79
94
  className: bodyCls,
80
95
  style: Object.assign(Object.assign({}, props.bodyStyle), {
81
96
  transform: percent.to(v => {
82
- if (v) {
83
- if (props.position === 'bottom') {
84
- return `translate(0, ${v}%)`;
85
- }
86
- if (props.position === 'top') {
87
- return `translate(0, -${v}%)`;
88
- }
89
- if (props.position === 'left') {
90
- return `translate(-${v}%, 0)`;
91
- }
92
- if (props.position === 'right') {
93
- return `translate(${v}%, 0)`;
94
- }
97
+ if (props.position === 'bottom') {
98
+ return `translate(0, ${v}%)`;
99
+ }
100
+ if (props.position === 'top') {
101
+ return `translate(0, -${v}%)`;
102
+ }
103
+ if (props.position === 'left') {
104
+ return `translate(-${v}%, 0)`;
105
+ }
106
+ if (props.position === 'right') {
107
+ return `translate(${v}%, 0)`;
95
108
  }
96
109
  return 'none';
97
110
  })
@@ -40,6 +40,7 @@ export const PullToRefresh = p => {
40
40
  config: {
41
41
  tension: 300,
42
42
  friction: 30,
43
+ round: true,
43
44
  clamp: true
44
45
  }
45
46
  }));
@@ -99,7 +100,8 @@ export const PullToRefresh = p => {
99
100
  return;
100
101
  }
101
102
  const [, y] = state.movement;
102
- if (state.first && y > 0) {
103
+ const parsedY = Math.ceil(y);
104
+ if (state.first && parsedY > 0) {
103
105
  const target = state.event.target;
104
106
  if (!target || !(target instanceof Element)) return;
105
107
  let scrollParent = getScrollParent(target);
@@ -124,7 +126,7 @@ export const PullToRefresh = p => {
124
126
  event.preventDefault();
125
127
  }
126
128
  event.stopPropagation();
127
- const height = Math.max(rubberbandIfOutOfBounds(y, 0, 0, headHeight * 5, 0.5), 0);
129
+ const height = Math.max(rubberbandIfOutOfBounds(parsedY, 0, 0, headHeight * 5, 0.5), 0);
128
130
  api.start({
129
131
  height
130
132
  });
@@ -2,7 +2,7 @@ import React, { ReactNode } from 'react';
2
2
  import { InputRef, InputProps } from '../input';
3
3
  import { NativeProps } from '../../utils/native-props';
4
4
  export declare type SearchBarRef = InputRef;
5
- export declare type SearchBarProps = Pick<InputProps, 'onFocus' | 'onBlur' | 'onClear'> & {
5
+ export declare type SearchBarProps = Pick<InputProps, 'onFocus' | 'onBlur' | 'onClear' | 'onCompositionStart' | 'onCompositionEnd'> & {
6
6
  value?: string;
7
7
  defaultValue?: string;
8
8
  maxLength?: number;
@@ -17,7 +17,7 @@ export declare type SearchBarProps = Pick<InputProps, 'onFocus' | 'onBlur' | 'on
17
17
  onChange?: (val: string) => void;
18
18
  onCancel?: () => void;
19
19
  } & NativeProps<'--background' | '--border-radius' | '--placeholder-color' | '--height' | '--padding-left'>;
20
- export declare const SearchBar: React.ForwardRefExoticComponent<Pick<InputProps, "onFocus" | "onBlur" | "onClear"> & {
20
+ export declare const SearchBar: React.ForwardRefExoticComponent<Pick<InputProps, "onCompositionEnd" | "onCompositionStart" | "onFocus" | "onBlur" | "onClear"> & {
21
21
  value?: string | undefined;
22
22
  defaultValue?: string | undefined;
23
23
  maxLength?: number | undefined;
@@ -110,11 +110,15 @@ export const SearchBar = forwardRef((p, ref) => {
110
110
  }
111
111
  },
112
112
  "aria-label": locale.SearchBar.name,
113
- onCompositionStart: () => {
113
+ onCompositionStart: e => {
114
+ var _a;
114
115
  composingRef.current = true;
116
+ (_a = props.onCompositionStart) === null || _a === void 0 ? void 0 : _a.call(props, e);
115
117
  },
116
- onCompositionEnd: () => {
118
+ onCompositionEnd: e => {
119
+ var _a;
117
120
  composingRef.current = false;
121
+ (_a = props.onCompositionEnd) === null || _a === void 0 ? void 0 : _a.call(props, e);
118
122
  }
119
123
  })), renderCancelButton()));
120
124
  });
@@ -78,13 +78,14 @@ export const Slider = p => {
78
78
  const pointList = useMemo(() => {
79
79
  if (marks) {
80
80
  return Object.keys(marks).map(parseFloat).sort((a, b) => a - b);
81
- } else {
81
+ } else if (ticks) {
82
82
  const points = [];
83
83
  for (let i = getMiniDecimal(min); i.lessEquals(getMiniDecimal(max)); i = i.add(step)) {
84
84
  points.push(i.toNumber());
85
85
  }
86
86
  return points;
87
87
  }
88
+ return [];
88
89
  }, [marks, ticks, step, min, max]);
89
90
  function getValueByPosition(position) {
90
91
  const newPosition = position < min ? min : position > max ? max : position;
@@ -93,9 +94,10 @@ export const Slider = p => {
93
94
  if (pointList.length) {
94
95
  value = nearest(pointList, newPosition);
95
96
  } else {
96
- const lengthPerStep = 100 / ((max - min) / step);
97
- const steps = Math.round(newPosition / lengthPerStep);
98
- value = steps * lengthPerStep * (max - min) * 0.01 + min;
97
+ // 使用 MiniDecimal 避免精度问题
98
+ const cell = Math.round((newPosition - min) / step);
99
+ const nextVal = getMiniDecimal(cell).multi(step);
100
+ value = getMiniDecimal(min).add(nextVal.toString()).toNumber();
99
101
  }
100
102
  return value;
101
103
  }
@@ -1,6 +1,8 @@
1
1
  .adm-step {
2
2
  --line-to-next-color: #e5e5e5;
3
3
  --icon-color: #e5e5e5;
4
+ position: relative;
5
+ z-index: 0;
4
6
  }
5
7
  .adm-step .adm-step-indicator {
6
8
  position: relative;
@@ -10,7 +10,7 @@ import PageIndicator from '../page-indicator';
10
10
  import { staged } from 'staged-components';
11
11
  import { useRefState } from '../../utils/use-ref-state';
12
12
  import { bound } from '../../utils/bound';
13
- import { useIsomorphicLayoutEffect, useUpdateEffect } from 'ahooks';
13
+ import { useIsomorphicLayoutEffect, useGetState } from 'ahooks';
14
14
  import { mergeFuncProps } from '../../utils/with-func-props';
15
15
  const classPrefix = `adm-swiper`;
16
16
  const eventToPropRecord = {
@@ -35,6 +35,7 @@ let currentUid;
35
35
  export const Swiper = forwardRef(staged((p, ref) => {
36
36
  const props = mergeProps(defaultProps, p);
37
37
  const [uid] = useState({});
38
+ const timeoutRef = useRef(null);
38
39
  const isVertical = props.direction === 'vertical';
39
40
  const slideRatio = props.slideSize / 100;
40
41
  const offsetRatio = props.trackOffset / 100;
@@ -73,11 +74,7 @@ export const Swiper = forwardRef(staged((p, ref) => {
73
74
  const trackPixels = isVertical ? track.offsetHeight : track.offsetWidth;
74
75
  return trackPixels * props.slideSize / 100;
75
76
  }
76
- const [current, setCurrent] = useState(props.defaultIndex);
77
- useUpdateEffect(() => {
78
- var _a;
79
- (_a = props.onIndexChange) === null || _a === void 0 ? void 0 : _a.call(props, current);
80
- }, [current]);
77
+ const [current, setCurrent, getCurrent] = useGetState(props.defaultIndex);
81
78
  const [dragging, setDragging, draggingRef] = useRefState(false);
82
79
  function boundIndex(current) {
83
80
  let min = 0;
@@ -172,9 +169,13 @@ export const Swiper = forwardRef(staged((p, ref) => {
172
169
  }
173
170
  });
174
171
  function swipeTo(index, immediate = false) {
172
+ var _a;
175
173
  const roundedIndex = Math.round(index);
176
174
  const targetIndex = loop ? modulus(roundedIndex, count) : bound(roundedIndex, 0, count - 1);
177
175
  setCurrent(targetIndex);
176
+ if (targetIndex !== getCurrent()) {
177
+ (_a = props.onIndexChange) === null || _a === void 0 ? void 0 : _a.call(props, targetIndex);
178
+ }
178
179
  api.start({
179
180
  position: (loop ? roundedIndex : boundIndex(roundedIndex)) * 100,
180
181
  immediate
@@ -201,16 +202,17 @@ export const Swiper = forwardRef(staged((p, ref) => {
201
202
  autoplay,
202
203
  autoplayInterval
203
204
  } = props;
205
+ const runTimeSwiper = () => {
206
+ timeoutRef.current = window.setTimeout(() => {
207
+ swipeNext();
208
+ runTimeSwiper();
209
+ }, autoplayInterval);
210
+ };
204
211
  useEffect(() => {
205
212
  if (!autoplay || dragging) return;
206
- let interval;
207
- function tick() {
208
- interval = window.setTimeout(tick, autoplayInterval);
209
- swipeNext();
210
- }
211
- interval = window.setTimeout(tick, autoplayInterval);
213
+ runTimeSwiper();
212
214
  return () => {
213
- if (interval) window.clearTimeout(interval);
215
+ if (timeoutRef.current) window.clearTimeout(timeoutRef.current);
214
216
  };
215
217
  }, [autoplay, autoplayInterval, dragging, count]);
216
218
  function renderTrackInner() {
@@ -219,7 +221,9 @@ export const Swiper = forwardRef(staged((p, ref) => {
219
221
  className: `${classPrefix}-track-inner`
220
222
  }, React.Children.map(validChildren, (child, index) => {
221
223
  return React.createElement(animated.div, {
222
- className: `${classPrefix}-slide`,
224
+ className: classNames(`${classPrefix}-slide`, {
225
+ [`${classPrefix}-slide-active`]: current === index
226
+ }),
223
227
  style: {
224
228
  [isVertical ? 'y' : 'x']: position.to(position => {
225
229
  let finalPosition = -position + index * 100;
@@ -238,9 +242,11 @@ export const Swiper = forwardRef(staged((p, ref) => {
238
242
  style: {
239
243
  [isVertical ? 'y' : 'x']: position.to(position => `${-position}%`)
240
244
  }
241
- }, React.Children.map(validChildren, child => {
245
+ }, React.Children.map(validChildren, (child, index) => {
242
246
  return React.createElement("div", {
243
- className: `${classPrefix}-slide`
247
+ className: classNames(`${classPrefix}-slide`, {
248
+ [`${classPrefix}-slide-active`]: current === index
249
+ })
244
250
  }, child);
245
251
  }));
246
252
  }
@@ -21,7 +21,7 @@ export declare type TextAreaRef = {
21
21
  blur: () => void;
22
22
  nativeElement: HTMLTextAreaElement | null;
23
23
  };
24
- export declare const TextArea: React.ForwardRefExoticComponent<Pick<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "onClick" | "disabled" | "name" | "onCompositionEnd" | "onCompositionStart" | "onFocus" | "onBlur" | "autoFocus" | "autoComplete" | "readOnly"> & {
24
+ export declare const TextArea: React.ForwardRefExoticComponent<Pick<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "onClick" | "disabled" | "onCompositionEnd" | "onCompositionStart" | "onFocus" | "onBlur" | "autoFocus" | "name" | "readOnly" | "autoComplete"> & {
25
25
  onChange?: ((val: string) => void) | undefined;
26
26
  value?: string | undefined;
27
27
  defaultValue?: string | undefined;
@@ -1,5 +1,6 @@
1
1
  import React, { forwardRef, useImperativeHandle, useRef } from 'react';
2
2
  import { useIsomorphicLayoutEffect } from 'ahooks';
3
+ import runes from 'runes2';
3
4
  import { withNativeProps } from '../../utils/native-props';
4
5
  import { usePropsValue } from '../../utils/use-props-value';
5
6
  import { mergeProps } from '../../utils/with-default-props';
@@ -68,7 +69,7 @@ export const TextArea = forwardRef((p, ref) => {
68
69
  }, [value, autoSize]);
69
70
  const compositingRef = useRef(false);
70
71
  let count;
71
- const valueLength = [...value].length;
72
+ const valueLength = runes(value).length;
72
73
  if (typeof showCount === 'function') {
73
74
  count = showCount(valueLength, maxLength);
74
75
  } else if (showCount) {
@@ -87,7 +88,7 @@ export const TextArea = forwardRef((p, ref) => {
87
88
  onChange: e => {
88
89
  let v = e.target.value;
89
90
  if (maxLength && !compositingRef.current) {
90
- v = [...v].slice(0, maxLength).join('');
91
+ v = runes(v).slice(0, maxLength).join('');
91
92
  }
92
93
  setValue(v);
93
94
  },
@@ -102,7 +103,7 @@ export const TextArea = forwardRef((p, ref) => {
102
103
  compositingRef.current = false;
103
104
  if (maxLength) {
104
105
  const v = e.target.value;
105
- setValue([...v].slice(0, maxLength).join(''));
106
+ setValue(runes(v).slice(0, maxLength).join(''));
106
107
  }
107
108
  (_a = props.onCompositionEnd) === null || _a === void 0 ? void 0 : _a.call(props, e);
108
109
  },
@@ -31,5 +31,5 @@ function subscribe(onStoreChange) {
31
31
  };
32
32
  }
33
33
  export function useMotionReduced() {
34
- return useSyncExternalStore(subscribe, isMotionReduced);
34
+ return useSyncExternalStore(subscribe, isMotionReduced, isMotionReduced);
35
35
  }
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "antd-mobile",
3
- "version": "5.29.1",
3
+ "version": "5.31.0",
4
4
  "dependencies": {
5
- "@floating-ui/dom": "^1.0.6",
6
- "@rc-component/mini-decimal": "^1.0.1",
7
- "@react-spring/web": "~9.6.0",
5
+ "@floating-ui/dom": "^1.2.6",
6
+ "@rc-component/mini-decimal": "^1.1.0",
7
+ "@react-spring/web": "~9.6.1",
8
8
  "@use-gesture/react": "10.2.20",
9
- "ahooks": "^3.7.2",
9
+ "ahooks": "^3.7.6",
10
10
  "antd-mobile-icons": "^0.3.0",
11
11
  "antd-mobile-v5-count": "^1.0.1",
12
12
  "classnames": "^2.3.2",
13
- "dayjs": "^1.11.6",
13
+ "dayjs": "^1.11.7",
14
14
  "lodash": "^4.17.21",
15
- "rc-field-form": "~1.27.3",
16
- "rc-util": "^5.24.8",
15
+ "rc-field-form": "~1.27.4",
16
+ "rc-util": "^5.30.0",
17
17
  "react-is": "^18.2.0",
18
- "runes": "^0.4.3",
18
+ "runes2": "^1.1.2",
19
19
  "staged-components": "^1.1.3",
20
- "tslib": "^2.4.1",
20
+ "tslib": "^2.5.0",
21
21
  "use-sync-external-store": "^1.2.0"
22
22
  },
23
23
  "peerDependencies": {