From 3487eb78575edba72a836ea3a725c2d3fc3b88e0 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Wed, 20 May 2020 23:40:54 -0700 Subject: [PATCH] fix: Submenu auto close --- app/components/DropdownMenu/DropdownMenu.js | 24 ++++++++++++++++++++- app/menus/AccountMenu.js | 2 +- 2 files changed, 24 insertions(+), 2 deletions(-) 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 }) => (