You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.5 KiB
96 lines
3.5 KiB
import * as React from 'react';
|
|
import { CSSMotionProps } from 'rc-motion';
|
|
import SubPopupMenu from './SubPopupMenu';
|
|
import { noop } from './util';
|
|
import { RenderIconType, SelectInfo, SelectEventHandler, DestroyEventHandler, MenuMode, OpenEventHandler, OpenAnimation, MiniStore, BuiltinPlacements, TriggerSubMenuAction, MenuClickEventHandler } from './interface';
|
|
export interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'onSelect'> {
|
|
defaultSelectedKeys?: string[];
|
|
defaultActiveFirst?: boolean;
|
|
selectedKeys?: string[];
|
|
defaultOpenKeys?: string[];
|
|
openKeys?: string[];
|
|
mode?: MenuMode;
|
|
getPopupContainer?: (node: HTMLElement) => HTMLElement;
|
|
onClick?: MenuClickEventHandler;
|
|
onSelect?: SelectEventHandler;
|
|
onOpenChange?: OpenEventHandler;
|
|
onDeselect?: SelectEventHandler;
|
|
onDestroy?: DestroyEventHandler;
|
|
subMenuOpenDelay?: number;
|
|
subMenuCloseDelay?: number;
|
|
forceSubMenuRender?: boolean;
|
|
triggerSubMenuAction?: TriggerSubMenuAction;
|
|
level?: number;
|
|
selectable?: boolean;
|
|
multiple?: boolean;
|
|
activeKey?: string;
|
|
prefixCls?: string;
|
|
builtinPlacements?: BuiltinPlacements;
|
|
itemIcon?: RenderIconType;
|
|
expandIcon?: RenderIconType;
|
|
overflowedIndicator?: React.ReactNode;
|
|
/** Menu motion define */
|
|
motion?: CSSMotionProps;
|
|
/** Default menu motion of each mode */
|
|
defaultMotions?: Partial<{
|
|
[key in MenuMode | 'other']: CSSMotionProps;
|
|
}>;
|
|
/** @deprecated Please use `motion` instead */
|
|
openTransitionName?: string;
|
|
/** @deprecated Please use `motion` instead */
|
|
openAnimation?: OpenAnimation;
|
|
/** direction of menu */
|
|
direction?: 'ltr' | 'rtl';
|
|
inlineCollapsed?: boolean;
|
|
/** SiderContextProps of layout in ant design */
|
|
siderCollapsed?: boolean;
|
|
collapsedWidth?: string | number;
|
|
}
|
|
export interface MenuState {
|
|
switchingModeFromInline: boolean;
|
|
}
|
|
declare class Menu extends React.Component<MenuProps, MenuState> {
|
|
static defaultProps: {
|
|
selectable: boolean;
|
|
onClick: typeof noop;
|
|
onSelect: typeof noop;
|
|
onOpenChange: typeof noop;
|
|
onDeselect: typeof noop;
|
|
defaultSelectedKeys: any[];
|
|
defaultOpenKeys: any[];
|
|
subMenuOpenDelay: number;
|
|
subMenuCloseDelay: number;
|
|
triggerSubMenuAction: string;
|
|
prefixCls: string;
|
|
className: string;
|
|
mode: string;
|
|
style: {};
|
|
builtinPlacements: {};
|
|
overflowedIndicator: JSX.Element;
|
|
};
|
|
constructor(props: MenuProps);
|
|
isRootMenu: boolean;
|
|
store: MiniStore;
|
|
innerMenu: typeof SubPopupMenu;
|
|
inlineOpenKeys: string[];
|
|
prevOpenKeys: string[];
|
|
componentDidMount(): void;
|
|
componentDidUpdate(prevProps: MenuProps): void;
|
|
updateOpentKeysWhenSwitchMode(prevProps: MenuProps): void;
|
|
updateMenuDisplay(): void;
|
|
onSelect: (selectInfo: SelectInfo) => void;
|
|
onClick: MenuClickEventHandler;
|
|
onKeyDown: (e: React.KeyboardEvent<HTMLElement>, callback: any) => void;
|
|
onOpenChange: (event: any) => void;
|
|
onDeselect: (selectInfo: SelectInfo) => void;
|
|
getRealMenuMode(): MenuMode;
|
|
getInlineCollapsed(): boolean;
|
|
onMouseEnter: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
|
|
onTransitionEnd: (e: React.TransitionEvent<HTMLDivElement>) => void;
|
|
restoreModeVerticalFromInline(): void;
|
|
setInnerMenu: (node: any) => void;
|
|
updateMiniStore(): void;
|
|
render(): JSX.Element;
|
|
}
|
|
export default Menu;
|