import { Component, ReactNode } from 'react'; import PropTypes from 'prop-types'; import { TriggerEvent, StyleProps, MenuId } from '../types'; export interface MenuProps extends StyleProps { /** * Unique id to identify the menu. Use to Trigger the corresponding menu */ id: MenuId; /** * Any valid node that can be rendered */ children: ReactNode; /** * Theme is appended to `react-contexify__theme--${given theme}`. * * Built-in theme are `light` and `dark` */ theme?: string; /** * Animation is appended to `.react-contexify__will-enter--${given animation}` * * Built-in animations are fade, flip, pop, zoom */ animation?: string; /** * Invoked when the menu is shown. */ onShown?: () => void; /** * Invoked when the menu is hidden. */ onHidden?: () => void; } interface MenuState { x: number; y: number; visible: boolean; nativeEvent: TriggerEvent; propsFromTrigger: object; } declare class Menu extends Component { static propTypes: { id: PropTypes.Validator; children: PropTypes.Validator; theme: PropTypes.Requireable; animation: PropTypes.Requireable; className: PropTypes.Requireable; style: PropTypes.Requireable; }; state: { x: number; y: number; visible: boolean; nativeEvent: any; propsFromTrigger: {}; onShown: null; onHidden: null; }; menuRef: HTMLDivElement; unsub: (() => boolean)[]; componentDidMount(): void; componentWillUnmount(): void; componentDidUpdate(_: Readonly, prevState: Readonly): void; bindWindowEvent: () => void; unBindWindowEvent: () => void; onMouseEnter: () => void; onMouseLeave: () => void; hide: (event?: Event | undefined) => void; handleKeyboard: (e: KeyboardEvent) => void; setRef: (ref: HTMLDivElement) => void; setMenuPosition(): void; getMousePosition(e: TriggerEvent): { x: number; y: number; }; show: (e: TriggerEvent, props: { [key: string]: any; x?: number | undefined; y?: number | undefined; }) => void; render(): JSX.Element; } export { Menu };