Commit e2b1261c authored by ddcat1115's avatar ddcat1115

- fix step-form can't match any menu item

- fix click logo can't change menu open keys
parent 2bbef8d9
...@@ -16,6 +16,13 @@ export default class SiderMenu extends PureComponent { ...@@ -16,6 +16,13 @@ export default class SiderMenu extends PureComponent {
openKeys: this.getDefaultCollapsedSubMenus(props), openKeys: this.getDefaultCollapsedSubMenus(props),
}; };
} }
componentWillReceiveProps(nextProps) {
if (nextProps.location.pathname !== this.props.location.pathname) {
this.setState({
openKeys: this.getDefaultCollapsedSubMenus(nextProps),
});
}
}
getDefaultCollapsedSubMenus(props) { getDefaultCollapsedSubMenus(props) {
const { location: { pathname } } = props || this.props; const { location: { pathname } } = props || this.props;
const snippets = pathname.split('/').slice(1, -1); const snippets = pathname.split('/').slice(1, -1);
...@@ -46,7 +53,6 @@ export default class SiderMenu extends PureComponent { ...@@ -46,7 +53,6 @@ export default class SiderMenu extends PureComponent {
} }
getSelectedMenuKeys = (path) => { getSelectedMenuKeys = (path) => {
const flatMenuKeys = this.getFlatMenuKeys(this.menus); const flatMenuKeys = this.getFlatMenuKeys(this.menus);
if (flatMenuKeys.indexOf(path.replace(/^\//, '')) > -1) { if (flatMenuKeys.indexOf(path.replace(/^\//, '')) > -1) {
return [path.replace(/^\//, '')]; return [path.replace(/^\//, '')];
} }
...@@ -56,7 +62,7 @@ export default class SiderMenu extends PureComponent { ...@@ -56,7 +62,7 @@ export default class SiderMenu extends PureComponent {
return flatMenuKeys.filter((item) => { return flatMenuKeys.filter((item) => {
const itemRegExpStr = `^${item.replace(/:[\w-]+/g, '[\\w-]+')}$`; const itemRegExpStr = `^${item.replace(/:[\w-]+/g, '[\\w-]+')}$`;
const itemRegExp = new RegExp(itemRegExpStr); const itemRegExp = new RegExp(itemRegExpStr);
return itemRegExp.test(path.replace(/^\//, '')); return itemRegExp.test(path.replace(/^\//, '').replace(/\/$/, ''));
}); });
} }
getNavMenuItems(menusData) { getNavMenuItems(menusData) {
...@@ -126,10 +132,16 @@ export default class SiderMenu extends PureComponent { ...@@ -126,10 +132,16 @@ export default class SiderMenu extends PureComponent {
} }
render() { render() {
const { collapsed, location: { pathname }, onCollapse } = this.props; const { collapsed, location: { pathname }, onCollapse } = this.props;
const { openKeys } = this.state;
// Don't show popup menu when it is been collapsed // Don't show popup menu when it is been collapsed
const menuProps = collapsed ? {} : { const menuProps = collapsed ? {} : {
openKeys: this.state.openKeys, openKeys,
}; };
// if pathname can't match, use the nearest parent's key
let selectedKeys = this.getSelectedMenuKeys(pathname);
if (!selectedKeys.length) {
selectedKeys = [openKeys[openKeys.length - 1]];
}
return ( return (
<Sider <Sider
trigger={null} trigger={null}
...@@ -151,7 +163,7 @@ export default class SiderMenu extends PureComponent { ...@@ -151,7 +163,7 @@ export default class SiderMenu extends PureComponent {
mode="inline" mode="inline"
{...menuProps} {...menuProps}
onOpenChange={this.handleOpenChange} onOpenChange={this.handleOpenChange}
selectedKeys={this.getSelectedMenuKeys(pathname)} selectedKeys={selectedKeys}
style={{ padding: '16px 0', width: '100%' }} style={{ padding: '16px 0', width: '100%' }}
> >
{this.getNavMenuItems(this.menus)} {this.getNavMenuItems(this.menus)}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment