antd-mobile 5.30.0 → 5.31.1

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 (116) hide show
  1. package/2x/README.md +1 -1
  2. package/2x/bundle/antd-mobile.cjs.development.js +283 -234
  3. package/2x/bundle/antd-mobile.cjs.js +9 -9
  4. package/2x/bundle/antd-mobile.es.development.js +283 -234
  5. package/2x/bundle/antd-mobile.es.js +4172 -4128
  6. package/2x/bundle/antd-mobile.umd.development.js +283 -234
  7. package/2x/bundle/antd-mobile.umd.js +9 -9
  8. package/2x/bundle/style.css +2 -0
  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/date-picker/date-picker.d.ts +1 -1
  15. package/2x/cjs/components/date-picker/index.d.ts +1 -1
  16. package/2x/cjs/components/ellipsis/ellipsis.d.ts +2 -2
  17. package/2x/cjs/components/ellipsis/ellipsis.js +17 -17
  18. package/2x/cjs/components/form/form-subscribe.js +1 -1
  19. package/2x/cjs/components/image/image.d.ts +1 -1
  20. package/2x/cjs/components/image/image.js +1 -0
  21. package/2x/cjs/components/input/input.d.ts +2 -4
  22. package/2x/cjs/components/list/list-item.d.ts +1 -1
  23. package/2x/cjs/components/notice-bar/notice-bar.css +2 -0
  24. package/2x/cjs/components/notice-bar/notice-bar.d.ts +2 -0
  25. package/2x/cjs/components/notice-bar/notice-bar.js +2 -1
  26. package/2x/cjs/components/popup/popup.d.ts +1 -0
  27. package/2x/cjs/components/popup/popup.js +2 -0
  28. package/2x/cjs/components/pull-to-refresh/pull-to-refresh.js +4 -2
  29. package/2x/cjs/components/slider/slider.js +6 -4
  30. package/2x/cjs/components/swiper/swiper.js +16 -12
  31. package/2x/cjs/components/text-area/text-area.d.ts +1 -1
  32. package/2x/cjs/utils/reduce-and-restore-motion.js +1 -1
  33. package/2x/es/components/avatar/avatar.js +1 -1
  34. package/2x/es/components/button/button.d.ts +2 -2
  35. package/2x/es/components/cascader/cascader.js +1 -6
  36. package/2x/es/components/cascader-view/cascader-view.d.ts +1 -0
  37. package/2x/es/components/cascader-view/cascader-view.js +2 -1
  38. package/2x/es/components/date-picker/date-picker.d.ts +1 -1
  39. package/2x/es/components/date-picker/index.d.ts +1 -1
  40. package/2x/es/components/ellipsis/ellipsis.d.ts +2 -2
  41. package/2x/es/components/ellipsis/ellipsis.js +17 -17
  42. package/2x/es/components/form/form-subscribe.js +1 -1
  43. package/2x/es/components/image/image.d.ts +1 -1
  44. package/2x/es/components/image/image.js +1 -0
  45. package/2x/es/components/input/input.d.ts +2 -4
  46. package/2x/es/components/list/list-item.d.ts +1 -1
  47. package/2x/es/components/notice-bar/notice-bar.css +2 -0
  48. package/2x/es/components/notice-bar/notice-bar.d.ts +2 -0
  49. package/2x/es/components/notice-bar/notice-bar.js +2 -1
  50. package/2x/es/components/popup/popup.d.ts +1 -0
  51. package/2x/es/components/popup/popup.js +2 -0
  52. package/2x/es/components/pull-to-refresh/pull-to-refresh.js +4 -2
  53. package/2x/es/components/slider/slider.js +6 -4
  54. package/2x/es/components/swiper/swiper.js +17 -13
  55. package/2x/es/components/text-area/text-area.d.ts +1 -1
  56. package/2x/es/utils/reduce-and-restore-motion.js +1 -1
  57. package/2x/package.json +2 -2
  58. package/README.md +1 -1
  59. package/bundle/antd-mobile.cjs.development.js +283 -234
  60. package/bundle/antd-mobile.cjs.js +9 -9
  61. package/bundle/antd-mobile.compatible.umd.js +1 -1
  62. package/bundle/antd-mobile.es.development.js +283 -234
  63. package/bundle/antd-mobile.es.js +4172 -4128
  64. package/bundle/antd-mobile.umd.development.js +283 -234
  65. package/bundle/antd-mobile.umd.js +9 -9
  66. package/bundle/style.css +1 -1
  67. package/cjs/components/avatar/avatar.js +1 -1
  68. package/cjs/components/button/button.d.ts +2 -2
  69. package/cjs/components/cascader/cascader.js +1 -6
  70. package/cjs/components/cascader-view/cascader-view.d.ts +1 -0
  71. package/cjs/components/cascader-view/cascader-view.js +2 -1
  72. package/cjs/components/date-picker/date-picker.d.ts +1 -1
  73. package/cjs/components/date-picker/index.d.ts +1 -1
  74. package/cjs/components/ellipsis/ellipsis.d.ts +2 -2
  75. package/cjs/components/ellipsis/ellipsis.js +17 -17
  76. package/cjs/components/form/form-subscribe.js +1 -1
  77. package/cjs/components/image/image.d.ts +1 -1
  78. package/cjs/components/image/image.js +1 -0
  79. package/cjs/components/input/input.d.ts +2 -4
  80. package/cjs/components/list/list-item.d.ts +1 -1
  81. package/cjs/components/notice-bar/notice-bar.css +2 -0
  82. package/cjs/components/notice-bar/notice-bar.d.ts +2 -0
  83. package/cjs/components/notice-bar/notice-bar.js +2 -1
  84. package/cjs/components/popup/popup.d.ts +1 -0
  85. package/cjs/components/popup/popup.js +2 -0
  86. package/cjs/components/pull-to-refresh/pull-to-refresh.js +4 -2
  87. package/cjs/components/slider/slider.js +6 -4
  88. package/cjs/components/swiper/swiper.js +16 -12
  89. package/cjs/components/text-area/text-area.d.ts +1 -1
  90. package/cjs/utils/reduce-and-restore-motion.js +1 -1
  91. package/es/components/avatar/avatar.js +1 -1
  92. package/es/components/button/button.d.ts +2 -2
  93. package/es/components/cascader/cascader.js +1 -6
  94. package/es/components/cascader-view/cascader-view.d.ts +1 -0
  95. package/es/components/cascader-view/cascader-view.js +2 -1
  96. package/es/components/date-picker/date-picker.d.ts +1 -1
  97. package/es/components/date-picker/index.d.ts +1 -1
  98. package/es/components/ellipsis/ellipsis.d.ts +2 -2
  99. package/es/components/ellipsis/ellipsis.js +17 -17
  100. package/es/components/form/form-subscribe.js +1 -1
  101. package/es/components/image/image.d.ts +1 -1
  102. package/es/components/image/image.js +1 -0
  103. package/es/components/input/input.d.ts +2 -4
  104. package/es/components/list/list-item.d.ts +1 -1
  105. package/es/components/notice-bar/notice-bar.css +2 -0
  106. package/es/components/notice-bar/notice-bar.d.ts +2 -0
  107. package/es/components/notice-bar/notice-bar.js +2 -1
  108. package/es/components/popup/popup.d.ts +1 -0
  109. package/es/components/popup/popup.js +2 -0
  110. package/es/components/pull-to-refresh/pull-to-refresh.js +4 -2
  111. package/es/components/slider/slider.js +6 -4
  112. package/es/components/swiper/swiper.js +17 -13
  113. package/es/components/text-area/text-area.d.ts +1 -1
  114. package/es/utils/reduce-and-restore-motion.js +1 -1
  115. package/package.json +2 -2
  116. package/umd/antd-mobile.js +1 -1
@@ -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
  }
@@ -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 } 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,7 +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
+ const [current, setCurrent, getCurrent] = useGetState(props.defaultIndex);
77
78
  const [dragging, setDragging, draggingRef] = useRefState(false);
78
79
  function boundIndex(current) {
79
80
  let min = 0;
@@ -171,10 +172,10 @@ export const Swiper = forwardRef(staged((p, ref) => {
171
172
  var _a;
172
173
  const roundedIndex = Math.round(index);
173
174
  const targetIndex = loop ? modulus(roundedIndex, count) : bound(roundedIndex, 0, count - 1);
174
- setCurrent(targetIndex);
175
- if (targetIndex !== current) {
175
+ if (targetIndex !== getCurrent()) {
176
176
  (_a = props.onIndexChange) === null || _a === void 0 ? void 0 : _a.call(props, targetIndex);
177
177
  }
178
+ setCurrent(targetIndex);
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() {
@@ -240,9 +242,11 @@ export const Swiper = forwardRef(staged((p, ref) => {
240
242
  style: {
241
243
  [isVertical ? 'y' : 'x']: position.to(position => `${-position}%`)
242
244
  }
243
- }, React.Children.map(validChildren, child => {
245
+ }, React.Children.map(validChildren, (child, index) => {
244
246
  return React.createElement("div", {
245
- className: `${classPrefix}-slide`
247
+ className: classNames(`${classPrefix}-slide`, {
248
+ [`${classPrefix}-slide-active`]: current === index
249
+ })
246
250
  }, child);
247
251
  }));
248
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;
@@ -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,9 +1,9 @@
1
1
  {
2
2
  "name": "antd-mobile",
3
- "version": "5.30.0",
3
+ "version": "5.31.1",
4
4
  "dependencies": {
5
5
  "@floating-ui/dom": "^1.2.6",
6
- "@rc-component/mini-decimal": "^1.0.1",
6
+ "@rc-component/mini-decimal": "^1.1.0",
7
7
  "@react-spring/web": "~9.6.1",
8
8
  "@use-gesture/react": "10.2.20",
9
9
  "ahooks": "^3.7.6",