@cube-dev/ui-kit 0.0.0-canary-bef9600 → 0.0.0-canary-e3f8a1a

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 (654) 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 +11 -5
  18. package/dist/components/actions/Button/Button.js.map +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +27 -25
  25. package/dist/components/actions/ItemAction/ItemAction.js.map +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/MenuCollectionItem.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -4
  39. package/dist/components/actions/Menu/styled.js.map +1 -1
  40. package/dist/components/actions/actions-run.js +1 -1
  41. package/dist/components/actions/index.js +1 -1
  42. package/dist/components/actions/use-action.js +1 -1
  43. package/dist/components/actions/use-anchored-menu.js +1 -1
  44. package/dist/components/actions/use-context-menu.js +1 -1
  45. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  46. package/dist/components/content/Alert/Alert.js +1 -1
  47. package/dist/components/content/Alert/use-alert.js +1 -1
  48. package/dist/components/content/Avatar/Avatar.js +1 -1
  49. package/dist/components/content/Badge/Badge.js +1 -1
  50. package/dist/components/content/Card/Card.js +1 -1
  51. package/dist/components/content/Content.js +1 -1
  52. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  53. package/dist/components/content/CopySnippet/CopySnippet.d.ts +4 -4
  54. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  55. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  56. package/dist/components/content/Divider.js +1 -1
  57. package/dist/components/content/Footer.js +1 -1
  58. package/dist/components/content/Header.js +1 -1
  59. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  60. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  61. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  62. package/dist/components/content/Item/Item.js +3 -3
  63. package/dist/components/content/Item/Item.js.map +1 -1
  64. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  65. package/dist/components/content/ItemBadge/ItemBadge.js +7 -3
  66. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  67. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  68. package/dist/components/content/Layout/GridLayout.js +1 -1
  69. package/dist/components/content/Layout/Layout.js +28 -15
  70. package/dist/components/content/Layout/Layout.js.map +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 +20 -10
  76. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  77. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  78. package/dist/components/content/Layout/LayoutFooter.js +12 -9
  79. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  80. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  81. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  82. package/dist/components/content/Layout/LayoutPane.js +1 -1
  83. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  84. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  85. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  86. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  87. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  88. package/dist/components/content/Layout/index.js +1 -1
  89. package/dist/components/content/Layout/utils.js +1 -1
  90. package/dist/components/content/Paragraph.js +1 -1
  91. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  92. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  93. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  94. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  95. package/dist/components/content/Result/Result.js +1 -1
  96. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  97. package/dist/components/content/Tag/Tag.js +1 -1
  98. package/dist/components/content/Text.d.ts +14 -14
  99. package/dist/components/content/Text.js +1 -1
  100. package/dist/components/content/TextItem/TextItem.js +1 -1
  101. package/dist/components/content/Title.js +1 -1
  102. package/dist/components/content/Tree/Tree.js +1 -1
  103. package/dist/components/content/Tree/TreeNode.js +1 -1
  104. package/dist/components/content/Tree/styled.js +1 -1
  105. package/dist/components/content/Tree/tree-index.js +1 -1
  106. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  107. package/dist/components/content/Tree/use-load-data.js +1 -1
  108. package/dist/components/content/highlightText.js +1 -1
  109. package/dist/components/content/use-auto-tooltip.js +3 -3
  110. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  111. package/dist/components/data/DataTable/DataTable.js +1 -1
  112. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  113. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  114. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  115. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  116. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  117. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  118. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  119. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  120. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  121. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  122. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  123. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  124. package/dist/components/data/TableBase/RowCollection.js +1 -1
  125. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  126. package/dist/components/data/TableBase/TableRow.js +1 -1
  127. package/dist/components/data/TableBase/TableView.js +1 -1
  128. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  129. package/dist/components/data/TableBase/column-header.js +1 -1
  130. package/dist/components/data/TableBase/column-menu.js +1 -1
  131. package/dist/components/data/TableBase/column-styles.js +1 -1
  132. package/dist/components/data/TableBase/column-tint.js +1 -1
  133. package/dist/components/data/TableBase/row-menu.js +1 -1
  134. package/dist/components/data/TableBase/styled.js +1 -1
  135. package/dist/components/data/TableBase/table-tree.js +1 -1
  136. package/dist/components/data/TableBase/types.js +1 -1
  137. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  138. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  139. package/dist/components/data/TableBase/use-column-order.js +1 -1
  140. package/dist/components/data/TableBase/use-column-window.js +1 -1
  141. package/dist/components/data/TableBase/use-container-width.js +1 -1
  142. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  143. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  144. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  145. package/dist/components/data/TableBase/use-table-search.js +1 -1
  146. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  147. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  148. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  149. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  150. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  151. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  152. package/dist/components/fields/Checkbox/Checkbox.js +2 -2
  153. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  154. package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -5
  155. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  156. package/dist/components/fields/Checkbox/context.js +1 -1
  157. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  158. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  159. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  160. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  161. package/dist/components/fields/ComboBox/ComboBox.d.ts +26 -6
  162. package/dist/components/fields/ComboBox/ComboBox.js +1095 -619
  163. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  164. package/dist/components/fields/ComboBox/comboBoxOptions.js +84 -0
  165. package/dist/components/fields/ComboBox/comboBoxOptions.js.map +1 -0
  166. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  167. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  168. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  169. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  170. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  171. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  172. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  173. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  174. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  175. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  176. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  177. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  178. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  179. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  180. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  181. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  182. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  183. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  184. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  185. package/dist/components/fields/DatePicker/period.js +1 -1
  186. package/dist/components/fields/DatePicker/props.js +1 -1
  187. package/dist/components/fields/DatePicker/utils.js +1 -1
  188. package/dist/components/fields/FileInput/FileInput.js +1 -1
  189. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  190. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  191. package/dist/components/fields/Input/Input.d.ts +2 -2
  192. package/dist/components/fields/Input/Input.js +2 -2
  193. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  194. package/dist/components/fields/ListBox/ListBox.d.ts +10 -4
  195. package/dist/components/fields/ListBox/ListBox.js +293 -143
  196. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  197. package/dist/components/fields/ListBox/optionId.js +1 -1
  198. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +15 -12
  199. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  200. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  201. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  202. package/dist/components/fields/NumberInput/NumberInput.d.ts +0 -1
  203. package/dist/components/fields/NumberInput/NumberInput.js +136 -128
  204. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  205. package/dist/components/fields/NumberInput/StepButton.js +38 -48
  206. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  207. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +1 -2
  208. package/dist/components/fields/PasswordInput/PasswordInput.js +77 -111
  209. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  210. package/dist/components/fields/Picker/Picker.d.ts +1 -1
  211. package/dist/components/fields/Picker/Picker.js +8 -3
  212. package/dist/components/fields/Picker/Picker.js.map +1 -1
  213. package/dist/components/fields/RadioGroup/Radio.d.ts +8 -8
  214. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  215. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  216. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  217. package/dist/components/fields/RadioGroup/context.js +1 -1
  218. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  219. package/dist/components/fields/SearchInput/SearchInput.d.ts +8 -3
  220. package/dist/components/fields/SearchInput/SearchInput.js +22 -29
  221. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  222. package/dist/components/fields/Select/Select.d.ts +12 -1
  223. package/dist/components/fields/Select/Select.js +365 -207
  224. package/dist/components/fields/Select/Select.js.map +1 -1
  225. package/dist/components/fields/Slider/Gradation.js +1 -1
  226. package/dist/components/fields/Slider/HueSlider.js +1 -1
  227. package/dist/components/fields/Slider/RangeSlider.js +3 -4
  228. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  229. package/dist/components/fields/Slider/Slider.js +1 -1
  230. package/dist/components/fields/Slider/SliderBase.js +1 -1
  231. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  232. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  233. package/dist/components/fields/Slider/elements.js +1 -1
  234. package/dist/components/fields/Slider/index.js +1 -1
  235. package/dist/components/fields/Switch/Switch.js +1 -1
  236. package/dist/components/fields/TagInput/TagInput.js +1 -1
  237. package/dist/components/fields/TagInput/TagList.js +1 -1
  238. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  239. package/dist/components/fields/TagInput/useTagError.js +1 -1
  240. package/dist/components/fields/TextArea/TextArea.d.ts +0 -1
  241. package/dist/components/fields/TextArea/TextArea.js +49 -63
  242. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  243. package/dist/components/fields/TextInput/TextInput.d.ts +1 -1
  244. package/dist/components/fields/TextInput/TextInput.js +42 -46
  245. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  246. package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -2
  247. package/dist/components/fields/TextInput/TextInputBase.js +32 -10
  248. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  249. package/dist/components/fields/TextInput/displayed-validation.js +50 -0
  250. package/dist/components/fields/TextInput/displayed-validation.js.map +1 -0
  251. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  252. package/dist/components/fields/TextInputMapper/TextInputMapper.js +2 -2
  253. package/dist/components/fields/TriggerActions.js +1 -1
  254. package/dist/components/fields/color/ColorPanel.js +1 -1
  255. package/dist/components/fields/color/channels.js +1 -1
  256. package/dist/components/fields/color/color.js +1 -1
  257. package/dist/components/fields/color/context.js +1 -1
  258. package/dist/components/fields/index.d.ts +2 -2
  259. package/dist/components/fields/option-origin-press.js +78 -0
  260. package/dist/components/fields/option-origin-press.js.map +1 -0
  261. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  262. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  263. package/dist/components/form/Form/Field.js +1 -1
  264. package/dist/components/form/Form/Form.js +1 -1
  265. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  266. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  267. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  268. package/dist/components/form/Form/SubmitError.js +1 -1
  269. package/dist/components/form/Form/backend.js +1 -1
  270. package/dist/components/form/Form/index.js +1 -1
  271. package/dist/components/form/Form/modern/actions.js +1 -1
  272. package/dist/components/form/Form/modern/context.js +1 -1
  273. package/dist/components/form/Form/modern/controller.js +1 -1
  274. package/dist/components/form/Form/modern/field-binding.js +1 -1
  275. package/dist/components/form/Form/modern/field.js +1 -1
  276. package/dist/components/form/Form/modern/react.js +1 -1
  277. package/dist/components/form/Form/modern/store.js +1 -1
  278. package/dist/components/form/Form/modern/validation.js +1 -1
  279. package/dist/components/form/Form/modern/values.js +1 -1
  280. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  281. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  282. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  283. package/dist/components/form/Form/use-field/use-field.js +1 -1
  284. package/dist/components/form/Form/use-form.js +1 -1
  285. package/dist/components/form/Form/validation.js +1 -1
  286. package/dist/components/form/Label.js +1 -1
  287. package/dist/components/form/field-chrome.js +1 -1
  288. package/dist/components/form/legacy-tooltip.js +1 -1
  289. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  290. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  291. package/dist/components/form/validation/use-validation-props.js +1 -1
  292. package/dist/components/form/wrapper.js +1 -1
  293. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  294. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  295. package/dist/components/layout/Flex.js +1 -1
  296. package/dist/components/layout/Flow.js +1 -1
  297. package/dist/components/layout/Grid.js +1 -1
  298. package/dist/components/layout/Panel.js +1 -1
  299. package/dist/components/layout/Prefix.js +1 -1
  300. package/dist/components/layout/ResizablePanel.js +1 -1
  301. package/dist/components/layout/Space.js +1 -1
  302. package/dist/components/layout/Suffix.js +1 -1
  303. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  304. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  305. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  306. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  307. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  308. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  309. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  310. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  311. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  312. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  313. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  314. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  315. package/dist/components/navigation/Tabs/styled.js +1 -1
  316. package/dist/components/navigation/Tabs/types.js +1 -1
  317. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  318. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  319. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  320. package/dist/components/other/Calendar/Calendar.js +1 -1
  321. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  322. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  323. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  324. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  325. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  326. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  327. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  328. package/dist/components/other/Calendar/styled.js +1 -1
  329. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  330. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  331. package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +6 -1
  332. package/dist/components/overlays/AlertDialog/AlertDialog.js +3 -2
  333. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  334. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +3 -2
  335. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  336. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  337. package/dist/components/overlays/Dialog/Dialog.js +28 -14
  338. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  339. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  340. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  341. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +7 -3
  342. package/dist/components/overlays/Dialog/DialogTrigger.js +149 -132
  343. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  344. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  345. package/dist/components/overlays/Dialog/context.js +1 -1
  346. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  347. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  348. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  349. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +83 -0
  350. package/dist/components/overlays/Dialog/use-dialog-open-sync.js.map +1 -0
  351. package/dist/components/overlays/Modal/Modal.js +1 -1
  352. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  353. package/dist/components/overlays/Modal/Overlay.js +3 -2
  354. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  355. package/dist/components/overlays/Modal/Popover.js +1 -1
  356. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  357. package/dist/components/overlays/Modal/Tray.js +1 -1
  358. package/dist/components/overlays/Modal/Underlay.js +1 -1
  359. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  360. package/dist/components/overlays/Notifications/Notification.js +1 -1
  361. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  362. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  363. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  364. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  365. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  366. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  367. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  368. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  369. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  370. package/dist/components/overlays/Notifications/index.js +1 -1
  371. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  372. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  373. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  374. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  375. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  376. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  377. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  378. package/dist/components/overlays/Toast/index.js +1 -1
  379. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  380. package/dist/components/overlays/Toast/useToast.js +1 -1
  381. package/dist/components/overlays/Tooltip/Tooltip.d.ts +8 -0
  382. package/dist/components/overlays/Tooltip/Tooltip.js +16 -22
  383. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  384. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  385. package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -1
  386. package/dist/components/overlays/Tooltip/TooltipTrigger.js +163 -113
  387. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  388. package/dist/components/overlays/Tooltip/context.js +1 -1
  389. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  390. package/dist/components/overlays/Tooltip/split-trigger-props.js +6 -5
  391. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -1
  392. package/dist/components/portal/Portal.js +1 -1
  393. package/dist/components/portal/PortalProvider.js +1 -1
  394. package/dist/components/portal/usePortal.js +1 -1
  395. package/dist/components/shared/DraggableCollection.js +1 -1
  396. package/dist/components/shared/InvalidIcon.js +1 -1
  397. package/dist/components/shared/ValidIcon.js +1 -1
  398. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  399. package/dist/components/status/Spin/Cube.js +1 -1
  400. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  401. package/dist/components/status/Spin/Spin.js +1 -1
  402. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  403. package/dist/data/item-themes.js +1 -1
  404. package/dist/data/themes.js +1 -1
  405. package/dist/eslint-plugin/defaults.generated.js +11 -17
  406. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  407. package/dist/eslint-plugin/index.js +1 -1
  408. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  409. package/dist/i18n/I18nProvider.js +1 -1
  410. package/dist/i18n/createFormatter.js +1 -1
  411. package/dist/i18n/index.js +1 -1
  412. package/dist/i18n/instance.js +1 -1
  413. package/dist/i18n/locales/de-DE/uikit.js +6 -4
  414. package/dist/i18n/locales/en-US/uikit.js +6 -4
  415. package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -1
  416. package/dist/i18n/locales/es-ES/uikit.js +6 -4
  417. package/dist/i18n/locales/es-MX/uikit.js +6 -4
  418. package/dist/i18n/locales/fr-FR/uikit.js +6 -4
  419. package/dist/i18n/locales/it-IT/uikit.js +6 -4
  420. package/dist/i18n/locales/ja-JP/uikit.js +6 -4
  421. package/dist/i18n/locales/nb-NO/uikit.js +6 -4
  422. package/dist/i18n/locales/pt-BR/uikit.js +6 -4
  423. package/dist/i18n/locales/pt-PT/uikit.js +6 -4
  424. package/dist/i18n/locales/sv-SE/uikit.js +6 -4
  425. package/dist/i18n/locales/vi-VN/uikit.js +6 -4
  426. package/dist/i18n/locales.js +1 -1
  427. package/dist/i18n/namespace.js +1 -1
  428. package/dist/i18n/useFormatter.js +1 -1
  429. package/dist/i18n/useI18n.js +1 -1
  430. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  431. package/dist/icons/AdjustmentsIcon.js +1 -1
  432. package/dist/icons/AiIcon.js +1 -1
  433. package/dist/icons/AreaChartIcon.js +1 -1
  434. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  435. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  436. package/dist/icons/BackwardIcon.js +1 -1
  437. package/dist/icons/BarChartIcon.js +1 -1
  438. package/dist/icons/BellFilledIcon.js +1 -1
  439. package/dist/icons/BellIcon.js +1 -1
  440. package/dist/icons/BooleanIcon.js +1 -1
  441. package/dist/icons/CalendarEditIcon.js +1 -1
  442. package/dist/icons/CalendarIcon.js +1 -1
  443. package/dist/icons/CaretDownIcon.js +1 -1
  444. package/dist/icons/CaretUpIcon.js +1 -1
  445. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  446. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  447. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  448. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  449. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  450. package/dist/icons/ChartBarLineIcon.js +1 -1
  451. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  452. package/dist/icons/ChartBarStackedIcon.js +1 -1
  453. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  454. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  455. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  456. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  457. package/dist/icons/ChartBubbleIcon.js +1 -1
  458. package/dist/icons/ChartDonut2Icon.js +1 -1
  459. package/dist/icons/ChartFunnelIcon.js +1 -1
  460. package/dist/icons/ChartHeatmapIcon.js +1 -1
  461. package/dist/icons/ChartKPIIcon.js +1 -1
  462. package/dist/icons/ChartPie2Icon.js +1 -1
  463. package/dist/icons/ChartScatterIcon.js +1 -1
  464. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  465. package/dist/icons/CheckCircleIcon.js +1 -1
  466. package/dist/icons/CheckIcon.js +1 -1
  467. package/dist/icons/CircleFilledIcon.js +1 -1
  468. package/dist/icons/ClearIcon.js +1 -1
  469. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  470. package/dist/icons/CloseCircleIcon.js +1 -1
  471. package/dist/icons/CloseIcon.js +1 -1
  472. package/dist/icons/CodeIcon.js +1 -1
  473. package/dist/icons/ColumnTotalIcon.js +1 -1
  474. package/dist/icons/CopyIcon.js +1 -1
  475. package/dist/icons/CountIcon.js +1 -1
  476. package/dist/icons/CubeIcon.js +1 -1
  477. package/dist/icons/CubePauseIcon.js +1 -1
  478. package/dist/icons/CubePlayIcon.js +1 -1
  479. package/dist/icons/CurrencyDollarIcon.js +1 -1
  480. package/dist/icons/DangerIcon.js +1 -1
  481. package/dist/icons/DashboardIcon.js +1 -1
  482. package/dist/icons/DatabaseIcon.js +1 -1
  483. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  484. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  485. package/dist/icons/DirectionIcon.js +1 -1
  486. package/dist/icons/DonutIcon.js +1 -1
  487. package/dist/icons/DownIcon.js +1 -1
  488. package/dist/icons/EditIcon.js +1 -1
  489. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  490. package/dist/icons/ExclamationCircleIcon.js +1 -1
  491. package/dist/icons/ExclamationIcon.js +1 -1
  492. package/dist/icons/EyeIcon.js +1 -1
  493. package/dist/icons/EyeInvisibleIcon.js +1 -1
  494. package/dist/icons/FilterIcon.js +1 -1
  495. package/dist/icons/FolderFilledIcon.js +1 -1
  496. package/dist/icons/FolderIcon.js +1 -1
  497. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  498. package/dist/icons/FolderOpenIcon.js +1 -1
  499. package/dist/icons/ForwardIcon.js +1 -1
  500. package/dist/icons/GripVerticalIcon.js +1 -1
  501. package/dist/icons/HierarchyIcon.js +1 -1
  502. package/dist/icons/HierarchyOpenIcon.js +1 -1
  503. package/dist/icons/Icon.js +1 -1
  504. package/dist/icons/InfoCircleIcon.js +1 -1
  505. package/dist/icons/InfoIcon.js +1 -1
  506. package/dist/icons/KeyIcon.js +1 -1
  507. package/dist/icons/LeftIcon.js +1 -1
  508. package/dist/icons/LineChartIcon.js +1 -1
  509. package/dist/icons/LoadingIcon.js +1 -1
  510. package/dist/icons/LockFilledIcon.js +1 -1
  511. package/dist/icons/LockIcon.js +1 -1
  512. package/dist/icons/MoreIcon.js +1 -1
  513. package/dist/icons/NotAllowedIcon.js +1 -1
  514. package/dist/icons/Number123Icon.js +1 -1
  515. package/dist/icons/NumberIcon.js +1 -1
  516. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  517. package/dist/icons/PauseCircleIcon.js +1 -1
  518. package/dist/icons/PauseIcon.js +1 -1
  519. package/dist/icons/PercentageIcon.js +1 -1
  520. package/dist/icons/PieChartIcon.js +1 -1
  521. package/dist/icons/PipetteIcon.js +1 -1
  522. package/dist/icons/PlayCircleIcon.js +1 -1
  523. package/dist/icons/PlayIcon.js +1 -1
  524. package/dist/icons/PlusIcon.js +1 -1
  525. package/dist/icons/ProgressBarIcon.js +1 -1
  526. package/dist/icons/ReloadIcon.js +1 -1
  527. package/dist/icons/ReportIcon.js +1 -1
  528. package/dist/icons/ReturnIcon.js +1 -1
  529. package/dist/icons/RightIcon.js +1 -1
  530. package/dist/icons/RowTotalsIcon.js +1 -1
  531. package/dist/icons/SchemeIcon.js +1 -1
  532. package/dist/icons/SearchIcon.js +1 -1
  533. package/dist/icons/SemanticQueryIcon.js +1 -1
  534. package/dist/icons/SettingsIcon.js +1 -1
  535. package/dist/icons/ShieldFilledIcon.js +1 -1
  536. package/dist/icons/ShieldIcon.js +1 -1
  537. package/dist/icons/SlashIcon.js +1 -1
  538. package/dist/icons/SparklesIcon.js +1 -1
  539. package/dist/icons/SqlIcon.js +1 -1
  540. package/dist/icons/StatsIcon.js +1 -1
  541. package/dist/icons/StopIcon.js +1 -1
  542. package/dist/icons/StringIcon.js +1 -1
  543. package/dist/icons/SubtotalsIcon.js +1 -1
  544. package/dist/icons/SwitchIcon.js +1 -1
  545. package/dist/icons/TableIcon.js +1 -1
  546. package/dist/icons/ThumbsDownIcon.js +1 -1
  547. package/dist/icons/ThumbsUpIcon.js +1 -1
  548. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  549. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  550. package/dist/icons/ThunderboltIcon.js +1 -1
  551. package/dist/icons/TimeIcon.js +1 -1
  552. package/dist/icons/TrashIcon.js +1 -1
  553. package/dist/icons/UnlockIcon.js +1 -1
  554. package/dist/icons/UpIcon.js +1 -1
  555. package/dist/icons/UserGroupIcon.js +1 -1
  556. package/dist/icons/UserIcon.js +1 -1
  557. package/dist/icons/UserLockIcon.js +1 -1
  558. package/dist/icons/ViewIcon.js +1 -1
  559. package/dist/icons/WarningFilledIcon.js +1 -1
  560. package/dist/icons/WarningIcon.js +1 -1
  561. package/dist/icons/wrap-icon.js +1 -1
  562. package/dist/index.d.ts +1 -1
  563. package/dist/index.js +2 -2
  564. package/dist/probe/canonicalize.js +1 -1
  565. package/dist/probe/css.js +1 -1
  566. package/dist/probe/index.js +1 -1
  567. package/dist/provider.js +1 -1
  568. package/dist/providers/TrackingProvider.js +1 -1
  569. package/dist/providers/navigation-url.js +1 -1
  570. package/dist/providers/navigationAdapter.default.js +1 -1
  571. package/dist/providers/use-navigation.js +1 -1
  572. package/dist/tokens/all-tokens.js +1 -1
  573. package/dist/tokens/base.js +1 -1
  574. package/dist/tokens/color-seed.js +1 -1
  575. package/dist/tokens/color-theme.js +1 -1
  576. package/dist/tokens/colors.js +1 -1
  577. package/dist/tokens/layout.js +1 -1
  578. package/dist/tokens/lazy-styles.js +1 -1
  579. package/dist/tokens/legacy-color.js +1 -1
  580. package/dist/tokens/palette-config.js +1 -1
  581. package/dist/tokens/palette.js +1 -1
  582. package/dist/tokens/resolve.js +1 -1
  583. package/dist/tokens/shadows.js +1 -1
  584. package/dist/tokens/sizes.js +1 -1
  585. package/dist/tokens/spacing.js +1 -1
  586. package/dist/tokens/typography.js +1 -1
  587. package/dist/utils/ResizeSensor.js +1 -1
  588. package/dist/utils/colors.js +1 -1
  589. package/dist/utils/dotize.js +1 -1
  590. package/dist/utils/is-dev-env.js +1 -1
  591. package/dist/utils/modules.js +1 -1
  592. package/dist/utils/promise.js +1 -1
  593. package/dist/utils/raf.js +1 -1
  594. package/dist/utils/random.js +1 -1
  595. package/dist/utils/range.js +1 -1
  596. package/dist/utils/react/RenderCache.js +1 -1
  597. package/dist/utils/react/Slots.js +1 -1
  598. package/dist/utils/react/chain.js +1 -1
  599. package/dist/utils/react/disabledProps.js +1 -1
  600. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  601. package/dist/utils/react/index.js +1 -1
  602. package/dist/utils/react/interactions.js +1 -1
  603. package/dist/utils/react/isTextOnly.js +1 -1
  604. package/dist/utils/react/mapProps.js +1 -1
  605. package/dist/utils/react/mergeProps.js +1 -1
  606. package/dist/utils/react/nullableValue.js +18 -9
  607. package/dist/utils/react/nullableValue.js.map +1 -1
  608. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  609. package/dist/utils/react/programmaticFocus.js +1 -1
  610. package/dist/utils/react/resolveIcon.js +1 -1
  611. package/dist/utils/react/sharedStore.js +1 -1
  612. package/dist/utils/react/useBufferedValue.js +1 -1
  613. package/dist/utils/react/useCombinedRefs.js +1 -1
  614. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  615. package/dist/utils/react/useEventBus.js +1 -1
  616. package/dist/utils/react/useId.js +1 -1
  617. package/dist/utils/react/useIsDarwin.js +1 -1
  618. package/dist/utils/react/useKeySymbols.js +1 -1
  619. package/dist/utils/react/useLayoutEffect.js +1 -1
  620. package/dist/utils/react/useLocalStorage.js +1 -1
  621. package/dist/utils/react/useMergeStyles.js +1 -1
  622. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  623. package/dist/utils/react/usePopoverSync.js +1 -1
  624. package/dist/utils/react/useQaProps.js +1 -1
  625. package/dist/utils/react/useScheme.js +1 -1
  626. package/dist/utils/react/useViewportSize.js +1 -1
  627. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  628. package/dist/utils/selection.js +1 -1
  629. package/dist/utils/styles.js +1 -1
  630. package/dist/utils/tree.js +1 -1
  631. package/dist/utils/warnings.js +1 -1
  632. package/dist/version.js +2 -2
  633. package/docs/components/actions/Button.md +8 -2
  634. package/docs/components/content/InfoBadge.md +2 -0
  635. package/docs/components/content/ItemBadge.md +4 -0
  636. package/docs/components/content/Layout.md +2 -1
  637. package/docs/components/fields/ComboBox.md +25 -18
  638. package/docs/components/fields/FilterListBox.md +2 -2
  639. package/docs/components/fields/FilterPicker.md +2 -2
  640. package/docs/components/fields/ListBox.md +14 -10
  641. package/docs/components/fields/NumberInput.md +10 -10
  642. package/docs/components/fields/PasswordInput.md +6 -7
  643. package/docs/components/fields/Picker.md +6 -5
  644. package/docs/components/fields/RadioGroup.md +1 -1
  645. package/docs/components/fields/SearchInput.md +7 -6
  646. package/docs/components/fields/Select.md +14 -8
  647. package/docs/components/fields/TextArea.md +4 -3
  648. package/docs/components/fields/TextInput.md +13 -6
  649. package/docs/components/overlays/AlertDialog.md +7 -1
  650. package/docs/components/overlays/Dialog.md +5 -5
  651. package/docs/components/overlays/DialogTrigger.md +6 -6
  652. package/docs/components/overlays/Tooltip.md +17 -6
  653. package/docs/components/overlays/TooltipTrigger.md +2 -0
  654. package/package.json +1 -1
@@ -31,7 +31,7 @@ interface CubeTooltipTriggerProps extends TooltipTriggerProps {
31
31
  isDisabled?: boolean;
32
32
  /**
33
33
  * The delay time for the tooltip to show up.
34
- * @default 1500
34
+ * @default 250
35
35
  */
36
36
  delay?: number;
37
37
  /**
@@ -1,14 +1,16 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
+ import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
2
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
4
  import { isDevEnv } from "../../../utils/is-dev-env.js";
4
5
  import { TooltipContext } from "./context.js";
6
+ import { _Tooltip } from "./Tooltip.js";
5
7
  import { isFocusRestoration } from "../../../utils/react/programmaticFocus.js";
6
8
  import { Block } from "../../Block.js";
7
9
  import { _ActiveZone } from "../../content/ActiveZone/ActiveZone.js";
8
10
  import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
9
11
  import { Portal } from "../../portal/Portal.js";
10
12
  import { c } from "react/compiler-runtime";
11
- import { createContext, isValidElement, useContext, useRef, useState } from "react";
13
+ import { Children, createContext, isValidElement, useContext, useEffectEvent, useRef, useState } from "react";
12
14
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
13
15
  import { useOverlayPosition, useTooltipTrigger } from "react-aria";
14
16
  import { FocusableProvider } from "@react-aria/focus";
@@ -29,39 +31,100 @@ function TooltipTransition(props) {
29
31
  } else t0 = $[1];
30
32
  return t0;
31
33
  }
34
+ function overlaps(a, b) {
35
+ return a.bottom > b.top && a.top < b.bottom && a.right > b.left && a.left < b.right;
36
+ }
37
+ /**
38
+ * Whether the trigger is still visible after `scrolled` scrolled: it overlaps
39
+ * the viewport and, when an element scrolled, that element's box.
40
+ */
41
+ function isInView(trigger, scrolled) {
42
+ const rect = trigger.getBoundingClientRect();
43
+ return overlaps(rect, {
44
+ top: 0,
45
+ left: 0,
46
+ bottom: window.innerHeight,
47
+ right: window.innerWidth
48
+ }) && (!(scrolled instanceof Element) || overlaps(rect, scrolled.getBoundingClientRect()));
49
+ }
32
50
  function PositionedTooltip(t0) {
33
- const $ = c(9);
51
+ const $ = c(21);
34
52
  const { tooltip, contextValue } = t0;
35
- const options = useContext(TooltipPositionContext);
53
+ const t1 = useContext(TooltipPositionContext);
54
+ let onClose;
55
+ let options;
56
+ if ($[0] !== t1) {
57
+ ({onClose, ...options} = t1);
58
+ $[0] = t1;
59
+ $[1] = onClose;
60
+ $[2] = options;
61
+ } else {
62
+ onClose = $[1];
63
+ options = $[2];
64
+ }
36
65
  const { overlayProps, arrowProps, placement, updatePosition } = useOverlayPosition(options);
37
- const t1 = placement || options.placement || "top";
38
66
  let t2;
39
- if ($[0] !== arrowProps || $[1] !== contextValue || $[2] !== overlayProps || $[3] !== t1 || $[4] !== updatePosition) {
40
- t2 = {
67
+ if ($[3] !== onClose || $[4] !== options.targetRef.current || $[5] !== updatePosition) {
68
+ t2 = (event) => {
69
+ const trigger = options.targetRef.current;
70
+ const { target } = event;
71
+ if (!trigger || target instanceof Node && !target.contains(trigger) || target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) return;
72
+ if (isInView(trigger, target)) updatePosition();
73
+ else onClose();
74
+ };
75
+ $[3] = onClose;
76
+ $[4] = options.targetRef.current;
77
+ $[5] = updatePosition;
78
+ $[6] = t2;
79
+ } else t2 = $[6];
80
+ const onScroll = useEffectEvent(t2);
81
+ let t3;
82
+ if ($[7] !== onScroll || $[8] !== options.isOpen) {
83
+ t3 = () => {
84
+ if (!options.isOpen) return;
85
+ const listener = (event_0) => onScroll(event_0);
86
+ window.addEventListener("scroll", listener, true);
87
+ return () => window.removeEventListener("scroll", listener, true);
88
+ };
89
+ $[7] = onScroll;
90
+ $[8] = options.isOpen;
91
+ $[9] = t3;
92
+ } else t3 = $[9];
93
+ let t4;
94
+ if ($[10] !== options.isOpen) {
95
+ t4 = [options.isOpen];
96
+ $[10] = options.isOpen;
97
+ $[11] = t4;
98
+ } else t4 = $[11];
99
+ useLayoutEffect$1(t3, t4);
100
+ const t5 = placement || options.placement || "top";
101
+ let t6;
102
+ if ($[12] !== arrowProps || $[13] !== contextValue || $[14] !== overlayProps || $[15] !== t5 || $[16] !== updatePosition) {
103
+ t6 = {
41
104
  ...contextValue,
42
- placement: t1,
105
+ placement: t5,
43
106
  overlayProps,
44
107
  arrowProps,
45
108
  updatePosition
46
109
  };
47
- $[0] = arrowProps;
48
- $[1] = contextValue;
49
- $[2] = overlayProps;
50
- $[3] = t1;
51
- $[4] = updatePosition;
52
- $[5] = t2;
53
- } else t2 = $[5];
54
- let t3;
55
- if ($[6] !== t2 || $[7] !== tooltip) {
56
- t3 = /* @__PURE__ */ jsx(TooltipContext.Provider, {
57
- value: t2,
110
+ $[12] = arrowProps;
111
+ $[13] = contextValue;
112
+ $[14] = overlayProps;
113
+ $[15] = t5;
114
+ $[16] = updatePosition;
115
+ $[17] = t6;
116
+ } else t6 = $[17];
117
+ let t7;
118
+ if ($[18] !== t6 || $[19] !== tooltip) {
119
+ t7 = /* @__PURE__ */ jsx(TooltipContext.Provider, {
120
+ value: t6,
58
121
  children: tooltip
59
122
  });
60
- $[6] = t2;
61
- $[7] = tooltip;
62
- $[8] = t3;
63
- } else t3 = $[8];
64
- return t3;
123
+ $[18] = t6;
124
+ $[19] = tooltip;
125
+ $[20] = t7;
126
+ } else t7 = $[20];
127
+ return t7;
65
128
  }
66
129
  const DEFAULT_OFFSET = 8;
67
130
  const DEFAULT_CROSS_OFFSET = 0;
@@ -72,13 +135,22 @@ function isReactElement(value) {
72
135
  return isValidElement(value);
73
136
  }
74
137
  /**
138
+ * Whether a `Tooltip` has nothing to show. The docs turn a tooltip off with
139
+ * `title={null}`, and opening it anyway drew an empty bubble and described the
140
+ * trigger by it. Only a `Tooltip` is inspected: another component may render
141
+ * content of its own.
142
+ */
143
+ function isEmptyTooltip(tooltip) {
144
+ return tooltip.type === _Tooltip && Children.toArray(tooltip.props.children).every((child) => child === "");
145
+ }
146
+ /**
75
147
  * TooltipTrigger wraps around a trigger element and a Tooltip. It handles opening and closing
76
148
  * the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip
77
149
  * relative to the trigger.
78
150
  */
79
151
  function TooltipTrigger(props) {
80
- const $ = c(29);
81
- const { children, activeWrap, targetRef: externalRef, crossOffset: t0, isDisabled, isMaterial, isLight, offset: t1, trigger: triggerAction, delay: t2, isOpen, onOpenChange, defaultOpen, disableFocusableProvider } = props;
152
+ const $ = c(13);
153
+ const { children, activeWrap, targetRef: externalRef, crossOffset: t0, isDisabled, isMaterial, isLight, offset: t1, trigger: triggerAction, delay: t2, shouldCloseOnPress, isOpen, onOpenChange, defaultOpen, disableFocusableProvider } = props;
82
154
  const crossOffset = t0 === void 0 ? DEFAULT_CROSS_OFFSET : t0;
83
155
  const offset = t1 === void 0 ? DEFAULT_OFFSET : t1;
84
156
  const delay = t2 === void 0 ? 250 : t2;
@@ -100,82 +172,60 @@ function TooltipTrigger(props) {
100
172
  $[2] = t3;
101
173
  } else t3 = $[2];
102
174
  const state = useTooltipTriggerState(t3);
175
+ const isTooltipDisabled = isDisabled || isEmptyTooltip(tooltip);
176
+ const { triggerProps: rawTriggerProps, tooltipProps } = useTooltipTrigger({
177
+ isDisabled: isTooltipDisabled,
178
+ trigger: triggerAction,
179
+ delay,
180
+ isOpen,
181
+ onOpenChange,
182
+ defaultOpen,
183
+ shouldCloseOnPress
184
+ }, state, tooltipTriggerRef);
103
185
  let t4;
104
- if ($[3] !== defaultOpen || $[4] !== delay || $[5] !== isDisabled || $[6] !== isOpen || $[7] !== onOpenChange || $[8] !== triggerAction) {
105
- t4 = {
106
- isDisabled,
107
- trigger: triggerAction,
108
- delay,
109
- isOpen,
110
- onOpenChange,
111
- defaultOpen
112
- };
113
- $[3] = defaultOpen;
114
- $[4] = delay;
115
- $[5] = isDisabled;
116
- $[6] = isOpen;
117
- $[7] = onOpenChange;
118
- $[8] = triggerAction;
119
- $[9] = t4;
120
- } else t4 = $[9];
121
- const { triggerProps: rawTriggerProps, tooltipProps } = useTooltipTrigger(t4, state, tooltipTriggerRef);
122
- let t5;
123
- if ($[10] !== rawTriggerProps) {
124
- t5 = (event) => {
186
+ if ($[3] !== rawTriggerProps) {
187
+ t4 = (event) => {
125
188
  if (isFocusRestoration()) return;
126
189
  rawTriggerProps.onFocus?.(event);
127
190
  };
128
- $[10] = rawTriggerProps;
129
- $[11] = t5;
130
- } else t5 = $[11];
131
- const onFocus = useEvent(t5);
191
+ $[3] = rawTriggerProps;
192
+ $[4] = t4;
193
+ } else t4 = $[4];
194
+ const onFocus = useEvent(t4);
132
195
  const triggerProps = {
133
196
  ...rawTriggerProps,
134
- onFocus
197
+ onFocus,
198
+ "aria-describedby": isTooltipDisabled ? void 0 : rawTriggerProps["aria-describedby"]
199
+ };
200
+ let t5;
201
+ if ($[5] !== state) {
202
+ t5 = () => state.close(true);
203
+ $[5] = state;
204
+ $[6] = t5;
205
+ } else t5 = $[6];
206
+ const positionOptions = {
207
+ placement: props.placement || "top",
208
+ targetRef: tooltipTriggerRef,
209
+ overlayRef,
210
+ offset,
211
+ crossOffset,
212
+ isOpen: state.isOpen,
213
+ shouldFlip: tooltip.props.shouldFlip,
214
+ onClose: t5
215
+ };
216
+ const tooltipContextValue = {
217
+ state,
218
+ ref: overlayRef,
219
+ isMaterial,
220
+ isLight,
221
+ ...tooltipProps
135
222
  };
136
- const t6 = props.placement || "top";
137
- let t7;
138
- if ($[12] !== crossOffset || $[13] !== offset || $[14] !== state.isOpen || $[15] !== t6 || $[16] !== tooltipTriggerRef) {
139
- t7 = {
140
- placement: t6,
141
- targetRef: tooltipTriggerRef,
142
- overlayRef,
143
- offset,
144
- crossOffset,
145
- isOpen: state.isOpen
146
- };
147
- $[12] = crossOffset;
148
- $[13] = offset;
149
- $[14] = state.isOpen;
150
- $[15] = t6;
151
- $[16] = tooltipTriggerRef;
152
- $[17] = t7;
153
- } else t7 = $[17];
154
- const positionOptions = t7;
155
- let t8;
156
- if ($[18] !== isLight || $[19] !== isMaterial || $[20] !== state || $[21] !== tooltipProps) {
157
- t8 = {
158
- state,
159
- ref: overlayRef,
160
- minOffset: "var(--gap)",
161
- minScale: "1",
162
- isMaterial,
163
- isLight,
164
- ...tooltipProps
165
- };
166
- $[18] = isLight;
167
- $[19] = isMaterial;
168
- $[20] = state;
169
- $[21] = tooltipProps;
170
- $[22] = t8;
171
- } else t8 = $[22];
172
- const tooltipContextValue = t8;
173
223
  const tooltipContent = /* @__PURE__ */ jsx(TooltipPositionContext.Provider, {
174
224
  value: positionOptions,
175
225
  children: /* @__PURE__ */ jsx(TooltipTransition, {
176
- isShown: state.isOpen && !isDisabled,
177
- children: (t9) => {
178
- const { phase, isShown, ref: transitionRef } = t9;
226
+ isShown: state.isOpen && !isTooltipDisabled,
227
+ children: (t6) => {
228
+ const { phase, isShown, ref: transitionRef } = t6;
179
229
  return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(PositionedTooltip, {
180
230
  tooltip,
181
231
  contextValue: {
@@ -192,33 +242,33 @@ function TooltipTrigger(props) {
192
242
  if (isTriggerFunction(trigger)) return /* @__PURE__ */ jsxs(Fragment$1, { children: [trigger(triggerProps, tooltipTriggerRef), tooltipContent] });
193
243
  if (!activeWrap && typeof trigger === "string") {
194
244
  console.warn("CubeUIKit: Tooltips are only supported on elements that are both focusable and hoverable. To solve this issue you can: 1) Use active element as a trigger (`Button`, `Link`, etc); 2) Use function-as-first-child pattern to manually apply trigger props; 3) Use `ActiveZone` component to manually wrap the content.");
195
- let t10;
196
- if ($[23] !== trigger) {
197
- t10 = /* @__PURE__ */ jsx(Block, { children: trigger });
198
- $[23] = trigger;
199
- $[24] = t10;
200
- } else t10 = $[24];
201
- return t10;
245
+ let t7;
246
+ if ($[7] !== trigger) {
247
+ t7 = /* @__PURE__ */ jsx(Block, { children: trigger });
248
+ $[7] = trigger;
249
+ $[8] = t7;
250
+ } else t7 = $[8];
251
+ return t7;
202
252
  }
203
- let t10;
204
- if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
205
- t10 = function onClick(e) {
253
+ let t7;
254
+ if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
255
+ t7 = function onClick(e) {
206
256
  e?.currentTarget?.parentNode.click();
207
257
  };
208
- $[25] = t10;
209
- } else t10 = $[25];
210
- const onClick = t10;
211
- let t11;
212
- if ($[26] !== activeWrap || $[27] !== trigger) {
213
- t11 = activeWrap ? /* @__PURE__ */ jsx(_ActiveZone, {
258
+ $[9] = t7;
259
+ } else t7 = $[9];
260
+ const onClick = t7;
261
+ let t8;
262
+ if ($[10] !== activeWrap || $[11] !== trigger) {
263
+ t8 = activeWrap ? /* @__PURE__ */ jsx(_ActiveZone, {
214
264
  onClick,
215
265
  children: trigger
216
266
  }) : trigger;
217
- $[26] = activeWrap;
218
- $[27] = trigger;
219
- $[28] = t11;
220
- } else t11 = $[28];
221
- const triggerContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [t11, tooltipContent] });
267
+ $[10] = activeWrap;
268
+ $[11] = trigger;
269
+ $[12] = t8;
270
+ } else t8 = $[12];
271
+ const triggerContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [t8, tooltipContent] });
222
272
  if (disableFocusableProvider) return triggerContent;
223
273
  return /* @__PURE__ */ jsx(FocusableProvider, {
224
274
  ...triggerProps,
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipTrigger.js","names":["FocusableProvider","ContextType","createContext","FocusEvent","HTMLAttributes","isValidElement","ReactElement","ReactNode","RefObject","useContext","useRef","useState","Placement","TooltipTriggerProps","useOverlayPosition","useTooltipTrigger","useTooltipTriggerState","useEvent","isDevEnv","isFocusRestoration","Block","ActiveZone","DisplayTransition","DisplayTransitionProps","Portal","TooltipContext","TooltipPositionOptions","Pick","Parameters","TooltipPositionContext","TooltipTransition","props","$","_c","hasShown","setHasShown","isShown","t0","PositionedTooltip","tooltip","contextValue","options","overlayProps","arrowProps","placement","updatePosition","t1","t2","t3","DEFAULT_OFFSET","DEFAULT_CROSS_OFFSET","isTriggerFunction","value","TooltipTriggerFunction","isReactElement","triggerProps","HTMLElement","ref","CubeTooltipTriggerProps","children","crossOffset","offset","isMaterial","isLight","activeWrap","targetRef","isOpen","onOpenChange","defaultOpen","isDisabled","delay","closeDelay","trigger","disableFocusableProvider","TooltipTrigger","externalRef","triggerAction","undefined","rawChildrenArray","Array","isArray","Error","console","warn","internalRef","tooltipTriggerRef","overlayRef","state","t4","rawTriggerProps","tooltipProps","t5","event","onFocus","t6","t7","positionOptions","t8","minOffset","minScale","tooltipContextValue","tooltipContent","t9","phase","transitionRef","t10","Symbol","for","onClick","e","currentTarget","parentNode","click","t11","triggerContent"],"sources":["../../../../src/components/overlays/Tooltip/TooltipTrigger.tsx"],"sourcesContent":["import { FocusableProvider } from '@react-aria/focus';\nimport {\n ContextType,\n createContext,\n FocusEvent,\n HTMLAttributes,\n isValidElement,\n ReactElement,\n ReactNode,\n RefObject,\n useContext,\n useRef,\n useState,\n} from 'react';\nimport {\n Placement,\n TooltipTriggerProps,\n useOverlayPosition,\n useTooltipTrigger,\n} from 'react-aria';\nimport { useTooltipTriggerState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal';\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { isFocusRestoration } from '../../../utils/react/programmaticFocus';\nimport { Block } from '../../Block';\nimport { ActiveZone } from '../../content/ActiveZone/ActiveZone';\nimport {\n DisplayTransition,\n DisplayTransitionProps,\n} from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\n\nimport { TooltipContext } from './context';\n\ntype TooltipPositionOptions = Pick<\n Parameters<typeof useOverlayPosition>[0],\n 'placement' | 'targetRef' | 'overlayRef' | 'offset' | 'crossOffset' | 'isOpen'\n>;\n\n// DisplayTransition preserves its last shown render prop during exit. Position\n// subscriptions must still see the current target, configuration and open state.\nconst TooltipPositionContext = createContext<TooltipPositionOptions>(null!);\n\nfunction TooltipTransition(\n props: Pick<DisplayTransitionProps, 'children' | 'isShown'>,\n) {\n const [hasShown, setHasShown] = useState(props.isShown);\n\n // Once opened, retain the transition owner through closing and reopening.\n // A never-opened tooltip has no animation resources to maintain.\n if (props.isShown && !hasShown) setHasShown(true);\n if (!hasShown && !props.isShown) return null;\n\n return <DisplayTransition {...props} />;\n}\n\nfunction PositionedTooltip({\n tooltip,\n contextValue,\n}: {\n tooltip: ReactElement;\n contextValue: ContextType<typeof TooltipContext>;\n}) {\n const options = useContext(TooltipPositionContext);\n const { overlayProps, arrowProps, placement, updatePosition } =\n useOverlayPosition(options);\n\n return (\n <TooltipContext.Provider\n value={{\n ...contextValue,\n placement: placement || options.placement || 'top',\n overlayProps,\n arrowProps,\n updatePosition,\n }}\n >\n {tooltip}\n </TooltipContext.Provider>\n );\n}\n\nconst DEFAULT_OFFSET = 8; // Offset needed to reach 4px/5px (med/large) distance between tooltip and trigger button\nconst DEFAULT_CROSS_OFFSET = 0;\n\n// Type guards\nfunction isTriggerFunction(value: unknown): value is TooltipTriggerFunction {\n return typeof value === 'function';\n}\n\nfunction isReactElement(value: unknown): value is ReactElement {\n return isValidElement(value);\n}\n\nexport type TooltipTriggerFunction = (\n triggerProps: HTMLAttributes<HTMLElement>,\n ref: RefObject<HTMLElement>,\n) => ReactNode;\n\nexport interface CubeTooltipTriggerProps extends TooltipTriggerProps {\n children: [ReactElement | string | TooltipTriggerFunction, ReactElement];\n crossOffset?: number;\n offset?: number;\n placement?: Placement;\n isMaterial?: boolean;\n isLight?: boolean;\n /**\n * @deprecated Use function-as-first-child pattern instead.\n * Whether the trigger should have an ActiveZone wrap to make sure it's focusable and hoverable.\n * Otherwise, tooltip won't work.\n */\n activeWrap?: boolean;\n /**\n * External ref to use instead of internal ref (optional).\n */\n targetRef?: RefObject<HTMLElement>;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n defaultOpen?: boolean;\n /**\n * Whether the tooltip should be disabled, independent of the trigger.\n */\n isDisabled?: boolean;\n /**\n * The delay time for the tooltip to show up.\n * @default 1500\n */\n delay?: number;\n /**\n * The delay time for the tooltip to close.\n * @default 500\n */\n closeDelay?: number;\n /**\n * By default, opens for both focus and hover. Can be made to open only for focus.\n */\n trigger?: 'focus';\n /**\n * When true, FocusableProvider won't be applied to the trigger.\n * Useful when trigger already handles focus or uses render props pattern.\n */\n disableFocusableProvider?: boolean;\n}\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip. It handles opening and closing\n * the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip\n * relative to the trigger.\n */\nexport function TooltipTrigger(props: CubeTooltipTriggerProps) {\n let {\n children,\n activeWrap,\n targetRef: externalRef,\n crossOffset = DEFAULT_CROSS_OFFSET,\n isDisabled,\n isMaterial,\n isLight,\n offset = DEFAULT_OFFSET,\n trigger: triggerAction,\n delay = 250,\n isOpen,\n onOpenChange,\n defaultOpen,\n disableFocusableProvider,\n } = props;\n\n // Extract both children without using React.Children.toArray so we don't lose\n // function-as-child (render-prop) which React.Children filters out.\n const rawChildrenArray = Array.isArray(children)\n ? (children as unknown[])\n : ([children] as unknown[]);\n\n const [trigger, tooltip] = rawChildrenArray;\n\n // Type guard the tooltip\n if (!isReactElement(tooltip)) {\n throw new Error(\n 'CubeUIKit: TooltipTrigger expects the second child to be a valid React element (Tooltip component).',\n );\n }\n\n // Type guard the trigger\n if (\n !isTriggerFunction(trigger) &&\n !isReactElement(trigger) &&\n typeof trigger !== 'string'\n ) {\n throw new Error(\n 'CubeUIKit: TooltipTrigger expects the first child to be a function, React element, or string.',\n );\n }\n\n // Show deprecation warning for activeWrap\n if (activeWrap && isDevEnv()) {\n console.warn(\n 'CubeUIKit: The `activeWrap` prop is deprecated. Use function-as-first-child pattern instead.',\n );\n }\n\n let internalRef = useRef<HTMLElement>(null!);\n let tooltipTriggerRef = externalRef ?? internalRef;\n let overlayRef = useRef<HTMLDivElement>(null);\n\n let state = useTooltipTriggerState({ delay, ...props });\n\n let { triggerProps: rawTriggerProps, tooltipProps } = useTooltipTrigger(\n {\n // Without it a disabled tooltip still opened — invisibly, since nothing\n // renders it — and while open React Aria's document-level listener eats\n // every `Escape`, so a Dialog under the pointer would not close.\n isDisabled,\n trigger: triggerAction,\n delay,\n isOpen,\n onOpenChange,\n defaultOpen,\n },\n state,\n tooltipTriggerRef,\n );\n\n // A tooltip answers a user arriving at the trigger. Focus handed back by a\n // component — a popup returning it to the trigger it came from — is not that\n // arrival, but the DOM event is identical and the modality is still\n // \"keyboard\", so React Aria would show the tooltip anyway. It then absorbs\n // the user's next `Escape` from its own document-level listener, which is\n // how a Dialog ended up needing two presses to close (CUB-4839).\n //\n // Dropping the focus handler rather than closing after the fact: React Aria\n // decides to show inside it, so this never starts and nothing flashes.\n //\n // Covers both restore paths — ours and a `FocusScope`'s — see\n // `programmaticFocus`.\n const onFocus = useEvent((event: FocusEvent<HTMLElement>) => {\n if (isFocusRestoration()) return;\n\n rawTriggerProps.onFocus?.(event);\n });\n\n const triggerProps = { ...rawTriggerProps, onFocus };\n\n const positionOptions = {\n placement: props.placement || 'top',\n targetRef: tooltipTriggerRef,\n overlayRef,\n offset,\n crossOffset,\n isOpen: state.isOpen,\n };\n\n const tooltipContextValue = {\n state,\n ref: overlayRef,\n minOffset: 'var(--gap)',\n minScale: '1',\n isMaterial,\n isLight,\n ...tooltipProps,\n };\n\n // Closed triggers retain their interaction state, but positioning resources\n // belong to the overlay's visible/closing lifetime rather than every label.\n const tooltipContent = (\n <TooltipPositionContext.Provider value={positionOptions}>\n <TooltipTransition isShown={state.isOpen && !isDisabled}>\n {({ phase, isShown, ref: transitionRef }) => (\n <Portal>\n <PositionedTooltip\n tooltip={tooltip}\n contextValue={{\n ...tooltipContextValue,\n phase,\n isShown,\n ref: overlayRef,\n transitionRef,\n }}\n />\n </Portal>\n )}\n </TooltipTransition>\n </TooltipPositionContext.Provider>\n );\n\n // Function trigger pattern (new)\n if (isTriggerFunction(trigger)) {\n return (\n <>\n {trigger(triggerProps, tooltipTriggerRef)}\n {tooltipContent}\n </>\n );\n }\n\n // Legacy element/string trigger pattern\n if (!activeWrap && typeof trigger === 'string') {\n console.warn(\n 'CubeUIKit: Tooltips are only supported on elements that are both focusable and hoverable. To solve this issue you can: 1) Use active element as a trigger (`Button`, `Link`, etc); 2) Use function-as-first-child pattern to manually apply trigger props; 3) Use `ActiveZone` component to manually wrap the content.',\n );\n\n return <Block>{trigger}</Block>;\n }\n\n function onClick(e) {\n e?.currentTarget?.parentNode.click();\n }\n\n const triggerContent = (\n <>\n {activeWrap ? (\n <ActiveZone onClick={onClick}>{trigger}</ActiveZone>\n ) : (\n trigger\n )}\n {tooltipContent}\n </>\n );\n\n if (disableFocusableProvider) {\n return triggerContent;\n }\n\n return (\n <FocusableProvider {...triggerProps} ref={tooltipTriggerRef}>\n {triggerContent}\n </FocusableProvider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA0CA,MAAM6B,yBAAyB3B,cAAsC,KAAM;AAE3E,SAAA4B,kBAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAGE,MAAA,CAAAC,UAAAC,eAAgCxB,SAASoB,MAAKK,QAAS;AAIvD,KAAIL,MAAKK,WAAL,CAAkBF,SAAUC,aAAY,KAAK;AACjD,KAAI,CAACD,YAAD,CAAcH,MAAKK,QAAQ,QAAS;CAAK,IAAAC;AAAA,KAAAL,EAAA,OAAAD,OAAA;AAEtCM,OAAA,oBAAC,qBAAiB,GAAKN,QAAS;AAAAC,IAAA,KAAAD;AAAAC,IAAA,KAAAK;OAAAA,MAAAL,EAAA;AAAA,QAAhCK;;AAGT,SAAAC,kBAAAD,IAAA;CAAA,MAAAL,IAAAC,EAAA,EAAA;CAA2B,MAAA,EAAAM,SAAAC,iBAAAH;CAOzB,MAAAI,UAAgBhC,WAAWoB,uBAAuB;CAClD,MAAA,EAAAa,cAAAC,YAAAC,WAAAC,mBACE/B,mBAAmB2B,QAAQ;CAMZ,MAAAK,KAAAF,aAAaH,QAAOG,aAApB;CAAuC,IAAAG;AAAA,KAAAf,EAAA,OAAAW,cAAAX,EAAA,OAAAQ,gBAAAR,EAAA,OAAAU,gBAAAV,EAAA,OAAAc,MAAAd,EAAA,OAAAa,gBAAA;AAF7CE,OAAA;GAAA,GACFP;GAAYI,WACJE;GAAuCJ;GAAAC;GAAAE;GAInD;AAAAb,IAAA,KAAAW;AAAAX,IAAA,KAAAQ;AAAAR,IAAA,KAAAU;AAAAV,IAAA,KAAAc;AAAAd,IAAA,KAAAa;AAAAb,IAAA,KAAAe;OAAAA,MAAAf,EAAA;CAAA,IAAAgB;AAAA,KAAAhB,EAAA,OAAAe,MAAAf,EAAA,OAAAO,SAAA;AAPHS,OAAA,oBAAA,eAAA;GACS,OAAAD;aAQNR;IACuB;AAAAP,IAAA,KAAAe;AAAAf,IAAA,KAAAO;AAAAP,IAAA,KAAAgB;OAAAA,MAAAhB,EAAA;AAAA,QAV1BgB;;AAcJ,MAAMC,iBAAiB;AACvB,MAAMC,uBAAuB;AAG7B,SAASC,kBAAkBC,OAAiD;AAC1E,QAAO,OAAOA,UAAU;;AAG1B,SAASE,eAAeF,OAAuC;AAC7D,QAAO/C,eAAe+C,MAAM;;;;;;;AA0D9B,SAAOsB,eAAA3C,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACL,MAAA,EAAA0B,UAAAK,YAAAC,WAAAU,aAAAf,aAAAvB,IAAAgC,YAAAP,YAAAC,SAAAF,QAAAf,IAAA0B,SAAAI,eAAAN,OAAAvB,IAAAmB,QAAAC,cAAAC,aAAAK,6BAeI1C;CAXF,MAAA6B,cAAAvB,OAAAwC,SAAA3B,uBAAAb;CAIA,MAAAwB,SAAAf,OAAA+B,SAAA5B,iBAAAH;CAEA,MAAAwB,QAAAvB,OAAA8B,SAAA,MAAA9B;CAaF,MAAA,CAAAyB,SAAAjC,WAJyBwC,MAAKC,QAASrB,SAEV,GADxBA,WACA,CAACA,SAAS;AAKf,KAAI,CAACL,eAAef,QAAQ,CAC1B,OAAM,IAAI0C,MACR,sGACD;AAIH,KACE,CAAC9B,kBAAkBqB,QACK,IADxB,CACClB,eAAekB,QACW,IAA3B,OAAOA,YAAY,SAEnB,OAAM,IAAIS,MACR,gGACD;AAIH,KAAIjB,cAAc9C,UAAU,CAC1BgE,SAAOC,KACL,+FACD;CAGH,MAAAC,cAAkB1E,OAAoB,KAAM;CAC5C,MAAA2E,oBAAwBV,eAAAS;CACxB,MAAAE,aAAiB5E,OAAuB,KAAK;CAAC,IAAAsC;AAAA,KAAAhB,EAAA,OAAAsC,SAAAtC,EAAA,OAAAD,OAAA;AAEXiB,OAAA;GAAAsB;GAAA,GAAYvC;GAAO;AAAAC,IAAA,KAAAsC;AAAAtC,IAAA,KAAAD;AAAAC,IAAA,KAAAgB;OAAAA,MAAAhB,EAAA;CAAtD,MAAAuD,QAAYvE,uBAAuBgC,GAAoB;CAAC,IAAAwC;AAAA,KAAAxD,EAAA,OAAAoC,eAAApC,EAAA,OAAAsC,SAAAtC,EAAA,OAAAqC,cAAArC,EAAA,OAAAkC,UAAAlC,EAAA,OAAAmC,gBAAAnC,EAAA,OAAA4C,eAAA;AAGtDY,OAAA;GAAAnB;GAAAG,SAKWI;GAAaN;GAAAJ;GAAAC;GAAAC;GAKvB;AAAApC,IAAA,KAAAoC;AAAApC,IAAA,KAAAsC;AAAAtC,IAAA,KAAAqC;AAAArC,IAAA,KAAAkC;AAAAlC,IAAA,KAAAmC;AAAAnC,IAAA,KAAA4C;AAAA5C,IAAA,KAAAwD;OAAAA,MAAAxD,EAAA;CAXH,MAAA,EAAAuB,cAAAkC,iBAAAC,iBAAsD3E,kBACpDyE,IAWAD,OACAF,kBACD;CAAC,IAAAM;AAAA,KAAA3D,EAAA,QAAAyD,iBAAA;AAcuBE,QAAAC,UAAA;AACvB,OAAIzE,oBAAoB,CAAA;AAExBsE,mBAAeI,UAAWD,MAAM;;AACjC5D,IAAA,MAAAyD;AAAAzD,IAAA,MAAA2D;OAAAA,MAAA3D,EAAA;CAJD,MAAA6D,UAAgB5E,SAAS0E,GAIvB;CAEF,MAAApC,eAAqB;EAAA,GAAKkC;EAAeI;EAAW;CAGvC,MAAAC,KAAA/D,MAAKa,aAAL;CAAwB,IAAAmD;AAAA,KAAA/D,EAAA,QAAA4B,eAAA5B,EAAA,QAAA6B,UAAA7B,EAAA,QAAAuD,MAAArB,UAAAlC,EAAA,QAAA8D,MAAA9D,EAAA,QAAAqD,mBAAA;AADbU,OAAA;GAAAnD,WACXkD;GAAwB7B,WACxBoB;GAAiBC;GAAAzB;GAAAD;GAAAM,QAIpBqB,MAAKrB;GACd;AAAAlC,IAAA,MAAA4B;AAAA5B,IAAA,MAAA6B;AAAA7B,IAAA,MAAAuD,MAAArB;AAAAlC,IAAA,MAAA8D;AAAA9D,IAAA,MAAAqD;AAAArD,IAAA,MAAA+D;OAAAA,MAAA/D,EAAA;CAPD,MAAAgE,kBAAwBD;CAOtB,IAAAE;AAAA,KAAAjE,EAAA,QAAA+B,WAAA/B,EAAA,QAAA8B,cAAA9B,EAAA,QAAAuD,SAAAvD,EAAA,QAAA0D,cAAA;AAE0BO,OAAA;GAAAV;GAAA9B,KAErB6B;GAAUY,WACJ;GAAYC,UACb;GAAGrC;GAAAC;GAAA,GAGV2B;GACJ;AAAA1D,IAAA,MAAA+B;AAAA/B,IAAA,MAAA8B;AAAA9B,IAAA,MAAAuD;AAAAvD,IAAA,MAAA0D;AAAA1D,IAAA,MAAAiE;OAAAA,MAAAjE,EAAA;CARD,MAAAoE,sBAA4BH;CAY5B,MAAAI,iBACE,oBAAA,uBAAA;EAAwCL,OAAAA;YACtC,oBAAC;GAA2B,SAAAT,MAAKrB,UAAL,CAAiBG;cAC1CiC,OAAA;IAAC,MAAA,EAAAC,OAAAnE,SAAAqB,KAAA+C,kBAAAF;AAAsC,WACtC,oBAAC,oBACC,oBAAC;KACU/D;KACK,cAAA;MAAA,GACT6D;MAAmBG;MAAAnE;MAAAqB,KAGjB6B;MAAUkB;MAEjB;MAEJ,GAAS;;IAGf;GAAkC;AAIpC,KAAIrD,kBAAkBqB,QAAQ,CAAA,QAE1B,8CACGA,QAAQjB,cAAc8B,kBAAiB,EACvCgB,kBACA;AAKP,KAAI,CAACrC,cAAc,OAAOQ,YAAY,UAAQ;AAC5CU,UAAOC,KACL,yTACD;EAAA,IAAAsB;AAAA,MAAAzE,EAAA,QAAAwC,SAAA;AAEMiC,SAAA,oBAAC,mBAAOjC,UAAgB;AAAAxC,KAAA,MAAAwC;AAAAxC,KAAA,MAAAyE;QAAAA,OAAAzE,EAAA;AAAA,SAAxByE;;CACR,IAAAA;AAAA,KAAAzE,EAAA,QAAA0E,OAAAC,IAAA,4BAAA,EAAA;AAEDF,QAAA,SAAAG,QAAAC,GAAA;AACEA,MAACC,eAA2BC,WAAMC,OAAE;;AACrChF,IAAA,MAAAyE;OAAAA,OAAAzE,EAAA;CAFD,MAAA4E,UAAAH;CAEC,IAAAQ;AAAA,KAAAjF,EAAA,QAAAgC,cAAAhC,EAAA,QAAAwC,SAAA;AAIIyC,QAAAjD,aACC,oBAAC;GAAoB4C;aAAUpC;IAGhC,GAJAA;AAIAxC,IAAA,MAAAgC;AAAAhC,IAAA,MAAAwC;AAAAxC,IAAA,MAAAiF;OAAAA,OAAAjF,EAAA;CANL,MAAAkF,iBACE,8CACGD,KAKAZ,kBACA;AAGL,KAAI5B,yBAAwB,QACnByC;AACR,QAGC,oBAAC;EAAiB,GAAK3D;EAAmB8B,KAAAA;YACvC6B;GACiB"}
1
+ {"version":3,"file":"TooltipTrigger.js","names":["FocusableProvider","Children","ContextType","createContext","FocusEvent","HTMLAttributes","isValidElement","ReactElement","ReactNode","RefObject","useContext","useEffectEvent","useRef","useState","Placement","TooltipTriggerProps","useOverlayPosition","useTooltipTrigger","useTooltipTriggerState","useEvent","isDevEnv","isFocusRestoration","useLayoutEffect","Block","ActiveZone","DisplayTransition","DisplayTransitionProps","Portal","TooltipContext","CubeTooltipProps","Tooltip","TooltipPositionOptions","Pick","Parameters","onClose","TooltipPositionContext","TooltipTransition","props","$","_c","hasShown","setHasShown","isShown","t0","Box","DOMRect","overlaps","a","b","bottom","top","right","left","isInView","trigger","Element","scrolled","EventTarget","rect","getBoundingClientRect","viewport","window","innerHeight","innerWidth","PositionedTooltip","tooltip","contextValue","t1","options","overlayProps","arrowProps","placement","updatePosition","t2","targetRef","current","event","target","Node","contains","HTMLInputElement","HTMLTextAreaElement","onScroll","t3","isOpen","listener","event_0","addEventListener","removeEventListener","t4","t5","t6","t7","DEFAULT_OFFSET","DEFAULT_CROSS_OFFSET","isTriggerFunction","value","TooltipTriggerFunction","isReactElement","P","isEmptyTooltip","type","toArray","children","every","child","triggerProps","HTMLElement","ref","CubeTooltipTriggerProps","crossOffset","offset","isMaterial","isLight","activeWrap","onOpenChange","defaultOpen","isDisabled","delay","closeDelay","disableFocusableProvider","TooltipTrigger","externalRef","triggerAction","shouldCloseOnPress","undefined","rawChildrenArray","Array","isArray","Error","console","warn","internalRef","tooltipTriggerRef","overlayRef","state","isTooltipDisabled","rawTriggerProps","tooltipProps","onFocus","close","positionOptions","shouldFlip","tooltipContextValue","tooltipContent","phase","transitionRef","Symbol","for","onClick","e","currentTarget","parentNode","click","t8","triggerContent"],"sources":["../../../../src/components/overlays/Tooltip/TooltipTrigger.tsx"],"sourcesContent":["import { FocusableProvider } from '@react-aria/focus';\nimport {\n Children,\n ContextType,\n createContext,\n FocusEvent,\n HTMLAttributes,\n isValidElement,\n ReactElement,\n ReactNode,\n RefObject,\n useContext,\n useEffectEvent,\n useRef,\n useState,\n} from 'react';\nimport {\n Placement,\n TooltipTriggerProps,\n useOverlayPosition,\n useTooltipTrigger,\n} from 'react-aria';\nimport { useTooltipTriggerState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal';\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { isFocusRestoration } from '../../../utils/react/programmaticFocus';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { Block } from '../../Block';\nimport { ActiveZone } from '../../content/ActiveZone/ActiveZone';\nimport {\n DisplayTransition,\n DisplayTransitionProps,\n} from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\n\nimport { TooltipContext } from './context';\nimport { CubeTooltipProps, Tooltip } from './Tooltip';\n\ntype TooltipPositionOptions = Pick<\n Parameters<typeof useOverlayPosition>[0],\n | 'placement'\n | 'targetRef'\n | 'overlayRef'\n | 'offset'\n | 'crossOffset'\n | 'isOpen'\n | 'shouldFlip'\n> & {\n onClose: () => void;\n};\n\n// DisplayTransition preserves its last shown render prop during exit. Position\n// subscriptions must still see the current target, configuration and open state.\nconst TooltipPositionContext = createContext<TooltipPositionOptions>(null!);\n\nfunction TooltipTransition(\n props: Pick<DisplayTransitionProps, 'children' | 'isShown'>,\n) {\n const [hasShown, setHasShown] = useState(props.isShown);\n\n // Once opened, retain the transition owner through closing and reopening.\n // A never-opened tooltip has no animation resources to maintain.\n if (props.isShown && !hasShown) setHasShown(true);\n if (!hasShown && !props.isShown) return null;\n\n return <DisplayTransition {...props} />;\n}\n\ntype Box = Pick<DOMRect, 'top' | 'right' | 'bottom' | 'left'>;\n\nfunction overlaps(a: Box, b: Box) {\n return (\n a.bottom > b.top && a.top < b.bottom && a.right > b.left && a.left < b.right\n );\n}\n\n/**\n * Whether the trigger is still visible after `scrolled` scrolled: it overlaps\n * the viewport and, when an element scrolled, that element's box.\n */\nfunction isInView(trigger: Element, scrolled: EventTarget | null) {\n const rect = trigger.getBoundingClientRect();\n const viewport = {\n top: 0,\n left: 0,\n bottom: window.innerHeight,\n right: window.innerWidth,\n };\n\n return (\n overlaps(rect, viewport) &&\n (!(scrolled instanceof Element) ||\n overlaps(rect, scrolled.getBoundingClientRect()))\n );\n}\n\nfunction PositionedTooltip({\n tooltip,\n contextValue,\n}: {\n tooltip: ReactElement;\n contextValue: ContextType<typeof TooltipContext>;\n}) {\n const { onClose, ...options } = useContext(TooltipPositionContext);\n const { overlayProps, arrowProps, placement, updatePosition } =\n useOverlayPosition(options);\n\n // A scroll of the page or of an element that contains the trigger moves the\n // trigger. The tooltip follows it while it stays in view, and closes once it\n // is scrolled out. Closing on any scroll, as a popover does, would close the\n // tooltip a keyboard user just opened: focus scrolls a trigger into view —\n // the browser at once, a list a frame later — and the scroll is reported\n // after the tooltip opened.\n const onScroll = useEffectEvent((event: Event) => {\n const trigger = options.targetRef.current;\n const { target } = event;\n\n if (\n !trigger ||\n (target instanceof Node && !target.contains(trigger)) ||\n // A text field scrolls its own text to keep the caret in view.\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement\n ) {\n return;\n }\n\n if (isInView(trigger, target)) {\n updatePosition();\n } else {\n onClose();\n }\n });\n\n // Subscribed at commit, with the positioning, so a scroll reported on the\n // next frame is never missed.\n useLayoutEffect(() => {\n if (!options.isOpen) return;\n\n const listener = (event: Event) => onScroll(event);\n\n window.addEventListener('scroll', listener, true);\n\n return () => window.removeEventListener('scroll', listener, true);\n }, [options.isOpen]);\n\n return (\n <TooltipContext.Provider\n value={{\n ...contextValue,\n placement: placement || options.placement || 'top',\n overlayProps,\n arrowProps,\n updatePosition,\n }}\n >\n {tooltip}\n </TooltipContext.Provider>\n );\n}\n\nconst DEFAULT_OFFSET = 8; // Offset needed to reach 4px/5px (med/large) distance between tooltip and trigger button\nconst DEFAULT_CROSS_OFFSET = 0;\n\n// Type guards\nfunction isTriggerFunction(value: unknown): value is TooltipTriggerFunction {\n return typeof value === 'function';\n}\n\nfunction isReactElement<P = unknown>(value: unknown): value is ReactElement<P> {\n return isValidElement(value);\n}\n\n/**\n * Whether a `Tooltip` has nothing to show. The docs turn a tooltip off with\n * `title={null}`, and opening it anyway drew an empty bubble and described the\n * trigger by it. Only a `Tooltip` is inspected: another component may render\n * content of its own.\n */\nfunction isEmptyTooltip(tooltip: ReactElement<CubeTooltipProps>): boolean {\n return (\n tooltip.type === Tooltip &&\n Children.toArray(tooltip.props.children).every((child) => child === '')\n );\n}\n\nexport type TooltipTriggerFunction = (\n triggerProps: HTMLAttributes<HTMLElement>,\n ref: RefObject<HTMLElement>,\n) => ReactNode;\n\nexport interface CubeTooltipTriggerProps extends TooltipTriggerProps {\n children: [ReactElement | string | TooltipTriggerFunction, ReactElement];\n crossOffset?: number;\n offset?: number;\n placement?: Placement;\n isMaterial?: boolean;\n isLight?: boolean;\n /**\n * @deprecated Use function-as-first-child pattern instead.\n * Whether the trigger should have an ActiveZone wrap to make sure it's focusable and hoverable.\n * Otherwise, tooltip won't work.\n */\n activeWrap?: boolean;\n /**\n * External ref to use instead of internal ref (optional).\n */\n targetRef?: RefObject<HTMLElement>;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n defaultOpen?: boolean;\n /**\n * Whether the tooltip should be disabled, independent of the trigger.\n */\n isDisabled?: boolean;\n /**\n * The delay time for the tooltip to show up.\n * @default 250\n */\n delay?: number;\n /**\n * The delay time for the tooltip to close.\n * @default 500\n */\n closeDelay?: number;\n /**\n * By default, opens for both focus and hover. Can be made to open only for focus.\n */\n trigger?: 'focus';\n /**\n * When true, FocusableProvider won't be applied to the trigger.\n * Useful when trigger already handles focus or uses render props pattern.\n */\n disableFocusableProvider?: boolean;\n}\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip. It handles opening and closing\n * the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip\n * relative to the trigger.\n */\nexport function TooltipTrigger(props: CubeTooltipTriggerProps) {\n let {\n children,\n activeWrap,\n targetRef: externalRef,\n crossOffset = DEFAULT_CROSS_OFFSET,\n isDisabled,\n isMaterial,\n isLight,\n offset = DEFAULT_OFFSET,\n trigger: triggerAction,\n delay = 250,\n shouldCloseOnPress,\n isOpen,\n onOpenChange,\n defaultOpen,\n disableFocusableProvider,\n } = props;\n\n // Extract both children without using React.Children.toArray so we don't lose\n // function-as-child (render-prop) which React.Children filters out.\n const rawChildrenArray = Array.isArray(children)\n ? (children as unknown[])\n : ([children] as unknown[]);\n\n const [trigger, tooltip] = rawChildrenArray;\n\n // Type guard the tooltip\n if (!isReactElement<CubeTooltipProps>(tooltip)) {\n throw new Error(\n 'CubeUIKit: TooltipTrigger expects the second child to be a valid React element (Tooltip component).',\n );\n }\n\n // Type guard the trigger\n if (\n !isTriggerFunction(trigger) &&\n !isReactElement(trigger) &&\n typeof trigger !== 'string'\n ) {\n throw new Error(\n 'CubeUIKit: TooltipTrigger expects the first child to be a function, React element, or string.',\n );\n }\n\n // Show deprecation warning for activeWrap\n if (activeWrap && isDevEnv()) {\n console.warn(\n 'CubeUIKit: The `activeWrap` prop is deprecated. Use function-as-first-child pattern instead.',\n );\n }\n\n let internalRef = useRef<HTMLElement>(null!);\n let tooltipTriggerRef = externalRef ?? internalRef;\n let overlayRef = useRef<HTMLDivElement>(null);\n\n let state = useTooltipTriggerState({ delay, ...props });\n\n // A tooltip with nothing to show is a disabled one.\n const isTooltipDisabled = isDisabled || isEmptyTooltip(tooltip);\n\n let { triggerProps: rawTriggerProps, tooltipProps } = useTooltipTrigger(\n {\n // Without it a disabled tooltip still opened — invisibly, since nothing\n // renders it — and while open React Aria's document-level listener eats\n // every `Escape`, so a Dialog under the pointer would not close.\n isDisabled: isTooltipDisabled,\n trigger: triggerAction,\n delay,\n isOpen,\n onOpenChange,\n defaultOpen,\n shouldCloseOnPress,\n },\n state,\n tooltipTriggerRef,\n );\n\n // A tooltip answers a user arriving at the trigger. Focus handed back by a\n // component — a popup returning it to the trigger it came from — is not that\n // arrival, but the DOM event is identical and the modality is still\n // \"keyboard\", so React Aria would show the tooltip anyway. It then absorbs\n // the user's next `Escape` from its own document-level listener, which is\n // how a Dialog ended up needing two presses to close (CUB-4839).\n //\n // Dropping the focus handler rather than closing after the fact: React Aria\n // decides to show inside it, so this never starts and nothing flashes.\n //\n // Covers both restore paths — ours and a `FocusScope`'s — see\n // `programmaticFocus`.\n const onFocus = useEvent((event: FocusEvent<HTMLElement>) => {\n if (isFocusRestoration()) return;\n\n rawTriggerProps.onFocus?.(event);\n });\n\n const triggerProps = {\n ...rawTriggerProps,\n onFocus,\n // A controlled `isOpen` still opens a disabled tooltip's state, and nothing\n // is rendered to describe the trigger by.\n 'aria-describedby': isTooltipDisabled\n ? undefined\n : rawTriggerProps['aria-describedby'],\n };\n\n const positionOptions: TooltipPositionOptions = {\n placement: props.placement || 'top',\n targetRef: tooltipTriggerRef,\n overlayRef,\n offset,\n crossOffset,\n isOpen: state.isOpen,\n // Documented on `Tooltip`, which renders inside the positioned layer, so\n // it is read from the element here.\n shouldFlip: tooltip.props.shouldFlip,\n // Called once a scroll carries the trigger out of view.\n onClose: () => state.close(true),\n };\n\n const tooltipContextValue = {\n state,\n ref: overlayRef,\n isMaterial,\n isLight,\n ...tooltipProps,\n };\n\n // Closed triggers retain their interaction state, but positioning resources\n // belong to the overlay's visible/closing lifetime rather than every label.\n const tooltipContent = (\n <TooltipPositionContext.Provider value={positionOptions}>\n <TooltipTransition isShown={state.isOpen && !isTooltipDisabled}>\n {({ phase, isShown, ref: transitionRef }) => (\n <Portal>\n <PositionedTooltip\n tooltip={tooltip}\n contextValue={{\n ...tooltipContextValue,\n phase,\n isShown,\n ref: overlayRef,\n transitionRef,\n }}\n />\n </Portal>\n )}\n </TooltipTransition>\n </TooltipPositionContext.Provider>\n );\n\n // Function trigger pattern (new)\n if (isTriggerFunction(trigger)) {\n return (\n <>\n {trigger(triggerProps, tooltipTriggerRef)}\n {tooltipContent}\n </>\n );\n }\n\n // Legacy element/string trigger pattern\n if (!activeWrap && typeof trigger === 'string') {\n console.warn(\n 'CubeUIKit: Tooltips are only supported on elements that are both focusable and hoverable. To solve this issue you can: 1) Use active element as a trigger (`Button`, `Link`, etc); 2) Use function-as-first-child pattern to manually apply trigger props; 3) Use `ActiveZone` component to manually wrap the content.',\n );\n\n return <Block>{trigger}</Block>;\n }\n\n function onClick(e) {\n e?.currentTarget?.parentNode.click();\n }\n\n const triggerContent = (\n <>\n {activeWrap ? (\n <ActiveZone onClick={onClick}>{trigger}</ActiveZone>\n ) : (\n trigger\n )}\n {tooltipContent}\n </>\n );\n\n if (disableFocusableProvider) {\n return triggerContent;\n }\n\n return (\n <FocusableProvider {...triggerProps} ref={tooltipTriggerRef}>\n {triggerContent}\n </FocusableProvider>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import React from "react";
3
3
 
4
4
  //#region src/components/overlays/Tooltip/context.ts
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":["React","HTMLAttributes","RefCallback","RefObject","Placement","TooltipTriggerState","PlacementAxis","Props","Phase","TooltipContextProps","state","ref","HTMLDivElement","transitionRef","placement","arrowProps","HTMLElement","overlayProps","minScale","minOffset","isMaterial","isLight","phase","isShown","updatePosition","TooltipContext","createContext"],"sources":["../../../../src/components/overlays/Tooltip/context.ts"],"sourcesContent":["import React, { HTMLAttributes, RefCallback, RefObject } from 'react';\nimport { Placement } from 'react-aria';\nimport { TooltipTriggerState } from 'react-stately';\n\nimport { PlacementAxis } from '../../../shared';\n\nimport type { Props } from '../../../props';\n\ntype Phase = 'enter' | 'entered' | 'exit' | 'unmounted';\n\ninterface TooltipContextProps {\n state?: TooltipTriggerState;\n ref?: RefObject<HTMLDivElement | null>;\n transitionRef?: RefCallback<HTMLDivElement>;\n placement?: Placement | PlacementAxis;\n arrowProps?: HTMLAttributes<HTMLElement>;\n overlayProps?: Props;\n minScale?: string | number;\n minOffset?: string | number;\n isMaterial?: boolean;\n isLight?: boolean;\n phase?: Phase;\n isShown?: boolean;\n updatePosition?: () => void;\n}\n\nexport const TooltipContext = React.createContext<TooltipContextProps>({});\n"],"mappings":";;;;AA0BA,MAAayB,iBAAiBzB,MAAM0B,cAAmC,EAAE,CAAC"}
1
+ {"version":3,"file":"context.js","names":["React","HTMLAttributes","RefCallback","RefObject","Placement","TooltipTriggerState","PlacementAxis","Props","Phase","TooltipContextProps","state","ref","HTMLDivElement","transitionRef","placement","arrowProps","HTMLElement","overlayProps","isMaterial","isLight","phase","isShown","updatePosition","TooltipContext","createContext"],"sources":["../../../../src/components/overlays/Tooltip/context.ts"],"sourcesContent":["import React, { HTMLAttributes, RefCallback, RefObject } from 'react';\nimport { Placement } from 'react-aria';\nimport { TooltipTriggerState } from 'react-stately';\n\nimport { PlacementAxis } from '../../../shared';\n\nimport type { Props } from '../../../props';\n\ntype Phase = 'enter' | 'entered' | 'exit' | 'unmounted';\n\ninterface TooltipContextProps {\n state?: TooltipTriggerState;\n ref?: RefObject<HTMLDivElement | null>;\n transitionRef?: RefCallback<HTMLDivElement>;\n placement?: Placement | PlacementAxis;\n arrowProps?: HTMLAttributes<HTMLElement>;\n overlayProps?: Props;\n isMaterial?: boolean;\n isLight?: boolean;\n phase?: Phase;\n isShown?: boolean;\n updatePosition?: () => void;\n}\n\nexport const TooltipContext = React.createContext<TooltipContextProps>({});\n"],"mappings":";;;;AAwBA,MAAauB,iBAAiBvB,MAAMwB,cAAmC,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
 
4
4
  //#region src/components/overlays/Tooltip/split-trigger-props.ts
@@ -34,10 +34,11 @@ function splitTooltipTriggerProps(triggerProps = {}) {
34
34
  };
35
35
  }
36
36
  /**
37
- * Adds a tooltip's focus-side trigger props to a focusable element's own:
38
- * handlers are chained, and the tooltip joins any description the element
39
- * already has rather than replacing it. `tabIndex` is never touched — a radio
40
- * group's roving tab index owns it.
37
+ * Adds a tooltip's trigger props — all of them, or the focus-side part from
38
+ * `splitTooltipTriggerProps` — to an element's own: handlers are chained, and
39
+ * the tooltip joins any description the element already has rather than
40
+ * replacing it, the caller's id first. `mergeProps` alone lets the tooltip's id
41
+ * win. `tabIndex` is never touched — a radio group's roving tab index owns it.
41
42
  */
42
43
  function mergeTooltipFocusProps(props, tooltipProps) {
43
44
  if (!tooltipProps) return props;
@@ -1 +1 @@
1
- {"version":3,"file":"split-trigger-props.js","names":["mergeProps","HTMLAttributes","FOCUS_TRIGGER_PROPS","const","TooltipFocusProps","Pick","HTMLElement","splitTooltipTriggerProps","triggerProps","pointerProps","focusProps","key","Record","mergeTooltipFocusProps","props","P","tooltipProps","tooltipDescribedBy","handlers","ownDescribedBy","filter","Boolean","join","undefined"],"sources":["../../../../src/components/overlays/Tooltip/split-trigger-props.ts"],"sourcesContent":["import { mergeProps } from '../../../utils/react/mergeProps';\n\nimport type { HTMLAttributes } from 'react';\n\n/**\n * The tooltip trigger props that only work on the element that takes focus.\n * React Aria's `useFocus` ignores focus that bubbles up from a child, so on a\n * wrapper around a native input — a radio's or a checkbox's `<label>` — the\n * tooltip never opened from the keyboard, and `aria-describedby` described the\n * wrapper instead of the control a screen reader announces.\n */\nconst FOCUS_TRIGGER_PROPS = [\n 'onFocus',\n 'onBlur',\n 'onKeyDown',\n 'onKeyUp',\n 'aria-describedby',\n] as const;\n\nexport type TooltipFocusProps = Pick<\n HTMLAttributes<HTMLElement>,\n (typeof FOCUS_TRIGGER_PROPS)[number]\n>;\n\n/**\n * Splits a tooltip's trigger props between the element it is positioned\n * against and hovered on (`pointerProps`) and the focusable element inside it\n * (`focusProps`).\n */\nexport function splitTooltipTriggerProps(\n triggerProps: HTMLAttributes<HTMLElement> = {},\n) {\n const pointerProps: HTMLAttributes<HTMLElement> = { ...triggerProps };\n const focusProps: TooltipFocusProps = {};\n\n for (const key of FOCUS_TRIGGER_PROPS) {\n if (key in pointerProps) {\n (focusProps as Record<string, unknown>)[key] = pointerProps[key];\n delete pointerProps[key];\n }\n }\n\n return { pointerProps, focusProps };\n}\n\n/**\n * Adds a tooltip's focus-side trigger props to a focusable element's own:\n * handlers are chained, and the tooltip joins any description the element\n * already has rather than replacing it. `tabIndex` is never touched — a radio\n * group's roving tab index owns it.\n */\nexport function mergeTooltipFocusProps<P extends object>(\n props: P,\n tooltipProps?: TooltipFocusProps,\n): P {\n if (!tooltipProps) return props;\n\n const { 'aria-describedby': tooltipDescribedBy, ...handlers } = tooltipProps;\n const ownDescribedBy = (props as { 'aria-describedby'?: string })[\n 'aria-describedby'\n ];\n\n return {\n ...mergeProps(props, handlers),\n 'aria-describedby':\n [ownDescribedBy, tooltipDescribedBy].filter(Boolean).join(' ') ||\n undefined,\n } as P;\n}\n"],"mappings":";;;;;;;;;;;AAWA,MAAME,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACD;;;;;;AAYD,SAAgBK,yBACdC,eAA4C,EAAE,EAC9C;CACA,MAAMC,eAA4C,EAAE,GAAGD,cAAc;CACrE,MAAME,aAAgC,EAAE;AAExC,MAAK,MAAMC,OAAOT,oBAChB,KAAIS,OAAOF,cAAc;AACvB,EAACC,WAAuCC,OAAOF,aAAaE;AAC5D,SAAOF,aAAaE;;AAIxB,QAAO;EAAEF;EAAcC;EAAY;;;;;;;;AASrC,SAAgBG,uBACdC,OACAE,cACG;AACH,KAAI,CAACA,aAAc,QAAOF;CAE1B,MAAM,EAAE,oBAAoBG,oBAAoB,GAAGC,aAAaF;CAChE,MAAMG,iBAAkBL,MACtB;AAGF,QAAO;EACL,GAAGd,WAAWc,OAAOI,SAAS;EAC9B,oBACE,CAACC,gBAAgBF,mBAAmB,CAACG,OAAOC,QAAQ,CAACC,KAAK,IAAI,IAC9DC;EACH"}
1
+ {"version":3,"file":"split-trigger-props.js","names":["mergeProps","HTMLAttributes","FOCUS_TRIGGER_PROPS","const","TooltipFocusProps","Pick","HTMLElement","splitTooltipTriggerProps","triggerProps","pointerProps","focusProps","key","Record","mergeTooltipFocusProps","props","P","tooltipProps","tooltipDescribedBy","handlers","ownDescribedBy","filter","Boolean","join","undefined"],"sources":["../../../../src/components/overlays/Tooltip/split-trigger-props.ts"],"sourcesContent":["import { mergeProps } from '../../../utils/react/mergeProps';\n\nimport type { HTMLAttributes } from 'react';\n\n/**\n * The tooltip trigger props that only work on the element that takes focus.\n * React Aria's `useFocus` ignores focus that bubbles up from a child, so on a\n * wrapper around a native input — a radio's or a checkbox's `<label>` — the\n * tooltip never opened from the keyboard, and `aria-describedby` described the\n * wrapper instead of the control a screen reader announces.\n */\nconst FOCUS_TRIGGER_PROPS = [\n 'onFocus',\n 'onBlur',\n 'onKeyDown',\n 'onKeyUp',\n 'aria-describedby',\n] as const;\n\nexport type TooltipFocusProps = Pick<\n HTMLAttributes<HTMLElement>,\n (typeof FOCUS_TRIGGER_PROPS)[number]\n>;\n\n/**\n * Splits a tooltip's trigger props between the element it is positioned\n * against and hovered on (`pointerProps`) and the focusable element inside it\n * (`focusProps`).\n */\nexport function splitTooltipTriggerProps(\n triggerProps: HTMLAttributes<HTMLElement> = {},\n) {\n const pointerProps: HTMLAttributes<HTMLElement> = { ...triggerProps };\n const focusProps: TooltipFocusProps = {};\n\n for (const key of FOCUS_TRIGGER_PROPS) {\n if (key in pointerProps) {\n (focusProps as Record<string, unknown>)[key] = pointerProps[key];\n delete pointerProps[key];\n }\n }\n\n return { pointerProps, focusProps };\n}\n\n/**\n * Adds a tooltip's trigger props — all of them, or the focus-side part from\n * `splitTooltipTriggerProps` — to an element's own: handlers are chained, and\n * the tooltip joins any description the element already has rather than\n * replacing it, the caller's id first. `mergeProps` alone lets the tooltip's id\n * win. `tabIndex` is never touched — a radio group's roving tab index owns it.\n */\nexport function mergeTooltipFocusProps<P extends object>(\n props: P,\n tooltipProps?: TooltipFocusProps | HTMLAttributes<HTMLElement>,\n): P {\n if (!tooltipProps) return props;\n\n const { 'aria-describedby': tooltipDescribedBy, ...handlers } = tooltipProps;\n const ownDescribedBy = (props as { 'aria-describedby'?: string })[\n 'aria-describedby'\n ];\n\n return {\n ...mergeProps(props, handlers),\n 'aria-describedby':\n [ownDescribedBy, tooltipDescribedBy].filter(Boolean).join(' ') ||\n undefined,\n } as P;\n}\n"],"mappings":";;;;;;;;;;;AAWA,MAAME,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACD;;;;;;AAYD,SAAgBK,yBACdC,eAA4C,EAAE,EAC9C;CACA,MAAMC,eAA4C,EAAE,GAAGD,cAAc;CACrE,MAAME,aAAgC,EAAE;AAExC,MAAK,MAAMC,OAAOT,oBAChB,KAAIS,OAAOF,cAAc;AACvB,EAACC,WAAuCC,OAAOF,aAAaE;AAC5D,SAAOF,aAAaE;;AAIxB,QAAO;EAAEF;EAAcC;EAAY;;;;;;;;;AAUrC,SAAgBG,uBACdC,OACAE,cACG;AACH,KAAI,CAACA,aAAc,QAAOF;CAE1B,MAAM,EAAE,oBAAoBG,oBAAoB,GAAGC,aAAaF;CAChE,MAAMG,iBAAkBL,MACtB;AAGF,QAAO;EACL,GAAGd,WAAWc,OAAOI,SAAS;EAC9B,oBACE,CAACC,gBAAgBF,mBAAmB,CAACG,OAAOC,QAAQ,CAACC,KAAK,IAAI,IAC9DC;EACH"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { usePortal } from "./usePortal.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { TastyBatchProvider } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { createContext, useContext } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { usePortalContext } from "./PortalProvider.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useEffect, useEffectEvent, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useEffect, useEffectEvent, useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { WarningIcon } from "../../icons/WarningIcon.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { CheckIcon } from "../../icons/CheckIcon.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { Block } from "../../Block.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { memo } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { Cube } from "./Cube.js";
3
3
  import { SpinsContainer } from "./SpinsContainer.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { Block } from "../../Block.js";
3
3
  import { InternalSpinner } from "./InternalSpinner.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  //#region src/data/item-themes.ts
3
3
  const VALIDATION_STYLES = { border: {
4
4
  invalid: "#danger-accent-text",
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  //#region src/data/themes.ts
3
3
  var themes_default = {
4
4
  special: {