antd-mobile 5.36.1 → 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 (204) hide show
  1. package/2x/bundle/antd-mobile.cjs.development.js +355 -283
  2. package/2x/bundle/antd-mobile.cjs.js +7 -7
  3. package/2x/bundle/antd-mobile.es.development.js +355 -283
  4. package/2x/bundle/antd-mobile.es.js +5428 -5379
  5. package/2x/bundle/antd-mobile.umd.development.js +355 -283
  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 +9 -1
  13. package/2x/cjs/components/collapse/collapse.js +26 -28
  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/utils/is-node-with-content.d.ts +3 -0
  51. package/2x/cjs/utils/is-node-with-content.js +3 -0
  52. package/2x/cjs/utils/with-default-props.d.ts +7 -0
  53. package/2x/cjs/utils/with-default-props.js +21 -5
  54. package/2x/es/components/card/card.css +5 -5
  55. package/2x/es/components/card/card.patch.css +21 -0
  56. package/2x/es/components/center-popup/center-popup.js +45 -42
  57. package/2x/es/components/check-list/check-list.js +15 -11
  58. package/2x/es/components/collapse/collapse.d.ts +9 -1
  59. package/2x/es/components/collapse/collapse.js +26 -28
  60. package/2x/es/components/config-provider/config-provider.d.ts +40 -2
  61. package/2x/es/components/dropdown/context.d.ts +2 -0
  62. package/2x/es/components/dropdown/context.js +2 -0
  63. package/2x/es/components/dropdown/dropdown.d.ts +11 -3
  64. package/2x/es/components/dropdown/dropdown.js +24 -17
  65. package/2x/es/components/dropdown/index.d.ts +1 -0
  66. package/2x/es/components/dropdown/item.d.ts +5 -1
  67. package/2x/es/components/dropdown/item.js +22 -8
  68. package/2x/es/components/form/form-item.d.ts +6 -5
  69. package/2x/es/components/form/form-item.js +24 -16
  70. package/2x/es/components/form/form.d.ts +1 -1
  71. package/2x/es/components/form/index.d.ts +1 -1
  72. package/2x/es/components/input/input.d.ts +3 -1
  73. package/2x/es/components/input/input.js +52 -50
  74. package/2x/es/components/list/list-item.d.ts +6 -2
  75. package/2x/es/components/list/list-item.js +16 -6
  76. package/2x/es/components/nav-bar/nav-bar.d.ts +4 -0
  77. package/2x/es/components/nav-bar/nav-bar.js +18 -13
  78. package/2x/es/components/notice-bar/notice-bar.css +0 -3
  79. package/2x/es/components/notice-bar/notice-bar.d.ts +3 -1
  80. package/2x/es/components/notice-bar/notice-bar.js +29 -24
  81. package/2x/es/components/number-keyboard/number-keyboard.d.ts +1 -1
  82. package/2x/es/components/number-keyboard/number-keyboard.js +13 -12
  83. package/2x/es/components/popup/popup-base-props.d.ts +3 -2
  84. package/2x/es/components/popup/popup-base-props.js +3 -0
  85. package/2x/es/components/popup/popup.js +5 -5
  86. package/2x/es/components/result/result.js +3 -10
  87. package/2x/es/components/result/use-result-icon.d.ts +3 -0
  88. package/2x/es/components/result/use-result-icon.js +29 -0
  89. package/2x/es/components/result-page/result-page.js +3 -10
  90. package/2x/es/components/search-bar/search-bar.d.ts +10 -2
  91. package/2x/es/components/search-bar/search-bar.js +33 -32
  92. package/2x/es/components/toast/toast.d.ts +2 -2
  93. package/2x/es/components/toast/toast.js +3 -3
  94. package/2x/es/components/virtual-input/virtual-input.d.ts +5 -5
  95. package/2x/es/components/virtual-input/virtual-input.js +25 -23
  96. package/2x/es/utils/is-node-with-content.d.ts +3 -0
  97. package/2x/es/utils/is-node-with-content.js +3 -0
  98. package/2x/es/utils/with-default-props.d.ts +7 -0
  99. package/2x/es/utils/with-default-props.js +20 -5
  100. package/2x/package.json +1 -1
  101. package/bundle/antd-mobile.cjs.development.js +355 -283
  102. package/bundle/antd-mobile.cjs.js +7 -7
  103. package/bundle/antd-mobile.compatible.umd.js +1 -1
  104. package/bundle/antd-mobile.es.development.js +355 -283
  105. package/bundle/antd-mobile.es.js +5428 -5379
  106. package/bundle/antd-mobile.umd.development.js +355 -283
  107. package/bundle/antd-mobile.umd.js +7 -7
  108. package/bundle/style.css +1 -1
  109. package/cjs/components/card/card.css +5 -5
  110. package/cjs/components/card/card.patch.css +17 -0
  111. package/cjs/components/center-popup/center-popup.js +46 -43
  112. package/cjs/components/check-list/check-list.js +15 -11
  113. package/cjs/components/collapse/collapse.d.ts +9 -1
  114. package/cjs/components/collapse/collapse.js +26 -28
  115. package/cjs/components/config-provider/config-provider.d.ts +40 -2
  116. package/cjs/components/dropdown/context.d.ts +2 -0
  117. package/cjs/components/dropdown/context.js +10 -0
  118. package/cjs/components/dropdown/dropdown.d.ts +11 -3
  119. package/cjs/components/dropdown/dropdown.js +23 -16
  120. package/cjs/components/dropdown/index.d.ts +1 -0
  121. package/cjs/components/dropdown/item.d.ts +5 -1
  122. package/cjs/components/dropdown/item.js +22 -8
  123. package/cjs/components/form/form-item.d.ts +6 -5
  124. package/cjs/components/form/form-item.js +25 -17
  125. package/cjs/components/form/form.d.ts +1 -1
  126. package/cjs/components/form/index.d.ts +1 -1
  127. package/cjs/components/input/input.d.ts +3 -1
  128. package/cjs/components/input/input.js +53 -51
  129. package/cjs/components/list/list-item.d.ts +6 -2
  130. package/cjs/components/list/list-item.js +16 -6
  131. package/cjs/components/nav-bar/nav-bar.d.ts +4 -0
  132. package/cjs/components/nav-bar/nav-bar.js +18 -13
  133. package/cjs/components/notice-bar/notice-bar.css +0 -2
  134. package/cjs/components/notice-bar/notice-bar.d.ts +3 -1
  135. package/cjs/components/notice-bar/notice-bar.js +30 -25
  136. package/cjs/components/number-keyboard/number-keyboard.d.ts +1 -1
  137. package/cjs/components/number-keyboard/number-keyboard.js +14 -13
  138. package/cjs/components/popup/popup-base-props.d.ts +3 -2
  139. package/cjs/components/popup/popup-base-props.js +4 -0
  140. package/cjs/components/popup/popup.js +5 -5
  141. package/cjs/components/result/result.js +3 -10
  142. package/cjs/components/result/use-result-icon.d.ts +3 -0
  143. package/cjs/components/result/use-result-icon.js +37 -0
  144. package/cjs/components/result-page/result-page.js +3 -10
  145. package/cjs/components/search-bar/search-bar.d.ts +10 -2
  146. package/cjs/components/search-bar/search-bar.js +34 -33
  147. package/cjs/components/toast/toast.css +1 -1
  148. package/cjs/components/toast/toast.d.ts +2 -2
  149. package/cjs/components/toast/toast.js +4 -4
  150. package/cjs/components/virtual-input/virtual-input.d.ts +5 -5
  151. package/cjs/components/virtual-input/virtual-input.js +26 -24
  152. package/cjs/utils/is-node-with-content.d.ts +3 -0
  153. package/cjs/utils/is-node-with-content.js +3 -0
  154. package/cjs/utils/with-default-props.d.ts +7 -0
  155. package/cjs/utils/with-default-props.js +21 -5
  156. package/es/components/card/card.css +5 -5
  157. package/es/components/card/card.patch.css +17 -0
  158. package/es/components/center-popup/center-popup.js +45 -42
  159. package/es/components/check-list/check-list.js +15 -11
  160. package/es/components/collapse/collapse.d.ts +9 -1
  161. package/es/components/collapse/collapse.js +26 -28
  162. package/es/components/config-provider/config-provider.d.ts +40 -2
  163. package/es/components/dropdown/context.d.ts +2 -0
  164. package/es/components/dropdown/context.js +2 -0
  165. package/es/components/dropdown/dropdown.d.ts +11 -3
  166. package/es/components/dropdown/dropdown.js +24 -17
  167. package/es/components/dropdown/index.d.ts +1 -0
  168. package/es/components/dropdown/item.d.ts +5 -1
  169. package/es/components/dropdown/item.js +22 -8
  170. package/es/components/form/form-item.d.ts +6 -5
  171. package/es/components/form/form-item.js +24 -16
  172. package/es/components/form/form.d.ts +1 -1
  173. package/es/components/form/index.d.ts +1 -1
  174. package/es/components/input/input.d.ts +3 -1
  175. package/es/components/input/input.js +52 -50
  176. package/es/components/list/list-item.d.ts +6 -2
  177. package/es/components/list/list-item.js +16 -6
  178. package/es/components/nav-bar/nav-bar.d.ts +4 -0
  179. package/es/components/nav-bar/nav-bar.js +18 -13
  180. package/es/components/notice-bar/notice-bar.css +0 -2
  181. package/es/components/notice-bar/notice-bar.d.ts +3 -1
  182. package/es/components/notice-bar/notice-bar.js +29 -24
  183. package/es/components/number-keyboard/number-keyboard.d.ts +1 -1
  184. package/es/components/number-keyboard/number-keyboard.js +13 -12
  185. package/es/components/popup/popup-base-props.d.ts +3 -2
  186. package/es/components/popup/popup-base-props.js +3 -0
  187. package/es/components/popup/popup.js +5 -5
  188. package/es/components/result/result.js +3 -10
  189. package/es/components/result/use-result-icon.d.ts +3 -0
  190. package/es/components/result/use-result-icon.js +29 -0
  191. package/es/components/result-page/result-page.js +3 -10
  192. package/es/components/search-bar/search-bar.d.ts +10 -2
  193. package/es/components/search-bar/search-bar.js +33 -32
  194. package/es/components/toast/toast.css +1 -1
  195. package/es/components/toast/toast.d.ts +2 -2
  196. package/es/components/toast/toast.js +3 -3
  197. package/es/components/virtual-input/virtual-input.d.ts +5 -5
  198. package/es/components/virtual-input/virtual-input.js +25 -23
  199. package/es/utils/is-node-with-content.d.ts +3 -0
  200. package/es/utils/is-node-with-content.js +3 -0
  201. package/es/utils/with-default-props.d.ts +7 -0
  202. package/es/utils/with-default-props.js +20 -5
  203. package/package.json +1 -1
  204. package/umd/antd-mobile.js +1 -1
@@ -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 => {
@@ -1,16 +1,17 @@
1
- import React from 'react';
2
- import type { FC, ReactNode, MutableRefObject } from 'react';
3
- import { NativeProps } from '../../utils/native-props';
4
1
  import { FormInstance } from 'rc-field-form';
5
2
  import type { FieldProps } from 'rc-field-form/lib/Field';
6
- import type { FormLayout } from './index';
3
+ import type { FC, MutableRefObject, ReactNode } from 'react';
4
+ import React from 'react';
5
+ import { NativeProps } from '../../utils/native-props';
7
6
  import { ListItemProps } from '../list';
7
+ import type { FormLayout } from './index';
8
8
  declare type RenderChildren<Values = any> = (form: FormInstance<Values>) => ReactNode;
9
9
  declare type ChildrenType<Values = any> = RenderChildren<Values> | ReactNode;
10
10
  declare type RcFieldProps = Omit<FieldProps, 'children'>;
11
- export declare type FormItemProps = Pick<RcFieldProps, 'dependencies' | 'valuePropName' | 'name' | 'rules' | 'messageVariables' | 'trigger' | 'validateTrigger' | 'shouldUpdate' | 'initialValue' | 'getValueFromEvent' | 'getValueProps' | 'normalize' | 'preserve' | 'validateFirst'> & Pick<ListItemProps, 'style' | 'extra' | 'clickable' | 'arrow' | 'description'> & {
11
+ export declare type FormItemProps = Pick<RcFieldProps, 'dependencies' | 'valuePropName' | 'name' | 'rules' | 'messageVariables' | 'trigger' | 'validateTrigger' | 'shouldUpdate' | 'initialValue' | 'getValueFromEvent' | 'getValueProps' | 'normalize' | 'preserve' | 'validateFirst'> & Pick<ListItemProps, 'style' | 'extra' | 'clickable' | 'arrow' | 'arrowIcon' | 'description'> & {
12
12
  label?: ReactNode;
13
13
  help?: ReactNode;
14
+ helpIcon?: ReactNode;
14
15
  hasFeedback?: boolean;
15
16
  required?: boolean;
16
17
  noStyle?: boolean;
@@ -1,17 +1,18 @@
1
1
  import { __rest } from "tslib";
2
- import React, { useContext, useCallback, useState, useRef } from 'react';
2
+ import { QuestionCircleOutline } from 'antd-mobile-icons';
3
3
  import classNames from 'classnames';
4
- import { withNativeProps } from '../../utils/native-props';
5
4
  import { Field } from 'rc-field-form';
6
5
  import FieldContext from 'rc-field-form/lib/FieldContext';
6
+ import React, { useCallback, useContext, useRef, useState } from 'react';
7
7
  import { devWarning } from '../../utils/dev-log';
8
- import { FormContext, NoStyleItemContext } from './context';
9
- import { toArray, isSafeSetRefComponent } from './utils';
8
+ import { withNativeProps } from '../../utils/native-props';
9
+ import { undefinedFallback } from '../../utils/undefined-fallback';
10
+ import { mergeProps } from '../../utils/with-default-props';
11
+ import { useConfig } from '../config-provider';
10
12
  import List from '../list';
11
13
  import Popover from '../popover';
12
- import { QuestionCircleOutline } from 'antd-mobile-icons';
13
- import { useConfig } from '../config-provider';
14
- import { undefinedFallback } from '../../utils/undefined-fallback';
14
+ import { FormContext, NoStyleItemContext } from './context';
15
+ import { isSafeSetRefComponent, toArray } from './utils';
15
16
  const NAME_SPLIT = '__SPLIT__';
16
17
  const classPrefix = `adm-form-item`;
17
18
  const MemoInput = React.memo(({
@@ -19,22 +20,25 @@ const MemoInput = React.memo(({
19
20
  }) => children, (prev, next) => prev.value === next.value && prev.update === next.update);
20
21
  const FormItemLayout = props => {
21
22
  var _a;
23
+ const {
24
+ locale,
25
+ form: componentConfig = {}
26
+ } = useConfig();
22
27
  const {
23
28
  style,
24
29
  extra,
25
30
  label,
26
31
  help,
32
+ helpIcon,
27
33
  required,
28
34
  children,
29
35
  htmlFor,
30
36
  hidden,
31
37
  arrow,
38
+ arrowIcon,
32
39
  childElementPosition = 'normal'
33
- } = props;
40
+ } = mergeProps(componentConfig, props);
34
41
  const context = useContext(FormContext);
35
- const {
36
- locale
37
- } = useConfig();
38
42
  const hasFeedback = props.hasFeedback !== undefined ? props.hasFeedback : context.hasFeedback;
39
43
  const layout = props.layout || context.layout;
40
44
  const disabled = (_a = props.disabled) !== null && _a !== void 0 ? _a : context.disabled;
@@ -74,7 +78,7 @@ const FormItemLayout = props => {
74
78
  e.stopPropagation();
75
79
  e.preventDefault();
76
80
  }
77
- }, React.createElement(QuestionCircleOutline, null))));
81
+ }, helpIcon || React.createElement(QuestionCircleOutline, null))));
78
82
  const description = (!!props.description || hasFeedback) && React.createElement(React.Fragment, null, props.description, hasFeedback && React.createElement(React.Fragment, null, props.errors.map((error, index) => React.createElement("div", {
79
83
  key: `error-${index}`,
80
84
  className: `${classPrefix}-feedback-error`
@@ -95,7 +99,7 @@ const FormItemLayout = props => {
95
99
  disabled: disabled,
96
100
  onClick: props.onClick,
97
101
  clickable: props.clickable,
98
- arrow: arrow
102
+ arrowIcon: arrowIcon || arrow
99
103
  }, React.createElement("div", {
100
104
  className: classNames(`${classPrefix}-child`, `${classPrefix}-child-position-${childElementPosition}`)
101
105
  }, React.createElement("div", {
@@ -109,6 +113,7 @@ export const FormItem = props => {
109
113
  // FormItem 相关
110
114
  label,
111
115
  help,
116
+ helpIcon,
112
117
  extra,
113
118
  hasFeedback,
114
119
  name,
@@ -129,9 +134,10 @@ export const FormItem = props => {
129
134
  shouldUpdate,
130
135
  dependencies,
131
136
  clickable,
132
- arrow
137
+ arrow,
138
+ arrowIcon
133
139
  } = props,
134
- fieldProps = __rest(props, ["style", "label", "help", "extra", "hasFeedback", "name", "required", "noStyle", "hidden", "layout", "childElementPosition", "description", "disabled", "rules", "children", "messageVariables", "trigger", "validateTrigger", "onClick", "shouldUpdate", "dependencies", "clickable", "arrow"]);
140
+ fieldProps = __rest(props, ["style", "label", "help", "helpIcon", "extra", "hasFeedback", "name", "required", "noStyle", "hidden", "layout", "childElementPosition", "description", "disabled", "rules", "children", "messageVariables", "trigger", "validateTrigger", "onClick", "shouldUpdate", "dependencies", "clickable", "arrow", "arrowIcon"]);
135
141
  const {
136
142
  name: formName
137
143
  } = useContext(FormContext);
@@ -183,6 +189,7 @@ export const FormItem = props => {
183
189
  label: label,
184
190
  extra: extra,
185
191
  help: help,
192
+ helpIcon: helpIcon,
186
193
  description: description,
187
194
  required: isRequired,
188
195
  disabled: disabled,
@@ -195,7 +202,8 @@ export const FormItem = props => {
195
202
  layout: layout,
196
203
  childElementPosition: childElementPosition,
197
204
  clickable: clickable,
198
- arrow: arrow
205
+ arrow: arrow,
206
+ arrowIcon: arrowIcon
199
207
  }, React.createElement(NoStyleItemContext.Provider, {
200
208
  value: onSubMetaChange
201
209
  }, baseChildren)));
@@ -9,7 +9,7 @@ export declare type FormProps = Pick<RcFormProps, 'form' | 'initialValues' | 'na
9
9
  footer?: ReactNode;
10
10
  mode?: ListProps['mode'];
11
11
  };
12
- export declare const Form: React.ForwardRefExoticComponent<Pick<RcFormProps<any>, "children" | "form" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & {
12
+ export declare const Form: React.ForwardRefExoticComponent<Pick<RcFormProps<any>, "form" | "children" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & {
13
13
  className?: string | undefined;
14
14
  style?: (React.CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top" | "--prefix-width", string>>) | undefined;
15
15
  tabIndex?: number | undefined;
@@ -6,7 +6,7 @@ export type { FormItemProps } from './form-item';
6
6
  export type { FormSubscribeProps } from './form-subscribe';
7
7
  export type { ValidateMessages, FieldData, NamePath, Rule, RuleObject, RuleRender, } from 'rc-field-form/es/interface';
8
8
  export type { FormArrayField, FormArrayOperation, FormArrayProps, } from './form-array';
9
- declare const _default: import("react").ForwardRefExoticComponent<Pick<import("rc-field-form").FormProps<any>, "children" | "form" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & {
9
+ declare const _default: import("react").ForwardRefExoticComponent<Pick<import("rc-field-form").FormProps<any>, "form" | "children" | "name" | "initialValues" | "preserve" | "validateMessages" | "validateTrigger" | "onFieldsChange" | "onFinish" | "onFinishFailed" | "onValuesChange"> & {
10
10
  className?: string | undefined;
11
11
  style?: (import("react").CSSProperties & Partial<Record<"--border-bottom" | "--border-inner" | "--border-top" | "--prefix-width", string>>) | undefined;
12
12
  tabIndex?: number | undefined;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
3
  declare type NativeInputProps = React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
4
4
  declare type AriaProps = {
@@ -9,6 +9,7 @@ export declare type InputProps = Pick<NativeInputProps, 'maxLength' | 'minLength
9
9
  defaultValue?: string;
10
10
  onChange?: (val: string) => void;
11
11
  clearable?: boolean;
12
+ clearIcon?: ReactNode;
12
13
  onlyShowClearWhenFocus?: boolean;
13
14
  onClear?: () => void;
14
15
  onEnterPress?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
@@ -26,6 +27,7 @@ export declare const Input: React.ForwardRefExoticComponent<Pick<NativeInputProp
26
27
  defaultValue?: string | undefined;
27
28
  onChange?: ((val: string) => void) | undefined;
28
29
  clearable?: boolean | undefined;
30
+ clearIcon?: ReactNode;
29
31
  onlyShowClearWhenFocus?: boolean | undefined;
30
32
  onClear?: (() => void) | undefined;
31
33
  onEnterPress?: ((e: React.KeyboardEvent<HTMLInputElement>) => void) | undefined;
@@ -1,32 +1,34 @@
1
- import React, { useState, forwardRef, useImperativeHandle, useRef } from 'react';
2
- import { usePropsValue } from '../../utils/use-props-value';
3
1
  import { CloseCircleFill } from 'antd-mobile-icons';
4
- import { withNativeProps } from '../../utils/native-props';
5
- import { mergeProps } from '../../utils/with-default-props';
6
2
  import classNames from 'classnames';
3
+ import React, { forwardRef, useImperativeHandle, useRef, useState } from 'react';
7
4
  import { bound } from '../../utils/bound';
5
+ import { withNativeProps } from '../../utils/native-props';
6
+ import { usePropsValue } from '../../utils/use-props-value';
8
7
  import { isIOS } from '../../utils/validate';
8
+ import { mergeProps } from '../../utils/with-default-props';
9
9
  import { useConfig } from '../config-provider';
10
10
  import useInputHandleKeyDown from './useInputHandleKeyDown';
11
11
  const classPrefix = `adm-input`;
12
12
  const defaultProps = {
13
13
  defaultValue: '',
14
+ clearIcon: React.createElement(CloseCircleFill, null),
14
15
  onlyShowClearWhenFocus: true
15
16
  };
16
- export const Input = forwardRef((p, ref) => {
17
- const props = mergeProps(defaultProps, p);
18
- const [value, setValue] = usePropsValue(props);
17
+ export const Input = forwardRef((props, ref) => {
18
+ const {
19
+ locale,
20
+ input: componentConfig = {}
21
+ } = useConfig();
22
+ const mergedProps = mergeProps(defaultProps, componentConfig, props);
23
+ const [value, setValue] = usePropsValue(mergedProps);
19
24
  const [hasFocus, setHasFocus] = useState(false);
20
25
  const compositionStartRef = useRef(false);
21
26
  const nativeInputRef = useRef(null);
22
- const {
23
- locale
24
- } = useConfig();
25
27
  const handleKeydown = useInputHandleKeyDown({
26
- onEnterPress: props.onEnterPress,
27
- onKeyDown: props.onKeyDown,
28
+ onEnterPress: mergedProps.onEnterPress,
29
+ onKeyDown: mergedProps.onKeyDown,
28
30
  nativeInputRef,
29
- enterKeyHint: props.enterKeyHint
31
+ enterKeyHint: mergedProps.enterKeyHint
30
32
  });
31
33
  useImperativeHandle(ref, () => ({
32
34
  clear: () => {
@@ -46,8 +48,8 @@ export const Input = forwardRef((p, ref) => {
46
48
  }));
47
49
  function checkValue() {
48
50
  let nextValue = value;
49
- if (props.type === 'number') {
50
- const boundValue = nextValue && bound(parseFloat(nextValue), props.min, props.max).toString();
51
+ if (mergedProps.type === 'number') {
52
+ const boundValue = nextValue && bound(parseFloat(nextValue), mergedProps.min, mergedProps.max).toString();
51
53
  // fix the display issue of numbers starting with 0
52
54
  if (Number(nextValue) !== Number(boundValue)) {
53
55
  nextValue = boundValue;
@@ -58,15 +60,15 @@ export const Input = forwardRef((p, ref) => {
58
60
  }
59
61
  }
60
62
  const shouldShowClear = (() => {
61
- if (!props.clearable || !value || props.readOnly) return false;
62
- if (props.onlyShowClearWhenFocus) {
63
+ if (!mergedProps.clearable || !value || mergedProps.readOnly) return false;
64
+ if (mergedProps.onlyShowClearWhenFocus) {
63
65
  return hasFocus;
64
66
  } else {
65
67
  return true;
66
68
  }
67
69
  })();
68
- return withNativeProps(props, React.createElement("div", {
69
- className: classNames(`${classPrefix}`, props.disabled && `${classPrefix}-disabled`)
70
+ return withNativeProps(mergedProps, React.createElement("div", {
71
+ className: classNames(`${classPrefix}`, mergedProps.disabled && `${classPrefix}-disabled`)
70
72
  }, React.createElement("input", {
71
73
  ref: nativeInputRef,
72
74
  className: `${classPrefix}-element`,
@@ -77,50 +79,50 @@ export const Input = forwardRef((p, ref) => {
77
79
  onFocus: e => {
78
80
  var _a;
79
81
  setHasFocus(true);
80
- (_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, e);
82
+ (_a = mergedProps.onFocus) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
81
83
  },
82
84
  onBlur: e => {
83
85
  var _a;
84
86
  setHasFocus(false);
85
87
  checkValue();
86
- (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, e);
88
+ (_a = mergedProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
87
89
  },
88
- id: props.id,
89
- placeholder: props.placeholder,
90
- disabled: props.disabled,
91
- readOnly: props.readOnly,
92
- maxLength: props.maxLength,
93
- minLength: props.minLength,
94
- max: props.max,
95
- min: props.min,
96
- autoComplete: props.autoComplete,
97
- enterKeyHint: props.enterKeyHint,
98
- autoFocus: props.autoFocus,
99
- pattern: props.pattern,
100
- inputMode: props.inputMode,
101
- type: props.type,
102
- name: props.name,
103
- autoCapitalize: props.autoCapitalize,
104
- autoCorrect: props.autoCorrect,
90
+ id: mergedProps.id,
91
+ placeholder: mergedProps.placeholder,
92
+ disabled: mergedProps.disabled,
93
+ readOnly: mergedProps.readOnly,
94
+ maxLength: mergedProps.maxLength,
95
+ minLength: mergedProps.minLength,
96
+ max: mergedProps.max,
97
+ min: mergedProps.min,
98
+ autoComplete: mergedProps.autoComplete,
99
+ enterKeyHint: mergedProps.enterKeyHint,
100
+ autoFocus: mergedProps.autoFocus,
101
+ pattern: mergedProps.pattern,
102
+ inputMode: mergedProps.inputMode,
103
+ type: mergedProps.type,
104
+ name: mergedProps.name,
105
+ autoCapitalize: mergedProps.autoCapitalize,
106
+ autoCorrect: mergedProps.autoCorrect,
105
107
  onKeyDown: handleKeydown,
106
- onKeyUp: props.onKeyUp,
108
+ onKeyUp: mergedProps.onKeyUp,
107
109
  onCompositionStart: e => {
108
110
  var _a;
109
111
  compositionStartRef.current = true;
110
- (_a = props.onCompositionStart) === null || _a === void 0 ? void 0 : _a.call(props, e);
112
+ (_a = mergedProps.onCompositionStart) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
111
113
  },
112
114
  onCompositionEnd: e => {
113
115
  var _a;
114
116
  compositionStartRef.current = false;
115
- (_a = props.onCompositionEnd) === null || _a === void 0 ? void 0 : _a.call(props, e);
117
+ (_a = mergedProps.onCompositionEnd) === null || _a === void 0 ? void 0 : _a.call(mergedProps, e);
116
118
  },
117
- onClick: props.onClick,
118
- step: props.step,
119
- role: props.role,
120
- "aria-valuenow": props['aria-valuenow'],
121
- "aria-valuemax": props['aria-valuemax'],
122
- "aria-valuemin": props['aria-valuemin'],
123
- "aria-label": props['aria-label']
119
+ onClick: mergedProps.onClick,
120
+ step: mergedProps.step,
121
+ role: mergedProps.role,
122
+ "aria-valuenow": mergedProps['aria-valuenow'],
123
+ "aria-valuemax": mergedProps['aria-valuemax'],
124
+ "aria-valuemin": mergedProps['aria-valuemin'],
125
+ "aria-label": mergedProps['aria-label']
124
126
  }), shouldShowClear && React.createElement("div", {
125
127
  className: `${classPrefix}-clear`,
126
128
  onMouseDown: e => {
@@ -129,7 +131,7 @@ export const Input = forwardRef((p, ref) => {
129
131
  onClick: () => {
130
132
  var _a, _b;
131
133
  setValue('');
132
- (_a = props.onClear) === null || _a === void 0 ? void 0 : _a.call(props);
134
+ (_a = mergedProps.onClear) === null || _a === void 0 ? void 0 : _a.call(mergedProps);
133
135
  // https://github.com/ant-design/ant-design-mobile/issues/5212
134
136
  if (isIOS() && compositionStartRef.current) {
135
137
  compositionStartRef.current = false;
@@ -137,5 +139,5 @@ export const Input = forwardRef((p, ref) => {
137
139
  }
138
140
  },
139
141
  "aria-label": locale.Input.clear
140
- }, React.createElement(CloseCircleFill, null))));
142
+ }, mergedProps.clearIcon)));
141
143
  });
@@ -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 ListItemProps = {
5
5
  title?: ReactNode;
@@ -8,8 +8,12 @@ export declare type ListItemProps = {
8
8
  prefix?: ReactNode;
9
9
  extra?: ReactNode;
10
10
  clickable?: boolean;
11
- arrow?: boolean | ReactNode;
11
+ arrowIcon?: boolean | ReactNode;
12
12
  disabled?: boolean;
13
13
  onClick?: (e: React.MouseEvent<HTMLElement>) => void;
14
+ /**
15
+ * @deprecated use `arrowIcon` instead
16
+ */
17
+ arrow?: boolean | ReactNode;
14
18
  } & NativeProps<'--prefix-width' | '--align-items' | '--active-background-color'>;
15
19
  export declare const ListItem: FC<ListItemProps>;
@@ -1,13 +1,23 @@
1
- import React from 'react';
2
- import { withNativeProps } from '../../utils/native-props';
3
1
  import { RightOutline } from 'antd-mobile-icons';
4
2
  import classNames from 'classnames';
3
+ import React from 'react';
5
4
  import { isNodeWithContent } from '../../utils/is-node-with-content';
5
+ import { withNativeProps } from '../../utils/native-props';
6
+ import { mergeProp } from '../../utils/with-default-props';
7
+ import { useConfig } from '../config-provider';
6
8
  const classPrefix = `adm-list-item`;
7
9
  export const ListItem = props => {
8
- var _a;
10
+ var _a, _b;
11
+ const {
12
+ arrow,
13
+ arrowIcon
14
+ } = props;
15
+ const {
16
+ list: componentConfig = {}
17
+ } = useConfig();
9
18
  const clickable = (_a = props.clickable) !== null && _a !== void 0 ? _a : !!props.onClick;
10
- const arrow = props.arrow === undefined ? clickable : props.arrow;
19
+ const showArrow = (_b = arrow !== null && arrow !== void 0 ? arrow : arrowIcon) !== null && _b !== void 0 ? _b : clickable;
20
+ const mergedArrowIcon = mergeProp(componentConfig.arrowIcon, arrow !== true ? arrow : null, arrowIcon !== true ? arrowIcon : null);
11
21
  const content = React.createElement("div", {
12
22
  className: `${classPrefix}-content`
13
23
  }, isNodeWithContent(props.prefix) && React.createElement("div", {
@@ -20,9 +30,9 @@ export const ListItem = props => {
20
30
  className: `${classPrefix}-description`
21
31
  }, props.description)), isNodeWithContent(props.extra) && React.createElement("div", {
22
32
  className: `${classPrefix}-content-extra`
23
- }, props.extra), isNodeWithContent(arrow) && React.createElement("div", {
33
+ }, props.extra), showArrow && React.createElement("div", {
24
34
  className: `${classPrefix}-content-arrow`
25
- }, arrow === true ? React.createElement(RightOutline, null) : arrow));
35
+ }, mergedArrowIcon || React.createElement(RightOutline, null)));
26
36
  return withNativeProps(props, React.createElement(clickable ? 'a' : 'div', {
27
37
  className: classNames(`${classPrefix}`, clickable ? ['adm-plain-anchor'] : [], props.disabled && `${classPrefix}-disabled`),
28
38
  onClick: props.disabled ? undefined : props.onClick
@@ -2,6 +2,10 @@ import type { FC, ReactNode } from 'react';
2
2
  import { NativeProps } from '../../utils/native-props';
3
3
  export declare type NavBarProps = {
4
4
  back?: ReactNode;
5
+ backIcon?: boolean | ReactNode;
6
+ /**
7
+ * @deprecated use `backIcon` instead
8
+ */
5
9
  backArrow?: boolean | ReactNode;
6
10
  left?: ReactNode;
7
11
  right?: ReactNode;