Skip to content
This repository was archived by the owner on Sep 1, 2020. It is now read-only.

Commit 4be296d

Browse files
committed
Only hide the currently visible context menu. This fixes a bug on touch screens where the menu closes before the event to click is triggered. This only happens when using multiple contex menus.
1 parent a5325c5 commit 4be296d

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

modules/menu-container.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,21 +70,26 @@ var MenuContainer = _react2["default"].createClass({
7070
return menuStyles;
7171
},
7272
_outsideClickHandler: function _outsideClickHandler(event) {
73-
var localNode = this.localNode,
74-
source = event.target,
75-
found = false;
73+
var _props = this.props;
74+
var isVisible = _props.isVisible;
75+
var identifier = _props.identifier;
76+
if(isVisible === identifier) {
77+
var localNode = this.localNode,
78+
source = event.target,
79+
found = false;
7680

77-
while (source.parentNode) {
78-
found = source === localNode;
81+
while (source.parentNode) {
82+
found = source === localNode;
7983

80-
if (found) {
81-
return;
82-
}
84+
if (found) {
85+
return;
86+
}
8387

84-
source = source.parentNode;
85-
}
88+
source = source.parentNode;
89+
}
8690

87-
this._hideMenu();
91+
this._hideMenu();
92+
}
8893
},
8994
_hideMenu: function _hideMenu() {
9095
this.props.flux.getActions("menu").setParams({

src/menu-container.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,22 @@ const MenuContainer = React.createClass({
5757
return menuStyles;
5858
},
5959
_outsideClickHandler(event) {
60-
let localNode = this.localNode,
61-
source = event.target,
62-
found = false;
60+
let { isVisible, identifier } = this.props;
61+
if(isVisible === identifier) {
62+
let localNode = this.localNode,
63+
source = event.target,
64+
found = false;
6365

64-
while (source.parentNode) {
65-
found = (source === localNode);
66+
while (source.parentNode) {
67+
found = (source === localNode);
6668

67-
if (found) { return; }
69+
if (found) { return; }
6870

69-
source = source.parentNode;
70-
}
71+
source = source.parentNode;
72+
}
7173

72-
this._hideMenu();
74+
this._hideMenu();
75+
}
7376
},
7477
_hideMenu() {
7578
this.props.flux.getActions("menu").setParams({

0 commit comments

Comments
 (0)