antd-mobile 5.22.0 → 5.24.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 (196) hide show
  1. package/2x/bundle/antd-mobile.cjs.development.js +953 -709
  2. package/2x/bundle/antd-mobile.cjs.js +8 -8
  3. package/2x/bundle/antd-mobile.compatible.umd.js +6991 -6789
  4. package/2x/bundle/antd-mobile.es.development.js +953 -709
  5. package/2x/bundle/antd-mobile.es.js +5666 -5497
  6. package/2x/bundle/antd-mobile.umd.development.js +953 -709
  7. package/2x/bundle/antd-mobile.umd.js +8 -8
  8. package/2x/bundle/style.css +137 -41
  9. package/2x/cjs/components/avatar/avatar.js +2 -2
  10. package/2x/cjs/components/calendar/calendar.d.ts +3 -5
  11. package/2x/cjs/components/calendar/calendar.js +27 -5
  12. package/2x/cjs/components/calendar/convert.d.ts +6 -0
  13. package/2x/cjs/components/calendar/convert.js +9 -0
  14. package/2x/cjs/components/dialog/dialog-action-button.d.ts +2 -2
  15. package/2x/cjs/components/ellipsis/ellipsis.js +16 -7
  16. package/2x/cjs/components/empty/empty.d.ts +1 -0
  17. package/2x/cjs/components/empty/empty.js +1 -0
  18. package/2x/cjs/components/footer/footer.css +60 -0
  19. package/2x/cjs/components/footer/footer.d.ts +19 -0
  20. package/2x/cjs/components/footer/footer.js +83 -0
  21. package/2x/cjs/components/footer/index.d.ts +4 -0
  22. package/2x/cjs/components/footer/index.js +13 -0
  23. package/2x/cjs/components/form/form-item.css +0 -1
  24. package/2x/cjs/components/form/form.css +9 -3
  25. package/2x/cjs/components/form/form.d.ts +2 -2
  26. package/2x/cjs/components/form/index.css +9 -4
  27. package/2x/cjs/components/form/index.d.ts +1 -1
  28. package/2x/cjs/components/image-uploader/image-uploader.d.ts +11 -1
  29. package/2x/cjs/components/image-uploader/image-uploader.js +42 -25
  30. package/2x/cjs/components/image-uploader/index.d.ts +1 -1
  31. package/2x/cjs/components/image-uploader/preview-item.js +5 -0
  32. package/2x/cjs/components/image-viewer/slides.js +2 -2
  33. package/2x/cjs/components/page-indicator/page-indicator.css +1 -0
  34. package/2x/cjs/components/picker/index.d.ts +2 -2
  35. package/2x/cjs/components/picker/picker.d.ts +1 -1
  36. package/2x/cjs/components/picker-view/picker-view.css +9 -0
  37. package/2x/cjs/components/picker-view/wheel.js +8 -4
  38. package/2x/cjs/components/popover/popover.js +2 -2
  39. package/2x/cjs/components/rate/rate.css +6 -1
  40. package/2x/cjs/components/rate/rate.js +3 -1
  41. package/2x/cjs/components/slider/slider.css +15 -1
  42. package/2x/cjs/components/slider/slider.d.ts +1 -0
  43. package/2x/cjs/components/slider/slider.js +13 -2
  44. package/2x/cjs/components/slider/thumb.d.ts +1 -0
  45. package/2x/cjs/components/slider/thumb.js +4 -3
  46. package/2x/cjs/components/stepper/stepper.js +2 -1
  47. package/2x/cjs/components/swiper/swiper.js +9 -0
  48. package/2x/cjs/components/toast/toast.css +4 -3
  49. package/2x/cjs/index.d.ts +1 -0
  50. package/2x/cjs/index.js +8 -0
  51. package/2x/cjs/locales/zh-CN.js +1 -1
  52. package/2x/cjs/utils/measure-css-length.js +1 -1
  53. package/2x/es/components/avatar/avatar.js +1 -1
  54. package/2x/es/components/calendar/calendar.d.ts +3 -5
  55. package/2x/es/components/calendar/calendar.js +29 -6
  56. package/2x/es/components/calendar/convert.d.ts +6 -0
  57. package/2x/es/components/calendar/convert.js +4 -0
  58. package/2x/es/components/dialog/dialog-action-button.d.ts +2 -2
  59. package/2x/es/components/ellipsis/ellipsis.js +14 -8
  60. package/2x/es/components/empty/empty.d.ts +1 -0
  61. package/2x/es/components/empty/empty.js +2 -0
  62. package/2x/es/components/footer/footer.css +60 -0
  63. package/2x/es/components/footer/footer.d.ts +19 -0
  64. package/2x/es/components/footer/footer.js +66 -0
  65. package/2x/es/components/footer/index.d.ts +4 -0
  66. package/2x/es/components/footer/index.js +3 -0
  67. package/2x/es/components/form/form-item.css +0 -1
  68. package/2x/es/components/form/form.css +9 -3
  69. package/2x/es/components/form/form.d.ts +2 -2
  70. package/2x/es/components/form/index.css +9 -4
  71. package/2x/es/components/form/index.d.ts +1 -1
  72. package/2x/es/components/image-uploader/image-uploader.d.ts +11 -1
  73. package/2x/es/components/image-uploader/image-uploader.js +41 -25
  74. package/2x/es/components/image-uploader/index.d.ts +1 -1
  75. package/2x/es/components/image-uploader/preview-item.js +6 -1
  76. package/2x/es/components/image-viewer/slides.js +2 -2
  77. package/2x/es/components/page-indicator/page-indicator.css +1 -0
  78. package/2x/es/components/picker/index.d.ts +2 -2
  79. package/2x/es/components/picker/picker.d.ts +1 -1
  80. package/2x/es/components/picker-view/picker-view.css +9 -0
  81. package/2x/es/components/picker-view/wheel.js +8 -4
  82. package/2x/es/components/popover/popover.js +2 -2
  83. package/2x/es/components/rate/rate.css +6 -1
  84. package/2x/es/components/rate/rate.js +3 -1
  85. package/2x/es/components/slider/slider.css +15 -1
  86. package/2x/es/components/slider/slider.d.ts +1 -0
  87. package/2x/es/components/slider/slider.js +12 -2
  88. package/2x/es/components/slider/thumb.d.ts +1 -0
  89. package/2x/es/components/slider/thumb.js +4 -3
  90. package/2x/es/components/stepper/stepper.js +2 -1
  91. package/2x/es/components/swiper/swiper.js +9 -0
  92. package/2x/es/components/toast/toast.css +4 -3
  93. package/2x/es/index.d.ts +1 -0
  94. package/2x/es/index.js +1 -0
  95. package/2x/es/locales/zh-CN.js +1 -1
  96. package/2x/es/utils/measure-css-length.js +1 -1
  97. package/2x/package.json +2 -1
  98. package/2x/umd/antd-mobile.js +6991 -6789
  99. package/bundle/antd-mobile.cjs.development.js +953 -709
  100. package/bundle/antd-mobile.cjs.js +8 -8
  101. package/bundle/antd-mobile.compatible.umd.js +6991 -6789
  102. package/bundle/antd-mobile.es.development.js +953 -709
  103. package/bundle/antd-mobile.es.js +5666 -5497
  104. package/bundle/antd-mobile.umd.development.js +953 -709
  105. package/bundle/antd-mobile.umd.js +8 -8
  106. package/bundle/style.css +1 -1
  107. package/cjs/components/avatar/avatar.js +2 -2
  108. package/cjs/components/calendar/calendar.d.ts +3 -5
  109. package/cjs/components/calendar/calendar.js +27 -5
  110. package/cjs/components/calendar/convert.d.ts +6 -0
  111. package/cjs/components/calendar/convert.js +9 -0
  112. package/cjs/components/dialog/dialog-action-button.d.ts +2 -2
  113. package/cjs/components/ellipsis/ellipsis.js +16 -7
  114. package/cjs/components/empty/empty.d.ts +1 -0
  115. package/cjs/components/empty/empty.js +1 -0
  116. package/cjs/components/footer/footer.css +51 -0
  117. package/cjs/components/footer/footer.d.ts +19 -0
  118. package/cjs/components/footer/footer.js +83 -0
  119. package/cjs/components/footer/index.d.ts +4 -0
  120. package/cjs/components/footer/index.js +13 -0
  121. package/cjs/components/form/form-item.css +0 -1
  122. package/cjs/components/form/form.css +8 -3
  123. package/cjs/components/form/form.d.ts +2 -2
  124. package/cjs/components/form/index.css +8 -4
  125. package/cjs/components/form/index.d.ts +1 -1
  126. package/cjs/components/image-uploader/image-uploader.d.ts +11 -1
  127. package/cjs/components/image-uploader/image-uploader.js +42 -25
  128. package/cjs/components/image-uploader/index.d.ts +1 -1
  129. package/cjs/components/image-uploader/preview-item.js +5 -0
  130. package/cjs/components/image-viewer/slides.js +2 -2
  131. package/cjs/components/page-indicator/page-indicator.css +1 -0
  132. package/cjs/components/picker/index.d.ts +2 -2
  133. package/cjs/components/picker/picker.d.ts +1 -1
  134. package/cjs/components/picker-view/picker-view.css +8 -0
  135. package/cjs/components/picker-view/wheel.js +8 -4
  136. package/cjs/components/popover/popover.js +2 -2
  137. package/cjs/components/rate/rate.css +5 -1
  138. package/cjs/components/rate/rate.js +3 -1
  139. package/cjs/components/slider/slider.css +14 -1
  140. package/cjs/components/slider/slider.d.ts +1 -0
  141. package/cjs/components/slider/slider.js +13 -2
  142. package/cjs/components/slider/thumb.d.ts +1 -0
  143. package/cjs/components/slider/thumb.js +4 -3
  144. package/cjs/components/stepper/stepper.js +2 -1
  145. package/cjs/components/swiper/swiper.js +9 -0
  146. package/cjs/components/toast/toast.css +4 -3
  147. package/cjs/index.d.ts +1 -0
  148. package/cjs/index.js +8 -0
  149. package/cjs/locales/zh-CN.js +1 -1
  150. package/cjs/utils/measure-css-length.js +1 -1
  151. package/es/components/avatar/avatar.js +1 -1
  152. package/es/components/calendar/calendar.d.ts +3 -5
  153. package/es/components/calendar/calendar.js +29 -6
  154. package/es/components/calendar/convert.d.ts +6 -0
  155. package/es/components/calendar/convert.js +4 -0
  156. package/es/components/dialog/dialog-action-button.d.ts +2 -2
  157. package/es/components/ellipsis/ellipsis.js +14 -8
  158. package/es/components/empty/empty.d.ts +1 -0
  159. package/es/components/empty/empty.js +2 -0
  160. package/es/components/footer/footer.css +51 -0
  161. package/es/components/footer/footer.d.ts +19 -0
  162. package/es/components/footer/footer.js +66 -0
  163. package/es/components/footer/index.d.ts +4 -0
  164. package/es/components/footer/index.js +3 -0
  165. package/es/components/form/form-item.css +0 -1
  166. package/es/components/form/form.css +8 -3
  167. package/es/components/form/form.d.ts +2 -2
  168. package/es/components/form/index.css +8 -4
  169. package/es/components/form/index.d.ts +1 -1
  170. package/es/components/image-uploader/image-uploader.d.ts +11 -1
  171. package/es/components/image-uploader/image-uploader.js +41 -25
  172. package/es/components/image-uploader/index.d.ts +1 -1
  173. package/es/components/image-uploader/preview-item.js +6 -1
  174. package/es/components/image-viewer/slides.js +2 -2
  175. package/es/components/page-indicator/page-indicator.css +1 -0
  176. package/es/components/picker/index.d.ts +2 -2
  177. package/es/components/picker/picker.d.ts +1 -1
  178. package/es/components/picker-view/picker-view.css +8 -0
  179. package/es/components/picker-view/wheel.js +8 -4
  180. package/es/components/popover/popover.js +2 -2
  181. package/es/components/rate/rate.css +5 -1
  182. package/es/components/rate/rate.js +3 -1
  183. package/es/components/slider/slider.css +14 -1
  184. package/es/components/slider/slider.d.ts +1 -0
  185. package/es/components/slider/slider.js +12 -2
  186. package/es/components/slider/thumb.d.ts +1 -0
  187. package/es/components/slider/thumb.js +4 -3
  188. package/es/components/stepper/stepper.js +2 -1
  189. package/es/components/swiper/swiper.js +9 -0
  190. package/es/components/toast/toast.css +4 -3
  191. package/es/index.d.ts +1 -0
  192. package/es/index.js +1 -0
  193. package/es/locales/zh-CN.js +1 -1
  194. package/es/utils/measure-css-length.js +1 -1
  195. package/package.json +2 -1
  196. package/umd/antd-mobile.js +1 -1
@@ -35,10 +35,19 @@ export const ImageUploader = p => {
35
35
  return !value.some(fileItem => fileItem.url === task.url);
36
36
  }));
37
37
  }, [value]);
38
+ useIsomorphicLayoutEffect(() => {
39
+ var _a;
40
+
41
+ (_a = props.onUploadQueueChange) === null || _a === void 0 ? void 0 : _a.call(props, tasks.map(item => ({
42
+ id: item.id,
43
+ status: item.status
44
+ })));
45
+ }, [tasks]);
38
46
  const idCountRef = useRef(0);
39
47
  const {
40
48
  maxCount,
41
- onPreview
49
+ onPreview,
50
+ renderItem
42
51
  } = props;
43
52
 
44
53
  function processFile(file, fileList) {
@@ -99,6 +108,7 @@ export const ImageUploader = p => {
99
108
  return prev.map(task => {
100
109
  if (task.id === currentTask.id) {
101
110
  return Object.assign(Object.assign({}, task), {
111
+ status: 'success',
102
112
  url: result.url
103
113
  });
104
114
  }
@@ -146,36 +156,42 @@ export const ImageUploader = p => {
146
156
  (_a = imageViewerHandlerRef.current) === null || _a === void 0 ? void 0 : _a.close();
147
157
  });
148
158
  const showUpload = props.showUpload && (maxCount === 0 || value.length + tasks.length < maxCount);
159
+
160
+ const renderImages = () => {
161
+ return value.map((fileItem, index) => {
162
+ var _a, _b;
163
+
164
+ const originNode = React.createElement(PreviewItem, {
165
+ key: (_a = fileItem.key) !== null && _a !== void 0 ? _a : index,
166
+ url: (_b = fileItem.thumbnailUrl) !== null && _b !== void 0 ? _b : fileItem.url,
167
+ deletable: props.deletable,
168
+ imageFit: props.imageFit,
169
+ onClick: () => {
170
+ if (props.preview) {
171
+ previewImage(index);
172
+ }
173
+
174
+ onPreview && onPreview(index, fileItem);
175
+ },
176
+ onDelete: () => __awaiter(void 0, void 0, void 0, function* () {
177
+ var _c;
178
+
179
+ const canDelete = yield (_c = props.onDelete) === null || _c === void 0 ? void 0 : _c.call(props, fileItem);
180
+ if (canDelete === false) return;
181
+ setValue(value.filter((x, i) => i !== index));
182
+ })
183
+ });
184
+ return renderItem ? renderItem(originNode, fileItem, value) : originNode;
185
+ });
186
+ };
187
+
149
188
  return withNativeProps(props, React.createElement("div", {
150
189
  className: classPrefix
151
190
  }, React.createElement(Space, {
152
191
  className: `${classPrefix}-space`,
153
192
  wrap: true,
154
193
  block: true
155
- }, value.map((fileItem, index) => {
156
- var _a, _b;
157
-
158
- return React.createElement(PreviewItem, {
159
- key: (_a = fileItem.key) !== null && _a !== void 0 ? _a : index,
160
- url: (_b = fileItem.thumbnailUrl) !== null && _b !== void 0 ? _b : fileItem.url,
161
- deletable: props.deletable,
162
- imageFit: props.imageFit,
163
- onClick: () => {
164
- if (props.preview) {
165
- previewImage(index);
166
- }
167
-
168
- onPreview && onPreview(index, fileItem);
169
- },
170
- onDelete: () => __awaiter(void 0, void 0, void 0, function* () {
171
- var _c;
172
-
173
- const canDelete = yield (_c = props.onDelete) === null || _c === void 0 ? void 0 : _c.call(props, fileItem);
174
- if (canDelete === false) return;
175
- setValue(value.filter((x, i) => i !== index));
176
- })
177
- });
178
- }), tasks.map(task => {
194
+ }, renderImages(), tasks.map(task => {
179
195
  if (!props.showFailed && task.status === 'fail') {
180
196
  return null;
181
197
  }
@@ -1,4 +1,4 @@
1
1
  import { ImageUploader } from './image-uploader';
2
2
  import './image-uploader.less';
3
- export type { ImageUploadItem, ImageUploaderProps } from './image-uploader';
3
+ export type { ImageUploadItem, ImageUploaderProps, UploadTask, } from './image-uploader';
4
4
  export default ImageUploader;
@@ -1,4 +1,4 @@
1
- import React, { useMemo } from 'react';
1
+ import React, { useLayoutEffect, useMemo } from 'react';
2
2
  import { CloseOutline } from 'antd-mobile-icons';
3
3
  import classNames from 'classnames';
4
4
  import Image from '../image';
@@ -28,6 +28,11 @@ const PreviewItem = props => {
28
28
 
29
29
  return '';
30
30
  }, [url, file]);
31
+ useLayoutEffect(() => {
32
+ return () => {
33
+ URL.revokeObjectURL(src);
34
+ };
35
+ }, [src]);
31
36
 
32
37
  function renderLoading() {
33
38
  return props.status === 'pending' && React.createElement("div", {
@@ -75,8 +75,8 @@ export const Slides = forwardRef((props, ref) => {
75
75
  style: {
76
76
  x: x.to(x => -x)
77
77
  }
78
- }, props.images.map(image => React.createElement(Slide, {
79
- key: image,
78
+ }, props.images.map((image, index) => React.createElement(Slide, {
79
+ key: index,
80
80
  image: image,
81
81
  onTap: props.onTap,
82
82
  maxZoom: props.maxZoom,
@@ -24,6 +24,7 @@
24
24
  background: var(--active-dot-color);
25
25
  }
26
26
  .adm-page-indicator-color-white {
27
+ --dot-color: rgba(255, 255, 255, 0.5);
27
28
  --active-dot-color: var(--adm-color-white);
28
29
  }
29
30
  .adm-page-indicator-horizontal {
@@ -24,7 +24,7 @@ declare const _default: import("react").NamedExoticComponent<{
24
24
  popupStyle?: import("react").CSSProperties | undefined;
25
25
  } & Pick<import("../popup").PopupProps, "onClick" | "destroyOnClose" | "forceRender" | "getContainer" | "afterShow" | "afterClose" | "stopPropagation"> & {
26
26
  className?: string | undefined;
27
- style?: (import("react").CSSProperties & Partial<Record<"--item-height" | "--header-button-font-size" | "--title-font-size" | "--item-font-size", string>>) | undefined;
27
+ style?: (import("react").CSSProperties & Partial<Record<"--header-button-font-size" | "--title-font-size" | "--item-font-size" | "--item-height", string>>) | undefined;
28
28
  tabIndex?: number | undefined;
29
29
  } & import("react").AriaAttributes & import("react").RefAttributes<import("./picker").PickerActions>> & {
30
30
  readonly type: import("react").ForwardRefExoticComponent<{
@@ -49,7 +49,7 @@ declare const _default: import("react").NamedExoticComponent<{
49
49
  popupStyle?: import("react").CSSProperties | undefined;
50
50
  } & Pick<import("../popup").PopupProps, "onClick" | "destroyOnClose" | "forceRender" | "getContainer" | "afterShow" | "afterClose" | "stopPropagation"> & {
51
51
  className?: string | undefined;
52
- style?: (import("react").CSSProperties & Partial<Record<"--item-height" | "--header-button-font-size" | "--title-font-size" | "--item-font-size", string>>) | undefined;
52
+ style?: (import("react").CSSProperties & Partial<Record<"--header-button-font-size" | "--title-font-size" | "--item-font-size" | "--item-height", string>>) | undefined;
53
53
  tabIndex?: number | undefined;
54
54
  } & import("react").AriaAttributes & import("react").RefAttributes<import("./picker").PickerActions>>;
55
55
  } & {
@@ -51,6 +51,6 @@ export declare const Picker: React.MemoExoticComponent<React.ForwardRefExoticCom
51
51
  popupStyle?: React.CSSProperties | undefined;
52
52
  } & Pick<PopupProps, "onClick" | "destroyOnClose" | "forceRender" | "getContainer" | "afterShow" | "afterClose" | "stopPropagation"> & {
53
53
  className?: string | undefined;
54
- style?: (React.CSSProperties & Partial<Record<"--item-height" | "--header-button-font-size" | "--title-font-size" | "--item-font-size", string>>) | undefined;
54
+ style?: (React.CSSProperties & Partial<Record<"--header-button-font-size" | "--title-font-size" | "--item-font-size" | "--item-height", string>>) | undefined;
55
55
  tabIndex?: number | undefined;
56
56
  } & React.AriaAttributes & React.RefAttributes<PickerActions>>>;
@@ -118,3 +118,11 @@
118
118
  justify-content: center;
119
119
  align-items: center;
120
120
  }
121
+ .adm-picker-view-item-height-measure {
122
+ position: relative;
123
+ left: 0;
124
+ top: 0;
125
+ height: var(--item-height);
126
+ width: 0;
127
+ pointer-events: none;
128
+ }
@@ -32,11 +32,12 @@ export const Wheel = memo(props => {
32
32
  }));
33
33
  const draggingRef = useRef(false);
34
34
  const rootRef = useRef(null);
35
+ const itemHeightMeasureRef = useRef(null);
35
36
  const itemHeight = useRef(34);
36
37
  useIsomorphicLayoutEffect(() => {
37
- const root = rootRef.current;
38
- if (!root) return;
39
- itemHeight.current = measureCSSLength(window.getComputedStyle(root).getPropertyValue('--item-height'));
38
+ const itemHeightMeasure = itemHeightMeasureRef.current;
39
+ if (!itemHeightMeasure) return;
40
+ itemHeight.current = measureCSSLength(window.getComputedStyle(itemHeightMeasure).getPropertyValue('height'));
40
41
  });
41
42
  useIsomorphicLayoutEffect(() => {
42
43
  if (draggingRef.current) return;
@@ -153,7 +154,10 @@ export const Wheel = memo(props => {
153
154
 
154
155
  return React.createElement("div", {
155
156
  className: `${classPrefix}-column`
156
- }, React.createElement(animated.div, {
157
+ }, React.createElement("div", {
158
+ className: `${classPrefix}-item-height-measure`,
159
+ ref: itemHeightMeasureRef
160
+ }), React.createElement(animated.div, {
157
161
  ref: rootRef,
158
162
  style: {
159
163
  translateY: y
@@ -139,11 +139,11 @@ export const Popover = forwardRef((p, ref) => {
139
139
  useClickAway(() => {
140
140
  if (!props.trigger) return;
141
141
  setVisible(false);
142
- }, () => {
142
+ }, [() => {
143
143
  var _a;
144
144
 
145
145
  return (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.element;
146
- });
146
+ }, floatingRef], ['click', 'touchmove']);
147
147
  const shouldRender = useShouldRender(visible, false, props.destroyOnHide);
148
148
  return React.createElement(React.Fragment, null, React.createElement(Wrapper, {
149
149
  ref: targetRef
@@ -1,7 +1,8 @@
1
1
  .adm-rate {
2
2
  --star-size: 24px;
3
3
  --active-color: #ffd21e;
4
- --inactive-color: var(--adm-color-border);
4
+ --inactive-color: #e5e5e5;
5
+ --inactive-color-half: #dbdbdb;
5
6
  display: inline-flex;
6
7
  touch-action: pan-y;
7
8
  -webkit-user-select: none;
@@ -34,3 +35,6 @@
34
35
  .adm-rate-star-readonly {
35
36
  cursor: unset;
36
37
  }
38
+ .adm-rate.adm-rate-half .adm-rate-star-half:not(.adm-rate-star-active) {
39
+ color: var(--inactive-color-half);
40
+ }
@@ -63,7 +63,9 @@ export const Rate = p => {
63
63
  filterTaps: true
64
64
  });
65
65
  return withNativeProps(props, React.createElement("div", Object.assign({
66
- className: classPrefix,
66
+ className: classNames(classPrefix, {
67
+ [`${classPrefix}-half`]: props.allowHalf
68
+ }),
67
69
  role: 'radiogroup',
68
70
  "aria-readonly": props.readOnly,
69
71
  ref: containerRef
@@ -92,11 +92,24 @@
92
92
  user-select: none;
93
93
  transform: translateX(-50%);
94
94
  }
95
- .adm-slider-disabled {
95
+ .adm-slider-disabled .adm-slider-mark,
96
+ .adm-slider-disabled .adm-slider-thumb-icon {
96
97
  opacity: 0.4;
97
98
  }
99
+ .adm-slider-disabled .adm-slider-tick-active::after,
100
+ .adm-slider-disabled .adm-slider-fill::after {
101
+ content: '';
102
+ position: absolute;
103
+ left: 0;
104
+ top: 0;
105
+ right: 0;
106
+ bottom: 0;
107
+ border-radius: inherit;
108
+ background-color: rgba(255, 255, 255, 0.6);
109
+ }
98
110
  .adm-slider-disabled .adm-slider-thumb {
99
111
  cursor: not-allowed;
112
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.06);
100
113
  }
101
114
  .adm-slider-disabled .adm-slider-mark-text,
102
115
  .adm-slider-disabled .adm-slider-tick {
@@ -14,6 +14,7 @@ export declare type SliderProps = {
14
14
  range?: boolean;
15
15
  icon?: ReactNode;
16
16
  popover?: boolean | ((value: number) => ReactNode);
17
+ residentPopover?: boolean;
17
18
  onChange?: (value: SliderValue) => void;
18
19
  onAfterChange?: (value: SliderValue) => void;
19
20
  } & NativeProps<'--fill-color'>;
@@ -7,6 +7,7 @@ import Thumb from './thumb';
7
7
  import { mergeProps } from '../../utils/with-default-props';
8
8
  import { nearest } from '../../utils/nearest';
9
9
  import { usePropsValue } from '../../utils/use-props-value';
10
+ import { devWarning } from '../../utils/dev-log';
10
11
  const classPrefix = `adm-slider`;
11
12
  const defaultProps = {
12
13
  min: 0,
@@ -15,7 +16,8 @@ const defaultProps = {
15
16
  ticks: false,
16
17
  range: false,
17
18
  disabled: false,
18
- popover: false
19
+ popover: false,
20
+ residentPopover: false
19
21
  };
20
22
  export const Slider = p => {
21
23
  var _a;
@@ -49,8 +51,15 @@ export const Slider = p => {
49
51
  (_a = props.onAfterChange) === null || _a === void 0 ? void 0 : _a.call(props, reverseValue(value));
50
52
  }
51
53
 
54
+ let propsValue = props.value;
55
+
56
+ if (props.range && typeof props.value === 'number') {
57
+ devWarning('Slider', 'When `range` prop is enabled, the `value` prop should be an array, like: [0, 0]');
58
+ propsValue = [0, props.value];
59
+ }
60
+
52
61
  const [rawValue, setRawValue] = usePropsValue({
53
- value: props.value,
62
+ value: propsValue,
54
63
  defaultValue: (_a = props.defaultValue) !== null && _a !== void 0 ? _a : props.range ? [min, min] : min,
55
64
  onChange: props.onChange
56
65
  });
@@ -136,6 +145,7 @@ export const Slider = p => {
136
145
  trackRef: trackRef,
137
146
  icon: icon,
138
147
  popover: props.popover,
148
+ residentPopover: props.residentPopover,
139
149
  onDrag: (position, first, last) => {
140
150
  if (first) {
141
151
  dragLockRef.current += 1;
@@ -9,6 +9,7 @@ declare type ThumbProps = {
9
9
  trackRef: RefObject<HTMLDivElement>;
10
10
  icon?: React.ReactNode;
11
11
  popover: boolean | ((value: number) => ReactNode);
12
+ residentPopover: boolean;
12
13
  } & NativeProps;
13
14
  declare const Thumb: FC<ThumbProps>;
14
15
  export default Thumb;
@@ -11,8 +11,9 @@ const Thumb = props => {
11
11
  min,
12
12
  max,
13
13
  disabled,
14
- onDrag,
15
- icon
14
+ icon,
15
+ residentPopover,
16
+ onDrag
16
17
  } = props;
17
18
  const prevValue = useRef(value);
18
19
  const {
@@ -67,7 +68,7 @@ const Thumb = props => {
67
68
  }), renderPopoverContent ? React.createElement(Popover, {
68
69
  content: renderPopoverContent(value),
69
70
  placement: 'top',
70
- visible: dragging,
71
+ visible: residentPopover || dragging,
71
72
  getContainer: null,
72
73
  mode: 'dark'
73
74
  }, thumbElement) : thumbElement);
@@ -136,7 +136,8 @@ export const Stepper = p => {
136
136
  role: 'spinbutton',
137
137
  "aria-valuenow": Number(inputValue),
138
138
  "aria-valuemax": max,
139
- "aria-valuemin": min
139
+ "aria-valuemin": min,
140
+ inputMode: 'decimal'
140
141
  })), React.createElement(Button, {
141
142
  className: `${classPrefix}-plus`,
142
143
  onClick: handlePlus,
@@ -24,8 +24,10 @@ const defaultProps = {
24
24
  stuckAtBoundary: true,
25
25
  rubberband: true
26
26
  };
27
+ let currentUid;
27
28
  export const Swiper = forwardRef(staged((p, ref) => {
28
29
  const props = mergeProps(defaultProps, p);
30
+ const [uid] = useState({});
29
31
  const isVertical = props.direction === 'vertical';
30
32
  const slideRatio = props.slideSize / 100;
31
33
  const offsetRatio = props.trackOffset / 100;
@@ -125,6 +127,13 @@ export const Swiper = forwardRef(staged((p, ref) => {
125
127
  const bind = useDrag(state => {
126
128
  dragCancelRef.current = state.cancel;
127
129
  if (!state.intentional) return;
130
+
131
+ if (state.first && !currentUid) {
132
+ currentUid = uid;
133
+ }
134
+
135
+ if (currentUid !== uid) return;
136
+ currentUid = state.last ? undefined : uid;
128
137
  const slidePixels = getSlidePixels();
129
138
  if (!slidePixels) return;
130
139
  const paramIndex = isVertical ? 1 : 0;
@@ -12,8 +12,7 @@
12
12
  left: 50%;
13
13
  transform: translate(-50%, -50%);
14
14
  width: auto;
15
- min-width: 96px;
16
- max-width: 200px;
15
+ max-width: 204px;
17
16
  max-height: 70%;
18
17
  overflow: auto;
19
18
  color: white;
@@ -27,9 +26,11 @@
27
26
  }
28
27
  .adm-toast-mask .adm-toast-main-text {
29
28
  padding: 12px;
29
+ min-width: 0px;
30
30
  }
31
31
  .adm-toast-mask .adm-toast-main-icon {
32
- padding: 35px 40px;
32
+ padding: 35px 12px;
33
+ min-width: 150px;
33
34
  }
34
35
  .adm-toast-mask .adm-toast-main-icon .adm-toast-icon {
35
36
  text-align: center;
package/es/index.d.ts CHANGED
@@ -79,5 +79,6 @@ export { default as Toast } from './components/toast';
79
79
  export { default as TreeSelect } from './components/tree-select';
80
80
  export { default as VirtualInput } from './components/virtual-input';
81
81
  export { default as WaterMark } from './components/water-mark';
82
+ export { default as Footer } from './components/footer';
82
83
  export { createErrorBlock } from './components/error-block';
83
84
  export { reduceMotion, restoreMotion } from './utils/reduce-and-restore-motion';
package/es/index.js CHANGED
@@ -79,5 +79,6 @@ export { default as Toast } from './components/toast';
79
79
  export { default as TreeSelect } from './components/tree-select';
80
80
  export { default as VirtualInput } from './components/virtual-input';
81
81
  export { default as WaterMark } from './components/water-mark';
82
+ export { default as Footer } from './components/footer';
82
83
  export { createErrorBlock } from './components/error-block';
83
84
  export { reduceMotion, restoreMotion } from './utils/reduce-and-restore-motion';
@@ -100,7 +100,7 @@ const zhCN = mergeLocale(base, {
100
100
  clear: '清除'
101
101
  },
102
102
  Mask: {
103
- name: '遮罩层'
103
+ name: '背景蒙层'
104
104
  },
105
105
  Modal: {
106
106
  ok: '我知道了'
@@ -3,7 +3,7 @@ import { devError } from './dev-log';
3
3
  export function measureCSSLength(raw) {
4
4
  if (raw === null || raw === undefined || raw === '') {
5
5
  if (isDev) {
6
- devError('Global', 'Seems like the you will encounter a style messed problem. Please check the browser environment to make sure it supports CSS variables.');
6
+ devError('Global', 'Something went wrong when calculating CSS length. Please report an issue at https://github.com/ant-design/ant-design-mobile/issues/new/choose');
7
7
  }
8
8
 
9
9
  return 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antd-mobile",
3
- "version": "5.22.0",
3
+ "version": "5.24.0",
4
4
  "dependencies": {
5
5
  "@floating-ui/dom": "^1.0.0",
6
6
  "@react-spring/web": "^9.4.5",
@@ -14,6 +14,7 @@
14
14
  "lodash": "^4.17.21",
15
15
  "rc-field-form": "~1.27.0",
16
16
  "react-is": "^17.0.2",
17
+ "runes": "^0.4.3",
17
18
  "staged-components": "^1.1.3",
18
19
  "tslib": "^2.4.0",
19
20
  "use-sync-external-store": "^1.1.0"