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.
- package/2x/README.md +1 -1
- package/2x/bundle/antd-mobile.cjs.development.js +3919 -3845
- package/2x/bundle/antd-mobile.cjs.js +9 -9
- package/2x/bundle/antd-mobile.es.development.js +3907 -3833
- package/2x/bundle/antd-mobile.es.js +7782 -7731
- package/2x/bundle/antd-mobile.umd.development.js +3919 -3845
- package/2x/bundle/antd-mobile.umd.js +9 -9
- package/2x/bundle/style.css +4 -2
- package/2x/cjs/components/avatar/avatar.js +1 -1
- package/2x/cjs/components/button/button.d.ts +2 -2
- package/2x/cjs/components/cascader/cascader.js +1 -6
- package/2x/cjs/components/cascader-view/cascader-view.d.ts +1 -0
- package/2x/cjs/components/cascader-view/cascader-view.js +2 -1
- package/2x/cjs/components/collapse/collapse.js +3 -1
- package/2x/cjs/components/date-picker/date-picker-date-utils.d.ts +1 -1
- package/2x/cjs/components/date-picker/date-picker-utils.d.ts +1 -1
- package/2x/cjs/components/date-picker/date-picker-week-utils.d.ts +1 -1
- package/2x/cjs/components/date-picker/date-picker.d.ts +1 -1
- package/2x/cjs/components/date-picker/index.d.ts +1 -1
- package/2x/cjs/components/dropdown/dropdown.d.ts +3 -0
- package/2x/cjs/components/dropdown/dropdown.js +4 -1
- package/2x/cjs/components/dropdown/index.d.ts +1 -0
- package/2x/cjs/components/ellipsis/ellipsis.d.ts +2 -2
- package/2x/cjs/components/ellipsis/ellipsis.js +18 -18
- package/2x/cjs/components/footer/footer.css +1 -1
- package/2x/cjs/components/form/form-subscribe.js +4 -1
- package/2x/cjs/components/form/form.js +1 -1
- package/2x/cjs/components/form/index.d.ts +1 -1
- package/2x/cjs/components/image/image.d.ts +1 -1
- package/2x/cjs/components/image/image.js +10 -0
- package/2x/cjs/components/image-uploader/image-uploader.js +4 -5
- package/2x/cjs/components/input/input.d.ts +2 -4
- package/2x/cjs/components/list/list-item.d.ts +1 -1
- package/2x/cjs/components/notice-bar/notice-bar.d.ts +2 -0
- package/2x/cjs/components/notice-bar/notice-bar.js +2 -1
- package/2x/cjs/components/page-indicator/page-indicator.css +1 -1
- package/2x/cjs/components/picker-view/picker-view.d.ts +2 -2
- package/2x/cjs/components/popup/popup.d.ts +1 -0
- package/2x/cjs/components/popup/popup.js +29 -16
- package/2x/cjs/components/pull-to-refresh/pull-to-refresh.js +4 -2
- package/2x/cjs/components/search-bar/search-bar.d.ts +2 -2
- package/2x/cjs/components/search-bar/search-bar.js +6 -2
- package/2x/cjs/components/slider/slider.js +6 -4
- package/2x/cjs/components/steps/steps.css +2 -0
- package/2x/cjs/components/swiper/swiper.js +21 -15
- package/2x/cjs/components/text-area/text-area.d.ts +1 -1
- package/2x/cjs/components/text-area/text-area.js +5 -3
- package/2x/cjs/utils/reduce-and-restore-motion.js +1 -1
- package/2x/es/components/avatar/avatar.js +1 -1
- package/2x/es/components/button/button.d.ts +2 -2
- package/2x/es/components/cascader/cascader.js +1 -6
- package/2x/es/components/cascader-view/cascader-view.d.ts +1 -0
- package/2x/es/components/cascader-view/cascader-view.js +2 -1
- package/2x/es/components/collapse/collapse.js +3 -1
- package/2x/es/components/date-picker/date-picker-date-utils.d.ts +1 -1
- package/2x/es/components/date-picker/date-picker-utils.d.ts +1 -1
- package/2x/es/components/date-picker/date-picker-week-utils.d.ts +1 -1
- package/2x/es/components/date-picker/date-picker.d.ts +1 -1
- package/2x/es/components/date-picker/index.d.ts +1 -1
- package/2x/es/components/dropdown/dropdown.d.ts +3 -0
- package/2x/es/components/dropdown/dropdown.js +4 -1
- package/2x/es/components/dropdown/index.d.ts +1 -0
- package/2x/es/components/ellipsis/ellipsis.d.ts +2 -2
- package/2x/es/components/ellipsis/ellipsis.js +18 -18
- package/2x/es/components/footer/footer.css +1 -1
- package/2x/es/components/form/form-subscribe.js +4 -1
- package/2x/es/components/form/form.js +1 -1
- package/2x/es/components/form/index.d.ts +1 -1
- package/2x/es/components/image/image.d.ts +1 -1
- package/2x/es/components/image/image.js +11 -1
- package/2x/es/components/image-uploader/image-uploader.js +4 -5
- package/2x/es/components/input/input.d.ts +2 -4
- package/2x/es/components/list/list-item.d.ts +1 -1
- package/2x/es/components/notice-bar/notice-bar.d.ts +2 -0
- package/2x/es/components/notice-bar/notice-bar.js +2 -1
- package/2x/es/components/page-indicator/page-indicator.css +1 -1
- package/2x/es/components/picker-view/picker-view.d.ts +2 -2
- package/2x/es/components/popup/popup.d.ts +1 -0
- package/2x/es/components/popup/popup.js +29 -16
- package/2x/es/components/pull-to-refresh/pull-to-refresh.js +4 -2
- package/2x/es/components/search-bar/search-bar.d.ts +2 -2
- package/2x/es/components/search-bar/search-bar.js +6 -2
- package/2x/es/components/slider/slider.js +6 -4
- package/2x/es/components/steps/steps.css +2 -0
- package/2x/es/components/swiper/swiper.js +22 -16
- package/2x/es/components/text-area/text-area.d.ts +1 -1
- package/2x/es/components/text-area/text-area.js +4 -3
- package/2x/es/utils/reduce-and-restore-motion.js +1 -1
- package/2x/package.json +10 -10
- package/README.md +1 -1
- package/bundle/antd-mobile.cjs.development.js +3919 -3845
- package/bundle/antd-mobile.cjs.js +9 -9
- package/bundle/antd-mobile.compatible.umd.js +1 -1
- package/bundle/antd-mobile.es.development.js +3907 -3833
- package/bundle/antd-mobile.es.js +7782 -7731
- package/bundle/antd-mobile.umd.development.js +3919 -3845
- package/bundle/antd-mobile.umd.js +9 -9
- package/bundle/style.css +1 -1
- package/cjs/components/avatar/avatar.js +1 -1
- package/cjs/components/button/button.d.ts +2 -2
- package/cjs/components/cascader/cascader.js +1 -6
- package/cjs/components/cascader-view/cascader-view.d.ts +1 -0
- package/cjs/components/cascader-view/cascader-view.js +2 -1
- package/cjs/components/collapse/collapse.js +3 -1
- package/cjs/components/date-picker/date-picker-date-utils.d.ts +1 -1
- package/cjs/components/date-picker/date-picker-utils.d.ts +1 -1
- package/cjs/components/date-picker/date-picker-week-utils.d.ts +1 -1
- package/cjs/components/date-picker/date-picker.d.ts +1 -1
- package/cjs/components/date-picker/index.d.ts +1 -1
- package/cjs/components/dropdown/dropdown.d.ts +3 -0
- package/cjs/components/dropdown/dropdown.js +4 -1
- package/cjs/components/dropdown/index.d.ts +1 -0
- package/cjs/components/ellipsis/ellipsis.d.ts +2 -2
- package/cjs/components/ellipsis/ellipsis.js +18 -18
- package/cjs/components/footer/footer.css +1 -1
- package/cjs/components/form/form-subscribe.js +4 -1
- package/cjs/components/form/form.js +1 -1
- package/cjs/components/form/index.d.ts +1 -1
- package/cjs/components/image/image.d.ts +1 -1
- package/cjs/components/image/image.js +10 -0
- package/cjs/components/image-uploader/image-uploader.js +4 -5
- package/cjs/components/input/input.d.ts +2 -4
- package/cjs/components/list/list-item.d.ts +1 -1
- package/cjs/components/notice-bar/notice-bar.d.ts +2 -0
- package/cjs/components/notice-bar/notice-bar.js +2 -1
- package/cjs/components/page-indicator/page-indicator.css +1 -1
- package/cjs/components/picker-view/picker-view.d.ts +2 -2
- package/cjs/components/popup/popup.d.ts +1 -0
- package/cjs/components/popup/popup.js +29 -16
- package/cjs/components/pull-to-refresh/pull-to-refresh.js +4 -2
- package/cjs/components/search-bar/search-bar.d.ts +2 -2
- package/cjs/components/search-bar/search-bar.js +6 -2
- package/cjs/components/slider/slider.js +6 -4
- package/cjs/components/steps/steps.css +2 -0
- package/cjs/components/swiper/swiper.js +21 -15
- package/cjs/components/text-area/text-area.d.ts +1 -1
- package/cjs/components/text-area/text-area.js +5 -3
- package/cjs/utils/reduce-and-restore-motion.js +1 -1
- package/es/components/avatar/avatar.js +1 -1
- package/es/components/button/button.d.ts +2 -2
- package/es/components/cascader/cascader.js +1 -6
- package/es/components/cascader-view/cascader-view.d.ts +1 -0
- package/es/components/cascader-view/cascader-view.js +2 -1
- package/es/components/collapse/collapse.js +3 -1
- package/es/components/date-picker/date-picker-date-utils.d.ts +1 -1
- package/es/components/date-picker/date-picker-utils.d.ts +1 -1
- package/es/components/date-picker/date-picker-week-utils.d.ts +1 -1
- package/es/components/date-picker/date-picker.d.ts +1 -1
- package/es/components/date-picker/index.d.ts +1 -1
- package/es/components/dropdown/dropdown.d.ts +3 -0
- package/es/components/dropdown/dropdown.js +4 -1
- package/es/components/dropdown/index.d.ts +1 -0
- package/es/components/ellipsis/ellipsis.d.ts +2 -2
- package/es/components/ellipsis/ellipsis.js +18 -18
- package/es/components/footer/footer.css +1 -1
- package/es/components/form/form-subscribe.js +4 -1
- package/es/components/form/form.js +1 -1
- package/es/components/form/index.d.ts +1 -1
- package/es/components/image/image.d.ts +1 -1
- package/es/components/image/image.js +11 -1
- package/es/components/image-uploader/image-uploader.js +4 -5
- package/es/components/input/input.d.ts +2 -4
- package/es/components/list/list-item.d.ts +1 -1
- package/es/components/notice-bar/notice-bar.d.ts +2 -0
- package/es/components/notice-bar/notice-bar.js +2 -1
- package/es/components/page-indicator/page-indicator.css +1 -1
- package/es/components/picker-view/picker-view.d.ts +2 -2
- package/es/components/popup/popup.d.ts +1 -0
- package/es/components/popup/popup.js +29 -16
- package/es/components/pull-to-refresh/pull-to-refresh.js +4 -2
- package/es/components/search-bar/search-bar.d.ts +2 -2
- package/es/components/search-bar/search-bar.js +6 -2
- package/es/components/slider/slider.js +6 -4
- package/es/components/steps/steps.css +2 -0
- package/es/components/swiper/swiper.js +22 -16
- package/es/components/text-area/text-area.d.ts +1 -1
- package/es/components/text-area/text-area.js +4 -3
- package/es/utils/reduce-and-restore-motion.js +1 -1
- package/package.json +10 -10
- package/umd/antd-mobile.js +1 -1
|
@@ -118,9 +118,11 @@ export const ImageUploader = p => {
|
|
|
118
118
|
file
|
|
119
119
|
}));
|
|
120
120
|
setTasks(prev => [...getFinalTasks(prev), ...newTasks]);
|
|
121
|
-
|
|
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);
|
|
@@ -4,7 +4,7 @@ declare type NativeInputProps = React.DetailedHTMLProps<React.InputHTMLAttribute
|
|
|
4
4
|
declare type AriaProps = {
|
|
5
5
|
role?: string;
|
|
6
6
|
};
|
|
7
|
-
export declare type InputProps = Pick<NativeInputProps, 'maxLength' | 'minLength' | 'autoComplete' | 'autoFocus' | 'pattern' | 'inputMode' | 'type' | 'name' | 'onFocus' | 'onBlur' | 'autoCapitalize' | 'autoCorrect' | 'onKeyDown' | 'onKeyUp' | 'onCompositionStart' | 'onCompositionEnd' | 'onClick' | 'step'> & {
|
|
7
|
+
export declare type InputProps = Pick<NativeInputProps, 'maxLength' | 'minLength' | 'autoComplete' | 'autoFocus' | 'pattern' | 'inputMode' | 'type' | 'name' | 'onFocus' | 'onBlur' | 'autoCapitalize' | 'autoCorrect' | 'onKeyDown' | 'onKeyUp' | 'onCompositionStart' | 'onCompositionEnd' | 'onClick' | 'step' | 'id'> & {
|
|
8
8
|
value?: string;
|
|
9
9
|
defaultValue?: string;
|
|
10
10
|
onChange?: (val: string) => void;
|
|
@@ -14,7 +14,6 @@ export declare type InputProps = Pick<NativeInputProps, 'maxLength' | 'minLength
|
|
|
14
14
|
clearable?: boolean;
|
|
15
15
|
onlyShowClearWhenFocus?: boolean;
|
|
16
16
|
onClear?: () => void;
|
|
17
|
-
id?: string;
|
|
18
17
|
onEnterPress?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
19
18
|
enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
|
|
20
19
|
min?: number;
|
|
@@ -26,7 +25,7 @@ export declare type InputRef = {
|
|
|
26
25
|
blur: () => void;
|
|
27
26
|
nativeElement: HTMLInputElement | null;
|
|
28
27
|
};
|
|
29
|
-
export declare const Input: React.ForwardRefExoticComponent<Pick<NativeInputProps, "pattern" | "
|
|
28
|
+
export declare const Input: React.ForwardRefExoticComponent<Pick<NativeInputProps, "pattern" | "id" | "onClick" | "onCompositionEnd" | "onCompositionStart" | "onFocus" | "onBlur" | "onKeyDown" | "onKeyUp" | "type" | "step" | "autoFocus" | "autoCapitalize" | "autoCorrect" | "inputMode" | "name" | "autoComplete" | "maxLength" | "minLength"> & {
|
|
30
29
|
value?: string | undefined;
|
|
31
30
|
defaultValue?: string | undefined;
|
|
32
31
|
onChange?: ((val: string) => void) | undefined;
|
|
@@ -36,7 +35,6 @@ export declare const Input: React.ForwardRefExoticComponent<Pick<NativeInputProp
|
|
|
36
35
|
clearable?: boolean | undefined;
|
|
37
36
|
onlyShowClearWhenFocus?: boolean | undefined;
|
|
38
37
|
onClear?: (() => void) | undefined;
|
|
39
|
-
id?: string | undefined;
|
|
40
38
|
onEnterPress?: ((e: React.KeyboardEvent<HTMLInputElement>) => void) | undefined;
|
|
41
39
|
enterKeyHint?: "search" | "enter" | "done" | "go" | "next" | "previous" | "send" | undefined;
|
|
42
40
|
min?: number | undefined;
|
|
@@ -9,6 +9,6 @@ export declare type ListItemProps = {
|
|
|
9
9
|
clickable?: boolean;
|
|
10
10
|
arrow?: boolean | ReactNode;
|
|
11
11
|
disabled?: boolean;
|
|
12
|
-
onClick?: (e: React.MouseEvent) => void;
|
|
12
|
+
onClick?: (e: React.MouseEvent<HTMLElement>) => void;
|
|
13
13
|
} & NativeProps<'--prefix-width' | '--align-items' | '--active-background-color'>;
|
|
14
14
|
export declare const ListItem: FC<ListItemProps>;
|
|
@@ -13,6 +13,8 @@ export declare type NoticeBarProps = {
|
|
|
13
13
|
closeable?: boolean;
|
|
14
14
|
/** Callback when closed */
|
|
15
15
|
onClose?: () => void;
|
|
16
|
+
/** Event when click */
|
|
17
|
+
onClick?: () => void;
|
|
16
18
|
/** Additional operating area, displayed to the left of the close button */
|
|
17
19
|
extra?: React.ReactNode;
|
|
18
20
|
/** Radio icon on the left */
|
|
@@ -64,7 +64,8 @@ export const NoticeBar = memo(p => {
|
|
|
64
64
|
return withNativeProps(props, React.createElement("div", {
|
|
65
65
|
className: classNames(classPrefix, `${classPrefix}-${props.color}`, {
|
|
66
66
|
[`${classPrefix}-wrap`]: props.wrap
|
|
67
|
-
})
|
|
67
|
+
}),
|
|
68
|
+
onClick: props.onClick
|
|
68
69
|
}, props.icon && React.createElement("span", {
|
|
69
70
|
className: `${classPrefix}-left`
|
|
70
71
|
}, props.icon), React.createElement("span", {
|
|
@@ -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)[];
|
|
@@ -3,5 +3,6 @@ import { NativeProps } from '../../utils/native-props';
|
|
|
3
3
|
import { PopupBaseProps } from './popup-base-props';
|
|
4
4
|
export declare type PopupProps = PopupBaseProps & PropsWithChildren<{
|
|
5
5
|
position?: 'bottom' | 'top' | 'left' | 'right';
|
|
6
|
+
closeOnSwipe?: boolean;
|
|
6
7
|
}> & NativeProps<'--z-index'>;
|
|
7
8
|
export declare const Popup: FC<PopupProps>;
|
|
@@ -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 (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
97
|
-
const
|
|
98
|
-
|
|
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,
|
|
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] =
|
|
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
|
-
|
|
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 (
|
|
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" | "
|
|
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 =
|
|
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 =
|
|
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(
|
|
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.
|
|
3
|
+
"version": "5.31.0",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@floating-ui/dom": "^1.
|
|
6
|
-
"@rc-component/mini-decimal": "^1.0
|
|
7
|
-
"@react-spring/web": "~9.6.
|
|
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.
|
|
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.
|
|
13
|
+
"dayjs": "^1.11.7",
|
|
14
14
|
"lodash": "^4.17.21",
|
|
15
|
-
"rc-field-form": "~1.27.
|
|
16
|
-
"rc-util": "^5.
|
|
15
|
+
"rc-field-form": "~1.27.4",
|
|
16
|
+
"rc-util": "^5.30.0",
|
|
17
17
|
"react-is": "^18.2.0",
|
|
18
|
-
"
|
|
18
|
+
"runes2": "^1.1.2",
|
|
19
19
|
"staged-components": "^1.1.3",
|
|
20
|
-
"tslib": "^2.
|
|
20
|
+
"tslib": "^2.5.0",
|
|
21
21
|
"use-sync-external-store": "^1.2.0"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
<span> · </span>
|
|
17
17
|
<a href="https://discord.gg/jmNvw4WFYn">Discord</a>
|
|
18
18
|
<span> · </span>
|
|
19
|
-
<a href="https://
|
|
19
|
+
<a href="https://user-images.githubusercontent.com/22469543/197447477-1f10603d-90e9-43ea-a023-6538c5cf40e2.jpeg">钉钉</a>
|
|
20
20
|
</h4>
|
|
21
21
|
</div>
|
|
22
22
|
|