matrix-react-sdk
Version:
SDK for matrix.org using React
82 lines (81 loc) • 3.09 kB
TypeScript
import React, { RefObject } from "react";
interface IPosition {
top?: number;
bottom?: number;
left?: number;
right?: number;
}
export declare enum ChevronFace {
Top = "top",
Bottom = "bottom",
Left = "left",
Right = "right",
None = "none"
}
export interface IProps extends IPosition {
menuWidth?: number;
menuHeight?: number;
chevronOffset?: number;
chevronFace?: ChevronFace;
menuPaddingTop?: number;
menuPaddingBottom?: number;
menuPaddingLeft?: number;
menuPaddingRight?: number;
zIndex?: number;
hasBackground?: boolean;
managed?: boolean;
wrapperClassName?: string;
onFinished(): any;
windowResize?(): any;
}
interface IState {
contextMenuElem: HTMLDivElement;
}
export declare class ContextMenu extends React.PureComponent<IProps, IState> {
private initialFocus;
static defaultProps: {
hasBackground: boolean;
managed: boolean;
};
constructor(props: any, context: any);
componentWillUnmount(): void;
private collectContextMenuRect;
private onContextMenu;
private onContextMenuPreventBubbling;
private onFinished;
private onMoveFocus;
private onMoveFocusHomeEnd;
private onKeyDown;
protected renderMenu(hasBackground?: boolean): JSX.Element;
render(): React.ReactChild;
}
export declare const toRightOf: (elementRect: Pick<DOMRect, "right" | "top" | "height">, chevronOffset?: number) => {
left: number;
top: number;
chevronOffset: number;
};
export declare const aboveLeftOf: (elementRect: DOMRect, chevronFace?: ChevronFace, vPadding?: number) => IPosition & {
chevronFace: ChevronFace;
};
export declare const alwaysAboveLeftOf: (elementRect: DOMRect, chevronFace?: ChevronFace, vPadding?: number) => IPosition & {
chevronFace: ChevronFace;
};
export declare const alwaysAboveRightOf: (elementRect: DOMRect, chevronFace?: ChevronFace, vPadding?: number) => IPosition & {
chevronFace: ChevronFace;
};
declare type ContextMenuTuple<T> = [boolean, RefObject<T>, () => void, () => void, (val: boolean) => void];
export declare const useContextMenu: <T extends unknown = HTMLElement>() => ContextMenuTuple<T>;
export default class LegacyContextMenu extends ContextMenu {
render(): JSX.Element;
}
export declare function createMenu(ElementClass: any, props: any): {
close: (...args: any[]) => void;
};
export { ContextMenuButton } from "../../accessibility/context_menu/ContextMenuButton";
export { ContextMenuTooltipButton } from "../../accessibility/context_menu/ContextMenuTooltipButton";
export { MenuGroup } from "../../accessibility/context_menu/MenuGroup";
export { MenuItem } from "../../accessibility/context_menu/MenuItem";
export { MenuItemCheckbox } from "../../accessibility/context_menu/MenuItemCheckbox";
export { MenuItemRadio } from "../../accessibility/context_menu/MenuItemRadio";
export { StyledMenuItemCheckbox } from "../../accessibility/context_menu/StyledMenuItemCheckbox";
export { StyledMenuItemRadio } from "../../accessibility/context_menu/StyledMenuItemRadio";