ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
133 lines (120 loc) • 4.98 kB
JavaScript
import { createVNode as _createVNode } from "vue";
function _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); }
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
}
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
import PropTypes from '../_util/vue-types';
import Trigger from '../vc-trigger';
import { placements } from './placements';
import Content from './Content';
import { hasProp, getComponent, getOptionProps, getSlot } from '../_util/props-util';
import { defineComponent } from 'vue';
function noop() {}
export default defineComponent({
name: 'Tooltip',
inheritAttrs: false,
props: {
trigger: PropTypes.any.def(['hover']),
defaultVisible: PropTypes.looseBool,
visible: PropTypes.looseBool,
placement: PropTypes.string.def('right'),
transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
animation: PropTypes.any,
afterVisibleChange: PropTypes.func.def(function () {}),
overlay: PropTypes.any,
overlayStyle: PropTypes.object,
overlayClassName: PropTypes.string,
prefixCls: PropTypes.string.def('rc-tooltip'),
mouseEnterDelay: PropTypes.number.def(0),
mouseLeaveDelay: PropTypes.number.def(0.1),
getTooltipContainer: PropTypes.func,
destroyTooltipOnHide: PropTypes.looseBool.def(false),
align: PropTypes.object.def(function () {
return {};
}),
arrowContent: PropTypes.any.def(null),
tipId: PropTypes.string,
builtinPlacements: PropTypes.object,
overlayInnerStyle: PropTypes.style
},
methods: {
getPopupElement: function getPopupElement() {
var _this$$props = this.$props,
prefixCls = _this$$props.prefixCls,
tipId = _this$$props.tipId,
overlayInnerStyle = _this$$props.overlayInnerStyle;
return [_createVNode("div", {
"class": "".concat(prefixCls, "-arrow"),
"key": "arrow"
}, [getComponent(this, 'arrowContent')]), _createVNode(Content, {
"key": "content",
"trigger": this.$refs.trigger,
"prefixCls": prefixCls,
"id": tipId,
"overlay": getComponent(this, 'overlay'),
"overlayInnerStyle": overlayInnerStyle
}, null)];
},
getPopupDomNode: function getPopupDomNode() {
return this.$refs.trigger.getPopupDomNode();
}
},
render: function render(h) {
var _this = this;
var _a = getOptionProps(this),
overlayClassName = _a.overlayClassName,
trigger = _a.trigger,
mouseEnterDelay = _a.mouseEnterDelay,
mouseLeaveDelay = _a.mouseLeaveDelay,
overlayStyle = _a.overlayStyle,
prefixCls = _a.prefixCls,
afterVisibleChange = _a.afterVisibleChange,
transitionName = _a.transitionName,
animation = _a.animation,
placement = _a.placement,
align = _a.align,
destroyTooltipOnHide = _a.destroyTooltipOnHide,
defaultVisible = _a.defaultVisible,
getTooltipContainer = _a.getTooltipContainer,
restProps = __rest(_a, ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "afterVisibleChange", "transitionName", "animation", "placement", "align", "destroyTooltipOnHide", "defaultVisible", "getTooltipContainer"]);
var extraProps = _extends({}, restProps);
if (hasProp(this, 'visible')) {
extraProps.popupVisible = this.$props.visible;
}
var $attrs = this.$attrs;
var triggerProps = _extends(_extends(_extends({
popupClassName: overlayClassName,
prefixCls: prefixCls,
action: trigger,
builtinPlacements: placements,
popupPlacement: placement,
popupAlign: align,
getPopupContainer: getTooltipContainer,
afterPopupVisibleChange: afterVisibleChange,
popupTransitionName: transitionName,
popupAnimation: animation,
defaultPopupVisible: defaultVisible,
destroyPopupOnHide: destroyTooltipOnHide,
mouseLeaveDelay: mouseLeaveDelay,
popupStyle: overlayStyle,
mouseEnterDelay: mouseEnterDelay
}, extraProps), $attrs), {
onPopupVisibleChange: $attrs.onVisibleChange || noop,
onPopupAlign: $attrs.onPopupAlign || noop,
ref: 'trigger',
popup: this.getPopupElement()
});
return _createVNode(Trigger, triggerProps, {
default: function _default() {
return [getSlot(_this)[0]];
}
});
}
});