/**
* Add dropdown menu that you add onto any component.
*
* Similar to the context-actions package, accepts list of actions to create a dropdown menu.
* Note: Does not support nested sub-menus.
*
* Usage:
* let actions = [{
* title: 'My Action',
* action: () => { alert('My Action Clicked!') }
* icon: faPrint, // Limited to FontAwesome icons for now.
* shortcut: Shortcut, // Shortcut class instance
* group: ContextActions.groups.default, // What group to group the context action with
* order: null // Int where to order within group
* }];
*
* Usage:
* 1. Auto bind click to open event to parent
*
* Click in this container
*
*
*
* 2. Control via prop
*
* DropdownMenu will not react to the click event if isShown prop is used
*
*
*
*/
import React, { PureComponent } from 'react';
import { type PopperOptions } from 'popper.js';
import { Popper } from '../popper';
import { type MenuOptions } from './Menu';
import { type ContextAction } from '../context-actions/ContextActionUtils';
import './DropdownMenu.scss';
export type DropdownAction = ContextAction & {
actions?: never;
};
export type DropdownActions = (() => DropdownAction[]) | DropdownAction | DropdownAction[];
type DropdownMenuProps = {
actions: DropdownActions;
isShown: boolean | null;
onMenuClosed: () => void;
onMenuOpened: () => void;
options: MenuOptions;
popperOptions: PopperOptions;
popperClassName: string;
menuStyle: React.CSSProperties;
'data-testid'?: string;
};
declare class DropdownMenu extends PureComponent {
static defaultProps: {
isShown: null;
onMenuClosed(): void;
onMenuOpened(): void;
options: {};
popperOptions: {};
popperClassName: string;
menuStyle: {};
'data-testid': undefined;
};
constructor(props: DropdownMenuProps);
componentDidMount(): void;
componentDidUpdate(prevProps: DropdownMenuProps): void;
componentWillUnmount(): void;
container: React.RefObject;
parent: Element | null;
popper: React.RefObject;
isOpen: boolean;
closeMenu(): void;
openMenu(): void;
scheduleUpdate(): void;
handleClick(e: Event): void;
handleCloseMenu(): void;
handleExited(): void;
render(): JSX.Element;
}
export default DropdownMenu;
//# sourceMappingURL=DropdownMenu.d.ts.map