@fjyueke/arco-mcp 1.0.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 (191) hide show
  1. package/README.md +85 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +244 -0
  4. package/metaData/components/action-sheet/doc.md +102 -0
  5. package/metaData/components/action-sheet/example/index.tsx +199 -0
  6. package/metaData/components/action-sheet/example/methods.tsx +6 -0
  7. package/metaData/components/avatar/doc.md +57 -0
  8. package/metaData/components/avatar/example/group.tsx +69 -0
  9. package/metaData/components/avatar/example/index.tsx +196 -0
  10. package/metaData/components/badge/doc.md +28 -0
  11. package/metaData/components/badge/example/index.tsx +128 -0
  12. package/metaData/components/button/doc.md +45 -0
  13. package/metaData/components/button/example/index.tsx +264 -0
  14. package/metaData/components/carousel/doc.md +89 -0
  15. package/metaData/components/carousel/example/index.tsx +1481 -0
  16. package/metaData/components/cell/doc.md +68 -0
  17. package/metaData/components/cell/example/arrow.tsx +13 -0
  18. package/metaData/components/cell/example/cell.tsx +71 -0
  19. package/metaData/components/cell/example/group.tsx +63 -0
  20. package/metaData/components/cell/example/index.tsx +19 -0
  21. package/metaData/components/checkbox/doc.md +91 -0
  22. package/metaData/components/checkbox/example/checkbox.tsx +158 -0
  23. package/metaData/components/checkbox/example/group.tsx +103 -0
  24. package/metaData/components/checkbox/example/index.tsx +25 -0
  25. package/metaData/components/circle-progress/doc.md +40 -0
  26. package/metaData/components/circle-progress/example/index.tsx +323 -0
  27. package/metaData/components/collapse/doc.md +74 -0
  28. package/metaData/components/collapse/example/collapse.tsx +183 -0
  29. package/metaData/components/collapse/example/group.tsx +136 -0
  30. package/metaData/components/collapse/example/index.tsx +16 -0
  31. package/metaData/components/collapse/example/utils.tsx +20 -0
  32. package/metaData/components/context-provider/doc.md +44 -0
  33. package/metaData/components/context-provider/example/index.tsx +208 -0
  34. package/metaData/components/count-down/doc.md +40 -0
  35. package/metaData/components/count-down/example/hooks.tsx +118 -0
  36. package/metaData/components/count-down/example/index.tsx +63 -0
  37. package/metaData/components/date-picker/doc.md +102 -0
  38. package/metaData/components/date-picker/example/index.tsx +545 -0
  39. package/metaData/components/dialog/doc.md +200 -0
  40. package/metaData/components/dialog/example/index.tsx +328 -0
  41. package/metaData/components/dialog/example/methods.tsx +56 -0
  42. package/metaData/components/divider/doc.md +25 -0
  43. package/metaData/components/divider/example/index.tsx +87 -0
  44. package/metaData/components/dropdown/doc.md +80 -0
  45. package/metaData/components/dropdown/example/dropdown.tsx +308 -0
  46. package/metaData/components/dropdown/example/index.tsx +19 -0
  47. package/metaData/components/dropdown/example/options.tsx +103 -0
  48. package/metaData/components/dropdown-menu/doc.md +91 -0
  49. package/metaData/components/dropdown-menu/example/dropdown-menu.tsx +270 -0
  50. package/metaData/components/dropdown-menu/example/index.tsx +16 -0
  51. package/metaData/components/ellipsis/doc.md +33 -0
  52. package/metaData/components/ellipsis/example/index.tsx +93 -0
  53. package/metaData/components/ellipsis/example/js-ellipsis.tsx +229 -0
  54. package/metaData/components/ellipsis/example/native-ellipsis.tsx +48 -0
  55. package/metaData/components/form/doc.md +90 -0
  56. package/metaData/components/form/example/form-item-context.tsx +8 -0
  57. package/metaData/components/form/example/form-item.tsx +378 -0
  58. package/metaData/components/form/example/index.tsx +87 -0
  59. package/metaData/components/form/example/linked-container.tsx +66 -0
  60. package/metaData/components/grid/doc.md +39 -0
  61. package/metaData/components/grid/example/index.tsx +252 -0
  62. package/metaData/components/icon/doc.md +15 -0
  63. package/metaData/components/icon/example/index.tsx +32 -0
  64. package/metaData/components/image/doc.md +62 -0
  65. package/metaData/components/image/example/index.tsx +528 -0
  66. package/metaData/components/image-picker/doc.md +116 -0
  67. package/metaData/components/image-picker/example/add-icon.tsx +14 -0
  68. package/metaData/components/image-picker/example/index.tsx +175 -0
  69. package/metaData/components/image-preview/doc.md +119 -0
  70. package/metaData/components/image-preview/example/index.tsx +1290 -0
  71. package/metaData/components/image-preview/example/methods.tsx +72 -0
  72. package/metaData/components/index-bar/doc.md +83 -0
  73. package/metaData/components/index-bar/example/group.tsx +93 -0
  74. package/metaData/components/index-bar/example/index.tsx +271 -0
  75. package/metaData/components/index-bar/example/side-bar.tsx +82 -0
  76. package/metaData/components/input/doc.md +60 -0
  77. package/metaData/components/input/example/hooks.tsx +259 -0
  78. package/metaData/components/input/example/index.tsx +134 -0
  79. package/metaData/components/input/example/props.tsx +183 -0
  80. package/metaData/components/keyboard/doc.md +73 -0
  81. package/metaData/components/keyboard/example/index.tsx +238 -0
  82. package/metaData/components/load-more/doc.md +48 -0
  83. package/metaData/components/load-more/example/index.tsx +395 -0
  84. package/metaData/components/loading/doc.md +34 -0
  85. package/metaData/components/loading/example/index.tsx +312 -0
  86. package/metaData/components/masking/doc.md +93 -0
  87. package/metaData/components/masking/example/index.tsx +410 -0
  88. package/metaData/components/masking/example/methods.tsx +88 -0
  89. package/metaData/components/nav-bar/doc.md +40 -0
  90. package/metaData/components/nav-bar/example/back-icon.tsx +28 -0
  91. package/metaData/components/nav-bar/example/index.tsx +305 -0
  92. package/metaData/components/notice-bar/doc.md +34 -0
  93. package/metaData/components/notice-bar/example/index.tsx +294 -0
  94. package/metaData/components/notify/doc.md +81 -0
  95. package/metaData/components/notify/example/index.tsx +171 -0
  96. package/metaData/components/notify/example/methods.tsx +83 -0
  97. package/metaData/components/pagination/doc.md +41 -0
  98. package/metaData/components/pagination/example/arrow.tsx +14 -0
  99. package/metaData/components/pagination/example/index.tsx +292 -0
  100. package/metaData/components/picker/doc.md +89 -0
  101. package/metaData/components/picker/example/index.tsx +217 -0
  102. package/metaData/components/picker-view/doc.md +57 -0
  103. package/metaData/components/picker-view/example/cascader.tsx +141 -0
  104. package/metaData/components/picker-view/example/index.tsx +297 -0
  105. package/metaData/components/picker-view/example/multi-picker.tsx +66 -0
  106. package/metaData/components/picker-view/example/picker-cell.tsx +416 -0
  107. package/metaData/components/popover/doc.md +144 -0
  108. package/metaData/components/popover/example/index.tsx +23 -0
  109. package/metaData/components/popover/example/menu.tsx +145 -0
  110. package/metaData/components/popover/example/popover-inner.tsx +147 -0
  111. package/metaData/components/popover/example/popover.tsx +268 -0
  112. package/metaData/components/popup/doc.md +101 -0
  113. package/metaData/components/popup/example/index.tsx +125 -0
  114. package/metaData/components/popup/example/methods.tsx +6 -0
  115. package/metaData/components/popup-swiper/doc.md +108 -0
  116. package/metaData/components/popup-swiper/example/index.tsx +332 -0
  117. package/metaData/components/popup-swiper/example/methods.tsx +6 -0
  118. package/metaData/components/portal/doc.md +14 -0
  119. package/metaData/components/portal/example/index.tsx +35 -0
  120. package/metaData/components/progress/doc.md +42 -0
  121. package/metaData/components/progress/example/index.tsx +256 -0
  122. package/metaData/components/pull-refresh/doc.md +37 -0
  123. package/metaData/components/pull-refresh/example/android-pull-refresh.tsx +260 -0
  124. package/metaData/components/pull-refresh/example/index.tsx +44 -0
  125. package/metaData/components/pull-refresh/example/ios-pull-refresh.tsx +216 -0
  126. package/metaData/components/radio/doc.md +89 -0
  127. package/metaData/components/radio/example/group.tsx +92 -0
  128. package/metaData/components/radio/example/index.tsx +25 -0
  129. package/metaData/components/radio/example/radio.tsx +22 -0
  130. package/metaData/components/rate/doc.md +33 -0
  131. package/metaData/components/rate/example/index.tsx +281 -0
  132. package/metaData/components/search-bar/doc.md +97 -0
  133. package/metaData/components/search-bar/example/association.tsx +89 -0
  134. package/metaData/components/search-bar/example/cancel-button.tsx +34 -0
  135. package/metaData/components/search-bar/example/highlight.tsx +66 -0
  136. package/metaData/components/search-bar/example/index.tsx +251 -0
  137. package/metaData/components/show-monitor/doc.md +34 -0
  138. package/metaData/components/show-monitor/example/index.tsx +646 -0
  139. package/metaData/components/skeleton/doc.md +101 -0
  140. package/metaData/components/skeleton/example/elements.tsx +290 -0
  141. package/metaData/components/skeleton/example/index.tsx +96 -0
  142. package/metaData/components/skeleton/example/skeleton-context.tsx +7 -0
  143. package/metaData/components/slider/doc.md +42 -0
  144. package/metaData/components/slider/example/index.tsx +326 -0
  145. package/metaData/components/slider/example/marks.tsx +50 -0
  146. package/metaData/components/slider/example/popover.tsx +38 -0
  147. package/metaData/components/slider/example/thumb.tsx +48 -0
  148. package/metaData/components/slider/example/useSliderIcon.tsx +38 -0
  149. package/metaData/components/slider/example/useSliderInit.tsx +170 -0
  150. package/metaData/components/stepper/doc.md +46 -0
  151. package/metaData/components/stepper/example/index.tsx +166 -0
  152. package/metaData/components/stepper/example/useButtonClick.tsx +74 -0
  153. package/metaData/components/stepper/example/useInputEvent.tsx +65 -0
  154. package/metaData/components/stepper/example/useValue.tsx +43 -0
  155. package/metaData/components/steps/doc.md +57 -0
  156. package/metaData/components/steps/example/index.tsx +123 -0
  157. package/metaData/components/steps/example/step.tsx +126 -0
  158. package/metaData/components/sticky/doc.md +45 -0
  159. package/metaData/components/sticky/example/index.tsx +430 -0
  160. package/metaData/components/swipe-action/doc.md +44 -0
  161. package/metaData/components/swipe-action/example/index.tsx +338 -0
  162. package/metaData/components/swipe-action/example/item.tsx +40 -0
  163. package/metaData/components/swipe-load/doc.md +43 -0
  164. package/metaData/components/swipe-load/example/index.tsx +339 -0
  165. package/metaData/components/swipe-load/example/type.tsx +153 -0
  166. package/metaData/components/switch/doc.md +38 -0
  167. package/metaData/components/switch/example/index.tsx +237 -0
  168. package/metaData/components/tab-bar/doc.md +57 -0
  169. package/metaData/components/tab-bar/example/index.tsx +18 -0
  170. package/metaData/components/tab-bar/example/item.tsx +74 -0
  171. package/metaData/components/tab-bar/example/tab-bar.tsx +105 -0
  172. package/metaData/components/tabs/doc.md +187 -0
  173. package/metaData/components/tabs/example/index.tsx +514 -0
  174. package/metaData/components/tabs/example/tab-cell-underline.tsx +320 -0
  175. package/metaData/components/tabs/example/tab-cell.tsx +433 -0
  176. package/metaData/components/tabs/example/tab-pane.tsx +349 -0
  177. package/metaData/components/tag/doc.md +80 -0
  178. package/metaData/components/tag/example/index.tsx +23 -0
  179. package/metaData/components/tag/example/list.tsx +97 -0
  180. package/metaData/components/tag/example/tag.tsx +85 -0
  181. package/metaData/components/textarea/doc.md +67 -0
  182. package/metaData/components/textarea/example/index.tsx +258 -0
  183. package/metaData/components/toast/doc.md +90 -0
  184. package/metaData/components/toast/example/index.tsx +335 -0
  185. package/metaData/components/toast/example/methods.tsx +87 -0
  186. package/metaData/components/transition/doc.md +19 -0
  187. package/metaData/components/transition/example/index.tsx +113 -0
  188. package/metaData/components/uploader/doc.md +82 -0
  189. package/metaData/components/uploader/example/index.tsx +208 -0
  190. package/metaData/components-index.json +242 -0
  191. package/package.json +56 -0
@@ -0,0 +1,229 @@
1
+ import React, { Ref, useEffect, useRef, forwardRef, useImperativeHandle, useCallback } from 'react';
2
+ import ResizeObserver from 'resize-observer-polyfill';
3
+
4
+ import { JsEllipsisProps, JsEllipsisRef } from '../type';
5
+ import { getLineHeight, wrapTextChildNodesWithSpan } from '../utils/dom';
6
+ import { useLatestRef } from '../../_helpers';
7
+
8
+ const JsEllipsis = forwardRef((props: JsEllipsisProps, ref: Ref<JsEllipsisRef>) => {
9
+ const {
10
+ prefixCls,
11
+ text,
12
+ ellipsis,
13
+ dangerouslyUseInnerHTML,
14
+ maxLine = 1,
15
+ maxHeight,
16
+ ellipsisNode,
17
+ collapseNode,
18
+ endExcludes,
19
+ reflowOnResize,
20
+ onReflow,
21
+ onEllipsisNodeClick,
22
+ onCollapseNodeClick,
23
+ } = props;
24
+ const truncating = useRef(false);
25
+ const domRef = useRef<HTMLDivElement>(null);
26
+ const textRef = useRef<HTMLSpanElement>(null);
27
+ const ellipsisRef = useRef<HTMLSpanElement>(null);
28
+ const ellipsisValueRef = useLatestRef(ellipsis);
29
+
30
+ const lineHeightRef = useRef(0);
31
+ const setCurLineHeight = useCallback(() => {
32
+ if (domRef.current) {
33
+ lineHeightRef.current = Math.round(getLineHeight(domRef.current));
34
+ }
35
+ }, []);
36
+ useEffect(() => {
37
+ setCurLineHeight();
38
+ }, []);
39
+
40
+ function handleOnReflow(isEllipsis: boolean, result: string) {
41
+ if (onReflow && typeof onReflow === 'function') {
42
+ onReflow(isEllipsis, result);
43
+ }
44
+ }
45
+ function getActualHeight(container: HTMLElement) {
46
+ const { height } = container.getBoundingClientRect();
47
+ return Math.round(height);
48
+ }
49
+ function truncateText(container: HTMLElement, textContainer: HTMLElement, max: number) {
50
+ const content = textContainer.textContent || '';
51
+ let currentText = '';
52
+ let l = 0;
53
+ let r = content.length - 1;
54
+ // Binary truncate text until get the max limit fragment of text.
55
+ while (l < r) {
56
+ const m = Math.floor((l + r) / 2);
57
+ if (l === m) {
58
+ break;
59
+ }
60
+ const temp = content.slice(l, m);
61
+ textContainer.innerText = currentText + temp;
62
+ const actualHeight = getActualHeight(container);
63
+ if (actualHeight > max) {
64
+ r = m;
65
+ } else {
66
+ currentText += temp;
67
+ l = m;
68
+ }
69
+ }
70
+ // Remove the last character if it is orphaned high-surrogate characters (indicative of incomplete emoji).
71
+ currentText = currentText.replace(/[\uD800-\uDBFF]+$/, '');
72
+ // Remove the exclude char at the end of the content.
73
+ while (endExcludes && endExcludes.includes(currentText[currentText.length - 1])) {
74
+ currentText = currentText.slice(0, -1);
75
+ }
76
+ // Callback after reflow.
77
+ handleOnReflow(true, currentText);
78
+ textContainer.innerText = currentText;
79
+ }
80
+ function truncateHTML(container: HTMLElement, textContainer: HTMLElement, max: number) {
81
+ // only enter this function when container overflow.
82
+ const children = textContainer.childNodes;
83
+ if (children.length === 1) {
84
+ const node = children[0] as HTMLElement;
85
+ if (node.nodeType === Node.TEXT_NODE) {
86
+ truncateText(container, textContainer, max);
87
+ } else {
88
+ const html = node.innerHTML;
89
+ // clear content to determine whether the empty node can be placed.
90
+ node.innerHTML = '';
91
+ const actualHeight = getActualHeight(container);
92
+ if (actualHeight > max) {
93
+ // return after remove the node, if overflow with empty node.
94
+ textContainer.removeChild(node);
95
+ handleOnReflow(true, textContainer.innerHTML);
96
+ return;
97
+ }
98
+ node.innerHTML = html;
99
+ // recursive truncate node
100
+ truncateHTML(container, node, max);
101
+ }
102
+ } else {
103
+ const nodes = [].slice.call(children);
104
+ textContainer.innerHTML = '';
105
+ let i = 0;
106
+ // find the critical node
107
+ while (i < nodes.length) {
108
+ textContainer.appendChild(nodes[i]);
109
+ const actualHeight = getActualHeight(container);
110
+ if (actualHeight > max) {
111
+ if (nodes[i].childNodes && nodes[i].childNodes.length) {
112
+ break;
113
+ } else {
114
+ textContainer.removeChild(nodes[i]);
115
+ handleOnReflow(true, textContainer.innerHTML);
116
+ return;
117
+ }
118
+ }
119
+ i++;
120
+ }
121
+ if (textContainer.childNodes[i]) {
122
+ // truncate the critical node
123
+ truncateHTML(container, textContainer.childNodes[i] as HTMLElement, max);
124
+ }
125
+ }
126
+ }
127
+ // reflow when the main props change.
128
+ const reflow = useCallback(() => {
129
+ if (!domRef.current || !textRef.current || !ellipsisRef.current || truncating.current) {
130
+ return;
131
+ }
132
+ ellipsisRef.current.style.display = 'none';
133
+ if (dangerouslyUseInnerHTML) {
134
+ textRef.current.innerHTML = text;
135
+ textRef.current.classList.add(`${prefixCls}-js-content-text-pre`);
136
+ } else {
137
+ textRef.current.innerText = text;
138
+ }
139
+ if (!ellipsisValueRef.current) {
140
+ return;
141
+ }
142
+ textRef.current.classList.remove(`${prefixCls}-js-content-text-pre`);
143
+ const actualHeight = getActualHeight(domRef.current);
144
+ const max = isNaN(Number(maxHeight)) ? lineHeightRef.current * maxLine : Number(maxHeight);
145
+ if (actualHeight <= max) {
146
+ handleOnReflow(false, text);
147
+ return;
148
+ }
149
+ truncating.current = true;
150
+ ellipsisRef.current.style.display = 'inline';
151
+ if (dangerouslyUseInnerHTML) {
152
+ // wrap the text children node with span element.
153
+ wrapTextChildNodesWithSpan(textRef.current, `${prefixCls}-js-content-text`);
154
+ truncateHTML(domRef.current, textRef.current, max);
155
+ } else {
156
+ truncateText(domRef.current, textRef.current, max);
157
+ }
158
+ truncating.current = false;
159
+ }, [text, ellipsis, dangerouslyUseInnerHTML, maxLine, maxHeight, ellipsisNode, endExcludes]);
160
+
161
+ useEffect(() => {
162
+ reflow();
163
+ }, [reflow]);
164
+
165
+ const observerRef = useRef<ResizeObserver | null>(null);
166
+ // Observe resize event of container if reflowOnResize is true.
167
+ useEffect(() => {
168
+ if (domRef.current && reflowOnResize) {
169
+ if (!observerRef.current && ellipsis) {
170
+ observerRef.current = new ResizeObserver(reflow);
171
+ observerRef.current.observe(domRef.current);
172
+ }
173
+ }
174
+ return () => {
175
+ // Remove observer when component unmounted.
176
+ if (observerRef.current && domRef.current) {
177
+ observerRef.current.unobserve(domRef.current);
178
+ observerRef.current = null;
179
+ }
180
+ };
181
+ }, [ellipsis]);
182
+
183
+ useImperativeHandle(
184
+ ref,
185
+ () => ({
186
+ dom: domRef.current,
187
+ reflow,
188
+ }),
189
+ [reflow],
190
+ );
191
+
192
+ return (
193
+ <div ref={domRef} className={`${prefixCls}-js`}>
194
+ <span ref={textRef} className={`${prefixCls}-js-content`}>
195
+ {dangerouslyUseInnerHTML ? (
196
+ <span
197
+ className={`${prefixCls}-js-content-initial`}
198
+ style={{
199
+ WebkitLineClamp: maxLine,
200
+ }}
201
+ dangerouslySetInnerHTML={{ __html: text }}
202
+ />
203
+ ) : (
204
+ <span
205
+ className={`${prefixCls}-js-content-initial`}
206
+ style={{
207
+ WebkitLineClamp: maxLine,
208
+ }}
209
+ >
210
+ {text}
211
+ </span>
212
+ )}
213
+ </span>
214
+ <span
215
+ ref={ellipsisRef}
216
+ className={`${prefixCls}-js-content-ellipsis`}
217
+ onClick={onEllipsisNodeClick}
218
+ >
219
+ {ellipsisNode}
220
+ </span>
221
+ {!ellipsis && collapseNode && (
222
+ <span className={`${prefixCls}-js-content-collapse`} onClick={onCollapseNodeClick}>
223
+ {collapseNode}
224
+ </span>
225
+ )}
226
+ </div>
227
+ );
228
+ });
229
+ export default React.memo(JsEllipsis);
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import { cls } from '@arco-design/mobile-utils';
3
+
4
+ import { NativeEllipsisProps } from '../type';
5
+
6
+ function NativeEllipsis({
7
+ prefixCls,
8
+ ellipsis,
9
+ dangerouslyUseInnerHTML,
10
+ text,
11
+ maxLine,
12
+ ellipsisNode,
13
+ collapseNode = '',
14
+ onEllipsisNodeClick,
15
+ onCollapseNodeClick,
16
+ }: NativeEllipsisProps) {
17
+ return (
18
+ <div
19
+ className={cls(`${prefixCls}-native`, {
20
+ ellipsis,
21
+ })}
22
+ style={{
23
+ WebkitLineClamp: maxLine,
24
+ }}
25
+ >
26
+ {dangerouslyUseInnerHTML ? (
27
+ // eslint-disable-next-line react/no-danger,@typescript-eslint/naming-convention
28
+ <span dangerouslySetInnerHTML={{ __html: text }} />
29
+ ) : (
30
+ <span>{text}</span>
31
+ )}
32
+ {!ellipsis && collapseNode && (
33
+ <span onClick={onCollapseNodeClick} className={cls(`${prefixCls}-native-collapse`)}>
34
+ {collapseNode}
35
+ </span>
36
+ )}
37
+ {ellipsis && (ellipsisNode !== '...' || onEllipsisNodeClick) ? (
38
+ <span
39
+ onClick={onEllipsisNodeClick}
40
+ className={cls(`${prefixCls}-native-ellipsis-node`)}
41
+ >
42
+ {ellipsisNode}
43
+ </span>
44
+ ) : null}
45
+ </div>
46
+ );
47
+ }
48
+ export default NativeEllipsis;
@@ -0,0 +1,90 @@
1
+ ### 数据录入
2
+
3
+ # 表单 Form
4
+
5
+ 表单组件用于集合数据录入
6
+
7
+ ======
8
+
9
+ > 属性/Props
10
+
11
+ |参数|描述|类型|默认值|
12
+ |----------|-------------|------|------|
13
+ |className|自定义类名|string|-|
14
+ |style|自定义样式|CSSProperties|-|
15
+ |layout|表单项布局|"horizontal" \| "vertical" \| "inline"|"horizontal"|
16
+ |form|表单实例|IFormInstance|-|
17
+ |initialValues|表单初始数据|Record\<string, any\>|-|
18
+ |onValuesChange|表单项数据变化时的回调|(changedValues: any, values: any) =\> void|-|
19
+ |onChange|表单项数据变化时的回调(仅用户操作表单时触发)|(changedValues: any, values: any) =\> void|-|
20
+ |onSubmit|表单项数据变化时的回调|(values: any, otherInfo?: IFieldError\[\]) =\> void|-|
21
+ |onSubmitFailed|表单项数据变化时的回调|(values: any, errorInfo: IFieldError\[\] \| Error) =\> void|-|
22
+ |disabled|表单禁止输入|boolean|-|
23
+
24
+ > 引用/Refs
25
+
26
+ |参数|描述|类型|
27
+ |----------|-------------|------|
28
+ |dom|最外层元素 DOM|HTMLFormElement|
29
+ |form|Form对象实例|IFormInstance|
30
+
31
+ > Form.Item
32
+
33
+ |参数|描述|类型|默认值|
34
+ |----------|-------------|------|------|
35
+ |label|表单项名|ReactNode|必填|
36
+ |style|表单项Stylesheet|CSSProperties|-|
37
+ |className|表单项样式|string|-|
38
+ |field|表单项字段|string|必填|
39
+ |required|表单项是否必填|boolean|-|
40
+ |disabled|表单项是否禁用|boolean|-|
41
+ |layout|表单项布局|"horizontal" \| "vertical" \| "inline"|"horizontal"|
42
+ |children|表单项子节点|ReactElement\<any, string \| ((props: any) =\> ReactElement\<any, any\>) \| (new (props: any) =\> Component\<any, any, any\>)\>|必填|
43
+ |shouldUpdate|表单项是否刷新|IShouldUpdateFunc|-|
44
+ |rules|表单项规则|IRules\[\]|-|
45
+ |extra|表单项下方节点|ReactElement\<any, string \| ((props: any) =\> ReactElement\<any, any\>) \| (new (props: any) =\> Component\<any, any, any\>)\>|-|
46
+ |trigger|触发事件更新事件名称|string|"onChange"|
47
+ |requiredIcon|自定义必填标识|ReactNode|-|
48
+ |initialValue|表单项初始数据|any|-|
49
+ |displayType|手动指定为内置组件的类型|"Input" \| "Textarea" \| "Checkbox" \| "CheckboxGroup" \| "DatePicker" \| "Picker" \| "Radio" \| "RadioGroup" \| "Slider" \| "Switch" \| "ImagePicker" \| "Rate" \| "Stepper"|-|
50
+
51
+ > IFormInstance
52
+
53
+ |参数|描述|类型|
54
+ |----------|-------------|------|
55
+ |getFieldValue|获取单个表单项值|(name: string) =\> any|
56
+ |getFieldsValue|获取多个表单项值|(name?: string\[\]) =\> Record\<string, any\>|
57
+ |getFieldError|获取单个表单项的错误|(name: string) =\> ReactNode\[\]|
58
+ |resetFields|重置表单项|() =\> void|
59
+ |setFieldValue|设置单个表单项值|(name: string, value: any) =\> boolean|
60
+ |setFieldsValue|设置多个表单项值|(value: Record\<string, any\>) =\> void|
61
+ |validateFields|校验所有表单项|() =\> Promise\<IFieldError\[\]\>|
62
+ |submit|提交表单|() =\> void|
63
+
64
+ > IFieldError
65
+
66
+ |参数|描述|类型|
67
+ |----------|-------------|------|
68
+ |value|-|any|
69
+ |errors|-|ReactNode\[\]|
70
+ |warnings|-|ReactNode\[\]|
71
+ |field|-|string|
72
+ |dom|-|HTMLDivElement|
73
+
74
+ > IRules
75
+
76
+ ```
77
+ ITypeRules<ValidatorType.Number> | ITypeRules<ValidatorType.String> | ITypeRules<ValidatorType.Array> | ITypeRules<ValidatorType.Boolean> | ITypeRules<ValidatorType.Object> | ITypeRules<ValidatorType.Custom>
78
+ ```
79
+
80
+ > FormInternalComponentType
81
+
82
+ ```
83
+ "Input" | "Textarea" | "Checkbox" | "CheckboxGroup" | "DatePicker" | "Picker" | "Radio" | "RadioGroup" | "Slider" | "Switch" | "ImagePicker" | "Rate" | "Stepper"
84
+ ```
85
+
86
+ > FormItemRef
87
+
88
+ |参数|描述|类型|
89
+ |----------|-------------|------|
90
+ |dom|最外层元素 DOM|HTMLDivElement|
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { IFormItemContext } from './type';
3
+ import { defaultFormDataMethods } from './useForm';
4
+
5
+ export const FormItemContext = React.createContext<IFormItemContext>({
6
+ form: defaultFormDataMethods,
7
+ layout: 'horizontal',
8
+ });