import React from 'react'; import cx from 'classnames'; import bem from '../utils/bem'; import Pop, { PopProps } from '../pop/index'; import Item, { PopMenuItemProps } from './Item'; const b = bem('rdf-pop-menu'); export interface PopMenuProps extends PopProps { items: PopMenuItemProps[]; onClick?: (item: PopMenuItemProps, ev: React.SyntheticEvent) => void; } export interface PopMenuState {} export class PopMenu extends React.Component { static defaultProps: PopMenuProps = { items: [], }; handleMenuClick = (item: PopMenuItemProps, ev: React.SyntheticEvent) => { const { onClick } = this.props; if (item.disabled) { ev.preventDefault(); return; } onClick && onClick(item, ev); }; renderMenu(items: PopMenuProps['items'], level = 0): React.ReactNode[] { return items.map((itemProps, index) => { if (!itemProps.items) { return ( ); } else { const groupCls = cx(b('group'), { [b('group', 'first')]: level === 0 && index === 0, }); return (
{itemProps.label}
{this.renderMenu(itemProps.items)}
); } }); } render() { const { items, className, contentClassName, ...restProps } = this.props; return ( ); } } export default PopMenu;