import './index.less'; import React from 'react'; import type { MenuTheme, MenuProps } from 'antd'; import type { PureSettings } from '../../defaultSettings'; import type { MenuDataItem, MessageDescriptor, Route, RouterTypes, WithFalse } from '../../typings'; import type { PrivateSiderMenuProps } from './SiderMenu'; export declare type MenuMode = 'vertical' | 'vertical-left' | 'vertical-right' | 'horizontal' | 'inline'; export declare type BaseMenuProps = { className?: string; /** 默认的是否展开,会受到 breakpoint 的影响 */ defaultCollapsed?: boolean; collapsed?: boolean; splitMenus?: boolean; isMobile?: boolean; menuData?: MenuDataItem[]; mode?: MenuMode; onCollapse?: (collapsed: boolean) => void; openKeys?: WithFalse | undefined; handleOpenChange?: (openKeys: string[]) => void; iconPrefixes?: string; /** 要给菜单的props, 参考antd-menu的属性。https://ant.design/components/menu-cn/ */ menuProps?: MenuProps; style?: React.CSSProperties; theme?: MenuTheme; formatMessage?: (message: MessageDescriptor) => string; /** * @name 处理父级菜单的 props,可以复写菜单的点击功能,一般用于埋点 * @see 子级的菜单要使用 menuItemRender 来处理 * * @example 使用 a 标签跳转到特殊的地址 subMenuItemRender={(item, defaultDom) => { return history.push(item.path) }>{defaultDom} }} * @example 增加埋点 subMenuItemRender={(item, defaultDom) => { return log.click(item.name) }>{defaultDom} }} */ subMenuItemRender?: WithFalse<(item: MenuDataItem & { isUrl: boolean; }, defaultDom: React.ReactNode) => React.ReactNode>; /** * @name 处理菜单的 props,可以复写菜单的点击功能,一般结合 Router 框架使用 * @see 非子级的菜单要使用 subMenuItemRender 来处理 * * @example 使用 a 标签 menuItemRender={(item, defaultDom) => { return history.push(item.path) }>{defaultDom} }} * @example 使用 Link 标签 menuItemRender={(item, defaultDom) => { return {defaultDom} }} */ menuItemRender?: WithFalse<(item: MenuDataItem & { isUrl: boolean; onClick: () => void; }, defaultDom: React.ReactNode, menuProps: BaseMenuProps) => React.ReactNode>; /** * @name 处理 menuData 的方法,与 menuDataRender 不同,postMenuData处理完成后会直接渲染,不再进行国际化和拼接处理 * * @example 增加菜单图标 postMenuData={(menuData) => { return menuData.map(item => { return { ...item, icon: } }) }} */ postMenuData?: (menusData?: MenuDataItem[]) => MenuDataItem[]; } & Partial> & Omit & Partial; declare const BaseMenu: React.FC; export default BaseMenu;