Close comment menu when you click anywhere outside

pull/7119/head
jacobtoppm 2021-04-26 17:23:30 +01:00 zatwierdzone przez Jacob Topp-Mugglestone
rodzic 44a3737266
commit 53e55d28e6
1 zmienionych plików z 16 dodań i 1 usunięć

Wyświetl plik

@ -98,23 +98,38 @@ export const CommentHeader: FunctionComponent<CommentHeaderProps> = ({
}
}, [focused]);
const menuRef = useRef<HTMLDivElement>(null);
const menuContainerRef = useRef<HTMLDivElement>(null);
const toggleMenu = (e: React.MouseEvent) => {
e.preventDefault();
e.stopPropagation();
setMenuOpen(!menuOpen);
};
useEffect(() => {
if (menuOpen) {
setTimeout(() => menuRef.current?.focus(), 1);
}
}, [menuOpen]);
const handleClickOutside = (e: MouseEvent) => {
if (menuContainerRef.current && e.target instanceof Node && !menuContainerRef.current.contains(e.target)) {
setMenuOpen(false);
}
};
useEffect(() => {
document.addEventListener('click', handleClickOutside, true);
return () => {
document.removeEventListener('click', handleClickOutside, true);
};
}, []);
return (
<div className="comment-header">
<div className="comment-header__actions">
{(onEdit || onDelete || onResolve) &&
<div className="comment-header__action comment-header__action--more">
<div className="comment-header__action comment-header__action--more" ref={menuContainerRef}>
<Details open={menuOpen} onClick={toggleMenu}>
<Summary
aria-label={strings.MORE_ACTIONS}