@cube-dev/ui-kit 0.0.0-canary-8531f8b → 0.0.0-canary-1b26a89

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 (611) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.d.ts +25 -12
  11. package/dist/components/CollectionItem.js +59 -4
  12. package/dist/components/CollectionItem.js.map +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +2 -2
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.d.ts +1 -1
  19. package/dist/components/actions/Banner/Banner.js +1 -1
  20. package/dist/components/actions/Button/Button.js +1 -1
  21. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  22. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  23. package/dist/components/actions/ButtonSplit/context.js +1 -1
  24. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +7 -7
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +246 -280
  26. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  27. package/dist/components/actions/CommandMenu/styled.js +1 -1
  28. package/dist/components/actions/ItemAction/ItemAction.js +26 -22
  29. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  30. package/dist/components/actions/ItemActionContext.d.ts +3 -0
  31. package/dist/components/actions/ItemActionContext.js +15 -13
  32. package/dist/components/actions/ItemActionContext.js.map +1 -1
  33. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  34. package/dist/components/actions/ItemButton/ItemButton.d.ts +2 -2
  35. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  36. package/dist/components/actions/Link/Link.js +1 -1
  37. package/dist/components/actions/Menu/Menu.d.ts +9 -9
  38. package/dist/components/actions/Menu/Menu.js +87 -71
  39. package/dist/components/actions/Menu/Menu.js.map +1 -1
  40. package/dist/components/actions/Menu/MenuCollectionItem.d.ts +18 -0
  41. package/dist/components/actions/Menu/MenuCollectionItem.js +36 -0
  42. package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -0
  43. package/dist/components/actions/Menu/MenuItem.js +395 -78
  44. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  45. package/dist/components/actions/Menu/MenuSection.d.ts +1 -2
  46. package/dist/components/actions/Menu/MenuSection.js +12 -10
  47. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  48. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  49. package/dist/components/actions/Menu/SubMenuTrigger.d.ts +1 -1
  50. package/dist/components/actions/Menu/SubMenuTrigger.js +2 -2
  51. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  52. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  53. package/dist/components/actions/Menu/context.js +1 -1
  54. package/dist/components/actions/Menu/index.d.ts +1 -0
  55. package/dist/components/actions/Menu/styled.js +1 -1
  56. package/dist/components/actions/actions-run.js +1 -1
  57. package/dist/components/actions/index.d.ts +3 -2
  58. package/dist/components/actions/index.js +1 -1
  59. package/dist/components/actions/use-action.js +60 -36
  60. package/dist/components/actions/use-action.js.map +1 -1
  61. package/dist/components/actions/use-anchored-menu.js +1 -1
  62. package/dist/components/actions/use-context-menu.js +1 -1
  63. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  64. package/dist/components/content/Alert/Alert.js +1 -1
  65. package/dist/components/content/Alert/use-alert.js +1 -1
  66. package/dist/components/content/Avatar/Avatar.js +1 -1
  67. package/dist/components/content/Badge/Badge.js +1 -1
  68. package/dist/components/content/Card/Card.js +1 -1
  69. package/dist/components/content/Content.js +1 -1
  70. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  71. package/dist/components/content/CopySnippet/CopySnippet.d.ts +21 -21
  72. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  73. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  74. package/dist/components/content/Divider.js +1 -1
  75. package/dist/components/content/Footer.js +1 -1
  76. package/dist/components/content/Header.js +1 -1
  77. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  78. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  79. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  80. package/dist/components/content/Item/Item.d.ts +7 -7
  81. package/dist/components/content/Item/Item.js +205 -67
  82. package/dist/components/content/Item/Item.js.map +1 -1
  83. package/dist/components/content/Item/ItemWithNativeLinks.js +314 -0
  84. package/dist/components/content/Item/ItemWithNativeLinks.js.map +1 -0
  85. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  86. package/dist/components/content/ItemCard/ItemCard.d.ts +1 -1
  87. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  88. package/dist/components/content/Layout/GridLayout.js +1 -1
  89. package/dist/components/content/Layout/Layout.js +1 -1
  90. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  91. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  92. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  93. package/dist/components/content/Layout/LayoutContent.js +1 -1
  94. package/dist/components/content/Layout/LayoutContext.js +1 -1
  95. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  96. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  97. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  98. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  99. package/dist/components/content/Layout/LayoutPane.js +1 -1
  100. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  101. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  102. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  103. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  104. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  105. package/dist/components/content/Layout/index.js +1 -1
  106. package/dist/components/content/Layout/utils.js +1 -1
  107. package/dist/components/content/Paragraph.js +1 -1
  108. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  109. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  110. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  111. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  112. package/dist/components/content/Result/Result.js +1 -1
  113. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  114. package/dist/components/content/Tag/Tag.js +1 -1
  115. package/dist/components/content/Text.d.ts +14 -14
  116. package/dist/components/content/Text.js +1 -1
  117. package/dist/components/content/TextItem/TextItem.js +1 -1
  118. package/dist/components/content/Title.js +1 -1
  119. package/dist/components/content/Tree/Tree.js +1 -1
  120. package/dist/components/content/Tree/TreeNode.js +1 -1
  121. package/dist/components/content/Tree/styled.js +1 -1
  122. package/dist/components/content/Tree/tree-index.js +1 -1
  123. package/dist/components/content/Tree/types.d.ts +2 -2
  124. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  125. package/dist/components/content/Tree/use-load-data.js +1 -1
  126. package/dist/components/content/highlightText.js +1 -1
  127. package/dist/components/content/use-auto-tooltip.js +1 -1
  128. package/dist/components/data/DataTable/DataTable.js +1 -1
  129. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  130. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  131. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  132. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  133. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  134. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  135. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  136. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  137. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  138. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  139. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  140. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  141. package/dist/components/data/TableBase/RowCollection.js +1 -1
  142. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  143. package/dist/components/data/TableBase/TableRow.js +1 -1
  144. package/dist/components/data/TableBase/TableView.js +1 -1
  145. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  146. package/dist/components/data/TableBase/column-header.js +1 -1
  147. package/dist/components/data/TableBase/column-menu.js +1 -1
  148. package/dist/components/data/TableBase/column-styles.js +1 -1
  149. package/dist/components/data/TableBase/column-tint.js +1 -1
  150. package/dist/components/data/TableBase/row-menu.js +1 -1
  151. package/dist/components/data/TableBase/styled.d.ts +1 -1
  152. package/dist/components/data/TableBase/styled.js +1 -1
  153. package/dist/components/data/TableBase/table-tree.js +1 -1
  154. package/dist/components/data/TableBase/types.js +1 -1
  155. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  156. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  157. package/dist/components/data/TableBase/use-column-order.js +1 -1
  158. package/dist/components/data/TableBase/use-column-window.js +1 -1
  159. package/dist/components/data/TableBase/use-container-width.js +1 -1
  160. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  161. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  162. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  163. package/dist/components/data/TableBase/use-table-search.js +1 -1
  164. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  165. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  166. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  167. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  168. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  169. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  170. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  171. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  172. package/dist/components/fields/Checkbox/context.js +1 -1
  173. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  174. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  175. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  176. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  177. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  178. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  179. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  180. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  181. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  182. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  183. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  184. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  185. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  186. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  187. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  188. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  189. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  190. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  191. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  192. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  193. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  194. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  195. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  196. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  197. package/dist/components/fields/DatePicker/period.js +1 -1
  198. package/dist/components/fields/DatePicker/props.js +1 -1
  199. package/dist/components/fields/DatePicker/utils.js +1 -1
  200. package/dist/components/fields/FileInput/FileInput.js +1 -1
  201. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  202. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +2 -2
  203. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  204. package/dist/components/fields/Input/Input.js +1 -1
  205. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  206. package/dist/components/fields/ListBox/ListBox.js +5 -5
  207. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  208. package/dist/components/fields/ListBox/optionId.js +1 -1
  209. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  210. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  211. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  212. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  213. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  214. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  215. package/dist/components/fields/Picker/Picker.d.ts +2 -2
  216. package/dist/components/fields/Picker/Picker.js +1 -1
  217. package/dist/components/fields/RadioGroup/Radio.d.ts +20 -20
  218. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  219. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  220. package/dist/components/fields/RadioGroup/context.js +1 -1
  221. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  222. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  223. package/dist/components/fields/Select/Select.d.ts +4 -4
  224. package/dist/components/fields/Select/Select.js +6 -6
  225. package/dist/components/fields/Select/Select.js.map +1 -1
  226. package/dist/components/fields/Slider/Gradation.js +1 -1
  227. package/dist/components/fields/Slider/HueSlider.js +1 -1
  228. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  229. package/dist/components/fields/Slider/Slider.js +1 -1
  230. package/dist/components/fields/Slider/SliderBase.js +1 -1
  231. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  232. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  233. package/dist/components/fields/Slider/elements.js +1 -1
  234. package/dist/components/fields/Slider/index.js +1 -1
  235. package/dist/components/fields/Switch/Switch.js +1 -1
  236. package/dist/components/fields/TagInput/TagInput.js +1 -1
  237. package/dist/components/fields/TagInput/TagList.js +1 -1
  238. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  239. package/dist/components/fields/TagInput/useTagError.js +1 -1
  240. package/dist/components/fields/TextArea/TextArea.js +1 -1
  241. package/dist/components/fields/TextInput/TextInput.js +1 -1
  242. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  243. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  244. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  245. package/dist/components/fields/TriggerActions.js +1 -1
  246. package/dist/components/fields/color/ColorPanel.js +1 -1
  247. package/dist/components/fields/color/channels.js +1 -1
  248. package/dist/components/fields/color/color.js +1 -1
  249. package/dist/components/fields/color/context.js +1 -1
  250. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  251. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  252. package/dist/components/form/Form/Field.js +1 -1
  253. package/dist/components/form/Form/Form.js +1 -1
  254. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  255. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  256. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  257. package/dist/components/form/Form/SubmitError.js +1 -1
  258. package/dist/components/form/Form/backend.js +1 -1
  259. package/dist/components/form/Form/index.js +1 -1
  260. package/dist/components/form/Form/modern/actions.js +1 -1
  261. package/dist/components/form/Form/modern/context.js +1 -1
  262. package/dist/components/form/Form/modern/controller.js +1 -1
  263. package/dist/components/form/Form/modern/field-binding.js +1 -1
  264. package/dist/components/form/Form/modern/field.js +1 -1
  265. package/dist/components/form/Form/modern/react.js +1 -1
  266. package/dist/components/form/Form/modern/store.js +1 -1
  267. package/dist/components/form/Form/modern/validation.js +1 -1
  268. package/dist/components/form/Form/modern/values.js +1 -1
  269. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  270. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  271. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  272. package/dist/components/form/Form/use-field/use-field.js +1 -1
  273. package/dist/components/form/Form/use-form.js +1 -1
  274. package/dist/components/form/Form/validation.js +1 -1
  275. package/dist/components/form/Label.js +1 -1
  276. package/dist/components/form/legacy-tooltip.js +1 -1
  277. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  278. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  279. package/dist/components/form/validation/use-validation-props.js +1 -1
  280. package/dist/components/form/wrapper.js +1 -1
  281. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  282. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  283. package/dist/components/layout/Flex.js +1 -1
  284. package/dist/components/layout/Flow.js +1 -1
  285. package/dist/components/layout/Grid.js +1 -1
  286. package/dist/components/layout/Panel.js +1 -1
  287. package/dist/components/layout/Prefix.js +1 -1
  288. package/dist/components/layout/ResizablePanel.js +1 -1
  289. package/dist/components/layout/Space.js +1 -1
  290. package/dist/components/layout/Suffix.js +1 -1
  291. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  292. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  293. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  294. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  295. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  296. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  297. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  298. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  299. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  300. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  301. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  302. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  303. package/dist/components/navigation/Tabs/styled.js +1 -1
  304. package/dist/components/navigation/Tabs/types.d.ts +3 -3
  305. package/dist/components/navigation/Tabs/types.js +1 -1
  306. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  307. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  308. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  309. package/dist/components/other/Calendar/Calendar.js +1 -1
  310. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  311. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  312. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  313. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  314. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  315. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  316. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  317. package/dist/components/other/Calendar/styled.js +1 -1
  318. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  319. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  320. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  321. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  322. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  323. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  324. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  325. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  326. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  327. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  328. package/dist/components/overlays/Dialog/context.js +1 -1
  329. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  330. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  331. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  332. package/dist/components/overlays/Modal/Modal.js +1 -1
  333. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  334. package/dist/components/overlays/Modal/Overlay.js +1 -1
  335. package/dist/components/overlays/Modal/Popover.js +1 -1
  336. package/dist/components/overlays/Modal/Tray.js +1 -1
  337. package/dist/components/overlays/Modal/Underlay.js +1 -1
  338. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  339. package/dist/components/overlays/Notifications/Notification.js +1 -1
  340. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  341. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  342. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  343. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  344. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  345. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  346. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  347. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  348. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  349. package/dist/components/overlays/Notifications/index.js +1 -1
  350. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  351. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  352. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  353. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  354. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  355. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  356. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  357. package/dist/components/overlays/Toast/index.js +1 -1
  358. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  359. package/dist/components/overlays/Toast/useToast.js +1 -1
  360. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  361. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  362. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  363. package/dist/components/overlays/Tooltip/context.js +1 -1
  364. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  365. package/dist/components/portal/Portal.js +1 -1
  366. package/dist/components/portal/PortalProvider.js +1 -1
  367. package/dist/components/portal/usePortal.js +1 -1
  368. package/dist/components/shared/DraggableCollection.js +1 -1
  369. package/dist/components/shared/InvalidIcon.js +1 -1
  370. package/dist/components/shared/ValidIcon.js +1 -1
  371. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  372. package/dist/components/status/Spin/Cube.js +1 -1
  373. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  374. package/dist/components/status/Spin/Spin.js +1 -1
  375. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  376. package/dist/data/item-themes.js +1 -1
  377. package/dist/data/themes.js +1 -1
  378. package/dist/eslint-plugin/defaults.generated.js +2 -2
  379. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  380. package/dist/eslint-plugin/index.js +1 -1
  381. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  382. package/dist/i18n/I18nProvider.js +1 -1
  383. package/dist/i18n/createFormatter.js +1 -1
  384. package/dist/i18n/index.js +1 -1
  385. package/dist/i18n/instance.js +1 -1
  386. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  387. package/dist/i18n/locales/en-US/uikit.js +1 -1
  388. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  389. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  390. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  391. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  392. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  393. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  394. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  395. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  396. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  397. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  398. package/dist/i18n/locales.js +1 -1
  399. package/dist/i18n/namespace.js +1 -1
  400. package/dist/i18n/useFormatter.js +1 -1
  401. package/dist/i18n/useI18n.js +1 -1
  402. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  403. package/dist/icons/AdjustmentsIcon.js +1 -1
  404. package/dist/icons/AiIcon.js +1 -1
  405. package/dist/icons/AreaChartIcon.js +1 -1
  406. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  407. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  408. package/dist/icons/BackwardIcon.js +1 -1
  409. package/dist/icons/BarChartIcon.js +1 -1
  410. package/dist/icons/BellFilledIcon.js +1 -1
  411. package/dist/icons/BellIcon.js +1 -1
  412. package/dist/icons/BooleanIcon.js +1 -1
  413. package/dist/icons/CalendarEditIcon.js +1 -1
  414. package/dist/icons/CalendarIcon.js +1 -1
  415. package/dist/icons/CaretDownIcon.js +1 -1
  416. package/dist/icons/CaretUpIcon.js +1 -1
  417. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  418. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  419. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  420. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  421. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  422. package/dist/icons/ChartBarLineIcon.js +1 -1
  423. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  424. package/dist/icons/ChartBarStackedIcon.js +1 -1
  425. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  426. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  427. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  428. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  429. package/dist/icons/ChartBubbleIcon.js +1 -1
  430. package/dist/icons/ChartDonut2Icon.js +1 -1
  431. package/dist/icons/ChartFunnelIcon.js +1 -1
  432. package/dist/icons/ChartHeatmapIcon.js +1 -1
  433. package/dist/icons/ChartKPIIcon.js +1 -1
  434. package/dist/icons/ChartPie2Icon.js +1 -1
  435. package/dist/icons/ChartScatterIcon.js +1 -1
  436. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  437. package/dist/icons/CheckCircleIcon.js +1 -1
  438. package/dist/icons/CheckIcon.js +1 -1
  439. package/dist/icons/CircleFilledIcon.js +1 -1
  440. package/dist/icons/ClearIcon.js +1 -1
  441. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  442. package/dist/icons/CloseCircleIcon.js +1 -1
  443. package/dist/icons/CloseIcon.js +1 -1
  444. package/dist/icons/CodeIcon.js +1 -1
  445. package/dist/icons/ColumnTotalIcon.js +1 -1
  446. package/dist/icons/CopyIcon.js +1 -1
  447. package/dist/icons/CountIcon.js +1 -1
  448. package/dist/icons/CubeIcon.js +1 -1
  449. package/dist/icons/CubePauseIcon.js +1 -1
  450. package/dist/icons/CubePlayIcon.js +1 -1
  451. package/dist/icons/CurrencyDollarIcon.js +1 -1
  452. package/dist/icons/DangerIcon.js +1 -1
  453. package/dist/icons/DashboardIcon.js +1 -1
  454. package/dist/icons/DatabaseIcon.js +1 -1
  455. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  456. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  457. package/dist/icons/DirectionIcon.js +1 -1
  458. package/dist/icons/DonutIcon.js +1 -1
  459. package/dist/icons/DownIcon.js +1 -1
  460. package/dist/icons/EditIcon.js +1 -1
  461. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  462. package/dist/icons/ExclamationCircleIcon.js +1 -1
  463. package/dist/icons/ExclamationIcon.js +1 -1
  464. package/dist/icons/EyeIcon.js +1 -1
  465. package/dist/icons/EyeInvisibleIcon.js +1 -1
  466. package/dist/icons/FilterIcon.js +1 -1
  467. package/dist/icons/FolderFilledIcon.js +1 -1
  468. package/dist/icons/FolderIcon.js +1 -1
  469. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  470. package/dist/icons/FolderOpenIcon.js +1 -1
  471. package/dist/icons/ForwardIcon.js +1 -1
  472. package/dist/icons/GripVerticalIcon.js +1 -1
  473. package/dist/icons/HierarchyIcon.js +1 -1
  474. package/dist/icons/HierarchyOpenIcon.js +1 -1
  475. package/dist/icons/Icon.js +1 -1
  476. package/dist/icons/InfoCircleIcon.js +1 -1
  477. package/dist/icons/InfoIcon.js +1 -1
  478. package/dist/icons/KeyIcon.js +1 -1
  479. package/dist/icons/LeftIcon.js +1 -1
  480. package/dist/icons/LineChartIcon.js +1 -1
  481. package/dist/icons/LoadingIcon.js +1 -1
  482. package/dist/icons/LockFilledIcon.js +1 -1
  483. package/dist/icons/LockIcon.js +1 -1
  484. package/dist/icons/MoreIcon.js +1 -1
  485. package/dist/icons/NotAllowedIcon.js +1 -1
  486. package/dist/icons/Number123Icon.js +1 -1
  487. package/dist/icons/NumberIcon.js +1 -1
  488. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  489. package/dist/icons/PauseCircleIcon.js +1 -1
  490. package/dist/icons/PauseIcon.js +1 -1
  491. package/dist/icons/PercentageIcon.js +1 -1
  492. package/dist/icons/PieChartIcon.js +1 -1
  493. package/dist/icons/PipetteIcon.js +1 -1
  494. package/dist/icons/PlayCircleIcon.js +1 -1
  495. package/dist/icons/PlayIcon.js +1 -1
  496. package/dist/icons/PlusIcon.js +1 -1
  497. package/dist/icons/ProgressBarIcon.js +1 -1
  498. package/dist/icons/ReloadIcon.js +1 -1
  499. package/dist/icons/ReportIcon.js +1 -1
  500. package/dist/icons/ReturnIcon.js +1 -1
  501. package/dist/icons/RightIcon.js +1 -1
  502. package/dist/icons/RowTotalsIcon.js +1 -1
  503. package/dist/icons/SchemeIcon.js +1 -1
  504. package/dist/icons/SearchIcon.js +1 -1
  505. package/dist/icons/SemanticQueryIcon.js +1 -1
  506. package/dist/icons/SettingsIcon.js +1 -1
  507. package/dist/icons/ShieldFilledIcon.js +1 -1
  508. package/dist/icons/ShieldIcon.js +1 -1
  509. package/dist/icons/SlashIcon.js +1 -1
  510. package/dist/icons/SparklesIcon.js +1 -1
  511. package/dist/icons/SqlIcon.js +1 -1
  512. package/dist/icons/StatsIcon.js +1 -1
  513. package/dist/icons/StopIcon.js +1 -1
  514. package/dist/icons/StringIcon.js +1 -1
  515. package/dist/icons/SubtotalsIcon.js +1 -1
  516. package/dist/icons/SwitchIcon.js +1 -1
  517. package/dist/icons/TableIcon.js +1 -1
  518. package/dist/icons/ThumbsDownIcon.js +1 -1
  519. package/dist/icons/ThumbsUpIcon.js +1 -1
  520. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  521. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  522. package/dist/icons/ThunderboltIcon.js +1 -1
  523. package/dist/icons/TimeIcon.js +1 -1
  524. package/dist/icons/TrashIcon.js +1 -1
  525. package/dist/icons/UnlockIcon.js +1 -1
  526. package/dist/icons/UpIcon.js +1 -1
  527. package/dist/icons/UserGroupIcon.js +1 -1
  528. package/dist/icons/UserIcon.js +1 -1
  529. package/dist/icons/UserLockIcon.js +1 -1
  530. package/dist/icons/ViewIcon.js +1 -1
  531. package/dist/icons/WarningFilledIcon.js +1 -1
  532. package/dist/icons/WarningIcon.js +1 -1
  533. package/dist/icons/wrap-icon.js +1 -1
  534. package/dist/index.d.ts +7 -6
  535. package/dist/index.js +1 -1
  536. package/dist/probe/canonicalize.js +1 -1
  537. package/dist/probe/css.js +1 -1
  538. package/dist/probe/index.js +1 -1
  539. package/dist/provider.js +2 -2
  540. package/dist/provider.js.map +1 -1
  541. package/dist/providers/TrackingProvider.js +1 -1
  542. package/dist/providers/navigation-url.js +11 -0
  543. package/dist/providers/navigation-url.js.map +1 -0
  544. package/dist/providers/navigationAdapter.default.js +1 -1
  545. package/dist/providers/use-navigation.js +19 -0
  546. package/dist/providers/use-navigation.js.map +1 -0
  547. package/dist/tokens/all-tokens.js +1 -1
  548. package/dist/tokens/base.js +1 -1
  549. package/dist/tokens/color-seed.js +1 -1
  550. package/dist/tokens/color-theme.js +1 -1
  551. package/dist/tokens/colors.js +1 -1
  552. package/dist/tokens/layout.js +1 -1
  553. package/dist/tokens/lazy-styles.js +1 -1
  554. package/dist/tokens/legacy-color.js +1 -1
  555. package/dist/tokens/palette-config.js +1 -1
  556. package/dist/tokens/palette.js +1 -1
  557. package/dist/tokens/resolve.js +1 -1
  558. package/dist/tokens/shadows.js +1 -1
  559. package/dist/tokens/sizes.js +1 -1
  560. package/dist/tokens/spacing.js +1 -1
  561. package/dist/tokens/typography.js +1 -1
  562. package/dist/utils/ResizeSensor.js +1 -1
  563. package/dist/utils/colors.js +1 -1
  564. package/dist/utils/dotize.js +1 -1
  565. package/dist/utils/is-dev-env.js +1 -1
  566. package/dist/utils/modules.js +1 -1
  567. package/dist/utils/promise.js +1 -1
  568. package/dist/utils/raf.js +1 -1
  569. package/dist/utils/random.js +1 -1
  570. package/dist/utils/range.js +1 -1
  571. package/dist/utils/react/RenderCache.js +1 -1
  572. package/dist/utils/react/Slots.js +1 -1
  573. package/dist/utils/react/chain.js +1 -1
  574. package/dist/utils/react/disabledProps.js +1 -1
  575. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  576. package/dist/utils/react/index.js +1 -1
  577. package/dist/utils/react/interactions.js +1 -1
  578. package/dist/utils/react/isTextOnly.js +1 -1
  579. package/dist/utils/react/mapProps.js +1 -1
  580. package/dist/utils/react/mergeProps.js +1 -1
  581. package/dist/utils/react/nullableValue.js +1 -1
  582. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  583. package/dist/utils/react/programmaticFocus.js +1 -1
  584. package/dist/utils/react/resolveIcon.js +1 -1
  585. package/dist/utils/react/sharedStore.js +1 -1
  586. package/dist/utils/react/useBufferedValue.js +1 -1
  587. package/dist/utils/react/useCombinedRefs.js +1 -1
  588. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  589. package/dist/utils/react/useEventBus.js +1 -1
  590. package/dist/utils/react/useId.js +1 -1
  591. package/dist/utils/react/useIsDarwin.js +1 -1
  592. package/dist/utils/react/useKeySymbols.js +1 -1
  593. package/dist/utils/react/useLayoutEffect.js +1 -1
  594. package/dist/utils/react/useLocalStorage.js +1 -1
  595. package/dist/utils/react/useMergeStyles.js +1 -1
  596. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  597. package/dist/utils/react/usePopoverSync.js +1 -1
  598. package/dist/utils/react/useQaProps.js +1 -1
  599. package/dist/utils/react/useScheme.js +1 -1
  600. package/dist/utils/react/useViewportSize.js +1 -1
  601. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  602. package/dist/utils/selection.js +1 -1
  603. package/dist/utils/styles.js +1 -1
  604. package/dist/utils/tree.js +1 -1
  605. package/dist/utils/warnings.js +1 -1
  606. package/dist/version.js +2 -2
  607. package/docs/Usage.md +4 -0
  608. package/docs/components/CollectionItem.md +5 -1
  609. package/docs/components/actions/CommandMenu.md +46 -18
  610. package/docs/components/actions/Menu.md +124 -19
  611. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-8531f8b | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-1b26a89 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
- import { _CollectionItem } from "../../CollectionItem.js";
5
4
  import { useMenuContext } from "./context.js";
5
+ import { _MenuCollectionItem, getMenuItemReactKey } from "./MenuCollectionItem.js";
6
6
  import { MenuItem } from "./MenuItem.js";
7
7
  import { StyledDivider, StyledFooter, StyledHeader, StyledMenu, StyledMenuWrapper } from "./styled.js";
8
8
  import { MenuSection } from "./MenuSection.js";
@@ -14,11 +14,11 @@ import React from "react";
14
14
  import { jsx, jsxs } from "react/jsx-runtime";
15
15
  import { useMenu } from "react-aria";
16
16
  import { Section, useTreeState } from "react-stately";
17
- import { useObjectRef, useSyncRef } from "@react-aria/utils";
17
+ import { isFocusable, useObjectRef, useSyncRef } from "@react-aria/utils";
18
18
 
19
19
  //#region src/components/actions/Menu/Menu.tsx
20
20
  function Menu(props, ref) {
21
- const $ = c(20);
21
+ const $ = c(14);
22
22
  const { header, footer, menuStyles, headerStyles, footerStyles, itemStyles, sectionStyles, sectionHeadingStyles, size: t0, qa, selectedKeys, defaultSelectedKeys, onSelectionChange, onAction, ...rest } = props;
23
23
  const size = t0 === void 0 ? "medium" : t0;
24
24
  const domRef = useObjectRef(ref);
@@ -48,106 +48,121 @@ function Menu(props, ref) {
48
48
  });
49
49
  const collectionItems = [...state.collection];
50
50
  const hasSections = collectionItems.some(_temp3);
51
- const { menuProps } = useMenu(completeProps, state, domRef);
52
- let t2;
53
- if ($[2] !== completeProps) {
54
- t2 = extractStyles(completeProps, CONTAINER_STYLES);
55
- $[2] = completeProps;
56
- $[3] = t2;
57
- } else t2 = $[3];
58
- const styles = t2;
59
- let t3;
60
- if ($[4] !== completeProps) {
61
- t3 = filterBaseProps(completeProps);
62
- $[4] = completeProps;
63
- $[5] = t3;
64
- } else t3 = $[5];
65
- const t4 = t3;
66
- let wrapperProps;
67
- if ($[6] !== t4) {
68
- const { id: _id, "aria-label": _ariaLabel, "aria-labelledby": _ariaLabelledBy, "aria-describedby": _ariaDescribedBy, "aria-details": _ariaDetails, ...t5 } = t4;
69
- wrapperProps = t5;
70
- $[6] = t4;
71
- $[7] = wrapperProps;
72
- } else wrapperProps = $[7];
73
- const t5 = completeProps.mods?.popover;
74
- const t6 = !!footer;
75
- const t7 = !!header;
76
- let t8;
77
- if ($[8] !== t5 || $[9] !== t6 || $[10] !== t7) {
78
- t8 = {
79
- popover: t5,
80
- footer: t6,
81
- header: t7
82
- };
83
- $[8] = t5;
84
- $[9] = t6;
85
- $[10] = t7;
86
- $[11] = t8;
87
- } else t8 = $[11];
88
- const wrapperMods = t8;
51
+ const { menuProps } = useMenu({
52
+ ...completeProps,
53
+ onKeyDown: void 0
54
+ }, state, domRef);
55
+ const handleInlineNavigation = (event) => {
56
+ const menu = event.currentTarget;
57
+ const item_0 = event.target.closest("[role^=\"menuitem\"]");
58
+ if (event.defaultPrevented || !item_0 || item_0.closest("[role=\"menu\"]") !== menu || event.altKey || event.ctrlKey || event.metaKey || event.nativeEvent.isComposing || !menu.querySelector("[data-element=\"Actions\"] [role^=\"menuitem\"]")) return;
59
+ const row = item_0.closest("[data-menuitem]");
60
+ if (item_0.closest("[data-element=\"Actions\"]") && (event.key === "PageUp" || event.key === "PageDown" || event.key.length === 1 && event.key !== " ")) {
61
+ row?.querySelector("[data-menu-native-primary]")?.focus();
62
+ return;
63
+ }
64
+ if (event.shiftKey) return;
65
+ const items = Array.from(menu.querySelectorAll("[role^=\"menuitem\"]")).filter((element) => element.closest("[role=\"menu\"]") === menu && !element.hasAttribute("disabled") && element.getAttribute("aria-disabled") !== "true" && isFocusable(element));
66
+ const index = items.indexOf(item_0);
67
+ if (index < 0) return;
68
+ let next;
69
+ if (event.key === "ArrowDown") next = items[index + 1] ?? (completeProps.shouldFocusWrap !== false ? items[0] : void 0);
70
+ else if (event.key === "ArrowUp") next = items[index - 1] ?? (completeProps.shouldFocusWrap !== false ? items.at(-1) : void 0);
71
+ else if (event.key === "Home") next = items[0];
72
+ else if (event.key === "End") next = items.at(-1);
73
+ else if ((event.key === "ArrowRight" || event.key === "ArrowLeft") && row && !item_0.hasAttribute("aria-haspopup")) {
74
+ const rowItems = items.filter((element_0) => element_0.closest("[data-menuitem]") === row);
75
+ const forward = event.key === (getComputedStyle(row).direction === "rtl" ? "ArrowLeft" : "ArrowRight");
76
+ next = rowItems[rowItems.indexOf(item_0) + (forward ? 1 : -1)];
77
+ }
78
+ if (next) {
79
+ event.preventDefault();
80
+ event.stopPropagation();
81
+ next.focus();
82
+ return true;
83
+ }
84
+ };
85
+ const styles = extractStyles(completeProps, CONTAINER_STYLES);
86
+ const { id: _id, "aria-label": _ariaLabel, "aria-labelledby": _ariaLabelledBy, "aria-describedby": _ariaDescribedBy, "aria-details": _ariaDetails, ...wrapperProps } = filterBaseProps(completeProps);
87
+ const wrapperMods = {
88
+ popover: completeProps.mods?.popover,
89
+ footer: !!footer,
90
+ header: !!header
91
+ };
89
92
  const menuMods = { sections: hasSections };
90
93
  useSyncRef(contextProps, domRef);
91
94
  const renderedItems = [];
92
95
  let isFirstSection = true;
93
- collectionItems.forEach((item_0) => {
94
- if (item_0.type === "section") {
96
+ collectionItems.forEach((item_1) => {
97
+ const reactKey = getMenuItemReactKey(item_1.key);
98
+ if (item_1.type === "section") {
95
99
  if (!isFirstSection) renderedItems.push(/* @__PURE__ */ jsx(StyledDivider, {
96
100
  role: "separator",
97
101
  "aria-orientation": "horizontal"
98
- }, `divider-${String(item_0.key)}`));
102
+ }, `divider-${reactKey}`));
99
103
  renderedItems.push(/* @__PURE__ */ jsx(MenuSection, {
100
- item: item_0,
104
+ item: item_1,
101
105
  state,
102
106
  styles: sectionStyles,
103
107
  itemStyles,
104
108
  headingStyles: sectionHeadingStyles,
105
109
  size
106
- }, item_0.key));
110
+ }, reactKey));
107
111
  isFirstSection = false;
108
112
  return;
109
113
  }
110
114
  let menuItem = /* @__PURE__ */ jsx(MenuItem, {
111
- item: item_0,
115
+ item: item_1,
112
116
  state,
113
117
  styles: itemStyles,
114
118
  size
115
- }, item_0.key);
116
- if (item_0.props?.wrapper) menuItem = item_0.props.wrapper(menuItem);
117
- else if (item_0.wrapper) menuItem = item_0.wrapper(menuItem);
118
- renderedItems.push(React.cloneElement(menuItem, { key: item_0.key }));
119
+ }, reactKey);
120
+ if (item_1.props?.wrapper) menuItem = item_1.props.wrapper(menuItem);
121
+ else if (item_1.wrapper) menuItem = item_1.wrapper(menuItem);
122
+ renderedItems.push(React.cloneElement(menuItem, { key: reactKey }));
119
123
  });
120
- let t9;
121
- if ($[12] !== header || $[13] !== headerStyles || $[14] !== size) {
122
- t9 = header ? /* @__PURE__ */ jsx(StyledHeader, {
124
+ let t2;
125
+ if ($[2] !== header || $[3] !== headerStyles || $[4] !== size) {
126
+ t2 = header ? /* @__PURE__ */ jsx(StyledHeader, {
123
127
  "data-size": size,
124
128
  styles: headerStyles,
125
129
  children: header
126
130
  }) : /* @__PURE__ */ jsx("div", { role: "presentation" });
127
- $[12] = header;
128
- $[13] = headerStyles;
129
- $[14] = size;
130
- $[15] = t9;
131
- } else t9 = $[15];
132
- let t10;
133
- if ($[16] !== footer || $[17] !== footerStyles || $[18] !== size) {
134
- t10 = footer ? /* @__PURE__ */ jsx(StyledFooter, {
131
+ $[2] = header;
132
+ $[3] = headerStyles;
133
+ $[4] = size;
134
+ $[5] = t2;
135
+ } else t2 = $[5];
136
+ let t3;
137
+ if ($[6] !== completeProps || $[7] !== handleInlineNavigation || $[8] !== menuProps) {
138
+ t3 = (event_0) => {
139
+ completeProps.onKeyDown?.(event_0);
140
+ if (!event_0.defaultPrevented && !handleInlineNavigation(event_0)) menuProps.onKeyDown?.(event_0);
141
+ };
142
+ $[6] = completeProps;
143
+ $[7] = handleInlineNavigation;
144
+ $[8] = menuProps;
145
+ $[9] = t3;
146
+ } else t3 = $[9];
147
+ let t4;
148
+ if ($[10] !== footer || $[11] !== footerStyles || $[12] !== size) {
149
+ t4 = footer ? /* @__PURE__ */ jsx(StyledFooter, {
135
150
  "data-size": size,
136
151
  styles: footerStyles,
137
152
  children: footer
138
153
  }) : /* @__PURE__ */ jsx("div", { role: "presentation" });
139
- $[16] = footer;
140
- $[17] = footerStyles;
141
- $[18] = size;
142
- $[19] = t10;
143
- } else t10 = $[19];
154
+ $[10] = footer;
155
+ $[11] = footerStyles;
156
+ $[12] = size;
157
+ $[13] = t4;
158
+ } else t4 = $[13];
144
159
  return /* @__PURE__ */ jsxs(StyledMenuWrapper, {
145
160
  qa,
146
161
  styles,
147
162
  mods: wrapperMods,
148
163
  ...wrapperProps,
149
164
  children: [
150
- t9,
165
+ t2,
151
166
  /* @__PURE__ */ jsx(StyledMenu, {
152
167
  ...mergeProps$1({
153
168
  styles: menuStyles,
@@ -155,10 +170,11 @@ function Menu(props, ref) {
155
170
  mods: menuMods
156
171
  }, menuProps),
157
172
  ref: domRef,
173
+ onKeyDown: t3,
158
174
  role: menuProps.role ?? "menu",
159
175
  children: renderedItems
160
176
  }),
161
- t10
177
+ t4
162
178
  ]
163
179
  });
164
180
  }
@@ -174,7 +190,7 @@ function _temp(key) {
174
190
  const _Menu = React.forwardRef(Menu);
175
191
  const Section$1 = Object.assign(Section, { displayName: "Section" });
176
192
  const __Menu = Object.assign(_Menu, {
177
- Item: _CollectionItem,
193
+ Item: _MenuCollectionItem,
178
194
  Section: Section$1,
179
195
  SubMenuTrigger,
180
196
  Trigger: _MenuTrigger,
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["useObjectRef","useSyncRef","CollectionChildren","FocusStrategy","ItemProps","Key","BasePropsWithoutChildren","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","ReactElement","ReactNode","Ref","AriaMenuProps","useMenu","Section","BaseSection","useTreeState","mergeProps","extractStyles","CollectionItem","useMenuContext","MenuItem","MenuSection","MenuTrigger","StyledDivider","StyledFooter","StyledHeader","StyledMenu","StyledMenuWrapper","SubMenuTrigger","CubeMenuProps","Omit","T","children","onAction","key","header","footer","menuStyles","headerStyles","footerStyles","styles","itemStyles","sectionStyles","sectionHeadingStyles","shouldFocusWrap","autoFocus","shouldUseVirtualFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","keys","Menu","props","ref","$","_c","t0","qa","rest","undefined","domRef","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","state","collection","getKeys","map","_temp","_temp2","t1","key_1","completeProps","collectionItems","hasSections","some","_temp3","menuProps","t2","t3","t4","Record","wrapperProps","id","_id","_ariaLabel","_ariaLabelledBy","_ariaDescribedBy","_ariaDetails","t5","mods","popover","t6","t7","t8","wrapperMods","menuMods","sections","renderedItems","isFirstSection","forEach","item_0","item","type","push","String","menuItem","wrapper","cloneElement","t9","t10","role","key_0","_Menu","forwardRef","RefAttributes","HTMLUListElement","SectionComponent","Object","assign","displayName","__MenuComponent","Item","Trigger","__Menu"],"sources":["../../../../src/components/actions/Menu/Menu.tsx"],"sourcesContent":["import { useObjectRef, useSyncRef } from '@react-aria/utils';\nimport {\n CollectionChildren,\n FocusStrategy,\n ItemProps,\n Key,\n} from '@react-types/shared';\nimport {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n} from '@tenphi/tasty';\nimport React, { ReactElement, ReactNode, Ref } from 'react';\nimport { AriaMenuProps, useMenu } from 'react-aria';\nimport { Section as BaseSection, useTreeState } from 'react-stately';\n\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { CollectionItem } from '../../CollectionItem';\n\nimport { useMenuContext } from './context';\nimport { MenuItem } from './MenuItem';\nimport { MenuSection } from './MenuSection';\nimport { MenuTrigger } from './MenuTrigger';\nimport {\n StyledDivider,\n StyledFooter,\n StyledHeader,\n StyledMenu,\n StyledMenuWrapper,\n} from './styled';\nimport { SubMenuTrigger } from './SubMenuTrigger';\n\nexport interface CubeMenuProps<T>\n extends BasePropsWithoutChildren,\n ContainerStyleProps,\n Omit<\n AriaMenuProps<T>,\n | 'children'\n | 'onAction'\n | 'selectedKeys'\n | 'defaultSelectedKeys'\n | 'onSelectionChange'\n > {\n children?: ReactNode | CollectionChildren<T>;\n onAction?: (key: Key) => void;\n // @deprecated\n header?: ReactNode;\n footer?: ReactNode;\n menuStyles?: Styles;\n headerStyles?: Styles;\n footerStyles?: Styles;\n styles?: Styles;\n itemStyles?: Styles;\n sectionStyles?: Styles;\n sectionHeadingStyles?: Styles;\n /**\n * Whether keyboard navigation should wrap around when reaching the start/end of the collection.\n * This directly maps to the `shouldFocusWrap` option supported by React-Aria's `useMenu` hook.\n */\n shouldFocusWrap?: boolean;\n\n /**\n * Whether the menu should automatically receive focus when it mounts.\n * This directly maps to the `autoFocus` option supported by React-Aria's `useMenu` hook.\n */\n autoFocus?: boolean | FocusStrategy;\n shouldUseVirtualFocus?: boolean;\n\n /** Size of the menu items */\n size?: 'medium' | 'large' | (string & {});\n\n /** Currently selected keys (controlled) */\n selectedKeys?: string[];\n /** Initially selected keys (uncontrolled) */\n defaultSelectedKeys?: string[];\n /** Handler for selection changes */\n onSelectionChange?: (keys: string[]) => void;\n}\n\nfunction Menu<T extends object>(\n props: CubeMenuProps<T>,\n ref: Ref<HTMLUListElement>,\n) {\n const {\n header,\n footer,\n menuStyles,\n headerStyles,\n footerStyles,\n itemStyles,\n sectionStyles,\n sectionHeadingStyles,\n size = 'medium',\n qa,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n onAction,\n ...rest\n } = props;\n const domRef = useObjectRef(ref);\n const contextProps = useMenuContext();\n\n // Convert string[] to Set<Key> for React Aria compatibility\n const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : undefined;\n const ariaDefaultSelectedKeys = defaultSelectedKeys\n ? new Set(defaultSelectedKeys)\n : undefined;\n\n const handleSelectionChange = onSelectionChange\n ? (keys: any) => {\n if (keys === 'all') {\n // Handle 'all' selection case - collect all available keys\n const allKeys = Array.from(state.collection.getKeys()).map(\n (key: any) => String(key),\n );\n onSelectionChange(allKeys);\n } else if (keys instanceof Set) {\n onSelectionChange(Array.from(keys).map((key) => String(key)));\n } else {\n onSelectionChange([]);\n }\n }\n : undefined;\n\n const completeProps = mergeProps(contextProps, rest, {\n onAction: onAction ? (key: Key) => onAction(key) : undefined,\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Props used for collection building.\n const state = useTreeState({\n ...completeProps,\n children: completeProps.children as CollectionChildren<T>,\n });\n const collectionItems = [...state.collection];\n const hasSections = collectionItems.some((item) => item.type === 'section');\n\n const { menuProps } = useMenu(completeProps, state, domRef);\n const styles = extractStyles(completeProps, CONTAINER_STYLES);\n\n // `useMenu` already put the id and the name on the `menu` list. Repeated on\n // the wrapper, the id is a duplicate — a trigger's `aria-controls` finds the\n // wrapper first — and the name labels a plain `div`.\n const {\n id: _id,\n 'aria-label': _ariaLabel,\n 'aria-labelledby': _ariaLabelledBy,\n 'aria-describedby': _ariaDescribedBy,\n 'aria-details': _ariaDetails,\n ...wrapperProps\n } = filterBaseProps(completeProps) as Record<string, unknown>;\n\n const wrapperMods = {\n popover: completeProps.mods?.popover,\n footer: !!footer,\n header: !!header,\n };\n\n const menuMods = {\n sections: hasSections,\n };\n\n // Sync the ref stored in the context object with the menu's DOM ref.\n // `useSyncRef` from @react-aria/utils expects the context object as the\n // first argument to keep it up-to-date, and a ref object as the second.\n useSyncRef(contextProps, domRef);\n\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n collectionItems.forEach((item) => {\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <StyledDivider\n key={`divider-${String(item.key)}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <MenuSection\n key={item.key}\n item={item}\n state={state}\n styles={sectionStyles}\n itemStyles={itemStyles}\n headingStyles={sectionHeadingStyles}\n size={size}\n />,\n );\n\n isFirstSection = false;\n return;\n }\n\n let menuItem = (\n <MenuItem\n key={item.key}\n item={item}\n state={state}\n styles={itemStyles}\n size={size}\n />\n );\n\n // `MenuItem` renders the item's `tooltip` itself — wrapping it in a\n // second provider makes the two tooltips close each other.\n\n // Apply custom wrapper if provided\n if (item.props?.wrapper) {\n menuItem = item.props.wrapper(menuItem);\n } else if ((item as any).wrapper) {\n // Handle wrapper from collection nodes (e.g., SubMenuTrigger)\n menuItem = (item as any).wrapper(menuItem);\n }\n\n // Ensure every child has a stable key, even if the wrapper component didn't set one.\n renderedItems.push(React.cloneElement(menuItem, { key: item.key }));\n });\n\n return (\n <StyledMenuWrapper\n qa={qa}\n styles={styles}\n mods={wrapperMods}\n {...wrapperProps}\n >\n {header ? (\n <StyledHeader data-size={size} styles={headerStyles}>\n {header}\n </StyledHeader>\n ) : (\n <div role=\"presentation\" />\n )}\n <StyledMenu\n {...mergeProps(\n {\n styles: menuStyles,\n 'data-size': size,\n mods: menuMods,\n },\n menuProps,\n )}\n ref={domRef}\n role={menuProps.role ?? 'menu'}\n >\n {renderedItems}\n </StyledMenu>\n {footer ? (\n <StyledFooter data-size={size} styles={footerStyles}>\n {footer}\n </StyledFooter>\n ) : (\n <div role=\"presentation\" />\n )}\n </StyledMenuWrapper>\n );\n}\n\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\n// https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref\nconst _Menu = React.forwardRef(Menu) as <T>(\n props: CubeMenuProps<T> & React.RefAttributes<HTMLUListElement>,\n) => ReactElement;\n\ntype SectionComponent = typeof BaseSection;\n\nconst Section = Object.assign(BaseSection, {\n displayName: 'Section',\n}) as SectionComponent;\n\ntype __MenuComponent = typeof _Menu & {\n Item: typeof CollectionItem;\n Section: typeof Section;\n SubMenuTrigger: typeof SubMenuTrigger;\n Trigger: typeof MenuTrigger;\n};\n\nconst __Menu = Object.assign(_Menu as __MenuComponent, {\n Item: CollectionItem,\n Section,\n SubMenuTrigger,\n Trigger: MenuTrigger,\n displayName: 'Menu',\n});\n\n__Menu.displayName = 'Menu';\n\nexport { __Menu as Menu };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","names":["isFocusable","useObjectRef","useSyncRef","CollectionChildren","FocusStrategy","ItemProps","Key","BasePropsWithoutChildren","CONTAINER_STYLES","ContainerStyleProps","filterBaseProps","Styles","React","KeyboardEvent","ReactElement","ReactNode","Ref","AriaMenuProps","useMenu","Section","BaseSection","useTreeState","mergeProps","extractStyles","useMenuContext","getMenuItemReactKey","MenuCollectionItem","MenuItem","MenuSection","MenuTrigger","StyledDivider","StyledFooter","StyledHeader","StyledMenu","StyledMenuWrapper","SubMenuTrigger","CubeMenuProps","Omit","T","children","onAction","key","header","footer","menuStyles","headerStyles","footerStyles","styles","itemStyles","sectionStyles","sectionHeadingStyles","shouldFocusWrap","autoFocus","shouldUseVirtualFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","keys","Menu","props","ref","$","_c","t0","qa","rest","undefined","domRef","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","state","collection","getKeys","map","_temp","_temp2","t1","key_1","completeProps","collectionItems","hasSections","some","_temp3","menuProps","onKeyDown","handleInlineNavigation","event","menu","currentTarget","item_0","target","HTMLElement","closest","defaultPrevented","item","altKey","ctrlKey","metaKey","nativeEvent","isComposing","querySelector","row","length","focus","shiftKey","items","querySelectorAll","filter","element","hasAttribute","getAttribute","index","indexOf","next","at","rowItems","element_0","forward","getComputedStyle","direction","preventDefault","stopPropagation","id","_id","_ariaLabel","_ariaLabelledBy","_ariaDescribedBy","_ariaDetails","wrapperProps","Record","wrapperMods","popover","mods","menuMods","sections","renderedItems","isFirstSection","forEach","item_1","reactKey","type","push","menuItem","wrapper","cloneElement","t2","t3","event_0","t4","role","key_0","String","_Menu","forwardRef","RefAttributes","HTMLUListElement","SectionComponent","Object","assign","displayName","__MenuComponent","Item","Trigger","__Menu"],"sources":["../../../../src/components/actions/Menu/Menu.tsx"],"sourcesContent":["import { isFocusable, useObjectRef, useSyncRef } from '@react-aria/utils';\nimport {\n CollectionChildren,\n FocusStrategy,\n ItemProps,\n Key,\n} from '@react-types/shared';\nimport {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n} from '@tenphi/tasty';\nimport React, { KeyboardEvent, ReactElement, ReactNode, Ref } from 'react';\nimport { AriaMenuProps, useMenu } from 'react-aria';\nimport { Section as BaseSection, useTreeState } from 'react-stately';\n\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { useMenuContext } from './context';\nimport { getMenuItemReactKey, MenuCollectionItem } from './MenuCollectionItem';\nimport { MenuItem } from './MenuItem';\nimport { MenuSection } from './MenuSection';\nimport { MenuTrigger } from './MenuTrigger';\nimport {\n StyledDivider,\n StyledFooter,\n StyledHeader,\n StyledMenu,\n StyledMenuWrapper,\n} from './styled';\nimport { SubMenuTrigger } from './SubMenuTrigger';\n\nexport interface CubeMenuProps<T>\n extends BasePropsWithoutChildren,\n ContainerStyleProps,\n Omit<\n AriaMenuProps<T>,\n | 'children'\n | 'onAction'\n | 'selectedKeys'\n | 'defaultSelectedKeys'\n | 'onSelectionChange'\n > {\n children?: ReactNode | CollectionChildren<T>;\n onAction?: (key: Key) => void;\n // @deprecated\n header?: ReactNode;\n footer?: ReactNode;\n menuStyles?: Styles;\n headerStyles?: Styles;\n footerStyles?: Styles;\n styles?: Styles;\n itemStyles?: Styles;\n sectionStyles?: Styles;\n sectionHeadingStyles?: Styles;\n /**\n * Whether keyboard navigation should wrap around when reaching the start/end of the collection.\n * This directly maps to the `shouldFocusWrap` option supported by React-Aria's `useMenu` hook.\n */\n shouldFocusWrap?: boolean;\n\n /**\n * Whether the menu should automatically receive focus when it mounts.\n * This directly maps to the `autoFocus` option supported by React-Aria's `useMenu` hook.\n */\n autoFocus?: boolean | FocusStrategy;\n shouldUseVirtualFocus?: boolean;\n\n /** Size of the menu items */\n size?: 'medium' | 'large' | (string & {});\n\n /** Currently selected keys (controlled) */\n selectedKeys?: string[];\n /** Initially selected keys (uncontrolled) */\n defaultSelectedKeys?: string[];\n /** Handler for selection changes */\n onSelectionChange?: (keys: string[]) => void;\n}\n\nfunction Menu<T extends object>(\n props: CubeMenuProps<T>,\n ref: Ref<HTMLUListElement>,\n) {\n const {\n header,\n footer,\n menuStyles,\n headerStyles,\n footerStyles,\n itemStyles,\n sectionStyles,\n sectionHeadingStyles,\n size = 'medium',\n qa,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n onAction,\n ...rest\n } = props;\n const domRef = useObjectRef(ref);\n const contextProps = useMenuContext();\n\n // Convert string[] to Set<Key> for React Aria compatibility\n const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : undefined;\n const ariaDefaultSelectedKeys = defaultSelectedKeys\n ? new Set(defaultSelectedKeys)\n : undefined;\n\n const handleSelectionChange = onSelectionChange\n ? (keys: any) => {\n if (keys === 'all') {\n // Handle 'all' selection case - collect all available keys\n const allKeys = Array.from(state.collection.getKeys()).map(\n (key: any) => String(key),\n );\n onSelectionChange(allKeys);\n } else if (keys instanceof Set) {\n onSelectionChange(Array.from(keys).map((key) => String(key)));\n } else {\n onSelectionChange([]);\n }\n }\n : undefined;\n\n const completeProps = mergeProps(contextProps, rest, {\n onAction: onAction ? (key: Key) => onAction(key) : undefined,\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Props used for collection building.\n const state = useTreeState({\n ...completeProps,\n children: completeProps.children as CollectionChildren<T>,\n });\n const collectionItems = [...state.collection];\n const hasSections = collectionItems.some((item) => item.type === 'section');\n\n const { menuProps } = useMenu(\n { ...completeProps, onKeyDown: undefined },\n state,\n domRef,\n );\n const handleInlineNavigation = (event: KeyboardEvent<HTMLUListElement>) => {\n const menu = event.currentTarget;\n const item = (event.target as HTMLElement).closest<HTMLElement>(\n '[role^=\"menuitem\"]',\n );\n if (\n event.defaultPrevented ||\n !item ||\n item.closest('[role=\"menu\"]') !== menu ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.nativeEvent.isComposing ||\n !menu.querySelector('[data-element=\"Actions\"] [role^=\"menuitem\"]')\n )\n return;\n const row = item.closest<HTMLElement>('[data-menuitem]');\n // Search and page navigation remain owned by the Aria collection of rows.\n if (\n item.closest('[data-element=\"Actions\"]') &&\n (event.key === 'PageUp' ||\n event.key === 'PageDown' ||\n (event.key.length === 1 && event.key !== ' '))\n ) {\n row?.querySelector<HTMLElement>('[data-menu-native-primary]')?.focus();\n return;\n }\n if (event.shiftKey) return;\n const items = Array.from(\n menu.querySelectorAll<HTMLElement>('[role^=\"menuitem\"]'),\n ).filter(\n (element) =>\n element.closest('[role=\"menu\"]') === menu &&\n !element.hasAttribute('disabled') &&\n element.getAttribute('aria-disabled') !== 'true' &&\n isFocusable(element),\n );\n const index = items.indexOf(item);\n if (index < 0) return;\n let next: HTMLElement | undefined;\n if (event.key === 'ArrowDown')\n next =\n items[index + 1] ??\n (completeProps.shouldFocusWrap !== false ? items[0] : undefined);\n else if (event.key === 'ArrowUp')\n next =\n items[index - 1] ??\n (completeProps.shouldFocusWrap !== false ? items.at(-1) : undefined);\n else if (event.key === 'Home') next = items[0];\n else if (event.key === 'End') next = items.at(-1);\n else if (\n (event.key === 'ArrowRight' || event.key === 'ArrowLeft') &&\n row &&\n !item.hasAttribute('aria-haspopup')\n ) {\n const rowItems = items.filter(\n (element) => element.closest('[data-menuitem]') === row,\n );\n const forward =\n event.key ===\n (getComputedStyle(row).direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight');\n next = rowItems[rowItems.indexOf(item) + (forward ? 1 : -1)];\n }\n if (next) {\n event.preventDefault();\n event.stopPropagation();\n next.focus();\n return true;\n }\n };\n const styles = extractStyles(completeProps, CONTAINER_STYLES);\n\n // `useMenu` already put the id and the name on the `menu` list. Repeated on\n // the wrapper, the id is a duplicate — a trigger's `aria-controls` finds the\n // wrapper first — and the name labels a plain `div`.\n const {\n id: _id,\n 'aria-label': _ariaLabel,\n 'aria-labelledby': _ariaLabelledBy,\n 'aria-describedby': _ariaDescribedBy,\n 'aria-details': _ariaDetails,\n ...wrapperProps\n } = filterBaseProps(completeProps) as Record<string, unknown>;\n\n const wrapperMods = {\n popover: completeProps.mods?.popover,\n footer: !!footer,\n header: !!header,\n };\n\n const menuMods = {\n sections: hasSections,\n };\n\n // Sync the ref stored in the context object with the menu's DOM ref.\n // `useSyncRef` from @react-aria/utils expects the context object as the\n // first argument to keep it up-to-date, and a ref object as the second.\n useSyncRef(contextProps, domRef);\n\n const renderedItems: React.ReactNode[] = [];\n let isFirstSection = true;\n\n collectionItems.forEach((item) => {\n const reactKey = getMenuItemReactKey(item.key);\n if (item.type === 'section') {\n if (!isFirstSection) {\n renderedItems.push(\n <StyledDivider\n key={`divider-${reactKey}`}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />,\n );\n }\n\n renderedItems.push(\n <MenuSection\n key={reactKey}\n item={item}\n state={state}\n styles={sectionStyles}\n itemStyles={itemStyles}\n headingStyles={sectionHeadingStyles}\n size={size}\n />,\n );\n\n isFirstSection = false;\n return;\n }\n\n let menuItem = (\n <MenuItem\n key={reactKey}\n item={item}\n state={state}\n styles={itemStyles}\n size={size}\n />\n );\n\n // `MenuItem` renders the item's `tooltip` itself — wrapping it in a\n // second provider makes the two tooltips close each other.\n\n // Apply custom wrapper if provided\n if (item.props?.wrapper) {\n menuItem = item.props.wrapper(menuItem);\n } else if ((item as any).wrapper) {\n // Handle wrapper from collection nodes (e.g., SubMenuTrigger)\n menuItem = (item as any).wrapper(menuItem);\n }\n\n // Ensure every child has a stable key, even if the wrapper component didn't set one.\n renderedItems.push(React.cloneElement(menuItem, { key: reactKey }));\n });\n\n return (\n <StyledMenuWrapper\n qa={qa}\n styles={styles}\n mods={wrapperMods}\n {...wrapperProps}\n >\n {header ? (\n <StyledHeader data-size={size} styles={headerStyles}>\n {header}\n </StyledHeader>\n ) : (\n <div role=\"presentation\" />\n )}\n <StyledMenu\n {...mergeProps(\n {\n styles: menuStyles,\n 'data-size': size,\n mods: menuMods,\n },\n menuProps,\n )}\n ref={domRef}\n onKeyDown={(event) => {\n completeProps.onKeyDown?.(event);\n if (!event.defaultPrevented && !handleInlineNavigation(event))\n menuProps.onKeyDown?.(event);\n }}\n role={menuProps.role ?? 'menu'}\n >\n {renderedItems}\n </StyledMenu>\n {footer ? (\n <StyledFooter data-size={size} styles={footerStyles}>\n {footer}\n </StyledFooter>\n ) : (\n <div role=\"presentation\" />\n )}\n </StyledMenuWrapper>\n );\n}\n\n// forwardRef doesn't support generic parameters, so cast the result to the correct type\n// https://stackoverflow.com/questions/58469229/react-with-typescript-generics-while-using-react-forwardref\nconst _Menu = React.forwardRef(Menu) as <T>(\n props: CubeMenuProps<T> & React.RefAttributes<HTMLUListElement>,\n) => ReactElement;\n\ntype SectionComponent = typeof BaseSection;\n\nconst Section = Object.assign(BaseSection, {\n displayName: 'Section',\n}) as SectionComponent;\n\ntype __MenuComponent = typeof _Menu & {\n Item: typeof MenuCollectionItem;\n Section: typeof Section;\n SubMenuTrigger: typeof SubMenuTrigger;\n Trigger: typeof MenuTrigger;\n};\n\nconst __Menu = Object.assign(_Menu as __MenuComponent, {\n Item: MenuCollectionItem,\n Section,\n SubMenuTrigger,\n Trigger: MenuTrigger,\n displayName: 'Menu',\n});\n\n__Menu.displayName = 'Menu';\n\nexport { __Menu as Menu };\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+
2
+ import { NavigateOptions, To } from "../../../providers/navigation.types.js";
3
+ import { CubeCollectionItemBaseProps, _CollectionItem } from "../../CollectionItem.js";
4
+ import { ReactElement } from "react";
5
+ import { Key as Key$1, LinkDOMProps } from "@react-types/shared";
6
+
7
+ //#region src/components/actions/Menu/MenuCollectionItem.d.ts
8
+ interface CubeMenuItemProps<T> extends CubeCollectionItemBaseProps<T>, LinkDOMProps {
9
+ /** Application destination. Takes precedence over href. */
10
+ to?: To;
11
+ navigationOptions?: NavigateOptions;
12
+ [key: string]: any;
13
+ }
14
+ declare function MenuCollectionItem<T>(_props: CubeMenuItemProps<T>): ReactElement | null;
15
+ declare const _MenuCollectionItem: typeof MenuCollectionItem & Pick<typeof _CollectionItem, 'Action' | 'Badge'>;
16
+ //#endregion
17
+ export { CubeMenuItemProps, _MenuCollectionItem };
18
+ //# sourceMappingURL=MenuCollectionItem.d.ts.map
@@ -0,0 +1,36 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-1b26a89 | Cube Dev Team */
2
+ import { parseTo } from "../use-action.js";
3
+ import { COLLECTION_ITEM_CLICK, _CollectionItem } from "../../CollectionItem.js";
4
+ import { Item } from "react-stately";
5
+
6
+ //#region src/components/actions/Menu/MenuCollectionItem.tsx
7
+ const CURRENT_DOCUMENT_LINK = Symbol("Menu.Item current document");
8
+ function getMenuItemReactKey(key) {
9
+ return `${typeof key}:${String(key)}`;
10
+ }
11
+ function MenuCollectionItem(_props) {
12
+ return null;
13
+ }
14
+ const _MenuCollectionItem = Object.assign(MenuCollectionItem, {
15
+ Action: _CollectionItem.Action,
16
+ Badge: _CollectionItem.Badge,
17
+ getCollectionNode(props, context) {
18
+ const { newTab } = parseTo(props.to);
19
+ const isCurrentDocument = props.to == null && props.href === "";
20
+ const isLink = props.to !== "" && (props.to != null || props.href != null);
21
+ return Item.getCollectionNode({
22
+ ...props,
23
+ isDisabled: props.isDisabled ?? (props.isLoading ? true : void 0),
24
+ href: props.to === "" ? void 0 : props.to != null ? "." : isCurrentDocument ? "." : props.href,
25
+ [CURRENT_DOCUMENT_LINK]: isCurrentDocument,
26
+ onClick: isLink ? void 0 : props.onClick,
27
+ [COLLECTION_ITEM_CLICK]: isLink ? props.onClick : void 0,
28
+ target: newTab ? "_blank" : props.target,
29
+ rel: newTab ? props.rel ?? "noopener noreferrer" : props.rel
30
+ }, context);
31
+ }
32
+ });
33
+
34
+ //#endregion
35
+ export { CURRENT_DOCUMENT_LINK, _MenuCollectionItem, getMenuItemReactKey };
36
+ //# sourceMappingURL=MenuCollectionItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuCollectionItem.js","names":["ReactElement","Item","NavigateOptions","To","COLLECTION_ITEM_CLICK","CollectionItem","CubeCollectionItemBaseProps","parseTo","Key","LinkDOMProps","CubeMenuItemProps","T","to","navigationOptions","key","CURRENT_DOCUMENT_LINK","Symbol","getMenuItemReactKey","String","MenuCollectionItem","_props","_MenuCollectionItem","Pick","Object","assign","Action","Badge","getCollectionNode","props","context","newTab","isCurrentDocument","href","isLink","isDisabled","isLoading","undefined","onClick","target","rel"],"sources":["../../../../src/components/actions/Menu/MenuCollectionItem.tsx"],"sourcesContent":["import { ReactElement } from 'react';\nimport { Item } from 'react-stately';\n\nimport { NavigateOptions, To } from '../../../providers/navigation.types';\nimport {\n COLLECTION_ITEM_CLICK,\n CollectionItem,\n CubeCollectionItemBaseProps,\n} from '../../CollectionItem';\nimport { parseTo } from '../use-action';\n\nimport type { Key, LinkDOMProps } from '@react-types/shared';\n\nexport interface CubeMenuItemProps<T>\n extends CubeCollectionItemBaseProps<T>,\n LinkDOMProps {\n /** Application destination. Takes precedence over href. */\n to?: To;\n navigationOptions?: NavigateOptions;\n [key: string]: any;\n}\n\n// Aria recognizes links by a truthy collection href; preserve the native empty URL.\nexport const CURRENT_DOCUMENT_LINK = Symbol('Menu.Item current document');\n\nexport function getMenuItemReactKey(key: Key): string {\n return `${typeof key}:${String(key)}`;\n}\n\nfunction MenuCollectionItem<T>(\n _props: CubeMenuItemProps<T>,\n): ReactElement | null {\n return null;\n}\n\nconst _MenuCollectionItem: typeof MenuCollectionItem &\n Pick<typeof CollectionItem, 'Action' | 'Badge'> = Object.assign(\n MenuCollectionItem,\n {\n Action: CollectionItem.Action,\n Badge: CollectionItem.Badge,\n getCollectionNode<T>(props: CubeMenuItemProps<T>, context: unknown) {\n const { newTab } = parseTo(props.to);\n const isCurrentDocument = props.to == null && props.href === '';\n const isLink =\n props.to !== '' && (props.to != null || props.href != null);\n\n // A private href marks links for Aria; the row resolves the actual `to`.\n return (Item as any).getCollectionNode(\n {\n ...props,\n isDisabled: props.isDisabled ?? (props.isLoading ? true : undefined),\n href:\n props.to === ''\n ? undefined\n : props.to != null\n ? '.'\n : isCurrentDocument\n ? '.'\n : props.href,\n [CURRENT_DOCUMENT_LINK]: isCurrentDocument,\n // Selectable items also consume collection onClick; let Menu own it once.\n onClick: isLink ? undefined : props.onClick,\n [COLLECTION_ITEM_CLICK]: isLink ? props.onClick : undefined,\n target: newTab ? '_blank' : props.target,\n rel: newTab ? props.rel ?? 'noopener noreferrer' : props.rel,\n },\n context,\n );\n },\n },\n);\n\nexport { _MenuCollectionItem as MenuCollectionItem };\n"],"mappings":";;;;;;AAuBA,MAAae,wBAAwBC,OAAO,6BAA6B;AAEzE,SAAgBC,oBAAoBH,KAAkB;AACpD,QAAO,GAAG,OAAOA,IAAG,GAAII,OAAOJ,IAAI;;AAGrC,SAASK,mBACPC,QACqB;AACrB,QAAO;;AAGT,MAAMC,sBAC8CE,OAAOC,OACzDL,oBACA;CACEM,QAAQpB,gBAAeoB;CACvBC,OAAOrB,gBAAeqB;CACtBC,kBAAqBC,OAA6BC,SAAkB;EAClE,MAAM,EAAEC,WAAWvB,QAAQqB,MAAMhB,GAAG;EACpC,MAAMmB,oBAAoBH,MAAMhB,MAAM,QAAQgB,MAAMI,SAAS;EAC7D,MAAMC,SACJL,MAAMhB,OAAO,OAAOgB,MAAMhB,MAAM,QAAQgB,MAAMI,QAAQ;AAGxD,SAAQ/B,KAAa0B,kBACnB;GACE,GAAGC;GACHM,YAAYN,MAAMM,eAAeN,MAAMO,YAAY,OAAOC;GAC1DJ,MACEJ,MAAMhB,OAAO,KACTwB,SACAR,MAAMhB,MAAM,OACV,MACAmB,oBACE,MACAH,MAAMI;IACfjB,wBAAwBgB;GAEzBM,SAASJ,SAASG,SAAYR,MAAMS;IACnCjC,wBAAwB6B,SAASL,MAAMS,UAAUD;GAClDE,QAAQR,SAAS,WAAWF,MAAMU;GAClCC,KAAKT,SAASF,MAAMW,OAAO,wBAAwBX,MAAMW;GAC1D,EACDV,QACD;;CAGP,CAAC"}