import React from 'react'; import Dropdown, { DropdownTrigger, DropdownContent } from 'react-simple-dropdown'; import PropTypes from 'prop-types'; class DropdownMenu extends React.PureComponent { constructor (props, context) { super(props, context); this.state = { direction: 'left' }; this.setRef = this.setRef.bind(this); this.renderItem = this.renderItem.bind(this); } setRef (c) { this.dropdown = c; } handleClick (i, e) { const { action } = this.props.items[i]; if (typeof action === 'function') { e.preventDefault(); action(); this.dropdown.hide(); } } renderItem (item, i) { if (item === null) { return
  • ; } const { text, action, href = '#' } = item; return (
  • {text}
  • ); } render () { const { icon, items, size, direction, ariaLabel } = this.props; const directionClass = (direction === "left") ? "dropdown__left" : "dropdown__right"; return (
      {items.map(this.renderItem)}
    ); } } DropdownMenu.propTypes = { icon: PropTypes.string.isRequired, items: PropTypes.array.isRequired, size: PropTypes.number.isRequired, direction: PropTypes.string, ariaLabel: PropTypes.string }; DropdownMenu.defaultProps = { ariaLabel: "Menu" }; export default DropdownMenu;