import React from 'react'; import classNames from 'classnames'; import PropTypes from 'prop-types'; import uuid from 'uuid/v4'; import { Consumer } from './context'; class NestedDropdownSubmenu extends React.Component { componentDidMount() { this.id = uuid(); } render() { const { tag: Tag, subMenuTag: SubMenuTag, title, children, className, openId, onOpen } = this.props; const itemClass = classNames(className, 'nested-dropdown__submenu-item', { 'nested-dropdown__submenu-item--open': openId === this.id }); const linkClass = classNames('nested-dropdown__submenu-item__link', 'dropdown-item'); return ( { onOpen(this.id) } } > { title }
{ children }
); } } NestedDropdownSubmenu.propTypes = { children: PropTypes.node, title: PropTypes.oneOfType([ PropTypes.string, PropTypes.node ]), tag: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]), subMenuTag: PropTypes.oneOfType([ PropTypes.string, PropTypes.func ]), className: PropTypes.string, // Context Provided: openId: PropTypes.string, onOpen: PropTypes.func.isRequired }; NestedDropdownSubmenu.defaultProps = { tag: "div", subMenuTag: "div" }; const ContextNestedDropdownSubmenu = (props) => ( { (contextProps) => ( ) } ); export { ContextNestedDropdownSubmenu as NestedDropdownSubmenu };