@cube-dev/ui-kit 0.71.2 → 0.72.1

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 (487) hide show
  1. package/CHANGELOG.md +16 -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 +1 -1
  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 -1
  29. package/es/components/actions/Menu/Menu.js +12 -3
  30. package/es/components/actions/Menu/MenuItem.js +36 -13
  31. package/es/components/actions/Menu/MenuSection.js +1 -1
  32. package/es/components/actions/Menu/MenuTrigger.js +17 -2
  33. package/es/components/actions/Menu/SubMenuTrigger.js +288 -0
  34. package/es/components/actions/Menu/SubmenuTriggerContext.js +18 -0
  35. package/es/components/actions/Menu/context.js +1 -1
  36. package/es/components/actions/Menu/index.js +3 -1
  37. package/es/components/actions/Menu/styled.js +1 -1
  38. package/es/components/actions/index.js +1 -1
  39. package/es/components/actions/use-action.js +1 -1
  40. package/es/components/actions/use-anchored-menu.js +1 -1
  41. package/es/components/actions/use-context-menu.js +1 -1
  42. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/es/components/content/Alert/Alert.js +1 -1
  44. package/es/components/content/Alert/index.js +1 -1
  45. package/es/components/content/Alert/types.js +1 -1
  46. package/es/components/content/Alert/use-alert.js +1 -1
  47. package/es/components/content/Avatar/Avatar.js +1 -1
  48. package/es/components/content/Badge/Badge.js +1 -1
  49. package/es/components/content/Card/Card.js +1 -1
  50. package/es/components/content/Content.js +1 -1
  51. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  52. package/es/components/content/CopyPasteBlock/index.js +1 -1
  53. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  54. package/es/components/content/CopySnippet/index.js +1 -1
  55. package/es/components/content/Divider.js +1 -1
  56. package/es/components/content/Footer.js +1 -1
  57. package/es/components/content/Header.js +1 -1
  58. package/es/components/content/HotKeys/HotKeys.js +1 -1
  59. package/es/components/content/HotKeys/index.js +1 -1
  60. package/es/components/content/Paragraph.js +1 -1
  61. package/es/components/content/Placeholder/Placeholder.js +1 -1
  62. package/es/components/content/PrismCode/PrismCode.js +1 -1
  63. package/es/components/content/PrismCode/prismSetup.js +1 -1
  64. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  65. package/es/components/content/Result/Result.js +1 -1
  66. package/es/components/content/Skeleton/Skeleton.js +1 -1
  67. package/es/components/content/Tag/Tag.js +1 -1
  68. package/es/components/content/Text.js +1 -1
  69. package/es/components/content/Title.js +1 -1
  70. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  71. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  72. package/es/components/fields/Checkbox/context.js +1 -1
  73. package/es/components/fields/Checkbox/index.js +1 -1
  74. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  75. package/es/components/fields/ComboBox/index.js +1 -1
  76. package/es/components/fields/DatePicker/DateInput.js +1 -1
  77. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  78. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  79. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  80. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  81. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  82. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  83. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  84. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  85. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  86. package/es/components/fields/DatePicker/index.js +1 -1
  87. package/es/components/fields/DatePicker/intl.js +1 -1
  88. package/es/components/fields/DatePicker/parseDate.js +1 -1
  89. package/es/components/fields/DatePicker/props.js +1 -1
  90. package/es/components/fields/DatePicker/types.js +1 -1
  91. package/es/components/fields/DatePicker/utils.js +1 -1
  92. package/es/components/fields/FileInput/FileInput.js +1 -1
  93. package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
  94. package/es/components/fields/FilterListBox/index.js +1 -1
  95. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  96. package/es/components/fields/FilterPicker/index.js +1 -1
  97. package/es/components/fields/Input/Input.js +1 -1
  98. package/es/components/fields/Input/index.js +1 -1
  99. package/es/components/fields/ListBox/ListBox.js +1 -1
  100. package/es/components/fields/ListBox/index.js +1 -1
  101. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  102. package/es/components/fields/NumberInput/StepButton.js +1 -1
  103. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  104. package/es/components/fields/RadioGroup/Radio.js +1 -1
  105. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  106. package/es/components/fields/RadioGroup/context.js +1 -1
  107. package/es/components/fields/RadioGroup/index.js +1 -1
  108. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  109. package/es/components/fields/SearchInput/index.js +1 -1
  110. package/es/components/fields/Select/Select.js +1 -1
  111. package/es/components/fields/Select/index.js +1 -1
  112. package/es/components/fields/Slider/Gradation.js +1 -1
  113. package/es/components/fields/Slider/Header.js +1 -1
  114. package/es/components/fields/Slider/RangeSlider.js +1 -1
  115. package/es/components/fields/Slider/Slider.js +1 -1
  116. package/es/components/fields/Slider/SliderBase.js +1 -1
  117. package/es/components/fields/Slider/SliderInput.js +1 -1
  118. package/es/components/fields/Slider/SliderThumb.js +1 -1
  119. package/es/components/fields/Slider/SliderTrack.js +1 -1
  120. package/es/components/fields/Slider/elements.js +1 -1
  121. package/es/components/fields/Slider/index.js +1 -1
  122. package/es/components/fields/Slider/types.js +1 -1
  123. package/es/components/fields/Switch/Switch.js +1 -1
  124. package/es/components/fields/Switch/index.js +1 -1
  125. package/es/components/fields/TextArea/TextArea.js +1 -1
  126. package/es/components/fields/TextArea/index.js +1 -1
  127. package/es/components/fields/TextInput/TextInput.js +1 -1
  128. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  129. package/es/components/fields/TextInput/index.js +1 -1
  130. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  131. package/es/components/fields/TextInputMapper/index.js +1 -1
  132. package/es/components/fields/index.js +1 -1
  133. package/es/components/form/FieldWrapper/FieldWrapper.js +2 -2
  134. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  135. package/es/components/form/FieldWrapper/index.js +1 -1
  136. package/es/components/form/FieldWrapper/types.js +1 -1
  137. package/es/components/form/Form/Field.js +1 -1
  138. package/es/components/form/Form/Form.js +1 -1
  139. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  140. package/es/components/form/Form/ResetButton/index.js +1 -1
  141. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  142. package/es/components/form/Form/SubmitButton/index.js +1 -1
  143. package/es/components/form/Form/SubmitError.js +1 -1
  144. package/es/components/form/Form/index.js +1 -1
  145. package/es/components/form/Form/types.js +1 -1
  146. package/es/components/form/Form/use-field/index.js +1 -1
  147. package/es/components/form/Form/use-field/types.js +1 -1
  148. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  149. package/es/components/form/Form/use-field/use-field.js +1 -1
  150. package/es/components/form/Form/use-form.js +1 -1
  151. package/es/components/form/Form/validation.js +1 -1
  152. package/es/components/form/Label.js +2 -2
  153. package/es/components/form/index.js +1 -1
  154. package/es/components/form/wrapper.js +1 -1
  155. package/es/components/layout/Flex.js +1 -1
  156. package/es/components/layout/Flow.js +1 -1
  157. package/es/components/layout/Grid.js +1 -1
  158. package/es/components/layout/Panel.js +1 -1
  159. package/es/components/layout/Prefix.js +1 -1
  160. package/es/components/layout/ResizablePanel.js +1 -1
  161. package/es/components/layout/Space.js +1 -1
  162. package/es/components/layout/Suffix.js +1 -1
  163. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  164. package/es/components/navigation/Link/Link.js +1 -1
  165. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  166. package/es/components/organisms/Modal/Modal.js +1 -1
  167. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  168. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  169. package/es/components/other/Calendar/Calendar.js +1 -1
  170. package/es/components/other/Calendar/CalendarCell.js +1 -1
  171. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  172. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  173. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  174. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  175. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  176. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  177. package/es/components/overlays/AlertDialog/index.js +1 -1
  178. package/es/components/overlays/AlertDialog/types.js +1 -1
  179. package/es/components/overlays/Dialog/Dialog.js +1 -1
  180. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  181. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  182. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  183. package/es/components/overlays/Dialog/context.js +1 -1
  184. package/es/components/overlays/Dialog/index.js +1 -1
  185. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  186. package/es/components/overlays/Modal/Modal.js +1 -1
  187. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  188. package/es/components/overlays/Modal/Overlay.js +1 -1
  189. package/es/components/overlays/Modal/Popover.js +1 -1
  190. package/es/components/overlays/Modal/Tray.js +1 -1
  191. package/es/components/overlays/Modal/Underlay.js +1 -1
  192. package/es/components/overlays/Modal/index.js +1 -1
  193. package/es/components/overlays/Modal/types.js +1 -1
  194. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  195. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  196. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  197. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  198. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  199. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  200. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  201. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  202. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  203. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  204. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  205. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  206. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  207. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  208. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  209. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  210. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  211. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  212. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  213. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  214. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  215. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  216. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  217. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  218. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  219. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  220. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  221. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  222. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  223. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  224. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  225. package/es/components/overlays/NewNotifications/index.js +1 -1
  226. package/es/components/overlays/NewNotifications/types.js +1 -1
  227. package/es/components/overlays/Notification/Notification.js +1 -1
  228. package/es/components/overlays/OverlayWrapper.js +1 -1
  229. package/es/components/overlays/Toasts/Toast.js +1 -1
  230. package/es/components/overlays/Toasts/index.js +1 -1
  231. package/es/components/overlays/Toasts/types.js +1 -1
  232. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  233. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  234. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  235. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  236. package/es/components/overlays/Tooltip/context.js +1 -1
  237. package/es/components/overlays/Tooltip/index.js +1 -1
  238. package/es/components/portal/Portal.js +1 -1
  239. package/es/components/portal/PortalProvider.js +1 -1
  240. package/es/components/portal/index.js +1 -1
  241. package/es/components/portal/storybook/templates/CustomRoot.js +1 -1
  242. package/es/components/portal/storybook/templates/PortalOrder.js +1 -1
  243. package/es/components/portal/storybook/templates/basic.js +1 -1
  244. package/es/components/portal/storybook/templates/index.js +1 -1
  245. package/es/components/portal/types.js +1 -1
  246. package/es/components/portal/usePortal.js +1 -1
  247. package/es/components/shared/InvalidIcon.js +1 -1
  248. package/es/components/shared/ValidIcon.js +1 -1
  249. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  250. package/es/components/status/LoadingAnimation/index.js +1 -1
  251. package/es/components/status/Spin/Cube.js +1 -1
  252. package/es/components/status/Spin/InternalSpinner.js +1 -1
  253. package/es/components/status/Spin/Spin.js +1 -1
  254. package/es/components/status/Spin/SpinsContainer.js +1 -1
  255. package/es/components/status/Spin/index.js +1 -1
  256. package/es/components/status/Spin/types.js +1 -1
  257. package/es/components/status/index.js +1 -1
  258. package/es/data/themes.js +1 -1
  259. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  260. package/es/icons/AdjustmentsIcon.js +1 -1
  261. package/es/icons/AiIcon.js +1 -1
  262. package/es/icons/AreaChartIcon.js +1 -1
  263. package/es/icons/BackwardIcon.js +1 -1
  264. package/es/icons/BarChartIcon.js +1 -1
  265. package/es/icons/BellFilledIcon.js +1 -1
  266. package/es/icons/BellIcon.js +1 -1
  267. package/es/icons/BooleanIcon.js +1 -1
  268. package/es/icons/CalendarEditIcon.js +1 -1
  269. package/es/icons/CalendarIcon.js +1 -1
  270. package/es/icons/CaretDownIcon.js +1 -1
  271. package/es/icons/CaretUpIcon.js +1 -1
  272. package/es/icons/ChartAreaStackedIcon.js +1 -1
  273. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  274. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  275. package/es/icons/ChartBarGroupedIcon.js +1 -1
  276. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  277. package/es/icons/ChartBarLineIcon.js +1 -1
  278. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  279. package/es/icons/ChartBarStackedIcon.js +1 -1
  280. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  281. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  282. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  283. package/es/icons/ChartBoxPlotIcon.js +1 -1
  284. package/es/icons/ChartBubbleIcon.js +1 -1
  285. package/es/icons/ChartDonut2Icon.js +1 -1
  286. package/es/icons/ChartFunnelIcon.js +1 -1
  287. package/es/icons/ChartKPIIcon.js +1 -1
  288. package/es/icons/ChartPie2Icon.js +1 -1
  289. package/es/icons/ChartScatterIcon.js +1 -1
  290. package/es/icons/CheckCircleFilledIcon.js +1 -1
  291. package/es/icons/CheckCircleIcon.js +1 -1
  292. package/es/icons/CheckIcon.js +1 -1
  293. package/es/icons/CircleFilledIcon.js +1 -1
  294. package/es/icons/ClearIcon.js +1 -1
  295. package/es/icons/CloseCircleFilledIcon.js +1 -1
  296. package/es/icons/CloseCircleIcon.js +1 -1
  297. package/es/icons/CloseIcon.js +1 -1
  298. package/es/icons/CodeIcon.js +1 -1
  299. package/es/icons/CopyIcon.js +1 -1
  300. package/es/icons/CountIcon.js +1 -1
  301. package/es/icons/CubeIcon.js +1 -1
  302. package/es/icons/DangerIcon.js +1 -1
  303. package/es/icons/DashboardIcon.js +1 -1
  304. package/es/icons/DatabaseIcon.js +1 -1
  305. package/es/icons/DirectionIcon.js +1 -1
  306. package/es/icons/DonutIcon.js +1 -1
  307. package/es/icons/DownIcon.js +1 -1
  308. package/es/icons/EditIcon.js +1 -1
  309. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  310. package/es/icons/ExclamationCircleIcon.js +1 -1
  311. package/es/icons/ExclamationIcon.js +1 -1
  312. package/es/icons/EyeIcon.js +1 -1
  313. package/es/icons/EyeInvisibleIcon.js +1 -1
  314. package/es/icons/FilterIcon.js +1 -1
  315. package/es/icons/FolderFilledIcon.js +1 -1
  316. package/es/icons/FolderIcon.js +1 -1
  317. package/es/icons/FolderOpenFilledIcon.js +1 -1
  318. package/es/icons/FolderOpenIcon.js +1 -1
  319. package/es/icons/ForwardIcon.js +1 -1
  320. package/es/icons/HierarchyIcon.js +1 -1
  321. package/es/icons/Icon.js +1 -1
  322. package/es/icons/InfoCircleIcon.js +1 -1
  323. package/es/icons/InfoIcon.js +1 -1
  324. package/es/icons/KeyIcon.js +1 -1
  325. package/es/icons/LeftIcon.js +1 -1
  326. package/es/icons/LineChartIcon.js +1 -1
  327. package/es/icons/LoadingIcon.js +1 -1
  328. package/es/icons/LockFilledIcon.js +1 -1
  329. package/es/icons/LockIcon.js +1 -1
  330. package/es/icons/MoreIcon.js +1 -1
  331. package/es/icons/NotAllowedIcon.js +1 -1
  332. package/es/icons/NumberIcon.js +1 -1
  333. package/es/icons/PauseCircleFilledIcon.js +1 -1
  334. package/es/icons/PauseCircleIcon.js +1 -1
  335. package/es/icons/PauseIcon.js +1 -1
  336. package/es/icons/PieChartIcon.js +1 -1
  337. package/es/icons/PlayCircleIcon.js +1 -1
  338. package/es/icons/PlayIcon.js +1 -1
  339. package/es/icons/PlusIcon.js +1 -1
  340. package/es/icons/ReloadIcon.js +1 -1
  341. package/es/icons/ReportIcon.js +1 -1
  342. package/es/icons/ReturnIcon.js +1 -1
  343. package/es/icons/RightIcon.js +1 -1
  344. package/es/icons/SchemeIcon.js +1 -1
  345. package/es/icons/SearchIcon.js +1 -1
  346. package/es/icons/SettingsIcon.js +1 -1
  347. package/es/icons/ShieldFilledIcon.js +1 -1
  348. package/es/icons/ShieldIcon.js +1 -1
  349. package/es/icons/SlashIcon.js +1 -1
  350. package/es/icons/SparklesIcon.js +1 -1
  351. package/es/icons/SqlIcon.js +1 -1
  352. package/es/icons/StatsIcon.js +1 -1
  353. package/es/icons/StopIcon.js +1 -1
  354. package/es/icons/StringIcon.js +1 -1
  355. package/es/icons/SwitchIcon.js +1 -1
  356. package/es/icons/TableIcon.js +1 -1
  357. package/es/icons/ThumbsDownIcon.js +1 -1
  358. package/es/icons/ThumbsUpIcon.js +1 -1
  359. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  360. package/es/icons/ThunderboltFilledIcon.js +1 -1
  361. package/es/icons/ThunderboltIcon.js +1 -1
  362. package/es/icons/TimeIcon.js +1 -1
  363. package/es/icons/UnlockIcon.js +1 -1
  364. package/es/icons/UpIcon.js +1 -1
  365. package/es/icons/UserGroupIcon.js +1 -1
  366. package/es/icons/UserIcon.js +1 -1
  367. package/es/icons/UserLockIcon.js +1 -1
  368. package/es/icons/ViewIcon.js +1 -1
  369. package/es/icons/WarningFilledIcon.js +1 -1
  370. package/es/icons/WarningIcon.js +1 -1
  371. package/es/icons/add-new-icon.js +1 -1
  372. package/es/icons/index.js +1 -1
  373. package/es/icons/wrap-icon.js +1 -1
  374. package/es/index.js +2 -1
  375. package/es/provider.js +1 -1
  376. package/es/providers/TrackingProvider.js +1 -1
  377. package/es/services/notification.js +1 -1
  378. package/es/shared/form.js +1 -1
  379. package/es/shared/index.js +1 -1
  380. package/es/stories/Form.legacy-stories.js +1 -1
  381. package/es/stories/FormFieldArgs.js +1 -1
  382. package/es/stories/Layout.stories.js +1 -1
  383. package/es/stories/Tasty.stories.js +1 -1
  384. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  385. package/es/stories/components/DialogFormApp.js +1 -1
  386. package/es/stories/components/StyledButton.js +1 -1
  387. package/es/stories/lists/baseProps.js +1 -1
  388. package/es/tasty/index.js +1 -1
  389. package/es/tasty/parser/classify.js +22 -18
  390. package/es/tasty/parser/const.js +1 -1
  391. package/es/tasty/parser/lru.js +1 -1
  392. package/es/tasty/parser/parser.js +1 -1
  393. package/es/tasty/parser/tokenizer.js +1 -1
  394. package/es/tasty/parser/types.js +1 -1
  395. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  396. package/es/tasty/styles/align.js +1 -1
  397. package/es/tasty/styles/border.js +1 -1
  398. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  399. package/es/tasty/styles/color.js +1 -1
  400. package/es/tasty/styles/createStyle.js +1 -1
  401. package/es/tasty/styles/dimension.js +1 -1
  402. package/es/tasty/styles/display.js +1 -1
  403. package/es/tasty/styles/fade.js +1 -1
  404. package/es/tasty/styles/fill.js +1 -1
  405. package/es/tasty/styles/flow.js +1 -1
  406. package/es/tasty/styles/font.js +1 -1
  407. package/es/tasty/styles/fontStyle.js +1 -1
  408. package/es/tasty/styles/gap.js +1 -1
  409. package/es/tasty/styles/groupRadius.js +1 -1
  410. package/es/tasty/styles/height.js +1 -1
  411. package/es/tasty/styles/index.js +1 -1
  412. package/es/tasty/styles/inset.js +1 -1
  413. package/es/tasty/styles/justify.js +1 -1
  414. package/es/tasty/styles/list.js +1 -1
  415. package/es/tasty/styles/margin.js +1 -1
  416. package/es/tasty/styles/marginBlock.js +1 -1
  417. package/es/tasty/styles/marginInline.js +1 -1
  418. package/es/tasty/styles/outline.js +1 -1
  419. package/es/tasty/styles/padding.js +1 -1
  420. package/es/tasty/styles/paddingBlock.js +1 -1
  421. package/es/tasty/styles/paddingInline.js +1 -1
  422. package/es/tasty/styles/place.js +1 -1
  423. package/es/tasty/styles/predefined.js +1 -1
  424. package/es/tasty/styles/preset.js +1 -1
  425. package/es/tasty/styles/radius.js +1 -1
  426. package/es/tasty/styles/reset.js +1 -1
  427. package/es/tasty/styles/scrollbar.js +1 -1
  428. package/es/tasty/styles/shadow.js +1 -1
  429. package/es/tasty/styles/styledScrollbar.js +1 -1
  430. package/es/tasty/styles/transition.js +1 -1
  431. package/es/tasty/styles/types.js +1 -1
  432. package/es/tasty/styles/width.js +1 -1
  433. package/es/tasty/tasty.js +1 -1
  434. package/es/tasty/types.js +1 -1
  435. package/es/tasty/utils/cache-wrapper.js +1 -1
  436. package/es/tasty/utils/case-converter.js +1 -1
  437. package/es/tasty/utils/colors.js +1 -1
  438. package/es/tasty/utils/dotize.js +1 -1
  439. package/es/tasty/utils/filterBaseProps.js +1 -1
  440. package/es/tasty/utils/getDisplayName.js +1 -1
  441. package/es/tasty/utils/getModCombinations.js +1 -1
  442. package/es/tasty/utils/mergeStyles.js +1 -1
  443. package/es/tasty/utils/modAttrs.js +1 -1
  444. package/es/tasty/utils/renderStyles.js +1 -1
  445. package/es/tasty/utils/responsive.js +1 -1
  446. package/es/tasty/utils/string.js +1 -1
  447. package/es/tasty/utils/styles.js +1 -1
  448. package/es/tasty/utils/warnings.js +1 -1
  449. package/es/tokens.js +1 -1
  450. package/es/type-checks.js +1 -1
  451. package/es/utils/ResizeSensor.js +1 -1
  452. package/es/utils/modules.js +1 -1
  453. package/es/utils/promise.js +1 -1
  454. package/es/utils/random.js +1 -1
  455. package/es/utils/range.js +1 -1
  456. package/es/utils/react/Slots.js +1 -1
  457. package/es/utils/react/chain.js +1 -1
  458. package/es/utils/react/index.js +1 -1
  459. package/es/utils/react/interactions.js +1 -1
  460. package/es/utils/react/isTextOnly.js +1 -1
  461. package/es/utils/react/mapProps.js +1 -1
  462. package/es/utils/react/mergeProps.js +1 -1
  463. package/es/utils/react/nullableValue.js +1 -1
  464. package/es/utils/react/sharedStore.js +1 -1
  465. package/es/utils/react/useCombinedRefs.js +1 -1
  466. package/es/utils/react/useControlledFocusVisible.js +1 -1
  467. package/es/utils/react/useEventBus.js +1 -1
  468. package/es/utils/react/useId.js +1 -1
  469. package/es/utils/react/useIsDarwin.js +1 -1
  470. package/es/utils/react/useKeySymbols.js +1 -1
  471. package/es/utils/react/useLayoutEffect.js +1 -1
  472. package/es/utils/react/useQaProps.js +1 -1
  473. package/es/utils/react/useViewportSize.js +1 -1
  474. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  475. package/es/utils/transitions.js +1 -1
  476. package/es/utils/tree.js +1 -1
  477. package/es/utils/warnings.js +1 -1
  478. package/es/version.js +2 -2
  479. package/package.json +1 -1
  480. package/types/components/actions/Menu/Menu.d.ts +6 -0
  481. package/types/components/actions/Menu/SubMenuTrigger.d.ts +44 -0
  482. package/types/components/actions/Menu/SubmenuTriggerContext.d.ts +13 -0
  483. package/types/components/actions/Menu/context.d.ts +1 -0
  484. package/types/components/actions/Menu/index.d.ts +2 -0
  485. package/types/components/actions/Menu/styled.d.ts +480 -480
  486. package/types/components/fields/DatePicker/DatePickerElement.d.ts +160 -160
  487. package/types/index.d.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @cube-dev/ui-kit
2
2
 
3
+ ## 0.72.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#750](https://github.com/cube-js/cube-ui-kit/pull/750) [`0ee6ac95`](https://github.com/cube-js/cube-ui-kit/commit/0ee6ac958946c5621a847d7982f16267b4d29526) Thanks [@tenphi](https://github.com/tenphi)! - Fix \$label-width definition in Label component.
8
+
9
+ ## 0.72.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#747](https://github.com/cube-js/cube-ui-kit/pull/747) [`27dc51b2`](https://github.com/cube-js/cube-ui-kit/commit/27dc51b2c3ab08693b02892f38787a3e90e238b9) Thanks [@tenphi](https://github.com/tenphi)! - New syntax for custom properties with fallback: `($prop-name, <fallback_value>)`.
14
+
15
+ ### Patch Changes
16
+
17
+ - [#749](https://github.com/cube-js/cube-ui-kit/pull/749) [`6f40ed82`](https://github.com/cube-js/cube-ui-kit/commit/6f40ed82775976efecf7b2f99f7356c59b770284) Thanks [@tenphi](https://github.com/tenphi)! - Add SubMenuTrigger component for submenu support in Menu. CommandMenu is not supported.
18
+
3
19
  ## 0.71.2
4
20
 
5
21
  ### Patch Changes
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -17,9 +17,11 @@ import { TooltipProvider, } from '../../overlays/Tooltip/TooltipProvider';
17
17
  import { useMenuContext } from './context';
18
18
  import { MenuItem } from './MenuItem';
19
19
  import { MenuSection } from './MenuSection';
20
+ import { MenuTrigger } from './MenuTrigger';
20
21
  import { StyledDivider, StyledFooter, StyledHeader, StyledMenu, StyledMenuWrapper, } from './styled';
22
+ import { SubMenuTrigger } from './SubMenuTrigger';
21
23
  function Menu(props, ref) {
22
- const { header, footer, menuStyles, headerStyles, footerStyles, itemStyles, sectionStyles, sectionHeadingStyles, selectionIcon, size = 'medium', qa, selectedKeys, defaultSelectedKeys, onSelectionChange, ...rest } = props;
24
+ const { header, footer, menuStyles, headerStyles, footerStyles, itemStyles, sectionStyles, sectionHeadingStyles, selectionIcon, size = 'medium', focusOnHover = false, qa, selectedKeys, defaultSelectedKeys, onSelectionChange, ...rest } = props;
23
25
  const domRef = useDOMRef(ref);
24
26
  const contextProps = useMenuContext();
25
27
  // Convert string[] to Set<Key> for React Aria compatibility
@@ -43,6 +45,7 @@ function Menu(props, ref) {
43
45
  }
44
46
  : undefined;
45
47
  const completeProps = mergeProps(contextProps, rest, {
48
+ focusOnHover,
46
49
  selectedKeys: ariaSelectedKeys,
47
50
  defaultSelectedKeys: ariaDefaultSelectedKeys,
48
51
  onSelectionChange: handleSelectionChange,
@@ -91,9 +94,13 @@ function Menu(props, ref) {
91
94
  menuItem = (_jsx(TooltipProvider, { activeWrap: true, placement: "right", ...tooltipProps, children: menuItem }, item.key));
92
95
  }
93
96
  // Apply custom wrapper if provided
94
- if (item.props.wrapper) {
97
+ if (item.props?.wrapper) {
95
98
  menuItem = item.props.wrapper(menuItem);
96
99
  }
100
+ else if (item.wrapper) {
101
+ // Handle wrapper from collection nodes (e.g., SubMenuTrigger)
102
+ menuItem = item.wrapper(menuItem);
103
+ }
97
104
  // Ensure every child has a stable key, even if the wrapper component didn't set one.
98
105
  items.push(React.cloneElement(menuItem, { key: item.key }));
99
106
  });
@@ -124,6 +131,8 @@ const Section = Object.assign(BaseSection, {
124
131
  const __Menu = Object.assign(_Menu, {
125
132
  Item: Item,
126
133
  Section,
134
+ SubMenuTrigger,
135
+ Trigger: MenuTrigger,
127
136
  displayName: 'Menu',
128
137
  });
129
138
  __Menu.displayName = 'Menu';
@@ -1,22 +1,23 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.71.2
4
+ * @cube-dev/ui-kit v0.72.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
9
  import { IconPointFilled } from '@tabler/icons-react';
10
- import { useRef } from 'react';
10
+ import { useContext, useRef } from 'react';
11
11
  import { FocusRing, useMenuItem } from 'react-aria';
12
12
  import { useHotkeys } from 'react-hotkeys-hook';
13
- import { CheckIcon } from '../../../icons';
13
+ import { CheckIcon, RightIcon } from '../../../icons';
14
14
  import { ClearSlots, mergeProps, SlotProvider } from '../../../utils/react';
15
15
  import { HotKeys } from '../../content/HotKeys';
16
16
  import { Text } from '../../content/Text';
17
17
  import { Space } from '../../layout/Space';
18
18
  import { useMenuContext } from './context';
19
19
  import { StyledItem } from './styled';
20
+ import { SubmenuTriggerContext } from './SubmenuTriggerContext';
20
21
  // Returns icon corresponding to selection type
21
22
  const getSelectionTypeIcon = (selectionIcon) => {
22
23
  switch (selectionIcon) {
@@ -36,25 +37,31 @@ export function MenuItem(props) {
36
37
  const { item, state, styles, selectionIcon, isVirtualized, onAction, size } = props;
37
38
  const { onClose, closeOnSelect } = useMenuContext();
38
39
  const { rendered, key, props: itemProps } = item;
40
+ // Check if this item is wrapped in a SubmenuTriggerContext
41
+ const submenuContext = useContext(SubmenuTriggerContext);
39
42
  // Extract optional keyboard shortcut and CommandMenu-specific props from item props so they are not passed down to DOM elements.
40
43
  const { hotkeys, wrapper, keywords, forceMount, ...cleanItemProps } = (itemProps || {});
41
44
  const isSelectable = state.selectionManager.selectionMode !== 'none';
42
- const isDisabledKey = state.disabledKeys.has(key);
45
+ const isDisabledKey = state.disabledKeys.has(key) || submenuContext?.isDisabled;
43
46
  const ref = useRef(null);
47
+ // Use the triggerRef from submenu context if present
48
+ const elementRef = (submenuContext?.triggerRef ?? ref);
44
49
  const { menuItemProps, labelProps, descriptionProps, keyboardShortcutProps, isFocused, isSelected, isPressed, isDisabled, } = useMenuItem({
45
50
  isSelected: state.selectionManager.isSelected(key),
46
51
  isDisabled: isDisabledKey,
47
52
  'aria-label': item['aria-label'],
48
53
  key,
49
- onClose,
50
- closeOnSelect,
54
+ onClose: submenuContext ? undefined : onClose, // Don't close menu for submenu triggers
55
+ closeOnSelect: submenuContext ? false : closeOnSelect, // Don't close on submenu trigger selection
51
56
  isVirtualized,
52
- onAction,
53
- }, state, ref);
57
+ onAction: submenuContext?.onAction || onAction,
58
+ }, state, elementRef);
54
59
  // Destructure presentation-related props from cleanItemProps so they are not spread onto DOM element
55
60
  const { postfix, description, icon, mods: itemMods, qa: itemQa, textValue, ...restCleanProps } = cleanItemProps;
56
- // Build final postfix: custom postfix or HotKeys hint if provided and no explicit postfix
57
- const finalPostfix = postfix ?? (hotkeys ? _jsx(HotKeys, { children: hotkeys }) : undefined);
61
+ // Build final postfix: submenu icon, custom postfix or HotKeys hint
62
+ const finalPostfix = submenuContext
63
+ ? postfix ?? _jsx(RightIcon, {})
64
+ : postfix ?? (hotkeys ? _jsx(HotKeys, { children: hotkeys }) : undefined);
58
65
  const checkIcon = isSelectable && isSelected
59
66
  ? getSelectionTypeIcon(selectionIcon)
60
67
  : undefined;
@@ -67,6 +74,7 @@ export function MenuItem(props) {
67
74
  selectable: isSelectable,
68
75
  selected: isSelected,
69
76
  disabled: isDisabled,
77
+ submenu: !!submenuContext,
70
78
  };
71
79
  // Register global hotkey if provided
72
80
  useHotkeys(typeof hotkeys === 'string' ? hotkeys.toLowerCase() : '', () => {
@@ -75,8 +83,8 @@ export function MenuItem(props) {
75
83
  if (isDisabledKey || isDisabled)
76
84
  return;
77
85
  // Simulate a click on the menu item so all existing handlers run
78
- if (ref.current) {
79
- ref.current.click();
86
+ if (elementRef.current) {
87
+ elementRef.current.click();
80
88
  }
81
89
  }, {
82
90
  enableOnContentEditable: true,
@@ -85,12 +93,27 @@ export function MenuItem(props) {
85
93
  enableOnFormTags: true,
86
94
  }, [hotkeys, isDisabledKey, isDisabled]);
87
95
  return (_jsx(FocusRing, { children: _jsx(StyledItem, { ...mergeProps(menuItemProps, restCleanProps, {
96
+ 'data-menu-trigger': true,
88
97
  qa: itemQa ? itemQa : `MenuItem-${key}`,
89
98
  mods,
90
99
  styles,
91
100
  'aria-disabled': isDisabled || undefined,
92
101
  'data-size': size,
93
- }), ref: ref, children: _jsx(ClearSlots, { children: _jsxs(SlotProvider, { slots: {
102
+ 'aria-haspopup': submenuContext ? 'menu' : undefined,
103
+ 'aria-expanded': submenuContext?.isOpen,
104
+ 'data-has-submenu': submenuContext ? true : undefined,
105
+ onKeyDown: submenuContext?.onKeyDown
106
+ ? (e) => {
107
+ // Call submenu handler first, if it prevents default, don't call the original
108
+ submenuContext.onKeyDown?.(e);
109
+ if (!e.defaultPrevented && menuItemProps.onKeyDown) {
110
+ menuItemProps.onKeyDown(e);
111
+ }
112
+ }
113
+ : menuItemProps.onKeyDown,
114
+ onMouseEnter: submenuContext?.onMouseEnter || menuItemProps.onMouseEnter,
115
+ onMouseLeave: submenuContext?.onMouseLeave || menuItemProps.onMouseLeave,
116
+ }), ref: elementRef, children: _jsx(ClearSlots, { children: _jsxs(SlotProvider, { slots: {
94
117
  text: { className: 'itemLabel', ...labelProps },
95
118
  end: { className: 'end', ...descriptionProps },
96
119
  icon: { className: 'icon' },
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.71.2
4
+ * @cube-dev/ui-kit v0.72.1
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.71.2
4
+ * @cube-dev/ui-kit v0.72.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -22,6 +22,7 @@ function MenuTrigger(props, ref) {
22
22
  const domRef = useDOMRef(ref);
23
23
  const menuTriggerRef = props.targetRef || domRef || triggerRef;
24
24
  const menuRef = useRef(null);
25
+ const wasOpenRef = useRef(false);
25
26
  const { children, shouldFlip = true, closeOnSelect, trigger = 'press', isDisabled, isDummy, } = props;
26
27
  // Generate a unique ID for this menu instance
27
28
  const menuId = useMemo(() => generateRandomId(), []);
@@ -48,6 +49,19 @@ function MenuTrigger(props, ref) {
48
49
  emit('menu:open', { menuId });
49
50
  }
50
51
  }, [state.isOpen, emit, menuId, isDummy]);
52
+ // Restore focus manually when the menu closes
53
+ useEffect(() => {
54
+ if (!state.isOpen && wasOpenRef.current && !isDummy) {
55
+ wasOpenRef.current = false;
56
+ // Use setTimeout to ensure focus restoration happens after any animations
57
+ setTimeout(() => {
58
+ menuTriggerRef.current?.focus();
59
+ }, 0);
60
+ }
61
+ else if (state.isOpen) {
62
+ wasOpenRef.current = true;
63
+ }
64
+ }, [state.isOpen, menuTriggerRef, isDummy]);
51
65
  if (typeof menuTrigger === 'function') {
52
66
  menuTrigger = menuTrigger(state);
53
67
  }
@@ -71,7 +85,7 @@ function MenuTrigger(props, ref) {
71
85
  ref: menuRef,
72
86
  onClose: state.close,
73
87
  closeOnSelect,
74
- autoFocus: state.focusStrategy || true,
88
+ autoFocus: state.focusStrategy ?? 'first',
75
89
  style: isMobile
76
90
  ? {
77
91
  width: '100%',
@@ -82,6 +96,7 @@ function MenuTrigger(props, ref) {
82
96
  popover: !isMobile,
83
97
  tray: isMobile,
84
98
  },
99
+ isClosing: !state.isOpen,
85
100
  };
86
101
  const contents = (_jsxs(_Fragment, { children: [_jsx(DismissButton, { onDismiss: state.close }), menu, _jsx(DismissButton, { onDismiss: state.close })] }));
87
102
  // On small screen devices, the menu is rendered in a tray, otherwise a popover.