@cube-dev/ui-kit 0.182.0 → 0.184.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 (1160) hide show
  1. package/dist/CHANGELOG.md +40 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +48 -31
  3. package/dist/_internal/hooks/use-debounced-value.js.map +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +22 -7
  5. package/dist/_internal/hooks/use-deprecation-warning.js.map +1 -1
  6. package/dist/_internal/hooks/use-event.js +1 -1
  7. package/dist/_internal/hooks/use-event.js.map +1 -1
  8. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  9. package/dist/_internal/hooks/use-is-first-render.js.map +1 -1
  10. package/dist/_internal/hooks/use-sync-ref.js +12 -4
  11. package/dist/_internal/hooks/use-sync-ref.js.map +1 -1
  12. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  13. package/dist/_internal/hooks/use-timer/timer.js.map +1 -1
  14. package/dist/_internal/hooks/use-timer/use-timer.js +90 -20
  15. package/dist/_internal/hooks/use-timer/use-timer.js.map +1 -1
  16. package/dist/_internal/hooks/use-warn.js +4 -4
  17. package/dist/_internal/hooks/use-warn.js.map +1 -1
  18. package/dist/components/Block.js +29 -7
  19. package/dist/components/Block.js.map +1 -1
  20. package/dist/components/CollectionItem.js +1 -1
  21. package/dist/components/CollectionItem.js.map +1 -1
  22. package/dist/components/GlobalStyles.js +33 -9
  23. package/dist/components/GlobalStyles.js.map +1 -1
  24. package/dist/components/GridProvider.js +4 -4
  25. package/dist/components/GridProvider.js.map +1 -1
  26. package/dist/components/HiddenInput.js +1 -1
  27. package/dist/components/HiddenInput.js.map +1 -1
  28. package/dist/components/Root.js +137 -42
  29. package/dist/components/Root.js.map +1 -1
  30. package/dist/components/actions/Action/Action.js +20 -8
  31. package/dist/components/actions/Action/Action.js.map +1 -1
  32. package/dist/components/actions/Banner/Banner.js +91 -22
  33. package/dist/components/actions/Banner/Banner.js.map +1 -1
  34. package/dist/components/actions/Button/Button.js +5 -5
  35. package/dist/components/actions/Button/Button.js.map +1 -1
  36. package/dist/components/actions/ButtonGroup/ButtonGroup.js +15 -5
  37. package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
  38. package/dist/components/actions/ButtonSplit/ButtonSplit.js +2 -1
  39. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  40. package/dist/components/actions/ButtonSplit/context.js +1 -1
  41. package/dist/components/actions/ButtonSplit/context.js.map +1 -1
  42. package/dist/components/actions/CommandMenu/CommandMenu.js +73 -80
  43. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  44. package/dist/components/actions/CommandMenu/styled.js +1 -1
  45. package/dist/components/actions/CommandMenu/styled.js.map +1 -1
  46. package/dist/components/actions/ItemAction/ItemAction.js +205 -68
  47. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  48. package/dist/components/actions/ItemActionContext.js +26 -7
  49. package/dist/components/actions/ItemActionContext.js.map +1 -1
  50. package/dist/components/actions/ItemActionsWrapper.js +215 -84
  51. package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
  52. package/dist/components/actions/ItemButton/ItemButton.js +2 -2
  53. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  54. package/dist/components/actions/Link/Link.js +16 -7
  55. package/dist/components/actions/Link/Link.js.map +1 -1
  56. package/dist/components/actions/Menu/Menu.js +127 -72
  57. package/dist/components/actions/Menu/Menu.js.map +1 -1
  58. package/dist/components/actions/Menu/MenuItem.js +120 -43
  59. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  60. package/dist/components/actions/Menu/MenuSection.js +79 -31
  61. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  62. package/dist/components/actions/Menu/MenuTrigger.js +316 -112
  63. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  64. package/dist/components/actions/Menu/SubMenuTrigger.js +6 -12
  65. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  66. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  67. package/dist/components/actions/Menu/SubmenuTriggerContext.js.map +1 -1
  68. package/dist/components/actions/Menu/context.js +1 -1
  69. package/dist/components/actions/Menu/context.js.map +1 -1
  70. package/dist/components/actions/Menu/styled.js +1 -1
  71. package/dist/components/actions/Menu/styled.js.map +1 -1
  72. package/dist/components/actions/actions-run.js +1 -1
  73. package/dist/components/actions/actions-run.js.map +1 -1
  74. package/dist/components/actions/index.js +1 -1
  75. package/dist/components/actions/index.js.map +1 -1
  76. package/dist/components/actions/use-action.js +3 -3
  77. package/dist/components/actions/use-action.js.map +1 -1
  78. package/dist/components/actions/use-anchored-menu.js +6 -6
  79. package/dist/components/actions/use-anchored-menu.js.map +1 -1
  80. package/dist/components/actions/use-context-menu.js +12 -12
  81. package/dist/components/actions/use-context-menu.js.map +1 -1
  82. package/dist/components/content/ActiveZone/ActiveZone.js +84 -18
  83. package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
  84. package/dist/components/content/Alert/Alert.js +18 -7
  85. package/dist/components/content/Alert/Alert.js.map +1 -1
  86. package/dist/components/content/Alert/use-alert.js +53 -15
  87. package/dist/components/content/Alert/use-alert.js.map +1 -1
  88. package/dist/components/content/Avatar/Avatar.js +51 -13
  89. package/dist/components/content/Avatar/Avatar.js.map +1 -1
  90. package/dist/components/content/Badge/Badge.js +43 -10
  91. package/dist/components/content/Badge/Badge.js.map +1 -1
  92. package/dist/components/content/Card/Card.js +29 -7
  93. package/dist/components/content/Card/Card.js.map +1 -1
  94. package/dist/components/content/Content.js +30 -7
  95. package/dist/components/content/Content.js.map +1 -1
  96. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -2
  97. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  98. package/dist/components/content/CopySnippet/CopySnippet.js +220 -60
  99. package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
  100. package/dist/components/content/Disclosure/Disclosure.js +453 -194
  101. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  102. package/dist/components/content/Divider.js +52 -14
  103. package/dist/components/content/Divider.js.map +1 -1
  104. package/dist/components/content/Footer.js +29 -7
  105. package/dist/components/content/Footer.js.map +1 -1
  106. package/dist/components/content/Header.js +29 -7
  107. package/dist/components/content/Header.js.map +1 -1
  108. package/dist/components/content/HotKeys/HotKeys.js +55 -27
  109. package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
  110. package/dist/components/content/InfoBadge/InfoBadge.js +8 -8
  111. package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
  112. package/dist/components/content/InlineInput/InlineInput.js +429 -188
  113. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  114. package/dist/components/content/Item/Item.d.ts +27 -2
  115. package/dist/components/content/Item/Item.js +418 -152
  116. package/dist/components/content/Item/Item.js.map +1 -1
  117. package/dist/components/content/ItemBadge/ItemBadge.js +173 -59
  118. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  119. package/dist/components/content/ItemCard/ItemCard.js +34 -9
  120. package/dist/components/content/ItemCard/ItemCard.js.map +1 -1
  121. package/dist/components/content/Layout/GridLayout.js +38 -10
  122. package/dist/components/content/Layout/GridLayout.js.map +1 -1
  123. package/dist/components/content/Layout/Layout.js +30 -13
  124. package/dist/components/content/Layout/Layout.js.map +1 -1
  125. package/dist/components/content/Layout/LayoutBlock.js +33 -8
  126. package/dist/components/content/Layout/LayoutBlock.js.map +1 -1
  127. package/dist/components/content/Layout/LayoutCenter.js +48 -11
  128. package/dist/components/content/Layout/LayoutCenter.js.map +1 -1
  129. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  130. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  131. package/dist/components/content/Layout/LayoutContent.js +1 -1
  132. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  133. package/dist/components/content/Layout/LayoutContext.js +30 -21
  134. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  135. package/dist/components/content/Layout/LayoutFlex.js +33 -8
  136. package/dist/components/content/Layout/LayoutFlex.js.map +1 -1
  137. package/dist/components/content/Layout/LayoutFooter.js +53 -14
  138. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  139. package/dist/components/content/Layout/LayoutGrid.js +48 -11
  140. package/dist/components/content/Layout/LayoutGrid.js.map +1 -1
  141. package/dist/components/content/Layout/LayoutHeader.js +216 -57
  142. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  143. package/dist/components/content/Layout/LayoutPane.js +60 -14
  144. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  145. package/dist/components/content/Layout/LayoutPanel.js +59 -17
  146. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  147. package/dist/components/content/Layout/LayoutPanelHeader.js +89 -27
  148. package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
  149. package/dist/components/content/Layout/LayoutToolbar.js +33 -8
  150. package/dist/components/content/Layout/LayoutToolbar.js.map +1 -1
  151. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +206 -119
  152. package/dist/components/content/Layout/hooks/useTinyScrollbar.js.map +1 -1
  153. package/dist/components/content/Layout/index.js +1 -1
  154. package/dist/components/content/Layout/index.js.map +1 -1
  155. package/dist/components/content/Layout/utils.js +1 -1
  156. package/dist/components/content/Layout/utils.js.map +1 -1
  157. package/dist/components/content/Paragraph.js +25 -9
  158. package/dist/components/content/Paragraph.js.map +1 -1
  159. package/dist/components/content/Placeholder/Placeholder.js +52 -14
  160. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  161. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  162. package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
  163. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  164. package/dist/components/content/PrismCode/prismSetup.js.map +1 -1
  165. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +52 -17
  166. package/dist/components/content/PrismDiffCode/PrismDiffCode.js.map +1 -1
  167. package/dist/components/content/Result/Result.js +117 -38
  168. package/dist/components/content/Result/Result.js.map +1 -1
  169. package/dist/components/content/Skeleton/Skeleton.js +26 -17
  170. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  171. package/dist/components/content/Tag/Tag.d.ts +6 -1
  172. package/dist/components/content/Tag/Tag.js +68 -13
  173. package/dist/components/content/Tag/Tag.js.map +1 -1
  174. package/dist/components/content/Text.js +61 -14
  175. package/dist/components/content/Text.js.map +1 -1
  176. package/dist/components/content/TextItem/TextItem.js +37 -16
  177. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  178. package/dist/components/content/Title.js +98 -23
  179. package/dist/components/content/Title.js.map +1 -1
  180. package/dist/components/content/Tree/Tree.js +32 -32
  181. package/dist/components/content/Tree/Tree.js.map +1 -1
  182. package/dist/components/content/Tree/TreeNode.js +10 -10
  183. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  184. package/dist/components/content/Tree/styled.js +1 -1
  185. package/dist/components/content/Tree/styled.js.map +1 -1
  186. package/dist/components/content/Tree/tree-index.js +1 -1
  187. package/dist/components/content/Tree/tree-index.js.map +1 -1
  188. package/dist/components/content/Tree/use-checkbox-tree.js +123 -89
  189. package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
  190. package/dist/components/content/Tree/use-load-data.js +52 -21
  191. package/dist/components/content/Tree/use-load-data.js.map +1 -1
  192. package/dist/components/content/highlightText.js +1 -1
  193. package/dist/components/content/highlightText.js.map +1 -1
  194. package/dist/components/content/use-auto-tooltip.d.ts +1 -1
  195. package/dist/components/content/use-auto-tooltip.js +231 -125
  196. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  197. package/dist/components/data/DataTable/DataTable.js +31 -31
  198. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  199. package/dist/components/data/ItemTable/ItemTable.js +41 -41
  200. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  201. package/dist/components/data/ItemTable/ItemTableBulkBar.js +11 -11
  202. package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
  203. package/dist/components/data/ItemTable/ItemTableDragPreview.js +41 -4
  204. package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
  205. package/dist/components/data/ItemTable/ItemTableFooter.js +67 -30
  206. package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
  207. package/dist/components/data/ItemTable/ItemTableToolbar.js +95 -28
  208. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  209. package/dist/components/data/TableBase/ColumnResizer.js +90 -41
  210. package/dist/components/data/TableBase/ColumnResizer.js.map +1 -1
  211. package/dist/components/data/TableBase/RowCollection.js +1 -1
  212. package/dist/components/data/TableBase/RowCollection.js.map +1 -1
  213. package/dist/components/data/TableBase/TableHeaderCell.js +154 -64
  214. package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
  215. package/dist/components/data/TableBase/TableRow.js +211 -69
  216. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  217. package/dist/components/data/TableBase/TableView.js +119 -80
  218. package/dist/components/data/TableBase/TableView.js.map +1 -1
  219. package/dist/components/data/TableBase/column-menu.js +1 -1
  220. package/dist/components/data/TableBase/column-menu.js.map +1 -1
  221. package/dist/components/data/TableBase/column-tint.js +1 -1
  222. package/dist/components/data/TableBase/column-tint.js.map +1 -1
  223. package/dist/components/data/TableBase/row-menu.js +1 -1
  224. package/dist/components/data/TableBase/row-menu.js.map +1 -1
  225. package/dist/components/data/TableBase/styled.d.ts +1 -0
  226. package/dist/components/data/TableBase/styled.js +1 -1
  227. package/dist/components/data/TableBase/styled.js.map +1 -1
  228. package/dist/components/data/TableBase/table-tree.js +1 -1
  229. package/dist/components/data/TableBase/table-tree.js.map +1 -1
  230. package/dist/components/data/TableBase/types.js +1 -1
  231. package/dist/components/data/TableBase/types.js.map +1 -1
  232. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  233. package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
  234. package/dist/components/data/TableBase/use-column-order.js +56 -12
  235. package/dist/components/data/TableBase/use-column-order.js.map +1 -1
  236. package/dist/components/data/TableBase/use-container-width.js +24 -10
  237. package/dist/components/data/TableBase/use-container-width.js.map +1 -1
  238. package/dist/components/data/TableBase/use-row-move-animation.js +68 -49
  239. package/dist/components/data/TableBase/use-row-move-animation.js.map +1 -1
  240. package/dist/components/data/TableBase/use-scrollability.js +32 -18
  241. package/dist/components/data/TableBase/use-scrollability.js.map +1 -1
  242. package/dist/components/data/TableBase/use-table-columns.js +130 -60
  243. package/dist/components/data/TableBase/use-table-columns.js.map +1 -1
  244. package/dist/components/data/TableBase/use-table-search.js +1 -1
  245. package/dist/components/data/TableBase/use-table-search.js.map +1 -1
  246. package/dist/components/data/TableBase/use-table-selection.js +39 -39
  247. package/dist/components/data/TableBase/use-table-selection.js.map +1 -1
  248. package/dist/components/data/TableBase/use-table-sort.js +132 -68
  249. package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
  250. package/dist/components/data/TableBase/use-table-sorts.js +168 -101
  251. package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
  252. package/dist/components/data/TableBase/use-table-storage.js +2 -2
  253. package/dist/components/data/TableBase/use-table-storage.js.map +1 -1
  254. package/dist/components/data/TableBase/use-table-tree-state.js +181 -86
  255. package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
  256. package/dist/components/fields/Checkbox/Checkbox.d.ts +8 -0
  257. package/dist/components/fields/Checkbox/Checkbox.js +58 -39
  258. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  259. package/dist/components/fields/Checkbox/CheckboxGroup.js +101 -33
  260. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  261. package/dist/components/fields/Checkbox/context.js +1 -1
  262. package/dist/components/fields/Checkbox/context.js.map +1 -1
  263. package/dist/components/fields/ColorInput/ColorInput.d.ts +17 -1
  264. package/dist/components/fields/ColorInput/ColorInput.js +334 -152
  265. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  266. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +18 -2
  267. package/dist/components/fields/ColorPicker/ColorPicker.js +18 -17
  268. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  269. package/dist/components/fields/ColorSwatch/ColorSwatch.js +52 -13
  270. package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -1
  271. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +90 -28
  272. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  273. package/dist/components/fields/ComboBox/ComboBox.js +216 -134
  274. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  275. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  276. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  277. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  278. package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -1
  279. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +88 -49
  280. package/dist/components/fields/CommandTextArea/useCaretAnchor.js.map +1 -1
  281. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  282. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  283. package/dist/components/fields/DatePicker/DateInputBase.js +129 -34
  284. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  285. package/dist/components/fields/DatePicker/DatePicker.d.ts +17 -1
  286. package/dist/components/fields/DatePicker/DatePicker.js +200 -71
  287. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  288. package/dist/components/fields/DatePicker/DatePickerButton.js +39 -8
  289. package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
  290. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  291. package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
  292. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  293. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  294. package/dist/components/fields/DatePicker/DatePickerSegment.js +109 -29
  295. package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
  296. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +17 -2
  297. package/dist/components/fields/DatePicker/DateRangePicker.js +230 -90
  298. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  299. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +17 -2
  300. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +481 -180
  301. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  302. package/dist/components/fields/DatePicker/MonthPicker.js +15 -6
  303. package/dist/components/fields/DatePicker/MonthPicker.js.map +1 -1
  304. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +17 -1
  305. package/dist/components/fields/DatePicker/PeriodPicker.js +294 -93
  306. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  307. package/dist/components/fields/DatePicker/QuarterPicker.js +15 -6
  308. package/dist/components/fields/DatePicker/QuarterPicker.js.map +1 -1
  309. package/dist/components/fields/DatePicker/TimeInput.js +15 -7
  310. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  311. package/dist/components/fields/DatePicker/WeekPicker.js +15 -6
  312. package/dist/components/fields/DatePicker/WeekPicker.js.map +1 -1
  313. package/dist/components/fields/DatePicker/YearPicker.js +15 -6
  314. package/dist/components/fields/DatePicker/YearPicker.js.map +1 -1
  315. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  316. package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
  317. package/dist/components/fields/DatePicker/period.js +1 -1
  318. package/dist/components/fields/DatePicker/period.js.map +1 -1
  319. package/dist/components/fields/DatePicker/props.js +1 -1
  320. package/dist/components/fields/DatePicker/props.js.map +1 -1
  321. package/dist/components/fields/DatePicker/utils.js +15 -8
  322. package/dist/components/fields/DatePicker/utils.js.map +1 -1
  323. package/dist/components/fields/FileInput/FileInput.js +3 -3
  324. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  325. package/dist/components/fields/FilterListBox/FilterListBox.js +87 -87
  326. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  327. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +11 -2
  328. package/dist/components/fields/FilterPicker/FilterPicker.js +24 -23
  329. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  330. package/dist/components/fields/Input/Input.js +1 -1
  331. package/dist/components/fields/Input/Input.js.map +1 -1
  332. package/dist/components/fields/ListBox/DraggableListBox.js +23 -10
  333. package/dist/components/fields/ListBox/DraggableListBox.js.map +1 -1
  334. package/dist/components/fields/ListBox/ListBox.js +138 -53
  335. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  336. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +156 -37
  337. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  338. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  339. package/dist/components/fields/ListBoxPopover/listNavigation.js.map +1 -1
  340. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +61 -33
  341. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
  342. package/dist/components/fields/NumberInput/NumberInput.js +123 -33
  343. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  344. package/dist/components/fields/NumberInput/StepButton.js +53 -15
  345. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  346. package/dist/components/fields/PasswordInput/PasswordInput.js +149 -45
  347. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  348. package/dist/components/fields/Picker/Picker.d.ts +20 -3
  349. package/dist/components/fields/Picker/Picker.js +11 -10
  350. package/dist/components/fields/Picker/Picker.js.map +1 -1
  351. package/dist/components/fields/RadioGroup/Radio.d.ts +10 -2
  352. package/dist/components/fields/RadioGroup/Radio.js +275 -104
  353. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  354. package/dist/components/fields/RadioGroup/RadioGroup.js +149 -48
  355. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  356. package/dist/components/fields/RadioGroup/context.js +1 -1
  357. package/dist/components/fields/RadioGroup/context.js.map +1 -1
  358. package/dist/components/fields/SearchComboBox/SearchComboBox.js +80 -65
  359. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  360. package/dist/components/fields/SearchInput/SearchInput.js +91 -28
  361. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  362. package/dist/components/fields/Select/Select.d.ts +24 -3
  363. package/dist/components/fields/Select/Select.js +376 -121
  364. package/dist/components/fields/Select/Select.js.map +1 -1
  365. package/dist/components/fields/Slider/Gradation.js +45 -10
  366. package/dist/components/fields/Slider/Gradation.js.map +1 -1
  367. package/dist/components/fields/Slider/HueSlider.js +121 -32
  368. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  369. package/dist/components/fields/Slider/RangeSlider.js +46 -10
  370. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  371. package/dist/components/fields/Slider/Slider.js +108 -23
  372. package/dist/components/fields/Slider/Slider.js.map +1 -1
  373. package/dist/components/fields/Slider/SliderBase.js +2 -2
  374. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  375. package/dist/components/fields/Slider/SliderThumb.js +96 -37
  376. package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
  377. package/dist/components/fields/Slider/SliderTrack.js +64 -23
  378. package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
  379. package/dist/components/fields/Slider/elements.js +1 -1
  380. package/dist/components/fields/Slider/elements.js.map +1 -1
  381. package/dist/components/fields/Slider/index.js +1 -1
  382. package/dist/components/fields/Switch/Switch.js +190 -66
  383. package/dist/components/fields/Switch/Switch.js.map +1 -1
  384. package/dist/components/fields/TextArea/TextArea.js +137 -47
  385. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  386. package/dist/components/fields/TextInput/TextInput.js +80 -27
  387. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  388. package/dist/components/fields/TextInput/TextInputBase.js +2 -2
  389. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  390. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  391. package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
  392. package/dist/components/fields/TextInputMapper/TextInputMapper.js +156 -83
  393. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  394. package/dist/components/fields/TriggerActions.js +11 -2
  395. package/dist/components/fields/TriggerActions.js.map +1 -1
  396. package/dist/components/fields/color/ColorPanel.js +237 -59
  397. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  398. package/dist/components/fields/color/channels.js +1 -1
  399. package/dist/components/fields/color/channels.js.map +1 -1
  400. package/dist/components/fields/color/color.js +1 -1
  401. package/dist/components/fields/color/color.js.map +1 -1
  402. package/dist/components/fields/color/context.js +1 -1
  403. package/dist/components/fields/color/context.js.map +1 -1
  404. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +1 -1
  405. package/dist/components/form/FieldWrapper/FieldWrapper.js +197 -72
  406. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  407. package/dist/components/form/FieldWrapper/types.d.ts +1 -1
  408. package/dist/components/form/Form/Field.js +28 -12
  409. package/dist/components/form/Form/Field.js.map +1 -1
  410. package/dist/components/form/Form/Form.js +95 -34
  411. package/dist/components/form/Form/Form.js.map +1 -1
  412. package/dist/components/form/Form/ModernFormRoot.js +294 -81
  413. package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
  414. package/dist/components/form/Form/ResetButton/ResetButton.js +32 -10
  415. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  416. package/dist/components/form/Form/SubmitButton/SubmitButton.js +32 -10
  417. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  418. package/dist/components/form/Form/SubmitError.js +130 -32
  419. package/dist/components/form/Form/SubmitError.js.map +1 -1
  420. package/dist/components/form/Form/backend.js +1 -1
  421. package/dist/components/form/Form/backend.js.map +1 -1
  422. package/dist/components/form/Form/index.js +1 -1
  423. package/dist/components/form/Form/index.js.map +1 -1
  424. package/dist/components/form/Form/modern/actions.js +140 -45
  425. package/dist/components/form/Form/modern/actions.js.map +1 -1
  426. package/dist/components/form/Form/modern/context.js +1 -1
  427. package/dist/components/form/Form/modern/context.js.map +1 -1
  428. package/dist/components/form/Form/modern/controller.js +1 -1
  429. package/dist/components/form/Form/modern/controller.js.map +1 -1
  430. package/dist/components/form/Form/modern/field-binding.js +1 -1
  431. package/dist/components/form/Form/modern/field-binding.js.map +1 -1
  432. package/dist/components/form/Form/modern/field.js +1 -1
  433. package/dist/components/form/Form/modern/field.js.map +1 -1
  434. package/dist/components/form/Form/modern/react.js +102 -19
  435. package/dist/components/form/Form/modern/react.js.map +1 -1
  436. package/dist/components/form/Form/modern/store.js +13 -3
  437. package/dist/components/form/Form/modern/store.js.map +1 -1
  438. package/dist/components/form/Form/modern/types.d.ts +3 -1
  439. package/dist/components/form/Form/modern/validation.js +1 -1
  440. package/dist/components/form/Form/modern/validation.js.map +1 -1
  441. package/dist/components/form/Form/modern/values.js +1 -1
  442. package/dist/components/form/Form/modern/values.js.map +1 -1
  443. package/dist/components/form/Form/use-field/use-field-binding.js +236 -63
  444. package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -1
  445. package/dist/components/form/Form/use-field/use-field-props.js +106 -61
  446. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  447. package/dist/components/form/Form/use-field/use-field.js +5 -4
  448. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  449. package/dist/components/form/Form/use-form.js +2 -1
  450. package/dist/components/form/Form/use-form.js.map +1 -1
  451. package/dist/components/form/Form/validation.js +1 -1
  452. package/dist/components/form/Form/validation.js.map +1 -1
  453. package/dist/components/form/Label.js +127 -37
  454. package/dist/components/form/Label.js.map +1 -1
  455. package/dist/components/form/legacy-tooltip.js +28 -0
  456. package/dist/components/form/legacy-tooltip.js.map +1 -0
  457. package/dist/components/form/validation/ValidationIndicator.js +20 -5
  458. package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
  459. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  460. package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
  461. package/dist/components/form/validation/use-validation-props.js +36 -10
  462. package/dist/components/form/validation/use-validation-props.js.map +1 -1
  463. package/dist/components/form/wrapper.js +5 -3
  464. package/dist/components/form/wrapper.js.map +1 -1
  465. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +49 -29
  466. package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
  467. package/dist/components/helpers/IconSwitch/IconSwitch.js +8 -8
  468. package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
  469. package/dist/components/layout/Board/Board.js +27 -9
  470. package/dist/components/layout/Board/Board.js.map +1 -1
  471. package/dist/components/layout/Board/BoardProvider.js +1 -1
  472. package/dist/components/layout/Board/BoardProvider.js.map +1 -1
  473. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  474. package/dist/components/layout/Board/BoardResponsive.js.map +1 -1
  475. package/dist/components/layout/Board/Widget.js +1 -1
  476. package/dist/components/layout/Board/Widget.js.map +1 -1
  477. package/dist/components/layout/Board/WidgetHost.js +159 -121
  478. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  479. package/dist/components/layout/Board/board-context.js +14 -5
  480. package/dist/components/layout/Board/board-context.js.map +1 -1
  481. package/dist/components/layout/Board/board-store.js +1 -1
  482. package/dist/components/layout/Board/board-store.js.map +1 -1
  483. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  484. package/dist/components/layout/Board/grid-core/calculate.js.map +1 -1
  485. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  486. package/dist/components/layout/Board/grid-core/collision-modes.js.map +1 -1
  487. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  488. package/dist/components/layout/Board/grid-core/collision.js.map +1 -1
  489. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  490. package/dist/components/layout/Board/grid-core/compactors.js.map +1 -1
  491. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  492. package/dist/components/layout/Board/grid-core/constraints.js.map +1 -1
  493. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  494. package/dist/components/layout/Board/grid-core/group-move.js.map +1 -1
  495. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  496. package/dist/components/layout/Board/grid-core/layout.js.map +1 -1
  497. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  498. package/dist/components/layout/Board/grid-core/placement.js.map +1 -1
  499. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  500. package/dist/components/layout/Board/grid-core/sort.js.map +1 -1
  501. package/dist/components/layout/Board/index.js +1 -1
  502. package/dist/components/layout/Board/index.js.map +1 -1
  503. package/dist/components/layout/Board/responsive-utils.js +1 -1
  504. package/dist/components/layout/Board/responsive-utils.js.map +1 -1
  505. package/dist/components/layout/Board/use-board-layout.js +8 -8
  506. package/dist/components/layout/Board/use-board-layout.js.map +1 -1
  507. package/dist/components/layout/Board/use-board-registry.js +257 -257
  508. package/dist/components/layout/Board/use-board-registry.js.map +1 -1
  509. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  510. package/dist/components/layout/Board/use-board-select-modifier-key.js.map +1 -1
  511. package/dist/components/layout/Board/use-board-selection.js +16 -16
  512. package/dist/components/layout/Board/use-board-selection.js.map +1 -1
  513. package/dist/components/layout/Flex.js +29 -7
  514. package/dist/components/layout/Flex.js.map +1 -1
  515. package/dist/components/layout/Flow.js +29 -7
  516. package/dist/components/layout/Flow.js.map +1 -1
  517. package/dist/components/layout/Grid.js +30 -7
  518. package/dist/components/layout/Grid.js.map +1 -1
  519. package/dist/components/layout/Panel.js +9 -9
  520. package/dist/components/layout/Panel.js.map +1 -1
  521. package/dist/components/layout/Prefix.js +59 -16
  522. package/dist/components/layout/Prefix.js.map +1 -1
  523. package/dist/components/layout/ResizablePanel.js +62 -32
  524. package/dist/components/layout/ResizablePanel.js.map +1 -1
  525. package/dist/components/layout/Space.js +55 -11
  526. package/dist/components/layout/Space.js.map +1 -1
  527. package/dist/components/layout/Suffix.js +59 -16
  528. package/dist/components/layout/Suffix.js.map +1 -1
  529. package/dist/components/navigation/Pagination/Pagination.js +394 -164
  530. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  531. package/dist/components/navigation/Pagination/use-pagination.js +69 -26
  532. package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
  533. package/dist/components/navigation/Tabs/DraggableTabList.js +25 -10
  534. package/dist/components/navigation/Tabs/DraggableTabList.js.map +1 -1
  535. package/dist/components/navigation/Tabs/TabButton.js +625 -235
  536. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  537. package/dist/components/navigation/Tabs/TabDropIndicator.js +65 -23
  538. package/dist/components/navigation/Tabs/TabDropIndicator.js.map +1 -1
  539. package/dist/components/navigation/Tabs/TabPanel.js +47 -19
  540. package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
  541. package/dist/components/navigation/Tabs/TabPicker.js +106 -33
  542. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  543. package/dist/components/navigation/Tabs/Tabs.js +45 -45
  544. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  545. package/dist/components/navigation/Tabs/TabsAction.js +53 -19
  546. package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
  547. package/dist/components/navigation/Tabs/TabsContext.js +16 -6
  548. package/dist/components/navigation/Tabs/TabsContext.js.map +1 -1
  549. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  550. package/dist/components/navigation/Tabs/popover-placement.js.map +1 -1
  551. package/dist/components/navigation/Tabs/styled.js +2 -2
  552. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  553. package/dist/components/navigation/Tabs/types.js +1 -1
  554. package/dist/components/navigation/Tabs/types.js.map +1 -1
  555. package/dist/components/navigation/Tabs/use-tab-editing.js +50 -13
  556. package/dist/components/navigation/Tabs/use-tab-editing.js.map +1 -1
  557. package/dist/components/navigation/Tabs/use-tab-indicator.js +111 -63
  558. package/dist/components/navigation/Tabs/use-tab-indicator.js.map +1 -1
  559. package/dist/components/organisms/StatsCard/StatsCard.js +54 -14
  560. package/dist/components/organisms/StatsCard/StatsCard.js.map +1 -1
  561. package/dist/components/other/Calendar/Calendar.js +79 -31
  562. package/dist/components/other/Calendar/Calendar.js.map +1 -1
  563. package/dist/components/other/Calendar/CalendarCell.js +66 -20
  564. package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
  565. package/dist/components/other/Calendar/CalendarGrid.js +90 -40
  566. package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
  567. package/dist/components/other/Calendar/CalendarHeader.js +80 -17
  568. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  569. package/dist/components/other/Calendar/CalendarPanel.js +568 -144
  570. package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
  571. package/dist/components/other/Calendar/PeriodCalendar.js +425 -134
  572. package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
  573. package/dist/components/other/Calendar/PeriodGrid.js +6 -6
  574. package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
  575. package/dist/components/other/Calendar/RangeCalendar.js +50 -24
  576. package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
  577. package/dist/components/other/Calendar/styled.js +1 -1
  578. package/dist/components/other/Calendar/styled.js.map +1 -1
  579. package/dist/components/other/CubeLogo/CubeLogo.js +95 -34
  580. package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
  581. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  582. package/dist/components/other/NoDataIcon/NoDataIcon.js.map +1 -1
  583. package/dist/components/overlays/AlertDialog/AlertDialog.js +153 -42
  584. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  585. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +76 -54
  586. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  587. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +146 -39
  588. package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
  589. package/dist/components/overlays/Dialog/Dialog.js +43 -18
  590. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  591. package/dist/components/overlays/Dialog/DialogContainer.js +13 -13
  592. package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
  593. package/dist/components/overlays/Dialog/DialogForm.d.ts +12 -7
  594. package/dist/components/overlays/Dialog/DialogForm.js +22 -10
  595. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  596. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -1
  597. package/dist/components/overlays/Dialog/DialogTrigger.js +214 -59
  598. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  599. package/dist/components/overlays/Dialog/ModernDialogForm.js +357 -0
  600. package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -0
  601. package/dist/components/overlays/Dialog/context.js +1 -1
  602. package/dist/components/overlays/Dialog/context.js.map +1 -1
  603. package/dist/components/overlays/Dialog/index.d.ts +1 -1
  604. package/dist/components/overlays/Dialog/use-content-overflow.js +68 -0
  605. package/dist/components/overlays/Dialog/use-content-overflow.js.map +1 -0
  606. package/dist/components/overlays/Dialog/use-dialog-container.js +6 -6
  607. package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
  608. package/dist/components/overlays/Modal/Modal.js +140 -27
  609. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  610. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  611. package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
  612. package/dist/components/overlays/Modal/Overlay.js +4 -4
  613. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  614. package/dist/components/overlays/Modal/Popover.js +131 -29
  615. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  616. package/dist/components/overlays/Modal/Tray.js +142 -30
  617. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  618. package/dist/components/overlays/Modal/Underlay.js +36 -7
  619. package/dist/components/overlays/Modal/Underlay.js.map +1 -1
  620. package/dist/components/overlays/Notifications/Notification.js +69 -32
  621. package/dist/components/overlays/Notifications/Notification.js.map +1 -1
  622. package/dist/components/overlays/Notifications/NotificationAction.js +79 -26
  623. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  624. package/dist/components/overlays/Notifications/NotificationCard.js +138 -33
  625. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  626. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  627. package/dist/components/overlays/Notifications/NotificationContext.js.map +1 -1
  628. package/dist/components/overlays/Notifications/NotificationItem.js +63 -16
  629. package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
  630. package/dist/components/overlays/Notifications/OverlayContainer.js +312 -151
  631. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  632. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  633. package/dist/components/overlays/Notifications/OverlayProvider.js.map +1 -1
  634. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +210 -58
  635. package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
  636. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  637. package/dist/components/overlays/Notifications/dismissed-storage.js.map +1 -1
  638. package/dist/components/overlays/Notifications/format-relative-time.d.ts +1 -1
  639. package/dist/components/overlays/Notifications/format-relative-time.js +3 -3
  640. package/dist/components/overlays/Notifications/format-relative-time.js.map +1 -1
  641. package/dist/components/overlays/Notifications/index.js +1 -1
  642. package/dist/components/overlays/Notifications/index.js.map +1 -1
  643. package/dist/components/overlays/Notifications/use-notification-state.js +51 -51
  644. package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
  645. package/dist/components/overlays/Notifications/use-notifications.js +12 -12
  646. package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
  647. package/dist/components/overlays/Notifications/use-overlay-timers.js +10 -10
  648. package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
  649. package/dist/components/overlays/Notifications/use-persistent-notifications.js +24 -5
  650. package/dist/components/overlays/Notifications/use-persistent-notifications.js.map +1 -1
  651. package/dist/components/overlays/Notifications/use-persistent-state.js +145 -43
  652. package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
  653. package/dist/components/overlays/Notifications/use-toast-state.js +25 -25
  654. package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
  655. package/dist/components/overlays/Toast/ToastItem.js +68 -15
  656. package/dist/components/overlays/Toast/ToastItem.js.map +1 -1
  657. package/dist/components/overlays/Toast/index.js +100 -34
  658. package/dist/components/overlays/Toast/index.js.map +1 -1
  659. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  660. package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
  661. package/dist/components/overlays/Toast/useToast.js +9 -9
  662. package/dist/components/overlays/Toast/useToast.js.map +1 -1
  663. package/dist/components/overlays/Tooltip/Tooltip.js +88 -31
  664. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  665. package/dist/components/overlays/Tooltip/TooltipProvider.js +75 -10
  666. package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
  667. package/dist/components/overlays/Tooltip/TooltipTrigger.js +189 -77
  668. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  669. package/dist/components/overlays/Tooltip/context.js +1 -1
  670. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  671. package/dist/components/overlays/Tooltip/split-trigger-props.d.ts +16 -0
  672. package/dist/components/overlays/Tooltip/split-trigger-props.js +54 -0
  673. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -0
  674. package/dist/components/portal/Portal.js +18 -3
  675. package/dist/components/portal/Portal.js.map +1 -1
  676. package/dist/components/portal/PortalProvider.js +11 -2
  677. package/dist/components/portal/PortalProvider.js.map +1 -1
  678. package/dist/components/portal/usePortal.js +1 -1
  679. package/dist/components/portal/usePortal.js.map +1 -1
  680. package/dist/components/shared/DraggableCollection.js +23 -23
  681. package/dist/components/shared/DraggableCollection.js.map +1 -1
  682. package/dist/components/shared/InvalidIcon.js +1 -1
  683. package/dist/components/shared/InvalidIcon.js.map +1 -1
  684. package/dist/components/shared/ValidIcon.js +1 -1
  685. package/dist/components/shared/ValidIcon.js.map +1 -1
  686. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +156 -48
  687. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  688. package/dist/components/status/Spin/Cube.js +12 -3
  689. package/dist/components/status/Spin/Cube.js.map +1 -1
  690. package/dist/components/status/Spin/InternalSpinner.js +21 -6
  691. package/dist/components/status/Spin/InternalSpinner.js.map +1 -1
  692. package/dist/components/status/Spin/Spin.js +31 -7
  693. package/dist/components/status/Spin/Spin.js.map +1 -1
  694. package/dist/components/status/Spin/SpinsContainer.js +23 -6
  695. package/dist/components/status/Spin/SpinsContainer.js.map +1 -1
  696. package/dist/data/item-themes.d.ts +1 -1
  697. package/dist/data/item-themes.js +7 -1
  698. package/dist/data/item-themes.js.map +1 -1
  699. package/dist/data/themes.js +1 -1
  700. package/dist/data/themes.js.map +1 -1
  701. package/dist/eslint-plugin/defaults.generated.js +15 -5
  702. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  703. package/dist/eslint-plugin/index.js +1 -1
  704. package/dist/eslint-plugin/index.js.map +1 -1
  705. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  706. package/dist/eslint-plugin/rules/no-redundant-default-prop.js.map +1 -1
  707. package/dist/i18n/I18nProvider.js +54 -13
  708. package/dist/i18n/I18nProvider.js.map +1 -1
  709. package/dist/i18n/createFormatter.js +1 -1
  710. package/dist/i18n/createFormatter.js.map +1 -1
  711. package/dist/i18n/index.js +1 -1
  712. package/dist/i18n/index.js.map +1 -1
  713. package/dist/i18n/instance.js +1 -1
  714. package/dist/i18n/instance.js.map +1 -1
  715. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  716. package/dist/i18n/locales/en-US/uikit.js +1 -1
  717. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  718. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  719. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  720. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  721. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  722. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  723. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  724. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  725. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  726. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  727. package/dist/i18n/locales.js +1 -1
  728. package/dist/i18n/locales.js.map +1 -1
  729. package/dist/i18n/useFormatter.js +10 -3
  730. package/dist/i18n/useFormatter.js.map +1 -1
  731. package/dist/i18n/useI18n.js +1 -1
  732. package/dist/i18n/useI18n.js.map +1 -1
  733. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  734. package/dist/icons/AdjustmentsHorizontalIcon.js.map +1 -1
  735. package/dist/icons/AdjustmentsIcon.js +1 -1
  736. package/dist/icons/AdjustmentsIcon.js.map +1 -1
  737. package/dist/icons/AiIcon.js +1 -1
  738. package/dist/icons/AiIcon.js.map +1 -1
  739. package/dist/icons/AreaChartIcon.js +1 -1
  740. package/dist/icons/AreaChartIcon.js.map +1 -1
  741. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  742. package/dist/icons/ArrowNarrowDownIcon.js.map +1 -1
  743. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  744. package/dist/icons/ArrowNarrowUpIcon.js.map +1 -1
  745. package/dist/icons/BackwardIcon.js +1 -1
  746. package/dist/icons/BackwardIcon.js.map +1 -1
  747. package/dist/icons/BarChartIcon.js +1 -1
  748. package/dist/icons/BarChartIcon.js.map +1 -1
  749. package/dist/icons/BellFilledIcon.js +1 -1
  750. package/dist/icons/BellFilledIcon.js.map +1 -1
  751. package/dist/icons/BellIcon.js +1 -1
  752. package/dist/icons/BellIcon.js.map +1 -1
  753. package/dist/icons/BooleanIcon.js +1 -1
  754. package/dist/icons/BooleanIcon.js.map +1 -1
  755. package/dist/icons/CalendarEditIcon.js +1 -1
  756. package/dist/icons/CalendarEditIcon.js.map +1 -1
  757. package/dist/icons/CalendarIcon.js +1 -1
  758. package/dist/icons/CalendarIcon.js.map +1 -1
  759. package/dist/icons/CaretDownIcon.js +1 -1
  760. package/dist/icons/CaretDownIcon.js.map +1 -1
  761. package/dist/icons/CaretUpIcon.js +1 -1
  762. package/dist/icons/CaretUpIcon.js.map +1 -1
  763. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  764. package/dist/icons/ChartAreaStackedIcon.js.map +1 -1
  765. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  766. package/dist/icons/ChartAreaStackedPercentageIcon.js.map +1 -1
  767. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  768. package/dist/icons/ChartBarGroupedHorizontalIcon.js.map +1 -1
  769. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  770. package/dist/icons/ChartBarGroupedIcon.js.map +1 -1
  771. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  772. package/dist/icons/ChartBarHorizontalIcon.js.map +1 -1
  773. package/dist/icons/ChartBarLineIcon.js +1 -1
  774. package/dist/icons/ChartBarLineIcon.js.map +1 -1
  775. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  776. package/dist/icons/ChartBarStackedHorizontalIcon.js.map +1 -1
  777. package/dist/icons/ChartBarStackedIcon.js +1 -1
  778. package/dist/icons/ChartBarStackedIcon.js.map +1 -1
  779. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  780. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js.map +1 -1
  781. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  782. package/dist/icons/ChartBarStackedPercentageIcon.js.map +1 -1
  783. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  784. package/dist/icons/ChartBoxPlot2Icon.js.map +1 -1
  785. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  786. package/dist/icons/ChartBoxPlotIcon.js.map +1 -1
  787. package/dist/icons/ChartBubbleIcon.js +1 -1
  788. package/dist/icons/ChartBubbleIcon.js.map +1 -1
  789. package/dist/icons/ChartDonut2Icon.js +1 -1
  790. package/dist/icons/ChartDonut2Icon.js.map +1 -1
  791. package/dist/icons/ChartFunnelIcon.js +1 -1
  792. package/dist/icons/ChartFunnelIcon.js.map +1 -1
  793. package/dist/icons/ChartHeatmapIcon.js +1 -1
  794. package/dist/icons/ChartHeatmapIcon.js.map +1 -1
  795. package/dist/icons/ChartKPIIcon.js +1 -1
  796. package/dist/icons/ChartKPIIcon.js.map +1 -1
  797. package/dist/icons/ChartPie2Icon.js +1 -1
  798. package/dist/icons/ChartPie2Icon.js.map +1 -1
  799. package/dist/icons/ChartScatterIcon.js +1 -1
  800. package/dist/icons/ChartScatterIcon.js.map +1 -1
  801. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  802. package/dist/icons/CheckCircleFilledIcon.js.map +1 -1
  803. package/dist/icons/CheckCircleIcon.js +1 -1
  804. package/dist/icons/CheckCircleIcon.js.map +1 -1
  805. package/dist/icons/CheckIcon.js +1 -1
  806. package/dist/icons/CheckIcon.js.map +1 -1
  807. package/dist/icons/CircleFilledIcon.js +1 -1
  808. package/dist/icons/CircleFilledIcon.js.map +1 -1
  809. package/dist/icons/ClearIcon.js +1 -1
  810. package/dist/icons/ClearIcon.js.map +1 -1
  811. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  812. package/dist/icons/CloseCircleFilledIcon.js.map +1 -1
  813. package/dist/icons/CloseCircleIcon.js +1 -1
  814. package/dist/icons/CloseCircleIcon.js.map +1 -1
  815. package/dist/icons/CloseIcon.js +1 -1
  816. package/dist/icons/CloseIcon.js.map +1 -1
  817. package/dist/icons/CodeIcon.js +1 -1
  818. package/dist/icons/CodeIcon.js.map +1 -1
  819. package/dist/icons/ColumnTotalIcon.js +1 -1
  820. package/dist/icons/ColumnTotalIcon.js.map +1 -1
  821. package/dist/icons/CopyIcon.js +1 -1
  822. package/dist/icons/CopyIcon.js.map +1 -1
  823. package/dist/icons/CountIcon.js +1 -1
  824. package/dist/icons/CountIcon.js.map +1 -1
  825. package/dist/icons/CubeIcon.js +1 -1
  826. package/dist/icons/CubeIcon.js.map +1 -1
  827. package/dist/icons/CubePauseIcon.js +1 -1
  828. package/dist/icons/CubePauseIcon.js.map +1 -1
  829. package/dist/icons/CubePlayIcon.js +1 -1
  830. package/dist/icons/CubePlayIcon.js.map +1 -1
  831. package/dist/icons/CurrencyDollarIcon.js +1 -1
  832. package/dist/icons/CurrencyDollarIcon.js.map +1 -1
  833. package/dist/icons/DangerIcon.js +1 -1
  834. package/dist/icons/DangerIcon.js.map +1 -1
  835. package/dist/icons/DashboardIcon.js +1 -1
  836. package/dist/icons/DashboardIcon.js.map +1 -1
  837. package/dist/icons/DatabaseIcon.js +1 -1
  838. package/dist/icons/DatabaseIcon.js.map +1 -1
  839. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  840. package/dist/icons/DecimalDecreaseIcon.js.map +1 -1
  841. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  842. package/dist/icons/DecimalIncreaseIcon.js.map +1 -1
  843. package/dist/icons/DirectionIcon.js +67 -22
  844. package/dist/icons/DirectionIcon.js.map +1 -1
  845. package/dist/icons/DonutIcon.js +1 -1
  846. package/dist/icons/DonutIcon.js.map +1 -1
  847. package/dist/icons/DownIcon.js +1 -1
  848. package/dist/icons/DownIcon.js.map +1 -1
  849. package/dist/icons/EditIcon.js +1 -1
  850. package/dist/icons/EditIcon.js.map +1 -1
  851. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  852. package/dist/icons/ExclamationCircleFilledIcon.js.map +1 -1
  853. package/dist/icons/ExclamationCircleIcon.js +1 -1
  854. package/dist/icons/ExclamationCircleIcon.js.map +1 -1
  855. package/dist/icons/ExclamationIcon.js +1 -1
  856. package/dist/icons/ExclamationIcon.js.map +1 -1
  857. package/dist/icons/EyeIcon.js +1 -1
  858. package/dist/icons/EyeIcon.js.map +1 -1
  859. package/dist/icons/EyeInvisibleIcon.js +1 -1
  860. package/dist/icons/EyeInvisibleIcon.js.map +1 -1
  861. package/dist/icons/FilterIcon.js +1 -1
  862. package/dist/icons/FilterIcon.js.map +1 -1
  863. package/dist/icons/FolderFilledIcon.js +1 -1
  864. package/dist/icons/FolderFilledIcon.js.map +1 -1
  865. package/dist/icons/FolderIcon.js +1 -1
  866. package/dist/icons/FolderIcon.js.map +1 -1
  867. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  868. package/dist/icons/FolderOpenFilledIcon.js.map +1 -1
  869. package/dist/icons/FolderOpenIcon.js +1 -1
  870. package/dist/icons/FolderOpenIcon.js.map +1 -1
  871. package/dist/icons/ForwardIcon.js +1 -1
  872. package/dist/icons/ForwardIcon.js.map +1 -1
  873. package/dist/icons/GripVerticalIcon.js +1 -1
  874. package/dist/icons/GripVerticalIcon.js.map +1 -1
  875. package/dist/icons/HierarchyIcon.js +1 -1
  876. package/dist/icons/HierarchyIcon.js.map +1 -1
  877. package/dist/icons/HierarchyOpenIcon.js +1 -1
  878. package/dist/icons/HierarchyOpenIcon.js.map +1 -1
  879. package/dist/icons/Icon.js +60 -16
  880. package/dist/icons/Icon.js.map +1 -1
  881. package/dist/icons/InfoCircleIcon.js +1 -1
  882. package/dist/icons/InfoCircleIcon.js.map +1 -1
  883. package/dist/icons/InfoIcon.js +1 -1
  884. package/dist/icons/InfoIcon.js.map +1 -1
  885. package/dist/icons/KeyIcon.js +1 -1
  886. package/dist/icons/KeyIcon.js.map +1 -1
  887. package/dist/icons/LeftIcon.js +1 -1
  888. package/dist/icons/LeftIcon.js.map +1 -1
  889. package/dist/icons/LineChartIcon.js +1 -1
  890. package/dist/icons/LineChartIcon.js.map +1 -1
  891. package/dist/icons/LoadingIcon.js +1 -1
  892. package/dist/icons/LoadingIcon.js.map +1 -1
  893. package/dist/icons/LockFilledIcon.js +1 -1
  894. package/dist/icons/LockFilledIcon.js.map +1 -1
  895. package/dist/icons/LockIcon.js +1 -1
  896. package/dist/icons/LockIcon.js.map +1 -1
  897. package/dist/icons/MoreIcon.js +1 -1
  898. package/dist/icons/MoreIcon.js.map +1 -1
  899. package/dist/icons/NotAllowedIcon.js +1 -1
  900. package/dist/icons/NotAllowedIcon.js.map +1 -1
  901. package/dist/icons/Number123Icon.js +1 -1
  902. package/dist/icons/Number123Icon.js.map +1 -1
  903. package/dist/icons/NumberIcon.js +1 -1
  904. package/dist/icons/NumberIcon.js.map +1 -1
  905. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  906. package/dist/icons/PauseCircleFilledIcon.js.map +1 -1
  907. package/dist/icons/PauseCircleIcon.js +1 -1
  908. package/dist/icons/PauseCircleIcon.js.map +1 -1
  909. package/dist/icons/PauseIcon.js +1 -1
  910. package/dist/icons/PauseIcon.js.map +1 -1
  911. package/dist/icons/PercentageIcon.js +1 -1
  912. package/dist/icons/PercentageIcon.js.map +1 -1
  913. package/dist/icons/PieChartIcon.js +1 -1
  914. package/dist/icons/PieChartIcon.js.map +1 -1
  915. package/dist/icons/PipetteIcon.js +1 -1
  916. package/dist/icons/PipetteIcon.js.map +1 -1
  917. package/dist/icons/PlayCircleIcon.js +1 -1
  918. package/dist/icons/PlayCircleIcon.js.map +1 -1
  919. package/dist/icons/PlayIcon.js +1 -1
  920. package/dist/icons/PlayIcon.js.map +1 -1
  921. package/dist/icons/PlusIcon.js +1 -1
  922. package/dist/icons/PlusIcon.js.map +1 -1
  923. package/dist/icons/ProgressBarIcon.js +1 -1
  924. package/dist/icons/ProgressBarIcon.js.map +1 -1
  925. package/dist/icons/ReloadIcon.js +1 -1
  926. package/dist/icons/ReloadIcon.js.map +1 -1
  927. package/dist/icons/ReportIcon.js +1 -1
  928. package/dist/icons/ReportIcon.js.map +1 -1
  929. package/dist/icons/ReturnIcon.js +1 -1
  930. package/dist/icons/ReturnIcon.js.map +1 -1
  931. package/dist/icons/RightIcon.js +1 -1
  932. package/dist/icons/RightIcon.js.map +1 -1
  933. package/dist/icons/RowTotalsIcon.js +1 -1
  934. package/dist/icons/RowTotalsIcon.js.map +1 -1
  935. package/dist/icons/SchemeIcon.js +1 -1
  936. package/dist/icons/SchemeIcon.js.map +1 -1
  937. package/dist/icons/SearchIcon.js +1 -1
  938. package/dist/icons/SearchIcon.js.map +1 -1
  939. package/dist/icons/SemanticQueryIcon.js +1 -1
  940. package/dist/icons/SemanticQueryIcon.js.map +1 -1
  941. package/dist/icons/SettingsIcon.js +1 -1
  942. package/dist/icons/SettingsIcon.js.map +1 -1
  943. package/dist/icons/ShieldFilledIcon.js +1 -1
  944. package/dist/icons/ShieldFilledIcon.js.map +1 -1
  945. package/dist/icons/ShieldIcon.js +1 -1
  946. package/dist/icons/ShieldIcon.js.map +1 -1
  947. package/dist/icons/SlashIcon.js +1 -1
  948. package/dist/icons/SlashIcon.js.map +1 -1
  949. package/dist/icons/SparklesIcon.js +1 -1
  950. package/dist/icons/SparklesIcon.js.map +1 -1
  951. package/dist/icons/SqlIcon.js +1 -1
  952. package/dist/icons/SqlIcon.js.map +1 -1
  953. package/dist/icons/StatsIcon.js +1 -1
  954. package/dist/icons/StatsIcon.js.map +1 -1
  955. package/dist/icons/StopIcon.js +1 -1
  956. package/dist/icons/StopIcon.js.map +1 -1
  957. package/dist/icons/StringIcon.js +1 -1
  958. package/dist/icons/StringIcon.js.map +1 -1
  959. package/dist/icons/SubtotalsIcon.js +1 -1
  960. package/dist/icons/SubtotalsIcon.js.map +1 -1
  961. package/dist/icons/SwitchIcon.js +1 -1
  962. package/dist/icons/SwitchIcon.js.map +1 -1
  963. package/dist/icons/TableIcon.js +1 -1
  964. package/dist/icons/TableIcon.js.map +1 -1
  965. package/dist/icons/ThumbsDownIcon.js +1 -1
  966. package/dist/icons/ThumbsDownIcon.js.map +1 -1
  967. package/dist/icons/ThumbsUpIcon.js +1 -1
  968. package/dist/icons/ThumbsUpIcon.js.map +1 -1
  969. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  970. package/dist/icons/ThunderboltCrossedIcon.js.map +1 -1
  971. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  972. package/dist/icons/ThunderboltFilledIcon.js.map +1 -1
  973. package/dist/icons/ThunderboltIcon.js +1 -1
  974. package/dist/icons/ThunderboltIcon.js.map +1 -1
  975. package/dist/icons/TimeIcon.js +1 -1
  976. package/dist/icons/TimeIcon.js.map +1 -1
  977. package/dist/icons/TrashIcon.js +1 -1
  978. package/dist/icons/TrashIcon.js.map +1 -1
  979. package/dist/icons/UnlockIcon.js +1 -1
  980. package/dist/icons/UnlockIcon.js.map +1 -1
  981. package/dist/icons/UpIcon.js +1 -1
  982. package/dist/icons/UpIcon.js.map +1 -1
  983. package/dist/icons/UserGroupIcon.js +1 -1
  984. package/dist/icons/UserGroupIcon.js.map +1 -1
  985. package/dist/icons/UserIcon.js +1 -1
  986. package/dist/icons/UserIcon.js.map +1 -1
  987. package/dist/icons/UserLockIcon.js +1 -1
  988. package/dist/icons/UserLockIcon.js.map +1 -1
  989. package/dist/icons/ViewIcon.js +1 -1
  990. package/dist/icons/ViewIcon.js.map +1 -1
  991. package/dist/icons/WarningFilledIcon.js +1 -1
  992. package/dist/icons/WarningFilledIcon.js.map +1 -1
  993. package/dist/icons/WarningIcon.js +1 -1
  994. package/dist/icons/WarningIcon.js.map +1 -1
  995. package/dist/icons/wrap-icon.js +15 -7
  996. package/dist/icons/wrap-icon.js.map +1 -1
  997. package/dist/index.d.ts +22 -22
  998. package/dist/index.js +1 -1
  999. package/dist/index.js.map +1 -1
  1000. package/dist/probe/canonicalize.js +2 -2
  1001. package/dist/probe/canonicalize.js.map +1 -1
  1002. package/dist/probe/css.js +1 -1
  1003. package/dist/probe/css.js.map +1 -1
  1004. package/dist/probe/index.js +1 -1
  1005. package/dist/provider.js +17 -7
  1006. package/dist/provider.js.map +1 -1
  1007. package/dist/providers/TrackingProvider.js +33 -9
  1008. package/dist/providers/TrackingProvider.js.map +1 -1
  1009. package/dist/providers/navigationAdapter.default.js +1 -1
  1010. package/dist/providers/navigationAdapter.default.js.map +1 -1
  1011. package/dist/shared/form.d.ts +9 -2
  1012. package/dist/tokens/all-tokens.js +1 -1
  1013. package/dist/tokens/all-tokens.js.map +1 -1
  1014. package/dist/tokens/base.js +1 -1
  1015. package/dist/tokens/base.js.map +1 -1
  1016. package/dist/tokens/color-seed.js +1 -1
  1017. package/dist/tokens/color-seed.js.map +1 -1
  1018. package/dist/tokens/color-theme.js +18 -3
  1019. package/dist/tokens/color-theme.js.map +1 -1
  1020. package/dist/tokens/colors.js +1 -1
  1021. package/dist/tokens/colors.js.map +1 -1
  1022. package/dist/tokens/layout.js +1 -1
  1023. package/dist/tokens/layout.js.map +1 -1
  1024. package/dist/tokens/lazy-styles.js +1 -1
  1025. package/dist/tokens/lazy-styles.js.map +1 -1
  1026. package/dist/tokens/legacy-color.js +1 -1
  1027. package/dist/tokens/legacy-color.js.map +1 -1
  1028. package/dist/tokens/palette-config.js +9 -2
  1029. package/dist/tokens/palette-config.js.map +1 -1
  1030. package/dist/tokens/palette.js +1 -1
  1031. package/dist/tokens/palette.js.map +1 -1
  1032. package/dist/tokens/resolve.js +85 -21
  1033. package/dist/tokens/resolve.js.map +1 -1
  1034. package/dist/tokens/shadows.js +1 -1
  1035. package/dist/tokens/shadows.js.map +1 -1
  1036. package/dist/tokens/sizes.js +1 -1
  1037. package/dist/tokens/sizes.js.map +1 -1
  1038. package/dist/tokens/spacing.js +1 -1
  1039. package/dist/tokens/spacing.js.map +1 -1
  1040. package/dist/tokens/typography.js +1 -1
  1041. package/dist/tokens/typography.js.map +1 -1
  1042. package/dist/utils/ResizeSensor.js +1 -1
  1043. package/dist/utils/ResizeSensor.js.map +1 -1
  1044. package/dist/utils/colors.js +1 -1
  1045. package/dist/utils/colors.js.map +1 -1
  1046. package/dist/utils/dotize.js +1 -1
  1047. package/dist/utils/dotize.js.map +1 -1
  1048. package/dist/utils/is-dev-env.js +1 -1
  1049. package/dist/utils/is-dev-env.js.map +1 -1
  1050. package/dist/utils/modules.js +1 -1
  1051. package/dist/utils/modules.js.map +1 -1
  1052. package/dist/utils/promise.js +1 -1
  1053. package/dist/utils/promise.js.map +1 -1
  1054. package/dist/utils/raf.js +1 -1
  1055. package/dist/utils/raf.js.map +1 -1
  1056. package/dist/utils/random.js +1 -1
  1057. package/dist/utils/random.js.map +1 -1
  1058. package/dist/utils/range.js +1 -1
  1059. package/dist/utils/range.js.map +1 -1
  1060. package/dist/utils/react/RenderCache.js +2 -2
  1061. package/dist/utils/react/RenderCache.js.map +1 -1
  1062. package/dist/utils/react/Slots.js +67 -24
  1063. package/dist/utils/react/Slots.js.map +1 -1
  1064. package/dist/utils/react/chain.js +1 -1
  1065. package/dist/utils/react/chain.js.map +1 -1
  1066. package/dist/utils/react/disabledProps.js +1 -1
  1067. package/dist/utils/react/disabledProps.js.map +1 -1
  1068. package/dist/utils/react/escapePropagation.js +1 -1
  1069. package/dist/utils/react/escapePropagation.js.map +1 -1
  1070. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  1071. package/dist/utils/react/forwardRefWithGenerics.js.map +1 -1
  1072. package/dist/utils/react/index.js +1 -1
  1073. package/dist/utils/react/interactions.js +35 -12
  1074. package/dist/utils/react/interactions.js.map +1 -1
  1075. package/dist/utils/react/isTextOnly.js +1 -1
  1076. package/dist/utils/react/isTextOnly.js.map +1 -1
  1077. package/dist/utils/react/mapProps.js +1 -1
  1078. package/dist/utils/react/mapProps.js.map +1 -1
  1079. package/dist/utils/react/mergeProps.js +1 -1
  1080. package/dist/utils/react/mergeProps.js.map +1 -1
  1081. package/dist/utils/react/nullableValue.js +1 -1
  1082. package/dist/utils/react/nullableValue.js.map +1 -1
  1083. package/dist/utils/react/programmaticFocus.js +1 -1
  1084. package/dist/utils/react/programmaticFocus.js.map +1 -1
  1085. package/dist/utils/react/resolveIcon.js +1 -1
  1086. package/dist/utils/react/resolveIcon.js.map +1 -1
  1087. package/dist/utils/react/sharedStore.js +13 -2
  1088. package/dist/utils/react/sharedStore.js.map +1 -1
  1089. package/dist/utils/react/useBufferedValue.js +5 -5
  1090. package/dist/utils/react/useBufferedValue.js.map +1 -1
  1091. package/dist/utils/react/useCombinedRefs.js +20 -5
  1092. package/dist/utils/react/useCombinedRefs.js.map +1 -1
  1093. package/dist/utils/react/useControlledFocusVisible.js +53 -17
  1094. package/dist/utils/react/useControlledFocusVisible.js.map +1 -1
  1095. package/dist/utils/react/useEventBus.js +43 -18
  1096. package/dist/utils/react/useEventBus.js.map +1 -1
  1097. package/dist/utils/react/useId.js +2 -1
  1098. package/dist/utils/react/useId.js.map +1 -1
  1099. package/dist/utils/react/useIsDarwin.js +29 -16
  1100. package/dist/utils/react/useIsDarwin.js.map +1 -1
  1101. package/dist/utils/react/useKeySymbols.js +23 -9
  1102. package/dist/utils/react/useKeySymbols.js.map +1 -1
  1103. package/dist/utils/react/useLayoutEffect.js +1 -1
  1104. package/dist/utils/react/useLayoutEffect.js.map +1 -1
  1105. package/dist/utils/react/useLocalStorage.js +75 -30
  1106. package/dist/utils/react/useLocalStorage.js.map +1 -1
  1107. package/dist/utils/react/useMergeStyles.js +1 -1
  1108. package/dist/utils/react/useMergeStyles.js.map +1 -1
  1109. package/dist/utils/react/useOverlayEscapeGuard.js +25 -9
  1110. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  1111. package/dist/utils/react/usePopoverSync.js +175 -73
  1112. package/dist/utils/react/usePopoverSync.js.map +1 -1
  1113. package/dist/utils/react/useQaProps.js +1 -1
  1114. package/dist/utils/react/useQaProps.js.map +1 -1
  1115. package/dist/utils/react/useScheme.js +1 -1
  1116. package/dist/utils/react/useScheme.js.map +1 -1
  1117. package/dist/utils/react/useViewportSize.js +43 -19
  1118. package/dist/utils/react/useViewportSize.js.map +1 -1
  1119. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  1120. package/dist/utils/react/wrapNodeIfPlain.js.map +1 -1
  1121. package/dist/utils/selection.js +1 -1
  1122. package/dist/utils/selection.js.map +1 -1
  1123. package/dist/utils/styles.js +1 -1
  1124. package/dist/utils/styles.js.map +1 -1
  1125. package/dist/utils/tree.js +1 -1
  1126. package/dist/utils/tree.js.map +1 -1
  1127. package/dist/utils/warnings.js +1 -1
  1128. package/dist/utils/warnings.js.map +1 -1
  1129. package/dist/version.js +2 -2
  1130. package/dist/version.js.map +1 -1
  1131. package/docs/FieldProperties.md +2 -2
  1132. package/docs/Usage.md +9 -1
  1133. package/docs/components/actions/ButtonSplit.md +2 -0
  1134. package/docs/components/content/InfoBadge.md +1 -1
  1135. package/docs/components/content/InlineInput.md +1 -1
  1136. package/docs/components/content/Layout.md +1 -1
  1137. package/docs/components/content/Tag.md +10 -2
  1138. package/docs/components/fields/Checkbox.md +11 -0
  1139. package/docs/components/fields/ColorInput.md +15 -8
  1140. package/docs/components/fields/ColorPicker.md +16 -9
  1141. package/docs/components/fields/ComboBox.md +16 -12
  1142. package/docs/components/fields/DatePicker.md +2 -0
  1143. package/docs/components/fields/FilterListBox.md +24 -19
  1144. package/docs/components/fields/FilterPicker.md +27 -20
  1145. package/docs/components/fields/ListBox.md +36 -26
  1146. package/docs/components/fields/PeriodPicker.md +2 -0
  1147. package/docs/components/fields/Picker.md +30 -22
  1148. package/docs/components/fields/RadioGroup.md +2 -2
  1149. package/docs/components/fields/Select.md +21 -12
  1150. package/docs/components/form/Field.md +4 -4
  1151. package/docs/components/form/Form.md +61 -578
  1152. package/docs/components/form/ModernForm.md +22 -1
  1153. package/docs/components/navigation/Tabs.md +3 -3
  1154. package/docs/components/overlays/Dialog.md +30 -3
  1155. package/docs/components/overlays/DialogForm.md +122 -263
  1156. package/docs/components/overlays/DialogTrigger.md +1 -1
  1157. package/docs/components/overlays/UseDialogContainer.md +11 -13
  1158. package/docs/modern-form-guide.md +22 -1
  1159. package/docs/modern-form-migration.md +1 -1
  1160. package/package.json +7 -2
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.182.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { warn } from "../../../../utils/warnings.js";
@@ -9,6 +9,7 @@ import { getFieldKey } from "../modern/values.js";
9
9
  import { useFormProps } from "../Form.js";
10
10
  import { useFieldBinding } from "./use-field-binding.js";
11
11
  import { useInsideLegacyField } from "../Field.js";
12
+ import { c } from "react-compiler-runtime";
12
13
  import { useDebugValue, useId, useState } from "react";
13
14
 
14
15
  //#region src/components/form/Form/use-field/use-field-props.tsx
@@ -27,73 +28,117 @@ const defaultValuePropsMapper = ({ value, onChange }) => ({
27
28
  * without changing its hook order. The legacy binding (`useField`) is the
28
29
  * legacy backend's adapter and is inert when the field is not bound to it.
29
30
  */
30
- function useFieldProps(inputProps, params = {}) {
31
+ function useFieldProps(inputProps, t0) {
32
+ const $ = c(21);
33
+ let t1;
34
+ if ($[0] !== t0) {
35
+ t1 = t0 === void 0 ? {} : t0;
36
+ $[0] = t0;
37
+ $[1] = t1;
38
+ } else t1 = $[1];
39
+ const params = t1;
31
40
  const provided = useProviderProps(inputProps);
32
- const props = useValidationProps(useFormProps(provided.field ? {
33
- ...provided,
34
- ...provided.field.options,
35
- form: provided.field.form,
36
- name: typeof provided.field.path === "string" ? provided.field.path : getFieldKey(provided.field.path)
37
- } : provided));
41
+ let t2;
42
+ if ($[2] !== provided) {
43
+ t2 = provided.field ? {
44
+ ...provided,
45
+ ...provided.field.options,
46
+ form: provided.field.form,
47
+ name: typeof provided.field.path === "string" ? provided.field.path : getFieldKey(provided.field.path)
48
+ } : provided;
49
+ $[2] = provided;
50
+ $[3] = t2;
51
+ } else t2 = $[3];
52
+ const props = useValidationProps(useFormProps(t2));
38
53
  const [isDisabled] = useState(params.unsafe__isDisabled ?? false);
39
- const { valuePropsMapper = defaultValuePropsMapper, defaultValidationTrigger = "onBlur" } = params;
54
+ const { valuePropsMapper: t3, defaultValidationTrigger: t4 } = params;
55
+ const valuePropsMapper = t3 === void 0 ? defaultValuePropsMapper : t3;
56
+ const defaultValidationTrigger = t4 === void 0 ? "onBlur" : t4;
40
57
  const isInsideLegacyField = useInsideLegacyField();
41
- if (props.rules && !props.name) warn(`The "rules" prop is not suitable for fields that are not part of a form. Use "name" prop to link the field to a form.`);
58
+ if (props.rules && !props.name) warn("The \"rules\" prop is not suitable for fields that are not part of a form. Use \"name\" prop to link the field to a form.");
42
59
  const hasName = props.name != null;
43
60
  const generatedId = useId();
44
- const isBound = hasName && !isInsideLegacyField && !isDisabled;
45
- const field = useFieldBinding(props, {
46
- defaultValidationTrigger: params.defaultValidationTrigger,
47
- unbound: !isBound
48
- }, generatedId);
61
+ const t5 = !(hasName && !isInsideLegacyField && !isDisabled);
62
+ let t6;
63
+ if ($[4] !== params.defaultValidationTrigger || $[5] !== t5) {
64
+ t6 = {
65
+ defaultValidationTrigger: params.defaultValidationTrigger,
66
+ unbound: t5
67
+ };
68
+ $[4] = params.defaultValidationTrigger;
69
+ $[5] = t5;
70
+ $[6] = t6;
71
+ } else t6 = $[6];
72
+ const field = useFieldBinding(props, t6, generatedId);
49
73
  const isOutsideOfForm = field?.form == null;
50
- const onChangeEvent = useEvent((value, dontTouch) => {
51
- field?.onChange?.(value, dontTouch, field?.validateTrigger ?? defaultValidationTrigger);
52
- });
53
- function resolveResult() {
54
- if (isInsideLegacyField || isDisabled) return props;
55
- if (!hasName) {
56
- if (!props.id) {
57
- const result = {
58
- ...props,
59
- id: generatedId
60
- };
61
- if (result.id && !result.labelProps) result.labelProps = { for: result.id };
62
- else if (result.id && result.labelProps && !result.labelProps.for) result.labelProps = {
63
- ...result.labelProps,
64
- for: result.id
65
- };
66
- return result;
74
+ let t7;
75
+ if ($[7] !== defaultValidationTrigger || $[8] !== field) {
76
+ t7 = (value, dontTouch) => {
77
+ field?.onChange?.(value, dontTouch, field?.validateTrigger ?? defaultValidationTrigger);
78
+ };
79
+ $[7] = defaultValidationTrigger;
80
+ $[8] = field;
81
+ $[9] = t7;
82
+ } else t7 = $[9];
83
+ const onChangeEvent = useEvent(t7);
84
+ let t8;
85
+ if ($[10] !== defaultValidationTrigger || $[11] !== field || $[12] !== generatedId || $[13] !== hasName || $[14] !== isDisabled || $[15] !== isInsideLegacyField || $[16] !== isOutsideOfForm || $[17] !== onChangeEvent || $[18] !== props || $[19] !== valuePropsMapper) {
86
+ const resolved = function resolveResult() {
87
+ if (isInsideLegacyField || isDisabled) return props;
88
+ if (!hasName) {
89
+ if (!props.id) {
90
+ const result = {
91
+ ...props,
92
+ id: generatedId
93
+ };
94
+ if (result.id && !result.labelProps) result.labelProps = { for: result.id };
95
+ else if (result.id && result.labelProps && !result.labelProps.for) result.labelProps = {
96
+ ...result.labelProps,
97
+ for: result.id
98
+ };
99
+ return result;
100
+ }
101
+ return props;
67
102
  }
68
- return props;
69
- }
70
- if (props.rules && isOutsideOfForm) warn(`The "rules" prop is not supported for fields that are not part of a form. The "${props.name}" field is placed outside the form.`);
71
- const valueProps = !isOutsideOfForm ? valuePropsMapper({
72
- value: field.value,
73
- onChange: onChangeEvent
74
- }) : {};
75
- const { form: _form, onChange: _fieldOnChange, onBlur: _fieldOnBlur, ...fieldRest } = field ?? {};
76
- const result = isOutsideOfForm ? props : mergeProps(props, fieldRest, valueProps, {
77
- validateTrigger: field.validateTrigger ?? defaultValidationTrigger,
78
- onBlur: field.onBlur
79
- });
80
- return result.id ? {
81
- ...result,
82
- labelProps: {
83
- ...result.labelProps,
84
- for: result.id
85
- }
86
- } : result;
87
- }
88
- const resolved = resolveResult();
89
- const { field: _descriptor, dependsOn: _dependsOn, deps: _deps, ...domProps } = isModernFormController(resolved.form) ? {
90
- ...resolved,
91
- form: void 0
92
- } : resolved;
93
- const namedProps = domProps.name != null && typeof domProps.name !== "string" ? {
94
- ...domProps,
95
- name: getFieldKey(domProps.name)
96
- } : domProps;
103
+ if (props.rules && isOutsideOfForm) warn(`The "rules" prop is not supported for fields that are not part of a form. The "${props.name}" field is placed outside the form.`);
104
+ const valueProps = !isOutsideOfForm ? valuePropsMapper({
105
+ value: field.value,
106
+ onChange: onChangeEvent
107
+ }) : {};
108
+ const { form: _form, onChange: _fieldOnChange, onBlur: _fieldOnBlur, ...fieldRest } = field ?? {};
109
+ const result_0 = isOutsideOfForm ? props : mergeProps(props, fieldRest, valueProps, {
110
+ validateTrigger: field.validateTrigger ?? defaultValidationTrigger,
111
+ onBlur: field.onBlur
112
+ });
113
+ return result_0.id ? {
114
+ ...result_0,
115
+ labelProps: {
116
+ ...result_0.labelProps,
117
+ for: result_0.id
118
+ }
119
+ } : result_0;
120
+ }();
121
+ const { field: _descriptor, dependsOn: _dependsOn, deps: _deps, ...domProps } = isModernFormController(resolved.form) ? {
122
+ ...resolved,
123
+ form: void 0
124
+ } : resolved;
125
+ t8 = domProps.name != null && typeof domProps.name !== "string" ? {
126
+ ...domProps,
127
+ name: getFieldKey(domProps.name)
128
+ } : domProps;
129
+ $[10] = defaultValidationTrigger;
130
+ $[11] = field;
131
+ $[12] = generatedId;
132
+ $[13] = hasName;
133
+ $[14] = isDisabled;
134
+ $[15] = isInsideLegacyField;
135
+ $[16] = isOutsideOfForm;
136
+ $[17] = onChangeEvent;
137
+ $[18] = props;
138
+ $[19] = valuePropsMapper;
139
+ $[20] = t8;
140
+ } else t8 = $[20];
141
+ const namedProps = t8;
97
142
  useDebugValue(namedProps);
98
143
  return namedProps;
99
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-field-props.js","names":[],"sources":["../../../../../src/components/form/Form/use-field/use-field-props.tsx"],"sourcesContent":["import { useDebugValue, useId, useState } from 'react';\n\nimport { useEvent } from '../../../../_internal/index';\nimport { useProviderProps } from '../../../../provider';\nimport { mergeProps } from '../../../../utils/react/index';\nimport { warn } from '../../../../utils/warnings';\nimport { useValidationProps } from '../../validation/index';\nimport { isModernFormController } from '../backend';\nimport { useInsideLegacyField } from '../Field';\nimport { useFormProps } from '../Form';\nimport { getFieldKey } from '../modern/values';\n\nimport { useFieldBinding } from './use-field-binding';\n\nimport type { ValidateTrigger } from '../../../../shared/index';\nimport type { FieldTypes } from '../types';\nimport type { UseFieldProps } from './types';\n\nexport type UseFieldPropsParams = {\n valuePropsMapper?: ({ value, onChange }) => any;\n /**\n * @default 'onBlur'\n */\n defaultValidationTrigger?: ValidateTrigger;\n /**\n * prop helps to prevent calling hook conditionally, but changing this prop during render is unsafe and forbidden\n * If you want to change this prop after mount, remount the component with a new value.\n */\n unsafe__isDisabled?: boolean;\n};\n\nconst defaultValuePropsMapper = ({ value, onChange }) => ({\n value: value ?? null,\n onChange,\n});\n\n/** Preserve the input's prop shape while exposing a DOM-safe name. */\ntype ResolvedFieldProps<Props> = {\n [Key in keyof Props]: Key extends 'name' ? string | undefined : Props[Key];\n};\n\n/**\n * The single entry point for input components (see\n * `docs/rules/input-components.md`).\n *\n * Every hook below runs on every render, whatever the mode: standalone (no\n * `name`), inside the deprecated `<Field>`, disabled through\n * `unsafe__isDisabled`, or bound to a form. The mode only decides which props\n * come back, so an input can gain or lose a `name`, or move between forms,\n * without changing its hook order. The legacy binding (`useField`) is the\n * legacy backend's adapter and is inert when the field is not bound to it.\n */\nexport function useFieldProps<\n T extends FieldTypes,\n Props extends UseFieldProps<T>,\n>(\n inputProps: Props,\n params: UseFieldPropsParams = {},\n): ResolvedFieldProps<Props> {\n // Provider defaults, then form context, then the normalization of the\n // deprecated `validationState` prop into `isInvalid`/`isValid`.\n const provided = useProviderProps(inputProps);\n const props: Props = useValidationProps(\n useFormProps(\n provided.field\n ? {\n ...provided,\n ...provided.field.options,\n form: provided.field.form,\n name:\n typeof provided.field.path === 'string'\n ? provided.field.path\n : getFieldKey(provided.field.path),\n }\n : provided,\n ),\n );\n\n // The initial value is what counts: changing it after mount is unsupported.\n const [isDisabled] = useState(params.unsafe__isDisabled ?? false);\n\n const {\n valuePropsMapper = defaultValuePropsMapper,\n defaultValidationTrigger = 'onBlur',\n } = params;\n\n const isInsideLegacyField = useInsideLegacyField();\n\n if (props.rules && !props.name) {\n warn(\n `The \"rules\" prop is not suitable for fields that are not part of a form. Use \"name\" prop to link the field to a form.`,\n );\n }\n\n const hasName = props.name != null;\n const generatedId = useId();\n const isBound = hasName && !isInsideLegacyField && !isDisabled;\n\n const field = useFieldBinding<T, Props>(\n props,\n {\n defaultValidationTrigger: params.defaultValidationTrigger,\n unbound: !isBound,\n },\n generatedId,\n );\n\n const isOutsideOfForm = field?.form == null;\n\n const onChangeEvent = useEvent((value, dontTouch: boolean) => {\n field?.onChange?.(\n value,\n dontTouch,\n field?.validateTrigger ?? defaultValidationTrigger,\n );\n });\n\n function resolveResult(): Props {\n if (isInsideLegacyField || isDisabled) {\n return props;\n }\n\n if (!hasName) {\n // Standalone field - just add generated ID if not provided\n if (!props.id) {\n const result = { ...props, id: generatedId };\n\n if (result.id && !result.labelProps) {\n result.labelProps = { for: result.id };\n } else if (result.id && result.labelProps && !result.labelProps.for) {\n result.labelProps = { ...result.labelProps, for: result.id };\n }\n\n return result as Props;\n }\n return props;\n }\n\n if (props.rules && isOutsideOfForm) {\n warn(\n `The \"rules\" prop is not supported for fields that are not part of a form. The \"${props.name}\" field is placed outside the form.`,\n );\n }\n\n const valueProps = !isOutsideOfForm\n ? valuePropsMapper({\n value: field.value,\n onChange: onChangeEvent,\n })\n : {};\n\n // Exclude `form` (it must never reach a DOM node) and the field's own\n // handlers: `valueProps` already routes the component's change event into\n // `field.onChange` under the name the component listens to, and `onBlur` is\n // added once below. `mergeProps` chains same-named handlers, so merging them\n // here as well made every user change and every blur run the field handler\n // twice — and onChange/onBlur-triggered validation validate twice.\n const {\n form: _form,\n onChange: _fieldOnChange,\n onBlur: _fieldOnBlur,\n ...fieldRest\n } = field ?? {};\n\n const result: Props = isOutsideOfForm\n ? props\n : mergeProps(props, fieldRest, valueProps, {\n validateTrigger: field.validateTrigger ?? defaultValidationTrigger,\n // Chained after the caller's own `onBlur` by `mergeProps`.\n onBlur: field.onBlur,\n });\n\n return result.id\n ? { ...result, labelProps: { ...result.labelProps, for: result.id } }\n : result;\n }\n\n const resolved = resolveResult();\n // React Aria forwards `form` to native inputs. A modern controller is a\n // binding source, never an HTML form id, including in standalone/group mode.\n const result = isModernFormController(resolved.form)\n ? { ...resolved, form: undefined }\n : resolved;\n\n const {\n field: _descriptor,\n dependsOn: _dependsOn,\n deps: _deps,\n ...domProps\n } = result;\n // Standalone and group-scoped inputs do not merge a bound field's props.\n // Their tuple must still become a string before React Aria or DOM forwarding.\n const namedProps =\n domProps.name != null && typeof domProps.name !== 'string'\n ? { ...domProps, name: getFieldKey(domProps.name) }\n : domProps;\n useDebugValue(namedProps);\n\n return namedProps as ResolvedFieldProps<Props>;\n}\n"],"mappings":";;;;;;;;;;;;;;AA+BA,MAAM,2BAA2B,EAAE,OAAO,gBAAgB;CACxD,OAAO,SAAS;CAChB;CACD;;;;;;;;;;;;AAkBD,SAAgB,cAId,YACA,SAA8B,EAAE,EACL;CAG3B,MAAM,WAAW,iBAAiB,WAAW;CAC7C,MAAM,QAAe,mBACnB,aACE,SAAS,QACL;EACE,GAAG;EACH,GAAG,SAAS,MAAM;EAClB,MAAM,SAAS,MAAM;EACrB,MACE,OAAO,SAAS,MAAM,SAAS,WAC3B,SAAS,MAAM,OACf,YAAY,SAAS,MAAM,KAAK;EACvC,GACD,SACL,CACF;CAGD,MAAM,CAAC,cAAc,SAAS,OAAO,sBAAsB,MAAM;CAEjE,MAAM,EACJ,mBAAmB,yBACnB,2BAA2B,aACzB;CAEJ,MAAM,sBAAsB,sBAAsB;AAElD,KAAI,MAAM,SAAS,CAAC,MAAM,KACxB,MACE,wHACD;CAGH,MAAM,UAAU,MAAM,QAAQ;CAC9B,MAAM,cAAc,OAAO;CAC3B,MAAM,UAAU,WAAW,CAAC,uBAAuB,CAAC;CAEpD,MAAM,QAAQ,gBACZ,OACA;EACE,0BAA0B,OAAO;EACjC,SAAS,CAAC;EACX,EACD,YACD;CAED,MAAM,kBAAkB,OAAO,QAAQ;CAEvC,MAAM,gBAAgB,UAAU,OAAO,cAAuB;AAC5D,SAAO,WACL,OACA,WACA,OAAO,mBAAmB,yBAC3B;GACD;CAEF,SAAS,gBAAuB;AAC9B,MAAI,uBAAuB,WACzB,QAAO;AAGT,MAAI,CAAC,SAAS;AAEZ,OAAI,CAAC,MAAM,IAAI;IACb,MAAM,SAAS;KAAE,GAAG;KAAO,IAAI;KAAa;AAE5C,QAAI,OAAO,MAAM,CAAC,OAAO,WACvB,QAAO,aAAa,EAAE,KAAK,OAAO,IAAI;aAC7B,OAAO,MAAM,OAAO,cAAc,CAAC,OAAO,WAAW,IAC9D,QAAO,aAAa;KAAE,GAAG,OAAO;KAAY,KAAK,OAAO;KAAI;AAG9D,WAAO;;AAET,UAAO;;AAGT,MAAI,MAAM,SAAS,gBACjB,MACE,kFAAkF,MAAM,KAAK,qCAC9F;EAGH,MAAM,aAAa,CAAC,kBAChB,iBAAiB;GACf,OAAO,MAAM;GACb,UAAU;GACX,CAAC,GACF,EAAE;EAQN,MAAM,EACJ,MAAM,OACN,UAAU,gBACV,QAAQ,cACR,GAAG,cACD,SAAS,EAAE;EAEf,MAAM,SAAgB,kBAClB,QACA,WAAW,OAAO,WAAW,YAAY;GACvC,iBAAiB,MAAM,mBAAmB;GAE1C,QAAQ,MAAM;GACf,CAAC;AAEN,SAAO,OAAO,KACV;GAAE,GAAG;GAAQ,YAAY;IAAE,GAAG,OAAO;IAAY,KAAK,OAAO;IAAI;GAAE,GACnE;;CAGN,MAAM,WAAW,eAAe;CAOhC,MAAM,EACJ,OAAO,aACP,WAAW,YACX,MAAM,OACN,GAAG,aARU,uBAAuB,SAAS,KAAK,GAChD;EAAE,GAAG;EAAU,MAAM;EAAW,GAChC;CAUJ,MAAM,aACJ,SAAS,QAAQ,QAAQ,OAAO,SAAS,SAAS,WAC9C;EAAE,GAAG;EAAU,MAAM,YAAY,SAAS,KAAK;EAAE,GACjD;AACN,eAAc,WAAW;AAEzB,QAAO"}
1
+ {"version":3,"file":"use-field-props.js","names":["useDebugValue","useId","useState","useEvent","useProviderProps","mergeProps","warn","useValidationProps","isModernFormController","useInsideLegacyField","useFormProps","getFieldKey","useFieldBinding","ValidateTrigger","FieldTypes","UseFieldProps","UseFieldPropsParams","valuePropsMapper","value","onChange","defaultValidationTrigger","unsafe__isDisabled","defaultValuePropsMapper","ResolvedFieldProps","Props","Key","useFieldProps","inputProps","t0","$","_c","t1","undefined","params","provided","t2","field","options","form","name","path","props","isDisabled","t3","t4","isInsideLegacyField","rules","hasName","generatedId","isBound","t5","t6","unbound","isOutsideOfForm","t7","dontTouch","validateTrigger","onChangeEvent","t8","resolveResult","id","result","labelProps","for","valueProps","_form","_fieldOnChange","onBlur","_fieldOnBlur","fieldRest","result_0","resolved","result_1","_descriptor","dependsOn","_dependsOn","deps","_deps","domProps","namedProps"],"sources":["../../../../../src/components/form/Form/use-field/use-field-props.tsx"],"sourcesContent":["import { useDebugValue, useId, useState } from 'react';\n\nimport { useEvent } from '../../../../_internal/index';\nimport { useProviderProps } from '../../../../provider';\nimport { mergeProps } from '../../../../utils/react/index';\nimport { warn } from '../../../../utils/warnings';\nimport { useValidationProps } from '../../validation/index';\nimport { isModernFormController } from '../backend';\nimport { useInsideLegacyField } from '../Field';\nimport { useFormProps } from '../Form';\nimport { getFieldKey } from '../modern/values';\n\nimport { useFieldBinding } from './use-field-binding';\n\nimport type { ValidateTrigger } from '../../../../shared/index';\nimport type { FieldTypes } from '../types';\nimport type { UseFieldProps } from './types';\n\nexport type UseFieldPropsParams = {\n valuePropsMapper?: ({ value, onChange }) => any;\n /**\n * @default 'onBlur'\n */\n defaultValidationTrigger?: ValidateTrigger;\n /**\n * prop helps to prevent calling hook conditionally, but changing this prop during render is unsafe and forbidden\n * If you want to change this prop after mount, remount the component with a new value.\n */\n unsafe__isDisabled?: boolean;\n};\n\nconst defaultValuePropsMapper = ({ value, onChange }) => ({\n value: value ?? null,\n onChange,\n});\n\n/** Preserve the input's prop shape while exposing a DOM-safe name. */\ntype ResolvedFieldProps<Props> = {\n [Key in keyof Props]: Key extends 'name' ? string | undefined : Props[Key];\n};\n\n/**\n * The single entry point for input components (see\n * `docs/rules/input-components.md`).\n *\n * Every hook below runs on every render, whatever the mode: standalone (no\n * `name`), inside the deprecated `<Field>`, disabled through\n * `unsafe__isDisabled`, or bound to a form. The mode only decides which props\n * come back, so an input can gain or lose a `name`, or move between forms,\n * without changing its hook order. The legacy binding (`useField`) is the\n * legacy backend's adapter and is inert when the field is not bound to it.\n */\nexport function useFieldProps<\n T extends FieldTypes,\n Props extends UseFieldProps<T>,\n>(\n inputProps: Props,\n params: UseFieldPropsParams = {},\n): ResolvedFieldProps<Props> {\n // Provider defaults, then form context, then the normalization of the\n // deprecated `validationState` prop into `isInvalid`/`isValid`.\n const provided = useProviderProps(inputProps);\n const props: Props = useValidationProps(\n useFormProps(\n provided.field\n ? {\n ...provided,\n ...provided.field.options,\n form: provided.field.form,\n name:\n typeof provided.field.path === 'string'\n ? provided.field.path\n : getFieldKey(provided.field.path),\n }\n : provided,\n ),\n );\n\n // The initial value is what counts: changing it after mount is unsupported.\n const [isDisabled] = useState(params.unsafe__isDisabled ?? false);\n\n const {\n valuePropsMapper = defaultValuePropsMapper,\n defaultValidationTrigger = 'onBlur',\n } = params;\n\n const isInsideLegacyField = useInsideLegacyField();\n\n if (props.rules && !props.name) {\n warn(\n `The \"rules\" prop is not suitable for fields that are not part of a form. Use \"name\" prop to link the field to a form.`,\n );\n }\n\n const hasName = props.name != null;\n const generatedId = useId();\n const isBound = hasName && !isInsideLegacyField && !isDisabled;\n\n const field = useFieldBinding<T, Props>(\n props,\n {\n defaultValidationTrigger: params.defaultValidationTrigger,\n unbound: !isBound,\n },\n generatedId,\n );\n\n const isOutsideOfForm = field?.form == null;\n\n const onChangeEvent = useEvent((value, dontTouch: boolean) => {\n field?.onChange?.(\n value,\n dontTouch,\n field?.validateTrigger ?? defaultValidationTrigger,\n );\n });\n\n function resolveResult(): Props {\n if (isInsideLegacyField || isDisabled) {\n return props;\n }\n\n if (!hasName) {\n // Standalone field - just add generated ID if not provided\n if (!props.id) {\n const result = { ...props, id: generatedId };\n\n if (result.id && !result.labelProps) {\n result.labelProps = { for: result.id };\n } else if (result.id && result.labelProps && !result.labelProps.for) {\n result.labelProps = { ...result.labelProps, for: result.id };\n }\n\n return result as Props;\n }\n return props;\n }\n\n if (props.rules && isOutsideOfForm) {\n warn(\n `The \"rules\" prop is not supported for fields that are not part of a form. The \"${props.name}\" field is placed outside the form.`,\n );\n }\n\n const valueProps = !isOutsideOfForm\n ? valuePropsMapper({\n value: field.value,\n onChange: onChangeEvent,\n })\n : {};\n\n // Exclude `form` (it must never reach a DOM node) and the field's own\n // handlers: `valueProps` already routes the component's change event into\n // `field.onChange` under the name the component listens to, and `onBlur` is\n // added once below. `mergeProps` chains same-named handlers, so merging them\n // here as well made every user change and every blur run the field handler\n // twice — and onChange/onBlur-triggered validation validate twice.\n const {\n form: _form,\n onChange: _fieldOnChange,\n onBlur: _fieldOnBlur,\n ...fieldRest\n } = field ?? {};\n\n const result: Props = isOutsideOfForm\n ? props\n : mergeProps(props, fieldRest, valueProps, {\n validateTrigger: field.validateTrigger ?? defaultValidationTrigger,\n // Chained after the caller's own `onBlur` by `mergeProps`.\n onBlur: field.onBlur,\n });\n\n return result.id\n ? { ...result, labelProps: { ...result.labelProps, for: result.id } }\n : result;\n }\n\n const resolved = resolveResult();\n // React Aria forwards `form` to native inputs. A modern controller is a\n // binding source, never an HTML form id, including in standalone/group mode.\n const result = isModernFormController(resolved.form)\n ? { ...resolved, form: undefined }\n : resolved;\n\n const {\n field: _descriptor,\n dependsOn: _dependsOn,\n deps: _deps,\n ...domProps\n } = result;\n // Standalone and group-scoped inputs do not merge a bound field's props.\n // Their tuple must still become a string before React Aria or DOM forwarding.\n const namedProps =\n domProps.name != null && typeof domProps.name !== 'string'\n ? { ...domProps, name: getFieldKey(domProps.name) }\n : domProps;\n useDebugValue(namedProps);\n\n return namedProps as ResolvedFieldProps<Props>;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.182.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { useIsFirstRender } from "../../../../_internal/hooks/use-is-first-render.js";
@@ -27,6 +27,7 @@ function removeId(name, id) {
27
27
  ID_MAP[name] = ID_MAP[name].filter((_id) => _id !== id);
28
28
  }
29
29
  function useField(props, params) {
30
+ "use no memo";
30
31
  props = useFormProps(props);
31
32
  let { defaultValue, id, idPrefix, name, form: sourceForm, rules, message, description, errorMessage, validateTrigger = params.defaultValidationTrigger, validationDelay, showValid, shouldUpdate, isRequired: isRequiredProp, necessityIndicator: necessityIndicatorProp } = props;
32
33
  if (params.unbound) {
@@ -92,7 +93,7 @@ function useField(props, params) {
92
93
  if (!field?.touched && defaultValue != null) form.setFieldValue(fieldName, defaultValue, false, true);
93
94
  }
94
95
  if (field) field.rules = processedRules;
95
- let isRequired = !!processedRules?.find((rule) => "required" in rule && rule.required === true);
96
+ let isRequired = !!processedRules?.find((rule_0) => "required" in rule_0 && rule_0.required === true);
96
97
  const suppressNecessityIndicator = isRequired && !isRequiredProp && necessityIndicatorProp === void 0;
97
98
  useEffect(() => {
98
99
  if (form && field) {
@@ -102,7 +103,7 @@ function useField(props, params) {
102
103
  }, [field, boundForms]);
103
104
  const onChangeHandler = useEvent((val, dontTouch) => {
104
105
  if (!form) return;
105
- const field = form.getFieldInstance(fieldName);
106
+ const field_0 = form.getFieldInstance(fieldName);
106
107
  if (shouldUpdate) {
107
108
  const fieldsValue = form.getFieldsValue();
108
109
  if (typeof shouldUpdate === "boolean" ? !shouldUpdate : !shouldUpdate(fieldsValue, {
@@ -111,7 +112,7 @@ function useField(props, params) {
111
112
  })) return;
112
113
  }
113
114
  form.setFieldValue(fieldName, val, !dontTouch);
114
- if (!dontTouch && (validateTrigger === "onChange" || field && field.errors && field.errors.length)) form.validateField(fieldName).catch(() => {});
115
+ if (!dontTouch && (validateTrigger === "onChange" || field_0 && field_0.errors && field_0.errors.length)) form.validateField(fieldName).catch(() => {});
115
116
  });
116
117
  const onBlurHandler = useEvent(() => {
117
118
  if (validateTrigger === "onBlur") setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-field.js","names":[],"sources":["../../../../../src/components/form/Form/use-field/use-field.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\n\nimport { useEvent, useIsFirstRender } from '../../../../_internal/index';\nimport { ValidateTrigger } from '../../../../shared/index';\nimport { useLayoutEffect } from '../../../../utils/react/useLayoutEffect';\nimport { resolveValidationProps } from '../../validation/index';\nimport {\n isModernFormController,\n modernBackendUnavailableError,\n} from '../backend';\nimport { useFormProps } from '../Form';\nimport { FieldTypes } from '../types';\nimport { delayValidationRule } from '../validation';\n\nimport { FieldReturnValue, UseFieldProps } from './types';\n\nimport type { CubeFormInstance } from '../use-form';\n\nconst ID_MAP = {};\n\nfunction createId(name) {\n if (!name) return;\n\n if (!ID_MAP[name]) {\n ID_MAP[name] = [];\n }\n\n let i = 0;\n let id;\n\n do {\n id = i ? `${name}_${i}` : name;\n i++;\n } while (ID_MAP[name].includes(id));\n\n ID_MAP[name].push(id);\n\n return id;\n}\n\nfunction removeId(name, id) {\n if (!ID_MAP[name]) return;\n\n ID_MAP[name] = ID_MAP[name].filter((_id) => _id !== id);\n}\n\nexport type UseFieldParams = {\n defaultValidationTrigger?: ValidateTrigger;\n /**\n * Run without a binding: `useFieldProps` sets this for an input that is\n * standalone, inside the deprecated `<Field>` or disabled, so that this hook\n * is still called (stable hook order) but registers nothing.\n */\n unbound?: boolean;\n};\n\nexport function useField<\n T extends FieldTypes,\n Props extends UseFieldProps<T> & { name?: string },\n>(props: Props, params: UseFieldParams): FieldReturnValue<T> {\n props = useFormProps(props);\n\n let {\n defaultValue,\n id,\n idPrefix,\n name,\n form: sourceForm,\n rules,\n message,\n description,\n errorMessage,\n validateTrigger = params.defaultValidationTrigger,\n validationDelay,\n showValid,\n shouldUpdate,\n isRequired: isRequiredProp,\n necessityIndicator: necessityIndicatorProp,\n } = props;\n\n if (params.unbound) {\n name = undefined;\n sourceForm = undefined;\n }\n\n if (!params.unbound && isModernFormController(sourceForm)) {\n throw modernBackendUnavailableError(\n name != null ? `The \"${name}\" field` : 'A field without a name',\n );\n }\n\n // A modern source is rejected above (or cleared when this adapter is inert).\n // Keep unbranded structural legacy instances supported as before.\n const form = sourceForm as CubeFormInstance<T> | undefined;\n\n const { isInvalid: isInvalidProp, isValid: isValidProp } =\n resolveValidationProps(props);\n\n const processedRules = useMemo(() => {\n let finalRules = rules;\n\n // If isRequired prop is set, ensure there's a required rule\n if (isRequiredProp) {\n const hasRequiredRule = finalRules?.some(\n (rule) => 'required' in rule && rule.required === true,\n );\n\n if (!hasRequiredRule) {\n finalRules = finalRules\n ? [{ required: true }, ...finalRules]\n : [{ required: true }];\n }\n }\n\n // Add delay rule if needed\n if (finalRules && finalRules.length && validationDelay) {\n return [delayValidationRule(validationDelay), ...finalRules];\n }\n\n return finalRules;\n }, [rules, validationDelay, isRequiredProp]);\n\n const nonInput = !name;\n const fieldName: string = name != null ? name : '';\n\n const isFirstRender = useIsFirstRender();\n const baseId = id || (idPrefix ? `${idPrefix}_${fieldName}` : fieldName);\n\n // The id the effect below registered, with the base it was registered for.\n // Between a base change and that effect's next run the state is stale, and\n // handing it out would let the element carry the previous binding's id for\n // one commit — which can duplicate a sibling's live id — so the current base\n // is used until the effect catches up. An explicit `id` is used as it is.\n const [assignedId, setAssignedId] = useState({ base: baseId, id: baseId });\n const currentId = id || (assignedId.base === baseId ? assignedId.id : baseId);\n\n // Ids are registered per base (form name prefix plus field name), so that\n // duplicates get a suffix and the base is released when it changes or the\n // input unmounts. `id` and `nonInput` cannot change without the base. A\n // layout effect: when the base changes, the commit that carries the\n // unsuffixed base is corrected before the browser paints, so a duplicate\n // never shows a colliding id.\n useLayoutEffect(() => {\n if (id || nonInput) return;\n\n const newId = createId(baseId);\n\n setAssignedId((previous) =>\n previous.base === baseId && previous.id === newId\n ? previous\n : { base: baseId, id: newId },\n );\n\n return () => {\n removeId(baseId, newId);\n };\n }, [baseId, id, nonInput]);\n\n // Every form this hook registered the current name with. The dual-backend\n // shell keeps the hook mounted for standalone inputs, so a form may arrive\n // later or change, and the name may change; the name is released from all\n // of them, not from whichever form a closure happened to capture. This is\n // state rather than a ref only to keep render free of ref access.\n const [boundForms] = useState(() => new Set<CubeFormInstance<any>>());\n\n useEffect(() => {\n return () => {\n if (fieldName) {\n boundForms.forEach((boundForm) => boundForm.removeField(fieldName));\n }\n\n boundForms.clear();\n };\n }, [fieldName, boundForms]);\n\n let field = form?.getFieldInstance(fieldName);\n\n if (form) {\n // First render of this binding: the hook's first render, or a named field\n // that is not registered yet because the name or the form changed after\n // mount. Without a name the engine returns an unstored placeholder, so it\n // is only created on the first render, as before: creating it again on\n // every render would give the effect below a new object each time.\n if (isFirstRender || (!field && fieldName)) {\n if (!field) {\n field = form.createField(fieldName, true);\n }\n\n if (field?.value == null && defaultValue != null) {\n form.setFieldValue(fieldName, defaultValue, false, true);\n form.updateInitialFieldsValue({ [fieldName]: defaultValue });\n\n field = form?.getFieldInstance(fieldName);\n }\n }\n\n if (!field?.touched && defaultValue != null) {\n form.setFieldValue(fieldName, defaultValue, false, true);\n }\n }\n\n if (field) {\n field.rules = processedRules;\n }\n\n let isRequired = !!processedRules?.find(\n (rule) => 'required' in rule && rule.required === true,\n );\n\n // `isRequired` has two sources with different intent. A `required` rule states\n // how the field behaves: it is what validation runs, and `aria-required` is\n // its programmatic mirror, so the flag has to reach the input either way. The\n // `isRequired` prop additionally states what the label should say. So unless\n // the prop itself asked for the marker, suppress it — an absent prop and an\n // explicit `isRequired={false}` both mean \"do not mark this\", the latter\n // rather more loudly. An explicit `necessityIndicator` overrides either way,\n // being a request for the marker in its own right.\n const suppressNecessityIndicator =\n isRequired && !isRequiredProp && necessityIndicatorProp === undefined;\n\n // Registration happens during render. Once it is committed, remember the\n // form for the release above and re-render the form's owner so its\n // render-time reads see the new field. `form` is deliberately not a\n // dependency: a form whose identity changes on every render (a copy, an\n // inline mock) shares its store, and re-running here would loop.\n useEffect(() => {\n if (form && field) {\n boundForms.add(form);\n form.forceReRender();\n }\n }, [field, boundForms]);\n\n const onChangeHandler = useEvent((val: any, dontTouch: boolean) => {\n if (!form) return;\n\n const field = form.getFieldInstance(fieldName);\n\n if (shouldUpdate) {\n const fieldsValue = form.getFieldsValue();\n\n // check if we should update the value of the field\n const shouldNotBeUpdated =\n typeof shouldUpdate === 'boolean'\n ? !shouldUpdate\n : !shouldUpdate(fieldsValue, {\n ...fieldsValue,\n [fieldName]: val,\n });\n\n if (shouldNotBeUpdated) {\n return;\n }\n }\n\n form.setFieldValue(fieldName, val, !dontTouch);\n\n if (\n !dontTouch &&\n (validateTrigger === 'onChange' ||\n (field && field.errors && field.errors.length))\n ) {\n form.validateField(fieldName).catch(() => {}); // do nothing on fail\n }\n });\n\n const onBlurHandler = useEvent(() => {\n if (validateTrigger === 'onBlur') {\n // We need a timeout so the change event can be done.\n setTimeout(() => {\n form?.validateField(fieldName).catch(() => {}); // do nothing on fail\n });\n }\n });\n\n let value = field?.value;\n\n return useMemo(\n () => ({\n id: currentId,\n name: fieldName,\n value,\n validateTrigger,\n form,\n field,\n nonInput,\n\n // Explicit validation props always win over the state derived from the form\n isInvalid: isInvalidProp ?? !!field?.errors?.length,\n isValid: isValidProp ?? !!(showValid && field?.status === 'valid'),\n ...(isRequired && { isRequired }),\n ...(suppressNecessityIndicator && { necessityIndicator: null }),\n message:\n message !== undefined\n ? message\n : field?.status === 'invalid' && field?.errors?.[0],\n description,\n errorMessage:\n errorMessage !== undefined\n ? errorMessage\n : field?.status === 'invalid' && field?.errors?.length\n ? field.errors[0]\n : undefined,\n onBlur: onBlurHandler,\n onChange: onChangeHandler,\n }),\n [\n form,\n field,\n field?.value,\n field?.errors?.length,\n field?.status,\n currentId,\n fieldName,\n isRequired,\n suppressNecessityIndicator,\n message,\n description,\n errorMessage,\n onBlurHandler,\n onChangeHandler,\n validateTrigger,\n isInvalidProp,\n isValidProp,\n showValid,\n nonInput,\n ],\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-field.js","names":["useEffect","useMemo","useState","useEvent","useIsFirstRender","ValidateTrigger","useLayoutEffect","resolveValidationProps","isModernFormController","modernBackendUnavailableError","useFormProps","FieldTypes","delayValidationRule","FieldReturnValue","UseFieldProps","CubeFormInstance","ID_MAP","createId","name","i","id","includes","push","removeId","filter","_id","UseFieldParams","defaultValidationTrigger","unbound","useField","T","props","Props","params","defaultValue","idPrefix","form","sourceForm","rules","message","description","errorMessage","validateTrigger","validationDelay","showValid","shouldUpdate","isRequired","isRequiredProp","necessityIndicator","necessityIndicatorProp","undefined","isInvalid","isInvalidProp","isValid","isValidProp","processedRules","finalRules","hasRequiredRule","some","rule","required","length","nonInput","fieldName","isFirstRender","baseId","assignedId","setAssignedId","base","currentId","newId","previous","boundForms","Set","forEach","boundForm","removeField","clear","field","getFieldInstance","createField","value","setFieldValue","updateInitialFieldsValue","touched","find","suppressNecessityIndicator","add","forceReRender","onChangeHandler","val","dontTouch","fieldsValue","getFieldsValue","shouldNotBeUpdated","errors","validateField","catch","onBlurHandler","setTimeout","status","onBlur","onChange"],"sources":["../../../../../src/components/form/Form/use-field/use-field.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\n\nimport { useEvent, useIsFirstRender } from '../../../../_internal/index';\nimport { ValidateTrigger } from '../../../../shared/index';\nimport { useLayoutEffect } from '../../../../utils/react/useLayoutEffect';\nimport { resolveValidationProps } from '../../validation/index';\nimport {\n isModernFormController,\n modernBackendUnavailableError,\n} from '../backend';\nimport { useFormProps } from '../Form';\nimport { FieldTypes } from '../types';\nimport { delayValidationRule } from '../validation';\n\nimport { FieldReturnValue, UseFieldProps } from './types';\n\nimport type { CubeFormInstance } from '../use-form';\n\nconst ID_MAP = {};\n\nfunction createId(name) {\n if (!name) return;\n\n if (!ID_MAP[name]) {\n ID_MAP[name] = [];\n }\n\n let i = 0;\n let id;\n\n do {\n id = i ? `${name}_${i}` : name;\n i++;\n } while (ID_MAP[name].includes(id));\n\n ID_MAP[name].push(id);\n\n return id;\n}\n\nfunction removeId(name, id) {\n if (!ID_MAP[name]) return;\n\n ID_MAP[name] = ID_MAP[name].filter((_id) => _id !== id);\n}\n\nexport type UseFieldParams = {\n defaultValidationTrigger?: ValidateTrigger;\n /**\n * Run without a binding: `useFieldProps` sets this for an input that is\n * standalone, inside the deprecated `<Field>` or disabled, so that this hook\n * is still called (stable hook order) but registers nothing.\n */\n unbound?: boolean;\n};\n\nexport function useField<\n T extends FieldTypes,\n Props extends UseFieldProps<T> & { name?: string },\n>(props: Props, params: UseFieldParams): FieldReturnValue<T> {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n props = useFormProps(props);\n\n let {\n defaultValue,\n id,\n idPrefix,\n name,\n form: sourceForm,\n rules,\n message,\n description,\n errorMessage,\n validateTrigger = params.defaultValidationTrigger,\n validationDelay,\n showValid,\n shouldUpdate,\n isRequired: isRequiredProp,\n necessityIndicator: necessityIndicatorProp,\n } = props;\n\n if (params.unbound) {\n name = undefined;\n sourceForm = undefined;\n }\n\n if (!params.unbound && isModernFormController(sourceForm)) {\n throw modernBackendUnavailableError(\n name != null ? `The \"${name}\" field` : 'A field without a name',\n );\n }\n\n // A modern source is rejected above (or cleared when this adapter is inert).\n // Keep unbranded structural legacy instances supported as before.\n const form = sourceForm as CubeFormInstance<T> | undefined;\n\n const { isInvalid: isInvalidProp, isValid: isValidProp } =\n resolveValidationProps(props);\n\n const processedRules = useMemo(() => {\n let finalRules = rules;\n\n // If isRequired prop is set, ensure there's a required rule\n if (isRequiredProp) {\n const hasRequiredRule = finalRules?.some(\n (rule) => 'required' in rule && rule.required === true,\n );\n\n if (!hasRequiredRule) {\n finalRules = finalRules\n ? [{ required: true }, ...finalRules]\n : [{ required: true }];\n }\n }\n\n // Add delay rule if needed\n if (finalRules && finalRules.length && validationDelay) {\n return [delayValidationRule(validationDelay), ...finalRules];\n }\n\n return finalRules;\n }, [rules, validationDelay, isRequiredProp]);\n\n const nonInput = !name;\n const fieldName: string = name != null ? name : '';\n\n const isFirstRender = useIsFirstRender();\n const baseId = id || (idPrefix ? `${idPrefix}_${fieldName}` : fieldName);\n\n // The id the effect below registered, with the base it was registered for.\n // Between a base change and that effect's next run the state is stale, and\n // handing it out would let the element carry the previous binding's id for\n // one commit — which can duplicate a sibling's live id — so the current base\n // is used until the effect catches up. An explicit `id` is used as it is.\n const [assignedId, setAssignedId] = useState({ base: baseId, id: baseId });\n const currentId = id || (assignedId.base === baseId ? assignedId.id : baseId);\n\n // Ids are registered per base (form name prefix plus field name), so that\n // duplicates get a suffix and the base is released when it changes or the\n // input unmounts. `id` and `nonInput` cannot change without the base. A\n // layout effect: when the base changes, the commit that carries the\n // unsuffixed base is corrected before the browser paints, so a duplicate\n // never shows a colliding id.\n useLayoutEffect(() => {\n if (id || nonInput) return;\n\n const newId = createId(baseId);\n\n setAssignedId((previous) =>\n previous.base === baseId && previous.id === newId\n ? previous\n : { base: baseId, id: newId },\n );\n\n return () => {\n removeId(baseId, newId);\n };\n }, [baseId, id, nonInput]);\n\n // Every form this hook registered the current name with. The dual-backend\n // shell keeps the hook mounted for standalone inputs, so a form may arrive\n // later or change, and the name may change; the name is released from all\n // of them, not from whichever form a closure happened to capture. This is\n // state rather than a ref only to keep render free of ref access.\n const [boundForms] = useState(() => new Set<CubeFormInstance<any>>());\n\n useEffect(() => {\n return () => {\n if (fieldName) {\n boundForms.forEach((boundForm) => boundForm.removeField(fieldName));\n }\n\n boundForms.clear();\n };\n }, [fieldName, boundForms]);\n\n let field = form?.getFieldInstance(fieldName);\n\n if (form) {\n // First render of this binding: the hook's first render, or a named field\n // that is not registered yet because the name or the form changed after\n // mount. Without a name the engine returns an unstored placeholder, so it\n // is only created on the first render, as before: creating it again on\n // every render would give the effect below a new object each time.\n if (isFirstRender || (!field && fieldName)) {\n if (!field) {\n field = form.createField(fieldName, true);\n }\n\n if (field?.value == null && defaultValue != null) {\n form.setFieldValue(fieldName, defaultValue, false, true);\n form.updateInitialFieldsValue({ [fieldName]: defaultValue });\n\n field = form?.getFieldInstance(fieldName);\n }\n }\n\n if (!field?.touched && defaultValue != null) {\n form.setFieldValue(fieldName, defaultValue, false, true);\n }\n }\n\n if (field) {\n field.rules = processedRules;\n }\n\n let isRequired = !!processedRules?.find(\n (rule) => 'required' in rule && rule.required === true,\n );\n\n // `isRequired` has two sources with different intent. A `required` rule states\n // how the field behaves: it is what validation runs, and `aria-required` is\n // its programmatic mirror, so the flag has to reach the input either way. The\n // `isRequired` prop additionally states what the label should say. So unless\n // the prop itself asked for the marker, suppress it — an absent prop and an\n // explicit `isRequired={false}` both mean \"do not mark this\", the latter\n // rather more loudly. An explicit `necessityIndicator` overrides either way,\n // being a request for the marker in its own right.\n const suppressNecessityIndicator =\n isRequired && !isRequiredProp && necessityIndicatorProp === undefined;\n\n // Registration happens during render. Once it is committed, remember the\n // form for the release above and re-render the form's owner so its\n // render-time reads see the new field. `form` is deliberately not a\n // dependency: a form whose identity changes on every render (a copy, an\n // inline mock) shares its store, and re-running here would loop.\n useEffect(() => {\n if (form && field) {\n boundForms.add(form);\n form.forceReRender();\n }\n }, [field, boundForms]);\n\n const onChangeHandler = useEvent((val: any, dontTouch: boolean) => {\n if (!form) return;\n\n const field = form.getFieldInstance(fieldName);\n\n if (shouldUpdate) {\n const fieldsValue = form.getFieldsValue();\n\n // check if we should update the value of the field\n const shouldNotBeUpdated =\n typeof shouldUpdate === 'boolean'\n ? !shouldUpdate\n : !shouldUpdate(fieldsValue, {\n ...fieldsValue,\n [fieldName]: val,\n });\n\n if (shouldNotBeUpdated) {\n return;\n }\n }\n\n form.setFieldValue(fieldName, val, !dontTouch);\n\n if (\n !dontTouch &&\n (validateTrigger === 'onChange' ||\n (field && field.errors && field.errors.length))\n ) {\n form.validateField(fieldName).catch(() => {}); // do nothing on fail\n }\n });\n\n const onBlurHandler = useEvent(() => {\n if (validateTrigger === 'onBlur') {\n // We need a timeout so the change event can be done.\n setTimeout(() => {\n form?.validateField(fieldName).catch(() => {}); // do nothing on fail\n });\n }\n });\n\n let value = field?.value;\n\n return useMemo(\n () => ({\n id: currentId,\n name: fieldName,\n value,\n validateTrigger,\n form,\n field,\n nonInput,\n\n // Explicit validation props always win over the state derived from the form\n isInvalid: isInvalidProp ?? !!field?.errors?.length,\n isValid: isValidProp ?? !!(showValid && field?.status === 'valid'),\n ...(isRequired && { isRequired }),\n ...(suppressNecessityIndicator && { necessityIndicator: null }),\n message:\n message !== undefined\n ? message\n : field?.status === 'invalid' && field?.errors?.[0],\n description,\n errorMessage:\n errorMessage !== undefined\n ? errorMessage\n : field?.status === 'invalid' && field?.errors?.length\n ? field.errors[0]\n : undefined,\n onBlur: onBlurHandler,\n onChange: onChangeHandler,\n }),\n [\n form,\n field,\n field?.value,\n field?.errors?.length,\n field?.status,\n currentId,\n fieldName,\n isRequired,\n suppressNecessityIndicator,\n message,\n description,\n errorMessage,\n onBlurHandler,\n onChangeHandler,\n validateTrigger,\n isInvalidProp,\n isValidProp,\n showValid,\n nonInput,\n ],\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.182.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
2
2
  import { FORM_BACKEND, isModernFormController, modernBackendUnavailableError } from "./backend.js";
3
3
  import { applyRules } from "./validation.js";
4
4
  import { dotizeConvert } from "../../../utils/dotize.js";
@@ -320,6 +320,7 @@ var CubeFormInstance = class {
320
320
  }
321
321
  };
322
322
  function useForm(form, ref, options = {}) {
323
+ "use no memo";
323
324
  const { onSubmit, onValuesChange } = options;
324
325
  if (isModernFormController(form)) throw modernBackendUnavailableError("Form.useForm()");
325
326
  const formRef = useRef(null);
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.js","names":[],"sources":["../../../../src/components/form/Form/use-form.tsx"],"sourcesContent":["import { ReactNode, useRef, useState } from 'react';\n\nimport { dotizeConvert } from '../../../utils/dotize';\n\nimport {\n FORM_BACKEND,\n isModernFormController,\n LegacyFormBrand,\n modernBackendUnavailableError,\n} from './backend';\nimport { CubeFieldData, FieldTypes, SetFieldsArrType } from './types';\nimport { applyRules } from './validation';\n\ntype PartialString<T> = {\n [P in keyof T & string]?: T[P];\n};\n\nexport type CubeFormData<T extends FieldTypes> = {\n [K in keyof T & string]?: CubeFieldData<K, T[K]>;\n};\n\nfunction setValue(obj, path, value) {\n let a = path.split('.');\n let o = obj;\n\n while (a.length - 1) {\n let n = a.shift();\n if (!(n in o)) o[n] = {};\n o = o[n];\n }\n o[a[0]] = value;\n}\n\nfunction isEqual(v1, v2) {\n return JSON.stringify(v1) === JSON.stringify(v2);\n}\n\nexport class CubeFormInstance<\n T extends FieldTypes,\n TFormData extends CubeFormData<T> = CubeFormData<T>,\n> implements LegacyFormBrand\n{\n /** Backend brand: the `<Form>` facade and the field hook dispatch on it. */\n public readonly [FORM_BACKEND] = 'legacy' as const;\n public forceReRender: () => void = () => {};\n private defaultValues: PartialString<T> = {};\n private fields: TFormData = {} as TFormData;\n public ref = {};\n public isSubmitting = false;\n public submitError: unknown = null;\n\n public onValuesChange: (data: T) => void | Promise<void> = () => {};\n public onSubmit: (data: T) => void | Promise<void> = () => {};\n\n constructor(forceReRender: () => void = () => {}) {\n this.forceReRender = forceReRender;\n\n this.getFieldValue = this.getFieldValue.bind(this);\n this.getFieldsValue = this.getFieldsValue.bind(this);\n this.setFieldValue = this.setFieldValue.bind(this);\n this.getFieldError = this.getFieldError.bind(this);\n this.getFieldInstance = this.getFieldInstance.bind(this);\n this.setInitialFieldsValue = this.setInitialFieldsValue.bind(this);\n this.resetFields = this.resetFields.bind(this);\n this.validateField = this.validateField.bind(this);\n this.validateFields = this.validateFields.bind(this);\n this.isFieldValid = this.isFieldValid.bind(this);\n this.createField = this.createField.bind(this);\n this.isFieldInvalid = this.isFieldInvalid.bind(this);\n this.isFieldTouched = this.isFieldTouched.bind(this);\n this.isFieldDirty = this.isFieldDirty.bind(this);\n this.getFieldNames = this.getFieldNames.bind(this);\n this.getDirtyFieldNames = this.getDirtyFieldNames.bind(this);\n this.getValidFieldNames = this.getValidFieldNames.bind(this);\n this.getInvalidFieldNames = this.getInvalidFieldNames.bind(this);\n this.setFields = this.setFields.bind(this);\n }\n\n async submit() {\n return this.onSubmit?.(this.getFormData());\n }\n\n setFieldsValue = (\n newData: PartialString<T>,\n touched?: boolean,\n skipRender?: boolean,\n ) => {\n let flag = false;\n\n newData = { ...newData, ...dotizeConvert(newData) };\n\n Object.keys(newData).forEach((name: keyof T & string) => {\n let field = this.fields[name];\n\n if (!field) {\n return;\n }\n\n if (!field || isEqual(field.value, newData[name])) {\n if (field) {\n field.errors = [];\n field.status = undefined;\n }\n\n return;\n }\n\n flag = true;\n\n field.value = newData[name];\n // Same as `setFieldValue`: a pending validation ran against the old value.\n field.validationId = (field.validationId ?? 0) + 1;\n\n field.errors = [];\n field.status = undefined;\n\n if (touched === true) {\n field.touched = touched;\n } else if (touched === false) {\n field.touched = false;\n }\n });\n\n if (flag && !skipRender) {\n if (touched) {\n this.onValuesChange && this.onValuesChange(this.getFormData());\n this.submitError = null;\n }\n\n this.forceReRender();\n }\n };\n\n getFieldValue<Name extends keyof T & string>(\n name: Name,\n ): T[Name] | undefined {\n return this.fields[name]?.value;\n }\n\n getFieldsValue(): PartialString<T> {\n return Object.values(this.fields).reduce((map, field) => {\n if (field && map) {\n map[field.name as keyof T & string] = field.value;\n }\n\n return map;\n }, {} as PartialString<T>);\n }\n\n /**\n * Similar to getFieldsValue() but respects '.' notation and creates nested objects.\n */\n getFormData(): T {\n const fieldsValue = this.getFieldsValue();\n\n return Object.keys(fieldsValue)\n .sort()\n .reduce((map, field) => {\n setValue(map, field, fieldsValue[field]);\n\n if (field.includes('.')) {\n delete map[field];\n }\n\n return map;\n }, {} as T);\n }\n\n setFieldValue<Name extends keyof T & string>(\n name: Name,\n value: T[Name],\n isTouched = false,\n skipRender = false,\n ) {\n const field = this.fields[name];\n\n if (!field || isEqual(value, field.value)) {\n return;\n }\n\n field.value = value;\n // A validation that is still running belongs to the previous value. Bump\n // the revision so its result cannot publish against this one (the caller's\n // promise still settles) — legacy contract §7.1 #22.\n field.validationId = (field.validationId ?? 0) + 1;\n\n if (typeof value === 'object' && !Array.isArray(value)) {\n Object.keys(this.fields)\n .filter((key) => key.startsWith(`${name}.`))\n .forEach((key) => {\n const objKey = key.replace(`${name}.`, '');\n\n this.setFieldValue(key, value[objKey] ?? null, isTouched, false);\n });\n }\n\n field.errors = [];\n field.status = undefined; // reset validation status\n\n if (isTouched) {\n field.touched = isTouched;\n }\n\n if (isTouched) {\n this.onValuesChange && this.onValuesChange(this.getFormData());\n this.submitError = null;\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n getFieldInstance<Name extends keyof T & string>(name: Name): TFormData[Name] {\n return this.fields[name];\n }\n\n setInitialFieldsValue(values: PartialString<T>): void {\n this.defaultValues = { ...values, ...dotizeConvert(values) };\n }\n\n updateInitialFieldsValue(values: FieldTypes): void {\n this.defaultValues = {\n ...this.defaultValues,\n ...values,\n ...dotizeConvert(values),\n };\n }\n\n resetFields(names?: (keyof T & string)[], skipRender?: boolean): void {\n names = names ?? Object.keys(this.fields);\n\n names.forEach((fieldName) => {\n const field = this.fields[fieldName];\n\n if (!field) {\n return;\n }\n\n const defaultValue = this.defaultValues[fieldName] ?? undefined;\n\n field.value = defaultValue;\n field.touched = false;\n field.errors = [];\n field.status = undefined;\n field.validationId = (field.validationId ?? 0) + 1;\n });\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n async validateField<Name extends keyof T & string>(name: Name): Promise<any> {\n const field = this.getFieldInstance(name);\n\n if (\n // if there are no rules for such field\n !field ||\n !field.rules ||\n // or field is already validated and valid\n field.status === 'valid'\n ) {\n return Promise.resolve();\n // or field is already validated and invalid\n } else if (field.status === 'invalid') {\n return Promise.reject(field.errors[0]);\n }\n\n field.validating = true;\n field.status = undefined;\n\n field.validationId = (field.validationId ?? 0) + 1;\n\n const validationId = field.validationId;\n\n // store validation to make sure there is no race condition.\n return applyRules(field, this, validationId)\n .then(() => {\n if (field.validationId !== validationId) return;\n\n field.validating = false;\n\n if (!field.errors || field.errors.length) {\n field.errors = [];\n }\n\n field.status = 'valid';\n\n this.forceReRender();\n })\n .catch((err) => {\n if (field.validationId === validationId) {\n field.errors = [err];\n field.validating = false;\n field.status = 'invalid';\n\n this.forceReRender();\n }\n\n return Promise.reject([err]);\n });\n }\n\n validateFields<Names extends (keyof T)[]>(names?: Names): Promise<any> {\n const fieldsList = names || Object.keys(this.fields);\n const errorList: { name: string; errors: ReactNode[] }[] = [];\n\n return Promise.allSettled(\n fieldsList.map((name) => {\n return this.validateField(name).catch((errors) => {\n errorList.push({ name, errors });\n\n return Promise.reject();\n });\n }),\n ).then(() => {\n if (errorList.length) {\n return Promise.reject(errorList);\n }\n\n return this.getFormData();\n });\n }\n\n isFieldValid<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return true;\n\n return !field.errors.length;\n }\n\n isFieldInvalid<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !!field.errors.length;\n }\n\n isFieldTouched<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !!field.touched;\n }\n\n isFieldDirty<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !isEqual(field.value, this.defaultValues[name]);\n }\n\n getFieldNames(): (keyof T & string)[] {\n return Object.keys(this.fields) as (keyof T & string)[];\n }\n\n getDirtyFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldDirty(name));\n }\n\n getValidFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldValid(name));\n }\n\n getInvalidFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldInvalid(name));\n }\n\n get isTouched(): boolean {\n return Object.values(this.fields).some((field) => field?.touched);\n }\n\n get isDirty(): boolean {\n return this.getDirtyFieldNames().length > 0;\n }\n\n /**\n * True if all fields are verified and valid\n * IMPORTANT: This is not the same as `!isInvalid`, because it also checks if all fields are verified.\n */\n get isValid(): boolean {\n return Object.values(this.fields).every(\n (field) => field?.status === 'valid',\n );\n }\n\n /**\n * True if at least one field is verified and invalid.\n * IMPORTANT: This is not the same as `!isValid`, because it only checks that at least\n * one field is verified and invalid.\n */\n get isInvalid(): boolean {\n return Object.values(this.fields).some(\n (field) => field?.status === 'invalid',\n );\n }\n\n getFieldError<Name extends keyof T & string>(name: Name): ReactNode[] {\n const field = this.getFieldInstance(name);\n\n if (!field) return [];\n\n return field.errors || [];\n }\n\n /**\n * @deprecated This field is not supposed to be used directly.\n */\n createField<Name extends keyof T & string>(name: Name, skipRender?: boolean) {\n // passing an empty name is incorrect, but we have to return a valid object to avoid inconsistency\n if (!name) {\n return this._createField(name);\n }\n\n if (!this.fields[name]) {\n this.fields[name] = this._createField(name);\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n\n return this.fields[name];\n }\n\n /**\n * @deprecated This field is not supposed to be used directly.\n */\n removeField<Name extends keyof T & string>(name: Name, skipRender?: boolean) {\n if (this.fields[name]) {\n delete this.fields[name];\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n /**\n * @deprecated This method is not recommended. Use other ways to alter fields.\n * Use `setFieldValue` to change the value of a field.\n * Use `verifyField` to validate a field.\n * Use `setFieldError` to set an error for a field.\n * Use `clearFieldsValidation` to clear all errors for a field.\n */\n setFields<Names extends keyof T & string>(\n newFields: SetFieldsArrType<T, Names>[],\n ) {\n newFields.forEach(({ name, value, errors }) => {\n this.fields[name] = this._createField(name, {\n value,\n errors,\n } as TFormData[Names]);\n });\n\n this.forceReRender();\n }\n\n resetFieldsValidation(names?: (keyof T & string)[], skipRender?: boolean) {\n (names || Object.keys(this.fields)).forEach((name) => {\n const field = this.getFieldInstance(name);\n\n if (!field) return;\n\n field.errors = [];\n field.status = undefined;\n field.validationId = (field.validationId ?? 0) + 1;\n });\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n setFieldError(\n name: keyof T & string,\n error: ReactNode,\n skipRender?: boolean,\n ) {\n const field = this.getFieldInstance(name);\n\n if (!field || !error) return;\n\n field.errors = [error];\n field.status = 'invalid';\n field.validationId = (field.validationId ?? 0) + 1;\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n setSubmitting(isSubmitting: boolean) {\n if (this.isSubmitting === isSubmitting) return;\n\n this.isSubmitting = isSubmitting;\n this.forceReRender();\n }\n\n _createField<Name extends keyof T & string, Data extends TFormData[Name]>(\n name: Name,\n data?: Data,\n ): Data {\n let obj = {\n name,\n validating: false,\n touched: false,\n errors: [],\n validationId: 0,\n value: this.defaultValues[name],\n ...data,\n // it should be impossible to define or override status value\n status: data?.errors?.length ? 'invalid' : undefined,\n } as unknown as Data;\n\n return obj;\n }\n}\n\nexport function useForm<TSourceType extends FieldTypes>(\n form?: CubeFormInstance<TSourceType, CubeFormData<TSourceType>>,\n ref?,\n options: {\n onSubmit?: CubeFormInstance<TSourceType>['onSubmit'];\n onValuesChange?: CubeFormInstance<TSourceType>['onValuesChange'];\n } = {},\n): [CubeFormInstance<TSourceType>] {\n const { onSubmit, onValuesChange } = options;\n\n if (isModernFormController(form)) {\n throw modernBackendUnavailableError('Form.useForm()');\n }\n\n const formRef = useRef<CubeFormInstance<TSourceType>>(null);\n const [, forceUpdate] = useState({});\n\n if (!formRef.current) {\n if (form) {\n formRef.current = form;\n } else {\n // Create a new FormInstance if not provided\n const forceReRender = () => {\n forceUpdate({});\n };\n\n form = formRef.current = new CubeFormInstance<TSourceType>(forceReRender);\n }\n\n form.ref = ref;\n }\n\n if (onSubmit) {\n formRef.current.onSubmit = onSubmit;\n }\n\n if (onValuesChange) {\n formRef.current.onValuesChange = onValuesChange;\n }\n\n return [formRef.current];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-form.js","names":["ReactNode","useRef","useState","dotizeConvert","FORM_BACKEND","isModernFormController","LegacyFormBrand","modernBackendUnavailableError","CubeFieldData","FieldTypes","SetFieldsArrType","applyRules","PartialString","T","P","CubeFormData","K","setValue","obj","path","value","a","split","o","length","n","shift","isEqual","v1","v2","JSON","stringify","CubeFormInstance","const","forceReRender","defaultValues","fields","TFormData","ref","isSubmitting","submitError","onValuesChange","data","Promise","onSubmit","constructor","getFieldValue","bind","getFieldsValue","setFieldValue","getFieldError","getFieldInstance","setInitialFieldsValue","resetFields","validateField","validateFields","isFieldValid","createField","isFieldInvalid","isFieldTouched","isFieldDirty","getFieldNames","getDirtyFieldNames","getValidFieldNames","getInvalidFieldNames","setFields","submit","getFormData","setFieldsValue","newData","touched","skipRender","flag","Object","keys","forEach","name","field","errors","status","undefined","validationId","Name","values","reduce","map","fieldsValue","sort","includes","isTouched","Array","isArray","filter","key","startsWith","objKey","replace","updateInitialFieldsValue","names","fieldName","defaultValue","rules","resolve","reject","validating","then","catch","err","Names","fieldsList","errorList","allSettled","push","some","isDirty","isValid","every","isInvalid","_createField","removeField","newFields","resetFieldsValidation","setFieldError","error","setSubmitting","Data","useForm","form","TSourceType","options","formRef","forceUpdate","current"],"sources":["../../../../src/components/form/Form/use-form.tsx"],"sourcesContent":["import { ReactNode, useRef, useState } from 'react';\n\nimport { dotizeConvert } from '../../../utils/dotize';\n\nimport {\n FORM_BACKEND,\n isModernFormController,\n LegacyFormBrand,\n modernBackendUnavailableError,\n} from './backend';\nimport { CubeFieldData, FieldTypes, SetFieldsArrType } from './types';\nimport { applyRules } from './validation';\n\ntype PartialString<T> = {\n [P in keyof T & string]?: T[P];\n};\n\nexport type CubeFormData<T extends FieldTypes> = {\n [K in keyof T & string]?: CubeFieldData<K, T[K]>;\n};\n\nfunction setValue(obj, path, value) {\n let a = path.split('.');\n let o = obj;\n\n while (a.length - 1) {\n let n = a.shift();\n if (!(n in o)) o[n] = {};\n o = o[n];\n }\n o[a[0]] = value;\n}\n\nfunction isEqual(v1, v2) {\n return JSON.stringify(v1) === JSON.stringify(v2);\n}\n\nexport class CubeFormInstance<\n T extends FieldTypes,\n TFormData extends CubeFormData<T> = CubeFormData<T>,\n> implements LegacyFormBrand\n{\n /** Backend brand: the `<Form>` facade and the field hook dispatch on it. */\n public readonly [FORM_BACKEND] = 'legacy' as const;\n public forceReRender: () => void = () => {};\n private defaultValues: PartialString<T> = {};\n private fields: TFormData = {} as TFormData;\n public ref = {};\n public isSubmitting = false;\n public submitError: unknown = null;\n\n public onValuesChange: (data: T) => void | Promise<void> = () => {};\n public onSubmit: (data: T) => void | Promise<void> = () => {};\n\n constructor(forceReRender: () => void = () => {}) {\n this.forceReRender = forceReRender;\n\n this.getFieldValue = this.getFieldValue.bind(this);\n this.getFieldsValue = this.getFieldsValue.bind(this);\n this.setFieldValue = this.setFieldValue.bind(this);\n this.getFieldError = this.getFieldError.bind(this);\n this.getFieldInstance = this.getFieldInstance.bind(this);\n this.setInitialFieldsValue = this.setInitialFieldsValue.bind(this);\n this.resetFields = this.resetFields.bind(this);\n this.validateField = this.validateField.bind(this);\n this.validateFields = this.validateFields.bind(this);\n this.isFieldValid = this.isFieldValid.bind(this);\n this.createField = this.createField.bind(this);\n this.isFieldInvalid = this.isFieldInvalid.bind(this);\n this.isFieldTouched = this.isFieldTouched.bind(this);\n this.isFieldDirty = this.isFieldDirty.bind(this);\n this.getFieldNames = this.getFieldNames.bind(this);\n this.getDirtyFieldNames = this.getDirtyFieldNames.bind(this);\n this.getValidFieldNames = this.getValidFieldNames.bind(this);\n this.getInvalidFieldNames = this.getInvalidFieldNames.bind(this);\n this.setFields = this.setFields.bind(this);\n }\n\n async submit() {\n return this.onSubmit?.(this.getFormData());\n }\n\n setFieldsValue = (\n newData: PartialString<T>,\n touched?: boolean,\n skipRender?: boolean,\n ) => {\n let flag = false;\n\n newData = { ...newData, ...dotizeConvert(newData) };\n\n Object.keys(newData).forEach((name: keyof T & string) => {\n let field = this.fields[name];\n\n if (!field) {\n return;\n }\n\n if (!field || isEqual(field.value, newData[name])) {\n if (field) {\n field.errors = [];\n field.status = undefined;\n }\n\n return;\n }\n\n flag = true;\n\n field.value = newData[name];\n // Same as `setFieldValue`: a pending validation ran against the old value.\n field.validationId = (field.validationId ?? 0) + 1;\n\n field.errors = [];\n field.status = undefined;\n\n if (touched === true) {\n field.touched = touched;\n } else if (touched === false) {\n field.touched = false;\n }\n });\n\n if (flag && !skipRender) {\n if (touched) {\n this.onValuesChange && this.onValuesChange(this.getFormData());\n this.submitError = null;\n }\n\n this.forceReRender();\n }\n };\n\n getFieldValue<Name extends keyof T & string>(\n name: Name,\n ): T[Name] | undefined {\n return this.fields[name]?.value;\n }\n\n getFieldsValue(): PartialString<T> {\n return Object.values(this.fields).reduce((map, field) => {\n if (field && map) {\n map[field.name as keyof T & string] = field.value;\n }\n\n return map;\n }, {} as PartialString<T>);\n }\n\n /**\n * Similar to getFieldsValue() but respects '.' notation and creates nested objects.\n */\n getFormData(): T {\n const fieldsValue = this.getFieldsValue();\n\n return Object.keys(fieldsValue)\n .sort()\n .reduce((map, field) => {\n setValue(map, field, fieldsValue[field]);\n\n if (field.includes('.')) {\n delete map[field];\n }\n\n return map;\n }, {} as T);\n }\n\n setFieldValue<Name extends keyof T & string>(\n name: Name,\n value: T[Name],\n isTouched = false,\n skipRender = false,\n ) {\n const field = this.fields[name];\n\n if (!field || isEqual(value, field.value)) {\n return;\n }\n\n field.value = value;\n // A validation that is still running belongs to the previous value. Bump\n // the revision so its result cannot publish against this one (the caller's\n // promise still settles) — legacy contract §7.1 #22.\n field.validationId = (field.validationId ?? 0) + 1;\n\n if (typeof value === 'object' && !Array.isArray(value)) {\n Object.keys(this.fields)\n .filter((key) => key.startsWith(`${name}.`))\n .forEach((key) => {\n const objKey = key.replace(`${name}.`, '');\n\n this.setFieldValue(key, value[objKey] ?? null, isTouched, false);\n });\n }\n\n field.errors = [];\n field.status = undefined; // reset validation status\n\n if (isTouched) {\n field.touched = isTouched;\n }\n\n if (isTouched) {\n this.onValuesChange && this.onValuesChange(this.getFormData());\n this.submitError = null;\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n getFieldInstance<Name extends keyof T & string>(name: Name): TFormData[Name] {\n return this.fields[name];\n }\n\n setInitialFieldsValue(values: PartialString<T>): void {\n this.defaultValues = { ...values, ...dotizeConvert(values) };\n }\n\n updateInitialFieldsValue(values: FieldTypes): void {\n this.defaultValues = {\n ...this.defaultValues,\n ...values,\n ...dotizeConvert(values),\n };\n }\n\n resetFields(names?: (keyof T & string)[], skipRender?: boolean): void {\n names = names ?? Object.keys(this.fields);\n\n names.forEach((fieldName) => {\n const field = this.fields[fieldName];\n\n if (!field) {\n return;\n }\n\n const defaultValue = this.defaultValues[fieldName] ?? undefined;\n\n field.value = defaultValue;\n field.touched = false;\n field.errors = [];\n field.status = undefined;\n field.validationId = (field.validationId ?? 0) + 1;\n });\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n async validateField<Name extends keyof T & string>(name: Name): Promise<any> {\n const field = this.getFieldInstance(name);\n\n if (\n // if there are no rules for such field\n !field ||\n !field.rules ||\n // or field is already validated and valid\n field.status === 'valid'\n ) {\n return Promise.resolve();\n // or field is already validated and invalid\n } else if (field.status === 'invalid') {\n return Promise.reject(field.errors[0]);\n }\n\n field.validating = true;\n field.status = undefined;\n\n field.validationId = (field.validationId ?? 0) + 1;\n\n const validationId = field.validationId;\n\n // store validation to make sure there is no race condition.\n return applyRules(field, this, validationId)\n .then(() => {\n if (field.validationId !== validationId) return;\n\n field.validating = false;\n\n if (!field.errors || field.errors.length) {\n field.errors = [];\n }\n\n field.status = 'valid';\n\n this.forceReRender();\n })\n .catch((err) => {\n if (field.validationId === validationId) {\n field.errors = [err];\n field.validating = false;\n field.status = 'invalid';\n\n this.forceReRender();\n }\n\n return Promise.reject([err]);\n });\n }\n\n validateFields<Names extends (keyof T)[]>(names?: Names): Promise<any> {\n const fieldsList = names || Object.keys(this.fields);\n const errorList: { name: string; errors: ReactNode[] }[] = [];\n\n return Promise.allSettled(\n fieldsList.map((name) => {\n return this.validateField(name).catch((errors) => {\n errorList.push({ name, errors });\n\n return Promise.reject();\n });\n }),\n ).then(() => {\n if (errorList.length) {\n return Promise.reject(errorList);\n }\n\n return this.getFormData();\n });\n }\n\n isFieldValid<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return true;\n\n return !field.errors.length;\n }\n\n isFieldInvalid<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !!field.errors.length;\n }\n\n isFieldTouched<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !!field.touched;\n }\n\n isFieldDirty<Name extends keyof T & string>(name: Name): boolean {\n const field = this.getFieldInstance(name);\n\n if (!field) return false;\n\n return !isEqual(field.value, this.defaultValues[name]);\n }\n\n getFieldNames(): (keyof T & string)[] {\n return Object.keys(this.fields) as (keyof T & string)[];\n }\n\n getDirtyFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldDirty(name));\n }\n\n getValidFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldValid(name));\n }\n\n getInvalidFieldNames(): (keyof T & string)[] {\n return this.getFieldNames().filter((name) => this.isFieldInvalid(name));\n }\n\n get isTouched(): boolean {\n return Object.values(this.fields).some((field) => field?.touched);\n }\n\n get isDirty(): boolean {\n return this.getDirtyFieldNames().length > 0;\n }\n\n /**\n * True if all fields are verified and valid\n * IMPORTANT: This is not the same as `!isInvalid`, because it also checks if all fields are verified.\n */\n get isValid(): boolean {\n return Object.values(this.fields).every(\n (field) => field?.status === 'valid',\n );\n }\n\n /**\n * True if at least one field is verified and invalid.\n * IMPORTANT: This is not the same as `!isValid`, because it only checks that at least\n * one field is verified and invalid.\n */\n get isInvalid(): boolean {\n return Object.values(this.fields).some(\n (field) => field?.status === 'invalid',\n );\n }\n\n getFieldError<Name extends keyof T & string>(name: Name): ReactNode[] {\n const field = this.getFieldInstance(name);\n\n if (!field) return [];\n\n return field.errors || [];\n }\n\n /**\n * @deprecated This field is not supposed to be used directly.\n */\n createField<Name extends keyof T & string>(name: Name, skipRender?: boolean) {\n // passing an empty name is incorrect, but we have to return a valid object to avoid inconsistency\n if (!name) {\n return this._createField(name);\n }\n\n if (!this.fields[name]) {\n this.fields[name] = this._createField(name);\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n\n return this.fields[name];\n }\n\n /**\n * @deprecated This field is not supposed to be used directly.\n */\n removeField<Name extends keyof T & string>(name: Name, skipRender?: boolean) {\n if (this.fields[name]) {\n delete this.fields[name];\n }\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n /**\n * @deprecated This method is not recommended. Use other ways to alter fields.\n * Use `setFieldValue` to change the value of a field.\n * Use `verifyField` to validate a field.\n * Use `setFieldError` to set an error for a field.\n * Use `clearFieldsValidation` to clear all errors for a field.\n */\n setFields<Names extends keyof T & string>(\n newFields: SetFieldsArrType<T, Names>[],\n ) {\n newFields.forEach(({ name, value, errors }) => {\n this.fields[name] = this._createField(name, {\n value,\n errors,\n } as TFormData[Names]);\n });\n\n this.forceReRender();\n }\n\n resetFieldsValidation(names?: (keyof T & string)[], skipRender?: boolean) {\n (names || Object.keys(this.fields)).forEach((name) => {\n const field = this.getFieldInstance(name);\n\n if (!field) return;\n\n field.errors = [];\n field.status = undefined;\n field.validationId = (field.validationId ?? 0) + 1;\n });\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n setFieldError(\n name: keyof T & string,\n error: ReactNode,\n skipRender?: boolean,\n ) {\n const field = this.getFieldInstance(name);\n\n if (!field || !error) return;\n\n field.errors = [error];\n field.status = 'invalid';\n field.validationId = (field.validationId ?? 0) + 1;\n\n if (!skipRender) {\n this.forceReRender();\n }\n }\n\n setSubmitting(isSubmitting: boolean) {\n if (this.isSubmitting === isSubmitting) return;\n\n this.isSubmitting = isSubmitting;\n this.forceReRender();\n }\n\n _createField<Name extends keyof T & string, Data extends TFormData[Name]>(\n name: Name,\n data?: Data,\n ): Data {\n let obj = {\n name,\n validating: false,\n touched: false,\n errors: [],\n validationId: 0,\n value: this.defaultValues[name],\n ...data,\n // it should be impossible to define or override status value\n status: data?.errors?.length ? 'invalid' : undefined,\n } as unknown as Data;\n\n return obj;\n }\n}\n\nexport function useForm<TSourceType extends FieldTypes>(\n form?: CubeFormInstance<TSourceType, CubeFormData<TSourceType>>,\n ref?,\n options: {\n onSubmit?: CubeFormInstance<TSourceType>['onSubmit'];\n onValuesChange?: CubeFormInstance<TSourceType>['onValuesChange'];\n } = {},\n): [CubeFormInstance<TSourceType>] {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n const { onSubmit, onValuesChange } = options;\n\n if (isModernFormController(form)) {\n throw modernBackendUnavailableError('Form.useForm()');\n }\n\n const formRef = useRef<CubeFormInstance<TSourceType>>(null);\n const [, forceUpdate] = useState({});\n\n if (!formRef.current) {\n if (form) {\n formRef.current = form;\n } else {\n // Create a new FormInstance if not provided\n const forceReRender = () => {\n forceUpdate({});\n };\n\n form = formRef.current = new CubeFormInstance<TSourceType>(forceReRender);\n }\n\n form.ref = ref;\n }\n\n if (onSubmit) {\n formRef.current.onSubmit = onSubmit;\n }\n\n if (onValuesChange) {\n formRef.current.onValuesChange = onValuesChange;\n }\n\n return [formRef.current];\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.182.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
2
2
  import { validate } from "email-validator";
3
3
  import validUrl from "valid-url";
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","names":["validateEmail"],"sources":["../../../../src/components/form/Form/validation.ts"],"sourcesContent":["import { validate as validateEmail } from 'email-validator';\nimport validUrl from 'valid-url';\n\nconst TYPE_CHECKERS = {\n string(v) {\n return typeof v === 'string';\n },\n number(v) {\n return typeof v === 'number';\n },\n boolean(v) {\n return typeof v === 'boolean';\n },\n method(v) {\n return typeof v === 'function';\n },\n regexp(v) {\n return v instanceof RegExp;\n },\n integer(v) {\n return typeof v === 'number' && v === parseInt(String(v), 10);\n },\n array(v) {\n return Array.isArray(v);\n },\n object(v) {\n return typeof v === 'object' && !Array.isArray(v);\n },\n date(v) {\n return v instanceof Date;\n },\n url(v) {\n return typeof v === 'string' && validUrl.isUri(v);\n },\n hex(v) {\n return typeof v === 'string' && v.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/);\n },\n email(v) {\n return validateEmail(v);\n },\n any(v) {\n return true;\n },\n};\n\nconst TYPE_LIST = Object.keys(TYPE_CHECKERS);\n\nconst VALIDATORS = {\n async required(value, rule) {\n if (!rule.required) return Promise.resolve();\n\n if (Array.isArray(value)) {\n return value.length ? Promise.resolve() : Promise.reject();\n }\n\n return !!value || value === 0 ? Promise.resolve() : Promise.reject();\n },\n async whitespace(value) {\n if (typeof value !== 'string' || value.trim()) return Promise.resolve();\n\n return Promise.reject();\n },\n async pattern(value, rule) {\n const pattern = rule.pattern;\n\n if (typeof value !== 'string') return Promise.resolve();\n\n return value.match(pattern) ? Promise.resolve() : Promise.reject();\n },\n async enum(value, rule) {\n const options = rule.enum || [];\n\n if (!value && value !== 0) return Promise.resolve();\n\n return options.includes(value) ? Promise.resolve() : Promise.reject();\n },\n async len(value, rule) {\n const len = rule.len;\n\n if (typeof value === 'number') {\n return value === len ? Promise.resolve() : Promise.reject();\n }\n\n if (!value || !('length' in value)) return Promise.resolve();\n\n return value.length === len ? Promise.resolve() : Promise.reject();\n },\n async max(value, rule) {\n const max = rule.max;\n\n if (typeof value === 'number') {\n return value <= max ? Promise.resolve() : Promise.reject();\n }\n\n if (!value || (typeof value !== 'string' && !Array.isArray(value)))\n return Promise.resolve();\n\n return value.length <= max ? Promise.resolve() : Promise.reject();\n },\n async min(value, rule) {\n const min = rule.min;\n\n if (typeof value === 'number') {\n return value >= min ? Promise.resolve() : Promise.reject();\n }\n\n if (!value || (typeof value !== 'string' && !Array.isArray(value)))\n return Promise.resolve();\n\n return value.length >= min ? Promise.resolve() : Promise.reject();\n },\n async validator(value, rule) {\n return rule.validator(rule, value);\n },\n async type(value, rule) {\n const type = rule.type;\n\n if (!TYPE_LIST.includes(type)) return Promise.resolve();\n\n return TYPE_CHECKERS[type](value) ? Promise.resolve() : Promise.reject();\n },\n};\n\nconst VALIDATOR_NAMES = Object.keys(VALIDATORS);\n\nexport async function applyRule(value, rule, form) {\n if (typeof rule === 'function') {\n rule = rule(form);\n }\n\n if (typeof rule.transform === 'function') {\n value = rule.transform(value);\n }\n\n for (let validatorName of VALIDATOR_NAMES) {\n if (!(validatorName in rule)) continue;\n\n const checker = VALIDATORS[validatorName];\n\n await checker(value, rule);\n }\n}\n\nexport async function applyRules(field, form, validationId = 0) {\n const { value, rules } = field;\n\n if (!rules || !rules.length) return;\n\n for (let rule of rules) {\n if (field.validationId && validationId !== field.validationId) return;\n\n await applyRule(value, rule, form).catch((err) => {\n if (err instanceof Error) {\n err = err?.message || rule.message;\n }\n\n throw err || rule.message;\n });\n }\n}\n\nexport const delayValidationRule = (timeout = 500) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n let storedResolve: () => void;\n\n return {\n async validator(): Promise<void> {\n clearTimeout(timeoutId);\n\n if (storedResolve) {\n storedResolve();\n }\n\n return new Promise((resolve) => {\n storedResolve = resolve;\n\n timeoutId = setTimeout(() => {\n resolve();\n }, timeout);\n });\n },\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","names":["validate","validateEmail","validUrl","TYPE_CHECKERS","string","v","number","boolean","method","regexp","RegExp","integer","parseInt","String","array","Array","isArray","object","date","Date","url","isUri","hex","match","email","any","TYPE_LIST","Object","keys","VALIDATORS","required","value","rule","Promise","resolve","length","reject","whitespace","trim","pattern","enum","options","includes","len","max","min","validator","type","VALIDATOR_NAMES","applyRule","form","transform","validatorName","checker","applyRules","field","validationId","rules","catch","err","Error","message","delayValidationRule","timeout","timeoutId","ReturnType","setTimeout","storedResolve","clearTimeout"],"sources":["../../../../src/components/form/Form/validation.ts"],"sourcesContent":["import { validate as validateEmail } from 'email-validator';\nimport validUrl from 'valid-url';\n\nconst TYPE_CHECKERS = {\n string(v) {\n return typeof v === 'string';\n },\n number(v) {\n return typeof v === 'number';\n },\n boolean(v) {\n return typeof v === 'boolean';\n },\n method(v) {\n return typeof v === 'function';\n },\n regexp(v) {\n return v instanceof RegExp;\n },\n integer(v) {\n return typeof v === 'number' && v === parseInt(String(v), 10);\n },\n array(v) {\n return Array.isArray(v);\n },\n object(v) {\n return typeof v === 'object' && !Array.isArray(v);\n },\n date(v) {\n return v instanceof Date;\n },\n url(v) {\n return typeof v === 'string' && validUrl.isUri(v);\n },\n hex(v) {\n return typeof v === 'string' && v.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/);\n },\n email(v) {\n return validateEmail(v);\n },\n any(v) {\n return true;\n },\n};\n\nconst TYPE_LIST = Object.keys(TYPE_CHECKERS);\n\nconst VALIDATORS = {\n async required(value, rule) {\n if (!rule.required) return Promise.resolve();\n\n if (Array.isArray(value)) {\n return value.length ? Promise.resolve() : Promise.reject();\n }\n\n return !!value || value === 0 ? Promise.resolve() : Promise.reject();\n },\n async whitespace(value) {\n if (typeof value !== 'string' || value.trim()) return Promise.resolve();\n\n return Promise.reject();\n },\n async pattern(value, rule) {\n const pattern = rule.pattern;\n\n if (typeof value !== 'string') return Promise.resolve();\n\n return value.match(pattern) ? Promise.resolve() : Promise.reject();\n },\n async enum(value, rule) {\n const options = rule.enum || [];\n\n if (!value && value !== 0) return Promise.resolve();\n\n return options.includes(value) ? Promise.resolve() : Promise.reject();\n },\n async len(value, rule) {\n const len = rule.len;\n\n if (typeof value === 'number') {\n return value === len ? Promise.resolve() : Promise.reject();\n }\n\n if (!value || !('length' in value)) return Promise.resolve();\n\n return value.length === len ? Promise.resolve() : Promise.reject();\n },\n async max(value, rule) {\n const max = rule.max;\n\n if (typeof value === 'number') {\n return value <= max ? Promise.resolve() : Promise.reject();\n }\n\n if (!value || (typeof value !== 'string' && !Array.isArray(value)))\n return Promise.resolve();\n\n return value.length <= max ? Promise.resolve() : Promise.reject();\n },\n async min(value, rule) {\n const min = rule.min;\n\n if (typeof value === 'number') {\n return value >= min ? Promise.resolve() : Promise.reject();\n }\n\n if (!value || (typeof value !== 'string' && !Array.isArray(value)))\n return Promise.resolve();\n\n return value.length >= min ? Promise.resolve() : Promise.reject();\n },\n async validator(value, rule) {\n return rule.validator(rule, value);\n },\n async type(value, rule) {\n const type = rule.type;\n\n if (!TYPE_LIST.includes(type)) return Promise.resolve();\n\n return TYPE_CHECKERS[type](value) ? Promise.resolve() : Promise.reject();\n },\n};\n\nconst VALIDATOR_NAMES = Object.keys(VALIDATORS);\n\nexport async function applyRule(value, rule, form) {\n if (typeof rule === 'function') {\n rule = rule(form);\n }\n\n if (typeof rule.transform === 'function') {\n value = rule.transform(value);\n }\n\n for (let validatorName of VALIDATOR_NAMES) {\n if (!(validatorName in rule)) continue;\n\n const checker = VALIDATORS[validatorName];\n\n await checker(value, rule);\n }\n}\n\nexport async function applyRules(field, form, validationId = 0) {\n const { value, rules } = field;\n\n if (!rules || !rules.length) return;\n\n for (let rule of rules) {\n if (field.validationId && validationId !== field.validationId) return;\n\n await applyRule(value, rule, form).catch((err) => {\n if (err instanceof Error) {\n err = err?.message || rule.message;\n }\n\n throw err || rule.message;\n });\n }\n}\n\nexport const delayValidationRule = (timeout = 500) => {\n let timeoutId: ReturnType<typeof setTimeout>;\n let storedResolve: () => void;\n\n return {\n async validator(): Promise<void> {\n clearTimeout(timeoutId);\n\n if (storedResolve) {\n storedResolve();\n }\n\n return new Promise((resolve) => {\n storedResolve = resolve;\n\n timeoutId = setTimeout(() => {\n resolve();\n }, timeout);\n });\n },\n };\n};\n"],"mappings":"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"}