@quen-ui/components 0.0.14 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/README.md +2 -2
  2. package/dist/Accordion/Accordion.cjs.js +88 -0
  3. package/dist/Accordion/Accordion.d.ts +3 -0
  4. package/dist/Accordion/Accordion.es.js +89 -0
  5. package/dist/Accordion/AccordionGroup.cjs.js +82 -0
  6. package/dist/Accordion/AccordionGroup.d.ts +12 -0
  7. package/dist/Accordion/AccordionGroup.es.js +82 -0
  8. package/dist/Accordion/AccordionItem.cjs.js +71 -0
  9. package/dist/Accordion/AccordionItem.d.ts +3 -0
  10. package/dist/Accordion/AccordionItem.es.js +72 -0
  11. package/dist/Accordion/helpers.cjs.js +24 -0
  12. package/dist/Accordion/helpers.d.ts +25 -0
  13. package/dist/Accordion/helpers.es.js +24 -0
  14. package/dist/Accordion/index.cjs.js +7 -0
  15. package/dist/Accordion/index.d.ts +8 -0
  16. package/dist/Accordion/index.es.js +7 -0
  17. package/dist/Accordion/styles.cjs.js +97 -0
  18. package/dist/Accordion/styles.d.ts +23 -0
  19. package/dist/Accordion/styles.es.js +97 -0
  20. package/dist/Accordion/types.d.ts +142 -0
  21. package/dist/Accordion/useAccordionState.cjs.js +34 -0
  22. package/dist/Accordion/useAccordionState.d.ts +12 -0
  23. package/dist/Accordion/useAccordionState.es.js +34 -0
  24. package/dist/Alert/Alert.cjs.js +1 -1
  25. package/dist/Alert/Alert.es.js +1 -1
  26. package/dist/Alert/styles.cjs.js +14 -10
  27. package/dist/Alert/styles.es.js +14 -10
  28. package/dist/Avatar/styles.cjs.js +16 -11
  29. package/dist/Avatar/styles.es.js +16 -11
  30. package/dist/Badge/styles.cjs.js +7 -7
  31. package/dist/Badge/styles.es.js +7 -7
  32. package/dist/Breadcrumbs/BreadcrumbItem.cjs.js +6 -6
  33. package/dist/Breadcrumbs/BreadcrumbItem.es.js +6 -6
  34. package/dist/Breadcrumbs/Breadcrumbs.cjs.js +2 -3
  35. package/dist/Breadcrumbs/Breadcrumbs.es.js +2 -3
  36. package/dist/Breadcrumbs/styles.cjs.js +15 -15
  37. package/dist/Breadcrumbs/styles.es.js +15 -15
  38. package/dist/Button/Button.cjs.js +3 -3
  39. package/dist/Button/Button.es.js +6 -6
  40. package/dist/Button/index.d.ts +1 -1
  41. package/dist/Button/styles.cjs.js +49 -54
  42. package/dist/Button/styles.es.js +50 -55
  43. package/dist/Button/types.d.ts +2 -3
  44. package/dist/Calendar/Calendar.cjs.js +200 -0
  45. package/dist/Calendar/Calendar.d.ts +4 -0
  46. package/dist/Calendar/Calendar.es.js +201 -0
  47. package/dist/Calendar/DaysLevel.cjs.js +93 -0
  48. package/dist/Calendar/DaysLevel.d.ts +3 -0
  49. package/dist/Calendar/DaysLevel.es.js +94 -0
  50. package/dist/Calendar/MonthLevel.cjs.js +23 -0
  51. package/dist/Calendar/MonthLevel.d.ts +3 -0
  52. package/dist/Calendar/MonthLevel.es.js +24 -0
  53. package/dist/Calendar/YearsLevel.cjs.js +24 -0
  54. package/dist/Calendar/YearsLevel.d.ts +3 -0
  55. package/dist/Calendar/YearsLevel.es.js +25 -0
  56. package/dist/Calendar/helpers.cjs.js +60 -0
  57. package/dist/Calendar/helpers.d.ts +9 -0
  58. package/dist/Calendar/helpers.es.js +60 -0
  59. package/dist/Calendar/index.d.ts +2 -0
  60. package/dist/Calendar/styles.cjs.js +116 -0
  61. package/dist/Calendar/styles.d.ts +16 -0
  62. package/dist/Calendar/styles.es.js +116 -0
  63. package/dist/Calendar/types.d.ts +115 -0
  64. package/dist/Card/Card.cjs.js +4 -2
  65. package/dist/Card/Card.d.ts +1 -1
  66. package/dist/Card/Card.es.js +4 -2
  67. package/dist/Card/styles.cjs.js +2 -2
  68. package/dist/Card/styles.es.js +2 -2
  69. package/dist/Card/types.d.ts +2 -0
  70. package/dist/Checkbox/Checkbox.cjs.js +1 -1
  71. package/dist/Checkbox/Checkbox.es.js +1 -1
  72. package/dist/Checkbox/CheckboxGroup.cjs.js +22 -25
  73. package/dist/Checkbox/CheckboxGroup.es.js +22 -25
  74. package/dist/Checkbox/styles.cjs.js +24 -23
  75. package/dist/Checkbox/styles.es.js +24 -23
  76. package/dist/ColorPicker/ColorPicker.cjs.js +404 -0
  77. package/dist/ColorPicker/ColorPicker.d.ts +3 -0
  78. package/dist/ColorPicker/ColorPicker.es.js +405 -0
  79. package/dist/ColorPicker/InputColor.cjs.js +94 -0
  80. package/dist/ColorPicker/InputColor.d.ts +3 -0
  81. package/dist/ColorPicker/InputColor.es.js +95 -0
  82. package/dist/ColorPicker/InputsColor.cjs.js +177 -0
  83. package/dist/ColorPicker/InputsColor.d.ts +3 -0
  84. package/dist/ColorPicker/InputsColor.es.js +178 -0
  85. package/dist/ColorPicker/helpers.cjs.js +32 -0
  86. package/dist/ColorPicker/helpers.d.ts +4 -0
  87. package/dist/ColorPicker/helpers.es.js +32 -0
  88. package/dist/ColorPicker/index.cjs.js +7 -0
  89. package/dist/ColorPicker/index.d.ts +8 -0
  90. package/dist/ColorPicker/index.es.js +7 -0
  91. package/dist/ColorPicker/styles.cjs.js +234 -0
  92. package/dist/ColorPicker/styles.d.ts +43 -0
  93. package/dist/ColorPicker/styles.es.js +234 -0
  94. package/dist/ColorPicker/types.d.ts +56 -0
  95. package/dist/Divider/styles.cjs.js +12 -10
  96. package/dist/Divider/styles.es.js +12 -10
  97. package/dist/Drawer/Drawer.cjs.js +7 -3
  98. package/dist/Drawer/Drawer.es.js +5 -1
  99. package/dist/Drawer/styles.cjs.js +4 -5
  100. package/dist/Drawer/styles.es.js +4 -5
  101. package/dist/Dropdown/Dropdown.cjs.js +33 -4
  102. package/dist/Dropdown/Dropdown.d.ts +2 -2
  103. package/dist/Dropdown/Dropdown.es.js +32 -3
  104. package/dist/Dropdown/DropdownItem.cjs.js +4 -5
  105. package/dist/Dropdown/DropdownItem.es.js +4 -5
  106. package/dist/Dropdown/DropdownList.cjs.js +3 -2
  107. package/dist/Dropdown/DropdownList.es.js +6 -5
  108. package/dist/Dropdown/DropdownPortal.cjs.js +8 -5
  109. package/dist/Dropdown/DropdownPortal.d.ts +5 -3
  110. package/dist/Dropdown/DropdownPortal.es.js +9 -6
  111. package/dist/Dropdown/helpers.cjs.js +1 -1
  112. package/dist/Dropdown/helpers.es.js +1 -1
  113. package/dist/Dropdown/styles.cjs.js +28 -27
  114. package/dist/Dropdown/styles.d.ts +2 -0
  115. package/dist/Dropdown/styles.es.js +28 -27
  116. package/dist/EmptyState/EmptyState.cjs.js +51 -0
  117. package/dist/EmptyState/EmptyState.d.ts +3 -0
  118. package/dist/EmptyState/EmptyState.es.js +52 -0
  119. package/dist/EmptyState/index.d.ts +2 -0
  120. package/dist/EmptyState/types.d.ts +10 -0
  121. package/dist/Flex/Flex.d.ts +1 -1
  122. package/dist/Flex/types.d.ts +1 -0
  123. package/dist/Form/Field.cjs.js +175 -0
  124. package/dist/Form/Field.d.ts +3 -0
  125. package/dist/Form/Field.es.js +176 -0
  126. package/dist/Form/FieldArray.cjs.js +24 -0
  127. package/dist/Form/FieldArray.d.ts +3 -0
  128. package/dist/Form/FieldArray.es.js +25 -0
  129. package/dist/Form/Form.cjs.js +69 -0
  130. package/dist/Form/Form.d.ts +3 -0
  131. package/dist/Form/Form.es.js +69 -0
  132. package/dist/Form/defaultValidateMessages.cjs.js +51 -0
  133. package/dist/Form/defaultValidateMessages.d.ts +47 -0
  134. package/dist/Form/defaultValidateMessages.es.js +51 -0
  135. package/dist/Form/helpers.cjs.js +8 -0
  136. package/dist/Form/helpers.d.ts +1 -0
  137. package/dist/Form/helpers.es.js +8 -0
  138. package/dist/Form/index.cjs.js +13 -0
  139. package/dist/Form/index.d.ts +14 -0
  140. package/dist/Form/index.es.js +13 -0
  141. package/dist/Form/types.d.ts +147 -0
  142. package/dist/Form/useForm.cjs.js +230 -0
  143. package/dist/Form/useForm.d.ts +2 -0
  144. package/dist/Form/useForm.es.js +230 -0
  145. package/dist/Form/useWatch.cjs.js +14 -0
  146. package/dist/Form/useWatch.d.ts +3 -0
  147. package/dist/Form/useWatch.es.js +14 -0
  148. package/dist/Highlight/Highlight.cjs.js +113 -0
  149. package/dist/Highlight/Highlight.d.ts +3 -0
  150. package/dist/Highlight/Highlight.es.js +114 -0
  151. package/dist/Highlight/helpers.cjs.js +147 -0
  152. package/dist/Highlight/helpers.d.ts +27 -0
  153. package/dist/Highlight/helpers.es.js +147 -0
  154. package/dist/Highlight/index.d.ts +2 -0
  155. package/dist/Highlight/styles.cjs.js +11 -0
  156. package/dist/Highlight/styles.d.ts +4 -0
  157. package/dist/Highlight/styles.es.js +11 -0
  158. package/dist/Highlight/types.d.ts +53 -0
  159. package/dist/Image/styles.cjs.js +4 -5
  160. package/dist/Image/styles.es.js +4 -5
  161. package/dist/InputBase/InputBase.cjs.js +32 -0
  162. package/dist/InputBase/InputBase.d.ts +4 -0
  163. package/dist/InputBase/InputBase.es.js +33 -0
  164. package/dist/InputBase/index.d.ts +2 -0
  165. package/dist/InputBase/styles.cjs.js +61 -0
  166. package/dist/InputBase/styles.d.ts +7 -0
  167. package/dist/InputBase/styles.es.js +61 -0
  168. package/dist/InputBase/types.d.ts +25 -0
  169. package/dist/InputDate/InputDate.cjs.js +344 -0
  170. package/dist/InputDate/InputDate.d.ts +4 -0
  171. package/dist/InputDate/InputDate.es.js +345 -0
  172. package/dist/InputDate/helpers.cjs.js +78 -0
  173. package/dist/InputDate/helpers.d.ts +5 -0
  174. package/dist/InputDate/helpers.es.js +78 -0
  175. package/dist/InputDate/index.d.ts +2 -0
  176. package/dist/InputDate/styles.cjs.js +35 -0
  177. package/dist/InputDate/styles.d.ts +5 -0
  178. package/dist/InputDate/styles.es.js +35 -0
  179. package/dist/InputDate/types.d.ts +23 -0
  180. package/dist/InputNumber/InputNumber.cjs.js +70 -73
  181. package/dist/InputNumber/InputNumber.d.ts +1 -1
  182. package/dist/InputNumber/InputNumber.es.js +72 -75
  183. package/dist/InputNumber/styles.cjs.js +20 -60
  184. package/dist/InputNumber/styles.d.ts +4 -8
  185. package/dist/InputNumber/styles.es.js +21 -61
  186. package/dist/InputNumber/types.d.ts +2 -18
  187. package/dist/Layout/Header.cjs.js +27 -23
  188. package/dist/Layout/Header.d.ts +1 -1
  189. package/dist/Layout/Header.es.js +28 -24
  190. package/dist/Layout/Sidebar.cjs.js +24 -25
  191. package/dist/Layout/Sidebar.d.ts +1 -1
  192. package/dist/Layout/Sidebar.es.js +25 -26
  193. package/dist/Layout/index.d.ts +2 -2
  194. package/dist/Layout/styles.cjs.js +16 -52
  195. package/dist/Layout/styles.d.ts +2 -15
  196. package/dist/Layout/styles.es.js +16 -52
  197. package/dist/Layout/types.d.ts +7 -22
  198. package/dist/Loader/styles.cjs.js +5 -4
  199. package/dist/Loader/styles.es.js +5 -4
  200. package/dist/LoadingOverlay/LoadingOverlay.cjs.js +22 -0
  201. package/dist/LoadingOverlay/LoadingOverlay.d.ts +3 -0
  202. package/dist/LoadingOverlay/LoadingOverlay.es.js +23 -0
  203. package/dist/LoadingOverlay/index.d.ts +2 -0
  204. package/dist/LoadingOverlay/styles.cjs.js +28 -0
  205. package/dist/LoadingOverlay/styles.d.ts +5 -0
  206. package/dist/LoadingOverlay/styles.es.js +28 -0
  207. package/dist/LoadingOverlay/types.d.ts +16 -0
  208. package/dist/Menu/Menu.cjs.js +42 -0
  209. package/dist/Menu/Menu.d.ts +3 -0
  210. package/dist/Menu/Menu.es.js +43 -0
  211. package/dist/Menu/MenuItem.cjs.js +112 -0
  212. package/dist/Menu/MenuItem.d.ts +3 -0
  213. package/dist/Menu/MenuItem.es.js +113 -0
  214. package/dist/Menu/helpers.cjs.js +20 -0
  215. package/dist/Menu/helpers.d.ts +17 -0
  216. package/dist/Menu/helpers.es.js +20 -0
  217. package/dist/Menu/index.d.ts +2 -0
  218. package/dist/Menu/styles.cjs.js +98 -0
  219. package/dist/Menu/styles.d.ts +16 -0
  220. package/dist/Menu/styles.es.js +98 -0
  221. package/dist/Menu/types.d.ts +85 -0
  222. package/dist/Modal/Modal.cjs.js +17 -7
  223. package/dist/Modal/Modal.d.ts +1 -1
  224. package/dist/Modal/Modal.es.js +16 -6
  225. package/dist/Modal/styles.cjs.js +39 -9
  226. package/dist/Modal/styles.d.ts +4 -0
  227. package/dist/Modal/styles.es.js +40 -10
  228. package/dist/Modal/types.d.ts +2 -0
  229. package/dist/Notification/Notification.cjs.js +3 -3
  230. package/dist/Notification/Notification.es.js +3 -3
  231. package/dist/Notification/NotificationInstance.cjs.js +10 -17
  232. package/dist/Notification/NotificationInstance.es.js +8 -15
  233. package/dist/Notification/NotificationsStore.cjs.js +2 -7
  234. package/dist/Notification/NotificationsStore.es.js +2 -7
  235. package/dist/Notification/styles.cjs.js +6 -6
  236. package/dist/Notification/styles.es.js +6 -6
  237. package/dist/Pagination/Pagination.cjs.js +114 -0
  238. package/dist/Pagination/Pagination.d.ts +3 -0
  239. package/dist/Pagination/Pagination.es.js +115 -0
  240. package/dist/Pagination/index.d.ts +2 -0
  241. package/dist/Pagination/styles.cjs.js +54 -0
  242. package/dist/Pagination/styles.d.ts +2 -0
  243. package/dist/Pagination/styles.es.js +54 -0
  244. package/dist/Pagination/types.d.ts +49 -0
  245. package/dist/Progress/Progress.cjs.js +1 -1
  246. package/dist/Progress/Progress.es.js +1 -1
  247. package/dist/Progress/styles.cjs.js +5 -50
  248. package/dist/Progress/styles.es.js +5 -50
  249. package/dist/Progress/types.d.ts +1 -0
  250. package/dist/RadioButton/RadioButton.cjs.js +1 -1
  251. package/dist/RadioButton/RadioButton.es.js +1 -1
  252. package/dist/RadioButton/RadioButtonGroup.cjs.js +19 -22
  253. package/dist/RadioButton/RadioButtonGroup.es.js +19 -22
  254. package/dist/RadioButton/styles.cjs.js +11 -13
  255. package/dist/RadioButton/styles.es.js +11 -13
  256. package/dist/RichTextEditor/RichTextEditor.cjs.js +289 -0
  257. package/dist/RichTextEditor/RichTextEditor.d.ts +4 -0
  258. package/dist/RichTextEditor/RichTextEditor.es.js +290 -0
  259. package/dist/RichTextEditor/RichTextEditorColorControl.cjs.js +38 -0
  260. package/dist/RichTextEditor/RichTextEditorColorControl.d.ts +3 -0
  261. package/dist/RichTextEditor/RichTextEditorColorControl.es.js +39 -0
  262. package/dist/RichTextEditor/RichTextEditorTableControl.cjs.js +62 -0
  263. package/dist/RichTextEditor/RichTextEditorTableControl.d.ts +3 -0
  264. package/dist/RichTextEditor/RichTextEditorTableControl.es.js +63 -0
  265. package/dist/RichTextEditor/helpers.cjs.js +151 -0
  266. package/dist/RichTextEditor/helpers.d.ts +10 -0
  267. package/dist/RichTextEditor/helpers.es.js +151 -0
  268. package/dist/RichTextEditor/index.d.ts +2 -0
  269. package/dist/RichTextEditor/plugins.cjs.js +571 -0
  270. package/dist/RichTextEditor/plugins.d.ts +2 -0
  271. package/dist/RichTextEditor/plugins.es.js +571 -0
  272. package/dist/RichTextEditor/styles.cjs.js +60 -0
  273. package/dist/RichTextEditor/styles.d.ts +7 -0
  274. package/dist/RichTextEditor/styles.es.js +60 -0
  275. package/dist/RichTextEditor/types.d.ts +79 -0
  276. package/dist/Select/Select.cjs.js +30 -18
  277. package/dist/Select/Select.es.js +30 -18
  278. package/dist/Select/helpers.cjs.js +1 -1
  279. package/dist/Select/helpers.d.ts +24 -24
  280. package/dist/Select/helpers.es.js +1 -1
  281. package/dist/Select/styles.cjs.js +91 -118
  282. package/dist/Select/styles.d.ts +4 -5
  283. package/dist/Select/styles.es.js +91 -118
  284. package/dist/Select/types.d.ts +3 -23
  285. package/dist/Select/useSelect.cjs.js +8 -14
  286. package/dist/Select/useSelect.d.ts +20 -20
  287. package/dist/Select/useSelect.es.js +8 -14
  288. package/dist/Skeleton/Skeleton.cjs.js +35 -0
  289. package/dist/Skeleton/Skeleton.d.ts +3 -0
  290. package/dist/Skeleton/Skeleton.es.js +36 -0
  291. package/dist/Skeleton/SkeletonAvatar.cjs.js +17 -0
  292. package/dist/Skeleton/SkeletonAvatar.d.ts +3 -0
  293. package/dist/Skeleton/SkeletonAvatar.es.js +18 -0
  294. package/dist/Skeleton/SkeletonButton.cjs.js +21 -0
  295. package/dist/Skeleton/SkeletonButton.d.ts +3 -0
  296. package/dist/Skeleton/SkeletonButton.es.js +22 -0
  297. package/dist/Skeleton/SkeletonCard.cjs.js +15 -0
  298. package/dist/Skeleton/SkeletonCard.d.ts +3 -0
  299. package/dist/Skeleton/SkeletonCard.es.js +16 -0
  300. package/dist/Skeleton/SkeletonLayout.cjs.js +60 -0
  301. package/dist/Skeleton/SkeletonLayout.d.ts +3 -0
  302. package/dist/Skeleton/SkeletonLayout.es.js +61 -0
  303. package/dist/Skeleton/SkeletonList.cjs.js +39 -0
  304. package/dist/Skeleton/SkeletonList.d.ts +3 -0
  305. package/dist/Skeleton/SkeletonList.es.js +40 -0
  306. package/dist/Skeleton/SkeletonTextBlock.cjs.js +7 -0
  307. package/dist/Skeleton/SkeletonTextBlock.d.ts +5 -0
  308. package/dist/Skeleton/SkeletonTextBlock.es.js +8 -0
  309. package/dist/Skeleton/index.cjs.js +17 -0
  310. package/dist/Skeleton/index.d.ts +18 -0
  311. package/dist/Skeleton/index.es.js +17 -0
  312. package/dist/Skeleton/styles.cjs.js +59 -0
  313. package/dist/Skeleton/styles.d.ts +3 -0
  314. package/dist/Skeleton/styles.es.js +59 -0
  315. package/dist/Skeleton/types.d.ts +74 -0
  316. package/dist/Slider/Slider.cjs.js +282 -0
  317. package/dist/Slider/Slider.d.ts +3 -0
  318. package/dist/Slider/Slider.es.js +283 -0
  319. package/dist/Slider/index.d.ts +2 -0
  320. package/dist/Slider/styles.cjs.js +156 -0
  321. package/dist/Slider/styles.d.ts +35 -0
  322. package/dist/Slider/styles.es.js +156 -0
  323. package/dist/Slider/types.d.ts +53 -0
  324. package/dist/Spoiler/Spoiler.cjs.js +62 -0
  325. package/dist/Spoiler/Spoiler.d.ts +3 -0
  326. package/dist/Spoiler/Spoiler.es.js +63 -0
  327. package/dist/Spoiler/index.d.ts +2 -0
  328. package/dist/Spoiler/styles.cjs.js +15 -0
  329. package/dist/Spoiler/styles.d.ts +4 -0
  330. package/dist/Spoiler/styles.es.js +15 -0
  331. package/dist/Spoiler/types.d.ts +23 -0
  332. package/dist/Switch/Switch.cjs.js +32 -6
  333. package/dist/Switch/Switch.d.ts +2 -2
  334. package/dist/Switch/Switch.es.js +33 -7
  335. package/dist/Switch/styles.cjs.js +24 -7
  336. package/dist/Switch/styles.d.ts +4 -0
  337. package/dist/Switch/styles.es.js +24 -7
  338. package/dist/Switch/types.d.ts +3 -0
  339. package/dist/Tabs/Tab.cjs.js +8 -8
  340. package/dist/Tabs/Tab.es.js +8 -8
  341. package/dist/Tabs/TabPanel.cjs.js +3 -3
  342. package/dist/Tabs/TabPanel.es.js +3 -3
  343. package/dist/Tabs/Tabs.cjs.js +5 -4
  344. package/dist/Tabs/Tabs.d.ts +1 -1
  345. package/dist/Tabs/Tabs.es.js +5 -4
  346. package/dist/Tabs/TabsList.cjs.js +25 -1
  347. package/dist/Tabs/TabsList.d.ts +2 -2
  348. package/dist/Tabs/TabsList.es.js +25 -1
  349. package/dist/Tabs/styles.cjs.js +104 -34
  350. package/dist/Tabs/styles.d.ts +2 -0
  351. package/dist/Tabs/styles.es.js +104 -34
  352. package/dist/Tabs/types.d.ts +7 -3
  353. package/dist/Tag/Tag.cjs.js +4 -1
  354. package/dist/Tag/Tag.d.ts +1 -1
  355. package/dist/Tag/Tag.es.js +4 -1
  356. package/dist/Tag/styles.cjs.js +14 -9
  357. package/dist/Tag/styles.d.ts +2 -0
  358. package/dist/Tag/styles.es.js +14 -9
  359. package/dist/Tag/types.d.ts +6 -0
  360. package/dist/TextField/TextField.cjs.js +57 -56
  361. package/dist/TextField/TextField.d.ts +1 -1
  362. package/dist/TextField/TextField.es.js +58 -57
  363. package/dist/TextField/styles.cjs.js +9 -50
  364. package/dist/TextField/styles.d.ts +3 -8
  365. package/dist/TextField/styles.es.js +10 -51
  366. package/dist/TextField/types.d.ts +2 -20
  367. package/dist/Textarea/Textarea.cjs.js +57 -56
  368. package/dist/Textarea/Textarea.d.ts +1 -1
  369. package/dist/Textarea/Textarea.es.js +58 -57
  370. package/dist/Textarea/styles.cjs.js +10 -62
  371. package/dist/Textarea/styles.d.ts +3 -8
  372. package/dist/Textarea/styles.es.js +12 -64
  373. package/dist/Textarea/types.d.ts +2 -21
  374. package/dist/Tooltip/Tooltip.cjs.js +3 -1
  375. package/dist/Tooltip/Tooltip.d.ts +1 -1
  376. package/dist/Tooltip/Tooltip.es.js +3 -1
  377. package/dist/Tooltip/types.d.ts +3 -0
  378. package/dist/_virtual/client.cjs.js +5 -0
  379. package/dist/_virtual/client.cjs2.js +4 -0
  380. package/dist/_virtual/client.es.js +5 -0
  381. package/dist/_virtual/client.es2.js +4 -0
  382. package/dist/_virtual/index.cjs.js +4 -0
  383. package/dist/_virtual/index.es.js +4 -0
  384. package/dist/_virtual/react-dom-client.development.cjs.js +4 -0
  385. package/dist/_virtual/react-dom-client.development.es.js +4 -0
  386. package/dist/_virtual/react-dom-client.production.cjs.js +4 -0
  387. package/dist/_virtual/react-dom-client.production.es.js +4 -0
  388. package/dist/_virtual/scheduler.development.cjs.js +4 -0
  389. package/dist/_virtual/scheduler.development.es.js +4 -0
  390. package/dist/_virtual/scheduler.production.cjs.js +4 -0
  391. package/dist/_virtual/scheduler.production.es.js +4 -0
  392. package/dist/assets/box.svg.cjs.js +21 -0
  393. package/dist/assets/box.svg.es.js +5 -0
  394. package/dist/index.d.ts +1 -50
  395. package/dist/message/Message.cjs.js +42 -0
  396. package/dist/message/Message.d.ts +3 -0
  397. package/dist/message/Message.es.js +43 -0
  398. package/dist/message/MessageContext.cjs.js +101 -0
  399. package/dist/message/MessageContext.d.ts +4 -0
  400. package/dist/message/MessageContext.es.js +101 -0
  401. package/dist/message/index.cjs.js +8 -0
  402. package/dist/message/index.d.ts +6 -0
  403. package/dist/message/index.es.js +8 -0
  404. package/dist/message/styles.cjs.js +79 -0
  405. package/dist/message/styles.d.ts +11 -0
  406. package/dist/message/styles.es.js +79 -0
  407. package/dist/message/types.d.ts +42 -0
  408. package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.cjs.js +30 -0
  409. package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.es.js +31 -0
  410. package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.cjs.js +23 -0
  411. package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.es.js +24 -0
  412. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignCenter.cjs.js +7 -0
  413. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignCenter.es.js +7 -0
  414. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignJustified.cjs.js +7 -0
  415. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignJustified.es.js +7 -0
  416. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignLeft.cjs.js +7 -0
  417. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignLeft.es.js +7 -0
  418. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignRight.cjs.js +7 -0
  419. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignRight.es.js +7 -0
  420. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowBackUp.cjs.js +7 -0
  421. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowBackUp.es.js +7 -0
  422. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowForwardUp.cjs.js +7 -0
  423. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowForwardUp.es.js +7 -0
  424. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBlockquote.cjs.js +7 -0
  425. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBlockquote.es.js +7 -0
  426. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBold.cjs.js +7 -0
  427. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBold.es.js +7 -0
  428. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.cjs.js +7 -0
  429. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.es.js +7 -0
  430. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconClearFormatting.cjs.js +7 -0
  431. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconClearFormatting.es.js +7 -0
  432. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH1.cjs.js +7 -0
  433. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH1.es.js +7 -0
  434. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH2.cjs.js +7 -0
  435. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH2.es.js +7 -0
  436. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconHighlight.cjs.js +7 -0
  437. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconHighlight.es.js +7 -0
  438. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconImageInPicture.cjs.js +7 -0
  439. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconImageInPicture.es.js +7 -0
  440. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconItalic.cjs.js +7 -0
  441. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconItalic.es.js +7 -0
  442. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.cjs.js +7 -0
  443. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.es.js +7 -0
  444. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconList.cjs.js +7 -0
  445. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconList.es.js +7 -0
  446. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconListNumbers.cjs.js +7 -0
  447. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconListNumbers.es.js +7 -0
  448. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconStrikethrough.cjs.js +7 -0
  449. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconStrikethrough.es.js +7 -0
  450. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSubscript.cjs.js +7 -0
  451. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSubscript.es.js +7 -0
  452. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSuperscript.cjs.js +7 -0
  453. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSuperscript.es.js +7 -0
  454. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTable.cjs.js +7 -0
  455. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTable.es.js +7 -0
  456. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTextColor.cjs.js +7 -0
  457. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTextColor.es.js +7 -0
  458. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconUnderline.cjs.js +7 -0
  459. package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconUnderline.es.js +7 -0
  460. package/dist/node_modules/react-dom/cjs/react-dom-client.development.cjs.js +19870 -0
  461. package/dist/node_modules/react-dom/cjs/react-dom-client.development.es.js +19870 -0
  462. package/dist/node_modules/react-dom/cjs/react-dom-client.production.cjs.js +11524 -0
  463. package/dist/node_modules/react-dom/cjs/react-dom-client.production.es.js +11524 -0
  464. package/dist/node_modules/react-dom/client.cjs.js +31 -0
  465. package/dist/node_modules/react-dom/client.es.js +31 -0
  466. package/dist/node_modules/scheduler/cjs/scheduler.development.cjs.js +264 -0
  467. package/dist/node_modules/scheduler/cjs/scheduler.development.es.js +264 -0
  468. package/dist/node_modules/scheduler/cjs/scheduler.production.cjs.js +259 -0
  469. package/dist/node_modules/scheduler/cjs/scheduler.production.es.js +259 -0
  470. package/dist/node_modules/scheduler/index.cjs.js +17 -0
  471. package/dist/node_modules/scheduler/index.es.js +17 -0
  472. package/dist/packages/components/index.cjs.js +93 -0
  473. package/dist/packages/components/index.es.js +93 -0
  474. package/dist/typography/Text/Text.es.js +3 -3
  475. package/dist/typography/Title/Title.cjs.js +2 -0
  476. package/dist/typography/Title/Title.d.ts +1 -1
  477. package/dist/typography/Title/Title.es.js +2 -0
  478. package/dist/typography/Title/styles.cjs.js +3 -0
  479. package/dist/typography/Title/styles.es.js +3 -0
  480. package/dist/typography/Title/types.d.ts +1 -0
  481. package/package.json +16 -13
  482. package/dist/index.cjs.js +0 -63
  483. package/dist/index.es.js +0 -63
@@ -0,0 +1,51 @@
1
+ const typeTemplate = "${name} is not a valid ${type}";
2
+ const defaultValidateMessages = {
3
+ default: "Field validation error for ${name}",
4
+ required: "Please enter ${name}",
5
+ enum: "${name} must be one of [${enum}]",
6
+ whitespace: "${name} cannot be a blank character",
7
+ date: {
8
+ format: "${name} date format is invalid",
9
+ parse: "${name} cannot be converted to a date",
10
+ invalid: "${name} is an invalid date"
11
+ },
12
+ types: {
13
+ string: typeTemplate,
14
+ method: typeTemplate,
15
+ array: typeTemplate,
16
+ object: typeTemplate,
17
+ number: typeTemplate,
18
+ date: typeTemplate,
19
+ boolean: typeTemplate,
20
+ integer: typeTemplate,
21
+ float: typeTemplate,
22
+ regexp: typeTemplate,
23
+ email: typeTemplate,
24
+ url: typeTemplate,
25
+ hex: typeTemplate
26
+ },
27
+ string: {
28
+ len: "${name} must be ${len} characters",
29
+ min: "${name} must be at least ${min} characters",
30
+ max: "${name} must be up to ${max} characters",
31
+ range: "${name} must be between ${min}-${max} characters"
32
+ },
33
+ number: {
34
+ len: "${name} must be equal to ${len}",
35
+ min: "${name} must be minimum ${min}",
36
+ max: "${name} must be maximum ${max}",
37
+ range: "${name} must be between ${min}-${max}"
38
+ },
39
+ array: {
40
+ len: "Must be ${len} ${name}",
41
+ min: "At least ${min} ${name}",
42
+ max: "At most ${max} ${name}",
43
+ range: "The amount of ${name} must be between ${min}-${max}"
44
+ },
45
+ pattern: {
46
+ mismatch: "${name} does not match the pattern ${pattern}"
47
+ }
48
+ };
49
+ export {
50
+ defaultValidateMessages
51
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ruleValidators = {
4
+ email: (v) => /\S+@\S+\.\S+/.test(String(v)),
5
+ url: (v) => /^(https?:\/\/)?([\w.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/.test(String(v)),
6
+ number: (v) => !isNaN(Number(v))
7
+ };
8
+ exports.ruleValidators = ruleValidators;
@@ -0,0 +1 @@
1
+ export declare const ruleValidators: Record<string, (v: any) => boolean>;
@@ -0,0 +1,8 @@
1
+ const ruleValidators = {
2
+ email: (v) => /\S+@\S+\.\S+/.test(String(v)),
3
+ url: (v) => /^(https?:\/\/)?([\w.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/.test(String(v)),
4
+ number: (v) => !isNaN(Number(v))
5
+ };
6
+ export {
7
+ ruleValidators
8
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Form$1 = require("./Form.cjs.js");
4
+ const Field = require("./Field.cjs.js");
5
+ const FieldArray = require("./FieldArray.cjs.js");
6
+ const useForm = require("./useForm.cjs.js");
7
+ const useWatch = require("./useWatch.cjs.js");
8
+ const Form = Form$1.Form;
9
+ Form.Field = Field;
10
+ Form.FieldArray = FieldArray;
11
+ Form.useWatch = useWatch.useWatch;
12
+ Form.useForm = useForm.useForm;
13
+ exports.Form = Form;
@@ -0,0 +1,14 @@
1
+ import { Form as FormComponent } from './Form';
2
+ import { default as Field } from './Field';
3
+ import { default as FieldArray } from './FieldArray';
4
+ import { useForm } from './useForm';
5
+ import { useWatch } from './useWatch';
6
+ type TForm = typeof FormComponent & {
7
+ useForm: typeof useForm;
8
+ useWatch: typeof useWatch;
9
+ Field: typeof Field;
10
+ FieldArray: typeof FieldArray;
11
+ };
12
+ declare const Form: TForm;
13
+ export type { IFormInstance, IFormFieldProps, IFormFieldArrayProps, TFormOnValueChange, TFormFieldValidate, IFormFieldError, IFormValidationRule, IUseFormOptions, IFormProps } from './types';
14
+ export { Form };
@@ -0,0 +1,13 @@
1
+ import { Form as Form$1 } from "./Form.es.js";
2
+ import Field from "./Field.es.js";
3
+ import FieldArray from "./FieldArray.es.js";
4
+ import { useForm } from "./useForm.es.js";
5
+ import { useWatch } from "./useWatch.es.js";
6
+ const Form = Form$1;
7
+ Form.Field = Field;
8
+ Form.FieldArray = FieldArray;
9
+ Form.useWatch = useWatch;
10
+ Form.useForm = useForm;
11
+ export {
12
+ Form
13
+ };
@@ -0,0 +1,147 @@
1
+ import { ReactElement, ReactNode, DOMAttributes, FormEvent, ElementType } from 'react';
2
+ import { TKeyObjectType, TValueObjectType } from '../../../helpers/src';
3
+ import { defaultValidateMessages } from './/defaultValidateMessages';
4
+ import { IFlexProps } from '../Flex';
5
+ type DeepPartial<T> = T extends any[] ? T : T extends Record<string, any> ? {
6
+ [P in keyof T]?: DeepPartial<T[P]>;
7
+ } : T;
8
+ export interface IFormInstance<T extends Record<string, any>> {
9
+ /** Set value of a specific field */
10
+ setFieldValue: (name: TKeyObjectType<T>, value: T[keyof T]) => void;
11
+ /** Get current value of a specific field */
12
+ getFieldValue: (name: TKeyObjectType<T>) => TValueObjectType<T, TKeyObjectType<T>>;
13
+ /** Get all field values */
14
+ getFieldsValue: (names?: TKeyObjectType<T>[]) => Partial<T> | T;
15
+ /** */
16
+ registerField: (name: TKeyObjectType<T>, config: IFormConfigField<T>) => void;
17
+ /** */
18
+ unregisterField: (name: TKeyObjectType<T>) => void;
19
+ /** Reset all fields to their initial values */
20
+ resetFields: () => void;
21
+ /** */
22
+ fields: Record<TKeyObjectType<T>, IFormConfigField<T>>;
23
+ /** Set validation errors manually */
24
+ setErrors: (errors: IFormFieldError<T>[] | ((prev: IFormFieldError<T>[]) => IFormFieldError<T>[])) => void;
25
+ /** */
26
+ arrayHelpers: (name: TKeyObjectType<T>) => IFormFieldArrayHelpers<T>;
27
+ /** */
28
+ registerSubscribe: (name: TKeyObjectType<T>, callback: TFormFieldSubscribe<T>) => void;
29
+ /** */
30
+ unregisterSubscribe: (name: TKeyObjectType<T>) => void;
31
+ /** Trigger validation manually */
32
+ triggerValidation: (name: TKeyObjectType<T>, value: TValueObjectType<T, TKeyObjectType<T>>, values: T) => void;
33
+ /** */
34
+ setFieldsValue: (values: Record<TKeyObjectType<T>, any>) => void;
35
+ /** Validate all fields and return a Promise */
36
+ onValidateFields: () => Promise<boolean>;
37
+ /** Get all field errors */
38
+ getFieldsError: (names?: TKeyObjectType<T>[]) => IFormFieldError<T>[];
39
+ /** Get errors for a specific field */
40
+ getFieldError: (name: TKeyObjectType<T>) => string[];
41
+ /** Programmatically submit the form */
42
+ submit: () => void;
43
+ /** */
44
+ setSubmitCallback: (callback: () => (e?: FormEvent) => Promise<void>) => void;
45
+ }
46
+ export interface IFormContext<T extends Record<string, any>> extends IFormInstance<T> {
47
+ validateMessages: typeof defaultValidateMessages;
48
+ validateTrigger: TFieldTrigger | TFieldTrigger[];
49
+ trigger: TFieldTrigger | TFieldTrigger[];
50
+ }
51
+ export type TFormFieldValidate<T> = (value: any, values: T) => Promise<string | undefined> | string | undefined;
52
+ export interface IFormFieldArrayHelpers<T extends Record<string, any> = Record<string, any>> {
53
+ /** Add a new item */
54
+ add: (value?: any) => void;
55
+ /** Remove item by index */
56
+ remove: (index: number) => void;
57
+ /** Move item between positions */
58
+ insert: (index: number, value: TValueObjectType<T, TKeyObjectType<T>>[0]) => void;
59
+ }
60
+ export interface IFormProps<T extends Record<string, any> = Record<string, any>> extends IFlexProps {
61
+ /** Form instance returned by useForm */
62
+ form: IFormInstance<T>;
63
+ /** Form fields and UI elements */
64
+ children: ReactNode;
65
+ /** Called when validation passes and form is submitted */
66
+ onFinish?: (values: T) => void | Promise<void>;
67
+ /** Called when validation fails */
68
+ onFinishFailed?: (values: T, errors: IFormFieldError<T>[]) => void | Promise<void>;
69
+ /** Custom validation messages */
70
+ validateMessages?: DeepPartial<typeof defaultValidateMessages>;
71
+ /** When validation should be triggered (onChange, onBlur, etc) */
72
+ validateTrigger?: TFieldTrigger | TFieldTrigger[];
73
+ /** Event to trigger field value updates */
74
+ trigger?: TFieldTrigger | TFieldTrigger[];
75
+ /** Optional name of the form */
76
+ name?: string;
77
+ as?: ElementType;
78
+ [key: string]: any;
79
+ }
80
+ export type TFieldTrigger = "onChange" | "onBlur" | "onFocus" | keyof DOMAttributes<any>;
81
+ export interface IFormFieldProps<T> {
82
+ /** Field name (supports nested paths) */
83
+ name: TKeyObjectType<T>;
84
+ /** Form control (e.g., TextField, Checkbox) */
85
+ children: ReactElement;
86
+ /** Default field value */
87
+ defaultValue?: any;
88
+ /** Custom validation logic */
89
+ validate?: TFormFieldValidate<T>;
90
+ /** Name of the prop that represents the value */
91
+ valuePropName?: string;
92
+ /** Built-in validation rules (min, max, pattern, etc) */
93
+ rules?: IFormValidationRule[];
94
+ /** Triggers for validation. */
95
+ validateTrigger?: TFieldTrigger | TFieldTrigger[];
96
+ /** Triggers for value update */
97
+ trigger?: TFieldTrigger | TFieldTrigger[];
98
+ /** Other fields that affect validation */
99
+ dependencies?: TKeyObjectType<T>[];
100
+ }
101
+ export interface IFormFieldArrayProps<T extends Record<string, any> = Record<string, any>> {
102
+ /** Field array name */
103
+ name: string;
104
+ /** Render function that returns the UI for the array fields */
105
+ children: (helpers: IFormFieldArrayHelpers<T>, fields: IFormConfigFieldArrayItem<T>[]) => ReactNode;
106
+ }
107
+ export interface IFormValidationRule {
108
+ /** Minimum number of characters */
109
+ minLength?: number;
110
+ /** Maximum number of characters*/
111
+ maxLength?: number;
112
+ /** Must match a regular expression */
113
+ pattern?: RegExp;
114
+ /** Checks value type */
115
+ type?: "email" | "url" | "number";
116
+ /** Custom validation message */
117
+ message?: string;
118
+ /** Field is required */
119
+ required?: boolean;
120
+ }
121
+ export interface IFormConfigField<T> {
122
+ validate?: (value: TValueObjectType<T, TKeyObjectType<T>>, values: T) => Promise<string[]> | string[];
123
+ rules?: IFormValidationRule[];
124
+ defaultValue?: TValueObjectType<T, TKeyObjectType<T>>;
125
+ dependencies?: TKeyObjectType<T>[];
126
+ }
127
+ export interface IFormConfigFieldArrayItem<T extends Record<string, any> = Record<string, any>> {
128
+ value: TValueObjectType<T, TKeyObjectType<T>>[0];
129
+ }
130
+ export interface IUseFormOptions<T = Record<string, any>> {
131
+ /** Initial field values */
132
+ initialValues?: Partial<T>;
133
+ /** Callback when any field value changes */
134
+ onValueChange?: TFormOnValueChange<T>;
135
+ }
136
+ export type TFormFieldSubscribe<T = Record<string, any>> = (newValue: TValueObjectType<T, TKeyObjectType<T>>) => void;
137
+ export interface IFormFieldSubscribe<T> {
138
+ name: TKeyObjectType<T>;
139
+ func: TFormFieldSubscribe<T>;
140
+ }
141
+ export type TFormOnValueChange<T> = (changedValues: Partial<T>, values: T) => void;
142
+ export interface IFormFieldError<T> {
143
+ name: TKeyObjectType<T>;
144
+ errors: string[];
145
+ warnings: string[];
146
+ }
147
+ export {};
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const helpers = require("@quen-ui/helpers");
5
+ const useForm = (options) => {
6
+ const [values, setValues] = React.useState(options?.initialValues ?? {});
7
+ const [fields, setFields] = React.useState({});
8
+ const [errors, setErrors] = React.useState([]);
9
+ const [subscribes, setSubscribes] = React.useState([]);
10
+ const [submitCallback, setSubmitCallback] = React.useState();
11
+ const registerField = React.useCallback(
12
+ (name, { defaultValue, rules, validate, dependencies }) => {
13
+ const value = defaultValue ?? helpers.getValueObject(options?.initialValues ?? {}, name);
14
+ setValues((prev) => helpers.setValueObject(prev, name, value));
15
+ setFields((prev) => ({
16
+ ...prev,
17
+ [name]: { validate, rules, defaultValue, dependencies }
18
+ }));
19
+ },
20
+ []
21
+ );
22
+ const unregisterField = React.useCallback((name) => {
23
+ setValues((prevState) => {
24
+ return helpers.deleteValueObject(prevState, name);
25
+ });
26
+ setErrors((prevState) => {
27
+ return prevState.filter((error) => error.name !== name);
28
+ });
29
+ setFields((prevState) => {
30
+ const copy = { ...prevState };
31
+ delete copy[name];
32
+ return copy;
33
+ });
34
+ }, []);
35
+ const registerSubscribe = React.useCallback(
36
+ (name, callback) => {
37
+ setSubscribes((prev) => [...prev, { name, func: callback }]);
38
+ },
39
+ []
40
+ );
41
+ const unregisterSubscribe = React.useCallback((name) => {
42
+ setSubscribes((prev) => prev.filter((s) => s.name !== name));
43
+ }, []);
44
+ const triggerValidation = React.useCallback(
45
+ (name, value, _values) => {
46
+ const field = fields[name];
47
+ if (field?.validate) {
48
+ field.validate(value, _values);
49
+ }
50
+ },
51
+ [fields]
52
+ );
53
+ const notifyWatchValueField = React.useCallback(
54
+ (updates) => {
55
+ subscribes.forEach((subscribe) => {
56
+ if (Object.keys(updates).includes(subscribe.name)) {
57
+ subscribe.func(updates[subscribe.name]);
58
+ }
59
+ });
60
+ },
61
+ [subscribes, values]
62
+ );
63
+ const updateValues = React.useCallback(
64
+ (updates) => {
65
+ let changedValues = {};
66
+ let nextValues = {};
67
+ setValues((prev) => {
68
+ nextValues = { ...prev };
69
+ for (const [name, value] of Object.entries(updates)) {
70
+ nextValues = helpers.setValueObject(
71
+ nextValues,
72
+ name,
73
+ value
74
+ );
75
+ changedValues = helpers.setValueObject(
76
+ changedValues,
77
+ name,
78
+ value
79
+ );
80
+ }
81
+ return nextValues;
82
+ });
83
+ setErrors((prev) => {
84
+ return prev.filter(
85
+ (error) => !Object.keys(updates).includes(error.name)
86
+ );
87
+ });
88
+ Object.entries(fields).forEach(([fieldName, field]) => {
89
+ const deps = field.dependencies ?? [];
90
+ if (deps.some((dep) => dep in updates)) {
91
+ const depValue = helpers.getValueObject(
92
+ nextValues,
93
+ fieldName,
94
+ ""
95
+ );
96
+ triggerValidation(
97
+ fieldName,
98
+ depValue,
99
+ nextValues
100
+ );
101
+ }
102
+ });
103
+ notifyWatchValueField(updates);
104
+ options?.onValueChange?.(changedValues, nextValues);
105
+ },
106
+ [fields, triggerValidation, options, notifyWatchValueField]
107
+ );
108
+ const setFieldValue = React.useCallback(
109
+ (name, value) => {
110
+ updateValues({ [name]: value });
111
+ },
112
+ [updateValues]
113
+ );
114
+ const arrayHelpers = (name) => ({
115
+ add: (value) => {
116
+ setValues((prev) => {
117
+ const currentValue = helpers.getValueObject(prev, name, []);
118
+ return helpers.setValueObject(
119
+ prev,
120
+ `${name}[${currentValue.length}]`,
121
+ value
122
+ );
123
+ });
124
+ },
125
+ remove: (index) => {
126
+ setValues((prev) => {
127
+ const current = helpers.getValueObject(prev, name, []);
128
+ const newArr = current.filter((_, i) => i !== index);
129
+ return helpers.setValueObject(prev, name, newArr);
130
+ });
131
+ },
132
+ insert: (index, value) => {
133
+ setValues((prev) => {
134
+ const current = helpers.getValueObject(prev, name, []);
135
+ const newArr = [
136
+ ...current.slice(0, index),
137
+ value,
138
+ ...current.slice(index)
139
+ ];
140
+ return helpers.setValueObject(prev, name, newArr);
141
+ });
142
+ }
143
+ });
144
+ const onValidateFields = React.useCallback(async () => {
145
+ const results = await Promise.all(
146
+ Object.entries(fields).map(async ([fieldName, config]) => {
147
+ const { validate } = config;
148
+ if (!validate) return null;
149
+ return validate(getFieldValue(fieldName), values);
150
+ })
151
+ );
152
+ return results.flat().filter(Boolean).length === 0;
153
+ }, [fields, values]);
154
+ const resetFields = React.useCallback(() => {
155
+ setValues(options?.initialValues ?? {});
156
+ setErrors([]);
157
+ }, [options?.initialValues]);
158
+ const setFieldsValue = React.useCallback(
159
+ (_values) => {
160
+ updateValues(_values);
161
+ },
162
+ [updateValues]
163
+ );
164
+ const getFieldError = React.useCallback(
165
+ (name) => {
166
+ return errors.filter((error) => error.name === name)?.[0]?.errors ?? [];
167
+ },
168
+ [errors]
169
+ );
170
+ const getFieldsError = React.useCallback(
171
+ (names) => {
172
+ if (!names) {
173
+ return errors;
174
+ }
175
+ return errors.filter((error) => names.includes(error.name));
176
+ },
177
+ [errors]
178
+ );
179
+ const getFieldValue = React.useCallback(
180
+ (name) => {
181
+ return helpers.getValueObject(values, name);
182
+ },
183
+ [values]
184
+ );
185
+ const getFieldsValue = React.useCallback(
186
+ (names) => {
187
+ if (names) {
188
+ let fieldsValue = {};
189
+ names.forEach((name) => {
190
+ const value = helpers.getValueObject(values, name);
191
+ fieldsValue = {
192
+ fieldsValue,
193
+ ...helpers.setValueObject(
194
+ fieldsValue,
195
+ name,
196
+ value
197
+ )
198
+ };
199
+ });
200
+ return fieldsValue;
201
+ }
202
+ return values;
203
+ },
204
+ [values]
205
+ );
206
+ const submit = () => {
207
+ submitCallback?.();
208
+ };
209
+ return {
210
+ getFieldValue,
211
+ getFieldsValue,
212
+ registerField,
213
+ resetFields,
214
+ setFieldValue,
215
+ setErrors,
216
+ fields,
217
+ unregisterField,
218
+ arrayHelpers,
219
+ registerSubscribe,
220
+ unregisterSubscribe,
221
+ triggerValidation,
222
+ setFieldsValue,
223
+ onValidateFields,
224
+ getFieldError,
225
+ getFieldsError,
226
+ submit,
227
+ setSubmitCallback
228
+ };
229
+ };
230
+ exports.useForm = useForm;
@@ -0,0 +1,2 @@
1
+ import { IFormInstance, IUseFormOptions } from './types';
2
+ export declare const useForm: <T extends Record<string, any>>(options?: IUseFormOptions<T>) => IFormInstance<T>;