diff --git a/ts/components/ContextMenu.tsx b/ts/components/ContextMenu.tsx index b625832d4b..98e50c4e0e 100644 --- a/ts/components/ContextMenu.tsx +++ b/ts/components/ContextMenu.tsx @@ -35,6 +35,8 @@ export type PropsType = { readonly value?: T; }; +let closeCurrentOpenContextMenu: undefined | (() => unknown); + export function ContextMenu({ children, i18n, @@ -77,6 +79,7 @@ export function ContextMenu({ const handleOutsideClick = (event: MouseEvent) => { if (!referenceElement?.contains(event.target as Node)) { setIsMenuShowing(false); + closeCurrentOpenContextMenu = undefined; event.stopPropagation(); event.preventDefault(); } @@ -120,12 +123,15 @@ export function ContextMenu({ focusedOption.onClick(focusedOption.value); } setIsMenuShowing(false); + closeCurrentOpenContextMenu = undefined; ev.stopPropagation(); ev.preventDefault(); } }; const handleClick = (ev: KeyboardEvent | React.MouseEvent) => { + closeCurrentOpenContextMenu?.(); + closeCurrentOpenContextMenu = () => setIsMenuShowing(false); setIsMenuShowing(true); ev.stopPropagation(); ev.preventDefault(); @@ -187,6 +193,7 @@ export function ContextMenu({ onClick={() => { option.onClick(option.value); setIsMenuShowing(false); + closeCurrentOpenContextMenu = undefined; }} >