@cube-dev/ui-kit 0.185.1 → 0.185.2

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 (580) hide show
  1. package/dist/CHANGELOG.md +10 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemActionsWrapper.js +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/actions-run.js +1 -1
  38. package/dist/components/actions/index.js +1 -1
  39. package/dist/components/actions/use-action.js +1 -1
  40. package/dist/components/actions/use-anchored-menu.js +1 -1
  41. package/dist/components/actions/use-context-menu.js +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  51. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  52. package/dist/components/content/Divider.js +1 -1
  53. package/dist/components/content/Footer.js +1 -1
  54. package/dist/components/content/Header.js +1 -1
  55. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  56. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +1 -1
  59. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  60. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  61. package/dist/components/content/Layout/GridLayout.js +1 -1
  62. package/dist/components/content/Layout/Layout.js +1 -1
  63. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  64. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  65. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  66. package/dist/components/content/Layout/LayoutContent.js +1 -1
  67. package/dist/components/content/Layout/LayoutContext.js +1 -1
  68. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  69. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  70. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  71. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  72. package/dist/components/content/Layout/LayoutPane.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  75. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  76. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  77. package/dist/components/content/Layout/index.js +1 -1
  78. package/dist/components/content/Layout/utils.js +1 -1
  79. package/dist/components/content/Paragraph.js +1 -1
  80. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  81. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  82. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  83. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  84. package/dist/components/content/Result/Result.js +1 -1
  85. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  86. package/dist/components/content/Tag/Tag.js +1 -1
  87. package/dist/components/content/Text.js +1 -1
  88. package/dist/components/content/TextItem/TextItem.js +1 -1
  89. package/dist/components/content/Title.js +1 -1
  90. package/dist/components/content/Tree/Tree.js +1 -1
  91. package/dist/components/content/Tree/TreeNode.js +1 -1
  92. package/dist/components/content/Tree/styled.js +1 -1
  93. package/dist/components/content/Tree/tree-index.js +1 -1
  94. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  95. package/dist/components/content/Tree/use-load-data.js +1 -1
  96. package/dist/components/content/highlightText.js +1 -1
  97. package/dist/components/content/use-auto-tooltip.js +1 -1
  98. package/dist/components/data/DataTable/DataTable.js +1 -1
  99. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  104. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  105. package/dist/components/data/TableBase/RowCollection.js +1 -1
  106. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  107. package/dist/components/data/TableBase/TableRow.js +1 -1
  108. package/dist/components/data/TableBase/TableView.js +1 -1
  109. package/dist/components/data/TableBase/column-menu.js +1 -1
  110. package/dist/components/data/TableBase/column-tint.js +1 -1
  111. package/dist/components/data/TableBase/row-menu.js +1 -1
  112. package/dist/components/data/TableBase/styled.js +1 -1
  113. package/dist/components/data/TableBase/table-tree.js +1 -1
  114. package/dist/components/data/TableBase/types.js +1 -1
  115. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  116. package/dist/components/data/TableBase/use-column-order.js +1 -1
  117. package/dist/components/data/TableBase/use-container-width.js +1 -1
  118. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  119. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  120. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  121. package/dist/components/data/TableBase/use-table-search.js +1 -1
  122. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  123. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  124. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  125. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  126. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  127. package/dist/components/fields/Checkbox/Checkbox.js +3 -1
  128. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  129. package/dist/components/fields/Checkbox/CheckboxGroup.js +66 -57
  130. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  131. package/dist/components/fields/Checkbox/context.js +1 -1
  132. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  133. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  134. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  135. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +3 -2
  136. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  137. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  138. package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
  139. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  140. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  141. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  142. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  143. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  146. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  147. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  148. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  149. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  150. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  152. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  154. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  155. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  156. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  157. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  158. package/dist/components/fields/DatePicker/period.js +1 -1
  159. package/dist/components/fields/DatePicker/props.js +1 -1
  160. package/dist/components/fields/DatePicker/utils.js +1 -1
  161. package/dist/components/fields/FileInput/FileInput.js +1 -1
  162. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  163. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  164. package/dist/components/fields/Input/Input.js +1 -1
  165. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  166. package/dist/components/fields/ListBox/ListBox.js +1 -1
  167. package/dist/components/fields/ListBox/optionId.js +1 -1
  168. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  169. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  170. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  171. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  172. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  173. package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
  174. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  175. package/dist/components/fields/Picker/Picker.js +1 -1
  176. package/dist/components/fields/RadioGroup/Radio.js +1 -2
  177. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  178. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -2
  179. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  180. package/dist/components/fields/RadioGroup/context.js +1 -1
  181. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  182. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  183. package/dist/components/fields/Select/Select.js +5 -2
  184. package/dist/components/fields/Select/Select.js.map +1 -1
  185. package/dist/components/fields/Slider/Gradation.js +1 -1
  186. package/dist/components/fields/Slider/HueSlider.js +1 -1
  187. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  188. package/dist/components/fields/Slider/Slider.js +1 -1
  189. package/dist/components/fields/Slider/SliderBase.js +1 -1
  190. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  191. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  192. package/dist/components/fields/Slider/elements.js +1 -1
  193. package/dist/components/fields/Slider/index.js +1 -1
  194. package/dist/components/fields/Switch/Switch.js +107 -98
  195. package/dist/components/fields/Switch/Switch.js.map +1 -1
  196. package/dist/components/fields/TagInput/TagInput.js +1 -1
  197. package/dist/components/fields/TagInput/TagList.js +1 -1
  198. package/dist/components/fields/TextArea/TextArea.js +2 -2
  199. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  200. package/dist/components/fields/TextInput/TextInput.js +1 -1
  201. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  202. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  203. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  204. package/dist/components/fields/TriggerActions.js +1 -1
  205. package/dist/components/fields/color/ColorPanel.js +1 -1
  206. package/dist/components/fields/color/channels.js +1 -1
  207. package/dist/components/fields/color/color.js +1 -1
  208. package/dist/components/fields/color/context.js +1 -1
  209. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  210. package/dist/components/form/Form/Field.js +1 -1
  211. package/dist/components/form/Form/Form.js +11 -1
  212. package/dist/components/form/Form/Form.js.map +1 -1
  213. package/dist/components/form/Form/ModernFormRoot.js +39 -40
  214. package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
  215. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  216. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  217. package/dist/components/form/Form/SubmitError.js +1 -1
  218. package/dist/components/form/Form/backend.js +1 -1
  219. package/dist/components/form/Form/index.js +1 -1
  220. package/dist/components/form/Form/modern/actions.js +1 -1
  221. package/dist/components/form/Form/modern/context.js +1 -1
  222. package/dist/components/form/Form/modern/controller.js +1 -1
  223. package/dist/components/form/Form/modern/field-binding.js +1 -1
  224. package/dist/components/form/Form/modern/field.js +1 -1
  225. package/dist/components/form/Form/modern/react.js +1 -1
  226. package/dist/components/form/Form/modern/store.js +1 -1
  227. package/dist/components/form/Form/modern/validation.js +1 -1
  228. package/dist/components/form/Form/modern/values.js +1 -1
  229. package/dist/components/form/Form/reset-unbound-controls.js +39 -0
  230. package/dist/components/form/Form/reset-unbound-controls.js.map +1 -0
  231. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  232. package/dist/components/form/Form/use-field/use-field-props.d.ts +14 -2
  233. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  234. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  235. package/dist/components/form/Form/use-field/use-field.js +1 -1
  236. package/dist/components/form/Form/use-form.js +1 -1
  237. package/dist/components/form/Form/validation.js +1 -1
  238. package/dist/components/form/Label.js +1 -1
  239. package/dist/components/form/legacy-tooltip.js +1 -1
  240. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  241. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  242. package/dist/components/form/validation/use-validation-props.js +1 -1
  243. package/dist/components/form/wrapper.js +1 -1
  244. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  245. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  246. package/dist/components/layout/Board/Board.js +1 -1
  247. package/dist/components/layout/Board/BoardProvider.js +1 -1
  248. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  249. package/dist/components/layout/Board/Widget.js +1 -1
  250. package/dist/components/layout/Board/WidgetHost.js +1 -1
  251. package/dist/components/layout/Board/board-context.js +1 -1
  252. package/dist/components/layout/Board/board-store.js +1 -1
  253. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  254. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  255. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  256. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  257. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  258. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  259. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  260. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  261. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  262. package/dist/components/layout/Board/index.js +1 -1
  263. package/dist/components/layout/Board/responsive-utils.js +1 -1
  264. package/dist/components/layout/Board/use-board-layout.js +1 -1
  265. package/dist/components/layout/Board/use-board-registry.js +1 -1
  266. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  267. package/dist/components/layout/Board/use-board-selection.js +1 -1
  268. package/dist/components/layout/Flex.js +1 -1
  269. package/dist/components/layout/Flow.js +1 -1
  270. package/dist/components/layout/Grid.js +1 -1
  271. package/dist/components/layout/Panel.js +1 -1
  272. package/dist/components/layout/Prefix.js +1 -1
  273. package/dist/components/layout/ResizablePanel.js +1 -1
  274. package/dist/components/layout/Space.js +1 -1
  275. package/dist/components/layout/Suffix.js +1 -1
  276. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  277. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  278. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  279. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  280. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  281. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  282. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  283. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  284. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  285. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  286. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  287. package/dist/components/navigation/Tabs/styled.js +1 -1
  288. package/dist/components/navigation/Tabs/types.js +1 -1
  289. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  290. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  291. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  292. package/dist/components/other/Calendar/Calendar.js +1 -1
  293. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  294. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  295. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  296. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  297. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  298. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  299. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  300. package/dist/components/other/Calendar/styled.js +1 -1
  301. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  302. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  303. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  304. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  305. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  306. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  307. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  308. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  309. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  310. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  311. package/dist/components/overlays/Dialog/context.js +1 -1
  312. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  313. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  314. package/dist/components/overlays/Modal/Modal.js +1 -1
  315. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  316. package/dist/components/overlays/Modal/Overlay.js +1 -1
  317. package/dist/components/overlays/Modal/Popover.js +1 -1
  318. package/dist/components/overlays/Modal/Tray.js +1 -1
  319. package/dist/components/overlays/Modal/Underlay.js +1 -1
  320. package/dist/components/overlays/Notifications/Notification.js +1 -1
  321. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  322. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  323. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  324. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  325. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  326. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  327. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  328. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  329. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  330. package/dist/components/overlays/Notifications/index.js +1 -1
  331. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  332. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  333. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  334. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  335. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  336. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  337. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  338. package/dist/components/overlays/Toast/index.js +1 -1
  339. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  340. package/dist/components/overlays/Toast/useToast.js +1 -1
  341. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  342. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  343. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  344. package/dist/components/overlays/Tooltip/context.js +1 -1
  345. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  346. package/dist/components/portal/Portal.js +1 -1
  347. package/dist/components/portal/PortalProvider.js +1 -1
  348. package/dist/components/portal/usePortal.js +1 -1
  349. package/dist/components/shared/DraggableCollection.js +1 -1
  350. package/dist/components/shared/InvalidIcon.js +1 -1
  351. package/dist/components/shared/ValidIcon.js +1 -1
  352. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  353. package/dist/components/status/Spin/Cube.js +1 -1
  354. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  355. package/dist/components/status/Spin/Spin.js +1 -1
  356. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  357. package/dist/data/item-themes.js +1 -1
  358. package/dist/data/themes.js +1 -1
  359. package/dist/eslint-plugin/defaults.generated.js +1 -1
  360. package/dist/eslint-plugin/index.js +1 -1
  361. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  362. package/dist/i18n/I18nProvider.js +1 -1
  363. package/dist/i18n/createFormatter.js +1 -1
  364. package/dist/i18n/index.js +1 -1
  365. package/dist/i18n/instance.js +1 -1
  366. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  367. package/dist/i18n/locales/en-US/uikit.js +1 -1
  368. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  369. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  370. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  371. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  372. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  373. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  374. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  375. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  376. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  377. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  378. package/dist/i18n/locales.js +1 -1
  379. package/dist/i18n/useFormatter.js +1 -1
  380. package/dist/i18n/useI18n.js +1 -1
  381. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  382. package/dist/icons/AdjustmentsIcon.js +1 -1
  383. package/dist/icons/AiIcon.js +1 -1
  384. package/dist/icons/AreaChartIcon.js +1 -1
  385. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  386. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  387. package/dist/icons/BackwardIcon.js +1 -1
  388. package/dist/icons/BarChartIcon.js +1 -1
  389. package/dist/icons/BellFilledIcon.js +1 -1
  390. package/dist/icons/BellIcon.js +1 -1
  391. package/dist/icons/BooleanIcon.js +1 -1
  392. package/dist/icons/CalendarEditIcon.js +1 -1
  393. package/dist/icons/CalendarIcon.js +1 -1
  394. package/dist/icons/CaretDownIcon.js +1 -1
  395. package/dist/icons/CaretUpIcon.js +1 -1
  396. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  397. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  398. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  399. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  400. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  401. package/dist/icons/ChartBarLineIcon.js +1 -1
  402. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  403. package/dist/icons/ChartBarStackedIcon.js +1 -1
  404. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  405. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  406. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  407. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  408. package/dist/icons/ChartBubbleIcon.js +1 -1
  409. package/dist/icons/ChartDonut2Icon.js +1 -1
  410. package/dist/icons/ChartFunnelIcon.js +1 -1
  411. package/dist/icons/ChartHeatmapIcon.js +1 -1
  412. package/dist/icons/ChartKPIIcon.js +1 -1
  413. package/dist/icons/ChartPie2Icon.js +1 -1
  414. package/dist/icons/ChartScatterIcon.js +1 -1
  415. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  416. package/dist/icons/CheckCircleIcon.js +1 -1
  417. package/dist/icons/CheckIcon.js +1 -1
  418. package/dist/icons/CircleFilledIcon.js +1 -1
  419. package/dist/icons/ClearIcon.js +1 -1
  420. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  421. package/dist/icons/CloseCircleIcon.js +1 -1
  422. package/dist/icons/CloseIcon.js +1 -1
  423. package/dist/icons/CodeIcon.js +1 -1
  424. package/dist/icons/ColumnTotalIcon.js +1 -1
  425. package/dist/icons/CopyIcon.js +1 -1
  426. package/dist/icons/CountIcon.js +1 -1
  427. package/dist/icons/CubeIcon.js +1 -1
  428. package/dist/icons/CubePauseIcon.js +1 -1
  429. package/dist/icons/CubePlayIcon.js +1 -1
  430. package/dist/icons/CurrencyDollarIcon.js +1 -1
  431. package/dist/icons/DangerIcon.js +1 -1
  432. package/dist/icons/DashboardIcon.js +1 -1
  433. package/dist/icons/DatabaseIcon.js +1 -1
  434. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  435. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  436. package/dist/icons/DirectionIcon.js +1 -1
  437. package/dist/icons/DonutIcon.js +1 -1
  438. package/dist/icons/DownIcon.js +1 -1
  439. package/dist/icons/EditIcon.js +1 -1
  440. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  441. package/dist/icons/ExclamationCircleIcon.js +1 -1
  442. package/dist/icons/ExclamationIcon.js +1 -1
  443. package/dist/icons/EyeIcon.js +1 -1
  444. package/dist/icons/EyeInvisibleIcon.js +1 -1
  445. package/dist/icons/FilterIcon.js +1 -1
  446. package/dist/icons/FolderFilledIcon.js +1 -1
  447. package/dist/icons/FolderIcon.js +1 -1
  448. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  449. package/dist/icons/FolderOpenIcon.js +1 -1
  450. package/dist/icons/ForwardIcon.js +1 -1
  451. package/dist/icons/GripVerticalIcon.js +1 -1
  452. package/dist/icons/HierarchyIcon.js +1 -1
  453. package/dist/icons/HierarchyOpenIcon.js +1 -1
  454. package/dist/icons/Icon.js +1 -1
  455. package/dist/icons/InfoCircleIcon.js +1 -1
  456. package/dist/icons/InfoIcon.js +1 -1
  457. package/dist/icons/KeyIcon.js +1 -1
  458. package/dist/icons/LeftIcon.js +1 -1
  459. package/dist/icons/LineChartIcon.js +1 -1
  460. package/dist/icons/LoadingIcon.js +1 -1
  461. package/dist/icons/LockFilledIcon.js +1 -1
  462. package/dist/icons/LockIcon.js +1 -1
  463. package/dist/icons/MoreIcon.js +1 -1
  464. package/dist/icons/NotAllowedIcon.js +1 -1
  465. package/dist/icons/Number123Icon.js +1 -1
  466. package/dist/icons/NumberIcon.js +1 -1
  467. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  468. package/dist/icons/PauseCircleIcon.js +1 -1
  469. package/dist/icons/PauseIcon.js +1 -1
  470. package/dist/icons/PercentageIcon.js +1 -1
  471. package/dist/icons/PieChartIcon.js +1 -1
  472. package/dist/icons/PipetteIcon.js +1 -1
  473. package/dist/icons/PlayCircleIcon.js +1 -1
  474. package/dist/icons/PlayIcon.js +1 -1
  475. package/dist/icons/PlusIcon.js +1 -1
  476. package/dist/icons/ProgressBarIcon.js +1 -1
  477. package/dist/icons/ReloadIcon.js +1 -1
  478. package/dist/icons/ReportIcon.js +1 -1
  479. package/dist/icons/ReturnIcon.js +1 -1
  480. package/dist/icons/RightIcon.js +1 -1
  481. package/dist/icons/RowTotalsIcon.js +1 -1
  482. package/dist/icons/SchemeIcon.js +1 -1
  483. package/dist/icons/SearchIcon.js +1 -1
  484. package/dist/icons/SemanticQueryIcon.js +1 -1
  485. package/dist/icons/SettingsIcon.js +1 -1
  486. package/dist/icons/ShieldFilledIcon.js +1 -1
  487. package/dist/icons/ShieldIcon.js +1 -1
  488. package/dist/icons/SlashIcon.js +1 -1
  489. package/dist/icons/SparklesIcon.js +1 -1
  490. package/dist/icons/SqlIcon.js +1 -1
  491. package/dist/icons/StatsIcon.js +1 -1
  492. package/dist/icons/StopIcon.js +1 -1
  493. package/dist/icons/StringIcon.js +1 -1
  494. package/dist/icons/SubtotalsIcon.js +1 -1
  495. package/dist/icons/SwitchIcon.js +1 -1
  496. package/dist/icons/TableIcon.js +1 -1
  497. package/dist/icons/ThumbsDownIcon.js +1 -1
  498. package/dist/icons/ThumbsUpIcon.js +1 -1
  499. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  500. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  501. package/dist/icons/ThunderboltIcon.js +1 -1
  502. package/dist/icons/TimeIcon.js +1 -1
  503. package/dist/icons/TrashIcon.js +1 -1
  504. package/dist/icons/UnlockIcon.js +1 -1
  505. package/dist/icons/UpIcon.js +1 -1
  506. package/dist/icons/UserGroupIcon.js +1 -1
  507. package/dist/icons/UserIcon.js +1 -1
  508. package/dist/icons/UserLockIcon.js +1 -1
  509. package/dist/icons/ViewIcon.js +1 -1
  510. package/dist/icons/WarningFilledIcon.js +1 -1
  511. package/dist/icons/WarningIcon.js +1 -1
  512. package/dist/icons/wrap-icon.js +1 -1
  513. package/dist/index.js +1 -1
  514. package/dist/probe/canonicalize.js +1 -1
  515. package/dist/probe/css.js +1 -1
  516. package/dist/probe/index.js +1 -1
  517. package/dist/provider.js +1 -1
  518. package/dist/providers/TrackingProvider.js +1 -1
  519. package/dist/providers/navigationAdapter.default.js +1 -1
  520. package/dist/tokens/all-tokens.js +1 -1
  521. package/dist/tokens/base.js +1 -1
  522. package/dist/tokens/color-seed.js +1 -1
  523. package/dist/tokens/color-theme.js +1 -1
  524. package/dist/tokens/colors.js +1 -1
  525. package/dist/tokens/layout.js +1 -1
  526. package/dist/tokens/lazy-styles.js +1 -1
  527. package/dist/tokens/legacy-color.js +1 -1
  528. package/dist/tokens/palette-config.js +1 -1
  529. package/dist/tokens/palette.js +1 -1
  530. package/dist/tokens/resolve.js +1 -1
  531. package/dist/tokens/shadows.js +1 -1
  532. package/dist/tokens/sizes.js +1 -1
  533. package/dist/tokens/spacing.js +1 -1
  534. package/dist/tokens/typography.js +1 -1
  535. package/dist/utils/ResizeSensor.js +1 -1
  536. package/dist/utils/colors.js +1 -1
  537. package/dist/utils/dotize.js +1 -1
  538. package/dist/utils/is-dev-env.js +1 -1
  539. package/dist/utils/modules.js +1 -1
  540. package/dist/utils/promise.js +1 -1
  541. package/dist/utils/raf.js +1 -1
  542. package/dist/utils/random.js +1 -1
  543. package/dist/utils/range.js +1 -1
  544. package/dist/utils/react/RenderCache.js +1 -1
  545. package/dist/utils/react/Slots.js +1 -1
  546. package/dist/utils/react/chain.js +1 -1
  547. package/dist/utils/react/disabledProps.js +1 -1
  548. package/dist/utils/react/escapePropagation.js +1 -1
  549. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  550. package/dist/utils/react/index.js +1 -1
  551. package/dist/utils/react/interactions.js +1 -1
  552. package/dist/utils/react/isTextOnly.js +1 -1
  553. package/dist/utils/react/mapProps.js +1 -1
  554. package/dist/utils/react/mergeProps.js +1 -1
  555. package/dist/utils/react/nullableValue.js +1 -1
  556. package/dist/utils/react/programmaticFocus.js +1 -1
  557. package/dist/utils/react/resolveIcon.js +1 -1
  558. package/dist/utils/react/sharedStore.js +1 -1
  559. package/dist/utils/react/useBufferedValue.js +1 -1
  560. package/dist/utils/react/useCombinedRefs.js +1 -1
  561. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  562. package/dist/utils/react/useEventBus.js +1 -1
  563. package/dist/utils/react/useId.js +1 -1
  564. package/dist/utils/react/useIsDarwin.js +1 -1
  565. package/dist/utils/react/useKeySymbols.js +1 -1
  566. package/dist/utils/react/useLayoutEffect.js +1 -1
  567. package/dist/utils/react/useLocalStorage.js +1 -1
  568. package/dist/utils/react/useMergeStyles.js +1 -1
  569. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  570. package/dist/utils/react/usePopoverSync.js +1 -1
  571. package/dist/utils/react/useQaProps.js +1 -1
  572. package/dist/utils/react/useScheme.js +1 -1
  573. package/dist/utils/react/useViewportSize.js +1 -1
  574. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  575. package/dist/utils/selection.js +1 -1
  576. package/dist/utils/styles.js +1 -1
  577. package/dist/utils/tree.js +1 -1
  578. package/dist/utils/warnings.js +1 -1
  579. package/dist/version.js +2 -2
  580. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":["useObjectRef","BaseProps","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","tasty","ContextType","createContext","FormHTMLAttributes","forwardRef","ReactElement","ReactNode","Ref","useContext","useRef","Provider","useProviderProps","FormBaseProps","timeout","useCombinedRefs","extractStyles","useValidationProps","isModernFormController","ModernControllerContext","ModernFormRoot","FieldTypes","CubeFormData","CubeFormInstance","useForm","ModernFormProps","FormContext","FormPresentationContextValue","labelPosition","labelStyles","orientation","necessityIndicator","validateTrigger","requiredMark","showValid","idPrefix","EMPTY_PRESENTATION","FormPresentationContext","FormScopeMask","t0","$","_c","value","children","t1","FormRootComponent","props","CubeFormProps","T","ref","HTMLFormElement","FormElement","as","qa","styles","display","horizontal","flow","placeItems","gap","flexGrow","height","useFormProps","presentation","ctx","modern","form","formPropNames","Set","Pick","name","defaultValues","Partial","onValuesChange","onSubmit","onSubmitFailed","any","Promise","labelWidth","LegacyFormRoot","isDisabled","isReadOnly","isInvalid","isValid","otherProps","defaultValuesRef","firstRunRef","isHorizontal","undefined","onSubmitCallback","action","e","preventDefault","stopPropagation","nativeEvent","evt","submitter","getAttribute","isSubmitting","submitError","setSubmitting","validateFields","getFormData","Error","current","domRef","setInitialFieldsValue","resetFields","propNames","_LegacyFormRoot","displayName","Form","_Form"],"sources":["../../../../src/components/form/Form/Form.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 {\n ContextType,\n createContext,\n FormHTMLAttributes,\n forwardRef,\n ReactElement,\n ReactNode,\n Ref,\n useContext,\n useRef,\n} from 'react';\n\nimport { Provider, useProviderProps } from '../../../provider';\nimport { FormBaseProps } from '../../../shared/index';\nimport { timeout } from '../../../utils/promise';\nimport { useCombinedRefs } from '../../../utils/react/index';\nimport { extractStyles } from '../../../utils/styles';\nimport { useValidationProps } from '../validation/index';\n\nimport { isModernFormController } from './backend';\nimport { ModernControllerContext } from './modern/context';\nimport { ModernFormRoot } from './ModernFormRoot';\nimport { FieldTypes } from './types';\nimport { CubeFormData, CubeFormInstance, useForm } from './use-form';\n\nimport type { ModernFormProps } from './ModernFormRoot';\n\n/**\n * Public legacy context. Its value is the full legacy scope (presentation\n * props, the instance, `submitError`, `idPrefix`) and is part of the exported\n * contract: wrappers outside the kit read it and Radio/Checkbox groups mask it.\n */\nexport const FormContext = createContext({});\n\n/**\n * Presentation and configuration that any root — legacy or modern — hands to\n * the fields below it. Backend-neutral by construction: no instance in here.\n */\nexport interface FormPresentationContextValue {\n labelPosition?: FormBaseProps['labelPosition'];\n labelStyles?: FormBaseProps['labelStyles'];\n orientation?: 'vertical' | 'horizontal';\n necessityIndicator?: FormBaseProps['necessityIndicator'];\n validateTrigger?: FormBaseProps['validateTrigger'];\n requiredMark?: boolean;\n showValid?: boolean;\n idPrefix?: string;\n}\n\nconst EMPTY_PRESENTATION: FormPresentationContextValue = {};\n\nexport const FormPresentationContext =\n createContext<FormPresentationContextValue>(EMPTY_PRESENTATION);\n\n/**\n * Scope the inputs below to a new form context. Radio/Checkbox groups use it\n * for their options: they see the group's validation state, but neither the\n * surrounding form's presentation props nor its instance, so a nested `name`\n * never registers as an independent field. Wrappers that used to override\n * `FormContext` directly for the same purpose should render this instead — a\n * bare `FormContext.Provider` no longer masks the presentation context.\n */\nexport function FormScopeMask({\n value,\n children,\n}: {\n value: ContextType<typeof FormContext>;\n children?: ReactNode;\n}) {\n return (\n <ModernControllerContext.Provider value={null}>\n <FormPresentationContext.Provider value={EMPTY_PRESENTATION}>\n <FormContext.Provider value={value}>{children}</FormContext.Provider>\n </FormPresentationContext.Provider>\n </ModernControllerContext.Provider>\n );\n}\n\n/** Separate overloads retain contextual callback typing for each backend. */\nexport interface FormRootComponent {\n <T extends FieldTypes = FieldTypes>(\n props: CubeFormProps<T> & { ref?: Ref<HTMLFormElement> },\n ): ReactElement;\n <T extends FieldTypes = FieldTypes>(\n props: ModernFormProps<T> & { ref?: Ref<HTMLFormElement> },\n ): ReactElement;\n}\n\nexport const FormElement = tasty({\n as: 'form',\n qa: 'Form',\n styles: {\n // A form placed directly in a `Dialog` sits between the dialog and its\n // slots (`Dialog > Form > Content + Footer`), so it takes over the dialog's\n // own slot layout: a flex column that grows into the dialog, lets `Content`\n // shrink and scroll (`min-height: 0` — a flex item's default `auto` refuses\n // to shrink below its content), and adds no space between the slots, whose\n // padding already spaces them. Direct child only: a form nested inside\n // `Content` is an ordinary form.\n //\n // It lives here, in the form's own styles, so a consumer's `styles` on the\n // form replace it key by key, inside a dialog as anywhere else — and can\n // name `@in-dialog` themselves. Last in each map, so\n // `orientation=\"horizontal\"` cannot turn the slots into a row.\n '@in-dialog': '@parent(id=Dialog, >)',\n\n display: {\n '': 'block',\n horizontal: 'flex',\n '@in-dialog': 'flex',\n },\n flow: {\n '': 'column',\n horizontal: 'row',\n '@in-dialog': 'column',\n },\n placeItems: {\n '': 'initial',\n horizontal: 'center',\n '@in-dialog': 'initial',\n },\n gap: {\n '': '2x',\n '@in-dialog': 0,\n },\n flexGrow: {\n '': false,\n '@in-dialog': 1,\n },\n height: {\n '': false,\n '@in-dialog': 'min 0',\n },\n '$label-width': '25x',\n },\n});\n\n/**\n * Merge order: presentation context, then the legacy `FormContext`, then the\n * props. Under a legacy root the two contexts carry the same presentation\n * values, so the result is exactly `{ ...FormContext, ...props }` as before.\n */\nexport function useFormProps(props) {\n const presentation = useContext(FormPresentationContext);\n const ctx = useContext(FormContext);\n const modern = useContext(ModernControllerContext);\n\n return {\n ...presentation,\n ...(modern ? { form: modern } : {}),\n ...ctx,\n ...props,\n };\n}\n\nexport const formPropNames = new Set([\n 'action',\n 'autoComplete',\n 'encType',\n 'method',\n 'target',\n]);\n\nexport interface CubeFormProps<T extends FieldTypes = FieldTypes>\n extends FormBaseProps,\n BaseProps,\n ContainerStyleProps,\n Pick<\n FormHTMLAttributes<HTMLFormElement>,\n 'action' | 'autoComplete' | 'encType' | 'method' | 'target'\n > {\n /** Form name */\n name?: string;\n /** Default field values */\n defaultValues?: Partial<T>;\n /** Trigger when any value of the Field is changed */\n onValuesChange?: CubeFormInstance<T>['onValuesChange'];\n /** Trigger on form submit and success */\n onSubmit?: CubeFormInstance<T>['onSubmit'];\n /** Trigger on form submit and failed */\n onSubmitFailed?: (any?) => void | Promise<any>;\n /** Set form instance created by useForm */\n form?: CubeFormInstance<T, CubeFormData<T>>;\n /** The size of the side area with labels. Only for `labelPosition=\"side\"` */\n labelWidth?: Styles['width'];\n orientation?: 'vertical' | 'horizontal';\n}\n\n/**\n * The legacy backend's root: the current engine under an internal name. Its\n * role is compatibility; see `legacy-contract/README.md` for what is frozen.\n */\nfunction LegacyFormRoot<T extends FieldTypes>(\n props: CubeFormProps<T>,\n ref: Ref<HTMLFormElement>,\n) {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n props = useValidationProps(useProviderProps(props));\n let {\n qa,\n name,\n children,\n labelPosition,\n orientation,\n necessityIndicator,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n labelStyles,\n validateTrigger,\n showValid,\n defaultValues,\n onValuesChange,\n requiredMark = true,\n form,\n labelWidth,\n onSubmit,\n onSubmitFailed,\n ...otherProps\n } = props;\n const defaultValuesRef = useRef(defaultValues);\n const firstRunRef = useRef(true);\n const isHorizontal = orientation === 'horizontal';\n\n if (!orientation) {\n orientation = 'vertical';\n }\n\n if (!labelPosition) {\n labelPosition = isHorizontal ? 'side' : 'top';\n }\n\n if (!labelWidth) {\n labelWidth = isHorizontal ? 'auto' : undefined;\n }\n\n ref = useCombinedRefs(ref);\n\n let onSubmitCallback;\n\n if ((onSubmit || onSubmitFailed) && !otherProps.action) {\n onSubmitCallback = async (e) => {\n if (e && e?.preventDefault) {\n e && e?.preventDefault && e?.preventDefault();\n e && e?.stopPropagation && e?.stopPropagation();\n\n if (e.nativeEvent) {\n const evt = e.nativeEvent;\n\n if (\n evt.submitter &&\n evt.submitter.getAttribute('type') !== 'submit'\n ) {\n return;\n }\n }\n }\n\n if (!form || form.isSubmitting) return;\n\n form.submitError = null;\n form.setSubmitting(true);\n\n try {\n try {\n await form.validateFields();\n } catch (e) {\n form?.setSubmitting(false);\n\n return;\n }\n\n await timeout();\n await onSubmit?.(form.getFormData());\n } catch (e) {\n await timeout();\n\n // errors are shown\n form.submitError = e as ReactNode;\n // transfer errors to the callback\n onSubmitFailed?.(e);\n\n if (e instanceof Error) {\n throw e;\n }\n } finally {\n form?.setSubmitting(false);\n }\n\n // output data from form directly\n // onSubmit(Object.fromEntries(new FormData(e.target).entries()));\n };\n }\n\n [form] = useForm<T>(form, ref && ref.current, {\n onSubmit: onSubmitCallback,\n onValuesChange,\n });\n\n let styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n if (labelWidth) {\n styles['$label-width'] = labelWidth;\n }\n\n let domRef = useObjectRef(ref);\n\n const presentation: FormPresentationContextValue = {\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n idPrefix: name,\n };\n\n let ctx = {\n ...presentation,\n form,\n submitError: form.submitError,\n };\n\n if (firstRunRef.current && form) {\n if (defaultValues) {\n form.setInitialFieldsValue(defaultValues);\n form.resetFields(undefined, true);\n firstRunRef.current = false;\n }\n }\n\n if (defaultValuesRef.current !== defaultValues) {\n form?.setInitialFieldsValue(defaultValues ?? {});\n defaultValuesRef.current = defaultValues;\n }\n\n return (\n <FormElement\n {...filterBaseProps(otherProps, { propNames: formPropNames })}\n ref={domRef}\n noValidate\n qa={qa}\n styles={styles}\n mods={{\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n horizontal: isHorizontal,\n }}\n onSubmit={onSubmitCallback}\n >\n <ModernControllerContext.Provider value={null}>\n <FormPresentationContext.Provider value={presentation}>\n <FormContext.Provider value={ctx}>\n <Provider\n insideForm={true}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n >\n {children}\n </Provider>\n </FormContext.Provider>\n </FormPresentationContext.Provider>\n </ModernControllerContext.Provider>\n </FormElement>\n );\n}\n\nconst _LegacyFormRoot = forwardRef(LegacyFormRoot) as unknown as <\n T extends FieldTypes,\n>(\n props: CubeFormProps<T> & { ref?: Ref<HTMLFormElement> },\n) => ReactElement;\n\n(_LegacyFormRoot as any).displayName = 'LegacyFormRoot';\n\n/**\n * The `<Form>` facade. It chooses the root by the brand of the `form` prop\n * before any backend hook runs. Without an explicit modern controller it is\n * the legacy root, so existing `<Form>` and `Form.useForm()` keep their behavior.\n */\nfunction Form<T extends FieldTypes>(\n props: CubeFormProps<T> | ModernFormProps<T>,\n ref: Ref<HTMLFormElement>,\n) {\n if (isModernFormController(props.form)) {\n return <ModernFormRoot {...(props as ModernFormProps<T>)} ref={ref} />;\n }\n\n return <_LegacyFormRoot {...(props as CubeFormProps<T>)} ref={ref} />;\n}\n\n/**\n * Forms allow users to enter data that can be submitted while providing alignment and styling for form fields.\n */\nconst _Form = forwardRef(Form) as unknown as FormRootComponent;\n\n(_Form as any).displayName = 'Form';\n\nexport { _Form as Form, _LegacyFormRoot as LegacyFormRoot };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Form.js","names":["useObjectRef","BaseProps","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","tasty","ContextType","createContext","FormEvent","FormHTMLAttributes","forwardRef","ReactElement","ReactNode","Ref","useContext","useRef","useEvent","Provider","useProviderProps","FormBaseProps","timeout","useCombinedRefs","extractStyles","useValidationProps","isModernFormController","ModernControllerContext","ModernFormRoot","resetUnboundControls","FieldTypes","CubeFormData","CubeFormInstance","useForm","ModernFormProps","FormContext","FormPresentationContextValue","labelPosition","labelStyles","orientation","necessityIndicator","validateTrigger","requiredMark","showValid","idPrefix","EMPTY_PRESENTATION","FormPresentationContext","FormScopeMask","t0","$","_c","value","children","t1","FormRootComponent","props","CubeFormProps","T","ref","HTMLFormElement","FormElement","as","qa","styles","display","horizontal","flow","placeItems","gap","flexGrow","height","useFormProps","presentation","ctx","modern","form","formPropNames","Set","Pick","name","defaultValues","Partial","onValuesChange","onSubmit","onSubmitFailed","any","Promise","labelWidth","LegacyFormRoot","isDisabled","isReadOnly","isInvalid","isValid","otherProps","defaultValuesRef","firstRunRef","isHorizontal","undefined","onSubmitCallback","action","e","preventDefault","stopPropagation","nativeEvent","evt","submitter","getAttribute","isSubmitting","submitError","setSubmitting","validateFields","getFormData","Error","current","handleReset","event","currentTarget","getFieldInstance","resetFields","domRef","setInitialFieldsValue","propNames","_LegacyFormRoot","displayName","Form","_Form"],"sources":["../../../../src/components/form/Form/Form.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 {\n ContextType,\n createContext,\n FormEvent,\n FormHTMLAttributes,\n forwardRef,\n ReactElement,\n ReactNode,\n Ref,\n useContext,\n useRef,\n} from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { Provider, useProviderProps } from '../../../provider';\nimport { FormBaseProps } from '../../../shared/index';\nimport { timeout } from '../../../utils/promise';\nimport { useCombinedRefs } from '../../../utils/react/index';\nimport { extractStyles } from '../../../utils/styles';\nimport { useValidationProps } from '../validation/index';\n\nimport { isModernFormController } from './backend';\nimport { ModernControllerContext } from './modern/context';\nimport { ModernFormRoot } from './ModernFormRoot';\nimport { resetUnboundControls } from './reset-unbound-controls';\nimport { FieldTypes } from './types';\nimport { CubeFormData, CubeFormInstance, useForm } from './use-form';\n\nimport type { ModernFormProps } from './ModernFormRoot';\n\n/**\n * Public legacy context. Its value is the full legacy scope (presentation\n * props, the instance, `submitError`, `idPrefix`) and is part of the exported\n * contract: wrappers outside the kit read it and Radio/Checkbox groups mask it.\n */\nexport const FormContext = createContext({});\n\n/**\n * Presentation and configuration that any root — legacy or modern — hands to\n * the fields below it. Backend-neutral by construction: no instance in here.\n */\nexport interface FormPresentationContextValue {\n labelPosition?: FormBaseProps['labelPosition'];\n labelStyles?: FormBaseProps['labelStyles'];\n orientation?: 'vertical' | 'horizontal';\n necessityIndicator?: FormBaseProps['necessityIndicator'];\n validateTrigger?: FormBaseProps['validateTrigger'];\n requiredMark?: boolean;\n showValid?: boolean;\n idPrefix?: string;\n}\n\nconst EMPTY_PRESENTATION: FormPresentationContextValue = {};\n\nexport const FormPresentationContext =\n createContext<FormPresentationContextValue>(EMPTY_PRESENTATION);\n\n/**\n * Scope the inputs below to a new form context. Radio/Checkbox groups use it\n * for their options: they see the group's validation state, but neither the\n * surrounding form's presentation props nor its instance, so a nested `name`\n * never registers as an independent field. Wrappers that used to override\n * `FormContext` directly for the same purpose should render this instead — a\n * bare `FormContext.Provider` no longer masks the presentation context.\n */\nexport function FormScopeMask({\n value,\n children,\n}: {\n value: ContextType<typeof FormContext>;\n children?: ReactNode;\n}) {\n return (\n <ModernControllerContext.Provider value={null}>\n <FormPresentationContext.Provider value={EMPTY_PRESENTATION}>\n <FormContext.Provider value={value}>{children}</FormContext.Provider>\n </FormPresentationContext.Provider>\n </ModernControllerContext.Provider>\n );\n}\n\n/** Separate overloads retain contextual callback typing for each backend. */\nexport interface FormRootComponent {\n <T extends FieldTypes = FieldTypes>(\n props: CubeFormProps<T> & { ref?: Ref<HTMLFormElement> },\n ): ReactElement;\n <T extends FieldTypes = FieldTypes>(\n props: ModernFormProps<T> & { ref?: Ref<HTMLFormElement> },\n ): ReactElement;\n}\n\nexport const FormElement = tasty({\n as: 'form',\n qa: 'Form',\n styles: {\n // A form placed directly in a `Dialog` sits between the dialog and its\n // slots (`Dialog > Form > Content + Footer`), so it takes over the dialog's\n // own slot layout: a flex column that grows into the dialog, lets `Content`\n // shrink and scroll (`min-height: 0` — a flex item's default `auto` refuses\n // to shrink below its content), and adds no space between the slots, whose\n // padding already spaces them. Direct child only: a form nested inside\n // `Content` is an ordinary form.\n //\n // It lives here, in the form's own styles, so a consumer's `styles` on the\n // form replace it key by key, inside a dialog as anywhere else — and can\n // name `@in-dialog` themselves. Last in each map, so\n // `orientation=\"horizontal\"` cannot turn the slots into a row.\n '@in-dialog': '@parent(id=Dialog, >)',\n\n display: {\n '': 'block',\n horizontal: 'flex',\n '@in-dialog': 'flex',\n },\n flow: {\n '': 'column',\n horizontal: 'row',\n '@in-dialog': 'column',\n },\n placeItems: {\n '': 'initial',\n horizontal: 'center',\n '@in-dialog': 'initial',\n },\n gap: {\n '': '2x',\n '@in-dialog': 0,\n },\n flexGrow: {\n '': false,\n '@in-dialog': 1,\n },\n height: {\n '': false,\n '@in-dialog': 'min 0',\n },\n '$label-width': '25x',\n },\n});\n\n/**\n * Merge order: presentation context, then the legacy `FormContext`, then the\n * props. Under a legacy root the two contexts carry the same presentation\n * values, so the result is exactly `{ ...FormContext, ...props }` as before.\n */\nexport function useFormProps(props) {\n const presentation = useContext(FormPresentationContext);\n const ctx = useContext(FormContext);\n const modern = useContext(ModernControllerContext);\n\n return {\n ...presentation,\n ...(modern ? { form: modern } : {}),\n ...ctx,\n ...props,\n };\n}\n\nexport const formPropNames = new Set([\n 'action',\n 'autoComplete',\n 'encType',\n 'method',\n 'target',\n]);\n\nexport interface CubeFormProps<T extends FieldTypes = FieldTypes>\n extends FormBaseProps,\n BaseProps,\n ContainerStyleProps,\n Pick<\n FormHTMLAttributes<HTMLFormElement>,\n 'action' | 'autoComplete' | 'encType' | 'method' | 'target'\n > {\n /** Form name */\n name?: string;\n /** Default field values */\n defaultValues?: Partial<T>;\n /** Trigger when any value of the Field is changed */\n onValuesChange?: CubeFormInstance<T>['onValuesChange'];\n /** Trigger on form submit and success */\n onSubmit?: CubeFormInstance<T>['onSubmit'];\n /** Trigger on form submit and failed */\n onSubmitFailed?: (any?) => void | Promise<any>;\n /** Set form instance created by useForm */\n form?: CubeFormInstance<T, CubeFormData<T>>;\n /** The size of the side area with labels. Only for `labelPosition=\"side\"` */\n labelWidth?: Styles['width'];\n orientation?: 'vertical' | 'horizontal';\n}\n\n/**\n * The legacy backend's root: the current engine under an internal name. Its\n * role is compatibility; see `legacy-contract/README.md` for what is frozen.\n */\nfunction LegacyFormRoot<T extends FieldTypes>(\n props: CubeFormProps<T>,\n ref: Ref<HTMLFormElement>,\n) {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n props = useValidationProps(useProviderProps(props));\n let {\n qa,\n name,\n children,\n labelPosition,\n orientation,\n necessityIndicator,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n labelStyles,\n validateTrigger,\n showValid,\n defaultValues,\n onValuesChange,\n requiredMark = true,\n form,\n labelWidth,\n onSubmit,\n onSubmitFailed,\n ...otherProps\n } = props;\n const defaultValuesRef = useRef(defaultValues);\n const firstRunRef = useRef(true);\n const isHorizontal = orientation === 'horizontal';\n\n if (!orientation) {\n orientation = 'vertical';\n }\n\n if (!labelPosition) {\n labelPosition = isHorizontal ? 'side' : 'top';\n }\n\n if (!labelWidth) {\n labelWidth = isHorizontal ? 'auto' : undefined;\n }\n\n ref = useCombinedRefs(ref);\n\n let onSubmitCallback;\n\n if ((onSubmit || onSubmitFailed) && !otherProps.action) {\n onSubmitCallback = async (e) => {\n if (e && e?.preventDefault) {\n e && e?.preventDefault && e?.preventDefault();\n e && e?.stopPropagation && e?.stopPropagation();\n\n if (e.nativeEvent) {\n const evt = e.nativeEvent;\n\n if (\n evt.submitter &&\n evt.submitter.getAttribute('type') !== 'submit'\n ) {\n return;\n }\n }\n }\n\n if (!form || form.isSubmitting) return;\n\n form.submitError = null;\n form.setSubmitting(true);\n\n try {\n try {\n await form.validateFields();\n } catch (e) {\n form?.setSubmitting(false);\n\n return;\n }\n\n await timeout();\n await onSubmit?.(form.getFormData());\n } catch (e) {\n await timeout();\n\n // errors are shown\n form.submitError = e as ReactNode;\n // transfer errors to the callback\n onSubmitFailed?.(e);\n\n if (e instanceof Error) {\n throw e;\n }\n } finally {\n form?.setSubmitting(false);\n }\n\n // output data from form directly\n // onSubmit(Object.fromEntries(new FormData(e.target).entries()));\n };\n }\n\n [form] = useForm<T>(form, ref && ref.current, {\n onSubmit: onSubmitCallback,\n onValuesChange,\n });\n\n // A native reset (`ResetButton` is `type=\"reset\"`) reaches React Aria's\n // `useFormReset` listener on every input, which writes the value the input\n // started with through `onChange` and ignores `preventDefault`; a\n // `CheckboxGroup` even lands on `[]`. Reset the form once instead, in\n // capture, before those listeners run, as `ModernFormRoot` does, and report\n // the result to `onValuesChange`. Also with `action`: it hands only the submit\n // to the browser, and the form still owns every bound value. Controls it does\n // not own get the browser's reset from `resetUnboundControls`.\n const handleReset = useEvent((event: FormEvent<HTMLFormElement>) => {\n event.stopPropagation();\n event.preventDefault();\n resetUnboundControls(\n event.currentTarget,\n (name) => form.getFieldInstance(name) != null,\n );\n form.resetFields();\n form.onValuesChange?.(form.getFormData());\n });\n\n let styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n if (labelWidth) {\n styles['$label-width'] = labelWidth;\n }\n\n let domRef = useObjectRef(ref);\n\n const presentation: FormPresentationContextValue = {\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n idPrefix: name,\n };\n\n let ctx = {\n ...presentation,\n form,\n submitError: form.submitError,\n };\n\n if (firstRunRef.current && form) {\n if (defaultValues) {\n form.setInitialFieldsValue(defaultValues);\n form.resetFields(undefined, true);\n firstRunRef.current = false;\n }\n }\n\n if (defaultValuesRef.current !== defaultValues) {\n form?.setInitialFieldsValue(defaultValues ?? {});\n defaultValuesRef.current = defaultValues;\n }\n\n return (\n <FormElement\n {...filterBaseProps(otherProps, { propNames: formPropNames })}\n ref={domRef}\n noValidate\n qa={qa}\n styles={styles}\n mods={{\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n horizontal: isHorizontal,\n }}\n onSubmit={onSubmitCallback}\n onResetCapture={handleReset}\n >\n <ModernControllerContext.Provider value={null}>\n <FormPresentationContext.Provider value={presentation}>\n <FormContext.Provider value={ctx}>\n <Provider\n insideForm={true}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n >\n {children}\n </Provider>\n </FormContext.Provider>\n </FormPresentationContext.Provider>\n </ModernControllerContext.Provider>\n </FormElement>\n );\n}\n\nconst _LegacyFormRoot = forwardRef(LegacyFormRoot) as unknown as <\n T extends FieldTypes,\n>(\n props: CubeFormProps<T> & { ref?: Ref<HTMLFormElement> },\n) => ReactElement;\n\n(_LegacyFormRoot as any).displayName = 'LegacyFormRoot';\n\n/**\n * The `<Form>` facade. It chooses the root by the brand of the `form` prop\n * before any backend hook runs. Without an explicit modern controller it is\n * the legacy root, so existing `<Form>` and `Form.useForm()` keep their behavior.\n */\nfunction Form<T extends FieldTypes>(\n props: CubeFormProps<T> | ModernFormProps<T>,\n ref: Ref<HTMLFormElement>,\n) {\n if (isModernFormController(props.form)) {\n return <ModernFormRoot {...(props as ModernFormProps<T>)} ref={ref} />;\n }\n\n return <_LegacyFormRoot {...(props as CubeFormProps<T>)} ref={ref} />;\n}\n\n/**\n * Forms allow users to enter data that can be submitted while providing alignment and styling for form fields.\n */\nconst _Form = forwardRef(Form) as unknown as FormRootComponent;\n\n(_Form as any).displayName = 'Form';\n\nexport { _Form as Form, _LegacyFormRoot as LegacyFormRoot };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | 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 { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -7,6 +7,7 @@ import { Provider, useProviderProps } from "../../../provider.js";
7
7
  import { useValidationProps } from "../validation/use-validation-props.js";
8
8
  import { ModernControllerContext } from "./modern/context.js";
9
9
  import { getControllerInternals } from "./modern/controller.js";
10
+ import { resetUnboundControls } from "./reset-unbound-controls.js";
10
11
  import { FormContext, FormElement, FormPresentationContext, formPropNames } from "./Form.js";
11
12
  import { c } from "react-compiler-runtime";
12
13
  import { CONTAINER_STYLES, filterBaseProps } from "@tenphi/tasty";
@@ -16,7 +17,7 @@ import { jsx } from "react/jsx-runtime";
16
17
  //#region src/components/form/Form/ModernFormRoot.tsx
17
18
  const EMPTY_LEGACY_CONTEXT = {};
18
19
  function ModernFormRoot(props, ref) {
19
- const $ = c(87);
20
+ const $ = c(86);
20
21
  const resolved = useValidationProps(useProviderProps(props));
21
22
  let authoredLabelPosition;
22
23
  let authoredLabelWidth;
@@ -190,6 +191,8 @@ function ModernFormRoot(props, ref) {
190
191
  otherProps.onReset?.(event_0);
191
192
  if (!event_0.defaultPrevented) {
192
193
  event_0.preventDefault();
194
+ const { fields } = form.getSnapshot();
195
+ resetUnboundControls(event_0.currentTarget, (name_0) => !!fields[name_0]?.active);
193
196
  form.reset();
194
197
  }
195
198
  };
@@ -251,11 +254,9 @@ function ModernFormRoot(props, ref) {
251
254
  $[64] = t18;
252
255
  } else t18 = $[64];
253
256
  const t19 = otherProps.action == null ? handleSubmit : void 0;
254
- const t20 = otherProps.action == null ? void 0 : otherProps.onReset;
255
- const t21 = otherProps.action == null ? handleReset : void 0;
256
- let t22;
257
+ let t20;
257
258
  if ($[65] !== children || $[66] !== isDisabled || $[67] !== isInvalid || $[68] !== isReadOnly || $[69] !== isValid) {
258
- t22 = /* @__PURE__ */ jsx(Provider, {
259
+ t20 = /* @__PURE__ */ jsx(Provider, {
259
260
  insideForm: true,
260
261
  isDisabled,
261
262
  isReadOnly,
@@ -268,34 +269,34 @@ function ModernFormRoot(props, ref) {
268
269
  $[67] = isInvalid;
269
270
  $[68] = isReadOnly;
270
271
  $[69] = isValid;
271
- $[70] = t22;
272
- } else t22 = $[70];
273
- let t23;
274
- if ($[71] !== presentation || $[72] !== t22) {
275
- t23 = /* @__PURE__ */ jsx(FormPresentationContext.Provider, {
272
+ $[70] = t20;
273
+ } else t20 = $[70];
274
+ let t21;
275
+ if ($[71] !== presentation || $[72] !== t20) {
276
+ t21 = /* @__PURE__ */ jsx(FormPresentationContext.Provider, {
276
277
  value: presentation,
277
- children: t22
278
+ children: t20
278
279
  });
279
280
  $[71] = presentation;
280
- $[72] = t22;
281
- $[73] = t23;
282
- } else t23 = $[73];
283
- let t24;
284
- if ($[74] !== form || $[75] !== t23) {
285
- t24 = /* @__PURE__ */ jsx(FormContext.Provider, {
281
+ $[72] = t20;
282
+ $[73] = t21;
283
+ } else t21 = $[73];
284
+ let t22;
285
+ if ($[74] !== form || $[75] !== t21) {
286
+ t22 = /* @__PURE__ */ jsx(FormContext.Provider, {
286
287
  value: EMPTY_LEGACY_CONTEXT,
287
288
  children: /* @__PURE__ */ jsx(ModernControllerContext.Provider, {
288
289
  value: form,
289
- children: t23
290
+ children: t21
290
291
  })
291
292
  });
292
293
  $[74] = form;
293
- $[75] = t23;
294
- $[76] = t24;
295
- } else t24 = $[76];
296
- let t25;
297
- if ($[77] !== mergedRef || $[78] !== qa || $[79] !== styles || $[80] !== t14 || $[81] !== t18 || $[82] !== t19 || $[83] !== t20 || $[84] !== t21 || $[85] !== t24) {
298
- t25 = /* @__PURE__ */ jsx(FormElement, {
294
+ $[75] = t21;
295
+ $[76] = t22;
296
+ } else t22 = $[76];
297
+ let t23;
298
+ if ($[77] !== handleReset || $[78] !== mergedRef || $[79] !== qa || $[80] !== styles || $[81] !== t14 || $[82] !== t18 || $[83] !== t19 || $[84] !== t22) {
299
+ t23 = /* @__PURE__ */ jsx(FormElement, {
299
300
  ...t14,
300
301
  ref: mergedRef,
301
302
  qa,
@@ -303,22 +304,20 @@ function ModernFormRoot(props, ref) {
303
304
  styles,
304
305
  mods: t18,
305
306
  onSubmit: t19,
306
- onReset: t20,
307
- onResetCapture: t21,
308
- children: t24
307
+ onResetCapture: handleReset,
308
+ children: t22
309
309
  });
310
- $[77] = mergedRef;
311
- $[78] = qa;
312
- $[79] = styles;
313
- $[80] = t14;
314
- $[81] = t18;
315
- $[82] = t19;
316
- $[83] = t20;
317
- $[84] = t21;
318
- $[85] = t24;
319
- $[86] = t25;
320
- } else t25 = $[86];
321
- return t25;
310
+ $[77] = handleReset;
311
+ $[78] = mergedRef;
312
+ $[79] = qa;
313
+ $[80] = styles;
314
+ $[81] = t14;
315
+ $[82] = t18;
316
+ $[83] = t19;
317
+ $[84] = t22;
318
+ $[85] = t23;
319
+ } else t23 = $[85];
320
+ return t23;
322
321
  }
323
322
  const _ModernFormRoot = forwardRef(ModernFormRoot);
324
323
  _ModernFormRoot.displayName = "ModernFormRoot";
@@ -1 +1 @@
1
- {"version":3,"file":"ModernFormRoot.js","names":["CONTAINER_STYLES","filterBaseProps","forwardRef","useMemo","useRef","useEvent","Provider","useProviderProps","mergeRefs","useLayoutEffect","extractStyles","useValidationProps","FormContext","FormElement","FormPresentationContext","formPropNames","ModernControllerContext","getControllerInternals","FormEvent","ReactElement","ReactNode","Ref","CubeFormProps","FormPresentationContextValue","FormController","CallbackBinding","FormCallbacks","ModernFormProps","Record","Omit","T","form","defaultValues","onReset","event","HTMLFormElement","onResetCapture","onSubmit","onSubmitFailed","onValuesChange","submitValues","EMPTY_LEGACY_CONTEXT","InternalModernFormProps","onSubmitted","ModernFormRoot","props","ref","$","_c","resolved","authoredLabelPosition","authoredLabelWidth","children","isDisabled","isInvalid","isReadOnly","isValid","labelStyles","name","necessityIndicator","otherProps","qa","showValid","t0","t1","t2","validateTrigger","orientation","labelPosition","labelWidth","requiredMark","undefined","t3","internals","store","rootRef","t4","mergedRef","t5","t6","bindRootElement","current","Error","binding","t7","handleSubmitted","t8","t9","token","bindCallbacks","release","t10","update","t11","preventDefault","stopPropagation","submit","include","handleSubmit","t12","event_0","defaultPrevented","reset","handleReset","t13","idPrefix","presentation","styles","t14","propNames","t15","t16","t17","t18","horizontal","t19","action","t20","t21","t22","t23","t24","t25","_ModernFormRoot","displayName"],"sources":["../../../../src/components/form/Form/ModernFormRoot.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps } from '@tenphi/tasty';\nimport { forwardRef, useMemo, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { Provider, useProviderProps } from '../../../provider';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { extractStyles } from '../../../utils/styles';\nimport { useValidationProps } from '../validation/use-validation-props';\n\nimport {\n FormContext,\n FormElement,\n FormPresentationContext,\n formPropNames,\n} from './Form';\nimport { ModernControllerContext } from './modern/context';\nimport { getControllerInternals } from './modern/controller';\n\nimport type { FormEvent, ReactElement, ReactNode, Ref } from 'react';\nimport type { CubeFormProps, FormPresentationContextValue } from './Form';\nimport type { FormController } from './modern/controller';\nimport type { CallbackBinding, FormCallbacks } from './modern/types';\n\n/** Modern root owns callback bindings; subscriptions stay in descendants. */\nexport interface ModernFormProps<T extends object = Record<string, unknown>>\n extends Omit<\n CubeFormProps<T>,\n 'form' | 'defaultValues' | 'onSubmit' | 'onSubmitFailed' | 'onValuesChange'\n > {\n form: FormController<T>;\n defaultValues?: never;\n /** Runs before a controller reset; preventDefault cancels the reset, including nested controls. */\n onReset?: (event: FormEvent<HTMLFormElement>) => void;\n /** Reserved for controller reset interception. Use onReset to cancel. */\n onResetCapture?: never;\n onSubmit?: FormCallbacks<T, ReactNode>['onSubmit'];\n onSubmitFailed?: FormCallbacks<T, ReactNode>['onSubmitFailed'];\n onValuesChange?: FormCallbacks<T, ReactNode>['onValuesChange'];\n /** Payload selection for native submission, including Enter and external buttons. */\n submitValues?: 'active' | 'all';\n}\n\nconst EMPTY_LEGACY_CONTEXT = {};\n\n/** Wrapper lifecycle hook, intentionally absent from the public Form props. */\ninterface InternalModernFormProps<T extends object> extends ModernFormProps<T> {\n onSubmitted?: () => void;\n}\n\nfunction ModernFormRoot<T extends object>(\n props: InternalModernFormProps<T>,\n ref: Ref<HTMLFormElement>,\n): ReactElement {\n const resolved = useValidationProps(useProviderProps(props));\n const {\n form,\n qa,\n name,\n children,\n orientation = 'vertical',\n labelPosition: authoredLabelPosition,\n labelWidth: authoredLabelWidth,\n labelStyles,\n necessityIndicator,\n validateTrigger,\n requiredMark = true,\n showValid,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n defaultValues,\n onSubmit,\n onSubmitted,\n onSubmitFailed,\n onValuesChange,\n submitValues = 'active',\n ...otherProps\n } = resolved;\n const labelPosition =\n authoredLabelPosition ?? (orientation === 'horizontal' ? 'side' : 'top');\n const labelWidth =\n authoredLabelWidth ?? (orientation === 'horizontal' ? 'auto' : undefined);\n const internals = getControllerInternals(form, '<Form>');\n const { store } = internals;\n const rootRef = useRef<HTMLFormElement>(null);\n const mergedRef = useMemo(() => mergeRefs(ref, rootRef), [ref]);\n useLayoutEffect(\n () => internals.bindRootElement(rootRef.current),\n [internals],\n );\n if (defaultValues !== undefined) {\n throw new Error(\n 'A modern <Form> does not accept defaultValues. Seed Form.useController() or use an explicit defaults command.',\n );\n }\n const binding = useRef<CallbackBinding<T, ReactNode> | undefined>(undefined);\n const handleSubmitted = useEvent(() => onSubmitted?.());\n useLayoutEffect(() => {\n const token = store.bindCallbacks({}, handleSubmitted);\n binding.current = token;\n return () => {\n token.release();\n if (binding.current === token) binding.current = undefined;\n };\n }, [store, handleSubmitted]);\n useLayoutEffect(() => {\n binding.current?.update({\n ...(onSubmit === undefined ? {} : { onSubmit }),\n ...(onSubmitFailed === undefined ? {} : { onSubmitFailed }),\n ...(onValuesChange === undefined ? {} : { onValuesChange }),\n });\n });\n const handleSubmit = useEvent((event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n event.stopPropagation();\n void form.submit({ include: submitValues });\n });\n const handleReset = useEvent((event: FormEvent<HTMLFormElement>) => {\n // React Aria's native reset listeners do not honor preventDefault. Handle\n // controller resets in capture, before they can write mount-time defaults.\n event.stopPropagation();\n otherProps.onReset?.(event);\n if (!event.defaultPrevented) {\n event.preventDefault();\n form.reset();\n }\n });\n const presentation = useMemo<FormPresentationContextValue>(\n () => ({\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n idPrefix: name,\n }),\n [\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n name,\n ],\n );\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n if (labelWidth) styles['$label-width'] = labelWidth;\n\n return (\n <FormElement\n {...filterBaseProps(otherProps, { propNames: formPropNames })}\n ref={mergedRef}\n qa={qa}\n noValidate\n styles={styles}\n mods={{\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n horizontal: orientation === 'horizontal',\n }}\n onSubmit={otherProps.action == null ? handleSubmit : undefined}\n onReset={otherProps.action == null ? undefined : otherProps.onReset}\n onResetCapture={otherProps.action == null ? handleReset : undefined}\n >\n <FormContext.Provider value={EMPTY_LEGACY_CONTEXT}>\n <ModernControllerContext.Provider value={form}>\n <FormPresentationContext.Provider value={presentation}>\n <Provider\n insideForm\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n >\n {children}\n </Provider>\n </FormPresentationContext.Provider>\n </ModernControllerContext.Provider>\n </FormContext.Provider>\n </FormElement>\n );\n}\n\nconst _ModernFormRoot = forwardRef(ModernFormRoot) as unknown as <\n T extends object,\n>(\n props: InternalModernFormProps<T> & { ref?: Ref<HTMLFormElement> },\n) => ReactElement;\n\n(_ModernFormRoot as any).displayName = 'ModernFormRoot';\n\nexport { _ModernFormRoot as ModernFormRoot };\n"],"mappings":"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"}
1
+ {"version":3,"file":"ModernFormRoot.js","names":["CONTAINER_STYLES","filterBaseProps","forwardRef","useMemo","useRef","useEvent","Provider","useProviderProps","mergeRefs","useLayoutEffect","extractStyles","useValidationProps","FormContext","FormElement","FormPresentationContext","formPropNames","ModernControllerContext","getControllerInternals","resetUnboundControls","FormEvent","ReactElement","ReactNode","Ref","CubeFormProps","FormPresentationContextValue","FormController","CallbackBinding","FormCallbacks","ModernFormProps","Record","Omit","T","form","defaultValues","onReset","event","HTMLFormElement","onResetCapture","onSubmit","onSubmitFailed","onValuesChange","submitValues","EMPTY_LEGACY_CONTEXT","InternalModernFormProps","onSubmitted","ModernFormRoot","props","ref","$","_c","resolved","authoredLabelPosition","authoredLabelWidth","children","isDisabled","isInvalid","isReadOnly","isValid","labelStyles","name","necessityIndicator","otherProps","qa","showValid","t0","t1","t2","validateTrigger","orientation","labelPosition","labelWidth","requiredMark","undefined","t3","internals","store","rootRef","t4","mergedRef","t5","t6","bindRootElement","current","Error","binding","t7","handleSubmitted","t8","t9","token","bindCallbacks","release","t10","update","t11","preventDefault","stopPropagation","submit","include","handleSubmit","t12","event_0","defaultPrevented","fields","getSnapshot","currentTarget","name_0","active","reset","handleReset","t13","idPrefix","presentation","styles","t14","propNames","t15","t16","t17","t18","horizontal","t19","action","t20","t21","t22","t23","_ModernFormRoot","displayName"],"sources":["../../../../src/components/form/Form/ModernFormRoot.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps } from '@tenphi/tasty';\nimport { forwardRef, useMemo, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { Provider, useProviderProps } from '../../../provider';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { extractStyles } from '../../../utils/styles';\nimport { useValidationProps } from '../validation/use-validation-props';\n\nimport {\n FormContext,\n FormElement,\n FormPresentationContext,\n formPropNames,\n} from './Form';\nimport { ModernControllerContext } from './modern/context';\nimport { getControllerInternals } from './modern/controller';\nimport { resetUnboundControls } from './reset-unbound-controls';\n\nimport type { FormEvent, ReactElement, ReactNode, Ref } from 'react';\nimport type { CubeFormProps, FormPresentationContextValue } from './Form';\nimport type { FormController } from './modern/controller';\nimport type { CallbackBinding, FormCallbacks } from './modern/types';\n\n/** Modern root owns callback bindings; subscriptions stay in descendants. */\nexport interface ModernFormProps<T extends object = Record<string, unknown>>\n extends Omit<\n CubeFormProps<T>,\n 'form' | 'defaultValues' | 'onSubmit' | 'onSubmitFailed' | 'onValuesChange'\n > {\n form: FormController<T>;\n defaultValues?: never;\n /** Runs before a controller reset; preventDefault cancels the reset, including nested controls. */\n onReset?: (event: FormEvent<HTMLFormElement>) => void;\n /** Reserved for controller reset interception. Use onReset to cancel. */\n onResetCapture?: never;\n onSubmit?: FormCallbacks<T, ReactNode>['onSubmit'];\n onSubmitFailed?: FormCallbacks<T, ReactNode>['onSubmitFailed'];\n onValuesChange?: FormCallbacks<T, ReactNode>['onValuesChange'];\n /** Payload selection for native submission, including Enter and external buttons. */\n submitValues?: 'active' | 'all';\n}\n\nconst EMPTY_LEGACY_CONTEXT = {};\n\n/** Wrapper lifecycle hook, intentionally absent from the public Form props. */\ninterface InternalModernFormProps<T extends object> extends ModernFormProps<T> {\n onSubmitted?: () => void;\n}\n\nfunction ModernFormRoot<T extends object>(\n props: InternalModernFormProps<T>,\n ref: Ref<HTMLFormElement>,\n): ReactElement {\n const resolved = useValidationProps(useProviderProps(props));\n const {\n form,\n qa,\n name,\n children,\n orientation = 'vertical',\n labelPosition: authoredLabelPosition,\n labelWidth: authoredLabelWidth,\n labelStyles,\n necessityIndicator,\n validateTrigger,\n requiredMark = true,\n showValid,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n defaultValues,\n onSubmit,\n onSubmitted,\n onSubmitFailed,\n onValuesChange,\n submitValues = 'active',\n ...otherProps\n } = resolved;\n const labelPosition =\n authoredLabelPosition ?? (orientation === 'horizontal' ? 'side' : 'top');\n const labelWidth =\n authoredLabelWidth ?? (orientation === 'horizontal' ? 'auto' : undefined);\n const internals = getControllerInternals(form, '<Form>');\n const { store } = internals;\n const rootRef = useRef<HTMLFormElement>(null);\n const mergedRef = useMemo(() => mergeRefs(ref, rootRef), [ref]);\n useLayoutEffect(\n () => internals.bindRootElement(rootRef.current),\n [internals],\n );\n if (defaultValues !== undefined) {\n throw new Error(\n 'A modern <Form> does not accept defaultValues. Seed Form.useController() or use an explicit defaults command.',\n );\n }\n const binding = useRef<CallbackBinding<T, ReactNode> | undefined>(undefined);\n const handleSubmitted = useEvent(() => onSubmitted?.());\n useLayoutEffect(() => {\n const token = store.bindCallbacks({}, handleSubmitted);\n binding.current = token;\n return () => {\n token.release();\n if (binding.current === token) binding.current = undefined;\n };\n }, [store, handleSubmitted]);\n useLayoutEffect(() => {\n binding.current?.update({\n ...(onSubmit === undefined ? {} : { onSubmit }),\n ...(onSubmitFailed === undefined ? {} : { onSubmitFailed }),\n ...(onValuesChange === undefined ? {} : { onValuesChange }),\n });\n });\n const handleSubmit = useEvent((event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n event.stopPropagation();\n void form.submit({ include: submitValues });\n });\n const handleReset = useEvent((event: FormEvent<HTMLFormElement>) => {\n // React Aria's native reset listeners do not honor preventDefault. Handle\n // controller resets in capture, before they can write mount-time defaults.\n // Also with `action`: it hands only the submit to the browser, and\n // `Form.Reset` resets through this event.\n event.stopPropagation();\n otherProps.onReset?.(event);\n if (!event.defaultPrevented) {\n event.preventDefault();\n const { fields } = form.getSnapshot();\n resetUnboundControls(\n event.currentTarget,\n (name) => !!fields[name]?.active,\n );\n form.reset();\n }\n });\n const presentation = useMemo<FormPresentationContextValue>(\n () => ({\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n idPrefix: name,\n }),\n [\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n name,\n ],\n );\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n if (labelWidth) styles['$label-width'] = labelWidth;\n\n return (\n <FormElement\n {...filterBaseProps(otherProps, { propNames: formPropNames })}\n ref={mergedRef}\n qa={qa}\n noValidate\n styles={styles}\n mods={{\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n horizontal: orientation === 'horizontal',\n }}\n onSubmit={otherProps.action == null ? handleSubmit : undefined}\n onResetCapture={handleReset}\n >\n <FormContext.Provider value={EMPTY_LEGACY_CONTEXT}>\n <ModernControllerContext.Provider value={form}>\n <FormPresentationContext.Provider value={presentation}>\n <Provider\n insideForm\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n >\n {children}\n </Provider>\n </FormPresentationContext.Provider>\n </ModernControllerContext.Provider>\n </FormContext.Provider>\n </FormElement>\n );\n}\n\nconst _ModernFormRoot = forwardRef(ModernFormRoot) as unknown as <\n T extends object,\n>(\n props: InternalModernFormProps<T> & { ref?: Ref<HTMLFormElement> },\n) => ReactElement;\n\n(_ModernFormRoot as any).displayName = 'ModernFormRoot';\n\nexport { _ModernFormRoot as ModernFormRoot };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { useProviderProps } from "../../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../../provider.js";
3
3
  import { Button } from "../../../actions/Button/Button.js";
4
4
  import { isModernFormController } from "../backend.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
3
  import { ModernControllerContext } from "./modern/context.js";
4
4
  import { FormContext } from "./Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  //#region src/components/form/Form/backend.ts
3
3
  /**
4
4
  * Nominal branding for the two Form backends (modernization plan §5.1).
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { useFormControllerContext } from "./modern/context.js";
3
3
  import { useForm } from "./use-form.js";
4
4
  import { FormContext, FormScopeMask, _Form, useFormProps } from "./Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
3
3
  import { useProviderProps } from "../../../../provider.js";
4
4
  import { Button } from "../../../actions/Button/Button.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/form/Form/modern/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { FORM_BACKEND, isModernFormController } from "../backend.js";
3
3
  import { createFormField } from "./field.js";
4
4
  import { createFormStore } from "./store.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { getFieldKey, hasPath, normalizePath, readPath } from "./values.js";
3
3
  import { getControllerInternals } from "./controller.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { normalizePath } from "./values.js";
3
3
 
4
4
  //#region src/components/form/Form/modern/field.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
3
3
  import { ModernControllerContext } from "./context.js";
4
4
  import { getFieldKey, normalizePath, readPath } from "./values.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { FORM_BACKEND } from "../backend.js";
3
3
  import { createValueSnapshotter, defineValue, formValueEqual, freezeContainer, getFieldKey, hasPath, isPlainObject, normalizePath, pathValueChanged, readPath, readonlySet, sameMembers, writePath } from "./values.js";
4
4
  import { rulesSignature, runRules } from "./validation.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { applyRule } from "../validation.js";
3
3
 
4
4
  //#region src/components/form/Form/modern/validation.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  //#region src/components/form/Form/modern/values.ts
3
3
  const ownedContainers = /* @__PURE__ */ new WeakSet();
4
4
  function freezeContainer(value) {
@@ -0,0 +1,39 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
+ //#region src/components/form/Form/reset-unbound-controls.ts
3
+ /**
4
+ * Both form roots cancel a native reset, because the browser would put a bound
5
+ * input back to what it rendered on mount, which is not the form's default once
6
+ * defaults arrive after mount. The browser still owes that reset to every
7
+ * control the form does not own, such as a bare `<input name="token">` in an
8
+ * `action` form, so this runs the HTML reset algorithm on each named control
9
+ * that `isBound` rejects. Unnamed controls are left alone: nothing submits
10
+ * them, and they include inputs that React Aria renders and React controls.
11
+ */
12
+ function resetUnboundControls(form, isBound) {
13
+ for (const control of Array.from(form.elements)) {
14
+ const name = control.getAttribute("name");
15
+ if (!name || isBound(name)) continue;
16
+ switch (control.tagName) {
17
+ case "INPUT": {
18
+ const input = control;
19
+ if (input.type === "checkbox" || input.type === "radio") input.checked = input.defaultChecked;
20
+ else if (input.type === "file") input.value = "";
21
+ else if (input.type !== "hidden") input.value = input.defaultValue;
22
+ break;
23
+ }
24
+ case "TEXTAREA":
25
+ case "OUTPUT": {
26
+ const text = control;
27
+ text.value = text.defaultValue;
28
+ break;
29
+ }
30
+ case "SELECT":
31
+ for (const option of Array.from(control.options)) option.selected = option.defaultSelected;
32
+ break;
33
+ }
34
+ }
35
+ }
36
+
37
+ //#endregion
38
+ export { resetUnboundControls };
39
+ //# sourceMappingURL=reset-unbound-controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-unbound-controls.js","names":["resetUnboundControls","form","HTMLFormElement","isBound","name","control","Array","from","elements","getAttribute","tagName","input","HTMLInputElement","type","checked","defaultChecked","value","defaultValue","text","HTMLTextAreaElement","HTMLOutputElement","option","HTMLSelectElement","options","selected","defaultSelected"],"sources":["../../../../src/components/form/Form/reset-unbound-controls.ts"],"sourcesContent":["/**\n * Both form roots cancel a native reset, because the browser would put a bound\n * input back to what it rendered on mount, which is not the form's default once\n * defaults arrive after mount. The browser still owes that reset to every\n * control the form does not own, such as a bare `<input name=\"token\">` in an\n * `action` form, so this runs the HTML reset algorithm on each named control\n * that `isBound` rejects. Unnamed controls are left alone: nothing submits\n * them, and they include inputs that React Aria renders and React controls.\n */\nexport function resetUnboundControls(\n form: HTMLFormElement,\n isBound: (name: string) => boolean,\n) {\n for (const control of Array.from(form.elements)) {\n const name = control.getAttribute('name');\n\n if (!name || isBound(name)) continue;\n\n switch (control.tagName) {\n case 'INPUT': {\n const input = control as HTMLInputElement;\n\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = input.defaultChecked;\n } else if (input.type === 'file') {\n input.value = '';\n } else if (input.type !== 'hidden') {\n input.value = input.defaultValue;\n }\n break;\n }\n case 'TEXTAREA':\n case 'OUTPUT': {\n const text = control as HTMLTextAreaElement | HTMLOutputElement;\n\n text.value = text.defaultValue;\n break;\n }\n case 'SELECT':\n for (const option of Array.from(\n (control as HTMLSelectElement).options,\n )) {\n option.selected = option.defaultSelected;\n }\n break;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AASA,SAAgBA,qBACdC,MACAE,SACA;AACA,MAAK,MAAME,WAAWC,MAAMC,KAAKN,KAAKO,SAAS,EAAE;EAC/C,MAAMJ,OAAOC,QAAQI,aAAa,OAAO;AAEzC,MAAI,CAACL,QAAQD,QAAQC,KAAK,CAAE;AAE5B,UAAQC,QAAQK,SAAhB;GACE,KAAK,SAAS;IACZ,MAAMC,QAAQN;AAEd,QAAIM,MAAME,SAAS,cAAcF,MAAME,SAAS,QAC9CF,OAAMG,UAAUH,MAAMI;aACbJ,MAAME,SAAS,OACxBF,OAAMK,QAAQ;aACLL,MAAME,SAAS,SACxBF,OAAMK,QAAQL,MAAMM;AAEtB;;GAEF,KAAK;GACL,KAAK,UAAU;IACb,MAAMC,OAAOb;AAEba,SAAKF,QAAQE,KAAKD;AAClB;;GAEF,KAAK;AACH,SAAK,MAAMI,UAAUf,MAAMC,KACxBF,QAA8BkB,QAChC,CACCF,QAAOG,WAAWH,OAAOI;AAE3B"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | 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 { isModernFormController } from "../backend.js";
@@ -1,4 +1,5 @@
1
1
 
2
+ import { ModernFormBrand } from "../backend.js";
2
3
  import { ValidateTrigger } from "../../../../shared/form.js";
3
4
  import "../../../../shared/index.js";
4
5
  import { FieldTypes } from "../types.js";
@@ -23,8 +24,19 @@ type UseFieldPropsParams = {
23
24
  */
24
25
  unsafe__isDisabled?: boolean;
25
26
  };
26
- /** Preserve the input's prop shape while exposing a DOM-safe name. */
27
- type ResolvedFieldProps<Props> = { [Key in keyof Props]: Key extends 'name' ? string | undefined : Props[Key] };
27
+ /** Binding inputs `useFieldProps` always strips before it returns. */
28
+ type StrippedFieldKey = 'field' | 'dependsOn' | 'deps';
29
+ /**
30
+ * A modern controller is stripped at runtime, so each member of `form` that is
31
+ * one becomes `undefined`; a legacy instance survives, and `any` stays `any`.
32
+ * Distributive, so it still applies when `Props` is a type parameter.
33
+ */
34
+ type ResolvedFieldForm<Form> = Form extends ModernFormBrand ? undefined : Form;
35
+ /**
36
+ * The input's declared prop shape minus what the hook always strips: a DOM-safe
37
+ * name, no binding inputs, and no modern controller in `form`.
38
+ */
39
+ type ResolvedFieldProps<Props> = { [Key in keyof Props as Key extends StrippedFieldKey ? never : Key]: Key extends 'name' ? string | undefined : Key extends 'form' ? ResolvedFieldForm<Props[Key]> : Props[Key] };
28
40
  /**
29
41
  * The single entry point for input components (see
30
42
  * `docs/rules/input-components.md`).
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { warn } from "../../../../utils/warnings.js";
@@ -1 +1 @@
1
- {"version":3,"file":"use-field-props.js","names":["useDebugValue","useId","useState","useEvent","useProviderProps","mergeProps","warn","useValidationProps","isModernFormController","useInsideLegacyField","useFormProps","getFieldKey","useFieldBinding","ValidateTrigger","FieldTypes","UseFieldProps","UseFieldPropsParams","valuePropsMapper","value","onChange","defaultValidationTrigger","unsafe__isDisabled","defaultValuePropsMapper","ResolvedFieldProps","Props","Key","useFieldProps","inputProps","t0","$","_c","t1","undefined","params","provided","t2","field","options","form","name","path","props","isDisabled","t3","t4","isInsideLegacyField","rules","hasName","generatedId","isBound","t5","t6","unbound","isOutsideOfForm","t7","dontTouch","validateTrigger","onChangeEvent","t8","resolveResult","id","result","labelProps","for","valueProps","_form","_fieldOnChange","onBlur","_fieldOnBlur","fieldRest","result_0","resolved","result_1","_descriptor","dependsOn","_dependsOn","deps","_deps","domProps","namedProps"],"sources":["../../../../../src/components/form/Form/use-field/use-field-props.tsx"],"sourcesContent":["import { useDebugValue, useId, useState } from 'react';\n\nimport { useEvent } from '../../../../_internal/index';\nimport { useProviderProps } from '../../../../provider';\nimport { mergeProps } from '../../../../utils/react/index';\nimport { warn } from '../../../../utils/warnings';\nimport { useValidationProps } from '../../validation/index';\nimport { isModernFormController } from '../backend';\nimport { useInsideLegacyField } from '../Field';\nimport { useFormProps } from '../Form';\nimport { getFieldKey } from '../modern/values';\n\nimport { useFieldBinding } from './use-field-binding';\n\nimport type { ValidateTrigger } from '../../../../shared/index';\nimport type { FieldTypes } from '../types';\nimport type { UseFieldProps } from './types';\n\nexport type UseFieldPropsParams = {\n valuePropsMapper?: ({ value, onChange }) => any;\n /**\n * @default 'onBlur'\n */\n defaultValidationTrigger?: ValidateTrigger;\n /**\n * prop helps to prevent calling hook conditionally, but changing this prop during render is unsafe and forbidden\n * If you want to change this prop after mount, remount the component with a new value.\n */\n unsafe__isDisabled?: boolean;\n};\n\nconst defaultValuePropsMapper = ({ value, onChange }) => ({\n value: value ?? null,\n onChange,\n});\n\n/** Preserve the input's prop shape while exposing a DOM-safe name. */\ntype ResolvedFieldProps<Props> = {\n [Key in keyof Props]: Key extends 'name' ? string | undefined : Props[Key];\n};\n\n/**\n * The single entry point for input components (see\n * `docs/rules/input-components.md`).\n *\n * Every hook below runs on every render, whatever the mode: standalone (no\n * `name`), inside the deprecated `<Field>`, disabled through\n * `unsafe__isDisabled`, or bound to a form. The mode only decides which props\n * come back, so an input can gain or lose a `name`, or move between forms,\n * without changing its hook order. The legacy binding (`useField`) is the\n * legacy backend's adapter and is inert when the field is not bound to it.\n */\nexport function useFieldProps<\n T extends FieldTypes,\n Props extends UseFieldProps<T>,\n>(\n inputProps: Props,\n params: UseFieldPropsParams = {},\n): ResolvedFieldProps<Props> {\n // Provider defaults, then form context, then the normalization of the\n // deprecated `validationState` prop into `isInvalid`/`isValid`.\n const provided = useProviderProps(inputProps);\n const props: Props = useValidationProps(\n useFormProps(\n provided.field\n ? {\n ...provided,\n ...provided.field.options,\n form: provided.field.form,\n name:\n typeof provided.field.path === 'string'\n ? provided.field.path\n : getFieldKey(provided.field.path),\n }\n : provided,\n ),\n );\n\n // The initial value is what counts: changing it after mount is unsupported.\n const [isDisabled] = useState(params.unsafe__isDisabled ?? false);\n\n const {\n valuePropsMapper = defaultValuePropsMapper,\n defaultValidationTrigger = 'onBlur',\n } = params;\n\n const isInsideLegacyField = useInsideLegacyField();\n\n if (props.rules && !props.name) {\n warn(\n `The \"rules\" prop is not suitable for fields that are not part of a form. Use \"name\" prop to link the field to a form.`,\n );\n }\n\n const hasName = props.name != null;\n const generatedId = useId();\n const isBound = hasName && !isInsideLegacyField && !isDisabled;\n\n const field = useFieldBinding<T, Props>(\n props,\n {\n defaultValidationTrigger: params.defaultValidationTrigger,\n unbound: !isBound,\n },\n generatedId,\n );\n\n const isOutsideOfForm = field?.form == null;\n\n const onChangeEvent = useEvent((value, dontTouch: boolean) => {\n field?.onChange?.(\n value,\n dontTouch,\n field?.validateTrigger ?? defaultValidationTrigger,\n );\n });\n\n function resolveResult(): Props {\n if (isInsideLegacyField || isDisabled) {\n return props;\n }\n\n if (!hasName) {\n // Standalone field - just add generated ID if not provided\n if (!props.id) {\n const result = { ...props, id: generatedId };\n\n if (result.id && !result.labelProps) {\n result.labelProps = { for: result.id };\n } else if (result.id && result.labelProps && !result.labelProps.for) {\n result.labelProps = { ...result.labelProps, for: result.id };\n }\n\n return result as Props;\n }\n return props;\n }\n\n if (props.rules && isOutsideOfForm) {\n warn(\n `The \"rules\" prop is not supported for fields that are not part of a form. The \"${props.name}\" field is placed outside the form.`,\n );\n }\n\n const valueProps = !isOutsideOfForm\n ? valuePropsMapper({\n value: field.value,\n onChange: onChangeEvent,\n })\n : {};\n\n // Exclude `form` (it must never reach a DOM node) and the field's own\n // handlers: `valueProps` already routes the component's change event into\n // `field.onChange` under the name the component listens to, and `onBlur` is\n // added once below. `mergeProps` chains same-named handlers, so merging them\n // here as well made every user change and every blur run the field handler\n // twice — and onChange/onBlur-triggered validation validate twice.\n const {\n form: _form,\n onChange: _fieldOnChange,\n onBlur: _fieldOnBlur,\n ...fieldRest\n } = field ?? {};\n\n const result: Props = isOutsideOfForm\n ? props\n : mergeProps(props, fieldRest, valueProps, {\n validateTrigger: field.validateTrigger ?? defaultValidationTrigger,\n // Chained after the caller's own `onBlur` by `mergeProps`.\n onBlur: field.onBlur,\n });\n\n return result.id\n ? { ...result, labelProps: { ...result.labelProps, for: result.id } }\n : result;\n }\n\n const resolved = resolveResult();\n // React Aria forwards `form` to native inputs. A modern controller is a\n // binding source, never an HTML form id, including in standalone/group mode.\n const result = isModernFormController(resolved.form)\n ? { ...resolved, form: undefined }\n : resolved;\n\n const {\n field: _descriptor,\n dependsOn: _dependsOn,\n deps: _deps,\n ...domProps\n } = result;\n // Standalone and group-scoped inputs do not merge a bound field's props.\n // Their tuple must still become a string before React Aria or DOM forwarding.\n const namedProps =\n domProps.name != null && typeof domProps.name !== 'string'\n ? { ...domProps, name: getFieldKey(domProps.name) }\n : domProps;\n useDebugValue(namedProps);\n\n return namedProps as ResolvedFieldProps<Props>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-field-props.js","names":["useDebugValue","useId","useState","useEvent","useProviderProps","mergeProps","warn","useValidationProps","isModernFormController","useInsideLegacyField","useFormProps","getFieldKey","useFieldBinding","ValidateTrigger","ModernFormBrand","FieldTypes","UseFieldProps","UseFieldPropsParams","valuePropsMapper","value","onChange","defaultValidationTrigger","unsafe__isDisabled","defaultValuePropsMapper","StrippedFieldKey","ResolvedFieldForm","Form","ResolvedFieldProps","Props","Key","useFieldProps","inputProps","t0","$","_c","t1","undefined","params","provided","t2","field","options","form","name","path","props","isDisabled","t3","t4","isInsideLegacyField","rules","hasName","generatedId","isBound","t5","t6","unbound","isOutsideOfForm","t7","dontTouch","validateTrigger","onChangeEvent","t8","resolveResult","id","result","labelProps","for","valueProps","_form","_fieldOnChange","onBlur","_fieldOnBlur","fieldRest","result_0","resolved","result_1","_descriptor","dependsOn","_dependsOn","deps","_deps","domProps","namedProps"],"sources":["../../../../../src/components/form/Form/use-field/use-field-props.tsx"],"sourcesContent":["import { useDebugValue, useId, useState } from 'react';\n\nimport { useEvent } from '../../../../_internal/index';\nimport { useProviderProps } from '../../../../provider';\nimport { mergeProps } from '../../../../utils/react/index';\nimport { warn } from '../../../../utils/warnings';\nimport { useValidationProps } from '../../validation/index';\nimport { isModernFormController } from '../backend';\nimport { useInsideLegacyField } from '../Field';\nimport { useFormProps } from '../Form';\nimport { getFieldKey } from '../modern/values';\n\nimport { useFieldBinding } from './use-field-binding';\n\nimport type { ValidateTrigger } from '../../../../shared/index';\nimport type { ModernFormBrand } from '../backend';\nimport type { FieldTypes } from '../types';\nimport type { UseFieldProps } from './types';\n\nexport type UseFieldPropsParams = {\n valuePropsMapper?: ({ value, onChange }) => any;\n /**\n * @default 'onBlur'\n */\n defaultValidationTrigger?: ValidateTrigger;\n /**\n * prop helps to prevent calling hook conditionally, but changing this prop during render is unsafe and forbidden\n * If you want to change this prop after mount, remount the component with a new value.\n */\n unsafe__isDisabled?: boolean;\n};\n\nconst defaultValuePropsMapper = ({ value, onChange }) => ({\n value: value ?? null,\n onChange,\n});\n\n/** Binding inputs `useFieldProps` always strips before it returns. */\ntype StrippedFieldKey = 'field' | 'dependsOn' | 'deps';\n\n/**\n * A modern controller is stripped at runtime, so each member of `form` that is\n * one becomes `undefined`; a legacy instance survives, and `any` stays `any`.\n * Distributive, so it still applies when `Props` is a type parameter.\n */\ntype ResolvedFieldForm<Form> = Form extends ModernFormBrand ? undefined : Form;\n\n/**\n * The input's declared prop shape minus what the hook always strips: a DOM-safe\n * name, no binding inputs, and no modern controller in `form`.\n */\ntype ResolvedFieldProps<Props> = {\n [Key in keyof Props as Key extends StrippedFieldKey\n ? never\n : Key]: Key extends 'name'\n ? string | undefined\n : Key extends 'form'\n ? ResolvedFieldForm<Props[Key]>\n : Props[Key];\n};\n\n/**\n * The single entry point for input components (see\n * `docs/rules/input-components.md`).\n *\n * Every hook below runs on every render, whatever the mode: standalone (no\n * `name`), inside the deprecated `<Field>`, disabled through\n * `unsafe__isDisabled`, or bound to a form. The mode only decides which props\n * come back, so an input can gain or lose a `name`, or move between forms,\n * without changing its hook order. The legacy binding (`useField`) is the\n * legacy backend's adapter and is inert when the field is not bound to it.\n */\nexport function useFieldProps<\n T extends FieldTypes,\n Props extends UseFieldProps<T>,\n>(\n inputProps: Props,\n params: UseFieldPropsParams = {},\n): ResolvedFieldProps<Props> {\n // Provider defaults, then form context, then the normalization of the\n // deprecated `validationState` prop into `isInvalid`/`isValid`.\n const provided = useProviderProps(inputProps);\n const props: Props = useValidationProps(\n useFormProps(\n provided.field\n ? {\n ...provided,\n ...provided.field.options,\n form: provided.field.form,\n name:\n typeof provided.field.path === 'string'\n ? provided.field.path\n : getFieldKey(provided.field.path),\n }\n : provided,\n ),\n );\n\n // The initial value is what counts: changing it after mount is unsupported.\n const [isDisabled] = useState(params.unsafe__isDisabled ?? false);\n\n const {\n valuePropsMapper = defaultValuePropsMapper,\n defaultValidationTrigger = 'onBlur',\n } = params;\n\n const isInsideLegacyField = useInsideLegacyField();\n\n if (props.rules && !props.name) {\n warn(\n `The \"rules\" prop is not suitable for fields that are not part of a form. Use \"name\" prop to link the field to a form.`,\n );\n }\n\n const hasName = props.name != null;\n const generatedId = useId();\n const isBound = hasName && !isInsideLegacyField && !isDisabled;\n\n const field = useFieldBinding<T, Props>(\n props,\n {\n defaultValidationTrigger: params.defaultValidationTrigger,\n unbound: !isBound,\n },\n generatedId,\n );\n\n const isOutsideOfForm = field?.form == null;\n\n const onChangeEvent = useEvent((value, dontTouch: boolean) => {\n field?.onChange?.(\n value,\n dontTouch,\n field?.validateTrigger ?? defaultValidationTrigger,\n );\n });\n\n function resolveResult(): Props {\n if (isInsideLegacyField || isDisabled) {\n return props;\n }\n\n if (!hasName) {\n // Standalone field - just add generated ID if not provided\n if (!props.id) {\n const result = { ...props, id: generatedId };\n\n if (result.id && !result.labelProps) {\n result.labelProps = { for: result.id };\n } else if (result.id && result.labelProps && !result.labelProps.for) {\n result.labelProps = { ...result.labelProps, for: result.id };\n }\n\n return result as Props;\n }\n return props;\n }\n\n if (props.rules && isOutsideOfForm) {\n warn(\n `The \"rules\" prop is not supported for fields that are not part of a form. The \"${props.name}\" field is placed outside the form.`,\n );\n }\n\n const valueProps = !isOutsideOfForm\n ? valuePropsMapper({\n value: field.value,\n onChange: onChangeEvent,\n })\n : {};\n\n // Exclude `form` (it must never reach a DOM node) and the field's own\n // handlers: `valueProps` already routes the component's change event into\n // `field.onChange` under the name the component listens to, and `onBlur` is\n // added once below. `mergeProps` chains same-named handlers, so merging them\n // here as well made every user change and every blur run the field handler\n // twice — and onChange/onBlur-triggered validation validate twice.\n const {\n form: _form,\n onChange: _fieldOnChange,\n onBlur: _fieldOnBlur,\n ...fieldRest\n } = field ?? {};\n\n const result: Props = isOutsideOfForm\n ? props\n : mergeProps(props, fieldRest, valueProps, {\n validateTrigger: field.validateTrigger ?? defaultValidationTrigger,\n // Chained after the caller's own `onBlur` by `mergeProps`.\n onBlur: field.onBlur,\n });\n\n return result.id\n ? { ...result, labelProps: { ...result.labelProps, for: result.id } }\n : result;\n }\n\n const resolved = resolveResult();\n // React Aria forwards `form` to native inputs. A modern controller is a\n // binding source, never an HTML form id, including in standalone/group mode.\n const result = isModernFormController(resolved.form)\n ? { ...resolved, form: undefined }\n : resolved;\n\n const {\n field: _descriptor,\n dependsOn: _dependsOn,\n deps: _deps,\n ...domProps\n } = result;\n // Standalone and group-scoped inputs do not merge a bound field's props.\n // Their tuple must still become a string before React Aria or DOM forwarding.\n const namedProps =\n domProps.name != null && typeof domProps.name !== 'string'\n ? { ...domProps, name: getFieldKey(domProps.name) }\n : domProps;\n useDebugValue(namedProps);\n\n return namedProps as unknown as ResolvedFieldProps<Props>;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | 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";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | 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";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | 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.185.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.185.2 | 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";