UNPKG

1.79 kBTypeScriptView Raw
1import * as React from "react";
2import PopperJS from "popper.js";
3import { BoxProps } from "../Box";
4import { PopperProps } from "../Popper";
5import { PseudoBoxProps } from "../PseudoBox";
6
7interface InternalState {
8 isOpen?: boolean;
9 onClose?: () => void;
10}
11
12type MenuChildren =
13 | {
14 children: React.ReactNode;
15 }
16 | { children: (props: InternalState) => React.ReactNode };
17
18export interface IMenu {
19 isOpen?: boolean;
20 autoSelect?: boolean;
21 closeOnBlur?: boolean;
22 closeOnSelect?: boolean;
23}
24
25export type MenuProps = IMenu & MenuChildren;
26declare const Menu: React.FC<MenuProps>;
27export default Menu;
28
29export interface IMenuButton {
30 onClick?: React.MouseEventHandler<HTMLElement>;
31 onKeyDown?: React.KeyboardEventHandler<HTMLElement>;
32}
33export type MenuButtonProps = PseudoBoxProps & IMenuButton;
34export const MenuButton: React.FC<MenuButtonProps>;
35
36export interface IMenuList {
37 onKeydown?: React.KeyboardEventHandler<HTMLElement>;
38 onBlur?: React.FocusEventHandler<HTMLElement>;
39}
40export type MenuListProps = IMenuList & PopperProps;
41export const MenuList: React.FC<MenuListProps>;
42
43interface IMenuItem {
44 isDisabled?: boolean;
45 role?: "menuitem" | "menuitemradio" | "menuitemcheckbox";
46 onClick?: React.KeyboardEventHandler<HTMLElement>;
47 onMouseLeave?: React.MouseEventHandler<HTMLElement>;
48 onKeyDown?: React.KeyboardEventHandler<HTMLElement>;
49 onMouseEnter?: React.MouseEventHandler<HTMLElement>;
50}
51export type MenuItemProps = IMenuItem & PseudoBoxProps;
52
53export const MenuItem: React.FC<MenuItemProps>;
54
55interface IMenuGroup {
56 title?: string;
57 children: React.ReactNode;
58}
59export type MenuGroupProps = IMenuGroup & BoxProps;
60export const MenuGroup: React.FC<MenuGroupProps>;
61
62export const MenuDivider: React.FC<BoxProps>;
63export * from "./MenuOption";