1
1
import React from 'react' ;
2
2
import PropTypes from 'prop-types' ;
3
- import classNames from 'classnames' ;
4
- import { Manager , Target , Popper } from 'react-popper' ;
5
3
import Button from '@material-ui/core/Button' ;
6
4
import ClickAwayListener from '@material-ui/core/ClickAwayListener' ;
7
- import Collapse from '@material-ui/core/Collapse' ;
8
5
import Grow from '@material-ui/core/Grow' ;
9
6
import Paper from '@material-ui/core/Paper' ;
10
- import Portal from '@material-ui/core/Portal ' ;
7
+ import Popper from '@material-ui/core/Popper ' ;
11
8
import MenuItem from '@material-ui/core/MenuItem' ;
12
9
import MenuList from '@material-ui/core/MenuList' ;
13
10
import { withStyles } from '@material-ui/core/styles' ;
@@ -19,9 +16,6 @@ const styles = theme => ({
19
16
paper : {
20
17
marginRight : theme . spacing . unit * 2 ,
21
18
} ,
22
- popperClose : {
23
- pointerEvents : 'none' ,
24
- } ,
25
19
} ) ;
26
20
27
21
class MenuListComposition extends React . Component {
@@ -34,7 +28,7 @@ class MenuListComposition extends React.Component {
34
28
} ;
35
29
36
30
handleClose = event => {
37
- if ( this . target1 . contains ( event . target ) || this . target2 . contains ( event . target ) ) {
31
+ if ( this . anchorEl . contains ( event . target ) ) {
38
32
return ;
39
33
}
40
34
@@ -54,76 +48,37 @@ class MenuListComposition extends React.Component {
54
48
< MenuItem > Logout</ MenuItem >
55
49
</ MenuList >
56
50
</ Paper >
57
- < Manager >
58
- < Target >
59
- < div
60
- ref = { node => {
61
- this . target1 = node ;
62
- } }
63
- >
64
- < Button
65
- aria-owns = { open ? 'menu-list-grow' : null }
66
- aria-haspopup = "true"
67
- onClick = { this . handleToggle }
68
- >
69
- Toggle Menu Grow
70
- </ Button >
71
- </ div >
72
- </ Target >
73
- < Popper
74
- placement = "bottom-start"
75
- eventsEnabled = { open }
76
- className = { classNames ( { [ classes . popperClose ] : ! open } ) }
51
+ < div >
52
+ < Button
53
+ buttonRef = { node => {
54
+ this . anchorEl = node ;
55
+ } }
56
+ aria-owns = { open ? 'menu-list-grow' : null }
57
+ aria-haspopup = "true"
58
+ onClick = { this . handleToggle }
77
59
>
78
- < ClickAwayListener onClickAway = { this . handleClose } >
79
- < Grow in = { open } id = "menu-list-grow" style = { { transformOrigin : '0 0 0' } } >
80
- < Paper >
81
- < MenuList role = "menu" >
82
- < MenuItem onClick = { this . handleClose } > Profile</ MenuItem >
83
- < MenuItem onClick = { this . handleClose } > My account</ MenuItem >
84
- < MenuItem onClick = { this . handleClose } > Logout</ MenuItem >
85
- </ MenuList >
86
- </ Paper >
87
- </ Grow >
88
- </ ClickAwayListener >
89
- </ Popper >
90
- </ Manager >
91
- < Manager >
92
- < Target >
93
- < div
94
- ref = { node => {
95
- this . target2 = node ;
96
- } }
97
- >
98
- < Button
99
- aria-owns = { open ? 'menu-list-collapse' : null }
100
- aria-haspopup = "true"
101
- onClick = { this . handleToggle }
60
+ Toggle Menu Grow
61
+ </ Button >
62
+ < Popper open = { open } anchorEl = { this . anchorEl } transition disablePortal >
63
+ { ( { TransitionProps, placement } ) => (
64
+ < Grow
65
+ { ...TransitionProps }
66
+ id = "menu-list-grow"
67
+ style = { { transformOrigin : placement === 'bottom' ? 'center top' : 'center bottom' } }
102
68
>
103
- Toggle Menu Collapse
104
- </ Button >
105
- </ div >
106
- </ Target >
107
- < Portal >
108
- < Popper
109
- placement = "bottom"
110
- eventsEnabled = { open }
111
- className = { classNames ( { [ classes . popperClose ] : ! open } ) }
112
- >
113
- < ClickAwayListener onClickAway = { this . handleClose } >
114
- < Collapse in = { open } id = "menu-list-collapse" style = { { transformOrigin : '0 0 0' } } >
115
- < Paper style = { { margin : 3 } } >
116
- < MenuList role = "menu" >
69
+ < Paper >
70
+ < ClickAwayListener onClickAway = { this . handleClose } >
71
+ < MenuList >
117
72
< MenuItem onClick = { this . handleClose } > Profile</ MenuItem >
118
73
< MenuItem onClick = { this . handleClose } > My account</ MenuItem >
119
74
< MenuItem onClick = { this . handleClose } > Logout</ MenuItem >
120
75
</ MenuList >
121
- </ Paper >
122
- </ Collapse >
123
- </ ClickAwayListener >
124
- </ Popper >
125
- </ Portal >
126
- </ Manager >
76
+ </ ClickAwayListener >
77
+ </ Paper >
78
+ </ Grow >
79
+ ) }
80
+ </ Popper >
81
+ </ div >
127
82
</ div >
128
83
) ;
129
84
}
0 commit comments