@1money/react-ui 1.16.0 → 1.17.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 (268) hide show
  1. package/AGENTS.md +393 -0
  2. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  3. package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
  4. package/es/components/CheckboxGroup/interface.d.ts +21 -15
  5. package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  6. package/es/components/Form/Form.d.ts +29 -0
  7. package/es/components/Form/Form.js +188 -0
  8. package/es/components/Form/FormItem.d.ts +4 -0
  9. package/es/components/Form/FormItem.js +165 -0
  10. package/es/components/Form/FormItemContent.d.ts +18 -0
  11. package/es/components/Form/FormItemContent.js +146 -0
  12. package/es/components/Form/constants.d.ts +46 -0
  13. package/es/components/Form/constants.js +65 -0
  14. package/es/components/Form/helper.d.ts +120 -0
  15. package/es/components/Form/helper.js +284 -0
  16. package/es/components/Form/index.d.ts +20 -0
  17. package/es/components/Form/index.js +21 -0
  18. package/es/components/Form/interface.d.ts +238 -0
  19. package/es/components/Form/interface.js +2 -0
  20. package/es/components/Form/style/Form.css +1 -0
  21. package/es/components/Form/style/Form.scss +167 -0
  22. package/es/components/Form/style/css.js +2 -0
  23. package/es/components/Form/style/index.d.ts +1 -0
  24. package/es/components/Form/style/index.js +2 -0
  25. package/es/components/Form/useFormItemContext.d.ts +32 -0
  26. package/es/components/Form/useFormItemContext.js +55 -0
  27. package/es/components/Form/useFormItemWatch.d.ts +51 -0
  28. package/es/components/Form/useFormItemWatch.js +69 -0
  29. package/es/components/Form/useValidationTrigger.d.ts +40 -0
  30. package/es/components/Form/useValidationTrigger.js +74 -0
  31. package/es/components/Input/Input.js +72 -74
  32. package/es/components/Input/interface.d.ts +9 -9
  33. package/es/components/InputAmount/InputAmount.js +228 -276
  34. package/es/components/InputAmount/helper.d.ts +46 -0
  35. package/es/components/InputAmount/helper.js +115 -0
  36. package/es/components/ProForm/ProForm.d.ts +33 -0
  37. package/es/components/ProForm/ProForm.js +208 -0
  38. package/es/components/ProForm/ProFormDependency.d.ts +12 -0
  39. package/es/components/ProForm/ProFormDependency.js +61 -0
  40. package/es/components/ProForm/ProFormList.d.ts +19 -0
  41. package/es/components/ProForm/ProFormList.js +348 -0
  42. package/es/components/ProForm/Submitter.d.ts +21 -0
  43. package/es/components/ProForm/Submitter.js +76 -0
  44. package/es/components/ProForm/constants.d.ts +34 -0
  45. package/es/components/ProForm/constants.js +40 -0
  46. package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  47. package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
  48. package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  49. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
  50. package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  51. package/es/components/ProForm/fields/ProFormDigit.js +15 -0
  52. package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  53. package/es/components/ProForm/fields/ProFormMoney.js +10 -0
  54. package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  55. package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
  56. package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  57. package/es/components/ProForm/fields/ProFormPassword.js +16 -0
  58. package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  59. package/es/components/ProForm/fields/ProFormRadio.js +13 -0
  60. package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  61. package/es/components/ProForm/fields/ProFormSelect.js +13 -0
  62. package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  63. package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
  64. package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
  65. package/es/components/ProForm/fields/ProFormText.js +15 -0
  66. package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  67. package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
  68. package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
  69. package/es/components/ProForm/fields/createProFormField.js +200 -0
  70. package/es/components/ProForm/fields/index.d.ts +12 -0
  71. package/es/components/ProForm/fields/index.js +13 -0
  72. package/es/components/ProForm/index.d.ts +7 -0
  73. package/es/components/ProForm/index.js +7 -0
  74. package/es/components/ProForm/interface.d.ts +306 -0
  75. package/es/components/ProForm/interface.js +2 -0
  76. package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  77. package/es/components/ProForm/layouts/DrawerForm.js +79 -0
  78. package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
  79. package/es/components/ProForm/layouts/ModalForm.js +89 -0
  80. package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  81. package/es/components/ProForm/layouts/QueryFilter.js +132 -0
  82. package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
  83. package/es/components/ProForm/layouts/StepsForm.js +295 -0
  84. package/es/components/ProForm/layouts/index.d.ts +4 -0
  85. package/es/components/ProForm/layouts/index.js +5 -0
  86. package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  87. package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
  88. package/es/components/ProForm/style/ProForm.module.css +1 -0
  89. package/es/components/ProForm/style/ProForm.module.scss +59 -0
  90. package/es/components/ProForm/style/css.js +3 -0
  91. package/es/components/ProForm/style/index.d.ts +1 -0
  92. package/es/components/ProForm/style/index.js +3 -0
  93. package/es/components/ProForm/utils.d.ts +72 -0
  94. package/es/components/ProForm/utils.js +206 -0
  95. package/es/components/RadioGroup/RadioGroup.js +46 -23
  96. package/es/components/RadioGroup/interface.d.ts +3 -1
  97. package/es/components/Select/Select.d.ts +1 -1
  98. package/es/components/Select/Select.js +113 -106
  99. package/es/components/Select/constants.d.ts +18 -0
  100. package/es/components/Select/constants.js +19 -0
  101. package/es/components/Sidebar/Sidebar.js +21 -23
  102. package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
  103. package/es/components/Sidebar/SidebarLogo.js +33 -0
  104. package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
  105. package/es/components/Sidebar/SimplySidebar.js +18 -22
  106. package/es/components/Sidebar/Stepper.js +14 -14
  107. package/es/components/Sidebar/constants.d.ts +16 -0
  108. package/es/components/Sidebar/constants.js +17 -0
  109. package/es/components/Sidebar/style/Stepper.css +1 -1
  110. package/es/components/Sidebar/style/Stepper.scss +11 -1
  111. package/es/components/Switch/Switch.js +28 -25
  112. package/es/components/Switch/interface.d.ts +9 -4
  113. package/es/components/useControlledState/index.d.ts +14 -0
  114. package/es/components/useControlledState/index.js +32 -0
  115. package/es/components/useEventCallback/index.d.ts +11 -0
  116. package/es/components/useEventCallback/index.js +17 -0
  117. package/es/components/useLayoutEffect/index.d.ts +11 -0
  118. package/es/components/useLayoutEffect/index.js +17 -0
  119. package/es/components/useLayoutState/index.d.ts +13 -0
  120. package/es/components/useLayoutState/index.js +71 -0
  121. package/es/components/useMemoizedFn/index.d.ts +12 -0
  122. package/es/components/useMemoizedFn/index.js +27 -0
  123. package/es/components/usePrevious/index.d.ts +11 -0
  124. package/es/components/usePrevious/index.js +19 -0
  125. package/es/components/useSafeState/index.d.ts +12 -0
  126. package/es/components/useSafeState/index.js +24 -0
  127. package/es/components/useSyncState/index.d.ts +14 -0
  128. package/es/components/useSyncState/index.js +37 -0
  129. package/es/components/useUpdateEffect/index.d.ts +9 -0
  130. package/es/components/useUpdateEffect/index.js +19 -0
  131. package/es/index.css +1 -1
  132. package/es/index.d.ts +21 -2
  133. package/es/index.js +19 -1
  134. package/jest.setup.d.ts +1 -0
  135. package/jest.setup.ts +1 -0
  136. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  137. package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
  138. package/lib/components/CheckboxGroup/interface.d.ts +21 -15
  139. package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  140. package/lib/components/Form/Form.d.ts +29 -0
  141. package/lib/components/Form/Form.js +199 -0
  142. package/lib/components/Form/FormItem.d.ts +4 -0
  143. package/lib/components/Form/FormItem.js +176 -0
  144. package/lib/components/Form/FormItemContent.d.ts +18 -0
  145. package/lib/components/Form/FormItemContent.js +156 -0
  146. package/lib/components/Form/constants.d.ts +46 -0
  147. package/lib/components/Form/constants.js +71 -0
  148. package/lib/components/Form/helper.d.ts +120 -0
  149. package/lib/components/Form/helper.js +290 -0
  150. package/lib/components/Form/index.d.ts +20 -0
  151. package/lib/components/Form/index.js +45 -0
  152. package/lib/components/Form/interface.d.ts +238 -0
  153. package/lib/components/Form/interface.js +6 -0
  154. package/lib/components/Form/style/Form.css +1 -0
  155. package/lib/components/Form/style/Form.scss +167 -0
  156. package/lib/components/Form/style/css.js +4 -0
  157. package/lib/components/Form/style/index.d.ts +1 -0
  158. package/lib/components/Form/style/index.js +4 -0
  159. package/lib/components/Form/useFormItemContext.d.ts +32 -0
  160. package/lib/components/Form/useFormItemContext.js +62 -0
  161. package/lib/components/Form/useFormItemWatch.d.ts +51 -0
  162. package/lib/components/Form/useFormItemWatch.js +76 -0
  163. package/lib/components/Form/useValidationTrigger.d.ts +40 -0
  164. package/lib/components/Form/useValidationTrigger.js +81 -0
  165. package/lib/components/Input/Input.js +71 -73
  166. package/lib/components/Input/interface.d.ts +9 -9
  167. package/lib/components/InputAmount/InputAmount.js +230 -278
  168. package/lib/components/InputAmount/helper.d.ts +46 -0
  169. package/lib/components/InputAmount/helper.js +122 -0
  170. package/lib/components/ProForm/ProForm.d.ts +33 -0
  171. package/lib/components/ProForm/ProForm.js +216 -0
  172. package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
  173. package/lib/components/ProForm/ProFormDependency.js +67 -0
  174. package/lib/components/ProForm/ProFormList.d.ts +19 -0
  175. package/lib/components/ProForm/ProFormList.js +355 -0
  176. package/lib/components/ProForm/Submitter.d.ts +21 -0
  177. package/lib/components/ProForm/Submitter.js +83 -0
  178. package/lib/components/ProForm/constants.d.ts +34 -0
  179. package/lib/components/ProForm/constants.js +46 -0
  180. package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  181. package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
  182. package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  183. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
  184. package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  185. package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
  186. package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  187. package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
  188. package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  189. package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
  190. package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  191. package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
  192. package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  193. package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
  194. package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  195. package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
  196. package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  197. package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
  198. package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
  199. package/lib/components/ProForm/fields/ProFormText.js +22 -0
  200. package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  201. package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
  202. package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
  203. package/lib/components/ProForm/fields/createProFormField.js +208 -0
  204. package/lib/components/ProForm/fields/index.d.ts +12 -0
  205. package/lib/components/ProForm/fields/index.js +90 -0
  206. package/lib/components/ProForm/index.d.ts +7 -0
  207. package/lib/components/ProForm/index.js +73 -0
  208. package/lib/components/ProForm/interface.d.ts +306 -0
  209. package/lib/components/ProForm/interface.js +6 -0
  210. package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  211. package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
  212. package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
  213. package/lib/components/ProForm/layouts/ModalForm.js +96 -0
  214. package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  215. package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
  216. package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
  217. package/lib/components/ProForm/layouts/StepsForm.js +302 -0
  218. package/lib/components/ProForm/layouts/index.d.ts +4 -0
  219. package/lib/components/ProForm/layouts/index.js +40 -0
  220. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  221. package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
  222. package/lib/components/ProForm/style/ProForm.module.css +1 -0
  223. package/lib/components/ProForm/style/ProForm.module.scss +59 -0
  224. package/lib/components/ProForm/style/css.js +4 -0
  225. package/lib/components/ProForm/style/index.d.ts +1 -0
  226. package/lib/components/ProForm/style/index.js +4 -0
  227. package/lib/components/ProForm/utils.d.ts +72 -0
  228. package/lib/components/ProForm/utils.js +213 -0
  229. package/lib/components/RadioGroup/RadioGroup.js +45 -22
  230. package/lib/components/RadioGroup/interface.d.ts +3 -1
  231. package/lib/components/Select/Select.d.ts +1 -1
  232. package/lib/components/Select/Select.js +114 -107
  233. package/lib/components/Select/constants.d.ts +18 -0
  234. package/lib/components/Select/constants.js +25 -0
  235. package/lib/components/Sidebar/Sidebar.js +21 -23
  236. package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
  237. package/lib/components/Sidebar/SidebarLogo.js +39 -0
  238. package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
  239. package/lib/components/Sidebar/SimplySidebar.js +17 -21
  240. package/lib/components/Sidebar/Stepper.js +14 -14
  241. package/lib/components/Sidebar/constants.d.ts +16 -0
  242. package/lib/components/Sidebar/constants.js +23 -0
  243. package/lib/components/Sidebar/style/Stepper.css +1 -1
  244. package/lib/components/Sidebar/style/Stepper.scss +11 -1
  245. package/lib/components/Switch/Switch.js +27 -24
  246. package/lib/components/Switch/interface.d.ts +9 -4
  247. package/lib/components/useControlledState/index.d.ts +14 -0
  248. package/lib/components/useControlledState/index.js +39 -0
  249. package/lib/components/useEventCallback/index.d.ts +11 -0
  250. package/lib/components/useEventCallback/index.js +24 -0
  251. package/lib/components/useLayoutEffect/index.d.ts +11 -0
  252. package/lib/components/useLayoutEffect/index.js +23 -0
  253. package/lib/components/useLayoutState/index.d.ts +13 -0
  254. package/lib/components/useLayoutState/index.js +79 -0
  255. package/lib/components/useMemoizedFn/index.d.ts +12 -0
  256. package/lib/components/useMemoizedFn/index.js +33 -0
  257. package/lib/components/usePrevious/index.d.ts +11 -0
  258. package/lib/components/usePrevious/index.js +25 -0
  259. package/lib/components/useSafeState/index.d.ts +12 -0
  260. package/lib/components/useSafeState/index.js +31 -0
  261. package/lib/components/useSyncState/index.d.ts +14 -0
  262. package/lib/components/useSyncState/index.js +44 -0
  263. package/lib/components/useUpdateEffect/index.d.ts +9 -0
  264. package/lib/components/useUpdateEffect/index.js +25 -0
  265. package/lib/index.css +1 -1
  266. package/lib/index.d.ts +21 -2
  267. package/lib/index.js +213 -1
  268. package/package.json +16 -1
@@ -10,26 +10,32 @@ interface CheckboxGroupBaseProps {
10
10
  labelCls?: string;
11
11
  size?: 'sm' | 'md' | 'lg';
12
12
  }
13
+ interface CheckboxGroupNormalItem {
14
+ key: string;
15
+ label?: ReactNode;
16
+ defaultChecked?: boolean;
17
+ onChange?: (checked: boolean) => any;
18
+ }
19
+ interface CheckboxGroupTriStateItem {
20
+ key: string;
21
+ label?: ReactNode;
22
+ defaultValue?: boolean | null;
23
+ onChange?: (state: boolean | null) => any;
24
+ }
25
+ type NormalItem = CheckboxGroupNormalItem & Omit<PrimeCheckboxProps, 'key' | 'className' | 'checked' | 'value' | 'inputId' | 'onChange'>;
26
+ type TriStateItem = CheckboxGroupTriStateItem & Omit<TriStateCheckboxProps, 'key' | 'className' | 'checked' | 'value' | 'inputId' | 'onChange' | 'defaultValue'>;
27
+ export type CheckboxGroupItem = NormalItem | TriStateItem;
13
28
  interface CheckboxGroupNormalProps extends CheckboxGroupBaseProps {
14
29
  tristate?: false;
15
- onChange?: (checkedList: string[]) => any;
16
- items: ({
17
- key: string;
18
- label?: ReactNode;
19
- checked?: boolean;
20
- onChange?: (checked: boolean) => any;
21
- } & Omit<PrimeCheckboxProps, 'key' | 'className' | 'checked' | 'value' | 'inputId' | 'onChange'>)[];
30
+ value?: string[];
31
+ onChange?: (checkedList: string[]) => void;
32
+ items: NormalItem[];
22
33
  }
23
34
  interface CheckboxGroupTriStateProps extends CheckboxGroupBaseProps {
24
35
  tristate: true;
25
- onChange?: (itemsState: Record<string, boolean | null>) => any;
26
- items: ({
27
- key: string;
28
- label?: ReactNode;
29
- checked?: boolean;
30
- defaultValue?: boolean | null;
31
- onChange?: (state: boolean | null) => any;
32
- } & Omit<TriStateCheckboxProps, 'key' | 'className' | 'checked' | 'value' | 'inputId' | 'onChange' | 'defaultValue'>)[];
36
+ value?: Record<string, boolean | null>;
37
+ onChange?: (itemsState: Record<string, boolean | null>) => void;
38
+ items: TriStateItem[];
33
39
  }
34
40
  export type CheckboxGroupProps = CheckboxGroupNormalProps | CheckboxGroupTriStateProps;
35
41
  export {};
@@ -75,13 +75,6 @@ $component: 'checkboxgroup';
75
75
  border: 2px solid $color-primary;
76
76
  box-shadow: none;
77
77
  }
78
-
79
- // &:has(.p-checkbox-input:checked) {
80
- // .p-checkbox-box {
81
- // // background-color: $color-primary-active;
82
- // // border-color: $color-primary-active;
83
- // }
84
- // }
85
78
  }
86
79
 
87
80
  // 选中状态
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import type { FieldValues } from 'react-hook-form';
3
+ import type { FormContextValue, FormProps } from './interface';
4
+ /** React context that distributes form layout and state to descendant `<FormItem>` components. */
5
+ export declare const FormContext: React.Context<FormContextValue | null>;
6
+ /**
7
+ * Form component that wraps `react-hook-form` with layout, context distribution,
8
+ * value-change subscriptions, and scroll-to-error behavior.
9
+ *
10
+ * Renders a `<FormProvider>` and native `<form>` element. All `<FormItem>` children
11
+ * receive form methods and layout configuration via {@link FormContext}.
12
+ *
13
+ * Supports both controlled mode (pass an external `form` instance) and uncontrolled
14
+ * mode (internal `useForm` is created automatically).
15
+ *
16
+ * @template TFieldValues - The shape of the form values.
17
+ * @param props - {@link FormProps}
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * <Form defaultValues={{ name: '' }} onFinish={(values) => save(values)}>
22
+ * <FormItem name="name" label="Name" rules={{ required: true }}>
23
+ * <Input />
24
+ * </FormItem>
25
+ * </Form>
26
+ * ```
27
+ */
28
+ export declare function Form<TFieldValues extends FieldValues = FieldValues>(props: FormProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
29
+ export default Form;
@@ -0,0 +1,188 @@
1
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) {
4
+ return value instanceof P ? value : new P(function (resolve) {
5
+ resolve(value);
6
+ });
7
+ }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) {
10
+ try {
11
+ step(generator.next(value));
12
+ } catch (e) {
13
+ reject(e);
14
+ }
15
+ }
16
+ function rejected(value) {
17
+ try {
18
+ step(generator["throw"](value));
19
+ } catch (e) {
20
+ reject(e);
21
+ }
22
+ }
23
+ function step(result) {
24
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
25
+ }
26
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
27
+ });
28
+ };
29
+ var __rest = this && this.__rest || function (s, e) {
30
+ var t = {};
31
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
32
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
33
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
34
+ }
35
+ return t;
36
+ };
37
+ import { jsx as _jsx } from "react/jsx-runtime";
38
+ import React, { createContext, useEffect, useMemo } from 'react';
39
+ import { FormProvider, useForm } from 'react-hook-form';
40
+ import { default as classnames, joinCls } from '../../utils/classnames';
41
+ import useLatest from '../useLatest';
42
+ import useMemoizedFn from '../useMemoizedFn';
43
+ import { DEFAULT_LABEL_ALIGN, DEFAULT_LABEL_COL, DEFAULT_LAYOUT, DEFAULT_SIZE, DEFAULT_WRAPPER_COL } from './constants';
44
+ import { getFirstErrorPath, scrollToField } from './helper';
45
+ /** React context that distributes form layout and state to descendant `<FormItem>` components. */
46
+ export var FormContext = /*#__PURE__*/createContext(null);
47
+ /**
48
+ * Form component that wraps `react-hook-form` with layout, context distribution,
49
+ * value-change subscriptions, and scroll-to-error behavior.
50
+ *
51
+ * Renders a `<FormProvider>` and native `<form>` element. All `<FormItem>` children
52
+ * receive form methods and layout configuration via {@link FormContext}.
53
+ *
54
+ * Supports both controlled mode (pass an external `form` instance) and uncontrolled
55
+ * mode (internal `useForm` is created automatically).
56
+ *
57
+ * @template TFieldValues - The shape of the form values.
58
+ * @param props - {@link FormProps}
59
+ *
60
+ * @example
61
+ * ```tsx
62
+ * <Form defaultValues={{ name: '' }} onFinish={(values) => save(values)}>
63
+ * <FormItem name="name" label="Name" rules={{ required: true }}>
64
+ * <Input />
65
+ * </FormItem>
66
+ * </Form>
67
+ * ```
68
+ */
69
+ export function Form(props) {
70
+ var _this = this;
71
+ // Form is a thin wrapper over react-hook-form with layout + UX helpers.
72
+ var form = props.form,
73
+ defaultValues = props.defaultValues,
74
+ onFinish = props.onFinish,
75
+ onFinishFailed = props.onFinishFailed,
76
+ onValuesChange = props.onValuesChange,
77
+ watchNames = props.watchNames,
78
+ scrollToFirstError = props.scrollToFirstError,
79
+ _props$layout = props.layout,
80
+ layout = _props$layout === void 0 ? DEFAULT_LAYOUT : _props$layout,
81
+ _props$labelAlign = props.labelAlign,
82
+ labelAlign = _props$labelAlign === void 0 ? DEFAULT_LABEL_ALIGN : _props$labelAlign,
83
+ _props$labelCol = props.labelCol,
84
+ labelCol = _props$labelCol === void 0 ? DEFAULT_LABEL_COL : _props$labelCol,
85
+ _props$wrapperCol = props.wrapperCol,
86
+ wrapperCol = _props$wrapperCol === void 0 ? DEFAULT_WRAPPER_COL : _props$wrapperCol,
87
+ _props$size = props.size,
88
+ size = _props$size === void 0 ? DEFAULT_SIZE : _props$size,
89
+ disabled = props.disabled,
90
+ _props$colon = props.colon,
91
+ colon = _props$colon === void 0 ? true : _props$colon,
92
+ _props$requiredMark = props.requiredMark,
93
+ requiredMark = _props$requiredMark === void 0 ? true : _props$requiredMark,
94
+ className = props.className,
95
+ style = props.style,
96
+ children = props.children,
97
+ useFormProps = __rest(props, ["form", "defaultValues", "onFinish", "onFinishFailed", "onValuesChange", "watchNames", "scrollToFirstError", "layout", "labelAlign", "labelCol", "wrapperCol", "size", "disabled", "colon", "requiredMark", "className", "style", "children"]);
98
+ // Always create an internal form to keep hook ordering stable.
99
+ // When an external `form` is passed via the `form` prop, this instance is
100
+ // unused but must remain so that React's hook call order is consistent
101
+ // across renders. We pass `shouldUnregister: true` to minimize overhead
102
+ // of the unused form instance.
103
+ var internalMethods = useForm(Object.assign({
104
+ defaultValues: defaultValues,
105
+ shouldUnregister: true
106
+ }, useFormProps));
107
+ // Use provided form methods when controlled; otherwise use internal form state.
108
+ var methods = form !== null && form !== void 0 ? form : internalMethods;
109
+ var valuesChangeRef = useLatest(onValuesChange);
110
+ var watchNamesRef = useLatest((watchNames === null || watchNames === void 0 ? void 0 : watchNames.length) ? new Set(watchNames) : null);
111
+ // Provide layout + disabled state + form methods to FormItem via context.
112
+ var ctx = useMemo(function () {
113
+ return {
114
+ layout: layout,
115
+ labelAlign: labelAlign,
116
+ labelCol: labelCol,
117
+ wrapperCol: wrapperCol,
118
+ size: size,
119
+ disabled: disabled,
120
+ colon: colon,
121
+ requiredMark: requiredMark,
122
+ methods: methods
123
+ };
124
+ }, [layout, labelAlign, labelCol, wrapperCol, size, disabled, colon, requiredMark, methods]);
125
+ // Subscribe to all value changes when handler provided.
126
+ useEffect(function () {
127
+ if (!onValuesChange) return;
128
+ var subscription = methods.watch(function (values, info) {
129
+ var _a;
130
+ var watchSet = watchNamesRef.current;
131
+ if (watchSet) {
132
+ var name = info.name;
133
+ if (!name || !watchSet.has(name)) return;
134
+ }
135
+ (_a = valuesChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(valuesChangeRef, values, {
136
+ name: info.name,
137
+ type: info.type
138
+ });
139
+ });
140
+ return function () {
141
+ return subscription.unsubscribe();
142
+ };
143
+ // `valuesChangeRef` and `watchNamesRef` are stable refs accessed via `.current`
144
+ // so they do not need to be in the dependency array.
145
+ }, [methods, onValuesChange]);
146
+ // Submit success handler.
147
+ var handleFinish = useMemoizedFn(function (values) {
148
+ return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
149
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
150
+ while (1) switch (_context.prev = _context.next) {
151
+ case 0:
152
+ _context.next = 2;
153
+ return onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
154
+ case 2:
155
+ case "end":
156
+ return _context.stop();
157
+ }
158
+ }, _callee);
159
+ }));
160
+ });
161
+ // Submit failure handler with optional scroll-to-error.
162
+ var handleFinishFailed = useMemoizedFn(function (errors) {
163
+ var _a;
164
+ if (scrollToFirstError) {
165
+ var first = getFirstErrorPath(errors);
166
+ if (first) {
167
+ (_a = methods.setFocus) === null || _a === void 0 ? void 0 : _a.call(methods, first);
168
+ scrollToField(first, scrollToFirstError);
169
+ }
170
+ }
171
+ onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed(errors);
172
+ });
173
+ var classes = classnames('form');
174
+ return _jsx(FormProvider, Object.assign({}, methods, {
175
+ children: _jsx(FormContext.Provider, {
176
+ value: ctx,
177
+ children: _jsx("form", {
178
+ className: classes('root', joinCls(className, classes("layout-".concat(layout)), classes("size-".concat(size)), labelAlign === 'left' && classes('label-left'))),
179
+ style: style,
180
+ onSubmit: methods.handleSubmit(handleFinish, handleFinishFailed),
181
+ noValidate: true,
182
+ children: children
183
+ })
184
+ })
185
+ }));
186
+ }
187
+ export default Form;
188
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRm9ybS9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Gb3JtL0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInMiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlTWVtbyIsIkZvcm1Qcm92aWRlciIsInVzZUZvcm0iLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJ1c2VMYXRlc3QiLCJ1c2VNZW1vaXplZEZuIiwiREVGQVVMVF9MQUJFTF9BTElHTiIsIkRFRkFVTFRfTEFCRUxfQ09MIiwiREVGQVVMVF9MQVlPVVQiLCJERUZBVUxUX1NJWkUiLCJERUZBVUxUX1dSQVBQRVJfQ09MIiwiZ2V0Rmlyc3RFcnJvclBhdGgiLCJzY3JvbGxUb0ZpZWxkIiwiRm9ybUNvbnRleHQiLCJGb3JtIiwicHJvcHMiLCJfdGhpcyIsImZvcm0iLCJkZWZhdWx0VmFsdWVzIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uVmFsdWVzQ2hhbmdlIiwid2F0Y2hOYW1lcyIsInNjcm9sbFRvRmlyc3RFcnJvciIsIl9wcm9wcyRsYXlvdXQiLCJsYXlvdXQiLCJfcHJvcHMkbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfcHJvcHMkbGFiZWxDb2wiLCJsYWJlbENvbCIsIl9wcm9wcyR3cmFwcGVyQ29sIiwid3JhcHBlckNvbCIsIl9wcm9wcyRzaXplIiwic2l6ZSIsImRpc2FibGVkIiwiX3Byb3BzJGNvbG9uIiwiY29sb24iLCJfcHJvcHMkcmVxdWlyZWRNYXJrIiwicmVxdWlyZWRNYXJrIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJjaGlsZHJlbiIsInVzZUZvcm1Qcm9wcyIsImludGVybmFsTWV0aG9kcyIsImFzc2lnbiIsInNob3VsZFVucmVnaXN0ZXIiLCJtZXRob2RzIiwidmFsdWVzQ2hhbmdlUmVmIiwid2F0Y2hOYW1lc1JlZiIsIlNldCIsImN0eCIsInN1YnNjcmlwdGlvbiIsIndhdGNoIiwidmFsdWVzIiwiaW5mbyIsIl9hIiwid2F0Y2hTZXQiLCJjdXJyZW50IiwibmFtZSIsImhhcyIsInR5cGUiLCJ1bnN1YnNjcmliZSIsImhhbmRsZUZpbmlzaCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsInN0b3AiLCJoYW5kbGVGaW5pc2hGYWlsZWQiLCJlcnJvcnMiLCJmaXJzdCIsInNldEZvY3VzIiwiY2xhc3NlcyIsIlByb3ZpZGVyIiwiY29uY2F0Iiwib25TdWJtaXQiLCJoYW5kbGVTdWJtaXQiLCJub1ZhbGlkYXRlIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMs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LEVBQUEsSUFBQTtRQUFBdkMsUUFBQSxFQUVUQTtNQUFRLENBQUE7SUFDSixDQUFBO0VBQ2MsQ0FBQSxDQUFBLENBQ1Y7QUFFbkI7QUFFQSxlQUFlM0IsSUFBSSIsImZpbGUiOiJjb21wb25lbnRzL0Zvcm0vRm9ybS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGb3JtUHJvdmlkZXIsIHVzZUZvcm0gfSBmcm9tICdyZWFjdC1ob29rLWZvcm0nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgdXNlTGF0ZXN0IGZyb20gJy4uL3VzZUxhdGVzdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICcuLi91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IERFRkFVTFRfTEFCRUxfQUxJR04sIERFRkFVTFRfTEFCRUxfQ09MLCBERUZBVUxUX0xBWU9VVCwgREVGQVVMVF9TSVpFLCBERUZBVUxUX1dSQVBQRVJfQ09MLCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEZpcnN0RXJyb3JQYXRoLCBzY3JvbGxUb0ZpZWxkIH0gZnJvbSAnLi9oZWxwZXInO1xuLyoqIFJlYWN0IGNvbnRleHQgdGhhdCBkaXN0cmlidXRlcyBmb3JtIGxheW91dCBhbmQgc3RhdGUgdG8gZGVzY2VuZGFudCBgPEZvcm1JdGVtPmAgY29tcG9uZW50cy4gKi9cbmV4cG9ydCBjb25zdCBGb3JtQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQobnVsbCk7XG4vKipcbiAqIEZvcm0gY29tcG9uZW50IHRoYXQgd3JhcHMgYHJlYWN0LWhvb2stZm9ybWAgd2l0aCBsYXlvdXQsIGNvbnRleHQgZGlzdHJpYnV0aW9uLFxuICogdmFsdWUtY2hhbmdlIHN1YnNjcmlwdGlvbnMsIGFuZCBzY3JvbGwtdG8tZXJyb3IgYmVoYXZpb3IuXG4gKlxuICogUmVuZGVycyBhIGA8Rm9ybVByb3ZpZGVyPmAgYW5kIG5hdGl2ZSBgPGZvcm0+YCBlbGVtZW50LiBBbGwgYDxGb3JtSXRlbT5gIGNoaWxkcmVuXG4gKiByZWNlaXZlIGZvcm0gbWV0aG9kcyBhbmQgbGF5b3V0IGNvbmZpZ3VyYXRpb24gdmlhIHtAbGluayBGb3JtQ29udGV4dH0uXG4gKlxuICogU3VwcG9ydHMgYm90aCBjb250cm9sbGVkIG1vZGUgKHBhc3MgYW4gZXh0ZXJuYWwgYGZvcm1gIGluc3RhbmNlKSBhbmQgdW5jb250cm9sbGVkXG4gKiBtb2RlIChpbnRlcm5hbCBgdXNlRm9ybWAgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5KS5cbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIHNoYXBlIG9mIHRoZSBmb3JtIHZhbHVlcy5cbiAqIEBwYXJhbSBwcm9wcyAtIHtAbGluayBGb3JtUHJvcHN9XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogPEZvcm0gZGVmYXVsdFZhbHVlcz17eyBuYW1lOiAnJyB9fSBvbkZpbmlzaD17KHZhbHVlcykgPT4gc2F2ZSh2YWx1ZXMpfT5cbiAqICAgPEZvcm1JdGVtIG5hbWU9XCJuYW1lXCIgbGFiZWw9XCJOYW1lXCIgcnVsZXM9e3sgcmVxdWlyZWQ6IHRydWUgfX0+XG4gKiAgICAgPElucHV0IC8+XG4gKiAgIDwvRm9ybUl0ZW0+XG4gKiA8L0Zvcm0+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZvcm0ocHJvcHMpIHtcbiAgICAvLyBGb3JtIGlzIGEgdGhpbiB3cmFwcGVyIG92ZXIgcmVhY3QtaG9vay1mb3JtIHdpdGggbGF5b3V0ICsgVVggaGVscGVycy5cbiAgICBjb25zdCB7IGZvcm0sIGRlZmF1bHRWYWx1ZXMsIG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25WYWx1ZXNDaGFuZ2UsIHdhdGNoTmFtZXMsIHNjcm9sbFRvRmlyc3RFcnJvciwgbGF5b3V0ID0gREVGQVVMVF9MQVlPVVQsIGxhYmVsQWxpZ24gPSBERUZBVUxUX0xBQkVMX0FMSUdOLCBsYWJlbENvbCA9IERFRkFVTFRfTEFCRUxfQ09MLCB3cmFwcGVyQ29sID0gREVGQVVMVF9XUkFQUEVSX0NPTCwgc2l6ZSA9IERFRkFVTFRfU0laRSwgZGlzYWJsZWQsIGNvbG9uID0gdHJ1ZSwgcmVxdWlyZWRNYXJrID0gdHJ1ZSwgY2xhc3NOYW1lLCBzdHlsZSwgY2hpbGRyZW4gfSA9IHByb3BzLCB1c2VGb3JtUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcImZvcm1cIiwgXCJkZWZhdWx0VmFsdWVzXCIsIFwib25GaW5pc2hcIiwgXCJvbkZpbmlzaEZhaWxlZFwiLCBcIm9uVmFsdWVzQ2hhbmdlXCIsIFwid2F0Y2hOYW1lc1wiLCBcInNjcm9sbFRvRmlyc3RFcnJvclwiLCBcImxheW91dFwiLCBcImxhYmVsQWxpZ25cIiwgXCJsYWJlbENvbFwiLCBcIndyYXBwZXJDb2xcIiwgXCJzaXplXCIsIFwiZGlzYWJsZWRcIiwgXCJjb2xvblwiLCBcInJlcXVpcmVkTWFya1wiLCBcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwiY2hpbGRyZW5cIl0pO1xuICAgIC8vIEFsd2F5cyBjcmVhdGUgYW4gaW50ZXJuYWwgZm9ybSB0byBrZWVwIGhvb2sgb3JkZXJpbmcgc3RhYmxlLlxuICAgIC8vIFdoZW4gYW4gZXh0ZXJuYWwgYGZvcm1gIGlzIHBhc3NlZCB2aWEgdGhlIGBmb3JtYCBwcm9wLCB0aGlzIGluc3RhbmNlIGlzXG4gICAgLy8gdW51c2VkIGJ1dCBtdXN0IHJlbWFpbiBzbyB0aGF0IFJlYWN0J3MgaG9vayBjYWxsIG9yZGVyIGlzIGNvbnNpc3RlbnRcbiAgICAvLyBhY3Jvc3MgcmVuZGVycy4gV2UgcGFzcyBgc2hvdWxkVW5yZWdpc3RlcjogdHJ1ZWAgdG8gbWluaW1pemUgb3ZlcmhlYWRcbiAgICAvLyBvZiB0aGUgdW51c2VkIGZvcm0gaW5zdGFuY2UuXG4gICAgY29uc3QgaW50ZXJuYWxNZXRob2RzID0gdXNlRm9ybShPYmplY3QuYXNzaWduKHsgZGVmYXVsdFZhbHVlcywgc2hvdWxkVW5yZWdpc3RlcjogdHJ1ZSB9LCB1c2VGb3JtUHJvcHMpKTtcbiAgICAvLyBVc2UgcHJvdmlkZWQgZm9ybSBtZXRob2RzIHdoZW4gY29udHJvbGxlZDsgb3RoZXJ3aXNlIHVzZSBpbnRlcm5hbCBmb3JtIHN0YXRlLlxuICAgIGNvbnN0IG1ldGhvZHMgPSBmb3JtICE9PSBudWxsICYmIGZvcm0gIT09IHZvaWQgMCA/IGZvcm0gOiBpbnRlcm5hbE1ldGhvZHM7XG4gICAgY29uc3QgdmFsdWVzQ2hhbmdlUmVmID0gdXNlTGF0ZXN0KG9uVmFsdWVzQ2hhbmdlKTtcbiAgICBjb25zdCB3YXRjaE5hbWVzUmVmID0gdXNlTGF0ZXN0KCh3YXRjaE5hbWVzID09PSBudWxsIHx8IHdhdGNoTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHdhdGNoTmFtZXMubGVuZ3RoKSA/IG5ldyBTZXQod2F0Y2hOYW1lcykgOiBudWxsKTtcbiAgICAvLyBQcm92aWRlIGxheW91dCArIGRpc2FibGVkIHN0YXRlICsgZm9ybSBtZXRob2RzIHRvIEZvcm1JdGVtIHZpYSBjb250ZXh0LlxuICAgIGNvbnN0IGN0eCA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgbGF5b3V0LFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBsYWJlbENvbCxcbiAgICAgICAgd3JhcHBlckNvbCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIG1ldGhvZHM6IG1ldGhvZHMsXG4gICAgfSksIFtsYXlvdXQsIGxhYmVsQWxpZ24sIGxhYmVsQ29sLCB3cmFwcGVyQ29sLCBzaXplLCBkaXNhYmxlZCwgY29sb24sIHJlcXVpcmVkTWFyaywgbWV0aG9kc10pO1xuICAgIC8vIFN1YnNjcmliZSB0byBhbGwgdmFsdWUgY2hhbmdlcyB3aGVuIGhhbmRsZXIgcHJvdmlkZWQuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFvblZhbHVlc0NoYW5nZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gbWV0aG9kcy53YXRjaCgodmFsdWVzLCBpbmZvKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB3YXRjaFNldCA9IHdhdGNoTmFtZXNSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICh3YXRjaFNldCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBpbmZvLm5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKCFuYW1lIHx8ICF3YXRjaFNldC5oYXMobmFtZSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChfYSA9IHZhbHVlc0NoYW5nZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh2YWx1ZXNDaGFuZ2VSZWYsIHZhbHVlcywgeyBuYW1lOiBpbmZvLm5hbWUsIHR5cGU6IGluZm8udHlwZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgLy8gYHZhbHVlc0NoYW5nZVJlZmAgYW5kIGB3YXRjaE5hbWVzUmVmYCBhcmUgc3RhYmxlIHJlZnMgYWNjZXNzZWQgdmlhIGAuY3VycmVudGBcbiAgICAgICAgLy8gc28gdGhleSBkbyBub3QgbmVlZCB0byBiZSBpbiB0aGUgZGVwZW5kZW5jeSBhcnJheS5cbiAgICB9LCBbbWV0aG9kcywgb25WYWx1ZXNDaGFuZ2VdKTtcbiAgICAvLyBTdWJtaXQgc3VjY2VzcyBoYW5kbGVyLlxuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB5aWVsZCAob25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKHZhbHVlcykpO1xuICAgIH0pKTtcbiAgICAvLyBTdWJtaXQgZmFpbHVyZSBoYW5kbGVyIHdpdGggb3B0aW9uYWwgc2Nyb2xsLXRvLWVycm9yLlxuICAgIGNvbnN0IGhhbmRsZUZpbmlzaEZhaWxlZCA9IHVzZU1lbW9pemVkRm4oKGVycm9ycykgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChzY3JvbGxUb0ZpcnN0RXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gZ2V0Rmlyc3RFcnJvclBhdGgoZXJyb3JzKTtcbiAgICAgICAgICAgIGlmIChmaXJzdCkge1xuICAgICAgICAgICAgICAgIChfYSA9IG1ldGhvZHMuc2V0Rm9jdXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG1ldGhvZHMsIGZpcnN0KTtcbiAgICAgICAgICAgICAgICBzY3JvbGxUb0ZpZWxkKGZpcnN0LCBzY3JvbGxUb0ZpcnN0RXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZChlcnJvcnMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKCdmb3JtJyk7XG4gICAgcmV0dXJuIChfanN4KEZvcm1Qcm92aWRlciwgT2JqZWN0LmFzc2lnbih7fSwgbWV0aG9kcywgeyBjaGlsZHJlbjogX2pzeChGb3JtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY3R4LCBjaGlsZHJlbjogX2pzeChcImZvcm1cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3Jvb3QnLCBqb2luQ2xzKGNsYXNzTmFtZSwgY2xhc3NlcyhgbGF5b3V0LSR7bGF5b3V0fWApLCBjbGFzc2VzKGBzaXplLSR7c2l6ZX1gKSwgbGFiZWxBbGlnbiA9PT0gJ2xlZnQnICYmIGNsYXNzZXMoJ2xhYmVsLWxlZnQnKSkpLCBzdHlsZTogc3R5bGUsIG9uU3VibWl0OiBtZXRob2RzLmhhbmRsZVN1Ym1pdChoYW5kbGVGaW5pc2gsIGhhbmRsZUZpbmlzaEZhaWxlZCksIG5vVmFsaWRhdGU6IHRydWUsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSB9KSB9KSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,4 @@
1
+ import type { FieldValues } from 'react-hook-form';
2
+ import type { FormItemProps } from './interface';
3
+ export declare function FormItem<TFieldValues extends FieldValues = FieldValues>(props: FormItemProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
4
+ export default FormItem;
@@ -0,0 +1,165 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useContext, useMemo } from 'react';
4
+ import { default as classnames, joinCls } from '../../utils/classnames';
5
+ import Typography from '../Typography';
6
+ import { FormContext } from './Form';
7
+ import { CSS_VAR_LABEL_WIDTH, CSS_VAR_WRAPPER_WIDTH, DEFAULT_VALUE_PROP } from './constants';
8
+ import { toPercent, wrapValidate } from './helper';
9
+ import { FormItemContent } from './FormItemContent';
10
+ import { FallbackFormProvider, useFormItemContext } from './useFormItemContext';
11
+ import { useFormItemWatch } from './useFormItemWatch';
12
+ import { useValidationTrigger } from './useValidationTrigger';
13
+ /**
14
+ * Runtime type guard for render-prop children.
15
+ */
16
+ var isRenderFnChild = function isRenderFnChild(child) {
17
+ return typeof child === 'function';
18
+ };
19
+ /**
20
+ * Form field wrapper that bridges `react-hook-form`'s Controller with the Form
21
+ * layout system, validation status display, and configurable trigger behavior.
22
+ *
23
+ * When a `name` is provided, the field is registered with `react-hook-form` via
24
+ * a `Controller` and supports validation rules, dependencies, and status feedback.
25
+ * Without a `name`, it renders as a free wrapper for uncontrolled content.
26
+ *
27
+ * Supports two child patterns:
28
+ * - **React element**: automatically bound via `React.cloneElement` with value/onChange/onBlur.
29
+ * - **Render-prop function**: receives `{ field, fieldState, form, values }` for full control.
30
+ *
31
+ * @template TFieldValues - The shape of the form values.
32
+ * @param props - {@link FormItemProps}
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * // Element child (auto-bound)
37
+ * <FormItem name="email" label="Email" rules={{ required: true }}>
38
+ * <Input placeholder="Enter email" />
39
+ * </FormItem>
40
+ *
41
+ * // Render-prop child
42
+ * <FormItem name="agree">
43
+ * {({ field }) => <Checkbox {...field} />}
44
+ * </FormItem>
45
+ * ```
46
+ */
47
+ function FormItemInner(props) {
48
+ var name = props.name,
49
+ label = props.label,
50
+ required = props.required,
51
+ rules = props.rules,
52
+ defaultValue = props.defaultValue,
53
+ help = props.help,
54
+ extra = props.extra,
55
+ validateStatus = props.validateStatus,
56
+ dependencies = props.dependencies,
57
+ watchNames = props.watchNames,
58
+ shouldUpdate = props.shouldUpdate,
59
+ validateTrigger = props.validateTrigger,
60
+ validateFirst = props.validateFirst,
61
+ validateDebounce = props.validateDebounce,
62
+ noStyle = props.noStyle,
63
+ _props$valuePropName = props.valuePropName,
64
+ valuePropName = _props$valuePropName === void 0 ? DEFAULT_VALUE_PROP : _props$valuePropName,
65
+ className = props.className,
66
+ labelCol = props.labelCol,
67
+ wrapperCol = props.wrapperCol,
68
+ children = props.children;
69
+ var classes = classnames('form-item');
70
+ var _useFormItemContext = useFormItemContext(name),
71
+ ctx = _useFormItemContext.ctx,
72
+ methods = _useFormItemContext.methods,
73
+ control = _useFormItemContext.control,
74
+ trigger = _useFormItemContext.trigger;
75
+ var _useFormItemWatch = useFormItemWatch({
76
+ control: control,
77
+ methods: methods,
78
+ dependencies: dependencies,
79
+ watchNames: watchNames,
80
+ shouldUpdate: shouldUpdate,
81
+ name: name
82
+ }),
83
+ allValues = _useFormItemWatch.allValues,
84
+ depValues = _useFormItemWatch.depValues,
85
+ shouldRender = _useFormItemWatch.shouldRender;
86
+ var _useValidationTrigger = useValidationTrigger({
87
+ name: name,
88
+ trigger: trigger,
89
+ validateTrigger: validateTrigger,
90
+ validateDebounce: validateDebounce,
91
+ dependencies: dependencies,
92
+ depValues: depValues
93
+ }),
94
+ withTrigger = _useValidationTrigger.withTrigger;
95
+ var renderFn = isRenderFnChild(children) ? children : null;
96
+ var isRequired = required !== null && required !== void 0 ? required : !!(rules === null || rules === void 0 ? void 0 : rules.required);
97
+ var showRequired = (ctx === null || ctx === void 0 ? void 0 : ctx.requiredMark) !== false;
98
+ var labelWidth = useMemo(function () {
99
+ return toPercent(labelCol !== null && labelCol !== void 0 ? labelCol : ctx === null || ctx === void 0 ? void 0 : ctx.labelCol);
100
+ }, [labelCol, ctx === null || ctx === void 0 ? void 0 : ctx.labelCol]);
101
+ var wrapperWidth = useMemo(function () {
102
+ return toPercent(wrapperCol !== null && wrapperCol !== void 0 ? wrapperCol : ctx === null || ctx === void 0 ? void 0 : ctx.wrapperCol);
103
+ }, [wrapperCol, ctx === null || ctx === void 0 ? void 0 : ctx.wrapperCol]);
104
+ var mergedRules = useMemo(function () {
105
+ if (!(rules === null || rules === void 0 ? void 0 : rules.validate) || !validateFirst) return rules;
106
+ var validate = wrapValidate(rules.validate, validateFirst);
107
+ if (validate === rules.validate) return rules;
108
+ return Object.assign(Object.assign({}, rules), {
109
+ validate: validate
110
+ });
111
+ }, [rules, validateFirst]);
112
+ var contentProps = useMemo(function () {
113
+ return {
114
+ name: name,
115
+ control: control,
116
+ methods: methods,
117
+ rules: mergedRules,
118
+ defaultValue: defaultValue,
119
+ validateStatus: validateStatus,
120
+ valuePropName: valuePropName,
121
+ help: help,
122
+ extra: extra,
123
+ ctx: ctx,
124
+ children: children,
125
+ renderFn: renderFn,
126
+ allValues: allValues,
127
+ shouldUpdate: shouldUpdate,
128
+ shouldRender: shouldRender,
129
+ withTrigger: withTrigger
130
+ };
131
+ }, [name, control, methods, mergedRules, defaultValue, validateStatus, valuePropName, help, extra, ctx, children, renderFn, allValues, shouldUpdate, shouldRender, withTrigger]);
132
+ if (noStyle) {
133
+ return _jsx(FormItemContent, Object.assign({}, contentProps));
134
+ }
135
+ var rootStyle = _defineProperty(_defineProperty({}, CSS_VAR_LABEL_WIDTH, labelWidth), CSS_VAR_WRAPPER_WIDTH, wrapperWidth);
136
+ return _jsxs("div", {
137
+ className: classes('root', joinCls(className, (ctx === null || ctx === void 0 ? void 0 : ctx.layout) && classes("layout-".concat(ctx.layout)))),
138
+ "data-form-item-name": name ? String(name) : undefined,
139
+ style: rootStyle,
140
+ children: [label && _jsxs("div", {
141
+ className: classes('label', joinCls(showRequired && isRequired && classes('label-required'))),
142
+ children: [_jsx(Typography.Label, {
143
+ size: 's',
144
+ children: label
145
+ }), (ctx === null || ctx === void 0 ? void 0 : ctx.colon) && _jsx("span", {
146
+ className: classes('colon'),
147
+ children: ":"
148
+ })]
149
+ }), _jsx("div", {
150
+ className: classes('control'),
151
+ children: _jsx(FormItemContent, Object.assign({}, contentProps))
152
+ })]
153
+ });
154
+ }
155
+ export function FormItem(props) {
156
+ var ctx = useContext(FormContext);
157
+ if (ctx === null || ctx === void 0 ? void 0 : ctx.methods) {
158
+ return _jsx(FormItemInner, Object.assign({}, props));
159
+ }
160
+ return _jsx(FallbackFormProvider, {
161
+ children: _jsx(FormItemInner, Object.assign({}, props))
162
+ });
163
+ }
164
+ export default FormItem;
165
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRm9ybS9Gb3JtSXRlbS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvRm9ybS9Gb3JtSXRlbS50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiVHlwb2dyYXBoeSIsIkZvcm1Db250ZXh0IiwiQ1NTX1ZBUl9MQUJFTF9XSURUSCIsIkNTU19WQVJfV1JBUFBFUl9XSURUSCIsIkRFRkFVTFRfVkFMVUVfUFJPUCIsInRvUGVyY2VudCIsIndyYXBWYWxpZGF0ZSIsIkZvcm1JdGVtQ29udGVudCIsIkZhbGxiYWNrRm9ybVByb3ZpZGVyIiwidXNlRm9ybUl0ZW1Db250ZXh0IiwidXNlRm9ybUl0ZW1XYXRjaCIsInVzZVZhbGlkYXRpb25UcmlnZ2VyIiwiaXNSZW5kZXJGbkNoaWxkIiwiY2hpbGQiLCJGb3JtSXRlbUlubmVyIiwicHJvcHMiLCJuYW1lIiwibGFiZWwiLCJyZXF1aXJlZCIsInJ1bGVzIiwiZGVmYXVsdFZhbHVlIiwiaGVscCIsImV4dHJhIiwidmFsaWRhdGVTdGF0dXMiLCJkZXBlbmRlbmNpZXMiLCJ3YXRjaE5hbWVzIiwic2hvdWxkVXBkYXRlIiwidmFsaWRhdGVUcmlnZ2VyIiwidmFsaWRhdGVGaXJzdCIsInZhbGlkYXRlRGVib3VuY2UiLCJub1N0eWxlIiwiX3Byb3BzJHZhbHVlUHJvcE5hbWUiLCJ2YWx1ZVByb3BOYW1lIiwiY2xhc3NOYW1lIiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwiY2hpbGRyZW4iLCJjbGFzc2VzIiwiX3VzZUZvcm1JdGVtQ29udGV4dCIsImN0eCIsIm1ldGhvZHMiLCJjb250cm9sIiwidHJpZ2dlciIsIl91c2VGb3JtSXRlbVdhdGNoIiwiYWxsVmFsdWVzIiwiZGVwVmFsdWVzIiwic2hvdWxkUmVuZGVyIiwiX3VzZVZhbGlkYXRpb25UcmlnZ2VyIiwid2l0aFRyaWdnZXIiLCJyZW5kZXJGbiIsImlzUmVxdWlyZWQiLCJzaG93UmVxdWlyZWQiLCJyZXF1aXJlZE1hcmsiLCJsYWJlbFdpZHRoIiwid3JhcHBlcldpZHRoIiwibWVyZ2VkUnVsZXMiLCJ2YWxpZGF0ZSIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRlbnRQcm9wcyIsInJvb3RTdHlsZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImxheW91dCIsImNvbmNhdCIsIlN0cmluZyIsInVuZGVmaW5lZCIsInN0eWxlIiwiTGFiZWwiLCJzaXplIiwiY29sb24iLCJGb3JtSXRlbSJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssUUFBUSxtQkFBbUI7QUNBOUQsU0FBU0MsVUFBVSxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUMzQyxTQUFTQyxPQUFPLElBQUlDLFVBQVUsRUFBRUMsT0FBTyxRQUFRLHdCQUF3QjtBQUN2RSxPQUFPQyxVQUFVLE1BQU0sZUFBZTtBQUV0QyxTQUFTQyxXQUFXLFFBQVEsUUFBUTtBQUNwQyxTQUFTQyxtQkFBbUIsRUFBRUMscUJBQXFCLEVBQUVDLGtCQUFrQixRQUFRLGFBQWE7QUFDNUYsU0FBU0MsU0FBUyxFQUFFQyxZQUFZLFFBQVEsVUFBVTtBQUNsRCxTQUFTQyxlQUFlLFFBQVEsbUJBQW1CO0FBQ25ELFNBQVNDLG9CQUFvQixFQUFFQyxrQkFBa0IsUUFBUSxzQkFBc0I7QUFDL0UsU0FBU0MsZ0JBQWdCLFFBQVEsb0JBQW9CO0FBQ3JELFNBQVNDLG9CQUFvQixRQUFRLHdCQUF3QjtBQUc3RDtBRERBO0FBQ0E7QUNHQSxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQ25CQyxLQUE4QztFQUFBLE9BQ0YsT0FBT0EsS0FBSyxLQUFLLFVBQVU7QUFBQTtBQUV6RTtBREpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFBLElBQUhBLEdBQUcsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBSEEsR0FBRyxDQUFFOEIsS0FBSyxLQUFJN0UsSUFBQSxDQUFBLE1BQUEsRUFBQTtRQUFNeUMsU0FBUyxFQUFFSSxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQUFELFFBQUEsRUFBQTtNQUFBLENBQUEsQ0FBVTtJQUFBLENBQUEsQ0FFN0QsRUFDRDVDLElBQUEsQ0FBQSxLQUFBLEVBQUE7TUFBS3lDLFNBQVMsRUFBRUksT0FBTyxDQUFDLFNBQVMsQ0FBQztNQUFBRCxRQUFBLEVBQ2hDNUMsSUFBQSxDQUFDZSxlQUFlLEVBQUFrRCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBS0MsWUFBWSxDQUFBO0lBQUksQ0FBQSxDQUNqQztFQUFBLENBQUEsQ0FDRjtBQUVWO0FBRUEsT0FBTSxTQUFVVyxRQUFRQSxDQUFpRHZELEtBQWtDLEVBQUE7RUFDekcsSUFBTXdCLEdBQUcsR0FBRzVDLFVBQVUsQ0FBQ00sV0FBVyxDQUFDO0VBRW5DLElBQUlzQyxHQUFHLEtBQUEsSUFBQSxJQUFIQSxHQUFHLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUhBLEdBQUcsQ0FBRUMsT0FBTyxFQUFFO0lBQ2hCLE9BQU9oRCxJQUFBLENBQUNzQixhQUFhLEVBQUEyQyxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBSzNDLEtBQUssQ0FBQSxDQUFJO0VBQ3JDO0VBRUEsT0FDRXZCLElBQUEsQ0FBQ2dCLG9CQUFvQixFQUFBO0lBQUE0QixRQUFBLEVBQ25CNUMsSUFBQSxDQUFDc0IsYUFBYSxFQUFBMkMsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUszQyxLQUFLLENBQUE7RUFBSSxDQUFBLENBQ1A7QUFFM0I7QUFFQSxlQUFldUQsUUFBUSIsImZpbGUiOiJjb21wb25lbnRzL0Zvcm0vRm9ybUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBGb3JtQ29udGV4dCB9IGZyb20gJy4vRm9ybSc7XG5pbXBvcnQgeyBDU1NfVkFSX0xBQkVMX1dJRFRILCBDU1NfVkFSX1dSQVBQRVJfV0lEVEgsIERFRkFVTFRfVkFMVUVfUFJPUCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHRvUGVyY2VudCwgd3JhcFZhbGlkYXRlIH0gZnJvbSAnLi9oZWxwZXInO1xuaW1wb3J0IHsgRm9ybUl0ZW1Db250ZW50IH0gZnJvbSAnLi9Gb3JtSXRlbUNvbnRlbnQnO1xuaW1wb3J0IHsgRmFsbGJhY2tGb3JtUHJvdmlkZXIsIHVzZUZvcm1JdGVtQ29udGV4dCB9IGZyb20gJy4vdXNlRm9ybUl0ZW1Db250ZXh0JztcbmltcG9ydCB7IHVzZUZvcm1JdGVtV2F0Y2ggfSBmcm9tICcuL3VzZUZvcm1JdGVtV2F0Y2gnO1xuaW1wb3J0IHsgdXNlVmFsaWRhdGlvblRyaWdnZXIgfSBmcm9tICcuL3VzZVZhbGlkYXRpb25UcmlnZ2VyJztcbi8qKlxuICogUnVudGltZSB0eXBlIGd1YXJkIGZvciByZW5kZXItcHJvcCBjaGlsZHJlbi5cbiAqL1xuY29uc3QgaXNSZW5kZXJGbkNoaWxkID0gKGNoaWxkKSA9PiB0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbic7XG4vKipcbiAqIEZvcm0gZmllbGQgd3JhcHBlciB0aGF0IGJyaWRnZXMgYHJlYWN0LWhvb2stZm9ybWAncyBDb250cm9sbGVyIHdpdGggdGhlIEZvcm1cbiAqIGxheW91dCBzeXN0ZW0sIHZhbGlkYXRpb24gc3RhdHVzIGRpc3BsYXksIGFuZCBjb25maWd1cmFibGUgdHJpZ2dlciBiZWhhdmlvci5cbiAqXG4gKiBXaGVuIGEgYG5hbWVgIGlzIHByb3ZpZGVkLCB0aGUgZmllbGQgaXMgcmVnaXN0ZXJlZCB3aXRoIGByZWFjdC1ob29rLWZvcm1gIHZpYVxuICogYSBgQ29udHJvbGxlcmAgYW5kIHN1cHBvcnRzIHZhbGlkYXRpb24gcnVsZXMsIGRlcGVuZGVuY2llcywgYW5kIHN0YXR1cyBmZWVkYmFjay5cbiAqIFdpdGhvdXQgYSBgbmFtZWAsIGl0IHJlbmRlcnMgYXMgYSBmcmVlIHdyYXBwZXIgZm9yIHVuY29udHJvbGxlZCBjb250ZW50LlxuICpcbiAqIFN1cHBvcnRzIHR3byBjaGlsZCBwYXR0ZXJuczpcbiAqIC0gKipSZWFjdCBlbGVtZW50Kio6IGF1dG9tYXRpY2FsbHkgYm91bmQgdmlhIGBSZWFjdC5jbG9uZUVsZW1lbnRgIHdpdGggdmFsdWUvb25DaGFuZ2Uvb25CbHVyLlxuICogLSAqKlJlbmRlci1wcm9wIGZ1bmN0aW9uKio6IHJlY2VpdmVzIGB7IGZpZWxkLCBmaWVsZFN0YXRlLCBmb3JtLCB2YWx1ZXMgfWAgZm9yIGZ1bGwgY29udHJvbC5cbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIHNoYXBlIG9mIHRoZSBmb3JtIHZhbHVlcy5cbiAqIEBwYXJhbSBwcm9wcyAtIHtAbGluayBGb3JtSXRlbVByb3BzfVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIC8vIEVsZW1lbnQgY2hpbGQgKGF1dG8tYm91bmQpXG4gKiA8Rm9ybUl0ZW0gbmFtZT1cImVtYWlsXCIgbGFiZWw9XCJFbWFpbFwiIHJ1bGVzPXt7IHJlcXVpcmVkOiB0cnVlIH19PlxuICogICA8SW5wdXQgcGxhY2Vob2xkZXI9XCJFbnRlciBlbWFpbFwiIC8+XG4gKiA8L0Zvcm1JdGVtPlxuICpcbiAqIC8vIFJlbmRlci1wcm9wIGNoaWxkXG4gKiA8Rm9ybUl0ZW0gbmFtZT1cImFncmVlXCI+XG4gKiAgIHsoeyBmaWVsZCB9KSA9PiA8Q2hlY2tib3ggey4uLmZpZWxkfSAvPn1cbiAqIDwvRm9ybUl0ZW0+XG4gKiBgYGBcbiAqL1xuZnVuY3Rpb24gRm9ybUl0ZW1Jbm5lcihwcm9wcykge1xuICAgIGNvbnN0IHsgbmFtZSwgbGFiZWwsIHJlcXVpcmVkLCBydWxlcywgZGVmYXVsdFZhbHVlLCBoZWxwLCBleHRyYSwgdmFsaWRhdGVTdGF0dXMsIGRlcGVuZGVuY2llcywgd2F0Y2hOYW1lcywgc2hvdWxkVXBkYXRlLCB2YWxpZGF0ZVRyaWdnZXIsIHZhbGlkYXRlRmlyc3QsIHZhbGlkYXRlRGVib3VuY2UsIG5vU3R5bGUsIHZhbHVlUHJvcE5hbWUgPSBERUZBVUxUX1ZBTFVFX1BST1AsIGNsYXNzTmFtZSwgbGFiZWxDb2wsIHdyYXBwZXJDb2wsIGNoaWxkcmVuLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoJ2Zvcm0taXRlbScpO1xuICAgIGNvbnN0IHsgY3R4LCBtZXRob2RzLCBjb250cm9sLCB0cmlnZ2VyIH0gPSB1c2VGb3JtSXRlbUNvbnRleHQobmFtZSk7XG4gICAgY29uc3QgeyBhbGxWYWx1ZXMsIGRlcFZhbHVlcywgc2hvdWxkUmVuZGVyIH0gPSB1c2VGb3JtSXRlbVdhdGNoKHtcbiAgICAgICAgY29udHJvbCxcbiAgICAgICAgbWV0aG9kcyxcbiAgICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgICB3YXRjaE5hbWVzLFxuICAgICAgICBzaG91bGRVcGRhdGUsXG4gICAgICAgIG5hbWUsXG4gICAgfSk7XG4gICAgY29uc3QgeyB3aXRoVHJpZ2dlciB9ID0gdXNlVmFsaWRhdGlvblRyaWdnZXIoe1xuICAgICAgICBuYW1lLFxuICAgICAgICB0cmlnZ2VyLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgICAgIHZhbGlkYXRlRGVib3VuY2UsXG4gICAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgICAgZGVwVmFsdWVzLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlbmRlckZuID0gaXNSZW5kZXJGbkNoaWxkKGNoaWxkcmVuKSA/IGNoaWxkcmVuIDogbnVsbDtcbiAgICBjb25zdCBpc1JlcXVpcmVkID0gcmVxdWlyZWQgIT09IG51bGwgJiYgcmVxdWlyZWQgIT09IHZvaWQgMCA/IHJlcXVpcmVkIDogISEocnVsZXMgPT09IG51bGwgfHwgcnVsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJ1bGVzLnJlcXVpcmVkKTtcbiAgICBjb25zdCBzaG93UmVxdWlyZWQgPSAoY3R4ID09PSBudWxsIHx8IGN0eCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3R4LnJlcXVpcmVkTWFyaykgIT09IGZhbHNlO1xuICAgIGNvbnN0IGxhYmVsV2lkdGggPSB1c2VNZW1vKCgpID0+IHRvUGVyY2VudChsYWJlbENvbCAhPT0gbnVsbCAmJiBsYWJlbENvbCAhPT0gdm9pZCAwID8gbGFiZWxDb2wgOiBjdHggPT09IG51bGwgfHwgY3R4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdHgubGFiZWxDb2wpLCBbbGFiZWxDb2wsIGN0eCA9PT0gbnVsbCB8fCBjdHggPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN0eC5sYWJlbENvbF0pO1xuICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHVzZU1lbW8oKCkgPT4gdG9QZXJjZW50KHdyYXBwZXJDb2wgIT09IG51bGwgJiYgd3JhcHBlckNvbCAhPT0gdm9pZCAwID8gd3JhcHBlckNvbCA6IGN0eCA9PT0gbnVsbCB8fCBjdHggPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN0eC53cmFwcGVyQ29sKSwgW3dyYXBwZXJDb2wsIGN0eCA9PT0gbnVsbCB8fCBjdHggPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN0eC53cmFwcGVyQ29sXSk7XG4gICAgY29uc3QgbWVyZ2VkUnVsZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKCEocnVsZXMgPT09IG51bGwgfHwgcnVsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJ1bGVzLnZhbGlkYXRlKSB8fCAhdmFsaWRhdGVGaXJzdClcbiAgICAgICAgICAgIHJldHVybiBydWxlcztcbiAgICAgICAgY29uc3QgdmFsaWRhdGUgPSB3cmFwVmFsaWRhdGUocnVsZXMudmFsaWRhdGUsIHZhbGlkYXRlRmlyc3QpO1xuICAgICAgICBpZiAodmFsaWRhdGUgPT09IHJ1bGVzLnZhbGlkYXRlKVxuICAgICAgICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBydWxlcyksIHsgdmFsaWRhdGUgfSk7XG4gICAgfSwgW3J1bGVzLCB2YWxpZGF0ZUZpcnN0XSk7XG4gICAgY29uc3QgY29udGVudFByb3BzID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBuYW1lLFxuICAgICAgICBjb250cm9sLFxuICAgICAgICBtZXRob2RzLFxuICAgICAgICBydWxlczogbWVyZ2VkUnVsZXMsXG4gICAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVTdGF0dXMsXG4gICAgICAgIHZhbHVlUHJvcE5hbWUsXG4gICAgICAgIGhlbHAsXG4gICAgICAgIGV4dHJhLFxuICAgICAgICBjdHgsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICByZW5kZXJGbixcbiAgICAgICAgYWxsVmFsdWVzLFxuICAgICAgICBzaG91bGRVcGRhdGUsXG4gICAgICAgIHNob3VsZFJlbmRlcixcbiAgICAgICAgd2l0aFRyaWdnZXIsXG4gICAgfSksIFtcbiAgICAgICAgbmFtZSwgY29udHJvbCwgbWV0aG9kcywgbWVyZ2VkUnVsZXMsIGRlZmF1bHRWYWx1ZSwgdmFsaWRhdGVTdGF0dXMsXG4gICAgICAgIHZhbHVlUHJvcE5hbWUsIGhlbHAsIGV4dHJhLCBjdHgsIGNoaWxkcmVuLCByZW5kZXJGbiwgYWxsVmFsdWVzLFxuICAgICAgICBzaG91bGRVcGRhdGUsIHNob3VsZFJlbmRlciwgd2l0aFRyaWdnZXIsXG4gICAgXSk7XG4gICAgaWYgKG5vU3R5bGUpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goRm9ybUl0ZW1Db250ZW50LCBPYmplY3QuYXNzaWduKHt9LCBjb250ZW50UHJvcHMpKTtcbiAgICB9XG4gICAgY29uc3Qgcm9vdFN0eWxlID0ge1xuICAgICAgICBbQ1NTX1ZBUl9MQUJFTF9XSURUSF06IGxhYmVsV2lkdGgsXG4gICAgICAgIFtDU1NfVkFSX1dSQVBQRVJfV0lEVEhdOiB3cmFwcGVyV2lkdGgsXG4gICAgfTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdyb290Jywgam9pbkNscyhjbGFzc05hbWUsIChjdHggPT09IG51bGwgfHwgY3R4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdHgubGF5b3V0KSAmJiBjbGFzc2VzKGBsYXlvdXQtJHtjdHgubGF5b3V0fWApKSksIFwiZGF0YS1mb3JtLWl0ZW0tbmFtZVwiOiBuYW1lID8gU3RyaW5nKG5hbWUpIDogdW5kZWZpbmVkLCBzdHlsZTogcm9vdFN0eWxlLCBjaGlsZHJlbjogW2xhYmVsICYmIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnLCBqb2luQ2xzKHNob3dSZXF1aXJlZCAmJiBpc1JlcXVpcmVkICYmIGNsYXNzZXMoJ2xhYmVsLXJlcXVpcmVkJykpKSwgY2hpbGRyZW46IFtfanN4KFR5cG9ncmFwaHkuTGFiZWwsIHsgc2l6ZTogJ3MnLCBjaGlsZHJlbjogbGFiZWwgfSksIChjdHggPT09IG51bGwgfHwgY3R4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdHguY29sb24pICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb2xvbicpLCBjaGlsZHJlbjogXCI6XCIgfSldIH0pKSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udHJvbCcpLCBjaGlsZHJlbjogX2pzeChGb3JtSXRlbUNvbnRlbnQsIE9iamVjdC5hc3NpZ24oe30sIGNvbnRlbnRQcm9wcykpIH0pXSB9KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gRm9ybUl0ZW0ocHJvcHMpIHtcbiAgICBjb25zdCBjdHggPSB1c2VDb250ZXh0KEZvcm1Db250ZXh0KTtcbiAgICBpZiAoY3R4ID09PSBudWxsIHx8IGN0eCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3R4Lm1ldGhvZHMpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goRm9ybUl0ZW1Jbm5lciwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4KEZhbGxiYWNrRm9ybVByb3ZpZGVyLCB7IGNoaWxkcmVuOiBfanN4KEZvcm1JdGVtSW5uZXIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSkgfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgRm9ybUl0ZW07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,18 @@
1
+ import type { FieldValues } from 'react-hook-form';
2
+ import type { FormItemContentProps } from './interface';
3
+ /**
4
+ * Renders the inner content of a `<FormItem>`.
5
+ *
6
+ * Handles two branches:
7
+ * - **Free branch** (no `name`): renders children directly or via a render-prop,
8
+ * optionally gated by `shouldUpdate`.
9
+ * - **Controlled branch** (has `name`): wraps children in a `react-hook-form`
10
+ * `Controller`, injecting field bindings and validation-trigger wrappers.
11
+ *
12
+ * Both branches render their output inside a {@link MetaWrapper} for consistent
13
+ * help/error/extra display.
14
+ *
15
+ * @template TFieldValues - The shape of the form values.
16
+ * @param props - {@link FormItemContentProps}
17
+ */
18
+ export declare function FormItemContent<TFieldValues extends FieldValues = FieldValues>({ name, control, methods, rules, defaultValue, validateStatus, valuePropName, help, extra, ctx, children, renderFn, allValues, shouldUpdate, shouldRender, withTrigger, }: FormItemContentProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;