@cube-dev/ui-kit 0.66.1 → 0.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/es/_internal/hooks/index.js +1 -1
  3. package/es/_internal/hooks/use-chained-callback.js +1 -1
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +1 -1
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +1 -1
  10. package/es/_internal/hooks/use-timer/index.js +1 -1
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  13. package/es/_internal/hooks/use-update-effect.js +1 -1
  14. package/es/_internal/hooks/use-warn.js +1 -1
  15. package/es/_internal/index.js +1 -1
  16. package/es/components/Block.js +1 -1
  17. package/es/components/GlobalStyles.js +1 -1
  18. package/es/components/GridProvider.js +1 -1
  19. package/es/components/HiddenInput.js +1 -1
  20. package/es/components/OpenTrasition.js +1 -1
  21. package/es/components/Root.js +3 -2
  22. package/es/components/actions/Action/Action.js +1 -1
  23. package/es/components/actions/Button/Button.js +1 -1
  24. package/es/components/actions/Button/index.js +1 -1
  25. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  26. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  27. package/es/components/actions/CommandMenu/index.js +1 -1
  28. package/es/components/actions/CommandMenu/styled.js +1 -2
  29. package/es/components/actions/Menu/Menu.js +1 -1
  30. package/es/components/actions/Menu/MenuItem.js +1 -1
  31. package/es/components/actions/Menu/MenuSection.js +1 -1
  32. package/es/components/actions/Menu/MenuTrigger.js +48 -21
  33. package/es/components/actions/Menu/context.js +1 -1
  34. package/es/components/actions/Menu/index.js +1 -1
  35. package/es/components/actions/Menu/styled.js +1 -1
  36. package/es/components/actions/index.js +3 -1
  37. package/es/components/actions/use-action.js +1 -1
  38. package/es/components/actions/use-anchored-menu.js +98 -0
  39. package/es/components/actions/use-context-menu.js +206 -0
  40. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  41. package/es/components/content/Alert/Alert.js +1 -1
  42. package/es/components/content/Alert/index.js +1 -1
  43. package/es/components/content/Alert/types.js +1 -1
  44. package/es/components/content/Alert/use-alert.js +1 -1
  45. package/es/components/content/Avatar/Avatar.js +1 -1
  46. package/es/components/content/Badge/Badge.js +1 -1
  47. package/es/components/content/Card/Card.js +1 -1
  48. package/es/components/content/Content.js +1 -1
  49. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/es/components/content/CopyPasteBlock/index.js +1 -1
  51. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/es/components/content/CopySnippet/index.js +1 -1
  53. package/es/components/content/Divider.js +1 -1
  54. package/es/components/content/Footer.js +1 -1
  55. package/es/components/content/Header.js +1 -1
  56. package/es/components/content/HotKeys/HotKeys.js +1 -1
  57. package/es/components/content/HotKeys/index.js +1 -1
  58. package/es/components/content/Paragraph.js +1 -1
  59. package/es/components/content/Placeholder/Placeholder.js +1 -1
  60. package/es/components/content/PrismCode/PrismCode.js +1 -1
  61. package/es/components/content/PrismCode/prismSetup.js +1 -1
  62. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  63. package/es/components/content/Result/Result.js +1 -1
  64. package/es/components/content/Skeleton/Skeleton.js +1 -1
  65. package/es/components/content/Tag/Tag.js +1 -1
  66. package/es/components/content/Text.js +1 -1
  67. package/es/components/content/Title.js +1 -1
  68. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  69. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  70. package/es/components/fields/Checkbox/context.js +1 -1
  71. package/es/components/fields/Checkbox/index.js +1 -1
  72. package/es/components/fields/ComboBox/ComboBox.js +25 -3
  73. package/es/components/fields/ComboBox/index.js +1 -1
  74. package/es/components/fields/DatePicker/DateInput.js +1 -1
  75. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  76. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  77. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  78. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  79. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  80. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  81. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  82. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  83. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  84. package/es/components/fields/DatePicker/index.js +1 -1
  85. package/es/components/fields/DatePicker/intl.js +1 -1
  86. package/es/components/fields/DatePicker/parseDate.js +1 -1
  87. package/es/components/fields/DatePicker/props.js +1 -1
  88. package/es/components/fields/DatePicker/types.js +1 -1
  89. package/es/components/fields/DatePicker/utils.js +1 -1
  90. package/es/components/fields/FileInput/FileInput.js +1 -1
  91. package/es/components/fields/Input/Input.js +1 -1
  92. package/es/components/fields/Input/index.js +1 -1
  93. package/es/components/fields/ListBox/ListBox.js +1 -1
  94. package/es/components/fields/ListBox/index.js +1 -1
  95. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  96. package/es/components/fields/NumberInput/StepButton.js +1 -1
  97. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  98. package/es/components/fields/RadioGroup/Radio.js +1 -1
  99. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  100. package/es/components/fields/RadioGroup/context.js +1 -1
  101. package/es/components/fields/RadioGroup/index.js +1 -1
  102. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  103. package/es/components/fields/SearchInput/index.js +1 -1
  104. package/es/components/fields/Select/Select.js +38 -5
  105. package/es/components/fields/Select/index.js +1 -1
  106. package/es/components/fields/Slider/Gradation.js +1 -1
  107. package/es/components/fields/Slider/Header.js +1 -1
  108. package/es/components/fields/Slider/RangeSlider.js +1 -1
  109. package/es/components/fields/Slider/Slider.js +1 -1
  110. package/es/components/fields/Slider/SliderBase.js +1 -1
  111. package/es/components/fields/Slider/SliderInput.js +1 -1
  112. package/es/components/fields/Slider/SliderThumb.js +1 -1
  113. package/es/components/fields/Slider/SliderTrack.js +1 -1
  114. package/es/components/fields/Slider/elements.js +1 -1
  115. package/es/components/fields/Slider/index.js +1 -1
  116. package/es/components/fields/Slider/types.js +1 -1
  117. package/es/components/fields/Switch/Switch.js +1 -1
  118. package/es/components/fields/Switch/index.js +1 -1
  119. package/es/components/fields/TextArea/TextArea.js +1 -1
  120. package/es/components/fields/TextArea/index.js +1 -1
  121. package/es/components/fields/TextInput/TextInput.js +1 -1
  122. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  123. package/es/components/fields/TextInput/index.js +1 -1
  124. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  125. package/es/components/fields/TextInputMapper/index.js +1 -1
  126. package/es/components/fields/index.js +1 -1
  127. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  128. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  129. package/es/components/form/FieldWrapper/index.js +1 -1
  130. package/es/components/form/FieldWrapper/types.js +1 -1
  131. package/es/components/form/Form/Field.js +1 -1
  132. package/es/components/form/Form/Form.js +1 -1
  133. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  134. package/es/components/form/Form/ResetButton/index.js +1 -1
  135. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  136. package/es/components/form/Form/SubmitButton/index.js +1 -1
  137. package/es/components/form/Form/SubmitError.js +1 -1
  138. package/es/components/form/Form/index.js +1 -1
  139. package/es/components/form/Form/types.js +1 -1
  140. package/es/components/form/Form/use-field/index.js +1 -1
  141. package/es/components/form/Form/use-field/types.js +1 -1
  142. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  143. package/es/components/form/Form/use-field/use-field.js +1 -1
  144. package/es/components/form/Form/use-form.js +1 -1
  145. package/es/components/form/Form/validation.js +1 -1
  146. package/es/components/form/Label.js +1 -1
  147. package/es/components/form/index.js +1 -1
  148. package/es/components/form/wrapper.js +1 -1
  149. package/es/components/layout/Flex.js +1 -1
  150. package/es/components/layout/Flow.js +1 -1
  151. package/es/components/layout/Grid.js +1 -1
  152. package/es/components/layout/Panel.js +1 -1
  153. package/es/components/layout/Prefix.js +1 -1
  154. package/es/components/layout/ResizablePanel.js +1 -1
  155. package/es/components/layout/Space.js +1 -1
  156. package/es/components/layout/Suffix.js +1 -1
  157. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  158. package/es/components/navigation/Link/Link.js +1 -1
  159. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  160. package/es/components/organisms/Modal/Modal.js +1 -1
  161. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  162. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  163. package/es/components/other/Calendar/Calendar.js +1 -1
  164. package/es/components/other/Calendar/CalendarCell.js +1 -1
  165. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  166. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  167. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  168. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  169. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  170. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  171. package/es/components/overlays/AlertDialog/index.js +1 -1
  172. package/es/components/overlays/AlertDialog/types.js +1 -1
  173. package/es/components/overlays/Dialog/Dialog.js +1 -1
  174. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  175. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  176. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  177. package/es/components/overlays/Dialog/context.js +1 -1
  178. package/es/components/overlays/Dialog/index.js +2 -2
  179. package/es/components/overlays/Dialog/{dialog-container.js → use-dialog-container.js} +3 -3
  180. package/es/components/overlays/Modal/Modal.js +1 -1
  181. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  182. package/es/components/overlays/Modal/Overlay.js +1 -1
  183. package/es/components/overlays/Modal/Popover.js +1 -1
  184. package/es/components/overlays/Modal/Tray.js +1 -1
  185. package/es/components/overlays/Modal/Underlay.js +1 -1
  186. package/es/components/overlays/Modal/index.js +1 -1
  187. package/es/components/overlays/Modal/types.js +1 -1
  188. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  189. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  190. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  191. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  192. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  193. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  194. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  195. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  196. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  197. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  198. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  199. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  200. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  201. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  202. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  203. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  204. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  205. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  206. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  207. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  208. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  209. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  210. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  211. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  212. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  213. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  214. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  215. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  216. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  217. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  218. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  219. package/es/components/overlays/NewNotifications/index.js +1 -1
  220. package/es/components/overlays/NewNotifications/types.js +1 -1
  221. package/es/components/overlays/Notification/Notification.js +1 -1
  222. package/es/components/overlays/OverlayWrapper.js +1 -1
  223. package/es/components/overlays/Toasts/Toast.js +1 -1
  224. package/es/components/overlays/Toasts/index.js +1 -1
  225. package/es/components/overlays/Toasts/types.js +1 -1
  226. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  227. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  228. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  229. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  230. package/es/components/overlays/Tooltip/context.js +1 -1
  231. package/es/components/overlays/Tooltip/index.js +1 -1
  232. package/es/components/portal/Portal.js +1 -1
  233. package/es/components/portal/PortalProvider.js +1 -1
  234. package/es/components/portal/index.js +1 -1
  235. package/es/components/portal/storybook/templates/CustomRoot.js +1 -1
  236. package/es/components/portal/storybook/templates/PortalOrder.js +1 -1
  237. package/es/components/portal/storybook/templates/basic.js +1 -1
  238. package/es/components/portal/storybook/templates/index.js +1 -1
  239. package/es/components/portal/types.js +1 -1
  240. package/es/components/portal/usePortal.js +1 -1
  241. package/es/components/shared/InvalidIcon.js +1 -1
  242. package/es/components/shared/ValidIcon.js +1 -1
  243. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  244. package/es/components/status/LoadingAnimation/index.js +1 -1
  245. package/es/components/status/Spin/Cube.js +1 -1
  246. package/es/components/status/Spin/InternalSpinner.js +1 -1
  247. package/es/components/status/Spin/Spin.js +1 -1
  248. package/es/components/status/Spin/SpinsContainer.js +1 -1
  249. package/es/components/status/Spin/index.js +1 -1
  250. package/es/components/status/Spin/types.js +1 -1
  251. package/es/components/status/index.js +1 -1
  252. package/es/data/themes.js +1 -1
  253. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  254. package/es/icons/AdjustmentsIcon.js +1 -1
  255. package/es/icons/AiIcon.js +1 -1
  256. package/es/icons/AreaChartIcon.js +1 -1
  257. package/es/icons/BackwardIcon.js +1 -1
  258. package/es/icons/BarChartIcon.js +1 -1
  259. package/es/icons/BellFilledIcon.js +1 -1
  260. package/es/icons/BellIcon.js +1 -1
  261. package/es/icons/BooleanIcon.js +1 -1
  262. package/es/icons/CalendarEditIcon.js +1 -1
  263. package/es/icons/CalendarIcon.js +1 -1
  264. package/es/icons/CaretDownIcon.js +1 -1
  265. package/es/icons/CaretUpIcon.js +1 -1
  266. package/es/icons/ChartAreaStackedIcon.js +1 -1
  267. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  268. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  269. package/es/icons/ChartBarGroupedIcon.js +1 -1
  270. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  271. package/es/icons/ChartBarLineIcon.js +1 -1
  272. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  273. package/es/icons/ChartBarStackedIcon.js +1 -1
  274. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  275. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  276. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  277. package/es/icons/ChartBoxPlotIcon.js +1 -1
  278. package/es/icons/ChartBubbleIcon.js +1 -1
  279. package/es/icons/ChartDonut2Icon.js +1 -1
  280. package/es/icons/ChartFunnelIcon.js +1 -1
  281. package/es/icons/ChartPie2Icon.js +1 -1
  282. package/es/icons/ChartScatterIcon.js +1 -1
  283. package/es/icons/CheckCircleFilledIcon.js +1 -1
  284. package/es/icons/CheckCircleIcon.js +1 -1
  285. package/es/icons/CheckIcon.js +1 -1
  286. package/es/icons/CircleFilledIcon.js +1 -1
  287. package/es/icons/ClearIcon.js +1 -1
  288. package/es/icons/CloseCircleFilledIcon.js +1 -1
  289. package/es/icons/CloseCircleIcon.js +1 -1
  290. package/es/icons/CloseIcon.js +1 -1
  291. package/es/icons/CodeIcon.js +1 -1
  292. package/es/icons/CopyIcon.js +1 -1
  293. package/es/icons/CountIcon.js +1 -1
  294. package/es/icons/CubeIcon.js +1 -1
  295. package/es/icons/DangerIcon.js +1 -1
  296. package/es/icons/DashboardIcon.js +1 -1
  297. package/es/icons/DatabaseIcon.js +1 -1
  298. package/es/icons/DirectionIcon.js +1 -1
  299. package/es/icons/DonutIcon.js +1 -1
  300. package/es/icons/DownIcon.js +1 -1
  301. package/es/icons/EditIcon.js +1 -1
  302. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  303. package/es/icons/ExclamationCircleIcon.js +1 -1
  304. package/es/icons/ExclamationIcon.js +1 -1
  305. package/es/icons/EyeIcon.js +1 -1
  306. package/es/icons/EyeInvisibleIcon.js +1 -1
  307. package/es/icons/FilterIcon.js +1 -1
  308. package/es/icons/FolderFilledIcon.js +1 -1
  309. package/es/icons/FolderIcon.js +1 -1
  310. package/es/icons/FolderOpenFilledIcon.js +1 -1
  311. package/es/icons/FolderOpenIcon.js +1 -1
  312. package/es/icons/ForwardIcon.js +1 -1
  313. package/es/icons/HierarchyIcon.js +1 -1
  314. package/es/icons/Icon.js +1 -1
  315. package/es/icons/InfoCircleIcon.js +1 -1
  316. package/es/icons/InfoIcon.js +1 -1
  317. package/es/icons/KeyIcon.js +1 -1
  318. package/es/icons/LeftIcon.js +1 -1
  319. package/es/icons/LineChartIcon.js +1 -1
  320. package/es/icons/LoadingIcon.js +1 -1
  321. package/es/icons/LockFilledIcon.js +1 -1
  322. package/es/icons/LockIcon.js +1 -1
  323. package/es/icons/MoreIcon.js +1 -1
  324. package/es/icons/NotAllowedIcon.js +1 -1
  325. package/es/icons/NumberIcon.js +1 -1
  326. package/es/icons/PauseCircleFilledIcon.js +1 -1
  327. package/es/icons/PauseCircleIcon.js +1 -1
  328. package/es/icons/PauseIcon.js +1 -1
  329. package/es/icons/PieChartIcon.js +1 -1
  330. package/es/icons/PlayCircleIcon.js +1 -1
  331. package/es/icons/PlayIcon.js +1 -1
  332. package/es/icons/PlusIcon.js +1 -1
  333. package/es/icons/ReloadIcon.js +1 -1
  334. package/es/icons/ReportIcon.js +1 -1
  335. package/es/icons/ReturnIcon.js +1 -1
  336. package/es/icons/RightIcon.js +1 -1
  337. package/es/icons/SchemeIcon.js +1 -1
  338. package/es/icons/SearchIcon.js +1 -1
  339. package/es/icons/SettingsIcon.js +1 -1
  340. package/es/icons/ShieldFilledIcon.js +1 -1
  341. package/es/icons/ShieldIcon.js +1 -1
  342. package/es/icons/SlashIcon.js +1 -1
  343. package/es/icons/SparklesIcon.js +1 -1
  344. package/es/icons/SqlIcon.js +1 -1
  345. package/es/icons/StatsIcon.js +1 -1
  346. package/es/icons/StopIcon.js +1 -1
  347. package/es/icons/StringIcon.js +1 -1
  348. package/es/icons/SwitchIcon.js +1 -1
  349. package/es/icons/TableIcon.js +1 -1
  350. package/es/icons/ThumbsDownIcon.js +1 -1
  351. package/es/icons/ThumbsUpIcon.js +1 -1
  352. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  353. package/es/icons/ThunderboltFilledIcon.js +1 -1
  354. package/es/icons/ThunderboltIcon.js +1 -1
  355. package/es/icons/TimeIcon.js +1 -1
  356. package/es/icons/UnlockIcon.js +1 -1
  357. package/es/icons/UpIcon.js +1 -1
  358. package/es/icons/UserGroupIcon.js +1 -1
  359. package/es/icons/UserIcon.js +1 -1
  360. package/es/icons/UserLockIcon.js +1 -1
  361. package/es/icons/ViewIcon.js +1 -1
  362. package/es/icons/WarningFilledIcon.js +1 -1
  363. package/es/icons/WarningIcon.js +1 -1
  364. package/es/icons/add-new-icon.js +1 -1
  365. package/es/icons/index.js +1 -1
  366. package/es/icons/wrap-icon.js +1 -1
  367. package/es/index.js +1 -1
  368. package/es/provider.js +4 -1
  369. package/es/providers/TrackingProvider.js +1 -1
  370. package/es/services/notification.js +1 -1
  371. package/es/shared/form.js +1 -1
  372. package/es/shared/index.js +1 -1
  373. package/es/stories/Form.legacy-stories.js +1 -1
  374. package/es/stories/FormFieldArgs.js +1 -1
  375. package/es/stories/Layout.stories.js +1 -1
  376. package/es/stories/Tasty.stories.js +1 -1
  377. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  378. package/es/stories/components/DialogFormApp.js +1 -1
  379. package/es/stories/components/StyledButton.js +1 -1
  380. package/es/stories/lists/baseProps.js +1 -1
  381. package/es/tasty/index.js +1 -1
  382. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  383. package/es/tasty/styles/align.js +1 -1
  384. package/es/tasty/styles/border.js +1 -1
  385. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  386. package/es/tasty/styles/color.js +1 -1
  387. package/es/tasty/styles/createStyle.js +1 -1
  388. package/es/tasty/styles/dimension.js +1 -1
  389. package/es/tasty/styles/display.js +1 -1
  390. package/es/tasty/styles/fade.js +1 -1
  391. package/es/tasty/styles/fill.js +1 -1
  392. package/es/tasty/styles/flow.js +1 -1
  393. package/es/tasty/styles/font.js +1 -1
  394. package/es/tasty/styles/fontStyle.js +1 -1
  395. package/es/tasty/styles/gap.js +1 -1
  396. package/es/tasty/styles/groupRadius.js +1 -1
  397. package/es/tasty/styles/height.js +1 -1
  398. package/es/tasty/styles/index.js +1 -1
  399. package/es/tasty/styles/inset.js +1 -1
  400. package/es/tasty/styles/justify.js +1 -1
  401. package/es/tasty/styles/list.js +1 -1
  402. package/es/tasty/styles/margin.js +1 -1
  403. package/es/tasty/styles/marginBlock.js +1 -1
  404. package/es/tasty/styles/marginInline.js +1 -1
  405. package/es/tasty/styles/outline.js +1 -1
  406. package/es/tasty/styles/padding.js +1 -1
  407. package/es/tasty/styles/paddingBlock.js +1 -1
  408. package/es/tasty/styles/paddingInline.js +1 -1
  409. package/es/tasty/styles/place.js +1 -1
  410. package/es/tasty/styles/predefined.js +1 -1
  411. package/es/tasty/styles/preset.js +1 -1
  412. package/es/tasty/styles/radius.js +1 -1
  413. package/es/tasty/styles/reset.js +1 -1
  414. package/es/tasty/styles/scrollbar.js +1 -1
  415. package/es/tasty/styles/shadow.js +1 -1
  416. package/es/tasty/styles/styledScrollbar.js +1 -1
  417. package/es/tasty/styles/transition.js +1 -1
  418. package/es/tasty/styles/types.js +1 -1
  419. package/es/tasty/styles/width.js +1 -1
  420. package/es/tasty/tasty.js +1 -1
  421. package/es/tasty/types.js +1 -1
  422. package/es/tasty/utils/cache-wrapper.js +1 -1
  423. package/es/tasty/utils/case-converter.js +1 -1
  424. package/es/tasty/utils/colors.js +1 -1
  425. package/es/tasty/utils/dotize.js +1 -1
  426. package/es/tasty/utils/filterBaseProps.js +1 -1
  427. package/es/tasty/utils/getDisplayName.js +1 -1
  428. package/es/tasty/utils/getModCombinations.js +1 -1
  429. package/es/tasty/utils/mergeStyles.js +1 -1
  430. package/es/tasty/utils/modAttrs.js +1 -1
  431. package/es/tasty/utils/renderStyles.js +1 -1
  432. package/es/tasty/utils/responsive.js +1 -1
  433. package/es/tasty/utils/string.js +1 -1
  434. package/es/tasty/utils/styles.js +1 -1
  435. package/es/tasty/utils/warnings.js +1 -1
  436. package/es/tokens.js +1 -1
  437. package/es/type-checks.js +1 -1
  438. package/es/utils/ResizeSensor.js +1 -1
  439. package/es/utils/modules.js +1 -1
  440. package/es/utils/promise.js +1 -1
  441. package/es/utils/random.js +7 -1
  442. package/es/utils/range.js +1 -1
  443. package/es/utils/react/Slots.js +1 -1
  444. package/es/utils/react/chain.js +1 -1
  445. package/es/utils/react/index.js +2 -1
  446. package/es/utils/react/interactions.js +1 -1
  447. package/es/utils/react/isTextOnly.js +1 -1
  448. package/es/utils/react/mapProps.js +1 -1
  449. package/es/utils/react/mergeProps.js +1 -1
  450. package/es/utils/react/nullableValue.js +1 -1
  451. package/es/utils/react/sharedStore.js +51 -0
  452. package/es/utils/react/useCombinedRefs.js +1 -1
  453. package/es/utils/react/useEventBus.js +124 -0
  454. package/es/utils/react/useId.js +1 -1
  455. package/es/utils/react/useIsDarwin.js +1 -1
  456. package/es/utils/react/useKeySymbols.js +1 -1
  457. package/es/utils/react/useLayoutEffect.js +1 -1
  458. package/es/utils/react/useQaProps.js +1 -1
  459. package/es/utils/react/useViewportSize.js +1 -1
  460. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  461. package/es/utils/transitions.js +1 -1
  462. package/es/utils/tree.js +1 -1
  463. package/es/utils/warnings.js +1 -1
  464. package/es/version.js +2 -2
  465. package/package.json +1 -1
  466. package/types/components/actions/Menu/MenuTrigger.d.ts +2 -3
  467. package/types/components/actions/index.d.ts +2 -0
  468. package/types/components/actions/use-anchored-menu.d.ts +34 -0
  469. package/types/components/actions/use-context-menu.d.ts +42 -0
  470. package/types/components/content/Card/Card.d.ts +2 -2
  471. package/types/components/content/CopyPasteBlock/CopyPasteBlock.d.ts +1 -1
  472. package/types/components/fields/Select/Select.d.ts +2 -1
  473. package/types/components/overlays/Dialog/index.d.ts +1 -1
  474. package/types/utils/random.d.ts +4 -0
  475. package/types/utils/react/index.d.ts +2 -0
  476. package/types/utils/react/sharedStore.d.ts +11 -0
  477. package/types/utils/react/useEventBus.d.ts +74 -0
  478. /package/types/components/overlays/Dialog/{dialog-container.d.ts → use-dialog-container.d.ts} +0 -0
@@ -0,0 +1,206 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.67.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
9
+ import { Pressable } from '@react-aria/interactions';
10
+ import { useEffect, useMemo, useRef, useState, } from 'react';
11
+ import { VisuallyHidden } from 'react-aria';
12
+ import { useEvent } from '../../_internal';
13
+ import { generateRandomId } from '../../utils/random';
14
+ import { mergeProps } from '../../utils/react';
15
+ import { useEventBus } from '../../utils/react/useEventBus';
16
+ import { MenuTrigger } from './Menu';
17
+ /**
18
+ * Generic hook to manage a context menu component that opens at pointer coordinates.
19
+ *
20
+ * @param Component - A React component that represents the menu content (Menu or CommandMenu).
21
+ * @param defaultTriggerProps - Default props to pass to the MenuTrigger.
22
+ * @param defaultMenuProps - Default props to pass to the Menu component.
23
+ * @returns An object with `targetRef` to attach to the container element, `open` function to open the menu at event coordinates, `close` function to close the menu, and `rendered` JSX element to include in your component tree.
24
+ */
25
+ export function useContextMenu(Component, defaultTriggerProps, defaultMenuProps) {
26
+ const [isOpen, setIsOpen] = useState(false);
27
+ const [componentProps, setComponentProps] = useState(null);
28
+ const [triggerProps, setTriggerProps] = useState(null);
29
+ const [anchorPosition, setAnchorPosition] = useState(null);
30
+ const targetRef = useRef(null);
31
+ const invisibleAnchorRef = useRef(null);
32
+ const setupRef = useRef(false);
33
+ // Generate a unique ID for this menu instance
34
+ const menuId = useMemo(() => generateRandomId(), []);
35
+ // Get event bus for menu synchronization
36
+ const { emit, on } = useEventBus();
37
+ // Listen for other menus opening and close this one if needed
38
+ useEffect(() => {
39
+ const unsubscribe = on('menu:open', (data) => {
40
+ // If another menu is opening and this menu is open, close this one
41
+ if (data.menuId !== menuId && isOpen) {
42
+ setIsOpen(false);
43
+ setAnchorPosition(null);
44
+ }
45
+ });
46
+ return unsubscribe;
47
+ }, [on, menuId, isOpen]);
48
+ // Emit event when this menu opens
49
+ useEffect(() => {
50
+ if (isOpen) {
51
+ emit('menu:open', { menuId });
52
+ }
53
+ }, [isOpen, emit, menuId]);
54
+ function setupCheck() {
55
+ if (!setupRef.current) {
56
+ throw new Error('useContextMenu: MenuTrigger must be rendered. Use `rendered` property to include it in your component tree.');
57
+ }
58
+ }
59
+ // Helper function to calculate position relative to targetRef, taking the
60
+ // element's scroll offset into account. Without the scroll offset the menu
61
+ // would be rendered at the wrong place inside scrollable containers.
62
+ const calculatePosition = (event) => {
63
+ const container = targetRef.current;
64
+ // If no event is provided, position at the center of the element
65
+ if (!event) {
66
+ if (!container) {
67
+ return { x: 0, y: 0 };
68
+ }
69
+ const containerRect = container.getBoundingClientRect();
70
+ const scrollLeft = container.scrollLeft;
71
+ const scrollTop = container.scrollTop;
72
+ const computed = window.getComputedStyle(container);
73
+ const borderLeft = parseFloat(computed.borderLeftWidth) || 0;
74
+ const borderTop = parseFloat(computed.borderTopWidth) || 0;
75
+ // Position at the center of the element's content area
76
+ const x = container.clientWidth / 2 + scrollLeft;
77
+ const y = container.clientHeight / 2 + scrollTop;
78
+ // Clamp to the full scroll size
79
+ const clampedX = Math.max(0, Math.min(x, container.scrollWidth));
80
+ const clampedY = Math.max(0, Math.min(y, container.scrollHeight));
81
+ return { x: clampedX, y: clampedY };
82
+ }
83
+ // If the target reference is missing, fall back to viewport coordinates.
84
+ if (!container) {
85
+ const { clientX = 0, clientY = 0 } = event;
86
+ return { x: clientX, y: clientY };
87
+ }
88
+ const containerRect = container.getBoundingClientRect();
89
+ // Get coordinates from the event (viewport-relative)
90
+ const { clientX, clientY } = event;
91
+ // Take the element's scroll offset into account so that the coordinates are
92
+ // relative to the **content** box, not the visible viewport of the
93
+ // element.
94
+ const scrollLeft = container.scrollLeft;
95
+ const scrollTop = container.scrollTop;
96
+ const computed = window.getComputedStyle(container);
97
+ const borderLeft = parseFloat(computed.borderLeftWidth) || 0;
98
+ const borderTop = parseFloat(computed.borderTopWidth) || 0;
99
+ const x = clientX - containerRect.left - borderLeft + scrollLeft;
100
+ const y = clientY - containerRect.top - borderTop + scrollTop;
101
+ // Clamp to the full scroll size so that the invisible anchor always stays
102
+ // inside the element regardless of the scroll position.
103
+ const clampedX = Math.max(0, Math.min(x, container.scrollWidth));
104
+ const clampedY = Math.max(0, Math.min(y, container.scrollHeight));
105
+ return { x: clampedX, y: clampedY };
106
+ };
107
+ // 'open' accepts props, trigger props, and optional event for positioning, then opens the menu
108
+ const open = useEvent((props, triggerProps, event) => {
109
+ setupCheck();
110
+ // Ensure the target element can serve as a positioning context for the
111
+ // invisible target element. If the consumer hasn't explicitly set
112
+ // `position: relative | absolute | fixed | sticky` we switch it to
113
+ // `relative` so that absolutely-positioned children are laid out correctly.
114
+ if (targetRef.current) {
115
+ const computedStyle = window.getComputedStyle(targetRef.current);
116
+ if (computedStyle.position === 'static') {
117
+ targetRef.current.style.position = 'relative';
118
+ }
119
+ }
120
+ // Prevent default context menu if it's a context menu event
121
+ if (event &&
122
+ 'preventDefault' in event &&
123
+ typeof event.preventDefault === 'function') {
124
+ event.preventDefault();
125
+ }
126
+ const { x, y } = calculatePosition(event);
127
+ setAnchorPosition({ x, y });
128
+ // Merge defaultMenuProps with provided props
129
+ const finalProps = defaultMenuProps
130
+ ? { ...defaultMenuProps, ...props }
131
+ : props;
132
+ setComponentProps(finalProps);
133
+ setTriggerProps(triggerProps ?? null);
134
+ setIsOpen(true);
135
+ });
136
+ const update = useEvent((props, triggerProps) => {
137
+ setupCheck();
138
+ // Merge defaultMenuProps with provided props
139
+ const finalProps = defaultMenuProps
140
+ ? { ...defaultMenuProps, ...props }
141
+ : props;
142
+ setComponentProps(finalProps);
143
+ setTriggerProps(triggerProps ?? null);
144
+ });
145
+ const close = useEvent(() => {
146
+ setIsOpen(false);
147
+ setAnchorPosition(null);
148
+ });
149
+ // Context menu event handler
150
+ const onContextMenu = useEvent((event) => {
151
+ event.preventDefault();
152
+ if (isOpen) {
153
+ const pos = calculatePosition(event);
154
+ setAnchorPosition(pos);
155
+ }
156
+ else {
157
+ open(defaultMenuProps, undefined, event);
158
+ }
159
+ });
160
+ // Bind the onContextMenu event to targetRef
161
+ useEffect(() => {
162
+ const element = targetRef.current;
163
+ if (!element)
164
+ return;
165
+ element.addEventListener('contextmenu', onContextMenu);
166
+ return () => {
167
+ element.removeEventListener('contextmenu', onContextMenu);
168
+ };
169
+ }, [onContextMenu]);
170
+ // Render the menu only when componentProps is set
171
+ const renderedMenu = useMemo(() => {
172
+ if (!componentProps || !anchorPosition)
173
+ return null;
174
+ return (_jsxs(_Fragment, { children: [_jsx("span", { ref: invisibleAnchorRef, style: {
175
+ position: 'absolute',
176
+ left: `${anchorPosition.x}px`,
177
+ top: `${anchorPosition.y}px`,
178
+ width: '0px',
179
+ height: '0px',
180
+ lineHeight: '0',
181
+ pointerEvents: 'none',
182
+ visibility: 'hidden',
183
+ } }), _jsxs(MenuTrigger, { isDummy: true, isOpen: isOpen, targetRef: invisibleAnchorRef, offset: 0, crossOffset: 0, placement: triggerProps?.placement ||
184
+ defaultTriggerProps?.placement ||
185
+ 'bottom start', onOpenChange: setIsOpen, ...mergeProps(defaultTriggerProps, triggerProps || undefined), children: [_jsx(VisuallyHidden, { children: _jsx(Pressable, { children: _jsx("button", { "aria-label": "Open context menu" }) }) }), _jsx(Component, { ...componentProps })] })] }));
186
+ }, [
187
+ componentProps,
188
+ triggerProps,
189
+ isOpen,
190
+ defaultTriggerProps,
191
+ anchorPosition,
192
+ ]);
193
+ return {
194
+ targetRef,
195
+ open,
196
+ update,
197
+ close,
198
+ isOpen,
199
+ get rendered() {
200
+ setupRef.current = true;
201
+ return renderedMenu;
202
+ },
203
+ };
204
+ }
205
+
206
+
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -13,8 +13,10 @@ import { useEvent } from '../../../_internal/index';
13
13
  import { DownIcon, LoadingIcon } from '../../../icons';
14
14
  import { useProviderProps } from '../../../provider';
15
15
  import { BASE_STYLES, COLOR_STYLES, extractStyles, OUTER_STYLES, tasty, } from '../../../tasty';
16
+ import { generateRandomId } from '../../../utils/random';
16
17
  import { mergeProps, modAttrs, useCombinedRefs, useLayoutEffect, } from '../../../utils/react';
17
18
  import { useFocus } from '../../../utils/react/interactions';
19
+ import { useEventBus } from '../../../utils/react/useEventBus';
18
20
  import { useFieldProps, useFormProps, wrapWithField } from '../../form';
19
21
  import { OverlayWrapper } from '../../overlays/OverlayWrapper';
20
22
  import { InvalidIcon } from '../../shared/InvalidIcon';
@@ -95,6 +97,26 @@ export const ComboBox = forwardRef(function ComboBox(props, ref) {
95
97
  menuTrigger,
96
98
  };
97
99
  let state = useComboBoxState(comboBoxStateProps);
100
+ // Generate a unique ID for this combobox instance
101
+ const comboBoxId = useMemo(() => generateRandomId(), []);
102
+ // Get event bus for menu synchronization
103
+ const { emit, on } = useEventBus();
104
+ // Listen for other menus opening and close this one if needed
105
+ useEffect(() => {
106
+ const unsubscribe = on('menu:open', (data) => {
107
+ // If another menu is opening and this combobox is open, close this one
108
+ if (data.menuId !== comboBoxId && state.isOpen) {
109
+ state.close();
110
+ }
111
+ });
112
+ return unsubscribe;
113
+ }, [on, comboBoxId, state]);
114
+ // Emit event when this combobox opens
115
+ useEffect(() => {
116
+ if (state.isOpen) {
117
+ emit('menu:open', { menuId: comboBoxId });
118
+ }
119
+ }, [state.isOpen, emit, comboBoxId]);
98
120
  styles = extractStyles(otherProps, PROP_STYLES, styles);
99
121
  ref = useCombinedRefs(ref);
100
122
  wrapperRef = useCombinedRefs(wrapperRef);
@@ -220,13 +242,13 @@ export const ComboBox = forwardRef(function ComboBox(props, ref) {
220
242
  let allInputProps = useMemo(() => mergeProps(inputProps, hoverProps, focusProps), [inputProps, hoverProps, focusProps]);
221
243
  let comboBoxField = (_jsxs(ComboBoxWrapperElement, { ref: wrapperRef, qa: qa || 'ComboBox', ...modAttrs(mods), styles: wrapperStyles, style: {
222
244
  zIndex: isFocused ? 1 : 'initial',
223
- }, "data-size": size, children: [_jsx(InputElement, { ref: inputRef, qa: "Input", autoFocus: autoFocus, "data-autofocus": autoFocus ? '' : undefined, ...allInputProps, autoComplete: autoComplete, styles: inputStyles, ...modAttrs(mods), "data-size": size }), prefix ? _jsx("div", { "data-element": "Prefix", children: prefix }) : null, _jsxs("div", { "data-element": "Suffix", children: [suffixPosition === 'before' ? suffix : null, validationState || isLoading ? (_jsxs(_Fragment, { children: [validationState && !isLoading ? validation : null, isLoading ? _jsx(LoadingIcon, {}) : null] })) : null, suffixPosition === 'after' ? suffix : null, !hideTrigger ? (_jsx(TriggerElement, { qa: "ComboBoxTrigger", ...mergeProps(buttonProps, triggerFocusProps, triggerHoverProps), ...modAttrs({
245
+ }, "data-size": size, children: [_jsx(InputElement, { ref: inputRef, qa: "Input", autoFocus: autoFocus, "data-autofocus": autoFocus ? '' : undefined, ...allInputProps, autoComplete: autoComplete, styles: inputStyles, ...modAttrs(mods), "data-size": size }), prefix ? _jsx("div", { "data-element": "Prefix", children: prefix }) : null, _jsxs("div", { "data-element": "Suffix", children: [suffixPosition === 'before' ? suffix : null, validationState || isLoading ? (_jsxs(_Fragment, { children: [validationState && !isLoading ? validation : null, isLoading ? _jsx(LoadingIcon, {}) : null] })) : null, suffixPosition === 'after' ? suffix : null, !hideTrigger ? (_jsx(TriggerElement, { "data-menu-trigger": true, qa: "ComboBoxTrigger", ...mergeProps(buttonProps, triggerFocusProps, triggerHoverProps), ...modAttrs({
224
246
  pressed: isTriggerPressed,
225
247
  focused: isTriggerFocused,
226
248
  hovered: isTriggerHovered,
227
249
  disabled: isDisabled,
228
250
  loading: isLoading,
229
- }), ref: triggerRef, "data-size": size, isDisabled: isDisabled, styles: triggerStyles, children: _jsx(DownIcon, {}) })) : null] }), _jsx(OverlayWrapper, { isOpen: state.isOpen && !isDisabled, children: _jsx(ListBoxPopup, { ...listBoxProps, shouldUseVirtualFocus: true, listBoxRef: listBoxRef, popoverRef: popoverRef, overlayProps: overlayProps, placement: placement, state: state, listBoxStyles: listBoxStyles, overlayStyles: overlayStyles, optionStyles: optionStyles, minWidth: comboBoxWidth }) })] }));
251
+ }), ref: triggerRef, "data-size": size, isDisabled: isDisabled, styles: triggerStyles, children: _jsx(DownIcon, {}) })) : null] }), _jsx(OverlayWrapper, { isOpen: state.isOpen && !isDisabled, children: _jsx(ListBoxPopup, { ...listBoxProps, shouldUseVirtualFocus: true, listBoxRef: listBoxRef, popoverRef: popoverRef, overlayProps: overlayProps, placement: placement, state: state, listBoxStyles: listBoxStyles, overlayStyles: overlayStyles, optionStyles: optionStyles, minWidth: comboBoxWidth, triggerRef: triggerRef }) })] }));
230
252
  return wrapWithField(comboBoxField, ref, mergeProps({ ...props, styles }, { labelProps }));
231
253
  });
232
254
  const ComboBoxSectionComponent = Object.assign(BaseSection, {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.66.1
4
+ * @cube-dev/ui-kit v0.67.0
5
5
  * Released under the MIT license.
6
6
  */
7
7