UNPKG

ant-design-vue

Version:

An enterprise-class UI design language and Vue-based implementation

65 lines (58 loc) 2.41 kB
import { isVNode as _isVNode, 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); } import { defineComponent, inject } from 'vue'; import Tooltip from '../tooltip'; import abstractTooltipProps from '../tooltip/abstractTooltipProps'; import PropTypes from '../_util/vue-types'; import { getOptionProps, getComponent, getSlot } from '../_util/props-util'; import { defaultConfigProvider } from '../config-provider'; import { withInstall } from '../_util/type'; function _isSlot(s) { return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !_isVNode(s); } var props = abstractTooltipProps(); var Popover = defineComponent({ name: 'APopover', props: _extends(_extends({}, props), { prefixCls: PropTypes.string, transitionName: PropTypes.string.def('zoom-big'), content: PropTypes.any, title: PropTypes.any }), setup: function setup() { return { configProvider: inject('configProvider', defaultConfigProvider) }; }, methods: { getPopupDomNode: function getPopupDomNode() { return this.$refs.tooltip.getPopupDomNode(); } }, render: function render() { var _slot; var title = this.title, customizePrefixCls = this.prefixCls, $slots = this.$slots; var getPrefixCls = this.configProvider.getPrefixCls; var prefixCls = getPrefixCls('popover', customizePrefixCls); var props = getOptionProps(this); delete props.title; delete props.content; var tooltipProps = _extends(_extends({}, props), { prefixCls: prefixCls, ref: 'tooltip', title: _createVNode("div", null, [(title || $slots.title) && _createVNode("div", { "class": "".concat(prefixCls, "-title") }, [getComponent(this, 'title')]), _createVNode("div", { "class": "".concat(prefixCls, "-inner-content") }, [getComponent(this, 'content')])]) }); return _createVNode(Tooltip, tooltipProps, _isSlot(_slot = getSlot(this)) ? _slot : { default: function _default() { return [_slot]; } }); } }); export default withInstall(Popover);