@cube-dev/ui-kit 0.0.0-canary-ea47ac9 → 0.0.0-canary-9fd458b

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 (557) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.js +1 -1
  11. package/dist/components/GlobalStyles.js +1 -1
  12. package/dist/components/GridProvider.js +1 -1
  13. package/dist/components/HiddenInput.js +1 -1
  14. package/dist/components/Root.js +1 -1
  15. package/dist/components/actions/Action/Action.js +1 -1
  16. package/dist/components/actions/Banner/Banner.js +1 -1
  17. package/dist/components/actions/Button/Button.js +1 -1
  18. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  19. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  20. package/dist/components/actions/ButtonSplit/context.js +1 -1
  21. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  22. package/dist/components/actions/CommandMenu/styled.js +1 -1
  23. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  24. package/dist/components/actions/ItemActionContext.js +1 -1
  25. package/dist/components/actions/ItemActionsWrapper.js +5 -7
  26. package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  56. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  57. package/dist/components/content/Item/Item.js +1 -1
  58. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  59. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  60. package/dist/components/content/Layout/GridLayout.js +1 -1
  61. package/dist/components/content/Layout/Layout.js +1 -1
  62. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  63. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  64. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  65. package/dist/components/content/Layout/LayoutContent.js +1 -1
  66. package/dist/components/content/Layout/LayoutContext.js +1 -1
  67. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  68. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  69. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  70. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutPane.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  74. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  75. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  76. package/dist/components/content/Layout/index.js +1 -1
  77. package/dist/components/content/Layout/utils.js +1 -1
  78. package/dist/components/content/Paragraph.js +1 -1
  79. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  80. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  81. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  82. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  83. package/dist/components/content/Result/Result.js +1 -1
  84. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  85. package/dist/components/content/Tag/Tag.js +1 -1
  86. package/dist/components/content/Text.js +1 -1
  87. package/dist/components/content/TextItem/TextItem.js +1 -1
  88. package/dist/components/content/Title.js +1 -1
  89. package/dist/components/content/Tree/Tree.js +1 -1
  90. package/dist/components/content/Tree/TreeNode.js +1 -1
  91. package/dist/components/content/Tree/styled.js +1 -1
  92. package/dist/components/content/Tree/tree-index.js +1 -1
  93. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  94. package/dist/components/content/Tree/use-load-data.js +1 -1
  95. package/dist/components/content/highlightText.js +1 -1
  96. package/dist/components/content/use-auto-tooltip.js +1 -1
  97. package/dist/components/data/DataTable/DataTable.js +1 -1
  98. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  99. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  103. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  104. package/dist/components/data/TableBase/RowCollection.js +1 -1
  105. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  106. package/dist/components/data/TableBase/TableRow.js +1 -1
  107. package/dist/components/data/TableBase/TableView.js +1 -1
  108. package/dist/components/data/TableBase/column-menu.js +1 -1
  109. package/dist/components/data/TableBase/column-tint.js +1 -1
  110. package/dist/components/data/TableBase/row-menu.js +1 -1
  111. package/dist/components/data/TableBase/styled.js +1 -1
  112. package/dist/components/data/TableBase/table-tree.js +1 -1
  113. package/dist/components/data/TableBase/types.js +1 -1
  114. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  115. package/dist/components/data/TableBase/use-column-order.js +1 -1
  116. package/dist/components/data/TableBase/use-container-width.js +1 -1
  117. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  118. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  119. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  120. package/dist/components/data/TableBase/use-table-search.js +1 -1
  121. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  122. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  123. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  124. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  125. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  126. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  127. package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
  128. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  129. package/dist/components/fields/Checkbox/context.js +1 -1
  130. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  131. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  132. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  133. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  134. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  135. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  136. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  137. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  138. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  139. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  140. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  141. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  142. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  143. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  145. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  146. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  147. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  148. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  149. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  150. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  151. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  152. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  154. package/dist/components/fields/DatePicker/period.js +1 -1
  155. package/dist/components/fields/DatePicker/props.js +1 -1
  156. package/dist/components/fields/DatePicker/utils.js +1 -1
  157. package/dist/components/fields/FileInput/FileInput.js +1 -1
  158. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  159. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  160. package/dist/components/fields/Input/Input.js +1 -1
  161. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  162. package/dist/components/fields/ListBox/ListBox.js +1 -1
  163. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  164. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  165. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  166. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  167. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  168. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  169. package/dist/components/fields/Picker/Picker.js +1 -1
  170. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  171. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  172. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  173. package/dist/components/fields/RadioGroup/context.js +1 -1
  174. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  175. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  176. package/dist/components/fields/Select/Select.js +1 -1
  177. package/dist/components/fields/Slider/Gradation.js +1 -1
  178. package/dist/components/fields/Slider/HueSlider.js +1 -1
  179. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  180. package/dist/components/fields/Slider/Slider.js +1 -1
  181. package/dist/components/fields/Slider/SliderBase.js +1 -1
  182. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  183. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  184. package/dist/components/fields/Slider/elements.js +1 -1
  185. package/dist/components/fields/Slider/index.js +1 -1
  186. package/dist/components/fields/Switch/Switch.js +1 -1
  187. package/dist/components/fields/TextArea/TextArea.js +1 -1
  188. package/dist/components/fields/TextInput/TextInput.js +1 -1
  189. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  190. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  191. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  192. package/dist/components/fields/TriggerActions.js +1 -1
  193. package/dist/components/fields/color/ColorPanel.js +1 -1
  194. package/dist/components/fields/color/channels.js +1 -1
  195. package/dist/components/fields/color/color.js +1 -1
  196. package/dist/components/fields/color/context.js +1 -1
  197. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  198. package/dist/components/form/Form/Field.js +1 -1
  199. package/dist/components/form/Form/Form.d.ts +12 -1
  200. package/dist/components/form/Form/Form.js +83 -16
  201. package/dist/components/form/Form/Form.js.map +1 -1
  202. package/dist/components/form/Form/ModernFormRoot.js +20 -0
  203. package/dist/components/form/Form/ModernFormRoot.js.map +1 -0
  204. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  205. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  206. package/dist/components/form/Form/SubmitError.js +1 -1
  207. package/dist/components/form/Form/backend.d.ts +9 -0
  208. package/dist/components/form/Form/backend.js +32 -0
  209. package/dist/components/form/Form/backend.js.map +1 -0
  210. package/dist/components/form/Form/index.js +1 -1
  211. package/dist/components/form/Form/use-field/use-field-props.d.ts +12 -1
  212. package/dist/components/form/Form/use-field/use-field-props.js +61 -44
  213. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  214. package/dist/components/form/Form/use-field/use-field.js +2 -2
  215. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  216. package/dist/components/form/Form/use-form.d.ts +4 -1
  217. package/dist/components/form/Form/use-form.js +5 -1
  218. package/dist/components/form/Form/use-form.js.map +1 -1
  219. package/dist/components/form/Form/validation.js +1 -1
  220. package/dist/components/form/Label.js +1 -1
  221. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  222. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  223. package/dist/components/form/validation/use-validation-props.js +1 -1
  224. package/dist/components/form/wrapper.js +1 -1
  225. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  226. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  227. package/dist/components/layout/Board/Board.js +1 -1
  228. package/dist/components/layout/Board/BoardProvider.js +1 -1
  229. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  230. package/dist/components/layout/Board/Widget.js +1 -1
  231. package/dist/components/layout/Board/WidgetHost.js +1 -1
  232. package/dist/components/layout/Board/board-context.js +1 -1
  233. package/dist/components/layout/Board/board-store.js +1 -1
  234. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  235. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  236. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  237. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  238. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  239. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  240. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  241. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  242. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  243. package/dist/components/layout/Board/index.js +1 -1
  244. package/dist/components/layout/Board/responsive-utils.js +1 -1
  245. package/dist/components/layout/Board/use-board-layout.js +1 -1
  246. package/dist/components/layout/Board/use-board-registry.js +1 -1
  247. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  248. package/dist/components/layout/Board/use-board-selection.js +1 -1
  249. package/dist/components/layout/Flex.js +1 -1
  250. package/dist/components/layout/Flow.js +1 -1
  251. package/dist/components/layout/Grid.js +1 -1
  252. package/dist/components/layout/Panel.js +1 -1
  253. package/dist/components/layout/Prefix.js +1 -1
  254. package/dist/components/layout/ResizablePanel.js +1 -1
  255. package/dist/components/layout/Space.js +1 -1
  256. package/dist/components/layout/Suffix.js +1 -1
  257. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  258. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  259. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  260. package/dist/components/navigation/Tabs/TabButton.js +40 -36
  261. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  262. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  263. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  264. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  265. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  266. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  267. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  268. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  269. package/dist/components/navigation/Tabs/styled.js +29 -1
  270. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  271. package/dist/components/navigation/Tabs/types.js +1 -1
  272. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  273. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  274. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  275. package/dist/components/other/Calendar/Calendar.js +1 -1
  276. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  277. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  278. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  279. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  280. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  281. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  282. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  283. package/dist/components/other/Calendar/styled.js +1 -1
  284. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  285. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  286. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  287. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  288. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  289. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  290. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  291. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  292. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  293. package/dist/components/overlays/Dialog/context.js +1 -1
  294. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  295. package/dist/components/overlays/Modal/Modal.js +1 -1
  296. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  297. package/dist/components/overlays/Modal/Overlay.js +1 -1
  298. package/dist/components/overlays/Modal/Popover.js +1 -1
  299. package/dist/components/overlays/Modal/Tray.js +1 -1
  300. package/dist/components/overlays/Modal/Underlay.js +1 -1
  301. package/dist/components/overlays/Notifications/Notification.js +1 -1
  302. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  303. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  304. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  305. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  306. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  307. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  308. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  309. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  310. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  311. package/dist/components/overlays/Notifications/index.js +1 -1
  312. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  313. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  314. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  315. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  316. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  317. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  318. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  319. package/dist/components/overlays/Toast/index.js +1 -1
  320. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  321. package/dist/components/overlays/Toast/useToast.js +1 -1
  322. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  323. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  324. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  325. package/dist/components/overlays/Tooltip/context.js +1 -1
  326. package/dist/components/portal/Portal.js +1 -1
  327. package/dist/components/portal/PortalProvider.js +1 -1
  328. package/dist/components/portal/usePortal.js +1 -1
  329. package/dist/components/shared/DraggableCollection.js +1 -1
  330. package/dist/components/shared/InvalidIcon.js +1 -1
  331. package/dist/components/shared/ValidIcon.js +1 -1
  332. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  333. package/dist/components/status/Spin/Cube.js +1 -1
  334. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  335. package/dist/components/status/Spin/Spin.js +1 -1
  336. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  337. package/dist/data/item-themes.js +1 -1
  338. package/dist/data/themes.js +1 -1
  339. package/dist/eslint-plugin/defaults.generated.js +1 -1
  340. package/dist/eslint-plugin/index.js +1 -1
  341. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  342. package/dist/i18n/I18nProvider.js +1 -1
  343. package/dist/i18n/createFormatter.js +1 -1
  344. package/dist/i18n/index.js +1 -1
  345. package/dist/i18n/instance.js +1 -1
  346. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  347. package/dist/i18n/locales/en-US/uikit.js +1 -1
  348. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  349. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  350. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  351. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  352. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  353. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  354. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  355. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  356. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  357. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  358. package/dist/i18n/locales.js +1 -1
  359. package/dist/i18n/useFormatter.js +1 -1
  360. package/dist/i18n/useI18n.js +1 -1
  361. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  362. package/dist/icons/AdjustmentsIcon.js +1 -1
  363. package/dist/icons/AiIcon.js +1 -1
  364. package/dist/icons/AreaChartIcon.js +1 -1
  365. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  366. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  367. package/dist/icons/BackwardIcon.js +1 -1
  368. package/dist/icons/BarChartIcon.js +1 -1
  369. package/dist/icons/BellFilledIcon.js +1 -1
  370. package/dist/icons/BellIcon.js +1 -1
  371. package/dist/icons/BooleanIcon.js +1 -1
  372. package/dist/icons/CalendarEditIcon.js +1 -1
  373. package/dist/icons/CalendarIcon.js +1 -1
  374. package/dist/icons/CaretDownIcon.js +1 -1
  375. package/dist/icons/CaretUpIcon.js +1 -1
  376. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  377. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  378. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  379. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  380. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  381. package/dist/icons/ChartBarLineIcon.js +1 -1
  382. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  383. package/dist/icons/ChartBarStackedIcon.js +1 -1
  384. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  385. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  386. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  387. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  388. package/dist/icons/ChartBubbleIcon.js +1 -1
  389. package/dist/icons/ChartDonut2Icon.js +1 -1
  390. package/dist/icons/ChartFunnelIcon.js +1 -1
  391. package/dist/icons/ChartHeatmapIcon.js +1 -1
  392. package/dist/icons/ChartKPIIcon.js +1 -1
  393. package/dist/icons/ChartPie2Icon.js +1 -1
  394. package/dist/icons/ChartScatterIcon.js +1 -1
  395. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  396. package/dist/icons/CheckCircleIcon.js +1 -1
  397. package/dist/icons/CheckIcon.js +1 -1
  398. package/dist/icons/CircleFilledIcon.js +1 -1
  399. package/dist/icons/ClearIcon.js +1 -1
  400. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  401. package/dist/icons/CloseCircleIcon.js +1 -1
  402. package/dist/icons/CloseIcon.js +1 -1
  403. package/dist/icons/CodeIcon.js +1 -1
  404. package/dist/icons/ColumnTotalIcon.js +1 -1
  405. package/dist/icons/CopyIcon.js +1 -1
  406. package/dist/icons/CountIcon.js +1 -1
  407. package/dist/icons/CubeIcon.js +1 -1
  408. package/dist/icons/CubePauseIcon.js +1 -1
  409. package/dist/icons/CubePlayIcon.js +1 -1
  410. package/dist/icons/CurrencyDollarIcon.js +1 -1
  411. package/dist/icons/DangerIcon.js +1 -1
  412. package/dist/icons/DashboardIcon.js +1 -1
  413. package/dist/icons/DatabaseIcon.js +1 -1
  414. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  415. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  416. package/dist/icons/DirectionIcon.js +1 -1
  417. package/dist/icons/DonutIcon.js +1 -1
  418. package/dist/icons/DownIcon.js +1 -1
  419. package/dist/icons/EditIcon.js +1 -1
  420. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  421. package/dist/icons/ExclamationCircleIcon.js +1 -1
  422. package/dist/icons/ExclamationIcon.js +1 -1
  423. package/dist/icons/EyeIcon.js +1 -1
  424. package/dist/icons/EyeInvisibleIcon.js +1 -1
  425. package/dist/icons/FilterIcon.js +1 -1
  426. package/dist/icons/FolderFilledIcon.js +1 -1
  427. package/dist/icons/FolderIcon.js +1 -1
  428. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  429. package/dist/icons/FolderOpenIcon.js +1 -1
  430. package/dist/icons/ForwardIcon.js +1 -1
  431. package/dist/icons/GripVerticalIcon.js +1 -1
  432. package/dist/icons/HierarchyIcon.js +1 -1
  433. package/dist/icons/HierarchyOpenIcon.js +1 -1
  434. package/dist/icons/Icon.js +1 -1
  435. package/dist/icons/InfoCircleIcon.js +1 -1
  436. package/dist/icons/InfoIcon.js +1 -1
  437. package/dist/icons/KeyIcon.js +1 -1
  438. package/dist/icons/LeftIcon.js +1 -1
  439. package/dist/icons/LineChartIcon.js +1 -1
  440. package/dist/icons/LoadingIcon.js +1 -1
  441. package/dist/icons/LockFilledIcon.js +1 -1
  442. package/dist/icons/LockIcon.js +1 -1
  443. package/dist/icons/MoreIcon.js +1 -1
  444. package/dist/icons/NotAllowedIcon.js +1 -1
  445. package/dist/icons/Number123Icon.js +1 -1
  446. package/dist/icons/NumberIcon.js +1 -1
  447. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  448. package/dist/icons/PauseCircleIcon.js +1 -1
  449. package/dist/icons/PauseIcon.js +1 -1
  450. package/dist/icons/PercentageIcon.js +1 -1
  451. package/dist/icons/PieChartIcon.js +1 -1
  452. package/dist/icons/PipetteIcon.js +1 -1
  453. package/dist/icons/PlayCircleIcon.js +1 -1
  454. package/dist/icons/PlayIcon.js +1 -1
  455. package/dist/icons/PlusIcon.js +1 -1
  456. package/dist/icons/ProgressBarIcon.js +1 -1
  457. package/dist/icons/ReloadIcon.js +1 -1
  458. package/dist/icons/ReportIcon.js +1 -1
  459. package/dist/icons/ReturnIcon.js +1 -1
  460. package/dist/icons/RightIcon.js +1 -1
  461. package/dist/icons/RowTotalsIcon.js +1 -1
  462. package/dist/icons/SchemeIcon.js +1 -1
  463. package/dist/icons/SearchIcon.js +1 -1
  464. package/dist/icons/SemanticQueryIcon.js +1 -1
  465. package/dist/icons/SettingsIcon.js +1 -1
  466. package/dist/icons/ShieldFilledIcon.js +1 -1
  467. package/dist/icons/ShieldIcon.js +1 -1
  468. package/dist/icons/SlashIcon.js +1 -1
  469. package/dist/icons/SparklesIcon.js +1 -1
  470. package/dist/icons/SqlIcon.js +1 -1
  471. package/dist/icons/StatsIcon.js +1 -1
  472. package/dist/icons/StopIcon.js +1 -1
  473. package/dist/icons/StringIcon.js +1 -1
  474. package/dist/icons/SubtotalsIcon.js +1 -1
  475. package/dist/icons/SwitchIcon.js +1 -1
  476. package/dist/icons/TableIcon.js +1 -1
  477. package/dist/icons/ThumbsDownIcon.js +1 -1
  478. package/dist/icons/ThumbsUpIcon.js +1 -1
  479. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  480. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  481. package/dist/icons/ThunderboltIcon.js +1 -1
  482. package/dist/icons/TimeIcon.js +1 -1
  483. package/dist/icons/TrashIcon.js +1 -1
  484. package/dist/icons/UnlockIcon.js +1 -1
  485. package/dist/icons/UpIcon.js +1 -1
  486. package/dist/icons/UserGroupIcon.js +1 -1
  487. package/dist/icons/UserIcon.js +1 -1
  488. package/dist/icons/UserLockIcon.js +1 -1
  489. package/dist/icons/ViewIcon.js +1 -1
  490. package/dist/icons/WarningFilledIcon.js +1 -1
  491. package/dist/icons/WarningIcon.js +1 -1
  492. package/dist/icons/wrap-icon.js +1 -1
  493. package/dist/index.js +1 -1
  494. package/dist/probe/canonicalize.js +1 -1
  495. package/dist/probe/css.js +1 -1
  496. package/dist/probe/index.js +1 -1
  497. package/dist/provider.js +1 -1
  498. package/dist/providers/TrackingProvider.js +1 -1
  499. package/dist/providers/navigationAdapter.default.js +1 -1
  500. package/dist/tokens/all-tokens.js +1 -1
  501. package/dist/tokens/base.js +1 -1
  502. package/dist/tokens/color-seed.js +1 -1
  503. package/dist/tokens/color-theme.js +1 -1
  504. package/dist/tokens/colors.js +1 -1
  505. package/dist/tokens/layout.js +1 -1
  506. package/dist/tokens/lazy-styles.js +1 -1
  507. package/dist/tokens/legacy-color.js +1 -1
  508. package/dist/tokens/palette-config.js +1 -1
  509. package/dist/tokens/palette.js +1 -1
  510. package/dist/tokens/resolve.js +1 -1
  511. package/dist/tokens/shadows.js +1 -1
  512. package/dist/tokens/sizes.js +1 -1
  513. package/dist/tokens/spacing.js +1 -1
  514. package/dist/tokens/typography.js +1 -1
  515. package/dist/utils/ResizeSensor.js +1 -1
  516. package/dist/utils/colors.js +1 -1
  517. package/dist/utils/dotize.js +1 -1
  518. package/dist/utils/is-dev-env.js +1 -1
  519. package/dist/utils/modules.js +1 -1
  520. package/dist/utils/promise.js +1 -1
  521. package/dist/utils/raf.js +1 -1
  522. package/dist/utils/random.js +1 -1
  523. package/dist/utils/range.js +1 -1
  524. package/dist/utils/react/RenderCache.js +1 -1
  525. package/dist/utils/react/Slots.js +1 -1
  526. package/dist/utils/react/chain.js +1 -1
  527. package/dist/utils/react/disabledProps.js +1 -1
  528. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  529. package/dist/utils/react/index.js +1 -1
  530. package/dist/utils/react/interactions.js +1 -1
  531. package/dist/utils/react/isTextOnly.js +1 -1
  532. package/dist/utils/react/mapProps.js +1 -1
  533. package/dist/utils/react/mergeProps.js +1 -1
  534. package/dist/utils/react/nullableValue.js +1 -1
  535. package/dist/utils/react/resolveIcon.js +1 -1
  536. package/dist/utils/react/sharedStore.js +1 -1
  537. package/dist/utils/react/useBufferedValue.js +1 -1
  538. package/dist/utils/react/useCombinedRefs.js +1 -1
  539. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  540. package/dist/utils/react/useEventBus.js +1 -1
  541. package/dist/utils/react/useId.js +1 -1
  542. package/dist/utils/react/useIsDarwin.js +1 -1
  543. package/dist/utils/react/useKeySymbols.js +1 -1
  544. package/dist/utils/react/useLayoutEffect.js +1 -1
  545. package/dist/utils/react/useLocalStorage.js +1 -1
  546. package/dist/utils/react/useMergeStyles.js +1 -1
  547. package/dist/utils/react/usePopoverSync.js +1 -1
  548. package/dist/utils/react/useQaProps.js +1 -1
  549. package/dist/utils/react/useScheme.js +1 -1
  550. package/dist/utils/react/useViewportSize.js +1 -1
  551. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  552. package/dist/utils/selection.js +1 -1
  553. package/dist/utils/styles.js +1 -1
  554. package/dist/utils/tree.js +1 -1
  555. package/dist/utils/warnings.js +1 -1
  556. package/dist/version.js +2 -2
  557. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
+ import { FORM_BACKEND, isModernFormController, modernBackendUnavailableError } from "./backend.js";
2
3
  import { dotizeConvert } from "../../../utils/dotize.js";
3
4
  import { applyRules } from "./validation.js";
4
5
  import { useRef, useState } from "react";
@@ -18,6 +19,8 @@ function isEqual(v1, v2) {
18
19
  return JSON.stringify(v1) === JSON.stringify(v2);
19
20
  }
20
21
  var CubeFormInstance = class {
22
+ /** Backend brand: the `<Form>` facade and the field hook dispatch on it. */
23
+ [FORM_BACKEND] = "legacy";
21
24
  forceReRender = () => {};
22
25
  defaultValues = {};
23
26
  fields = {};
@@ -318,6 +321,7 @@ var CubeFormInstance = class {
318
321
  };
319
322
  function useForm(form, ref, options = {}) {
320
323
  const { onSubmit, onValuesChange } = options;
324
+ if (isModernFormController(form)) throw modernBackendUnavailableError("Form.useForm()");
321
325
  const formRef = useRef(null);
322
326
  const [, forceUpdate] = useState({});
323
327
  if (!formRef.current) {
@@ -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 { 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> {\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 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":[],"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,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { validate } from "email-validator";
3
3
  import validUrl from "valid-url";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | 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";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | 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";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  //#region src/components/form/validation/resolve-validation-props.ts
3
3
  /**
4
4
  * Normalizes the validation props of a field into a pair of booleans.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { useWarn } from "../../../_internal/hooks/use-warn.js";
3
3
  import { resolveValidationProps } from "./resolve-validation-props.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { mergeProps } from "../../utils/react/mergeProps.js";
3
3
  import { FieldWrapper } from "./FieldWrapper/FieldWrapper.js";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { useCallback, useLayoutEffect, useRef, useState } from "react";
3
3
 
4
4
  //#region src/components/helpers/DisplayTransition/DisplayTransition.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { DisplayTransition } from "../DisplayTransition/DisplayTransition.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { isValidElement, useCallback, useLayoutEffect, useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { BoardDragActiveProvider, BoardRegistryContext } from "./board-context.js";
3
3
  import { useBoardRegistry } from "./use-board-registry.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { getCompactor } from "./grid-core/compactors.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
4
4
  import { useBoardRegistry } from "./board-context.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { isDevEnv } from "../../../utils/is-dev-env.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  //#region src/components/layout/Board/board-store.ts
3
3
  /**
4
4
  * A tiny external store mapping widget id -> registration.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  //#region src/components/layout/Board/grid-core/calculate.ts
3
3
  /** Calculate the width of a single grid column in pixels. */
4
4
  function calcGridColWidth(positionParams) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  //#region src/components/layout/Board/grid-core/collision-modes.ts
3
3
  /** Whether a single grid cell is free of every item in `others`. */
4
4
  function cellFree(others, x, y) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  //#region src/components/layout/Board/grid-core/collision.ts
3
3
  /**
4
4
  * Check if two layout items collide (overlap).
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { collides, getFirstCollision } from "./collision.js";
3
3
  import { sortLayoutItemsByColRow, sortLayoutItemsByRowCol } from "./sort.js";
4
4
  import { bottom, cloneLayout, cloneLayoutItem, getStatics } from "./layout.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  //#region src/components/layout/Board/grid-core/constraints.ts
3
3
  function clamp(value, min, max) {
4
4
  return Math.max(min, Math.min(max, value));
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { collides, getFirstCollision } from "./collision.js";
3
3
  import { sortLayoutItemsByColRow, sortLayoutItemsByRowCol } from "./sort.js";
4
4
  import { bottom, cloneLayout, cloneLayoutItem, getStatics } from "./layout.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { getAllCollisions, getFirstCollision } from "./collision.js";
3
3
  import { sortLayoutItems } from "./sort.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { collides } from "./collision.js";
3
3
 
4
4
  //#region src/components/layout/Board/grid-core/placement.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  //#region src/components/layout/Board/grid-core/sort.ts
3
3
  /**
4
4
  * Sort layout items based on the compaction type.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { BoardDragActiveProvider } from "./board-context.js";
3
3
  import { distributeEvenly, placeInFreeSlot } from "./grid-core/placement.js";
4
4
  import { getCompactor, horizontalCompactor, noCompactor, verticalCompactor } from "./grid-core/compactors.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { cloneLayout, correctBounds } from "./grid-core/layout.js";
3
3
 
4
4
  //#region src/components/layout/Board/responsive-utils.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { cloneLayout } from "./grid-core/layout.js";
4
4
  import { useCallback, useEffect, useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { BoardWidgetStore } from "./board-store.js";
4
4
  import { collides } from "./grid-core/collision.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { useIsDarwin } from "../../../utils/react/useIsDarwin.js";
3
3
 
4
4
  //#region src/components/layout/Board/use-board-select-modifier-key.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { useEffect, useMemo, useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { BASE_STYLES, BLOCK_STYLES, COLOR_STYLES, DIMENSION_STYLES, OUTER_STYLES, tasty } from "@tenphi/tasty";
3
3
  import { forwardRef, useMemo } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useLayoutEffect as useLayoutEffect$1 } from "../../utils/react/useLayoutEffect.js";
4
4
  import { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../utils/react/mergeProps.js";
3
3
  import { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
4
4
  import { CONTAINER_STYLES, filterBaseProps, parseStyle, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useMemo } from "react";
4
4
  import { useControlledState } from "@react-stately/utils";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { DraggableCollection } from "../../shared/DraggableCollection.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,12 +1,12 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ea47ac9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9fd458b | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
+ import { ItemActionProvider } from "../../actions/ItemActionContext.js";
4
5
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
5
6
  import { useI18n } from "../../../i18n/useI18n.js";
6
7
  import { InlineInput } from "../../content/InlineInput/InlineInput.js";
7
8
  import { _MenuTrigger } from "../../actions/Menu/MenuTrigger.js";
8
9
  import { __Menu } from "../../actions/Menu/Menu.js";
9
- import { ItemActionsWrapper } from "../../actions/ItemActionsWrapper.js";
10
10
  import { useContextMenu } from "../../actions/use-context-menu.js";
11
11
  import { useBoardDragActive } from "../../layout/Board/board-context.js";
12
12
  import { CloseIcon } from "../../../icons/CloseIcon.js";
@@ -17,7 +17,7 @@ import { POPOVER_PLACEMENT_BY_TABS_PLACEMENT } from "./popover-placement.js";
17
17
  import { useTabsContext } from "./TabsContext.js";
18
18
  import { TabDropIndicator } from "./TabDropIndicator.js";
19
19
  import { RADIO_SIZE_MAP } from "./types.js";
20
- import { Children, cloneElement, isValidElement, useEffect, useMemo, useRef, useState } from "react";
20
+ import { Children, cloneElement, isValidElement, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
21
21
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
22
22
  import { useDraggableItem, useFocus, useFocusVisible, useHover, useTab } from "react-aria";
23
23
 
@@ -103,8 +103,10 @@ function TabButton({ item, tabData, isLastTab }) {
103
103
  const { state, type, size, placement, autoHideActions: parentAutoHideActions, isEditable: parentIsEditable, menu: parentMenu, menuTriggerProps: parentMenuTriggerProps, menuProps: parentMenuProps, contextMenu: parentContextMenu, onAction: parentOnAction, onDelete, dragState, dropState, editingKey, startEditing, submitEditing, cancelEditing } = useTabsContext();
104
104
  const ref = useRef(null);
105
105
  const containerRef = useRef(null);
106
+ const actionsRef = useRef(null);
106
107
  const inlineInputRef = useRef(null);
107
108
  const { tabProps } = useTab({ key: item.key }, state, ref);
109
+ const [actionsWidth, setActionsWidth] = useState(0);
108
110
  const isDraggable = !!dragState && !!dropState;
109
111
  const mockDragState = useMemo(() => createMockDragState(state.collection, state.selectionManager), [state.collection, state.selectionManager]);
110
112
  const dragResult = useDraggableItem({ key: item.key }, dragState ?? mockDragState);
@@ -274,6 +276,9 @@ function TabButton({ item, tabData, isLastTab }) {
274
276
  menuAction,
275
277
  deleteAction
276
278
  ] }) : void 0;
279
+ useLayoutEffect(() => {
280
+ if (actions && actionsRef.current) setActionsWidth(Math.round(actionsRef.current.offsetWidth));
281
+ }, [actions]);
277
282
  const effectiveSize = tabData.size ?? size ?? "medium";
278
283
  const itemSize = effectiveType === "radio" ? RADIO_SIZE_MAP[effectiveSize === "large" ? "large" : "medium"] : effectiveSize;
279
284
  const itemType = "clear";
@@ -305,6 +310,7 @@ function TabButton({ item, tabData, isLastTab }) {
305
310
  ref: effectiveContainerRef,
306
311
  "data-size": itemSize,
307
312
  mods: containerMods,
313
+ tokens: { "$actions-width": `${actionsWidth}px` },
308
314
  ...effectiveDragProps,
309
315
  children: [
310
316
  isDraggable && dropState && /* @__PURE__ */ jsx(TabDropIndicator, {
@@ -316,42 +322,40 @@ function TabButton({ item, tabData, isLastTab }) {
316
322
  dropState,
317
323
  position: "before"
318
324
  }),
319
- /* @__PURE__ */ jsx(ItemActionsWrapper, {
325
+ /* @__PURE__ */ jsx(TabElement, {
320
326
  preserveActionsSpace: true,
321
- autoHideActions: effectiveAutoHideActions && !isActive,
322
- type: itemType,
323
- theme: "default",
324
- size: itemSize,
325
- isDisabled,
327
+ autoHideActions: effectiveAutoHideActions,
328
+ as: "button",
329
+ ...mergeProps$1(tabProps, hoverProps, focusProps, {
330
+ onKeyDown: handleKeyDown,
331
+ onPointerEnter: handleSpringLoadEnter,
332
+ onPointerLeave: clearSpringLoad
333
+ }),
334
+ ...ariaProps,
335
+ ...itemStyleProps,
336
+ ref,
337
+ qa: qa ?? `Tab-${String(item.key)}`,
338
+ qaVal,
339
+ styles,
326
340
  mods,
327
- actions,
328
- actionsProps: ACTIONS_EVENT_HANDLERS,
329
- children: ({ showActions }) => /* @__PURE__ */ jsx(TabElement, {
330
- insideWrapper: true,
331
- preserveActionsSpace: true,
332
- showActions,
333
- autoHideActions: effectiveAutoHideActions,
334
- as: "button",
335
- ...mergeProps$1(tabProps, hoverProps, focusProps, {
336
- onKeyDown: handleKeyDown,
337
- onPointerEnter: handleSpringLoadEnter,
338
- onPointerLeave: clearSpringLoad
339
- }),
340
- ...ariaProps,
341
- ...itemStyleProps,
342
- ref,
343
- qa: qa ?? `Tab-${String(item.key)}`,
344
- qaVal,
345
- styles,
346
- mods,
347
- isSelected: isActive,
348
- isDisabled,
349
- size: itemSize,
341
+ isSelected: isActive,
342
+ isDisabled,
343
+ size: itemSize,
344
+ type: itemType,
345
+ shape: itemShape,
346
+ actions: actions ? true : void 0,
347
+ tooltip: effectiveIsEditable ? false : tabTooltip,
348
+ children: titleContent
349
+ }),
350
+ actions && /* @__PURE__ */ jsx("div", {
351
+ ref: actionsRef,
352
+ "data-element": "Actions",
353
+ ...ACTIONS_EVENT_HANDLERS,
354
+ children: /* @__PURE__ */ jsx(ItemActionProvider, {
350
355
  type: itemType,
351
- shape: itemShape,
352
- actions: actions ? true : void 0,
353
- tooltip: effectiveIsEditable ? false : tabTooltip,
354
- children: titleContent
356
+ theme: "default",
357
+ isDisabled,
358
+ children: actions
355
359
  })
356
360
  }),
357
361
  contextMenuEnabled && processedMenu && contextMenu.rendered,