Files
ohif-viewer/extensions/default/src/ViewerLayout/ToolbarButtonNestedMenu.tsx
T

47 lines
1018 B
TypeScript
Raw Normal View History

2020-06-14 23:42:44 -04:00
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { ToolbarButton } from '@ohif/ui';
2020-06-25 16:51:48 -03:00
function NestedMenu({ children, label, icon, isActive }) {
2020-06-14 23:42:44 -04:00
const [isOpen, setIsOpen] = useState(false);
const toggleNestedMenu = () => setIsOpen(!isOpen);
const closeNestedMenu = () => {
if (isOpen) {
setIsOpen(false);
2020-06-14 23:42:44 -04:00
}
};
useEffect(() => {
window.addEventListener('click', closeNestedMenu);
2020-06-14 23:42:44 -04:00
return () => {
window.removeEventListener('click', closeNestedMenu);
2020-06-14 23:42:44 -04:00
};
}, [isOpen]);
return (
<ToolbarButton
id="NestedMenu"
label={label}
icon={icon}
onClick={toggleNestedMenu}
dropdownContent={isOpen && children}
2020-06-25 16:51:48 -03:00
isActive={isActive || isOpen}
2020-06-14 23:42:44 -04:00
type="primary"
/>
);
}
NestedMenu.propTypes = {
2020-06-14 23:42:44 -04:00
children: PropTypes.any.isRequired,
icon: PropTypes.string,
label: PropTypes.string,
};
NestedMenu.defaultProps = {
icon: "tool-more-menu",
label: "More",
2020-06-14 23:42:44 -04:00
};
export default NestedMenu;