UNPKG

3.02 kBTypeScriptView Raw
1import './index.less';
2import React from 'react';
3import type { MenuTheme, MenuProps } from 'antd';
4import type { PureSettings } from '../../defaultSettings';
5import type { MenuDataItem, MessageDescriptor, Route, RouterTypes, WithFalse } from '../../typings';
6import type { PrivateSiderMenuProps } from './SiderMenu';
7export declare type MenuMode = 'vertical' | 'vertical-left' | 'vertical-right' | 'horizontal' | 'inline';
8export declare type BaseMenuProps = {
9 className?: string;
10 /** 默认的是否展开,会受到 breakpoint 的影响 */
11 defaultCollapsed?: boolean;
12 collapsed?: boolean;
13 splitMenus?: boolean;
14 isMobile?: boolean;
15 menuData?: MenuDataItem[];
16 mode?: MenuMode;
17 onCollapse?: (collapsed: boolean) => void;
18 openKeys?: WithFalse<string[]> | undefined;
19 handleOpenChange?: (openKeys: string[]) => void;
20 iconPrefixes?: string;
21 /** 要给菜单的props, 参考antd-menu的属性。https://ant.design/components/menu-cn/ */
22 menuProps?: MenuProps;
23 style?: React.CSSProperties;
24 theme?: MenuTheme;
25 formatMessage?: (message: MessageDescriptor) => string;
26 /**
27 * @name 处理父级菜单的 props,可以复写菜单的点击功能,一般用于埋点
28 * @see 子级的菜单要使用 menuItemRender 来处理
29 *
30 * @example 使用 a 标签跳转到特殊的地址 subMenuItemRender={(item, defaultDom) => { return <a onClick={()=> history.push(item.path) }>{defaultDom}</a> }}
31 * @example 增加埋点 subMenuItemRender={(item, defaultDom) => { return <a onClick={()=> log.click(item.name) }>{defaultDom}</a> }}
32 */
33 subMenuItemRender?: WithFalse<(item: MenuDataItem & {
34 isUrl: boolean;
35 }, defaultDom: React.ReactNode) => React.ReactNode>;
36 /**
37 * @name 处理菜单的 props,可以复写菜单的点击功能,一般结合 Router 框架使用
38 * @see 非子级的菜单要使用 subMenuItemRender 来处理
39 *
40 * @example 使用 a 标签 menuItemRender={(item, defaultDom) => { return <a onClick={()=> history.push(item.path) }>{defaultDom}</a> }}
41 * @example 使用 Link 标签 menuItemRender={(item, defaultDom) => { return <Link to={item.path}>{defaultDom}</Link> }}
42 */
43 menuItemRender?: WithFalse<(item: MenuDataItem & {
44 isUrl: boolean;
45 onClick: () => void;
46 }, defaultDom: React.ReactNode, menuProps: BaseMenuProps) => React.ReactNode>;
47 /**
48 * @name 处理 menuData 的方法,与 menuDataRender 不同,postMenuData处理完成后会直接渲染,不再进行国际化和拼接处理
49 *
50 * @example 增加菜单图标 postMenuData={(menuData) => { return menuData.map(item => { return { ...item, icon: <Icon type={item.icon} /> } }) }}
51 */
52 postMenuData?: (menusData?: MenuDataItem[]) => MenuDataItem[];
53} & Partial<RouterTypes<Route>> & Omit<MenuProps, 'openKeys' | 'onOpenChange' | 'title'> & Partial<PureSettings>;
54declare const BaseMenu: React.FC<BaseMenuProps & PrivateSiderMenuProps>;
55export default BaseMenu;