message: allow chaining right click contextmenus
diff: @@ -64,7 +64,9 @@ export default class ContextualMenu extends React.Component {
  // The component to render as the context menu
  elementClass: PropTypes.element.isRequired,
  // on resize callback
  - windowResize: PropTypes.func
  + windowResize: PropTypes.func,
  + // method to close menu
  + closeMenu: PropTypes.func,
  };
  constructor() {
  @@ -73,6 +75,7 @@ export default class ContextualMenu extends React.Component {
  contextMenuRect: null,
  };
  + this.onContextMenu = this.onContextMenu.bind(this);
  this.collectContextMenuRect = this.collectContextMenuRect.bind(this);
  }
  @@ -85,6 +88,25 @@ export default class ContextualMenu extends React.Component {
  });
  }
  + onContextMenu(e) {
  + if (this.props.closeMenu) {
  + this.props.closeMenu();
  + }
  + e.preventDefault();
  + const x = e.clientX;
  + const y = e.clientY;
  +
  + setImmediate(() => {
  + const clickEvent = document.createEvent('MouseEvents');
  + clickEvent.initMouseEvent(
  + 'contextmenu', true, true, window, 0,
  + 0, 0, x, y, false, false,
  + false, false, 0, null,
  + );
  + document.elementFromPoint(x, y).dispatchEvent(clickEvent);
  + });
  + }
  +
  render() {
  const position = {};
  let chevronFace = null;
  @@ -195,7 +217,7 @@ export default class ContextualMenu extends React.Component {
  { chevron }
  <ElementClass {...props} onFinished={props.closeMenu} onResize={props.windowResize} />
  </div>
  - { props.hasBackground && <div className="mx_ContextualMenu_background" onClick={props.closeMenu} /> }
  + { props.hasBackground && <div className="mx_ContextualMenu_background" onClick={props.closeMenu} onContextMenu={this.onContextMenu} /> }
  <style>{ chevronCSS }</style>
  </div>;
  }
  