import { Component, ContextType, ReactNode, HTMLAttributes } from 'react';
import { MenuItemId } from './common';
import { MenuContext, MenuContextValue } from './menu-context';
type PropsFromMenuContextValue = Pick;
type PropsFromHTMLUListElement = Pick, 'onMouseDown'>;
export interface MenuProps extends PropsFromMenuContextValue, PropsFromHTMLUListElement {
/**
* 自定义 class
*/
className?: string;
/**
* 点选 item 的回调
*/
onSelect?: (id: MenuItemId, selectedIds: MenuItemId[], currentSelectedIds: MenuItemId[]) => void;
/**
* 反选 item 的回调
*/
onDeselect?: (id: MenuItemId, selectedIds: MenuItemId[], currentSelectedIds: MenuItemId[]) => void;
/**
* selectIds 变化时的回调
* select / deselect 均会调用
*/
onChangeSelectedIds?: (selectedIds: MenuItemId[]) => void;
/**
* 子菜单展开时的回调
*/
onExpand?: (id: MenuItemId, expandedIds: MenuItemId[], currentExpandedIds: MenuItemId[]) => void;
/**
* 子菜单折叠时的回调
*/
onCollapse?: (id: MenuItemId, expandedIds: MenuItemId[], currentExpandedIds: MenuItemId[]) => void;
/**
* expandedIds 变化时的回调
* expand / collapse 均会调用
*/
onChangeExpandedIds?: (expandedIds: MenuItemId[]) => void;
/**
* (暂定)使用反色,适用于深色背景色上
*/
reverseColor?: boolean;
}
interface MenuState {
cursorId: MenuItemId | null;
selectedIds: MenuItemId[];
expandedIds: MenuItemId[];
}
export declare class Menu extends Component {
static displayName: string;
static defaultProps: {
className: string;
layout: string;
size: string;
multiple: boolean;
multipleItemType: string;
reverseColor: boolean;
folderToggleSpot: string;
submenuType: string;
submenuPopperTriggerType: string;
};
static contextType: import("react").Context;
static getDerivedStateFromProps(nextProps: MenuProps): Partial | null;
context: ContextType;
state: MenuState;
get size(): "md" | "lg";
get type(): "nav" | "common";
get contextValue(): MenuContextValue;
get withPrefixIcon(): boolean;
handleItemClick: (id: MenuItemId) => void;
handleClickSubmenuToggle: (id: MenuItemId) => void;
moveCursor: (cursorId: MenuItemId | null) => void;
getChildrenArray(children: ReactNode): ReactNode[];
getContextValue(): MenuContextValue;
toggleSelected(id?: MenuItemId | null): void;
toggleExpanded(id: MenuItemId): void;
setSelectIds(selectedIds: MenuItemId[]): void;
setExpandedIds(expandedIds: MenuItemId[]): void;
renderMenu: () => import("react/jsx-runtime").JSX.Element;
render(): import("react/jsx-runtime").JSX.Element;
}
export {};