UNPKG

@alifd/next

Version:

A configurable component library for web built on React.

146 lines (145 loc) 6.66 kB
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<MenuProps, typeof Menu.defaultProps>; export declare class Menu extends Component<MenuProps, MenuState> { static isNextMenu: boolean; static propTypes: { prefix: PropTypes.Requireable<string>; pure: PropTypes.Requireable<boolean>; rtl: PropTypes.Requireable<boolean>; className: PropTypes.Requireable<string>; children: PropTypes.Requireable<PropTypes.ReactNodeLike>; onItemClick: PropTypes.Requireable<(...args: any[]) => any>; openKeys: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>; defaultOpenKeys: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>; defaultOpenAll: PropTypes.Requireable<boolean>; onOpen: PropTypes.Requireable<(...args: any[]) => any>; mode: PropTypes.Requireable<string>; triggerType: PropTypes.Requireable<string>; openMode: PropTypes.Requireable<string>; inlineIndent: PropTypes.Requireable<number>; inlineArrowDirection: PropTypes.Requireable<string>; popupAutoWidth: PropTypes.Requireable<boolean>; popupAlign: PropTypes.Requireable<string>; popupProps: PropTypes.Requireable<object>; popupClassName: PropTypes.Requireable<string>; popupStyle: PropTypes.Requireable<object>; selectedKeys: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>; defaultSelectedKeys: PropTypes.Requireable<NonNullable<string | any[] | null | undefined>>; onSelect: PropTypes.Requireable<(...args: any[]) => any>; selectMode: PropTypes.Requireable<string>; shallowSelect: PropTypes.Requireable<boolean>; hasSelectedIcon: PropTypes.Requireable<boolean>; labelToggleChecked: PropTypes.Requireable<boolean>; isSelectIconRight: PropTypes.Requireable<boolean>; direction: PropTypes.Requireable<string>; hozAlign: PropTypes.Requireable<string>; hozInLine: PropTypes.Requireable<boolean>; renderMore: PropTypes.Requireable<(...args: any[]) => any>; header: PropTypes.Requireable<PropTypes.ReactNodeLike>; footer: PropTypes.Requireable<PropTypes.ReactNodeLike>; footerWrapperClassName: PropTypes.Requireable<string>; autoFocus: PropTypes.Requireable<boolean>; focusedKey: PropTypes.Requireable<NonNullable<string | number | object | null | undefined>>; focusable: PropTypes.Requireable<boolean>; onItemFocus: PropTypes.Requireable<(...args: any[]) => any>; onBlur: PropTypes.Requireable<(...args: any[]) => any>; embeddable: PropTypes.Requireable<boolean>; onItemKeyDown: PropTypes.Requireable<(...args: any[]) => any>; expandAnimation: PropTypes.Requireable<boolean>; itemClassName: PropTypes.Requireable<string>; icons: PropTypes.Requireable<object>; flatenContent: PropTypes.Requireable<boolean>; locale: PropTypes.Requireable<object>; defaultPropsConfig: PropTypes.Requireable<object>; errorBoundary: PropTypes.Requireable<NonNullable<boolean | object | null | undefined>>; warning: PropTypes.Requireable<boolean>; device: PropTypes.Requireable<string>; popupContainer: PropTypes.Requireable<any>; }; 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<MenuState>; 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<HTMLUListElement>): 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;