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

Commit cae0622

Browse files
committed
v0.2.2
1 parent 5f5447f commit cae0622

File tree

5 files changed

+63
-55
lines changed

5 files changed

+63
-55
lines changed

CHANGELOG.md

+9
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ All the changes can be found below. Order used:
99
- Fixed
1010
- Security
1111

12+
## v0.2.2
13+
14+
### Added
15+
- Add compatibility with IE (Still needed for IE11).
16+
17+
### Fixed
18+
- Better event handling.
19+
- Only hide the currently visible context menu. On touch screens, the menu closes before the event to click is triggered. This only happened when using multiple contex menus.
20+
1221
## v0.2.1
1322

1423
### Fixed

dist/react-contextmenu.js

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

modules/contextmenu-layer.js

+30-32
Original file line numberDiff line numberDiff line change
@@ -33,38 +33,36 @@ exports["default"] = function (identifier, configure) {
3333
(0, _invariant2["default"])(typeof configure === "function", "Expected configure to be a function. See %s", displayName);
3434

3535
return _react2["default"].createClass({
36-
displayName: displayName + "ContextMenuLayer",
37-
componentDidMount: function componentDidMount() {
38-
document.addEventListener("contextmenu", this.handleContextClick);
39-
},
40-
componentWillUnmount: function componentWillUnmount() {
41-
document.removeEventListener("contextmenu", this.handleContextClick);
42-
},
43-
handleContextClick: function handleContextClick(event) {
44-
var target = event.target;
45-
var domNode = _react2["default"].findDOMNode(this);
46-
47-
if(target == domNode || domNode.contains(target)) {
48-
var currentItem = configure(this.props);
49-
50-
(0, _invariant2["default"])((0, _lodashIsobject2["default"])(currentItem), "Expected configure to return an object. See %s", displayName);
51-
52-
event.preventDefault();
53-
var actions = _flux2["default"].getActions("menu");
54-
actions.setParams({
55-
x: event.clientX,
56-
y: event.clientY,
57-
currentItem: currentItem,
58-
isVisible: typeof identifier === "function" ? identifier(this.props) : identifier
59-
});
60-
}
61-
62-
},
63-
render: function render() {
64-
return _react2["default"].createElement(Component, _extends({}, this.props, { identifier: identifier }));
65-
}
66-
});
36+
displayName: displayName + "ContextMenuLayer",
37+
componentDidMount: function componentDidMount() {
38+
document.addEventListener("contextmenu", this.handleContextClick);
39+
},
40+
componentWillUnmount: function componentWillUnmount() {
41+
document.removeEventListener("contextmenu", this.handleContextClick);
42+
},
43+
handleContextClick: function handleContextClick(event) {
44+
var target = event.target;
45+
var domNode = _react2["default"].findDOMNode(this);
46+
if (target == domNode || domNode.contains(target)) {
47+
var currentItem = configure(this.props);
48+
49+
(0, _invariant2["default"])((0, _lodashIsobject2["default"])(currentItem), "Expected configure to return an object. See %s", displayName);
50+
51+
event.preventDefault();
52+
var actions = _flux2["default"].getActions("menu");
53+
actions.setParams({
54+
x: event.clientX,
55+
y: event.clientY,
56+
currentItem: currentItem,
57+
isVisible: typeof identifier === "function" ? identifier(this.props) : identifier
58+
});
59+
}
60+
},
61+
render: function render() {
62+
return _react2["default"].createElement(Component, _extends({}, this.props, { identifier: identifier }));
63+
}
64+
});
6765
};
6866
};
6967

70-
module.exports = exports["default"];
68+
module.exports = exports["default"];

modules/menu-container.js

+19-18
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ var MenuContainer = _react2["default"].createClass({
4646
},
4747
getMenuPosition: function getMenuPosition(x, y) {
4848
var menu = _react2["default"].findDOMNode(this.refs.menu);
49-
var screen = window.screen;
5049
var scrollX = document.documentElement.scrollTop;
5150
var scrollY = document.documentElement.scrollLeft;
51+
var screen = window.screen;
5252
var AvailWidth = screen.AvailWidth;
5353
var AvailHeight = screen.AvailHeight;
5454
var offsetWidth = menu.offsetWidth;
@@ -73,22 +73,23 @@ var MenuContainer = _react2["default"].createClass({
7373
var _props = this.props;
7474
var isVisible = _props.isVisible;
7575
var identifier = _props.identifier;
76-
if(isVisible === identifier) {
77-
var localNode = this.localNode,
78-
source = event.target,
79-
found = false;
8076

81-
while (source.parentNode) {
82-
found = source === localNode;
77+
if (isVisible === identifier) {
78+
var localNode = this.localNode,
79+
source = event.target,
80+
found = false;
81+
82+
while (source.parentNode) {
83+
found = source === localNode;
8384

84-
if (found) {
85-
return;
86-
}
85+
if (found) {
86+
return;
87+
}
8788

88-
source = source.parentNode;
89-
}
89+
source = source.parentNode;
90+
}
9091

91-
this._hideMenu();
92+
this._hideMenu();
9293
}
9394
},
9495
_hideMenu: function _hideMenu() {
@@ -114,10 +115,10 @@ var MenuContainer = _react2["default"].createClass({
114115
document.addEventListener("scroll", fn2);
115116
},
116117
render: function render() {
117-
var _props = this.props;
118-
var currentItem = _props.currentItem;
119-
var isVisible = _props.isVisible;
120-
var identifier = _props.identifier;
118+
var _props2 = this.props;
119+
var currentItem = _props2.currentItem;
120+
var isVisible = _props2.isVisible;
121+
var identifier = _props2.identifier;
121122

122123
var classes = (0, _classnames2["default"])({
123124
"context-menu": true,
@@ -137,4 +138,4 @@ var MenuContainer = _react2["default"].createClass({
137138
});
138139

139140
exports["default"] = MenuContainer;
140-
module.exports = exports["default"];
141+
module.exports = exports["default"];

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-contextmenu",
3-
"version": "0.2.1",
3+
"version": "0.2.2",
44
"description": "Context Menu implemented in React",
55
"main": "modules/index.js",
66
"keywords": [

0 commit comments

Comments
 (0)