MenuItemGroup.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import _extends from 'babel-runtime/helpers/extends';
  2. import PropTypes from '../_util/vue-types';
  3. import { getComponentFromProp, getListeners } from '../_util/props-util';
  4. // import { menuAllProps } from './util'
  5. var MenuItemGroup = {
  6. name: 'MenuItemGroup',
  7. props: {
  8. renderMenuItem: PropTypes.func,
  9. index: PropTypes.number,
  10. className: PropTypes.string,
  11. subMenuKey: PropTypes.string,
  12. rootPrefixCls: PropTypes.string,
  13. disabled: PropTypes.bool.def(true),
  14. title: PropTypes.any
  15. },
  16. isMenuItemGroup: true,
  17. methods: {
  18. renderInnerMenuItem: function renderInnerMenuItem(item) {
  19. var _$props = this.$props,
  20. renderMenuItem = _$props.renderMenuItem,
  21. index = _$props.index,
  22. subMenuKey = _$props.subMenuKey;
  23. return renderMenuItem(item, index, subMenuKey);
  24. }
  25. },
  26. render: function render() {
  27. var h = arguments[0];
  28. var props = _extends({}, this.$props);
  29. var rootPrefixCls = props.rootPrefixCls,
  30. title = props.title;
  31. var titleClassName = rootPrefixCls + '-item-group-title';
  32. var listClassName = rootPrefixCls + '-item-group-list';
  33. // menuAllProps.props.forEach(key => delete props[key])
  34. var listeners = _extends({}, getListeners(this));
  35. delete listeners.click;
  36. return h(
  37. 'li',
  38. { on: listeners, 'class': rootPrefixCls + '-item-group' },
  39. [h(
  40. 'div',
  41. { 'class': titleClassName, attrs: { title: typeof title === 'string' ? title : undefined }
  42. },
  43. [getComponentFromProp(this, 'title')]
  44. ), h(
  45. 'ul',
  46. { 'class': listClassName },
  47. [this.$slots['default'] && this.$slots['default'].map(this.renderInnerMenuItem)]
  48. )]
  49. );
  50. }
  51. };
  52. export default MenuItemGroup;