jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
50 lines (49 loc) • 1.69 kB
TypeScript
import React from 'react';
import type { MenuDivider, MenuItem } from '../types';
interface ContextMenuProps {
className?: string;
container?: HTMLElement | null | (() => HTMLElement);
}
interface ContextMenuState {
isOpened: boolean;
menus: Array<MenuItem | MenuDivider>;
x: number;
y: number;
align?: 'left' | 'right';
onClose?: (ctx: ContextMenu) => void;
}
export declare class ContextMenu extends React.Component<ContextMenuProps, ContextMenuState> {
static instance: any;
static getInstance(): Promise<any>;
state: ContextMenuState;
menuRef: React.RefObject<HTMLDivElement>;
originInstance: this | null;
prevInfo: {
x: number;
y: number;
} | null;
unmount: boolean;
constructor(props: ContextMenuProps);
componentDidMount(): void;
componentWillUnmount(): void;
openContextMenus(info: {
x: number;
y: number;
}, menus: Array<MenuItem>, onClose?: (ctx: ContextMenu) => void): void;
close(): void;
handleOutClick(e: Event): void;
handleClick(item: MenuItem): void;
handleKeyDown(e: KeyboardEvent): void;
handleMouseEnter(item: MenuItem): void;
handleMouseLeave(item: MenuItem): void;
handleEnter(menu: HTMLElement): void;
handleSelfContextMenu(e: React.MouseEvent): void;
renderMenus(menus: Array<MenuItem | MenuDivider>): JSX.Element[];
render(): JSX.Element;
}
export default ContextMenu;
export declare function openContextMenus(info: Event | {
x: number;
y: number;
}, menus: Array<MenuItem | MenuDivider>, onClose?: (ctx: ContextMenu) => void): Promise<any>;
export declare function closeContextMenus(): Promise<any>;