123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./tooltip.js')) :
- typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './tooltip'], factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.SelectorEngine, global.Tooltip));
- }(this, (function (SelectorEngine, Tooltip) { 'use strict';
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
- var SelectorEngine__default = _interopDefaultLegacy(SelectorEngine);
- var Tooltip__default = _interopDefaultLegacy(Tooltip);
- const getjQuery = () => {
- const {
- jQuery
- } = window;
- if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
- return jQuery;
- }
- return null;
- };
- const DOMContentLoadedCallbacks = [];
- const onDOMContentLoaded = callback => {
- if (document.readyState === 'loading') {
-
- if (!DOMContentLoadedCallbacks.length) {
- document.addEventListener('DOMContentLoaded', () => {
- DOMContentLoadedCallbacks.forEach(callback => callback());
- });
- }
- DOMContentLoadedCallbacks.push(callback);
- } else {
- callback();
- }
- };
- const defineJQueryPlugin = plugin => {
- onDOMContentLoaded(() => {
- const $ = getjQuery();
-
- if ($) {
- const name = plugin.NAME;
- const JQUERY_NO_CONFLICT = $.fn[name];
- $.fn[name] = plugin.jQueryInterface;
- $.fn[name].Constructor = plugin;
- $.fn[name].noConflict = () => {
- $.fn[name] = JQUERY_NO_CONFLICT;
- return plugin.jQueryInterface;
- };
- }
- });
- };
-
-
- const NAME = 'popover';
- const DATA_KEY = 'bs.popover';
- const EVENT_KEY = `.${DATA_KEY}`;
- const CLASS_PREFIX = 'bs-popover';
- const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g');
- const Default = { ...Tooltip__default['default'].Default,
- placement: 'right',
- offset: [0, 8],
- trigger: 'click',
- content: '',
- template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
- };
- const DefaultType = { ...Tooltip__default['default'].DefaultType,
- content: '(string|element|function)'
- };
- const Event = {
- HIDE: `hide${EVENT_KEY}`,
- HIDDEN: `hidden${EVENT_KEY}`,
- SHOW: `show${EVENT_KEY}`,
- SHOWN: `shown${EVENT_KEY}`,
- INSERTED: `inserted${EVENT_KEY}`,
- CLICK: `click${EVENT_KEY}`,
- FOCUSIN: `focusin${EVENT_KEY}`,
- FOCUSOUT: `focusout${EVENT_KEY}`,
- MOUSEENTER: `mouseenter${EVENT_KEY}`,
- MOUSELEAVE: `mouseleave${EVENT_KEY}`
- };
- const CLASS_NAME_FADE = 'fade';
- const CLASS_NAME_SHOW = 'show';
- const SELECTOR_TITLE = '.popover-header';
- const SELECTOR_CONTENT = '.popover-body';
-
- class Popover extends Tooltip__default['default'] {
-
- static get Default() {
- return Default;
- }
- static get NAME() {
- return NAME;
- }
- static get Event() {
- return Event;
- }
- static get DefaultType() {
- return DefaultType;
- }
- isWithContent() {
- return this.getTitle() || this._getContent();
- }
- getTipElement() {
- if (this.tip) {
- return this.tip;
- }
- this.tip = super.getTipElement();
- if (!this.getTitle()) {
- SelectorEngine__default['default'].findOne(SELECTOR_TITLE, this.tip).remove();
- }
- if (!this._getContent()) {
- SelectorEngine__default['default'].findOne(SELECTOR_CONTENT, this.tip).remove();
- }
- return this.tip;
- }
- setContent() {
- const tip = this.getTipElement();
- this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_TITLE, tip), this.getTitle());
- let content = this._getContent();
- if (typeof content === 'function') {
- content = content.call(this._element);
- }
- this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_CONTENT, tip), content);
- tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);
- }
- _addAttachmentClass(attachment) {
- this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`);
- }
- _getContent() {
- return this._element.getAttribute('data-bs-content') || this._config.content;
- }
- _cleanTipClass() {
- const tip = this.getTipElement();
- const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
- if (tabClass !== null && tabClass.length > 0) {
- tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
- }
- }
- static jQueryInterface(config) {
- return this.each(function () {
- const data = Popover.getOrCreateInstance(this, config);
- if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new TypeError(`No method named "${config}"`);
- }
- data[config]();
- }
- });
- }
- }
-
- defineJQueryPlugin(Popover);
- return Popover;
- })));
|