bootstrap-vue
Version:
With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4 component and grid system available for Vue.js v2.6, complete with extens
49 lines (46 loc) • 1.69 kB
JavaScript
import { extend } from '../../../vue';
import { NAME_POPOVER_TEMPLATE } from '../../../constants/components';
import { isFunction, isUndefinedOrNull } from '../../../utils/inspect';
import { BVTooltipTemplate } from '../../tooltip/helpers/bv-tooltip-template'; // @vue/component
export var BVPopoverTemplate = /*#__PURE__*/extend({
name: NAME_POPOVER_TEMPLATE,
extends: BVTooltipTemplate,
computed: {
templateType: function templateType() {
return 'popover';
}
},
methods: {
renderTemplate: function renderTemplate(h) {
var title = this.title,
content = this.content; // Title and content could be a scoped slot function
var $title = isFunction(title) ? title({}) : title;
var $content = isFunction(content) ? content({}) : content; // Directive usage only
var titleDomProps = this.html && !isFunction(title) ? {
innerHTML: title
} : {};
var contentDomProps = this.html && !isFunction(content) ? {
innerHTML: content
} : {};
return h('div', {
staticClass: 'popover b-popover',
class: this.templateClasses,
attrs: this.templateAttributes,
on: this.templateListeners
}, [h('div', {
staticClass: 'arrow',
ref: 'arrow'
}), isUndefinedOrNull($title) || $title === '' ?
/* istanbul ignore next */
h() : h('h3', {
staticClass: 'popover-header',
domProps: titleDomProps
}, [$title]), isUndefinedOrNull($content) || $content === '' ?
/* istanbul ignore next */
h() : h('div', {
staticClass: 'popover-body',
domProps: contentDomProps
}, [$content])]);
}
}
});