@cube-dev/ui-kit 0.181.0 → 0.183.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 (1133) hide show
  1. package/dist/CHANGELOG.md +34 -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 +7 -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 +6 -4
  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 +76 -76
  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 +116 -43
  59. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  60. package/dist/components/actions/Menu/MenuSection.js +85 -30
  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 -6
  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 +29 -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.js +414 -155
  115. package/dist/components/content/Item/Item.js.map +1 -1
  116. package/dist/components/content/ItemBadge/ItemBadge.js +173 -59
  117. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  118. package/dist/components/content/ItemCard/ItemCard.js +34 -9
  119. package/dist/components/content/ItemCard/ItemCard.js.map +1 -1
  120. package/dist/components/content/Layout/GridLayout.js +38 -10
  121. package/dist/components/content/Layout/GridLayout.js.map +1 -1
  122. package/dist/components/content/Layout/Layout.js +30 -13
  123. package/dist/components/content/Layout/Layout.js.map +1 -1
  124. package/dist/components/content/Layout/LayoutBlock.js +33 -8
  125. package/dist/components/content/Layout/LayoutBlock.js.map +1 -1
  126. package/dist/components/content/Layout/LayoutCenter.js +48 -11
  127. package/dist/components/content/Layout/LayoutCenter.js.map +1 -1
  128. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  129. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  130. package/dist/components/content/Layout/LayoutContent.js +1 -1
  131. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  132. package/dist/components/content/Layout/LayoutContext.js +30 -21
  133. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  134. package/dist/components/content/Layout/LayoutFlex.js +33 -8
  135. package/dist/components/content/Layout/LayoutFlex.js.map +1 -1
  136. package/dist/components/content/Layout/LayoutFooter.js +53 -14
  137. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  138. package/dist/components/content/Layout/LayoutGrid.js +48 -11
  139. package/dist/components/content/Layout/LayoutGrid.js.map +1 -1
  140. package/dist/components/content/Layout/LayoutHeader.js +211 -57
  141. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  142. package/dist/components/content/Layout/LayoutPane.js +60 -14
  143. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  144. package/dist/components/content/Layout/LayoutPanel.js +59 -17
  145. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  146. package/dist/components/content/Layout/LayoutPanelHeader.js +89 -27
  147. package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
  148. package/dist/components/content/Layout/LayoutToolbar.js +33 -8
  149. package/dist/components/content/Layout/LayoutToolbar.js.map +1 -1
  150. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +206 -119
  151. package/dist/components/content/Layout/hooks/useTinyScrollbar.js.map +1 -1
  152. package/dist/components/content/Layout/index.js +1 -1
  153. package/dist/components/content/Layout/index.js.map +1 -1
  154. package/dist/components/content/Layout/utils.js +1 -1
  155. package/dist/components/content/Layout/utils.js.map +1 -1
  156. package/dist/components/content/Paragraph.js +25 -9
  157. package/dist/components/content/Paragraph.js.map +1 -1
  158. package/dist/components/content/Placeholder/Placeholder.js +52 -14
  159. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  160. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  161. package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
  162. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  163. package/dist/components/content/PrismCode/prismSetup.js.map +1 -1
  164. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +52 -17
  165. package/dist/components/content/PrismDiffCode/PrismDiffCode.js.map +1 -1
  166. package/dist/components/content/Result/Result.js +117 -38
  167. package/dist/components/content/Result/Result.js.map +1 -1
  168. package/dist/components/content/Skeleton/Skeleton.js +26 -17
  169. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  170. package/dist/components/content/Tag/Tag.js +68 -13
  171. package/dist/components/content/Tag/Tag.js.map +1 -1
  172. package/dist/components/content/Text.d.ts +14 -14
  173. package/dist/components/content/Text.js +61 -14
  174. package/dist/components/content/Text.js.map +1 -1
  175. package/dist/components/content/TextItem/TextItem.js +37 -16
  176. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  177. package/dist/components/content/Title.js +98 -23
  178. package/dist/components/content/Title.js.map +1 -1
  179. package/dist/components/content/Tree/Tree.js +32 -32
  180. package/dist/components/content/Tree/Tree.js.map +1 -1
  181. package/dist/components/content/Tree/TreeNode.js +10 -10
  182. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  183. package/dist/components/content/Tree/styled.js +1 -1
  184. package/dist/components/content/Tree/styled.js.map +1 -1
  185. package/dist/components/content/Tree/tree-index.js +1 -1
  186. package/dist/components/content/Tree/tree-index.js.map +1 -1
  187. package/dist/components/content/Tree/use-checkbox-tree.js +123 -89
  188. package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
  189. package/dist/components/content/Tree/use-load-data.js +52 -21
  190. package/dist/components/content/Tree/use-load-data.js.map +1 -1
  191. package/dist/components/content/highlightText.js +1 -1
  192. package/dist/components/content/highlightText.js.map +1 -1
  193. package/dist/components/content/use-auto-tooltip.js +1 -1
  194. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  195. package/dist/components/data/DataTable/DataTable.js +31 -31
  196. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  197. package/dist/components/data/ItemTable/ItemTable.js +41 -41
  198. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  199. package/dist/components/data/ItemTable/ItemTableBulkBar.js +11 -11
  200. package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
  201. package/dist/components/data/ItemTable/ItemTableDragPreview.js +41 -4
  202. package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
  203. package/dist/components/data/ItemTable/ItemTableFooter.js +67 -30
  204. package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
  205. package/dist/components/data/ItemTable/ItemTableToolbar.js +95 -28
  206. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  207. package/dist/components/data/TableBase/ColumnResizer.js +90 -41
  208. package/dist/components/data/TableBase/ColumnResizer.js.map +1 -1
  209. package/dist/components/data/TableBase/RowCollection.js +1 -1
  210. package/dist/components/data/TableBase/RowCollection.js.map +1 -1
  211. package/dist/components/data/TableBase/TableHeaderCell.js +154 -64
  212. package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
  213. package/dist/components/data/TableBase/TableRow.js +211 -69
  214. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  215. package/dist/components/data/TableBase/TableView.js +119 -80
  216. package/dist/components/data/TableBase/TableView.js.map +1 -1
  217. package/dist/components/data/TableBase/column-menu.js +1 -1
  218. package/dist/components/data/TableBase/column-menu.js.map +1 -1
  219. package/dist/components/data/TableBase/column-tint.js +1 -1
  220. package/dist/components/data/TableBase/column-tint.js.map +1 -1
  221. package/dist/components/data/TableBase/row-menu.js +1 -1
  222. package/dist/components/data/TableBase/row-menu.js.map +1 -1
  223. package/dist/components/data/TableBase/styled.js +1 -1
  224. package/dist/components/data/TableBase/styled.js.map +1 -1
  225. package/dist/components/data/TableBase/table-tree.js +1 -1
  226. package/dist/components/data/TableBase/table-tree.js.map +1 -1
  227. package/dist/components/data/TableBase/types.js +1 -1
  228. package/dist/components/data/TableBase/types.js.map +1 -1
  229. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  230. package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
  231. package/dist/components/data/TableBase/use-column-order.js +56 -12
  232. package/dist/components/data/TableBase/use-column-order.js.map +1 -1
  233. package/dist/components/data/TableBase/use-container-width.js +24 -10
  234. package/dist/components/data/TableBase/use-container-width.js.map +1 -1
  235. package/dist/components/data/TableBase/use-row-move-animation.js +68 -49
  236. package/dist/components/data/TableBase/use-row-move-animation.js.map +1 -1
  237. package/dist/components/data/TableBase/use-scrollability.js +32 -18
  238. package/dist/components/data/TableBase/use-scrollability.js.map +1 -1
  239. package/dist/components/data/TableBase/use-table-columns.js +130 -60
  240. package/dist/components/data/TableBase/use-table-columns.js.map +1 -1
  241. package/dist/components/data/TableBase/use-table-search.js +1 -1
  242. package/dist/components/data/TableBase/use-table-search.js.map +1 -1
  243. package/dist/components/data/TableBase/use-table-selection.js +39 -39
  244. package/dist/components/data/TableBase/use-table-selection.js.map +1 -1
  245. package/dist/components/data/TableBase/use-table-sort.js +132 -68
  246. package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
  247. package/dist/components/data/TableBase/use-table-sorts.js +168 -101
  248. package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
  249. package/dist/components/data/TableBase/use-table-storage.js +2 -2
  250. package/dist/components/data/TableBase/use-table-storage.js.map +1 -1
  251. package/dist/components/data/TableBase/use-table-tree-state.js +181 -86
  252. package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
  253. package/dist/components/fields/Checkbox/Checkbox.js +13 -6
  254. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  255. package/dist/components/fields/Checkbox/CheckboxGroup.js +101 -33
  256. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  257. package/dist/components/fields/Checkbox/context.js +1 -1
  258. package/dist/components/fields/Checkbox/context.js.map +1 -1
  259. package/dist/components/fields/ColorInput/ColorInput.js +329 -150
  260. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  261. package/dist/components/fields/ColorPicker/ColorPicker.js +16 -16
  262. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  263. package/dist/components/fields/ColorSwatch/ColorSwatch.js +52 -13
  264. package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -1
  265. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +90 -28
  266. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  267. package/dist/components/fields/ComboBox/ComboBox.js +216 -134
  268. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  269. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +21 -1
  270. package/dist/components/fields/CommandTextArea/CommandTextArea.js +26 -7
  271. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  272. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  273. package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -1
  274. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +88 -49
  275. package/dist/components/fields/CommandTextArea/useCaretAnchor.js.map +1 -1
  276. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  277. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  278. package/dist/components/fields/DatePicker/DateInputBase.js +129 -34
  279. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  280. package/dist/components/fields/DatePicker/DatePicker.js +194 -66
  281. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  282. package/dist/components/fields/DatePicker/DatePickerButton.js +39 -8
  283. package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
  284. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  285. package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
  286. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  287. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  288. package/dist/components/fields/DatePicker/DatePickerSegment.js +109 -29
  289. package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
  290. package/dist/components/fields/DatePicker/DateRangePicker.js +224 -85
  291. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  292. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +473 -177
  293. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  294. package/dist/components/fields/DatePicker/MonthPicker.js +15 -6
  295. package/dist/components/fields/DatePicker/MonthPicker.js.map +1 -1
  296. package/dist/components/fields/DatePicker/PeriodPicker.js +288 -91
  297. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  298. package/dist/components/fields/DatePicker/QuarterPicker.js +15 -6
  299. package/dist/components/fields/DatePicker/QuarterPicker.js.map +1 -1
  300. package/dist/components/fields/DatePicker/TimeInput.js +15 -7
  301. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  302. package/dist/components/fields/DatePicker/WeekPicker.js +15 -6
  303. package/dist/components/fields/DatePicker/WeekPicker.js.map +1 -1
  304. package/dist/components/fields/DatePicker/YearPicker.js +15 -6
  305. package/dist/components/fields/DatePicker/YearPicker.js.map +1 -1
  306. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  307. package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
  308. package/dist/components/fields/DatePicker/period.js +1 -1
  309. package/dist/components/fields/DatePicker/period.js.map +1 -1
  310. package/dist/components/fields/DatePicker/props.js +1 -1
  311. package/dist/components/fields/DatePicker/props.js.map +1 -1
  312. package/dist/components/fields/DatePicker/utils.js +15 -8
  313. package/dist/components/fields/DatePicker/utils.js.map +1 -1
  314. package/dist/components/fields/FileInput/FileInput.js +3 -3
  315. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  316. package/dist/components/fields/FilterListBox/FilterListBox.js +87 -87
  317. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  318. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +2 -0
  319. package/dist/components/fields/FilterPicker/FilterPicker.js +24 -23
  320. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  321. package/dist/components/fields/Input/Input.js +1 -1
  322. package/dist/components/fields/Input/Input.js.map +1 -1
  323. package/dist/components/fields/ListBox/DraggableListBox.js +23 -10
  324. package/dist/components/fields/ListBox/DraggableListBox.js.map +1 -1
  325. package/dist/components/fields/ListBox/ListBox.js +138 -53
  326. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  327. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +156 -37
  328. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  329. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  330. package/dist/components/fields/ListBoxPopover/listNavigation.js.map +1 -1
  331. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +61 -33
  332. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
  333. package/dist/components/fields/NumberInput/NumberInput.js +123 -33
  334. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  335. package/dist/components/fields/NumberInput/StepButton.js +53 -15
  336. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  337. package/dist/components/fields/PasswordInput/PasswordInput.js +149 -45
  338. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  339. package/dist/components/fields/Picker/Picker.d.ts +2 -0
  340. package/dist/components/fields/Picker/Picker.js +10 -9
  341. package/dist/components/fields/Picker/Picker.js.map +1 -1
  342. package/dist/components/fields/RadioGroup/Radio.js +273 -104
  343. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  344. package/dist/components/fields/RadioGroup/RadioGroup.js +149 -48
  345. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  346. package/dist/components/fields/RadioGroup/context.js +1 -1
  347. package/dist/components/fields/RadioGroup/context.js.map +1 -1
  348. package/dist/components/fields/SearchComboBox/SearchComboBox.js +80 -65
  349. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  350. package/dist/components/fields/SearchInput/SearchInput.js +91 -28
  351. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  352. package/dist/components/fields/Select/Select.d.ts +2 -0
  353. package/dist/components/fields/Select/Select.js +373 -118
  354. package/dist/components/fields/Select/Select.js.map +1 -1
  355. package/dist/components/fields/Slider/Gradation.js +45 -10
  356. package/dist/components/fields/Slider/Gradation.js.map +1 -1
  357. package/dist/components/fields/Slider/HueSlider.js +121 -32
  358. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  359. package/dist/components/fields/Slider/RangeSlider.js +46 -10
  360. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  361. package/dist/components/fields/Slider/Slider.js +108 -23
  362. package/dist/components/fields/Slider/Slider.js.map +1 -1
  363. package/dist/components/fields/Slider/SliderBase.js +2 -2
  364. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  365. package/dist/components/fields/Slider/SliderThumb.js +96 -37
  366. package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
  367. package/dist/components/fields/Slider/SliderTrack.js +64 -23
  368. package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
  369. package/dist/components/fields/Slider/elements.js +1 -1
  370. package/dist/components/fields/Slider/elements.js.map +1 -1
  371. package/dist/components/fields/Slider/index.js +1 -1
  372. package/dist/components/fields/Switch/Switch.js +190 -66
  373. package/dist/components/fields/Switch/Switch.js.map +1 -1
  374. package/dist/components/fields/TextArea/TextArea.js +137 -47
  375. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  376. package/dist/components/fields/TextInput/TextInput.js +80 -27
  377. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  378. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  379. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  380. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  381. package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
  382. package/dist/components/fields/TextInputMapper/TextInputMapper.js +156 -83
  383. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  384. package/dist/components/fields/TriggerActions.js +11 -2
  385. package/dist/components/fields/TriggerActions.js.map +1 -1
  386. package/dist/components/fields/color/ColorPanel.js +237 -59
  387. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  388. package/dist/components/fields/color/channels.js +1 -1
  389. package/dist/components/fields/color/channels.js.map +1 -1
  390. package/dist/components/fields/color/color.js +1 -1
  391. package/dist/components/fields/color/color.js.map +1 -1
  392. package/dist/components/fields/color/context.js +1 -1
  393. package/dist/components/fields/color/context.js.map +1 -1
  394. package/dist/components/form/FieldWrapper/FieldWrapper.js +195 -72
  395. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  396. package/dist/components/form/Form/Field.js +23 -9
  397. package/dist/components/form/Form/Field.js.map +1 -1
  398. package/dist/components/form/Form/Form.js +76 -30
  399. package/dist/components/form/Form/Form.js.map +1 -1
  400. package/dist/components/form/Form/ModernFormRoot.js +294 -81
  401. package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
  402. package/dist/components/form/Form/ResetButton/ResetButton.js +32 -10
  403. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  404. package/dist/components/form/Form/SubmitButton/SubmitButton.js +32 -10
  405. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  406. package/dist/components/form/Form/SubmitError.js +130 -32
  407. package/dist/components/form/Form/SubmitError.js.map +1 -1
  408. package/dist/components/form/Form/backend.js +1 -1
  409. package/dist/components/form/Form/backend.js.map +1 -1
  410. package/dist/components/form/Form/index.js +1 -1
  411. package/dist/components/form/Form/index.js.map +1 -1
  412. package/dist/components/form/Form/modern/actions.js +140 -45
  413. package/dist/components/form/Form/modern/actions.js.map +1 -1
  414. package/dist/components/form/Form/modern/context.js +1 -1
  415. package/dist/components/form/Form/modern/context.js.map +1 -1
  416. package/dist/components/form/Form/modern/controller.js +1 -1
  417. package/dist/components/form/Form/modern/controller.js.map +1 -1
  418. package/dist/components/form/Form/modern/field-binding.js +1 -1
  419. package/dist/components/form/Form/modern/field-binding.js.map +1 -1
  420. package/dist/components/form/Form/modern/field.js +1 -1
  421. package/dist/components/form/Form/modern/field.js.map +1 -1
  422. package/dist/components/form/Form/modern/react.js +102 -19
  423. package/dist/components/form/Form/modern/react.js.map +1 -1
  424. package/dist/components/form/Form/modern/store.js +13 -3
  425. package/dist/components/form/Form/modern/store.js.map +1 -1
  426. package/dist/components/form/Form/modern/types.d.ts +3 -1
  427. package/dist/components/form/Form/modern/validation.js +1 -1
  428. package/dist/components/form/Form/modern/validation.js.map +1 -1
  429. package/dist/components/form/Form/modern/values.js +1 -1
  430. package/dist/components/form/Form/modern/values.js.map +1 -1
  431. package/dist/components/form/Form/use-field/use-field-binding.js +236 -63
  432. package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -1
  433. package/dist/components/form/Form/use-field/use-field-props.js +106 -61
  434. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  435. package/dist/components/form/Form/use-field/use-field.js +5 -4
  436. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  437. package/dist/components/form/Form/use-form.js +2 -1
  438. package/dist/components/form/Form/use-form.js.map +1 -1
  439. package/dist/components/form/Form/validation.js +1 -1
  440. package/dist/components/form/Form/validation.js.map +1 -1
  441. package/dist/components/form/Label.js +127 -37
  442. package/dist/components/form/Label.js.map +1 -1
  443. package/dist/components/form/validation/ValidationIndicator.js +20 -5
  444. package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
  445. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  446. package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
  447. package/dist/components/form/validation/use-validation-props.js +36 -10
  448. package/dist/components/form/validation/use-validation-props.js.map +1 -1
  449. package/dist/components/form/wrapper.js +1 -1
  450. package/dist/components/form/wrapper.js.map +1 -1
  451. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +49 -29
  452. package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
  453. package/dist/components/helpers/IconSwitch/IconSwitch.js +8 -8
  454. package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
  455. package/dist/components/layout/Board/Board.js +27 -9
  456. package/dist/components/layout/Board/Board.js.map +1 -1
  457. package/dist/components/layout/Board/BoardProvider.js +1 -1
  458. package/dist/components/layout/Board/BoardProvider.js.map +1 -1
  459. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  460. package/dist/components/layout/Board/BoardResponsive.js.map +1 -1
  461. package/dist/components/layout/Board/Widget.js +1 -1
  462. package/dist/components/layout/Board/Widget.js.map +1 -1
  463. package/dist/components/layout/Board/WidgetHost.js +159 -121
  464. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  465. package/dist/components/layout/Board/board-context.js +14 -5
  466. package/dist/components/layout/Board/board-context.js.map +1 -1
  467. package/dist/components/layout/Board/board-store.js +1 -1
  468. package/dist/components/layout/Board/board-store.js.map +1 -1
  469. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  470. package/dist/components/layout/Board/grid-core/calculate.js.map +1 -1
  471. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  472. package/dist/components/layout/Board/grid-core/collision-modes.js.map +1 -1
  473. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  474. package/dist/components/layout/Board/grid-core/collision.js.map +1 -1
  475. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  476. package/dist/components/layout/Board/grid-core/compactors.js.map +1 -1
  477. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  478. package/dist/components/layout/Board/grid-core/constraints.js.map +1 -1
  479. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  480. package/dist/components/layout/Board/grid-core/group-move.js.map +1 -1
  481. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  482. package/dist/components/layout/Board/grid-core/layout.js.map +1 -1
  483. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  484. package/dist/components/layout/Board/grid-core/placement.js.map +1 -1
  485. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  486. package/dist/components/layout/Board/grid-core/sort.js.map +1 -1
  487. package/dist/components/layout/Board/index.js +1 -1
  488. package/dist/components/layout/Board/index.js.map +1 -1
  489. package/dist/components/layout/Board/responsive-utils.js +1 -1
  490. package/dist/components/layout/Board/responsive-utils.js.map +1 -1
  491. package/dist/components/layout/Board/use-board-layout.js +8 -8
  492. package/dist/components/layout/Board/use-board-layout.js.map +1 -1
  493. package/dist/components/layout/Board/use-board-registry.js +257 -257
  494. package/dist/components/layout/Board/use-board-registry.js.map +1 -1
  495. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  496. package/dist/components/layout/Board/use-board-select-modifier-key.js.map +1 -1
  497. package/dist/components/layout/Board/use-board-selection.js +16 -16
  498. package/dist/components/layout/Board/use-board-selection.js.map +1 -1
  499. package/dist/components/layout/Flex.js +29 -7
  500. package/dist/components/layout/Flex.js.map +1 -1
  501. package/dist/components/layout/Flow.js +29 -7
  502. package/dist/components/layout/Flow.js.map +1 -1
  503. package/dist/components/layout/Grid.js +30 -7
  504. package/dist/components/layout/Grid.js.map +1 -1
  505. package/dist/components/layout/Panel.js +9 -9
  506. package/dist/components/layout/Panel.js.map +1 -1
  507. package/dist/components/layout/Prefix.js +59 -16
  508. package/dist/components/layout/Prefix.js.map +1 -1
  509. package/dist/components/layout/ResizablePanel.js +62 -32
  510. package/dist/components/layout/ResizablePanel.js.map +1 -1
  511. package/dist/components/layout/Space.js +55 -11
  512. package/dist/components/layout/Space.js.map +1 -1
  513. package/dist/components/layout/Suffix.js +59 -16
  514. package/dist/components/layout/Suffix.js.map +1 -1
  515. package/dist/components/navigation/Pagination/Pagination.js +394 -164
  516. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  517. package/dist/components/navigation/Pagination/use-pagination.js +69 -26
  518. package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
  519. package/dist/components/navigation/Tabs/DraggableTabList.js +25 -10
  520. package/dist/components/navigation/Tabs/DraggableTabList.js.map +1 -1
  521. package/dist/components/navigation/Tabs/TabButton.js +604 -235
  522. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  523. package/dist/components/navigation/Tabs/TabDropIndicator.js +65 -23
  524. package/dist/components/navigation/Tabs/TabDropIndicator.js.map +1 -1
  525. package/dist/components/navigation/Tabs/TabPanel.js +47 -19
  526. package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
  527. package/dist/components/navigation/Tabs/TabPicker.js +105 -33
  528. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  529. package/dist/components/navigation/Tabs/Tabs.js +45 -45
  530. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  531. package/dist/components/navigation/Tabs/TabsAction.js +53 -19
  532. package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
  533. package/dist/components/navigation/Tabs/TabsContext.js +16 -6
  534. package/dist/components/navigation/Tabs/TabsContext.js.map +1 -1
  535. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  536. package/dist/components/navigation/Tabs/popover-placement.js.map +1 -1
  537. package/dist/components/navigation/Tabs/styled.js +1 -1
  538. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  539. package/dist/components/navigation/Tabs/types.js +1 -1
  540. package/dist/components/navigation/Tabs/types.js.map +1 -1
  541. package/dist/components/navigation/Tabs/use-tab-editing.js +50 -13
  542. package/dist/components/navigation/Tabs/use-tab-editing.js.map +1 -1
  543. package/dist/components/navigation/Tabs/use-tab-indicator.js +111 -63
  544. package/dist/components/navigation/Tabs/use-tab-indicator.js.map +1 -1
  545. package/dist/components/organisms/StatsCard/StatsCard.js +54 -14
  546. package/dist/components/organisms/StatsCard/StatsCard.js.map +1 -1
  547. package/dist/components/other/Calendar/Calendar.js +79 -31
  548. package/dist/components/other/Calendar/Calendar.js.map +1 -1
  549. package/dist/components/other/Calendar/CalendarCell.js +66 -20
  550. package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
  551. package/dist/components/other/Calendar/CalendarGrid.js +90 -40
  552. package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
  553. package/dist/components/other/Calendar/CalendarHeader.js +80 -17
  554. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  555. package/dist/components/other/Calendar/CalendarPanel.js +568 -144
  556. package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
  557. package/dist/components/other/Calendar/PeriodCalendar.js +425 -134
  558. package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
  559. package/dist/components/other/Calendar/PeriodGrid.js +6 -6
  560. package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
  561. package/dist/components/other/Calendar/RangeCalendar.js +50 -24
  562. package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
  563. package/dist/components/other/Calendar/styled.js +1 -1
  564. package/dist/components/other/Calendar/styled.js.map +1 -1
  565. package/dist/components/other/CubeLogo/CubeLogo.js +95 -34
  566. package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
  567. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  568. package/dist/components/other/NoDataIcon/NoDataIcon.js.map +1 -1
  569. package/dist/components/overlays/AlertDialog/AlertDialog.js +153 -42
  570. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  571. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +76 -54
  572. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  573. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +146 -39
  574. package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
  575. package/dist/components/overlays/Dialog/Dialog.js +26 -10
  576. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  577. package/dist/components/overlays/Dialog/DialogContainer.js +13 -13
  578. package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
  579. package/dist/components/overlays/Dialog/DialogForm.d.ts +12 -7
  580. package/dist/components/overlays/Dialog/DialogForm.js +18 -7
  581. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  582. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -1
  583. package/dist/components/overlays/Dialog/DialogTrigger.js +214 -59
  584. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  585. package/dist/components/overlays/Dialog/ModernDialogForm.js +350 -0
  586. package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -0
  587. package/dist/components/overlays/Dialog/context.js +1 -1
  588. package/dist/components/overlays/Dialog/context.js.map +1 -1
  589. package/dist/components/overlays/Dialog/index.d.ts +1 -1
  590. package/dist/components/overlays/Dialog/use-dialog-container.js +6 -6
  591. package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
  592. package/dist/components/overlays/Modal/Modal.js +140 -27
  593. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  594. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  595. package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
  596. package/dist/components/overlays/Modal/Overlay.js +4 -4
  597. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  598. package/dist/components/overlays/Modal/Popover.js +131 -29
  599. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  600. package/dist/components/overlays/Modal/Tray.js +142 -30
  601. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  602. package/dist/components/overlays/Modal/Underlay.js +36 -7
  603. package/dist/components/overlays/Modal/Underlay.js.map +1 -1
  604. package/dist/components/overlays/Notifications/Notification.js +69 -32
  605. package/dist/components/overlays/Notifications/Notification.js.map +1 -1
  606. package/dist/components/overlays/Notifications/NotificationAction.js +79 -26
  607. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  608. package/dist/components/overlays/Notifications/NotificationCard.js +138 -33
  609. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  610. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  611. package/dist/components/overlays/Notifications/NotificationContext.js.map +1 -1
  612. package/dist/components/overlays/Notifications/NotificationItem.js +63 -16
  613. package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
  614. package/dist/components/overlays/Notifications/OverlayContainer.js +312 -151
  615. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  616. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  617. package/dist/components/overlays/Notifications/OverlayProvider.js.map +1 -1
  618. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +210 -58
  619. package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
  620. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  621. package/dist/components/overlays/Notifications/dismissed-storage.js.map +1 -1
  622. package/dist/components/overlays/Notifications/format-relative-time.d.ts +1 -1
  623. package/dist/components/overlays/Notifications/format-relative-time.js +3 -3
  624. package/dist/components/overlays/Notifications/format-relative-time.js.map +1 -1
  625. package/dist/components/overlays/Notifications/index.js +1 -1
  626. package/dist/components/overlays/Notifications/index.js.map +1 -1
  627. package/dist/components/overlays/Notifications/use-notification-state.js +51 -51
  628. package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
  629. package/dist/components/overlays/Notifications/use-notifications.js +12 -12
  630. package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
  631. package/dist/components/overlays/Notifications/use-overlay-timers.js +10 -10
  632. package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
  633. package/dist/components/overlays/Notifications/use-persistent-notifications.js +24 -5
  634. package/dist/components/overlays/Notifications/use-persistent-notifications.js.map +1 -1
  635. package/dist/components/overlays/Notifications/use-persistent-state.js +145 -43
  636. package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
  637. package/dist/components/overlays/Notifications/use-toast-state.js +25 -25
  638. package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
  639. package/dist/components/overlays/Toast/ToastItem.js +68 -15
  640. package/dist/components/overlays/Toast/ToastItem.js.map +1 -1
  641. package/dist/components/overlays/Toast/index.js +100 -34
  642. package/dist/components/overlays/Toast/index.js.map +1 -1
  643. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  644. package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
  645. package/dist/components/overlays/Toast/useToast.js +9 -9
  646. package/dist/components/overlays/Toast/useToast.js.map +1 -1
  647. package/dist/components/overlays/Tooltip/Tooltip.js +88 -31
  648. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  649. package/dist/components/overlays/Tooltip/TooltipProvider.js +75 -10
  650. package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
  651. package/dist/components/overlays/Tooltip/TooltipTrigger.js +186 -77
  652. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  653. package/dist/components/overlays/Tooltip/context.js +1 -1
  654. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  655. package/dist/components/portal/Portal.js +18 -3
  656. package/dist/components/portal/Portal.js.map +1 -1
  657. package/dist/components/portal/PortalProvider.js +11 -2
  658. package/dist/components/portal/PortalProvider.js.map +1 -1
  659. package/dist/components/portal/usePortal.js +1 -1
  660. package/dist/components/portal/usePortal.js.map +1 -1
  661. package/dist/components/shared/DraggableCollection.js +23 -23
  662. package/dist/components/shared/DraggableCollection.js.map +1 -1
  663. package/dist/components/shared/InvalidIcon.js +1 -1
  664. package/dist/components/shared/InvalidIcon.js.map +1 -1
  665. package/dist/components/shared/ValidIcon.js +1 -1
  666. package/dist/components/shared/ValidIcon.js.map +1 -1
  667. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +156 -48
  668. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  669. package/dist/components/status/Spin/Cube.js +12 -3
  670. package/dist/components/status/Spin/Cube.js.map +1 -1
  671. package/dist/components/status/Spin/InternalSpinner.js +21 -6
  672. package/dist/components/status/Spin/InternalSpinner.js.map +1 -1
  673. package/dist/components/status/Spin/Spin.js +31 -7
  674. package/dist/components/status/Spin/Spin.js.map +1 -1
  675. package/dist/components/status/Spin/SpinsContainer.js +23 -6
  676. package/dist/components/status/Spin/SpinsContainer.js.map +1 -1
  677. package/dist/data/item-themes.js +1 -1
  678. package/dist/data/item-themes.js.map +1 -1
  679. package/dist/data/themes.js +1 -1
  680. package/dist/data/themes.js.map +1 -1
  681. package/dist/eslint-plugin/defaults.generated.js +18 -7
  682. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  683. package/dist/eslint-plugin/index.js +1 -1
  684. package/dist/eslint-plugin/index.js.map +1 -1
  685. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  686. package/dist/eslint-plugin/rules/no-redundant-default-prop.js.map +1 -1
  687. package/dist/i18n/I18nProvider.js +54 -13
  688. package/dist/i18n/I18nProvider.js.map +1 -1
  689. package/dist/i18n/createFormatter.js +1 -1
  690. package/dist/i18n/createFormatter.js.map +1 -1
  691. package/dist/i18n/index.js +1 -1
  692. package/dist/i18n/index.js.map +1 -1
  693. package/dist/i18n/instance.js +1 -1
  694. package/dist/i18n/instance.js.map +1 -1
  695. package/dist/i18n/locales/de-DE/uikit.js +5 -2
  696. package/dist/i18n/locales/en-US/uikit.js +5 -2
  697. package/dist/i18n/locales/en-US/uikit.json.d.ts +15 -5
  698. package/dist/i18n/locales/es-ES/uikit.js +5 -2
  699. package/dist/i18n/locales/es-MX/uikit.js +5 -2
  700. package/dist/i18n/locales/fr-FR/uikit.js +5 -2
  701. package/dist/i18n/locales/it-IT/uikit.js +5 -2
  702. package/dist/i18n/locales/ja-JP/uikit.js +5 -2
  703. package/dist/i18n/locales/nb-NO/uikit.js +5 -2
  704. package/dist/i18n/locales/pt-BR/uikit.js +5 -2
  705. package/dist/i18n/locales/pt-PT/uikit.js +5 -2
  706. package/dist/i18n/locales/sv-SE/uikit.js +5 -2
  707. package/dist/i18n/locales/vi-VN/uikit.js +5 -2
  708. package/dist/i18n/locales.js +1 -1
  709. package/dist/i18n/locales.js.map +1 -1
  710. package/dist/i18n/useFormatter.js +10 -3
  711. package/dist/i18n/useFormatter.js.map +1 -1
  712. package/dist/i18n/useI18n.js +1 -1
  713. package/dist/i18n/useI18n.js.map +1 -1
  714. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  715. package/dist/icons/AdjustmentsHorizontalIcon.js.map +1 -1
  716. package/dist/icons/AdjustmentsIcon.js +1 -1
  717. package/dist/icons/AdjustmentsIcon.js.map +1 -1
  718. package/dist/icons/AiIcon.js +1 -1
  719. package/dist/icons/AiIcon.js.map +1 -1
  720. package/dist/icons/AreaChartIcon.js +1 -1
  721. package/dist/icons/AreaChartIcon.js.map +1 -1
  722. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  723. package/dist/icons/ArrowNarrowDownIcon.js.map +1 -1
  724. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  725. package/dist/icons/ArrowNarrowUpIcon.js.map +1 -1
  726. package/dist/icons/BackwardIcon.js +1 -1
  727. package/dist/icons/BackwardIcon.js.map +1 -1
  728. package/dist/icons/BarChartIcon.js +1 -1
  729. package/dist/icons/BarChartIcon.js.map +1 -1
  730. package/dist/icons/BellFilledIcon.js +1 -1
  731. package/dist/icons/BellFilledIcon.js.map +1 -1
  732. package/dist/icons/BellIcon.js +1 -1
  733. package/dist/icons/BellIcon.js.map +1 -1
  734. package/dist/icons/BooleanIcon.js +1 -1
  735. package/dist/icons/BooleanIcon.js.map +1 -1
  736. package/dist/icons/CalendarEditIcon.js +1 -1
  737. package/dist/icons/CalendarEditIcon.js.map +1 -1
  738. package/dist/icons/CalendarIcon.js +1 -1
  739. package/dist/icons/CalendarIcon.js.map +1 -1
  740. package/dist/icons/CaretDownIcon.js +1 -1
  741. package/dist/icons/CaretDownIcon.js.map +1 -1
  742. package/dist/icons/CaretUpIcon.js +1 -1
  743. package/dist/icons/CaretUpIcon.js.map +1 -1
  744. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  745. package/dist/icons/ChartAreaStackedIcon.js.map +1 -1
  746. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  747. package/dist/icons/ChartAreaStackedPercentageIcon.js.map +1 -1
  748. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  749. package/dist/icons/ChartBarGroupedHorizontalIcon.js.map +1 -1
  750. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  751. package/dist/icons/ChartBarGroupedIcon.js.map +1 -1
  752. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  753. package/dist/icons/ChartBarHorizontalIcon.js.map +1 -1
  754. package/dist/icons/ChartBarLineIcon.js +1 -1
  755. package/dist/icons/ChartBarLineIcon.js.map +1 -1
  756. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  757. package/dist/icons/ChartBarStackedHorizontalIcon.js.map +1 -1
  758. package/dist/icons/ChartBarStackedIcon.js +1 -1
  759. package/dist/icons/ChartBarStackedIcon.js.map +1 -1
  760. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  761. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js.map +1 -1
  762. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  763. package/dist/icons/ChartBarStackedPercentageIcon.js.map +1 -1
  764. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  765. package/dist/icons/ChartBoxPlot2Icon.js.map +1 -1
  766. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  767. package/dist/icons/ChartBoxPlotIcon.js.map +1 -1
  768. package/dist/icons/ChartBubbleIcon.js +1 -1
  769. package/dist/icons/ChartBubbleIcon.js.map +1 -1
  770. package/dist/icons/ChartDonut2Icon.js +1 -1
  771. package/dist/icons/ChartDonut2Icon.js.map +1 -1
  772. package/dist/icons/ChartFunnelIcon.js +1 -1
  773. package/dist/icons/ChartFunnelIcon.js.map +1 -1
  774. package/dist/icons/ChartHeatmapIcon.js +1 -1
  775. package/dist/icons/ChartHeatmapIcon.js.map +1 -1
  776. package/dist/icons/ChartKPIIcon.js +1 -1
  777. package/dist/icons/ChartKPIIcon.js.map +1 -1
  778. package/dist/icons/ChartPie2Icon.js +1 -1
  779. package/dist/icons/ChartPie2Icon.js.map +1 -1
  780. package/dist/icons/ChartScatterIcon.js +1 -1
  781. package/dist/icons/ChartScatterIcon.js.map +1 -1
  782. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  783. package/dist/icons/CheckCircleFilledIcon.js.map +1 -1
  784. package/dist/icons/CheckCircleIcon.js +1 -1
  785. package/dist/icons/CheckCircleIcon.js.map +1 -1
  786. package/dist/icons/CheckIcon.js +1 -1
  787. package/dist/icons/CheckIcon.js.map +1 -1
  788. package/dist/icons/CircleFilledIcon.js +1 -1
  789. package/dist/icons/CircleFilledIcon.js.map +1 -1
  790. package/dist/icons/ClearIcon.js +1 -1
  791. package/dist/icons/ClearIcon.js.map +1 -1
  792. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  793. package/dist/icons/CloseCircleFilledIcon.js.map +1 -1
  794. package/dist/icons/CloseCircleIcon.js +1 -1
  795. package/dist/icons/CloseCircleIcon.js.map +1 -1
  796. package/dist/icons/CloseIcon.js +1 -1
  797. package/dist/icons/CloseIcon.js.map +1 -1
  798. package/dist/icons/CodeIcon.js +1 -1
  799. package/dist/icons/CodeIcon.js.map +1 -1
  800. package/dist/icons/ColumnTotalIcon.js +1 -1
  801. package/dist/icons/ColumnTotalIcon.js.map +1 -1
  802. package/dist/icons/CopyIcon.js +1 -1
  803. package/dist/icons/CopyIcon.js.map +1 -1
  804. package/dist/icons/CountIcon.js +1 -1
  805. package/dist/icons/CountIcon.js.map +1 -1
  806. package/dist/icons/CubeIcon.js +1 -1
  807. package/dist/icons/CubeIcon.js.map +1 -1
  808. package/dist/icons/CubePauseIcon.js +1 -1
  809. package/dist/icons/CubePauseIcon.js.map +1 -1
  810. package/dist/icons/CubePlayIcon.js +1 -1
  811. package/dist/icons/CubePlayIcon.js.map +1 -1
  812. package/dist/icons/CurrencyDollarIcon.js +1 -1
  813. package/dist/icons/CurrencyDollarIcon.js.map +1 -1
  814. package/dist/icons/DangerIcon.js +1 -1
  815. package/dist/icons/DangerIcon.js.map +1 -1
  816. package/dist/icons/DashboardIcon.js +1 -1
  817. package/dist/icons/DashboardIcon.js.map +1 -1
  818. package/dist/icons/DatabaseIcon.js +1 -1
  819. package/dist/icons/DatabaseIcon.js.map +1 -1
  820. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  821. package/dist/icons/DecimalDecreaseIcon.js.map +1 -1
  822. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  823. package/dist/icons/DecimalIncreaseIcon.js.map +1 -1
  824. package/dist/icons/DirectionIcon.js +67 -22
  825. package/dist/icons/DirectionIcon.js.map +1 -1
  826. package/dist/icons/DonutIcon.js +1 -1
  827. package/dist/icons/DonutIcon.js.map +1 -1
  828. package/dist/icons/DownIcon.js +1 -1
  829. package/dist/icons/DownIcon.js.map +1 -1
  830. package/dist/icons/EditIcon.js +1 -1
  831. package/dist/icons/EditIcon.js.map +1 -1
  832. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  833. package/dist/icons/ExclamationCircleFilledIcon.js.map +1 -1
  834. package/dist/icons/ExclamationCircleIcon.js +1 -1
  835. package/dist/icons/ExclamationCircleIcon.js.map +1 -1
  836. package/dist/icons/ExclamationIcon.js +1 -1
  837. package/dist/icons/ExclamationIcon.js.map +1 -1
  838. package/dist/icons/EyeIcon.js +1 -1
  839. package/dist/icons/EyeIcon.js.map +1 -1
  840. package/dist/icons/EyeInvisibleIcon.js +1 -1
  841. package/dist/icons/EyeInvisibleIcon.js.map +1 -1
  842. package/dist/icons/FilterIcon.js +1 -1
  843. package/dist/icons/FilterIcon.js.map +1 -1
  844. package/dist/icons/FolderFilledIcon.js +1 -1
  845. package/dist/icons/FolderFilledIcon.js.map +1 -1
  846. package/dist/icons/FolderIcon.js +1 -1
  847. package/dist/icons/FolderIcon.js.map +1 -1
  848. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  849. package/dist/icons/FolderOpenFilledIcon.js.map +1 -1
  850. package/dist/icons/FolderOpenIcon.js +1 -1
  851. package/dist/icons/FolderOpenIcon.js.map +1 -1
  852. package/dist/icons/ForwardIcon.js +1 -1
  853. package/dist/icons/ForwardIcon.js.map +1 -1
  854. package/dist/icons/GripVerticalIcon.js +1 -1
  855. package/dist/icons/GripVerticalIcon.js.map +1 -1
  856. package/dist/icons/HierarchyIcon.js +1 -1
  857. package/dist/icons/HierarchyIcon.js.map +1 -1
  858. package/dist/icons/HierarchyOpenIcon.js +1 -1
  859. package/dist/icons/HierarchyOpenIcon.js.map +1 -1
  860. package/dist/icons/Icon.js +60 -16
  861. package/dist/icons/Icon.js.map +1 -1
  862. package/dist/icons/InfoCircleIcon.js +1 -1
  863. package/dist/icons/InfoCircleIcon.js.map +1 -1
  864. package/dist/icons/InfoIcon.js +1 -1
  865. package/dist/icons/InfoIcon.js.map +1 -1
  866. package/dist/icons/KeyIcon.js +1 -1
  867. package/dist/icons/KeyIcon.js.map +1 -1
  868. package/dist/icons/LeftIcon.js +1 -1
  869. package/dist/icons/LeftIcon.js.map +1 -1
  870. package/dist/icons/LineChartIcon.js +1 -1
  871. package/dist/icons/LineChartIcon.js.map +1 -1
  872. package/dist/icons/LoadingIcon.js +1 -1
  873. package/dist/icons/LoadingIcon.js.map +1 -1
  874. package/dist/icons/LockFilledIcon.js +1 -1
  875. package/dist/icons/LockFilledIcon.js.map +1 -1
  876. package/dist/icons/LockIcon.js +1 -1
  877. package/dist/icons/LockIcon.js.map +1 -1
  878. package/dist/icons/MoreIcon.js +1 -1
  879. package/dist/icons/MoreIcon.js.map +1 -1
  880. package/dist/icons/NotAllowedIcon.js +1 -1
  881. package/dist/icons/NotAllowedIcon.js.map +1 -1
  882. package/dist/icons/Number123Icon.js +1 -1
  883. package/dist/icons/Number123Icon.js.map +1 -1
  884. package/dist/icons/NumberIcon.js +1 -1
  885. package/dist/icons/NumberIcon.js.map +1 -1
  886. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  887. package/dist/icons/PauseCircleFilledIcon.js.map +1 -1
  888. package/dist/icons/PauseCircleIcon.js +1 -1
  889. package/dist/icons/PauseCircleIcon.js.map +1 -1
  890. package/dist/icons/PauseIcon.js +1 -1
  891. package/dist/icons/PauseIcon.js.map +1 -1
  892. package/dist/icons/PercentageIcon.js +1 -1
  893. package/dist/icons/PercentageIcon.js.map +1 -1
  894. package/dist/icons/PieChartIcon.js +1 -1
  895. package/dist/icons/PieChartIcon.js.map +1 -1
  896. package/dist/icons/PipetteIcon.js +1 -1
  897. package/dist/icons/PipetteIcon.js.map +1 -1
  898. package/dist/icons/PlayCircleIcon.js +1 -1
  899. package/dist/icons/PlayCircleIcon.js.map +1 -1
  900. package/dist/icons/PlayIcon.js +1 -1
  901. package/dist/icons/PlayIcon.js.map +1 -1
  902. package/dist/icons/PlusIcon.js +1 -1
  903. package/dist/icons/PlusIcon.js.map +1 -1
  904. package/dist/icons/ProgressBarIcon.js +1 -1
  905. package/dist/icons/ProgressBarIcon.js.map +1 -1
  906. package/dist/icons/ReloadIcon.js +1 -1
  907. package/dist/icons/ReloadIcon.js.map +1 -1
  908. package/dist/icons/ReportIcon.js +1 -1
  909. package/dist/icons/ReportIcon.js.map +1 -1
  910. package/dist/icons/ReturnIcon.js +1 -1
  911. package/dist/icons/ReturnIcon.js.map +1 -1
  912. package/dist/icons/RightIcon.js +1 -1
  913. package/dist/icons/RightIcon.js.map +1 -1
  914. package/dist/icons/RowTotalsIcon.js +1 -1
  915. package/dist/icons/RowTotalsIcon.js.map +1 -1
  916. package/dist/icons/SchemeIcon.js +1 -1
  917. package/dist/icons/SchemeIcon.js.map +1 -1
  918. package/dist/icons/SearchIcon.js +1 -1
  919. package/dist/icons/SearchIcon.js.map +1 -1
  920. package/dist/icons/SemanticQueryIcon.js +1 -1
  921. package/dist/icons/SemanticQueryIcon.js.map +1 -1
  922. package/dist/icons/SettingsIcon.js +1 -1
  923. package/dist/icons/SettingsIcon.js.map +1 -1
  924. package/dist/icons/ShieldFilledIcon.js +1 -1
  925. package/dist/icons/ShieldFilledIcon.js.map +1 -1
  926. package/dist/icons/ShieldIcon.js +1 -1
  927. package/dist/icons/ShieldIcon.js.map +1 -1
  928. package/dist/icons/SlashIcon.js +1 -1
  929. package/dist/icons/SlashIcon.js.map +1 -1
  930. package/dist/icons/SparklesIcon.js +1 -1
  931. package/dist/icons/SparklesIcon.js.map +1 -1
  932. package/dist/icons/SqlIcon.js +1 -1
  933. package/dist/icons/SqlIcon.js.map +1 -1
  934. package/dist/icons/StatsIcon.js +1 -1
  935. package/dist/icons/StatsIcon.js.map +1 -1
  936. package/dist/icons/StopIcon.js +1 -1
  937. package/dist/icons/StopIcon.js.map +1 -1
  938. package/dist/icons/StringIcon.js +1 -1
  939. package/dist/icons/StringIcon.js.map +1 -1
  940. package/dist/icons/SubtotalsIcon.js +1 -1
  941. package/dist/icons/SubtotalsIcon.js.map +1 -1
  942. package/dist/icons/SwitchIcon.js +1 -1
  943. package/dist/icons/SwitchIcon.js.map +1 -1
  944. package/dist/icons/TableIcon.js +1 -1
  945. package/dist/icons/TableIcon.js.map +1 -1
  946. package/dist/icons/ThumbsDownIcon.js +1 -1
  947. package/dist/icons/ThumbsDownIcon.js.map +1 -1
  948. package/dist/icons/ThumbsUpIcon.js +1 -1
  949. package/dist/icons/ThumbsUpIcon.js.map +1 -1
  950. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  951. package/dist/icons/ThunderboltCrossedIcon.js.map +1 -1
  952. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  953. package/dist/icons/ThunderboltFilledIcon.js.map +1 -1
  954. package/dist/icons/ThunderboltIcon.js +1 -1
  955. package/dist/icons/ThunderboltIcon.js.map +1 -1
  956. package/dist/icons/TimeIcon.js +1 -1
  957. package/dist/icons/TimeIcon.js.map +1 -1
  958. package/dist/icons/TrashIcon.js +1 -1
  959. package/dist/icons/TrashIcon.js.map +1 -1
  960. package/dist/icons/UnlockIcon.js +1 -1
  961. package/dist/icons/UnlockIcon.js.map +1 -1
  962. package/dist/icons/UpIcon.js +1 -1
  963. package/dist/icons/UpIcon.js.map +1 -1
  964. package/dist/icons/UserGroupIcon.js +1 -1
  965. package/dist/icons/UserGroupIcon.js.map +1 -1
  966. package/dist/icons/UserIcon.js +1 -1
  967. package/dist/icons/UserIcon.js.map +1 -1
  968. package/dist/icons/UserLockIcon.js +1 -1
  969. package/dist/icons/UserLockIcon.js.map +1 -1
  970. package/dist/icons/ViewIcon.js +1 -1
  971. package/dist/icons/ViewIcon.js.map +1 -1
  972. package/dist/icons/WarningFilledIcon.js +1 -1
  973. package/dist/icons/WarningFilledIcon.js.map +1 -1
  974. package/dist/icons/WarningIcon.js +1 -1
  975. package/dist/icons/WarningIcon.js.map +1 -1
  976. package/dist/icons/wrap-icon.js +15 -7
  977. package/dist/icons/wrap-icon.js.map +1 -1
  978. package/dist/index.d.ts +22 -22
  979. package/dist/index.js +1 -1
  980. package/dist/index.js.map +1 -1
  981. package/dist/probe/canonicalize.js +2 -2
  982. package/dist/probe/canonicalize.js.map +1 -1
  983. package/dist/probe/css.js +1 -1
  984. package/dist/probe/css.js.map +1 -1
  985. package/dist/probe/index.js +1 -1
  986. package/dist/provider.js +17 -7
  987. package/dist/provider.js.map +1 -1
  988. package/dist/providers/TrackingProvider.js +33 -9
  989. package/dist/providers/TrackingProvider.js.map +1 -1
  990. package/dist/providers/navigationAdapter.default.js +1 -1
  991. package/dist/providers/navigationAdapter.default.js.map +1 -1
  992. package/dist/tokens/all-tokens.js +1 -1
  993. package/dist/tokens/all-tokens.js.map +1 -1
  994. package/dist/tokens/base.js +2 -2
  995. package/dist/tokens/base.js.map +1 -1
  996. package/dist/tokens/color-seed.js +1 -1
  997. package/dist/tokens/color-seed.js.map +1 -1
  998. package/dist/tokens/color-theme.js +18 -3
  999. package/dist/tokens/color-theme.js.map +1 -1
  1000. package/dist/tokens/colors.js +1 -1
  1001. package/dist/tokens/colors.js.map +1 -1
  1002. package/dist/tokens/layout.js +1 -1
  1003. package/dist/tokens/layout.js.map +1 -1
  1004. package/dist/tokens/lazy-styles.js +1 -1
  1005. package/dist/tokens/lazy-styles.js.map +1 -1
  1006. package/dist/tokens/legacy-color.js +1 -1
  1007. package/dist/tokens/legacy-color.js.map +1 -1
  1008. package/dist/tokens/palette-config.js +9 -2
  1009. package/dist/tokens/palette-config.js.map +1 -1
  1010. package/dist/tokens/palette.js +1 -1
  1011. package/dist/tokens/palette.js.map +1 -1
  1012. package/dist/tokens/resolve.js +85 -21
  1013. package/dist/tokens/resolve.js.map +1 -1
  1014. package/dist/tokens/shadows.js +1 -1
  1015. package/dist/tokens/shadows.js.map +1 -1
  1016. package/dist/tokens/sizes.js +1 -1
  1017. package/dist/tokens/sizes.js.map +1 -1
  1018. package/dist/tokens/spacing.js +1 -1
  1019. package/dist/tokens/spacing.js.map +1 -1
  1020. package/dist/tokens/typography.js +1 -1
  1021. package/dist/tokens/typography.js.map +1 -1
  1022. package/dist/utils/ResizeSensor.js +1 -1
  1023. package/dist/utils/ResizeSensor.js.map +1 -1
  1024. package/dist/utils/colors.js +1 -1
  1025. package/dist/utils/colors.js.map +1 -1
  1026. package/dist/utils/dotize.js +1 -1
  1027. package/dist/utils/dotize.js.map +1 -1
  1028. package/dist/utils/is-dev-env.js +1 -1
  1029. package/dist/utils/is-dev-env.js.map +1 -1
  1030. package/dist/utils/modules.js +1 -1
  1031. package/dist/utils/modules.js.map +1 -1
  1032. package/dist/utils/promise.js +1 -1
  1033. package/dist/utils/promise.js.map +1 -1
  1034. package/dist/utils/raf.js +1 -1
  1035. package/dist/utils/raf.js.map +1 -1
  1036. package/dist/utils/random.js +1 -1
  1037. package/dist/utils/random.js.map +1 -1
  1038. package/dist/utils/range.js +1 -1
  1039. package/dist/utils/range.js.map +1 -1
  1040. package/dist/utils/react/RenderCache.js +2 -2
  1041. package/dist/utils/react/RenderCache.js.map +1 -1
  1042. package/dist/utils/react/Slots.js +67 -24
  1043. package/dist/utils/react/Slots.js.map +1 -1
  1044. package/dist/utils/react/chain.js +1 -1
  1045. package/dist/utils/react/chain.js.map +1 -1
  1046. package/dist/utils/react/disabledProps.js +1 -1
  1047. package/dist/utils/react/disabledProps.js.map +1 -1
  1048. package/dist/utils/react/escapePropagation.js +1 -1
  1049. package/dist/utils/react/escapePropagation.js.map +1 -1
  1050. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  1051. package/dist/utils/react/forwardRefWithGenerics.js.map +1 -1
  1052. package/dist/utils/react/index.js +1 -1
  1053. package/dist/utils/react/interactions.js +35 -12
  1054. package/dist/utils/react/interactions.js.map +1 -1
  1055. package/dist/utils/react/isTextOnly.js +1 -1
  1056. package/dist/utils/react/isTextOnly.js.map +1 -1
  1057. package/dist/utils/react/mapProps.js +1 -1
  1058. package/dist/utils/react/mapProps.js.map +1 -1
  1059. package/dist/utils/react/mergeProps.js +1 -1
  1060. package/dist/utils/react/mergeProps.js.map +1 -1
  1061. package/dist/utils/react/nullableValue.js +1 -1
  1062. package/dist/utils/react/nullableValue.js.map +1 -1
  1063. package/dist/utils/react/programmaticFocus.js +1 -1
  1064. package/dist/utils/react/programmaticFocus.js.map +1 -1
  1065. package/dist/utils/react/resolveIcon.js +1 -1
  1066. package/dist/utils/react/resolveIcon.js.map +1 -1
  1067. package/dist/utils/react/sharedStore.js +13 -2
  1068. package/dist/utils/react/sharedStore.js.map +1 -1
  1069. package/dist/utils/react/useBufferedValue.js +5 -5
  1070. package/dist/utils/react/useBufferedValue.js.map +1 -1
  1071. package/dist/utils/react/useCombinedRefs.js +20 -5
  1072. package/dist/utils/react/useCombinedRefs.js.map +1 -1
  1073. package/dist/utils/react/useControlledFocusVisible.js +53 -17
  1074. package/dist/utils/react/useControlledFocusVisible.js.map +1 -1
  1075. package/dist/utils/react/useEventBus.js +43 -18
  1076. package/dist/utils/react/useEventBus.js.map +1 -1
  1077. package/dist/utils/react/useId.js +2 -1
  1078. package/dist/utils/react/useId.js.map +1 -1
  1079. package/dist/utils/react/useIsDarwin.js +29 -16
  1080. package/dist/utils/react/useIsDarwin.js.map +1 -1
  1081. package/dist/utils/react/useKeySymbols.js +23 -9
  1082. package/dist/utils/react/useKeySymbols.js.map +1 -1
  1083. package/dist/utils/react/useLayoutEffect.js +1 -1
  1084. package/dist/utils/react/useLayoutEffect.js.map +1 -1
  1085. package/dist/utils/react/useLocalStorage.js +75 -30
  1086. package/dist/utils/react/useLocalStorage.js.map +1 -1
  1087. package/dist/utils/react/useMergeStyles.js +1 -1
  1088. package/dist/utils/react/useMergeStyles.js.map +1 -1
  1089. package/dist/utils/react/useOverlayEscapeGuard.js +25 -9
  1090. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  1091. package/dist/utils/react/usePopoverSync.js +175 -73
  1092. package/dist/utils/react/usePopoverSync.js.map +1 -1
  1093. package/dist/utils/react/useQaProps.js +1 -1
  1094. package/dist/utils/react/useQaProps.js.map +1 -1
  1095. package/dist/utils/react/useScheme.js +1 -1
  1096. package/dist/utils/react/useScheme.js.map +1 -1
  1097. package/dist/utils/react/useViewportSize.js +43 -19
  1098. package/dist/utils/react/useViewportSize.js.map +1 -1
  1099. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  1100. package/dist/utils/react/wrapNodeIfPlain.js.map +1 -1
  1101. package/dist/utils/selection.js +1 -1
  1102. package/dist/utils/selection.js.map +1 -1
  1103. package/dist/utils/styles.js +1 -1
  1104. package/dist/utils/styles.js.map +1 -1
  1105. package/dist/utils/tree.js +1 -1
  1106. package/dist/utils/tree.js.map +1 -1
  1107. package/dist/utils/warnings.js +1 -1
  1108. package/dist/utils/warnings.js.map +1 -1
  1109. package/dist/version.js +2 -2
  1110. package/dist/version.js.map +1 -1
  1111. package/docs/Usage.md +9 -1
  1112. package/docs/components/actions/Button.md +1 -1
  1113. package/docs/components/content/InlineInput.md +1 -1
  1114. package/docs/components/content/Item.md +19 -0
  1115. package/docs/components/fields/ColorInput.md +13 -8
  1116. package/docs/components/fields/ColorPicker.md +13 -8
  1117. package/docs/components/fields/ComboBox.md +16 -12
  1118. package/docs/components/fields/CommandTextArea.md +3 -1
  1119. package/docs/components/fields/FilterListBox.md +24 -19
  1120. package/docs/components/fields/FilterPicker.md +25 -19
  1121. package/docs/components/fields/ListBox.md +36 -26
  1122. package/docs/components/fields/Picker.md +28 -21
  1123. package/docs/components/fields/Select.md +17 -12
  1124. package/docs/components/form/Field.md +2 -2
  1125. package/docs/components/form/Form.md +60 -579
  1126. package/docs/components/form/ModernForm.md +22 -1
  1127. package/docs/components/overlays/Dialog.md +26 -0
  1128. package/docs/components/overlays/DialogForm.md +121 -263
  1129. package/docs/components/overlays/DialogTrigger.md +1 -1
  1130. package/docs/components/overlays/UseDialogContainer.md +11 -13
  1131. package/docs/modern-form-guide.md +22 -1
  1132. package/docs/modern-form-migration.md +1 -1
  1133. package/package.json +7 -2
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.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.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.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.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.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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"}
@@ -1,8 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useProviderProps } from "../../provider.js";
4
4
  import { useI18n } from "../../i18n/useI18n.js";
5
5
  import { getValidationMods } from "./validation/resolve-validation-props.js";
6
+ import { c } from "react-compiler-runtime";
6
7
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
7
8
  import { forwardRef } from "react";
8
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -57,23 +58,60 @@ const NecessityLabelElement = tasty({
57
58
  * `isRequired` or `isOptional`.
58
59
  */
59
60
  function NecessityIndicatorMark(props) {
60
- const { isRequired, isOptional, necessityIndicator = "icon", includeNecessityIndicatorInAccessibilityName = false } = props;
61
+ const $ = c(11);
62
+ const { isRequired, isOptional, necessityIndicator: t0, includeNecessityIndicatorInAccessibilityName: t1 } = props;
63
+ const necessityIndicator = t0 === void 0 ? "icon" : t0;
64
+ const includeNecessityIndicatorInAccessibilityName = t1 === void 0 ? false : t1;
61
65
  const { t } = useI18n();
62
- const requiredLabel = t("form.required", "(required)");
63
- const separator = " ​";
66
+ let t2;
67
+ if ($[0] !== t) {
68
+ t2 = t("form.required", "(required)");
69
+ $[0] = t;
70
+ $[1] = t2;
71
+ } else t2 = $[1];
72
+ const requiredLabel = t2;
64
73
  if (necessityIndicator !== "icon" && necessityIndicator !== "label") return null;
65
74
  if (isRequired) {
66
- if (necessityIndicator === "icon") return /* @__PURE__ */ jsxs(Fragment$1, { children: [separator, /* @__PURE__ */ jsx("span", {
67
- "aria-label": includeNecessityIndicatorInAccessibilityName ? requiredLabel : void 0,
68
- children: REQUIRED_ICON
69
- })] });
70
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [separator, /* @__PURE__ */ jsx(NecessityLabelElement, {
71
- "aria-hidden": !includeNecessityIndicatorInAccessibilityName ? true : void 0,
72
- children: requiredLabel
73
- })] });
75
+ if (necessityIndicator === "icon") {
76
+ const t3 = includeNecessityIndicatorInAccessibilityName ? requiredLabel : void 0;
77
+ let t4;
78
+ if ($[2] !== t3) {
79
+ t4 = /* @__PURE__ */ jsxs(Fragment$1, { children: [" ​", /* @__PURE__ */ jsx("span", {
80
+ "aria-label": t3,
81
+ children: REQUIRED_ICON
82
+ })] });
83
+ $[2] = t3;
84
+ $[3] = t4;
85
+ } else t4 = $[3];
86
+ return t4;
87
+ }
88
+ const t3 = !includeNecessityIndicatorInAccessibilityName ? true : void 0;
89
+ let t4;
90
+ if ($[4] !== requiredLabel || $[5] !== t3) {
91
+ t4 = /* @__PURE__ */ jsxs(Fragment$1, { children: [" ​", /* @__PURE__ */ jsx(NecessityLabelElement, {
92
+ "aria-hidden": t3,
93
+ children: requiredLabel
94
+ })] });
95
+ $[4] = requiredLabel;
96
+ $[5] = t3;
97
+ $[6] = t4;
98
+ } else t4 = $[6];
99
+ return t4;
74
100
  }
75
101
  if (!isOptional) return null;
76
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [separator, /* @__PURE__ */ jsx(NecessityLabelElement, { children: t("form.optional", "(optional)") })] });
102
+ let t3;
103
+ if ($[7] !== t) {
104
+ t3 = t("form.optional", "(optional)");
105
+ $[7] = t;
106
+ $[8] = t3;
107
+ } else t3 = $[8];
108
+ let t4;
109
+ if ($[9] !== t3) {
110
+ t4 = /* @__PURE__ */ jsxs(Fragment$1, { children: [" ​", /* @__PURE__ */ jsx(NecessityLabelElement, { children: t3 })] });
111
+ $[9] = t3;
112
+ $[10] = t4;
113
+ } else t4 = $[10];
114
+ return t4;
77
115
  }
78
116
  const INLINE_LABEL_STYLES = {
79
117
  preset: "t3",
@@ -104,33 +142,85 @@ const LabelElement = tasty({
104
142
  styles: LABEL_STYLES
105
143
  });
106
144
  function Label(props, ref) {
145
+ const $ = c(24);
107
146
  props = useProviderProps(props);
108
- const { t } = useI18n();
109
- let { as, qa, children, labelPosition = "top", isRequired, isOptional, necessityIndicator, includeNecessityIndicatorInAccessibilityName = false, htmlFor, isDisabled, isInvalid, isValid, size = "medium", for: labelFor, ...otherProps } = props;
110
- let domRef = useObjectRef(ref);
147
+ useI18n();
148
+ const { as, qa, children, labelPosition: t0, isRequired, isOptional, necessityIndicator, includeNecessityIndicatorInAccessibilityName: t1, htmlFor, isDisabled, isInvalid, isValid, size: t2, for: labelFor, ...otherProps } = props;
149
+ const labelPosition = t0 === void 0 ? "top" : t0;
150
+ const includeNecessityIndicatorInAccessibilityName = t1 === void 0 ? false : t1;
151
+ const size = t2 === void 0 ? "medium" : t2;
152
+ const domRef = useObjectRef(ref);
111
153
  const styles = extractStyles(otherProps, CONTAINER_STYLES);
112
- const mark = /* @__PURE__ */ jsx(NecessityIndicatorMark, {
113
- isRequired,
114
- isOptional,
115
- necessityIndicator,
116
- includeNecessityIndicatorInAccessibilityName
117
- });
118
- return /* @__PURE__ */ jsx(LabelElement, {
119
- ...filterBaseProps(otherProps),
120
- ref: domRef,
121
- styles,
122
- htmlFor: labelFor || htmlFor,
123
- "data-size": size,
124
- mods: {
125
- side: labelPosition === "side",
154
+ let t3;
155
+ if ($[0] !== includeNecessityIndicatorInAccessibilityName || $[1] !== isOptional || $[2] !== isRequired || $[3] !== necessityIndicator) {
156
+ t3 = /* @__PURE__ */ jsx(NecessityIndicatorMark, {
157
+ isRequired,
158
+ isOptional,
159
+ necessityIndicator,
160
+ includeNecessityIndicatorInAccessibilityName
161
+ });
162
+ $[0] = includeNecessityIndicatorInAccessibilityName;
163
+ $[1] = isOptional;
164
+ $[2] = isRequired;
165
+ $[3] = necessityIndicator;
166
+ $[4] = t3;
167
+ } else t3 = $[4];
168
+ const mark = t3;
169
+ const T0 = LabelElement;
170
+ const t4 = filterBaseProps(otherProps);
171
+ const t5 = labelFor || htmlFor;
172
+ const t6 = labelPosition === "side";
173
+ let t7;
174
+ if ($[5] !== isInvalid || $[6] !== isValid) {
175
+ t7 = getValidationMods({
176
+ isInvalid,
177
+ isValid
178
+ });
179
+ $[5] = isInvalid;
180
+ $[6] = isValid;
181
+ $[7] = t7;
182
+ } else t7 = $[7];
183
+ let t8;
184
+ if ($[8] !== isDisabled || $[9] !== t6 || $[10] !== t7) {
185
+ t8 = {
186
+ side: t6,
126
187
  disabled: isDisabled,
127
- ...getValidationMods({
128
- isInvalid,
129
- isValid
130
- })
131
- },
132
- children: typeof children !== "string" ? children : /* @__PURE__ */ jsxs(Fragment$1, { children: [children, mark] })
133
- });
188
+ ...t7
189
+ };
190
+ $[8] = isDisabled;
191
+ $[9] = t6;
192
+ $[10] = t7;
193
+ $[11] = t8;
194
+ } else t8 = $[11];
195
+ let t9;
196
+ if ($[12] !== children || $[13] !== mark) {
197
+ t9 = typeof children !== "string" ? children : /* @__PURE__ */ jsxs(Fragment$1, { children: [children, mark] });
198
+ $[12] = children;
199
+ $[13] = mark;
200
+ $[14] = t9;
201
+ } else t9 = $[14];
202
+ let t10;
203
+ if ($[15] !== T0 || $[16] !== domRef || $[17] !== size || $[18] !== styles || $[19] !== t4 || $[20] !== t5 || $[21] !== t8 || $[22] !== t9) {
204
+ t10 = /* @__PURE__ */ jsx(T0, {
205
+ ...t4,
206
+ ref: domRef,
207
+ styles,
208
+ htmlFor: t5,
209
+ "data-size": size,
210
+ mods: t8,
211
+ children: t9
212
+ });
213
+ $[15] = T0;
214
+ $[16] = domRef;
215
+ $[17] = size;
216
+ $[18] = styles;
217
+ $[19] = t4;
218
+ $[20] = t5;
219
+ $[21] = t8;
220
+ $[22] = t9;
221
+ $[23] = t10;
222
+ } else t10 = $[23];
223
+ return t10;
134
224
  }
135
225
  let _Label = forwardRef(Label);
136
226
  _Label.displayName = "Label";
@@ -1 +1 @@
1
- {"version":3,"file":"Label.js","names":[],"sources":["../../../src/components/form/Label.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useI18n } from '../../i18n';\nimport { useProviderProps } from '../../provider';\nimport {\n LabelPosition,\n NecessityIndicator,\n ValidationProps,\n} from '../../shared/index';\nimport { extractStyles } from '../../utils/styles';\n\nimport { getValidationMods } from './validation/index';\n\nconst REQUIRED_ICON = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 125\"\n style={{\n // @ts-ignore\n enableBackground: 'new 0 0 100 100',\n width: '.8em',\n height: '.8em',\n transform: 'rotate(-5deg)',\n }}\n >\n <switch>\n <g>\n <polygon\n fill=\"currentColor\"\n points=\"97.5,47.5 90.5,26.1 61.3,35.6 61.3,4.8 38.7,4.8 38.7,35.6 9.5,26.1 2.5,47.5 31.8,57 13.7,82 31.9,95.2 50,70.3 68.1,95.2 86.3,82 68.2,57\"\n />\n </g>\n </switch>\n </svg>\n);\n\n/**\n * The `(required)` / `(optional)` note. Deliberately quieter than the label it\n * follows: it is an aside about the field, not part of its name.\n *\n * `t4` / `#dark-03` is the same tier `FieldWrapper` already gives `description`\n * and `message`, so the note joins the established secondary text rather than\n * inventing a size of its own. The weight is dropped back to 400 — `t4` carries\n * 500, the same weight as the label — because that contrast is what makes the\n * note read as an aside at a glance.\n */\nconst NecessityLabelElement = tasty({\n as: 'span',\n qa: 'NecessityLabel',\n styles: {\n preset: 't4',\n color: '#dark-03',\n fontWeight: 400,\n },\n});\n\nexport interface CubeNecessityIndicatorProps {\n /**\n * `'icon'` renders the asterisk, `'label'` the `(required)` / `(optional)`\n * text. Defaults to `'icon'`, which has no optional form and so only ever\n * marks a required field. `null` suppresses the indicator entirely.\n */\n necessityIndicator?: NecessityIndicator | null;\n /**\n * Marks the label as required. Only an `isRequired` authored on the input,\n * the label or the `Form` reaches this — a `required` validation rule drives\n * validation and `aria-required` without decorating the label.\n */\n isRequired?: boolean;\n /**\n * Marks the label as optional. Purely presentational, and ignored when the\n * field is required.\n */\n isOptional?: boolean;\n /**\n * Whether the indicator contributes to the field's accessible name. Off by\n * default because a required field already announces `aria-required`, and\n * repeating it in the name is noise.\n */\n includeNecessityIndicatorInAccessibilityName?: boolean;\n}\n\n/**\n * The `*` or `(required)` / `(optional)` marker that follows a field label.\n *\n * Its own component because two places render it and both need the same\n * strings: `Label` when it is given plain text, and `FieldWrapper`, which\n * builds a element tree around the label and therefore has to place the marker\n * beside the label text itself rather than after the whole tree.\n *\n * Both marks are opt-in: nothing renders unless the call site passed\n * `isRequired` or `isOptional`.\n */\nexport function NecessityIndicatorMark(props: CubeNecessityIndicatorProps) {\n const {\n isRequired,\n isOptional,\n necessityIndicator = 'icon',\n includeNecessityIndicatorInAccessibilityName = false,\n } = props;\n const { t } = useI18n();\n\n const requiredLabel = t('form.required', '(required)');\n\n // A plain space would collapse against the label text in a flex container,\n // and the zero-width space keeps the pair from being split across lines.\n const separator = ' ​';\n\n // Anything that is not one of the two shapes means \"no indicator\" — `null`,\n // and also any stray falsy value a caller might still be passing.\n if (necessityIndicator !== 'icon' && necessityIndicator !== 'label') {\n return null;\n }\n\n if (isRequired) {\n if (necessityIndicator === 'icon') {\n return (\n <>\n {separator}\n <span\n aria-label={\n includeNecessityIndicatorInAccessibilityName\n ? requiredLabel\n : undefined\n }\n >\n {REQUIRED_ICON}\n </span>\n </>\n );\n }\n\n // Hidden from screen readers by default, because `aria-required` on the\n // input already announces it and repeating it in the name is noise.\n return (\n <>\n {separator}\n <NecessityLabelElement\n aria-hidden={\n !includeNecessityIndicatorInAccessibilityName ? true : undefined\n }\n >\n {requiredLabel}\n </NecessityLabelElement>\n </>\n );\n }\n\n // There is no icon form of \"optional\", so the note is rendered whichever\n // indicator was asked for. Nothing else tells a screen reader the field is\n // optional, so this one stays in the accessible name.\n if (!isOptional) return null;\n\n return (\n <>\n {separator}\n <NecessityLabelElement>\n {t('form.optional', '(optional)')}\n </NecessityLabelElement>\n </>\n );\n}\n\nexport const INLINE_LABEL_STYLES: Styles = {\n preset: 't3',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n },\n} as const;\n\nexport const LABEL_STYLES: Styles = {\n display: 'block',\n preset: {\n '': 't3m',\n 'size=small': 't4',\n },\n color: {\n '': '#dark',\n invalid: '#danger-text',\n },\n width: {\n '': 'initial',\n side: '($label-width, initial)',\n split: 'initial',\n },\n};\n\nconst LabelElement = tasty({\n as: 'label',\n qa: 'Label',\n styles: LABEL_STYLES,\n});\n\nexport interface CubeLabelProps\n extends BaseProps,\n ContainerStyleProps,\n ValidationProps {\n labelPosition?: LabelPosition;\n necessityIndicator?: NecessityIndicator | null;\n isRequired?: boolean;\n isOptional?: boolean;\n includeNecessityIndicatorInAccessibilityName?: boolean;\n htmlFor?: string;\n for?: string;\n size?: 'medium' | 'small';\n}\n\nfunction Label(props: CubeLabelProps, ref) {\n props = useProviderProps<CubeLabelProps>(props);\n\n const { t } = useI18n();\n\n let {\n as,\n qa,\n children,\n labelPosition = 'top',\n isRequired,\n isOptional,\n necessityIndicator,\n includeNecessityIndicatorInAccessibilityName = false,\n htmlFor,\n isDisabled,\n isInvalid,\n isValid,\n size = 'medium',\n for: labelFor,\n ...otherProps\n } = props;\n\n let domRef = useObjectRef(ref);\n\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n const mark = (\n <NecessityIndicatorMark\n isRequired={isRequired}\n isOptional={isOptional}\n necessityIndicator={necessityIndicator}\n includeNecessityIndicatorInAccessibilityName={\n includeNecessityIndicatorInAccessibilityName\n }\n />\n );\n\n return (\n <LabelElement\n {...filterBaseProps(otherProps)}\n ref={domRef}\n styles={styles}\n htmlFor={labelFor || htmlFor}\n data-size={size}\n mods={{\n side: labelPosition === 'side',\n disabled: isDisabled,\n ...getValidationMods({ isInvalid, isValid }),\n }}\n >\n {/*\n A non-string child is a tree the caller laid out \\u2014 `FieldWrapper`'s\n full-width `Flex`, for one \\u2014 and appending the marker after it would put\n it at the far end of that layout rather than next to the label text. So\n the marker is only appended here for plain-text labels; callers that\n build their own tree place `NecessityIndicatorMark` where it belongs.\n */}\n {typeof children !== 'string' ? (\n children\n ) : (\n <>\n {children}\n {mark}\n </>\n )}\n </LabelElement>\n );\n}\n\nlet _Label = forwardRef(Label);\n\n_Label.displayName = 'Label';\n\nexport { _Label as Label };\n"],"mappings":";;;;;;;;;;;AAsBA,MAAM,gBACJ,oBAAC;CACC,OAAM;CACN,SAAQ;CACR,GAAE;CACF,GAAE;CACF,SAAQ;CACR,OAAO;EAEL,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,WAAW;EACZ;WAED,oBAAC,sBACC,oBAAC,iBACC,oBAAC;EACC,MAAK;EACL,QAAO;GACP,GACA,GACG;EACL;;;;;;;;;;;AAaR,MAAM,wBAAwB,MAAM;CAClC,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,QAAQ;EACR,OAAO;EACP,YAAY;EACb;CACF,CAAC;;;;;;;;;;;;AAuCF,SAAgB,uBAAuB,OAAoC;CACzE,MAAM,EACJ,YACA,YACA,qBAAqB,QACrB,+CAA+C,UAC7C;CACJ,MAAM,EAAE,MAAM,SAAS;CAEvB,MAAM,gBAAgB,EAAE,iBAAiB,aAAa;CAItD,MAAM,YAAY;AAIlB,KAAI,uBAAuB,UAAU,uBAAuB,QAC1D,QAAO;AAGT,KAAI,YAAY;AACd,MAAI,uBAAuB,OACzB,QACE,8CACG,WACD,oBAAC;GACC,cACE,+CACI,gBACA;aAGL;IACI,IACN;AAMP,SACE,8CACG,WACD,oBAAC;GACC,eACE,CAAC,+CAA+C,OAAO;aAGxD;IACqB,IACvB;;AAOP,KAAI,CAAC,WAAY,QAAO;AAExB,QACE,8CACG,WACD,oBAAC,mCACE,EAAE,iBAAiB,aAAa,GACX,IACvB;;AAIP,MAAa,sBAA8B;CACzC,QAAQ;CACR,OAAO;EACL,IAAI;EACJ,SAAS;EACV;CACF;AAED,MAAa,eAAuB;CAClC,SAAS;CACT,QAAQ;EACN,IAAI;EACJ,cAAc;EACf;CACD,OAAO;EACL,IAAI;EACJ,SAAS;EACV;CACD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,OAAO;EACR;CACF;AAED,MAAM,eAAe,MAAM;CACzB,IAAI;CACJ,IAAI;CACJ,QAAQ;CACT,CAAC;AAgBF,SAAS,MAAM,OAAuB,KAAK;AACzC,SAAQ,iBAAiC,MAAM;CAE/C,MAAM,EAAE,MAAM,SAAS;CAEvB,IAAI,EACF,IACA,IACA,UACA,gBAAgB,OAChB,YACA,YACA,oBACA,+CAA+C,OAC/C,SACA,YACA,WACA,SACA,OAAO,UACP,KAAK,UACL,GAAG,eACD;CAEJ,IAAI,SAAS,aAAa,IAAI;CAE9B,MAAM,SAAS,cAAc,YAAY,iBAAiB;CAE1D,MAAM,OACJ,oBAAC;EACa;EACA;EACQ;EAElB;GAEF;AAGJ,QACE,oBAAC;EACC,GAAI,gBAAgB,WAAW;EAC/B,KAAK;EACG;EACR,SAAS,YAAY;EACrB,aAAW;EACX,MAAM;GACJ,MAAM,kBAAkB;GACxB,UAAU;GACV,GAAG,kBAAkB;IAAE;IAAW;IAAS,CAAC;GAC7C;YASA,OAAO,aAAa,WACnB,WAEA,8CACG,UACA,QACA;GAEQ;;AAInB,IAAI,SAAS,WAAW,MAAM;AAE9B,OAAO,cAAc"}
1
+ {"version":3,"file":"Label.js","names":["useObjectRef","BaseProps","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","tasty","forwardRef","useI18n","useProviderProps","LabelPosition","NecessityIndicator","ValidationProps","extractStyles","getValidationMods","REQUIRED_ICON","enableBackground","width","height","transform","NecessityLabelElement","as","qa","styles","preset","color","fontWeight","CubeNecessityIndicatorProps","necessityIndicator","isRequired","isOptional","includeNecessityIndicatorInAccessibilityName","NecessityIndicatorMark","props","$","_c","t0","t1","undefined","t","t2","requiredLabel","t3","t4","separator","INLINE_LABEL_STYLES","invalid","const","LABEL_STYLES","display","side","split","LabelElement","CubeLabelProps","labelPosition","htmlFor","for","size","Label","ref","children","isDisabled","isInvalid","isValid","labelFor","otherProps","domRef","mark","T0","t5","t6","t7","t8","disabled","t9","t10","_Label","displayName"],"sources":["../../../src/components/form/Label.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useI18n } from '../../i18n';\nimport { useProviderProps } from '../../provider';\nimport {\n LabelPosition,\n NecessityIndicator,\n ValidationProps,\n} from '../../shared/index';\nimport { extractStyles } from '../../utils/styles';\n\nimport { getValidationMods } from './validation/index';\n\nconst REQUIRED_ICON = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 125\"\n style={{\n // @ts-ignore\n enableBackground: 'new 0 0 100 100',\n width: '.8em',\n height: '.8em',\n transform: 'rotate(-5deg)',\n }}\n >\n <switch>\n <g>\n <polygon\n fill=\"currentColor\"\n points=\"97.5,47.5 90.5,26.1 61.3,35.6 61.3,4.8 38.7,4.8 38.7,35.6 9.5,26.1 2.5,47.5 31.8,57 13.7,82 31.9,95.2 50,70.3 68.1,95.2 86.3,82 68.2,57\"\n />\n </g>\n </switch>\n </svg>\n);\n\n/**\n * The `(required)` / `(optional)` note. Deliberately quieter than the label it\n * follows: it is an aside about the field, not part of its name.\n *\n * `t4` / `#dark-03` is the same tier `FieldWrapper` already gives `description`\n * and `message`, so the note joins the established secondary text rather than\n * inventing a size of its own. The weight is dropped back to 400 — `t4` carries\n * 500, the same weight as the label — because that contrast is what makes the\n * note read as an aside at a glance.\n */\nconst NecessityLabelElement = tasty({\n as: 'span',\n qa: 'NecessityLabel',\n styles: {\n preset: 't4',\n color: '#dark-03',\n fontWeight: 400,\n },\n});\n\nexport interface CubeNecessityIndicatorProps {\n /**\n * `'icon'` renders the asterisk, `'label'` the `(required)` / `(optional)`\n * text. Defaults to `'icon'`, which has no optional form and so only ever\n * marks a required field. `null` suppresses the indicator entirely.\n */\n necessityIndicator?: NecessityIndicator | null;\n /**\n * Marks the label as required. Only an `isRequired` authored on the input,\n * the label or the `Form` reaches this — a `required` validation rule drives\n * validation and `aria-required` without decorating the label.\n */\n isRequired?: boolean;\n /**\n * Marks the label as optional. Purely presentational, and ignored when the\n * field is required.\n */\n isOptional?: boolean;\n /**\n * Whether the indicator contributes to the field's accessible name. Off by\n * default because a required field already announces `aria-required`, and\n * repeating it in the name is noise.\n */\n includeNecessityIndicatorInAccessibilityName?: boolean;\n}\n\n/**\n * The `*` or `(required)` / `(optional)` marker that follows a field label.\n *\n * Its own component because two places render it and both need the same\n * strings: `Label` when it is given plain text, and `FieldWrapper`, which\n * builds a element tree around the label and therefore has to place the marker\n * beside the label text itself rather than after the whole tree.\n *\n * Both marks are opt-in: nothing renders unless the call site passed\n * `isRequired` or `isOptional`.\n */\nexport function NecessityIndicatorMark(props: CubeNecessityIndicatorProps) {\n const {\n isRequired,\n isOptional,\n necessityIndicator = 'icon',\n includeNecessityIndicatorInAccessibilityName = false,\n } = props;\n const { t } = useI18n();\n\n const requiredLabel = t('form.required', '(required)');\n\n // A plain space would collapse against the label text in a flex container,\n // and the zero-width space keeps the pair from being split across lines.\n const separator = ' ​';\n\n // Anything that is not one of the two shapes means \"no indicator\" — `null`,\n // and also any stray falsy value a caller might still be passing.\n if (necessityIndicator !== 'icon' && necessityIndicator !== 'label') {\n return null;\n }\n\n if (isRequired) {\n if (necessityIndicator === 'icon') {\n return (\n <>\n {separator}\n <span\n aria-label={\n includeNecessityIndicatorInAccessibilityName\n ? requiredLabel\n : undefined\n }\n >\n {REQUIRED_ICON}\n </span>\n </>\n );\n }\n\n // Hidden from screen readers by default, because `aria-required` on the\n // input already announces it and repeating it in the name is noise.\n return (\n <>\n {separator}\n <NecessityLabelElement\n aria-hidden={\n !includeNecessityIndicatorInAccessibilityName ? true : undefined\n }\n >\n {requiredLabel}\n </NecessityLabelElement>\n </>\n );\n }\n\n // There is no icon form of \"optional\", so the note is rendered whichever\n // indicator was asked for. Nothing else tells a screen reader the field is\n // optional, so this one stays in the accessible name.\n if (!isOptional) return null;\n\n return (\n <>\n {separator}\n <NecessityLabelElement>\n {t('form.optional', '(optional)')}\n </NecessityLabelElement>\n </>\n );\n}\n\nexport const INLINE_LABEL_STYLES: Styles = {\n preset: 't3',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n },\n} as const;\n\nexport const LABEL_STYLES: Styles = {\n display: 'block',\n preset: {\n '': 't3m',\n 'size=small': 't4',\n },\n color: {\n '': '#dark',\n invalid: '#danger-text',\n },\n width: {\n '': 'initial',\n side: '($label-width, initial)',\n split: 'initial',\n },\n};\n\nconst LabelElement = tasty({\n as: 'label',\n qa: 'Label',\n styles: LABEL_STYLES,\n});\n\nexport interface CubeLabelProps\n extends BaseProps,\n ContainerStyleProps,\n ValidationProps {\n labelPosition?: LabelPosition;\n necessityIndicator?: NecessityIndicator | null;\n isRequired?: boolean;\n isOptional?: boolean;\n includeNecessityIndicatorInAccessibilityName?: boolean;\n htmlFor?: string;\n for?: string;\n size?: 'medium' | 'small';\n}\n\nfunction Label(props: CubeLabelProps, ref) {\n props = useProviderProps<CubeLabelProps>(props);\n\n const { t } = useI18n();\n\n let {\n as,\n qa,\n children,\n labelPosition = 'top',\n isRequired,\n isOptional,\n necessityIndicator,\n includeNecessityIndicatorInAccessibilityName = false,\n htmlFor,\n isDisabled,\n isInvalid,\n isValid,\n size = 'medium',\n for: labelFor,\n ...otherProps\n } = props;\n\n let domRef = useObjectRef(ref);\n\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n const mark = (\n <NecessityIndicatorMark\n isRequired={isRequired}\n isOptional={isOptional}\n necessityIndicator={necessityIndicator}\n includeNecessityIndicatorInAccessibilityName={\n includeNecessityIndicatorInAccessibilityName\n }\n />\n );\n\n return (\n <LabelElement\n {...filterBaseProps(otherProps)}\n ref={domRef}\n styles={styles}\n htmlFor={labelFor || htmlFor}\n data-size={size}\n mods={{\n side: labelPosition === 'side',\n disabled: isDisabled,\n ...getValidationMods({ isInvalid, isValid }),\n }}\n >\n {/*\n A non-string child is a tree the caller laid out \\u2014 `FieldWrapper`'s\n full-width `Flex`, for one \\u2014 and appending the marker after it would put\n it at the far end of that layout rather than next to the label text. So\n the marker is only appended here for plain-text labels; callers that\n build their own tree place `NecessityIndicatorMark` where it belongs.\n */}\n {typeof children !== 'string' ? (\n children\n ) : (\n <>\n {children}\n {mark}\n </>\n )}\n </LabelElement>\n );\n}\n\nlet _Label = forwardRef(Label);\n\n_Label.displayName = 'Label';\n\nexport { _Label as Label };\n"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
2
2
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
3
3
  import { hasValidationState } from "./resolve-validation-props.js";
4
4
  import { InvalidIcon } from "../../shared/InvalidIcon.js";
5
5
  import { ValidIcon } from "../../shared/ValidIcon.js";
6
+ import { c } from "react-compiler-runtime";
6
7
  import { jsx } from "react/jsx-runtime";
7
8
 
8
9
  //#region src/components/form/validation/ValidationIndicator.tsx
@@ -24,12 +25,26 @@ function hasValidationIndicator(props) {
24
25
  * loading indicator.
25
26
  */
26
27
  function ValidationIndicator(props) {
28
+ const $ = c(5);
27
29
  const { isLoading } = props;
28
30
  if (!hasValidationIndicator(props)) return null;
29
- return /* @__PURE__ */ jsx("div", {
30
- "data-element": "State",
31
- children: isLoading ? /* @__PURE__ */ jsx(LoadingIcon, { "data-element": "InputIcon" }) : getValidationIcon(props)
32
- });
31
+ let t0;
32
+ if ($[0] !== isLoading || $[1] !== props) {
33
+ t0 = isLoading ? /* @__PURE__ */ jsx(LoadingIcon, { "data-element": "InputIcon" }) : getValidationIcon(props);
34
+ $[0] = isLoading;
35
+ $[1] = props;
36
+ $[2] = t0;
37
+ } else t0 = $[2];
38
+ let t1;
39
+ if ($[3] !== t0) {
40
+ t1 = /* @__PURE__ */ jsx("div", {
41
+ "data-element": "State",
42
+ children: t0
43
+ });
44
+ $[3] = t0;
45
+ $[4] = t1;
46
+ } else t1 = $[4];
47
+ return t1;
33
48
  }
34
49
 
35
50
  //#endregion