ItemGroup.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { createVNode as _createVNode } from "vue";
  3. import { getPropsSlot } from '../../_util/props-util';
  4. import { computed, defineComponent } from 'vue';
  5. import PropTypes from '../../_util/vue-types';
  6. import { useInjectMenu } from './hooks/useMenuContext';
  7. import { useMeasure } from './hooks/useKeyPath';
  8. export var menuItemGroupProps = function menuItemGroupProps() {
  9. return {
  10. title: PropTypes.any
  11. };
  12. };
  13. export default defineComponent({
  14. compatConfig: {
  15. MODE: 3
  16. },
  17. name: 'AMenuItemGroup',
  18. inheritAttrs: false,
  19. props: menuItemGroupProps(),
  20. slots: ['title'],
  21. setup: function setup(props, _ref) {
  22. var slots = _ref.slots,
  23. attrs = _ref.attrs;
  24. var _useInjectMenu = useInjectMenu(),
  25. prefixCls = _useInjectMenu.prefixCls;
  26. var groupPrefixCls = computed(function () {
  27. return "".concat(prefixCls.value, "-item-group");
  28. });
  29. var isMeasure = useMeasure();
  30. return function () {
  31. var _slots$default, _slots$default2;
  32. if (isMeasure) return (_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots);
  33. return _createVNode("li", _objectSpread(_objectSpread({}, attrs), {}, {
  34. "onClick": function onClick(e) {
  35. return e.stopPropagation();
  36. },
  37. "class": groupPrefixCls.value
  38. }), [_createVNode("div", {
  39. "title": typeof props.title === 'string' ? props.title : undefined,
  40. "class": "".concat(groupPrefixCls.value, "-title")
  41. }, [getPropsSlot(slots, props, 'title')]), _createVNode("ul", {
  42. "class": "".concat(groupPrefixCls.value, "-list")
  43. }, [(_slots$default2 = slots.default) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots)])]);
  44. };
  45. }
  46. });