import React, { Component, type ReactNode, type FocusEvent, type MouseEvent, type KeyboardEvent } from 'react'; import PropTypes from 'prop-types'; import { type ClassPropsWithDefault } from '../../util'; import type { ItemProps, K2N, MenuProps, P2N } from '../types'; import type MenuItem from './item'; import type SelectableItem from './selectable-item'; export interface MenuState { lastVisibleIndex: number | undefined; root: Menu; newChildren: ReactNode[]; _k2n: K2N; _p2n: P2N; tabbableKey: string | undefined | null; openKeys: string[]; selectedKeys: string[]; focusedKey: string | null | undefined; lastMode?: MenuProps['mode']; } export type MenuPropsWithDefaults = ClassPropsWithDefault; export declare class Menu extends Component { static isNextMenu: boolean; static propTypes: { prefix: PropTypes.Requireable; pure: PropTypes.Requireable; rtl: PropTypes.Requireable; className: PropTypes.Requireable; children: PropTypes.Requireable; onItemClick: PropTypes.Requireable<(...args: any[]) => any>; openKeys: PropTypes.Requireable>; defaultOpenKeys: PropTypes.Requireable>; defaultOpenAll: PropTypes.Requireable; onOpen: PropTypes.Requireable<(...args: any[]) => any>; mode: PropTypes.Requireable; triggerType: PropTypes.Requireable; openMode: PropTypes.Requireable; inlineIndent: PropTypes.Requireable; inlineArrowDirection: PropTypes.Requireable; popupAutoWidth: PropTypes.Requireable; popupAlign: PropTypes.Requireable; popupProps: PropTypes.Requireable; popupClassName: PropTypes.Requireable; popupStyle: PropTypes.Requireable; selectedKeys: PropTypes.Requireable>; defaultSelectedKeys: PropTypes.Requireable>; onSelect: PropTypes.Requireable<(...args: any[]) => any>; selectMode: PropTypes.Requireable; shallowSelect: PropTypes.Requireable; hasSelectedIcon: PropTypes.Requireable; labelToggleChecked: PropTypes.Requireable; isSelectIconRight: PropTypes.Requireable; direction: PropTypes.Requireable; hozAlign: PropTypes.Requireable; hozInLine: PropTypes.Requireable; renderMore: PropTypes.Requireable<(...args: any[]) => any>; header: PropTypes.Requireable; footer: PropTypes.Requireable; footerWrapperClassName: PropTypes.Requireable; autoFocus: PropTypes.Requireable; focusedKey: PropTypes.Requireable>; focusable: PropTypes.Requireable; onItemFocus: PropTypes.Requireable<(...args: any[]) => any>; onBlur: PropTypes.Requireable<(...args: any[]) => any>; embeddable: PropTypes.Requireable; onItemKeyDown: PropTypes.Requireable<(...args: any[]) => any>; expandAnimation: PropTypes.Requireable; itemClassName: PropTypes.Requireable; icons: PropTypes.Requireable; flatenContent: PropTypes.Requireable; locale: PropTypes.Requireable; defaultPropsConfig: PropTypes.Requireable; errorBoundary: PropTypes.Requireable>; warning: PropTypes.Requireable; device: PropTypes.Requireable; popupContainer: PropTypes.Requireable; }; static defaultProps: { prefix: string; pure: boolean; defaultOpenKeys: never[]; defaultOpenAll: boolean; onOpen: () => void; mode: string; triggerType: string; openMode: string; inlineIndent: number; inlineArrowDirection: string; popupAutoWidth: boolean; popupAlign: string; popupProps: {}; defaultSelectedKeys: never[]; onSelect: () => void; shallowSelect: boolean; hasSelectedIcon: boolean; isSelectIconRight: boolean; labelToggleChecked: boolean; direction: string; hozAlign: string; hozInLine: boolean; autoFocus: boolean; focusable: boolean; embeddable: boolean; onItemFocus: () => void; onItemKeyDown: () => void; onItemClick: () => void; expandAnimation: boolean; icons: {}; }; static displayName: string; static getDerivedStateFromProps(nextProps: MenuPropsWithDefaults, prevState: MenuState): Partial; readonly props: MenuPropsWithDefaults; popupNodes: HTMLElement[]; menuNode: HTMLUListElement; menuContent: HTMLUListElement | null; menuHeader: HTMLLIElement | null; menuFooter: HTMLLIElement | null; menuItemSizes: number[]; constructor(props: MenuProps); componentDidMount(): void; componentDidUpdate(prevProps: MenuProps, prevState: MenuState): void; componentWillUnmount(): void; adjustChildrenWidth(): void; onBlur(e: FocusEvent): void; getInitOpenKeys(props: MenuPropsWithDefaults, _k2n: K2N): string[]; getUpdateChildren: () => { newChildren: React.ReactNode[]; _k2n: K2N; _p2n: P2N; }; handleOpen(key: string, open: boolean, triggerType?: string, e?: Event): void; getPath(key: string, _k2n: K2N, _p2n: P2N): { keyPath: string[]; labelPath: ({} | null | undefined)[]; }; handleSelect(key: string, select: boolean, menuItem: SelectableItem): void; handleItemClick(key: string, item: MenuItem, e: MouseEvent | KeyboardEvent): void; getAvailableKey(pos: string, prev: boolean): string | null; getParentKey(pos: string): string; handleItemKeyDown(key: string, type: ItemProps['type'], item: MenuItem, e: KeyboardEvent): void; menuContentRef: (ref: HTMLUListElement | null) => void; menuHeaderRef: (ref: HTMLLIElement | null) => void; menuFooterRef: (ref: HTMLLIElement | null) => void; render(): React.JSX.Element; } declare const _default: typeof Menu; export default _default;