@@ -3,18 +3,22 @@ require('./style.css');
3
3
4
4
export default class ContextMenu extends Component {
5
5
componentDidMount ( ) {
6
- document . addEventListener ( 'contextmenu' , this . _handleContextMenu ) ;
7
- document . addEventListener ( 'click' , this . _handleClick ) ;
6
+ this . props . el . addEventListener ( 'contextmenu' , this . _handleContextMenu ) ;
7
+ this . props . el . addEventListener ( 'click' , this . _handleClick ) ;
8
8
} ;
9
9
10
10
componentWillUnmount ( ) {
11
- document . removeEventListener ( 'contextmenu' , this . _handleContextMenu ) ;
12
- document . removeEventListener ( 'click' , this . _handleClick ) ;
11
+ this . props . el . removeEventListener ( 'contextmenu' , this . _handleContextMenu ) ;
12
+ this . props . el . removeEventListener ( 'click' , this . _handleClick ) ;
13
13
}
14
14
15
15
_handleContextMenu = ( event ) => {
16
16
event . preventDefault ( ) ;
17
17
18
+ if ( this . props . menu_items . length === 0 ) {
19
+ return false ;
20
+ }
21
+
18
22
const clickX = event . clientX ;
19
23
const clickY = event . clientY ;
20
24
const screenW = window . innerWidth ;
@@ -45,20 +49,20 @@ export default class ContextMenu extends Component {
45
49
} ;
46
50
47
51
_handleClick = ( event ) => {
52
+ event . target . getAttribute ( 'onclick' ) . call ( this ) ;
48
53
const menu_items = this . props . menu_items ;
49
- const visible = menu_items . length > 0 ;
50
54
const wasOutside = ! ( event . target . contains === this . root ) ;
51
55
52
- if ( wasOutside && visible ) {
56
+ if ( wasOutside ) {
53
57
this . props . closeContextMenu ( ) ;
54
58
}
55
59
} ;
56
60
57
61
render ( ) {
58
62
const menu_items = this . props . menu_items ;
59
- const visible = menu_items . length > 0 ;
60
-
61
- return ( visible || null ) &&
63
+ if ( ! menu_items . length )
64
+ return null ;
65
+ return (
62
66
< div ref = { ref => {
63
67
this . root = ref
64
68
} } className = "contextMenu" >
@@ -71,6 +75,6 @@ export default class ContextMenu extends Component {
71
75
{ /*<div className="contextMenu--option">Settings</div>*/ }
72
76
{ /*<div className="contextMenu--separator"/>*/ }
73
77
{ /*<div className="contextMenu--option">About this app</div>*/ }
74
- </ div >
78
+ </ div > )
75
79
} ;
76
80
}
0 commit comments