This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
outline/frontend/components/DropdownMenu/DropdownMenu.js
2017-05-17 19:57:26 -07:00

67 lines
1.2 KiB
JavaScript

// @flow
import React from 'react';
import styles from './DropdownMenu.scss';
const MenuItem = ({
onClick,
children,
}: {
onClick?: Function,
children?: React.Element<any>,
}) => {
return (
<div className={styles.menuItem} onClick={onClick}>
{children}
</div>
);
};
//
class DropdownMenu extends React.Component {
static propTypes = {
label: React.PropTypes.node.isRequired,
children: React.PropTypes.node.isRequired,
};
state = {
menuVisible: false,
};
onMouseEnter = () => {
this.setState({ menuVisible: true });
};
onMouseLeave = () => {
this.setState({ menuVisible: false });
};
onClick = () => {
this.setState({ menuVisible: !this.state.menuVisible });
};
render() {
return (
<div
className={styles.menuContainer}
onMouseEnter={this.onMouseEnter}
onMouseLeave={this.onMouseLeave}
>
<div className={styles.label} onClick={this.onClick}>
{this.props.label}
</div>
{this.state.menuVisible
? <div className={styles.menu}>
{this.props.children}
</div>
: null}
</div>
);
}
}
export default DropdownMenu;
export { MenuItem };