UNPKG

2.95 kBJavaScriptView Raw
1import { createVNode as _createVNode, isVNode as _isVNode } from "vue";
2
3function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
5import { defineComponent, inject } from 'vue';
6import { Item, itemProps } from '../vc-menu';
7import { getOptionProps, getSlot } from '../_util/props-util';
8import Tooltip from '../tooltip';
9import { injectExtraPropsKey } from '../vc-menu/FunctionProvider';
10
11function _isSlot(s) {
12 return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !_isVNode(s);
13}
14
15export default defineComponent({
16 name: 'MenuItem',
17 inheritAttrs: false,
18 props: itemProps,
19 isMenuItem: true,
20 setup: function setup() {
21 return {
22 getInlineCollapsed: inject('getInlineCollapsed', function () {
23 return false;
24 }),
25 layoutSiderContext: inject('layoutSiderContext', {}),
26 injectExtraProps: inject(injectExtraPropsKey, function () {
27 return {};
28 })
29 };
30 },
31 methods: {
32 onKeyDown: function onKeyDown(e) {
33 this.$refs.menuItem.onKeyDown(e);
34 }
35 },
36 render: function render() {
37 var props = getOptionProps(this);
38
39 var _Object$assign = _extends(_extends({}, props), this.injectExtraProps),
40 level = _Object$assign.level,
41 title = _Object$assign.title,
42 rootPrefixCls = _Object$assign.rootPrefixCls;
43
44 var getInlineCollapsed = this.getInlineCollapsed,
45 attrs = this.$attrs;
46 var inlineCollapsed = getInlineCollapsed();
47 var tooltipTitle = title;
48 var children = getSlot(this);
49
50 if (typeof title === 'undefined') {
51 tooltipTitle = level === 1 ? children : '';
52 } else if (title === false) {
53 tooltipTitle = '';
54 }
55
56 var tooltipProps = {
57 title: tooltipTitle
58 };
59 var siderCollapsed = this.layoutSiderContext.sCollapsed;
60
61 if (!siderCollapsed && !inlineCollapsed) {
62 tooltipProps.title = null; // Reset `visible` to fix control mode tooltip display not correct
63 // ref: https://github.com/ant-design/ant-design/issues/16742
64
65 tooltipProps.visible = false;
66 }
67
68 var itemProps = _extends(_extends(_extends(_extends({}, props), {
69 title: title
70 }), attrs), {
71 ref: 'menuItem'
72 });
73
74 var toolTipProps = _extends(_extends({}, tooltipProps), {
75 placement: 'right',
76 overlayClassName: "".concat(rootPrefixCls, "-inline-collapsed-tooltip")
77 });
78
79 var item = _createVNode(Item, itemProps, _isSlot(children) ? children : {
80 default: function _default() {
81 return [children];
82 }
83 });
84
85 return _createVNode(Tooltip, toolTipProps, _isSlot(item) ? item : {
86 default: function _default() {
87 return [item];
88 }
89 });
90 }
91});
\No newline at end of file