Skip to content

Commit e70e8f8

Browse files
committed
fix submenu mouseenter
1 parent 9507855 commit e70e8f8

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

examples/index.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,19 @@ function handleSelect(selectedKey) {
2929
console.log('selected ' + selectedKey);
3030
}
3131

32+
var titleRight = <span>sub menu <i className="fa fa-caret-right pull-right"></i></span>;
3233
var titleRight1 = <span>sub menu 1 <i className="fa fa-caret-right pull-right"></i></span>;
3334
var titleRight2 = <span>sub menu 2 <i className="fa fa-caret-right pull-right"></i></span>;
3435
var titleRight3 = <span>sub menu 3 <i className="fa fa-caret-right pull-right"></i></span>;
3536

3637
var leftMenu = (
3738
<Menu activeKey="11110" onSelect={handleSelect}>
39+
<SubMenu title={titleRight}>
40+
<Menu>
41+
<MenuItem>0-1</MenuItem>
42+
<MenuItem>0-2</MenuItem>
43+
</Menu>
44+
</SubMenu>
3845
<MenuItem key="10">1</MenuItem>
3946
<MenuItem key="31">outer</MenuItem>
4047
<SubMenu title={titleRight1}>

lib/SubMenu.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,6 @@ var SubMenu = React.createClass({
8686
}
8787
},
8888

89-
handleMouseLeave: function () {
90-
this.props.onHover(null);
91-
},
92-
9389
handleMouseEnter: function () {
9490
var props = this.props;
9591
props.onHover(props.eventKey);
@@ -98,6 +94,12 @@ var SubMenu = React.createClass({
9894
}
9995
},
10096

97+
handleMouseLeave: function () {
98+
if (!this.state.open) {
99+
this.props.onHover(null);
100+
}
101+
},
102+
101103
handleClick: function () {
102104
this.setOpenState(true);
103105
},
@@ -117,19 +119,24 @@ var SubMenu = React.createClass({
117119
classes[prefixCls] = true;
118120
var clickEvents = {};
119121
var mouseEvents = {};
122+
var titleMouseEvents = {};
120123
if (!props.disabled) {
121124
clickEvents = {
122125
onClick: this.handleClick
123126
};
124127
mouseEvents = {
128+
onMouseLeave: this.handleMouseLeave
129+
};
130+
// only works in title, not outer li
131+
titleMouseEvents = {
125132
onMouseEnter: this.handleMouseEnter
126133
};
127134
}
128135
return (
129-
<li className={joinClasses(props.className, classSet(classes))}>
136+
<li className={joinClasses(props.className, classSet(classes))} {...mouseEvents}>
130137
<div
131138
className={prefixCls + '-title'}
132-
{...mouseEvents}
139+
{...titleMouseEvents}
133140
{...clickEvents}
134141
aria-expanded={props.active}
135142
aria-owns={this._menuId}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rc-menu",
3-
"version": "2.0.2",
3+
"version": "2.0.3",
44
"description": "menu ui component for react",
55
"keywords": [
66
"react",

0 commit comments

Comments
 (0)