@@ -10,17 +10,21 @@ import MenuContext from '../MenuContext';
1010
1111class MenuOverlay extends React . Component {
1212 state = {
13- isOpen : false ,
14- } ;
13+ isOpen : this . props . isOpen || false
14+ }
15+
16+ componentDidMount ( ) {
17+ this . props . isOpen && this . forceUpdate ( ) ;
18+ }
1519
1620 componentDidUpdate ( prevProps , prevState ) {
1721 const { focusFirstQuery } = this . props ;
1822 const { isOpen } = this . state ;
19-
23+
2024 if ( ! prevState . isOpen && prevState !== isOpen && focusFirstQuery ) {
2125 const overlay = findDOMNode ( this . menuOverlay ) ;
2226 const focusElement = overlay && overlay . querySelector ( focusFirstQuery ) ;
23-
27+
2428 focusElement
2529 && focusElement . focus ( ) ;
2630 }
@@ -53,6 +57,7 @@ class MenuOverlay extends React.Component {
5357 const { isOpen } = this . state ;
5458
5559 const otherProps = omit ( { ...props } , [
60+ 'isOpen' ,
5661 'focusFirstQuery' ,
5762 'onSelect'
5863 ] ) ;
@@ -101,6 +106,8 @@ MenuOverlay.propTypes = {
101106 className : PropTypes . string ,
102107 /** @prop Queries children to find matching item to have focus | '' */
103108 focusFirstQuery : PropTypes . string ,
109+ /** @prop Prop to initalize state as open | false */
110+ isOpen : PropTypes . bool ,
104111 /** @prop HTML element that provides control to MenuOverlay user */
105112 menuTrigger : PropTypes . element . isRequired ,
106113 /** @prop Callback function invoked when user selects MenuOverlay | null */
@@ -113,6 +120,7 @@ MenuOverlay.defaultProps = {
113120 children : null ,
114121 className : '' ,
115122 focusFirstQuery : '' ,
123+ isOpen : false ,
116124 onSelect : null ,
117125 showArrow : true ,
118126} ;
0 commit comments