bootstrap.bundle.js 239 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
5001
5002
        }

XhmikosR's avatar
XhmikosR committed
5003
5004
5005
        dropdownMenu.classList.remove(CLASS_NAME_SHOW$1);
        toggles[i].classList.remove(CLASS_NAME_SHOW$1);
        EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
XhmikosR's avatar
Dist    
XhmikosR committed
5006
5007
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5008

XhmikosR's avatar
XhmikosR committed
5009
5010
    Dropdown.getParentFromElement = function getParentFromElement(element) {
      return getElementFromSelector(element) || element.parentNode;
XhmikosR's avatar
XhmikosR committed
5011
    };
Mark Otto's avatar
dist  
Mark Otto committed
5012

XhmikosR's avatar
XhmikosR committed
5013
    Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5014
5015
5016
5017
5018
5019
5020
      // If not input/textarea:
      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
      // If input/textarea:
      //  - If space key => not a dropdown command
      //  - If key is other than escape
      //    - If key is not up or down => not a dropdown command
      //    - If trigger inside the menu => not a dropdown command
XhmikosR's avatar
XhmikosR committed
5021
      if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5022
5023
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5024

XhmikosR's avatar
Dist    
XhmikosR committed
5025
5026
      event.preventDefault();
      event.stopPropagation();
Mark Otto's avatar
dist  
Mark Otto committed
5027

XhmikosR's avatar
XhmikosR committed
5028
      if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5029
5030
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5031

XhmikosR's avatar
XhmikosR committed
5032
      var parent = Dropdown.getParentFromElement(this);
XhmikosR's avatar
XhmikosR committed
5033
      var isActive = this.classList.contains(CLASS_NAME_SHOW$1);
XhmikosR's avatar
Dist    
XhmikosR committed
5034

XhmikosR's avatar
XhmikosR committed
5035
      if (event.key === ESCAPE_KEY) {
XhmikosR's avatar
XhmikosR committed
5036
5037
5038
5039
5040
        var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0];
        button.focus();
        Dropdown.clearMenus();
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5041

XhmikosR's avatar
XhmikosR committed
5042
      if (!isActive || event.key === SPACE_KEY) {
XhmikosR's avatar
XhmikosR committed
5043
        Dropdown.clearMenus();
XhmikosR's avatar
Dist    
XhmikosR committed
5044
5045
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5046

XhmikosR's avatar
XhmikosR committed
5047
      var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
Mark Otto's avatar
dist  
Mark Otto committed
5048

XhmikosR's avatar
XhmikosR committed
5049
      if (!items.length) {
XhmikosR's avatar
Dist    
XhmikosR committed
5050
5051
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5052

XhmikosR's avatar
XhmikosR committed
5053
      var index = items.indexOf(event.target);
Mark Otto's avatar
dist  
Mark Otto committed
5054

XhmikosR's avatar
XhmikosR committed
5055
      if (event.key === ARROW_UP_KEY && index > 0) {
XhmikosR's avatar
Dist    
XhmikosR committed
5056
5057
5058
        // Up
        index--;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5059

XhmikosR's avatar
XhmikosR committed
5060
      if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
XhmikosR's avatar
Dist    
XhmikosR committed
5061
5062
        // Down
        index++;
XhmikosR's avatar
XhmikosR committed
5063
5064
      } // index is -1 if the first keydown is an ArrowUp

Mark Otto's avatar
dist  
Mark Otto committed
5065

XhmikosR's avatar
XhmikosR committed
5066
      index = index === -1 ? 0 : index;
XhmikosR's avatar
Dist    
XhmikosR committed
5067
      items[index].focus();
Mark Otto's avatar
dist  
Mark Otto committed
5068
5069
    };

XhmikosR's avatar
XhmikosR committed
5070
    Dropdown.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
5071
5072
5073
      return Data.getData(element, DATA_KEY$4);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
    _createClass(Dropdown, null, [{
      key: "VERSION",
      get: function get() {
        return VERSION$4;
      }
    }, {
      key: "Default",
      get: function get() {
        return Default$2;
      }
    }, {
      key: "DefaultType",
      get: function get() {
        return DefaultType$2;
      }
    }]);

Mark Otto's avatar
dist  
Mark Otto committed
5091
    return Dropdown;
XhmikosR's avatar
Dist    
XhmikosR committed
5092
5093
5094
5095
5096
5097
5098
5099
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */


XhmikosR's avatar
XhmikosR committed
5100
5101
5102
5103
5104
  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler);
  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
  EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus);
  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5105
5106
    event.preventDefault();
    event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
5107
    Dropdown.dropdownInterface(this, 'toggle');
XhmikosR's avatar
XhmikosR committed
5108
  });
XhmikosR's avatar
XhmikosR committed
5109
  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {
XhmikosR's avatar
XhmikosR committed
5110
    return e.stopPropagation();
XhmikosR's avatar
Dist    
XhmikosR committed
5111
5112
5113
5114
5115
  });
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
5116
   * add .Dropdown to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
5117
5118
   */

XhmikosR's avatar
XhmikosR committed
5119
5120
5121
  onDOMContentLoaded(function () {
    var $ = getjQuery();
    /* istanbul ignore if */
5122

XhmikosR's avatar
XhmikosR committed
5123
5124
5125
5126
    if ($) {
      var JQUERY_NO_CONFLICT = $.fn[NAME$4];
      $.fn[NAME$4] = Dropdown.jQueryInterface;
      $.fn[NAME$4].Constructor = Dropdown;
XhmikosR's avatar
Dist    
XhmikosR committed
5127

XhmikosR's avatar
XhmikosR committed
5128
5129
5130
5131
5132
5133
      $.fn[NAME$4].noConflict = function () {
        $.fn[NAME$4] = JQUERY_NO_CONFLICT;
        return Dropdown.jQueryInterface;
      };
    }
  });
Mark Otto's avatar
dist    
Mark Otto committed
5134

XhmikosR's avatar
Dist    
XhmikosR committed
5135
5136
5137
5138
5139
5140
5141
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME$5 = 'modal';
XhmikosR's avatar
XhmikosR committed
5142
  var VERSION$5 = '5.0.0-alpha3';
XhmikosR's avatar
Dist    
XhmikosR committed
5143
5144
5145
  var DATA_KEY$5 = 'bs.modal';
  var EVENT_KEY$5 = "." + DATA_KEY$5;
  var DATA_API_KEY$5 = '.data-api';
XhmikosR's avatar
XhmikosR committed
5146
  var ESCAPE_KEY$1 = 'Escape';
XhmikosR's avatar
Dist    
XhmikosR committed
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
  var Default$3 = {
    backdrop: true,
    keyboard: true,
    focus: true,
    show: true
  };
  var DefaultType$3 = {
    backdrop: '(boolean|string)',
    keyboard: 'boolean',
    focus: 'boolean',
    show: 'boolean'
  };
XhmikosR's avatar
XhmikosR committed
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
  var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;
  var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;
  var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;
  var EVENT_SHOW$2 = "show" + EVENT_KEY$5;
  var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;
  var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;
  var EVENT_RESIZE = "resize" + EVENT_KEY$5;
  var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5;
  var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;
  var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;
  var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;
  var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5;
  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
  var CLASS_NAME_BACKDROP = 'modal-backdrop';
  var CLASS_NAME_OPEN = 'modal-open';
  var CLASS_NAME_FADE = 'fade';
  var CLASS_NAME_SHOW$2 = 'show';
  var CLASS_NAME_STATIC = 'modal-static';
  var SELECTOR_DIALOG = '.modal-dialog';
  var SELECTOR_MODAL_BODY = '.modal-body';
XhmikosR's avatar
XhmikosR committed
5179
5180
  var SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="modal"]';
  var SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]';
XhmikosR's avatar
XhmikosR committed
5181
5182
  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
  var SELECTOR_STICKY_CONTENT = '.sticky-top';
XhmikosR's avatar
XhmikosR committed
5183
5184
5185
5186
5187
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
5188

XhmikosR's avatar
XhmikosR committed
5189
  var Modal = /*#__PURE__*/function () {
XhmikosR's avatar
Dist    
XhmikosR committed
5190
5191
5192
    function Modal(element, config) {
      this._config = this._getConfig(config);
      this._element = element;
XhmikosR's avatar
XhmikosR committed
5193
      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element);
XhmikosR's avatar
Dist    
XhmikosR committed
5194
5195
5196
5197
5198
5199
      this._backdrop = null;
      this._isShown = false;
      this._isBodyOverflowing = false;
      this._ignoreBackdropClick = false;
      this._isTransitioning = false;
      this._scrollbarWidth = 0;
XhmikosR's avatar
XhmikosR committed
5200
      Data.setData(element, DATA_KEY$5, this);
XhmikosR's avatar
Dist    
XhmikosR committed
5201
5202
5203
5204
5205
5206
5207
5208
    } // Getters


    var _proto = Modal.prototype;

    // Public
    _proto.toggle = function toggle(relatedTarget) {
      return this._isShown ? this.hide() : this.show(relatedTarget);
Mark Otto's avatar
dist  
Mark Otto committed
5209
5210
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5211
5212
    _proto.show = function show(relatedTarget) {
      var _this = this;
Mark Otto's avatar
dist  
Mark Otto committed
5213

XhmikosR's avatar
Dist    
XhmikosR committed
5214
5215
5216
      if (this._isShown || this._isTransitioning) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5217

XhmikosR's avatar
XhmikosR committed
5218
      if (this._element.classList.contains(CLASS_NAME_FADE)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5219
5220
        this._isTransitioning = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5221

XhmikosR's avatar
XhmikosR committed
5222
      var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
XhmikosR's avatar
Dist    
XhmikosR committed
5223
5224
        relatedTarget: relatedTarget
      });
Mark Otto's avatar
dist    
Mark Otto committed
5225

XhmikosR's avatar
XhmikosR committed
5226
      if (this._isShown || showEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5227
5228
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5229

XhmikosR's avatar
Dist    
XhmikosR committed
5230
      this._isShown = true;
Mark Otto's avatar
dist    
Mark Otto committed
5231

XhmikosR's avatar
Dist    
XhmikosR committed
5232
      this._checkScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
5233

XhmikosR's avatar
Dist    
XhmikosR committed
5234
      this._setScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
5235

XhmikosR's avatar
Dist    
XhmikosR committed
5236
      this._adjustDialog();
Mark Otto's avatar
dist  
Mark Otto committed
5237

XhmikosR's avatar
Dist    
XhmikosR committed
5238
      this._setEscapeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5239

XhmikosR's avatar
Dist    
XhmikosR committed
5240
      this._setResizeEvent();
Mark Otto's avatar
dist    
Mark Otto committed
5241

XhmikosR's avatar
XhmikosR committed
5242
      EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5243
5244
        return _this.hide(event);
      });
XhmikosR's avatar
XhmikosR committed
5245
5246
      EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
        EventHandler.one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
5247
          if (event.target === _this._element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5248
5249
5250
5251
            _this._ignoreBackdropClick = true;
          }
        });
      });
Mark Otto's avatar
dist  
Mark Otto committed
5252

XhmikosR's avatar
Dist    
XhmikosR committed
5253
5254
5255
5256
      this._showBackdrop(function () {
        return _this._showElement(relatedTarget);
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5257

XhmikosR's avatar
Dist    
XhmikosR committed
5258
5259
    _proto.hide = function hide(event) {
      var _this2 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5260

XhmikosR's avatar
Dist    
XhmikosR committed
5261
5262
5263
      if (event) {
        event.preventDefault();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5264

XhmikosR's avatar
Dist    
XhmikosR committed
5265
5266
5267
      if (!this._isShown || this._isTransitioning) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5268

XhmikosR's avatar
XhmikosR committed
5269
      var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
Mark Otto's avatar
dist  
Mark Otto committed
5270

5271
      if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5272
5273
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5274

XhmikosR's avatar
Dist    
XhmikosR committed
5275
      this._isShown = false;
XhmikosR's avatar
XhmikosR committed
5276

XhmikosR's avatar
XhmikosR committed
5277
      var transition = this._element.classList.contains(CLASS_NAME_FADE);
Mark Otto's avatar
dist  
Mark Otto committed
5278

XhmikosR's avatar
Dist    
XhmikosR committed
5279
5280
5281
      if (transition) {
        this._isTransitioning = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5282

XhmikosR's avatar
Dist    
XhmikosR committed
5283
      this._setEscapeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5284

XhmikosR's avatar
Dist    
XhmikosR committed
5285
      this._setResizeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5286

XhmikosR's avatar
XhmikosR committed
5287
      EventHandler.off(document, EVENT_FOCUSIN);
XhmikosR's avatar
XhmikosR committed
5288

XhmikosR's avatar
XhmikosR committed
5289
      this._element.classList.remove(CLASS_NAME_SHOW$2);
XhmikosR's avatar
XhmikosR committed
5290

XhmikosR's avatar
XhmikosR committed
5291
5292
      EventHandler.off(this._element, EVENT_CLICK_DISMISS);
      EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
Mark Otto's avatar
dist  
Mark Otto committed
5293

XhmikosR's avatar
Dist    
XhmikosR committed
5294
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5295
5296
        var transitionDuration = getTransitionDurationFromElement(this._element);
        EventHandler.one(this._element, TRANSITION_END, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5297
          return _this2._hideModal(event);
XhmikosR's avatar
XhmikosR committed
5298
5299
        });
        emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5300
5301
5302
5303
      } else {
        this._hideModal();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
5304

XhmikosR's avatar
Dist    
XhmikosR committed
5305
5306
    _proto.dispose = function dispose() {
      [window, this._element, this._dialog].forEach(function (htmlElement) {
XhmikosR's avatar
XhmikosR committed
5307
        return EventHandler.off(htmlElement, EVENT_KEY$5);
XhmikosR's avatar
Dist    
XhmikosR committed
5308
5309
      });
      /**
XhmikosR's avatar
XhmikosR committed
5310
       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
XhmikosR's avatar
Dist    
XhmikosR committed
5311
       * Do not move `document` in `htmlElements` array
XhmikosR's avatar
XhmikosR committed
5312
       * It will remove `EVENT_CLICK_DATA_API` event that should remain
XhmikosR's avatar
Dist    
XhmikosR committed
5313
       */
Mark Otto's avatar
dist  
Mark Otto committed
5314

XhmikosR's avatar
XhmikosR committed
5315
      EventHandler.off(document, EVENT_FOCUSIN);
XhmikosR's avatar
XhmikosR committed
5316
      Data.removeData(this._element, DATA_KEY$5);
XhmikosR's avatar
Dist    
XhmikosR committed
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
      this._config = null;
      this._element = null;
      this._dialog = null;
      this._backdrop = null;
      this._isShown = null;
      this._isBodyOverflowing = null;
      this._ignoreBackdropClick = null;
      this._isTransitioning = null;
      this._scrollbarWidth = null;
    };
Mark Otto's avatar
dist    
Mark Otto committed
5327

XhmikosR's avatar
Dist    
XhmikosR committed
5328
5329
    _proto.handleUpdate = function handleUpdate() {
      this._adjustDialog();
Mark Otto's avatar
Mark Otto committed
5330
5331
    } // Private
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5332

XhmikosR's avatar
Dist    
XhmikosR committed
5333
    _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
5334
      config = _extends({}, Default$3, config);
XhmikosR's avatar
XhmikosR committed
5335
      typeCheckConfig(NAME$5, config, DefaultType$3);
XhmikosR's avatar
Dist    
XhmikosR committed
5336
5337
      return config;
    };
Mark Otto's avatar
dist  
Mark Otto committed
5338

XhmikosR's avatar
Dist    
XhmikosR committed
5339
5340
    _proto._showElement = function _showElement(relatedTarget) {
      var _this3 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5341

XhmikosR's avatar
XhmikosR committed
5342
      var transition = this._element.classList.contains(CLASS_NAME_FADE);
Mark Otto's avatar
dist  
Mark Otto committed
5343

XhmikosR's avatar
XhmikosR committed
5344
      var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
XhmikosR's avatar
XhmikosR committed
5345

XhmikosR's avatar
Dist    
XhmikosR committed
5346
5347
5348
5349
      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
        // Don't move modal's DOM position
        document.body.appendChild(this._element);
      }
Mark Otto's avatar
dist  
Mark Otto committed
5350

XhmikosR's avatar
Dist    
XhmikosR committed
5351
      this._element.style.display = 'block';
Mark Otto's avatar
dist  
Mark Otto committed
5352

XhmikosR's avatar
Dist    
XhmikosR committed
5353
      this._element.removeAttribute('aria-hidden');
Mark Otto's avatar
dist  
Mark Otto committed
5354

Mark Otto's avatar
dist    
Mark Otto committed
5355
5356
      this._element.setAttribute('aria-modal', true);

Mark Otto's avatar
Mark Otto committed
5357
5358
      this._element.setAttribute('role', 'dialog');

XhmikosR's avatar
XhmikosR committed
5359
5360
5361
      this._element.scrollTop = 0;

      if (modalBody) {
XhmikosR's avatar
XhmikosR committed
5362
        modalBody.scrollTop = 0;
Mark Otto's avatar
Mark Otto committed
5363
      }
Mark Otto's avatar
dist  
Mark Otto committed
5364

XhmikosR's avatar
Dist    
XhmikosR committed
5365
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5366
        reflow(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
5367
      }
Mark Otto's avatar
dist  
Mark Otto committed
5368

XhmikosR's avatar
XhmikosR committed
5369
      this._element.classList.add(CLASS_NAME_SHOW$2);
Mark Otto's avatar
dist    
Mark Otto committed
5370

XhmikosR's avatar
Dist    
XhmikosR committed
5371
5372
5373
      if (this._config.focus) {
        this._enforceFocus();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5374

XhmikosR's avatar
Dist    
XhmikosR committed
5375
5376
5377
      var transitionComplete = function transitionComplete() {
        if (_this3._config.focus) {
          _this3._element.focus();
Mark Otto's avatar
dist    
Mark Otto committed
5378
        }
Mark Otto's avatar
dist  
Mark Otto committed
5379

XhmikosR's avatar
Dist    
XhmikosR committed
5380
        _this3._isTransitioning = false;
XhmikosR's avatar
XhmikosR committed
5381
        EventHandler.trigger(_this3._element, EVENT_SHOWN$2, {
XhmikosR's avatar
XhmikosR committed
5382
5383
          relatedTarget: relatedTarget
        });
XhmikosR's avatar
Dist    
XhmikosR committed
5384
      };
Mark Otto's avatar
dist  
Mark Otto committed
5385

XhmikosR's avatar
Dist    
XhmikosR committed
5386
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5387
5388
5389
        var transitionDuration = getTransitionDurationFromElement(this._dialog);
        EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
        emulateTransitionEnd(this._dialog, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5390
5391
5392
5393
      } else {
        transitionComplete();
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5394

XhmikosR's avatar
Dist    
XhmikosR committed
5395
5396
    _proto._enforceFocus = function _enforceFocus() {
      var _this4 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5397

XhmikosR's avatar
XhmikosR committed
5398
      EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop
XhmikosR's avatar
XhmikosR committed
5399

XhmikosR's avatar
XhmikosR committed
5400
      EventHandler.on(document, EVENT_FOCUSIN, function (event) {
XhmikosR's avatar
XhmikosR committed
5401
        if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5402
          _this4._element.focus();
Mark Otto's avatar
dist  
Mark Otto committed
5403
        }
XhmikosR's avatar
Dist    
XhmikosR committed
5404
5405
      });
    };
Mark Otto's avatar
dist    
Mark Otto committed
5406

XhmikosR's avatar
Dist    
XhmikosR committed
5407
5408
5409
    _proto._setEscapeEvent = function _setEscapeEvent() {
      var _this5 = this;

XhmikosR's avatar
XhmikosR committed
5410
5411
      if (this._isShown) {
        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
5412
          if (_this5._config.keyboard && event.key === ESCAPE_KEY$1) {
XhmikosR's avatar
XhmikosR committed
5413
5414
5415
            event.preventDefault();

            _this5.hide();
XhmikosR's avatar
XhmikosR committed
5416
          } else if (!_this5._config.keyboard && event.key === ESCAPE_KEY$1) {
XhmikosR's avatar
XhmikosR committed
5417
            _this5._triggerBackdropTransition();
Mark Otto's avatar
dist    
Mark Otto committed
5418
5419
          }
        });
5420
      } else {
XhmikosR's avatar
XhmikosR committed
5421
        EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS);
XhmikosR's avatar
Dist    
XhmikosR committed
5422
5423
5424
5425
5426
      }
    };

    _proto._setResizeEvent = function _setResizeEvent() {
      var _this6 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5427

XhmikosR's avatar
Dist    
XhmikosR committed
5428
      if (this._isShown) {
XhmikosR's avatar
XhmikosR committed
5429
        EventHandler.on(window, EVENT_RESIZE, function () {
5430
          return _this6._adjustDialog();
XhmikosR's avatar
Dist    
XhmikosR committed
5431
5432
        });
      } else {
XhmikosR's avatar
XhmikosR committed
5433
        EventHandler.off(window, EVENT_RESIZE);
XhmikosR's avatar
Dist    
XhmikosR committed
5434
5435
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5436

XhmikosR's avatar
Dist    
XhmikosR committed
5437
5438
    _proto._hideModal = function _hideModal() {
      var _this7 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5439

XhmikosR's avatar
Dist    
XhmikosR committed
5440
      this._element.style.display = 'none';
Mark Otto's avatar
dist  
Mark Otto committed
5441

XhmikosR's avatar
Dist    
XhmikosR committed
5442
      this._element.setAttribute('aria-hidden', true);
Mark Otto's avatar
dist  
Mark Otto committed
5443

Mark Otto's avatar
dist    
Mark Otto committed
5444
5445
      this._element.removeAttribute('aria-modal');

Mark Otto's avatar
Mark Otto committed
5446
5447
      this._element.removeAttribute('role');

XhmikosR's avatar
Dist    
XhmikosR committed
5448
      this._isTransitioning = false;
Mark Otto's avatar
dist    
Mark Otto committed
5449

XhmikosR's avatar
Dist    
XhmikosR committed
5450
      this._showBackdrop(function () {
XhmikosR's avatar
XhmikosR committed
5451
        document.body.classList.remove(CLASS_NAME_OPEN);
Mark Otto's avatar
dist  
Mark Otto committed
5452

XhmikosR's avatar
Dist    
XhmikosR committed
5453
        _this7._resetAdjustments();
Mark Otto's avatar
dist  
Mark Otto committed
5454

XhmikosR's avatar
Dist    
XhmikosR committed
5455
        _this7._resetScrollbar();
Mark Otto's avatar
dist  
Mark Otto committed
5456

XhmikosR's avatar
XhmikosR committed
5457
        EventHandler.trigger(_this7._element, EVENT_HIDDEN$2);
XhmikosR's avatar
Dist    
XhmikosR committed
5458
5459
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5460

XhmikosR's avatar
Dist    
XhmikosR committed
5461
    _proto._removeBackdrop = function _removeBackdrop() {
5462
      this._backdrop.parentNode.removeChild(this._backdrop);
XhmikosR's avatar
XhmikosR committed
5463

5464
      this._backdrop = null;
XhmikosR's avatar
Dist    
XhmikosR committed
5465
    };
Mark Otto's avatar
dist    
Mark Otto committed
5466

XhmikosR's avatar
Dist    
XhmikosR committed
5467
5468
    _proto._showBackdrop = function _showBackdrop(callback) {
      var _this8 = this;
Mark Otto's avatar
dist    
Mark Otto committed
5469

XhmikosR's avatar
XhmikosR committed
5470
      var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
Mark Otto's avatar
dist    
Mark Otto committed
5471

XhmikosR's avatar
Dist    
XhmikosR committed
5472
5473
      if (this._isShown && this._config.backdrop) {
        this._backdrop = document.createElement('div');
XhmikosR's avatar
XhmikosR committed
5474
        this._backdrop.className = CLASS_NAME_BACKDROP;
Mark Otto's avatar
dist    
Mark Otto committed
5475

XhmikosR's avatar
Dist    
XhmikosR committed
5476
5477
        if (animate) {
          this._backdrop.classList.add(animate);
Mark Otto's avatar
dist    
Mark Otto committed
5478
        }
Mark Otto's avatar
dist    
Mark Otto committed
5479

XhmikosR's avatar
XhmikosR committed
5480
        document.body.appendChild(this._backdrop);
XhmikosR's avatar
XhmikosR committed
5481
        EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5482
5483
5484
5485
          if (_this8._ignoreBackdropClick) {
            _this8._ignoreBackdropClick = false;
            return;
          }
Mark Otto's avatar
dist  
Mark Otto committed
5486

XhmikosR's avatar
Dist    
XhmikosR committed
5487
5488
5489
          if (event.target !== event.currentTarget) {
            return;
          }
Mark Otto's avatar
dist  
Mark Otto committed
5490

XhmikosR's avatar
XhmikosR committed
5491
5492
5493
5494
5495
          if (_this8._config.backdrop === 'static') {
            _this8._triggerBackdropTransition();
          } else {
            _this8.hide();
          }
XhmikosR's avatar
Dist    
XhmikosR committed
5496
        });
Mark Otto's avatar
dist  
Mark Otto committed
5497

XhmikosR's avatar
Dist    
XhmikosR committed
5498
        if (animate) {
XhmikosR's avatar
XhmikosR committed
5499
          reflow(this._backdrop);
XhmikosR's avatar
Dist    
XhmikosR committed
5500
        }
Mark Otto's avatar
dist  
Mark Otto committed
5501

XhmikosR's avatar
XhmikosR committed
5502
        this._backdrop.classList.add(CLASS_NAME_SHOW$2);
Mark Otto's avatar
dist  
Mark Otto committed
5503

XhmikosR's avatar
Dist    
XhmikosR committed
5504
5505
5506
5507
        if (!animate) {
          callback();
          return;
        }
Mark Otto's avatar
dist    
Mark Otto committed
5508

XhmikosR's avatar
XhmikosR committed
5509
5510
5511
        var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
        EventHandler.one(this._backdrop, TRANSITION_END, callback);
        emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5512
      } else if (!this._isShown && this._backdrop) {
XhmikosR's avatar
XhmikosR committed
5513
        this._backdrop.classList.remove(CLASS_NAME_SHOW$2);
Mark Otto's avatar
dist    
Mark Otto committed
5514

XhmikosR's avatar
Dist    
XhmikosR committed
5515
5516
        var callbackRemove = function callbackRemove() {
          _this8._removeBackdrop();
Mark Otto's avatar
dist    
Mark Otto committed
5517

5518
          callback();
XhmikosR's avatar
Dist    
XhmikosR committed
5519
        };
Mark Otto's avatar
dist  
Mark Otto committed
5520

XhmikosR's avatar
XhmikosR committed
5521
        if (this._element.classList.contains(CLASS_NAME_FADE)) {
XhmikosR's avatar
XhmikosR committed
5522
          var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
Mark Otto's avatar
dist  
Mark Otto committed
5523

XhmikosR's avatar
XhmikosR committed
5524
5525
          EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
          emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5526
5527
5528
        } else {
          callbackRemove();
        }
5529
      } else {
XhmikosR's avatar
Dist    
XhmikosR committed
5530
5531
        callback();
      }
XhmikosR's avatar
XhmikosR committed
5532
5533
5534
5535
5536
    };

    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
      var _this9 = this;

XhmikosR's avatar
XhmikosR committed
5537
      var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
XhmikosR's avatar
XhmikosR committed
5538

XhmikosR's avatar
XhmikosR committed
5539
5540
5541
      if (hideEvent.defaultPrevented) {
        return;
      }
XhmikosR's avatar
XhmikosR committed
5542

XhmikosR's avatar
XhmikosR committed
5543
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
XhmikosR's avatar
XhmikosR committed
5544

XhmikosR's avatar
XhmikosR committed
5545
5546
5547
      if (!isModalOverflowing) {
        this._element.style.overflowY = 'hidden';
      }
XhmikosR's avatar
XhmikosR committed
5548

XhmikosR's avatar
XhmikosR committed
5549
      this._element.classList.add(CLASS_NAME_STATIC);
XhmikosR's avatar
XhmikosR committed
5550

XhmikosR's avatar
XhmikosR committed
5551
5552
5553
5554
      var modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
      EventHandler.off(this._element, TRANSITION_END);
      EventHandler.one(this._element, TRANSITION_END, function () {
        _this9._element.classList.remove(CLASS_NAME_STATIC);
XhmikosR's avatar
XhmikosR committed
5555

XhmikosR's avatar
XhmikosR committed
5556
5557
5558
5559
5560
5561
5562
5563
        if (!isModalOverflowing) {
          EventHandler.one(_this9._element, TRANSITION_END, function () {
            _this9._element.style.overflowY = '';
          });
          emulateTransitionEnd(_this9._element, modalTransitionDuration);
        }
      });
      emulateTransitionEnd(this._element, modalTransitionDuration);
XhmikosR's avatar
XhmikosR committed
5564

XhmikosR's avatar
XhmikosR committed
5565
      this._element.focus();
Mark Otto's avatar
Mark Otto committed
5566
    } // ----------------------------------------------------------------------
XhmikosR's avatar
Dist    
XhmikosR committed
5567
5568
    // the following methods are used to handle overflowing modals
    // ----------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
5569
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5570

XhmikosR's avatar
Dist    
XhmikosR committed
5571
5572
    _proto._adjustDialog = function _adjustDialog() {
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
Mark Otto's avatar
dist    
Mark Otto committed
5573

XhmikosR's avatar
Dist    
XhmikosR committed
5574
5575
5576
      if (!this._isBodyOverflowing && isModalOverflowing) {
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
      }
Mark Otto's avatar
dist  
Mark Otto committed
5577

XhmikosR's avatar
Dist    
XhmikosR committed
5578
5579
5580
5581
      if (this._isBodyOverflowing && !isModalOverflowing) {
        this._element.style.paddingRight = this._scrollbarWidth + "px";
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5582

XhmikosR's avatar
Dist    
XhmikosR committed
5583
5584
5585
5586
    _proto._resetAdjustments = function _resetAdjustments() {
      this._element.style.paddingLeft = '';
      this._element.style.paddingRight = '';
    };
Mark Otto's avatar
dist    
Mark Otto committed
5587

XhmikosR's avatar
Dist    
XhmikosR committed
5588
5589
    _proto._checkScrollbar = function _checkScrollbar() {
      var rect = document.body.getBoundingClientRect();
XhmikosR's avatar
XhmikosR committed
5590
      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
XhmikosR's avatar
Dist    
XhmikosR committed
5591
5592
      this._scrollbarWidth = this._getScrollbarWidth();
    };
Mark Otto's avatar
dist  
Mark Otto committed
5593

XhmikosR's avatar
Dist    
XhmikosR committed
5594
    _proto._setScrollbar = function _setScrollbar() {
XhmikosR's avatar
XhmikosR committed
5595
      var _this10 = this;
XhmikosR's avatar
Dist    
XhmikosR committed
5596
5597
5598
5599

      if (this._isBodyOverflowing) {
        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
XhmikosR's avatar
XhmikosR committed
5600
        // Adjust fixed content padding
XhmikosR's avatar
XhmikosR committed
5601
        SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5602
          var actualPadding = element.style.paddingRight;
XhmikosR's avatar
XhmikosR committed
5603
5604
          var calculatedPadding = window.getComputedStyle(element)['padding-right'];
          Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
XhmikosR's avatar
XhmikosR committed
5605
          element.style.paddingRight = Number.parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px";
XhmikosR's avatar
Dist    
XhmikosR committed
5606
5607
        }); // Adjust sticky content margin

XhmikosR's avatar
XhmikosR committed
5608
        SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5609
          var actualMargin = element.style.marginRight;
XhmikosR's avatar
XhmikosR committed
5610
5611
          var calculatedMargin = window.getComputedStyle(element)['margin-right'];
          Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
XhmikosR's avatar
XhmikosR committed
5612
          element.style.marginRight = Number.parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px";
XhmikosR's avatar
Dist    
XhmikosR committed
5613
5614
5615
        }); // Adjust body padding

        var actualPadding = document.body.style.paddingRight;
XhmikosR's avatar
XhmikosR committed
5616
5617
        var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
        Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);
XhmikosR's avatar
XhmikosR committed
5618
        document.body.style.paddingRight = Number.parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
XhmikosR's avatar
Dist    
XhmikosR committed
5619
      }
XhmikosR's avatar
Dist    
XhmikosR committed
5620

XhmikosR's avatar
XhmikosR committed
5621
      document.body.classList.add(CLASS_NAME_OPEN);
XhmikosR's avatar
Dist    
XhmikosR committed
5622
    };
Mark Otto's avatar
dist    
Mark Otto committed
5623

XhmikosR's avatar
Dist    
XhmikosR committed
5624
5625
    _proto._resetScrollbar = function _resetScrollbar() {
      // Restore fixed content padding
XhmikosR's avatar
XhmikosR committed
5626
      SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
5627
        var padding = Manipulator.getDataAttribute(element, 'padding-right');
Mark Otto's avatar
dist  
Mark Otto committed
5628

XhmikosR's avatar
XhmikosR committed
5629
5630
5631
5632
5633
5634
        if (typeof padding !== 'undefined') {
          Manipulator.removeDataAttribute(element, 'padding-right');
          element.style.paddingRight = padding;
        }
      }); // Restore sticky content and navbar-toggler margin

XhmikosR's avatar
XhmikosR committed
5635
      SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
5636
        var margin = Manipulator.getDataAttribute(element, 'margin-right');
Mark Otto's avatar
dist  
Mark Otto committed
5637

XhmikosR's avatar
Dist    
XhmikosR committed
5638
        if (typeof margin !== 'undefined') {
XhmikosR's avatar
XhmikosR committed
5639
5640
          Manipulator.removeDataAttribute(element, 'margin-right');
          element.style.marginRight = margin;
Mark Otto's avatar
dist    
Mark Otto committed
5641
        }
XhmikosR's avatar
Dist    
XhmikosR committed
5642
      }); // Restore body padding
Mark Otto's avatar
dist  
Mark Otto committed
5643

XhmikosR's avatar
XhmikosR committed
5644
5645
      var padding = Manipulator.getDataAttribute(document.body, 'padding-right');

XhmikosR's avatar
Dist.    
XhmikosR committed
5646
5647
5648
      if (typeof padding === 'undefined') {
        document.body.style.paddingRight = '';
      } else {
XhmikosR's avatar
XhmikosR committed
5649
5650
5651
        Manipulator.removeDataAttribute(document.body, 'padding-right');
        document.body.style.paddingRight = padding;
      }
XhmikosR's avatar
Dist    
XhmikosR committed
5652
    };
Mark Otto's avatar
dist  
Mark Otto committed
5653

XhmikosR's avatar
Dist    
XhmikosR committed
5654
5655
5656
    _proto._getScrollbarWidth = function _getScrollbarWidth() {
      // thx d.walsh
      var scrollDiv = document.createElement('div');
XhmikosR's avatar
XhmikosR committed
5657
      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
XhmikosR's avatar
Dist    
XhmikosR committed
5658
5659
5660
5661
      document.body.appendChild(scrollDiv);
      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
      document.body.removeChild(scrollDiv);
      return scrollbarWidth;
Mark Otto's avatar
Mark Otto committed
5662
5663
    } // Static
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5664

XhmikosR's avatar
XhmikosR committed
5665
    Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
XhmikosR's avatar
Dist    
XhmikosR committed
5666
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
5667
        var data = Data.getData(this, DATA_KEY$5);
Mark Otto's avatar
dist  
Mark Otto committed
5668

XhmikosR's avatar
XhmikosR committed
5669
        var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {});
Mark Otto's avatar
dist  
Mark Otto committed
5670

XhmikosR's avatar
Dist    
XhmikosR committed
5671
5672
5673
        if (!data) {
          data = new Modal(this, _config);
        }
Mark Otto's avatar
dist    
Mark Otto committed
5674

XhmikosR's avatar
Dist    
XhmikosR committed
5675
5676
5677
        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
            throw new TypeError("No method named \"" + config + "\"");
Mark Otto's avatar
dist    
Mark Otto committed
5678
          }
Mark Otto's avatar
dist  
Mark Otto committed
5679

XhmikosR's avatar
Dist    
XhmikosR committed
5680
5681
5682
5683
5684
5685
          data[config](relatedTarget);
        } else if (_config.show) {
          data.show(relatedTarget);
        }
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5686

XhmikosR's avatar
XhmikosR committed
5687
    Modal.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
5688
5689
5690
      return Data.getData(element, DATA_KEY$5);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
    _createClass(Modal, null, [{
      key: "VERSION",
      get: function get() {
        return VERSION$5;
      }
    }, {
      key: "Default",
      get: function get() {
        return Default$3;
      }
    }]);
Mark Otto's avatar
dist    
Mark Otto committed
5702

XhmikosR's avatar
Dist    
XhmikosR committed
5703
5704
5705
5706
5707
5708
5709
    return Modal;
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
5710

Mark Otto's avatar
dist    
Mark Otto committed
5711

XhmikosR's avatar
XhmikosR committed
5712
  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {
XhmikosR's avatar
XhmikosR committed
5713
    var _this11 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5714

XhmikosR's avatar
XhmikosR committed
5715
    var target = getElementFromSelector(this);
Mark Otto's avatar
dist  
Mark Otto committed
5716

XhmikosR's avatar
Dist    
XhmikosR committed
5717
5718
5719
    if (this.tagName === 'A' || this.tagName === 'AREA') {
      event.preventDefault();
    }
Mark Otto's avatar
dist  
Mark Otto committed
5720

XhmikosR's avatar
XhmikosR committed
5721
    EventHandler.one(target, EVENT_SHOW$2, function (showEvent) {
XhmikosR's avatar
XhmikosR committed
5722
5723
      if (showEvent.defaultPrevented) {
        // only register focus restorer if modal will actually get shown
XhmikosR's avatar
Dist    
XhmikosR committed
5724
        return;
Mark Otto's avatar
dist  
Mark Otto committed
5725
5726
      }

XhmikosR's avatar
XhmikosR committed
5727
      EventHandler.one(target, EVENT_HIDDEN$2, function () {
XhmikosR's avatar
XhmikosR committed
5728
5729
        if (isVisible(_this11)) {
          _this11.focus();
Mark Otto's avatar
dist  
Mark Otto committed
5730
        }
Mark Otto's avatar
dist    
Mark Otto committed
5731
5732
      });
    });
XhmikosR's avatar
XhmikosR committed
5733
5734
5735
    var data = Data.getData(target, DATA_KEY$5);

    if (!data) {
XhmikosR's avatar
XhmikosR committed
5736
      var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
5737

XhmikosR's avatar
XhmikosR committed
5738
5739
      data = new Modal(target, config);
    }
Mark Otto's avatar
dist    
Mark Otto committed
5740

XhmikosR's avatar
XhmikosR committed
5741
    data.show(this);
XhmikosR's avatar
Dist    
XhmikosR committed
5742
5743
5744
5745
5746
  });
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
5747
   * add .Modal to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
5748
   */
Mark Otto's avatar
dist  
Mark Otto committed
5749

XhmikosR's avatar
XhmikosR committed
5750
5751
5752
  onDOMContentLoaded(function () {
    var $ = getjQuery();
    /* istanbul ignore if */
5753

XhmikosR's avatar
XhmikosR committed
5754
5755
5756
5757
    if ($) {
      var JQUERY_NO_CONFLICT = $.fn[NAME$5];
      $.fn[NAME$5] = Modal.jQueryInterface;
      $.fn[NAME$5].Constructor = Modal;
Mark Otto's avatar
dist  
Mark Otto committed
5758

XhmikosR's avatar
XhmikosR committed
5759
5760
5761
5762
5763
5764
      $.fn[NAME$5].noConflict = function () {
        $.fn[NAME$5] = JQUERY_NO_CONFLICT;
        return Modal.jQueryInterface;
      };
    }
  });
Mark Otto's avatar
dist  
Mark Otto committed
5765

XhmikosR's avatar
XhmikosR committed
5766
5767
  /**
   * --------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
5768
   * Bootstrap (v5.0.0-alpha3): util/sanitizer.js
XhmikosR's avatar
XhmikosR committed
5769
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
XhmikosR's avatar
XhmikosR committed
5770
5771
   * --------------------------------------------------------------------------
   */
XhmikosR's avatar
XhmikosR committed
5772
  var uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
XhmikosR's avatar
XhmikosR committed
5773
  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
XhmikosR's avatar
XhmikosR committed
5774
5775
5776
5777
5778
5779
  /**
   * A pattern that recognizes a commonly useful subset of URLs that are safe.
   *
   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
   */

XhmikosR's avatar
XhmikosR committed
5780
  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;
XhmikosR's avatar
XhmikosR committed
5781
5782
5783
5784
5785
5786
  /**
   * A pattern that matches safe data URLs. Only matches image, video and audio types.
   *
   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
   */

XhmikosR's avatar
XhmikosR committed
5787
  var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
XhmikosR's avatar
XhmikosR committed
5788
5789
5790
5791

  var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) {
    var attrName = attr.nodeName.toLowerCase();

XhmikosR's avatar
XhmikosR committed
5792
5793
    if (allowedAttributeList.includes(attrName)) {
      if (uriAttrs.has(attrName)) {
Mark Otto's avatar
Mark Otto committed
5794
        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
XhmikosR's avatar
XhmikosR committed
5795
5796
5797
5798
5799
5800
5801
5802
5803
      }

      return true;
    }

    var regExp = allowedAttributeList.filter(function (attrRegex) {
      return attrRegex instanceof RegExp;
    }); // Check if a regular expression validates the attribute.

XhmikosR's avatar
XhmikosR committed
5804
    for (var i = 0, len = regExp.length; i < len; i++) {
Mark Otto's avatar
Mark Otto committed
5805
      if (attrName.match(regExp[i])) {
XhmikosR's avatar
XhmikosR committed
5806
5807
5808
5809
5810
5811
5812
        return true;
      }
    }

    return false;
  };

XhmikosR's avatar
XhmikosR committed
5813
  var DefaultAllowlist = {
XhmikosR's avatar
XhmikosR committed
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
    // Global attributes allowed on any supplied element below.
    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
    a: ['target', 'href', 'title', 'rel'],
    area: [],
    b: [],
    br: [],
    col: [],
    code: [],
    div: [],
    em: [],
    hr: [],
    h1: [],
    h2: [],
    h3: [],
    h4: [],
    h5: [],
    h6: [],
    i: [],
XhmikosR's avatar
XhmikosR committed
5832
    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
XhmikosR's avatar
XhmikosR committed
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
    li: [],
    ol: [],
    p: [],
    pre: [],
    s: [],
    small: [],
    span: [],
    sub: [],
    sup: [],
    strong: [],
    u: [],
    ul: []
  };
XhmikosR's avatar
XhmikosR committed
5846
  function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
XhmikosR's avatar
XhmikosR committed
5847
5848
    var _ref;

XhmikosR's avatar
XhmikosR committed
5849
    if (!unsafeHtml.length) {
XhmikosR's avatar
XhmikosR committed
5850
5851
5852
5853
5854
5855
5856
5857
5858
      return unsafeHtml;
    }

    if (sanitizeFn && typeof sanitizeFn === 'function') {
      return sanitizeFn(unsafeHtml);
    }

    var domParser = new window.DOMParser();
    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
XhmikosR's avatar
XhmikosR committed
5859
    var allowlistKeys = Object.keys(allowList);
XhmikosR's avatar
XhmikosR committed
5860
5861

    var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*'));
XhmikosR's avatar
XhmikosR committed
5862
5863

    var _loop = function _loop(i, len) {
XhmikosR's avatar
XhmikosR committed
5864
5865
      var _ref2;

XhmikosR's avatar
XhmikosR committed
5866
5867
5868
      var el = elements[i];
      var elName = el.nodeName.toLowerCase();

XhmikosR's avatar
XhmikosR committed
5869
      if (!allowlistKeys.includes(elName)) {
XhmikosR's avatar
XhmikosR committed
5870
5871
5872
5873
        el.parentNode.removeChild(el);
        return "continue";
      }

XhmikosR's avatar
XhmikosR committed
5874
5875
      var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes);

XhmikosR's avatar
XhmikosR committed
5876
      var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
XhmikosR's avatar
XhmikosR committed
5877
      attributeList.forEach(function (attr) {
XhmikosR's avatar
XhmikosR committed
5878
        if (!allowedAttribute(attr, allowedAttributes)) {
XhmikosR's avatar
XhmikosR committed
5879
5880
5881
5882
5883
5884
          el.removeAttribute(attr.nodeName);
        }
      });
    };

    for (var i = 0, len = elements.length; i < len; i++) {
5885
      var _ret = _loop(i);
XhmikosR's avatar
XhmikosR committed
5886
5887
5888
5889
5890
5891
5892

      if (_ret === "continue") continue;
    }

    return createdDocument.body.innerHTML;
  }

XhmikosR's avatar
Dist    
XhmikosR committed
5893
5894
5895
5896
5897
5898
5899
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME$6 = 'tooltip';
XhmikosR's avatar
XhmikosR committed
5900
  var VERSION$6 = '5.0.0-alpha3';
XhmikosR's avatar
Dist    
XhmikosR committed
5901
5902
5903
5904
  var DATA_KEY$6 = 'bs.tooltip';
  var EVENT_KEY$6 = "." + DATA_KEY$6;
  var CLASS_PREFIX = 'bs-tooltip';
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
XhmikosR's avatar
XhmikosR committed
5905
  var DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
XhmikosR's avatar
Dist    
XhmikosR committed
5906
5907
5908
5909
5910
5911
5912
5913
5914
  var DefaultType$4 = {
    animation: 'boolean',
    template: 'string',
    title: '(string|element|function)',
    trigger: 'string',
    delay: '(number|object)',
    html: 'boolean',
    selector: '(string|boolean)',
    placement: '(string|function)',
Mark Otto's avatar
Mark Otto committed
5915
    offset: '(number|string|function)',
XhmikosR's avatar
Dist    
XhmikosR committed
5916
5917
    container: '(string|element|boolean)',
    fallbackPlacement: '(string|array)',
XhmikosR's avatar
XhmikosR committed
5918
5919
5920
    boundary: '(string|element)',
    sanitize: 'boolean',
    sanitizeFn: '(null|function)',
XhmikosR's avatar
XhmikosR committed
5921
    allowList: 'object',
XhmikosR's avatar
XhmikosR committed
5922
    popperConfig: '(null|object)'
XhmikosR's avatar
Dist    
XhmikosR committed
5923
  };
XhmikosR's avatar
XhmikosR committed
5924
  var AttachmentMap = {
XhmikosR's avatar
Dist    
XhmikosR committed
5925
5926
5927
5928
5929
5930
5931
5932
    AUTO: 'auto',
    TOP: 'top',
    RIGHT: 'right',
    BOTTOM: 'bottom',
    LEFT: 'left'
  };
  var Default$4 = {
    animation: true,
XhmikosR's avatar
XhmikosR committed
5933
    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>',
XhmikosR's avatar
Dist    
XhmikosR committed
5934
5935
5936
5937
5938
5939
5940
5941
5942
    trigger: 'hover focus',
    title: '',
    delay: 0,
    html: false,
    selector: false,
    placement: 'top',
    offset: 0,
    container: false,
    fallbackPlacement: 'flip',
XhmikosR's avatar
XhmikosR committed
5943
5944
5945
    boundary: 'scrollParent',
    sanitize: true,
    sanitizeFn: null,
XhmikosR's avatar
XhmikosR committed
5946
    allowList: DefaultAllowlist,
XhmikosR's avatar
XhmikosR committed
5947
    popperConfig: null
XhmikosR's avatar
Dist    
XhmikosR committed
5948
  };
XhmikosR's avatar
XhmikosR committed
5949
  var Event$1 = {
XhmikosR's avatar
Dist    
XhmikosR committed
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
    HIDE: "hide" + EVENT_KEY$6,
    HIDDEN: "hidden" + EVENT_KEY$6,
    SHOW: "show" + EVENT_KEY$6,
    SHOWN: "shown" + EVENT_KEY$6,
    INSERTED: "inserted" + EVENT_KEY$6,
    CLICK: "click" + EVENT_KEY$6,
    FOCUSIN: "focusin" + EVENT_KEY$6,
    FOCUSOUT: "focusout" + EVENT_KEY$6,
    MOUSEENTER: "mouseenter" + EVENT_KEY$6,
    MOUSELEAVE: "mouseleave" + EVENT_KEY$6
  };
XhmikosR's avatar
XhmikosR committed
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
  var CLASS_NAME_FADE$1 = 'fade';
  var CLASS_NAME_MODAL = 'modal';
  var CLASS_NAME_SHOW$3 = 'show';
  var HOVER_STATE_SHOW = 'show';
  var HOVER_STATE_OUT = 'out';
  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
  var TRIGGER_HOVER = 'hover';
  var TRIGGER_FOCUS = 'focus';
  var TRIGGER_CLICK = 'click';
  var TRIGGER_MANUAL = 'manual';
XhmikosR's avatar
XhmikosR committed
5971
5972
5973
5974
5975
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
XhmikosR's avatar
Dist    
XhmikosR committed
5976

XhmikosR's avatar
XhmikosR committed
5977
  var Tooltip = /*#__PURE__*/function () {
XhmikosR's avatar
Dist    
XhmikosR committed
5978
5979
    function Tooltip(element, config) {
      if (typeof Popper === 'undefined') {
XhmikosR's avatar
XhmikosR committed
5980
        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
XhmikosR's avatar
Dist    
XhmikosR committed
5981
      } // private
Mark Otto's avatar
dist    
Mark Otto committed
5982
5983


XhmikosR's avatar
Dist    
XhmikosR committed
5984
5985
5986
5987
5988
      this._isEnabled = true;
      this._timeout = 0;
      this._hoverState = '';
      this._activeTrigger = {};
      this._popper = null; // Protected
Mark Otto's avatar
dist  
Mark Otto committed
5989

XhmikosR's avatar
Dist    
XhmikosR committed
5990
5991
5992
      this.element = element;
      this.config = this._getConfig(config);
      this.tip = null;
Mark Otto's avatar
dist  
Mark Otto committed
5993

XhmikosR's avatar
Dist    
XhmikosR committed
5994
      this._setListeners();
XhmikosR's avatar
XhmikosR committed
5995
5996

      Data.setData(element, this.constructor.DATA_KEY, this);
XhmikosR's avatar
Dist    
XhmikosR committed
5997
    } // Getters
Mark Otto's avatar
dist  
Mark Otto committed
5998
5999


XhmikosR's avatar
Dist    
XhmikosR committed
6000
    var _proto = Tooltip.prototype;
For faster browsing, not all history is shown. View entire blame