antd-mobile 5.36.0 → 5.37.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 (244) hide show
  1. package/2x/bundle/antd-mobile.cjs.development.js +393 -295
  2. package/2x/bundle/antd-mobile.cjs.js +7 -7
  3. package/2x/bundle/antd-mobile.es.development.js +393 -295
  4. package/2x/bundle/antd-mobile.es.js +5619 -5550
  5. package/2x/bundle/antd-mobile.umd.development.js +393 -295
  6. package/2x/bundle/antd-mobile.umd.js +7 -7
  7. package/2x/bundle/style.css +5 -8
  8. package/2x/cjs/components/card/card.css +5 -5
  9. package/2x/cjs/components/card/card.patch.css +21 -0
  10. package/2x/cjs/components/center-popup/center-popup.js +46 -43
  11. package/2x/cjs/components/check-list/check-list.js +15 -11
  12. package/2x/cjs/components/collapse/collapse.d.ts +10 -2
  13. package/2x/cjs/components/collapse/collapse.js +54 -39
  14. package/2x/cjs/components/config-provider/config-provider.d.ts +40 -2
  15. package/2x/cjs/components/dropdown/context.d.ts +2 -0
  16. package/2x/cjs/components/dropdown/context.js +10 -0
  17. package/2x/cjs/components/dropdown/dropdown.d.ts +11 -3
  18. package/2x/cjs/components/dropdown/dropdown.js +23 -16
  19. package/2x/cjs/components/dropdown/index.d.ts +1 -0
  20. package/2x/cjs/components/dropdown/item.d.ts +5 -1
  21. package/2x/cjs/components/dropdown/item.js +22 -8
  22. package/2x/cjs/components/form/form-item.d.ts +6 -5
  23. package/2x/cjs/components/form/form-item.js +25 -17
  24. package/2x/cjs/components/form/form.d.ts +1 -1
  25. package/2x/cjs/components/form/index.d.ts +1 -1
  26. package/2x/cjs/components/input/input.d.ts +3 -1
  27. package/2x/cjs/components/input/input.js +53 -51
  28. package/2x/cjs/components/list/list-item.d.ts +6 -2
  29. package/2x/cjs/components/list/list-item.js +16 -6
  30. package/2x/cjs/components/nav-bar/nav-bar.d.ts +4 -0
  31. package/2x/cjs/components/nav-bar/nav-bar.js +18 -13
  32. package/2x/cjs/components/notice-bar/notice-bar.css +0 -3
  33. package/2x/cjs/components/notice-bar/notice-bar.d.ts +3 -1
  34. package/2x/cjs/components/notice-bar/notice-bar.js +30 -25
  35. package/2x/cjs/components/number-keyboard/number-keyboard.d.ts +1 -1
  36. package/2x/cjs/components/number-keyboard/number-keyboard.js +14 -13
  37. package/2x/cjs/components/popup/popup-base-props.d.ts +3 -2
  38. package/2x/cjs/components/popup/popup-base-props.js +4 -0
  39. package/2x/cjs/components/popup/popup.js +5 -5
  40. package/2x/cjs/components/result/result.js +3 -10
  41. package/2x/cjs/components/result/use-result-icon.d.ts +3 -0
  42. package/2x/cjs/components/result/use-result-icon.js +37 -0
  43. package/2x/cjs/components/result-page/result-page.js +3 -10
  44. package/2x/cjs/components/search-bar/search-bar.d.ts +10 -2
  45. package/2x/cjs/components/search-bar/search-bar.js +34 -33
  46. package/2x/cjs/components/toast/toast.d.ts +2 -2
  47. package/2x/cjs/components/toast/toast.js +4 -4
  48. package/2x/cjs/components/virtual-input/virtual-input.d.ts +5 -5
  49. package/2x/cjs/components/virtual-input/virtual-input.js +26 -24
  50. package/2x/cjs/locales/ar-SA.js +2 -2
  51. package/2x/cjs/locales/de-DE.js +3 -3
  52. package/2x/cjs/locales/es-ES.js +2 -2
  53. package/2x/cjs/locales/fr-FR.js +1 -1
  54. package/2x/cjs/locales/in-ID.d.ts +139 -0
  55. package/2x/cjs/locales/in-ID.js +149 -0
  56. package/2x/cjs/locales/ja-JP.js +2 -2
  57. package/2x/cjs/locales/th-TH.js +2 -2
  58. package/2x/cjs/utils/is-node-with-content.d.ts +3 -0
  59. package/2x/cjs/utils/is-node-with-content.js +3 -0
  60. package/2x/cjs/utils/use-mutation-effect.d.ts +1 -0
  61. package/2x/cjs/utils/use-mutation-effect.js +20 -9
  62. package/2x/cjs/utils/with-default-props.d.ts +7 -0
  63. package/2x/cjs/utils/with-default-props.js +21 -5
  64. package/2x/es/components/card/card.css +5 -5
  65. package/2x/es/components/card/card.patch.css +21 -0
  66. package/2x/es/components/center-popup/center-popup.js +45 -42
  67. package/2x/es/components/check-list/check-list.js +15 -11
  68. package/2x/es/components/collapse/collapse.d.ts +10 -2
  69. package/2x/es/components/collapse/collapse.js +53 -38
  70. package/2x/es/components/config-provider/config-provider.d.ts +40 -2
  71. package/2x/es/components/dropdown/context.d.ts +2 -0
  72. package/2x/es/components/dropdown/context.js +2 -0
  73. package/2x/es/components/dropdown/dropdown.d.ts +11 -3
  74. package/2x/es/components/dropdown/dropdown.js +24 -17
  75. package/2x/es/components/dropdown/index.d.ts +1 -0
  76. package/2x/es/components/dropdown/item.d.ts +5 -1
  77. package/2x/es/components/dropdown/item.js +22 -8
  78. package/2x/es/components/form/form-item.d.ts +6 -5
  79. package/2x/es/components/form/form-item.js +24 -16
  80. package/2x/es/components/form/form.d.ts +1 -1
  81. package/2x/es/components/form/index.d.ts +1 -1
  82. package/2x/es/components/input/input.d.ts +3 -1
  83. package/2x/es/components/input/input.js +52 -50
  84. package/2x/es/components/list/list-item.d.ts +6 -2
  85. package/2x/es/components/list/list-item.js +16 -6
  86. package/2x/es/components/nav-bar/nav-bar.d.ts +4 -0
  87. package/2x/es/components/nav-bar/nav-bar.js +18 -13
  88. package/2x/es/components/notice-bar/notice-bar.css +0 -3
  89. package/2x/es/components/notice-bar/notice-bar.d.ts +3 -1
  90. package/2x/es/components/notice-bar/notice-bar.js +29 -24
  91. package/2x/es/components/number-keyboard/number-keyboard.d.ts +1 -1
  92. package/2x/es/components/number-keyboard/number-keyboard.js +13 -12
  93. package/2x/es/components/popup/popup-base-props.d.ts +3 -2
  94. package/2x/es/components/popup/popup-base-props.js +3 -0
  95. package/2x/es/components/popup/popup.js +5 -5
  96. package/2x/es/components/result/result.js +3 -10
  97. package/2x/es/components/result/use-result-icon.d.ts +3 -0
  98. package/2x/es/components/result/use-result-icon.js +29 -0
  99. package/2x/es/components/result-page/result-page.js +3 -10
  100. package/2x/es/components/search-bar/search-bar.d.ts +10 -2
  101. package/2x/es/components/search-bar/search-bar.js +33 -32
  102. package/2x/es/components/toast/toast.d.ts +2 -2
  103. package/2x/es/components/toast/toast.js +3 -3
  104. package/2x/es/components/virtual-input/virtual-input.d.ts +5 -5
  105. package/2x/es/components/virtual-input/virtual-input.js +25 -23
  106. package/2x/es/locales/ar-SA.js +2 -2
  107. package/2x/es/locales/de-DE.js +3 -3
  108. package/2x/es/locales/es-ES.js +2 -2
  109. package/2x/es/locales/fr-FR.js +1 -1
  110. package/2x/es/locales/in-ID.d.ts +139 -0
  111. package/2x/es/locales/in-ID.js +142 -0
  112. package/2x/es/locales/ja-JP.js +2 -2
  113. package/2x/es/locales/th-TH.js +2 -2
  114. package/2x/es/utils/is-node-with-content.d.ts +3 -0
  115. package/2x/es/utils/is-node-with-content.js +3 -0
  116. package/2x/es/utils/use-mutation-effect.d.ts +1 -0
  117. package/2x/es/utils/use-mutation-effect.js +19 -9
  118. package/2x/es/utils/with-default-props.d.ts +7 -0
  119. package/2x/es/utils/with-default-props.js +20 -5
  120. package/2x/package.json +3 -2
  121. package/bundle/antd-mobile.cjs.development.js +393 -295
  122. package/bundle/antd-mobile.cjs.js +7 -7
  123. package/bundle/antd-mobile.compatible.umd.js +1 -1
  124. package/bundle/antd-mobile.es.development.js +393 -295
  125. package/bundle/antd-mobile.es.js +5619 -5550
  126. package/bundle/antd-mobile.umd.development.js +393 -295
  127. package/bundle/antd-mobile.umd.js +7 -7
  128. package/bundle/style.css +1 -1
  129. package/cjs/components/card/card.css +5 -5
  130. package/cjs/components/card/card.patch.css +17 -0
  131. package/cjs/components/center-popup/center-popup.js +46 -43
  132. package/cjs/components/check-list/check-list.js +15 -11
  133. package/cjs/components/collapse/collapse.d.ts +10 -2
  134. package/cjs/components/collapse/collapse.js +54 -39
  135. package/cjs/components/config-provider/config-provider.d.ts +40 -2
  136. package/cjs/components/dropdown/context.d.ts +2 -0
  137. package/cjs/components/dropdown/context.js +10 -0
  138. package/cjs/components/dropdown/dropdown.d.ts +11 -3
  139. package/cjs/components/dropdown/dropdown.js +23 -16
  140. package/cjs/components/dropdown/index.d.ts +1 -0
  141. package/cjs/components/dropdown/item.d.ts +5 -1
  142. package/cjs/components/dropdown/item.js +22 -8
  143. package/cjs/components/form/form-item.d.ts +6 -5
  144. package/cjs/components/form/form-item.js +25 -17
  145. package/cjs/components/form/form.d.ts +1 -1
  146. package/cjs/components/form/index.d.ts +1 -1
  147. package/cjs/components/input/input.d.ts +3 -1
  148. package/cjs/components/input/input.js +53 -51
  149. package/cjs/components/list/list-item.d.ts +6 -2
  150. package/cjs/components/list/list-item.js +16 -6
  151. package/cjs/components/nav-bar/nav-bar.d.ts +4 -0
  152. package/cjs/components/nav-bar/nav-bar.js +18 -13
  153. package/cjs/components/notice-bar/notice-bar.css +0 -2
  154. package/cjs/components/notice-bar/notice-bar.d.ts +3 -1
  155. package/cjs/components/notice-bar/notice-bar.js +30 -25
  156. package/cjs/components/number-keyboard/number-keyboard.d.ts +1 -1
  157. package/cjs/components/number-keyboard/number-keyboard.js +14 -13
  158. package/cjs/components/popup/popup-base-props.d.ts +3 -2
  159. package/cjs/components/popup/popup-base-props.js +4 -0
  160. package/cjs/components/popup/popup.js +5 -5
  161. package/cjs/components/result/result.js +3 -10
  162. package/cjs/components/result/use-result-icon.d.ts +3 -0
  163. package/cjs/components/result/use-result-icon.js +37 -0
  164. package/cjs/components/result-page/result-page.js +3 -10
  165. package/cjs/components/search-bar/search-bar.d.ts +10 -2
  166. package/cjs/components/search-bar/search-bar.js +34 -33
  167. package/cjs/components/toast/toast.css +1 -1
  168. package/cjs/components/toast/toast.d.ts +2 -2
  169. package/cjs/components/toast/toast.js +4 -4
  170. package/cjs/components/virtual-input/virtual-input.d.ts +5 -5
  171. package/cjs/components/virtual-input/virtual-input.js +26 -24
  172. package/cjs/locales/ar-SA.js +2 -2
  173. package/cjs/locales/de-DE.js +3 -3
  174. package/cjs/locales/es-ES.js +2 -2
  175. package/cjs/locales/fr-FR.js +1 -1
  176. package/cjs/locales/in-ID.d.ts +139 -0
  177. package/cjs/locales/in-ID.js +149 -0
  178. package/cjs/locales/ja-JP.js +2 -2
  179. package/cjs/locales/th-TH.js +2 -2
  180. package/cjs/utils/is-node-with-content.d.ts +3 -0
  181. package/cjs/utils/is-node-with-content.js +3 -0
  182. package/cjs/utils/use-mutation-effect.d.ts +1 -0
  183. package/cjs/utils/use-mutation-effect.js +20 -9
  184. package/cjs/utils/with-default-props.d.ts +7 -0
  185. package/cjs/utils/with-default-props.js +21 -5
  186. package/es/components/card/card.css +5 -5
  187. package/es/components/card/card.patch.css +17 -0
  188. package/es/components/center-popup/center-popup.js +45 -42
  189. package/es/components/check-list/check-list.js +15 -11
  190. package/es/components/collapse/collapse.d.ts +10 -2
  191. package/es/components/collapse/collapse.js +53 -38
  192. package/es/components/config-provider/config-provider.d.ts +40 -2
  193. package/es/components/dropdown/context.d.ts +2 -0
  194. package/es/components/dropdown/context.js +2 -0
  195. package/es/components/dropdown/dropdown.d.ts +11 -3
  196. package/es/components/dropdown/dropdown.js +24 -17
  197. package/es/components/dropdown/index.d.ts +1 -0
  198. package/es/components/dropdown/item.d.ts +5 -1
  199. package/es/components/dropdown/item.js +22 -8
  200. package/es/components/form/form-item.d.ts +6 -5
  201. package/es/components/form/form-item.js +24 -16
  202. package/es/components/form/form.d.ts +1 -1
  203. package/es/components/form/index.d.ts +1 -1
  204. package/es/components/input/input.d.ts +3 -1
  205. package/es/components/input/input.js +52 -50
  206. package/es/components/list/list-item.d.ts +6 -2
  207. package/es/components/list/list-item.js +16 -6
  208. package/es/components/nav-bar/nav-bar.d.ts +4 -0
  209. package/es/components/nav-bar/nav-bar.js +18 -13
  210. package/es/components/notice-bar/notice-bar.css +0 -2
  211. package/es/components/notice-bar/notice-bar.d.ts +3 -1
  212. package/es/components/notice-bar/notice-bar.js +29 -24
  213. package/es/components/number-keyboard/number-keyboard.d.ts +1 -1
  214. package/es/components/number-keyboard/number-keyboard.js +13 -12
  215. package/es/components/popup/popup-base-props.d.ts +3 -2
  216. package/es/components/popup/popup-base-props.js +3 -0
  217. package/es/components/popup/popup.js +5 -5
  218. package/es/components/result/result.js +3 -10
  219. package/es/components/result/use-result-icon.d.ts +3 -0
  220. package/es/components/result/use-result-icon.js +29 -0
  221. package/es/components/result-page/result-page.js +3 -10
  222. package/es/components/search-bar/search-bar.d.ts +10 -2
  223. package/es/components/search-bar/search-bar.js +33 -32
  224. package/es/components/toast/toast.css +1 -1
  225. package/es/components/toast/toast.d.ts +2 -2
  226. package/es/components/toast/toast.js +3 -3
  227. package/es/components/virtual-input/virtual-input.d.ts +5 -5
  228. package/es/components/virtual-input/virtual-input.js +25 -23
  229. package/es/locales/ar-SA.js +2 -2
  230. package/es/locales/de-DE.js +3 -3
  231. package/es/locales/es-ES.js +2 -2
  232. package/es/locales/fr-FR.js +1 -1
  233. package/es/locales/in-ID.d.ts +139 -0
  234. package/es/locales/in-ID.js +142 -0
  235. package/es/locales/ja-JP.js +2 -2
  236. package/es/locales/th-TH.js +2 -2
  237. package/es/utils/is-node-with-content.d.ts +3 -0
  238. package/es/utils/is-node-with-content.js +3 -0
  239. package/es/utils/use-mutation-effect.d.ts +1 -0
  240. package/es/utils/use-mutation-effect.js +19 -9
  241. package/es/utils/with-default-props.d.ts +7 -0
  242. package/es/utils/with-default-props.js +20 -5
  243. package/package.json +3 -2
  244. package/umd/antd-mobile.js +1 -1
@@ -1,13 +1,13 @@
1
- import React, { useRef, useMemo } from 'react';
2
- import classNames from 'classnames';
1
+ import { useMemoizedFn } from 'ahooks';
3
2
  import { DownOutline, TextDeletionOutline } from 'antd-mobile-icons';
4
- import { mergeProps } from '../../utils/with-default-props';
3
+ import classNames from 'classnames';
4
+ import React, { useMemo, useRef } from 'react';
5
+ import { withNativeProps } from '../../utils/native-props';
5
6
  import { shuffle } from '../../utils/shuffle';
7
+ import { mergeProps } from '../../utils/with-default-props';
8
+ import { useConfig } from '../config-provider';
6
9
  import Popup from '../popup';
7
- import { withNativeProps } from '../../utils/native-props';
8
10
  import SafeArea from '../safe-area';
9
- import { useMemoizedFn } from 'ahooks';
10
- import { useConfig } from '../config-provider';
11
11
  const classPrefix = 'adm-number-keyboard';
12
12
  const defaultProps = {
13
13
  defaultVisible: false,
@@ -57,13 +57,13 @@ export const NumberKeyboard = p => {
57
57
  var _a;
58
58
  (_a = props.onDelete) === null || _a === void 0 ? void 0 : _a.call(props);
59
59
  });
60
- const onBackspacePressStart = () => {
60
+ const startContinueClear = () => {
61
61
  timeoutRef.current = window.setTimeout(() => {
62
62
  onDelete();
63
63
  intervalRef.current = window.setInterval(onDelete, 150);
64
64
  }, 700);
65
65
  };
66
- const onBackspacePressEnd = () => {
66
+ const stopContinueClear = () => {
67
67
  clearTimeout(timeoutRef.current);
68
68
  clearInterval(intervalRef.current);
69
69
  };
@@ -122,14 +122,15 @@ export const NumberKeyboard = p => {
122
122
  key: key,
123
123
  className: className,
124
124
  onTouchStart: () => {
125
+ stopContinueClear();
125
126
  if (key === 'BACKSPACE') {
126
- onBackspacePressStart();
127
+ startContinueClear();
127
128
  }
128
129
  },
129
130
  onTouchEnd: e => {
130
131
  onKeyPress(e, key);
131
132
  if (key === 'BACKSPACE') {
132
- onBackspacePressEnd();
133
+ stopContinueClear();
133
134
  }
134
135
  }
135
136
  }, ariaProps), key === 'BACKSPACE' ? React.createElement(TextDeletionOutline, null) : key);
@@ -161,11 +162,11 @@ export const NumberKeyboard = p => {
161
162
  }, React.createElement("div", {
162
163
  className: `${classPrefix}-key ${classPrefix}-key-extra ${classPrefix}-key-bs`,
163
164
  onTouchStart: () => {
164
- onBackspacePressStart();
165
+ startContinueClear();
165
166
  },
166
167
  onTouchEnd: e => {
167
168
  onKeyPress(e, 'BACKSPACE');
168
- onBackspacePressEnd();
169
+ stopContinueClear();
169
170
  },
170
171
  onContextMenu: e => {
171
172
  // Long press should not trigger native context menu
@@ -1,5 +1,4 @@
1
- import React from 'react';
2
- import type { CSSProperties } from 'react';
1
+ import React, { CSSProperties, ReactNode } from 'react';
3
2
  import { GetContainer } from '../../utils/render-to-container';
4
3
  import { MaskProps } from '../mask';
5
4
  import { PropagationEvent } from '../../utils/with-stop-propagation';
@@ -9,6 +8,7 @@ export declare type PopupBaseProps = {
9
8
  bodyClassName?: string;
10
9
  bodyStyle?: CSSProperties;
11
10
  closeOnMaskClick?: boolean;
11
+ closeIcon?: ReactNode;
12
12
  destroyOnClose?: boolean;
13
13
  disableBodyScroll?: boolean;
14
14
  forceRender?: boolean;
@@ -25,6 +25,7 @@ export declare type PopupBaseProps = {
25
25
  };
26
26
  export declare const defaultPopupBaseProps: {
27
27
  closeOnMaskClick: boolean;
28
+ closeIcon: React.JSX.Element;
28
29
  destroyOnClose: boolean;
29
30
  disableBodyScroll: boolean;
30
31
  forceRender: boolean;
@@ -1,5 +1,8 @@
1
+ import React from 'react';
2
+ import { CloseOutline } from 'antd-mobile-icons';
1
3
  export const defaultPopupBaseProps = {
2
4
  closeOnMaskClick: false,
5
+ closeIcon: React.createElement(CloseOutline, null),
3
6
  destroyOnClose: false,
4
7
  disableBodyScroll: true,
5
8
  forceRender: false,
@@ -9,7 +9,6 @@ import { renderToContainer } from '../../utils/render-to-container';
9
9
  import { useSpring, animated } from '@react-spring/web';
10
10
  import { withStopPropagation } from '../../utils/with-stop-propagation';
11
11
  import { ShouldRender } from '../../utils/should-render';
12
- import { CloseOutline } from 'antd-mobile-icons';
13
12
  import { defaultPopupBaseProps } from './popup-base-props';
14
13
  import { useInnerVisible } from '../../utils/use-inner-visible';
15
14
  import { useConfig } from '../config-provider';
@@ -20,11 +19,12 @@ const defaultProps = Object.assign(Object.assign({}, defaultPopupBaseProps), {
20
19
  position: 'bottom'
21
20
  });
22
21
  export const Popup = p => {
23
- const props = mergeProps(defaultProps, p);
24
- const bodyCls = classNames(`${classPrefix}-body`, props.bodyClassName, `${classPrefix}-body-position-${props.position}`);
25
22
  const {
26
- locale
23
+ locale,
24
+ popup: componentConfig = {}
27
25
  } = useConfig();
26
+ const props = mergeProps(defaultProps, componentConfig, p);
27
+ const bodyCls = classNames(`${classPrefix}-body`, props.bodyClassName, `${classPrefix}-body-position-${props.position}`);
28
28
  const [active, setActive] = useState(props.visible);
29
29
  const ref = useRef(null);
30
30
  useLockScroll(ref, props.disableBodyScroll && active ? 'strict' : false);
@@ -119,7 +119,7 @@ export const Popup = p => {
119
119
  },
120
120
  role: 'button',
121
121
  "aria-label": locale.common.close
122
- }, React.createElement(CloseOutline, null)), props.children))));
122
+ }, props.closeIcon), props.children))));
123
123
  return React.createElement(ShouldRender, {
124
124
  active: active,
125
125
  forceRender: props.forceRender,
@@ -1,16 +1,9 @@
1
1
  import React from 'react';
2
2
  import classNames from 'classnames';
3
- import { CheckCircleFill, CloseCircleFill, InformationCircleFill, ClockCircleFill, ExclamationCircleFill } from 'antd-mobile-icons';
4
3
  import { withNativeProps } from '../../utils/native-props';
5
4
  import { mergeProps } from '../../utils/with-default-props';
5
+ import { useResultIcon } from './use-result-icon';
6
6
  const classPrefix = `adm-result`;
7
- const iconRecord = {
8
- success: CheckCircleFill,
9
- error: CloseCircleFill,
10
- info: InformationCircleFill,
11
- waiting: ClockCircleFill,
12
- warning: ExclamationCircleFill
13
- };
14
7
  const defaultProps = {
15
8
  status: 'info'
16
9
  };
@@ -22,13 +15,13 @@ export const Result = p => {
22
15
  description,
23
16
  icon
24
17
  } = props;
18
+ const fallbackIcon = useResultIcon(status);
25
19
  if (!status) return null;
26
- const resultIcon = icon || React.createElement(iconRecord[status]);
27
20
  return withNativeProps(props, React.createElement("div", {
28
21
  className: classNames(classPrefix, `${classPrefix}-${status}`)
29
22
  }, React.createElement("div", {
30
23
  className: `${classPrefix}-icon`
31
- }, resultIcon), React.createElement("div", {
24
+ }, icon || fallbackIcon), React.createElement("div", {
32
25
  className: `${classPrefix}-title`
33
26
  }, title), !!description && React.createElement("div", {
34
27
  className: `${classPrefix}-description`
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare type ResultIconProps = {};
3
+ export declare const useResultIcon: (status?: "error" | "waiting" | "success" | "warning" | "info" | undefined) => string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null;
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { CheckCircleFill, CloseCircleFill, InformationCircleFill, ClockCircleFill, ExclamationCircleFill } from 'antd-mobile-icons';
3
+ import { useConfig } from '../config-provider';
4
+ export const useResultIcon = status => {
5
+ const {
6
+ result: componentConfig = {}
7
+ } = useConfig();
8
+ const {
9
+ successIcon = React.createElement(CheckCircleFill, null),
10
+ errorIcon = React.createElement(CloseCircleFill, null),
11
+ infoIcon = React.createElement(InformationCircleFill, null),
12
+ waitingIcon = React.createElement(ClockCircleFill, null),
13
+ warningIcon = React.createElement(ExclamationCircleFill, null)
14
+ } = componentConfig || {};
15
+ switch (status) {
16
+ case 'success':
17
+ return successIcon;
18
+ case 'error':
19
+ return errorIcon;
20
+ case 'info':
21
+ return infoIcon;
22
+ case 'waiting':
23
+ return waitingIcon;
24
+ case 'warning':
25
+ return warningIcon;
26
+ default:
27
+ return null;
28
+ }
29
+ };
@@ -1,18 +1,11 @@
1
1
  import React, { useState } from 'react';
2
- import { CheckCircleFill, CloseCircleFill, InformationCircleFill, ClockCircleFill, ExclamationCircleFill } from 'antd-mobile-icons';
3
2
  import classNames from 'classnames';
4
3
  import { withNativeProps } from '../../utils/native-props';
5
4
  import { mergeProps } from '../../utils/with-default-props';
6
5
  import { isNodeWithContent } from '../../utils/is-node-with-content';
7
6
  import Button from '../button';
7
+ import { useResultIcon } from '../result/use-result-icon';
8
8
  const classPrefix = `adm-result-page`;
9
- const iconRecord = {
10
- success: CheckCircleFill,
11
- error: CloseCircleFill,
12
- info: InformationCircleFill,
13
- waiting: ClockCircleFill,
14
- warning: ExclamationCircleFill
15
- };
16
9
  const defaultProps = {
17
10
  status: 'info',
18
11
  details: []
@@ -30,7 +23,7 @@ export const ResultPage = p => {
30
23
  onPrimaryButtonClick,
31
24
  onSecondaryButtonClick
32
25
  } = props;
33
- const resultIcon = icon || React.createElement(iconRecord[status]);
26
+ const fallbackIcon = useResultIcon(status);
34
27
  const [collapse, setCollapse] = useState(true);
35
28
  const showSecondaryButton = isNodeWithContent(secondaryButtonText);
36
29
  const showPrimaryButton = isNodeWithContent(primaryButtonText);
@@ -40,7 +33,7 @@ export const ResultPage = p => {
40
33
  className: `${classPrefix}-header`
41
34
  }, React.createElement("div", {
42
35
  className: `${classPrefix}-icon`
43
- }, resultIcon), React.createElement("div", {
36
+ }, icon || fallbackIcon), React.createElement("div", {
44
37
  className: `${classPrefix}-title`
45
38
  }, title), isNodeWithContent(description) ? React.createElement("div", {
46
39
  className: `${classPrefix}-description`
@@ -1,7 +1,7 @@
1
- import React from 'react';
2
1
  import type { ReactNode } from 'react';
3
- import { InputRef, InputProps } from '../input';
2
+ import React from 'react';
4
3
  import { NativeProps } from '../../utils/native-props';
4
+ import { InputProps, InputRef } from '../input';
5
5
  export declare type SearchBarRef = InputRef;
6
6
  export declare type SearchBarProps = Pick<InputProps, 'onFocus' | 'onBlur' | 'onClear' | 'onCompositionStart' | 'onCompositionEnd'> & {
7
7
  value?: string;
@@ -12,6 +12,10 @@ export declare type SearchBarProps = Pick<InputProps, 'onFocus' | 'onBlur' | 'on
12
12
  onlyShowClearWhenFocus?: boolean;
13
13
  showCancelButton?: boolean | ((focus: boolean, value: string) => boolean);
14
14
  cancelText?: string;
15
+ searchIcon?: ReactNode;
16
+ /**
17
+ * @deprecated use `searchIcon` instead
18
+ */
15
19
  icon?: ReactNode;
16
20
  clearOnCancel?: boolean;
17
21
  onSearch?: (val: string) => void;
@@ -27,6 +31,10 @@ export declare const SearchBar: React.ForwardRefExoticComponent<Pick<InputProps,
27
31
  onlyShowClearWhenFocus?: boolean | undefined;
28
32
  showCancelButton?: boolean | ((focus: boolean, value: string) => boolean) | undefined;
29
33
  cancelText?: string | undefined;
34
+ searchIcon?: ReactNode;
35
+ /**
36
+ * @deprecated use `searchIcon` instead
37
+ */
30
38
  icon?: ReactNode;
31
39
  clearOnCancel?: boolean | undefined;
32
40
  onSearch?: ((val: string) => void) | undefined;
@@ -1,29 +1,30 @@
1
- import React, { useState, useRef, forwardRef, useImperativeHandle } from 'react';
1
+ import { SearchOutline } from 'antd-mobile-icons';
2
2
  import classNames from 'classnames';
3
- import Input from '../input';
4
- import Button from '../button';
3
+ import React, { forwardRef, useImperativeHandle, useRef, useState } from 'react';
5
4
  import { withNativeProps } from '../../utils/native-props';
6
- import { mergeProps } from '../../utils/with-default-props';
7
- import { SearchOutline } from 'antd-mobile-icons';
8
5
  import { usePropsValue } from '../../utils/use-props-value';
6
+ import { mergeProp, mergeProps } from '../../utils/with-default-props';
7
+ import Button from '../button';
9
8
  import { useConfig } from '../config-provider';
9
+ import Input from '../input';
10
10
  const classPrefix = `adm-search-bar`;
11
11
  const defaultProps = {
12
12
  clearable: true,
13
13
  onlyShowClearWhenFocus: false,
14
14
  showCancelButton: false,
15
15
  defaultValue: '',
16
- clearOnCancel: true,
17
- icon: React.createElement(SearchOutline, null)
16
+ clearOnCancel: true
18
17
  };
19
- export const SearchBar = forwardRef((p, ref) => {
18
+ export const SearchBar = forwardRef((props, ref) => {
20
19
  const {
21
- locale
20
+ locale,
21
+ searchBar: componentConfig = {}
22
22
  } = useConfig();
23
- const props = mergeProps(defaultProps, {
23
+ const mergedProps = mergeProps(defaultProps, componentConfig, {
24
24
  cancelText: locale.common.cancel
25
- }, p);
26
- const [value, setValue] = usePropsValue(props);
25
+ }, props);
26
+ const searchIcon = mergeProp(React.createElement(SearchOutline, null), componentConfig.searchIcon, props.icon, props.searchIcon);
27
+ const [value, setValue] = usePropsValue(mergedProps);
27
28
  const [hasFocus, setHasFocus] = useState(false);
28
29
  const inputRef = useRef(null);
29
30
  const composingRef = useRef(false);
@@ -47,10 +48,10 @@ export const SearchBar = forwardRef((p, ref) => {
47
48
  }));
48
49
  const renderCancelButton = () => {
49
50
  let isShowCancel;
50
- if (typeof props.showCancelButton === 'function') {
51
- isShowCancel = props.showCancelButton(hasFocus, value);
51
+ if (typeof mergedProps.showCancelButton === 'function') {
52
+ isShowCancel = mergedProps.showCancelButton(hasFocus, value);
52
53
  } else {
53
- isShowCancel = props.showCancelButton && hasFocus;
54
+ isShowCancel = mergedProps.showCancelButton && hasFocus;
54
55
  }
55
56
  return isShowCancel && React.createElement("div", {
56
57
  className: `${classPrefix}-suffix`
@@ -59,66 +60,66 @@ export const SearchBar = forwardRef((p, ref) => {
59
60
  className: `${classPrefix}-cancel-button`,
60
61
  onClick: () => {
61
62
  var _a, _b, _c;
62
- if (props.clearOnCancel) {
63
+ if (mergedProps.clearOnCancel) {
63
64
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.clear();
64
65
  }
65
66
  (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.blur();
66
- (_c = props.onCancel) === null || _c === void 0 ? void 0 : _c.call(props);
67
+ (_c = mergedProps.onCancel) === null || _c === void 0 ? void 0 : _c.call(mergedProps);
67
68
  },
68
69
  onMouseDown: e => {
69
70
  e.preventDefault();
70
71
  }
71
- }, props.cancelText));
72
+ }, mergedProps.cancelText));
72
73
  };
73
- return withNativeProps(props, React.createElement("div", {
74
+ return withNativeProps(mergedProps, React.createElement("div", {
74
75
  className: classNames(classPrefix, {
75
76
  [`${classPrefix}-active`]: hasFocus
76
77
  })
77
78
  }, React.createElement("div", {
78
79
  className: `${classPrefix}-input-box`
79
- }, props.icon && React.createElement("div", {
80
+ }, searchIcon && React.createElement("div", {
80
81
  className: `${classPrefix}-input-box-icon`
81
- }, props.icon), React.createElement(Input, {
82
+ }, searchIcon), React.createElement(Input, {
82
83
  ref: inputRef,
83
84
  className: classNames(`${classPrefix}-input`, {
84
- [`${classPrefix}-input-without-icon`]: !props.icon
85
+ [`${classPrefix}-input-without-icon`]: !searchIcon
85
86
  }),
86
87
  value: value,
87
88
  onChange: setValue,
88
- maxLength: props.maxLength,
89
- placeholder: props.placeholder,
90
- clearable: props.clearable,
91
- onlyShowClearWhenFocus: props.onlyShowClearWhenFocus,
89
+ maxLength: mergedProps.maxLength,
90
+ placeholder: mergedProps.placeholder,
91
+ clearable: mergedProps.clearable,
92
+ onlyShowClearWhenFocus: mergedProps.onlyShowClearWhenFocus,
92
93
  onFocus: e => {
93
94
  var _a;
94
95
  setHasFocus(true);
95
- (_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, e);
96
+ (_a = mergedProps.onFocus) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
96
97
  },
97
98
  onBlur: e => {
98
99
  var _a;
99
100
  setHasFocus(false);
100
- (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, e);
101
+ (_a = mergedProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
101
102
  },
102
- onClear: props.onClear,
103
+ onClear: mergedProps.onClear,
103
104
  type: 'search',
104
105
  enterKeyHint: 'search',
105
106
  onEnterPress: () => {
106
107
  var _a, _b;
107
108
  if (!composingRef.current) {
108
109
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
109
- (_b = props.onSearch) === null || _b === void 0 ? void 0 : _b.call(props, value);
110
+ (_b = mergedProps.onSearch) === null || _b === void 0 ? void 0 : _b.call(mergedProps, value);
110
111
  }
111
112
  },
112
113
  "aria-label": locale.SearchBar.name,
113
114
  onCompositionStart: e => {
114
115
  var _a;
115
116
  composingRef.current = true;
116
- (_a = props.onCompositionStart) === null || _a === void 0 ? void 0 : _a.call(props, e);
117
+ (_a = mergedProps.onCompositionStart) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
117
118
  },
118
119
  onCompositionEnd: e => {
119
120
  var _a;
120
121
  composingRef.current = false;
121
- (_a = props.onCompositionEnd) === null || _a === void 0 ? void 0 : _a.call(props, e);
122
+ (_a = mergedProps.onCompositionEnd) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
122
123
  }
123
124
  })), renderCancelButton()));
124
125
  });
@@ -27,7 +27,7 @@
27
27
  }
28
28
  .adm-toast-mask .adm-toast-main-text {
29
29
  padding: 12px;
30
- min-width: 0px;
30
+ min-width: 0;
31
31
  }
32
32
  .adm-toast-mask .adm-toast-main-icon {
33
33
  padding: 35px 12px;
@@ -1,7 +1,7 @@
1
1
  import type { FC, ReactNode } from 'react';
2
- import type { MaskProps } from '../mask';
3
- import { PropagationEvent } from '../../utils/with-stop-propagation';
4
2
  import { GetContainer } from '../../utils/render-to-container';
3
+ import { PropagationEvent } from '../../utils/with-stop-propagation';
4
+ import type { MaskProps } from '../mask';
5
5
  export interface ToastProps {
6
6
  afterClose?: () => void;
7
7
  maskStyle?: MaskProps['style'];
@@ -1,9 +1,9 @@
1
- import React, { useMemo } from 'react';
2
- import classNames from 'classnames';
3
1
  import { CheckOutline, CloseOutline } from 'antd-mobile-icons';
4
- import Mask from '../mask';
2
+ import classNames from 'classnames';
3
+ import React, { useMemo } from 'react';
5
4
  import { mergeProps } from '../../utils/with-default-props';
6
5
  import AutoCenter from '../auto-center';
6
+ import Mask from '../mask';
7
7
  import SpinLoading from '../spin-loading';
8
8
  const classPrefix = `adm-toast`;
9
9
  const defaultProps = {
@@ -1,7 +1,7 @@
1
- import React from 'react';
2
1
  import type { ReactElement } from 'react';
3
- import type { InputProps } from '../input';
2
+ import React from 'react';
4
3
  import { NativeProps } from '../../utils/native-props';
4
+ import type { InputProps } from '../input';
5
5
  import { NumberKeyboardProps } from '../number-keyboard';
6
6
  export declare type VirtualInputProps = {
7
7
  onFocus?: () => void;
@@ -10,7 +10,7 @@ export declare type VirtualInputProps = {
10
10
  keyboard?: ReactElement<NumberKeyboardProps>;
11
11
  clearable?: boolean;
12
12
  onClear?: () => void;
13
- } & Pick<InputProps, 'value' | 'onChange' | 'placeholder' | 'disabled'> & NativeProps<'--font-size' | '--color' | '--placeholder-color' | '--disabled-color' | '--text-align' | '--caret-width' | '--caret-color'>;
13
+ } & Pick<InputProps, 'value' | 'onChange' | 'placeholder' | 'disabled' | 'clearIcon'> & NativeProps<'--font-size' | '--color' | '--placeholder-color' | '--disabled-color' | '--text-align' | '--caret-width' | '--caret-color'>;
14
14
  export declare type VirtualInputRef = {
15
15
  focus: () => void;
16
16
  blur: () => void;
@@ -19,10 +19,10 @@ export declare const VirtualInput: React.ForwardRefExoticComponent<{
19
19
  onFocus?: (() => void) | undefined;
20
20
  onBlur?: (() => void) | undefined;
21
21
  onClick?: ((e: React.MouseEvent<HTMLDivElement>) => void) | undefined;
22
- keyboard?: React.ReactElement<NumberKeyboardProps, string | React.JSXElementConstructor<any>> | undefined;
22
+ keyboard?: ReactElement<NumberKeyboardProps, string | React.JSXElementConstructor<any>> | undefined;
23
23
  clearable?: boolean | undefined;
24
24
  onClear?: (() => void) | undefined;
25
- } & Pick<InputProps, "value" | "onChange" | "disabled" | "placeholder"> & {
25
+ } & Pick<InputProps, "value" | "onChange" | "disabled" | "placeholder" | "clearIcon"> & {
26
26
  className?: string | undefined;
27
27
  style?: (React.CSSProperties & Partial<Record<"--color" | "--font-size" | "--placeholder-color" | "--text-align" | "--disabled-color" | "--caret-width" | "--caret-color", string>>) | undefined;
28
28
  tabIndex?: number | undefined;
@@ -1,24 +1,26 @@
1
+ import { useIsomorphicLayoutEffect } from 'ahooks';
2
+ import { CloseCircleFill } from 'antd-mobile-icons';
3
+ import classNames from 'classnames';
1
4
  import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
2
5
  import { withNativeProps } from '../../utils/native-props';
3
- import { mergeProps } from '../../utils/with-default-props';
4
6
  import { usePropsValue } from '../../utils/use-props-value';
5
- import classNames from 'classnames';
6
- import { CloseCircleFill } from 'antd-mobile-icons';
7
- import { useIsomorphicLayoutEffect } from 'ahooks';
7
+ import { mergeProp, mergeProps } from '../../utils/with-default-props';
8
8
  import { useConfig } from '../config-provider';
9
9
  const classPrefix = 'adm-virtual-input';
10
10
  const defaultProps = {
11
11
  defaultValue: ''
12
12
  };
13
- export const VirtualInput = forwardRef((p, ref) => {
14
- const props = mergeProps(defaultProps, p);
15
- const [value, setValue] = usePropsValue(props);
13
+ export const VirtualInput = forwardRef((props, ref) => {
14
+ const {
15
+ locale,
16
+ input: componentConfig = {}
17
+ } = useConfig();
18
+ const mergedProps = mergeProps(defaultProps, componentConfig, props);
19
+ const [value, setValue] = usePropsValue(mergedProps);
16
20
  const rootRef = useRef(null);
17
21
  const contentRef = useRef(null);
18
22
  const [hasFocus, setHasFocus] = useState(false);
19
- const {
20
- locale
21
- } = useConfig();
23
+ const clearIcon = mergeProp(React.createElement(CloseCircleFill, null), componentConfig.clearIcon, props.clearIcon);
22
24
  function scrollToEnd() {
23
25
  const root = rootRef.current;
24
26
  if (!root) return;
@@ -50,14 +52,14 @@ export const VirtualInput = forwardRef((p, ref) => {
50
52
  function onFocus() {
51
53
  var _a;
52
54
  setHasFocus(true);
53
- (_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props);
55
+ (_a = mergedProps.onFocus) === null || _a === void 0 ? void 0 : _a.call(mergedProps);
54
56
  }
55
57
  function onBlur() {
56
58
  var _a;
57
59
  setHasFocus(false);
58
- (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props);
60
+ (_a = mergedProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(mergedProps);
59
61
  }
60
- const keyboard = props.keyboard;
62
+ const keyboard = mergedProps.keyboard;
61
63
  const keyboardElement = keyboard && React.cloneElement(keyboard, {
62
64
  onInput: v => {
63
65
  var _a, _b;
@@ -84,36 +86,36 @@ export const VirtualInput = forwardRef((p, ref) => {
84
86
  },
85
87
  getContainer: null
86
88
  });
87
- return withNativeProps(props, React.createElement("div", {
89
+ return withNativeProps(mergedProps, React.createElement("div", {
88
90
  ref: rootRef,
89
91
  className: classNames(classPrefix, {
90
- [`${classPrefix}-disabled`]: props.disabled
92
+ [`${classPrefix}-disabled`]: mergedProps.disabled
91
93
  }),
92
- tabIndex: props.disabled ? undefined : 0,
94
+ tabIndex: mergedProps.disabled ? undefined : 0,
93
95
  role: 'textbox',
94
96
  onFocus: onFocus,
95
97
  onBlur: onBlur,
96
- onClick: props.onClick
98
+ onClick: mergedProps.onClick
97
99
  }, React.createElement("div", {
98
100
  className: `${classPrefix}-content`,
99
101
  ref: contentRef,
100
- "aria-disabled": props.disabled,
101
- "aria-label": props.placeholder
102
+ "aria-disabled": mergedProps.disabled,
103
+ "aria-label": mergedProps.placeholder
102
104
  }, value, React.createElement("div", {
103
105
  className: `${classPrefix}-caret-container`
104
106
  }, hasFocus && React.createElement("div", {
105
107
  className: `${classPrefix}-caret`
106
- }))), props.clearable && !!value && hasFocus && React.createElement("div", {
108
+ }))), mergedProps.clearable && !!value && hasFocus && React.createElement("div", {
107
109
  className: `${classPrefix}-clear`,
108
110
  onClick: e => {
109
111
  var _a;
110
112
  e.stopPropagation();
111
113
  setValue('');
112
- (_a = props.onClear) === null || _a === void 0 ? void 0 : _a.call(props);
114
+ (_a = mergedProps.onClear) === null || _a === void 0 ? void 0 : _a.call(mergedProps);
113
115
  },
114
116
  role: 'button',
115
117
  "aria-label": locale.Input.clear
116
- }, React.createElement(CloseCircleFill, null)), [undefined, null, ''].includes(value) && React.createElement("div", {
118
+ }, clearIcon), [undefined, null, ''].includes(value) && React.createElement("div", {
117
119
  className: `${classPrefix}-placeholder`
118
- }, props.placeholder), keyboardElement));
120
+ }, mergedProps.placeholder), keyboardElement));
119
121
  });
@@ -22,7 +22,7 @@ const arSA = mergeLocale(base, {
22
22
  'placeholder': 'اختر من فضلك'
23
23
  },
24
24
  'Dialog': {
25
- 'ok': 'عرفت'
25
+ 'ok': 'فهمت'
26
26
  },
27
27
  'DatePicker': {
28
28
  'tillNow': 'إلى اليوم'
@@ -112,7 +112,7 @@ const arSA = mergeLocale(base, {
112
112
  'name': 'قناع الخلفية'
113
113
  },
114
114
  'Modal': {
115
- 'ok': 'عرفت'
115
+ 'ok': 'فهمت'
116
116
  },
117
117
  'PasscodeInput': {
118
118
  'name': 'مربع إدخال كلمة المرور'
@@ -15,14 +15,14 @@ const deDE = mergeLocale(base, {
15
15
  'start': 'Starten',
16
16
  'end': 'Beenden',
17
17
  'today': 'Heute',
18
- 'markItems': ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Tag'],
18
+ 'markItems': ['I', 'II', 'III', 'IV', 'V', 'Sechs', 'Tag'],
19
19
  'yearAndMonth': '${year}Jahr${month}Monat'
20
20
  },
21
21
  'Cascader': {
22
22
  'placeholder': 'Bitte auswählen'
23
23
  },
24
24
  'Dialog': {
25
- 'ok': 'OK'
25
+ 'ok': 'Ich weiß.'
26
26
  },
27
27
  'DatePicker': {
28
28
  'tillNow': 'Bis heute'
@@ -112,7 +112,7 @@ const deDE = mergeLocale(base, {
112
112
  'name': 'Hintergrundmaske'
113
113
  },
114
114
  'Modal': {
115
- 'ok': 'OK'
115
+ 'ok': 'Ich weiß.'
116
116
  },
117
117
  'PasscodeInput': {
118
118
  'name': 'Passwort-Eingabefeld'
@@ -16,7 +16,7 @@ const esES = mergeLocale(base, {
16
16
  placeholder: 'Seleccionando'
17
17
  },
18
18
  Dialog: {
19
- ok: 'OK'
19
+ ok: 'Entendido'
20
20
  },
21
21
  ErrorBlock: {
22
22
  default: {
@@ -94,7 +94,7 @@ const esES = mergeLocale(base, {
94
94
  name: 'Máscara'
95
95
  },
96
96
  Modal: {
97
- ok: 'OK'
97
+ ok: 'Entendido'
98
98
  },
99
99
  PullToRefresh: {
100
100
  pulling: 'Desplácese hacia abajo para refrescar',
@@ -4,7 +4,7 @@ const typeTemplate = '${label}Pas un valide${type}';
4
4
  const frFR = mergeLocale(base, {
5
5
  locale: 'fr-FR',
6
6
  common: {
7
- confirm: 'Valider',
7
+ confirm: 'Activer',
8
8
  cancel: 'Annuler',
9
9
  loading: 'Chargement'
10
10
  },