antd-mobile 5.23.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 (72) hide show
  1. package/2x/bundle/antd-mobile.cjs.development.js +167 -15
  2. package/2x/bundle/antd-mobile.cjs.js +8 -8
  3. package/2x/bundle/antd-mobile.compatible.umd.js +5364 -5241
  4. package/2x/bundle/antd-mobile.es.development.js +167 -15
  5. package/2x/bundle/antd-mobile.es.js +4345 -4242
  6. package/2x/bundle/antd-mobile.umd.development.js +167 -15
  7. package/2x/bundle/antd-mobile.umd.js +8 -8
  8. package/2x/bundle/style.css +9 -4
  9. package/2x/cjs/components/calendar/calendar.d.ts +3 -5
  10. package/2x/cjs/components/calendar/calendar.js +27 -5
  11. package/2x/cjs/components/calendar/convert.d.ts +6 -0
  12. package/2x/cjs/components/calendar/convert.js +9 -0
  13. package/2x/cjs/components/ellipsis/ellipsis.js +16 -7
  14. package/2x/cjs/components/form/form-item.css +0 -1
  15. package/2x/cjs/components/form/form.css +9 -3
  16. package/2x/cjs/components/form/form.d.ts +2 -2
  17. package/2x/cjs/components/form/index.css +9 -4
  18. package/2x/cjs/components/form/index.d.ts +1 -1
  19. package/2x/cjs/components/popover/popover.js +2 -2
  20. package/2x/cjs/components/stepper/stepper.js +2 -1
  21. package/2x/cjs/components/swiper/swiper.js +9 -0
  22. package/2x/es/components/calendar/calendar.d.ts +3 -5
  23. package/2x/es/components/calendar/calendar.js +29 -6
  24. package/2x/es/components/calendar/convert.d.ts +6 -0
  25. package/2x/es/components/calendar/convert.js +4 -0
  26. package/2x/es/components/ellipsis/ellipsis.js +14 -8
  27. package/2x/es/components/form/form-item.css +0 -1
  28. package/2x/es/components/form/form.css +9 -3
  29. package/2x/es/components/form/form.d.ts +2 -2
  30. package/2x/es/components/form/index.css +9 -4
  31. package/2x/es/components/form/index.d.ts +1 -1
  32. package/2x/es/components/popover/popover.js +2 -2
  33. package/2x/es/components/stepper/stepper.js +2 -1
  34. package/2x/es/components/swiper/swiper.js +9 -0
  35. package/2x/package.json +2 -1
  36. package/2x/umd/antd-mobile.js +5364 -5241
  37. package/bundle/antd-mobile.cjs.development.js +167 -15
  38. package/bundle/antd-mobile.cjs.js +8 -8
  39. package/bundle/antd-mobile.compatible.umd.js +5364 -5241
  40. package/bundle/antd-mobile.es.development.js +167 -15
  41. package/bundle/antd-mobile.es.js +4345 -4242
  42. package/bundle/antd-mobile.umd.development.js +167 -15
  43. package/bundle/antd-mobile.umd.js +8 -8
  44. package/bundle/style.css +1 -1
  45. package/cjs/components/calendar/calendar.d.ts +3 -5
  46. package/cjs/components/calendar/calendar.js +27 -5
  47. package/cjs/components/calendar/convert.d.ts +6 -0
  48. package/cjs/components/calendar/convert.js +9 -0
  49. package/cjs/components/ellipsis/ellipsis.js +16 -7
  50. package/cjs/components/form/form-item.css +0 -1
  51. package/cjs/components/form/form.css +8 -3
  52. package/cjs/components/form/form.d.ts +2 -2
  53. package/cjs/components/form/index.css +8 -4
  54. package/cjs/components/form/index.d.ts +1 -1
  55. package/cjs/components/popover/popover.js +2 -2
  56. package/cjs/components/stepper/stepper.js +2 -1
  57. package/cjs/components/swiper/swiper.js +9 -0
  58. package/es/components/calendar/calendar.d.ts +3 -5
  59. package/es/components/calendar/calendar.js +29 -6
  60. package/es/components/calendar/convert.d.ts +6 -0
  61. package/es/components/calendar/convert.js +4 -0
  62. package/es/components/ellipsis/ellipsis.js +14 -8
  63. package/es/components/form/form-item.css +0 -1
  64. package/es/components/form/form.css +8 -3
  65. package/es/components/form/form.d.ts +2 -2
  66. package/es/components/form/index.css +8 -4
  67. package/es/components/form/index.d.ts +1 -1
  68. package/es/components/popover/popover.js +2 -2
  69. package/es/components/stepper/stepper.js +2 -1
  70. package/es/components/swiper/swiper.js +9 -0
  71. package/package.json +2 -1
  72. package/umd/antd-mobile.js +1 -1
@@ -1,10 +1,12 @@
1
1
  .adm-form {
2
- --border-inner: solid 1px var(--adm-color-border);
3
- --border-top: solid 1px var(--adm-color-border);
4
- --border-bottom: solid 1px var(--adm-color-border);
2
+ --border-inner: solid 1px var(--adm-border-color);
3
+ --border-top: solid 1px var(--adm-border-color);
4
+ --border-bottom: solid 1px var(--adm-border-color);
5
+ --prefix-width: 6.8em;
5
6
  ---border-inner: var(--border-inner);
6
7
  ---border-top: var(--border-top);
7
8
  ---border-bottom: var(--border-bottom);
9
+ ---prefix-width: var(--prefix-width);
8
10
  }
9
11
  .adm-form .adm-list.adm-list {
10
12
  --padding-left: 16px;
@@ -16,6 +18,9 @@
16
18
  .adm-form .adm-form-footer {
17
19
  padding: 20px 12px;
18
20
  }
21
+ .adm-form .adm-form-item-horizontal.adm-list-item {
22
+ --prefix-width: var(---prefix-width);
23
+ }
19
24
  .adm-form-list-operation {
20
25
  text-align: center;
21
26
  color: #1677ff;
@@ -4,13 +4,13 @@ import { ListProps } from '../list';
4
4
  import type { FormProps as RcFormProps, FormInstance as RCFormInstance } from 'rc-field-form';
5
5
  import { FormContextType } from './context';
6
6
  export declare type FormInstance = Pick<RCFormInstance, 'getFieldValue' | 'getFieldsValue' | 'getFieldError' | 'getFieldsError' | 'isFieldTouched' | 'isFieldsTouched' | 'resetFields' | 'setFields' | 'setFieldsValue' | 'submit' | 'validateFields'>;
7
- export declare type FormProps = Pick<RcFormProps, 'form' | 'initialValues' | 'name' | 'preserve' | 'validateMessages' | 'validateTrigger' | 'onFieldsChange' | 'onFinish' | 'onFinishFailed' | 'onValuesChange' | 'children'> & NativeProps<'--border-inner' | '--border-top' | '--border-bottom'> & Partial<FormContextType> & {
7
+ export declare type FormProps = Pick<RcFormProps, 'form' | 'initialValues' | 'name' | 'preserve' | 'validateMessages' | 'validateTrigger' | 'onFieldsChange' | 'onFinish' | 'onFinishFailed' | 'onValuesChange' | 'children'> & NativeProps<'--border-inner' | '--border-top' | '--border-bottom' | '--prefix-width'> & Partial<FormContextType> & {
8
8
  footer?: ReactNode;
9
9
  mode?: ListProps['mode'];
10
10
  };
11
11
  export declare const Form: React.ForwardRefExoticComponent<Pick<RcFormProps<any>, "children" | "form" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & {
12
12
  className?: string | undefined;
13
- style?: (React.CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top", string>>) | undefined;
13
+ style?: (React.CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top" | "--prefix-width", string>>) | undefined;
14
14
  tabIndex?: number | undefined;
15
15
  } & React.AriaAttributes & Partial<FormContextType> & {
16
16
  footer?: ReactNode;
@@ -1,10 +1,12 @@
1
1
  .adm-form {
2
- --border-inner: solid 1px var(--adm-color-border);
3
- --border-top: solid 1px var(--adm-color-border);
4
- --border-bottom: solid 1px var(--adm-color-border);
2
+ --border-inner: solid 1px var(--adm-border-color);
3
+ --border-top: solid 1px var(--adm-border-color);
4
+ --border-bottom: solid 1px var(--adm-border-color);
5
+ --prefix-width: 6.8em;
5
6
  ---border-inner: var(--border-inner);
6
7
  ---border-top: var(--border-top);
7
8
  ---border-bottom: var(--border-bottom);
9
+ ---prefix-width: var(--prefix-width);
8
10
  }
9
11
  .adm-form .adm-list.adm-list {
10
12
  --padding-left: 16px;
@@ -16,6 +18,9 @@
16
18
  .adm-form .adm-form-footer {
17
19
  padding: 20px 12px;
18
20
  }
21
+ .adm-form .adm-form-item-horizontal.adm-list-item {
22
+ --prefix-width: var(---prefix-width);
23
+ }
19
24
  .adm-form-list-operation {
20
25
  text-align: center;
21
26
  color: #1677ff;
@@ -76,7 +81,6 @@
76
81
  }
77
82
  .adm-form-item.adm-form-item-horizontal.adm-list-item {
78
83
  --align-items: stretch;
79
- --prefix-width: 6.8em;
80
84
  }
81
85
  .adm-form-item.adm-form-item-horizontal .adm-list-item-content-prefix {
82
86
  padding-top: 12px;
@@ -9,7 +9,7 @@ export type { ValidateMessages, FieldData, NamePath, } from 'rc-field-form/es/in
9
9
  export type { FormArrayField, FormArrayOperation, FormArrayProps, } from './form-array';
10
10
  declare const _default: import("react").ForwardRefExoticComponent<Pick<import("rc-field-form").FormProps<any>, "children" | "form" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & {
11
11
  className?: string | undefined;
12
- style?: (import("react").CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top", string>>) | undefined;
12
+ style?: (import("react").CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top" | "--prefix-width", string>>) | undefined;
13
13
  tabIndex?: number | undefined;
14
14
  } & import("react").AriaAttributes & Partial<import("./context").FormContextType> & {
15
15
  footer?: import("react").ReactNode;
@@ -167,11 +167,11 @@ const Popover = (0, _react.forwardRef)((p, ref) => {
167
167
  (0, _ahooks.useClickAway)(() => {
168
168
  if (!props.trigger) return;
169
169
  setVisible(false);
170
- }, () => {
170
+ }, [() => {
171
171
  var _a;
172
172
 
173
173
  return (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.element;
174
- });
174
+ }, floatingRef], ['click', 'touchmove']);
175
175
  const shouldRender = (0, _shouldRender.useShouldRender)(visible, false, props.destroyOnHide);
176
176
  return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_wrapper.Wrapper, {
177
177
  ref: targetRef
@@ -161,7 +161,8 @@ const Stepper = p => {
161
161
  role: 'spinbutton',
162
162
  "aria-valuenow": Number(inputValue),
163
163
  "aria-valuemax": max,
164
- "aria-valuemin": min
164
+ "aria-valuemin": min,
165
+ inputMode: 'decimal'
165
166
  })), _react.default.createElement(_button.default, {
166
167
  className: `${classPrefix}-plus`,
167
168
  onClick: handlePlus,
@@ -50,8 +50,10 @@ const defaultProps = {
50
50
  stuckAtBoundary: true,
51
51
  rubberband: true
52
52
  };
53
+ let currentUid;
53
54
  const Swiper = (0, _react.forwardRef)((0, _stagedComponents.staged)((p, ref) => {
54
55
  const props = (0, _withDefaultProps.mergeProps)(defaultProps, p);
56
+ const [uid] = (0, _react.useState)({});
55
57
  const isVertical = props.direction === 'vertical';
56
58
  const slideRatio = props.slideSize / 100;
57
59
  const offsetRatio = props.trackOffset / 100;
@@ -153,6 +155,13 @@ const Swiper = (0, _react.forwardRef)((0, _stagedComponents.staged)((p, ref) =>
153
155
  const bind = (0, _react2.useDrag)(state => {
154
156
  dragCancelRef.current = state.cancel;
155
157
  if (!state.intentional) return;
158
+
159
+ if (state.first && !currentUid) {
160
+ currentUid = uid;
161
+ }
162
+
163
+ if (currentUid !== uid) return;
164
+ currentUid = state.last ? undefined : uid;
156
165
  const slidePixels = getSlidePixels();
157
166
  if (!slidePixels) return;
158
167
  const paramIndex = isVertical ? 1 : 0;
@@ -1,9 +1,6 @@
1
1
  import React from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
- declare type Page = {
4
- month: number;
5
- year: number;
6
- };
3
+ import { Page } from './convert';
7
4
  export declare type CalendarRef = {
8
5
  jumpTo: (page: Page | ((page: Page) => Page)) => void;
9
6
  jumpToToday: () => void;
@@ -20,6 +17,8 @@ export declare type CalendarProps = {
20
17
  max?: Date;
21
18
  min?: Date;
22
19
  shouldDisableDate?: (date: Date) => boolean;
20
+ minPage?: Page;
21
+ maxPage?: Page;
23
22
  } & ({
24
23
  selectionMode?: undefined;
25
24
  value?: undefined;
@@ -37,4 +36,3 @@ export declare type CalendarProps = {
37
36
  onChange?: (val: [Date, Date] | null) => void;
38
37
  }) & NativeProps;
39
38
  export declare const Calendar: React.ForwardRefExoticComponent<CalendarProps & React.RefAttributes<CalendarRef>>;
40
- export {};
@@ -9,7 +9,7 @@ import { useConfig } from '../config-provider';
9
9
  import isoWeek from 'dayjs/plugin/isoWeek';
10
10
  import { useUpdateEffect } from 'ahooks';
11
11
  import { usePropsValue } from '../../utils/use-props-value';
12
- import { convertValueToRange } from './convert';
12
+ import { convertValueToRange, convertPageToDayjs } from './convert';
13
13
  dayjs.extend(isoWeek);
14
14
  const classPrefix = 'adm-calendar';
15
15
  const defaultProps = {
@@ -67,35 +67,58 @@ export const Calendar = forwardRef((p, ref) => {
67
67
  page = pageOrPageGenerator;
68
68
  }
69
69
 
70
- setCurrent(dayjs().year(page.year).month(page.month - 1).date(1));
70
+ setCurrent(convertPageToDayjs(page));
71
71
  },
72
72
  jumpToToday: () => {
73
73
  setCurrent(dayjs().date(1));
74
74
  }
75
75
  }));
76
+
77
+ const handlePageChange = (action, num, type) => {
78
+ const nxtCurrent = current[action](num, type);
79
+
80
+ if (action === 'subtract' && props.minPage) {
81
+ const minPage = convertPageToDayjs(props.minPage);
82
+
83
+ if (nxtCurrent.isBefore(minPage, type)) {
84
+ return;
85
+ }
86
+ }
87
+
88
+ if (action === 'add' && props.maxPage) {
89
+ const maxPage = convertPageToDayjs(props.maxPage);
90
+
91
+ if (nxtCurrent.isAfter(maxPage, type)) {
92
+ return;
93
+ }
94
+ }
95
+
96
+ setCurrent(current[action](num, type));
97
+ };
98
+
76
99
  const header = React.createElement("div", {
77
100
  className: `${classPrefix}-header`
78
101
  }, React.createElement("a", {
79
102
  className: `${classPrefix}-arrow-button ${classPrefix}-arrow-button-year`,
80
103
  onClick: () => {
81
- setCurrent(current.subtract(1, 'year'));
104
+ handlePageChange('subtract', 1, 'year');
82
105
  }
83
106
  }, props.prevYearButton), React.createElement("a", {
84
107
  className: `${classPrefix}-arrow-button ${classPrefix}-arrow-button-month`,
85
108
  onClick: () => {
86
- setCurrent(current.subtract(1, 'month'));
109
+ handlePageChange('subtract', 1, 'month');
87
110
  }
88
111
  }, props.prevMonthButton), React.createElement("div", {
89
112
  className: `${classPrefix}-title`
90
113
  }, locale.Calendar.renderYearAndMonth(current.year(), current.month() + 1)), React.createElement("a", {
91
114
  className: classNames(`${classPrefix}-arrow-button`, `${classPrefix}-arrow-button-right`, `${classPrefix}-arrow-button-right-month`),
92
115
  onClick: () => {
93
- setCurrent(current.add(1, 'month'));
116
+ handlePageChange('add', 1, 'month');
94
117
  }
95
118
  }, props.nextMonthButton), React.createElement("a", {
96
119
  className: classNames(`${classPrefix}-arrow-button`, `${classPrefix}-arrow-button-right`, `${classPrefix}-arrow-button-right-year`),
97
120
  onClick: () => {
98
- setCurrent(current.add(1, 'year'));
121
+ handlePageChange('add', 1, 'year');
99
122
  }
100
123
  }, props.nextYearButton));
101
124
  const maxDay = useMemo(() => props.max && dayjs(props.max), [props.max]);
@@ -1,2 +1,8 @@
1
+ import dayjs from 'dayjs';
1
2
  export declare type DateRange = [Date, Date] | null;
3
+ export declare type Page = {
4
+ month: number;
5
+ year: number;
6
+ };
2
7
  export declare function convertValueToRange(selectionMode: 'single' | 'range' | undefined, value: Date | [Date, Date] | null): DateRange;
8
+ export declare function convertPageToDayjs(page: Page): dayjs.Dayjs;
@@ -1,3 +1,4 @@
1
+ import dayjs from 'dayjs';
1
2
  export function convertValueToRange(selectionMode, value) {
2
3
  if (selectionMode === undefined) {
3
4
  return null;
@@ -12,4 +13,7 @@ export function convertValueToRange(selectionMode, value) {
12
13
  }
13
14
 
14
15
  return [value, value];
16
+ }
17
+ export function convertPageToDayjs(page) {
18
+ return dayjs().year(page.year).month(page.month - 1).date(1);
15
19
  }
@@ -1,4 +1,5 @@
1
- import React, { useRef, useState } from 'react';
1
+ import React, { useMemo, useRef, useState } from 'react';
2
+ import runes from 'runes';
2
3
  import { mergeProps } from '../../utils/with-default-props';
3
4
  import { withNativeProps } from '../../utils/native-props';
4
5
  import { useResizeEffect } from '../../utils/use-resize-effect';
@@ -19,6 +20,11 @@ export const Ellipsis = p => {
19
20
  const [ellipsised, setEllipsised] = useState({});
20
21
  const [expanded, setExpanded] = useState(false);
21
22
  const [exceeded, setExceeded] = useState(false);
23
+ const chars = useMemo(() => runes(props.content), [props.content]);
24
+
25
+ function getSubString(start, end) {
26
+ return chars.slice(start, end).join('');
27
+ }
22
28
 
23
29
  function calcEllipsised() {
24
30
  const root = rootRef.current;
@@ -57,11 +63,11 @@ export const Ellipsis = p => {
57
63
  if (right - left <= 1) {
58
64
  if (props.direction === 'end') {
59
65
  return {
60
- leading: props.content.slice(0, left) + '...'
66
+ leading: getSubString(0, left) + '...'
61
67
  };
62
68
  } else {
63
69
  return {
64
- tailing: '...' + props.content.slice(right, end)
70
+ tailing: '...' + getSubString(right, end)
65
71
  };
66
72
  }
67
73
  }
@@ -69,9 +75,9 @@ export const Ellipsis = p => {
69
75
  const middle = Math.round((left + right) / 2);
70
76
 
71
77
  if (props.direction === 'end') {
72
- container.innerText = props.content.slice(0, middle) + '...' + actionText;
78
+ container.innerText = getSubString(0, middle) + '...' + actionText;
73
79
  } else {
74
- container.innerText = actionText + '...' + props.content.slice(middle, end);
80
+ container.innerText = actionText + '...' + getSubString(middle, end);
75
81
  }
76
82
 
77
83
  if (container.offsetHeight <= maxHeight) {
@@ -92,14 +98,14 @@ export const Ellipsis = p => {
92
98
  function checkMiddle(leftPart, rightPart) {
93
99
  if (leftPart[1] - leftPart[0] <= 1 && rightPart[1] - rightPart[0] <= 1) {
94
100
  return {
95
- leading: props.content.slice(0, leftPart[0]) + '...',
96
- tailing: '...' + props.content.slice(rightPart[1], end)
101
+ leading: getSubString(0, leftPart[0]) + '...',
102
+ tailing: '...' + getSubString(rightPart[1], end)
97
103
  };
98
104
  }
99
105
 
100
106
  const leftPartMiddle = Math.floor((leftPart[0] + leftPart[1]) / 2);
101
107
  const rightPartMiddle = Math.ceil((rightPart[0] + rightPart[1]) / 2);
102
- container.innerText = props.content.slice(0, leftPartMiddle) + '...' + actionText + '...' + props.content.slice(rightPartMiddle, end);
108
+ container.innerText = getSubString(0, leftPartMiddle) + '...' + actionText + '...' + getSubString(rightPartMiddle, end);
103
109
 
104
110
  if (container.offsetHeight <= maxHeight) {
105
111
  return checkMiddle([leftPartMiddle, leftPart[1]], [rightPart[0], rightPartMiddle]);
@@ -54,7 +54,6 @@
54
54
  }
55
55
  .adm-form-item.adm-form-item-horizontal.adm-list-item {
56
56
  --align-items: stretch;
57
- --prefix-width: 6.8em;
58
57
  }
59
58
  .adm-form-item.adm-form-item-horizontal .adm-list-item-content-prefix {
60
59
  padding-top: 12px;
@@ -1,10 +1,12 @@
1
1
  .adm-form {
2
- --border-inner: solid 1px var(--adm-color-border);
3
- --border-top: solid 1px var(--adm-color-border);
4
- --border-bottom: solid 1px var(--adm-color-border);
2
+ --border-inner: solid 1px var(--adm-border-color);
3
+ --border-top: solid 1px var(--adm-border-color);
4
+ --border-bottom: solid 1px var(--adm-border-color);
5
+ --prefix-width: 6.8em;
5
6
  ---border-inner: var(--border-inner);
6
7
  ---border-top: var(--border-top);
7
8
  ---border-bottom: var(--border-bottom);
9
+ ---prefix-width: var(--prefix-width);
8
10
  }
9
11
  .adm-form .adm-list.adm-list {
10
12
  --padding-left: 16px;
@@ -16,6 +18,9 @@
16
18
  .adm-form .adm-form-footer {
17
19
  padding: 20px 12px;
18
20
  }
21
+ .adm-form .adm-form-item-horizontal.adm-list-item {
22
+ --prefix-width: var(---prefix-width);
23
+ }
19
24
  .adm-form-list-operation {
20
25
  text-align: center;
21
26
  color: #1677ff;
@@ -4,13 +4,13 @@ import { ListProps } from '../list';
4
4
  import type { FormProps as RcFormProps, FormInstance as RCFormInstance } from 'rc-field-form';
5
5
  import { FormContextType } from './context';
6
6
  export declare type FormInstance = Pick<RCFormInstance, 'getFieldValue' | 'getFieldsValue' | 'getFieldError' | 'getFieldsError' | 'isFieldTouched' | 'isFieldsTouched' | 'resetFields' | 'setFields' | 'setFieldsValue' | 'submit' | 'validateFields'>;
7
- export declare type FormProps = Pick<RcFormProps, 'form' | 'initialValues' | 'name' | 'preserve' | 'validateMessages' | 'validateTrigger' | 'onFieldsChange' | 'onFinish' | 'onFinishFailed' | 'onValuesChange' | 'children'> & NativeProps<'--border-inner' | '--border-top' | '--border-bottom'> & Partial<FormContextType> & {
7
+ export declare type FormProps = Pick<RcFormProps, 'form' | 'initialValues' | 'name' | 'preserve' | 'validateMessages' | 'validateTrigger' | 'onFieldsChange' | 'onFinish' | 'onFinishFailed' | 'onValuesChange' | 'children'> & NativeProps<'--border-inner' | '--border-top' | '--border-bottom' | '--prefix-width'> & Partial<FormContextType> & {
8
8
  footer?: ReactNode;
9
9
  mode?: ListProps['mode'];
10
10
  };
11
11
  export declare const Form: React.ForwardRefExoticComponent<Pick<RcFormProps<any>, "children" | "form" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & {
12
12
  className?: string | undefined;
13
- style?: (React.CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top", string>>) | undefined;
13
+ style?: (React.CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top" | "--prefix-width", string>>) | undefined;
14
14
  tabIndex?: number | undefined;
15
15
  } & React.AriaAttributes & Partial<FormContextType> & {
16
16
  footer?: ReactNode;
@@ -1,10 +1,12 @@
1
1
  .adm-form {
2
- --border-inner: solid 1px var(--adm-color-border);
3
- --border-top: solid 1px var(--adm-color-border);
4
- --border-bottom: solid 1px var(--adm-color-border);
2
+ --border-inner: solid 1px var(--adm-border-color);
3
+ --border-top: solid 1px var(--adm-border-color);
4
+ --border-bottom: solid 1px var(--adm-border-color);
5
+ --prefix-width: 6.8em;
5
6
  ---border-inner: var(--border-inner);
6
7
  ---border-top: var(--border-top);
7
8
  ---border-bottom: var(--border-bottom);
9
+ ---prefix-width: var(--prefix-width);
8
10
  }
9
11
  .adm-form .adm-list.adm-list {
10
12
  --padding-left: 16px;
@@ -16,6 +18,9 @@
16
18
  .adm-form .adm-form-footer {
17
19
  padding: 20px 12px;
18
20
  }
21
+ .adm-form .adm-form-item-horizontal.adm-list-item {
22
+ --prefix-width: var(---prefix-width);
23
+ }
19
24
  .adm-form-list-operation {
20
25
  text-align: center;
21
26
  color: #1677ff;
@@ -76,7 +81,6 @@
76
81
  }
77
82
  .adm-form-item.adm-form-item-horizontal.adm-list-item {
78
83
  --align-items: stretch;
79
- --prefix-width: 6.8em;
80
84
  }
81
85
  .adm-form-item.adm-form-item-horizontal .adm-list-item-content-prefix {
82
86
  padding-top: 12px;
@@ -9,7 +9,7 @@ export type { ValidateMessages, FieldData, NamePath, } from 'rc-field-form/es/in
9
9
  export type { FormArrayField, FormArrayOperation, FormArrayProps, } from './form-array';
10
10
  declare const _default: import("react").ForwardRefExoticComponent<Pick<import("rc-field-form").FormProps<any>, "children" | "form" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & {
11
11
  className?: string | undefined;
12
- style?: (import("react").CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top", string>>) | undefined;
12
+ style?: (import("react").CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top" | "--prefix-width", string>>) | undefined;
13
13
  tabIndex?: number | undefined;
14
14
  } & import("react").AriaAttributes & Partial<import("./context").FormContextType> & {
15
15
  footer?: import("react").ReactNode;
@@ -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
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antd-mobile",
3
- "version": "5.23.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"