@cube-dev/ui-kit 0.0.0-canary-ac46c4b → 0.0.0-canary-9bde021

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 (621) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.js +1 -1
  11. package/dist/components/GlobalStyles.js +1 -1
  12. package/dist/components/GridProvider.js +1 -1
  13. package/dist/components/HiddenInput.js +1 -1
  14. package/dist/components/Root.js +1 -1
  15. package/dist/components/actions/Action/Action.js +1 -1
  16. package/dist/components/actions/Banner/Banner.js +1 -1
  17. package/dist/components/actions/Button/Button.js +1 -1
  18. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  19. package/dist/components/actions/ButtonSplit/ButtonSplit.js +2 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -8
  23. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  28. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  29. package/dist/components/actions/Link/Link.js +1 -1
  30. package/dist/components/actions/Menu/Menu.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js.map +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +19 -15
  33. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  34. package/dist/components/actions/Menu/MenuSection.js +1 -8
  35. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  36. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  37. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -7
  38. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  39. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  40. package/dist/components/actions/Menu/context.js +1 -1
  41. package/dist/components/actions/Menu/styled.js +1 -1
  42. package/dist/components/actions/actions-run.js +1 -1
  43. package/dist/components/actions/index.js +1 -1
  44. package/dist/components/actions/use-action.js +1 -1
  45. package/dist/components/actions/use-anchored-menu.js +1 -1
  46. package/dist/components/actions/use-context-menu.js +1 -1
  47. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  48. package/dist/components/content/Alert/Alert.js +1 -1
  49. package/dist/components/content/Alert/use-alert.js +1 -1
  50. package/dist/components/content/Avatar/Avatar.js +1 -1
  51. package/dist/components/content/Badge/Badge.js +1 -1
  52. package/dist/components/content/Card/Card.js +1 -1
  53. package/dist/components/content/Content.js +1 -2
  54. package/dist/components/content/Content.js.map +1 -1
  55. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  56. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  57. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  58. package/dist/components/content/Divider.js +1 -1
  59. package/dist/components/content/Footer.js +1 -1
  60. package/dist/components/content/Header.js +1 -1
  61. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  62. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  63. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  64. package/dist/components/content/Item/Item.d.ts +27 -2
  65. package/dist/components/content/Item/Item.js +240 -231
  66. package/dist/components/content/Item/Item.js.map +1 -1
  67. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  68. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  69. package/dist/components/content/Layout/GridLayout.js +1 -1
  70. package/dist/components/content/Layout/Layout.js +1 -1
  71. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  72. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  73. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  74. package/dist/components/content/Layout/LayoutContent.js +1 -1
  75. package/dist/components/content/Layout/LayoutContext.js +1 -1
  76. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  77. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  78. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  79. package/dist/components/content/Layout/LayoutHeader.js +123 -118
  80. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  81. package/dist/components/content/Layout/LayoutPane.js +1 -1
  82. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  83. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  84. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  85. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  86. package/dist/components/content/Layout/index.js +1 -1
  87. package/dist/components/content/Layout/utils.js +1 -1
  88. package/dist/components/content/Paragraph.js +1 -1
  89. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  90. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  91. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  92. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  93. package/dist/components/content/Result/Result.js +1 -1
  94. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  95. package/dist/components/content/Tag/Tag.js +1 -1
  96. package/dist/components/content/Text.d.ts +14 -14
  97. package/dist/components/content/Text.js +1 -1
  98. package/dist/components/content/TextItem/TextItem.js +1 -1
  99. package/dist/components/content/Title.js +1 -1
  100. package/dist/components/content/Tree/Tree.js +1 -1
  101. package/dist/components/content/Tree/TreeNode.js +1 -1
  102. package/dist/components/content/Tree/styled.js +1 -1
  103. package/dist/components/content/Tree/tree-index.js +1 -1
  104. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  105. package/dist/components/content/Tree/use-load-data.js +1 -1
  106. package/dist/components/content/highlightText.js +1 -1
  107. package/dist/components/content/use-auto-tooltip.d.ts +1 -1
  108. package/dist/components/content/use-auto-tooltip.js +231 -125
  109. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  110. package/dist/components/data/DataTable/DataTable.js +1 -1
  111. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  112. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  113. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  114. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  115. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  116. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  117. package/dist/components/data/TableBase/RowCollection.js +1 -1
  118. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  119. package/dist/components/data/TableBase/TableRow.js +1 -1
  120. package/dist/components/data/TableBase/TableView.js +1 -1
  121. package/dist/components/data/TableBase/column-menu.js +1 -1
  122. package/dist/components/data/TableBase/column-tint.js +1 -1
  123. package/dist/components/data/TableBase/row-menu.js +1 -1
  124. package/dist/components/data/TableBase/styled.d.ts +1 -0
  125. package/dist/components/data/TableBase/styled.js +1 -1
  126. package/dist/components/data/TableBase/table-tree.js +1 -1
  127. package/dist/components/data/TableBase/types.js +1 -1
  128. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  129. package/dist/components/data/TableBase/use-column-order.js +1 -1
  130. package/dist/components/data/TableBase/use-container-width.js +1 -1
  131. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  132. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  133. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  134. package/dist/components/data/TableBase/use-table-search.js +1 -1
  135. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  136. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  137. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  138. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  139. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  140. package/dist/components/fields/Checkbox/Checkbox.d.ts +8 -0
  141. package/dist/components/fields/Checkbox/Checkbox.js +58 -39
  142. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  143. package/dist/components/fields/Checkbox/CheckboxGroup.js +2 -2
  144. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  145. package/dist/components/fields/Checkbox/context.js +1 -1
  146. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  147. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +1 -1
  148. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  149. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  150. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  151. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  152. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  153. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  154. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  155. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  156. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  157. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  158. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  159. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  160. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  161. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  162. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  163. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  164. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  165. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  166. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  167. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  168. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  169. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  170. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  171. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  172. package/dist/components/fields/DatePicker/period.js +1 -1
  173. package/dist/components/fields/DatePicker/props.js +1 -1
  174. package/dist/components/fields/DatePicker/utils.js +1 -1
  175. package/dist/components/fields/FileInput/FileInput.js +1 -1
  176. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  177. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +2 -2
  178. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  179. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  180. package/dist/components/fields/Input/Input.js +1 -1
  181. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  182. package/dist/components/fields/ListBox/ListBox.js +1 -1
  183. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  184. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  185. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  186. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  187. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  188. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  189. package/dist/components/fields/Picker/Picker.d.ts +2 -2
  190. package/dist/components/fields/Picker/Picker.js +1 -1
  191. package/dist/components/fields/Picker/Picker.js.map +1 -1
  192. package/dist/components/fields/RadioGroup/Radio.d.ts +10 -2
  193. package/dist/components/fields/RadioGroup/Radio.js +215 -213
  194. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  195. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  196. package/dist/components/fields/RadioGroup/context.js +1 -1
  197. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  198. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  199. package/dist/components/fields/Select/Select.d.ts +3 -2
  200. package/dist/components/fields/Select/Select.js +5 -2
  201. package/dist/components/fields/Select/Select.js.map +1 -1
  202. package/dist/components/fields/Slider/Gradation.js +1 -1
  203. package/dist/components/fields/Slider/HueSlider.js +1 -1
  204. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  205. package/dist/components/fields/Slider/Slider.js +1 -1
  206. package/dist/components/fields/Slider/SliderBase.js +1 -1
  207. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  208. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  209. package/dist/components/fields/Slider/elements.js +1 -1
  210. package/dist/components/fields/Slider/index.js +1 -1
  211. package/dist/components/fields/Switch/Switch.js +1 -1
  212. package/dist/components/fields/TextArea/TextArea.js +1 -1
  213. package/dist/components/fields/TextInput/TextInput.js +1 -1
  214. package/dist/components/fields/TextInput/TextInputBase.js +2 -2
  215. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  216. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  217. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  218. package/dist/components/fields/TriggerActions.js +1 -1
  219. package/dist/components/fields/color/ColorPanel.js +1 -1
  220. package/dist/components/fields/color/channels.js +1 -1
  221. package/dist/components/fields/color/color.js +1 -1
  222. package/dist/components/fields/color/context.js +1 -1
  223. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +1 -1
  224. package/dist/components/form/FieldWrapper/FieldWrapper.js +11 -9
  225. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  226. package/dist/components/form/FieldWrapper/types.d.ts +1 -1
  227. package/dist/components/form/Form/Field.js +6 -4
  228. package/dist/components/form/Form/Field.js.map +1 -1
  229. package/dist/components/form/Form/Form.js +5 -20
  230. package/dist/components/form/Form/Form.js.map +1 -1
  231. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  232. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  233. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  234. package/dist/components/form/Form/SubmitError.js +1 -1
  235. package/dist/components/form/Form/backend.js +1 -1
  236. package/dist/components/form/Form/index.js +1 -1
  237. package/dist/components/form/Form/modern/actions.js +1 -1
  238. package/dist/components/form/Form/modern/context.js +1 -1
  239. package/dist/components/form/Form/modern/controller.js +1 -1
  240. package/dist/components/form/Form/modern/field-binding.js +1 -1
  241. package/dist/components/form/Form/modern/field.js +1 -1
  242. package/dist/components/form/Form/modern/react.js +1 -1
  243. package/dist/components/form/Form/modern/store.js +1 -1
  244. package/dist/components/form/Form/modern/validation.js +1 -1
  245. package/dist/components/form/Form/modern/values.js +1 -1
  246. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  247. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  248. package/dist/components/form/Form/use-field/use-field.js +1 -1
  249. package/dist/components/form/Form/use-form.js +1 -1
  250. package/dist/components/form/Form/validation.js +1 -1
  251. package/dist/components/form/Label.js +1 -1
  252. package/dist/components/form/legacy-tooltip.js +28 -0
  253. package/dist/components/form/legacy-tooltip.js.map +1 -0
  254. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  255. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  256. package/dist/components/form/validation/use-validation-props.js +1 -1
  257. package/dist/components/form/wrapper.js +5 -3
  258. package/dist/components/form/wrapper.js.map +1 -1
  259. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  260. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  261. package/dist/components/layout/Board/Board.js +1 -1
  262. package/dist/components/layout/Board/BoardProvider.js +1 -1
  263. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  264. package/dist/components/layout/Board/Widget.js +1 -1
  265. package/dist/components/layout/Board/WidgetHost.js +1 -1
  266. package/dist/components/layout/Board/board-context.js +1 -1
  267. package/dist/components/layout/Board/board-store.js +1 -1
  268. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  269. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  270. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  271. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  272. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  273. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  274. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  275. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  276. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  277. package/dist/components/layout/Board/index.js +1 -1
  278. package/dist/components/layout/Board/responsive-utils.js +1 -1
  279. package/dist/components/layout/Board/use-board-layout.js +1 -1
  280. package/dist/components/layout/Board/use-board-registry.js +1 -1
  281. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  282. package/dist/components/layout/Board/use-board-selection.js +1 -1
  283. package/dist/components/layout/Flex.js +1 -1
  284. package/dist/components/layout/Flow.js +1 -1
  285. package/dist/components/layout/Grid.js +1 -1
  286. package/dist/components/layout/Panel.js +1 -1
  287. package/dist/components/layout/Prefix.js +1 -1
  288. package/dist/components/layout/ResizablePanel.js +1 -1
  289. package/dist/components/layout/Space.js +1 -1
  290. package/dist/components/layout/Suffix.js +1 -1
  291. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  292. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  293. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  294. package/dist/components/navigation/Tabs/TabButton.js +131 -110
  295. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  296. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  297. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  298. package/dist/components/navigation/Tabs/TabPicker.js +2 -1
  299. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  300. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  301. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  302. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  303. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  304. package/dist/components/navigation/Tabs/styled.js +2 -2
  305. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  306. package/dist/components/navigation/Tabs/types.js +1 -1
  307. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  308. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  309. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  310. package/dist/components/other/Calendar/Calendar.js +1 -1
  311. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  312. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  313. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  314. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  315. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  316. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  317. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  318. package/dist/components/other/Calendar/styled.js +1 -1
  319. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  320. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  321. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  322. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  323. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  324. package/dist/components/overlays/Dialog/Dialog.js +9 -18
  325. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  326. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  327. package/dist/components/overlays/Dialog/DialogForm.js +5 -6
  328. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  329. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  330. package/dist/components/overlays/Dialog/ModernDialogForm.js +64 -71
  331. package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
  332. package/dist/components/overlays/Dialog/context.js +1 -1
  333. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  334. package/dist/components/overlays/Modal/Modal.js +1 -1
  335. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  336. package/dist/components/overlays/Modal/Overlay.js +1 -1
  337. package/dist/components/overlays/Modal/Popover.js +1 -1
  338. package/dist/components/overlays/Modal/Tray.js +1 -1
  339. package/dist/components/overlays/Modal/Underlay.js +1 -1
  340. package/dist/components/overlays/Notifications/Notification.js +1 -1
  341. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  342. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  343. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  344. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  345. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  346. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  347. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  348. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  349. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  350. package/dist/components/overlays/Notifications/index.js +1 -1
  351. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  352. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  353. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  354. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  355. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  356. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  357. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  358. package/dist/components/overlays/Toast/index.js +1 -1
  359. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  360. package/dist/components/overlays/Toast/useToast.js +1 -1
  361. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  362. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  363. package/dist/components/overlays/Tooltip/TooltipTrigger.js +72 -69
  364. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  365. package/dist/components/overlays/Tooltip/context.js +1 -1
  366. package/dist/components/overlays/Tooltip/split-trigger-props.d.ts +16 -0
  367. package/dist/components/overlays/Tooltip/split-trigger-props.js +54 -0
  368. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -0
  369. package/dist/components/portal/Portal.js +1 -1
  370. package/dist/components/portal/PortalProvider.js +1 -1
  371. package/dist/components/portal/usePortal.js +1 -1
  372. package/dist/components/shared/DraggableCollection.js +1 -1
  373. package/dist/components/shared/InvalidIcon.js +1 -1
  374. package/dist/components/shared/ValidIcon.js +1 -1
  375. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  376. package/dist/components/status/Spin/Cube.js +1 -1
  377. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  378. package/dist/components/status/Spin/Spin.js +1 -1
  379. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  380. package/dist/data/item-themes.js +1 -1
  381. package/dist/data/themes.js +1 -1
  382. package/dist/eslint-plugin/defaults.generated.js +1 -1
  383. package/dist/eslint-plugin/index.js +1 -1
  384. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  385. package/dist/i18n/I18nProvider.js +1 -1
  386. package/dist/i18n/createFormatter.js +1 -1
  387. package/dist/i18n/index.js +1 -1
  388. package/dist/i18n/instance.js +1 -1
  389. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  390. package/dist/i18n/locales/en-US/uikit.js +1 -1
  391. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  392. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  393. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  394. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  395. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  396. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  397. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  398. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  399. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  400. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  401. package/dist/i18n/locales.js +1 -1
  402. package/dist/i18n/useFormatter.js +1 -1
  403. package/dist/i18n/useI18n.js +1 -1
  404. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  405. package/dist/icons/AdjustmentsIcon.js +1 -1
  406. package/dist/icons/AiIcon.js +1 -1
  407. package/dist/icons/AreaChartIcon.js +1 -1
  408. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  409. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  410. package/dist/icons/BackwardIcon.js +1 -1
  411. package/dist/icons/BarChartIcon.js +1 -1
  412. package/dist/icons/BellFilledIcon.js +1 -1
  413. package/dist/icons/BellIcon.js +1 -1
  414. package/dist/icons/BooleanIcon.js +1 -1
  415. package/dist/icons/CalendarEditIcon.js +1 -1
  416. package/dist/icons/CalendarIcon.js +1 -1
  417. package/dist/icons/CaretDownIcon.js +1 -1
  418. package/dist/icons/CaretUpIcon.js +1 -1
  419. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  420. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  421. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  422. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  423. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  424. package/dist/icons/ChartBarLineIcon.js +1 -1
  425. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  426. package/dist/icons/ChartBarStackedIcon.js +1 -1
  427. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  428. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  429. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  430. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  431. package/dist/icons/ChartBubbleIcon.js +1 -1
  432. package/dist/icons/ChartDonut2Icon.js +1 -1
  433. package/dist/icons/ChartFunnelIcon.js +1 -1
  434. package/dist/icons/ChartHeatmapIcon.js +1 -1
  435. package/dist/icons/ChartKPIIcon.js +1 -1
  436. package/dist/icons/ChartPie2Icon.js +1 -1
  437. package/dist/icons/ChartScatterIcon.js +1 -1
  438. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  439. package/dist/icons/CheckCircleIcon.js +1 -1
  440. package/dist/icons/CheckIcon.js +1 -1
  441. package/dist/icons/CircleFilledIcon.js +1 -1
  442. package/dist/icons/ClearIcon.js +1 -1
  443. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  444. package/dist/icons/CloseCircleIcon.js +1 -1
  445. package/dist/icons/CloseIcon.js +1 -1
  446. package/dist/icons/CodeIcon.js +1 -1
  447. package/dist/icons/ColumnTotalIcon.js +1 -1
  448. package/dist/icons/CopyIcon.js +1 -1
  449. package/dist/icons/CountIcon.js +1 -1
  450. package/dist/icons/CubeIcon.js +1 -1
  451. package/dist/icons/CubePauseIcon.js +1 -1
  452. package/dist/icons/CubePlayIcon.js +1 -1
  453. package/dist/icons/CurrencyDollarIcon.js +1 -1
  454. package/dist/icons/DangerIcon.js +1 -1
  455. package/dist/icons/DashboardIcon.js +1 -1
  456. package/dist/icons/DatabaseIcon.js +1 -1
  457. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  458. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  459. package/dist/icons/DirectionIcon.js +1 -1
  460. package/dist/icons/DonutIcon.js +1 -1
  461. package/dist/icons/DownIcon.js +1 -1
  462. package/dist/icons/EditIcon.js +1 -1
  463. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  464. package/dist/icons/ExclamationCircleIcon.js +1 -1
  465. package/dist/icons/ExclamationIcon.js +1 -1
  466. package/dist/icons/EyeIcon.js +1 -1
  467. package/dist/icons/EyeInvisibleIcon.js +1 -1
  468. package/dist/icons/FilterIcon.js +1 -1
  469. package/dist/icons/FolderFilledIcon.js +1 -1
  470. package/dist/icons/FolderIcon.js +1 -1
  471. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  472. package/dist/icons/FolderOpenIcon.js +1 -1
  473. package/dist/icons/ForwardIcon.js +1 -1
  474. package/dist/icons/GripVerticalIcon.js +1 -1
  475. package/dist/icons/HierarchyIcon.js +1 -1
  476. package/dist/icons/HierarchyOpenIcon.js +1 -1
  477. package/dist/icons/Icon.js +1 -1
  478. package/dist/icons/InfoCircleIcon.js +1 -1
  479. package/dist/icons/InfoIcon.js +1 -1
  480. package/dist/icons/KeyIcon.js +1 -1
  481. package/dist/icons/LeftIcon.js +1 -1
  482. package/dist/icons/LineChartIcon.js +1 -1
  483. package/dist/icons/LoadingIcon.js +1 -1
  484. package/dist/icons/LockFilledIcon.js +1 -1
  485. package/dist/icons/LockIcon.js +1 -1
  486. package/dist/icons/MoreIcon.js +1 -1
  487. package/dist/icons/NotAllowedIcon.js +1 -1
  488. package/dist/icons/Number123Icon.js +1 -1
  489. package/dist/icons/NumberIcon.js +1 -1
  490. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  491. package/dist/icons/PauseCircleIcon.js +1 -1
  492. package/dist/icons/PauseIcon.js +1 -1
  493. package/dist/icons/PercentageIcon.js +1 -1
  494. package/dist/icons/PieChartIcon.js +1 -1
  495. package/dist/icons/PipetteIcon.js +1 -1
  496. package/dist/icons/PlayCircleIcon.js +1 -1
  497. package/dist/icons/PlayIcon.js +1 -1
  498. package/dist/icons/PlusIcon.js +1 -1
  499. package/dist/icons/ProgressBarIcon.js +1 -1
  500. package/dist/icons/ReloadIcon.js +1 -1
  501. package/dist/icons/ReportIcon.js +1 -1
  502. package/dist/icons/ReturnIcon.js +1 -1
  503. package/dist/icons/RightIcon.js +1 -1
  504. package/dist/icons/RowTotalsIcon.js +1 -1
  505. package/dist/icons/SchemeIcon.js +1 -1
  506. package/dist/icons/SearchIcon.js +1 -1
  507. package/dist/icons/SemanticQueryIcon.js +1 -1
  508. package/dist/icons/SettingsIcon.js +1 -1
  509. package/dist/icons/ShieldFilledIcon.js +1 -1
  510. package/dist/icons/ShieldIcon.js +1 -1
  511. package/dist/icons/SlashIcon.js +1 -1
  512. package/dist/icons/SparklesIcon.js +1 -1
  513. package/dist/icons/SqlIcon.js +1 -1
  514. package/dist/icons/StatsIcon.js +1 -1
  515. package/dist/icons/StopIcon.js +1 -1
  516. package/dist/icons/StringIcon.js +1 -1
  517. package/dist/icons/SubtotalsIcon.js +1 -1
  518. package/dist/icons/SwitchIcon.js +1 -1
  519. package/dist/icons/TableIcon.js +1 -1
  520. package/dist/icons/ThumbsDownIcon.js +1 -1
  521. package/dist/icons/ThumbsUpIcon.js +1 -1
  522. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  523. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  524. package/dist/icons/ThunderboltIcon.js +1 -1
  525. package/dist/icons/TimeIcon.js +1 -1
  526. package/dist/icons/TrashIcon.js +1 -1
  527. package/dist/icons/UnlockIcon.js +1 -1
  528. package/dist/icons/UpIcon.js +1 -1
  529. package/dist/icons/UserGroupIcon.js +1 -1
  530. package/dist/icons/UserIcon.js +1 -1
  531. package/dist/icons/UserLockIcon.js +1 -1
  532. package/dist/icons/ViewIcon.js +1 -1
  533. package/dist/icons/WarningFilledIcon.js +1 -1
  534. package/dist/icons/WarningIcon.js +1 -1
  535. package/dist/icons/wrap-icon.js +1 -1
  536. package/dist/index.js +1 -1
  537. package/dist/probe/canonicalize.js +1 -1
  538. package/dist/probe/css.js +1 -1
  539. package/dist/probe/index.js +1 -1
  540. package/dist/provider.js +1 -1
  541. package/dist/providers/TrackingProvider.js +1 -1
  542. package/dist/providers/navigationAdapter.default.js +1 -1
  543. package/dist/shared/form.d.ts +9 -2
  544. package/dist/tokens/all-tokens.js +1 -1
  545. package/dist/tokens/base.js +1 -1
  546. package/dist/tokens/color-seed.js +1 -1
  547. package/dist/tokens/color-theme.js +1 -1
  548. package/dist/tokens/colors.js +1 -1
  549. package/dist/tokens/layout.js +1 -1
  550. package/dist/tokens/lazy-styles.js +1 -1
  551. package/dist/tokens/legacy-color.js +1 -1
  552. package/dist/tokens/palette-config.js +1 -1
  553. package/dist/tokens/palette.js +1 -1
  554. package/dist/tokens/resolve.js +1 -1
  555. package/dist/tokens/shadows.js +1 -1
  556. package/dist/tokens/sizes.js +1 -1
  557. package/dist/tokens/spacing.js +1 -1
  558. package/dist/tokens/typography.js +1 -1
  559. package/dist/utils/ResizeSensor.js +1 -1
  560. package/dist/utils/colors.js +1 -1
  561. package/dist/utils/dotize.js +1 -1
  562. package/dist/utils/is-dev-env.js +1 -1
  563. package/dist/utils/modules.js +1 -1
  564. package/dist/utils/promise.js +1 -1
  565. package/dist/utils/raf.js +1 -1
  566. package/dist/utils/random.js +1 -1
  567. package/dist/utils/range.js +1 -1
  568. package/dist/utils/react/RenderCache.js +1 -1
  569. package/dist/utils/react/Slots.js +1 -1
  570. package/dist/utils/react/chain.js +1 -1
  571. package/dist/utils/react/disabledProps.js +1 -1
  572. package/dist/utils/react/escapePropagation.js +1 -1
  573. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  574. package/dist/utils/react/index.js +1 -1
  575. package/dist/utils/react/interactions.js +1 -1
  576. package/dist/utils/react/isTextOnly.js +1 -1
  577. package/dist/utils/react/mapProps.js +1 -1
  578. package/dist/utils/react/mergeProps.js +1 -1
  579. package/dist/utils/react/nullableValue.js +1 -1
  580. package/dist/utils/react/programmaticFocus.js +1 -1
  581. package/dist/utils/react/resolveIcon.js +1 -1
  582. package/dist/utils/react/sharedStore.js +1 -1
  583. package/dist/utils/react/useBufferedValue.js +1 -1
  584. package/dist/utils/react/useCombinedRefs.js +1 -1
  585. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  586. package/dist/utils/react/useEventBus.js +1 -1
  587. package/dist/utils/react/useId.js +1 -1
  588. package/dist/utils/react/useIsDarwin.js +1 -1
  589. package/dist/utils/react/useKeySymbols.js +1 -1
  590. package/dist/utils/react/useLayoutEffect.js +1 -1
  591. package/dist/utils/react/useLocalStorage.js +1 -1
  592. package/dist/utils/react/useMergeStyles.js +1 -1
  593. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  594. package/dist/utils/react/usePopoverSync.js +1 -1
  595. package/dist/utils/react/useQaProps.js +1 -1
  596. package/dist/utils/react/useScheme.js +1 -1
  597. package/dist/utils/react/useViewportSize.js +1 -1
  598. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  599. package/dist/utils/selection.js +1 -1
  600. package/dist/utils/styles.js +1 -1
  601. package/dist/utils/tree.js +1 -1
  602. package/dist/utils/warnings.js +1 -1
  603. package/dist/version.js +2 -2
  604. package/docs/FieldProperties.md +2 -2
  605. package/docs/components/actions/ButtonSplit.md +2 -0
  606. package/docs/components/content/InfoBadge.md +1 -1
  607. package/docs/components/content/Layout.md +1 -1
  608. package/docs/components/fields/Checkbox.md +11 -0
  609. package/docs/components/fields/ColorPicker.md +1 -1
  610. package/docs/components/fields/FilterPicker.md +1 -1
  611. package/docs/components/fields/Picker.md +1 -1
  612. package/docs/components/fields/RadioGroup.md +2 -2
  613. package/docs/components/fields/Select.md +3 -0
  614. package/docs/components/form/Field.md +2 -2
  615. package/docs/components/form/Form.md +0 -2
  616. package/docs/components/navigation/Tabs.md +3 -3
  617. package/docs/components/overlays/Dialog.md +3 -30
  618. package/docs/components/overlays/DialogForm.md +0 -1
  619. package/package.json +1 -1
  620. package/dist/components/overlays/Dialog/use-content-overflow.js +0 -68
  621. package/dist/components/overlays/Dialog/use-content-overflow.js.map +0 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -161,7 +161,7 @@ const InputElement = tasty({
161
161
  * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).
162
162
  */
163
163
  function _TextInputBase(props, ref) {
164
- let { qa, mods, isInvalid, isValid, prefix, isDisabled, multiLine, autoFocus, inputProps, wrapperProps, inputRef, isLoading, loadingIndicator, value, inputStyles = {}, suffix, suffixPosition = "before", wrapperRef, tooltip, rows = 1, size = "medium", autoComplete, autocomplete, icon, maxLength, minLength, form, resize, ...otherProps } = props;
164
+ let { qa, mods, isInvalid, isValid, prefix, isDisabled, multiLine, autoFocus, inputProps, wrapperProps, inputRef, isLoading, loadingIndicator, value, inputStyles = {}, suffix, suffixPosition = "before", wrapperRef, rows = 1, size = "medium", autoComplete, autocomplete, icon, maxLength, minLength, form, resize, ...otherProps } = props;
165
165
  let styles = extractStyles(otherProps, PROP_STYLES);
166
166
  let type = otherProps.type;
167
167
  if (resize) inputStyles = {
@@ -1 +1 @@
1
- {"version":3,"file":"TextInputBase.js","names":["createFocusableRef","BASE_STYLES","BaseProps","BaseStyleProps","BLOCK_STYLES","BlockStyleProps","COLOR_STYLES","ColorStyleProps","OUTER_STYLES","OuterStyleProps","Styles","tasty","forwardRef","ReactElement","ReactNode","RefObject","useImperativeHandle","useMemo","useRef","AriaNumberFieldProps","AriaTextFieldProps","useHover","FieldBaseProps","mergeProps","useCombinedRefs","useFocus","extractStyles","getValidationMods","hasValidationIndicator","ValidationIndicator","wrapWithField","Props","ADD_STYLES","$","display","placeContent","placeItems","gridRows","flow","gap","cursor","opacity","disabled","INPUT_WRAPPER_STYLES","position","gridColumns","prefix","suffix","fill","border","valid","invalid","focused","preset","radius","color","zIndex","boxSizing","transition","backgroundClip","height","multiline","$size","Prefix","Suffix","State","InputIcon","width","fontSize","ValidationIcon","InputWrapperElement","qa","styles","PROP_STYLES","DEFAULT_INPUT_STYLES","recipe","placeSelf","padding","textAlign","flexGrow","margin","resize","userSelect","Placeholder","InputElement","CubeTextInputBaseProps","Omit","validate","icon","suffixPosition","multiLine","autoFocus","inputProps","wrapperProps","inputRef","HTMLInputElement","HTMLTextAreaElement","wrapperRef","HTMLDivElement","isLoading","loadingIndicator","inputStyles","rows","size","autoComplete","autocomplete","CubeBufferedValueProps","isBuffered","_TextInputBase","props","ref","mods","isInvalid","isValid","isDisabled","value","tooltip","maxLength","minLength","form","otherProps","type","ElementType","isFocused","focusProps","hoverProps","isHovered","domRef","select","current","getInputElement","showValidationIndicator","placeholder","modifiers","loadable","hovered","resolvedAutoComplete","hasTextSecurity","textSecurityStyles","length","fontFamily","textField","undefined","TextInputBase"],"sources":["../../../../src/components/fields/TextInput/TextInputBase.tsx"],"sourcesContent":["import { createFocusableRef } from '@react-spectrum/utils';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n ReactElement,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport { AriaNumberFieldProps, AriaTextFieldProps, useHover } from 'react-aria';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { extractStyles } from '../../../utils/styles';\nimport {\n getValidationMods,\n hasValidationIndicator,\n ValidationIndicator,\n wrapWithField,\n} from '../../form';\n\nimport type { Props } from '../../../props';\n\nconst ADD_STYLES = {\n $: '>',\n display: 'grid',\n placeContent: 'stretch',\n placeItems: 'center',\n gridRows: '1sf',\n flow: 'column',\n gap: 0,\n cursor: 'inherit',\n opacity: {\n '': 1,\n disabled: '$disabled-opacity',\n },\n};\n\nexport const INPUT_WRAPPER_STYLES: Styles = {\n display: 'grid',\n flow: 'row',\n position: 'relative',\n gridColumns: {\n '': '1sf',\n prefix: 'max-content 1sf',\n suffix: '1sf max-content',\n 'prefix & suffix': 'max-content 1sf max-content',\n },\n gridRows: '1sf',\n placeItems: 'stretch',\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n },\n border: {\n '': true,\n valid: '#success-text.50',\n invalid: '#danger-text.50',\n focused: '#primary-text',\n 'valid & focused': '#success-text',\n 'invalid & focused': '#danger-text',\n disabled: true,\n },\n preset: 't3',\n radius: true,\n cursor: 'text',\n color: {\n '': '#dark-02',\n focused: '#dark-02',\n invalid: '#danger-text',\n disabled: '#dark.30',\n },\n zIndex: {\n '': 'initial',\n focused: 1,\n },\n boxSizing: 'border-box',\n transition: 'theme',\n backgroundClip: 'content-box',\n height: {\n '': '$size $size',\n multiline: 'min $size',\n },\n\n $size: {\n '': '$size-md',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n },\n\n Prefix: ADD_STYLES,\n\n Suffix: ADD_STYLES,\n\n State: {\n $: '> Suffix >',\n display: 'flex',\n },\n\n InputIcon: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $size-sm',\n color: 'inherit',\n fontSize: '$icon-size',\n },\n\n ValidationIcon: {\n $: '> Suffix > State >',\n display: 'grid',\n placeItems: 'center',\n width: {\n '': 'min $size-sm',\n suffix: 'min $size-xs',\n },\n fontSize: '$icon-size',\n },\n};\n\nconst InputWrapperElement = tasty({\n qa: 'InputWrapper',\n styles: INPUT_WRAPPER_STYLES,\n});\n\nconst PROP_STYLES = [\n ...BASE_STYLES,\n ...OUTER_STYLES,\n ...BLOCK_STYLES,\n ...COLOR_STYLES,\n];\n\nexport const DEFAULT_INPUT_STYLES: Styles = {\n recipe: 'reset input / input-autofill',\n placeSelf: 'stretch',\n width: 'initial 100% 100%',\n transition: 'theme',\n radius: true,\n padding: '$vertical-padding $right-padding $vertical-padding $left-padding',\n textAlign: 'left',\n preset: 't3',\n flexGrow: 1,\n margin: {\n '': 0,\n multiline: '((($size-md - 1lh) / 2) - 1bw) 0',\n 'multiline & size=small': '((($size-sm - 1lh) / 2) - 1bw) 0',\n 'multiline & size=large': '((($size-lg - 1lh) / 2) - 1bw) 0',\n },\n resize: 'none',\n userSelect: 'auto',\n\n Placeholder: {\n $: '&::placeholder',\n recipe: 'input-placeholder',\n },\n '&::-webkit-search-cancel-button': {\n recipe: 'input-search-cancel-button',\n },\n\n '$vertical-padding': 0,\n '$left-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n prefix: '0',\n },\n '$right-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n suffix: '0',\n },\n};\n\nconst InputElement = tasty({ qa: 'Input', styles: DEFAULT_INPUT_STYLES });\n\nexport interface CubeTextInputBaseProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n BaseStyleProps,\n ColorStyleProps,\n Omit<AriaTextFieldProps, 'validate' | 'form' | 'name'>,\n FieldBaseProps {\n validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];\n /** Left input icon */\n icon?: ReactElement | null;\n /** Input decoration before the main input */\n prefix?: ReactNode;\n /** Input decoration after the main input */\n suffix?: ReactNode;\n /** Suffix position goes before or after the validation and loading statuses */\n suffixPosition?: 'before' | 'after';\n /** Whether the input is multiline */\n multiLine?: boolean;\n /** Whether the input should have autofocus */\n autoFocus?: boolean;\n /** Direct input props */\n inputProps?: Props;\n /** Direct input wrapper props */\n wrapperProps?: Props;\n /** The input ref */\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>;\n /** The wrapper ref */\n wrapperRef?: RefObject<HTMLDivElement>;\n /** Whether the input has the loading status */\n isLoading?: boolean;\n /** The loading status indicator */\n loadingIndicator?: ReactNode;\n /** Style map for the input */\n inputStyles?: Styles;\n /** The number of rows for the input. Only applies to textarea. */\n rows?: number;\n /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */\n resize?: Styles['resize'];\n /** The size of the input */\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`email`, `current-password`, `off`, …). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete).\n */\n autoComplete?: string;\n /**\n * @deprecated Use `autoComplete` instead. Kept as an alias so existing callers keep working;\n * `autoComplete` wins when both are set.\n */\n autocomplete?: string;\n}\n\n/**\n * Mixed into the fields that actually buffer their value — `TextInput`, `TextArea`,\n * `PasswordInput`, `SearchInput` — rather than declared on `CubeTextInputBaseProps`. Every field\n * built on that base would otherwise inherit the prop, including `NumberInput` and\n * `CommandTextArea`, which keep their own text and ignore it: a public API that accepts a flag and\n * does nothing with it.\n */\nexport interface CubeBufferedValueProps {\n /**\n * Whether the typed text is held locally until the controlled `value` catches up. On by default,\n * which is what keeps the caret in place when the value round-trips through a store that\n * re-renders a pass late. Set to `false` for a caller that must see the value snap back to its\n * own `value` prop the instant it declines a keystroke. See `useBufferedValue`.\n */\n isBuffered?: boolean;\n}\n\n/**\n * The presentational base for text-like inputs. It renders the input chrome and the field wrapper, but\n * never wires form state — that is the job of the component rendering it (`TextInput`, `TextArea`,\n * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).\n */\nfunction _TextInputBase(props: CubeTextInputBaseProps, ref) {\n let {\n qa,\n mods,\n isInvalid,\n isValid,\n prefix,\n isDisabled,\n multiLine,\n autoFocus,\n inputProps,\n wrapperProps,\n inputRef,\n isLoading,\n loadingIndicator,\n value,\n inputStyles = {},\n suffix,\n suffixPosition = 'before',\n wrapperRef,\n tooltip,\n rows = 1,\n size = 'medium',\n autoComplete,\n autocomplete,\n icon,\n maxLength,\n minLength,\n form,\n resize,\n ...otherProps\n } = props;\n\n let styles = extractStyles(otherProps, PROP_STYLES);\n let type = otherProps.type;\n\n if (resize) {\n inputStyles = { ...inputStyles, resize };\n }\n\n let ElementType: 'textarea' | 'input' = multiLine ? 'textarea' : 'input';\n let { isFocused, focusProps } = useFocus({ isDisabled });\n let { hoverProps, isHovered } = useHover({ isDisabled });\n let domRef = useRef(null);\n\n inputRef = useCombinedRefs(inputRef);\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef?.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef?.current;\n },\n }));\n\n const showValidationIndicator = hasValidationIndicator({\n isInvalid,\n isValid,\n isLoading,\n });\n\n // Fix safari bug: https://github.com/philipwalton/flexbugs/issues/270\n if (!inputProps?.placeholder) {\n if (!inputProps) {\n inputProps = {};\n }\n\n inputProps.placeholder = ' ';\n }\n\n if (icon) {\n icon = <div data-element=\"InputIcon\">{icon}</div>;\n\n if (prefix) {\n prefix = (\n <>\n {icon}\n {prefix}\n </>\n );\n } else {\n prefix = icon;\n }\n }\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n loadable: !!loadingIndicator,\n focused: isFocused,\n hovered: isHovered,\n disabled: isDisabled,\n multiline: multiLine,\n prefix: !!prefix,\n suffix: showValidationIndicator || !!suffix,\n ...mods,\n }),\n [\n mods,\n isInvalid,\n isValid,\n showValidationIndicator,\n loadingIndicator,\n isFocused,\n isDisabled,\n isHovered,\n multiLine,\n prefix,\n suffix,\n ],\n );\n\n // `autoComplete` is the prop; `autocomplete` is the deprecated alias. Falling back to\n // `inputProps` matters as much as the aliasing: this attribute is applied after the merge, so a\n // bare `autoComplete={resolved}` would overwrite whatever the React Aria hook put there —\n // `useNumberField`'s own `off`, or an `inputProps={{ autoComplete }}` passed by the caller — with\n // `undefined` whenever neither prop is set.\n const resolvedAutoComplete =\n autoComplete ?? autocomplete ?? inputProps.autoComplete;\n\n const hasTextSecurity = multiLine && type === 'password';\n const textSecurityStyles =\n hasTextSecurity && inputProps.value?.length\n ? {\n fontFamily: 'text-security-disc',\n }\n : {};\n\n const textField = (\n <InputWrapperElement\n ref={wrapperRef}\n mods={modifiers}\n data-size={size}\n styles={styles}\n {...wrapperProps}\n >\n {prefix ? <div data-element=\"Prefix\">{prefix}</div> : null}\n <InputElement\n qa={qa || 'Input'}\n as={ElementType}\n data-input-type=\"textinput\"\n {...mergeProps(inputProps, focusProps, hoverProps)}\n ref={inputRef}\n rows={multiLine ? rows : undefined}\n mods={modifiers}\n style={textSecurityStyles}\n data-autofocus={autoFocus ? '' : undefined}\n autoFocus={autoFocus}\n data-size={size}\n autoComplete={resolvedAutoComplete}\n styles={inputStyles}\n disabled={!!isDisabled}\n maxLength={maxLength}\n minLength={minLength}\n />\n {showValidationIndicator || suffix ? (\n <div data-element=\"Suffix\">\n {suffixPosition === 'before' ? suffix : null}\n <ValidationIndicator\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n />\n {suffixPosition === 'after' ? suffix : null}\n </div>\n ) : null}\n </InputWrapperElement>\n );\n\n return wrapWithField(textField, domRef, props);\n}\n\nconst TextInputBase = forwardRef(_TextInputBase);\n\nexport { TextInputBase };\nexport type { AriaTextFieldProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"TextInputBase.js","names":["createFocusableRef","BASE_STYLES","BaseProps","BaseStyleProps","BLOCK_STYLES","BlockStyleProps","COLOR_STYLES","ColorStyleProps","OUTER_STYLES","OuterStyleProps","Styles","tasty","forwardRef","ReactElement","ReactNode","RefObject","useImperativeHandle","useMemo","useRef","AriaNumberFieldProps","AriaTextFieldProps","useHover","FieldBaseProps","mergeProps","useCombinedRefs","useFocus","extractStyles","getValidationMods","hasValidationIndicator","ValidationIndicator","wrapWithField","Props","ADD_STYLES","$","display","placeContent","placeItems","gridRows","flow","gap","cursor","opacity","disabled","INPUT_WRAPPER_STYLES","position","gridColumns","prefix","suffix","fill","border","valid","invalid","focused","preset","radius","color","zIndex","boxSizing","transition","backgroundClip","height","multiline","$size","Prefix","Suffix","State","InputIcon","width","fontSize","ValidationIcon","InputWrapperElement","qa","styles","PROP_STYLES","DEFAULT_INPUT_STYLES","recipe","placeSelf","padding","textAlign","flexGrow","margin","resize","userSelect","Placeholder","InputElement","CubeTextInputBaseProps","Omit","validate","icon","suffixPosition","multiLine","autoFocus","inputProps","wrapperProps","inputRef","HTMLInputElement","HTMLTextAreaElement","wrapperRef","HTMLDivElement","isLoading","loadingIndicator","inputStyles","rows","size","autoComplete","autocomplete","CubeBufferedValueProps","isBuffered","_TextInputBase","props","ref","mods","isInvalid","isValid","isDisabled","value","maxLength","minLength","form","otherProps","type","ElementType","isFocused","focusProps","hoverProps","isHovered","domRef","select","current","getInputElement","showValidationIndicator","placeholder","modifiers","loadable","hovered","resolvedAutoComplete","hasTextSecurity","textSecurityStyles","length","fontFamily","textField","undefined","TextInputBase"],"sources":["../../../../src/components/fields/TextInput/TextInputBase.tsx"],"sourcesContent":["import { createFocusableRef } from '@react-spectrum/utils';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n ReactElement,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport { AriaNumberFieldProps, AriaTextFieldProps, useHover } from 'react-aria';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { extractStyles } from '../../../utils/styles';\nimport {\n getValidationMods,\n hasValidationIndicator,\n ValidationIndicator,\n wrapWithField,\n} from '../../form';\n\nimport type { Props } from '../../../props';\n\nconst ADD_STYLES = {\n $: '>',\n display: 'grid',\n placeContent: 'stretch',\n placeItems: 'center',\n gridRows: '1sf',\n flow: 'column',\n gap: 0,\n cursor: 'inherit',\n opacity: {\n '': 1,\n disabled: '$disabled-opacity',\n },\n};\n\nexport const INPUT_WRAPPER_STYLES: Styles = {\n display: 'grid',\n flow: 'row',\n position: 'relative',\n gridColumns: {\n '': '1sf',\n prefix: 'max-content 1sf',\n suffix: '1sf max-content',\n 'prefix & suffix': 'max-content 1sf max-content',\n },\n gridRows: '1sf',\n placeItems: 'stretch',\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n },\n border: {\n '': true,\n valid: '#success-text.50',\n invalid: '#danger-text.50',\n focused: '#primary-text',\n 'valid & focused': '#success-text',\n 'invalid & focused': '#danger-text',\n disabled: true,\n },\n preset: 't3',\n radius: true,\n cursor: 'text',\n color: {\n '': '#dark-02',\n focused: '#dark-02',\n invalid: '#danger-text',\n disabled: '#dark.30',\n },\n zIndex: {\n '': 'initial',\n focused: 1,\n },\n boxSizing: 'border-box',\n transition: 'theme',\n backgroundClip: 'content-box',\n height: {\n '': '$size $size',\n multiline: 'min $size',\n },\n\n $size: {\n '': '$size-md',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n },\n\n Prefix: ADD_STYLES,\n\n Suffix: ADD_STYLES,\n\n State: {\n $: '> Suffix >',\n display: 'flex',\n },\n\n InputIcon: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $size-sm',\n color: 'inherit',\n fontSize: '$icon-size',\n },\n\n ValidationIcon: {\n $: '> Suffix > State >',\n display: 'grid',\n placeItems: 'center',\n width: {\n '': 'min $size-sm',\n suffix: 'min $size-xs',\n },\n fontSize: '$icon-size',\n },\n};\n\nconst InputWrapperElement = tasty({\n qa: 'InputWrapper',\n styles: INPUT_WRAPPER_STYLES,\n});\n\nconst PROP_STYLES = [\n ...BASE_STYLES,\n ...OUTER_STYLES,\n ...BLOCK_STYLES,\n ...COLOR_STYLES,\n];\n\nexport const DEFAULT_INPUT_STYLES: Styles = {\n recipe: 'reset input / input-autofill',\n placeSelf: 'stretch',\n width: 'initial 100% 100%',\n transition: 'theme',\n radius: true,\n padding: '$vertical-padding $right-padding $vertical-padding $left-padding',\n textAlign: 'left',\n preset: 't3',\n flexGrow: 1,\n margin: {\n '': 0,\n multiline: '((($size-md - 1lh) / 2) - 1bw) 0',\n 'multiline & size=small': '((($size-sm - 1lh) / 2) - 1bw) 0',\n 'multiline & size=large': '((($size-lg - 1lh) / 2) - 1bw) 0',\n },\n resize: 'none',\n userSelect: 'auto',\n\n Placeholder: {\n $: '&::placeholder',\n recipe: 'input-placeholder',\n },\n '&::-webkit-search-cancel-button': {\n recipe: 'input-search-cancel-button',\n },\n\n '$vertical-padding': 0,\n '$left-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n prefix: '0',\n },\n '$right-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n suffix: '0',\n },\n};\n\nconst InputElement = tasty({ qa: 'Input', styles: DEFAULT_INPUT_STYLES });\n\nexport interface CubeTextInputBaseProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n BaseStyleProps,\n ColorStyleProps,\n Omit<AriaTextFieldProps, 'validate' | 'form' | 'name'>,\n FieldBaseProps {\n validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];\n /** Left input icon */\n icon?: ReactElement | null;\n /** Input decoration before the main input */\n prefix?: ReactNode;\n /** Input decoration after the main input */\n suffix?: ReactNode;\n /** Suffix position goes before or after the validation and loading statuses */\n suffixPosition?: 'before' | 'after';\n /** Whether the input is multiline */\n multiLine?: boolean;\n /** Whether the input should have autofocus */\n autoFocus?: boolean;\n /** Direct input props */\n inputProps?: Props;\n /** Direct input wrapper props */\n wrapperProps?: Props;\n /** The input ref */\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>;\n /** The wrapper ref */\n wrapperRef?: RefObject<HTMLDivElement>;\n /** Whether the input has the loading status */\n isLoading?: boolean;\n /** The loading status indicator */\n loadingIndicator?: ReactNode;\n /** Style map for the input */\n inputStyles?: Styles;\n /** The number of rows for the input. Only applies to textarea. */\n rows?: number;\n /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */\n resize?: Styles['resize'];\n /** The size of the input */\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`email`, `current-password`, `off`, …). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete).\n */\n autoComplete?: string;\n /**\n * @deprecated Use `autoComplete` instead. Kept as an alias so existing callers keep working;\n * `autoComplete` wins when both are set.\n */\n autocomplete?: string;\n}\n\n/**\n * Mixed into the fields that actually buffer their value — `TextInput`, `TextArea`,\n * `PasswordInput`, `SearchInput` — rather than declared on `CubeTextInputBaseProps`. Every field\n * built on that base would otherwise inherit the prop, including `NumberInput` and\n * `CommandTextArea`, which keep their own text and ignore it: a public API that accepts a flag and\n * does nothing with it.\n */\nexport interface CubeBufferedValueProps {\n /**\n * Whether the typed text is held locally until the controlled `value` catches up. On by default,\n * which is what keeps the caret in place when the value round-trips through a store that\n * re-renders a pass late. Set to `false` for a caller that must see the value snap back to its\n * own `value` prop the instant it declines a keystroke. See `useBufferedValue`.\n */\n isBuffered?: boolean;\n}\n\n/**\n * The presentational base for text-like inputs. It renders the input chrome and the field wrapper, but\n * never wires form state — that is the job of the component rendering it (`TextInput`, `TextArea`,\n * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).\n */\nfunction _TextInputBase(props: CubeTextInputBaseProps, ref) {\n let {\n qa,\n mods,\n isInvalid,\n isValid,\n prefix,\n isDisabled,\n multiLine,\n autoFocus,\n inputProps,\n wrapperProps,\n inputRef,\n isLoading,\n loadingIndicator,\n value,\n inputStyles = {},\n suffix,\n suffixPosition = 'before',\n wrapperRef,\n rows = 1,\n size = 'medium',\n autoComplete,\n autocomplete,\n icon,\n maxLength,\n minLength,\n form,\n resize,\n ...otherProps\n } = props;\n\n let styles = extractStyles(otherProps, PROP_STYLES);\n let type = otherProps.type;\n\n if (resize) {\n inputStyles = { ...inputStyles, resize };\n }\n\n let ElementType: 'textarea' | 'input' = multiLine ? 'textarea' : 'input';\n let { isFocused, focusProps } = useFocus({ isDisabled });\n let { hoverProps, isHovered } = useHover({ isDisabled });\n let domRef = useRef(null);\n\n inputRef = useCombinedRefs(inputRef);\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef?.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef?.current;\n },\n }));\n\n const showValidationIndicator = hasValidationIndicator({\n isInvalid,\n isValid,\n isLoading,\n });\n\n // Fix safari bug: https://github.com/philipwalton/flexbugs/issues/270\n if (!inputProps?.placeholder) {\n if (!inputProps) {\n inputProps = {};\n }\n\n inputProps.placeholder = ' ';\n }\n\n if (icon) {\n icon = <div data-element=\"InputIcon\">{icon}</div>;\n\n if (prefix) {\n prefix = (\n <>\n {icon}\n {prefix}\n </>\n );\n } else {\n prefix = icon;\n }\n }\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n loadable: !!loadingIndicator,\n focused: isFocused,\n hovered: isHovered,\n disabled: isDisabled,\n multiline: multiLine,\n prefix: !!prefix,\n suffix: showValidationIndicator || !!suffix,\n ...mods,\n }),\n [\n mods,\n isInvalid,\n isValid,\n showValidationIndicator,\n loadingIndicator,\n isFocused,\n isDisabled,\n isHovered,\n multiLine,\n prefix,\n suffix,\n ],\n );\n\n // `autoComplete` is the prop; `autocomplete` is the deprecated alias. Falling back to\n // `inputProps` matters as much as the aliasing: this attribute is applied after the merge, so a\n // bare `autoComplete={resolved}` would overwrite whatever the React Aria hook put there —\n // `useNumberField`'s own `off`, or an `inputProps={{ autoComplete }}` passed by the caller — with\n // `undefined` whenever neither prop is set.\n const resolvedAutoComplete =\n autoComplete ?? autocomplete ?? inputProps.autoComplete;\n\n const hasTextSecurity = multiLine && type === 'password';\n const textSecurityStyles =\n hasTextSecurity && inputProps.value?.length\n ? {\n fontFamily: 'text-security-disc',\n }\n : {};\n\n const textField = (\n <InputWrapperElement\n ref={wrapperRef}\n mods={modifiers}\n data-size={size}\n styles={styles}\n {...wrapperProps}\n >\n {prefix ? <div data-element=\"Prefix\">{prefix}</div> : null}\n <InputElement\n qa={qa || 'Input'}\n as={ElementType}\n data-input-type=\"textinput\"\n {...mergeProps(inputProps, focusProps, hoverProps)}\n ref={inputRef}\n rows={multiLine ? rows : undefined}\n mods={modifiers}\n style={textSecurityStyles}\n data-autofocus={autoFocus ? '' : undefined}\n autoFocus={autoFocus}\n data-size={size}\n autoComplete={resolvedAutoComplete}\n styles={inputStyles}\n disabled={!!isDisabled}\n maxLength={maxLength}\n minLength={minLength}\n />\n {showValidationIndicator || suffix ? (\n <div data-element=\"Suffix\">\n {suffixPosition === 'before' ? suffix : null}\n <ValidationIndicator\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n />\n {suffixPosition === 'after' ? suffix : null}\n </div>\n ) : null}\n </InputWrapperElement>\n );\n\n return wrapWithField(textField, domRef, props);\n}\n\nconst TextInputBase = forwardRef(_TextInputBase);\n\nexport { TextInputBase };\nexport type { AriaTextFieldProps };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useEffect, useLayoutEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { ItemActionIcon } from "../actions/ItemActionsWrapper.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { Fragment, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { formatColor, getContrastingColor, toHex } from "./color.js";
4
4
  import { CHANNELS, COLOR_SPACES, COLOR_SPACE_HINTS, COLOR_SPACE_LABELS } from "./channels.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { maxChroma, normalizeHue, oklchToOkhsl } from "../../../utils/colors.js";
3
3
  import { fromOkhst, fromRgb, isAchromatic, toHex, toOkhst, toOklch, toRgb } from "./color.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { anyNaN, clamp, maxChroma, normalizeHue, oklchToOkhsl, parseColorFunction, readComponent, readHue, rgbFromSrgb } from "../../../utils/colors.js";
3
3
  import { contrastRatioFromLuminance, formatHsl, formatOkhsl, formatOkhst, formatOklch, formatRgb, hslToSrgb, okhslToLinearSrgb, okhslToOkhst, okhslToOklch, okhslToSrgb, okhstToOkhsl, parseHexAlpha, relativeLuminanceFromLinearRgb, srgbToHex, srgbToOkhsl } from "@tenphi/glaze";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/fields/color/context.ts
@@ -27,7 +27,7 @@ declare const FieldWrapper: react.ForwardRefExoticComponent<ValidationProps & {
27
27
  labelProps?: CubeLabelProps;
28
28
  description?: react.ReactNode;
29
29
  requiredMark?: boolean;
30
- tooltip?: react.ReactNode;
30
+ labelTooltip?: react.ReactNode;
31
31
  extra?: react.ReactNode;
32
32
  necessityIndicator?: NecessityIndicator | null;
33
33
  message?: string | react.ReactNode;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
4
4
  import { isDevEnv } from "../../../utils/is-dev-env.js";
@@ -9,6 +9,7 @@ import { InfoBadge } from "../../content/InfoBadge/InfoBadge.js";
9
9
  import { Flex } from "../../layout/Flex.js";
10
10
  import { getValidationMods } from "../validation/resolve-validation-props.js";
11
11
  import { NecessityIndicatorMark, _Label } from "../Label.js";
12
+ import { warnAboutLegacyTooltip } from "../legacy-tooltip.js";
12
13
  import { c } from "react-compiler-runtime";
13
14
  import { tasty } from "@tenphi/tasty";
14
15
  import { forwardRef } from "react";
@@ -90,10 +91,11 @@ const DescriptionElement = tasty({
90
91
  */
91
92
  const FieldWrapper = forwardRef(function FieldWrapper(props, ref) {
92
93
  const $ = c(63);
93
- const { as, labelPosition: t0, label, extra, styles, isRequired, isOptional, isDisabled, labelStyles, necessityIndicator, labelProps, fieldProps, message, messageStyles, description, errorMessage, Component, isInvalid, isValid, requiredMark: t1, tooltip, isHidden, labelSuffix, children } = props;
94
+ const { as, labelPosition: t0, label, extra, styles, isRequired, isOptional, isDisabled, labelStyles, necessityIndicator, labelProps, fieldProps, message, messageStyles, description, errorMessage, Component, isInvalid, isValid, requiredMark: t1, labelTooltip, isHidden, labelSuffix, children } = props;
94
95
  const labelPosition = t0 === void 0 ? "top" : t0;
95
96
  const requiredMark = t1 === void 0 ? true : t1;
96
97
  const { t } = useI18n();
98
+ warnAboutLegacyTooltip(props);
97
99
  const showRequiredMark = !!requiredMark && !!isRequired;
98
100
  const showOptionalNote = !isRequired && !!isOptional;
99
101
  let t2;
@@ -105,7 +107,7 @@ const FieldWrapper = forwardRef(function FieldWrapper(props, ref) {
105
107
  } else t2 = $[2];
106
108
  const optionalNote = t2;
107
109
  let t3;
108
- if ($[3] !== as || $[4] !== extra || $[5] !== isDisabled || $[6] !== isInvalid || $[7] !== isValid || $[8] !== label || $[9] !== labelPosition || $[10] !== labelProps || $[11] !== labelStyles || $[12] !== labelSuffix || $[13] !== necessityIndicator || $[14] !== optionalNote || $[15] !== showOptionalNote || $[16] !== showRequiredMark || $[17] !== tooltip) {
110
+ if ($[3] !== as || $[4] !== extra || $[5] !== isDisabled || $[6] !== isInvalid || $[7] !== isValid || $[8] !== label || $[9] !== labelPosition || $[10] !== labelProps || $[11] !== labelStyles || $[12] !== labelSuffix || $[13] !== labelTooltip || $[14] !== necessityIndicator || $[15] !== optionalNote || $[16] !== showOptionalNote || $[17] !== showRequiredMark) {
109
111
  t3 = label ? /* @__PURE__ */ jsx(_Label, {
110
112
  as: as === "label" ? "div" : "label",
111
113
  styles: labelStyles,
@@ -130,7 +132,7 @@ const FieldWrapper = forwardRef(function FieldWrapper(props, ref) {
130
132
  isOptional: showOptionalNote,
131
133
  necessityIndicator
132
134
  })] }),
133
- tooltip ? /* @__PURE__ */ jsx(InfoBadge, { tooltip }) : null,
135
+ labelTooltip ? /* @__PURE__ */ jsx(InfoBadge, { tooltip: labelTooltip }) : null,
134
136
  labelSuffix ? /* @__PURE__ */ jsx("div", { children: labelSuffix }) : null
135
137
  ]
136
138
  }), extra && /* @__PURE__ */ jsx(_Text, {
@@ -149,11 +151,11 @@ const FieldWrapper = forwardRef(function FieldWrapper(props, ref) {
149
151
  $[10] = labelProps;
150
152
  $[11] = labelStyles;
151
153
  $[12] = labelSuffix;
152
- $[13] = necessityIndicator;
153
- $[14] = optionalNote;
154
- $[15] = showOptionalNote;
155
- $[16] = showRequiredMark;
156
- $[17] = tooltip;
154
+ $[13] = labelTooltip;
155
+ $[14] = necessityIndicator;
156
+ $[15] = optionalNote;
157
+ $[16] = showOptionalNote;
158
+ $[17] = showRequiredMark;
157
159
  $[18] = t3;
158
160
  } else t3 = $[18];
159
161
  const labelComponent = t3;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldWrapper.js","names":["tasty","forwardRef","useI18n","isDevEnv","mergeProps","wrapNodeIfPlain","InfoBadge","Text","Flex","Space","Label","NecessityIndicatorMark","getValidationMods","CubeFieldWrapperProps","FieldElement","qa","styles","display","width","gridColumns","gap","placeItems","placeContent","LabelArea","margin","InputArea","flow","gridColumn","displayName","MessageElement","preset","color","invalid","valid","disabled","textAlign","userSelect","DescriptionElement","FieldWrapper","props","ref","$","_c","as","labelPosition","t0","label","extra","isRequired","isOptional","isDisabled","labelStyles","necessityIndicator","labelProps","fieldProps","message","messageStyles","description","errorMessage","Component","isInvalid","isValid","requiredMark","t1","tooltip","isHidden","labelSuffix","children","undefined","t","showRequiredMark","showOptionalNote","t2","optionalNote","t3","labelComponent","t4","createDescriptionComponent","t5","descriptionForLabel","t6","descriptionForInput","t7","t8","t9","t10","t11","mods","displayMessage","isErrorMessage","t12","mergedFieldProps","t13","t14","t15","t16","t17","t18"],"sources":["../../../../src/components/form/FieldWrapper/FieldWrapper.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { mergeProps, wrapNodeIfPlain } from '../../../utils/react/index';\nimport { InfoBadge } from '../../content/InfoBadge';\nimport { Text } from '../../content/Text';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { Label, NecessityIndicatorMark } from '../Label';\nimport { getValidationMods } from '../validation/index';\n\nimport { CubeFieldWrapperProps } from './types';\n\nconst FieldElement = tasty({\n qa: 'Field',\n styles: {\n display: 'grid',\n width: 'auto',\n gridColumns: {\n '': 'minmax(0, 1fr)',\n 'has-sider': '($full-label-width, auto) minmax(0, 1fr)',\n 'has-split': 'auto auto',\n },\n gap: 0,\n placeItems: {\n '': 'baseline stretch',\n 'has-split': 'center',\n },\n placeContent: {\n '': 'initial',\n 'has-split': 'space-between',\n },\n '$full-label-width': '($label-width + 1x)',\n\n LabelArea: {\n display: 'block',\n width: {\n '': 'initial',\n 'has-sider': '$label-width',\n },\n margin: {\n '': '1x bottom',\n 'has-sider': '1x right',\n 'has-split': '1x right',\n ':empty': '0',\n },\n },\n\n InputArea: {\n display: 'block',\n flow: 'column',\n gap: '.5x',\n gridColumn: {\n '': 'initial',\n 'has-sider': 2,\n 'has-split': 2,\n },\n },\n },\n});\n\nif (isDevEnv()) {\n FieldElement.displayName = 'FieldWrapperElement';\n}\n\nconst MessageElement = tasty({\n qa: 'FieldMessage',\n styles: {\n preset: 't4',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n valid: '#success-text',\n disabled: '#dark.40',\n },\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\nconst DescriptionElement = tasty({\n qa: 'FieldDescription',\n styles: {\n preset: 't4',\n color: '#dark-03',\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\n/**\n * A wrapper for form fields to provide additional decoration for inputs.\n * @internal Do not use this component directly.\n */\nexport const FieldWrapper = forwardRef(function FieldWrapper(\n props: CubeFieldWrapperProps,\n ref,\n) {\n const {\n as,\n labelPosition = 'top',\n label,\n extra,\n styles,\n isRequired,\n isOptional,\n isDisabled,\n labelStyles,\n necessityIndicator,\n labelProps,\n fieldProps,\n message,\n messageStyles,\n description,\n errorMessage,\n Component,\n isInvalid,\n isValid,\n requiredMark = true,\n tooltip,\n isHidden,\n labelSuffix,\n children,\n } = props;\n\n const { t } = useI18n();\n\n // `requiredMark={false}` drops the required marker, but the field is still\n // required — so the optional note has to keep losing to it rather than\n // stepping into the gap and labelling a required field optional.\n const showRequiredMark = !!requiredMark && !!isRequired;\n const showOptionalNote = !isRequired && !!isOptional;\n\n // The `aria-label` below is what the input is named by, so it shadows the\n // label's own content — including the `(optional)` note, which is the only\n // thing saying the field is optional. A required field needs no such help:\n // `aria-required` on the input already announces it.\n const optionalNote = showOptionalNote\n ? t('form.optional', '(optional)')\n : null;\n\n const labelComponent = label ? (\n <Label\n as={as === 'label' ? 'div' : 'label'}\n styles={labelStyles}\n labelPosition={labelPosition}\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n isDisabled={isDisabled}\n necessityIndicator={necessityIndicator}\n isInvalid={isInvalid}\n isValid={isValid}\n aria-label={\n typeof label === 'string'\n ? optionalNote\n ? `${label} ${optionalNote}`\n : label\n : undefined\n }\n {...labelProps}\n >\n <Flex placeContent=\"baseline space-between\" width=\"100%\">\n <Space placeItems=\"center\" gap=\"0.75x\">\n <div>\n {label}\n {/*\n `Label` can only append the marker itself when its child is plain\n text, and the tree below is not — so it is placed here, against\n the label text, rather than after the full-width `Flex`.\n */}\n <NecessityIndicatorMark\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n necessityIndicator={necessityIndicator}\n />\n </div>\n\n {tooltip ? <InfoBadge tooltip={tooltip} /> : null}\n\n {labelSuffix ? <div>{labelSuffix}</div> : null}\n </Space>\n\n {extra && <Text preset=\"t3\">{extra}</Text>}\n </Flex>\n </Label>\n ) : null;\n\n // Create description component with proper styling\n const createDescriptionComponent = () => {\n if (!description) return null;\n\n return (\n <DescriptionElement data-element=\"Description\">\n {wrapNodeIfPlain(description, () => (\n <span>{description}</span>\n ))}\n </DescriptionElement>\n );\n };\n\n // Description positioning based on label position\n const descriptionForLabel =\n labelPosition === 'side' || labelPosition === 'split'\n ? createDescriptionComponent()\n : null;\n const descriptionForInput =\n labelPosition === 'top' ? createDescriptionComponent() : null;\n\n const mods = {\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n 'has-description': !!description,\n ...getValidationMods({ isInvalid, isValid }),\n };\n\n // Determine which message to display (errorMessage takes precedence, then message for backward compatibility)\n const displayMessage = errorMessage || message;\n const isErrorMessage = !!errorMessage;\n\n // Merge fieldProps with styles to ensure both are applied\n const mergedFieldProps = styles\n ? mergeProps(fieldProps, { styles })\n : fieldProps;\n\n return (\n <>\n <FieldElement\n ref={ref}\n as={as ?? 'div'}\n mods={mods}\n isHidden={isHidden}\n {...mergedFieldProps}\n >\n {labelComponent || descriptionForLabel ? (\n <div data-element=\"LabelArea\">\n {labelComponent}\n {descriptionForLabel}\n </div>\n ) : null}\n <div data-element=\"InputArea\">\n {Component}\n {descriptionForInput}\n {displayMessage && !isDisabled && (\n <MessageElement\n mods={{\n ...mods,\n // Force invalid state for errorMessage regardless of the validation state\n invalid: isErrorMessage || !!isInvalid,\n }}\n styles={messageStyles}\n role={isErrorMessage || isInvalid ? 'alert' : undefined}\n >\n {displayMessage}\n </MessageElement>\n )}\n </div>\n </FieldElement>\n {children}\n </>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"FieldWrapper.js","names":["tasty","forwardRef","useI18n","isDevEnv","mergeProps","wrapNodeIfPlain","InfoBadge","Text","Flex","Space","Label","NecessityIndicatorMark","warnAboutLegacyTooltip","getValidationMods","CubeFieldWrapperProps","FieldElement","qa","styles","display","width","gridColumns","gap","placeItems","placeContent","LabelArea","margin","InputArea","flow","gridColumn","displayName","MessageElement","preset","color","invalid","valid","disabled","textAlign","userSelect","DescriptionElement","FieldWrapper","props","ref","$","_c","as","labelPosition","t0","label","extra","isRequired","isOptional","isDisabled","labelStyles","necessityIndicator","labelProps","fieldProps","message","messageStyles","description","errorMessage","Component","isInvalid","isValid","requiredMark","t1","labelTooltip","isHidden","labelSuffix","children","undefined","t","showRequiredMark","showOptionalNote","t2","optionalNote","t3","labelComponent","t4","createDescriptionComponent","t5","descriptionForLabel","t6","descriptionForInput","t7","t8","t9","t10","t11","mods","displayMessage","isErrorMessage","t12","mergedFieldProps","t13","t14","t15","t16","t17","t18"],"sources":["../../../../src/components/form/FieldWrapper/FieldWrapper.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { mergeProps, wrapNodeIfPlain } from '../../../utils/react/index';\nimport { InfoBadge } from '../../content/InfoBadge';\nimport { Text } from '../../content/Text';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { Label, NecessityIndicatorMark } from '../Label';\nimport { warnAboutLegacyTooltip } from '../legacy-tooltip';\nimport { getValidationMods } from '../validation/index';\n\nimport { CubeFieldWrapperProps } from './types';\n\nconst FieldElement = tasty({\n qa: 'Field',\n styles: {\n display: 'grid',\n width: 'auto',\n gridColumns: {\n '': 'minmax(0, 1fr)',\n 'has-sider': '($full-label-width, auto) minmax(0, 1fr)',\n 'has-split': 'auto auto',\n },\n gap: 0,\n placeItems: {\n '': 'baseline stretch',\n 'has-split': 'center',\n },\n placeContent: {\n '': 'initial',\n 'has-split': 'space-between',\n },\n '$full-label-width': '($label-width + 1x)',\n\n LabelArea: {\n display: 'block',\n width: {\n '': 'initial',\n 'has-sider': '$label-width',\n },\n margin: {\n '': '1x bottom',\n 'has-sider': '1x right',\n 'has-split': '1x right',\n ':empty': '0',\n },\n },\n\n InputArea: {\n display: 'block',\n flow: 'column',\n gap: '.5x',\n gridColumn: {\n '': 'initial',\n 'has-sider': 2,\n 'has-split': 2,\n },\n },\n },\n});\n\nif (isDevEnv()) {\n FieldElement.displayName = 'FieldWrapperElement';\n}\n\nconst MessageElement = tasty({\n qa: 'FieldMessage',\n styles: {\n preset: 't4',\n color: {\n '': '#dark-02',\n invalid: '#danger-text',\n valid: '#success-text',\n disabled: '#dark.40',\n },\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\nconst DescriptionElement = tasty({\n qa: 'FieldDescription',\n styles: {\n preset: 't4',\n color: '#dark-03',\n textAlign: 'left',\n userSelect: 'none',\n },\n});\n\n/**\n * A wrapper for form fields to provide additional decoration for inputs.\n * @internal Do not use this component directly.\n */\nexport const FieldWrapper = forwardRef(function FieldWrapper(\n props: CubeFieldWrapperProps,\n ref,\n) {\n const {\n as,\n labelPosition = 'top',\n label,\n extra,\n styles,\n isRequired,\n isOptional,\n isDisabled,\n labelStyles,\n necessityIndicator,\n labelProps,\n fieldProps,\n message,\n messageStyles,\n description,\n errorMessage,\n Component,\n isInvalid,\n isValid,\n requiredMark = true,\n labelTooltip,\n isHidden,\n labelSuffix,\n children,\n } = props;\n\n const { t } = useI18n();\n\n warnAboutLegacyTooltip(props);\n\n // `requiredMark={false}` drops the required marker, but the field is still\n // required — so the optional note has to keep losing to it rather than\n // stepping into the gap and labelling a required field optional.\n const showRequiredMark = !!requiredMark && !!isRequired;\n const showOptionalNote = !isRequired && !!isOptional;\n\n // The `aria-label` below is what the input is named by, so it shadows the\n // label's own content — including the `(optional)` note, which is the only\n // thing saying the field is optional. A required field needs no such help:\n // `aria-required` on the input already announces it.\n const optionalNote = showOptionalNote\n ? t('form.optional', '(optional)')\n : null;\n\n const labelComponent = label ? (\n <Label\n as={as === 'label' ? 'div' : 'label'}\n styles={labelStyles}\n labelPosition={labelPosition}\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n isDisabled={isDisabled}\n necessityIndicator={necessityIndicator}\n isInvalid={isInvalid}\n isValid={isValid}\n aria-label={\n typeof label === 'string'\n ? optionalNote\n ? `${label} ${optionalNote}`\n : label\n : undefined\n }\n {...labelProps}\n >\n <Flex placeContent=\"baseline space-between\" width=\"100%\">\n <Space placeItems=\"center\" gap=\"0.75x\">\n <div>\n {label}\n {/*\n `Label` can only append the marker itself when its child is plain\n text, and the tree below is not — so it is placed here, against\n the label text, rather than after the full-width `Flex`.\n */}\n <NecessityIndicatorMark\n isRequired={showRequiredMark}\n isOptional={showOptionalNote}\n necessityIndicator={necessityIndicator}\n />\n </div>\n\n {labelTooltip ? <InfoBadge tooltip={labelTooltip} /> : null}\n\n {labelSuffix ? <div>{labelSuffix}</div> : null}\n </Space>\n\n {extra && <Text preset=\"t3\">{extra}</Text>}\n </Flex>\n </Label>\n ) : null;\n\n // Create description component with proper styling\n const createDescriptionComponent = () => {\n if (!description) return null;\n\n return (\n <DescriptionElement data-element=\"Description\">\n {wrapNodeIfPlain(description, () => (\n <span>{description}</span>\n ))}\n </DescriptionElement>\n );\n };\n\n // Description positioning based on label position\n const descriptionForLabel =\n labelPosition === 'side' || labelPosition === 'split'\n ? createDescriptionComponent()\n : null;\n const descriptionForInput =\n labelPosition === 'top' ? createDescriptionComponent() : null;\n\n const mods = {\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n 'has-description': !!description,\n ...getValidationMods({ isInvalid, isValid }),\n };\n\n // Determine which message to display (errorMessage takes precedence, then message for backward compatibility)\n const displayMessage = errorMessage || message;\n const isErrorMessage = !!errorMessage;\n\n // Merge fieldProps with styles to ensure both are applied\n const mergedFieldProps = styles\n ? mergeProps(fieldProps, { styles })\n : fieldProps;\n\n return (\n <>\n <FieldElement\n ref={ref}\n as={as ?? 'div'}\n mods={mods}\n isHidden={isHidden}\n {...mergedFieldProps}\n >\n {labelComponent || descriptionForLabel ? (\n <div data-element=\"LabelArea\">\n {labelComponent}\n {descriptionForLabel}\n </div>\n ) : null}\n <div data-element=\"InputArea\">\n {Component}\n {descriptionForInput}\n {displayMessage && !isDisabled && (\n <MessageElement\n mods={{\n ...mods,\n // Force invalid state for errorMessage regardless of the validation state\n invalid: isErrorMessage || !!isInvalid,\n }}\n styles={messageStyles}\n role={isErrorMessage || isInvalid ? 'alert' : undefined}\n >\n {displayMessage}\n </MessageElement>\n )}\n </div>\n </FieldElement>\n {children}\n </>\n );\n});\n"],"mappings":"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"}
@@ -22,7 +22,7 @@ type CubeFieldWrapperProps = ValidationProps & {
22
22
  labelProps?: CubeLabelProps; /** The description for the field. It will be placed below the label */
23
23
  description?: ReactNode;
24
24
  requiredMark?: boolean;
25
- tooltip?: ReactNode;
25
+ labelTooltip?: ReactNode;
26
26
  extra?: ReactNode;
27
27
  necessityIndicator?: NecessityIndicator | null;
28
28
  /**
@@ -1,7 +1,8 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { warn } from "../../../utils/warnings.js";
4
4
  import { useValidationProps } from "../validation/use-validation-props.js";
5
+ import { warnAboutLegacyTooltip } from "../legacy-tooltip.js";
5
6
  import { FieldWrapper } from "../FieldWrapper/FieldWrapper.js";
6
7
  import { useFormProps } from "./Form.js";
7
8
  import { useField } from "./use-field/use-field.js";
@@ -61,8 +62,9 @@ function getValueProps(type, value, onChange, allowsCustomValue) {
61
62
  function Field(props) {
62
63
  "use no memo";
63
64
  const allProps = useValidationProps(useFormProps(props));
64
- let { children, form, label, extra, necessityIndicator, tooltip, isHidden, isDisabled, isLoading, isOptional, styles, labelProps, labelPosition = "top", labelStyles, labelSuffix } = allProps;
65
+ let { children, form, label, extra, necessityIndicator, labelTooltip, isHidden, isDisabled, isLoading, isOptional, styles, labelProps, labelPosition = "top", labelStyles, labelSuffix } = allProps;
65
66
  if (typeof children === "function") children = children(form);
67
+ if (label) warnAboutLegacyTooltip(allProps);
66
68
  let child = children == null ? null : Children.only(children);
67
69
  const inputType = (child?.type)?.cubeInputType ?? "Text";
68
70
  const __props = useField(allProps, { defaultValidationTrigger: getDefaultValidateTrigger(inputType) });
@@ -84,7 +86,7 @@ function Field(props) {
84
86
  label,
85
87
  labelProps,
86
88
  extra,
87
- tooltip,
89
+ labelTooltip,
88
90
  message,
89
91
  description,
90
92
  errorMessage,
@@ -117,7 +119,7 @@ function Field(props) {
117
119
  if (isOptional != null) newProps.isOptional = isOptional;
118
120
  if (label) newProps.label = label;
119
121
  if (extra) newProps.extra = extra;
120
- if (tooltip) newProps.tooltip = tooltip;
122
+ if (labelTooltip) newProps.labelTooltip = labelTooltip;
121
123
  if (message !== void 0) newProps.message = message;
122
124
  if (errorMessage !== void 0) newProps.errorMessage = errorMessage;
123
125
  if (description !== void 0) newProps.description = description;
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","names":["Styles","Children","cloneElement","createContext","PropsWithChildren","ReactElement","useContext","useMemo","FieldBaseProps","LabelPosition","mergeProps","warn","FieldWrapper","useValidationProps","useFormProps","FieldTypes","useField","CubeFormInstance","getDefaultValidateTrigger","type","includes","getValueProps","value","onChange","allowsCustomValue","String","isSelected","isIndeterminate","undefined","selectedKey","inputValue","onInputChange","val","onSelectionChange","CubeFieldProps","name","defaultValue","styles","children","form","T","CubeFullFieldProps","CubeReplaceFieldProps","isRequired","isOptional","any","onBlur","labelPosition","Field","props","allProps","label","extra","necessityIndicator","tooltip","isHidden","isDisabled","isLoading","labelProps","labelStyles","labelSuffix","child","only","inputType","cubeInputType","__props","defaultValidationTrigger","isInvalid","isValid","message","description","errorMessage","id","resolvedNecessityIndicator","for","nonInput","field","newProps","childDeclaresNecessity","Object","assign","childProps","LegacyFieldContextValue","insideLegacyField","LegacyFieldContext","LegacyFieldProvider","$","_c","t0","Symbol","t1","useInsideLegacyField"],"sources":["../../../../src/components/form/Form/Field.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport {\n Children,\n cloneElement,\n createContext,\n PropsWithChildren,\n ReactElement,\n useContext,\n useMemo,\n} from 'react';\n\nimport { FieldBaseProps, LabelPosition } from '../../../shared/index';\nimport { mergeProps } from '../../../utils/react/index';\nimport { warn } from '../../../utils/warnings';\nimport { FieldWrapper } from '../FieldWrapper/index';\nimport { useValidationProps } from '../validation/index';\n\nimport { useFormProps } from './Form';\nimport { FieldTypes } from './types';\nimport { useField } from './use-field/index';\nimport { CubeFormInstance } from './use-form';\n\nfunction getDefaultValidateTrigger(type) {\n type = type || '';\n\n return type === 'Number' || type.includes('Text') ? 'onBlur' : 'onChange';\n}\n\nfunction getValueProps(\n type?: string,\n value?,\n onChange?,\n allowsCustomValue?: boolean,\n) {\n type = type || '';\n\n if (type === 'Number') {\n return {\n value: value != null ? value : null,\n onChange: onChange,\n };\n } else if (type === 'Text') {\n return {\n value:\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '',\n onChange: onChange,\n };\n } else if (type === 'Checkbox') {\n return {\n isSelected: value != null ? value : false,\n isIndeterminate: false,\n onChange: onChange,\n };\n } else if (type === 'CheckboxGroup') {\n return {\n value: value != null ? value : [],\n onChange: onChange,\n };\n } else if (type === 'RangeSlider') {\n return {\n value: value != null ? value : undefined,\n onChange: onChange,\n };\n } else if (type === 'ComboBox') {\n return {\n selectedKey: !allowsCustomValue ? value ?? null : undefined,\n inputValue: allowsCustomValue ? value ?? '' : undefined,\n onInputChange(val) {\n if (!allowsCustomValue) {\n return;\n }\n\n onChange(val);\n },\n onSelectionChange(val: string) {\n if (val == null && allowsCustomValue) {\n return;\n }\n\n onChange(val);\n },\n };\n } else if (type === 'Select') {\n return {\n selectedKey: value ?? null,\n onSelectionChange: onChange,\n };\n }\n\n return {\n value: value != null ? value : null,\n onChange,\n };\n}\n\nexport interface CubeFieldProps<T extends FieldTypes> extends FieldBaseProps {\n /** Legacy field name; nested fields use dot notation. */\n name?: string;\n /** The initial value of the input. */\n defaultValue?: any;\n styles?: Styles;\n children?: ReactElement | ((CubeFormInstance) => ReactElement);\n /** The form instance */\n form?: CubeFormInstance<T>;\n}\n\ninterface CubeFullFieldProps<T extends FieldTypes> extends CubeFieldProps<T> {\n form: CubeFormInstance<T>;\n}\n\ninterface CubeReplaceFieldProps<T extends FieldTypes>\n extends CubeFieldProps<T> {\n isRequired?: boolean;\n isOptional?: boolean;\n onChange?: (any) => void;\n onSelectionChange?: (any) => void;\n onBlur: () => void;\n labelPosition?: LabelPosition;\n}\n\nexport function Field<T extends FieldTypes>(props: CubeFieldProps<T>) {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n const allProps: CubeFullFieldProps<T> = useValidationProps(\n useFormProps(props),\n );\n\n let {\n children,\n form,\n label,\n extra,\n necessityIndicator,\n tooltip,\n isHidden,\n isDisabled,\n isLoading,\n isOptional,\n styles,\n labelProps,\n labelPosition = 'top',\n labelStyles,\n labelSuffix,\n } = allProps;\n\n if (typeof children === 'function') {\n children = children(form);\n }\n\n let child = children == null ? null : Children.only(children);\n\n const inputType = (child?.type as any)?.cubeInputType ?? 'Text';\n\n const __props = useField<T, CubeFullFieldProps<T>>(allProps, {\n defaultValidationTrigger: getDefaultValidateTrigger(inputType),\n });\n\n const {\n isInvalid,\n isValid,\n message,\n description,\n errorMessage,\n isRequired,\n name,\n id,\n } = __props;\n\n // `useField` reports `null` here when `isRequired` came from a `required` rule\n // rather than from the props, which suppresses the label marker. An indicator\n // set on the `Field` itself is an explicit request and outranks that.\n const resolvedNecessityIndicator =\n necessityIndicator !== undefined\n ? necessityIndicator\n : __props.necessityIndicator;\n\n if (!child) return null;\n\n if (id) {\n if (!labelProps) {\n labelProps = {};\n }\n\n labelProps.for = id;\n }\n\n if (__props.nonInput) {\n return (\n <LegacyFieldProvider>\n <FieldWrapper\n isHidden={isHidden}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n necessityIndicator={resolvedNecessityIndicator}\n isRequired={isRequired}\n isOptional={isOptional}\n label={label}\n labelProps={labelProps}\n extra={extra}\n tooltip={tooltip}\n message={message}\n description={description}\n errorMessage={errorMessage}\n Component={child}\n styles={styles}\n labelPosition={labelPosition}\n labelStyles={labelStyles}\n labelSuffix={labelSuffix}\n />\n </LegacyFieldProvider>\n );\n }\n\n if (!form) {\n warn(\n 'Form Field requires declared form instance if field name is specified',\n );\n\n return null;\n }\n\n if (!__props.field) {\n return (\n <LegacyFieldProvider>\n {cloneElement(\n child,\n mergeProps(child.props as any, {\n ...getValueProps(inputType),\n label: name,\n name,\n id,\n }),\n )}\n </LegacyFieldProvider>\n );\n }\n\n const newProps: CubeReplaceFieldProps<T> = {\n id,\n name,\n onBlur: __props.onBlur,\n };\n\n // A `null` indicator suppresses the marker for a rule-derived `isRequired`. It\n // must not override a necessity the child input declares for itself, which the\n // `useField` above never saw.\n const childDeclaresNecessity =\n (child.props as any).isRequired != null ||\n (child.props as any).necessityIndicator !== undefined;\n\n if (\n resolvedNecessityIndicator !== undefined &&\n !(resolvedNecessityIndicator === null && childDeclaresNecessity)\n ) {\n newProps.necessityIndicator = resolvedNecessityIndicator;\n }\n\n if (isInvalid) {\n newProps.isInvalid = isInvalid;\n }\n\n if (isValid) {\n newProps.isValid = isValid;\n }\n\n if (isRequired) {\n newProps.isRequired = isRequired;\n }\n\n if (isOptional != null) {\n newProps.isOptional = isOptional;\n }\n\n if (label) {\n newProps.label = label;\n }\n\n if (extra) {\n newProps.extra = extra;\n }\n\n if (tooltip) {\n newProps.tooltip = tooltip;\n }\n\n if (message !== undefined) {\n newProps.message = message;\n }\n\n if (errorMessage !== undefined) {\n newProps.errorMessage = errorMessage;\n }\n\n if (description !== undefined) {\n newProps.description = description;\n }\n\n if (isHidden != null) {\n newProps.isHidden = isHidden;\n }\n\n if (isDisabled != null) {\n newProps.isDisabled = isDisabled;\n }\n\n if (isLoading != null) {\n newProps.isLoading = isLoading;\n }\n\n Object.assign(\n newProps,\n getValueProps(\n inputType,\n __props.field?.value,\n __props.onChange,\n (child.props as any).allowsCustomValue,\n ),\n );\n\n const { onChange, onSelectionChange, ...childProps } = child.props as any;\n\n // onChange event passed to the child should be executed after Form onChange logic\n return (\n <LegacyFieldProvider>\n {cloneElement(\n child,\n mergeProps(\n childProps,\n newProps,\n onChange ? { onChange: __props.onChange } : {},\n onSelectionChange ? { onSelectionChange: __props.onChange } : {},\n ),\n )}\n </LegacyFieldProvider>\n );\n}\n\ntype LegacyFieldContextValue = {\n insideLegacyField: boolean;\n};\n\nconst LegacyFieldContext = createContext<LegacyFieldContextValue>({\n insideLegacyField: false,\n});\n\nfunction LegacyFieldProvider(props: PropsWithChildren<unknown>) {\n const value = useMemo(() => ({ insideLegacyField: true }), []);\n return (\n <LegacyFieldContext.Provider value={value}>\n {props.children}\n </LegacyFieldContext.Provider>\n );\n}\n\nexport function useInsideLegacyField() {\n const { insideLegacyField = false } = useContext(LegacyFieldContext);\n\n return insideLegacyField;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Field.js","names":["Styles","Children","cloneElement","createContext","PropsWithChildren","ReactElement","useContext","useMemo","FieldBaseProps","LabelPosition","mergeProps","warn","FieldWrapper","warnAboutLegacyTooltip","useValidationProps","useFormProps","FieldTypes","useField","CubeFormInstance","getDefaultValidateTrigger","type","includes","getValueProps","value","onChange","allowsCustomValue","String","isSelected","isIndeterminate","undefined","selectedKey","inputValue","onInputChange","val","onSelectionChange","CubeFieldProps","name","defaultValue","styles","children","form","T","CubeFullFieldProps","CubeReplaceFieldProps","isRequired","isOptional","any","onBlur","labelPosition","Field","props","allProps","label","extra","necessityIndicator","labelTooltip","isHidden","isDisabled","isLoading","labelProps","labelStyles","labelSuffix","child","only","inputType","cubeInputType","__props","defaultValidationTrigger","isInvalid","isValid","message","description","errorMessage","id","resolvedNecessityIndicator","for","nonInput","field","newProps","childDeclaresNecessity","Object","assign","childProps","LegacyFieldContextValue","insideLegacyField","LegacyFieldContext","LegacyFieldProvider","$","_c","t0","Symbol","t1","useInsideLegacyField"],"sources":["../../../../src/components/form/Form/Field.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport {\n Children,\n cloneElement,\n createContext,\n PropsWithChildren,\n ReactElement,\n useContext,\n useMemo,\n} from 'react';\n\nimport { FieldBaseProps, LabelPosition } from '../../../shared/index';\nimport { mergeProps } from '../../../utils/react/index';\nimport { warn } from '../../../utils/warnings';\nimport { FieldWrapper } from '../FieldWrapper/index';\nimport { warnAboutLegacyTooltip } from '../legacy-tooltip';\nimport { useValidationProps } from '../validation/index';\n\nimport { useFormProps } from './Form';\nimport { FieldTypes } from './types';\nimport { useField } from './use-field/index';\nimport { CubeFormInstance } from './use-form';\n\nfunction getDefaultValidateTrigger(type) {\n type = type || '';\n\n return type === 'Number' || type.includes('Text') ? 'onBlur' : 'onChange';\n}\n\nfunction getValueProps(\n type?: string,\n value?,\n onChange?,\n allowsCustomValue?: boolean,\n) {\n type = type || '';\n\n if (type === 'Number') {\n return {\n value: value != null ? value : null,\n onChange: onChange,\n };\n } else if (type === 'Text') {\n return {\n value:\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '',\n onChange: onChange,\n };\n } else if (type === 'Checkbox') {\n return {\n isSelected: value != null ? value : false,\n isIndeterminate: false,\n onChange: onChange,\n };\n } else if (type === 'CheckboxGroup') {\n return {\n value: value != null ? value : [],\n onChange: onChange,\n };\n } else if (type === 'RangeSlider') {\n return {\n value: value != null ? value : undefined,\n onChange: onChange,\n };\n } else if (type === 'ComboBox') {\n return {\n selectedKey: !allowsCustomValue ? value ?? null : undefined,\n inputValue: allowsCustomValue ? value ?? '' : undefined,\n onInputChange(val) {\n if (!allowsCustomValue) {\n return;\n }\n\n onChange(val);\n },\n onSelectionChange(val: string) {\n if (val == null && allowsCustomValue) {\n return;\n }\n\n onChange(val);\n },\n };\n } else if (type === 'Select') {\n return {\n selectedKey: value ?? null,\n onSelectionChange: onChange,\n };\n }\n\n return {\n value: value != null ? value : null,\n onChange,\n };\n}\n\nexport interface CubeFieldProps<T extends FieldTypes> extends FieldBaseProps {\n /** Legacy field name; nested fields use dot notation. */\n name?: string;\n /** The initial value of the input. */\n defaultValue?: any;\n styles?: Styles;\n children?: ReactElement | ((CubeFormInstance) => ReactElement);\n /** The form instance */\n form?: CubeFormInstance<T>;\n}\n\ninterface CubeFullFieldProps<T extends FieldTypes> extends CubeFieldProps<T> {\n form: CubeFormInstance<T>;\n}\n\ninterface CubeReplaceFieldProps<T extends FieldTypes>\n extends CubeFieldProps<T> {\n isRequired?: boolean;\n isOptional?: boolean;\n onChange?: (any) => void;\n onSelectionChange?: (any) => void;\n onBlur: () => void;\n labelPosition?: LabelPosition;\n}\n\nexport function Field<T extends FieldTypes>(props: CubeFieldProps<T>) {\n 'use no memo';\n // Legacy form state is mutable; preserve its render-time reads until migration.\n\n const allProps: CubeFullFieldProps<T> = useValidationProps(\n useFormProps(props),\n );\n\n let {\n children,\n form,\n label,\n extra,\n necessityIndicator,\n labelTooltip,\n isHidden,\n isDisabled,\n isLoading,\n isOptional,\n styles,\n labelProps,\n labelPosition = 'top',\n labelStyles,\n labelSuffix,\n } = allProps;\n\n if (typeof children === 'function') {\n children = children(form);\n }\n\n if (label) {\n warnAboutLegacyTooltip(allProps);\n }\n\n let child = children == null ? null : Children.only(children);\n\n const inputType = (child?.type as any)?.cubeInputType ?? 'Text';\n\n const __props = useField<T, CubeFullFieldProps<T>>(allProps, {\n defaultValidationTrigger: getDefaultValidateTrigger(inputType),\n });\n\n const {\n isInvalid,\n isValid,\n message,\n description,\n errorMessage,\n isRequired,\n name,\n id,\n } = __props;\n\n // `useField` reports `null` here when `isRequired` came from a `required` rule\n // rather than from the props, which suppresses the label marker. An indicator\n // set on the `Field` itself is an explicit request and outranks that.\n const resolvedNecessityIndicator =\n necessityIndicator !== undefined\n ? necessityIndicator\n : __props.necessityIndicator;\n\n if (!child) return null;\n\n if (id) {\n if (!labelProps) {\n labelProps = {};\n }\n\n labelProps.for = id;\n }\n\n if (__props.nonInput) {\n return (\n <LegacyFieldProvider>\n <FieldWrapper\n isHidden={isHidden}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isValid={isValid}\n necessityIndicator={resolvedNecessityIndicator}\n isRequired={isRequired}\n isOptional={isOptional}\n label={label}\n labelProps={labelProps}\n extra={extra}\n labelTooltip={labelTooltip}\n message={message}\n description={description}\n errorMessage={errorMessage}\n Component={child}\n styles={styles}\n labelPosition={labelPosition}\n labelStyles={labelStyles}\n labelSuffix={labelSuffix}\n />\n </LegacyFieldProvider>\n );\n }\n\n if (!form) {\n warn(\n 'Form Field requires declared form instance if field name is specified',\n );\n\n return null;\n }\n\n if (!__props.field) {\n return (\n <LegacyFieldProvider>\n {cloneElement(\n child,\n mergeProps(child.props as any, {\n ...getValueProps(inputType),\n label: name,\n name,\n id,\n }),\n )}\n </LegacyFieldProvider>\n );\n }\n\n const newProps: CubeReplaceFieldProps<T> = {\n id,\n name,\n onBlur: __props.onBlur,\n };\n\n // A `null` indicator suppresses the marker for a rule-derived `isRequired`. It\n // must not override a necessity the child input declares for itself, which the\n // `useField` above never saw.\n const childDeclaresNecessity =\n (child.props as any).isRequired != null ||\n (child.props as any).necessityIndicator !== undefined;\n\n if (\n resolvedNecessityIndicator !== undefined &&\n !(resolvedNecessityIndicator === null && childDeclaresNecessity)\n ) {\n newProps.necessityIndicator = resolvedNecessityIndicator;\n }\n\n if (isInvalid) {\n newProps.isInvalid = isInvalid;\n }\n\n if (isValid) {\n newProps.isValid = isValid;\n }\n\n if (isRequired) {\n newProps.isRequired = isRequired;\n }\n\n if (isOptional != null) {\n newProps.isOptional = isOptional;\n }\n\n if (label) {\n newProps.label = label;\n }\n\n if (extra) {\n newProps.extra = extra;\n }\n\n if (labelTooltip) {\n newProps.labelTooltip = labelTooltip;\n }\n\n if (message !== undefined) {\n newProps.message = message;\n }\n\n if (errorMessage !== undefined) {\n newProps.errorMessage = errorMessage;\n }\n\n if (description !== undefined) {\n newProps.description = description;\n }\n\n if (isHidden != null) {\n newProps.isHidden = isHidden;\n }\n\n if (isDisabled != null) {\n newProps.isDisabled = isDisabled;\n }\n\n if (isLoading != null) {\n newProps.isLoading = isLoading;\n }\n\n Object.assign(\n newProps,\n getValueProps(\n inputType,\n __props.field?.value,\n __props.onChange,\n (child.props as any).allowsCustomValue,\n ),\n );\n\n const { onChange, onSelectionChange, ...childProps } = child.props as any;\n\n // onChange event passed to the child should be executed after Form onChange logic\n return (\n <LegacyFieldProvider>\n {cloneElement(\n child,\n mergeProps(\n childProps,\n newProps,\n onChange ? { onChange: __props.onChange } : {},\n onSelectionChange ? { onSelectionChange: __props.onChange } : {},\n ),\n )}\n </LegacyFieldProvider>\n );\n}\n\ntype LegacyFieldContextValue = {\n insideLegacyField: boolean;\n};\n\nconst LegacyFieldContext = createContext<LegacyFieldContextValue>({\n insideLegacyField: false,\n});\n\nfunction LegacyFieldProvider(props: PropsWithChildren<unknown>) {\n const value = useMemo(() => ({ insideLegacyField: true }), []);\n return (\n <LegacyFieldContext.Provider value={value}>\n {props.children}\n </LegacyFieldContext.Provider>\n );\n}\n\nexport function useInsideLegacyField() {\n const { insideLegacyField = false } = useContext(LegacyFieldContext);\n\n return insideLegacyField;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Provider, useProviderProps } from "../../../provider.js";
@@ -56,34 +56,19 @@ const FormElement = tasty({
56
56
  as: "form",
57
57
  qa: "Form",
58
58
  styles: {
59
- "@in-dialog": "@parent(id=Dialog, >)",
60
59
  display: {
61
60
  "": "block",
62
- horizontal: "flex",
63
- "@in-dialog": "flex"
61
+ horizontal: "flex"
64
62
  },
65
63
  flow: {
66
64
  "": "column",
67
- horizontal: "row",
68
- "@in-dialog": "column"
65
+ horizontal: "row"
69
66
  },
70
67
  placeItems: {
71
68
  "": "initial",
72
- horizontal: "center",
73
- "@in-dialog": "initial"
74
- },
75
- gap: {
76
- "": "2x",
77
- "@in-dialog": 0
78
- },
79
- flexGrow: {
80
- "": false,
81
- "@in-dialog": 1
82
- },
83
- height: {
84
- "": false,
85
- "@in-dialog": "min 0"
69
+ horizontal: "center"
86
70
  },
71
+ gap: "2x",
87
72
  "$label-width": "25x"
88
73
  }
89
74
  });
@@ -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":";;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAa+B,cAAcvB,cAAc,EAAE,CAAC;AAiB5C,MAAMiC,qBAAmD,EAAE;AAE3D,MAAaC,0BACXlC,cAA4CiC,mBAAmB;;;;;;;;;AAUjE,SAAOE,cAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAuB,MAAA,EAAAC,OAAAC,aAAAJ;CAM7B,IAAAK;AAAA,KAAAJ,EAAA,OAAAG,YAAAH,EAAA,OAAAE,OAAA;AAEGE,OAAA,oBAAA,wBAAA;GAAyC,OAAA;aACvC,oBAAA,wBAAA;IAAyCR,OAAAA;cACvC,oBAAA,YAAA;KAA6BM;KAAQC;MACvC;KACF;IAAmC;AAAAH,IAAA,KAAAG;AAAAH,IAAA,KAAAE;AAAAF,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;AAAA,QAJnCI;;AAkBJ,MAAaO,cAAclD,MAAM;CAC/BmD,IAAI;CACJC,IAAI;CACJC,QAAQ;EAaN,cAAc;EAEdC,SAAS;GACP,IAAI;GACJC,YAAY;GACZ,cAAc;GACf;EACDC,MAAM;GACJ,IAAI;GACJD,YAAY;GACZ,cAAc;GACf;EACDE,YAAY;GACV,IAAI;GACJF,YAAY;GACZ,cAAc;GACf;EACDG,KAAK;GACH,IAAI;GACJ,cAAc;GACf;EACDC,UAAU;GACR,IAAI;GACJ,cAAc;GACf;EACDC,QAAQ;GACN,IAAI;GACJ,cAAc;GACf;EACD,gBAAgB;EAClB;CACD,CAAC;;;;;;AAOF,SAAOC,aAAAhB,OAAA;CAAA,MAAAN,IAAAC,EAAA,EAAA;CACL,MAAAsB,eAAqBtD,WAAW4B,wBAAwB;CACxD,MAAA2B,MAAYvD,WAAWiB,YAAY;CACnC,MAAAuC,SAAexD,WAAWU,wBAAwB;CAAC,IAAAoB;AAAA,KAAAC,EAAA,OAAAyB,QAAA;AAI7C1B,OAAA0B,SAAA,EAAAC,MAAiBD,QAAa,GAA9B,EAA8B;AAAAzB,IAAA,KAAAyB;AAAAzB,IAAA,KAAAD;OAAAA,MAAAC,EAAA;CAAA,IAAAI;AAAA,KAAAJ,EAAA,OAAAwB,OAAAxB,EAAA,OAAAuB,gBAAAvB,EAAA,OAAAM,SAAAN,EAAA,OAAAD,IAAA;AAF7BK,OAAA;GAAA,GACFmB;GAAY,GACXxB;GAA8B,GAC/ByB;GAAG,GACHlB;GACJ;AAAAN,IAAA,KAAAwB;AAAAxB,IAAA,KAAAuB;AAAAvB,IAAA,KAAAM;AAAAN,IAAA,KAAAD;AAAAC,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;AAAA,QALMI;;AAQT,MAAauB,gBAAgB,IAAIC,IAAI;CACnC;CACA;CACA;CACA;CACA;CACD,CAAC;;;;;AA+BF,SAASW,eACPjC,OACAG,KACA;AACA;AAGAH,SAAQ7B,mBAAmBL,iBAAiBkC,MAAM,CAAC;CACnD,IAAI,EACFO,IACAiB,MACA3B,UACAf,eACAE,aACAC,oBACAiD,YACAC,YACAC,WACAC,SACAtD,aACAG,iBACAE,WACAqC,eACAE,gBACAxC,eAAe,MACfiC,MACAY,YACAJ,UACAC,gBACA,GAAGS,eACDtC;CACJ,MAAMuC,mBAAmB3E,OAAO6D,cAAc;CAC9C,MAAMe,cAAc5E,OAAO,KAAK;CAChC,MAAM6E,eAAezD,gBAAgB;AAErC,KAAI,CAACA,YACHA,eAAc;AAGhB,KAAI,CAACF,cACHA,iBAAgB2D,eAAe,SAAS;AAG1C,KAAI,CAACT,WACHA,cAAaS,eAAe,SAASC;AAGvCvC,OAAMlC,gBAAgBkC,IAAI;CAE1B,IAAIwC;AAEJ,MAAKf,YAAYC,mBAAmB,CAACS,WAAWM,OAC9CD,oBAAmB,OAAOE,MAAM;AAC9B,MAAIA,KAAKA,GAAGC,gBAAgB;AAC1BD,QAAKA,GAAGC,kBAAkBD,GAAGC,gBAAgB;AAC7CD,QAAKA,GAAGE,mBAAmBF,GAAGE,iBAAiB;AAE/C,OAAIF,EAAEG,aAAa;IACjB,MAAMC,MAAMJ,EAAEG;AAEd,QACEC,IAAIC,aACJD,IAAIC,UAAUC,aAAa,OAAO,KAAK,SAEvC;;;AAKN,MAAI,CAAC/B,QAAQA,KAAKgC,aAAc;AAEhChC,OAAKiC,cAAc;AACnBjC,OAAKkC,cAAc,KAAK;AAExB,MAAI;AACF,OAAI;AACF,UAAMlC,KAAKmC,gBAAgB;YACpBV,KAAG;AACVzB,UAAMkC,cAAc,MAAM;AAE1B;;AAGF,SAAMtF,SAAS;AACf,SAAM4D,WAAWR,KAAKoC,aAAa,CAAC;WAC7BX,KAAG;AACV,SAAM7E,SAAS;AAGfoD,QAAKiC,cAAcR;AAEnBhB,oBAAiBgB,IAAE;AAEnB,OAAIA,eAAaY,MACf,OAAMZ;YAEA;AACRzB,SAAMkC,cAAc,MAAM;;;AAQhC,EAAClC,QAAQ1C,QAAW0C,MAAMjB,OAAOA,IAAIuD,SAAS;EAC5C9B,UAAUe;EACVhB;EACD,CAAC;CAEF,IAAInB,SAAStC,cAAcoE,YAAYvF,iBAAiB;AAExD,KAAIiF,WACFxB,QAAO,kBAAkBwB;CAG3B,IAAI2B,SAAS9G,aAAasD,IAAI;CAE9B,MAAMc,eAA6C;EACjDnC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC,UAAUmC;EACX;CAED,IAAIN,MAAM;EACR,GAAGD;EACHG;EACAiC,aAAajC,KAAKiC;EACnB;AAED,KAAIb,YAAYkB,WAAWtC,MACzB;MAAIK,eAAe;AACjBL,QAAKwC,sBAAsBnC,cAAc;AACzCL,QAAKyC,YAAYnB,QAAW,KAAK;AACjCF,eAAYkB,UAAU;;;AAI1B,KAAInB,iBAAiBmB,YAAYjC,eAAe;AAC9CL,QAAMwC,sBAAsBnC,iBAAiB,EAAE,CAAC;AAChDc,mBAAiBmB,UAAUjC;;AAG7B,QACE,oBAAC;EACC,GAAIxE,gBAAgBqF,YAAY,EAAEwB,WAAWzC,eAAe,CAAC;EAC7D,KAAKsC;EACL;EACIpD;EACIC;EACR,MAAM;GACJ,aAAa1B,kBAAkB;GAC/B,aAAaA,kBAAkB;GAC/B4B,YAAY+B;GACb;EACD,UAAUE;YAEV,oBAAC,wBAAwB;GAAS,OAAO;aACvC,oBAAC,wBAAwB;IAAS,OAAO1B;cACvC,oBAAC,YAAY;KAAS,OAAOC;eAC3B,oBAAC;MACC,YAAY;MACAgB;MACAC;MACDC;MACFC;MAERxC;OACO;MACU;KACU;IACF;GACtB;;AAIlB,MAAMkE,kBAAkBxG,WAAW0E,eAAe;AAMlD,AAAC8B,gBAAwBC,cAAc;;;;;;AAOvC,SAAAC,KAAAjE,OAAAG,KAAA;CAAA,MAAAT,IAAAC,EAAA,EAAA;AAIE,KAAIvB,uBAAuB4B,MAAKoB,KAAM,EAAA;EACR,MAAA3B,KAAAO;EAA2B,IAAAF;AAAA,MAAAJ,EAAA,OAAAS,OAAAT,EAAA,OAAAD,IAAA;AAAhDK,QAAA,oBAAC;IAAc,GAAML;IAAmCU;KAAO;AAAAT,KAAA,KAAAS;AAAAT,KAAA,KAAAD;AAAAC,KAAA,KAAAI;QAAAA,MAAAJ,EAAA;AAAA,SAA/DI;;CAGoB,MAAAL,KAAAO;CAAyB,IAAAF;AAAA,KAAAJ,EAAA,OAAAS,OAAAT,EAAA,OAAAD,IAAA;AAA/CK,OAAA,oBAAA;GAA8D,GAAxCL;GAAiCU;IAAO;AAAAT,IAAA,KAAAS;AAAAT,IAAA,KAAAD;AAAAC,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;AAAA,QAA9DI;;;;;AAMT,MAAMoE,QAAQ3G,WAAW0G,KAAK;AAE9B,AAACC,MAAcF,cAAc"}
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","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 display: {\n '': 'block',\n horizontal: 'flex',\n },\n flow: {\n '': 'column',\n horizontal: 'row',\n },\n placeItems: {\n '': 'initial',\n horizontal: 'center',\n },\n gap: '2x',\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,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | 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";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-ac46c4b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-9bde021 | 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";