birch-context-menu
Version:
Custom context menu for react
50 lines (42 loc) • 1.02 kB
text/typescript
export interface IMenuItem {
label: string
disabled: boolean
}
export interface ITextMenuItem extends IMenuItem {
sublabel?: string
onClick: () => void
}
export interface ISubMenuItem extends IMenuItem {
submenu: IContextMenuData
}
export type IMenuItemGroup = Array<ITextMenuItem | ISubMenuItem>
export type IContextMenuData = IMenuItemGroup[]
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface IContextMenuProps {
/** empty */
}
export interface IContextMenuReactContext {
showContextMenu: (
data:
| (ITextMenuItem | ISubMenuItem)[][]
| Promise<(ITextMenuItem | ISubMenuItem)[][]>,
pos?: IPosition
) => {
onShow: (cb: any) => void
onClose: (cb: any) => void
update: (newData: (ITextMenuItem | ISubMenuItem)[][]) => void
close: () => void
isActive: () => boolean
}
hideContextMenu: () => void
pos: {
x: number
y: number
}
visible: boolean
data: any[]
}
export interface IPosition {
x: number
y: number
}