{"version":3,"sources":["../src/popover.js","../src/confirmation.js"],"names":["fn","popover","$","Constructor","VERSION","split","shift","Error","Popover","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","BTN_CLASS_DEFAULT","DefaultType","_objectSpread","singleton","popout","copyAttributes","onConfirm","onCancel","btnOkClass","btnOkLabel","btnOkIconClass","btnOkIconContent","btnCancelClass","btnCancelLabel","btnCancelIconClass","btnCancelIconContent","buttons","Default","_attributes","_selector","placement","title","trigger","confirmationEvent","undefined","content","noop","template","whiteList","push","activeConfirmation","ClassName","Selector","Keymap","13","27","39","40","Event","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CONFIRMED","CANCELED","KEYUP","Confirmation","element","config","_this","_Popover","call","this","rootSelector","_isDelegate","selector","_copyAttributes","_setConfirmationListeners","isWithContent","setContent","$tip","getTipElement","_getContent","setElementContent","find","getTitle","toggle","length","_setCustomButtons","_setStandardButtons","removeClass","_setupKeyupEvent","dispose","_cleanKeyupEvent","prototype","hide","callback","_this2","forEach","attr","self","on","e","ack","preventDefault","stopPropagation","stopImmediatePropagation","not","filter","data","confirmation","eventBody","uid","id","getUID","is","target","off","btnApply","addClass","html","prepend","text","one","btnDismiss","$group","empty","button","btn","class","label","iconClass","iconContent","onClick","cancel","value","append","window","_onKeyup","bind","event","tip","$next","key","keyCode","which","$active","next","children","first","focus","prev","last","prefix","Math","random","document","getElementById","_jQueryInterface","each","_config","test","TypeError","noConflict"],"mappings":"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","sourcesContent":["import $ from 'jquery';\nimport 'bootstrap';\n\nif (typeof $.fn.popover === 'undefined' || $.fn.popover.Constructor.VERSION.split('.').shift() !== '4') {\n throw new Error('Bootstrap Confirmation 4 requires Bootstrap Popover 4');\n}\n\nconst Popover = $.fn.popover.Constructor;\n\nexport default Popover;\n","import $ from 'jquery';\nimport Popover from 'bootstrap/js/src/popover';\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'confirmation';\nconst VERSION = '4.0.3';\nconst DATA_KEY = `bs.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst JQUERY_NO_CONFLICT = $.fn[NAME];\nconst BTN_CLASS_DEFAULT = 'btn btn-sm h-100 d-flex align-items-center';\n\nconst DefaultType = {\n ...Popover.DefaultType,\n singleton : 'boolean',\n popout : 'boolean',\n copyAttributes : '(string|array)',\n onConfirm : 'function',\n onCancel : 'function',\n btnOkClass : 'string',\n btnOkLabel : 'string',\n btnOkIconClass : 'string',\n btnOkIconContent : 'string',\n btnCancelClass : 'string',\n btnCancelLabel : 'string',\n btnCancelIconClass : 'string',\n btnCancelIconContent: 'string',\n buttons : 'array',\n};\n\nconst Default = {\n ...Popover.Default,\n _attributes : {},\n _selector : null,\n placement : 'top',\n title : 'Are you sure?',\n trigger : 'click',\n confirmationEvent : undefined,\n content : '',\n singleton : false,\n popout : false,\n copyAttributes : 'href target',\n onConfirm : $.noop,\n onCancel : $.noop,\n btnOkClass : 'btn-primary',\n btnOkLabel : 'Yes',\n btnOkIconClass : '',\n btnOkIconContent : '',\n btnCancelClass : 'btn-secondary',\n btnCancelLabel : 'No',\n btnCancelIconClass : '',\n btnCancelIconContent: '',\n buttons : [],\n // @formatter:off\n // href=\"#\" allows the buttons to be focused\n template : `\n
\n
\n

\n
\n

\n
\n
\n \n \n
\n
\n
\n
`,\n // @formatter:on\n};\n\nif (Default.whiteList) {\n Default.whiteList['*'].push('data-apply', 'data-dismiss');\n}\n\nconst ClassName = {\n FADE: 'fade',\n SHOW: 'show',\n};\n\nconst Selector = {\n TITLE : '.popover-header',\n CONTENT : '.confirmation-content',\n BUTTONS : '.confirmation-buttons .btn-group',\n BTN_APPLY : '[data-apply=confirmation]',\n BTN_DISMISS: '[data-dismiss=confirmation]',\n};\n\nconst Keymap = {\n 13: 'Enter',\n 27: 'Escape',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n};\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`,\n CONFIRMED : `confirmed${EVENT_KEY}`,\n CANCELED : `canceled${EVENT_KEY}`,\n KEYUP : `keyup${EVENT_KEY}`,\n};\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n// keep track of the last openned confirmation for keyboard navigation\nlet activeConfirmation;\n\nclass Confirmation extends Popover {\n // Getters\n\n static get VERSION() {\n return VERSION;\n }\n\n static get Default() {\n return Default;\n }\n\n static get NAME() {\n return NAME;\n }\n\n static get DATA_KEY() {\n return DATA_KEY;\n }\n\n static get Event() {\n return Event;\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n // Constructor\n\n constructor(element, config) {\n super(element, config);\n\n if ((this.config.popout || this.config.singleton) && !this.config.rootSelector) {\n throw new Error('The rootSelector option is required to use popout and singleton features since jQuery 3.');\n }\n\n // keep trace of selectors\n this._isDelegate = false;\n\n if (config.selector) { // container of buttons\n config._selector = `${config.rootSelector} ${config.selector}`;\n this.config._selector = config._selector;\n }\n else if (config._selector) { // children of container\n this.config._selector = config._selector;\n this._isDelegate = true;\n }\n else { // standalone\n this.config._selector = config.rootSelector;\n }\n\n if (this.config.confirmationEvent === undefined) {\n this.config.confirmationEvent = this.config.trigger;\n }\n\n if (!this.config.selector) {\n this._copyAttributes();\n }\n\n this._setConfirmationListeners();\n }\n\n // Overrides\n\n isWithContent() {\n return true;\n }\n\n setContent() {\n const $tip = $(this.getTipElement());\n let content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle());\n\n $tip.find(Selector.CONTENT).toggle(!!content);\n if (content) {\n this.setElementContent($tip.find(Selector.CONTENT), content);\n }\n\n if (this.config.buttons.length > 0) {\n this._setCustomButtons($tip);\n }\n else {\n this._setStandardButtons($tip);\n }\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`);\n\n this._setupKeyupEvent();\n }\n\n dispose() {\n this._cleanKeyupEvent();\n super.dispose();\n }\n\n hide(callback) {\n this._cleanKeyupEvent();\n super.hide(callback);\n }\n\n // Private\n\n /**\n * Copy the value of `copyAttributes` on the config object\n * @private\n */\n _copyAttributes() {\n this.config._attributes = {};\n if (this.config.copyAttributes) {\n if (typeof this.config.copyAttributes === 'string') {\n this.config.copyAttributes = this.config.copyAttributes.split(' ');\n }\n }\n else {\n this.config.copyAttributes = [];\n }\n\n this.config.copyAttributes.forEach((attr) => {\n this.config._attributes[attr] = $(this.element).attr(attr);\n });\n }\n\n /**\n * Custom event listeners for popouts and singletons\n * @private\n */\n _setConfirmationListeners() {\n const self = this;\n\n if (!this.config.selector) {\n // cancel original event\n $(this.element).on(this.config.trigger, (e, ack) => {\n if (!ack) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n });\n\n // manage singleton\n $(this.element).on(Event.SHOWN, function () {\n if (self.config.singleton) {\n // close all other popover already initialized\n $(self.config._selector).not($(this)).filter(function () {\n return $(this).data(DATA_KEY) !== undefined;\n }).confirmation('hide');\n }\n });\n }\n else {\n // cancel original event\n $(this.element).on(this.config.trigger, this.config.selector, (e, ack) => {\n if (!ack) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n });\n }\n\n if (!this._isDelegate) {\n // manage popout\n this.eventBody = false;\n this.uid = this.element.id || Confirmation.getUID(`${NAME}_group`);\n\n $(this.element).on(Event.SHOWN, () => {\n if (self.config.popout && !self.eventBody) {\n self.eventBody = $('body').on(`${Event.CLICK}.${self.uid}`, (e) => {\n if ($(self.config._selector).is(e.target)) {\n return;\n }\n // close all popover already initialized\n $(self.config._selector).filter(function () {\n return $(this).data(DATA_KEY) !== undefined;\n }).confirmation('hide');\n\n $('body').off(`${Event.CLICK}.${self.uid}`);\n self.eventBody = false;\n });\n }\n });\n }\n }\n\n /**\n * Init the standard ok/cancel buttons\n * @param $tip\n * @private\n */\n _setStandardButtons($tip) {\n const self = this;\n\n const btnApply = $tip.find(Selector.BTN_APPLY)\n .addClass(this.config.btnOkClass)\n .html(this.config.btnOkLabel)\n .attr(this.config._attributes);\n\n if (this.config.btnOkIconClass || this.config.btnOkIconContent) {\n btnApply.prepend($('')\n .addClass(this.config.btnOkIconClass || '')\n .text(this.config.btnOkIconContent || ''));\n }\n\n btnApply.off('click')\n .one('click', function (e) {\n if ($(this).attr('href') === '#') {\n e.preventDefault();\n }\n\n self.config.onConfirm.call(self.element);\n $(self.element).trigger(Event.CONFIRMED);\n $(self.element).trigger(self.config.confirmationEvent, [true]);\n\n self.hide();\n });\n\n const btnDismiss = $tip.find(Selector.BTN_DISMISS)\n .addClass(this.config.btnCancelClass)\n .html(this.config.btnCancelLabel);\n\n if (this.config.btnCancelIconClass || this.config.btnCancelIconContent) {\n btnDismiss.prepend($('')\n .addClass(this.config.btnCancelIconClass || '')\n .text(this.config.btnCancelIconContent || ''));\n }\n\n btnDismiss.off('click')\n .one('click', (e) => {\n e.preventDefault();\n\n self.config.onCancel.call(self.element);\n $(self.element).trigger(Event.CANCELED);\n\n self.hide();\n });\n }\n\n /**\n * Init the custom buttons\n * @param $tip\n * @private\n */\n _setCustomButtons($tip) {\n const self = this;\n const $group = $tip.find(Selector.BUTTONS).empty();\n\n this.config.buttons.forEach((button) => {\n const btn = $('')\n .addClass(BTN_CLASS_DEFAULT)\n .addClass(button.class || 'btn btn-secondary')\n .html(button.label || '')\n .attr(button.attr || {});\n\n if (button.iconClass || button.iconContent) {\n btn.prepend($('')\n .addClass(button.iconClass || '')\n .text(button.iconContent || ''));\n }\n\n btn.one('click', function (e) {\n if ($(this).attr('href') === '#') {\n e.preventDefault();\n }\n\n if (button.onClick) {\n button.onClick.call($(self.element));\n }\n\n if (button.cancel) {\n self.config.onCancel.call(self.element, button.value);\n $(self.element).trigger(Event.CANCELED, [button.value]);\n }\n else {\n self.config.onConfirm.call(self.element, button.value);\n $(self.element).trigger(Event.CONFIRMED, [button.value]);\n }\n\n self.hide();\n });\n\n $group.append(btn);\n });\n }\n\n /**\n * Install the keyboatd event handler\n * @private\n */\n _setupKeyupEvent() {\n activeConfirmation = this;\n $(window)\n .off(Event.KEYUP)\n .on(Event.KEYUP, this._onKeyup.bind(this));\n }\n\n /**\n * Remove the keyboard event handler\n * @private\n */\n _cleanKeyupEvent() {\n if (activeConfirmation === this) {\n activeConfirmation = undefined;\n $(window).off(Event.KEYUP);\n }\n }\n\n /**\n * Event handler for keyboard navigation\n * @param event\n * @private\n */\n _onKeyup(event) {\n if (!this.tip) {\n this._cleanKeyupEvent();\n return;\n }\n\n const $tip = $(this.getTipElement());\n const key = event.key || Keymap[event.keyCode || event.which];\n\n const $group = $tip.find(Selector.BUTTONS);\n const $active = $group.find('.active');\n let $next;\n\n switch (key) {\n case 'Escape':\n this.hide();\n break;\n\n case 'ArrowRight':\n if ($active.length && $active.next().length) {\n $next = $active.next();\n }\n else {\n $next = $group.children().first();\n }\n $active.removeClass('active');\n $next.addClass('active').focus();\n break;\n\n case 'ArrowLeft':\n if ($active.length && $active.prev().length) {\n $next = $active.prev();\n }\n else {\n $next = $group.children().last();\n }\n $active.removeClass('active');\n $next.addClass('active').focus();\n break;\n\n default:\n break;\n }\n }\n\n // Static\n\n /**\n * Generates an uui, copied from Bootrap's utils\n * @param {string} prefix\n * @returns {string}\n */\n static getUID(prefix) {\n let uid = prefix;\n do {\n // eslint-disable-next-line no-bitwise\n uid += ~~(Math.random() * 1000000); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(uid));\n return uid;\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY);\n\n const _config = typeof config === 'object' ? config : {};\n _config.rootSelector = $(this).selector || _config.rootSelector; // this.selector removed in jQuery > 3\n\n if (!data && /destroy|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Confirmation(this, _config);\n $(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Confirmation._jQueryInterface;\n$.fn[NAME].Constructor = Confirmation;\n$.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Confirmation._jQueryInterface;\n};\n\nexport default Confirmation;\n"]}