diff --git a/app/components/DropdownMenu/DropdownMenu.js b/app/components/DropdownMenu/DropdownMenu.js index e67f5aa8..abf02a3c 100644 --- a/app/components/DropdownMenu/DropdownMenu.js +++ b/app/components/DropdownMenu/DropdownMenu.js @@ -31,6 +31,7 @@ type Props = { @observer class DropdownMenu extends React.Component { id: string = `menu${counter++}`; + closeTimeout: TimeoutID; @observable top: ?number; @observable bottom: ?number; @@ -134,6 +135,19 @@ class DropdownMenu extends React.Component { this.forceUpdate(); } + closeAfterTimeout = (closePortal: () => void) => () => { + if (this.closeTimeout) { + clearTimeout(this.closeTimeout); + } + this.closeTimeout = setTimeout(closePortal, 500); + }; + + clearCloseTimeout = () => { + if (this.closeTimeout) { + clearTimeout(this.closeTimeout); + } + }; + render() { const { className, hover, label, children } = this.props; @@ -148,7 +162,11 @@ class DropdownMenu extends React.Component { {({ closePortal, openPortal, isOpen, portal }) => (