@aplus-frontend/antdv
Version:
Vue basic component library maintained based on ant-design-vue
180 lines (179 loc) • 5.91 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _vue = require("vue");
var _vueTypes = _interopRequireDefault(require("../../_util/vue-types"));
var _vcTrigger = _interopRequireDefault(require("../../vc-trigger"));
var _placements = require("./placements");
var _Content = _interopRequireDefault(require("./Content"));
var _propsUtil = require("../../_util/props-util");
var __rest = void 0 && (void 0).__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;
};
function noop() {}
var _default = exports.default = (0, _vue.defineComponent)({
compatConfig: {
MODE: 3
},
name: 'Tooltip',
inheritAttrs: false,
props: {
trigger: _vueTypes.default.any.def(['hover']),
defaultVisible: {
type: Boolean,
default: undefined
},
visible: {
type: Boolean,
default: undefined
},
placement: _vueTypes.default.string.def('right'),
transitionName: String,
maskTransitionName: String,
animation: _vueTypes.default.any,
afterVisibleChange: _vueTypes.default.func.def(() => {}),
overlayStyle: {
type: Object,
default: undefined
},
overlayClassName: String,
prefixCls: _vueTypes.default.string.def('rc-tooltip'),
mouseEnterDelay: _vueTypes.default.number.def(0.1),
mouseLeaveDelay: _vueTypes.default.number.def(0.1),
getPopupContainer: Function,
destroyTooltipOnHide: {
type: Boolean,
default: false
},
align: _vueTypes.default.object.def(() => ({})),
arrowContent: _vueTypes.default.any.def(null),
tipId: String,
builtinPlacements: _vueTypes.default.object,
overlayInnerStyle: {
type: Object,
default: undefined
},
popupVisible: {
type: Boolean,
default: undefined
},
onVisibleChange: Function,
onPopupAlign: Function,
arrow: {
type: Boolean,
default: true
}
},
setup(props, _ref) {
let {
slots,
attrs,
expose
} = _ref;
const triggerDOM = (0, _vue.shallowRef)();
const getPopupElement = () => {
const {
prefixCls,
tipId,
overlayInnerStyle
} = props;
return [!!props.arrow ? (0, _vue.createVNode)("div", {
"class": `${prefixCls}-arrow`,
"key": "arrow"
}, [(0, _propsUtil.getPropsSlot)(slots, props, 'arrowContent')]) : null, (0, _vue.createVNode)(_Content.default, {
"key": "content",
"prefixCls": prefixCls,
"id": tipId,
"overlayInnerStyle": overlayInnerStyle
}, {
overlay: slots.overlay
})];
};
const getPopupDomNode = () => {
return triggerDOM.value.getPopupDomNode();
};
expose({
getPopupDomNode,
triggerDOM,
forcePopupAlign: () => {
var _a;
return (_a = triggerDOM.value) === null || _a === void 0 ? void 0 : _a.forcePopupAlign();
}
});
const destroyTooltip = (0, _vue.shallowRef)(false);
const autoDestroy = (0, _vue.shallowRef)(false);
(0, _vue.watchEffect)(() => {
const {
destroyTooltipOnHide
} = props;
if (typeof destroyTooltipOnHide === 'boolean') {
destroyTooltip.value = destroyTooltipOnHide;
} else if (destroyTooltipOnHide && typeof destroyTooltipOnHide === 'object') {
const {
keepParent
} = destroyTooltipOnHide;
destroyTooltip.value = keepParent === true;
autoDestroy.value = keepParent === false;
}
});
return () => {
const {
overlayClassName,
trigger,
mouseEnterDelay,
mouseLeaveDelay,
overlayStyle,
prefixCls,
afterVisibleChange,
transitionName,
animation,
placement,
align,
destroyTooltipOnHide,
defaultVisible,
maskTransitionName
} = props,
restProps = __rest(props, ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "afterVisibleChange", "transitionName", "animation", "placement", "align", "destroyTooltipOnHide", "defaultVisible", "maskTransitionName"]);
const extraProps = (0, _extends2.default)({}, restProps);
if (props.visible !== undefined) {
extraProps.popupVisible = props.visible;
}
const triggerProps = (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({
popupClassName: overlayClassName,
prefixCls,
action: trigger,
builtinPlacements: _placements.placements,
popupPlacement: placement,
popupAlign: align,
afterPopupVisibleChange: afterVisibleChange,
popupTransitionName: transitionName,
maskTransitionName,
popupAnimation: animation,
defaultPopupVisible: defaultVisible,
destroyPopupOnHide: destroyTooltip.value,
autoDestroy: autoDestroy.value,
mouseLeaveDelay,
popupStyle: overlayStyle,
mouseEnterDelay
}, extraProps), attrs), {
onPopupVisibleChange: props.onVisibleChange || noop,
onPopupAlign: props.onPopupAlign || noop,
ref: triggerDOM,
arrow: !!props.arrow,
popup: getPopupElement()
});
return (0, _vue.createVNode)(_vcTrigger.default, triggerProps, {
default: slots.default
});
};
}
});
;