{"version":3,"file":"bootstrap-confirmation.js","sources":["../src/popover.js","../src/confirmation.js"],"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 = '$VERSION';\nconst DATA_KEY = `bs.${NAME}`;\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst JQUERY_NO_CONFLICT = $.fn[NAME];\nconst BTN_CLASS_BASE = 'h-100 d-flex align-items-center';\nconst BTN_CLASS_DEFAULT = 'btn btn-sm';\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_CLASS_DEFAULT} btn-primary`,\n  btnOkLabel          : 'Yes',\n  btnOkIconClass      : '',\n  btnOkIconContent    : '',\n  btnCancelClass      : `${BTN_CLASS_DEFAULT} btn-secondary`,\n  btnCancelLabel      : 'No',\n  btnCancelIconClass  : '',\n  btnCancelIconContent: '',\n  buttons             : [],\n  // @formatter:off\n  template            : `\n<div class=\"popover confirmation\">\n  <div class=\"arrow\"></div>\n  <h3 class=\"popover-header\"></h3>\n  <div class=\"popover-body\">\n    <p class=\"confirmation-content\"></p>\n    <div class=\"confirmation-buttons text-center\">\n      <div class=\"btn-group\"></div>\n    </div>\n  </div>\n</div>`,\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};\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._setButtons($tip, this.config.buttons);\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    $('body').off(`${Event.CLICK}.${this.uid}`);\n    this.eventBody = false;\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) || $(self.config._selector).has(e.target).length > 0) {\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 buttons = [\n      {\n        class      : this.config.btnOkClass,\n        label      : this.config.btnOkLabel,\n        iconClass  : this.config.btnOkIconClass,\n        iconContent: this.config.btnOkIconContent,\n        attr       : this.config._attributes,\n      },\n      {\n        class      : this.config.btnCancelClass,\n        label      : this.config.btnCancelLabel,\n        iconClass  : this.config.btnCancelIconClass,\n        iconContent: this.config.btnCancelIconContent,\n        cancel     : true,\n      },\n    ];\n\n    this._setButtons($tip, buttons);\n  }\n\n  /**\n   * Init the buttons\n   * @param $tip\n   * @param buttons\n   * @private\n   */\n  _setButtons($tip, buttons) {\n    const self = this;\n    const $group = $tip.find(Selector.BUTTONS).empty();\n\n    buttons.forEach((button) => {\n      const btn = $('<a href=\"#\"></a>')\n        .addClass(BTN_CLASS_BASE)\n        .addClass(button.class || `${BTN_CLASS_DEFAULT} btn-secondary`)\n        .html(button.label || '')\n        .attr(button.attr || {});\n\n      if (button.iconClass || button.iconContent) {\n        btn.prepend($('<i></i>')\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          $(self.element).trigger(self.config.confirmationEvent, [true]);\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"],"names":["$","fn","popover","Constructor","VERSION","split","shift","Error","Popover","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","BTN_CLASS_BASE","BTN_CLASS_DEFAULT","DefaultType","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","ClassName","FADE","SHOW","Selector","TITLE","CONTENT","BUTTONS","Keymap","Event","HIDE","HIDDEN","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CONFIRMED","CANCELED","KEYUP","activeConfirmation","Confirmation","element","config","rootSelector","_isDelegate","selector","_copyAttributes","_setConfirmationListeners","isWithContent","setContent","$tip","getTipElement","_getContent","call","setElementContent","find","getTitle","toggle","length","_setButtons","_setStandardButtons","removeClass","_setupKeyupEvent","dispose","off","uid","eventBody","_cleanKeyupEvent","hide","callback","forEach","attr","self","on","e","ack","preventDefault","stopPropagation","stopImmediatePropagation","not","filter","data","confirmation","id","getUID","is","target","has","class","label","iconClass","iconContent","cancel","$group","empty","button","btn","addClass","html","prepend","text","one","onClick","value","append","window","_onKeyup","bind","event","tip","key","keyCode","which","$active","$next","next","children","first","focus","prev","last","prefix","Math","random","document","getElementById","_jQueryInterface","each","_config","test","TypeError","noConflict"],"mappings":"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"}