bootstrap.bundle.js 244 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
5001
      Data.setData(element, DATA_KEY$4, this);
XhmikosR's avatar
Dist    
XhmikosR committed
5002
    } // Getters
Mark Otto's avatar
dist    
Mark Otto committed
5003

Mark Otto's avatar
dist  
Mark Otto committed
5004

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

XhmikosR's avatar
Dist    
XhmikosR committed
5007
5008
    // Public
    _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
5009
      if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5010
5011
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5012

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

XhmikosR's avatar
XhmikosR committed
5015
      Dropdown.clearMenus();
Mark Otto's avatar
dist  
Mark Otto committed
5016

XhmikosR's avatar
Dist    
XhmikosR committed
5017
5018
5019
      if (isActive) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5020

XhmikosR's avatar
XhmikosR committed
5021
5022
5023
5024
5025
5026
5027
5028
5029
      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
5030
5031
5032
      var relatedTarget = {
        relatedTarget: this._element
      };
XhmikosR's avatar
XhmikosR committed
5033
      var showEvent = EventHandler.trigger(parent, Event$5.SHOW, relatedTarget);
Mark Otto's avatar
dist  
Mark Otto committed
5034

XhmikosR's avatar
XhmikosR committed
5035
      if (showEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5036
5037
        return;
      } // Disable totally Popper.js for Dropdown in Navbar
Mark Otto's avatar
dist    
Mark Otto committed
5038

Mark Otto's avatar
dist  
Mark Otto committed
5039

XhmikosR's avatar
Dist    
XhmikosR committed
5040
5041
      if (!this._inNavbar) {
        if (typeof Popper === 'undefined') {
XhmikosR's avatar
XhmikosR committed
5042
          throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)');
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
        var referenceElement = this._element;
Mark Otto's avatar
dist  
Mark Otto committed
5046

XhmikosR's avatar
Dist    
XhmikosR committed
5047
5048
        if (this._config.reference === 'parent') {
          referenceElement = parent;
XhmikosR's avatar
XhmikosR committed
5049
        } else if (isElement(this._config.reference)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5050
          referenceElement = this._config.reference; // Check if it's jQuery element
Mark Otto's avatar
dist    
Mark Otto committed
5051

XhmikosR's avatar
Dist    
XhmikosR committed
5052
5053
          if (typeof this._config.reference.jquery !== 'undefined') {
            referenceElement = this._config.reference[0];
Mark Otto's avatar
dist    
Mark Otto committed
5054
          }
XhmikosR's avatar
Dist    
XhmikosR committed
5055
5056
5057
        } // 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
5058

Mark Otto's avatar
dist    
Mark Otto committed
5059

XhmikosR's avatar
Dist    
XhmikosR committed
5060
        if (this._config.boundary !== 'scrollParent') {
XhmikosR's avatar
XhmikosR committed
5061
          parent.classList.add(ClassName$4.POSITION_STATIC);
XhmikosR's avatar
Dist    
XhmikosR committed
5062
        }
Mark Otto's avatar
dist    
Mark Otto committed
5063

XhmikosR's avatar
Dist    
XhmikosR committed
5064
5065
5066
5067
5068
        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
5069

Mark Otto's avatar
dist    
Mark Otto committed
5070

XhmikosR's avatar
XhmikosR committed
5071
5072
5073
5074
      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
5075
      }
Mark Otto's avatar
dist    
Mark Otto committed
5076

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

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

XhmikosR's avatar
XhmikosR committed
5081
5082
5083
      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
5084
    };
Mark Otto's avatar
dist    
Mark Otto committed
5085

XhmikosR's avatar
Dist    
XhmikosR committed
5086
    _proto.hide = function hide() {
XhmikosR's avatar
XhmikosR committed
5087
      if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED) || !this._menu.classList.contains(ClassName$4.SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5088
5089
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5090

XhmikosR's avatar
XhmikosR committed
5091
      var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
5092
5093
5094
      var relatedTarget = {
        relatedTarget: this._element
      };
XhmikosR's avatar
XhmikosR committed
5095
      var hideEvent = EventHandler.trigger(parent, Event$5.HIDE, relatedTarget);
Mark Otto's avatar
dist    
Mark Otto committed
5096

XhmikosR's avatar
XhmikosR committed
5097
      if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5098
5099
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5100

XhmikosR's avatar
XhmikosR committed
5101
5102
5103
5104
      if (this._popper) {
        this._popper.destroy();
      }

XhmikosR's avatar
XhmikosR committed
5105
5106
5107
      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
5108
    };
Mark Otto's avatar
dist  
Mark Otto committed
5109

XhmikosR's avatar
Dist    
XhmikosR committed
5110
    _proto.dispose = function dispose() {
XhmikosR's avatar
XhmikosR committed
5111
5112
      Data.removeData(this._element, DATA_KEY$4);
      EventHandler.off(this._element, EVENT_KEY$4);
XhmikosR's avatar
Dist    
XhmikosR committed
5113
5114
      this._element = null;
      this._menu = null;
Mark Otto's avatar
dist    
Mark Otto committed
5115

XhmikosR's avatar
XhmikosR committed
5116
      if (this._popper) {
XhmikosR's avatar
Dist    
XhmikosR committed
5117
        this._popper.destroy();
Mark Otto's avatar
dist  
Mark Otto committed
5118

XhmikosR's avatar
Dist    
XhmikosR committed
5119
5120
5121
        this._popper = null;
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5122

XhmikosR's avatar
Dist    
XhmikosR committed
5123
5124
    _proto.update = function update() {
      this._inNavbar = this._detectNavbar();
Mark Otto's avatar
dist    
Mark Otto committed
5125

XhmikosR's avatar
XhmikosR committed
5126
      if (this._popper) {
XhmikosR's avatar
Dist    
XhmikosR committed
5127
5128
        this._popper.scheduleUpdate();
      }
Mark Otto's avatar
Mark Otto committed
5129
5130
    } // Private
    ;
Mark Otto's avatar
dist    
Mark Otto committed
5131

XhmikosR's avatar
Dist    
XhmikosR committed
5132
5133
    _proto._addEventListeners = function _addEventListeners() {
      var _this = this;
Mark Otto's avatar
dist    
Mark Otto committed
5134

XhmikosR's avatar
XhmikosR committed
5135
      EventHandler.on(this._element, Event$5.CLICK, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5136
5137
        event.preventDefault();
        event.stopPropagation();
Mark Otto's avatar
dist  
Mark Otto committed
5138

XhmikosR's avatar
Dist    
XhmikosR committed
5139
5140
5141
        _this.toggle();
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5142

XhmikosR's avatar
Dist    
XhmikosR committed
5143
    _proto._getConfig = function _getConfig(config) {
5144
      config = _objectSpread2({}, this.constructor.Default, {}, Manipulator.getDataAttributes(this._element), {}, config);
XhmikosR's avatar
XhmikosR committed
5145
      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
XhmikosR's avatar
Dist    
XhmikosR committed
5146
5147
      return config;
    };
Mark Otto's avatar
dist    
Mark Otto committed
5148

XhmikosR's avatar
Dist    
XhmikosR committed
5149
    _proto._getMenuElement = function _getMenuElement() {
XhmikosR's avatar
XhmikosR committed
5150
      var parent = Dropdown.getParentFromElement(this._element);
5151
      return SelectorEngine.findOne(Selector$4.MENU, parent);
XhmikosR's avatar
Dist    
XhmikosR committed
5152
    };
Mark Otto's avatar
dist  
Mark Otto committed
5153

XhmikosR's avatar
Dist    
XhmikosR committed
5154
    _proto._getPlacement = function _getPlacement() {
XhmikosR's avatar
XhmikosR committed
5155
      var parentDropdown = this._element.parentNode;
XhmikosR's avatar
Dist    
XhmikosR committed
5156
      var placement = AttachmentMap.BOTTOM; // Handle dropup
Mark Otto's avatar
dist  
Mark Otto committed
5157

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5172
5173
      return placement;
    };
Mark Otto's avatar
dist    
Mark Otto committed
5174

XhmikosR's avatar
Dist    
XhmikosR committed
5175
    _proto._detectNavbar = function _detectNavbar() {
XhmikosR's avatar
XhmikosR committed
5176
      return Boolean(SelectorEngine.closest(this._element, '.navbar'));
XhmikosR's avatar
Dist    
XhmikosR committed
5177
    };
Mark Otto's avatar
dist    
Mark Otto committed
5178

Mark Otto's avatar
Mark Otto committed
5179
    _proto._getOffset = function _getOffset() {
XhmikosR's avatar
Dist    
XhmikosR committed
5180
      var _this2 = this;
Mark Otto's avatar
dist    
Mark Otto committed
5181

Mark Otto's avatar
Mark Otto committed
5182
      var offset = {};
Mark Otto's avatar
dist    
Mark Otto committed
5183

XhmikosR's avatar
Dist    
XhmikosR committed
5184
      if (typeof this._config.offset === 'function') {
Mark Otto's avatar
Mark Otto committed
5185
        offset.fn = function (data) {
5186
          data.offsets = _objectSpread2({}, data.offsets, {}, _this2._config.offset(data.offsets, _this2._element) || {});
XhmikosR's avatar
Dist    
XhmikosR committed
5187
5188
5189
          return data;
        };
      } else {
Mark Otto's avatar
Mark Otto committed
5190
        offset.offset = this._config.offset;
XhmikosR's avatar
Dist    
XhmikosR committed
5191
      }
Mark Otto's avatar
dist    
Mark Otto committed
5192

Mark Otto's avatar
Mark Otto committed
5193
5194
5195
5196
      return offset;
    };

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

XhmikosR's avatar
Dist    
XhmikosR committed
5209
      };
Mark Otto's avatar
dist    
Mark Otto committed
5210

XhmikosR's avatar
Dist    
XhmikosR committed
5211
5212
5213
5214
5215
      if (this._config.display === 'static') {
        popperConfig.modifiers.applyStyle = {
          enabled: false
        };
      }
Mark Otto's avatar
dist  
Mark Otto committed
5216

XhmikosR's avatar
XhmikosR committed
5217
      return _objectSpread2({}, popperConfig, {}, this._config.popperConfig);
Mark Otto's avatar
Mark Otto committed
5218
5219
    } // Static
    ;
Mark Otto's avatar
dist    
Mark Otto committed
5220

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

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

XhmikosR's avatar
XhmikosR committed
5226
5227
5228
5229
5230
5231
      if (!data) {
        data = new Dropdown(element, _config);
      }

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

XhmikosR's avatar
XhmikosR committed
5235
5236
5237
        data[config]();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
5238

XhmikosR's avatar
XhmikosR committed
5239
    Dropdown.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
XhmikosR committed
5240
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
5241
        Dropdown.dropdownInterface(this, config);
XhmikosR's avatar
Dist    
XhmikosR committed
5242
5243
5244
      });
    };

XhmikosR's avatar
XhmikosR committed
5245
    Dropdown.clearMenus = function clearMenus(event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5246
5247
5248
      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5249

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5259
5260
5261
        if (event && event.type === 'click') {
          relatedTarget.clickEvent = event;
        }
Mark Otto's avatar
dist  
Mark Otto committed
5262

XhmikosR's avatar
Dist    
XhmikosR committed
5263
5264
        if (!context) {
          continue;
Mark Otto's avatar
dist  
Mark Otto committed
5265
5266
        }

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

XhmikosR's avatar
XhmikosR committed
5269
        if (!parent.classList.contains(ClassName$4.SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5270
          continue;
Mark Otto's avatar
dist  
Mark Otto committed
5271
5272
        }

XhmikosR's avatar
XhmikosR committed
5273
        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
5274
5275
          continue;
        }
Mark Otto's avatar
dist  
Mark Otto committed
5276

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

XhmikosR's avatar
XhmikosR committed
5279
        if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5280
5281
5282
          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
5283
5284


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

XhmikosR's avatar
Dist    
XhmikosR committed
5291
        toggles[i].setAttribute('aria-expanded', 'false');
XhmikosR's avatar
XhmikosR committed
5292
5293
5294
5295
5296

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

XhmikosR's avatar
XhmikosR committed
5297
5298
5299
        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
5300
5301
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5302

XhmikosR's avatar
XhmikosR committed
5303
5304
    Dropdown.getParentFromElement = function getParentFromElement(element) {
      return getElementFromSelector(element) || element.parentNode;
XhmikosR's avatar
XhmikosR committed
5305
    };
Mark Otto's avatar
dist  
Mark Otto committed
5306

XhmikosR's avatar
XhmikosR committed
5307
    Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5308
5309
5310
5311
5312
5313
5314
      // 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
5315
      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
5316
5317
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5318

XhmikosR's avatar
Dist    
XhmikosR committed
5319
5320
      event.preventDefault();
      event.stopPropagation();
Mark Otto's avatar
dist  
Mark Otto committed
5321

XhmikosR's avatar
XhmikosR committed
5322
      if (this.disabled || this.classList.contains(ClassName$4.DISABLED)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5323
5324
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5325

XhmikosR's avatar
XhmikosR committed
5326
      var parent = Dropdown.getParentFromElement(this);
XhmikosR's avatar
XhmikosR committed
5327
      var isActive = parent.classList.contains(ClassName$4.SHOW);
XhmikosR's avatar
Dist    
XhmikosR committed
5328

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

XhmikosR's avatar
XhmikosR committed
5334
        Dropdown.clearMenus();
XhmikosR's avatar
Dist    
XhmikosR committed
5335
5336
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5337

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

XhmikosR's avatar
XhmikosR committed
5340
      if (!items.length) {
XhmikosR's avatar
Dist    
XhmikosR committed
5341
5342
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5343

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

XhmikosR's avatar
Dist    
XhmikosR committed
5346
5347
5348
5349
      if (event.which === ARROW_UP_KEYCODE && index > 0) {
        // Up
        index--;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5350

XhmikosR's avatar
Dist    
XhmikosR committed
5351
5352
5353
5354
      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
        // Down
        index++;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5355

XhmikosR's avatar
Dist    
XhmikosR committed
5356
5357
5358
      if (index < 0) {
        index = 0;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5359

XhmikosR's avatar
Dist    
XhmikosR committed
5360
      items[index].focus();
Mark Otto's avatar
dist  
Mark Otto committed
5361
5362
    };

XhmikosR's avatar
XhmikosR committed
5363
    Dropdown.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
5364
5365
5366
      return Data.getData(element, DATA_KEY$4);
    };

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


XhmikosR's avatar
XhmikosR committed
5393
5394
5395
5396
  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
5397
  EventHandler.on(document, Event$5.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5398
5399
    event.preventDefault();
    event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
5400
    Dropdown.dropdownInterface(this, 'toggle');
XhmikosR's avatar
XhmikosR committed
5401
5402
5403
  });
  EventHandler.on(document, Event$5.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
    return e.stopPropagation();
XhmikosR's avatar
Dist    
XhmikosR committed
5404
  });
XhmikosR's avatar
XhmikosR committed
5405
  var $$5 = getjQuery();
XhmikosR's avatar
Dist    
XhmikosR committed
5406
5407
5408
5409
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
5410
   * add .dropdown to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
5411
5412
   */

5413
5414
  /* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
5415
5416
5417
5418
  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
5419

XhmikosR's avatar
XhmikosR committed
5420
5421
5422
    $$5.fn[NAME$4].noConflict = function () {
      $$5.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
      return Dropdown.jQueryInterface;
XhmikosR's avatar
XhmikosR committed
5423
5424
    };
  }
Mark Otto's avatar
dist    
Mark Otto committed
5425

XhmikosR's avatar
Dist    
XhmikosR committed
5426
5427
5428
5429
5430
5431
5432
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME$5 = 'modal';
XhmikosR's avatar
XhmikosR committed
5433
  var VERSION$5 = '4.3.1';
XhmikosR's avatar
Dist    
XhmikosR committed
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
  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
5451
  var Event$6 = {
XhmikosR's avatar
Dist    
XhmikosR committed
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
    HIDE: "hide" + EVENT_KEY$5,
    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
5465
    SCROLLABLE: 'modal-dialog-scrollable',
XhmikosR's avatar
Dist    
XhmikosR committed
5466
5467
5468
5469
5470
5471
5472
5473
    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
    BACKDROP: 'modal-backdrop',
    OPEN: 'modal-open',
    FADE: 'fade',
    SHOW: 'show'
  };
  var Selector$5 = {
    DIALOG: '.modal-dialog',
Mark Otto's avatar
Mark Otto committed
5474
    MODAL_BODY: '.modal-body',
XhmikosR's avatar
Dist    
XhmikosR committed
5475
5476
5477
5478
    DATA_TOGGLE: '[data-toggle="modal"]',
    DATA_DISMISS: '[data-dismiss="modal"]',
    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
    STICKY_CONTENT: '.sticky-top'
Mark Otto's avatar
dist    
Mark Otto committed
5479
5480
    /**
     * ------------------------------------------------------------------------
XhmikosR's avatar
Dist    
XhmikosR committed
5481
     * Class Definition
Mark Otto's avatar
dist    
Mark Otto committed
5482
5483
     * ------------------------------------------------------------------------
     */
Mark Otto's avatar
dist    
Mark Otto committed
5484

XhmikosR's avatar
Dist    
XhmikosR committed
5485
  };
Mark Otto's avatar
dist  
Mark Otto committed
5486

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

XhmikosR's avatar
Dist    
XhmikosR committed
5511
5512
    _proto.show = function show(relatedTarget) {
      var _this = this;
Mark Otto's avatar
dist  
Mark Otto committed
5513

XhmikosR's avatar
Dist    
XhmikosR committed
5514
5515
5516
      if (this._isShown || this._isTransitioning) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5517

XhmikosR's avatar
XhmikosR committed
5518
      if (this._element.classList.contains(ClassName$5.FADE)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5519
5520
        this._isTransitioning = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5521

XhmikosR's avatar
XhmikosR committed
5522
      var showEvent = EventHandler.trigger(this._element, Event$6.SHOW, {
XhmikosR's avatar
Dist    
XhmikosR committed
5523
5524
        relatedTarget: relatedTarget
      });
Mark Otto's avatar
dist    
Mark Otto committed
5525

XhmikosR's avatar
XhmikosR committed
5526
      if (this._isShown || showEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5527
5528
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5529

XhmikosR's avatar
Dist    
XhmikosR committed
5530
      this._isShown = true;
Mark Otto's avatar
dist    
Mark Otto committed
5531

XhmikosR's avatar
Dist    
XhmikosR committed
5532
      this._checkScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
5533

XhmikosR's avatar
Dist    
XhmikosR committed
5534
      this._setScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
5535

XhmikosR's avatar
Dist    
XhmikosR committed
5536
      this._adjustDialog();
Mark Otto's avatar
dist  
Mark Otto committed
5537

XhmikosR's avatar
Dist    
XhmikosR committed
5538
      this._setEscapeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5539

XhmikosR's avatar
Dist    
XhmikosR committed
5540
      this._setResizeEvent();
Mark Otto's avatar
dist    
Mark Otto committed
5541

XhmikosR's avatar
XhmikosR committed
5542
      EventHandler.on(this._element, Event$6.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5543
5544
        return _this.hide(event);
      });
XhmikosR's avatar
XhmikosR committed
5545
5546
5547
      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
5548
5549
5550
5551
            _this._ignoreBackdropClick = true;
          }
        });
      });
Mark Otto's avatar
dist  
Mark Otto committed
5552

XhmikosR's avatar
Dist    
XhmikosR committed
5553
5554
5555
5556
      this._showBackdrop(function () {
        return _this._showElement(relatedTarget);
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5557

XhmikosR's avatar
Dist    
XhmikosR committed
5558
5559
    _proto.hide = function hide(event) {
      var _this2 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5560

XhmikosR's avatar
Dist    
XhmikosR committed
5561
5562
5563
      if (event) {
        event.preventDefault();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5564

XhmikosR's avatar
Dist    
XhmikosR committed
5565
5566
5567
      if (!this._isShown || this._isTransitioning) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5568

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

5571
      if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5572
5573
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5574

XhmikosR's avatar
Dist    
XhmikosR committed
5575
      this._isShown = false;
XhmikosR's avatar
XhmikosR committed
5576
5577

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

XhmikosR's avatar
Dist    
XhmikosR committed
5579
5580
5581
      if (transition) {
        this._isTransitioning = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5582

XhmikosR's avatar
Dist    
XhmikosR committed
5583
      this._setEscapeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5584

XhmikosR's avatar
Dist    
XhmikosR committed
5585
      this._setResizeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5586

XhmikosR's avatar
XhmikosR committed
5587
5588
5589
5590
5591
5592
      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
5593

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

XhmikosR's avatar
Dist    
XhmikosR committed
5605
5606
    _proto.dispose = function dispose() {
      [window, this._element, this._dialog].forEach(function (htmlElement) {
XhmikosR's avatar
XhmikosR committed
5607
        return EventHandler.off(htmlElement, EVENT_KEY$5);
XhmikosR's avatar
Dist    
XhmikosR committed
5608
5609
5610
5611
5612
5613
      });
      /**
       * `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
5614

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

XhmikosR's avatar
Dist    
XhmikosR committed
5628
5629
    _proto.handleUpdate = function handleUpdate() {
      this._adjustDialog();
Mark Otto's avatar
Mark Otto committed
5630
5631
    } // Private
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5632

XhmikosR's avatar
Dist    
XhmikosR committed
5633
    _proto._getConfig = function _getConfig(config) {
5634
      config = _objectSpread2({}, Default$3, {}, config);
XhmikosR's avatar
XhmikosR committed
5635
      typeCheckConfig(NAME$5, config, DefaultType$3);
XhmikosR's avatar
Dist    
XhmikosR committed
5636
5637
      return config;
    };
Mark Otto's avatar
dist  
Mark Otto committed
5638

XhmikosR's avatar
Dist    
XhmikosR committed
5639
5640
    _proto._showElement = function _showElement(relatedTarget) {
      var _this3 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5641

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5646
5647
5648
5649
      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
5650

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

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

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

XhmikosR's avatar
XhmikosR committed
5657
5658
      if (this._dialog.classList.contains(ClassName$5.SCROLLABLE) && modalBody) {
        modalBody.scrollTop = 0;
Mark Otto's avatar
Mark Otto committed
5659
5660
5661
      } else {
        this._element.scrollTop = 0;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5662

XhmikosR's avatar
Dist    
XhmikosR committed
5663
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5664
        reflow(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
5665
      }
Mark Otto's avatar
dist  
Mark Otto committed
5666

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

XhmikosR's avatar
Dist    
XhmikosR committed
5669
5670
5671
      if (this._config.focus) {
        this._enforceFocus();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5672

XhmikosR's avatar
Dist    
XhmikosR committed
5673
5674
5675
      var transitionComplete = function transitionComplete() {
        if (_this3._config.focus) {
          _this3._element.focus();
Mark Otto's avatar
dist    
Mark Otto committed
5676
        }
Mark Otto's avatar
dist  
Mark Otto committed
5677

XhmikosR's avatar
Dist    
XhmikosR committed
5678
        _this3._isTransitioning = false;
XhmikosR's avatar
XhmikosR committed
5679
5680
5681
        EventHandler.trigger(_this3._element, Event$6.SHOWN, {
          relatedTarget: relatedTarget
        });
XhmikosR's avatar
Dist    
XhmikosR committed
5682
      };
Mark Otto's avatar
dist  
Mark Otto committed
5683

XhmikosR's avatar
Dist    
XhmikosR committed
5684
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5685
5686
5687
        var transitionDuration = getTransitionDurationFromElement(this._dialog);
        EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
        emulateTransitionEnd(this._dialog, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5688
5689
5690
5691
      } else {
        transitionComplete();
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5692

XhmikosR's avatar
Dist    
XhmikosR committed
5693
5694
    _proto._enforceFocus = function _enforceFocus() {
      var _this4 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5695

XhmikosR's avatar
XhmikosR committed
5696
5697
5698
5699
      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
5700
          _this4._element.focus();
Mark Otto's avatar
dist  
Mark Otto committed
5701
        }
XhmikosR's avatar
Dist    
XhmikosR committed
5702
5703
      });
    };
Mark Otto's avatar
dist    
Mark Otto committed
5704

XhmikosR's avatar
Dist    
XhmikosR committed
5705
5706
5707
5708
    _proto._setEscapeEvent = function _setEscapeEvent() {
      var _this5 = this;

      if (this._isShown && this._config.keyboard) {
XhmikosR's avatar
XhmikosR committed
5709
        EventHandler.on(this._element, Event$6.KEYDOWN_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5710
5711
          if (event.which === ESCAPE_KEYCODE$1) {
            event.preventDefault();
Mark Otto's avatar
dist    
Mark Otto committed
5712

XhmikosR's avatar
Dist    
XhmikosR committed
5713
            _this5.hide();
Mark Otto's avatar
dist    
Mark Otto committed
5714
5715
          }
        });
5716
      } else {
XhmikosR's avatar
XhmikosR committed
5717
        EventHandler.off(this._element, Event$6.KEYDOWN_DISMISS);
XhmikosR's avatar
Dist    
XhmikosR committed
5718
5719
5720
5721
5722
      }
    };

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5733
5734
    _proto._hideModal = function _hideModal() {
      var _this7 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5735

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5742
      this._isTransitioning = false;
Mark Otto's avatar
dist    
Mark Otto committed
5743

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

XhmikosR's avatar
Dist    
XhmikosR committed
5747
        _this7._resetAdjustments();
Mark Otto's avatar
dist  
Mark Otto committed
5748

XhmikosR's avatar
Dist    
XhmikosR committed
5749
        _this7._resetScrollbar();
Mark Otto's avatar
dist  
Mark Otto committed
5750

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

XhmikosR's avatar
Dist    
XhmikosR committed
5755
    _proto._removeBackdrop = function _removeBackdrop() {
5756
      this._backdrop.parentNode.removeChild(this._backdrop);
XhmikosR's avatar
XhmikosR committed
5757

5758
      this._backdrop = null;
XhmikosR's avatar
Dist    
XhmikosR committed
5759
    };
Mark Otto's avatar
dist    
Mark Otto committed
5760

XhmikosR's avatar
Dist    
XhmikosR committed
5761
5762
    _proto._showBackdrop = function _showBackdrop(callback) {
      var _this8 = this;
Mark Otto's avatar
dist    
Mark Otto committed
5763

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

XhmikosR's avatar
Dist    
XhmikosR committed
5766
5767
5768
      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
5769

XhmikosR's avatar
Dist    
XhmikosR committed
5770
5771
        if (animate) {
          this._backdrop.classList.add(animate);
Mark Otto's avatar
dist    
Mark Otto committed
5772
        }
Mark Otto's avatar
dist    
Mark Otto committed
5773

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

XhmikosR's avatar
Dist    
XhmikosR committed
5781
5782
5783
          if (event.target !== event.currentTarget) {
            return;
          }
Mark Otto's avatar
dist  
Mark Otto committed
5784

XhmikosR's avatar
Dist    
XhmikosR committed
5785
5786
5787
5788
          if (_this8._config.backdrop === 'static') {
            _this8._element.focus();
          } else {
            _this8.hide();
Mark Otto's avatar
dist    
Mark Otto committed
5789
          }
XhmikosR's avatar
Dist    
XhmikosR committed
5790
        });
Mark Otto's avatar
dist  
Mark Otto committed
5791

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

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

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

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

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

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

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

XhmikosR's avatar
XhmikosR committed
5818
5819
          EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
          emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5820
5821
5822
        } else {
          callbackRemove();
        }
5823
      } else {
XhmikosR's avatar
Dist    
XhmikosR committed
5824
5825
        callback();
      }
Mark Otto's avatar
Mark Otto committed
5826
    } // ----------------------------------------------------------------------
XhmikosR's avatar
Dist    
XhmikosR committed
5827
5828
    // the following methods are used to handle overflowing modals
    // ----------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
5829
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5830

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

XhmikosR's avatar
Dist    
XhmikosR committed
5834
5835
5836
      if (!this._isBodyOverflowing && isModalOverflowing) {
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
      }
Mark Otto's avatar
dist  
Mark Otto committed
5837

XhmikosR's avatar
Dist    
XhmikosR committed
5838
5839
5840
5841
      if (this._isBodyOverflowing && !isModalOverflowing) {
        this._element.style.paddingRight = this._scrollbarWidth + "px";
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5842

XhmikosR's avatar
Dist    
XhmikosR committed
5843
5844
5845
5846
    _proto._resetAdjustments = function _resetAdjustments() {
      this._element.style.paddingLeft = '';
      this._element.style.paddingRight = '';
    };
Mark Otto's avatar
dist    
Mark Otto committed
5847

XhmikosR's avatar
Dist    
XhmikosR committed
5848
5849
5850
5851
5852
    _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
5853

XhmikosR's avatar
Dist    
XhmikosR committed
5854
5855
5856
5857
5858
5859
    _proto._setScrollbar = function _setScrollbar() {
      var _this9 = this;

      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
5860
5861
        // Adjust fixed content padding
        makeArray(SelectorEngine.find(Selector$5.FIXED_CONTENT)).forEach(function (element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5862
          var actualPadding = element.style.paddingRight;
XhmikosR's avatar
XhmikosR committed
5863
5864
5865
          var calculatedPadding = window.getComputedStyle(element)['padding-right'];
          Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
          element.style.paddingRight = parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px";
XhmikosR's avatar
Dist    
XhmikosR committed
5866
5867
        }); // Adjust sticky content margin

XhmikosR's avatar
XhmikosR committed
5868
        makeArray(SelectorEngine.find(Selector$5.STICKY_CONTENT)).forEach(function (element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5869
          var actualMargin = element.style.marginRight;
XhmikosR's avatar
XhmikosR committed
5870
5871
5872
          var calculatedMargin = window.getComputedStyle(element)['margin-right'];
          Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
          element.style.marginRight = parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px";
XhmikosR's avatar
Dist    
XhmikosR committed
5873
5874
5875
        }); // Adjust body padding

        var actualPadding = document.body.style.paddingRight;
XhmikosR's avatar
XhmikosR committed
5876
5877
5878
        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
5879
      }
XhmikosR's avatar
Dist    
XhmikosR committed
5880

XhmikosR's avatar
XhmikosR committed
5881
      document.body.classList.add(ClassName$5.OPEN);
XhmikosR's avatar
Dist    
XhmikosR committed
5882
    };
Mark Otto's avatar
dist    
Mark Otto committed
5883

XhmikosR's avatar
Dist    
XhmikosR committed
5884
5885
    _proto._resetScrollbar = function _resetScrollbar() {
      // Restore fixed content padding
XhmikosR's avatar
XhmikosR committed
5886
5887
      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
5888

XhmikosR's avatar
XhmikosR committed
5889
5890
5891
5892
5893
5894
5895
5896
        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
5897

XhmikosR's avatar
Dist    
XhmikosR committed
5898
        if (typeof margin !== 'undefined') {
XhmikosR's avatar
XhmikosR committed
5899
5900
          Manipulator.removeDataAttribute(element, 'margin-right');
          element.style.marginRight = margin;
Mark Otto's avatar
dist    
Mark Otto committed
5901
        }
XhmikosR's avatar
Dist    
XhmikosR committed
5902
      }); // Restore body padding
Mark Otto's avatar
dist  
Mark Otto committed
5903

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

XhmikosR's avatar
Dist.    
XhmikosR committed
5906
5907
5908
      if (typeof padding === 'undefined') {
        document.body.style.paddingRight = '';
      } else {
XhmikosR's avatar
XhmikosR committed
5909
5910
5911
        Manipulator.removeDataAttribute(document.body, 'padding-right');
        document.body.style.paddingRight = padding;
      }
XhmikosR's avatar
Dist    
XhmikosR committed
5912
    };
Mark Otto's avatar
dist  
Mark Otto committed
5913

XhmikosR's avatar
Dist    
XhmikosR committed
5914
5915
5916
5917
5918
5919
5920
5921
    _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
5922
5923
    } // Static
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5924

XhmikosR's avatar
XhmikosR committed
5925
    Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
XhmikosR's avatar
Dist    
XhmikosR committed
5926
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
5927
        var data = Data.getData(this, DATA_KEY$5);
Mark Otto's avatar
dist  
Mark Otto committed
5928

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

XhmikosR's avatar
Dist    
XhmikosR committed
5931
5932
5933
        if (!data) {
          data = new Modal(this, _config);
        }
Mark Otto's avatar
dist    
Mark Otto committed
5934

XhmikosR's avatar
Dist    
XhmikosR committed
5935
5936
5937
        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
            throw new TypeError("No method named \"" + config + "\"");
Mark Otto's avatar
dist    
Mark Otto committed
5938
          }
Mark Otto's avatar
dist  
Mark Otto committed
5939

XhmikosR's avatar
Dist    
XhmikosR committed
5940
5941
5942
5943
5944
5945
          data[config](relatedTarget);
        } else if (_config.show) {
          data.show(relatedTarget);
        }
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5946

XhmikosR's avatar
XhmikosR committed
5947
    Modal.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
5948
5949
5950
      return Data.getData(element, DATA_KEY$5);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
    _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
5962

XhmikosR's avatar
Dist    
XhmikosR committed
5963
5964
5965
5966
5967
5968
5969
    return Modal;
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
5970

Mark Otto's avatar
dist    
Mark Otto committed
5971

XhmikosR's avatar
XhmikosR committed
5972
  EventHandler.on(document, Event$6.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5973
    var _this10 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5974

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

XhmikosR's avatar
Dist    
XhmikosR committed
5977
5978
5979
    if (this.tagName === 'A' || this.tagName === 'AREA') {
      event.preventDefault();
    }
Mark Otto's avatar
dist  
Mark Otto committed
5980

XhmikosR's avatar
XhmikosR committed
5981
5982
5983
    EventHandler.one(target, Event$6.SHOW, function (showEvent) {
      if (showEvent.defaultPrevented) {
        // only register focus restorer if modal will actually get shown
XhmikosR's avatar
Dist    
XhmikosR committed
5984
        return;
Mark Otto's avatar
dist  
Mark Otto committed
5985
5986
      }

XhmikosR's avatar
XhmikosR committed
5987
5988
      EventHandler.one(target, Event$6.HIDDEN, function () {
        if (isVisible(_this10)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5989
          _this10.focus();
Mark Otto's avatar
dist  
Mark Otto committed
5990
        }
Mark Otto's avatar
dist    
Mark Otto committed
5991
5992
      });
    });
XhmikosR's avatar
XhmikosR committed
5993
5994
5995
    var data = Data.getData(target, DATA_KEY$5);

    if (!data) {
5996
5997
      var config = _objectSpread2({}, Manipulator.getDataAttributes(target), {}, Manipulator.getDataAttributes(this));

XhmikosR's avatar
XhmikosR committed
5998
5999
      data = new Modal(target, config);
    }
Mark Otto's avatar
dist    
Mark Otto committed
6000

For faster browsing, not all history is shown. View entire blame