antd-mobile 5.31.1 → 5.32.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/bundle/antd-mobile.cjs.development.js +281 -252
- package/2x/bundle/antd-mobile.cjs.js +9 -9
- package/2x/bundle/antd-mobile.es.development.js +282 -253
- package/2x/bundle/antd-mobile.es.js +4494 -4468
- package/2x/bundle/antd-mobile.umd.development.js +281 -252
- package/2x/bundle/antd-mobile.umd.js +9 -9
- package/2x/bundle/style.css +1 -0
- package/2x/cjs/components/calendar/convert.js +1 -6
- package/2x/cjs/components/capsule-tabs/capsule-tabs.js +2 -4
- package/2x/cjs/components/cascader/cascader.d.ts +2 -0
- package/2x/cjs/components/cascader/index.d.ts +1 -0
- package/2x/cjs/components/checkbox/checkbox.d.ts +2 -0
- package/2x/cjs/components/checkbox/checkbox.js +1 -0
- package/2x/cjs/components/checkbox/index.d.ts +1 -0
- package/2x/cjs/components/collapse/collapse.js +1 -1
- package/2x/cjs/components/date-picker/date-picker-date-utils.js +24 -36
- package/2x/cjs/components/date-picker/date-picker-week-utils.js +12 -18
- package/2x/cjs/components/date-picker-view/date-picker-view.d.ts +7 -5
- package/2x/cjs/components/date-picker-view/date-picker-view.js +8 -2
- package/2x/cjs/components/dropdown/dropdown.js +1 -1
- package/2x/cjs/components/footer/footer.js +17 -21
- package/2x/cjs/components/image-uploader/image-uploader.js +1 -3
- package/2x/cjs/components/input/input.js +5 -1
- package/2x/cjs/components/jumbo-tabs/jumbo-tabs.js +1 -1
- package/2x/cjs/components/modal/modal.js +11 -13
- package/2x/cjs/components/popover/popover.js +5 -7
- package/2x/cjs/components/popup/popup.js +3 -3
- package/2x/cjs/components/radio/radio.d.ts +1 -0
- package/2x/cjs/components/radio/radio.js +1 -0
- package/2x/cjs/components/rate/star.d.ts +1 -1
- package/2x/cjs/components/result/result.js +2 -2
- package/2x/cjs/components/safe-area/safe-area.d.ts +1 -1
- package/2x/cjs/components/safe-area/safe-area.js +1 -1
- package/2x/cjs/components/side-bar/side-bar.d.ts +1 -2
- package/2x/cjs/components/side-bar/side-bar.js +4 -2
- package/2x/cjs/components/skeleton/skeleton.d.ts +1 -1
- package/2x/cjs/components/stepper/stepper.js +1 -5
- package/2x/cjs/components/tab-bar/tab-bar.d.ts +1 -2
- package/2x/cjs/components/tab-bar/tab-bar.js +4 -2
- package/2x/cjs/components/tabs/tabs.js +1 -1
- package/2x/cjs/components/text-area/text-area.css +1 -0
- package/2x/cjs/components/tree-select/multiple.js +2 -6
- package/2x/cjs/components/virtual-input/virtual-input.js +1 -1
- package/2x/cjs/locales/ru-RU.d.ts +134 -0
- package/2x/cjs/locales/ru-RU.js +144 -0
- package/2x/es/components/calendar/convert.js +1 -6
- package/2x/es/components/capsule-tabs/capsule-tabs.js +3 -5
- package/2x/es/components/cascader/cascader.d.ts +2 -0
- package/2x/es/components/cascader/index.d.ts +1 -0
- package/2x/es/components/checkbox/checkbox.d.ts +2 -0
- package/2x/es/components/checkbox/checkbox.js +1 -0
- package/2x/es/components/checkbox/index.d.ts +1 -0
- package/2x/es/components/collapse/collapse.js +2 -2
- package/2x/es/components/date-picker/date-picker-date-utils.js +24 -36
- package/2x/es/components/date-picker/date-picker-week-utils.js +12 -18
- package/2x/es/components/date-picker-view/date-picker-view.d.ts +7 -5
- package/2x/es/components/date-picker-view/date-picker-view.js +8 -2
- package/2x/es/components/dropdown/dropdown.js +2 -2
- package/2x/es/components/footer/footer.js +17 -21
- package/2x/es/components/image-uploader/image-uploader.js +1 -3
- package/2x/es/components/input/input.js +5 -1
- package/2x/es/components/jumbo-tabs/jumbo-tabs.js +2 -2
- package/2x/es/components/modal/modal.js +11 -13
- package/2x/es/components/popover/popover.js +5 -7
- package/2x/es/components/popup/popup.js +3 -3
- package/2x/es/components/radio/radio.d.ts +1 -0
- package/2x/es/components/radio/radio.js +1 -0
- package/2x/es/components/rate/star.d.ts +1 -1
- package/2x/es/components/result/result.js +2 -2
- package/2x/es/components/safe-area/safe-area.d.ts +1 -1
- package/2x/es/components/safe-area/safe-area.js +1 -1
- package/2x/es/components/side-bar/side-bar.d.ts +1 -2
- package/2x/es/components/side-bar/side-bar.js +2 -2
- package/2x/es/components/skeleton/skeleton.d.ts +1 -1
- package/2x/es/components/stepper/stepper.js +1 -5
- package/2x/es/components/tab-bar/tab-bar.d.ts +1 -2
- package/2x/es/components/tab-bar/tab-bar.js +2 -2
- package/2x/es/components/tabs/tabs.js +2 -2
- package/2x/es/components/text-area/text-area.css +1 -0
- package/2x/es/components/tree-select/multiple.js +2 -6
- package/2x/es/components/virtual-input/virtual-input.js +1 -1
- package/2x/es/locales/ru-RU.d.ts +134 -0
- package/2x/es/locales/ru-RU.js +137 -0
- package/2x/package.json +2 -2
- package/bundle/antd-mobile.cjs.development.js +281 -252
- package/bundle/antd-mobile.cjs.js +9 -9
- package/bundle/antd-mobile.compatible.umd.js +1 -1
- package/bundle/antd-mobile.es.development.js +282 -253
- package/bundle/antd-mobile.es.js +4494 -4468
- package/bundle/antd-mobile.umd.development.js +281 -252
- package/bundle/antd-mobile.umd.js +9 -9
- package/bundle/style.css +1 -1
- package/cjs/components/calendar/convert.js +1 -6
- package/cjs/components/capsule-tabs/capsule-tabs.js +2 -4
- package/cjs/components/cascader/cascader.d.ts +2 -0
- package/cjs/components/cascader/index.d.ts +1 -0
- package/cjs/components/checkbox/checkbox.d.ts +2 -0
- package/cjs/components/checkbox/checkbox.js +1 -0
- package/cjs/components/checkbox/index.d.ts +1 -0
- package/cjs/components/collapse/collapse.js +1 -1
- package/cjs/components/date-picker/date-picker-date-utils.js +24 -36
- package/cjs/components/date-picker/date-picker-week-utils.js +12 -18
- package/cjs/components/date-picker-view/date-picker-view.d.ts +7 -5
- package/cjs/components/date-picker-view/date-picker-view.js +8 -2
- package/cjs/components/dropdown/dropdown.js +1 -1
- package/cjs/components/footer/footer.js +17 -21
- package/cjs/components/image-uploader/image-uploader.js +1 -3
- package/cjs/components/input/input.js +5 -1
- package/cjs/components/jumbo-tabs/jumbo-tabs.js +1 -1
- package/cjs/components/modal/modal.js +11 -13
- package/cjs/components/popover/popover.js +5 -7
- package/cjs/components/popup/popup.js +3 -3
- package/cjs/components/radio/radio.d.ts +1 -0
- package/cjs/components/radio/radio.js +1 -0
- package/cjs/components/rate/star.d.ts +1 -1
- package/cjs/components/result/result.js +2 -2
- package/cjs/components/safe-area/safe-area.d.ts +1 -1
- package/cjs/components/safe-area/safe-area.js +1 -1
- package/cjs/components/side-bar/side-bar.d.ts +1 -2
- package/cjs/components/side-bar/side-bar.js +4 -2
- package/cjs/components/skeleton/skeleton.d.ts +1 -1
- package/cjs/components/stepper/stepper.js +1 -5
- package/cjs/components/tab-bar/tab-bar.d.ts +1 -2
- package/cjs/components/tab-bar/tab-bar.js +4 -2
- package/cjs/components/tabs/tabs.js +1 -1
- package/cjs/components/text-area/text-area.css +1 -0
- package/cjs/components/tree-select/multiple.js +2 -6
- package/cjs/components/virtual-input/virtual-input.js +1 -1
- package/cjs/locales/ru-RU.d.ts +134 -0
- package/cjs/locales/ru-RU.js +144 -0
- package/es/components/calendar/convert.js +1 -6
- package/es/components/capsule-tabs/capsule-tabs.js +3 -5
- package/es/components/cascader/cascader.d.ts +2 -0
- package/es/components/cascader/index.d.ts +1 -0
- package/es/components/checkbox/checkbox.d.ts +2 -0
- package/es/components/checkbox/checkbox.js +1 -0
- package/es/components/checkbox/index.d.ts +1 -0
- package/es/components/collapse/collapse.js +2 -2
- package/es/components/date-picker/date-picker-date-utils.js +24 -36
- package/es/components/date-picker/date-picker-week-utils.js +12 -18
- package/es/components/date-picker-view/date-picker-view.d.ts +7 -5
- package/es/components/date-picker-view/date-picker-view.js +8 -2
- package/es/components/dropdown/dropdown.js +2 -2
- package/es/components/footer/footer.js +17 -21
- package/es/components/image-uploader/image-uploader.js +1 -3
- package/es/components/input/input.js +5 -1
- package/es/components/jumbo-tabs/jumbo-tabs.js +2 -2
- package/es/components/modal/modal.js +11 -13
- package/es/components/popover/popover.js +5 -7
- package/es/components/popup/popup.js +3 -3
- package/es/components/radio/radio.d.ts +1 -0
- package/es/components/radio/radio.js +1 -0
- package/es/components/rate/star.d.ts +1 -1
- package/es/components/result/result.js +2 -2
- package/es/components/safe-area/safe-area.d.ts +1 -1
- package/es/components/safe-area/safe-area.js +1 -1
- package/es/components/side-bar/side-bar.d.ts +1 -2
- package/es/components/side-bar/side-bar.js +2 -2
- package/es/components/skeleton/skeleton.d.ts +1 -1
- package/es/components/stepper/stepper.js +1 -5
- package/es/components/tab-bar/tab-bar.d.ts +1 -2
- package/es/components/tab-bar/tab-bar.js +2 -2
- package/es/components/tabs/tabs.js +2 -2
- package/es/components/text-area/text-area.css +1 -0
- package/es/components/tree-select/multiple.js +2 -6
- package/es/components/virtual-input/virtual-input.js +1 -1
- package/es/locales/ru-RU.d.ts +134 -0
- package/es/locales/ru-RU.js +137 -0
- package/package.json +2 -2
- package/umd/antd-mobile.js +1 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _mergeLocale = require("../utils/merge-locale");
|
|
8
|
+
var _base = require("./base");
|
|
9
|
+
const typeTemplate = '${label} не соответствует типу ${type}';
|
|
10
|
+
const ruRU = (0, _mergeLocale.mergeLocale)(_base.base, {
|
|
11
|
+
locale: 'ru',
|
|
12
|
+
common: {
|
|
13
|
+
confirm: 'Подтвердить',
|
|
14
|
+
cancel: 'Отменить',
|
|
15
|
+
loading: 'Загрузка',
|
|
16
|
+
close: 'Закрыть'
|
|
17
|
+
},
|
|
18
|
+
Calendar: {
|
|
19
|
+
markItems: ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'],
|
|
20
|
+
renderYearAndMonth: (year, month) => `${year}/${month}`
|
|
21
|
+
},
|
|
22
|
+
Cascader: {
|
|
23
|
+
placeholder: 'Выбор'
|
|
24
|
+
},
|
|
25
|
+
Dialog: {
|
|
26
|
+
ok: 'ОК'
|
|
27
|
+
},
|
|
28
|
+
DatePicker: {
|
|
29
|
+
tillNow: 'До настоящего времени'
|
|
30
|
+
},
|
|
31
|
+
ErrorBlock: {
|
|
32
|
+
default: {
|
|
33
|
+
title: 'Упс! Что-то пошло не так',
|
|
34
|
+
description: 'Пожалуйста, подождите минуту и повторите попытку'
|
|
35
|
+
},
|
|
36
|
+
busy: {
|
|
37
|
+
title: 'Упс, не загружается',
|
|
38
|
+
description: 'Попробуйте обновить страницу'
|
|
39
|
+
},
|
|
40
|
+
disconnected: {
|
|
41
|
+
title: 'Сеть занята',
|
|
42
|
+
description: 'Попробуйте обновить страницу'
|
|
43
|
+
},
|
|
44
|
+
empty: {
|
|
45
|
+
title: 'Хм, не могу найти...',
|
|
46
|
+
description: 'Хотите попробовать другой запрос?'
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
Form: {
|
|
50
|
+
required: 'Обязательное',
|
|
51
|
+
optional: 'Опциональное',
|
|
52
|
+
defaultValidateMessages: {
|
|
53
|
+
default: 'Ошибка валидации поля ${label}',
|
|
54
|
+
required: 'Пожалуйста, заполните поле ${label}',
|
|
55
|
+
enum: 'Значение ${label} должно быть одним из [${enum}]',
|
|
56
|
+
whitespace: '${label} не может быть пустым символом',
|
|
57
|
+
date: {
|
|
58
|
+
format: '${label} имеет некорректный формат даты',
|
|
59
|
+
parse: '${label} не может быть конвертировано в дату',
|
|
60
|
+
invalid: '${label} не является валидной датой'
|
|
61
|
+
},
|
|
62
|
+
types: {
|
|
63
|
+
string: typeTemplate,
|
|
64
|
+
method: typeTemplate,
|
|
65
|
+
array: typeTemplate,
|
|
66
|
+
object: typeTemplate,
|
|
67
|
+
number: typeTemplate,
|
|
68
|
+
date: typeTemplate,
|
|
69
|
+
boolean: typeTemplate,
|
|
70
|
+
integer: typeTemplate,
|
|
71
|
+
float: typeTemplate,
|
|
72
|
+
regexp: typeTemplate,
|
|
73
|
+
email: typeTemplate,
|
|
74
|
+
url: typeTemplate,
|
|
75
|
+
hex: typeTemplate
|
|
76
|
+
},
|
|
77
|
+
string: {
|
|
78
|
+
len: 'Длина ${label} должна быть ${len} символов(-а)',
|
|
79
|
+
min: 'Длина ${label} должна быть не меньше ${min} символов(-а)',
|
|
80
|
+
max: 'Длина ${label} должна быть не больше ${max} символов(-а)',
|
|
81
|
+
range: 'Длина ${label} должна быть в диапазоне от ${min} до ${max} символов(-а)'
|
|
82
|
+
},
|
|
83
|
+
number: {
|
|
84
|
+
len: '${label} должно быть равно ${len}',
|
|
85
|
+
min: '${label} должно быть значением не меньше ${min}',
|
|
86
|
+
max: '${label} должно быть значением не больше ${max}',
|
|
87
|
+
range: '${label} должно быть значением в диапазоне от ${min} до ${max}'
|
|
88
|
+
},
|
|
89
|
+
array: {
|
|
90
|
+
len: 'Размер ${label} должен быть ${len}',
|
|
91
|
+
min: 'Размер ${label} должен быть не меньше ${min}',
|
|
92
|
+
max: 'Размер ${label} должен быть не больше ${max}',
|
|
93
|
+
range: 'Размер ${label} должен быть в диапазоне от ${min} до ${max}'
|
|
94
|
+
},
|
|
95
|
+
pattern: {
|
|
96
|
+
mismatch: '${label} не соответствует шаблону ${pattern}'
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
ImageUploader: {
|
|
101
|
+
uploading: 'Выгружается...',
|
|
102
|
+
upload: 'Выгрузить'
|
|
103
|
+
},
|
|
104
|
+
InfiniteScroll: {
|
|
105
|
+
noMore: 'Больше нет',
|
|
106
|
+
failedToLoad: 'Ошибка загрузки',
|
|
107
|
+
retry: 'Повторить'
|
|
108
|
+
},
|
|
109
|
+
Input: {
|
|
110
|
+
clear: 'очистить'
|
|
111
|
+
},
|
|
112
|
+
Mask: {
|
|
113
|
+
name: 'Маска'
|
|
114
|
+
},
|
|
115
|
+
Modal: {
|
|
116
|
+
ok: 'ОК'
|
|
117
|
+
},
|
|
118
|
+
PasscodeInput: {
|
|
119
|
+
name: 'Ввод пароля'
|
|
120
|
+
},
|
|
121
|
+
PullToRefresh: {
|
|
122
|
+
pulling: 'Прокрутите вниз, чтобы обновления',
|
|
123
|
+
canRelease: 'Отпустите, чтобы немедленно обновить',
|
|
124
|
+
complete: 'Обновление успешно'
|
|
125
|
+
},
|
|
126
|
+
SearchBar: {
|
|
127
|
+
name: 'Панель поиска'
|
|
128
|
+
},
|
|
129
|
+
Slider: {
|
|
130
|
+
name: 'Слайдер'
|
|
131
|
+
},
|
|
132
|
+
Stepper: {
|
|
133
|
+
decrease: 'вычесть',
|
|
134
|
+
increase: 'прибавить'
|
|
135
|
+
},
|
|
136
|
+
Switch: {
|
|
137
|
+
name: 'Переключатель'
|
|
138
|
+
},
|
|
139
|
+
Selector: {
|
|
140
|
+
name: 'Селектор'
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
var _default = ruRU;
|
|
144
|
+
exports.default = _default;
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
export function convertValueToRange(selectionMode, value) {
|
|
3
|
-
if (selectionMode === undefined)
|
|
4
|
-
return null;
|
|
5
|
-
}
|
|
6
|
-
if (value === null) {
|
|
7
|
-
return null;
|
|
8
|
-
}
|
|
3
|
+
if (selectionMode === undefined || value === null) return null;
|
|
9
4
|
if (Array.isArray(value)) {
|
|
10
5
|
return value;
|
|
11
6
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useRef } from 'react';
|
|
1
|
+
import React, { isValidElement, useRef } from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { animated } from '@react-spring/web';
|
|
4
4
|
import { withNativeProps } from '../../utils/native-props';
|
|
@@ -9,9 +9,7 @@ import ScrollMask from '../scroll-mask';
|
|
|
9
9
|
import { ShouldRender } from '../../utils/should-render';
|
|
10
10
|
import { traverseReactNode } from '../../utils/traverse-react-node';
|
|
11
11
|
const classPrefix = `adm-capsule-tabs`;
|
|
12
|
-
export const CapsuleTab = () =>
|
|
13
|
-
return null;
|
|
14
|
-
};
|
|
12
|
+
export const CapsuleTab = () => null;
|
|
15
13
|
export const CapsuleTabs = props => {
|
|
16
14
|
var _a;
|
|
17
15
|
const tabListContainerRef = useRef(null);
|
|
@@ -20,7 +18,7 @@ export const CapsuleTabs = props => {
|
|
|
20
18
|
let firstActiveKey = null;
|
|
21
19
|
const panes = [];
|
|
22
20
|
traverseReactNode(props.children, (child, index) => {
|
|
23
|
-
if (!
|
|
21
|
+
if (!isValidElement(child)) return;
|
|
24
22
|
const key = child.key;
|
|
25
23
|
if (typeof key !== 'string') return;
|
|
26
24
|
if (index === 0) {
|
|
@@ -21,6 +21,7 @@ export declare type CascaderProps = {
|
|
|
21
21
|
title?: ReactNode;
|
|
22
22
|
confirmText?: ReactNode;
|
|
23
23
|
cancelText?: ReactNode;
|
|
24
|
+
loading?: boolean;
|
|
24
25
|
children?: (items: (CascaderOption | null)[], actions: CascaderActions) => ReactNode;
|
|
25
26
|
onTabsChange?: (index: number) => void;
|
|
26
27
|
activeIcon?: ReactNode;
|
|
@@ -38,6 +39,7 @@ export declare const Cascader: React.ForwardRefExoticComponent<{
|
|
|
38
39
|
title?: ReactNode;
|
|
39
40
|
confirmText?: ReactNode;
|
|
40
41
|
cancelText?: ReactNode;
|
|
42
|
+
loading?: boolean | undefined;
|
|
41
43
|
children?: ((items: (CascaderOption | null)[], actions: CascaderActions) => ReactNode) | undefined;
|
|
42
44
|
onTabsChange?: ((index: number) => void) | undefined;
|
|
43
45
|
activeIcon?: ReactNode;
|
|
@@ -15,6 +15,7 @@ declare const _default: import("react").ForwardRefExoticComponent<{
|
|
|
15
15
|
title?: import("react").ReactNode;
|
|
16
16
|
confirmText?: import("react").ReactNode;
|
|
17
17
|
cancelText?: import("react").ReactNode;
|
|
18
|
+
loading?: boolean | undefined;
|
|
18
19
|
children?: ((items: (import("../cascader-view").CascaderOption | null)[], actions: import("./cascader").CascaderActions) => import("react").ReactNode) | undefined;
|
|
19
20
|
onTabsChange?: ((index: number) => void) | undefined;
|
|
20
21
|
activeIcon?: import("react").ReactNode;
|
|
@@ -12,6 +12,7 @@ export declare type CheckboxProps = {
|
|
|
12
12
|
id?: string;
|
|
13
13
|
icon?: (checked: boolean, indeterminate: boolean) => React.ReactNode;
|
|
14
14
|
children?: React.ReactNode;
|
|
15
|
+
onClick?: (event: React.MouseEvent<HTMLLabelElement, MouseEvent>) => void;
|
|
15
16
|
} & NativeProps<'--icon-size' | '--font-size' | '--gap'>;
|
|
16
17
|
export declare type CheckboxRef = {
|
|
17
18
|
check: () => void;
|
|
@@ -29,6 +30,7 @@ export declare const Checkbox: React.ForwardRefExoticComponent<{
|
|
|
29
30
|
id?: string | undefined;
|
|
30
31
|
icon?: ((checked: boolean, indeterminate: boolean) => React.ReactNode) | undefined;
|
|
31
32
|
children?: React.ReactNode;
|
|
33
|
+
onClick?: ((event: React.MouseEvent<HTMLLabelElement, MouseEvent>) => void) | undefined;
|
|
32
34
|
} & {
|
|
33
35
|
className?: string | undefined;
|
|
34
36
|
style?: (React.CSSProperties & Partial<Record<"--font-size" | "--icon-size" | "--gap", string>>) | undefined;
|
|
@@ -69,6 +69,7 @@ export const Checkbox = forwardRef((p, ref) => {
|
|
|
69
69
|
}, props.indeterminate ? React.createElement(IndeterminateIcon, null) : checked && React.createElement(CheckIcon, null));
|
|
70
70
|
};
|
|
71
71
|
return withNativeProps(props, React.createElement("label", {
|
|
72
|
+
onClick: props.onClick,
|
|
72
73
|
className: classNames(classPrefix, {
|
|
73
74
|
[`${classPrefix}-checked`]: checked && !props.indeterminate,
|
|
74
75
|
[`${classPrefix}-indeterminate`]: props.indeterminate,
|
|
@@ -12,6 +12,7 @@ declare const _default: import("react").ForwardRefExoticComponent<{
|
|
|
12
12
|
id?: string | undefined;
|
|
13
13
|
icon?: ((checked: boolean, indeterminate: boolean) => import("react").ReactNode) | undefined;
|
|
14
14
|
children?: import("react").ReactNode;
|
|
15
|
+
onClick?: ((event: import("react").MouseEvent<HTMLLabelElement, MouseEvent>) => void) | undefined;
|
|
15
16
|
} & {
|
|
16
17
|
className?: string | undefined;
|
|
17
18
|
style?: (import("react").CSSProperties & Partial<Record<"--font-size" | "--icon-size" | "--gap", string>>) | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useRef } from 'react';
|
|
1
|
+
import React, { isValidElement, useRef } from 'react';
|
|
2
2
|
import { withNativeProps } from '../../utils/native-props';
|
|
3
3
|
import List from '../list';
|
|
4
4
|
import { DownOutline } from 'antd-mobile-icons';
|
|
@@ -81,7 +81,7 @@ export const Collapse = props => {
|
|
|
81
81
|
var _a;
|
|
82
82
|
const panels = [];
|
|
83
83
|
traverseReactNode(props.children, child => {
|
|
84
|
-
if (!
|
|
84
|
+
if (!isValidElement(child)) return;
|
|
85
85
|
const key = child.key;
|
|
86
86
|
if (typeof key !== 'string') return;
|
|
87
87
|
panels.push(child);
|
|
@@ -66,67 +66,55 @@ export function generateDatePickerColumns(selected, min, max, precision, renderL
|
|
|
66
66
|
const lower = minYear;
|
|
67
67
|
const upper = maxYear;
|
|
68
68
|
const years = generateColumn(lower, upper, 'year');
|
|
69
|
-
ret.push(years.map(v => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
};
|
|
74
|
-
}));
|
|
69
|
+
ret.push(years.map(v => ({
|
|
70
|
+
label: renderLabel('year', v),
|
|
71
|
+
value: v.toString()
|
|
72
|
+
})));
|
|
75
73
|
}
|
|
76
74
|
if (rank >= precisionRankRecord.month) {
|
|
77
75
|
const lower = isInMinYear ? minMonth : 1;
|
|
78
76
|
const upper = isInMaxYear ? maxMonth : 12;
|
|
79
77
|
const months = generateColumn(lower, upper, 'month');
|
|
80
|
-
ret.push(months.map(v => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
};
|
|
85
|
-
}));
|
|
78
|
+
ret.push(months.map(v => ({
|
|
79
|
+
label: renderLabel('month', v),
|
|
80
|
+
value: v.toString()
|
|
81
|
+
})));
|
|
86
82
|
}
|
|
87
83
|
if (rank >= precisionRankRecord.day) {
|
|
88
84
|
const lower = isInMinMonth ? minDay : 1;
|
|
89
85
|
const upper = isInMaxMonth ? maxDay : firstDayInSelectedMonth.daysInMonth();
|
|
90
86
|
const days = generateColumn(lower, upper, 'day');
|
|
91
|
-
ret.push(days.map(v => {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
};
|
|
96
|
-
}));
|
|
87
|
+
ret.push(days.map(v => ({
|
|
88
|
+
label: renderLabel('day', v),
|
|
89
|
+
value: v.toString()
|
|
90
|
+
})));
|
|
97
91
|
}
|
|
98
92
|
if (rank >= precisionRankRecord.hour) {
|
|
99
93
|
const lower = isInMinDay ? minHour : 0;
|
|
100
94
|
const upper = isInMaxDay ? maxHour : 23;
|
|
101
95
|
const hours = generateColumn(lower, upper, 'hour');
|
|
102
|
-
ret.push(hours.map(v => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
};
|
|
107
|
-
}));
|
|
96
|
+
ret.push(hours.map(v => ({
|
|
97
|
+
label: renderLabel('hour', v),
|
|
98
|
+
value: v.toString()
|
|
99
|
+
})));
|
|
108
100
|
}
|
|
109
101
|
if (rank >= precisionRankRecord.minute) {
|
|
110
102
|
const lower = isInMinHour ? minMinute : 0;
|
|
111
103
|
const upper = isInMaxHour ? maxMinute : 59;
|
|
112
104
|
const minutes = generateColumn(lower, upper, 'minute');
|
|
113
|
-
ret.push(minutes.map(v => {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
};
|
|
118
|
-
}));
|
|
105
|
+
ret.push(minutes.map(v => ({
|
|
106
|
+
label: renderLabel('minute', v),
|
|
107
|
+
value: v.toString()
|
|
108
|
+
})));
|
|
119
109
|
}
|
|
120
110
|
if (rank >= precisionRankRecord.second) {
|
|
121
111
|
const lower = isInMinMinute ? minSecond : 0;
|
|
122
112
|
const upper = isInMaxMinute ? maxSecond : 59;
|
|
123
113
|
const seconds = generateColumn(lower, upper, 'second');
|
|
124
|
-
ret.push(seconds.map(v => {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
};
|
|
129
|
-
}));
|
|
114
|
+
ret.push(seconds.map(v => ({
|
|
115
|
+
label: renderLabel('second', v),
|
|
116
|
+
value: v.toString()
|
|
117
|
+
})));
|
|
130
118
|
}
|
|
131
119
|
// Till Now
|
|
132
120
|
if (tillNow) {
|
|
@@ -49,34 +49,28 @@ export function generateDatePickerColumns(selected, min, max, precision, renderL
|
|
|
49
49
|
const lower = minYear;
|
|
50
50
|
const upper = maxYear;
|
|
51
51
|
const years = generateColumn(lower, upper, 'year');
|
|
52
|
-
ret.push(years.map(v => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
};
|
|
57
|
-
}));
|
|
52
|
+
ret.push(years.map(v => ({
|
|
53
|
+
label: renderLabel('year', v),
|
|
54
|
+
value: v.toString()
|
|
55
|
+
})));
|
|
58
56
|
}
|
|
59
57
|
if (rank >= precisionRankRecord.week) {
|
|
60
58
|
const lower = isInMinYear ? minWeek : 1;
|
|
61
59
|
const upper = isInMaxYear ? maxWeek : selectedYearWeeks;
|
|
62
60
|
const weeks = generateColumn(lower, upper, 'week');
|
|
63
|
-
ret.push(weeks.map(v => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
};
|
|
68
|
-
}));
|
|
61
|
+
ret.push(weeks.map(v => ({
|
|
62
|
+
label: renderLabel('week', v),
|
|
63
|
+
value: v.toString()
|
|
64
|
+
})));
|
|
69
65
|
}
|
|
70
66
|
if (rank >= precisionRankRecord['week-day']) {
|
|
71
67
|
const lower = isInMinWeek ? minWeekday : 1;
|
|
72
68
|
const upper = isInMaxWeek ? maxWeekday : 7;
|
|
73
69
|
const weeks = generateColumn(lower, upper, 'week-day');
|
|
74
|
-
ret.push(weeks.map(v => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
};
|
|
79
|
-
}));
|
|
70
|
+
ret.push(weeks.map(v => ({
|
|
71
|
+
label: renderLabel('week-day', v),
|
|
72
|
+
value: v.toString()
|
|
73
|
+
})));
|
|
80
74
|
}
|
|
81
75
|
return ret;
|
|
82
76
|
}
|
|
@@ -2,15 +2,17 @@ import { FC, ReactNode } from 'react';
|
|
|
2
2
|
import type { PickerViewProps } from '../picker-view';
|
|
3
3
|
import { NativeProps } from '../../utils/native-props';
|
|
4
4
|
import type { Precision, DatePickerFilter } from '../date-picker/date-picker-utils';
|
|
5
|
+
import type { PickerDate } from '../date-picker/util';
|
|
5
6
|
export declare type RenderLabel = (type: Precision | 'now', data: number) => ReactNode;
|
|
6
7
|
export declare type DatePickerViewProps = Pick<PickerViewProps, 'style' | 'mouseWheel' | 'loading' | 'loadingContent'> & {
|
|
7
|
-
value?:
|
|
8
|
-
defaultValue?:
|
|
9
|
-
onChange?: (value:
|
|
10
|
-
min?:
|
|
11
|
-
max?:
|
|
8
|
+
value?: PickerDate;
|
|
9
|
+
defaultValue?: PickerDate;
|
|
10
|
+
onChange?: (value: PickerDate) => void;
|
|
11
|
+
min?: PickerDate;
|
|
12
|
+
max?: PickerDate;
|
|
12
13
|
precision?: Precision;
|
|
13
14
|
renderLabel?: RenderLabel;
|
|
14
15
|
filter?: DatePickerFilter;
|
|
16
|
+
tillNow?: boolean;
|
|
15
17
|
} & NativeProps;
|
|
16
18
|
export declare const DatePickerView: FC<DatePickerViewProps>;
|
|
@@ -5,6 +5,7 @@ import { mergeProps } from '../../utils/with-default-props';
|
|
|
5
5
|
import { usePropsValue } from '../../utils/use-props-value';
|
|
6
6
|
import { generateDatePickerColumns, convertDateToStringArray, convertStringArrayToDate } from '../date-picker/date-picker-utils';
|
|
7
7
|
import useRenderLabel from './useRenderLabel';
|
|
8
|
+
import { TILL_NOW } from '../date-picker/util';
|
|
8
9
|
const thisYear = new Date().getFullYear();
|
|
9
10
|
const defaultProps = {
|
|
10
11
|
min: new Date(new Date().setFullYear(thisYear - 10)),
|
|
@@ -22,7 +23,12 @@ export const DatePickerView = p => {
|
|
|
22
23
|
defaultValue: (_a = props.defaultValue) !== null && _a !== void 0 ? _a : null
|
|
23
24
|
});
|
|
24
25
|
const mergedRenderLabel = useRenderLabel(renderLabel);
|
|
25
|
-
const pickerValue = useMemo(() =>
|
|
26
|
+
const pickerValue = useMemo(() => {
|
|
27
|
+
if (value === null || value === void 0 ? void 0 : value.tillNow) {
|
|
28
|
+
return [TILL_NOW, null, null];
|
|
29
|
+
}
|
|
30
|
+
return convertDateToStringArray(value, props.precision);
|
|
31
|
+
}, [value, props.precision]);
|
|
26
32
|
const onChange = useCallback(val => {
|
|
27
33
|
var _a;
|
|
28
34
|
const date = convertStringArrayToDate(val, props.precision);
|
|
@@ -32,7 +38,7 @@ export const DatePickerView = p => {
|
|
|
32
38
|
}
|
|
33
39
|
}, [props.onChange, props.precision]);
|
|
34
40
|
return withNativeProps(props, React.createElement(PickerView, {
|
|
35
|
-
columns: selected => generateDatePickerColumns(selected, props.min, props.max, props.precision, mergedRenderLabel, props.filter),
|
|
41
|
+
columns: selected => generateDatePickerColumns(selected, props.min, props.max, props.precision, mergedRenderLabel, props.filter, props.tillNow),
|
|
36
42
|
loading: props.loading,
|
|
37
43
|
loadingContent: props.loadingContent,
|
|
38
44
|
value: pickerValue,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useClickAway } from 'ahooks';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
|
-
import React, { cloneElement, useEffect, useRef, useState, forwardRef, useImperativeHandle } from 'react';
|
|
3
|
+
import React, { cloneElement, useEffect, useRef, useState, forwardRef, useImperativeHandle, isValidElement } from 'react';
|
|
4
4
|
import Popup from '../popup';
|
|
5
5
|
import { ItemChildrenWrap } from './item';
|
|
6
6
|
import { withNativeProps } from '../../utils/native-props';
|
|
@@ -49,7 +49,7 @@ const Dropdown = forwardRef((p, ref) => {
|
|
|
49
49
|
let popupForceRender = false;
|
|
50
50
|
const items = [];
|
|
51
51
|
const navs = React.Children.map(props.children, child => {
|
|
52
|
-
if (
|
|
52
|
+
if (isValidElement(child)) {
|
|
53
53
|
const childProps = Object.assign(Object.assign({}, child.props), {
|
|
54
54
|
onClick: () => {
|
|
55
55
|
changeActive(child.key);
|
|
@@ -35,29 +35,25 @@ export const Footer = p => {
|
|
|
35
35
|
className: classNames(classPrefix)
|
|
36
36
|
}, label && React.createElement("div", {
|
|
37
37
|
className: `${classPrefix}-label`
|
|
38
|
-
}, React.createElement(Divider, null, label)), links
|
|
38
|
+
}, React.createElement(Divider, null, label)), !!(links === null || links === void 0 ? void 0 : links.length) && React.createElement("div", {
|
|
39
39
|
className: `${classPrefix}-links`
|
|
40
|
-
}, links.map((link, index) => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}));
|
|
50
|
-
})), content && React.createElement("div", {
|
|
40
|
+
}, links.map((link, index) => React.createElement(React.Fragment, {
|
|
41
|
+
key: index
|
|
42
|
+
}, React.createElement("a", {
|
|
43
|
+
href: link.href,
|
|
44
|
+
rel: 'noopener noreferrer',
|
|
45
|
+
onClick: event => clickLinkItem(link, index, event)
|
|
46
|
+
}, link.text), index !== links.length - 1 && React.createElement(Divider, {
|
|
47
|
+
direction: 'vertical'
|
|
48
|
+
})))), content && React.createElement("div", {
|
|
51
49
|
className: `${classPrefix}-content`
|
|
52
50
|
}, content), chips && chips.length > 0 && React.createElement("div", {
|
|
53
51
|
className: `${classPrefix}-chips`
|
|
54
|
-
}, chips.map((chip, index) => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}, chip.text);
|
|
62
|
-
}))));
|
|
52
|
+
}, chips.map((chip, index) => React.createElement("div", {
|
|
53
|
+
key: index,
|
|
54
|
+
onClick: () => clickChipItem(chip, index),
|
|
55
|
+
className: classNames(`${classPrefix}-chip`, {
|
|
56
|
+
[`${classPrefix}-chip-link`]: chip.type === 'link'
|
|
57
|
+
})
|
|
58
|
+
}, chip.text)))));
|
|
63
59
|
};
|
|
@@ -95,9 +95,7 @@ export const ImageUploader = p => {
|
|
|
95
95
|
let files = [].slice.call(rawFiles);
|
|
96
96
|
e.target.value = ''; // HACK: fix the same file doesn't trigger onChange
|
|
97
97
|
if (props.beforeUpload) {
|
|
98
|
-
const postFiles = files.map(file =>
|
|
99
|
-
return processFile(file, files);
|
|
100
|
-
});
|
|
98
|
+
const postFiles = files.map(file => processFile(file, files));
|
|
101
99
|
yield Promise.all(postFiles).then(filesList => {
|
|
102
100
|
files = filesList.filter(Boolean);
|
|
103
101
|
});
|
|
@@ -57,7 +57,11 @@ export const Input = forwardRef((p, ref) => {
|
|
|
57
57
|
function checkValue() {
|
|
58
58
|
let nextValue = value;
|
|
59
59
|
if (props.type === 'number') {
|
|
60
|
-
|
|
60
|
+
const boundValue = nextValue && bound(parseFloat(nextValue), props.min, props.max).toString();
|
|
61
|
+
// fix the display issue of numbers starting with 0
|
|
62
|
+
if (Number(nextValue) !== Number(boundValue)) {
|
|
63
|
+
nextValue = boundValue;
|
|
64
|
+
}
|
|
61
65
|
}
|
|
62
66
|
if (nextValue !== value) {
|
|
63
67
|
setValue(nextValue);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useRef } from 'react';
|
|
1
|
+
import React, { isValidElement, useRef } from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { animated } from '@react-spring/web';
|
|
4
4
|
import { withNativeProps } from '../../utils/native-props';
|
|
@@ -20,7 +20,7 @@ export const JumboTabs = props => {
|
|
|
20
20
|
let firstActiveKey = null;
|
|
21
21
|
const panes = [];
|
|
22
22
|
traverseReactNode(props.children, (child, index) => {
|
|
23
|
-
if (!
|
|
23
|
+
if (!isValidElement(child)) return;
|
|
24
24
|
const key = child.key;
|
|
25
25
|
if (typeof key !== 'string') return;
|
|
26
26
|
if (index === 0) {
|
|
@@ -31,19 +31,17 @@ export const Modal = p => {
|
|
|
31
31
|
direction: 'vertical',
|
|
32
32
|
block: true,
|
|
33
33
|
className: classNames(cls('footer'), props.actions.length === 0 && cls('footer-empty'))
|
|
34
|
-
}, props.actions.map((action, index) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
});
|
|
46
|
-
})));
|
|
34
|
+
}, props.actions.map((action, index) => React.createElement(ModalActionButton, {
|
|
35
|
+
key: action.key,
|
|
36
|
+
action: action,
|
|
37
|
+
onAction: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
+
var _a, _b, _c;
|
|
39
|
+
yield Promise.all([(_a = action.onClick) === null || _a === void 0 ? void 0 : _a.call(action), (_b = props.onAction) === null || _b === void 0 ? void 0 : _b.call(props, action, index)]);
|
|
40
|
+
if (props.closeOnAction) {
|
|
41
|
+
(_c = props.onClose) === null || _c === void 0 ? void 0 : _c.call(props);
|
|
42
|
+
}
|
|
43
|
+
})
|
|
44
|
+
}))));
|
|
47
45
|
return React.createElement(CenterPopup, {
|
|
48
46
|
className: classNames(cls(), props.className),
|
|
49
47
|
style: props.style,
|
|
@@ -31,13 +31,11 @@ export const Popover = forwardRef((p, ref) => {
|
|
|
31
31
|
defaultValue: props.defaultVisible,
|
|
32
32
|
onChange: props.onVisibleChange
|
|
33
33
|
});
|
|
34
|
-
useImperativeHandle(ref, () => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
};
|
|
40
|
-
}, [visible]);
|
|
34
|
+
useImperativeHandle(ref, () => ({
|
|
35
|
+
show: () => setVisible(true),
|
|
36
|
+
hide: () => setVisible(false),
|
|
37
|
+
visible
|
|
38
|
+
}), [visible]);
|
|
41
39
|
const targetRef = useRef(null);
|
|
42
40
|
const floatingRef = useRef(null);
|
|
43
41
|
const arrowRef = useRef(null);
|
|
@@ -21,18 +21,18 @@ const defaultProps = Object.assign(Object.assign({}, defaultPopupBaseProps), {
|
|
|
21
21
|
});
|
|
22
22
|
export const Popup = p => {
|
|
23
23
|
const props = mergeProps(defaultProps, p);
|
|
24
|
+
const bodyCls = classNames(`${classPrefix}-body`, props.bodyClassName, `${classPrefix}-body-position-${props.position}`);
|
|
24
25
|
const {
|
|
25
26
|
locale
|
|
26
27
|
} = useConfig();
|
|
27
|
-
const bodyCls = classNames(`${classPrefix}-body`, props.bodyClassName, `${classPrefix}-body-position-${props.position}`);
|
|
28
28
|
const [active, setActive] = useState(props.visible);
|
|
29
|
+
const ref = useRef(null);
|
|
30
|
+
useLockScroll(ref, props.disableBodyScroll && active ? 'strict' : false);
|
|
29
31
|
useIsomorphicLayoutEffect(() => {
|
|
30
32
|
if (props.visible) {
|
|
31
33
|
setActive(true);
|
|
32
34
|
}
|
|
33
35
|
}, [props.visible]);
|
|
34
|
-
const ref = useRef(null);
|
|
35
|
-
useLockScroll(ref, props.disableBodyScroll && active ? 'strict' : false);
|
|
36
36
|
const unmountedRef = useUnmountedRef();
|
|
37
37
|
const {
|
|
38
38
|
percent
|
|
@@ -11,5 +11,6 @@ export declare type RadioProps = {
|
|
|
11
11
|
id?: string;
|
|
12
12
|
icon?: (checked: boolean) => React.ReactNode;
|
|
13
13
|
children?: React.ReactNode;
|
|
14
|
+
onClick?: (event: React.MouseEvent<HTMLLabelElement, MouseEvent>) => void;
|
|
14
15
|
} & NativeProps<'--icon-size' | '--font-size' | '--gap'>;
|
|
15
16
|
export declare const Radio: FC<RadioProps>;
|
|
@@ -56,6 +56,7 @@ export const Radio = p => {
|
|
|
56
56
|
}, checked && React.createElement(CheckIcon, null));
|
|
57
57
|
};
|
|
58
58
|
return withNativeProps(props, React.createElement("label", {
|
|
59
|
+
onClick: props.onClick,
|
|
59
60
|
className: classNames(classPrefix, {
|
|
60
61
|
[`${classPrefix}-checked`]: checked,
|
|
61
62
|
[`${classPrefix}-disabled`]: disabled,
|