UNPKG

1.48 kBJavaScriptView Raw
1import React from 'react';
2import PropTypes from 'prop-types';
3import { menuAllProps } from './util';
4
5class MenuItemGroup extends React.Component {
6 static propTypes = {
7 renderMenuItem: PropTypes.func,
8 index: PropTypes.number,
9 className: PropTypes.string,
10 subMenuKey: PropTypes.string,
11 rootPrefixCls: PropTypes.string,
12 };
13
14 static defaultProps = {
15 disabled: true,
16 };
17
18 renderInnerMenuItem = (item) => {
19 const { renderMenuItem, index } = this.props;
20 return renderMenuItem(item, index, this.props.subMenuKey);
21 }
22
23 render() {
24 const { ...props } = this.props;
25 const { className = '', rootPrefixCls } = props;
26 const titleClassName = `${rootPrefixCls}-item-group-title`;
27 const listClassName = `${rootPrefixCls}-item-group-list`;
28 const { title, children } = props;
29 menuAllProps.forEach(key => delete props[key]);
30
31 // Set onClick to null, to ignore propagated onClick event
32 delete props.onClick;
33
34 return (
35 <li {...props} className={`${className} ${rootPrefixCls}-item-group`}>
36 <div
37 className={titleClassName}
38 title={typeof title === 'string' ? title : undefined}
39 >
40 {title}
41 </div>
42 <ul className={listClassName}>
43 {React.Children.map(children, this.renderInnerMenuItem)}
44 </ul>
45 </li>
46 );
47 }
48}
49
50MenuItemGroup.isMenuItemGroup = true;
51
52export default MenuItemGroup;