From 44565df6c13a9bb7cac19a184a519ebea8675194 Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Wed, 23 Dec 2015 16:02:35 +0800 Subject: [PATCH 1/2] feat: add `keyPath` for `onOpen/onClose`'s param --- examples/antd.js | 5 ++++- src/SubMenu.jsx | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/antd.js b/examples/antd.js index 12f8e11e..950c2ad3 100644 --- a/examples/antd.js +++ b/examples/antd.js @@ -88,7 +88,10 @@ const nestSubMenu = (sub menu 2} key="4"> ); -const commonMenu = ( +function log(value) { + console.log(value); +} +const commonMenu = ( sub menu} key="1"> 0-1 0-2 diff --git a/src/SubMenu.jsx b/src/SubMenu.jsx index 80d532e7..de9847f4 100644 --- a/src/SubMenu.jsx +++ b/src/SubMenu.jsx @@ -101,7 +101,7 @@ const SubMenu = React.createClass({ }, onOpenChange(e) { - this.props.onOpenChange(e); + this.props.onOpenChange(this.addKeyPath(e)); }, onMouseEnter() { @@ -194,7 +194,7 @@ const SubMenu = React.createClass({ addKeyPath(info) { return assign({}, info, { - keyPath: info.keyPath.concat(this.props.eventKey), + keyPath: (info.keyPath || []).concat(this.props.eventKey), }); }, From 1f6788c8dfcd441689fbfbff69d6dd928112cb47 Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Thu, 24 Dec 2015 17:45:59 +0800 Subject: [PATCH 2/2] docs: add demo for `keyPath` --- examples/keyPath.html | 1 + examples/keyPath.js | 65 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 examples/keyPath.html create mode 100644 examples/keyPath.js diff --git a/examples/keyPath.html b/examples/keyPath.html new file mode 100644 index 00000000..48cdce85 --- /dev/null +++ b/examples/keyPath.html @@ -0,0 +1 @@ +placeholder diff --git a/examples/keyPath.js b/examples/keyPath.js new file mode 100644 index 00000000..bcb11e50 --- /dev/null +++ b/examples/keyPath.js @@ -0,0 +1,65 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import Menu, {SubMenu, Item as MenuItem} from 'rc-menu'; + +import 'rc-menu/assets/index.less'; + +const Test = React.createClass({ + getInitialState() { + return { + openKeys: [], + }; + }, + + onClick(info) { + console.log('click ', info); + this.setState({ + openKeys: info.keyPath.slice(1), + }); + }, + + onOpen(info) { + console.log('onOpen', info); + this.setState({ + openKeys: info.open ? info.keyPath : info.keyPath.slice(1), + }); + }, + + onClose(info) { + this.onOpen(info); + }, + + getMenu() { + return ( + + + item1-1 + item1-2 + + + item2-1 + item2-2 + + item2-3-1 + item2-3-2 + + + item3 + + ); + }, + + render() { + return (
+
{this.getMenu()}
+
); + }, +}); + + +ReactDOM.render(, document.getElementById('__react-content'));