UNPKG

4.98 kBJavaScriptView Raw
1import { createVNode as _createVNode } 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
5var __rest = this && this.__rest || function (s, e) {
6 var t = {};
7
8 for (var p in s) {
9 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
10 }
11
12 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
13 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
14 }
15 return t;
16};
17
18import PropTypes from '../_util/vue-types';
19import Trigger from '../vc-trigger';
20import { placements } from './placements';
21import Content from './Content';
22import { hasProp, getComponent, getOptionProps, getSlot } from '../_util/props-util';
23import { defineComponent } from 'vue';
24
25function noop() {}
26
27export default defineComponent({
28 name: 'Tooltip',
29 inheritAttrs: false,
30 props: {
31 trigger: PropTypes.any.def(['hover']),
32 defaultVisible: PropTypes.looseBool,
33 visible: PropTypes.looseBool,
34 placement: PropTypes.string.def('right'),
35 transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
36 animation: PropTypes.any,
37 afterVisibleChange: PropTypes.func.def(function () {}),
38 overlay: PropTypes.any,
39 overlayStyle: PropTypes.object,
40 overlayClassName: PropTypes.string,
41 prefixCls: PropTypes.string.def('rc-tooltip'),
42 mouseEnterDelay: PropTypes.number.def(0),
43 mouseLeaveDelay: PropTypes.number.def(0.1),
44 getTooltipContainer: PropTypes.func,
45 destroyTooltipOnHide: PropTypes.looseBool.def(false),
46 align: PropTypes.object.def(function () {
47 return {};
48 }),
49 arrowContent: PropTypes.any.def(null),
50 tipId: PropTypes.string,
51 builtinPlacements: PropTypes.object,
52 overlayInnerStyle: PropTypes.style
53 },
54 methods: {
55 getPopupElement: function getPopupElement() {
56 var _this$$props = this.$props,
57 prefixCls = _this$$props.prefixCls,
58 tipId = _this$$props.tipId,
59 overlayInnerStyle = _this$$props.overlayInnerStyle;
60 return [_createVNode("div", {
61 "class": "".concat(prefixCls, "-arrow"),
62 "key": "arrow"
63 }, [getComponent(this, 'arrowContent')]), _createVNode(Content, {
64 "key": "content",
65 "trigger": this.$refs.trigger,
66 "prefixCls": prefixCls,
67 "id": tipId,
68 "overlay": getComponent(this, 'overlay'),
69 "overlayInnerStyle": overlayInnerStyle
70 }, null)];
71 },
72 getPopupDomNode: function getPopupDomNode() {
73 return this.$refs.trigger.getPopupDomNode();
74 }
75 },
76 render: function render(h) {
77 var _this = this;
78
79 var _a = getOptionProps(this),
80 overlayClassName = _a.overlayClassName,
81 trigger = _a.trigger,
82 mouseEnterDelay = _a.mouseEnterDelay,
83 mouseLeaveDelay = _a.mouseLeaveDelay,
84 overlayStyle = _a.overlayStyle,
85 prefixCls = _a.prefixCls,
86 afterVisibleChange = _a.afterVisibleChange,
87 transitionName = _a.transitionName,
88 animation = _a.animation,
89 placement = _a.placement,
90 align = _a.align,
91 destroyTooltipOnHide = _a.destroyTooltipOnHide,
92 defaultVisible = _a.defaultVisible,
93 getTooltipContainer = _a.getTooltipContainer,
94 restProps = __rest(_a, ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "afterVisibleChange", "transitionName", "animation", "placement", "align", "destroyTooltipOnHide", "defaultVisible", "getTooltipContainer"]);
95
96 var extraProps = _extends({}, restProps);
97
98 if (hasProp(this, 'visible')) {
99 extraProps.popupVisible = this.$props.visible;
100 }
101
102 var $attrs = this.$attrs;
103
104 var triggerProps = _extends(_extends(_extends({
105 popupClassName: overlayClassName,
106 prefixCls: prefixCls,
107 action: trigger,
108 builtinPlacements: placements,
109 popupPlacement: placement,
110 popupAlign: align,
111 getPopupContainer: getTooltipContainer,
112 afterPopupVisibleChange: afterVisibleChange,
113 popupTransitionName: transitionName,
114 popupAnimation: animation,
115 defaultPopupVisible: defaultVisible,
116 destroyPopupOnHide: destroyTooltipOnHide,
117 mouseLeaveDelay: mouseLeaveDelay,
118 popupStyle: overlayStyle,
119 mouseEnterDelay: mouseEnterDelay
120 }, extraProps), $attrs), {
121 onPopupVisibleChange: $attrs.onVisibleChange || noop,
122 onPopupAlign: $attrs.onPopupAlign || noop,
123 ref: 'trigger',
124 popup: this.getPopupElement()
125 });
126
127 return _createVNode(Trigger, triggerProps, {
128 default: function _default() {
129 return [getSlot(_this)[0]];
130 }
131 });
132 }
133});
\No newline at end of file