import { ReactNode, MouseEventHandler } from 'react'; import { PopperProps } from '@befe/brick-comp-popper'; import { SvgFC } from '@befe/brick-core'; import { MenuSubmenuProps } from './menu-submenu'; export type MenuItemId = string | number | boolean; export type MenuLayout = 'vertical' | 'horizontal' | 'vertical-right'; export declare const MENU_SIZES: readonly ["md", "lg"]; export type MenuSize = (typeof MENU_SIZES)[number]; export type PropsFromPopper = Pick; export type MultipleItemType = 'normal' | 'checkbox'; export declare const SUBMENU_TYPES: readonly ["group", "folder", "popper"]; export type SubmenuType = (typeof SUBMENU_TYPES)[number]; export declare const SUBMENU_TYPE_DEFAULT = "folder"; export declare const SUBMENU_SELECTABLE_DEFAULT = false; export declare const SUBMENU_POPPER_TRIGGER_TYPE_DEFAULT = "hover"; export interface MenuItemObject { /** * 唯一标识 */ id?: MenuItemId; /** * 显示内容 */ label: ReactNode; /** * 是否禁用 */ disabled?: boolean; /** * icon,只支持第一层有 icon */ icon?: SvgFC; /** * 链接地址,item label 将 wrap 在 元素内 */ href?: string; /** * 的 target */ target?: string; /** * title tip */ title?: string; /** * 点击回调 */ onClick?: MouseEventHandler; /** * (submenu)类型 */ type?: MenuSubmenuProps['type']; /** * 是否选中 */ selected?: MenuSubmenuProps['selected']; /** * (submenu)是否展开 */ expanded?: MenuSubmenuProps['expanded']; /** * 子项 */ children?: MenuItemObject[]; } export interface NavProps { /** * menu */ menu?: T[]; /** * menu 已选择的 id 列表 控制值 * * 注意,如果选择用此 prop 控制 menu 的已选择,须保持 `menuItem.selected` 为 `undefined` */ menuSelectedIds?: MenuItemId[]; /** * menu 已选择的 id 列表 默认值 */ menuDefaultSelectedIds?: MenuItemId[]; /** * menu 已展开的 submenu id 列表 控制值 * * 注意,如果选择用此 prop 控制 menu 中 submenu 展开/收起,须保持 `menuItem.expanded` 为 `undefined` */ menuExpandedIds?: MenuItemId[]; /** * menu 已展开的 submenu id 列表 默认值 */ menuDefaultExpandedIds?: MenuItemId[]; } export declare function isValidMenuId(id: unknown): id is MenuItemId; type Checker = K | ((item: T) => boolean); /** * 有控制值返回 MenuItemId[] * 否则返回 null */ export declare function collectMenuIdsByCheckingControlProp(menu: T[] | undefined, checker: Checker): null | MenuItemId[]; export declare function getControlledMenuIdsFromProps(props: NavProps, propName: keyof NavProps, checker: Checker): MenuItemId[] | null; export {};