Skip to content

Commit 829d5ad

Browse files
bfbiggspauljeter
authored andcommitted
fix(MenuOverlay): fire rerender if initially open
1 parent 54b2fe7 commit 829d5ad

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

react/src/lib/MenuOverlay/index.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,21 @@ import MenuContext from '../MenuContext';
1010

1111
class 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
};

react/src/lib/MenuOverlay/tests/__snapshots__/index.spec.js.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ ShallowWrapper {
66
Symbol(enzyme.__unrendered__): <MenuOverlay
77
className=""
88
focusFirstQuery=""
9+
isOpen={false}
910
menuTrigger={
1011
<div>
1112
Trigger

0 commit comments

Comments
 (0)