import React from 'react'; import { Icon } from 'UI'; import styles from './itemMenu.module.css'; import OutsideClickDetectingDiv from 'Shared/OutsideClickDetectingDiv'; import cn from 'classnames'; export default class ItemMenu extends React.PureComponent { state = { displayed: false, }; handleEsc = (e) => e.key === 'Escape' && this.closeMenu(); componentDidMount() { document.addEventListener('keydown', this.handleEsc, false); } componentWillUnmount() { document.removeEventListener('keydown', this.handleEsc, false); } onClick = (callback) => (e) => { e.stopPropagation(); callback(e); }; toggleMenu = (e) => { this.setState({ displayed: !this.state.displayed }); }; closeMenu = () => this.setState({ displayed: false }); render() { const { items, label = '', bold } = this.props; const { displayed } = this.state; const parentStyles = label ? 'rounded px-2 py-2 hover:bg-gray-light' : ''; return (
{label && {label}}
{ this.menuBtnRef = ref; }} className={cn('rounded-full flex items-center justify-center', { 'bg-gray-light': displayed, 'w-10 h-10': !label })} role="button" >
{items .filter(({ hidden }) => !hidden) .map(({ onClick, text, icon, disabled = false, disabledMessage = '' }) => (
{}} className={disabled ? 'cursor-not-allowed' : ''} role="menuitem" tabIndex="-1" >
{icon && (
)}
{text}
))}
); } }