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

Commit 893abc8

Browse files
committed
build
1 parent c78842f commit 893abc8

File tree

8 files changed

+253
-56
lines changed

8 files changed

+253
-56
lines changed

dist/react-contextmenu.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

modules/context-menu.js renamed to modules/context-menu/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ var _react = require("react");
1010

1111
var _react2 = _interopRequireDefault(_react);
1212

13-
var _store = require("./redux/store");
13+
var _store = require("../redux/store");
1414

1515
var _store2 = _interopRequireDefault(_store);
1616

17-
var _menuContainer = require("./menu-container");
17+
var _wrapper = require("./wrapper");
1818

19-
var _menuContainer2 = _interopRequireDefault(_menuContainer);
19+
var _wrapper2 = _interopRequireDefault(_wrapper);
2020

2121
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2222

@@ -41,7 +41,7 @@ var ContextMenu = _react2.default.createClass({
4141
this.setState(this.getInitialState());
4242
},
4343
render: function render() {
44-
return _react2.default.createElement(_menuContainer2.default, _extends({}, this.props, this.state));
44+
return _react2.default.createElement(_wrapper2.default, _extends({}, this.props, this.state));
4545
}
4646
});
4747

modules/menu-container.js renamed to modules/context-menu/wrapper.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var _react = require("react");
1010

1111
var _react2 = _interopRequireDefault(_react);
1212

13-
var _monitor = require("./monitor");
13+
var _monitor = require("../monitor");
1414

1515
var _monitor2 = _interopRequireDefault(_monitor);
1616

@@ -34,8 +34,8 @@ var modalStyle = {
3434
zIndex: "auto"
3535
};
3636

37-
var MenuContainer = _react2.default.createClass({
38-
displayName: "MenuContainer",
37+
var ContextMenuWrapper = _react2.default.createClass({
38+
displayName: "ContextMenuWrapper",
3939
getInitialState: function getInitialState() {
4040
return {
4141
left: 0,
@@ -45,7 +45,7 @@ var MenuContainer = _react2.default.createClass({
4545
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
4646
var _this = this;
4747

48-
if (nextProps.isVisible) {
48+
if (nextProps.isVisible === nextProps.identifier) {
4949
var wrapper = window.requestAnimationFrame || setTimeout;
5050

5151
wrapper(function () {
@@ -62,20 +62,18 @@ var MenuContainer = _react2.default.createClass({
6262
var _window = window;
6363
var innerWidth = _window.innerWidth;
6464
var innerHeight = _window.innerHeight;
65-
var _menu = this.menu;
66-
var offsetWidth = _menu.offsetWidth;
67-
var offsetHeight = _menu.offsetHeight;
65+
var rect = this.menu.getBoundingClientRect();
6866
var menuStyles = {
6967
top: y + scrollY,
7068
left: x + scrollX
7169
};
7270

73-
if (y + offsetHeight > innerHeight) {
74-
menuStyles.top -= offsetHeight;
71+
if (y + rect.height > innerHeight) {
72+
menuStyles.top -= rect.height;
7573
}
7674

77-
if (x + offsetWidth > innerWidth) {
78-
menuStyles.left -= offsetWidth;
75+
if (x + rect.width > innerWidth) {
76+
menuStyles.left -= rect.width;
7977
}
8078

8179
return menuStyles;
@@ -109,4 +107,4 @@ var MenuContainer = _react2.default.createClass({
109107
}
110108
});
111109

112-
exports.default = MenuContainer;
110+
exports.default = ContextMenuWrapper;

modules/contextmenu-layer.js

Lines changed: 21 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
44
value: true
55
});
66

7-
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
8-
97
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
108

119
exports.default = function (identifier, configure) {
@@ -20,36 +18,30 @@ exports.default = function (identifier, configure) {
2018

2119
return _react2.default.createClass({
2220
displayName: displayName + "ContextMenuLayer",
23-
componentDidMount: function componentDidMount() {
24-
document.addEventListener("contextmenu", this.handleContextClick);
25-
},
26-
componentWillUnmount: function componentWillUnmount() {
27-
document.removeEventListener("contextmenu", this.handleContextClick);
28-
},
2921
handleContextClick: function handleContextClick(event) {
30-
var target = event.target,
31-
domNode = _reactDom2.default.findDOMNode(this);
32-
33-
if (target === domNode || domNode.contains(target)) {
34-
var currentItem = typeof configure === "function" ? configure(this.props) : {};
35-
36-
(0, _invariant2.default)((0, _lodash2.default)(currentItem), "Expected configure to return an object. See %s", displayName);
37-
38-
event.preventDefault();
39-
40-
_store2.default.dispatch({
41-
type: "SET_PARAMS",
42-
data: {
43-
x: event.clientX,
44-
y: event.clientY,
45-
currentItem: currentItem,
46-
isVisible: typeof identifier === "function" ? identifier(this.props) : identifier
47-
}
48-
});
49-
}
22+
var currentItem = typeof configure === "function" ? configure(this.props) : {};
23+
24+
(0, _invariant2.default)((0, _lodash2.default)(currentItem), "Expected configure to return an object. See %s", displayName);
25+
26+
event.preventDefault();
27+
28+
_store2.default.dispatch({
29+
type: "SET_PARAMS",
30+
data: {
31+
x: event.clientX,
32+
y: event.clientY,
33+
currentItem: currentItem,
34+
isVisible: typeof identifier === "function" ? identifier(this.props) : identifier
35+
}
36+
});
5037
},
5138
render: function render() {
52-
return _react2.default.createElement(Component, _extends({}, this.props, { identifier: identifier }));
39+
return _react2.default.createElement(
40+
"div",
41+
{ className: "react-context-menu-wrapper",
42+
onContextMenu: this.handleContextClick },
43+
_react2.default.createElement(Component, this.props)
44+
);
5345
}
5446
});
5547
};
@@ -59,10 +51,6 @@ var _react = require("react");
5951

6052
var _react2 = _interopRequireDefault(_react);
6153

62-
var _reactDom = require("react-dom");
63-
64-
var _reactDom2 = _interopRequireDefault(_reactDom);
65-
6654
var _invariant = require("invariant");
6755

6856
var _invariant2 = _interopRequireDefault(_invariant);

modules/index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,13 @@ Object.defineProperty(exports, "monitor", {
4040
}
4141
});
4242

43+
var _submenu = require("./submenu");
44+
45+
Object.defineProperty(exports, "SubMenu", {
46+
enumerable: true,
47+
get: function get() {
48+
return _interopRequireDefault(_submenu).default;
49+
}
50+
});
51+
4352
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

modules/menu-item.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
44
value: true
55
});
66

7-
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
8-
97
var _react = require("react");
108

119
var _react2 = _interopRequireDefault(_react);
@@ -47,8 +45,6 @@ var MenuItem = _react2.default.createClass({
4745
var preventClose = _props.preventClose;
4846

4947

50-
console.log(typeof onClick === "undefined" ? "undefined" : _typeof(onClick));
51-
5248
event.preventDefault();
5349

5450
if (disabled) return;
@@ -79,7 +75,7 @@ var MenuItem = _react2.default.createClass({
7975
{ className: "react-context-menu-item" },
8076
_react2.default.createElement(
8177
"a",
82-
{ href: "#", classes: classes, onClick: this.handleClick },
78+
{ href: "#", className: classes, onClick: this.handleClick },
8379
children
8480
)
8581
);

modules/submenu/index.js

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
7+
var _react = require("react");
8+
9+
var _react2 = _interopRequireDefault(_react);
10+
11+
var _classnames = require("classnames");
12+
13+
var _classnames2 = _interopRequireDefault(_classnames);
14+
15+
var _wrapper = require("./wrapper");
16+
17+
var _wrapper2 = _interopRequireDefault(_wrapper);
18+
19+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20+
21+
var menuStyles = {
22+
position: "relative",
23+
zIndex: "auto"
24+
};
25+
26+
var SubMenu = _react2.default.createClass({
27+
displayName: "SubMenu",
28+
propTypes: {
29+
title: _react2.default.PropTypes.string.isRequired,
30+
disabled: _react2.default.PropTypes.bool,
31+
hoverDelay: _react2.default.PropTypes.number
32+
},
33+
getDefaultProps: function getDefaultProps() {
34+
return {
35+
hoverDelay: 500
36+
};
37+
},
38+
getInitialState: function getInitialState() {
39+
return {
40+
visible: false
41+
};
42+
},
43+
shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {
44+
return this.state.isVisible !== nextState.visible;
45+
},
46+
handleClick: function handleClick(e) {
47+
e.preventDefault();
48+
},
49+
handleMouseEnter: function handleMouseEnter() {
50+
var _this = this;
51+
52+
if (this.closetimer) clearTimeout(this.closetimer);
53+
54+
if (this.props.disabled || this.state.visible) return;
55+
56+
this.opentimer = setTimeout(function () {
57+
return _this.setState({ visible: true });
58+
}, this.props.hoverDelay);
59+
},
60+
handleMouseLeave: function handleMouseLeave() {
61+
var _this2 = this;
62+
63+
if (this.opentimer) clearTimeout(this.opentimer);
64+
65+
if (!this.state.visible) return;
66+
67+
this.closetimer = setTimeout(function () {
68+
return _this2.setState({ visible: false });
69+
}, this.props.hoverDelay);
70+
},
71+
render: function render() {
72+
var _this3 = this;
73+
74+
var _props = this.props;
75+
var disabled = _props.disabled;
76+
var children = _props.children;
77+
var title = _props.title;
78+
var visible = this.state.visible;
79+
80+
81+
var classes = (0, _classnames2.default)({
82+
"react-context-menu-link": true,
83+
disabled: disabled,
84+
active: visible
85+
}),
86+
menuClasses = "react-context-menu-item submenu";
87+
88+
return _react2.default.createElement(
89+
"div",
90+
{ ref: function ref(c) {
91+
return _this3.item = c;
92+
}, className: menuClasses, style: menuStyles,
93+
onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave },
94+
_react2.default.createElement(
95+
"a",
96+
{ href: "#", className: classes, onClick: this.handleClick },
97+
title
98+
),
99+
_react2.default.createElement(
100+
_wrapper2.default,
101+
{ visible: visible },
102+
children
103+
)
104+
);
105+
}
106+
});
107+
108+
exports.default = SubMenu;

0 commit comments

Comments
 (0)