@1money/react-ui 1.15.3 → 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 (378) 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/Flex/Flex.d.ts +5 -0
  7. package/es/components/Flex/Flex.js +50 -0
  8. package/es/components/Flex/constants.d.ts +41 -0
  9. package/es/components/Flex/constants.js +45 -0
  10. package/es/components/Flex/index.d.ts +5 -0
  11. package/es/components/Flex/index.js +6 -0
  12. package/es/components/Flex/interface.d.ts +13 -0
  13. package/es/components/Flex/interface.js +2 -0
  14. package/es/components/Flex/style/Flex.css +1 -0
  15. package/es/components/Flex/style/Flex.scss +70 -0
  16. package/es/components/Flex/style/css.js +2 -0
  17. package/es/components/Flex/style/index.d.ts +1 -0
  18. package/es/components/Flex/style/index.js +2 -0
  19. package/es/components/Form/Form.d.ts +29 -0
  20. package/es/components/Form/Form.js +188 -0
  21. package/es/components/Form/FormItem.d.ts +4 -0
  22. package/es/components/Form/FormItem.js +165 -0
  23. package/es/components/Form/FormItemContent.d.ts +18 -0
  24. package/es/components/Form/FormItemContent.js +146 -0
  25. package/es/components/Form/constants.d.ts +46 -0
  26. package/es/components/Form/constants.js +65 -0
  27. package/es/components/Form/helper.d.ts +120 -0
  28. package/es/components/Form/helper.js +284 -0
  29. package/es/components/Form/index.d.ts +20 -0
  30. package/es/components/Form/index.js +21 -0
  31. package/es/components/Form/interface.d.ts +238 -0
  32. package/es/components/Form/interface.js +2 -0
  33. package/es/components/Form/style/Form.css +1 -0
  34. package/es/components/Form/style/Form.scss +167 -0
  35. package/es/components/Form/style/css.js +2 -0
  36. package/es/components/Form/style/index.d.ts +1 -0
  37. package/es/components/Form/style/index.js +2 -0
  38. package/es/components/Form/useFormItemContext.d.ts +32 -0
  39. package/es/components/Form/useFormItemContext.js +55 -0
  40. package/es/components/Form/useFormItemWatch.d.ts +51 -0
  41. package/es/components/Form/useFormItemWatch.js +69 -0
  42. package/es/components/Form/useValidationTrigger.d.ts +40 -0
  43. package/es/components/Form/useValidationTrigger.js +74 -0
  44. package/es/components/Grid/Col.d.ts +5 -0
  45. package/es/components/Grid/Col.js +97 -0
  46. package/es/components/Grid/Grid.d.ts +12 -0
  47. package/es/components/Grid/Grid.js +12 -0
  48. package/es/components/Grid/Row.d.ts +5 -0
  49. package/es/components/Grid/Row.js +48 -0
  50. package/es/components/Grid/constants.d.ts +55 -0
  51. package/es/components/Grid/constants.js +66 -0
  52. package/es/components/Grid/helper.d.ts +10 -0
  53. package/es/components/Grid/helper.js +44 -0
  54. package/es/components/Grid/index.d.ts +7 -0
  55. package/es/components/Grid/index.js +8 -0
  56. package/es/components/Grid/interface.d.ts +38 -0
  57. package/es/components/Grid/interface.js +2 -0
  58. package/es/components/Grid/style/Grid.css +1 -0
  59. package/es/components/Grid/style/Grid.scss +196 -0
  60. package/es/components/Grid/style/css.js +2 -0
  61. package/es/components/Grid/style/index.d.ts +1 -0
  62. package/es/components/Grid/style/index.js +2 -0
  63. package/es/components/Input/Input.js +72 -74
  64. package/es/components/Input/interface.d.ts +9 -9
  65. package/es/components/InputAmount/InputAmount.js +228 -276
  66. package/es/components/InputAmount/helper.d.ts +46 -0
  67. package/es/components/InputAmount/helper.js +115 -0
  68. package/es/components/InputAmount/style/normal.css +1 -1
  69. package/es/components/InputAmount/style/normal.scss +2 -2
  70. package/es/components/InputAmount/style/primary.css +1 -1
  71. package/es/components/InputAmount/style/primary.scss +2 -2
  72. package/es/components/Message/style/Message.css +1 -1
  73. package/es/components/Message/style/Message.scss +3 -3
  74. package/es/components/ProForm/ProForm.d.ts +33 -0
  75. package/es/components/ProForm/ProForm.js +208 -0
  76. package/es/components/ProForm/ProFormDependency.d.ts +12 -0
  77. package/es/components/ProForm/ProFormDependency.js +61 -0
  78. package/es/components/ProForm/ProFormList.d.ts +19 -0
  79. package/es/components/ProForm/ProFormList.js +348 -0
  80. package/es/components/ProForm/Submitter.d.ts +21 -0
  81. package/es/components/ProForm/Submitter.js +76 -0
  82. package/es/components/ProForm/constants.d.ts +34 -0
  83. package/es/components/ProForm/constants.js +40 -0
  84. package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  85. package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
  86. package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  87. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
  88. package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  89. package/es/components/ProForm/fields/ProFormDigit.js +15 -0
  90. package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  91. package/es/components/ProForm/fields/ProFormMoney.js +10 -0
  92. package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  93. package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
  94. package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  95. package/es/components/ProForm/fields/ProFormPassword.js +16 -0
  96. package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  97. package/es/components/ProForm/fields/ProFormRadio.js +13 -0
  98. package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  99. package/es/components/ProForm/fields/ProFormSelect.js +13 -0
  100. package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  101. package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
  102. package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
  103. package/es/components/ProForm/fields/ProFormText.js +15 -0
  104. package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  105. package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
  106. package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
  107. package/es/components/ProForm/fields/createProFormField.js +200 -0
  108. package/es/components/ProForm/fields/index.d.ts +12 -0
  109. package/es/components/ProForm/fields/index.js +13 -0
  110. package/es/components/ProForm/index.d.ts +7 -0
  111. package/es/components/ProForm/index.js +7 -0
  112. package/es/components/ProForm/interface.d.ts +306 -0
  113. package/es/components/ProForm/interface.js +2 -0
  114. package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  115. package/es/components/ProForm/layouts/DrawerForm.js +79 -0
  116. package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
  117. package/es/components/ProForm/layouts/ModalForm.js +89 -0
  118. package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  119. package/es/components/ProForm/layouts/QueryFilter.js +132 -0
  120. package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
  121. package/es/components/ProForm/layouts/StepsForm.js +295 -0
  122. package/es/components/ProForm/layouts/index.d.ts +4 -0
  123. package/es/components/ProForm/layouts/index.js +5 -0
  124. package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  125. package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
  126. package/es/components/ProForm/style/ProForm.module.css +1 -0
  127. package/es/components/ProForm/style/ProForm.module.scss +59 -0
  128. package/es/components/ProForm/style/css.js +3 -0
  129. package/es/components/ProForm/style/index.d.ts +1 -0
  130. package/es/components/ProForm/style/index.js +3 -0
  131. package/es/components/ProForm/utils.d.ts +72 -0
  132. package/es/components/ProForm/utils.js +206 -0
  133. package/es/components/RadioGroup/RadioGroup.js +46 -23
  134. package/es/components/RadioGroup/interface.d.ts +3 -1
  135. package/es/components/Select/Select.d.ts +1 -1
  136. package/es/components/Select/Select.js +113 -106
  137. package/es/components/Select/constants.d.ts +18 -0
  138. package/es/components/Select/constants.js +19 -0
  139. package/es/components/Sidebar/Sidebar.js +21 -23
  140. package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
  141. package/es/components/Sidebar/SidebarLogo.js +33 -0
  142. package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
  143. package/es/components/Sidebar/SimplySidebar.js +18 -22
  144. package/es/components/Sidebar/Stepper.js +14 -14
  145. package/es/components/Sidebar/constants.d.ts +16 -0
  146. package/es/components/Sidebar/constants.js +17 -0
  147. package/es/components/Sidebar/style/Sidebar.css +1 -1
  148. package/es/components/Sidebar/style/Sidebar.scss +1 -1
  149. package/es/components/Sidebar/style/SimplySidebar.css +1 -1
  150. package/es/components/Sidebar/style/SimplySidebar.scss +1 -1
  151. package/es/components/Sidebar/style/Stepper.css +1 -1
  152. package/es/components/Sidebar/style/Stepper.scss +11 -1
  153. package/es/components/Space/Space.d.ts +5 -0
  154. package/es/components/Space/Space.js +71 -0
  155. package/es/components/Space/constants.d.ts +33 -0
  156. package/es/components/Space/constants.js +37 -0
  157. package/es/components/Space/index.d.ts +5 -0
  158. package/es/components/Space/index.js +6 -0
  159. package/es/components/Space/interface.d.ts +12 -0
  160. package/es/components/Space/interface.js +2 -0
  161. package/es/components/Space/style/Space.css +1 -0
  162. package/es/components/Space/style/Space.scss +40 -0
  163. package/es/components/Space/style/css.js +2 -0
  164. package/es/components/Space/style/index.d.ts +1 -0
  165. package/es/components/Space/style/index.js +2 -0
  166. package/es/components/Switch/Switch.js +28 -25
  167. package/es/components/Switch/interface.d.ts +9 -4
  168. package/es/components/useControlledState/index.d.ts +14 -0
  169. package/es/components/useControlledState/index.js +32 -0
  170. package/es/components/useEventCallback/index.d.ts +11 -0
  171. package/es/components/useEventCallback/index.js +17 -0
  172. package/es/components/useLayoutEffect/index.d.ts +11 -0
  173. package/es/components/useLayoutEffect/index.js +17 -0
  174. package/es/components/useLayoutState/index.d.ts +13 -0
  175. package/es/components/useLayoutState/index.js +71 -0
  176. package/es/components/useMemoizedFn/index.d.ts +12 -0
  177. package/es/components/useMemoizedFn/index.js +27 -0
  178. package/es/components/usePrevious/index.d.ts +11 -0
  179. package/es/components/usePrevious/index.js +19 -0
  180. package/es/components/useSafeState/index.d.ts +12 -0
  181. package/es/components/useSafeState/index.js +24 -0
  182. package/es/components/useSyncState/index.d.ts +14 -0
  183. package/es/components/useSyncState/index.js +37 -0
  184. package/es/components/useUpdateEffect/index.d.ts +9 -0
  185. package/es/components/useUpdateEffect/index.js +19 -0
  186. package/es/index.css +1 -1
  187. package/es/index.d.ts +32 -2
  188. package/es/index.js +30 -1
  189. package/jest.setup.d.ts +1 -0
  190. package/jest.setup.ts +1 -0
  191. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  192. package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
  193. package/lib/components/CheckboxGroup/interface.d.ts +21 -15
  194. package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  195. package/lib/components/Flex/Flex.d.ts +5 -0
  196. package/lib/components/Flex/Flex.js +60 -0
  197. package/lib/components/Flex/constants.d.ts +41 -0
  198. package/lib/components/Flex/constants.js +51 -0
  199. package/lib/components/Flex/index.d.ts +5 -0
  200. package/lib/components/Flex/index.js +60 -0
  201. package/lib/components/Flex/interface.d.ts +13 -0
  202. package/lib/components/Flex/interface.js +6 -0
  203. package/lib/components/Flex/style/Flex.css +1 -0
  204. package/lib/components/Flex/style/Flex.scss +70 -0
  205. package/lib/components/Flex/style/css.js +4 -0
  206. package/lib/components/Flex/style/index.d.ts +1 -0
  207. package/lib/components/Flex/style/index.js +4 -0
  208. package/lib/components/Form/Form.d.ts +29 -0
  209. package/lib/components/Form/Form.js +199 -0
  210. package/lib/components/Form/FormItem.d.ts +4 -0
  211. package/lib/components/Form/FormItem.js +176 -0
  212. package/lib/components/Form/FormItemContent.d.ts +18 -0
  213. package/lib/components/Form/FormItemContent.js +156 -0
  214. package/lib/components/Form/constants.d.ts +46 -0
  215. package/lib/components/Form/constants.js +71 -0
  216. package/lib/components/Form/helper.d.ts +120 -0
  217. package/lib/components/Form/helper.js +290 -0
  218. package/lib/components/Form/index.d.ts +20 -0
  219. package/lib/components/Form/index.js +45 -0
  220. package/lib/components/Form/interface.d.ts +238 -0
  221. package/lib/components/Form/interface.js +6 -0
  222. package/lib/components/Form/style/Form.css +1 -0
  223. package/lib/components/Form/style/Form.scss +167 -0
  224. package/lib/components/Form/style/css.js +4 -0
  225. package/lib/components/Form/style/index.d.ts +1 -0
  226. package/lib/components/Form/style/index.js +4 -0
  227. package/lib/components/Form/useFormItemContext.d.ts +32 -0
  228. package/lib/components/Form/useFormItemContext.js +62 -0
  229. package/lib/components/Form/useFormItemWatch.d.ts +51 -0
  230. package/lib/components/Form/useFormItemWatch.js +76 -0
  231. package/lib/components/Form/useValidationTrigger.d.ts +40 -0
  232. package/lib/components/Form/useValidationTrigger.js +81 -0
  233. package/lib/components/Grid/Col.d.ts +5 -0
  234. package/lib/components/Grid/Col.js +107 -0
  235. package/lib/components/Grid/Grid.d.ts +12 -0
  236. package/lib/components/Grid/Grid.js +18 -0
  237. package/lib/components/Grid/Row.d.ts +5 -0
  238. package/lib/components/Grid/Row.js +58 -0
  239. package/lib/components/Grid/constants.d.ts +55 -0
  240. package/lib/components/Grid/constants.js +72 -0
  241. package/lib/components/Grid/helper.d.ts +10 -0
  242. package/lib/components/Grid/helper.js +51 -0
  243. package/lib/components/Grid/index.d.ts +7 -0
  244. package/lib/components/Grid/index.js +62 -0
  245. package/lib/components/Grid/interface.d.ts +38 -0
  246. package/lib/components/Grid/interface.js +6 -0
  247. package/lib/components/Grid/style/Grid.css +1 -0
  248. package/lib/components/Grid/style/Grid.scss +196 -0
  249. package/lib/components/Grid/style/css.js +4 -0
  250. package/lib/components/Grid/style/index.d.ts +1 -0
  251. package/lib/components/Grid/style/index.js +4 -0
  252. package/lib/components/Input/Input.js +71 -73
  253. package/lib/components/Input/interface.d.ts +9 -9
  254. package/lib/components/InputAmount/InputAmount.js +230 -278
  255. package/lib/components/InputAmount/helper.d.ts +46 -0
  256. package/lib/components/InputAmount/helper.js +122 -0
  257. package/lib/components/InputAmount/style/normal.css +1 -1
  258. package/lib/components/InputAmount/style/normal.scss +2 -2
  259. package/lib/components/InputAmount/style/primary.css +1 -1
  260. package/lib/components/InputAmount/style/primary.scss +2 -2
  261. package/lib/components/Message/style/Message.css +1 -1
  262. package/lib/components/Message/style/Message.scss +3 -3
  263. package/lib/components/ProForm/ProForm.d.ts +33 -0
  264. package/lib/components/ProForm/ProForm.js +216 -0
  265. package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
  266. package/lib/components/ProForm/ProFormDependency.js +67 -0
  267. package/lib/components/ProForm/ProFormList.d.ts +19 -0
  268. package/lib/components/ProForm/ProFormList.js +355 -0
  269. package/lib/components/ProForm/Submitter.d.ts +21 -0
  270. package/lib/components/ProForm/Submitter.js +83 -0
  271. package/lib/components/ProForm/constants.d.ts +34 -0
  272. package/lib/components/ProForm/constants.js +46 -0
  273. package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  274. package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
  275. package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  276. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
  277. package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  278. package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
  279. package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  280. package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
  281. package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  282. package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
  283. package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  284. package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
  285. package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  286. package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
  287. package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  288. package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
  289. package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  290. package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
  291. package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
  292. package/lib/components/ProForm/fields/ProFormText.js +22 -0
  293. package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  294. package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
  295. package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
  296. package/lib/components/ProForm/fields/createProFormField.js +208 -0
  297. package/lib/components/ProForm/fields/index.d.ts +12 -0
  298. package/lib/components/ProForm/fields/index.js +90 -0
  299. package/lib/components/ProForm/index.d.ts +7 -0
  300. package/lib/components/ProForm/index.js +73 -0
  301. package/lib/components/ProForm/interface.d.ts +306 -0
  302. package/lib/components/ProForm/interface.js +6 -0
  303. package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  304. package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
  305. package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
  306. package/lib/components/ProForm/layouts/ModalForm.js +96 -0
  307. package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  308. package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
  309. package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
  310. package/lib/components/ProForm/layouts/StepsForm.js +302 -0
  311. package/lib/components/ProForm/layouts/index.d.ts +4 -0
  312. package/lib/components/ProForm/layouts/index.js +40 -0
  313. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  314. package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
  315. package/lib/components/ProForm/style/ProForm.module.css +1 -0
  316. package/lib/components/ProForm/style/ProForm.module.scss +59 -0
  317. package/lib/components/ProForm/style/css.js +4 -0
  318. package/lib/components/ProForm/style/index.d.ts +1 -0
  319. package/lib/components/ProForm/style/index.js +4 -0
  320. package/lib/components/ProForm/utils.d.ts +72 -0
  321. package/lib/components/ProForm/utils.js +213 -0
  322. package/lib/components/RadioGroup/RadioGroup.js +45 -22
  323. package/lib/components/RadioGroup/interface.d.ts +3 -1
  324. package/lib/components/Select/Select.d.ts +1 -1
  325. package/lib/components/Select/Select.js +114 -107
  326. package/lib/components/Select/constants.d.ts +18 -0
  327. package/lib/components/Select/constants.js +25 -0
  328. package/lib/components/Sidebar/Sidebar.js +21 -23
  329. package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
  330. package/lib/components/Sidebar/SidebarLogo.js +39 -0
  331. package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
  332. package/lib/components/Sidebar/SimplySidebar.js +17 -21
  333. package/lib/components/Sidebar/Stepper.js +14 -14
  334. package/lib/components/Sidebar/constants.d.ts +16 -0
  335. package/lib/components/Sidebar/constants.js +23 -0
  336. package/lib/components/Sidebar/style/Sidebar.css +1 -1
  337. package/lib/components/Sidebar/style/Sidebar.scss +1 -1
  338. package/lib/components/Sidebar/style/SimplySidebar.css +1 -1
  339. package/lib/components/Sidebar/style/SimplySidebar.scss +1 -1
  340. package/lib/components/Sidebar/style/Stepper.css +1 -1
  341. package/lib/components/Sidebar/style/Stepper.scss +11 -1
  342. package/lib/components/Space/Space.d.ts +5 -0
  343. package/lib/components/Space/Space.js +81 -0
  344. package/lib/components/Space/constants.d.ts +33 -0
  345. package/lib/components/Space/constants.js +43 -0
  346. package/lib/components/Space/index.d.ts +5 -0
  347. package/lib/components/Space/index.js +53 -0
  348. package/lib/components/Space/interface.d.ts +12 -0
  349. package/lib/components/Space/interface.js +6 -0
  350. package/lib/components/Space/style/Space.css +1 -0
  351. package/lib/components/Space/style/Space.scss +40 -0
  352. package/lib/components/Space/style/css.js +4 -0
  353. package/lib/components/Space/style/index.d.ts +1 -0
  354. package/lib/components/Space/style/index.js +4 -0
  355. package/lib/components/Switch/Switch.js +27 -24
  356. package/lib/components/Switch/interface.d.ts +9 -4
  357. package/lib/components/useControlledState/index.d.ts +14 -0
  358. package/lib/components/useControlledState/index.js +39 -0
  359. package/lib/components/useEventCallback/index.d.ts +11 -0
  360. package/lib/components/useEventCallback/index.js +24 -0
  361. package/lib/components/useLayoutEffect/index.d.ts +11 -0
  362. package/lib/components/useLayoutEffect/index.js +23 -0
  363. package/lib/components/useLayoutState/index.d.ts +13 -0
  364. package/lib/components/useLayoutState/index.js +79 -0
  365. package/lib/components/useMemoizedFn/index.d.ts +12 -0
  366. package/lib/components/useMemoizedFn/index.js +33 -0
  367. package/lib/components/usePrevious/index.d.ts +11 -0
  368. package/lib/components/usePrevious/index.js +25 -0
  369. package/lib/components/useSafeState/index.d.ts +12 -0
  370. package/lib/components/useSafeState/index.js +31 -0
  371. package/lib/components/useSyncState/index.d.ts +14 -0
  372. package/lib/components/useSyncState/index.js +44 -0
  373. package/lib/components/useUpdateEffect/index.d.ts +9 -0
  374. package/lib/components/useUpdateEffect/index.js +25 -0
  375. package/lib/index.css +1 -1
  376. package/lib/index.d.ts +32 -2
  377. package/lib/index.js +251 -1
  378. package/package.json +31 -1
@@ -0,0 +1,238 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import type { Control, DefaultValues, FieldErrors, FieldPath, FieldPathValue, FieldValues, RegisterOptions, UseFormProps, UseFormReturn, ControllerRenderProps, ControllerFieldState } from 'react-hook-form';
3
+ import type { TRIGGER_BLUR, TRIGGER_CHANGE } from './constants';
4
+ /**
5
+ * Subset of `RegisterOptions` used by `FormItem` for declarative validation rules.
6
+ *
7
+ * @template TFieldValues - The shape of the form values.
8
+ */
9
+ export type FormItemRules<TFieldValues extends FieldValues = FieldValues> = Pick<RegisterOptions<TFieldValues>, 'required' | 'min' | 'max' | 'minLength' | 'maxLength' | 'pattern' | 'validate' | 'deps'>;
10
+ /** Form layout direction. */
11
+ export type FormLayout = 'horizontal' | 'vertical' | 'inline';
12
+ /** Label text alignment within the label column. */
13
+ export type FormLabelAlign = 'left' | 'right';
14
+ /** Form size variant applied to all child items. */
15
+ export type FormSize = 'small' | 'middle' | 'large';
16
+ /** Validation status used for visual feedback on a form field. */
17
+ export type FormValidateStatus = 'success' | 'warning' | 'error' | 'validating';
18
+ /**
19
+ * Shared context value provided by `<Form>` to all descendant `<FormItem>` components.
20
+ */
21
+ export interface FormContextValue {
22
+ /** Layout direction for the form. */
23
+ layout: FormLayout;
24
+ /** Alignment of labels within the label column. */
25
+ labelAlign: FormLabelAlign;
26
+ /** Label column span in a 12-column grid (0–12). */
27
+ labelCol: number;
28
+ /** Wrapper/control column span in a 12-column grid (0–12). */
29
+ wrapperCol: number;
30
+ /** Size variant applied to all form items. */
31
+ size: FormSize;
32
+ /** When `true`, all form fields are disabled. */
33
+ disabled?: boolean;
34
+ /** Whether to render a colon after each label. */
35
+ colon: boolean;
36
+ /** Whether to show the required asterisk mark on required fields. */
37
+ requiredMark: boolean;
38
+ /** The `react-hook-form` methods instance shared across the form. */
39
+ methods: UseFormReturn<FieldValues>;
40
+ }
41
+ /**
42
+ * Props for the `<Form>` component.
43
+ *
44
+ * Extends `react-hook-form`'s `UseFormProps` (excluding `defaultValues`) with
45
+ * layout configuration, submit callbacks, value-change subscriptions, and
46
+ * scroll-to-error behavior.
47
+ *
48
+ * @template TFieldValues - The shape of the form values.
49
+ */
50
+ export interface FormProps<TFieldValues extends FieldValues = FieldValues> extends Omit<UseFormProps<TFieldValues>, 'defaultValues'> {
51
+ /** Initial values for the form fields. */
52
+ defaultValues?: DefaultValues<TFieldValues>;
53
+ /** An external `useForm()` return value to make the form fully controlled. */
54
+ form?: UseFormReturn<TFieldValues>;
55
+ /** Callback invoked with valid form values on successful submission. */
56
+ onFinish?: (values: TFieldValues) => void | Promise<void>;
57
+ /** Callback invoked with validation errors on failed submission. */
58
+ onFinishFailed?: (errors: FieldErrors<TFieldValues>) => void;
59
+ /** Callback fired when any watched field value changes. */
60
+ onValuesChange?: (values: TFieldValues, info: {
61
+ name?: FieldPath<TFieldValues>;
62
+ type?: string;
63
+ }) => void;
64
+ /** Field paths to subscribe to for `onValuesChange`. If omitted, all fields are watched. */
65
+ watchNames?: Array<FieldPath<TFieldValues>>;
66
+ /**
67
+ * Whether to scroll to the first invalid field on submit failure.
68
+ * Pass `true` for default scroll behavior, or an object to customize scroll options.
69
+ */
70
+ scrollToFirstError?: boolean | {
71
+ behavior?: ScrollBehavior;
72
+ block?: ScrollLogicalPosition;
73
+ inline?: ScrollLogicalPosition;
74
+ /** Pixel offset from the top when scrolling. */
75
+ offset?: number;
76
+ };
77
+ /** Layout direction. @defaultValue `'horizontal'` */
78
+ layout?: FormLayout;
79
+ /** Label text alignment. @defaultValue `'right'` */
80
+ labelAlign?: FormLabelAlign;
81
+ /** Label column span in a 12-column grid (0–12). @defaultValue `3` */
82
+ labelCol?: number;
83
+ /** Wrapper/control column span in a 12-column grid (0–12). @defaultValue `9` */
84
+ wrapperCol?: number;
85
+ /** Size variant. @defaultValue `'middle'` */
86
+ size?: FormSize;
87
+ /** When `true`, disables all form fields. */
88
+ disabled?: boolean;
89
+ /** Whether to show a colon after each label. @defaultValue `true` */
90
+ colon?: boolean;
91
+ /** Whether to show the required asterisk mark. @defaultValue `true` */
92
+ requiredMark?: boolean;
93
+ /** Additional CSS class name for the `<form>` element. */
94
+ className?: string;
95
+ /** Inline styles for the `<form>` element. */
96
+ style?: CSSProperties;
97
+ /** Form content (typically `<FormItem>` components). */
98
+ children?: ReactNode;
99
+ }
100
+ /**
101
+ * Props passed to a `FormItem` render-prop child function.
102
+ *
103
+ * @template TFieldValues - The shape of the form values.
104
+ */
105
+ export interface FormItemRenderProps<TFieldValues extends FieldValues = FieldValues> {
106
+ /** Controller field bindings with additional status flags. Only present when `name` is set. */
107
+ field?: ControllerRenderProps<TFieldValues, FieldPath<TFieldValues>> & {
108
+ /** `true` when the field has a validation error. */
109
+ invalid?: boolean;
110
+ /** `true` when the field has been successfully validated. */
111
+ success?: boolean;
112
+ };
113
+ /** Controller field state (error, dirty, touched, etc.). Only present when `name` is set. */
114
+ fieldState?: ControllerFieldState;
115
+ /** The `react-hook-form` methods instance for imperative access. */
116
+ form: UseFormReturn<TFieldValues>;
117
+ /** Current snapshot of all form values. */
118
+ values: TFieldValues;
119
+ }
120
+ /**
121
+ * Extended `CSSProperties` including custom CSS variables for label/wrapper widths.
122
+ */
123
+ export type FormItemStyle = CSSProperties & {
124
+ ['--om-form-label-width']?: string;
125
+ ['--om-form-wrapper-width']?: string;
126
+ };
127
+ /**
128
+ * Render-prop function signature used by `FormItem` children.
129
+ *
130
+ * @template TFieldValues - The shape of the form values.
131
+ */
132
+ export type FormItemRenderFn<TFieldValues extends FieldValues> = (props: FormItemRenderProps<TFieldValues>) => ReactNode;
133
+ /**
134
+ * Props for the `<FormItem>` component.
135
+ *
136
+ * Bridges `react-hook-form`'s `Controller` with layout, validation status,
137
+ * and trigger behavior.
138
+ *
139
+ * @template TFieldValues - The shape of the form values.
140
+ */
141
+ export interface FormItemProps<TFieldValues extends FieldValues = FieldValues> {
142
+ /** Field path within the form values. When omitted, the item renders as a free (uncontrolled) wrapper. */
143
+ name?: FieldPath<TFieldValues>;
144
+ /** Label content rendered beside the field. */
145
+ label?: ReactNode;
146
+ /** Marks the field as required. When `rules.required` is set, this is inferred automatically. */
147
+ required?: boolean;
148
+ /** Declarative validation rules forwarded to `react-hook-form`'s `Controller`. */
149
+ rules?: FormItemRules<TFieldValues>;
150
+ /** Default value for the field. */
151
+ defaultValue?: FieldPathValue<TFieldValues, FieldPath<TFieldValues>>;
152
+ /** Custom help text displayed below the field. Overrides error messages when set. */
153
+ help?: ReactNode;
154
+ /** Extra content rendered below the help text. */
155
+ extra?: ReactNode;
156
+ /** Explicit validation status override. When set, bypasses automatic status derived from `fieldState`. */
157
+ validateStatus?: FormValidateStatus;
158
+ /** Field paths that trigger re-validation of this field when they change. */
159
+ dependencies?: Array<FieldPath<TFieldValues>>;
160
+ /** Additional field paths to watch, causing re-render when their values change. */
161
+ watchNames?: Array<FieldPath<TFieldValues>>;
162
+ /**
163
+ * Controls re-rendering behavior.
164
+ * - `true`: re-renders on every form value change.
165
+ * - A comparator function: re-renders when it returns `true`.
166
+ */
167
+ shouldUpdate?: boolean | ((prev: TFieldValues, next: TFieldValues) => boolean);
168
+ /** Event(s) that trigger validation. @defaultValue `[]` (validation on submit only) */
169
+ validateTrigger?: 'onChange' | 'onBlur' | Array<'onChange' | 'onBlur'>;
170
+ /**
171
+ * Controls multi-validator execution order.
172
+ * - `true`: runs validators sequentially, stops at first error.
173
+ * - `'parallel'`: runs all validators concurrently, returns first error found.
174
+ */
175
+ validateFirst?: boolean | 'parallel';
176
+ /** Debounce delay in milliseconds for triggered validation. */
177
+ validateDebounce?: number;
178
+ /** When `true`, renders only the field content without label/wrapper markup. */
179
+ noStyle?: boolean;
180
+ /** The prop name used to bind the controlled value to the child. @defaultValue `'value'` */
181
+ valuePropName?: string;
182
+ /** Additional CSS class name for the form item wrapper. */
183
+ className?: string;
184
+ /** Label column span override (0–12 grid). */
185
+ labelCol?: number;
186
+ /** Wrapper column span override (0–12 grid). */
187
+ wrapperCol?: number;
188
+ /** Field content — either a React node (auto-bound via `cloneElement`) or a render-prop function. */
189
+ children?: ReactNode | ((props: FormItemRenderProps<TFieldValues>) => ReactNode);
190
+ }
191
+ /**
192
+ * Internal props for the `<FormItemContent>` component.
193
+ *
194
+ * This is not part of the public API; it carries resolved context and
195
+ * validation state from `FormItem` down to the render layer.
196
+ *
197
+ * @template TFieldValues - The shape of the form values.
198
+ */
199
+ export interface FormItemContentProps<TFieldValues extends FieldValues = FieldValues> {
200
+ /** Field path (determines controlled vs free branch). */
201
+ name?: FieldPath<TFieldValues>;
202
+ /** The `react-hook-form` `Control` instance. */
203
+ control: Control<TFieldValues>;
204
+ /** The `react-hook-form` methods instance. */
205
+ methods: UseFormReturn<TFieldValues>;
206
+ /** Merged validation rules. */
207
+ rules?: FormItemRules<TFieldValues>;
208
+ /** Default value for the Controller. */
209
+ defaultValue?: FormItemProps<TFieldValues>['defaultValue'];
210
+ /** Explicit validation status override. */
211
+ validateStatus?: FormValidateStatus;
212
+ /** Prop name used to bind the controlled value. */
213
+ valuePropName: string;
214
+ /** Help text displayed below the field. */
215
+ help?: ReactNode;
216
+ /** Extra content rendered below help text. */
217
+ extra?: ReactNode;
218
+ /** Form context value from the parent `<Form>`. */
219
+ ctx: FormContextValue | null;
220
+ /** Raw children from `FormItem`. */
221
+ children: FormItemProps<TFieldValues>['children'];
222
+ /** Resolved render-prop function, or `null` if children is a React node. */
223
+ renderFn: FormItemRenderFn<TFieldValues> | null;
224
+ /** Current snapshot of all form values. */
225
+ allValues: TFieldValues;
226
+ /** The `shouldUpdate` prop from `FormItem`. */
227
+ shouldUpdate?: FormItemProps<TFieldValues>['shouldUpdate'];
228
+ /** Whether the item should render based on `shouldUpdate` evaluation. */
229
+ shouldRender: boolean;
230
+ /**
231
+ * Wraps an event handler to conditionally trigger validation based on trigger mode.
232
+ *
233
+ * @param mode - The trigger mode (`'onChange'` or `'onBlur'`).
234
+ * @param fn - The original event handler to compose with.
235
+ * @returns A composed handler that calls `fn` and optionally triggers validation.
236
+ */
237
+ withTrigger: (mode: typeof TRIGGER_CHANGE | typeof TRIGGER_BLUR, fn?: (...args: unknown[]) => void) => (...args: unknown[]) => void;
238
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy9Gb3JtL2ludGVyZmFjZS5qcyIsIm5hbWVzIjpbXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9Gb3JtL2ludGVyZmFjZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge307Il0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1 @@
1
+ .om-react-ui-form,.om-react-ui-form-root{--om-form-spacing-xs:4px;--om-form-spacing-sm:8px;--om-form-spacing-md:12px;--om-form-spacing-lg:16px;--om-form-control-height:44px;--om-form-font-size-base:14px;--om-form-line-height-base:20px;--om-form-font-size-help:12px;--om-form-line-height-help:18px;--om-form-opacity-disabled:0.6}.om-react-ui-form-root{width:100%}.om-react-ui-form-layout-horizontal .om-react-ui-form-item-root{display:flex;align-items:flex-start}.om-react-ui-form-layout-vertical .om-react-ui-form-item-root{display:flex;flex-direction:column}.om-react-ui-form-layout-inline{display:flex;flex-wrap:wrap;gap:var(--om-form-spacing-lg)}.om-react-ui-form-label-left .om-react-ui-form-item-label{text-align:left}.om-react-ui-form-item,.om-react-ui-form-item-root{--om-form-spacing-xs:4px;--om-form-spacing-sm:8px;--om-form-spacing-md:12px;--om-form-spacing-lg:16px;--om-form-control-height:44px;--om-form-font-size-base:14px;--om-form-line-height-base:20px;--om-form-font-size-help:12px;--om-form-line-height-help:18px;--om-form-opacity-disabled:0.6}.om-react-ui-form-item-root{width:100%;margin-bottom:var(--om-form-spacing-lg)}.om-react-ui-form-item-label{display:flex;flex:0 0 var(--om-form-label-width,25%);align-items:center;justify-content:flex-end;min-width:-moz-fit-content;min-width:fit-content;min-height:var(--om-form-control-height);padding-right:var(--om-form-spacing-md);color:#131313;font-size:var(--om-form-font-size-base);line-height:var(--om-form-line-height-base);white-space:nowrap;text-align:right}.om-react-ui-form-item-label-required:before{margin-right:var(--om-form-spacing-xs);color:#ae0000;content:"*"}.om-react-ui-form-item-colon{margin-left:var(--om-form-spacing-xs)}.om-react-ui-form-item-control{flex:1 1 auto;max-width:var(--om-form-wrapper-width,75%)}.om-react-ui-form-item-content{display:flex;flex-direction:column;gap:var(--om-form-spacing-sm)}.om-react-ui-form-item-content-disabled{opacity:var(--om-form-opacity-disabled)}.om-react-ui-form-item-help{color:#646465;font-size:var(--om-form-font-size-help);line-height:var(--om-form-line-height-help)}.om-react-ui-form-item-help-error{color:#ae0000}.om-react-ui-form-item-help-warning{color:#db8600}.om-react-ui-form-item-help-success{color:#1f5800}.om-react-ui-form-item-content-error{--om-form-item-status-color:#ae0000}.om-react-ui-form-item-content-warning{--om-form-item-status-color:#db8600}.om-react-ui-form-item-content-success{--om-form-item-status-color:#1f5800}.om-react-ui-form-item-content-validating{--om-form-item-status-color:#3d7cf5}.om-react-ui-form-item-extra{color:#9fa3a3;font-size:var(--om-form-font-size-help);line-height:var(--om-form-line-height-help)}.om-react-ui-form-layout-vertical .om-react-ui-form-item-label{flex:0 0 auto;justify-content:flex-start;min-width:0;min-height:auto;margin-bottom:var(--om-form-spacing-sm);padding-right:0;white-space:normal;text-align:left}.om-react-ui-form-layout-vertical .om-react-ui-form-item-control{max-width:100%}.om-react-ui-form-layout-inline .om-react-ui-form-item-root{width:auto;margin-bottom:0}
@@ -0,0 +1,167 @@
1
+ @use '../../../variable.scss' as *;
2
+
3
+ // Intentionally token-level SCSS (no global tag selectors): spacing/typography/
4
+ // opacity values are centralized as component CSS variables for predictable BEM output.
5
+ $component: 'form';
6
+ $cls: #{$prefix}-#{$component};
7
+
8
+ @mixin om-form-token-vars {
9
+ --om-form-spacing-xs: 4px;
10
+ --om-form-spacing-sm: 8px;
11
+ --om-form-spacing-md: 12px;
12
+ --om-form-spacing-lg: 16px;
13
+ --om-form-control-height: 44px;
14
+ --om-form-font-size-base: 14px;
15
+ --om-form-line-height-base: 20px;
16
+ --om-form-font-size-help: 12px;
17
+ --om-form-line-height-help: 18px;
18
+ --om-form-opacity-disabled: 0.6;
19
+ }
20
+
21
+ .#{$cls} {
22
+ @include om-form-token-vars;
23
+
24
+ &-root {
25
+ width: 100%;
26
+
27
+ @include om-form-token-vars;
28
+ }
29
+
30
+ &-layout-horizontal .#{$prefix}-form-item-root {
31
+ display: flex;
32
+ align-items: flex-start;
33
+ }
34
+
35
+ &-layout-vertical .#{$prefix}-form-item-root {
36
+ display: flex;
37
+ flex-direction: column;
38
+ }
39
+
40
+ &-layout-inline {
41
+ display: flex;
42
+ flex-wrap: wrap;
43
+ gap: var(--om-form-spacing-lg);
44
+ }
45
+
46
+ &-label-left .#{$prefix}-form-item-label {
47
+ text-align: left;
48
+ }
49
+ }
50
+
51
+ $item: 'form-item';
52
+ $item-cls: #{$prefix}-#{$item};
53
+
54
+ .#{$item-cls} {
55
+ @include om-form-token-vars;
56
+
57
+ &-root {
58
+ width: 100%;
59
+ margin-bottom: var(--om-form-spacing-lg);
60
+
61
+ @include om-form-token-vars;
62
+ }
63
+
64
+ &-label {
65
+ display: flex;
66
+ flex: 0 0 var(--om-form-label-width, 25%);
67
+ align-items: center;
68
+ justify-content: flex-end;
69
+ min-width: fit-content;
70
+ min-height: var(--om-form-control-height);
71
+ padding-right: var(--om-form-spacing-md);
72
+ color: $color-primary-black;
73
+ font-size: var(--om-form-font-size-base);
74
+ line-height: var(--om-form-line-height-base);
75
+ white-space: nowrap;
76
+ text-align: right;
77
+ }
78
+
79
+ &-label-required::before {
80
+ margin-right: var(--om-form-spacing-xs);
81
+ color: $color-negative;
82
+ content: '*';
83
+ }
84
+
85
+ &-colon {
86
+ margin-left: var(--om-form-spacing-xs);
87
+ }
88
+
89
+ &-control {
90
+ flex: 1 1 auto;
91
+ max-width: var(--om-form-wrapper-width, 75%);
92
+ }
93
+
94
+ &-content {
95
+ display: flex;
96
+ flex-direction: column;
97
+ gap: var(--om-form-spacing-sm);
98
+ }
99
+
100
+ &-content-disabled {
101
+ opacity: var(--om-form-opacity-disabled);
102
+ }
103
+
104
+ &-help {
105
+ color: $color-grey-midnight;
106
+ font-size: var(--om-form-font-size-help);
107
+ line-height: var(--om-form-line-height-help);
108
+ }
109
+
110
+ &-help-error {
111
+ color: $color-negative;
112
+ }
113
+
114
+ &-help-warning {
115
+ color: $color-warning-dark;
116
+ }
117
+
118
+ &-help-success {
119
+ color: $color-success;
120
+ }
121
+
122
+ &-content-error {
123
+ --om-form-item-status-color: #{$color-negative};
124
+ }
125
+
126
+ &-content-warning {
127
+ --om-form-item-status-color: #{$color-warning-dark};
128
+ }
129
+
130
+ &-content-success {
131
+ --om-form-item-status-color: #{$color-success};
132
+ }
133
+
134
+ &-content-validating {
135
+ --om-form-item-status-color: #{$color-info};
136
+ }
137
+
138
+ &-extra {
139
+ color: $color-grey-dark;
140
+ font-size: var(--om-form-font-size-help);
141
+ line-height: var(--om-form-line-height-help);
142
+ }
143
+ }
144
+
145
+ .#{$prefix}-form-layout-vertical {
146
+ .#{$item-cls}-label {
147
+ flex: 0 0 auto;
148
+ justify-content: flex-start;
149
+ min-width: 0;
150
+ min-height: auto;
151
+ margin-bottom: var(--om-form-spacing-sm);
152
+ padding-right: 0;
153
+ white-space: normal;
154
+ text-align: left;
155
+ }
156
+
157
+ .#{$item-cls}-control {
158
+ max-width: 100%;
159
+ }
160
+ }
161
+
162
+ .#{$prefix}-form-layout-inline {
163
+ .#{$item-cls}-root {
164
+ width: auto;
165
+ margin-bottom: 0;
166
+ }
167
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./Form.css");
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRm9ybS9zcmMvY29tcG9uZW50cy9Gb3JtL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiI7O0FBQUFBLE9BQUEiLCJmaWxlIjoiY29tcG9uZW50cy9Gb3JtL3N0eWxlL2Nzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1 @@
1
+ import './Form.scss';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./Form.scss");
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRm9ybS9zcmMvY29tcG9uZW50cy9Gb3JtL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiI7O0FBQUFBLE9BQUEiLCJmaWxlIjoiY29tcG9uZW50cy9Gb3JtL3N0eWxlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,32 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { FieldValues, UseFormReturn } from 'react-hook-form';
3
+ interface FallbackFormProviderProps {
4
+ children: ReactNode;
5
+ }
6
+ /**
7
+ * Lazily creates form methods only when mounted.
8
+ *
9
+ * Use this provider when rendering form-aware components outside `<Form>`.
10
+ */
11
+ export declare function FallbackFormProvider({ children }: FallbackFormProviderProps): import("react").FunctionComponentElement<import("react").ProviderProps<UseFormReturn<FieldValues> | null>>;
12
+ /**
13
+ * Resolves form context for a `<FormItem>`.
14
+ *
15
+ * When rendered inside a `<Form>`, this hook uses the context-provided
16
+ * `react-hook-form` methods. Otherwise it reads methods from
17
+ * {@link FallbackFormProvider}, which creates a local `useForm()` instance.
18
+ *
19
+ * A development-only console warning is emitted (once per field name) when
20
+ * a `name` prop is set but no parent `<Form>` context is found.
21
+ *
22
+ * @template TFieldValues - The shape of the form values.
23
+ * @param name - The field name, used for the missing-context warning check.
24
+ * @returns An object with `ctx` (form context or `null`), `methods`, `control`, and `trigger`.
25
+ */
26
+ export declare function useFormItemContext<TFieldValues extends FieldValues = FieldValues>(name?: string): {
27
+ ctx: import("./interface").FormContextValue | null;
28
+ methods: UseFormReturn<TFieldValues>;
29
+ control: import("react-hook-form").Control<TFieldValues, any, TFieldValues>;
30
+ trigger: import("react-hook-form").UseFormTrigger<TFieldValues>;
31
+ };
32
+ export {};
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FallbackFormProvider = FallbackFormProvider;
7
+ exports.useFormItemContext = useFormItemContext;
8
+ var _react = require("react");
9
+ var _reactHookForm = require("react-hook-form");
10
+ var _Form = require("./Form");
11
+ var FallbackFormContext = /*#__PURE__*/(0, _react.createContext)(null);
12
+ /**
13
+ * Lazily creates form methods only when mounted.
14
+ *
15
+ * Use this provider when rendering form-aware components outside `<Form>`.
16
+ */
17
+ function FallbackFormProvider(_ref) {
18
+ var children = _ref.children;
19
+ var methods = (0, _reactHookForm.useForm)();
20
+ return /*#__PURE__*/(0, _react.createElement)(FallbackFormContext.Provider, {
21
+ value: methods
22
+ }, children);
23
+ }
24
+ /**
25
+ * Resolves form context for a `<FormItem>`.
26
+ *
27
+ * When rendered inside a `<Form>`, this hook uses the context-provided
28
+ * `react-hook-form` methods. Otherwise it reads methods from
29
+ * {@link FallbackFormProvider}, which creates a local `useForm()` instance.
30
+ *
31
+ * A development-only console warning is emitted (once per field name) when
32
+ * a `name` prop is set but no parent `<Form>` context is found.
33
+ *
34
+ * @template TFieldValues - The shape of the form values.
35
+ * @param name - The field name, used for the missing-context warning check.
36
+ * @returns An object with `ctx` (form context or `null`), `methods`, `control`, and `trigger`.
37
+ */
38
+ function useFormItemContext(name) {
39
+ var _a;
40
+ var ctx = (0, _react.useContext)(_Form.FormContext);
41
+ var fallbackMethods = (0, _react.useContext)(FallbackFormContext);
42
+ var warnedRef = (0, _react.useRef)(new Set());
43
+ var methods = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.methods) !== null && _a !== void 0 ? _a : fallbackMethods;
44
+ if (!methods) {
45
+ throw new Error('[FormItem] No form control found. Wrap with <Form> or mount inside <FallbackFormProvider>.');
46
+ }
47
+ var control = methods.control;
48
+ var trigger = methods.trigger;
49
+ (0, _react.useEffect)(function () {
50
+ if (name && !(ctx === null || ctx === void 0 ? void 0 : ctx.methods) && !warnedRef.current.has(name)) {
51
+ warnedRef.current.add(name);
52
+ console.warn('[FormItem] `name` prop is set but no form control found. Wrap FormItem inside a <Form> component.');
53
+ }
54
+ }, [name, ctx === null || ctx === void 0 ? void 0 : ctx.methods]);
55
+ return {
56
+ ctx: ctx,
57
+ methods: methods,
58
+ control: control,
59
+ trigger: trigger
60
+ };
61
+ }
62
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvRm9ybS91c2VGb3JtSXRlbUNvbnRleHQudHMiLCJjb21wb25lbnRzL0Zvcm0vdXNlRm9ybUl0ZW1Db250ZXh0LmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJfcmVhY3RIb29rRm9ybSIsIl9Gb3JtIiwiRmFsbGJhY2tGb3JtQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJGYWxsYmFja0Zvcm1Qcm92aWRlciIsIl9yZWYiLCJjaGlsZHJlbiIsIm1ldGhvZHMiLCJ1c2VGb3JtIiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1c2VGb3JtSXRlbUNvbnRleHQiLCJuYW1lIiwiX2EiLCJjdHgiLCJ1c2VDb250ZXh0IiwiRm9ybUNvbnRleHQiLCJmYWxsYmFja01ldGhvZHMiLCJ3YXJuZWRSZWYiLCJ1c2VSZWYiLCJTZXQiLCJFcnJvciIsImNvbnRyb2wiLCJ0cmlnZ2VyIiwidXNlRWZmZWN0IiwiY3VycmVudCIsImhhcyIsImFkZCIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBTUcsbUJBQW1CLGdCQUFHLElBQUFDLG9CQUFhLEVBQW9DLElBQUksQ0FBQztBQU1sRjtBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FEU00sU0FBVUMsb0JBQW9CQSxDQUFBQyxJQUFBLEVBQXdDO0VBQUEsSUFBckNDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO0VBQzdDLElBQU1DLE9BQU8sR0FBRyxJQUFBQyxzQkFBTyxFQUFBLENBQWU7RUFDdEMsb0JBQU8sSUFBQUMsb0JBQWEsRUFBQ1AsbUJBQW1CLENBQUNRLFFBQVEsRUFBRTtJQUFFQyxLQUFLLEVBQUVKO0VBQU8sQ0FBRSxFQUFFRCxRQUFRLENBQUM7QUFDbEY7QUFFQTtBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FEVU0sU0FBVU0sa0JBQWtCQSxDQUFpREMsSUFBYSxFQUFBO0VDUjVGLElBQUlDLEVBQUU7RURTUixJQUFNQyxHQUFHLEdBQUcsSUFBQUMsaUJBQVUsRUFBQ0MsaUJBQVcsQ0FBQztFQUNuQyxJQUFNQyxlQUFlLEdBQUcsSUFBQUYsaUJBQVUsRUFBQ2QsbUJBQW1CLENBQUM7RUFDdkQsSUFBTWlCLFNBQVMsR0FBRyxJQUFBQyxhQUFNLEVBQWMsSUFBSUMsR0FBRyxDQUFBLENBQUUsQ0FBQztFQUNoRCxJQUFNZCxPQUFPLEdBQUcsQ0FBQU8sRUFBQSxHQUFDQyxHQUFHLEtBQUEsSUFBQSxJQUFIQSxHQUFHLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUhBLEdBQUcsQ0FBRVIsT0FBbUQsTUFBQSxJQUFBLElBQUFPLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUNuRUksZUFBc0Q7RUFFNUQsSUFBSSxDQUFDWCxPQUFPLEVBQUU7SUFDWixNQUFNLElBQUllLEtBQUssQ0FDYiw0RkFBNEYsQ0FDN0Y7RUFDSDtFQUVBLElBQU1DLE9BQU8sR0FBR2hCLE9BQU8sQ0FBQ2dCLE9BQU87RUFDL0IsSUFBTUMsT0FBTyxHQUFHakIsT0FBTyxDQUFDaUIsT0FBTztFQUUvQixJQUFBQyxnQkFBUyxFQUFDLFlBQUs7SUFDYixJQUFJWixJQUFJLElBQUksRUFBQ0UsR0FBRyxLQUFBLElBQUEsSUFBSEEsR0FBRyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFIQSxHQUFHLENBQUVSLE9BQU8sQ0FBQSxJQUFJLENBQUNZLFNBQVMsQ0FBQ08sT0FBTyxDQUFDQyxHQUFHLENBQUNkLElBQUksQ0FBQyxFQUFFO01BQ3pETSxTQUFTLENBQUNPLE9BQU8sQ0FBQ0UsR0FBRyxDQUFDZixJQUFJLENBQUM7TUFDM0JnQixPQUFPLENBQUNDLElBQUksQ0FBQyxtR0FBbUcsQ0FBQztJQUNuSDtFQUNGLENBQUMsRUFBRSxDQUFDakIsSUFBSSxFQUFFRSxHQUFHLEtBQUEsSUFBQSxJQUFIQSxHQUFHLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUhBLEdBQUcsQ0FBRVIsT0FBTyxDQUFDLENBQUM7RUFFeEIsT0FBTztJQUFFUSxHQUFHLEVBQUhBLEdBQUc7SUFBRVIsT0FBTyxFQUFQQSxPQUFPO0lBQUVnQixPQUFPLEVBQVBBLE9BQU87SUFBRUMsT0FBTyxFQUFQQTtFQUFPLENBQUU7QUFDM0MiLCJmaWxlIjoiY29tcG9uZW50cy9Gb3JtL3VzZUZvcm1JdGVtQ29udGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSAncmVhY3QtaG9vay1mb3JtJztcbmltcG9ydCB7IEZvcm1Db250ZXh0IH0gZnJvbSAnLi9Gb3JtJztcbmNvbnN0IEZhbGxiYWNrRm9ybUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuLyoqXG4gKiBMYXppbHkgY3JlYXRlcyBmb3JtIG1ldGhvZHMgb25seSB3aGVuIG1vdW50ZWQuXG4gKlxuICogVXNlIHRoaXMgcHJvdmlkZXIgd2hlbiByZW5kZXJpbmcgZm9ybS1hd2FyZSBjb21wb25lbnRzIG91dHNpZGUgYDxGb3JtPmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBGYWxsYmFja0Zvcm1Qcm92aWRlcih7IGNoaWxkcmVuIH0pIHtcbiAgICBjb25zdCBtZXRob2RzID0gdXNlRm9ybSgpO1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEZhbGxiYWNrRm9ybUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IG1ldGhvZHMgfSwgY2hpbGRyZW4pO1xufVxuLyoqXG4gKiBSZXNvbHZlcyBmb3JtIGNvbnRleHQgZm9yIGEgYDxGb3JtSXRlbT5gLlxuICpcbiAqIFdoZW4gcmVuZGVyZWQgaW5zaWRlIGEgYDxGb3JtPmAsIHRoaXMgaG9vayB1c2VzIHRoZSBjb250ZXh0LXByb3ZpZGVkXG4gKiBgcmVhY3QtaG9vay1mb3JtYCBtZXRob2RzLiBPdGhlcndpc2UgaXQgcmVhZHMgbWV0aG9kcyBmcm9tXG4gKiB7QGxpbmsgRmFsbGJhY2tGb3JtUHJvdmlkZXJ9LCB3aGljaCBjcmVhdGVzIGEgbG9jYWwgYHVzZUZvcm0oKWAgaW5zdGFuY2UuXG4gKlxuICogQSBkZXZlbG9wbWVudC1vbmx5IGNvbnNvbGUgd2FybmluZyBpcyBlbWl0dGVkIChvbmNlIHBlciBmaWVsZCBuYW1lKSB3aGVuXG4gKiBhIGBuYW1lYCBwcm9wIGlzIHNldCBidXQgbm8gcGFyZW50IGA8Rm9ybT5gIGNvbnRleHQgaXMgZm91bmQuXG4gKlxuICogQHRlbXBsYXRlIFRGaWVsZFZhbHVlcyAtIFRoZSBzaGFwZSBvZiB0aGUgZm9ybSB2YWx1ZXMuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBmaWVsZCBuYW1lLCB1c2VkIGZvciB0aGUgbWlzc2luZy1jb250ZXh0IHdhcm5pbmcgY2hlY2suXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgY3R4YCAoZm9ybSBjb250ZXh0IG9yIGBudWxsYCksIGBtZXRob2RzYCwgYGNvbnRyb2xgLCBhbmQgYHRyaWdnZXJgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRm9ybUl0ZW1Db250ZXh0KG5hbWUpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChGb3JtQ29udGV4dCk7XG4gICAgY29uc3QgZmFsbGJhY2tNZXRob2RzID0gdXNlQ29udGV4dChGYWxsYmFja0Zvcm1Db250ZXh0KTtcbiAgICBjb25zdCB3YXJuZWRSZWYgPSB1c2VSZWYobmV3IFNldCgpKTtcbiAgICBjb25zdCBtZXRob2RzID0gKF9hID0gY3R4ID09PSBudWxsIHx8IGN0eCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3R4Lm1ldGhvZHMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZhbGxiYWNrTWV0aG9kcztcbiAgICBpZiAoIW1ldGhvZHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdbRm9ybUl0ZW1dIE5vIGZvcm0gY29udHJvbCBmb3VuZC4gV3JhcCB3aXRoIDxGb3JtPiBvciBtb3VudCBpbnNpZGUgPEZhbGxiYWNrRm9ybVByb3ZpZGVyPi4nKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJvbCA9IG1ldGhvZHMuY29udHJvbDtcbiAgICBjb25zdCB0cmlnZ2VyID0gbWV0aG9kcy50cmlnZ2VyO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChuYW1lICYmICEoY3R4ID09PSBudWxsIHx8IGN0eCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3R4Lm1ldGhvZHMpICYmICF3YXJuZWRSZWYuY3VycmVudC5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgIHdhcm5lZFJlZi5jdXJyZW50LmFkZChuYW1lKTtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0Zvcm1JdGVtXSBgbmFtZWAgcHJvcCBpcyBzZXQgYnV0IG5vIGZvcm0gY29udHJvbCBmb3VuZC4gV3JhcCBGb3JtSXRlbSBpbnNpZGUgYSA8Rm9ybT4gY29tcG9uZW50LicpO1xuICAgICAgICB9XG4gICAgfSwgW25hbWUsIGN0eCA9PT0gbnVsbCB8fCBjdHggPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN0eC5tZXRob2RzXSk7XG4gICAgcmV0dXJuIHsgY3R4LCBtZXRob2RzLCBjb250cm9sLCB0cmlnZ2VyIH07XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,51 @@
1
+ import type { Control, FieldPath, FieldValues, UseFormReturn } from 'react-hook-form';
2
+ import type { FormItemProps } from './interface';
3
+ /**
4
+ * Return type of {@link useFormItemWatch}.
5
+ *
6
+ * @template TFieldValues - The shape of the form values.
7
+ */
8
+ interface UseFormItemWatchResult<TFieldValues extends FieldValues> {
9
+ /** Current snapshot of all form values. */
10
+ allValues: TFieldValues;
11
+ /** Watched dependency values (array when multiple, single value otherwise). */
12
+ depValues: unknown;
13
+ /** Whether the FormItem should render based on `shouldUpdate` evaluation. */
14
+ shouldRender: boolean;
15
+ }
16
+ /**
17
+ * Arguments for {@link useFormItemWatch}.
18
+ *
19
+ * @template TFieldValues - The shape of the form values.
20
+ */
21
+ interface UseFormItemWatchArgs<TFieldValues extends FieldValues> {
22
+ /** The `react-hook-form` `Control` instance. */
23
+ control: Control<TFieldValues>;
24
+ /** The `react-hook-form` methods instance. */
25
+ methods: UseFormReturn<TFieldValues>;
26
+ /** Field paths that trigger re-validation when their values change. */
27
+ dependencies?: FormItemProps<TFieldValues>['dependencies'];
28
+ /** Additional field paths to watch for re-render. */
29
+ watchNames?: FormItemProps<TFieldValues>['watchNames'];
30
+ /** Controls when the FormItem re-renders. */
31
+ shouldUpdate?: FormItemProps<TFieldValues>['shouldUpdate'];
32
+ /** The field path for this FormItem. */
33
+ name?: FieldPath<TFieldValues>;
34
+ }
35
+ /**
36
+ * Consolidates the three `useWatch` subscriptions (dependencies, all values,
37
+ * and named watches) along with `allValues` derivation and `shouldRender`
38
+ * gating into a single hook.
39
+ *
40
+ * This hook manages:
41
+ * 1. Watching dependency fields for cross-field re-validation.
42
+ * 2. Watching all values when `shouldUpdate` requires a full-form comparison.
43
+ * 3. Watching named fields specified via `watchNames`.
44
+ * 4. Computing `shouldRender` based on the `shouldUpdate` prop.
45
+ *
46
+ * @template TFieldValues - The shape of the form values.
47
+ * @param args - {@link UseFormItemWatchArgs}
48
+ * @returns {@link UseFormItemWatchResult} containing current values and render gate.
49
+ */
50
+ export declare function useFormItemWatch<TFieldValues extends FieldValues = FieldValues>({ control, methods, dependencies, watchNames, shouldUpdate, name, }: UseFormItemWatchArgs<TFieldValues>): UseFormItemWatchResult<TFieldValues>;
51
+ export {};