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

Commit 9ec2570

Browse files
committed
Export ContextualMenu component, with added hasBackground property
, which is only enabled when `createMenu` is used.
1 parent d503c86 commit 9ec2570

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/components/structures/ContextualMenu.js

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function getOrCreateContainer() {
4040
return container;
4141
}
4242

43-
class ContextualMenu extends React.Component {
43+
export default class ContextualMenu extends React.Component {
4444
propTypes: {
4545
top: PropTypes.number,
4646
bottom: PropTypes.number,
@@ -57,6 +57,10 @@ class ContextualMenu extends React.Component {
5757
menuPaddingRight: PropTypes.number,
5858
menuPaddingBottom: PropTypes.number,
5959
menuPaddingLeft: PropTypes.number,
60+
61+
// If true, insert an invisible screen-sized element behind the
62+
// menu that when clicked will close it.
63+
hasBackground: PropTypes.bool,
6064
}
6165

6266
render() {
@@ -154,31 +158,30 @@ class ContextualMenu extends React.Component {
154158
{ chevron }
155159
<ElementClass {...props} onFinished={props.closeMenu} onResize={props.windowResize} />
156160
</div>
157-
<div className="mx_ContextualMenu_background" onClick={props.closeMenu}></div>
161+
{ props.hasBackground && <div className="mx_ContextualMenu_background" onClick={props.closeMenu}></div> }
158162
<style>{ chevronCSS }</style>
159163
</div>;
160164
}
161165
}
162166

163-
module.exports = {
164-
createMenu: function(ElementClass, props) {
165-
const closeMenu = function(...args) {
166-
ReactDOM.unmountComponentAtNode(getOrCreateContainer());
167+
export function createMenu(ElementClass, props) {
168+
const closeMenu = function(...args) {
169+
ReactDOM.unmountComponentAtNode(getOrCreateContainer());
167170

168-
if (props && props.onFinished) {
169-
props.onFinished.apply(null, args);
170-
}
171-
};
171+
if (props && props.onFinished) {
172+
props.onFinished.apply(null, args);
173+
}
174+
};
172175

173-
const menu = <ContextualMenu
174-
{...props}
175-
elementClass={ElementClass}
176-
closeMenu={closeMenu}
177-
windowResize={closeMenu}
178-
/>;
176+
const menu = <ContextualMenu
177+
{...props}
178+
hasBackground={true}
179+
elementClass={ElementClass}
180+
closeMenu={closeMenu}
181+
windowResize={closeMenu}
182+
/>;
179183

180-
ReactDOM.render(menu, getOrCreateContainer());
184+
ReactDOM.render(menu, getOrCreateContainer());
181185

182-
return {close: closeMenu};
183-
},
184-
};
186+
return {close: closeMenu};
187+
}

0 commit comments

Comments
 (0)