import Tooltip from './tooltip'; /** * -------------------------------------------------------------------------- * Bootstrap (v4.0.0-alpha.6): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ const Popover = ($ => { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ const NAME = 'popover'; const VERSION = '4.0.0-alpha.6'; const DATA_KEY = 'bs.popover'; const EVENT_KEY = `.${DATA_KEY}`; const JQUERY_NO_CONFLICT = $.fn[NAME]; const Default = $.extend({}, Tooltip.Default, { placement: 'right', trigger: 'click', content: '', template: '' }); const DefaultType = $.extend({}, Tooltip.DefaultType, { content: '(string|element|function)' }); const ClassName = { FADE: 'fade', SHOW: 'show' }; const Selector = { TITLE: '.popover-title', CONTENT: '.popover-content' }; 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}` }; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ class Popover extends Tooltip { // getters static get VERSION() { return VERSION; } static get Default() { return Default; } static get NAME() { return NAME; } static get DATA_KEY() { return DATA_KEY; } static get Event() { return Event; } static get EVENT_KEY() { return EVENT_KEY; } static get DefaultType() { return DefaultType; } // overrides isWithContent() { return this.getTitle() || this._getContent(); } getTipElement() { return this.tip = this.tip || $(this.config.template)[0]; } setContent() { const $tip = $(this.getTipElement()); // we use append for html objects to maintain js events this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); this.setElementContent($tip.find(Selector.CONTENT), this._getContent()); $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`); this.cleanupTether(); } // private _getContent() { return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content); } // static static _jQueryInterface(config) { return this.each(function () { let data = $(this).data(DATA_KEY); const _config = typeof config === 'object' ? config : null; if (!data && /destroy|hide/.test(config)) { return; } if (!data) { data = new Popover(this, _config); $(this).data(DATA_KEY, data); } if (typeof config === 'string') { if (data[config] === undefined) { throw new Error(`No method named "${config}"`); } data[config](); } }); } } /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ */ $.fn[NAME] = Popover._jQueryInterface; $.fn[NAME].Constructor = Popover; $.fn[NAME].noConflict = function () { $.fn[NAME] = JQUERY_NO_CONFLICT; return Popover._jQueryInterface; }; return Popover; })(jQuery); export default Popover; //# sourceMappingURL=popover.js.map