|
1 | 1 | import React, { useEffect, useMemo, useRef } from 'react'; |
2 | 2 | import { Menu, MenuItem, MenuSeparator } from './leafygreen'; |
3 | | -import type { ContextMenuItem } from '@mongodb-js/compass-context-menu'; |
4 | | -import { useContextMenu } from '@mongodb-js/compass-context-menu'; |
5 | | -import { ContextMenuProvider as ContextMenuProviderBase } from '@mongodb-js/compass-context-menu'; |
6 | | -import type { |
7 | | - ContextMenuItemGroup, |
8 | | - ContextMenuWrapperProps, |
| 3 | + |
| 4 | +import { |
| 5 | + ContextMenuProvider as ContextMenuProviderBase, |
| 6 | + useContextMenu, |
| 7 | + type ContextMenuItem, |
| 8 | + type ContextMenuItemGroup, |
| 9 | + type ContextMenuWrapperProps, |
9 | 10 | } from '@mongodb-js/compass-context-menu'; |
10 | 11 |
|
| 12 | +export type { ContextMenuItem } from '@mongodb-js/compass-context-menu'; |
| 13 | + |
11 | 14 | export function ContextMenuProvider({ |
12 | 15 | children, |
13 | 16 | }: { |
@@ -95,3 +98,13 @@ export function useContextMenuItems( |
95 | 98 | const contextMenu = useContextMenu(); |
96 | 99 | return contextMenu.registerItems(memoizedItems); |
97 | 100 | } |
| 101 | + |
| 102 | +export function useContextMenuGroups( |
| 103 | + getGroups: () => ContextMenuItemGroup[], |
| 104 | + dependencies: React.DependencyList | undefined |
| 105 | +): React.RefCallback<HTMLElement> { |
| 106 | + // eslint-disable-next-line react-hooks/exhaustive-deps |
| 107 | + const memoizedGroups = useMemo(getGroups, dependencies); |
| 108 | + const contextMenu = useContextMenu(); |
| 109 | + return contextMenu.registerItems(...memoizedGroups); |
| 110 | +} |
0 commit comments