Add base context menu provider/component

This commit is contained in:
jeffvli
2022-12-28 15:32:02 -08:00
parent 8ebe882236
commit 4d5e4082bb
7 changed files with 280 additions and 1 deletions
@@ -0,0 +1,36 @@
import { createUseExternalEvents } from '@mantine/utils';
import { LibraryItem } from '/@/renderer/types';
export type OpenContextMenuProps = {
data: any[];
menuItems: SetContextMenuItems;
type: LibraryItem;
xPos: number;
yPos: number;
};
export type ContextMenuEvents = {
closeContextMenu: () => void;
openContextMenu: (args: OpenContextMenuProps) => void;
};
export type ContextMenuItem =
| 'play'
| 'playLast'
| 'playNext'
| 'addToPlaylist'
| 'addToFavorites'
| 'removeFromFavorites'
| 'setRating';
export type SetContextMenuItems = {
disabled?: boolean;
id: ContextMenuItem;
onClick?: () => void;
}[];
export const [useContextMenuEvents, createEvent] =
createUseExternalEvents<ContextMenuEvents>('context-menu');
export const openContextMenu = createEvent('openContextMenu');
export const closeContextMenu = createEvent('closeContextMenu');