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,27 +1,30 @@
1
- import React, { useRef, useState } from 'react';
2
- import { renderToContainer } from '../../utils/render-to-container';
3
- import Mask from '../mask';
4
- import { withStopPropagation } from '../../utils/with-stop-propagation';
5
- import { mergeProps } from '../../utils/with-default-props';
6
- import { useIsomorphicLayoutEffect, useUnmountedRef } from 'ahooks';
7
1
  import { animated, useSpring } from '@react-spring/web';
8
- import { useInnerVisible } from '../../utils/use-inner-visible';
2
+ import { useIsomorphicLayoutEffect, useUnmountedRef } from 'ahooks';
9
3
  import classNames from 'classnames';
4
+ import React, { useRef, useState } from 'react';
10
5
  import { withNativeProps } from '../../utils/native-props';
6
+ import { renderToContainer } from '../../utils/render-to-container';
11
7
  import { ShouldRender } from '../../utils/should-render';
8
+ import { useInnerVisible } from '../../utils/use-inner-visible';
12
9
  import { useLockScroll } from '../../utils/use-lock-scroll';
13
- import { CloseOutline } from 'antd-mobile-icons';
10
+ import { mergeProps } from '../../utils/with-default-props';
11
+ import { withStopPropagation } from '../../utils/with-stop-propagation';
12
+ import { useConfig } from '../config-provider';
13
+ import Mask from '../mask';
14
14
  import { defaultPopupBaseProps } from '../popup/popup-base-props';
15
15
  const classPrefix = 'adm-center-popup';
16
16
  const defaultProps = Object.assign(Object.assign({}, defaultPopupBaseProps), {
17
17
  getContainer: null
18
18
  });
19
- export const CenterPopup = p => {
20
- const props = mergeProps(defaultProps, p);
19
+ export const CenterPopup = props => {
20
+ const {
21
+ popup: componentConfig = {}
22
+ } = useConfig();
23
+ const mergedProps = mergeProps(defaultProps, componentConfig, props);
21
24
  const unmountedRef = useUnmountedRef();
22
25
  const style = useSpring({
23
- scale: props.visible ? 1 : 0.8,
24
- opacity: props.visible ? 1 : 0,
26
+ scale: mergedProps.visible ? 1 : 0.8,
27
+ opacity: mergedProps.visible ? 1 : 0,
25
28
  config: {
26
29
  mass: 1.2,
27
30
  tension: 200,
@@ -31,67 +34,67 @@ export const CenterPopup = p => {
31
34
  onRest: () => {
32
35
  var _a, _b;
33
36
  if (unmountedRef.current) return;
34
- setActive(props.visible);
35
- if (props.visible) {
36
- (_a = props.afterShow) === null || _a === void 0 ? void 0 : _a.call(props);
37
+ setActive(mergedProps.visible);
38
+ if (mergedProps.visible) {
39
+ (_a = mergedProps.afterShow) === null || _a === void 0 ? void 0 : _a.call(mergedProps);
37
40
  } else {
38
- (_b = props.afterClose) === null || _b === void 0 ? void 0 : _b.call(props);
41
+ (_b = mergedProps.afterClose) === null || _b === void 0 ? void 0 : _b.call(mergedProps);
39
42
  }
40
43
  }
41
44
  });
42
- const [active, setActive] = useState(props.visible);
45
+ const [active, setActive] = useState(mergedProps.visible);
43
46
  useIsomorphicLayoutEffect(() => {
44
- if (props.visible) {
47
+ if (mergedProps.visible) {
45
48
  setActive(true);
46
49
  }
47
- }, [props.visible]);
50
+ }, [mergedProps.visible]);
48
51
  const ref = useRef(null);
49
- useLockScroll(ref, props.disableBodyScroll && active);
50
- const maskVisible = useInnerVisible(active && props.visible);
52
+ useLockScroll(ref, mergedProps.disableBodyScroll && active);
53
+ const maskVisible = useInnerVisible(active && mergedProps.visible);
51
54
  const body = React.createElement("div", {
52
- className: classNames(`${classPrefix}-body`, props.bodyClassName),
53
- style: props.bodyStyle
54
- }, props.children);
55
- const node = withStopPropagation(props.stopPropagation, withNativeProps(props, React.createElement("div", {
55
+ className: classNames(`${classPrefix}-body`, mergedProps.bodyClassName),
56
+ style: mergedProps.bodyStyle
57
+ }, mergedProps.children);
58
+ const node = withStopPropagation(mergedProps.stopPropagation, withNativeProps(mergedProps, React.createElement("div", {
56
59
  className: classPrefix,
57
60
  style: {
58
61
  display: active ? undefined : 'none',
59
62
  pointerEvents: active ? undefined : 'none'
60
63
  }
61
- }, props.mask && React.createElement(Mask, {
64
+ }, mergedProps.mask && React.createElement(Mask, {
62
65
  visible: maskVisible,
63
- forceRender: props.forceRender,
64
- destroyOnClose: props.destroyOnClose,
66
+ forceRender: mergedProps.forceRender,
67
+ destroyOnClose: mergedProps.destroyOnClose,
65
68
  onMaskClick: e => {
66
69
  var _a, _b;
67
- (_a = props.onMaskClick) === null || _a === void 0 ? void 0 : _a.call(props, e);
68
- if (props.closeOnMaskClick) {
69
- (_b = props.onClose) === null || _b === void 0 ? void 0 : _b.call(props);
70
+ (_a = mergedProps.onMaskClick) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
71
+ if (mergedProps.closeOnMaskClick) {
72
+ (_b = mergedProps.onClose) === null || _b === void 0 ? void 0 : _b.call(mergedProps);
70
73
  }
71
74
  },
72
- style: props.maskStyle,
73
- className: classNames(`${classPrefix}-mask`, props.maskClassName),
75
+ style: mergedProps.maskStyle,
76
+ className: classNames(`${classPrefix}-mask`, mergedProps.maskClassName),
74
77
  disableBodyScroll: false,
75
- stopPropagation: props.stopPropagation
78
+ stopPropagation: mergedProps.stopPropagation
76
79
  }), React.createElement("div", {
77
80
  className: `${classPrefix}-wrap`,
78
- role: props.role,
79
- "aria-label": props['aria-label']
81
+ role: mergedProps.role,
82
+ "aria-label": mergedProps['aria-label']
80
83
  }, React.createElement(animated.div, {
81
84
  style: Object.assign(Object.assign({}, style), {
82
85
  pointerEvents: style.opacity.to(v => v === 1 ? 'unset' : 'none')
83
86
  }),
84
87
  ref: ref
85
- }, props.showCloseButton && React.createElement("a", {
88
+ }, mergedProps.showCloseButton && React.createElement("a", {
86
89
  className: classNames(`${classPrefix}-close`, 'adm-plain-anchor'),
87
90
  onClick: () => {
88
91
  var _a;
89
- (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props);
92
+ (_a = mergedProps.onClose) === null || _a === void 0 ? void 0 : _a.call(mergedProps);
90
93
  }
91
- }, React.createElement(CloseOutline, null)), body)))));
94
+ }, mergedProps.closeIcon), body)))));
92
95
  return React.createElement(ShouldRender, {
93
96
  active: active,
94
- forceRender: props.forceRender,
95
- destroyOnClose: props.destroyOnClose
96
- }, renderToContainer(props.getContainer, node));
97
+ forceRender: mergedProps.forceRender,
98
+ destroyOnClose: mergedProps.destroyOnClose
99
+ }, renderToContainer(mergedProps.getContainer, node));
97
100
  };
@@ -1,21 +1,25 @@
1
+ import { CheckOutline } from 'antd-mobile-icons';
1
2
  import React from 'react';
2
3
  import { withNativeProps } from '../../utils/native-props';
3
- import List from '../list';
4
+ import { usePropsValue } from '../../utils/use-props-value';
4
5
  import { mergeProps } from '../../utils/with-default-props';
6
+ import { useConfig } from '../config-provider';
7
+ import List from '../list';
5
8
  import { CheckListContext } from './context';
6
- import { usePropsValue } from '../../utils/use-props-value';
7
- import { CheckOutline } from 'antd-mobile-icons';
8
9
  const classPrefix = 'adm-check-list';
9
10
  const defaultProps = {
10
11
  multiple: false,
11
12
  defaultValue: [],
12
13
  activeIcon: React.createElement(CheckOutline, null)
13
14
  };
14
- export const CheckList = p => {
15
- const props = mergeProps(defaultProps, p);
16
- const [value, setValue] = usePropsValue(props);
15
+ export const CheckList = props => {
16
+ const {
17
+ checkList: componentConfig = {}
18
+ } = useConfig();
19
+ const mergedProps = mergeProps(defaultProps, componentConfig, props);
20
+ const [value, setValue] = usePropsValue(mergedProps);
17
21
  function check(val) {
18
- if (props.multiple) {
22
+ if (mergedProps.multiple) {
19
23
  setValue([...value, val]);
20
24
  } else {
21
25
  setValue([val]);
@@ -29,7 +33,7 @@ export const CheckList = p => {
29
33
  extra,
30
34
  disabled,
31
35
  readOnly
32
- } = props;
36
+ } = mergedProps;
33
37
  return React.createElement(CheckListContext.Provider, {
34
38
  value: {
35
39
  value,
@@ -40,8 +44,8 @@ export const CheckList = p => {
40
44
  disabled,
41
45
  readOnly
42
46
  }
43
- }, withNativeProps(props, React.createElement(List, {
44
- mode: props.mode,
47
+ }, withNativeProps(mergedProps, React.createElement(List, {
48
+ mode: mergedProps.mode,
45
49
  className: classPrefix
46
- }, props.children)));
50
+ }, mergedProps.children)));
47
51
  };
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import type { FC, ReactNode } from 'react';
2
+ import React from 'react';
3
3
  import { NativeProps } from '../../utils/native-props';
4
4
  export declare type CollapsePanelProps = {
5
5
  key: string;
@@ -8,14 +8,22 @@ export declare type CollapsePanelProps = {
8
8
  forceRender?: boolean;
9
9
  destroyOnClose?: boolean;
10
10
  onClick?: (event: React.MouseEvent<Element, MouseEvent>) => void;
11
- arrow?: ReactNode | ((active: boolean) => ReactNode);
11
+ arrowIcon?: ReactNode | ((active: boolean) => ReactNode);
12
12
  children?: ReactNode;
13
+ /**
14
+ * @deprecated use `arrowIcon` instead
15
+ */
16
+ arrow?: ReactNode | ((active: boolean) => ReactNode);
13
17
  } & NativeProps;
14
18
  export declare const CollapsePanel: FC<CollapsePanelProps>;
15
19
  declare type ValueProps<T> = {
16
20
  activeKey?: T;
17
21
  defaultActiveKey?: T;
18
22
  onChange?: (activeKey: T) => void;
23
+ arrowIcon?: ReactNode | ((active: boolean) => ReactNode);
24
+ /**
25
+ * @deprecated use `arrowIcon` instead
26
+ */
19
27
  arrow?: ReactNode | ((active: boolean) => ReactNode);
20
28
  };
21
29
  export declare type CollapseProps = (({
@@ -1,14 +1,17 @@
1
- import React, { isValidElement, useRef } from 'react';
2
- import { withNativeProps } from '../../utils/native-props';
3
- import List from '../list';
1
+ import { animated, useSpring } from '@react-spring/web';
2
+ import { useMount } from 'ahooks';
4
3
  import { DownOutline } from 'antd-mobile-icons';
5
4
  import classNames from 'classnames';
6
- import { useSpring, animated } from '@react-spring/web';
7
- import { usePropsValue } from '../../utils/use-props-value';
8
- import { useMount } from 'ahooks';
5
+ import React, { isValidElement, useRef } from 'react';
6
+ import { withNativeProps } from '../../utils/native-props';
9
7
  import { useShouldRender } from '../../utils/should-render';
10
- import { useIsomorphicUpdateLayoutEffect } from '../../utils/use-isomorphic-update-layout-effect';
11
8
  import { traverseReactNode } from '../../utils/traverse-react-node';
9
+ import { useIsomorphicUpdateLayoutEffect } from '../../utils/use-isomorphic-update-layout-effect';
10
+ import { observe } from '../../utils/use-mutation-effect';
11
+ import { usePropsValue } from '../../utils/use-props-value';
12
+ import { mergeProp, mergeProps } from '../../utils/with-default-props';
13
+ import { useConfig } from '../config-provider';
14
+ import List from '../list';
12
15
  const classPrefix = `adm-collapse`;
13
16
  export const CollapsePanel = () => {
14
17
  return null;
@@ -46,9 +49,25 @@ const CollapsePanelContent = props => {
46
49
  const inner = innerRef.current;
47
50
  if (!inner) return;
48
51
  if (visible) {
49
- api.start({
50
- height: inner.offsetHeight
51
- });
52
+ let lastMotionId = 0;
53
+ let cancelObserve = () => {};
54
+ const handleMotion = () => {
55
+ lastMotionId += 1;
56
+ const motionId = lastMotionId;
57
+ api.start({
58
+ height: inner.offsetHeight
59
+ })[0].then(() => {
60
+ if (motionId === lastMotionId) {
61
+ cancelObserve();
62
+ }
63
+ });
64
+ };
65
+ cancelObserve = observe(inner, {
66
+ childList: true,
67
+ subtree: true
68
+ }, handleMotion);
69
+ handleMotion();
70
+ return cancelObserve;
52
71
  } else {
53
72
  api.start({
54
73
  height: inner.offsetHeight,
@@ -78,8 +97,12 @@ const CollapsePanelContent = props => {
78
97
  }, React.createElement(List.Item, null, shouldRender && props.children)));
79
98
  };
80
99
  export const Collapse = props => {
100
+ const {
101
+ collapse: componentConfig = {}
102
+ } = useConfig();
103
+ const mergedProps = mergeProps(componentConfig, props);
81
104
  const panels = [];
82
- traverseReactNode(props.children, child => {
105
+ traverseReactNode(mergedProps.children, child => {
83
106
  if (!isValidElement(child)) return;
84
107
  const key = child.key;
85
108
  if (typeof key !== 'string') return;
@@ -87,11 +110,11 @@ export const Collapse = props => {
87
110
  });
88
111
  const handlePropsValue = () => {
89
112
  var _a;
90
- if (!props.accordion) {
113
+ if (!mergedProps.accordion) {
91
114
  return {
92
- value: props.activeKey,
93
- defaultValue: (_a = props.defaultActiveKey) !== null && _a !== void 0 ? _a : [],
94
- onChange: props.onChange
115
+ value: mergedProps.activeKey,
116
+ defaultValue: (_a = mergedProps.defaultActiveKey) !== null && _a !== void 0 ? _a : [],
117
+ onChange: mergedProps.onChange
95
118
  };
96
119
  }
97
120
  const initValue = {
@@ -99,29 +122,29 @@ export const Collapse = props => {
99
122
  defaultValue: [],
100
123
  onChange: v => {
101
124
  var _a, _b;
102
- (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, (_b = v[0]) !== null && _b !== void 0 ? _b : null);
125
+ (_a = mergedProps.onChange) === null || _a === void 0 ? void 0 : _a.call(mergedProps, (_b = v[0]) !== null && _b !== void 0 ? _b : null);
103
126
  }
104
127
  };
105
- if (props.activeKey === undefined) {
128
+ if (mergedProps.activeKey === undefined) {
106
129
  initValue.value = undefined;
107
- } else if (props.activeKey !== null) {
108
- initValue.value = [props.activeKey];
130
+ } else if (mergedProps.activeKey !== null) {
131
+ initValue.value = [mergedProps.activeKey];
109
132
  }
110
- if (![null, undefined].includes(props.defaultActiveKey)) {
111
- initValue.defaultValue = [props.defaultActiveKey];
133
+ if (![null, undefined].includes(mergedProps.defaultActiveKey)) {
134
+ initValue.defaultValue = [mergedProps.defaultActiveKey];
112
135
  }
113
136
  return initValue;
114
137
  };
115
138
  const [activeKey, setActiveKey] = usePropsValue(handlePropsValue());
116
139
  const activeKeyList = activeKey === null ? [] : Array.isArray(activeKey) ? activeKey : [activeKey];
117
- return withNativeProps(props, React.createElement("div", {
140
+ return withNativeProps(mergedProps, React.createElement("div", {
118
141
  className: classPrefix
119
142
  }, React.createElement(List, null, panels.map(panel => {
120
143
  const key = panel.key;
121
144
  const active = activeKeyList.includes(key);
122
145
  function handleClick(event) {
123
146
  var _a, _b;
124
- if (props.accordion) {
147
+ if (mergedProps.accordion) {
125
148
  if (active) {
126
149
  setActiveKey([]);
127
150
  } else {
@@ -136,27 +159,19 @@ export const Collapse = props => {
136
159
  }
137
160
  (_b = (_a = panel.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, event);
138
161
  }
139
- const renderArrow = () => {
140
- let arrow = React.createElement(DownOutline, null);
141
- if (props.arrow !== undefined) {
142
- arrow = props.arrow;
143
- }
144
- if (panel.props.arrow !== undefined) {
145
- arrow = panel.props.arrow;
146
- }
147
- return typeof arrow === 'function' ? arrow(active) : React.createElement("div", {
148
- className: classNames(`${classPrefix}-arrow`, {
149
- [`${classPrefix}-arrow-active`]: active
150
- })
151
- }, arrow);
152
- };
162
+ const arrow = mergeProp(React.createElement(DownOutline, null), mergedProps.arrow, mergedProps.arrowIcon, panel.props.arrow, panel.props.arrowIcon);
163
+ const arrowIcon = typeof arrow === 'function' ? arrow(active) : React.createElement("div", {
164
+ className: classNames(`${classPrefix}-arrow`, {
165
+ [`${classPrefix}-arrow-active`]: active
166
+ })
167
+ }, arrow);
153
168
  return React.createElement(React.Fragment, {
154
169
  key: key
155
170
  }, withNativeProps(panel.props, React.createElement(List.Item, {
156
171
  className: `${classPrefix}-panel-header`,
157
172
  onClick: handleClick,
158
173
  disabled: panel.props.disabled,
159
- arrow: renderArrow()
174
+ arrowIcon: arrowIcon
160
175
  }, panel.props.title)), React.createElement(CollapsePanelContent, {
161
176
  visible: active,
162
177
  forceRender: !!panel.props.forceRender,
@@ -1,14 +1,52 @@
1
- import type { FC, ReactNode } from 'react';
1
+ import { FC, ReactNode } from 'react';
2
2
  import { Locale } from '../../locales/base';
3
3
  declare type Config = {
4
4
  locale: Locale;
5
+ checkList?: {
6
+ activeIcon?: ReactNode;
7
+ };
8
+ collapse?: {
9
+ arrowIcon?: ReactNode | ((active: boolean) => ReactNode);
10
+ };
11
+ dropdown?: {
12
+ arrowIcon?: ReactNode;
13
+ };
14
+ form?: {
15
+ helpIcon?: ReactNode;
16
+ };
17
+ input?: {
18
+ clearIcon?: ReactNode;
19
+ };
20
+ list?: {
21
+ arrowIcon?: ReactNode;
22
+ };
23
+ navBar?: {
24
+ backIcon?: ReactNode;
25
+ };
26
+ noticeBar?: {
27
+ icon?: ReactNode;
28
+ closeIcon?: ReactNode;
29
+ };
30
+ popup?: {
31
+ closeIcon?: ReactNode;
32
+ };
33
+ result?: {
34
+ successIcon?: ReactNode;
35
+ errorIcon?: ReactNode;
36
+ infoIcon?: ReactNode;
37
+ waitingIcon?: ReactNode;
38
+ warningIcon?: ReactNode;
39
+ };
40
+ searchBar?: {
41
+ searchIcon?: ReactNode;
42
+ };
5
43
  };
6
44
  export declare const defaultConfigRef: {
7
45
  current: Config;
8
46
  };
9
47
  export declare function setDefaultConfig(config: Config): void;
10
48
  export declare function getDefaultConfig(): Config;
11
- export declare type ConfigProviderProps = Config & {
49
+ export declare type ConfigProviderProps = Partial<Config> & {
12
50
  children?: ReactNode;
13
51
  };
14
52
  export declare const ConfigProvider: FC<ConfigProviderProps>;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const IconContext: React.Context<React.ReactNode>;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export const IconContext = React.createContext(null);
@@ -1,13 +1,17 @@
1
- import React from 'react';
2
1
  import type { ReactNode } from 'react';
3
- import { PopupProps } from '../popup';
2
+ import React from 'react';
4
3
  import { NativeProps } from '../../utils/native-props';
4
+ import { PopupProps } from '../popup';
5
5
  export declare type DropdownProps = {
6
6
  activeKey?: string | null;
7
7
  defaultActiveKey?: string | null;
8
8
  closeOnMaskClick?: boolean;
9
9
  closeOnClickAway?: boolean;
10
10
  onChange?: (key: string | null) => void;
11
+ arrowIcon?: ReactNode;
12
+ /**
13
+ * @deprecated use `arrowIcon` instead
14
+ */
11
15
  arrow?: ReactNode;
12
16
  getContainer?: PopupProps['getContainer'];
13
17
  } & NativeProps;
@@ -20,6 +24,10 @@ declare const Dropdown: React.ForwardRefExoticComponent<{
20
24
  closeOnMaskClick?: boolean | undefined;
21
25
  closeOnClickAway?: boolean | undefined;
22
26
  onChange?: ((key: string | null) => void) | undefined;
27
+ arrowIcon?: ReactNode;
28
+ /**
29
+ * @deprecated use `arrowIcon` instead
30
+ */
23
31
  arrow?: ReactNode;
24
32
  getContainer?: PopupProps['getContainer'];
25
33
  } & {
@@ -27,6 +35,6 @@ declare const Dropdown: React.ForwardRefExoticComponent<{
27
35
  style?: (React.CSSProperties & Partial<Record<never, string>>) | undefined;
28
36
  tabIndex?: number | undefined;
29
37
  } & React.AriaAttributes & {
30
- children?: React.ReactNode;
38
+ children?: ReactNode;
31
39
  } & React.RefAttributes<DropdownRef>>;
32
40
  export default Dropdown;
@@ -1,12 +1,14 @@
1
1
  import { useClickAway } from 'ahooks';
2
2
  import classNames from 'classnames';
3
- import React, { cloneElement, useEffect, useRef, useState, forwardRef, useImperativeHandle, isValidElement } from 'react';
4
- import Popup from '../popup';
5
- import { ItemChildrenWrap } from './item';
3
+ import React, { cloneElement, forwardRef, isValidElement, useEffect, useImperativeHandle, useRef, useState } from 'react';
6
4
  import { withNativeProps } from '../../utils/native-props';
7
- import { mergeProps } from '../../utils/with-default-props';
8
5
  import { usePropsValue } from '../../utils/use-props-value';
6
+ import { mergeProp, mergeProps } from '../../utils/with-default-props';
7
+ import { useConfig } from '../config-provider';
8
+ import Popup from '../popup';
9
9
  import { defaultPopupBaseProps } from '../popup/popup-base-props';
10
+ import { IconContext } from './context';
11
+ import { ItemChildrenWrap } from './item';
10
12
  const classPrefix = `adm-dropdown`;
11
13
  const defaultProps = {
12
14
  defaultActiveKey: null,
@@ -14,18 +16,22 @@ const defaultProps = {
14
16
  closeOnClickAway: false,
15
17
  getContainer: defaultPopupBaseProps['getContainer']
16
18
  };
17
- const Dropdown = forwardRef((p, ref) => {
18
- const props = mergeProps(defaultProps, p);
19
+ const Dropdown = forwardRef((props, ref) => {
20
+ const {
21
+ dropdown: componentConfig = {}
22
+ } = useConfig();
23
+ const mergedProps = mergeProps(defaultProps, componentConfig, props);
24
+ const arrowIcon = mergeProp(componentConfig.arrowIcon, props.arrow, props.arrowIcon);
19
25
  const [value, setValue] = usePropsValue({
20
- value: props.activeKey,
21
- defaultValue: props.defaultActiveKey,
22
- onChange: props.onChange
26
+ value: mergedProps.activeKey,
27
+ defaultValue: mergedProps.defaultActiveKey,
28
+ onChange: mergedProps.onChange
23
29
  });
24
30
  const navRef = useRef(null);
25
31
  const contentRef = useRef(null);
26
32
  // 点击外部区域,关闭
27
33
  useClickAway(() => {
28
- if (!props.closeOnClickAway) return;
34
+ if (!mergedProps.closeOnClickAway) return;
29
35
  setValue(null);
30
36
  }, [navRef, contentRef]);
31
37
  // 计算 navs 的 top 值
@@ -48,7 +54,7 @@ const Dropdown = forwardRef((p, ref) => {
48
54
  };
49
55
  let popupForceRender = false;
50
56
  const items = [];
51
- const navs = React.Children.map(props.children, child => {
57
+ const navs = React.Children.map(mergedProps.children, child => {
52
58
  if (isValidElement(child)) {
53
59
  const childProps = Object.assign(Object.assign({}, child.props), {
54
60
  onClick: event => {
@@ -56,8 +62,7 @@ const Dropdown = forwardRef((p, ref) => {
56
62
  changeActive(child.key);
57
63
  (_b = (_a = child.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, event);
58
64
  },
59
- active: child.key === value,
60
- arrow: child.props.arrow === undefined ? props.arrow : child.props.arrow
65
+ active: child.key === value
61
66
  });
62
67
  items.push(child);
63
68
  if (child.props.forceRender) popupForceRender = true;
@@ -71,18 +76,20 @@ const Dropdown = forwardRef((p, ref) => {
71
76
  setValue(null);
72
77
  }
73
78
  }), [setValue]);
74
- return withNativeProps(props, React.createElement("div", {
79
+ return withNativeProps(mergedProps, React.createElement("div", {
75
80
  className: classNames(classPrefix, {
76
81
  [`${classPrefix}-open`]: !!value
77
82
  }),
78
83
  ref: containerRef
84
+ }, React.createElement(IconContext.Provider, {
85
+ value: arrowIcon
79
86
  }, React.createElement("div", {
80
87
  className: `${classPrefix}-nav`,
81
88
  ref: navRef
82
- }, navs), React.createElement(Popup, {
89
+ }, navs)), React.createElement(Popup, {
83
90
  visible: !!value,
84
91
  position: 'top',
85
- getContainer: props.getContainer,
92
+ getContainer: mergedProps.getContainer,
86
93
  className: `${classPrefix}-popup`,
87
94
  maskClassName: `${classPrefix}-popup-mask`,
88
95
  bodyClassName: `${classPrefix}-popup-body`,
@@ -90,7 +97,7 @@ const Dropdown = forwardRef((p, ref) => {
90
97
  top
91
98
  },
92
99
  forceRender: popupForceRender,
93
- onMaskClick: props.closeOnMaskClick ? () => {
100
+ onMaskClick: mergedProps.closeOnMaskClick ? () => {
94
101
  changeActive(null);
95
102
  } : undefined
96
103
  }, React.createElement("div", {
@@ -7,6 +7,7 @@ declare const _default: import("react").ForwardRefExoticComponent<{
7
7
  closeOnMaskClick?: boolean | undefined;
8
8
  closeOnClickAway?: boolean | undefined;
9
9
  onChange?: ((key: string | null) => void) | undefined;
10
+ arrowIcon?: import("react").ReactNode;
10
11
  arrow?: import("react").ReactNode;
11
12
  getContainer?: import("../../utils/render-to-container").GetContainer | undefined;
12
13
  } & {
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
1
  import type { FC, ReactNode } from 'react';
2
+ import React from 'react';
3
3
  import { NativeProps } from '../../utils/native-props';
4
4
  export declare type DropdownItemProps = {
5
5
  key: string;
@@ -9,6 +9,10 @@ export declare type DropdownItemProps = {
9
9
  forceRender?: boolean;
10
10
  destroyOnClose?: boolean;
11
11
  onClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
12
+ arrowIcon?: ReactNode;
13
+ /**
14
+ * @deprecated use `arrowIcon` instead
15
+ */
12
16
  arrow?: ReactNode;
13
17
  children?: ReactNode;
14
18
  } & NativeProps;
@@ -1,27 +1,41 @@
1
+ import { DownFill } from 'antd-mobile-icons';
1
2
  import classNames from 'classnames';
2
3
  import React from 'react';
3
4
  import { withNativeProps } from '../../utils/native-props';
4
5
  import { useShouldRender } from '../../utils/should-render';
5
- import { DownFill } from 'antd-mobile-icons';
6
+ import { mergeProp, mergeProps } from '../../utils/with-default-props';
7
+ import { useConfig } from '../config-provider';
8
+ import { IconContext } from './context';
6
9
  const classPrefix = `adm-dropdown-item`;
7
10
  const Item = props => {
8
- var _a;
11
+ const {
12
+ dropdown: componentConfig = {}
13
+ } = useConfig();
14
+ const mergedProps = mergeProps(componentConfig, props);
15
+ const {
16
+ active,
17
+ highlight,
18
+ onClick,
19
+ title
20
+ } = mergedProps;
9
21
  const cls = classNames(classPrefix, {
10
- [`${classPrefix}-active`]: props.active,
11
- [`${classPrefix}-highlight`]: (_a = props.highlight) !== null && _a !== void 0 ? _a : props.active
22
+ [`${classPrefix}-active`]: active,
23
+ [`${classPrefix}-highlight`]: highlight !== null && highlight !== void 0 ? highlight : active
12
24
  });
25
+ const contextArrowIcon = React.useContext(IconContext);
26
+ const mergedArrowIcon = mergeProp(React.createElement(DownFill, null), contextArrowIcon, mergedProps.arrow, mergedProps.arrowIcon);
13
27
  return withNativeProps(props, React.createElement("div", {
14
28
  className: cls,
15
- onClick: props.onClick
29
+ onClick: onClick
16
30
  }, React.createElement("div", {
17
31
  className: `${classPrefix}-title`
18
32
  }, React.createElement("span", {
19
33
  className: `${classPrefix}-title-text`
20
- }, props.title), React.createElement("span", {
34
+ }, title), React.createElement("span", {
21
35
  className: classNames(`${classPrefix}-title-arrow`, {
22
- [`${classPrefix}-title-arrow-active`]: props.active
36
+ [`${classPrefix}-title-arrow-active`]: active
23
37
  })
24
- }, props.arrow === undefined ? React.createElement(DownFill, null) : props.arrow))));
38
+ }, mergedArrowIcon))));
25
39
  };
26
40
  export default Item;
27
41
  export const ItemChildrenWrap = props => {