import React from 'react'; import { TriggerAction } from '../Trigger/type'; import { MoreContextProps } from '../More/type'; export declare type Mode = 'inline' | 'vertical' | 'horizontal'; export interface MenuBaseData { key: React.Key; title?: React.ReactNode; disabled?: boolean; children?: MenuBaseData[]; type?: string; className?: string; } declare type MenuWithExtraData> = MenuBaseData & T; export declare type RecursiveMenuWithExtraData = MenuBaseData> = MenuWithExtraData & { children?: RecursiveMenuWithExtraData[]; }; export declare type UpdateActive = (activePath: string) => void; export declare type UpdateOpen = () => void; export declare type UpdateInPath = () => void; export interface MenuContext { bindItem?: (id: string, key: React.Key, updateActive: UpdateActive, updateOpen: UpdateOpen, updateInPath: UpdateInPath) => void; unbindItem?: (id: string) => void; checkActive?: (id: string) => boolean; checkOpen?: (id: string) => boolean; checkInPath?: (id: string) => boolean; } export interface MenuProps = Record> extends Omit, 'onClick' | 'onSelect'> { style?: React.CSSProperties; className?: string; data: RecursiveMenuWithExtraData[]; defaultActiveKey?: React.Key; defaultOpenKeys?: React.Key[]; activeKey?: React.Key; openKeys?: string[] | number[]; inlineIndent?: number; mode?: Mode; onClick?(data: RecursiveMenuWithExtraData, path: React.Key[]): void; renderItem?: (data: RecursiveMenuWithExtraData) => React.ReactNode; onOpenChange?(keys: React.Key[]): void; subMenuTriggerActions?: Exclude[]; onSelect?: (dataItem: RecursiveMenuWithExtraData, path: React.Key[]) => void; } export interface MenuItemProps extends Partial { dataItem: RecursiveMenuWithExtraData; children: React.ReactNode; } export interface MenuItemTriggerActions { updateActive: (activePath: string) => void; updateOpen: () => void; updateInPath: () => void; } export interface MenuPathRegisterContextProps { registerPath(key: React.Key, trigger: MenuItemTriggerActions): void; unregisterPath(key: React.Key): void; } export interface MenuEventRegisterContextProps { registerEvents(key: React.Key): void; unregisterEvents(key: React.Key): void; } export interface MenuContextProps { registerMenuItem(key: React.Key, options: RegisterMenuItemOptions): void; unregisterMenuItem(key: React.Key): void; registerSubMenu(key: React.Key, options: RegisterSubMenuOptions): void; unregisterSubMenu(key: React.Key): void; registerMenuItemGroup(key: React.Key, options: RegisterMenuItemGroupOptions): void; unregisterMenuItemGroup(key: React.Key): void; mode: MenuProps['mode']; inlineIndent: MenuProps['inlineIndent']; onLeafClick(dataItem: RecursiveMenuWithExtraData): void; onInlineSubMenuTitleClick: (dataItem: RecursiveMenuWithExtraData, open: boolean) => void; onMouseEnterOpen: (dataItem: RecursiveMenuWithExtraData) => void; onMouseLeaveClose: (dataItem: RecursiveMenuWithExtraData) => void; onMouseClickToggle: (dataItem: RecursiveMenuWithExtraData, open: boolean) => void; subMenuTriggerActions: MenuProps['subMenuTriggerActions']; manualExecuteAction: () => void; renderItem: (data: RecursiveMenuWithExtraData) => React.ReactNode; componentKey: string; } export interface PathContextProps { path: React.Key[]; } export interface MenuItemActions { updateActive(active: boolean): void; } export interface SubMenuActions { updateOpen(open: boolean): void; updateInPath(inPath: boolean): void; } export interface RegisterMenuItemOptions extends MenuItemActions { path: React.Key[]; } export interface RegisterSubMenuOptions extends SubMenuActions { path: React.Key[]; } export interface RegisterMenuItemGroupOptions { path: React.Key[]; } export interface SubMenuProps { dataItem: RecursiveMenuWithExtraData; children: React.ReactNode; } export interface InlineTriggerProps { visible: boolean; path: React.Key[]; popupContent: React.ReactNode; children: React.ReactNode; dataItem: RecursiveMenuWithExtraData; className: string; } export interface VerticalTriggerProps { visible: boolean; path: React.Key[]; popupContent: React.ReactNode; children: React.ReactNode; dataItem: RecursiveMenuWithExtraData; className: string; } export interface DirectionalTriggerProps { visible: boolean; path: React.Key[]; popupContent: React.ReactNode; children: React.ReactNode; dataItem: RecursiveMenuWithExtraData; className: string; direction: 'vertical' | 'horizontal'; } export interface MenuItemGroupProps extends Partial { dataItem: RecursiveMenuWithExtraData; children: React.ReactNode; } export {};