|
|
@@ -1,6 +1,5 @@
|
|
|
import React, { PureComponent } from 'react';
|
|
|
import { Layout } from 'antd';
|
|
|
-import pathToRegexp from 'path-to-regexp';
|
|
|
import classNames from 'classnames';
|
|
|
import Link from 'umi/link';
|
|
|
import styles from './index.less';
|
|
|
@@ -23,36 +22,9 @@ const getDefaultCollapsedSubMenus = props => {
|
|
|
.filter(item => item);
|
|
|
};
|
|
|
|
|
|
-/**
|
|
|
- * Recursively flatten the data
|
|
|
- * [{path:string},{path:string}] => {path,path2}
|
|
|
- * @param menu
|
|
|
- */
|
|
|
-export const getFlatMenuKeys = menu =>
|
|
|
- menu.reduce((keys, item) => {
|
|
|
- keys.push(item.path);
|
|
|
- if (item.children) {
|
|
|
- return keys.concat(getFlatMenuKeys(item.children));
|
|
|
- }
|
|
|
- return keys;
|
|
|
- }, []);
|
|
|
-
|
|
|
-/**
|
|
|
- * Find all matched menu keys based on paths
|
|
|
- * @param flatMenuKeys: [/abc, /abc/:id, /abc/:id/info]
|
|
|
- * @param paths: [/abc, /abc/11, /abc/11/info]
|
|
|
- */
|
|
|
-export const getMenuMatchKeys = (flatMenuKeys, paths) =>
|
|
|
- paths.reduce(
|
|
|
- (matchKeys, path) =>
|
|
|
- matchKeys.concat(flatMenuKeys.filter(item => pathToRegexp(item).test(path))),
|
|
|
- []
|
|
|
- );
|
|
|
-
|
|
|
export default class SiderMenu extends PureComponent {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
- this.flatMenuKeys = getFlatMenuKeys(props.menuData);
|
|
|
this.state = {
|
|
|
openKeys: getDefaultCollapsedSubMenus(props),
|
|
|
};
|
|
|
@@ -117,7 +89,6 @@ export default class SiderMenu extends PureComponent {
|
|
|
{...this.props}
|
|
|
mode="inline"
|
|
|
handleOpenChange={this.handleOpenChange}
|
|
|
- onOpenChange={this.handleOpenChange}
|
|
|
style={{ padding: '16px 0', width: '100%' }}
|
|
|
{...defaultProps}
|
|
|
/>
|