@cube-dev/ui-kit 0.190.6 → 0.190.8

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 (735) hide show
  1. package/dist/CHANGELOG.md +24 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.d.ts +1 -1
  12. package/dist/components/CollectionItem.js +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 +1 -1
  17. package/dist/components/actions/Action/Action.d.ts +2 -2
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Action/Action.js.map +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.d.ts +2 -2
  22. package/dist/components/actions/Button/Button.js +1 -1
  23. package/dist/components/actions/Button/Button.js.map +1 -1
  24. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  26. package/dist/components/actions/ButtonSplit/context.js +1 -1
  27. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +18 -5
  28. package/dist/components/actions/CommandMenu/CommandMenu.js +207 -197
  29. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  30. package/dist/components/actions/CommandMenu/styled.js +1 -1
  31. package/dist/components/actions/ItemAction/ItemAction.d.ts +2 -1
  32. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  33. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  34. package/dist/components/actions/ItemActionContext.js +1 -1
  35. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  36. package/dist/components/actions/ItemButton/ItemButton.d.ts +3 -3
  37. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  38. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  39. package/dist/components/actions/Link/Link.d.ts +1 -1
  40. package/dist/components/actions/Link/Link.js +1 -1
  41. package/dist/components/actions/Menu/Menu.d.ts +20 -5
  42. package/dist/components/actions/Menu/Menu.js +51 -41
  43. package/dist/components/actions/Menu/Menu.js.map +1 -1
  44. package/dist/components/actions/Menu/MenuItem.js +1 -1
  45. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  46. package/dist/components/actions/Menu/MenuSection.js +2 -3
  47. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  48. package/dist/components/actions/Menu/MenuTrigger.d.ts +42 -3
  49. package/dist/components/actions/Menu/MenuTrigger.js +22 -22
  50. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  51. package/dist/components/actions/Menu/SubMenuTrigger.js +4 -4
  52. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  53. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  54. package/dist/components/actions/Menu/context.d.ts +2 -2
  55. package/dist/components/actions/Menu/context.js +1 -1
  56. package/dist/components/actions/Menu/context.js.map +1 -1
  57. package/dist/components/actions/Menu/styled.js +1 -1
  58. package/dist/components/actions/Menu/styled.js.map +1 -1
  59. package/dist/components/actions/actions-run.js +1 -1
  60. package/dist/components/actions/index.d.ts +1 -1
  61. package/dist/components/actions/index.js +1 -1
  62. package/dist/components/actions/use-action.d.ts +4 -5
  63. package/dist/components/actions/use-action.js +3 -2
  64. package/dist/components/actions/use-action.js.map +1 -1
  65. package/dist/components/actions/use-anchored-menu.js +1 -1
  66. package/dist/components/actions/use-context-menu.js +4 -3
  67. package/dist/components/actions/use-context-menu.js.map +1 -1
  68. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  69. package/dist/components/content/Alert/Alert.js +1 -1
  70. package/dist/components/content/Alert/use-alert.js +1 -1
  71. package/dist/components/content/Avatar/Avatar.js +1 -1
  72. package/dist/components/content/Badge/Badge.js +1 -1
  73. package/dist/components/content/Card/Card.js +1 -1
  74. package/dist/components/content/Content.js +1 -1
  75. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -2
  76. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  77. package/dist/components/content/CopySnippet/CopySnippet.d.ts +964 -6
  78. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  79. package/dist/components/content/Disclosure/Disclosure.d.ts +1 -1
  80. package/dist/components/content/Disclosure/Disclosure.js +69 -67
  81. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  82. package/dist/components/content/Divider.js +1 -1
  83. package/dist/components/content/Footer.js +1 -1
  84. package/dist/components/content/Header.js +1 -1
  85. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  86. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  87. package/dist/components/content/InlineInput/InlineInput.d.ts +2 -2
  88. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  89. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  90. package/dist/components/content/Item/Item.d.ts +3 -3
  91. package/dist/components/content/Item/Item.js +10 -3
  92. package/dist/components/content/Item/Item.js.map +1 -1
  93. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  94. package/dist/components/content/ItemCard/ItemCard.d.ts +1 -1
  95. package/dist/components/content/ItemCard/ItemCard.js +34 -12
  96. package/dist/components/content/ItemCard/ItemCard.js.map +1 -1
  97. package/dist/components/content/Layout/GridLayout.js +1 -1
  98. package/dist/components/content/Layout/Layout.js +1 -1
  99. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  100. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  101. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  102. package/dist/components/content/Layout/LayoutContent.js +1 -1
  103. package/dist/components/content/Layout/LayoutContext.js +1 -1
  104. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  105. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  106. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  107. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  108. package/dist/components/content/Layout/LayoutPane.js +1 -1
  109. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  110. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  111. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  112. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  113. package/dist/components/content/Layout/index.js +1 -1
  114. package/dist/components/content/Layout/utils.js +1 -1
  115. package/dist/components/content/Paragraph.js +1 -1
  116. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  117. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  118. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  119. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  120. package/dist/components/content/Result/Result.d.ts +2 -2
  121. package/dist/components/content/Result/Result.js +1 -1
  122. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  123. package/dist/components/content/Tag/Tag.js +1 -1
  124. package/dist/components/content/Text.js +1 -1
  125. package/dist/components/content/TextItem/TextItem.d.ts +2 -2
  126. package/dist/components/content/TextItem/TextItem.js +1 -1
  127. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  128. package/dist/components/content/Title.js +1 -1
  129. package/dist/components/content/Tree/Tree.js +1 -1
  130. package/dist/components/content/Tree/TreeNode.js +1 -1
  131. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  132. package/dist/components/content/Tree/styled.js +1 -1
  133. package/dist/components/content/Tree/tree-index.js +1 -1
  134. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  135. package/dist/components/content/Tree/use-load-data.js +1 -1
  136. package/dist/components/content/highlightText.js +1 -1
  137. package/dist/components/content/use-auto-tooltip.d.ts +1 -1
  138. package/dist/components/content/use-auto-tooltip.js +1 -1
  139. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  140. package/dist/components/data/DataTable/DataTable.js +1 -1
  141. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  142. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  143. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  144. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  145. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  146. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  147. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  148. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  149. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  150. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  151. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  152. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  153. package/dist/components/data/TableBase/RowCollection.js +1 -1
  154. package/dist/components/data/TableBase/TableHeaderCell.js +3 -2
  155. package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
  156. package/dist/components/data/TableBase/TableRow.js +2 -2
  157. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  158. package/dist/components/data/TableBase/TableView.js +1 -1
  159. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  160. package/dist/components/data/TableBase/column-header.js +1 -1
  161. package/dist/components/data/TableBase/column-menu.d.ts +2 -1
  162. package/dist/components/data/TableBase/column-menu.js +1 -1
  163. package/dist/components/data/TableBase/column-menu.js.map +1 -1
  164. package/dist/components/data/TableBase/column-styles.js +1 -1
  165. package/dist/components/data/TableBase/column-tint.js +1 -1
  166. package/dist/components/data/TableBase/row-menu.js +1 -1
  167. package/dist/components/data/TableBase/styled.d.ts +3 -1
  168. package/dist/components/data/TableBase/styled.js +1 -1
  169. package/dist/components/data/TableBase/table-tree.js +1 -1
  170. package/dist/components/data/TableBase/types.js +1 -1
  171. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  172. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  173. package/dist/components/data/TableBase/use-column-order.js +1 -1
  174. package/dist/components/data/TableBase/use-container-width.js +1 -1
  175. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  176. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  177. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  178. package/dist/components/data/TableBase/use-table-search.js +1 -1
  179. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  180. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  181. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  182. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  183. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  184. package/dist/components/fields/Checkbox/Checkbox.d.ts +7 -14
  185. package/dist/components/fields/Checkbox/Checkbox.js +34 -36
  186. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  187. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +4 -2
  188. package/dist/components/fields/Checkbox/CheckboxGroup.js +7 -7
  189. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  190. package/dist/components/fields/Checkbox/context.js +1 -1
  191. package/dist/components/fields/ColorInput/ColorInput.js +34 -29
  192. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  193. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  194. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  195. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  196. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  197. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  198. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +10 -5
  199. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  200. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  201. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  202. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  203. package/dist/components/fields/DatePicker/DateInput.js +3 -3
  204. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  205. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  206. package/dist/components/fields/DatePicker/DatePicker.d.ts +2 -2
  207. package/dist/components/fields/DatePicker/DatePicker.js +4 -4
  208. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  209. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  210. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  211. package/dist/components/fields/DatePicker/DatePickerInput.js +8 -5
  212. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  213. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  214. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -1
  215. package/dist/components/fields/DatePicker/DateRangePicker.js +76 -72
  216. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  217. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -1
  218. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +357 -323
  219. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  220. package/dist/components/fields/DatePicker/MonthPicker.d.ts +1 -1
  221. package/dist/components/fields/DatePicker/MonthPicker.js +3 -3
  222. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +6 -5
  223. package/dist/components/fields/DatePicker/PeriodPicker.js +6 -5
  224. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  225. package/dist/components/fields/DatePicker/QuarterPicker.d.ts +1 -1
  226. package/dist/components/fields/DatePicker/QuarterPicker.js +3 -3
  227. package/dist/components/fields/DatePicker/TimeInput.d.ts +3 -3
  228. package/dist/components/fields/DatePicker/TimeInput.js +10 -5
  229. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  230. package/dist/components/fields/DatePicker/WeekPicker.d.ts +1 -1
  231. package/dist/components/fields/DatePicker/WeekPicker.js +3 -3
  232. package/dist/components/fields/DatePicker/YearPicker.d.ts +1 -1
  233. package/dist/components/fields/DatePicker/YearPicker.js +3 -3
  234. package/dist/components/fields/DatePicker/index.d.ts +1 -1
  235. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  236. package/dist/components/fields/DatePicker/period.js +1 -1
  237. package/dist/components/fields/DatePicker/props.js +1 -1
  238. package/dist/components/fields/DatePicker/props.js.map +1 -1
  239. package/dist/components/fields/DatePicker/utils.js +1 -1
  240. package/dist/components/fields/FileInput/FileInput.d.ts +2 -6
  241. package/dist/components/fields/FileInput/FileInput.js +1 -1
  242. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  243. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  244. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  245. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +2 -0
  246. package/dist/components/fields/FilterPicker/FilterPicker.js +4 -4
  247. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  248. package/dist/components/fields/Input/Input.js +1 -1
  249. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  250. package/dist/components/fields/ListBox/ListBox.d.ts +1 -1
  251. package/dist/components/fields/ListBox/ListBox.js +5 -10
  252. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  253. package/dist/components/fields/ListBox/optionId.js +1 -1
  254. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +125 -93
  255. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  256. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -1
  257. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  258. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +48 -1
  259. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  260. package/dist/components/fields/NumberInput/NumberInput.d.ts +6 -3
  261. package/dist/components/fields/NumberInput/NumberInput.js +98 -59
  262. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  263. package/dist/components/fields/NumberInput/StepButton.js +1 -3
  264. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  265. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +5 -2
  266. package/dist/components/fields/PasswordInput/PasswordInput.js +7 -7
  267. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  268. package/dist/components/fields/Picker/Picker.d.ts +2 -0
  269. package/dist/components/fields/Picker/Picker.js +4 -4
  270. package/dist/components/fields/Picker/Picker.js.map +1 -1
  271. package/dist/components/fields/RadioGroup/Radio.d.ts +596 -17
  272. package/dist/components/fields/RadioGroup/Radio.js +114 -111
  273. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  274. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +5 -3
  275. package/dist/components/fields/RadioGroup/RadioGroup.js +8 -8
  276. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  277. package/dist/components/fields/RadioGroup/context.js +1 -1
  278. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  279. package/dist/components/fields/SearchInput/SearchInput.d.ts +5 -3
  280. package/dist/components/fields/SearchInput/SearchInput.js +2 -2
  281. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  282. package/dist/components/fields/Select/Select.d.ts +5 -4
  283. package/dist/components/fields/Select/Select.js +3 -3
  284. package/dist/components/fields/Select/Select.js.map +1 -1
  285. package/dist/components/fields/Slider/Gradation.js +1 -1
  286. package/dist/components/fields/Slider/HueSlider.d.ts +1 -1
  287. package/dist/components/fields/Slider/HueSlider.js +1 -1
  288. package/dist/components/fields/Slider/RangeSlider.d.ts +1 -1
  289. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  290. package/dist/components/fields/Slider/Slider.d.ts +1 -1
  291. package/dist/components/fields/Slider/Slider.js +1 -1
  292. package/dist/components/fields/Slider/SliderBase.js +1 -1
  293. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  294. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  295. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  296. package/dist/components/fields/Slider/elements.js +1 -1
  297. package/dist/components/fields/Slider/index.js +1 -1
  298. package/dist/components/fields/Switch/Switch.d.ts +3 -7
  299. package/dist/components/fields/Switch/Switch.js +79 -81
  300. package/dist/components/fields/Switch/Switch.js.map +1 -1
  301. package/dist/components/fields/TagInput/TagInput.js +2 -2
  302. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  303. package/dist/components/fields/TagInput/TagList.js +1 -1
  304. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  305. package/dist/components/fields/TagInput/useTagError.js +1 -1
  306. package/dist/components/fields/TextArea/TextArea.d.ts +11 -3
  307. package/dist/components/fields/TextArea/TextArea.js +7 -8
  308. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  309. package/dist/components/fields/TextInput/TextInput.d.ts +10 -3
  310. package/dist/components/fields/TextInput/TextInput.js +7 -8
  311. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  312. package/dist/components/fields/TextInput/TextInputBase.d.ts +7 -5
  313. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  314. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  315. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  316. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  317. package/dist/components/fields/TriggerActions.js +1 -1
  318. package/dist/components/fields/color/ColorPanel.js +1 -1
  319. package/dist/components/fields/color/channels.js +1 -1
  320. package/dist/components/fields/color/color.js +1 -1
  321. package/dist/components/fields/color/context.js +1 -1
  322. package/dist/components/fields/index.d.ts +1 -1
  323. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  324. package/dist/components/form/Form/Field.js +1 -1
  325. package/dist/components/form/Form/Form.js +1 -1
  326. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  327. package/dist/components/form/Form/ResetButton/ResetButton.d.ts +2 -2
  328. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  329. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  330. package/dist/components/form/Form/SubmitButton/SubmitButton.d.ts +2 -2
  331. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  332. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  333. package/dist/components/form/Form/SubmitError.js +1 -1
  334. package/dist/components/form/Form/backend.js +1 -1
  335. package/dist/components/form/Form/index.d.ts +2 -2
  336. package/dist/components/form/Form/index.js +1 -1
  337. package/dist/components/form/Form/modern/actions.js +1 -1
  338. package/dist/components/form/Form/modern/context.js +1 -1
  339. package/dist/components/form/Form/modern/controller.js +1 -1
  340. package/dist/components/form/Form/modern/field-binding.js +1 -1
  341. package/dist/components/form/Form/modern/field.js +1 -1
  342. package/dist/components/form/Form/modern/react.js +1 -1
  343. package/dist/components/form/Form/modern/store.js +1 -1
  344. package/dist/components/form/Form/modern/validation.js +1 -1
  345. package/dist/components/form/Form/modern/values.js +1 -1
  346. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  347. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  348. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  349. package/dist/components/form/Form/use-field/use-field.js +1 -1
  350. package/dist/components/form/Form/use-form.js +1 -1
  351. package/dist/components/form/Form/validation.js +1 -1
  352. package/dist/components/form/Label.js +1 -1
  353. package/dist/components/form/legacy-tooltip.js +1 -1
  354. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  355. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  356. package/dist/components/form/validation/use-validation-props.js +1 -1
  357. package/dist/components/form/wrapper.js +1 -1
  358. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +8 -2
  359. package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
  360. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  361. package/dist/components/layout/Board/Board.js +1 -1
  362. package/dist/components/layout/Board/BoardProvider.js +1 -1
  363. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  364. package/dist/components/layout/Board/Widget.js +1 -1
  365. package/dist/components/layout/Board/WidgetHost.js +1 -1
  366. package/dist/components/layout/Board/board-context.js +1 -1
  367. package/dist/components/layout/Board/board-store.js +1 -1
  368. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  369. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  370. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  371. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  372. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  373. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  374. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  375. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  376. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  377. package/dist/components/layout/Board/index.js +1 -1
  378. package/dist/components/layout/Board/responsive-utils.js +1 -1
  379. package/dist/components/layout/Board/use-board-layout.js +1 -1
  380. package/dist/components/layout/Board/use-board-registry.js +1 -1
  381. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  382. package/dist/components/layout/Board/use-board-selection.js +1 -1
  383. package/dist/components/layout/Flex.js +1 -1
  384. package/dist/components/layout/Flow.js +1 -1
  385. package/dist/components/layout/Grid.js +1 -1
  386. package/dist/components/layout/Panel.js +1 -1
  387. package/dist/components/layout/Prefix.js +1 -1
  388. package/dist/components/layout/ResizablePanel.js +1 -1
  389. package/dist/components/layout/Space.js +1 -1
  390. package/dist/components/layout/Suffix.js +1 -1
  391. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  392. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  393. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  394. package/dist/components/navigation/Tabs/TabButton.js +387 -379
  395. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  396. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  397. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  398. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  399. package/dist/components/navigation/Tabs/Tabs.d.ts +2 -2
  400. package/dist/components/navigation/Tabs/Tabs.js +2 -2
  401. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  402. package/dist/components/navigation/Tabs/TabsAction.d.ts +1 -1
  403. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  404. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  405. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  406. package/dist/components/navigation/Tabs/styled.js +1 -1
  407. package/dist/components/navigation/Tabs/types.js +1 -1
  408. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  409. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  410. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  411. package/dist/components/other/Calendar/Calendar.js +1 -1
  412. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  413. package/dist/components/other/Calendar/CalendarGrid.js +50 -45
  414. package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
  415. package/dist/components/other/Calendar/CalendarHeader.js +2 -2
  416. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  417. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  418. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  419. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  420. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  421. package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
  422. package/dist/components/other/Calendar/styled.js +1 -1
  423. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  424. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  425. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  426. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  427. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  428. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  429. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  430. package/dist/components/overlays/Dialog/DialogForm.d.ts +1 -1
  431. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  432. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  433. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -1
  434. package/dist/components/overlays/Dialog/DialogTrigger.js +25 -24
  435. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  436. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  437. package/dist/components/overlays/Dialog/context.js +1 -1
  438. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  439. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  440. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  441. package/dist/components/overlays/Modal/Modal.js +1 -1
  442. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  443. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  444. package/dist/components/overlays/Modal/Overlay.d.ts +1 -2
  445. package/dist/components/overlays/Modal/Overlay.js +1 -1
  446. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  447. package/dist/components/overlays/Modal/Popover.d.ts +2 -1
  448. package/dist/components/overlays/Modal/Popover.js +1 -1
  449. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  450. package/dist/components/overlays/Modal/Tray.d.ts +2 -2
  451. package/dist/components/overlays/Modal/Tray.js +1 -1
  452. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  453. package/dist/components/overlays/Modal/Underlay.js +1 -1
  454. package/dist/components/overlays/Modal/index.d.ts +1 -1
  455. package/dist/components/overlays/Modal/types.d.ts +2 -1
  456. package/dist/components/overlays/Notifications/Notification.js +1 -1
  457. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  458. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  459. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  460. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  461. package/dist/components/overlays/Notifications/OverlayContainer.js +116 -91
  462. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  463. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  464. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  465. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  466. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  467. package/dist/components/overlays/Notifications/index.js +1 -1
  468. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  469. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  470. package/dist/components/overlays/Notifications/use-overlay-timers.js +17 -12
  471. package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
  472. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  473. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  474. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  475. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  476. package/dist/components/overlays/Toast/index.js +1 -1
  477. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  478. package/dist/components/overlays/Toast/useToast.js +1 -1
  479. package/dist/components/overlays/Tooltip/Tooltip.js +2 -5
  480. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  481. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  482. package/dist/components/overlays/Tooltip/TooltipTrigger.js +2 -5
  483. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  484. package/dist/components/overlays/Tooltip/context.js +1 -1
  485. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  486. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  487. package/dist/components/portal/Portal.js +1 -1
  488. package/dist/components/portal/PortalProvider.js +1 -1
  489. package/dist/components/portal/usePortal.js +1 -1
  490. package/dist/components/shared/DraggableCollection.js +11 -6
  491. package/dist/components/shared/DraggableCollection.js.map +1 -1
  492. package/dist/components/shared/InvalidIcon.js +1 -1
  493. package/dist/components/shared/ValidIcon.js +1 -1
  494. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  495. package/dist/components/status/Spin/Cube.js +1 -1
  496. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  497. package/dist/components/status/Spin/Spin.js +1 -1
  498. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  499. package/dist/data/item-themes.js +1 -1
  500. package/dist/data/themes.js +1 -1
  501. package/dist/eslint-plugin/defaults.generated.js +5 -1
  502. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  503. package/dist/eslint-plugin/index.js +1 -1
  504. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  505. package/dist/i18n/I18nProvider.js +1 -1
  506. package/dist/i18n/createFormatter.js +1 -1
  507. package/dist/i18n/index.js +1 -1
  508. package/dist/i18n/instance.js +1 -1
  509. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  510. package/dist/i18n/locales/en-US/uikit.js +1 -1
  511. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  512. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  513. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  514. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  515. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  516. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  517. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  518. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  519. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  520. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  521. package/dist/i18n/locales.js +1 -1
  522. package/dist/i18n/useFormatter.js +1 -1
  523. package/dist/i18n/useI18n.js +1 -1
  524. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  525. package/dist/icons/AdjustmentsIcon.js +1 -1
  526. package/dist/icons/AiIcon.js +1 -1
  527. package/dist/icons/AreaChartIcon.js +1 -1
  528. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  529. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  530. package/dist/icons/BackwardIcon.js +1 -1
  531. package/dist/icons/BarChartIcon.js +1 -1
  532. package/dist/icons/BellFilledIcon.js +1 -1
  533. package/dist/icons/BellIcon.js +1 -1
  534. package/dist/icons/BooleanIcon.js +1 -1
  535. package/dist/icons/CalendarEditIcon.js +1 -1
  536. package/dist/icons/CalendarIcon.js +1 -1
  537. package/dist/icons/CaretDownIcon.js +1 -1
  538. package/dist/icons/CaretUpIcon.js +1 -1
  539. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  540. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  541. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  542. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  543. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  544. package/dist/icons/ChartBarLineIcon.js +1 -1
  545. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  546. package/dist/icons/ChartBarStackedIcon.js +1 -1
  547. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  548. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  549. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  550. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  551. package/dist/icons/ChartBubbleIcon.js +1 -1
  552. package/dist/icons/ChartDonut2Icon.js +1 -1
  553. package/dist/icons/ChartFunnelIcon.js +1 -1
  554. package/dist/icons/ChartHeatmapIcon.js +1 -1
  555. package/dist/icons/ChartKPIIcon.js +1 -1
  556. package/dist/icons/ChartPie2Icon.js +1 -1
  557. package/dist/icons/ChartScatterIcon.js +1 -1
  558. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  559. package/dist/icons/CheckCircleIcon.js +1 -1
  560. package/dist/icons/CheckIcon.js +1 -1
  561. package/dist/icons/CircleFilledIcon.js +1 -1
  562. package/dist/icons/ClearIcon.js +1 -1
  563. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  564. package/dist/icons/CloseCircleIcon.js +1 -1
  565. package/dist/icons/CloseIcon.js +1 -1
  566. package/dist/icons/CodeIcon.js +1 -1
  567. package/dist/icons/ColumnTotalIcon.js +1 -1
  568. package/dist/icons/CopyIcon.js +1 -1
  569. package/dist/icons/CountIcon.js +1 -1
  570. package/dist/icons/CubeIcon.js +1 -1
  571. package/dist/icons/CubePauseIcon.js +1 -1
  572. package/dist/icons/CubePlayIcon.js +1 -1
  573. package/dist/icons/CurrencyDollarIcon.js +1 -1
  574. package/dist/icons/DangerIcon.js +1 -1
  575. package/dist/icons/DashboardIcon.js +1 -1
  576. package/dist/icons/DatabaseIcon.js +1 -1
  577. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  578. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  579. package/dist/icons/DirectionIcon.js +1 -1
  580. package/dist/icons/DonutIcon.js +1 -1
  581. package/dist/icons/DownIcon.js +1 -1
  582. package/dist/icons/EditIcon.js +1 -1
  583. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  584. package/dist/icons/ExclamationCircleIcon.js +1 -1
  585. package/dist/icons/ExclamationIcon.js +1 -1
  586. package/dist/icons/EyeIcon.js +1 -1
  587. package/dist/icons/EyeInvisibleIcon.js +1 -1
  588. package/dist/icons/FilterIcon.js +1 -1
  589. package/dist/icons/FolderFilledIcon.js +1 -1
  590. package/dist/icons/FolderIcon.js +1 -1
  591. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  592. package/dist/icons/FolderOpenIcon.js +1 -1
  593. package/dist/icons/ForwardIcon.js +1 -1
  594. package/dist/icons/GripVerticalIcon.js +1 -1
  595. package/dist/icons/HierarchyIcon.js +1 -1
  596. package/dist/icons/HierarchyOpenIcon.js +1 -1
  597. package/dist/icons/Icon.js +1 -1
  598. package/dist/icons/InfoCircleIcon.js +1 -1
  599. package/dist/icons/InfoIcon.js +1 -1
  600. package/dist/icons/KeyIcon.js +1 -1
  601. package/dist/icons/LeftIcon.js +1 -1
  602. package/dist/icons/LineChartIcon.js +1 -1
  603. package/dist/icons/LoadingIcon.js +1 -1
  604. package/dist/icons/LockFilledIcon.js +1 -1
  605. package/dist/icons/LockIcon.js +1 -1
  606. package/dist/icons/MoreIcon.js +1 -1
  607. package/dist/icons/NotAllowedIcon.js +1 -1
  608. package/dist/icons/Number123Icon.js +1 -1
  609. package/dist/icons/NumberIcon.js +1 -1
  610. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  611. package/dist/icons/PauseCircleIcon.js +1 -1
  612. package/dist/icons/PauseIcon.js +1 -1
  613. package/dist/icons/PercentageIcon.js +1 -1
  614. package/dist/icons/PieChartIcon.js +1 -1
  615. package/dist/icons/PipetteIcon.js +1 -1
  616. package/dist/icons/PlayCircleIcon.js +1 -1
  617. package/dist/icons/PlayIcon.js +1 -1
  618. package/dist/icons/PlusIcon.js +1 -1
  619. package/dist/icons/ProgressBarIcon.js +1 -1
  620. package/dist/icons/ReloadIcon.js +1 -1
  621. package/dist/icons/ReportIcon.js +1 -1
  622. package/dist/icons/ReturnIcon.js +1 -1
  623. package/dist/icons/RightIcon.js +1 -1
  624. package/dist/icons/RowTotalsIcon.js +1 -1
  625. package/dist/icons/SchemeIcon.js +1 -1
  626. package/dist/icons/SearchIcon.js +1 -1
  627. package/dist/icons/SemanticQueryIcon.js +1 -1
  628. package/dist/icons/SettingsIcon.js +1 -1
  629. package/dist/icons/ShieldFilledIcon.js +1 -1
  630. package/dist/icons/ShieldIcon.js +1 -1
  631. package/dist/icons/SlashIcon.js +1 -1
  632. package/dist/icons/SparklesIcon.js +1 -1
  633. package/dist/icons/SqlIcon.js +1 -1
  634. package/dist/icons/StatsIcon.js +1 -1
  635. package/dist/icons/StopIcon.js +1 -1
  636. package/dist/icons/StringIcon.js +1 -1
  637. package/dist/icons/SubtotalsIcon.js +1 -1
  638. package/dist/icons/SwitchIcon.js +1 -1
  639. package/dist/icons/TableIcon.js +1 -1
  640. package/dist/icons/ThumbsDownIcon.js +1 -1
  641. package/dist/icons/ThumbsUpIcon.js +1 -1
  642. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  643. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  644. package/dist/icons/ThunderboltIcon.js +1 -1
  645. package/dist/icons/TimeIcon.js +1 -1
  646. package/dist/icons/TrashIcon.js +1 -1
  647. package/dist/icons/UnlockIcon.js +1 -1
  648. package/dist/icons/UpIcon.js +1 -1
  649. package/dist/icons/UserGroupIcon.js +1 -1
  650. package/dist/icons/UserIcon.js +1 -1
  651. package/dist/icons/UserLockIcon.js +1 -1
  652. package/dist/icons/ViewIcon.js +1 -1
  653. package/dist/icons/WarningFilledIcon.js +1 -1
  654. package/dist/icons/WarningIcon.js +1 -1
  655. package/dist/icons/wrap-icon.js +1 -1
  656. package/dist/index.d.ts +18 -18
  657. package/dist/index.js +3 -3
  658. package/dist/probe/canonicalize.js +1 -1
  659. package/dist/probe/css.js +1 -1
  660. package/dist/probe/index.js +1 -1
  661. package/dist/provider.js +1 -1
  662. package/dist/providers/TrackingProvider.js +1 -1
  663. package/dist/providers/navigationAdapter.default.js +1 -1
  664. package/dist/shared/form.d.ts +4 -21
  665. package/dist/tokens/all-tokens.js +1 -1
  666. package/dist/tokens/base.js +1 -1
  667. package/dist/tokens/color-seed.js +1 -1
  668. package/dist/tokens/color-theme.js +1 -1
  669. package/dist/tokens/colors.js +1 -1
  670. package/dist/tokens/layout.js +1 -1
  671. package/dist/tokens/lazy-styles.js +1 -1
  672. package/dist/tokens/legacy-color.js +1 -1
  673. package/dist/tokens/palette-config.js +1 -1
  674. package/dist/tokens/palette.js +1 -1
  675. package/dist/tokens/resolve.js +1 -1
  676. package/dist/tokens/shadows.js +1 -1
  677. package/dist/tokens/sizes.js +1 -1
  678. package/dist/tokens/spacing.js +1 -1
  679. package/dist/tokens/typography.js +1 -1
  680. package/dist/utils/ResizeSensor.js +1 -1
  681. package/dist/utils/colors.js +1 -1
  682. package/dist/utils/dotize.js +1 -1
  683. package/dist/utils/is-dev-env.js +1 -1
  684. package/dist/utils/modules.js +1 -1
  685. package/dist/utils/promise.js +1 -1
  686. package/dist/utils/raf.js +1 -1
  687. package/dist/utils/random.js +1 -1
  688. package/dist/utils/range.js +1 -1
  689. package/dist/utils/react/RenderCache.js +1 -1
  690. package/dist/utils/react/Slots.js +1 -1
  691. package/dist/utils/react/chain.js +1 -1
  692. package/dist/utils/react/disabledProps.js +1 -1
  693. package/dist/utils/react/escapePropagation.js +1 -1
  694. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  695. package/dist/utils/react/index.js +1 -1
  696. package/dist/utils/react/interactions.js +1 -1
  697. package/dist/utils/react/isTextOnly.js +1 -1
  698. package/dist/utils/react/mapProps.js +1 -1
  699. package/dist/utils/react/mapProps.js.map +1 -1
  700. package/dist/utils/react/mergeProps.js +1 -1
  701. package/dist/utils/react/nullableValue.d.ts +2 -2
  702. package/dist/utils/react/nullableValue.js +1 -1
  703. package/dist/utils/react/nullableValue.js.map +1 -1
  704. package/dist/utils/react/programmaticFocus.js +1 -1
  705. package/dist/utils/react/resolveIcon.js +1 -1
  706. package/dist/utils/react/sharedStore.js +1 -1
  707. package/dist/utils/react/useBufferedValue.js +1 -1
  708. package/dist/utils/react/useCombinedRefs.js +1 -1
  709. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  710. package/dist/utils/react/useEventBus.js +1 -1
  711. package/dist/utils/react/useId.js +1 -1
  712. package/dist/utils/react/useIsDarwin.js +1 -1
  713. package/dist/utils/react/useKeySymbols.js +1 -1
  714. package/dist/utils/react/useLayoutEffect.js +1 -1
  715. package/dist/utils/react/useLocalStorage.js +1 -1
  716. package/dist/utils/react/useMergeStyles.js +1 -1
  717. package/dist/utils/react/useOverlayEscapeGuard.js +12 -1
  718. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  719. package/dist/utils/react/usePopoverSync.js +1 -1
  720. package/dist/utils/react/useQaProps.js +1 -1
  721. package/dist/utils/react/useScheme.js +1 -1
  722. package/dist/utils/react/useViewportSize.js +1 -1
  723. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  724. package/dist/utils/selection.js +1 -1
  725. package/dist/utils/styles.js +1 -1
  726. package/dist/utils/tree.js +1 -1
  727. package/dist/utils/warnings.js +1 -1
  728. package/dist/version.js +2 -2
  729. package/docs/components/content/ItemCard.md +77 -18
  730. package/docs/components/fields/Checkbox.md +2 -0
  731. package/docs/components/fields/Switch.md +2 -0
  732. package/docs/components/overlays/Notifications.md +1 -1
  733. package/docs/components/overlays/Toast.md +3 -2
  734. package/package.json +16 -16
  735. package/tasty.config.ts +2 -0
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { _CollectionItem } from "../../CollectionItem.js";
@@ -18,48 +18,59 @@ import { 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(16);
22
- const { header, footer, menuStyles, headerStyles, footerStyles, itemStyles, sectionStyles, sectionHeadingStyles, size: t0, focusOnHover: t1, qa, selectedKeys, defaultSelectedKeys, onSelectionChange, ...rest } = props;
21
+ const $ = c(18);
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
- const focusOnHover = t1 === void 0 ? false : t1;
25
24
  const domRef = useObjectRef(ref);
26
25
  const contextProps = useMenuContext();
26
+ const ariaSelectedKeys = selectedKeys ? new Set(selectedKeys) : void 0;
27
+ const ariaDefaultSelectedKeys = defaultSelectedKeys ? new Set(defaultSelectedKeys) : void 0;
28
+ const handleSelectionChange = onSelectionChange ? (keys) => {
29
+ if (keys === "all") onSelectionChange(Array.from(state.collection.getKeys()).map(_temp));
30
+ else if (keys instanceof Set) onSelectionChange(Array.from(keys).map(_temp2));
31
+ else onSelectionChange([]);
32
+ } : void 0;
33
+ let t1;
34
+ if ($[0] !== onAction) {
35
+ t1 = onAction ? (key_1) => onAction(key_1) : void 0;
36
+ $[0] = onAction;
37
+ $[1] = t1;
38
+ } else t1 = $[1];
27
39
  const completeProps = mergeProps$1(contextProps, rest, {
28
- focusOnHover,
29
- selectedKeys: selectedKeys ? new Set(selectedKeys) : void 0,
30
- defaultSelectedKeys: defaultSelectedKeys ? new Set(defaultSelectedKeys) : void 0,
31
- onSelectionChange: onSelectionChange ? (keys) => {
32
- if (keys === "all") onSelectionChange(Array.from(state.collection.getKeys()).map(_temp));
33
- else if (keys instanceof Set) onSelectionChange(Array.from(keys).map(_temp2));
34
- else onSelectionChange([]);
35
- } : void 0
40
+ onAction: t1,
41
+ selectedKeys: ariaSelectedKeys,
42
+ defaultSelectedKeys: ariaDefaultSelectedKeys,
43
+ onSelectionChange: handleSelectionChange
44
+ });
45
+ const state = useTreeState({
46
+ ...completeProps,
47
+ children: completeProps.children
36
48
  });
37
- const state = useTreeState(completeProps);
38
49
  const collectionItems = [...state.collection];
39
50
  const hasSections = collectionItems.some(_temp3);
40
51
  const { menuProps } = useMenu(completeProps, state, domRef);
41
52
  let t2;
42
- if ($[0] !== completeProps) {
53
+ if ($[2] !== completeProps) {
43
54
  t2 = extractStyles(completeProps, CONTAINER_STYLES);
44
- $[0] = completeProps;
45
- $[1] = t2;
46
- } else t2 = $[1];
55
+ $[2] = completeProps;
56
+ $[3] = t2;
57
+ } else t2 = $[3];
47
58
  const styles = t2;
48
59
  const t3 = completeProps.mods?.popover;
49
60
  const t4 = !!footer;
50
61
  const t5 = !!header;
51
62
  let t6;
52
- if ($[2] !== t3 || $[3] !== t4 || $[4] !== t5) {
63
+ if ($[4] !== t3 || $[5] !== t4 || $[6] !== t5) {
53
64
  t6 = {
54
65
  popover: t3,
55
66
  footer: t4,
56
67
  header: t5
57
68
  };
58
- $[2] = t3;
59
- $[3] = t4;
60
- $[4] = t5;
61
- $[5] = t6;
62
- } else t6 = $[5];
69
+ $[4] = t3;
70
+ $[5] = t4;
71
+ $[6] = t5;
72
+ $[7] = t6;
73
+ } else t6 = $[7];
63
74
  const wrapperMods = t6;
64
75
  const menuMods = { sections: hasSections };
65
76
  useSyncRef(contextProps, domRef);
@@ -86,43 +97,42 @@ function Menu(props, ref) {
86
97
  item: item_0,
87
98
  state,
88
99
  styles: itemStyles,
89
- size,
90
- onAction: item_0.onAction
100
+ size
91
101
  }, item_0.key);
92
102
  if (item_0.props?.wrapper) menuItem = item_0.props.wrapper(menuItem);
93
103
  else if (item_0.wrapper) menuItem = item_0.wrapper(menuItem);
94
104
  renderedItems.push(React.cloneElement(menuItem, { key: item_0.key }));
95
105
  });
96
106
  let t7;
97
- if ($[6] !== completeProps) {
107
+ if ($[8] !== completeProps) {
98
108
  t7 = filterBaseProps(completeProps);
99
- $[6] = completeProps;
100
- $[7] = t7;
101
- } else t7 = $[7];
109
+ $[8] = completeProps;
110
+ $[9] = t7;
111
+ } else t7 = $[9];
102
112
  let t8;
103
- if ($[8] !== header || $[9] !== headerStyles || $[10] !== size) {
113
+ if ($[10] !== header || $[11] !== headerStyles || $[12] !== size) {
104
114
  t8 = header ? /* @__PURE__ */ jsx(StyledHeader, {
105
115
  "data-size": size,
106
116
  styles: headerStyles,
107
117
  children: header
108
118
  }) : /* @__PURE__ */ jsx("div", { role: "presentation" });
109
- $[8] = header;
110
- $[9] = headerStyles;
111
- $[10] = size;
112
- $[11] = t8;
113
- } else t8 = $[11];
119
+ $[10] = header;
120
+ $[11] = headerStyles;
121
+ $[12] = size;
122
+ $[13] = t8;
123
+ } else t8 = $[13];
114
124
  let t9;
115
- if ($[12] !== footer || $[13] !== footerStyles || $[14] !== size) {
125
+ if ($[14] !== footer || $[15] !== footerStyles || $[16] !== size) {
116
126
  t9 = footer ? /* @__PURE__ */ jsx(StyledFooter, {
117
127
  "data-size": size,
118
128
  styles: footerStyles,
119
129
  children: footer
120
130
  }) : /* @__PURE__ */ jsx("div", { role: "presentation" });
121
- $[12] = footer;
122
- $[13] = footerStyles;
123
- $[14] = size;
124
- $[15] = t9;
125
- } else t9 = $[15];
131
+ $[14] = footer;
132
+ $[15] = footerStyles;
133
+ $[16] = size;
134
+ $[17] = t9;
135
+ } else t9 = $[17];
126
136
  return /* @__PURE__ */ jsxs(StyledMenuWrapper, {
127
137
  qa,
128
138
  styles,
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["useObjectRef","useSyncRef","FocusStrategy","ItemProps","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","header","footer","menuStyles","headerStyles","footerStyles","styles","itemStyles","sectionStyles","sectionHeadingStyles","shouldFocusWrap","autoFocus","shouldUseVirtualFocus","size","selectedKeys","defaultSelectedKeys","onSelectionChange","keys","Menu","props","ref","$","_c","t0","focusOnHover","t1","qa","rest","undefined","domRef","contextProps","ariaSelectedKeys","Set","ariaDefaultSelectedKeys","handleSelectionChange","allKeys","Array","from","state","collection","getKeys","map","_temp","_temp2","completeProps","treeProps","collectionItems","hasSections","some","_temp3","menuProps","t2","t3","mods","popover","t4","t5","t6","wrapperMods","menuMods","sections","renderedItems","isFirstSection","forEach","item_0","item","type","push","String","key","menuItem","onAction","wrapper","cloneElement","t7","t8","t9","Record","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 { FocusStrategy, ItemProps } 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 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'\n > {\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 focusOnHover = false,\n qa,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\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 focusOnHover,\n selectedKeys: ariaSelectedKeys,\n defaultSelectedKeys: ariaDefaultSelectedKeys,\n onSelectionChange: handleSelectionChange,\n });\n\n // Props used for collection building.\n const treeProps = completeProps as typeof completeProps;\n\n const state = useTreeState(treeProps as typeof completeProps);\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 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 onAction={item.onAction}\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 {...(filterBaseProps(completeProps) as Record<string, unknown>)}\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":["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","mods","popover","t4","t5","t6","wrapperMods","menuMods","sections","renderedItems","isFirstSection","forEach","item_0","item","type","push","String","menuItem","wrapper","cloneElement","t7","t8","t9","Record","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 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 {...(filterBaseProps(completeProps) as Record<string, unknown>)}\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":";;;;;;;;;;;;;;;;;;;AAkFA,SAAAwD,KAAAC,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAIE,MAAA,EAAArB,QAAAC,QAAAC,YAAAC,cAAAC,cAAAE,YAAAC,eAAAC,sBAAAI,MAAAU,IAAAC,IAAAV,cAAAC,qBAAAC,mBAAAjB,UAAA,GAAA0B,SAgBIN;CAPF,MAAAN,OAAAU,OAAAG,SAAA,WAAAH;CAQF,MAAAI,SAAejE,aAAa0D,IAAI;CAChC,MAAAQ,eAAqB3C,gBAAgB;CAGrC,MAAA4C,mBAAyBf,eAAA,IAAmBgB,IAAIhB,aAAyB,GAAhDY;CACzB,MAAAK,0BAAgChB,sBAAA,IACxBe,IAAIf,oBACC,GAFmBW;CAIhC,MAAAM,wBAA8BhB,qBAAAC,SAAA;AAExB,MAAIA,SAAS,MAKXD,mBAHgBkB,MAAKC,KAAMC,MAAKC,WAAWC,SAAU,CAAC,CAAAC,IACpDC,MACD,CACyB;WACjBvB,gBAAgBa,IACzBd,mBAAkBkB,MAAKC,KAAMlB,KAAK,CAAAsB,IAAKE,OAAqB,CAAC;MAE7DzB,mBAAkB,EAAE,CAAC;KAXCU;CAchB,IAAAgB;AAAA,KAAArB,EAAA,OAAAtB,UAAA;AAGF2C,OAAA3C,YAAA4C,UAAyB5C,SAASC,MAAgB,GAAlD0B;AAAkDL,IAAA,KAAAtB;AAAAsB,IAAA,KAAAqB;OAAAA,MAAArB,EAAA;CAD9D,MAAAuB,gBAAsB9D,aAAW8C,cAAcH,MAAM;EAAA1B,UACzC2C;EAAkD5B,cAC9Ce;EAAgBd,qBACTgB;EAAuBf,mBACzBgB;EACpB,CAAC;CAGF,MAAAI,QAAcvD,aAAa;EAAA,GACtB+D;EAAa9C,UACN8C,cAAa9C;EACxB,CAAC;CACF,MAAA+C,kBAAwB,CAAA,GAAIT,MAAKC,WAAY;CAC7C,MAAAS,cAAoBD,gBAAeE,KAAMC,OAAkC;CAE3E,MAAA,EAAAC,cAAsBvE,QAAQkE,eAAeR,OAAOT,OAAO;CAAC,IAAAuB;AAAA,KAAA7B,EAAA,OAAAuB,eAAA;AAC7CM,OAAAnE,cAAc6D,eAAe3E,iBAAiB;AAAAoD,IAAA,KAAAuB;AAAAvB,IAAA,KAAA6B;OAAAA,MAAA7B,EAAA;CAA7D,MAAAf,SAAe4C;CAGJ,MAAAC,KAAAP,cAAaQ,MAAcC;CAC5B,MAAAC,KAAA,CAAC,CAACpD;CACF,MAAAqD,KAAA,CAAC,CAACtD;CAAM,IAAAuD;AAAA,KAAAnC,EAAA,OAAA8B,MAAA9B,EAAA,OAAAiC,MAAAjC,EAAA,OAAAkC,IAAA;AAHEC,OAAA;GAAAH,SACTF;GAA2BjD,QAC5BoD;GAAQrD,QACRsD;GACT;AAAAlC,IAAA,KAAA8B;AAAA9B,IAAA,KAAAiC;AAAAjC,IAAA,KAAAkC;AAAAlC,IAAA,KAAAmC;OAAAA,MAAAnC,EAAA;CAJD,MAAAoC,cAAoBD;CAMpB,MAAAE,WAAiB,EAAAC,UACLb,aACX;AAKDnF,YAAWiE,cAAcD,OAAO;CAEhC,MAAAiC,gBAAyC,EAAE;CAC3C,IAAAC,iBAAqB;AAErBhB,iBAAeiB,SAASC,WAAA;AACtB,MAAIC,OAAIC,SAAU,WAAS;AACzB,OAAI,CAACJ,eACHD,eAAaM,KACX,oBAAC;IAEM,MAAA;IACY,oBAAA;MAFZ,WAAWC,OAAOH,OAAIhE,IAAK,GAIpC,CAAC;AAGH4D,iBAAaM,KACX,oBAAC;IAEOF,MAAAA;IACC5B;IACC5B,QAAAA;IACID;IACGE,eAAAA;IACTI;MANDmD,OAAIhE,IAQb,CAAC;AAED6D,oBAAiBA;AAAH;;EAIhB,IAAAO,WACE,oBAAC;GAEOJ,MAAAA;GACC5B;GACC7B,QAAAA;GACFM;KAJDmD,OAAIhE,IAKT;AAOJ,MAAIgE,OAAI7C,OAAekD,QACrBD,YAAWJ,OAAI7C,MAAMkD,QAASD,SAAS;WAC7BJ,OAAWK,QAErBD,YAAYJ,OAAWK,QAAUD,SAAS;AAI5CR,gBAAaM,KAAM7F,MAAKiG,aAAcF,UAAU,EAAApE,KAAOgE,OAAIhE,KAAM,CAAC,CAAC;GACnE;CAAA,IAAAuE;AAAA,KAAAlD,EAAA,OAAAuB,eAAA;AAOO2B,OAAApG,gBAAgByE,cAAc;AAAAvB,IAAA,KAAAuB;AAAAvB,IAAA,KAAAkD;OAAAA,MAAAlD,EAAA;CAAA,IAAAmD;AAAA,KAAAnD,EAAA,QAAApB,UAAAoB,EAAA,QAAAjB,gBAAAiB,EAAA,QAAAR,MAAA;AAElC2D,OAAAvE,SACC,oBAAC;GAAwBY,aAAAA;GAAcT,QAAAA;aACpCH;IAIJ,GADC,oBAAA,SAAU,MAAA,iBACX;AAAAoB,IAAA,MAAApB;AAAAoB,IAAA,MAAAjB;AAAAiB,IAAA,MAAAR;AAAAQ,IAAA,MAAAmD;OAAAA,MAAAnD,EAAA;CAAA,IAAAoD;AAAA,KAAApD,EAAA,QAAAnB,UAAAmB,EAAA,QAAAhB,gBAAAgB,EAAA,QAAAR,MAAA;AAeA4D,OAAAvE,SACC,oBAAC;GAAwBW,aAAAA;GAAcR,QAAAA;aACpCH;IAIJ,GADC,oBAAA,SAAU,MAAA,iBACX;AAAAmB,IAAA,MAAAnB;AAAAmB,IAAA,MAAAhB;AAAAgB,IAAA,MAAAR;AAAAQ,IAAA,MAAAoD;OAAAA,MAAApD,EAAA;AAAA,QAjCH,qBAAC;EACKG;EACIlB;EACFmD,MAAAA;EAAW,GACZc;;GAEJC;GAOD,oBAAC;IAAU,GACL1F,aACF;KAAAwB,QACUH;KAAU,aACLU;KAAIuC,MACXM;KACP,EACDT,UACD;IACItB,KAAAA;IACC,MAAAsB,UAAS0B,QAAT;cAELf;KAEF;GAAAa;;GAOiB;;AA1KxB,SAAAzB,OAAAgB,MAAA;AAAA,QA2DqDA,KAAIC,SAAU;;AA3DnE,SAAAxB,OAAAmC,OAAA;AAAA,QAuC0DT,OAAOnE,MAAI;;AAvCrE,SAAAwC,MAAAxC,KAAA;AAAA,QAmC0BmE,OAAOnE,IAAI;;AA6IrC,MAAM6E,QAAQxG,MAAMyG,WAAW5D,KAAK;AAMpC,MAAMvC,YAAUuG,OAAOC,OAAOvG,SAAa,EACzCwG,aAAa,WACd,CAAC;AASF,MAAMI,SAASN,OAAOC,OAAON,OAA0B;CACrDS,MAAMtG;CACNL;CACAe;CACA6F,SAASnG;CACTgG,aAAa;CACd,CAAC;AAEFI,OAAOJ,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { filterCollectionItemProps } from "../../CollectionItem.js";
4
4
  import { _Item } from "../../content/Item/Item.js";
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","names":["Key","Node","Styles","KeyboardEvent","useContext","useRef","FocusRing","useMenuItem","TreeState","RightIcon","mergeProps","filterCollectionItemProps","Item","useMenuContext","SubmenuTriggerContext","MenuSelectionType","MenuItemProps","item","T","state","styles","isVirtualized","isDisabled","onAction","key","size","MenuItem","props","$","_c","onClose","closeOnSelect","rendered","itemProps","submenuContext","filteredItemProps","mods","itemMods","qa","itemQa","isSelectable","selectionManager","selectionMode","t0","disabledKeys","has","isDisabledKey","ref","elementRef","triggerRef","t1","isSelected","t2","t3","undefined","t4","t5","t6","menuItemProps","labelProps","descriptionProps","keyboardShortcutProps","isFocused","isPressed","isVirtualFocused","focusedKey","onKeyDown","itemOnKeyDown","itemOwnProps","t7","e","defaultPrevented","focused","pressed","selected","disabled","submenu","menuitem","T0","T1","t8","as","isOpen","onMouseEnter","onMouseLeave","t9","rightIcon","t10","t11","t12","t13"],"sources":["../../../../src/components/actions/Menu/MenuItem.tsx"],"sourcesContent":["import { Key, Node } from '@react-types/shared';\nimport { Styles } from '@tenphi/tasty';\nimport { KeyboardEvent, useContext, useRef } from 'react';\nimport { FocusRing, useMenuItem } from 'react-aria';\nimport { TreeState } from 'react-stately';\n\nimport { RightIcon } from '../../../icons/RightIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { filterCollectionItemProps } from '../../CollectionItem';\nimport { Item } from '../../content/Item/Item';\n\nimport { useMenuContext } from './context';\nimport { SubmenuTriggerContext } from './SubmenuTriggerContext';\n\nexport type MenuSelectionType = 'checkbox' | 'radio' | 'checkmark';\n\nexport interface MenuItemProps<T> {\n item: Node<T>;\n state: TreeState<T>;\n styles?: Styles;\n isVirtualized?: boolean;\n isDisabled?: boolean;\n onAction?: (key: Key) => void;\n size?: 'small' | 'medium' | (string & {});\n}\n\n/** @private */\nexport function MenuItem<T>(props: MenuItemProps<T>) {\n const { item, state, styles, isVirtualized, onAction, size } = props;\n const { onClose, closeOnSelect } = useMenuContext();\n const { rendered, key, props: itemProps } = item;\n\n // Check if this item is wrapped in a SubmenuTriggerContext\n const submenuContext = useContext(SubmenuTriggerContext);\n\n // Filter out service props (react-stately and parent-handled props)\n // All remaining props are safe to pass to Item component\n const filteredItemProps = filterCollectionItemProps(itemProps);\n\n // Extract specific props that need special handling\n const { hotkeys, mods: itemMods, qa: itemQa } = filteredItemProps;\n\n const isSelectable = state.selectionManager.selectionMode !== 'none';\n const isDisabledKey =\n state.disabledKeys.has(key) || submenuContext?.isDisabled;\n\n const ref = useRef<HTMLLIElement>(null);\n\n // Use the triggerRef from submenu context if present\n const elementRef = (submenuContext?.triggerRef ?? ref) as any;\n\n const {\n menuItemProps,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n isFocused,\n isSelected,\n isPressed,\n isDisabled,\n } = useMenuItem(\n {\n isSelected: state.selectionManager.isSelected(key),\n isDisabled: isDisabledKey,\n 'aria-label': item['aria-label'],\n key,\n onClose: submenuContext ? undefined : onClose, // Don't close menu for submenu triggers\n closeOnSelect: submenuContext ? false : closeOnSelect, // Don't close on submenu trigger selection\n isVirtualized,\n onAction: submenuContext?.onAction || onAction,\n },\n state,\n elementRef,\n );\n\n // Selection indicator will be handled by Item component\n const isVirtualFocused = state.selectionManager.focusedKey === key;\n\n // `mergeProps` chains handlers rather than replacing them, so a handler of\n // the item's own passed to it again runs twice. `onKeyDown` used to be: Enter\n // and Space each click the item, so every keyboard activation fired\n // `onAction` twice. It is taken out here and passed once.\n const { onKeyDown: itemOnKeyDown, ...itemOwnProps } = menuItemProps;\n const onKeyDown = submenuContext?.onKeyDown\n ? (e: KeyboardEvent) => {\n // The submenu goes first; a key it handles is not the item's too.\n submenuContext.onKeyDown?.(e);\n if (!e.defaultPrevented) itemOnKeyDown?.(e);\n }\n : itemOnKeyDown;\n\n const mods = {\n ...itemMods,\n focused: isFocused || isVirtualFocused,\n pressed: isPressed,\n selected: isSelected,\n disabled: isDisabled,\n submenu: !!submenuContext,\n menuitem: true,\n };\n\n return (\n <FocusRing>\n <Item\n {...mergeProps({ ...itemOwnProps, onKeyDown }, filteredItemProps, {\n 'data-popover-trigger': true,\n qa: itemQa ? itemQa : `MenuItem-${key}`,\n mods,\n styles,\n 'data-size': size,\n as: 'li',\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n 'aria-haspopup': submenuContext ? 'menu' : undefined,\n 'aria-expanded': submenuContext?.isOpen,\n 'data-has-submenu': submenuContext ? true : undefined,\n // Chained after the item's own hover handlers.\n onMouseEnter: submenuContext?.onMouseEnter,\n onMouseLeave: submenuContext?.onMouseLeave,\n })}\n ref={elementRef}\n disableActionsFocus={true}\n rightIcon={submenuContext ? <RightIcon /> : filteredItemProps.rightIcon}\n defaultTooltipPlacement=\"right\"\n isSelected={isSelectable ? isSelected : undefined}\n isDisabled={isDisabled}\n size={size === 'small' ? 'small' : 'medium'}\n >\n {rendered}\n </Item>\n </FocusRing>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MenuItem.js","names":["FocusableElement","Key","Node","Styles","KeyboardEvent","useContext","useRef","FocusRing","useMenuItem","TreeState","RightIcon","mergeProps","filterCollectionItemProps","Item","useMenuContext","SubmenuTriggerContext","MenuSelectionType","MenuItemProps","item","T","state","styles","isVirtualized","isDisabled","onAction","key","size","MenuItem","props","$","_c","onClose","closeOnSelect","rendered","itemProps","submenuContext","filteredItemProps","mods","itemMods","qa","itemQa","isSelectable","selectionManager","selectionMode","t0","disabledKeys","has","isDisabledKey","ref","elementRef","triggerRef","t1","isSelected","t2","t3","undefined","t4","t5","t6","menuItemProps","labelProps","descriptionProps","keyboardShortcutProps","isFocused","isPressed","isVirtualFocused","focusedKey","onKeyDown","itemOnKeyDown","itemOwnProps","t7","e","defaultPrevented","focused","pressed","selected","disabled","submenu","menuitem","T0","T1","t8","as","isOpen","onMouseEnter","onMouseLeave","t9","rightIcon","t10","t11","t12","t13"],"sources":["../../../../src/components/actions/Menu/MenuItem.tsx"],"sourcesContent":["import { FocusableElement, Key, Node } from '@react-types/shared';\nimport { Styles } from '@tenphi/tasty';\nimport { KeyboardEvent, useContext, useRef } from 'react';\nimport { FocusRing, useMenuItem } from 'react-aria';\nimport { TreeState } from 'react-stately';\n\nimport { RightIcon } from '../../../icons/RightIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { filterCollectionItemProps } from '../../CollectionItem';\nimport { Item } from '../../content/Item/Item';\n\nimport { useMenuContext } from './context';\nimport { SubmenuTriggerContext } from './SubmenuTriggerContext';\n\nexport type MenuSelectionType = 'checkbox' | 'radio' | 'checkmark';\n\nexport interface MenuItemProps<T> {\n item: Node<T>;\n state: TreeState<T>;\n styles?: Styles;\n isVirtualized?: boolean;\n isDisabled?: boolean;\n onAction?: (key: Key) => void;\n size?: 'small' | 'medium' | (string & {});\n}\n\n/** @private */\nexport function MenuItem<T>(props: MenuItemProps<T>) {\n const { item, state, styles, isVirtualized, onAction, size } = props;\n const { onClose, closeOnSelect } = useMenuContext();\n const { rendered, key, props: itemProps } = item;\n\n // Check if this item is wrapped in a SubmenuTriggerContext\n const submenuContext = useContext(SubmenuTriggerContext);\n\n // Filter out service props (react-stately and parent-handled props)\n // All remaining props are safe to pass to Item component\n const filteredItemProps = filterCollectionItemProps(itemProps);\n\n // Extract specific props that need special handling\n const { hotkeys, mods: itemMods, qa: itemQa } = filteredItemProps;\n\n const isSelectable = state.selectionManager.selectionMode !== 'none';\n const isDisabledKey =\n state.disabledKeys.has(key) || submenuContext?.isDisabled;\n\n const ref = useRef<HTMLLIElement>(null);\n\n // Use the triggerRef from submenu context if present\n const elementRef = (submenuContext?.triggerRef ?? ref) as any;\n\n const {\n menuItemProps,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n isFocused,\n isSelected,\n isPressed,\n isDisabled,\n } = useMenuItem(\n {\n isSelected: state.selectionManager.isSelected(key),\n isDisabled: isDisabledKey,\n 'aria-label': item['aria-label'],\n key,\n onClose: submenuContext ? undefined : onClose, // Don't close menu for submenu triggers\n closeOnSelect: submenuContext ? false : closeOnSelect, // Don't close on submenu trigger selection\n isVirtualized,\n onAction: submenuContext?.onAction || onAction,\n },\n state,\n elementRef,\n );\n\n // Selection indicator will be handled by Item component\n const isVirtualFocused = state.selectionManager.focusedKey === key;\n\n // `mergeProps` chains handlers rather than replacing them, so a handler of\n // the item's own passed to it again runs twice. `onKeyDown` used to be: Enter\n // and Space each click the item, so every keyboard activation fired\n // `onAction` twice. It is taken out here and passed once.\n const { onKeyDown: itemOnKeyDown, ...itemOwnProps } = menuItemProps;\n const onKeyDown = submenuContext?.onKeyDown\n ? (e: KeyboardEvent<FocusableElement>) => {\n // The submenu goes first; a key it handles is not the item's too.\n submenuContext.onKeyDown?.(e);\n if (!e.defaultPrevented) itemOnKeyDown?.(e);\n }\n : itemOnKeyDown;\n\n const mods = {\n ...itemMods,\n focused: isFocused || isVirtualFocused,\n pressed: isPressed,\n selected: isSelected,\n disabled: isDisabled,\n submenu: !!submenuContext,\n menuitem: true,\n };\n\n return (\n <FocusRing>\n <Item\n {...mergeProps({ ...itemOwnProps, onKeyDown }, filteredItemProps, {\n 'data-popover-trigger': true,\n qa: itemQa ? itemQa : `MenuItem-${key}`,\n mods,\n styles,\n 'data-size': size,\n as: 'li',\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n 'aria-haspopup': submenuContext ? 'menu' : undefined,\n 'aria-expanded': submenuContext?.isOpen,\n 'data-has-submenu': submenuContext ? true : undefined,\n // Chained after the item's own hover handlers.\n onMouseEnter: submenuContext?.onMouseEnter,\n onMouseLeave: submenuContext?.onMouseLeave,\n })}\n ref={elementRef}\n disableActionsFocus={true}\n rightIcon={submenuContext ? <RightIcon /> : filteredItemProps.rightIcon}\n defaultTooltipPlacement=\"right\"\n isSelected={isSelectable ? isSelected : undefined}\n isDisabled={isDisabled}\n size={size === 'small' ? 'small' : 'medium'}\n >\n {rendered}\n </Item>\n </FocusRing>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { MenuItem } from "./MenuItem.js";
3
3
  import { StyledMenu, StyledSection, StyledSectionHeading } from "./styled.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -56,8 +56,7 @@ function MenuSection(props) {
56
56
  item: node,
57
57
  styles: itemStyles,
58
58
  state,
59
- size,
60
- onAction: node.onAction
59
+ size
61
60
  }, node.key);
62
61
  if (node.props?.wrapper) menuItem = node.props.wrapper(menuItem);
63
62
  else if (node.wrapper) menuItem = node.wrapper(menuItem);
@@ -1 +1 @@
1
- {"version":3,"file":"MenuSection.js","names":["Styles","cloneElement","useMenuSection","MenuItem","MenuItemProps","StyledMenu","StyledSection","StyledSectionHeading","CubeMenuSectionProps","T","itemStyles","headingStyles","size","MenuSection","props","$","_c","item","state","styles","heading","rendered","t0","t1","itemProps","headingProps","groupProps","t2","t3","Symbol","for","section","t4","childNodes","t5","map","node","menuItem","key","onAction","wrapper","t6","t7"],"sources":["../../../../src/components/actions/Menu/MenuSection.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport { cloneElement } from 'react';\nimport { useMenuSection } from 'react-aria';\n\nimport { MenuItem, MenuItemProps } from './MenuItem';\nimport { StyledMenu, StyledSection, StyledSectionHeading } from './styled';\n\nexport interface CubeMenuSectionProps<T> extends MenuItemProps<T> {\n itemStyles?: Styles;\n headingStyles?: Styles;\n size?: 'small' | 'medium' | (string & {});\n}\n\n/** @private */\nexport function MenuSection<T>(props: CubeMenuSectionProps<T>) {\n const { item, state, styles, itemStyles, headingStyles, size } = props;\n const heading = item.rendered;\n const { itemProps, headingProps, groupProps } = useMenuSection({\n heading,\n 'aria-label': item['aria-label'],\n });\n\n return (\n <>\n <StyledSection {...itemProps} styles={styles}>\n {heading && (\n <StyledSectionHeading\n {...headingProps}\n size={size}\n styles={headingStyles}\n >\n {heading}\n </StyledSectionHeading>\n )}\n <StyledMenu {...groupProps} mods={{ section: true }}>\n {[...item.childNodes].map((node) => {\n let menuItem = (\n <MenuItem\n key={node.key}\n item={node}\n styles={itemStyles}\n state={state}\n size={size}\n onAction={(node as unknown as MenuItemProps<T>).onAction}\n />\n );\n\n // `MenuItem` renders the item's `tooltip` itself, as `Menu` does\n // for items outside a section. A `SubMenuTrigger` puts its\n // wrapper on the collection node rather than in the item's props.\n if (node.props?.wrapper) {\n menuItem = node.props.wrapper(menuItem);\n } else if ((node as any).wrapper) {\n menuItem = (node as any).wrapper(menuItem);\n }\n\n // The wrapper's element doesn't carry the item's key.\n return cloneElement(menuItem, { key: node.key });\n })}\n </StyledMenu>\n </StyledSection>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAOa,YAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACL,MAAA,EAAAC,MAAAC,OAAAC,QAAAT,YAAAC,eAAAC,SAAiEE;CACjE,MAAAM,UAAgBH,KAAII;CAGJ,MAAAC,KAAAL,KAAK;CAAa,IAAAM;AAAA,KAAAR,EAAA,OAAAK,WAAAL,EAAA,OAAAO,IAAA;AAF6BC,OAAA;GAAAH;GAAA,cAE/CE;GACf;AAAAP,IAAA,KAAAK;AAAAL,IAAA,KAAAO;AAAAP,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;CAHD,MAAA,EAAAS,WAAAC,cAAAC,eAAgDxB,eAAeqB,GAG7D;CAAC,IAAAI;AAAA,KAAAZ,EAAA,OAAAK,WAAAL,EAAA,OAAAU,gBAAAV,EAAA,OAAAJ,iBAAAI,EAAA,OAAAH,MAAA;AAKIe,OAAAP,WACC,oBAAC;GAAoB,GACfK;GACEb;GACED,QAAAA;aAEPS;IAEJ;AAAAL,IAAA,KAAAK;AAAAL,IAAA,KAAAU;AAAAV,IAAA,KAAAJ;AAAAI,IAAA,KAAAH;AAAAG,IAAA,KAAAY;OAAAA,MAAAZ,EAAA;CAAA,IAAAa;AAAA,KAAAb,EAAA,OAAAc,OAAAC,IAAA,4BAAA,EAAA;AACiCF,OAAA,EAAAG,SAAW,MAAM;AAAAhB,IAAA,KAAAa;OAAAA,MAAAb,EAAA;CAAA,IAAAiB;AAAA,KAAAjB,EAAA,OAAAE,KAAAgB,YAAA;AAChDD,OAAA,CAAA,GAAIf,KAAIgB,WAAY;AAAAlB,IAAA,KAAAE,KAAAgB;AAAAlB,IAAA,MAAAiB;OAAAA,MAAAjB,EAAA;CAAA,IAAAmB;AAAA,KAAAnB,EAAA,QAAAL,cAAAK,EAAA,QAAAH,QAAAG,EAAA,QAAAG,SAAAH,EAAA,QAAAiB,IAAA;AAApBE,OAAAF,GAAoBG,KAAKC,SAAA;GACxB,IAAAC,WACE,oBAAC;IAEOD,MAAAA;IACE1B,QAAAA;IACDQ;IACDN;IACI,UAACwB,KAAmCG;MALzCH,KAAIE,IAMT;AAMJ,OAAIF,KAAItB,OAAe0B,QACrBH,YAAWD,KAAItB,MAAM0B,QAASH,SAAS;YAC7BD,KAAWI,QACrBH,YAAYD,KAAWI,QAAUH,SAAS;AAC3C,UAGMpC,aAAaoC,UAAU,EAAAC,KAAOF,KAAIE,KAAM,CAAC;IAChD;AAAAvB,IAAA,MAAAL;AAAAK,IAAA,MAAAH;AAAAG,IAAA,MAAAG;AAAAH,IAAA,MAAAiB;AAAAjB,IAAA,MAAAmB;OAAAA,MAAAnB,EAAA;CAAA,IAAA0B;AAAA,KAAA1B,EAAA,QAAAW,cAAAX,EAAA,QAAAmB,IAAA;AAxBJO,OAAA,oBAAC;GAAU,GAAKf;GAAkB,MAAAE;aAC/BM;IAwBU;AAAAnB,IAAA,MAAAW;AAAAX,IAAA,MAAAmB;AAAAnB,IAAA,MAAA0B;OAAAA,MAAA1B,EAAA;CAAA,IAAA2B;AAAA,KAAA3B,EAAA,QAAAS,aAAAT,EAAA,QAAAI,UAAAJ,EAAA,QAAAY,MAAAZ,EAAA,QAAA0B,IAAA;AApCjBC,OAAA,4CACE,qBAAC;GAAa,GAAKlB;GAAmBL;cACnCQ,IASDc;IA0Bc,GACf;AAAA1B,IAAA,MAAAS;AAAAT,IAAA,MAAAI;AAAAJ,IAAA,MAAAY;AAAAZ,IAAA,MAAA0B;AAAA1B,IAAA,MAAA2B;OAAAA,MAAA3B,EAAA;AAAA,QAtCH2B"}
1
+ {"version":3,"file":"MenuSection.js","names":["Styles","cloneElement","useMenuSection","MenuItem","MenuItemProps","StyledMenu","StyledSection","StyledSectionHeading","CubeMenuSectionProps","T","itemStyles","headingStyles","size","MenuSection","props","$","_c","item","state","styles","heading","rendered","t0","t1","itemProps","headingProps","groupProps","t2","t3","Symbol","for","section","t4","childNodes","t5","map","node","menuItem","key","wrapper","t6","t7"],"sources":["../../../../src/components/actions/Menu/MenuSection.tsx"],"sourcesContent":["import { Styles } from '@tenphi/tasty';\nimport { cloneElement } from 'react';\nimport { useMenuSection } from 'react-aria';\n\nimport { MenuItem, MenuItemProps } from './MenuItem';\nimport { StyledMenu, StyledSection, StyledSectionHeading } from './styled';\n\nexport interface CubeMenuSectionProps<T> extends MenuItemProps<T> {\n itemStyles?: Styles;\n headingStyles?: Styles;\n size?: 'small' | 'medium' | (string & {});\n}\n\n/** @private */\nexport function MenuSection<T>(props: CubeMenuSectionProps<T>) {\n const { item, state, styles, itemStyles, headingStyles, size } = props;\n const heading = item.rendered;\n const { itemProps, headingProps, groupProps } = useMenuSection({\n heading,\n 'aria-label': item['aria-label'],\n });\n\n return (\n <>\n <StyledSection {...itemProps} styles={styles}>\n {heading && (\n <StyledSectionHeading\n {...headingProps}\n size={size}\n styles={headingStyles}\n >\n {heading}\n </StyledSectionHeading>\n )}\n <StyledMenu {...groupProps} mods={{ section: true }}>\n {[...item.childNodes].map((node) => {\n let menuItem = (\n <MenuItem\n key={node.key}\n item={node}\n styles={itemStyles}\n state={state}\n size={size}\n />\n );\n\n // `MenuItem` renders the item's `tooltip` itself, as `Menu` does\n // for items outside a section. A `SubMenuTrigger` puts its\n // wrapper on the collection node rather than in the item's props.\n if (node.props?.wrapper) {\n menuItem = node.props.wrapper(menuItem);\n } else if ((node as any).wrapper) {\n menuItem = (node as any).wrapper(menuItem);\n }\n\n // The wrapper's element doesn't carry the item's key.\n return cloneElement(menuItem, { key: node.key });\n })}\n </StyledMenu>\n </StyledSection>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAOa,YAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACL,MAAA,EAAAC,MAAAC,OAAAC,QAAAT,YAAAC,eAAAC,SAAiEE;CACjE,MAAAM,UAAgBH,KAAII;CAGJ,MAAAC,KAAAL,KAAK;CAAa,IAAAM;AAAA,KAAAR,EAAA,OAAAK,WAAAL,EAAA,OAAAO,IAAA;AAF6BC,OAAA;GAAAH;GAAA,cAE/CE;GACf;AAAAP,IAAA,KAAAK;AAAAL,IAAA,KAAAO;AAAAP,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;CAHD,MAAA,EAAAS,WAAAC,cAAAC,eAAgDxB,eAAeqB,GAG7D;CAAC,IAAAI;AAAA,KAAAZ,EAAA,OAAAK,WAAAL,EAAA,OAAAU,gBAAAV,EAAA,OAAAJ,iBAAAI,EAAA,OAAAH,MAAA;AAKIe,OAAAP,WACC,oBAAC;GAAoB,GACfK;GACEb;GACED,QAAAA;aAEPS;IAEJ;AAAAL,IAAA,KAAAK;AAAAL,IAAA,KAAAU;AAAAV,IAAA,KAAAJ;AAAAI,IAAA,KAAAH;AAAAG,IAAA,KAAAY;OAAAA,MAAAZ,EAAA;CAAA,IAAAa;AAAA,KAAAb,EAAA,OAAAc,OAAAC,IAAA,4BAAA,EAAA;AACiCF,OAAA,EAAAG,SAAW,MAAM;AAAAhB,IAAA,KAAAa;OAAAA,MAAAb,EAAA;CAAA,IAAAiB;AAAA,KAAAjB,EAAA,OAAAE,KAAAgB,YAAA;AAChDD,OAAA,CAAA,GAAIf,KAAIgB,WAAY;AAAAlB,IAAA,KAAAE,KAAAgB;AAAAlB,IAAA,MAAAiB;OAAAA,MAAAjB,EAAA;CAAA,IAAAmB;AAAA,KAAAnB,EAAA,QAAAL,cAAAK,EAAA,QAAAH,QAAAG,EAAA,QAAAG,SAAAH,EAAA,QAAAiB,IAAA;AAApBE,OAAAF,GAAoBG,KAAKC,SAAA;GACxB,IAAAC,WACE,oBAAC;IAEOD,MAAAA;IACE1B,QAAAA;IACDQ;IACDN;MAJDwB,KAAIE,IAKT;AAMJ,OAAIF,KAAItB,OAAeyB,QACrBF,YAAWD,KAAItB,MAAMyB,QAASF,SAAS;YAC7BD,KAAWG,QACrBF,YAAYD,KAAWG,QAAUF,SAAS;AAC3C,UAGMpC,aAAaoC,UAAU,EAAAC,KAAOF,KAAIE,KAAM,CAAC;IAChD;AAAAvB,IAAA,MAAAL;AAAAK,IAAA,MAAAH;AAAAG,IAAA,MAAAG;AAAAH,IAAA,MAAAiB;AAAAjB,IAAA,MAAAmB;OAAAA,MAAAnB,EAAA;CAAA,IAAAyB;AAAA,KAAAzB,EAAA,QAAAW,cAAAX,EAAA,QAAAmB,IAAA;AAvBJM,OAAA,oBAAC;GAAU,GAAKd;GAAkB,MAAAE;aAC/BM;IAuBU;AAAAnB,IAAA,MAAAW;AAAAX,IAAA,MAAAmB;AAAAnB,IAAA,MAAAyB;OAAAA,MAAAzB,EAAA;CAAA,IAAA0B;AAAA,KAAA1B,EAAA,QAAAS,aAAAT,EAAA,QAAAI,UAAAJ,EAAA,QAAAY,MAAAZ,EAAA,QAAAyB,IAAA;AAnCjBC,OAAA,4CACE,qBAAC;GAAa,GAAKjB;GAAmBL;cACnCQ,IASDa;IAyBc,GACf;AAAAzB,IAAA,MAAAS;AAAAT,IAAA,MAAAI;AAAAJ,IAAA,MAAAY;AAAAZ,IAAA,MAAAyB;AAAAzB,IAAA,MAAA0B;OAAAA,MAAA1B,EAAA;AAAA,QArCH0B"}
@@ -1,12 +1,15 @@
1
1
 
2
2
  import * as react from "react";
3
- import { MutableRefObject, ReactElement } from "react";
3
+ import { MutableRefObject, ReactElement, RefObject } from "react";
4
4
  import { AriaMenuTriggerProps as AriaMenuTriggerProps$1, PositionProps } from "react-aria";
5
5
  import { MenuTriggerState } from "react-stately";
6
6
 
7
7
  //#region src/components/actions/Menu/MenuTrigger.d.ts
8
- type CubeMenuTriggerProps = AriaMenuTriggerProps$1 & PositionProps & {
8
+ type CubeMenuTriggerProps = Omit<AriaMenuTriggerProps$1, 'children'> & PositionProps & {
9
9
  isDisabled?: boolean;
10
+ defaultOpen?: boolean;
11
+ onOpenChange?: (isOpen: boolean) => void;
12
+ targetRef?: RefObject<HTMLElement | null>;
10
13
  children: [ReactElement | ((state: MenuTriggerState) => ReactElement), ReactElement];
11
14
  closeOnSelect?: boolean;
12
15
  isDummy?: boolean;
@@ -43,7 +46,43 @@ type CubeMenuTriggerProps = AriaMenuTriggerProps$1 & PositionProps & {
43
46
  * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
44
47
  * linking the Menu's open state with the trigger's press state.
45
48
  */
46
- declare let _MenuTrigger: react.ForwardRefExoticComponent<any>;
49
+ declare let _MenuTrigger: react.ForwardRefExoticComponent<Omit<AriaMenuTriggerProps$1, "children"> & PositionProps & {
50
+ isDisabled?: boolean;
51
+ defaultOpen?: boolean;
52
+ onOpenChange?: (isOpen: boolean) => void;
53
+ targetRef?: RefObject<HTMLElement | null>;
54
+ children: [ReactElement | ((state: MenuTriggerState) => ReactElement), ReactElement];
55
+ closeOnSelect?: boolean;
56
+ isDummy?: boolean;
57
+ /**
58
+ * Whether focus returns to the trigger when the menu closes. Defaults to
59
+ * `true`.
60
+ *
61
+ * The restore is skipped automatically whenever the action that closed the
62
+ * menu has already moved focus somewhere else, so an item that opens a
63
+ * panel/dialog/inline editor and focuses it needs nothing here. Pass
64
+ * `false` for the remaining case: a surface that claims focus *later* than
65
+ * the menu's own restore (after an async load, an entry animation, or a
66
+ * `requestAnimationFrame`), where the trigger would otherwise take focus
67
+ * first and produce a visible flash.
68
+ */
69
+ shouldRestoreFocus?: boolean;
70
+ /**
71
+ * External ref to the popover container element. When provided, it is
72
+ * aliased to the internal `menuPopoverRef`, letting consumers (e.g.
73
+ * `useAnchoredMenu` / `useContextMenu`) feed the popover container into
74
+ * their own `usePopoverSync` so the nested-popover guard can recognize
75
+ * submenus opened inside this menu. Optional.
76
+ */
77
+ popoverRef?: MutableRefObject<HTMLDivElement | null>;
78
+ /**
79
+ * Overlay variant to use on mobile screens. Defaults to `'popover'`, which
80
+ * keeps the desktop overlay even on small viewports. Pass `'tray'` to opt
81
+ * into the bottom-sheet `Tray` overlay on mobile (the previous implicit
82
+ * default). Mirrors the `mobileType` API on `DialogTrigger`.
83
+ */
84
+ mobileType?: "popover" | "tray";
85
+ } & react.RefAttributes<HTMLElement>>;
47
86
  //#endregion
48
87
  export { type AriaMenuTriggerProps$1 as AriaMenuTriggerProps, CubeMenuTriggerProps, _MenuTrigger };
49
88
  //# sourceMappingURL=MenuTrigger.d.ts.map
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { SlotProvider } from "../../../utils/react/Slots.js";
3
3
  import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -67,15 +67,14 @@ function MenuTrigger(props, ref) {
67
67
  } else t7 = $[8];
68
68
  usePopoverSync(t7);
69
69
  if (typeof menuTrigger === "function") {
70
- const t8 = menuTrigger;
71
- let t9;
72
- if ($[9] !== state || $[10] !== t8) {
73
- t9 = t8(state);
74
- $[9] = state;
75
- $[10] = t8;
76
- $[11] = t9;
77
- } else t9 = $[11];
78
- menuTrigger = t9;
70
+ let t8;
71
+ if ($[9] !== menuTrigger || $[10] !== state) {
72
+ t8 = menuTrigger(state);
73
+ $[9] = menuTrigger;
74
+ $[10] = state;
75
+ $[11] = t8;
76
+ } else t8 = $[11];
77
+ menuTrigger = t8;
79
78
  }
80
79
  let t8;
81
80
  if ($[12] !== isDisabled) {
@@ -278,29 +277,30 @@ function MenuTrigger(props, ref) {
278
277
  } else t26 = $[65];
279
278
  overlay_0 = t26;
280
279
  } else {
281
- let t26;
282
- if ($[66] !== contents || $[67] !== menuPopoverRef || $[68] !== placement || $[69] !== positionProps.style || $[70] !== shouldCloseOnInteractOutside || $[71] !== state.close || $[72] !== state.isOpen) {
283
- t26 = /* @__PURE__ */ jsx(_Popover, {
280
+ const t26 = placement ?? void 0;
281
+ let t27;
282
+ if ($[66] !== contents || $[67] !== menuPopoverRef || $[68] !== positionProps.style || $[69] !== shouldCloseOnInteractOutside || $[70] !== state.close || $[71] !== state.isOpen || $[72] !== t26) {
283
+ t27 = /* @__PURE__ */ jsx(_Popover, {
284
284
  ref: menuPopoverRef,
285
285
  hideArrow: true,
286
286
  isNonModal: true,
287
287
  isOpen: state.isOpen,
288
288
  style: positionProps.style,
289
- placement,
289
+ placement: t26,
290
290
  shouldCloseOnInteractOutside,
291
291
  onClose: state.close,
292
292
  children: contents
293
293
  });
294
294
  $[66] = contents;
295
295
  $[67] = menuPopoverRef;
296
- $[68] = placement;
297
- $[69] = positionProps.style;
298
- $[70] = shouldCloseOnInteractOutside;
299
- $[71] = state.close;
300
- $[72] = state.isOpen;
301
- $[73] = t26;
302
- } else t26 = $[73];
303
- overlay_0 = t26;
296
+ $[68] = positionProps.style;
297
+ $[69] = shouldCloseOnInteractOutside;
298
+ $[70] = state.close;
299
+ $[71] = state.isOpen;
300
+ $[72] = t26;
301
+ $[73] = t27;
302
+ } else t27 = $[73];
303
+ overlay_0 = t27;
304
304
  }
305
305
  const t26 = trigger === "longPress";
306
306
  let t27;
@@ -1 +1 @@
1
- {"version":3,"file":"MenuTrigger.js","names":["PressResponder","useObjectRef","useIsMobileDevice","forwardRef","Fragment","MutableRefObject","ReactElement","Ref","useEffect","useMemo","useRef","AriaMenuTriggerProps","DismissButton","FocusScope","Placement","PositionProps","useMenuTrigger","useOverlayPosition","MenuTriggerState","useMenuTriggerState","useEvent","generateRandomId","SlotProvider","usePopoverSync","Popover","Tray","isOwnActionsPress","MenuContext","MenuContextValue","CubeMenuTriggerProps","isDisabled","children","state","closeOnSelect","isDummy","shouldRestoreFocus","popoverRef","HTMLDivElement","mobileType","MenuTrigger","props","ref","$","_c","internalPopoverRef","menuPopoverRef","trayRef","triggerRef","domRef","menuTriggerRef","targetRef","menuRef","wasOpenRef","shouldFlip","t0","trigger","t1","t2","t3","undefined","t4","Symbol","for","menuId","Array","isArray","length","Error","menuTrigger","menu","t5","close","t6","t7","isOpen","onClose","enabled","containerRef","t8","t9","menuTriggerProps","menuProps","initialPlacement","placement","isMobileDevice","isTray","t10","offset","t11","crossOffset","t12","containerPadding","overlayRef","scrollRef","overlayProps","positionProps","t13","activeElement","document","body","isConnected","overlay","current","contains","hasFocusMovedOutsideMenu","t14","t15","setTimeout","focus","t16","focusStrategy","t17","width","maxHeight","t18","t19","popover","tray","t20","t21","autoFocus","style","mods","isClosing","menuContext","t22","t23","t24","contents","t25","el","menuTriggerEl","closest","shouldCloseOnInteractOutside","t26","t27","actionButton","holdAffordance","t28","t29","t30","overlay_0","t31","_MenuTrigger","displayName"],"sources":["../../../../src/components/actions/Menu/MenuTrigger.tsx"],"sourcesContent":["import { PressResponder } from '@react-aria/interactions';\nimport { useObjectRef } from '@react-aria/utils';\nimport { useIsMobileDevice } from '@react-spectrum/utils';\nimport {\n forwardRef,\n Fragment,\n MutableRefObject,\n ReactElement,\n Ref,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n AriaMenuTriggerProps,\n DismissButton,\n FocusScope,\n Placement,\n PositionProps,\n useMenuTrigger,\n useOverlayPosition,\n} from 'react-aria';\nimport { MenuTriggerState, useMenuTriggerState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal';\nimport { generateRandomId } from '../../../utils/random';\nimport { SlotProvider } from '../../../utils/react';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { Popover, Tray } from '../../overlays/Modal';\nimport { isOwnActionsPress } from '../actions-run';\n\nimport { MenuContext, MenuContextValue } from './context';\n\nexport type { AriaMenuTriggerProps };\n\nexport type CubeMenuTriggerProps = AriaMenuTriggerProps &\n PositionProps & {\n isDisabled?: boolean;\n children: [\n ReactElement | ((state: MenuTriggerState) => ReactElement),\n ReactElement,\n ];\n\n closeOnSelect?: boolean;\n isDummy?: boolean;\n /**\n * Whether focus returns to the trigger when the menu closes. Defaults to\n * `true`.\n *\n * The restore is skipped automatically whenever the action that closed the\n * menu has already moved focus somewhere else, so an item that opens a\n * panel/dialog/inline editor and focuses it needs nothing here. Pass\n * `false` for the remaining case: a surface that claims focus *later* than\n * the menu's own restore (after an async load, an entry animation, or a\n * `requestAnimationFrame`), where the trigger would otherwise take focus\n * first and produce a visible flash.\n */\n shouldRestoreFocus?: boolean;\n /**\n * External ref to the popover container element. When provided, it is\n * aliased to the internal `menuPopoverRef`, letting consumers (e.g.\n * `useAnchoredMenu` / `useContextMenu`) feed the popover container into\n * their own `usePopoverSync` so the nested-popover guard can recognize\n * submenus opened inside this menu. Optional.\n */\n popoverRef?: MutableRefObject<HTMLDivElement | null>;\n /**\n * Overlay variant to use on mobile screens. Defaults to `'popover'`, which\n * keeps the desktop overlay even on small viewports. Pass `'tray'` to opt\n * into the bottom-sheet `Tray` overlay on mobile (the previous implicit\n * default). Mirrors the `mobileType` API on `DialogTrigger`.\n */\n mobileType?: 'popover' | 'tray';\n };\n\nfunction MenuTrigger(props: CubeMenuTriggerProps, ref: Ref<HTMLElement>) {\n const internalPopoverRef = useRef<HTMLDivElement>(null);\n const menuPopoverRef = props.popoverRef ?? internalPopoverRef;\n const trayRef = useRef<HTMLElement>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const domRef = useObjectRef(ref);\n const menuTriggerRef = props.targetRef || domRef || triggerRef;\n const menuRef = useRef<HTMLUListElement>(null);\n const wasOpenRef = useRef(false);\n const {\n children,\n shouldFlip = true,\n closeOnSelect,\n trigger = 'press',\n isDisabled,\n isDummy,\n mobileType = 'popover',\n shouldRestoreFocus = true,\n } = props;\n\n // Generate a unique ID for this menu instance\n const menuId = useMemo(() => generateRandomId(), []);\n\n if (!Array.isArray(children) || children.length > 2) {\n throw new Error('MenuTrigger must have exactly 2 children');\n }\n\n let [menuTrigger, menu] = children;\n const state: MenuTriggerState = useMenuTriggerState(props);\n\n usePopoverSync({\n menuId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n enabled: !isDummy,\n triggerRef: menuTriggerRef,\n containerRef: menuPopoverRef,\n });\n\n if (typeof menuTrigger === 'function') {\n menuTrigger = (menuTrigger as CubeMenuTriggerProps['children'][0])(state);\n }\n\n const { menuTriggerProps, menuProps } = useMenuTrigger(\n { isDisabled },\n state,\n menuTriggerRef,\n );\n\n let initialPlacement: Placement = props.placement ?? 'bottom start';\n\n // Tray rendering is now opt-in via `mobileType=\"tray\"` (matches DialogTrigger).\n // Without that opt-in, MenuTrigger always renders a Popover so that environments\n // like jsdom (where `window.screen.width === 0` makes useIsMobileDevice() true)\n // don't accidentally swap in the tray overlay.\n const isMobileDevice = useIsMobileDevice();\n const isTray = mobileType === 'tray' && isMobileDevice;\n const { overlayProps: positionProps, placement } = useOverlayPosition({\n targetRef: menuTriggerRef,\n overlayRef: menuPopoverRef,\n scrollRef: menuRef,\n placement: initialPlacement,\n shouldFlip: shouldFlip,\n isOpen: state.isOpen && !isTray,\n onClose: state.close,\n containerPadding: props.containerPadding,\n offset: props.offset ?? 8,\n crossOffset: props.crossOffset ?? 0,\n });\n\n // Whether focus has been claimed by something outside the closing menu —\n // the signal that a menu action handed focus off and the trigger must not\n // take it back.\n //\n // Focus still inside the menu overlay means nobody claimed it: the pressed\n // item keeps focus while the popover plays its ~350ms exit animation. Focus\n // on `<body>` (or on a detached element) means the focused node went away\n // with the menu. Both are cases where the trigger is where focus belongs.\n const hasFocusMovedOutsideMenu = useEvent(() => {\n const activeElement = document.activeElement;\n\n if (!activeElement || activeElement === document.body) return false;\n if (!activeElement.isConnected) return false;\n\n // `menuPopoverRef` is only wired to the `Popover` branch, so the overlay\n // container is `trayRef` when `mobileType=\"tray\"` is in effect.\n const overlay = isTray ? trayRef.current : menuPopoverRef.current;\n\n return !(\n overlay?.contains(activeElement) ||\n menuRef.current?.contains(activeElement) ||\n menuTriggerRef.current?.contains(activeElement)\n );\n });\n\n // Restore focus manually when the menu closes\n useEffect(() => {\n if (!state.isOpen && wasOpenRef.current && !isDummy) {\n wasOpenRef.current = false;\n\n if (!shouldRestoreFocus) return;\n\n // Use setTimeout to ensure focus restoration happens after any animations\n setTimeout(() => {\n // An action that opened a panel, a dialog or an inline editor has\n // already focused it by now — taking focus back to the trigger would\n // undo the hand-off, which consumers previously had to out-race by\n // re-focusing on every animation frame (CUB-3962).\n if (hasFocusMovedOutsideMenu()) return;\n\n menuTriggerRef.current?.focus();\n }, 0);\n } else if (state.isOpen) {\n wasOpenRef.current = true;\n }\n }, [\n state.isOpen,\n menuTriggerRef,\n isDummy,\n shouldRestoreFocus,\n hasFocusMovedOutsideMenu,\n ]);\n\n const menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: (state.focusStrategy as any) ?? 'first',\n style: isTray\n ? {\n width: '100%',\n maxHeight: 'inherit',\n }\n : undefined,\n mods: {\n popover: !isTray,\n tray: isTray,\n },\n isClosing: !state.isOpen,\n } as MenuContextValue;\n\n // Wrap in a FocusScope so the menu popover registers as a child of any\n // outer contained FocusScope (e.g. a parent Dialog/Popover). Without this,\n // when the menu opens inside an outer contained FocusScope, the outer\n // scope rejects focus moving into the menu items (which live in a portal\n // and would otherwise belong to no scope) and yanks focus back to the\n // menu trigger.\n //\n // `restoreFocus` follows `shouldRestoreFocus`, so opting out silences the\n // scope's own unmount restore too. Scope registration (and therefore the\n // guarantee above) is unaffected — `FocusScope` joins the tree and tracks\n // the active scope regardless of `restoreFocus`.\n const contents = (\n <FocusScope restoreFocus={shouldRestoreFocus}>\n <DismissButton onDismiss={state.close} />\n {menu}\n <DismissButton onDismiss={state.close} />\n </FocusScope>\n );\n\n // Shared between the Popover and Tray branches so both react-aria\n // `useOverlay` calls see the same predicate. Without this, the Tray branch\n // falls back to unconditional dismiss-on-outside-interaction, which\n // `useOverlay` translates into stopPropagation/preventDefault in the\n // capture phase — that swallows clicks on sibling triggers (see Menu\n // rapid-open test).\n //\n // `useEvent` gives us a single stable callback reference for the lifetime\n // of the component while always reading the latest closure values. This\n // matters because `useMenuTriggerState` returns a fresh `state` object on\n // every render, so a vanilla `useCallback([..., state])` would produce a\n // new function every render and defeat any stability guarantees consumers\n // rely on.\n const shouldCloseOnInteractOutside = useEvent((el: Element) => {\n // While `Popover` is animating out, `useInteractOutside`'s capture-phase\n // listener is still attached (jsdom 29+ uses pointerdown/click capture).\n // The animation lasts ~350ms; without this guard, clicks on a sibling\n // trigger during the exit window get stopPropagation()'d and the\n // sibling's `onClick` never runs — breaking rapid-open and \"open menu\n // again with new props\" flows. Reading `state.isOpen` directly is safe\n // because `useEvent` always sees the latest closure.\n if (!state.isOpen) return false;\n\n // A press on our OWN trigger's actions run — an `ItemButton` row's\n // `actions` — is not a press outside. The run is rendered as a sibling of\n // the trigger (see `ItemActionsWrapper`), so the checks below cannot\n // recognise it and we closed instead, which cost the action its press: the\n // first press on it while the menu was open only closed the menu.\n if (isOwnActionsPress(el, menuTriggerRef.current)) return false;\n\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (!menuTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss`. We schedule the close via setTimeout(0) so\n // it lands AFTER the click event finishes — the button's onPress\n // fires first, then the popover closes. Without this, useOverlay\n // would stopPropagation() the click and the user would need a second\n // click to actually press the button.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(() => state.close(), 0);\n return false;\n }\n return true;\n }\n if (\n isDummy &&\n (menuTriggerEl === menuTriggerRef.current ||\n menuTriggerRef.current?.contains(el))\n ) {\n return true;\n }\n if (menuTriggerEl === menuTriggerRef.current) return true;\n return false;\n });\n\n let overlay;\n if (isTray) {\n overlay = (\n <Tray\n ref={trayRef}\n isOpen={state.isOpen}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={state.close}\n >\n {contents}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n ref={menuPopoverRef}\n hideArrow\n isNonModal\n isOpen={state.isOpen}\n style={positionProps.style}\n placement={placement}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={state.close}\n >\n {contents}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider\n slots={{ actionButton: { holdAffordance: trigger === 'longPress' } }}\n >\n {!isDummy ? (\n <PressResponder\n {...menuTriggerProps}\n ref={menuTriggerRef}\n data-popover-trigger\n isPressed={state.isOpen}\n >\n {menuTrigger}\n </PressResponder>\n ) : null}\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>{overlay}</MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\n\n_MenuTrigger.displayName = 'MenuTrigger';\n\nexport { _MenuTrigger as MenuTrigger };\n"],"mappings":"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"}
1
+ {"version":3,"file":"MenuTrigger.js","names":["PressResponder","useObjectRef","useIsMobileDevice","forwardRef","Fragment","MutableRefObject","ReactElement","Ref","RefObject","useEffect","useMemo","useRef","AriaMenuTriggerProps","DismissButton","FocusScope","Placement","PositionProps","useMenuTrigger","useOverlayPosition","MenuTriggerState","useMenuTriggerState","useEvent","generateRandomId","SlotProvider","usePopoverSync","Popover","Tray","isOwnActionsPress","MenuContext","MenuContextValue","CubeMenuTriggerProps","Omit","isDisabled","defaultOpen","onOpenChange","isOpen","targetRef","HTMLElement","children","state","closeOnSelect","isDummy","shouldRestoreFocus","popoverRef","HTMLDivElement","mobileType","MenuTrigger","props","ref","$","_c","internalPopoverRef","menuPopoverRef","trayRef","triggerRef","domRef","menuTriggerRef","menuRef","wasOpenRef","shouldFlip","t0","trigger","t1","t2","t3","undefined","t4","Symbol","for","menuId","Array","isArray","length","Error","menuTrigger","menu","t5","close","t6","t7","onClose","enabled","containerRef","t8","menuTriggerProps","menuProps","initialPlacement","placement","isMobileDevice","isTray","t9","t10","offset","t11","crossOffset","t12","containerPadding","overlayRef","scrollRef","overlayProps","positionProps","t13","activeElement","document","body","isConnected","overlay","current","contains","hasFocusMovedOutsideMenu","t14","t15","setTimeout","focus","t16","focusStrategy","t17","width","maxHeight","t18","t19","popover","tray","t20","t21","autoFocus","style","mods","isClosing","menuContext","t22","t23","t24","contents","t25","el","menuTriggerEl","closest","shouldCloseOnInteractOutside","t26","t27","actionButton","holdAffordance","t28","t29","t30","overlay_0","t31","_MenuTrigger","displayName"],"sources":["../../../../src/components/actions/Menu/MenuTrigger.tsx"],"sourcesContent":["import { PressResponder } from '@react-aria/interactions';\nimport { useObjectRef } from '@react-aria/utils';\nimport { useIsMobileDevice } from '@react-spectrum/utils';\nimport {\n forwardRef,\n Fragment,\n MutableRefObject,\n ReactElement,\n Ref,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport {\n AriaMenuTriggerProps,\n DismissButton,\n FocusScope,\n Placement,\n PositionProps,\n useMenuTrigger,\n useOverlayPosition,\n} from 'react-aria';\nimport { MenuTriggerState, useMenuTriggerState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal';\nimport { generateRandomId } from '../../../utils/random';\nimport { SlotProvider } from '../../../utils/react';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { Popover, Tray } from '../../overlays/Modal';\nimport { isOwnActionsPress } from '../actions-run';\n\nimport { MenuContext, MenuContextValue } from './context';\n\nexport type { AriaMenuTriggerProps };\n\nexport type CubeMenuTriggerProps = Omit<AriaMenuTriggerProps, 'children'> &\n PositionProps & {\n isDisabled?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n targetRef?: RefObject<HTMLElement | null>;\n children: [\n ReactElement | ((state: MenuTriggerState) => ReactElement),\n ReactElement,\n ];\n\n closeOnSelect?: boolean;\n isDummy?: boolean;\n /**\n * Whether focus returns to the trigger when the menu closes. Defaults to\n * `true`.\n *\n * The restore is skipped automatically whenever the action that closed the\n * menu has already moved focus somewhere else, so an item that opens a\n * panel/dialog/inline editor and focuses it needs nothing here. Pass\n * `false` for the remaining case: a surface that claims focus *later* than\n * the menu's own restore (after an async load, an entry animation, or a\n * `requestAnimationFrame`), where the trigger would otherwise take focus\n * first and produce a visible flash.\n */\n shouldRestoreFocus?: boolean;\n /**\n * External ref to the popover container element. When provided, it is\n * aliased to the internal `menuPopoverRef`, letting consumers (e.g.\n * `useAnchoredMenu` / `useContextMenu`) feed the popover container into\n * their own `usePopoverSync` so the nested-popover guard can recognize\n * submenus opened inside this menu. Optional.\n */\n popoverRef?: MutableRefObject<HTMLDivElement | null>;\n /**\n * Overlay variant to use on mobile screens. Defaults to `'popover'`, which\n * keeps the desktop overlay even on small viewports. Pass `'tray'` to opt\n * into the bottom-sheet `Tray` overlay on mobile (the previous implicit\n * default). Mirrors the `mobileType` API on `DialogTrigger`.\n */\n mobileType?: 'popover' | 'tray';\n };\n\nfunction MenuTrigger(props: CubeMenuTriggerProps, ref: Ref<HTMLElement>) {\n const internalPopoverRef = useRef<HTMLDivElement>(null);\n const menuPopoverRef = props.popoverRef ?? internalPopoverRef;\n const trayRef = useRef<HTMLElement>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const domRef = useObjectRef(ref);\n const menuTriggerRef = props.targetRef || domRef || triggerRef;\n const menuRef = useRef<HTMLUListElement>(null);\n const wasOpenRef = useRef(false);\n const {\n children,\n shouldFlip = true,\n closeOnSelect,\n trigger = 'press',\n isDisabled,\n isDummy,\n mobileType = 'popover',\n shouldRestoreFocus = true,\n } = props;\n\n // Generate a unique ID for this menu instance\n const menuId = useMemo(() => generateRandomId(), []);\n\n if (!Array.isArray(children) || children.length > 2) {\n throw new Error('MenuTrigger must have exactly 2 children');\n }\n\n let [menuTrigger, menu] = children;\n const state: MenuTriggerState = useMenuTriggerState(props);\n\n usePopoverSync({\n menuId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n enabled: !isDummy,\n triggerRef: menuTriggerRef,\n containerRef: menuPopoverRef,\n });\n\n if (typeof menuTrigger === 'function') {\n menuTrigger = menuTrigger(state);\n }\n\n const { menuTriggerProps, menuProps } = useMenuTrigger(\n { isDisabled },\n state,\n menuTriggerRef,\n );\n\n let initialPlacement: Placement = props.placement ?? 'bottom start';\n\n // Tray rendering is now opt-in via `mobileType=\"tray\"` (matches DialogTrigger).\n // Without that opt-in, MenuTrigger always renders a Popover so that environments\n // like jsdom (where `window.screen.width === 0` makes useIsMobileDevice() true)\n // don't accidentally swap in the tray overlay.\n const isMobileDevice = useIsMobileDevice();\n const isTray = mobileType === 'tray' && isMobileDevice;\n const { overlayProps: positionProps, placement } = useOverlayPosition({\n targetRef: menuTriggerRef,\n overlayRef: menuPopoverRef,\n scrollRef: menuRef,\n placement: initialPlacement,\n shouldFlip: shouldFlip,\n isOpen: state.isOpen && !isTray,\n onClose: state.close,\n containerPadding: props.containerPadding,\n offset: props.offset ?? 8,\n crossOffset: props.crossOffset ?? 0,\n });\n\n // Whether focus has been claimed by something outside the closing menu —\n // the signal that a menu action handed focus off and the trigger must not\n // take it back.\n //\n // Focus still inside the menu overlay means nobody claimed it: the pressed\n // item keeps focus while the popover plays its ~350ms exit animation. Focus\n // on `<body>` (or on a detached element) means the focused node went away\n // with the menu. Both are cases where the trigger is where focus belongs.\n const hasFocusMovedOutsideMenu = useEvent(() => {\n const activeElement = document.activeElement;\n\n if (!activeElement || activeElement === document.body) return false;\n if (!activeElement.isConnected) return false;\n\n // `menuPopoverRef` is only wired to the `Popover` branch, so the overlay\n // container is `trayRef` when `mobileType=\"tray\"` is in effect.\n const overlay = isTray ? trayRef.current : menuPopoverRef.current;\n\n return !(\n overlay?.contains(activeElement) ||\n menuRef.current?.contains(activeElement) ||\n menuTriggerRef.current?.contains(activeElement)\n );\n });\n\n // Restore focus manually when the menu closes\n useEffect(() => {\n if (!state.isOpen && wasOpenRef.current && !isDummy) {\n wasOpenRef.current = false;\n\n if (!shouldRestoreFocus) return;\n\n // Use setTimeout to ensure focus restoration happens after any animations\n setTimeout(() => {\n // An action that opened a panel, a dialog or an inline editor has\n // already focused it by now — taking focus back to the trigger would\n // undo the hand-off, which consumers previously had to out-race by\n // re-focusing on every animation frame (CUB-3962).\n if (hasFocusMovedOutsideMenu()) return;\n\n menuTriggerRef.current?.focus();\n }, 0);\n } else if (state.isOpen) {\n wasOpenRef.current = true;\n }\n }, [\n state.isOpen,\n menuTriggerRef,\n isDummy,\n shouldRestoreFocus,\n hasFocusMovedOutsideMenu,\n ]);\n\n const menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: (state.focusStrategy as any) ?? 'first',\n style: isTray\n ? {\n width: '100%',\n maxHeight: 'inherit',\n }\n : undefined,\n mods: {\n popover: !isTray,\n tray: isTray,\n },\n isClosing: !state.isOpen,\n } as MenuContextValue;\n\n // Wrap in a FocusScope so the menu popover registers as a child of any\n // outer contained FocusScope (e.g. a parent Dialog/Popover). Without this,\n // when the menu opens inside an outer contained FocusScope, the outer\n // scope rejects focus moving into the menu items (which live in a portal\n // and would otherwise belong to no scope) and yanks focus back to the\n // menu trigger.\n //\n // `restoreFocus` follows `shouldRestoreFocus`, so opting out silences the\n // scope's own unmount restore too. Scope registration (and therefore the\n // guarantee above) is unaffected — `FocusScope` joins the tree and tracks\n // the active scope regardless of `restoreFocus`.\n const contents = (\n <FocusScope restoreFocus={shouldRestoreFocus}>\n <DismissButton onDismiss={state.close} />\n {menu}\n <DismissButton onDismiss={state.close} />\n </FocusScope>\n );\n\n // Shared between the Popover and Tray branches so both react-aria\n // `useOverlay` calls see the same predicate. Without this, the Tray branch\n // falls back to unconditional dismiss-on-outside-interaction, which\n // `useOverlay` translates into stopPropagation/preventDefault in the\n // capture phase — that swallows clicks on sibling triggers (see Menu\n // rapid-open test).\n //\n // `useEvent` gives us a single stable callback reference for the lifetime\n // of the component while always reading the latest closure values. This\n // matters because `useMenuTriggerState` returns a fresh `state` object on\n // every render, so a vanilla `useCallback([..., state])` would produce a\n // new function every render and defeat any stability guarantees consumers\n // rely on.\n const shouldCloseOnInteractOutside = useEvent((el: Element) => {\n // While `Popover` is animating out, `useInteractOutside`'s capture-phase\n // listener is still attached (jsdom 29+ uses pointerdown/click capture).\n // The animation lasts ~350ms; without this guard, clicks on a sibling\n // trigger during the exit window get stopPropagation()'d and the\n // sibling's `onClick` never runs — breaking rapid-open and \"open menu\n // again with new props\" flows. Reading `state.isOpen` directly is safe\n // because `useEvent` always sees the latest closure.\n if (!state.isOpen) return false;\n\n // A press on our OWN trigger's actions run — an `ItemButton` row's\n // `actions` — is not a press outside. The run is rendered as a sibling of\n // the trigger (see `ItemActionsWrapper`), so the checks below cannot\n // recognise it and we closed instead, which cost the action its press: the\n // first press on it while the menu was open only closed the menu.\n if (isOwnActionsPress(el, menuTriggerRef.current)) return false;\n\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (!menuTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss`. We schedule the close via setTimeout(0) so\n // it lands AFTER the click event finishes — the button's onPress\n // fires first, then the popover closes. Without this, useOverlay\n // would stopPropagation() the click and the user would need a second\n // click to actually press the button.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(() => state.close(), 0);\n return false;\n }\n return true;\n }\n if (\n isDummy &&\n (menuTriggerEl === menuTriggerRef.current ||\n menuTriggerRef.current?.contains(el))\n ) {\n return true;\n }\n if (menuTriggerEl === menuTriggerRef.current) return true;\n return false;\n });\n\n let overlay;\n if (isTray) {\n overlay = (\n <Tray\n ref={trayRef}\n isOpen={state.isOpen}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={state.close}\n >\n {contents}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n ref={menuPopoverRef}\n hideArrow\n isNonModal\n isOpen={state.isOpen}\n style={positionProps.style}\n placement={placement ?? undefined}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={state.close}\n >\n {contents}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider\n slots={{ actionButton: { holdAffordance: trigger === 'longPress' } }}\n >\n {!isDummy ? (\n <PressResponder\n {...menuTriggerProps}\n ref={menuTriggerRef}\n data-popover-trigger\n isPressed={state.isOpen}\n >\n {menuTrigger}\n </PressResponder>\n ) : null}\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>{overlay}</MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\n\n_MenuTrigger.displayName = 'MenuTrigger';\n\nexport { _MenuTrigger as MenuTrigger };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA+EA,SAAA8C,YAAAC,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACE,MAAAC,qBAA2BxC,OAAuB,KAAK;CACvD,MAAAyC,iBAAuBL,MAAKJ,cAALQ;CACvB,MAAAE,UAAgB1C,OAAoB,KAAK;CACzC,MAAA2C,aAAmB3C,OAAoB,KAAK;CAC5C,MAAA4C,SAAetD,aAAa+C,IAAI;CAChC,MAAAQ,iBAAuBT,MAAKX,aAALmB,UAAAD;CACvB,MAAAG,UAAgB9C,OAAyB,KAAK;CAC9C,MAAA+C,aAAmB/C,OAAO,MAAM;CAChC,MAAA,EAAA2B,UAAAqB,YAAAC,IAAApB,eAAAqB,SAAAC,IAAA9B,YAAAS,SAAAI,YAAAkB,IAAArB,oBAAAsB,OASIjB;CAPF,MAAAY,aAAAC,OAAAK,SAAA,OAAAL;CAEA,MAAAC,UAAAC,OAAAG,SAAA,UAAAH;CAGA,MAAAjB,aAAAkB,OAAAE,SAAA,YAAAF;CACA,MAAArB,qBAAAsB,OAAAC,SAAA,OAAAD;CAAyB,IAAAE;AAAA,KAAAjB,EAAA,OAAAkB,OAAAC,IAAA,4BAAA,EAAA;AAIEF,OAAA5C,kBAAkB;AAAA2B,IAAA,KAAAiB;OAAAA,MAAAjB,EAAA;CAA/C,MAAAoB,SAA6BH;AAE7B,KAAI,CAACI,MAAKC,QAASjC,SAAgC,IAAnBA,SAAQkC,SAAU,EAChD,OAAM,IAAIC,MAAM,2CAA2C;CAG7D,IAAA,CAAAC,aAAAC,QAA0BrC;CAC1B,MAAAC,QAAgCnB,oBAAoB2B,MAAM;CAAC,IAAA6B;AAAA,KAAA3B,EAAA,OAAAV,OAAA;AAKhDqC,aAAMrC,MAAKsC,OAAQ;AAAA5B,IAAA,KAAAV;AAAAU,IAAA,KAAA2B;OAAAA,MAAA3B,EAAA;CACnB,MAAA6B,KAAA,CAACrC;CAAO,IAAAsC;AAAA,KAAA9B,EAAA,OAAAG,kBAAAH,EAAA,OAAAO,kBAAAP,EAAA,OAAAV,MAAAJ,UAAAc,EAAA,OAAA2B,MAAA3B,EAAA,OAAA6B,IAAA;AAJJC,OAAA;GAAAV;GAAAlC,QAELI,MAAKJ;GAAO6C,SACXJ;GAAmBK,SACnBH;GAAQxB,YACLE;GAAc0B,cACZ9B;GACf;AAAAH,IAAA,KAAAG;AAAAH,IAAA,KAAAO;AAAAP,IAAA,KAAAV,MAAAJ;AAAAc,IAAA,KAAA2B;AAAA3B,IAAA,KAAA6B;AAAA7B,IAAA,KAAA8B;OAAAA,MAAA9B,EAAA;AAPDzB,gBAAeuD,GAOb;AAEF,KAAI,OAAOL,gBAAgB,YAAU;EAAA,IAAAS;AAAA,MAAAlC,EAAA,OAAAyB,eAAAzB,EAAA,QAAAV,OAAA;AACrB4C,QAAAT,YAAYnC,MAAM;AAAAU,KAAA,KAAAyB;AAAAzB,KAAA,MAAAV;AAAAU,KAAA,MAAAkC;QAAAA,MAAAlC,EAAA;AAAhCyB,gBAAcA;;CACf,IAAAS;AAAA,KAAAlC,EAAA,QAAAjB,YAAA;AAGCmD,OAAA,EAAAnD,YAAc;AAAAiB,IAAA,MAAAjB;AAAAiB,IAAA,MAAAkC;OAAAA,MAAAlC,EAAA;CADhB,MAAA,EAAAmC,kBAAAC,cAAwCpE,eACtCkE,IACA5C,OACAiB,eACD;CAED,MAAA8B,mBAAkCvC,MAAKwC,aAAL;CAMlC,MAAAC,iBAAuBtF,mBAAmB;CAC1C,MAAAuF,SAAe5C,eAAe,UAAf2C;CAOL,MAAAE,KAAAnD,MAAKJ,UAAL,CAAiBsD;CAGjB,MAAAE,MAAA5C,MAAK6C,UAAL;CACK,MAAAC,MAAA9C,MAAK+C,eAAL;CAAsB,IAAAC;AAAA,KAAA9C,EAAA,QAAAqC,oBAAArC,EAAA,QAAAG,kBAAAH,EAAA,QAAAO,kBAAAP,EAAA,QAAAF,MAAAiD,oBAAA/C,EAAA,QAAAU,cAAAV,EAAA,QAAAV,MAAAsC,SAAA5B,EAAA,QAAA0C,OAAA1C,EAAA,QAAA4C,OAAA5C,EAAA,QAAAyC,IAAA;AAViCK,QAAA;GAAA3D,WACzDoB;GAAcyC,YACb7C;GAAc8C,WACfzC;GAAO8B,WACPD;GAAgB3B;GAAAxB,QAEnBuD;GAAuBV,SACtBzC,MAAKsC;GAAMmB,kBACFjD,MAAKiD;GAAiBJ,QAChCD;GAAiBG,aACZD;GACd;AAAA5C,IAAA,MAAAqC;AAAArC,IAAA,MAAAG;AAAAH,IAAA,MAAAO;AAAAP,IAAA,MAAAF,MAAAiD;AAAA/C,IAAA,MAAAU;AAAAV,IAAA,MAAAV,MAAAsC;AAAA5B,IAAA,MAAA0C;AAAA1C,IAAA,MAAA4C;AAAA5C,IAAA,MAAAyC;AAAAzC,IAAA,MAAA8C;OAAAA,OAAA9C,EAAA;CAXD,MAAA,EAAAkD,cAAAC,eAAAb,cAAmDrE,mBAAmB6E,IAWpE;CAAC,IAAAM;AAAA,KAAApD,EAAA,QAAAwC,UAAAxC,EAAA,QAAAG,kBAAAH,EAAA,QAAAO,gBAAA;AAUuC6C,cAAA;GACxC,MAAAC,gBAAsBC,SAAQD;AAE9B,OAAI,CAACA,iBAAiBA,kBAAkBC,SAAQC,KAAK,QAAS;AAC9D,OAAI,CAACF,cAAaG,YAAY,QAAS;AAI2B,UAE3D,GAFShB,SAASpC,QAAOsD,UAAWvD,eAAcuD,UAGhDC,SAAWN,cACsB,IAAxC7C,QAAOkD,SAAkBC,SAACN,cACqB,IAA/C9C,eAAcmD,SAAkBC,SAACN,cAAc;;AAElDrD,IAAA,MAAAwC;AAAAxC,IAAA,MAAAG;AAAAH,IAAA,MAAAO;AAAAP,IAAA,MAAAoD;OAAAA,OAAApD,EAAA;CAfD,MAAA4D,2BAAiCxF,SAASgF,IAexC;CAAC,IAAAS;CAAA,IAAAC;AAAA,KAAA9D,EAAA,QAAA4D,4BAAA5D,EAAA,QAAAR,WAAAQ,EAAA,QAAAO,kBAAAP,EAAA,QAAAP,sBAAAO,EAAA,QAAAV,MAAAJ,QAAA;AAGO2E,cAAA;AACR,OAAI,CAACvE,MAAKJ,UAAWuB,WAAUiD,WAA3B,CAAwClE,SAAO;AACjDiB,eAAUiD,UAAW;AAErB,QAAI,CAACjE,mBAAkB;AAGvBsE,qBAAW;AAKT,SAAIH,0BAA0B,CAAA;AAE9BrD,oBAAcmD,SAAeM,OAAE;OAC9B,EAAE;cACI1E,MAAKJ,OACduB,YAAUiD,UAAW;;AAEtBI,QAAA;GACDxE,MAAKJ;GACLqB;GACAf;GACAC;GACAmE;GACD;AAAA5D,IAAA,MAAA4D;AAAA5D,IAAA,MAAAR;AAAAQ,IAAA,MAAAO;AAAAP,IAAA,MAAAP;AAAAO,IAAA,MAAAV,MAAAJ;AAAAc,IAAA,MAAA6D;AAAA7D,IAAA,MAAA8D;QAAA;AAAAD,QAAA7D,EAAA;AAAA8D,QAAA9D,EAAA;;AAzBDxC,WAAUqG,KAmBPC,IAMD;CAOW,MAAAG,MAAC3E,MAAK4E,iBAAN;CAAuC,IAAAC;AAAA,KAAAnE,EAAA,QAAAwC,QAAA;AAC3C2B,QAAA3B,SAAA;GAAA4B,OAEM;GAAMC,WACF;GAEJ,GALNrD;AAKMhB,IAAA,MAAAwC;AAAAxC,IAAA,MAAAmE;OAAAA,OAAAnE,EAAA;CAEF,MAAAsE,MAAA,CAAC9B;CAAM,IAAA+B;AAAA,KAAAvE,EAAA,QAAAwC,UAAAxC,EAAA,QAAAsE,KAAA;AADZC,QAAA;GAAAC,SACKF;GAAOG,MACVjC;GACP;AAAAxC,IAAA,MAAAwC;AAAAxC,IAAA,MAAAsE;AAAAtE,IAAA,MAAAuE;OAAAA,OAAAvE,EAAA;CACU,MAAA0E,MAAA,CAACpF,MAAKJ;CAAO,IAAAyF;AAAA,KAAA3E,EAAA,QAAAT,iBAAAS,EAAA,QAAAoC,aAAApC,EAAA,QAAAV,MAAAsC,SAAA5B,EAAA,QAAAiE,OAAAjE,EAAA,QAAAmE,OAAAnE,EAAA,QAAAuE,OAAAvE,EAAA,QAAA0E,KAAA;AAhBNC,QAAA;GAAA,GACfvC;GAASrC,KACPS;GAAOuB,SACHzC,MAAKsC;GAAMrC;GAAAqF,WAETX;GAAuCY,OAC3CV;GAKMW,MACPP;GAGLQ,WACUL;GACZ;AAAA1E,IAAA,MAAAT;AAAAS,IAAA,MAAAoC;AAAApC,IAAA,MAAAV,MAAAsC;AAAA5B,IAAA,MAAAiE;AAAAjE,IAAA,MAAAmE;AAAAnE,IAAA,MAAAuE;AAAAvE,IAAA,MAAA0E;AAAA1E,IAAA,MAAA2E;OAAAA,OAAA3E,EAAA;CAjBD,MAAAgF,cAAoBL;CAiBE,IAAAM;AAAA,KAAAjF,EAAA,QAAAV,MAAAsC,OAAA;AAelBqD,QAAA,oBAAC,iBAAyB,WAAA3F,MAAKsC,QAAU;AAAA5B,IAAA,MAAAV,MAAAsC;AAAA5B,IAAA,MAAAiF;OAAAA,OAAAjF,EAAA;CAAA,IAAAkF;AAAA,KAAAlF,EAAA,QAAAV,MAAAsC,OAAA;AAEzCsD,QAAA,oBAAC,iBAAyB,WAAA5F,MAAKsC,QAAU;AAAA5B,IAAA,MAAAV,MAAAsC;AAAA5B,IAAA,MAAAkF;OAAAA,OAAAlF,EAAA;CAAA,IAAAmF;AAAA,KAAAnF,EAAA,QAAA0B,QAAA1B,EAAA,QAAAP,sBAAAO,EAAA,QAAAiF,OAAAjF,EAAA,QAAAkF,KAAA;AAH3CC,QAAA,qBAAC;GAAyB1F,cAAAA;;IACxBwF;IACCvD;IACDwD;;IACW;AAAAlF,IAAA,MAAA0B;AAAA1B,IAAA,MAAAP;AAAAO,IAAA,MAAAiF;AAAAjF,IAAA,MAAAkF;AAAAlF,IAAA,MAAAmF;OAAAA,OAAAnF,EAAA;CALf,MAAAoF,WACED;CAKA,IAAAE;AAAA,KAAArF,EAAA,QAAAR,WAAAQ,EAAA,QAAAO,kBAAAP,EAAA,QAAAV,OAAA;AAe4C+F,SAAAC,OAAA;AAQ5C,OAAI,CAAChG,MAAKJ,OAAO,QAAS;AAO1B,OAAIR,kBAAkB4G,IAAI/E,eAAcmD,QAAS,CAAA,QAAS;GAE1D,MAAA6B,gBAAsBD,GAAEE,QAAS,yBAAyB;AAC1D,OAAI,CAACD,eAAa;AAChB,QAAID,GAAEE,QAAS,sBAAsB,CAAA,QAAS;AAO9C,QAAIF,GAAEE,QAAS,yBAAyB,EAAA;AACtCzB,sBAAiBzE,MAAKsC,OAAQ,EAAE,EAAE;AAAA,YAC3B;;AACR,WACM;;AAET,OACEpC,YACC+F,kBAAkBhF,eAAcmD,WAC/BnD,eAAcmD,SAAkBC,SAAC2B,GAAI,EAAA,QAEhC;AAET,OAAIC,kBAAkBhF,eAAcmD,QAAQ,QAAS;AAAK,UACnD;;AACR1D,IAAA,MAAAR;AAAAQ,IAAA,MAAAO;AAAAP,IAAA,MAAAV;AAAAU,IAAA,MAAAqF;OAAAA,OAAArF,EAAA;CAzCD,MAAAyF,+BAAqCrH,SAASiH,IAyC5C;CAEE5B,IAAAA;AACJ,KAAIjB,QAAM;EAAA,IAAAkD;AAAA,MAAA1F,EAAA,QAAAoF,YAAApF,EAAA,QAAAyF,gCAAAzF,EAAA,QAAAV,MAAAsC,SAAA5B,EAAA,QAAAV,MAAAJ,QAAA;AAENwG,SAAA,oBAAC;IACMtF,KAAAA;IACG,QAAAd,MAAKJ;IACiBuG;IACrB,SAAAnG,MAAKsC;cAEbwD;KACI;AAAApF,KAAA,MAAAoF;AAAApF,KAAA,MAAAyF;AAAAzF,KAAA,MAAAV,MAAAsC;AAAA5B,KAAA,MAAAV,MAAAJ;AAAAc,KAAA,MAAA0F;QAAAA,OAAA1F,EAAA;AARTyD,cACEA;QADK;EAkBQ,MAAAiC,MAAApD,aAAAtB;EAAsB,IAAA2E;AAAA,MAAA3F,EAAA,QAAAoF,YAAApF,EAAA,QAAAG,kBAAAH,EAAA,QAAAmD,cAAA0B,SAAA7E,EAAA,QAAAyF,gCAAAzF,EAAA,QAAAV,MAAAsC,SAAA5B,EAAA,QAAAV,MAAAJ,UAAAc,EAAA,QAAA0F,KAAA;AANnCC,SAAA,oBAAC;IACMxF,KAAAA;IACL,WAAA;IACA,YAAA;IACQ,QAAAb,MAAKJ;IACN,OAAAiE,cAAa0B;IACT,WAAAa;IACmBD;IACrB,SAAAnG,MAAKsC;cAEbwD;KACO;AAAApF,KAAA,MAAAoF;AAAApF,KAAA,MAAAG;AAAAH,KAAA,MAAAmD,cAAA0B;AAAA7E,KAAA,MAAAyF;AAAAzF,KAAA,MAAAV,MAAAsC;AAAA5B,KAAA,MAAAV,MAAAJ;AAAAc,KAAA,MAAA0F;AAAA1F,KAAA,MAAA2F;QAAAA,OAAA3F,EAAA;AAZZyD,cACEA;;CAkB2C,MAAAiC,MAAA9E,YAAY;CAAW,IAAA+E;AAAA,KAAA3F,EAAA,QAAA0F,KAAA;AAAzDC,QAAA,EAAAC,cAAgB,EAAAC,gBAAkBH,KAAwB,EAAG;AAAA1F,IAAA,MAAA0F;AAAA1F,IAAA,MAAA2F;OAAAA,OAAA3F,EAAA;CAAA,IAAA8F;AAAA,KAAA9F,EAAA,QAAAR,WAAAQ,EAAA,QAAAyB,eAAAzB,EAAA,QAAAmC,oBAAAnC,EAAA,QAAAO,kBAAAP,EAAA,QAAAV,MAAAJ,QAAA;AAEnE4G,QAAA,CAACtG,UACA,oBAAC;GAAc,GACT2C;GACC5B,KAAAA;GACL,wBAAA;GACW,WAAAjB,MAAKJ;aAEfuC;IAEG,GATP;AASOzB,IAAA,MAAAR;AAAAQ,IAAA,MAAAyB;AAAAzB,IAAA,MAAAmC;AAAAnC,IAAA,MAAAO;AAAAP,IAAA,MAAAV,MAAAJ;AAAAc,IAAA,MAAA8F;OAAAA,OAAA9F,EAAA;CAAA,IAAA+F;AAAA,KAAA/F,EAAA,QAAA2F,OAAA3F,EAAA,QAAA8F,KAAA;AAZVC,QAAA,oBAAC;GACQ,OAAAJ;aAENG;IAUY;AAAA9F,IAAA,MAAA2F;AAAA3F,IAAA,MAAA8F;AAAA9F,IAAA,MAAA+F;OAAAA,OAAA/F,EAAA;CAAA,IAAAgG;AAAA,KAAAhG,EAAA,QAAAgF,eAAAhF,EAAA,QAAAiG,WAAA;AACfD,QAAA,oBAAA,YAAA;GAA6BhB,OAAAA;aAAcvB;IAA+B;AAAAzD,IAAA,MAAAgF;AAAAhF,IAAA,MAAAiG;AAAAjG,IAAA,MAAAgG;OAAAA,OAAAhG,EAAA;CAAA,IAAAkG;AAAA,KAAAlG,EAAA,QAAA+F,OAAA/F,EAAA,QAAAgG,KAAA;AAf5EE,QAAA,qBAAC,uBACCH,KAcAC,OACS;AAAAhG,IAAA,MAAA+F;AAAA/F,IAAA,MAAAgG;AAAAhG,IAAA,MAAAkG;OAAAA,OAAAlG,EAAA;AAAA,QAhBXkG;;;;;;AAwBJ,IAAIC,eAAejJ,WAAW2C,YAAY;AAE1CsG,aAAaC,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { MenuContext, useMenuContext } from "./context.js";
@@ -35,12 +35,12 @@ function InternalSubMenuTrigger(props) {
35
35
  containerRef: popoverRef
36
36
  });
37
37
  const { menuTriggerProps: rawTriggerProps, menuProps } = useMenuTrigger({
38
- type: "submenu",
38
+ type: "menu",
39
39
  isDisabled
40
40
  }, state, domTriggerRef);
41
41
  const parentContext = useMenuContext();
42
42
  const { onKeyDown: _mtOnKeyDown, onPress: _mtOnPress, onPressStart: _mtOnPressStart, onKeyUp: _mtOnKeyUp, ...menuTriggerProps } = rawTriggerProps;
43
- const { overlayProps: positionProps } = useOverlayPosition({
43
+ const { overlayProps: positionProps, placement: resolvedPlacement } = useOverlayPosition({
44
44
  targetRef: domTriggerRef,
45
45
  overlayRef: popoverRef,
46
46
  scrollRef: menuRef,
@@ -181,7 +181,7 @@ function InternalSubMenuTrigger(props) {
181
181
  isNonModal: true,
182
182
  isOpen: !parentContext.isClosing,
183
183
  style: positionProps.style,
184
- placement,
184
+ placement: resolvedPlacement ?? void 0,
185
185
  shouldCloseOnInteractOutside,
186
186
  onClose: state.close,
187
187
  ...overlayProps,