bootstrap.bundle.js 243 KB
Newer Older
XhmikosR's avatar
Dist    
XhmikosR committed
5001
    _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
5002
      if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5003
5004
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5005

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

XhmikosR's avatar
XhmikosR committed
5008
      Dropdown.clearMenus();
Mark Otto's avatar
dist  
Mark Otto committed
5009

XhmikosR's avatar
Dist    
XhmikosR committed
5010
5011
5012
      if (isActive) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5013

XhmikosR's avatar
XhmikosR committed
5014
5015
5016
5017
5018
5019
5020
5021
5022
      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
5023
5024
5025
      var relatedTarget = {
        relatedTarget: this._element
      };
XhmikosR's avatar
XhmikosR committed
5026
      var showEvent = EventHandler.trigger(parent, Event$5.SHOW, relatedTarget);
Mark Otto's avatar
dist  
Mark Otto committed
5027

XhmikosR's avatar
XhmikosR committed
5028
      if (showEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5029
5030
        return;
      } // Disable totally Popper.js for Dropdown in Navbar
Mark Otto's avatar
dist    
Mark Otto committed
5031

Mark Otto's avatar
dist  
Mark Otto committed
5032

XhmikosR's avatar
Dist    
XhmikosR committed
5033
5034
      if (!this._inNavbar) {
        if (typeof Popper === 'undefined') {
XhmikosR's avatar
XhmikosR committed
5035
          throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)');
Mark Otto's avatar
dist    
Mark Otto committed
5036
        }
Mark Otto's avatar
dist  
Mark Otto committed
5037

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

XhmikosR's avatar
Dist    
XhmikosR committed
5040
5041
        if (this._config.reference === 'parent') {
          referenceElement = parent;
XhmikosR's avatar
XhmikosR committed
5042
        } else if (isElement(this._config.reference)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5043
          referenceElement = this._config.reference; // Check if it's jQuery element
Mark Otto's avatar
dist    
Mark Otto committed
5044

XhmikosR's avatar
Dist    
XhmikosR committed
5045
5046
          if (typeof this._config.reference.jquery !== 'undefined') {
            referenceElement = this._config.reference[0];
Mark Otto's avatar
dist    
Mark Otto committed
5047
          }
XhmikosR's avatar
Dist    
XhmikosR committed
5048
5049
5050
        } // 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
5051

Mark Otto's avatar
dist    
Mark Otto committed
5052

XhmikosR's avatar
Dist    
XhmikosR committed
5053
        if (this._config.boundary !== 'scrollParent') {
XhmikosR's avatar
XhmikosR committed
5054
          parent.classList.add(ClassName$4.POSITION_STATIC);
XhmikosR's avatar
Dist    
XhmikosR committed
5055
        }
Mark Otto's avatar
dist    
Mark Otto committed
5056

XhmikosR's avatar
Dist    
XhmikosR committed
5057
5058
5059
5060
5061
        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
5062

Mark Otto's avatar
dist    
Mark Otto committed
5063

XhmikosR's avatar
XhmikosR committed
5064
5065
5066
5067
      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
5068
      }
Mark Otto's avatar
dist    
Mark Otto committed
5069

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

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

XhmikosR's avatar
XhmikosR committed
5074
5075
5076
      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
5077
    };
Mark Otto's avatar
dist    
Mark Otto committed
5078

XhmikosR's avatar
Dist    
XhmikosR committed
5079
    _proto.hide = function hide() {
XhmikosR's avatar
XhmikosR committed
5080
      if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED) || !this._menu.classList.contains(ClassName$4.SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5081
5082
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5083

XhmikosR's avatar
XhmikosR committed
5084
      var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
5085
5086
5087
      var relatedTarget = {
        relatedTarget: this._element
      };
XhmikosR's avatar
XhmikosR committed
5088
      var hideEvent = EventHandler.trigger(parent, Event$5.HIDE, relatedTarget);
Mark Otto's avatar
dist    
Mark Otto committed
5089

XhmikosR's avatar
XhmikosR committed
5090
      if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5091
5092
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5093

XhmikosR's avatar
XhmikosR committed
5094
5095
5096
5097
      if (this._popper) {
        this._popper.destroy();
      }

XhmikosR's avatar
XhmikosR committed
5098
5099
5100
      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
5101
    };
Mark Otto's avatar
dist  
Mark Otto committed
5102

XhmikosR's avatar
Dist    
XhmikosR committed
5103
    _proto.dispose = function dispose() {
XhmikosR's avatar
XhmikosR committed
5104
5105
      Data.removeData(this._element, DATA_KEY$4);
      EventHandler.off(this._element, EVENT_KEY$4);
XhmikosR's avatar
Dist    
XhmikosR committed
5106
5107
      this._element = null;
      this._menu = null;
Mark Otto's avatar
dist    
Mark Otto committed
5108

XhmikosR's avatar
XhmikosR committed
5109
      if (this._popper) {
XhmikosR's avatar
Dist    
XhmikosR committed
5110
        this._popper.destroy();
Mark Otto's avatar
dist  
Mark Otto committed
5111

XhmikosR's avatar
Dist    
XhmikosR committed
5112
5113
5114
        this._popper = null;
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5115

XhmikosR's avatar
Dist    
XhmikosR committed
5116
5117
    _proto.update = function update() {
      this._inNavbar = this._detectNavbar();
Mark Otto's avatar
dist    
Mark Otto committed
5118

XhmikosR's avatar
XhmikosR committed
5119
      if (this._popper) {
XhmikosR's avatar
Dist    
XhmikosR committed
5120
5121
        this._popper.scheduleUpdate();
      }
Mark Otto's avatar
Mark Otto committed
5122
5123
    } // Private
    ;
Mark Otto's avatar
dist    
Mark Otto committed
5124

XhmikosR's avatar
Dist    
XhmikosR committed
5125
5126
    _proto._addEventListeners = function _addEventListeners() {
      var _this = this;
Mark Otto's avatar
dist    
Mark Otto committed
5127

XhmikosR's avatar
XhmikosR committed
5128
      EventHandler.on(this._element, Event$5.CLICK, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5129
5130
        event.preventDefault();
        event.stopPropagation();
Mark Otto's avatar
dist  
Mark Otto committed
5131

XhmikosR's avatar
Dist    
XhmikosR committed
5132
5133
5134
        _this.toggle();
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5135

XhmikosR's avatar
Dist    
XhmikosR committed
5136
    _proto._getConfig = function _getConfig(config) {
5137
      config = _objectSpread2({}, this.constructor.Default, {}, Manipulator.getDataAttributes(this._element), {}, config);
XhmikosR's avatar
XhmikosR committed
5138
      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
XhmikosR's avatar
Dist    
XhmikosR committed
5139
5140
      return config;
    };
Mark Otto's avatar
dist    
Mark Otto committed
5141

XhmikosR's avatar
Dist    
XhmikosR committed
5142
    _proto._getMenuElement = function _getMenuElement() {
XhmikosR's avatar
XhmikosR committed
5143
      var parent = Dropdown.getParentFromElement(this._element);
5144
      return SelectorEngine.findOne(Selector$4.MENU, parent);
XhmikosR's avatar
Dist    
XhmikosR committed
5145
    };
Mark Otto's avatar
dist  
Mark Otto committed
5146

XhmikosR's avatar
Dist    
XhmikosR committed
5147
    _proto._getPlacement = function _getPlacement() {
XhmikosR's avatar
XhmikosR committed
5148
      var parentDropdown = this._element.parentNode;
XhmikosR's avatar
Dist    
XhmikosR committed
5149
      var placement = AttachmentMap.BOTTOM; // Handle dropup
Mark Otto's avatar
dist  
Mark Otto committed
5150

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

XhmikosR's avatar
XhmikosR committed
5154
        if (this._menu.classList.contains(ClassName$4.MENURIGHT)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5155
5156
          placement = AttachmentMap.TOPEND;
        }
XhmikosR's avatar
XhmikosR committed
5157
      } else if (parentDropdown.classList.contains(ClassName$4.DROPRIGHT)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5158
        placement = AttachmentMap.RIGHT;
XhmikosR's avatar
XhmikosR committed
5159
      } else if (parentDropdown.classList.contains(ClassName$4.DROPLEFT)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5160
        placement = AttachmentMap.LEFT;
XhmikosR's avatar
XhmikosR committed
5161
      } else if (this._menu.classList.contains(ClassName$4.MENURIGHT)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5162
5163
        placement = AttachmentMap.BOTTOMEND;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5164

XhmikosR's avatar
Dist    
XhmikosR committed
5165
5166
      return placement;
    };
Mark Otto's avatar
dist    
Mark Otto committed
5167

XhmikosR's avatar
Dist    
XhmikosR committed
5168
    _proto._detectNavbar = function _detectNavbar() {
XhmikosR's avatar
XhmikosR committed
5169
      return Boolean(SelectorEngine.closest(this._element, '.navbar'));
XhmikosR's avatar
Dist    
XhmikosR committed
5170
    };
Mark Otto's avatar
dist    
Mark Otto committed
5171

Mark Otto's avatar
Mark Otto committed
5172
    _proto._getOffset = function _getOffset() {
XhmikosR's avatar
Dist    
XhmikosR committed
5173
      var _this2 = this;
Mark Otto's avatar
dist    
Mark Otto committed
5174

Mark Otto's avatar
Mark Otto committed
5175
      var offset = {};
Mark Otto's avatar
dist    
Mark Otto committed
5176

XhmikosR's avatar
Dist    
XhmikosR committed
5177
      if (typeof this._config.offset === 'function') {
Mark Otto's avatar
Mark Otto committed
5178
        offset.fn = function (data) {
5179
          data.offsets = _objectSpread2({}, data.offsets, {}, _this2._config.offset(data.offsets, _this2._element) || {});
XhmikosR's avatar
Dist    
XhmikosR committed
5180
5181
5182
          return data;
        };
      } else {
Mark Otto's avatar
Mark Otto committed
5183
        offset.offset = this._config.offset;
XhmikosR's avatar
Dist    
XhmikosR committed
5184
      }
Mark Otto's avatar
dist    
Mark Otto committed
5185

Mark Otto's avatar
Mark Otto committed
5186
5187
5188
5189
      return offset;
    };

    _proto._getPopperConfig = function _getPopperConfig() {
XhmikosR's avatar
Dist    
XhmikosR committed
5190
5191
5192
      var popperConfig = {
        placement: this._getPlacement(),
        modifiers: {
Mark Otto's avatar
Mark Otto committed
5193
          offset: this._getOffset(),
XhmikosR's avatar
Dist    
XhmikosR committed
5194
5195
5196
5197
5198
          flip: {
            enabled: this._config.flip
          },
          preventOverflow: {
            boundariesElement: this._config.boundary
Mark Otto's avatar
dist    
Mark Otto committed
5199
          }
XhmikosR's avatar
XhmikosR committed
5200
5201
        }
      }; // Disable Popper.js if we have a static display
Mark Otto's avatar
dist    
Mark Otto committed
5202

XhmikosR's avatar
Dist    
XhmikosR committed
5203
5204
5205
5206
5207
      if (this._config.display === 'static') {
        popperConfig.modifiers.applyStyle = {
          enabled: false
        };
      }
Mark Otto's avatar
dist  
Mark Otto committed
5208

XhmikosR's avatar
XhmikosR committed
5209
      return _objectSpread2({}, popperConfig, {}, this._config.popperConfig);
Mark Otto's avatar
Mark Otto committed
5210
5211
    } // Static
    ;
Mark Otto's avatar
dist    
Mark Otto committed
5212

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

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

XhmikosR's avatar
XhmikosR committed
5218
5219
5220
5221
5222
5223
      if (!data) {
        data = new Dropdown(element, _config);
      }

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

XhmikosR's avatar
XhmikosR committed
5227
5228
5229
        data[config]();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
5230

XhmikosR's avatar
XhmikosR committed
5231
    Dropdown.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
XhmikosR committed
5232
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
5233
        Dropdown.dropdownInterface(this, config);
XhmikosR's avatar
Dist    
XhmikosR committed
5234
5235
5236
      });
    };

XhmikosR's avatar
XhmikosR committed
5237
    Dropdown.clearMenus = function clearMenus(event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5238
5239
5240
      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5241

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

XhmikosR's avatar
Dist    
XhmikosR committed
5244
      for (var i = 0, len = toggles.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
5245
        var parent = Dropdown.getParentFromElement(toggles[i]);
XhmikosR's avatar
XhmikosR committed
5246
        var context = Data.getData(toggles[i], DATA_KEY$4);
XhmikosR's avatar
Dist    
XhmikosR committed
5247
5248
5249
        var relatedTarget = {
          relatedTarget: toggles[i]
        };
Mark Otto's avatar
dist    
Mark Otto committed
5250

XhmikosR's avatar
Dist    
XhmikosR committed
5251
5252
5253
        if (event && event.type === 'click') {
          relatedTarget.clickEvent = event;
        }
Mark Otto's avatar
dist  
Mark Otto committed
5254

XhmikosR's avatar
Dist    
XhmikosR committed
5255
5256
        if (!context) {
          continue;
Mark Otto's avatar
dist  
Mark Otto committed
5257
5258
        }

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

XhmikosR's avatar
XhmikosR committed
5261
        if (!parent.classList.contains(ClassName$4.SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5262
          continue;
Mark Otto's avatar
dist  
Mark Otto committed
5263
5264
        }

XhmikosR's avatar
XhmikosR committed
5265
        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
5266
5267
          continue;
        }
Mark Otto's avatar
dist  
Mark Otto committed
5268

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

XhmikosR's avatar
XhmikosR committed
5271
        if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5272
5273
5274
          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
5275
5276


XhmikosR's avatar
Dist    
XhmikosR committed
5277
        if ('ontouchstart' in document.documentElement) {
XhmikosR's avatar
XhmikosR committed
5278
5279
5280
          makeArray(document.body.children).forEach(function (elem) {
            return EventHandler.off(elem, 'mouseover', null, noop());
          });
Mark Otto's avatar
dist  
Mark Otto committed
5281
5282
        }

XhmikosR's avatar
Dist    
XhmikosR committed
5283
        toggles[i].setAttribute('aria-expanded', 'false');
XhmikosR's avatar
XhmikosR committed
5284
5285
5286
5287
5288

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

XhmikosR's avatar
XhmikosR committed
5289
5290
5291
        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
5292
5293
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5294

XhmikosR's avatar
XhmikosR committed
5295
5296
    Dropdown.getParentFromElement = function getParentFromElement(element) {
      return getElementFromSelector(element) || element.parentNode;
XhmikosR's avatar
XhmikosR committed
5297
    };
Mark Otto's avatar
dist  
Mark Otto committed
5298

XhmikosR's avatar
XhmikosR committed
5299
    Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5300
5301
5302
5303
5304
5305
5306
      // 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
5307
      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
5308
5309
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5310

XhmikosR's avatar
Dist    
XhmikosR committed
5311
5312
      event.preventDefault();
      event.stopPropagation();
Mark Otto's avatar
dist  
Mark Otto committed
5313

XhmikosR's avatar
XhmikosR committed
5314
      if (this.disabled || this.classList.contains(ClassName$4.DISABLED)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5315
5316
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5317

XhmikosR's avatar
XhmikosR committed
5318
      var parent = Dropdown.getParentFromElement(this);
XhmikosR's avatar
XhmikosR committed
5319
      var isActive = parent.classList.contains(ClassName$4.SHOW);
XhmikosR's avatar
Dist    
XhmikosR committed
5320

Mark Otto's avatar
dist    
Mark Otto committed
5321
      if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5322
        if (event.which === ESCAPE_KEYCODE) {
Mark Otto's avatar
dist v5    
Mark Otto committed
5323
          SelectorEngine.findOne(Selector$4.DATA_TOGGLE, parent).focus();
Mark Otto's avatar
dist  
Mark Otto committed
5324
5325
        }

XhmikosR's avatar
XhmikosR committed
5326
        Dropdown.clearMenus();
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 items = makeArray(SelectorEngine.find(Selector$4.VISIBLE_ITEMS, parent));
Mark Otto's avatar
dist  
Mark Otto committed
5331

XhmikosR's avatar
XhmikosR committed
5332
      if (!items.length) {
XhmikosR's avatar
Dist    
XhmikosR committed
5333
5334
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5335

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

XhmikosR's avatar
Dist    
XhmikosR committed
5338
5339
5340
5341
      if (event.which === ARROW_UP_KEYCODE && index > 0) {
        // Up
        index--;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5342

XhmikosR's avatar
Dist    
XhmikosR committed
5343
5344
5345
5346
      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
        // Down
        index++;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5347

XhmikosR's avatar
Dist    
XhmikosR committed
5348
5349
5350
      if (index < 0) {
        index = 0;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5351

XhmikosR's avatar
Dist    
XhmikosR committed
5352
      items[index].focus();
Mark Otto's avatar
dist  
Mark Otto committed
5353
5354
    };

XhmikosR's avatar
XhmikosR committed
5355
    Dropdown.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
5356
5357
5358
      return Data.getData(element, DATA_KEY$4);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
    _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
5376
    return Dropdown;
XhmikosR's avatar
Dist    
XhmikosR committed
5377
5378
5379
5380
5381
5382
5383
5384
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */


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

5405
5406
  /* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
5407
5408
5409
5410
  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
5411

XhmikosR's avatar
XhmikosR committed
5412
5413
5414
    $$5.fn[NAME$4].noConflict = function () {
      $$5.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
      return Dropdown.jQueryInterface;
XhmikosR's avatar
XhmikosR committed
5415
5416
    };
  }
Mark Otto's avatar
dist    
Mark Otto committed
5417

XhmikosR's avatar
Dist    
XhmikosR committed
5418
5419
5420
5421
5422
5423
5424
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME$5 = 'modal';
XhmikosR's avatar
XhmikosR committed
5425
  var VERSION$5 = '4.3.1';
XhmikosR's avatar
Dist    
XhmikosR committed
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
  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
5443
  var Event$6 = {
XhmikosR's avatar
Dist    
XhmikosR committed
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
    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
5457
    SCROLLABLE: 'modal-dialog-scrollable',
XhmikosR's avatar
Dist    
XhmikosR committed
5458
5459
5460
5461
5462
5463
5464
5465
    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
5466
    MODAL_BODY: '.modal-body',
XhmikosR's avatar
Dist    
XhmikosR committed
5467
5468
5469
5470
5471
    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
5472
5473
5474
5475
5476
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
5477

XhmikosR's avatar
Dist    
XhmikosR committed
5478
5479
5480
5481
5482
5483
  var Modal =
  /*#__PURE__*/
  function () {
    function Modal(element, config) {
      this._config = this._getConfig(config);
      this._element = element;
XhmikosR's avatar
XhmikosR committed
5484
      this._dialog = SelectorEngine.findOne(Selector$5.DIALOG, element);
XhmikosR's avatar
Dist    
XhmikosR committed
5485
5486
5487
5488
5489
5490
      this._backdrop = null;
      this._isShown = false;
      this._isBodyOverflowing = false;
      this._ignoreBackdropClick = false;
      this._isTransitioning = false;
      this._scrollbarWidth = 0;
XhmikosR's avatar
XhmikosR committed
5491
      Data.setData(element, DATA_KEY$5, this);
XhmikosR's avatar
Dist    
XhmikosR committed
5492
5493
5494
5495
5496
5497
5498
5499
    } // 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
5500
5501
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5502
5503
    _proto.show = function show(relatedTarget) {
      var _this = this;
Mark Otto's avatar
dist  
Mark Otto committed
5504

XhmikosR's avatar
Dist    
XhmikosR committed
5505
5506
5507
      if (this._isShown || this._isTransitioning) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5508

XhmikosR's avatar
XhmikosR committed
5509
      if (this._element.classList.contains(ClassName$5.FADE)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5510
5511
        this._isTransitioning = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5512

XhmikosR's avatar
XhmikosR committed
5513
      var showEvent = EventHandler.trigger(this._element, Event$6.SHOW, {
XhmikosR's avatar
Dist    
XhmikosR committed
5514
5515
        relatedTarget: relatedTarget
      });
Mark Otto's avatar
dist    
Mark Otto committed
5516

XhmikosR's avatar
XhmikosR committed
5517
      if (this._isShown || showEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5518
5519
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5520

XhmikosR's avatar
Dist    
XhmikosR committed
5521
      this._isShown = true;
Mark Otto's avatar
dist    
Mark Otto committed
5522

XhmikosR's avatar
Dist    
XhmikosR committed
5523
      this._checkScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
5524

XhmikosR's avatar
Dist    
XhmikosR committed
5525
      this._setScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
5526

XhmikosR's avatar
Dist    
XhmikosR committed
5527
      this._adjustDialog();
Mark Otto's avatar
dist  
Mark Otto committed
5528

XhmikosR's avatar
Dist    
XhmikosR committed
5529
      this._setEscapeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5530

XhmikosR's avatar
Dist    
XhmikosR committed
5531
      this._setResizeEvent();
Mark Otto's avatar
dist    
Mark Otto committed
5532

XhmikosR's avatar
XhmikosR committed
5533
      EventHandler.on(this._element, Event$6.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5534
5535
        return _this.hide(event);
      });
XhmikosR's avatar
XhmikosR committed
5536
5537
5538
      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
5539
5540
5541
5542
            _this._ignoreBackdropClick = true;
          }
        });
      });
Mark Otto's avatar
dist  
Mark Otto committed
5543

XhmikosR's avatar
Dist    
XhmikosR committed
5544
5545
5546
5547
      this._showBackdrop(function () {
        return _this._showElement(relatedTarget);
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5548

XhmikosR's avatar
Dist    
XhmikosR committed
5549
5550
    _proto.hide = function hide(event) {
      var _this2 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5551

XhmikosR's avatar
Dist    
XhmikosR committed
5552
5553
5554
      if (event) {
        event.preventDefault();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5555

XhmikosR's avatar
Dist    
XhmikosR committed
5556
5557
5558
      if (!this._isShown || this._isTransitioning) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5559

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

5562
      if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
5563
5564
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5565

XhmikosR's avatar
Dist    
XhmikosR committed
5566
      this._isShown = false;
XhmikosR's avatar
XhmikosR committed
5567
5568

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

XhmikosR's avatar
Dist    
XhmikosR committed
5570
5571
5572
      if (transition) {
        this._isTransitioning = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5573

XhmikosR's avatar
Dist    
XhmikosR committed
5574
      this._setEscapeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5575

XhmikosR's avatar
Dist    
XhmikosR committed
5576
      this._setResizeEvent();
Mark Otto's avatar
dist  
Mark Otto committed
5577

XhmikosR's avatar
XhmikosR committed
5578
5579
5580
5581
5582
5583
      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
5584

XhmikosR's avatar
Dist    
XhmikosR committed
5585
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5586
5587
        var transitionDuration = getTransitionDurationFromElement(this._element);
        EventHandler.one(this._element, TRANSITION_END, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5588
          return _this2._hideModal(event);
XhmikosR's avatar
XhmikosR committed
5589
5590
        });
        emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5591
5592
5593
5594
      } else {
        this._hideModal();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
5595

XhmikosR's avatar
Dist    
XhmikosR committed
5596
5597
    _proto.dispose = function dispose() {
      [window, this._element, this._dialog].forEach(function (htmlElement) {
XhmikosR's avatar
XhmikosR committed
5598
        return EventHandler.off(htmlElement, EVENT_KEY$5);
XhmikosR's avatar
Dist    
XhmikosR committed
5599
5600
5601
5602
5603
5604
      });
      /**
       * `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
5605

XhmikosR's avatar
XhmikosR committed
5606
5607
      EventHandler.off(document, Event$6.FOCUSIN);
      Data.removeData(this._element, DATA_KEY$5);
XhmikosR's avatar
Dist    
XhmikosR committed
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
      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
5618

XhmikosR's avatar
Dist    
XhmikosR committed
5619
5620
    _proto.handleUpdate = function handleUpdate() {
      this._adjustDialog();
Mark Otto's avatar
Mark Otto committed
5621
5622
    } // Private
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5623

XhmikosR's avatar
Dist    
XhmikosR committed
5624
    _proto._getConfig = function _getConfig(config) {
5625
      config = _objectSpread2({}, Default$3, {}, config);
XhmikosR's avatar
XhmikosR committed
5626
      typeCheckConfig(NAME$5, config, DefaultType$3);
XhmikosR's avatar
Dist    
XhmikosR committed
5627
5628
      return config;
    };
Mark Otto's avatar
dist  
Mark Otto committed
5629

XhmikosR's avatar
Dist    
XhmikosR committed
5630
5631
    _proto._showElement = function _showElement(relatedTarget) {
      var _this3 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5632

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5637
5638
5639
5640
      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
5641

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

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

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

XhmikosR's avatar
XhmikosR committed
5648
5649
      if (this._dialog.classList.contains(ClassName$5.SCROLLABLE) && modalBody) {
        modalBody.scrollTop = 0;
Mark Otto's avatar
Mark Otto committed
5650
5651
5652
      } else {
        this._element.scrollTop = 0;
      }
Mark Otto's avatar
dist  
Mark Otto committed
5653

XhmikosR's avatar
Dist    
XhmikosR committed
5654
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5655
        reflow(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
5656
      }
Mark Otto's avatar
dist  
Mark Otto committed
5657

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

XhmikosR's avatar
Dist    
XhmikosR committed
5660
5661
5662
      if (this._config.focus) {
        this._enforceFocus();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5663

XhmikosR's avatar
Dist    
XhmikosR committed
5664
5665
5666
      var transitionComplete = function transitionComplete() {
        if (_this3._config.focus) {
          _this3._element.focus();
Mark Otto's avatar
dist    
Mark Otto committed
5667
        }
Mark Otto's avatar
dist  
Mark Otto committed
5668

XhmikosR's avatar
Dist    
XhmikosR committed
5669
        _this3._isTransitioning = false;
XhmikosR's avatar
XhmikosR committed
5670
5671
5672
        EventHandler.trigger(_this3._element, Event$6.SHOWN, {
          relatedTarget: relatedTarget
        });
XhmikosR's avatar
Dist    
XhmikosR committed
5673
      };
Mark Otto's avatar
dist  
Mark Otto committed
5674

XhmikosR's avatar
Dist    
XhmikosR committed
5675
      if (transition) {
XhmikosR's avatar
XhmikosR committed
5676
5677
5678
        var transitionDuration = getTransitionDurationFromElement(this._dialog);
        EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
        emulateTransitionEnd(this._dialog, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5679
5680
5681
5682
      } else {
        transitionComplete();
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5683

XhmikosR's avatar
Dist    
XhmikosR committed
5684
5685
    _proto._enforceFocus = function _enforceFocus() {
      var _this4 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5686

XhmikosR's avatar
XhmikosR committed
5687
5688
5689
5690
      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
5691
          _this4._element.focus();
Mark Otto's avatar
dist  
Mark Otto committed
5692
        }
XhmikosR's avatar
Dist    
XhmikosR committed
5693
5694
      });
    };
Mark Otto's avatar
dist    
Mark Otto committed
5695

XhmikosR's avatar
Dist    
XhmikosR committed
5696
5697
5698
5699
    _proto._setEscapeEvent = function _setEscapeEvent() {
      var _this5 = this;

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

XhmikosR's avatar
Dist    
XhmikosR committed
5704
            _this5.hide();
Mark Otto's avatar
dist    
Mark Otto committed
5705
5706
          }
        });
5707
      } else {
XhmikosR's avatar
XhmikosR committed
5708
        EventHandler.off(this._element, Event$6.KEYDOWN_DISMISS);
XhmikosR's avatar
Dist    
XhmikosR committed
5709
5710
5711
5712
5713
      }
    };

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

XhmikosR's avatar
Dist    
XhmikosR committed
5715
      if (this._isShown) {
5716
5717
        EventHandler.on(window, Event$6.RESIZE, function () {
          return _this6._adjustDialog();
XhmikosR's avatar
Dist    
XhmikosR committed
5718
5719
        });
      } else {
XhmikosR's avatar
XhmikosR committed
5720
        EventHandler.off(window, Event$6.RESIZE);
XhmikosR's avatar
Dist    
XhmikosR committed
5721
5722
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5723

XhmikosR's avatar
Dist    
XhmikosR committed
5724
5725
    _proto._hideModal = function _hideModal() {
      var _this7 = this;
Mark Otto's avatar
dist  
Mark Otto committed
5726

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5733
      this._isTransitioning = false;
Mark Otto's avatar
dist    
Mark Otto committed
5734

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

XhmikosR's avatar
Dist    
XhmikosR committed
5738
        _this7._resetAdjustments();
Mark Otto's avatar
dist  
Mark Otto committed
5739

XhmikosR's avatar
Dist    
XhmikosR committed
5740
        _this7._resetScrollbar();
Mark Otto's avatar
dist  
Mark Otto committed
5741

XhmikosR's avatar
XhmikosR committed
5742
        EventHandler.trigger(_this7._element, Event$6.HIDDEN);
XhmikosR's avatar
Dist    
XhmikosR committed
5743
5744
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5745

XhmikosR's avatar
Dist    
XhmikosR committed
5746
    _proto._removeBackdrop = function _removeBackdrop() {
5747
      this._backdrop.parentNode.removeChild(this._backdrop);
XhmikosR's avatar
XhmikosR committed
5748

5749
      this._backdrop = null;
XhmikosR's avatar
Dist    
XhmikosR committed
5750
    };
Mark Otto's avatar
dist    
Mark Otto committed
5751

XhmikosR's avatar
Dist    
XhmikosR committed
5752
5753
    _proto._showBackdrop = function _showBackdrop(callback) {
      var _this8 = this;
Mark Otto's avatar
dist    
Mark Otto committed
5754

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

XhmikosR's avatar
Dist    
XhmikosR committed
5757
5758
5759
      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
5760

XhmikosR's avatar
Dist    
XhmikosR committed
5761
5762
        if (animate) {
          this._backdrop.classList.add(animate);
Mark Otto's avatar
dist    
Mark Otto committed
5763
        }
Mark Otto's avatar
dist    
Mark Otto committed
5764

XhmikosR's avatar
XhmikosR committed
5765
5766
        document.body.appendChild(this._backdrop);
        EventHandler.on(this._element, Event$6.CLICK_DISMISS, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
5767
5768
5769
5770
          if (_this8._ignoreBackdropClick) {
            _this8._ignoreBackdropClick = false;
            return;
          }
Mark Otto's avatar
dist  
Mark Otto committed
5771

XhmikosR's avatar
Dist    
XhmikosR committed
5772
5773
5774
          if (event.target !== event.currentTarget) {
            return;
          }
Mark Otto's avatar
dist  
Mark Otto committed
5775

XhmikosR's avatar
Dist    
XhmikosR committed
5776
5777
5778
5779
          if (_this8._config.backdrop === 'static') {
            _this8._element.focus();
          } else {
            _this8.hide();
Mark Otto's avatar
dist    
Mark Otto committed
5780
          }
XhmikosR's avatar
Dist    
XhmikosR committed
5781
        });
Mark Otto's avatar
dist  
Mark Otto committed
5782

XhmikosR's avatar
Dist    
XhmikosR committed
5783
        if (animate) {
XhmikosR's avatar
XhmikosR committed
5784
          reflow(this._backdrop);
XhmikosR's avatar
Dist    
XhmikosR committed
5785
        }
Mark Otto's avatar
dist  
Mark Otto committed
5786

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

XhmikosR's avatar
Dist    
XhmikosR committed
5789
5790
5791
5792
        if (!animate) {
          callback();
          return;
        }
Mark Otto's avatar
dist    
Mark Otto committed
5793

XhmikosR's avatar
XhmikosR committed
5794
5795
5796
        var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
        EventHandler.one(this._backdrop, TRANSITION_END, callback);
        emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5797
      } else if (!this._isShown && this._backdrop) {
XhmikosR's avatar
XhmikosR committed
5798
        this._backdrop.classList.remove(ClassName$5.SHOW);
Mark Otto's avatar
dist    
Mark Otto committed
5799

XhmikosR's avatar
Dist    
XhmikosR committed
5800
5801
        var callbackRemove = function callbackRemove() {
          _this8._removeBackdrop();
Mark Otto's avatar
dist    
Mark Otto committed
5802

5803
          callback();
XhmikosR's avatar
Dist    
XhmikosR committed
5804
        };
Mark Otto's avatar
dist  
Mark Otto committed
5805

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

XhmikosR's avatar
XhmikosR committed
5809
5810
          EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
          emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
5811
5812
5813
        } else {
          callbackRemove();
        }
5814
      } else {
XhmikosR's avatar
Dist    
XhmikosR committed
5815
5816
        callback();
      }
Mark Otto's avatar
Mark Otto committed
5817
    } // ----------------------------------------------------------------------
XhmikosR's avatar
Dist    
XhmikosR committed
5818
5819
    // the following methods are used to handle overflowing modals
    // ----------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
5820
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5821

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

XhmikosR's avatar
Dist    
XhmikosR committed
5825
5826
5827
      if (!this._isBodyOverflowing && isModalOverflowing) {
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
      }
Mark Otto's avatar
dist  
Mark Otto committed
5828

XhmikosR's avatar
Dist    
XhmikosR committed
5829
5830
5831
5832
      if (this._isBodyOverflowing && !isModalOverflowing) {
        this._element.style.paddingRight = this._scrollbarWidth + "px";
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
5833

XhmikosR's avatar
Dist    
XhmikosR committed
5834
5835
5836
5837
    _proto._resetAdjustments = function _resetAdjustments() {
      this._element.style.paddingLeft = '';
      this._element.style.paddingRight = '';
    };
Mark Otto's avatar
dist    
Mark Otto committed
5838

XhmikosR's avatar
Dist    
XhmikosR committed
5839
5840
5841
5842
5843
    _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
5844

XhmikosR's avatar
Dist    
XhmikosR committed
5845
5846
5847
5848
5849
5850
    _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
5851
5852
        // Adjust fixed content padding
        makeArray(SelectorEngine.find(Selector$5.FIXED_CONTENT)).forEach(function (element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5853
          var actualPadding = element.style.paddingRight;
XhmikosR's avatar
XhmikosR committed
5854
5855
5856
          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
5857
5858
        }); // Adjust sticky content margin

XhmikosR's avatar
XhmikosR committed
5859
        makeArray(SelectorEngine.find(Selector$5.STICKY_CONTENT)).forEach(function (element) {
XhmikosR's avatar
Dist    
XhmikosR committed
5860
          var actualMargin = element.style.marginRight;
XhmikosR's avatar
XhmikosR committed
5861
5862
5863
          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
5864
5865
5866
        }); // Adjust body padding

        var actualPadding = document.body.style.paddingRight;
XhmikosR's avatar
XhmikosR committed
5867
5868
5869
        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
5870
      }
XhmikosR's avatar
Dist    
XhmikosR committed
5871

XhmikosR's avatar
XhmikosR committed
5872
      document.body.classList.add(ClassName$5.OPEN);
XhmikosR's avatar
Dist    
XhmikosR committed
5873
    };
Mark Otto's avatar
dist    
Mark Otto committed
5874

XhmikosR's avatar
Dist    
XhmikosR committed
5875
5876
    _proto._resetScrollbar = function _resetScrollbar() {
      // Restore fixed content padding
XhmikosR's avatar
XhmikosR committed
5877
5878
      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
5879

XhmikosR's avatar
XhmikosR committed
5880
5881
5882
5883
5884
5885
5886
5887
        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
5888

XhmikosR's avatar
Dist    
XhmikosR committed
5889
        if (typeof margin !== 'undefined') {
XhmikosR's avatar
XhmikosR committed
5890
5891
          Manipulator.removeDataAttribute(element, 'margin-right');
          element.style.marginRight = margin;
Mark Otto's avatar
dist    
Mark Otto committed
5892
        }
XhmikosR's avatar
Dist    
XhmikosR committed
5893
      }); // Restore body padding
Mark Otto's avatar
dist  
Mark Otto committed
5894

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

XhmikosR's avatar
Dist.    
XhmikosR committed
5897
5898
5899
      if (typeof padding === 'undefined') {
        document.body.style.paddingRight = '';
      } else {
XhmikosR's avatar
XhmikosR committed
5900
5901
5902
        Manipulator.removeDataAttribute(document.body, 'padding-right');
        document.body.style.paddingRight = padding;
      }
XhmikosR's avatar
Dist    
XhmikosR committed
5903
    };
Mark Otto's avatar
dist  
Mark Otto committed
5904

XhmikosR's avatar
Dist    
XhmikosR committed
5905
5906
5907
5908
5909
5910
5911
5912
    _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
5913
5914
    } // Static
    ;
Mark Otto's avatar
dist  
Mark Otto committed
5915

XhmikosR's avatar
XhmikosR committed
5916
    Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
XhmikosR's avatar
Dist    
XhmikosR committed
5917
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
5918
        var data = Data.getData(this, DATA_KEY$5);
Mark Otto's avatar
dist  
Mark Otto committed
5919

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

XhmikosR's avatar
Dist    
XhmikosR committed
5922
5923
5924
        if (!data) {
          data = new Modal(this, _config);
        }
Mark Otto's avatar
dist    
Mark Otto committed
5925

XhmikosR's avatar
Dist    
XhmikosR committed
5926
5927
5928
        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
            throw new TypeError("No method named \"" + config + "\"");
Mark Otto's avatar
dist    
Mark Otto committed
5929
          }
Mark Otto's avatar
dist  
Mark Otto committed
5930

XhmikosR's avatar
Dist    
XhmikosR committed
5931
5932
5933
5934
5935
5936
          data[config](relatedTarget);
        } else if (_config.show) {
          data.show(relatedTarget);
        }
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
5937

XhmikosR's avatar
XhmikosR committed
5938
    Modal.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
5939
5940
5941
      return Data.getData(element, DATA_KEY$5);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
    _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
5953

XhmikosR's avatar
Dist    
XhmikosR committed
5954
5955
5956
5957
5958
5959
5960
    return Modal;
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
5961

Mark Otto's avatar
dist    
Mark Otto committed
5962

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
5968
5969
5970
    if (this.tagName === 'A' || this.tagName === 'AREA') {
      event.preventDefault();
    }
Mark Otto's avatar
dist  
Mark Otto committed
5971

XhmikosR's avatar
XhmikosR committed
5972
5973
5974
    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
5975
        return;
Mark Otto's avatar
dist  
Mark Otto committed
5976
5977
      }

XhmikosR's avatar
XhmikosR committed
5978
5979
      EventHandler.one(target, Event$6.HIDDEN, function () {
        if (isVisible(_this10)) {
XhmikosR's avatar
Dist    
XhmikosR committed
5980
          _this10.focus();
Mark Otto's avatar
dist  
Mark Otto committed
5981
        }
Mark Otto's avatar
dist    
Mark Otto committed
5982
5983
      });
    });
XhmikosR's avatar
XhmikosR committed
5984
5985
5986
    var data = Data.getData(target, DATA_KEY$5);

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

XhmikosR's avatar
XhmikosR committed
5989
5990
      data = new Modal(target, config);
    }
Mark Otto's avatar
dist    
Mark Otto committed
5991

XhmikosR's avatar
XhmikosR committed
5992
    data.show(this);
XhmikosR's avatar
Dist    
XhmikosR committed
5993
  });
XhmikosR's avatar
XhmikosR committed
5994
  var $$6 = getjQuery();
XhmikosR's avatar
Dist    
XhmikosR committed
5995
5996
5997
5998
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
5999
   * add .modal to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
6000
   */
For faster browsing, not all history is shown. View entire blame