bootstrap.bundle.js 245 KB
Newer Older
XhmikosR's avatar
Dist    
XhmikosR committed
5001
5002
      this._menu = this._getMenuElement();
      this._inNavbar = this._detectNavbar();
Mark Otto's avatar
dist    
Mark Otto committed
5003

XhmikosR's avatar
Dist    
XhmikosR committed
5004
      this._addEventListeners();
XhmikosR's avatar
XhmikosR committed
5005
5006

      Data.setData(element, DATA_KEY$4, this);
XhmikosR's avatar
Dist    
XhmikosR committed
5007
    } // Getters
Mark Otto's avatar
dist    
Mark Otto committed
5008

Mark Otto's avatar
dist  
Mark Otto committed
5009

XhmikosR's avatar
Dist    
XhmikosR committed
5010
    var _proto = Dropdown.prototype;
Mark Otto's avatar
dist  
Mark Otto committed
5011

XhmikosR's avatar
Dist    
XhmikosR committed
5012
5013
    // Public
    _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
5014
      if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5015
5016
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5017

XhmikosR's avatar
XhmikosR committed
5018
      var isActive = this._menu.classList.contains(ClassName$4.SHOW);
Mark Otto's avatar
dist  
Mark Otto committed
5019

XhmikosR's avatar
XhmikosR committed
5020
      Dropdown.clearMenus();
Mark Otto's avatar
dist  
Mark Otto committed
5021

XhmikosR's avatar
Dist    
XhmikosR committed
5022
5023
5024
      if (isActive) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5025

XhmikosR's avatar
XhmikosR committed
5026
5027
5028
5029
5030
5031
5032
5033
5034
      this.show();
    };

    _proto.show = function show() {
      if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED) || this._menu.classList.contains(ClassName$4.SHOW)) {
        return;
      }

      var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
5035
5036
5037
      var relatedTarget = {
        relatedTarget: this._element
      };
XhmikosR's avatar
XhmikosR committed
5038
      var showEvent = EventHandler.trigger(parent, Event$5.SHOW, relatedTarget);
Mark Otto's avatar
dist  
Mark Otto committed
5039

XhmikosR's avatar
XhmikosR committed
5040
      if (showEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5041
5042
        return;
      } // Disable totally Popper.js for Dropdown in Navbar
Mark Otto's avatar
dist    
Mark Otto committed
5043

Mark Otto's avatar
dist  
Mark Otto committed
5044

XhmikosR's avatar
Dist    
XhmikosR committed
5045
5046
      if (!this._inNavbar) {
        if (typeof Popper === 'undefined') {
XhmikosR's avatar
XhmikosR committed
5047
          throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)');
Mark Otto's avatar
dist    
Mark Otto committed
5048
        }
Mark Otto's avatar
dist  
Mark Otto committed
5049

XhmikosR's avatar
Dist    
XhmikosR committed
5050
        var referenceElement = this._element;
Mark Otto's avatar
dist  
Mark Otto committed
5051

XhmikosR's avatar
Dist    
XhmikosR committed
5052
5053
        if (this._config.reference === 'parent') {
          referenceElement = parent;
XhmikosR's avatar
XhmikosR committed
5054
        } else if (isElement(this._config.reference)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5055
          referenceElement = this._config.reference; // Check if it's jQuery element
Mark Otto's avatar
dist    
Mark Otto committed
5056

XhmikosR's avatar
Dist    
XhmikosR committed
5057
5058
          if (typeof this._config.reference.jquery !== 'undefined') {
            referenceElement = this._config.reference[0];
Mark Otto's avatar
dist    
Mark Otto committed
5059
          }
XhmikosR's avatar
Dist    
XhmikosR committed
5060
5061
5062
        } // If boundary is not `scrollParent`, then set position to `static`
        // to allow the menu to "escape" the scroll parent's boundaries
        // https://github.com/twbs/bootstrap/issues/24251
Mark Otto's avatar
dist    
Mark Otto committed
5063

Mark Otto's avatar
dist    
Mark Otto committed
5064

XhmikosR's avatar
Dist    
XhmikosR committed
5065
        if (this._config.boundary !== 'scrollParent') {
XhmikosR's avatar
XhmikosR committed
5066
          parent.classList.add(ClassName$4.POSITION_STATIC);
XhmikosR's avatar
Dist    
XhmikosR committed
5067
        }
Mark Otto's avatar
dist    
Mark Otto committed
5068

XhmikosR's avatar
Dist    
XhmikosR committed
5069
5070
5071
5072
5073
        this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
      } // If this is a touch-enabled device we add extra
      // empty mouseover listeners to the body's immediate children;
      // only needed because of broken event delegation on iOS
      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
Mark Otto's avatar
dist    
Mark Otto committed
5074

Mark Otto's avatar
dist    
Mark Otto committed
5075

XhmikosR's avatar
XhmikosR committed
5076
5077
5078
5079
      if ('ontouchstart' in document.documentElement && !makeArray(SelectorEngine.closest(parent, Selector$4.NAVBAR_NAV)).length) {
        makeArray(document.body.children).forEach(function (elem) {
          return EventHandler.on(elem, 'mouseover', null, noop());
        });
XhmikosR's avatar
Dist    
XhmikosR committed
5080
      }
Mark Otto's avatar
dist    
Mark Otto committed
5081

XhmikosR's avatar
Dist    
XhmikosR committed
5082
      this._element.focus();
Mark Otto's avatar
dist    
Mark Otto committed
5083

XhmikosR's avatar
Dist    
XhmikosR committed
5084
      this._element.setAttribute('aria-expanded', true);
Mark Otto's avatar
dist  
Mark Otto committed
5085

XhmikosR's avatar
XhmikosR committed
5086
5087
5088
      Manipulator.toggleClass(this._menu, ClassName$4.SHOW);
      Manipulator.toggleClass(parent, ClassName$4.SHOW);
      EventHandler.trigger(parent, Event$5.SHOWN, relatedTarget);
XhmikosR's avatar
Dist    
XhmikosR committed
5089
    };
Mark Otto's avatar
dist    
Mark Otto committed
5090

XhmikosR's avatar
Dist    
XhmikosR committed
5091
    _proto.hide = function hide() {
XhmikosR's avatar
XhmikosR committed
5092
      if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED) || !this._menu.classList.contains(ClassName$4.SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5093
5094
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5095

XhmikosR's avatar
XhmikosR committed
5096
      var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
5097
5098
5099
      var relatedTarget = {
        relatedTarget: this._element
      };
XhmikosR's avatar
XhmikosR committed
5100
      var hideEvent = EventHandler.trigger(parent, Event$5.HIDE, relatedTarget);
Mark Otto's avatar
dist    
Mark Otto committed
5101

XhmikosR's avatar
XhmikosR committed
5102
      if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5103
5104
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5105

XhmikosR's avatar
XhmikosR committed
5106
5107
5108
5109
      if (this._popper) {
        this._popper.destroy();
      }

XhmikosR's avatar
XhmikosR committed
5110
5111
5112
      Manipulator.toggleClass(this._menu, ClassName$4.SHOW);
      Manipulator.toggleClass(parent, ClassName$4.SHOW);
      EventHandler.trigger(parent, Event$5.HIDDEN, relatedTarget);
XhmikosR's avatar
Dist    
XhmikosR committed
5113
    };
Mark Otto's avatar
dist  
Mark Otto committed
5114

XhmikosR's avatar
Dist    
XhmikosR committed
5115
    _proto.dispose = function dispose() {
XhmikosR's avatar
XhmikosR committed
5116
5117
      Data.removeData(this._element, DATA_KEY$4);
      EventHandler.off(this._element, EVENT_KEY$4);
XhmikosR's avatar
Dist    
XhmikosR committed
5118
5119
      this._element = null;
      this._menu = null;
Mark Otto's avatar
dist    
Mark Otto committed
5120

XhmikosR's avatar
XhmikosR committed
5121
      if (this._popper) {
XhmikosR's avatar
Dist    
XhmikosR committed
5122
        this._popper.destroy();
Mark Otto's avatar
dist  
Mark Otto committed
5123

XhmikosR's avatar
Dist    
XhmikosR committed
5124
5125
5126
        this._popper = null;
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5127

XhmikosR's avatar
Dist    
XhmikosR committed
5128
5129
    _proto.update = function update() {
      this._inNavbar = this._detectNavbar();
Mark Otto's avatar
dist    
Mark Otto committed
5130

XhmikosR's avatar
XhmikosR committed
5131
      if (this._popper) {
XhmikosR's avatar
Dist    
XhmikosR committed
5132
5133
        this._popper.scheduleUpdate();
      }
Mark Otto's avatar
Mark Otto committed
5134
5135
    } // Private
    ;
Mark Otto's avatar
dist    
Mark Otto committed
5136

XhmikosR's avatar
Dist    
XhmikosR committed
5137
5138
    _proto._addEventListeners = function _addEventListeners() {
      var _this = this;
Mark Otto's avatar
dist    
Mark Otto committed
5139

XhmikosR's avatar
XhmikosR committed
5140
      EventHandler.on(this._element, Event$5.CLICK, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5141
5142
        event.preventDefault();
        event.stopPropagation();
Mark Otto's avatar
dist  
Mark Otto committed
5143

XhmikosR's avatar
Dist    
XhmikosR committed
5144
5145
5146
        _this.toggle();
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5147

XhmikosR's avatar
Dist    
XhmikosR committed
5148
    _proto._getConfig = function _getConfig(config) {
5149
      config = _objectSpread2({}, this.constructor.Default, {}, Manipulator.getDataAttributes(this._element), {}, config);
XhmikosR's avatar
XhmikosR committed
5150
      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
XhmikosR's avatar
Dist    
XhmikosR committed
5151
5152
      return config;
    };
Mark Otto's avatar
dist    
Mark Otto committed
5153

XhmikosR's avatar
Dist    
XhmikosR committed
5154
    _proto._getMenuElement = function _getMenuElement() {
XhmikosR's avatar
XhmikosR committed
5155
      var parent = Dropdown.getParentFromElement(this._element);
5156
      return SelectorEngine.findOne(Selector$4.MENU, parent);
XhmikosR's avatar
Dist    
XhmikosR committed
5157
    };
Mark Otto's avatar
dist  
Mark Otto committed
5158

XhmikosR's avatar
Dist    
XhmikosR committed
5159
    _proto._getPlacement = function _getPlacement() {
XhmikosR's avatar
XhmikosR committed
5160
      var parentDropdown = this._element.parentNode;
XhmikosR's avatar
Dist    
XhmikosR committed
5161
      var placement = AttachmentMap.BOTTOM; // Handle dropup
Mark Otto's avatar
dist  
Mark Otto committed
5162

XhmikosR's avatar
XhmikosR committed
5163
      if (parentDropdown.classList.contains(ClassName$4.DROPUP)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5164
        placement = AttachmentMap.TOP;
Mark Otto's avatar
dist    
Mark Otto committed
5165

XhmikosR's avatar
XhmikosR committed
5166
        if (this._menu.classList.contains(ClassName$4.MENURIGHT)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5167
5168
          placement = AttachmentMap.TOPEND;
        }
XhmikosR's avatar
XhmikosR committed
5169
      } else if (parentDropdown.classList.contains(ClassName$4.DROPRIGHT)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5170
        placement = AttachmentMap.RIGHT;
XhmikosR's avatar
XhmikosR committed
5171
      } else if (parentDropdown.classList.contains(ClassName$4.DROPLEFT)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5172
        placement = AttachmentMap.LEFT;
XhmikosR's avatar
XhmikosR committed
5173
      } else if (this._menu.classList.contains(ClassName$4.MENURIGHT)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5174
5175
        placement = AttachmentMap.BOTTOMEND;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5176

XhmikosR's avatar
Dist    
XhmikosR committed
5177
5178
      return placement;
    };
Mark Otto's avatar
dist    
Mark Otto committed
5179

XhmikosR's avatar
Dist    
XhmikosR committed
5180
    _proto._detectNavbar = function _detectNavbar() {
XhmikosR's avatar
XhmikosR committed
5181
      return Boolean(SelectorEngine.closest(this._element, '.navbar'));
XhmikosR's avatar
Dist    
XhmikosR committed
5182
    };
Mark Otto's avatar
dist    
Mark Otto committed
5183

Mark Otto's avatar
Mark Otto committed
5184
    _proto._getOffset = function _getOffset() {
XhmikosR's avatar
Dist    
XhmikosR committed
5185
      var _this2 = this;
Mark Otto's avatar
dist    
Mark Otto committed
5186

Mark Otto's avatar
Mark Otto committed
5187
      var offset = {};
Mark Otto's avatar
dist    
Mark Otto committed
5188

XhmikosR's avatar
Dist    
XhmikosR committed
5189
      if (typeof this._config.offset === 'function') {
Mark Otto's avatar
Mark Otto committed
5190
        offset.fn = function (data) {
5191
          data.offsets = _objectSpread2({}, data.offsets, {}, _this2._config.offset(data.offsets, _this2._element) || {});
XhmikosR's avatar
Dist    
XhmikosR committed
5192
5193
5194
          return data;
        };
      } else {
Mark Otto's avatar
Mark Otto committed
5195
        offset.offset = this._config.offset;
XhmikosR's avatar
Dist    
XhmikosR committed
5196
      }
Mark Otto's avatar
dist    
Mark Otto committed
5197

Mark Otto's avatar
Mark Otto committed
5198
5199
5200
5201
      return offset;
    };

    _proto._getPopperConfig = function _getPopperConfig() {
XhmikosR's avatar
Dist    
XhmikosR committed
5202
5203
5204
      var popperConfig = {
        placement: this._getPlacement(),
        modifiers: {
Mark Otto's avatar
Mark Otto committed
5205
          offset: this._getOffset(),
XhmikosR's avatar
Dist    
XhmikosR committed
5206
5207
5208
5209
5210
          flip: {
            enabled: this._config.flip
          },
          preventOverflow: {
            boundariesElement: this._config.boundary
Mark Otto's avatar
dist    
Mark Otto committed
5211
          }
XhmikosR's avatar
XhmikosR committed
5212
5213
        }
      }; // Disable Popper.js if we have a static display
Mark Otto's avatar
dist    
Mark Otto committed
5214

XhmikosR's avatar
Dist    
XhmikosR committed
5215
5216
5217
5218
5219
      if (this._config.display === 'static') {
        popperConfig.modifiers.applyStyle = {
          enabled: false
        };
      }
Mark Otto's avatar
dist  
Mark Otto committed
5220

XhmikosR's avatar
XhmikosR committed
5221
      return _objectSpread2({}, popperConfig, {}, this._config.popperConfig);
Mark Otto's avatar
Mark Otto committed
5222
5223
    } // Static
    ;
Mark Otto's avatar
dist    
Mark Otto committed
5224

XhmikosR's avatar
XhmikosR committed
5225
    Dropdown.dropdownInterface = function dropdownInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
5226
      var data = Data.getData(element, DATA_KEY$4);
Mark Otto's avatar
dist    
Mark Otto committed
5227

XhmikosR's avatar
XhmikosR committed
5228
      var _config = typeof config === 'object' ? config : null;
Mark Otto's avatar
dist  
Mark Otto committed
5229

XhmikosR's avatar
XhmikosR committed
5230
5231
5232
5233
5234
5235
      if (!data) {
        data = new Dropdown(element, _config);
      }

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
Dist.    
XhmikosR committed
5236
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist    
XhmikosR committed
5237
        }
Mark Otto's avatar
dist  
Mark Otto committed
5238

XhmikosR's avatar
XhmikosR committed
5239
5240
5241
        data[config]();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
5242

XhmikosR's avatar
XhmikosR committed
5243
    Dropdown.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
XhmikosR committed
5244
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
5245
        Dropdown.dropdownInterface(this, config);
XhmikosR's avatar
Dist    
XhmikosR committed
5246
5247
5248
      });
    };

XhmikosR's avatar
XhmikosR committed
5249
    Dropdown.clearMenus = function clearMenus(event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5250
5251
5252
      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5253

XhmikosR's avatar
XhmikosR committed
5254
      var toggles = makeArray(SelectorEngine.find(Selector$4.DATA_TOGGLE));
Mark Otto's avatar
dist  
Mark Otto committed
5255

XhmikosR's avatar
Dist    
XhmikosR committed
5256
      for (var i = 0, len = toggles.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
5257
        var parent = Dropdown.getParentFromElement(toggles[i]);
XhmikosR's avatar
XhmikosR committed
5258
        var context = Data.getData(toggles[i], DATA_KEY$4);
XhmikosR's avatar
Dist    
XhmikosR committed
5259
5260
5261
        var relatedTarget = {
          relatedTarget: toggles[i]
        };
Mark Otto's avatar
dist    
Mark Otto committed
5262

XhmikosR's avatar
Dist    
XhmikosR committed
5263
5264
5265
        if (event && event.type === 'click') {
          relatedTarget.clickEvent = event;
        }
Mark Otto's avatar
dist  
Mark Otto committed
5266

XhmikosR's avatar
Dist    
XhmikosR committed
5267
5268
        if (!context) {
          continue;
Mark Otto's avatar
dist  
Mark Otto committed
5269
5270
        }

XhmikosR's avatar
Dist    
XhmikosR committed
5271
        var dropdownMenu = context._menu;
Mark Otto's avatar
dist    
Mark Otto committed
5272

XhmikosR's avatar
XhmikosR committed
5273
        if (!parent.classList.contains(ClassName$4.SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5274
          continue;
Mark Otto's avatar
dist  
Mark Otto committed
5275
5276
        }

XhmikosR's avatar
XhmikosR committed
5277
        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && parent.contains(event.target)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5278
5279
          continue;
        }
Mark Otto's avatar
dist  
Mark Otto committed
5280

XhmikosR's avatar
XhmikosR committed
5281
        var hideEvent = EventHandler.trigger(parent, Event$5.HIDE, relatedTarget);
Mark Otto's avatar
dist    
Mark Otto committed
5282

XhmikosR's avatar
XhmikosR committed
5283
        if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5284
5285
5286
          continue;
        } // If this is a touch-enabled device we remove the extra
        // empty mouseover listeners we added for iOS support
Mark Otto's avatar
dist    
Mark Otto committed
5287
5288


XhmikosR's avatar
Dist    
XhmikosR committed
5289
        if ('ontouchstart' in document.documentElement) {
XhmikosR's avatar
XhmikosR committed
5290
5291
5292
          makeArray(document.body.children).forEach(function (elem) {
            return EventHandler.off(elem, 'mouseover', null, noop());
          });
Mark Otto's avatar
dist  
Mark Otto committed
5293
5294
        }

XhmikosR's avatar
Dist    
XhmikosR committed
5295
        toggles[i].setAttribute('aria-expanded', 'false');
XhmikosR's avatar
XhmikosR committed
5296
5297
5298
5299
5300

        if (context._popper) {
          context._popper.destroy();
        }

XhmikosR's avatar
XhmikosR committed
5301
5302
5303
        dropdownMenu.classList.remove(ClassName$4.SHOW);
        parent.classList.remove(ClassName$4.SHOW);
        EventHandler.trigger(parent, Event$5.HIDDEN, relatedTarget);
XhmikosR's avatar
Dist    
XhmikosR committed
5304
5305
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5306

XhmikosR's avatar
XhmikosR committed
5307
5308
    Dropdown.getParentFromElement = function getParentFromElement(element) {
      return getElementFromSelector(element) || element.parentNode;
XhmikosR's avatar
XhmikosR committed
5309
    };
Mark Otto's avatar
dist  
Mark Otto committed
5310

XhmikosR's avatar
XhmikosR committed
5311
    Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5312
5313
5314
5315
5316
5317
5318
      // 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
5319
      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || SelectorEngine.closest(event.target, Selector$4.MENU)) : !REGEXP_KEYDOWN.test(event.which)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5320
5321
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5322

XhmikosR's avatar
Dist    
XhmikosR committed
5323
5324
      event.preventDefault();
      event.stopPropagation();
Mark Otto's avatar
dist  
Mark Otto committed
5325

XhmikosR's avatar
XhmikosR committed
5326
      if (this.disabled || this.classList.contains(ClassName$4.DISABLED)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5327
5328
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5329

XhmikosR's avatar
XhmikosR committed
5330
      var parent = Dropdown.getParentFromElement(this);
XhmikosR's avatar
XhmikosR committed
5331
      var isActive = parent.classList.contains(ClassName$4.SHOW);
XhmikosR's avatar
Dist    
XhmikosR committed
5332

Mark Otto's avatar
dist    
Mark Otto committed
5333
      if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5334
        if (event.which === ESCAPE_KEYCODE) {
Mark Otto's avatar
dist v5    
Mark Otto committed
5335
          SelectorEngine.findOne(Selector$4.DATA_TOGGLE, parent).focus();
Mark Otto's avatar
dist  
Mark Otto committed
5336
5337
        }

XhmikosR's avatar
XhmikosR committed
5338
        Dropdown.clearMenus();
XhmikosR's avatar
Dist    
XhmikosR committed
5339
5340
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5341

XhmikosR's avatar
XhmikosR committed
5342
      var items = makeArray(SelectorEngine.find(Selector$4.VISIBLE_ITEMS, parent)).filter(isVisible);
Mark Otto's avatar
dist  
Mark Otto committed
5343

XhmikosR's avatar
XhmikosR committed
5344
      if (!items.length) {
XhmikosR's avatar
Dist    
XhmikosR committed
5345
5346
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5347

XhmikosR's avatar
Dist    
XhmikosR committed
5348
      var index = items.indexOf(event.target);
Mark Otto's avatar
dist  
Mark Otto committed
5349

XhmikosR's avatar
Dist    
XhmikosR committed
5350
5351
5352
5353
      if (event.which === ARROW_UP_KEYCODE && index > 0) {
        // Up
        index--;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5354

XhmikosR's avatar
Dist    
XhmikosR committed
5355
5356
5357
5358
      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
        // Down
        index++;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5359

XhmikosR's avatar
Dist    
XhmikosR committed
5360
5361
5362
      if (index < 0) {
        index = 0;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5363

XhmikosR's avatar
Dist    
XhmikosR committed
5364
      items[index].focus();
Mark Otto's avatar
dist  
Mark Otto committed
5365
5366
    };

XhmikosR's avatar
XhmikosR committed
5367
    Dropdown.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
5368
5369
5370
      return Data.getData(element, DATA_KEY$4);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
    _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
5388
    return Dropdown;
XhmikosR's avatar
Dist    
XhmikosR committed
5389
5390
5391
5392
5393
5394
5395
5396
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */


XhmikosR's avatar
XhmikosR committed
5397
5398
5399
5400
  EventHandler.on(document, Event$5.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown.dataApiKeydownHandler);
  EventHandler.on(document, Event$5.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown.dataApiKeydownHandler);
  EventHandler.on(document, Event$5.CLICK_DATA_API, Dropdown.clearMenus);
  EventHandler.on(document, Event$5.KEYUP_DATA_API, Dropdown.clearMenus);
XhmikosR's avatar
XhmikosR committed
5401
  EventHandler.on(document, Event$5.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5402
5403
    event.preventDefault();
    event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
5404
    Dropdown.dropdownInterface(this, 'toggle');
XhmikosR's avatar
XhmikosR committed
5405
5406
5407
  });
  EventHandler.on(document, Event$5.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
    return e.stopPropagation();
XhmikosR's avatar
Dist    
XhmikosR committed
5408
  });
XhmikosR's avatar
XhmikosR committed
5409
  var $$5 = getjQuery();
XhmikosR's avatar
Dist    
XhmikosR committed
5410
5411
5412
5413
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
5414
   * add .dropdown to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
5415
5416
   */

5417
5418
  /* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
5419
5420
5421
5422
  if ($$5) {
    var JQUERY_NO_CONFLICT$4 = $$5.fn[NAME$4];
    $$5.fn[NAME$4] = Dropdown.jQueryInterface;
    $$5.fn[NAME$4].Constructor = Dropdown;
XhmikosR's avatar
Dist    
XhmikosR committed
5423

XhmikosR's avatar
XhmikosR committed
5424
5425
5426
    $$5.fn[NAME$4].noConflict = function () {
      $$5.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
      return Dropdown.jQueryInterface;
XhmikosR's avatar
XhmikosR committed
5427
5428
    };
  }
Mark Otto's avatar
dist    
Mark Otto committed
5429

XhmikosR's avatar
Dist    
XhmikosR committed
5430
5431
5432
5433
5434
5435
5436
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME$5 = 'modal';
XhmikosR's avatar
XhmikosR committed
5437
  var VERSION$5 = '4.3.1';
XhmikosR's avatar
Dist    
XhmikosR committed
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
  var DATA_KEY$5 = 'bs.modal';
  var EVENT_KEY$5 = "." + DATA_KEY$5;
  var DATA_API_KEY$5 = '.data-api';
  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key

  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
5455
  var Event$6 = {
XhmikosR's avatar
Dist    
XhmikosR committed
5456
    HIDE: "hide" + EVENT_KEY$5,
XhmikosR's avatar
XhmikosR committed
5457
    HIDE_PREVENTED: "hidePrevented" + EVENT_KEY$5,
XhmikosR's avatar
Dist    
XhmikosR committed
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
    HIDDEN: "hidden" + EVENT_KEY$5,
    SHOW: "show" + EVENT_KEY$5,
    SHOWN: "shown" + EVENT_KEY$5,
    FOCUSIN: "focusin" + EVENT_KEY$5,
    RESIZE: "resize" + EVENT_KEY$5,
    CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
    KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
    MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
    MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
    CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
  };
  var ClassName$5 = {
Mark Otto's avatar
Mark Otto committed
5470
    SCROLLABLE: 'modal-dialog-scrollable',
XhmikosR's avatar
Dist    
XhmikosR committed
5471
5472
5473
5474
    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
    BACKDROP: 'modal-backdrop',
    OPEN: 'modal-open',
    FADE: 'fade',
XhmikosR's avatar
XhmikosR committed
5475
5476
    SHOW: 'show',
    STATIC: 'modal-static'
XhmikosR's avatar
Dist    
XhmikosR committed
5477
5478
5479
  };
  var Selector$5 = {
    DIALOG: '.modal-dialog',
Mark Otto's avatar
Mark Otto committed
5480
    MODAL_BODY: '.modal-body',
XhmikosR's avatar
Dist    
XhmikosR committed
5481
5482
5483
5484
5485
    DATA_TOGGLE: '[data-toggle="modal"]',
    DATA_DISMISS: '[data-dismiss="modal"]',
    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
    STICKY_CONTENT: '.sticky-top'
  };
XhmikosR's avatar
XhmikosR committed
5486
5487
5488
5489
5490
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
5491

XhmikosR's avatar
Dist    
XhmikosR committed
5492
5493
5494
5495
5496
5497
  var Modal =
  /*#__PURE__*/
  function () {
    function Modal(element, config) {
      this._config = this._getConfig(config);
      this._element = element;
XhmikosR's avatar
XhmikosR committed
5498
      this._dialog = SelectorEngine.findOne(Selector$5.DIALOG, element);
XhmikosR's avatar
Dist    
XhmikosR committed
5499
5500
5501
5502
5503
5504
      this._backdrop = null;
      this._isShown = false;
      this._isBodyOverflowing = false;
      this._ignoreBackdropClick = false;
      this._isTransitioning = false;
      this._scrollbarWidth = 0;
XhmikosR's avatar
XhmikosR committed
5505
      Data.setData(element, DATA_KEY$5, this);
XhmikosR's avatar
Dist    
XhmikosR committed
5506
5507
5508
5509
5510
5511
5512
5513
    } // 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
5514
5515
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5516
5517
    _proto.show = function show(relatedTarget) {
      var _this = this;
Mark Otto's avatar
dist  
Mark Otto committed
5518

XhmikosR's avatar
Dist    
XhmikosR committed
5519
5520
5521
      if (this._isShown || this._isTransitioning) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5522

XhmikosR's avatar
XhmikosR committed
5523
      if (this._element.classList.contains(ClassName$5.FADE)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5524
5525
        this._isTransitioning = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5526

XhmikosR's avatar
XhmikosR committed
5527
      var showEvent = EventHandler.trigger(this._element, Event$6.SHOW, {
XhmikosR's avatar
Dist    
XhmikosR committed
5528
5529
        relatedTarget: relatedTarget
      });
Mark Otto's avatar
dist    
Mark Otto committed
5530

XhmikosR's avatar
XhmikosR committed
5531
      if (this._isShown || showEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5532
5533
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5534

XhmikosR's avatar
Dist    
XhmikosR committed
5535
      this._isShown = true;
Mark Otto's avatar
dist    
Mark Otto committed
5536

XhmikosR's avatar
Dist    
XhmikosR committed
5537
      this._checkScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
5538

XhmikosR's avatar
Dist    
XhmikosR committed
5539
      this._setScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
5540

XhmikosR's avatar
Dist    
XhmikosR committed
5541
      this._adjustDialog();
Mark Otto's avatar
dist  
Mark Otto committed
5542

XhmikosR's avatar
Dist    
XhmikosR committed
5543
      this._setEscapeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5544

XhmikosR's avatar
Dist    
XhmikosR committed
5545
      this._setResizeEvent();
Mark Otto's avatar
dist    
Mark Otto committed
5546

XhmikosR's avatar
XhmikosR committed
5547
      EventHandler.on(this._element, Event$6.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5548
5549
        return _this.hide(event);
      });
XhmikosR's avatar
XhmikosR committed
5550
5551
5552
      EventHandler.on(this._dialog, Event$6.MOUSEDOWN_DISMISS, function () {
        EventHandler.one(_this._element, Event$6.MOUSEUP_DISMISS, function (event) {
          if (event.target === _this._element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5553
5554
5555
5556
            _this._ignoreBackdropClick = true;
          }
        });
      });
Mark Otto's avatar
dist  
Mark Otto committed
5557

XhmikosR's avatar
Dist    
XhmikosR committed
5558
5559
5560
5561
      this._showBackdrop(function () {
        return _this._showElement(relatedTarget);
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5562

XhmikosR's avatar
Dist    
XhmikosR committed
5563
5564
    _proto.hide = function hide(event) {
      var _this2 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5565

XhmikosR's avatar
Dist    
XhmikosR committed
5566
5567
5568
      if (event) {
        event.preventDefault();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5569

XhmikosR's avatar
Dist    
XhmikosR committed
5570
5571
5572
      if (!this._isShown || this._isTransitioning) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5573

XhmikosR's avatar
XhmikosR committed
5574
      var hideEvent = EventHandler.trigger(this._element, Event$6.HIDE);
Mark Otto's avatar
dist  
Mark Otto committed
5575

5576
      if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5577
5578
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5579

XhmikosR's avatar
Dist    
XhmikosR committed
5580
      this._isShown = false;
XhmikosR's avatar
XhmikosR committed
5581
5582

      var transition = this._element.classList.contains(ClassName$5.FADE);
Mark Otto's avatar
dist  
Mark Otto committed
5583

XhmikosR's avatar
Dist    
XhmikosR committed
5584
5585
5586
      if (transition) {
        this._isTransitioning = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5587

XhmikosR's avatar
Dist    
XhmikosR committed
5588
      this._setEscapeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5589

XhmikosR's avatar
Dist    
XhmikosR committed
5590
      this._setResizeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5591

XhmikosR's avatar
XhmikosR committed
5592
5593
5594
5595
5596
5597
      EventHandler.off(document, Event$6.FOCUSIN);

      this._element.classList.remove(ClassName$5.SHOW);

      EventHandler.off(this._element, Event$6.CLICK_DISMISS);
      EventHandler.off(this._dialog, Event$6.MOUSEDOWN_DISMISS);
Mark Otto's avatar
dist  
Mark Otto committed
5598

XhmikosR's avatar
Dist    
XhmikosR committed
5599
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5600
5601
        var transitionDuration = getTransitionDurationFromElement(this._element);
        EventHandler.one(this._element, TRANSITION_END, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5602
          return _this2._hideModal(event);
XhmikosR's avatar
XhmikosR committed
5603
5604
        });
        emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5605
5606
5607
5608
      } else {
        this._hideModal();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
5609

XhmikosR's avatar
Dist    
XhmikosR committed
5610
5611
    _proto.dispose = function dispose() {
      [window, this._element, this._dialog].forEach(function (htmlElement) {
XhmikosR's avatar
XhmikosR committed
5612
        return EventHandler.off(htmlElement, EVENT_KEY$5);
XhmikosR's avatar
Dist    
XhmikosR committed
5613
5614
5615
5616
5617
5618
      });
      /**
       * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
       * Do not move `document` in `htmlElements` array
       * It will remove `Event.CLICK_DATA_API` event that should remain
       */
Mark Otto's avatar
dist  
Mark Otto committed
5619

XhmikosR's avatar
XhmikosR committed
5620
5621
      EventHandler.off(document, Event$6.FOCUSIN);
      Data.removeData(this._element, DATA_KEY$5);
XhmikosR's avatar
Dist    
XhmikosR committed
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
      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
5632

XhmikosR's avatar
Dist    
XhmikosR committed
5633
5634
    _proto.handleUpdate = function handleUpdate() {
      this._adjustDialog();
Mark Otto's avatar
Mark Otto committed
5635
5636
    } // Private
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5637

XhmikosR's avatar
Dist    
XhmikosR committed
5638
    _proto._getConfig = function _getConfig(config) {
5639
      config = _objectSpread2({}, Default$3, {}, config);
XhmikosR's avatar
XhmikosR committed
5640
      typeCheckConfig(NAME$5, config, DefaultType$3);
XhmikosR's avatar
Dist    
XhmikosR committed
5641
5642
      return config;
    };
Mark Otto's avatar
dist  
Mark Otto committed
5643

XhmikosR's avatar
Dist    
XhmikosR committed
5644
5645
    _proto._showElement = function _showElement(relatedTarget) {
      var _this3 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5646

XhmikosR's avatar
XhmikosR committed
5647
      var transition = this._element.classList.contains(ClassName$5.FADE);
Mark Otto's avatar
dist  
Mark Otto committed
5648

XhmikosR's avatar
XhmikosR committed
5649
5650
      var modalBody = SelectorEngine.findOne(Selector$5.MODAL_BODY, this._dialog);

XhmikosR's avatar
Dist    
XhmikosR committed
5651
5652
5653
5654
      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
5655

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

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

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

XhmikosR's avatar
XhmikosR committed
5662
5663
      if (this._dialog.classList.contains(ClassName$5.SCROLLABLE) && modalBody) {
        modalBody.scrollTop = 0;
Mark Otto's avatar
Mark Otto committed
5664
5665
5666
      } else {
        this._element.scrollTop = 0;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5667

XhmikosR's avatar
Dist    
XhmikosR committed
5668
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5669
        reflow(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
5670
      }
Mark Otto's avatar
dist  
Mark Otto committed
5671

XhmikosR's avatar
XhmikosR committed
5672
      this._element.classList.add(ClassName$5.SHOW);
Mark Otto's avatar
dist    
Mark Otto committed
5673

XhmikosR's avatar
Dist    
XhmikosR committed
5674
5675
5676
      if (this._config.focus) {
        this._enforceFocus();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5677

XhmikosR's avatar
Dist    
XhmikosR committed
5678
5679
5680
      var transitionComplete = function transitionComplete() {
        if (_this3._config.focus) {
          _this3._element.focus();
Mark Otto's avatar
dist    
Mark Otto committed
5681
        }
Mark Otto's avatar
dist  
Mark Otto committed
5682

XhmikosR's avatar
Dist    
XhmikosR committed
5683
        _this3._isTransitioning = false;
XhmikosR's avatar
XhmikosR committed
5684
5685
5686
        EventHandler.trigger(_this3._element, Event$6.SHOWN, {
          relatedTarget: relatedTarget
        });
XhmikosR's avatar
Dist    
XhmikosR committed
5687
      };
Mark Otto's avatar
dist  
Mark Otto committed
5688

XhmikosR's avatar
Dist    
XhmikosR committed
5689
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5690
5691
5692
        var transitionDuration = getTransitionDurationFromElement(this._dialog);
        EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
        emulateTransitionEnd(this._dialog, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5693
5694
5695
5696
      } else {
        transitionComplete();
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5697

XhmikosR's avatar
Dist    
XhmikosR committed
5698
5699
    _proto._enforceFocus = function _enforceFocus() {
      var _this4 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5700

XhmikosR's avatar
XhmikosR committed
5701
5702
5703
5704
      EventHandler.off(document, Event$6.FOCUSIN); // guard against infinite focus loop

      EventHandler.on(document, Event$6.FOCUSIN, function (event) {
        if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5705
          _this4._element.focus();
Mark Otto's avatar
dist  
Mark Otto committed
5706
        }
XhmikosR's avatar
Dist    
XhmikosR committed
5707
5708
      });
    };
Mark Otto's avatar
dist    
Mark Otto committed
5709

XhmikosR's avatar
Dist    
XhmikosR committed
5710
5711
5712
5713
    _proto._setEscapeEvent = function _setEscapeEvent() {
      var _this5 = this;

      if (this._isShown && this._config.keyboard) {
XhmikosR's avatar
XhmikosR committed
5714
        EventHandler.on(this._element, Event$6.KEYDOWN_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5715
          if (event.which === ESCAPE_KEYCODE$1) {
XhmikosR's avatar
XhmikosR committed
5716
            _this5._triggerBackdropTransition();
Mark Otto's avatar
dist    
Mark Otto committed
5717
5718
          }
        });
5719
      } else {
XhmikosR's avatar
XhmikosR committed
5720
        EventHandler.off(this._element, Event$6.KEYDOWN_DISMISS);
XhmikosR's avatar
Dist    
XhmikosR committed
5721
5722
5723
5724
5725
      }
    };

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

XhmikosR's avatar
Dist    
XhmikosR committed
5727
      if (this._isShown) {
5728
5729
        EventHandler.on(window, Event$6.RESIZE, function () {
          return _this6._adjustDialog();
XhmikosR's avatar
Dist    
XhmikosR committed
5730
5731
        });
      } else {
XhmikosR's avatar
XhmikosR committed
5732
        EventHandler.off(window, Event$6.RESIZE);
XhmikosR's avatar
Dist    
XhmikosR committed
5733
5734
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5735

XhmikosR's avatar
Dist    
XhmikosR committed
5736
5737
    _proto._hideModal = function _hideModal() {
      var _this7 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5738

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5745
      this._isTransitioning = false;
Mark Otto's avatar
dist    
Mark Otto committed
5746

XhmikosR's avatar
Dist    
XhmikosR committed
5747
      this._showBackdrop(function () {
XhmikosR's avatar
XhmikosR committed
5748
        document.body.classList.remove(ClassName$5.OPEN);
Mark Otto's avatar
dist  
Mark Otto committed
5749

XhmikosR's avatar
Dist    
XhmikosR committed
5750
        _this7._resetAdjustments();
Mark Otto's avatar
dist  
Mark Otto committed
5751

XhmikosR's avatar
Dist    
XhmikosR committed
5752
        _this7._resetScrollbar();
Mark Otto's avatar
dist  
Mark Otto committed
5753

XhmikosR's avatar
XhmikosR committed
5754
        EventHandler.trigger(_this7._element, Event$6.HIDDEN);
XhmikosR's avatar
Dist    
XhmikosR committed
5755
5756
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5757

XhmikosR's avatar
Dist    
XhmikosR committed
5758
    _proto._removeBackdrop = function _removeBackdrop() {
5759
      this._backdrop.parentNode.removeChild(this._backdrop);
XhmikosR's avatar
XhmikosR committed
5760

5761
      this._backdrop = null;
XhmikosR's avatar
Dist    
XhmikosR committed
5762
    };
Mark Otto's avatar
dist    
Mark Otto committed
5763

XhmikosR's avatar
Dist    
XhmikosR committed
5764
5765
    _proto._showBackdrop = function _showBackdrop(callback) {
      var _this8 = this;
Mark Otto's avatar
dist    
Mark Otto committed
5766

XhmikosR's avatar
XhmikosR committed
5767
      var animate = this._element.classList.contains(ClassName$5.FADE) ? ClassName$5.FADE : '';
Mark Otto's avatar
dist    
Mark Otto committed
5768

XhmikosR's avatar
Dist    
XhmikosR committed
5769
5770
5771
      if (this._isShown && this._config.backdrop) {
        this._backdrop = document.createElement('div');
        this._backdrop.className = ClassName$5.BACKDROP;
Mark Otto's avatar
dist    
Mark Otto committed
5772

XhmikosR's avatar
Dist    
XhmikosR committed
5773
5774
        if (animate) {
          this._backdrop.classList.add(animate);
Mark Otto's avatar
dist    
Mark Otto committed
5775
        }
Mark Otto's avatar
dist    
Mark Otto committed
5776

XhmikosR's avatar
XhmikosR committed
5777
5778
        document.body.appendChild(this._backdrop);
        EventHandler.on(this._element, Event$6.CLICK_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5779
5780
5781
5782
          if (_this8._ignoreBackdropClick) {
            _this8._ignoreBackdropClick = false;
            return;
          }
Mark Otto's avatar
dist  
Mark Otto committed
5783

XhmikosR's avatar
Dist    
XhmikosR committed
5784
5785
5786
          if (event.target !== event.currentTarget) {
            return;
          }
Mark Otto's avatar
dist  
Mark Otto committed
5787

XhmikosR's avatar
XhmikosR committed
5788
          _this8._triggerBackdropTransition();
XhmikosR's avatar
Dist    
XhmikosR committed
5789
        });
Mark Otto's avatar
dist  
Mark Otto committed
5790

XhmikosR's avatar
Dist    
XhmikosR committed
5791
        if (animate) {
XhmikosR's avatar
XhmikosR committed
5792
          reflow(this._backdrop);
XhmikosR's avatar
Dist    
XhmikosR committed
5793
        }
Mark Otto's avatar
dist  
Mark Otto committed
5794

XhmikosR's avatar
XhmikosR committed
5795
        this._backdrop.classList.add(ClassName$5.SHOW);
Mark Otto's avatar
dist  
Mark Otto committed
5796

XhmikosR's avatar
Dist    
XhmikosR committed
5797
5798
5799
5800
        if (!animate) {
          callback();
          return;
        }
Mark Otto's avatar
dist    
Mark Otto committed
5801

XhmikosR's avatar
XhmikosR committed
5802
5803
5804
        var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
        EventHandler.one(this._backdrop, TRANSITION_END, callback);
        emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5805
      } else if (!this._isShown && this._backdrop) {
XhmikosR's avatar
XhmikosR committed
5806
        this._backdrop.classList.remove(ClassName$5.SHOW);
Mark Otto's avatar
dist    
Mark Otto committed
5807

XhmikosR's avatar
Dist    
XhmikosR committed
5808
5809
        var callbackRemove = function callbackRemove() {
          _this8._removeBackdrop();
Mark Otto's avatar
dist    
Mark Otto committed
5810

5811
          callback();
XhmikosR's avatar
Dist    
XhmikosR committed
5812
        };
Mark Otto's avatar
dist  
Mark Otto committed
5813

XhmikosR's avatar
XhmikosR committed
5814
5815
        if (this._element.classList.contains(ClassName$5.FADE)) {
          var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
Mark Otto's avatar
dist  
Mark Otto committed
5816

XhmikosR's avatar
XhmikosR committed
5817
5818
          EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
          emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5819
5820
5821
        } else {
          callbackRemove();
        }
5822
      } else {
XhmikosR's avatar
Dist    
XhmikosR committed
5823
5824
        callback();
      }
XhmikosR's avatar
XhmikosR committed
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
    };

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

      if (this._config.backdrop === 'static') {
        var hideEvent = EventHandler.trigger(this._element, Event$6.HIDE_PREVENTED);

        if (hideEvent.defaultPrevented) {
          return;
        }

        this._element.classList.add(ClassName$5.STATIC);

        var modalTransitionDuration = getTransitionDurationFromElement(this._element);
        EventHandler.one(this._element, TRANSITION_END, function () {
          _this9._element.classList.remove(ClassName$5.STATIC);
        });
        emulateTransitionEnd(this._element, modalTransitionDuration);

        this._element.focus();
      } else {
        this.hide();
      }
Mark Otto's avatar
Mark Otto committed
5849
    } // ----------------------------------------------------------------------
XhmikosR's avatar
Dist    
XhmikosR committed
5850
5851
    // the following methods are used to handle overflowing modals
    // ----------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
5852
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5853

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

XhmikosR's avatar
Dist    
XhmikosR committed
5857
5858
5859
      if (!this._isBodyOverflowing && isModalOverflowing) {
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
      }
Mark Otto's avatar
dist  
Mark Otto committed
5860

XhmikosR's avatar
Dist    
XhmikosR committed
5861
5862
5863
5864
      if (this._isBodyOverflowing && !isModalOverflowing) {
        this._element.style.paddingRight = this._scrollbarWidth + "px";
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5865

XhmikosR's avatar
Dist    
XhmikosR committed
5866
5867
5868
5869
    _proto._resetAdjustments = function _resetAdjustments() {
      this._element.style.paddingLeft = '';
      this._element.style.paddingRight = '';
    };
Mark Otto's avatar
dist    
Mark Otto committed
5870

XhmikosR's avatar
Dist    
XhmikosR committed
5871
5872
5873
5874
5875
    _proto._checkScrollbar = function _checkScrollbar() {
      var rect = document.body.getBoundingClientRect();
      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
      this._scrollbarWidth = this._getScrollbarWidth();
    };
Mark Otto's avatar
dist  
Mark Otto committed
5876

XhmikosR's avatar
Dist    
XhmikosR committed
5877
    _proto._setScrollbar = function _setScrollbar() {
XhmikosR's avatar
XhmikosR committed
5878
      var _this10 = this;
XhmikosR's avatar
Dist    
XhmikosR committed
5879
5880
5881
5882

      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
5883
5884
        // Adjust fixed content padding
        makeArray(SelectorEngine.find(Selector$5.FIXED_CONTENT)).forEach(function (element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5885
          var actualPadding = element.style.paddingRight;
XhmikosR's avatar
XhmikosR committed
5886
5887
          var calculatedPadding = window.getComputedStyle(element)['padding-right'];
          Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
XhmikosR's avatar
XhmikosR committed
5888
          element.style.paddingRight = parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px";
XhmikosR's avatar
Dist    
XhmikosR committed
5889
5890
        }); // Adjust sticky content margin

XhmikosR's avatar
XhmikosR committed
5891
        makeArray(SelectorEngine.find(Selector$5.STICKY_CONTENT)).forEach(function (element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5892
          var actualMargin = element.style.marginRight;
XhmikosR's avatar
XhmikosR committed
5893
5894
          var calculatedMargin = window.getComputedStyle(element)['margin-right'];
          Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
XhmikosR's avatar
XhmikosR committed
5895
          element.style.marginRight = parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px";
XhmikosR's avatar
Dist    
XhmikosR committed
5896
5897
5898
        }); // Adjust body padding

        var actualPadding = document.body.style.paddingRight;
XhmikosR's avatar
XhmikosR committed
5899
5900
5901
        var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
        Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);
        document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
XhmikosR's avatar
Dist    
XhmikosR committed
5902
      }
XhmikosR's avatar
Dist    
XhmikosR committed
5903

XhmikosR's avatar
XhmikosR committed
5904
      document.body.classList.add(ClassName$5.OPEN);
XhmikosR's avatar
Dist    
XhmikosR committed
5905
    };
Mark Otto's avatar
dist    
Mark Otto committed
5906

XhmikosR's avatar
Dist    
XhmikosR committed
5907
5908
    _proto._resetScrollbar = function _resetScrollbar() {
      // Restore fixed content padding
XhmikosR's avatar
XhmikosR committed
5909
5910
      makeArray(SelectorEngine.find(Selector$5.FIXED_CONTENT)).forEach(function (element) {
        var padding = Manipulator.getDataAttribute(element, 'padding-right');
Mark Otto's avatar
dist  
Mark Otto committed
5911

XhmikosR's avatar
XhmikosR committed
5912
5913
5914
5915
5916
5917
5918
5919
        if (typeof padding !== 'undefined') {
          Manipulator.removeDataAttribute(element, 'padding-right');
          element.style.paddingRight = padding;
        }
      }); // Restore sticky content and navbar-toggler margin

      makeArray(SelectorEngine.find("" + Selector$5.STICKY_CONTENT)).forEach(function (element) {
        var margin = Manipulator.getDataAttribute(element, 'margin-right');
Mark Otto's avatar
dist  
Mark Otto committed
5920

XhmikosR's avatar
Dist    
XhmikosR committed
5921
        if (typeof margin !== 'undefined') {
XhmikosR's avatar
XhmikosR committed
5922
5923
          Manipulator.removeDataAttribute(element, 'margin-right');
          element.style.marginRight = margin;
Mark Otto's avatar
dist    
Mark Otto committed
5924
        }
XhmikosR's avatar
Dist    
XhmikosR committed
5925
      }); // Restore body padding
Mark Otto's avatar
dist  
Mark Otto committed
5926

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

XhmikosR's avatar
Dist.    
XhmikosR committed
5929
5930
5931
      if (typeof padding === 'undefined') {
        document.body.style.paddingRight = '';
      } else {
XhmikosR's avatar
XhmikosR committed
5932
5933
5934
        Manipulator.removeDataAttribute(document.body, 'padding-right');
        document.body.style.paddingRight = padding;
      }
XhmikosR's avatar
Dist    
XhmikosR committed
5935
    };
Mark Otto's avatar
dist  
Mark Otto committed
5936

XhmikosR's avatar
Dist    
XhmikosR committed
5937
5938
5939
5940
5941
5942
5943
5944
    _proto._getScrollbarWidth = function _getScrollbarWidth() {
      // thx d.walsh
      var scrollDiv = document.createElement('div');
      scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
      document.body.appendChild(scrollDiv);
      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
      document.body.removeChild(scrollDiv);
      return scrollbarWidth;
Mark Otto's avatar
Mark Otto committed
5945
5946
    } // Static
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5947

XhmikosR's avatar
XhmikosR committed
5948
    Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
XhmikosR's avatar
Dist    
XhmikosR committed
5949
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
5950
        var data = Data.getData(this, DATA_KEY$5);
Mark Otto's avatar
dist  
Mark Otto committed
5951

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

XhmikosR's avatar
Dist    
XhmikosR committed
5954
5955
5956
        if (!data) {
          data = new Modal(this, _config);
        }
Mark Otto's avatar
dist    
Mark Otto committed
5957

XhmikosR's avatar
Dist    
XhmikosR committed
5958
5959
5960
        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
            throw new TypeError("No method named \"" + config + "\"");
Mark Otto's avatar
dist    
Mark Otto committed
5961
          }
Mark Otto's avatar
dist  
Mark Otto committed
5962

XhmikosR's avatar
Dist    
XhmikosR committed
5963
5964
5965
5966
5967
5968
          data[config](relatedTarget);
        } else if (_config.show) {
          data.show(relatedTarget);
        }
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5969

XhmikosR's avatar
XhmikosR committed
5970
    Modal.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
5971
5972
5973
      return Data.getData(element, DATA_KEY$5);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
    _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
5985

XhmikosR's avatar
Dist    
XhmikosR committed
5986
5987
5988
5989
5990
5991
5992
    return Modal;
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
5993

Mark Otto's avatar
dist    
Mark Otto committed
5994

XhmikosR's avatar
XhmikosR committed
5995
  EventHandler.on(document, Event$6.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
XhmikosR's avatar
XhmikosR committed
5996
    var _this11 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5997

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

XhmikosR's avatar
Dist    
XhmikosR committed
6000
    if (this.tagName === 'A' || this.tagName === 'AREA') {
For faster browsing, not all history is shown. View entire blame