Files
spacedrive/interface/components/Menu.tsx
nikec 99ccb8f8c7 [ENG-972] quick view improvements (#1233)
* quick preview improvements

* fix ts

* improvements

* fix merge

* non-indexed support

* Update index.tsx

* Update pnpm-lock.yaml

* update quick preview

* sidebar icon weight

* fix thumb

* ts

* fix focus

* remove usePortal

* quick preview store

* Update index.tsx

* Update index.tsx

* cleanup

* add tooltip to name

* hide nav buttons and match explorer nav buttons

---------

Co-authored-by: Jamie Pine <32987599+jamiepine@users.noreply.github.com>
2023-09-08 11:45:37 +00:00

49 lines
1.1 KiB
TypeScript

import { useMemo } from 'react';
import { ContextMenu, DropdownMenu, useContextMenuContext, useDropdownMenuContext } from '@sd/ui';
export const useMenu = (): typeof DropdownMenu | typeof ContextMenu | undefined => {
const isDropdownMenu = useDropdownMenuContext();
const isContextMenu = useContextMenuContext();
const menu = useMemo(
() => (isDropdownMenu ? DropdownMenu : isContextMenu ? ContextMenu : undefined),
[isDropdownMenu, isContextMenu]
);
return menu;
};
const Separator = (
props: Parameters<typeof ContextMenu.Separator | typeof DropdownMenu.Separator>[0]
) => {
const Menu = useMenu();
if (!Menu) return null;
return <Menu.Separator {...props} />;
};
const SubMenu = (
props: Parameters<typeof ContextMenu.SubMenu | typeof DropdownMenu.SubMenu>[0]
) => {
const Menu = useMenu();
if (!Menu) return null;
return <Menu.SubMenu {...props} />;
};
const Item = (props: Parameters<typeof ContextMenu.Item | typeof DropdownMenu.Item>[0]) => {
const ContextMenu = useMenu();
if (!ContextMenu) return null;
return <ContextMenu.Item {...props} />;
};
export const Menu = {
Item,
Separator,
SubMenu
};