|
|
|
@ -4,6 +4,7 @@ import { Icon, Menu } from 'antd'; |
|
|
|
import { MenuMode, MenuTheme } from 'antd/es/menu'; |
|
|
|
import classNames from 'classnames'; |
|
|
|
import React, { Component } from 'react'; |
|
|
|
import { RouterTypes } from 'umi'; |
|
|
|
import Link from 'umi/link'; |
|
|
|
import { urlToList } from '../_utils/pathTools'; |
|
|
|
import styles from './index.less'; |
|
|
|
@ -29,10 +30,7 @@ const getIcon = (icon?: string | React.ReactNode) => { |
|
|
|
return icon; |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* @type R: is route |
|
|
|
*/ |
|
|
|
export interface MenuDataItem<R extends boolean = false> { |
|
|
|
export interface MenuDataItem { |
|
|
|
authority?: string[] | string; |
|
|
|
children?: MenuDataItem[]; |
|
|
|
hideChildrenInMenu?: boolean; |
|
|
|
@ -41,17 +39,19 @@ export interface MenuDataItem<R extends boolean = false> { |
|
|
|
locale?: string; |
|
|
|
name?: string; |
|
|
|
path: string; |
|
|
|
routes?: R extends true ? MenuDataItem<R>[] : never; |
|
|
|
[key: string]: any; |
|
|
|
} |
|
|
|
|
|
|
|
export interface BaseMenuProps { |
|
|
|
export interface Route extends MenuDataItem { |
|
|
|
routes?: Route[]; |
|
|
|
} |
|
|
|
|
|
|
|
export interface BaseMenuProps extends Partial<RouterTypes<Route>> { |
|
|
|
className?: string; |
|
|
|
collapsed?: boolean; |
|
|
|
flatMenuKeys?: any[]; |
|
|
|
handleOpenChange?: (openKeys: string[]) => void; |
|
|
|
isMobile?: boolean; |
|
|
|
location?: Location; |
|
|
|
menuData?: MenuDataItem[]; |
|
|
|
mode?: MenuMode; |
|
|
|
onCollapse?: (collapsed: boolean) => void; |
|
|
|
@ -62,9 +62,8 @@ export interface BaseMenuProps { |
|
|
|
} |
|
|
|
|
|
|
|
export default class BaseMenu extends Component<BaseMenuProps> { |
|
|
|
static defaultProps: BaseMenuProps = { |
|
|
|
static defaultProps: Partial<BaseMenuProps> = { |
|
|
|
flatMenuKeys: [], |
|
|
|
location: window.location, |
|
|
|
onCollapse: () => void 0, |
|
|
|
isMobile: false, |
|
|
|
openKeys: [], |
|
|
|
@ -107,7 +106,7 @@ export default class BaseMenu extends Component<BaseMenuProps> { |
|
|
|
item.icon ? ( |
|
|
|
<span> |
|
|
|
{getIcon(item.icon)} |
|
|
|
<span>{name}</span> |
|
|
|
<span>{item.name}</span> |
|
|
|
</span> |
|
|
|
) : ( |
|
|
|
item.name |
|
|
|
|