antd-mobile 5.29.1 → 5.30.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 (106) hide show
  1. package/2x/bundle/antd-mobile.cjs.development.js +3753 -3728
  2. package/2x/bundle/antd-mobile.cjs.js +9 -9
  3. package/2x/bundle/antd-mobile.es.development.js +3741 -3716
  4. package/2x/bundle/antd-mobile.es.js +6791 -6784
  5. package/2x/bundle/antd-mobile.umd.development.js +3753 -3728
  6. package/2x/bundle/antd-mobile.umd.js +9 -9
  7. package/2x/bundle/style.css +4 -2
  8. package/2x/cjs/components/collapse/collapse.js +3 -1
  9. package/2x/cjs/components/date-picker/date-picker-date-utils.d.ts +1 -1
  10. package/2x/cjs/components/date-picker/date-picker-utils.d.ts +1 -1
  11. package/2x/cjs/components/date-picker/date-picker-week-utils.d.ts +1 -1
  12. package/2x/cjs/components/dropdown/dropdown.d.ts +3 -0
  13. package/2x/cjs/components/dropdown/dropdown.js +4 -1
  14. package/2x/cjs/components/dropdown/index.d.ts +1 -0
  15. package/2x/cjs/components/ellipsis/ellipsis.js +1 -1
  16. package/2x/cjs/components/footer/footer.css +1 -1
  17. package/2x/cjs/components/form/form-subscribe.js +4 -1
  18. package/2x/cjs/components/form/form.js +1 -1
  19. package/2x/cjs/components/form/index.d.ts +1 -1
  20. package/2x/cjs/components/image/image.js +9 -0
  21. package/2x/cjs/components/image-uploader/image-uploader.js +4 -5
  22. package/2x/cjs/components/page-indicator/page-indicator.css +1 -1
  23. package/2x/cjs/components/picker-view/picker-view.d.ts +2 -2
  24. package/2x/cjs/components/popup/popup.js +27 -16
  25. package/2x/cjs/components/search-bar/search-bar.d.ts +2 -2
  26. package/2x/cjs/components/search-bar/search-bar.js +6 -2
  27. package/2x/cjs/components/steps/steps.css +2 -0
  28. package/2x/cjs/components/swiper/swiper.js +7 -5
  29. package/2x/cjs/components/text-area/text-area.js +5 -3
  30. package/2x/es/components/collapse/collapse.js +3 -1
  31. package/2x/es/components/date-picker/date-picker-date-utils.d.ts +1 -1
  32. package/2x/es/components/date-picker/date-picker-utils.d.ts +1 -1
  33. package/2x/es/components/date-picker/date-picker-week-utils.d.ts +1 -1
  34. package/2x/es/components/dropdown/dropdown.d.ts +3 -0
  35. package/2x/es/components/dropdown/dropdown.js +4 -1
  36. package/2x/es/components/dropdown/index.d.ts +1 -0
  37. package/2x/es/components/ellipsis/ellipsis.js +1 -1
  38. package/2x/es/components/footer/footer.css +1 -1
  39. package/2x/es/components/form/form-subscribe.js +4 -1
  40. package/2x/es/components/form/form.js +1 -1
  41. package/2x/es/components/form/index.d.ts +1 -1
  42. package/2x/es/components/image/image.js +10 -1
  43. package/2x/es/components/image-uploader/image-uploader.js +4 -5
  44. package/2x/es/components/page-indicator/page-indicator.css +1 -1
  45. package/2x/es/components/picker-view/picker-view.d.ts +2 -2
  46. package/2x/es/components/popup/popup.js +27 -16
  47. package/2x/es/components/search-bar/search-bar.d.ts +2 -2
  48. package/2x/es/components/search-bar/search-bar.js +6 -2
  49. package/2x/es/components/steps/steps.css +2 -0
  50. package/2x/es/components/swiper/swiper.js +8 -6
  51. package/2x/es/components/text-area/text-area.js +4 -3
  52. package/2x/package.json +9 -9
  53. package/bundle/antd-mobile.cjs.development.js +3753 -3728
  54. package/bundle/antd-mobile.cjs.js +9 -9
  55. package/bundle/antd-mobile.compatible.umd.js +1 -1
  56. package/bundle/antd-mobile.es.development.js +3741 -3716
  57. package/bundle/antd-mobile.es.js +6791 -6784
  58. package/bundle/antd-mobile.umd.development.js +3753 -3728
  59. package/bundle/antd-mobile.umd.js +9 -9
  60. package/bundle/style.css +1 -1
  61. package/cjs/components/collapse/collapse.js +3 -1
  62. package/cjs/components/date-picker/date-picker-date-utils.d.ts +1 -1
  63. package/cjs/components/date-picker/date-picker-utils.d.ts +1 -1
  64. package/cjs/components/date-picker/date-picker-week-utils.d.ts +1 -1
  65. package/cjs/components/dropdown/dropdown.d.ts +3 -0
  66. package/cjs/components/dropdown/dropdown.js +4 -1
  67. package/cjs/components/dropdown/index.d.ts +1 -0
  68. package/cjs/components/ellipsis/ellipsis.js +1 -1
  69. package/cjs/components/footer/footer.css +1 -1
  70. package/cjs/components/form/form-subscribe.js +4 -1
  71. package/cjs/components/form/form.js +1 -1
  72. package/cjs/components/form/index.d.ts +1 -1
  73. package/cjs/components/image/image.js +9 -0
  74. package/cjs/components/image-uploader/image-uploader.js +4 -5
  75. package/cjs/components/page-indicator/page-indicator.css +1 -1
  76. package/cjs/components/picker-view/picker-view.d.ts +2 -2
  77. package/cjs/components/popup/popup.js +27 -16
  78. package/cjs/components/search-bar/search-bar.d.ts +2 -2
  79. package/cjs/components/search-bar/search-bar.js +6 -2
  80. package/cjs/components/steps/steps.css +2 -0
  81. package/cjs/components/swiper/swiper.js +7 -5
  82. package/cjs/components/text-area/text-area.js +5 -3
  83. package/es/components/collapse/collapse.js +3 -1
  84. package/es/components/date-picker/date-picker-date-utils.d.ts +1 -1
  85. package/es/components/date-picker/date-picker-utils.d.ts +1 -1
  86. package/es/components/date-picker/date-picker-week-utils.d.ts +1 -1
  87. package/es/components/dropdown/dropdown.d.ts +3 -0
  88. package/es/components/dropdown/dropdown.js +4 -1
  89. package/es/components/dropdown/index.d.ts +1 -0
  90. package/es/components/ellipsis/ellipsis.js +1 -1
  91. package/es/components/footer/footer.css +1 -1
  92. package/es/components/form/form-subscribe.js +4 -1
  93. package/es/components/form/form.js +1 -1
  94. package/es/components/form/index.d.ts +1 -1
  95. package/es/components/image/image.js +10 -1
  96. package/es/components/image-uploader/image-uploader.js +4 -5
  97. package/es/components/page-indicator/page-indicator.css +1 -1
  98. package/es/components/picker-view/picker-view.d.ts +2 -2
  99. package/es/components/popup/popup.js +27 -16
  100. package/es/components/search-bar/search-bar.d.ts +2 -2
  101. package/es/components/search-bar/search-bar.js +6 -2
  102. package/es/components/steps/steps.css +2 -0
  103. package/es/components/swiper/swiper.js +8 -6
  104. package/es/components/text-area/text-area.js +4 -3
  105. package/package.json +9 -9
  106. package/umd/antd-mobile.js +1 -1
@@ -1,5 +1,5 @@
1
1
  import { mergeProps } from '../../utils/with-default-props';
2
- import React, { useState, useRef } from 'react';
2
+ import React, { useState, useRef, useEffect } from 'react';
3
3
  import { withNativeProps } from '../../utils/native-props';
4
4
  import { staged } from 'staged-components';
5
5
  import { toCSSLength } from '../../utils/to-css-length';
@@ -24,6 +24,7 @@ export const Image = staged(p => {
24
24
  const [loaded, setLoaded] = useState(false);
25
25
  const [failed, setFailed] = useState(false);
26
26
  const ref = useRef(null);
27
+ const imgRef = useRef(null);
27
28
  let src = props.src;
28
29
  let srcSet = props.srcSet;
29
30
  const [initialized, setInitialized] = useState(!props.lazy);
@@ -33,11 +34,19 @@ export const Image = staged(p => {
33
34
  setLoaded(false);
34
35
  setFailed(false);
35
36
  }, [src]);
37
+ useEffect(() => {
38
+ var _a;
39
+ // for nextjs ssr
40
+ if ((_a = imgRef.current) === null || _a === void 0 ? void 0 : _a.complete) {
41
+ setLoaded(true);
42
+ }
43
+ }, []);
36
44
  function renderInner() {
37
45
  if (failed) {
38
46
  return React.createElement(React.Fragment, null, props.fallback);
39
47
  }
40
48
  const img = React.createElement("img", {
49
+ ref: imgRef,
41
50
  className: `${classPrefix}-img`,
42
51
  src: src,
43
52
  alt: props.alt,
@@ -118,9 +118,11 @@ export const ImageUploader = p => {
118
118
  file
119
119
  }));
120
120
  setTasks(prev => [...getFinalTasks(prev), ...newTasks]);
121
- yield Promise.all(newTasks.map(currentTask => __awaiter(this, void 0, void 0, function* () {
121
+ const newVal = [];
122
+ yield Promise.all(newTasks.map((currentTask, index) => __awaiter(this, void 0, void 0, function* () {
122
123
  try {
123
124
  const result = yield props.upload(currentTask.file);
125
+ newVal[index] = result;
124
126
  setTasks(prev => {
125
127
  return prev.map(task => {
126
128
  if (task.id === currentTask.id) {
@@ -132,10 +134,6 @@ export const ImageUploader = p => {
132
134
  return task;
133
135
  });
134
136
  });
135
- setValue(prev => {
136
- const newVal = Object.assign({}, result);
137
- return [...prev, newVal];
138
- });
139
137
  } catch (e) {
140
138
  setTasks(prev => {
141
139
  return prev.map(task => {
@@ -150,6 +148,7 @@ export const ImageUploader = p => {
150
148
  throw e;
151
149
  }
152
150
  }))).catch(error => console.error(error));
151
+ setValue(prev => prev.concat(newVal));
153
152
  });
154
153
  }
155
154
  const imageViewerHandlerRef = useRef(null);
@@ -29,7 +29,7 @@
29
29
 
30
30
  .adm-page-indicator-color-white {
31
31
  --dot-color: rgba(255, 255, 255, 0.5);
32
- --active-dot-color: var(--adm-color-white);
32
+ --active-dot-color: var(--adm-color-text-light-solid);
33
33
  }
34
34
 
35
35
  .adm-page-indicator-horizontal {
@@ -1,14 +1,14 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
3
  import { PickerProps } from '../picker';
4
- export declare type PickerValue = string | null;
4
+ export declare type PickerValue = string | number | null;
5
5
  export declare type PickerValueExtend = {
6
6
  columns: PickerColumnItem[][];
7
7
  items: (PickerColumnItem | null)[];
8
8
  };
9
9
  export declare type PickerColumnItem = {
10
10
  label: ReactNode;
11
- value: string;
11
+ value: string | number;
12
12
  key?: string | number;
13
13
  };
14
14
  export declare type PickerColumn = (string | PickerColumnItem)[];
@@ -13,6 +13,7 @@ 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), {
18
19
  position: 'bottom'
@@ -53,14 +54,26 @@ export const Popup = p => {
53
54
  }
54
55
  }
55
56
  });
57
+ const bind = useDrag(({
58
+ swipe: [, swipeY]
59
+ }) => {
60
+ var _a;
61
+ if (swipeY === 1 && props.position === 'bottom' || swipeY === -1 && props.position === 'top') {
62
+ (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
63
+ }
64
+ }, {
65
+ axis: 'y',
66
+ enabled: ['top', 'bottom'].includes(props.position)
67
+ });
56
68
  const maskVisible = useInnerVisible(active && props.visible);
57
- const node = withStopPropagation(props.stopPropagation, withNativeProps(props, React.createElement("div", {
69
+ const node = withStopPropagation(props.stopPropagation, withNativeProps(props, React.createElement("div", Object.assign({
58
70
  className: classPrefix,
59
71
  onClick: props.onClick,
60
72
  style: {
61
- display: active ? undefined : 'none'
73
+ display: active ? undefined : 'none',
74
+ touchAction: ['top', 'bottom'].includes(props.position) ? 'none' : 'auto'
62
75
  }
63
- }, props.mask && React.createElement(Mask, {
76
+ }, bind()), props.mask && React.createElement(Mask, {
64
77
  visible: maskVisible,
65
78
  forceRender: props.forceRender,
66
79
  destroyOnClose: props.destroyOnClose,
@@ -79,19 +92,17 @@ export const Popup = p => {
79
92
  className: bodyCls,
80
93
  style: Object.assign(Object.assign({}, props.bodyStyle), {
81
94
  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
- }
95
+ if (props.position === 'bottom') {
96
+ return `translate(0, ${v}%)`;
97
+ }
98
+ if (props.position === 'top') {
99
+ return `translate(0, -${v}%)`;
100
+ }
101
+ if (props.position === 'left') {
102
+ return `translate(-${v}%, 0)`;
103
+ }
104
+ if (props.position === 'right') {
105
+ return `translate(${v}%, 0)`;
95
106
  }
96
107
  return 'none';
97
108
  })
@@ -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
  });
@@ -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
 
6
8
  .adm-step .adm-step-indicator {
@@ -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 } from 'ahooks';
14
14
  import { mergeFuncProps } from '../../utils/with-func-props';
15
15
  const classPrefix = `adm-swiper`;
16
16
  const eventToPropRecord = {
@@ -74,10 +74,6 @@ export const Swiper = forwardRef(staged((p, ref) => {
74
74
  return trackPixels * props.slideSize / 100;
75
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]);
81
77
  const [dragging, setDragging, draggingRef] = useRefState(false);
82
78
  function boundIndex(current) {
83
79
  let min = 0;
@@ -172,9 +168,13 @@ export const Swiper = forwardRef(staged((p, ref) => {
172
168
  }
173
169
  });
174
170
  function swipeTo(index, immediate = false) {
171
+ var _a;
175
172
  const roundedIndex = Math.round(index);
176
173
  const targetIndex = loop ? modulus(roundedIndex, count) : bound(roundedIndex, 0, count - 1);
177
174
  setCurrent(targetIndex);
175
+ if (targetIndex !== current) {
176
+ (_a = props.onIndexChange) === null || _a === void 0 ? void 0 : _a.call(props, targetIndex);
177
+ }
178
178
  api.start({
179
179
  position: (loop ? roundedIndex : boundIndex(roundedIndex)) * 100,
180
180
  immediate
@@ -219,7 +219,9 @@ export const Swiper = forwardRef(staged((p, ref) => {
219
219
  className: `${classPrefix}-track-inner`
220
220
  }, React.Children.map(validChildren, (child, index) => {
221
221
  return React.createElement(animated.div, {
222
- className: `${classPrefix}-slide`,
222
+ className: classNames(`${classPrefix}-slide`, {
223
+ [`${classPrefix}-slide-active`]: current === index
224
+ }),
223
225
  style: {
224
226
  [isVertical ? 'y' : 'x']: position.to(position => {
225
227
  let finalPosition = -position + index * 100;
@@ -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
  },
package/2x/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "antd-mobile",
3
- "version": "5.29.1",
3
+ "version": "5.30.0",
4
4
  "dependencies": {
5
- "@floating-ui/dom": "^1.0.6",
5
+ "@floating-ui/dom": "^1.2.6",
6
6
  "@rc-component/mini-decimal": "^1.0.1",
7
- "@react-spring/web": "~9.6.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": {