bootstrap.esm.js 141 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
    get: function get() {
      return VERSION$3;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$1;
    }
  }]);

  return Collapse;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
2013
2014
2015
2016
2017
2018
2019
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
2020
EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2021
2022
2023
2024
2025
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
  if (event.target.tagName === 'A') {
    event.preventDefault();
  }

XhmikosR's avatar
XhmikosR committed
2026
2027
  var triggerData = Manipulator.getDataAttributes(this);
  var selector = getSelectorFromElement(this);
XhmikosR's avatar
XhmikosR committed
2028
  var selectorElements = SelectorEngine.find(selector);
XhmikosR's avatar
XhmikosR committed
2029
2030
2031
  selectorElements.forEach(function (element) {
    var data = Data.getData(element, DATA_KEY$3);
    var config;
XhmikosR's avatar
Dist.  
XhmikosR committed
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044

    if (data) {
      // update parent attribute
      if (data._parent === null && typeof triggerData.parent === 'string') {
        data._config.parent = triggerData.parent;
        data._parent = data._getParent();
      }

      config = 'toggle';
    } else {
      config = triggerData;
    }

XhmikosR's avatar
XhmikosR committed
2045
    Collapse.collapseInterface(element, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2046
2047
  });
});
XhmikosR's avatar
XhmikosR committed
2048
var $$4 = getjQuery();
XhmikosR's avatar
Dist.  
XhmikosR committed
2049
2050
2051
2052
2053
2054
2055
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
 * add .collapse to jQuery only if jQuery is present
 */

2056
2057
/* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
2058
2059
2060
2061
if ($$4) {
  var JQUERY_NO_CONFLICT$3 = $$4.fn[NAME$3];
  $$4.fn[NAME$3] = Collapse.jQueryInterface;
  $$4.fn[NAME$3].Constructor = Collapse;
XhmikosR's avatar
Dist.  
XhmikosR committed
2062

XhmikosR's avatar
XhmikosR committed
2063
2064
2065
  $$4.fn[NAME$3].noConflict = function () {
    $$4.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
    return Collapse.jQueryInterface;
XhmikosR's avatar
Dist.  
XhmikosR committed
2066
2067
2068
2069
2070
2071
2072
2073
2074
  };
}

/**
 * ------------------------------------------------------------------------
 * Constants
 * ------------------------------------------------------------------------
 */

XhmikosR's avatar
XhmikosR committed
2075
var NAME$4 = 'dropdown';
XhmikosR's avatar
XhmikosR committed
2076
var VERSION$4 = '5.0.0-alpha2';
XhmikosR's avatar
XhmikosR committed
2077
2078
2079
var DATA_KEY$4 = 'bs.dropdown';
var EVENT_KEY$4 = "." + DATA_KEY$4;
var DATA_API_KEY$4 = '.data-api';
XhmikosR's avatar
XhmikosR committed
2080
2081
2082
2083
2084
2085
2086
2087
var ESCAPE_KEY = 'Escape';
var SPACE_KEY = 'Space';
var TAB_KEY = 'Tab';
var ARROW_UP_KEY = 'ArrowUp';
var ARROW_DOWN_KEY = 'ArrowDown';
var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button

var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY);
XhmikosR's avatar
XhmikosR committed
2088
2089
2090
2091
2092
2093
2094
2095
var EVENT_HIDE$1 = "hide" + EVENT_KEY$4;
var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4;
var EVENT_SHOW$1 = "show" + EVENT_KEY$4;
var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4;
var EVENT_CLICK = "click" + EVENT_KEY$4;
var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4;
var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4;
var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4;
XhmikosR's avatar
XhmikosR committed
2096
var CLASS_NAME_DISABLED = 'disabled';
XhmikosR's avatar
XhmikosR committed
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
var CLASS_NAME_SHOW$1 = 'show';
var CLASS_NAME_DROPUP = 'dropup';
var CLASS_NAME_DROPRIGHT = 'dropright';
var CLASS_NAME_DROPLEFT = 'dropleft';
var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
var CLASS_NAME_NAVBAR = 'navbar';
var CLASS_NAME_POSITION_STATIC = 'position-static';
var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]';
var SELECTOR_FORM_CHILD = '.dropdown form';
var SELECTOR_MENU = '.dropdown-menu';
var SELECTOR_NAVBAR_NAV = '.navbar-nav';
var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
var PLACEMENT_TOP = 'top-start';
var PLACEMENT_TOPEND = 'top-end';
var PLACEMENT_BOTTOM = 'bottom-start';
var PLACEMENT_BOTTOMEND = 'bottom-end';
var PLACEMENT_RIGHT = 'right-start';
var PLACEMENT_LEFT = 'left-start';
XhmikosR's avatar
XhmikosR committed
2115
var Default$2 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2116
2117
2118
2119
  offset: 0,
  flip: true,
  boundary: 'scrollParent',
  reference: 'toggle',
XhmikosR's avatar
XhmikosR committed
2120
2121
  display: 'dynamic',
  popperConfig: null
XhmikosR's avatar
Dist.  
XhmikosR committed
2122
};
XhmikosR's avatar
XhmikosR committed
2123
var DefaultType$2 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2124
2125
2126
2127
  offset: '(number|string|function)',
  flip: 'boolean',
  boundary: '(string|element)',
  reference: '(string|element)',
XhmikosR's avatar
XhmikosR committed
2128
2129
  display: 'string',
  popperConfig: '(null|object)'
XhmikosR's avatar
Dist.  
XhmikosR committed
2130
};
XhmikosR's avatar
XhmikosR committed
2131
2132
2133
2134
2135
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
2136

XhmikosR's avatar
XhmikosR committed
2137
var Dropdown = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
2138
  function Dropdown(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
    this._element = element;
    this._popper = null;
    this._config = this._getConfig(config);
    this._menu = this._getMenuElement();
    this._inNavbar = this._detectNavbar();

    this._addEventListeners();

    Data.setData(element, DATA_KEY$4, this);
  } // Getters


XhmikosR's avatar
XhmikosR committed
2151
  var _proto = Dropdown.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
2152

XhmikosR's avatar
XhmikosR committed
2153
2154
  // Public
  _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
2155
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2156
2157
2158
      return;
    }

XhmikosR's avatar
XhmikosR committed
2159
    var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
2160

XhmikosR's avatar
XhmikosR committed
2161
    Dropdown.clearMenus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2162
2163
2164
2165
2166

    if (isActive) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2167
2168
2169
2170
    this.show();
  };

  _proto.show = function show() {
XhmikosR's avatar
XhmikosR committed
2171
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
XhmikosR committed
2172
2173
2174
2175
      return;
    }

    var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
XhmikosR committed
2176
    var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2177
2178
      relatedTarget: this._element
    };
XhmikosR's avatar
XhmikosR committed
2179
    var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190

    if (showEvent.defaultPrevented) {
      return;
    } // Disable totally Popper.js for Dropdown in Navbar


    if (!this._inNavbar) {
      if (typeof Popper === 'undefined') {
        throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)');
      }

XhmikosR's avatar
XhmikosR committed
2191
      var referenceElement = this._element;
XhmikosR's avatar
Dist.  
XhmikosR committed
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206

      if (this._config.reference === 'parent') {
        referenceElement = parent;
      } else if (isElement(this._config.reference)) {
        referenceElement = this._config.reference; // Check if it's jQuery element

        if (typeof this._config.reference.jquery !== 'undefined') {
          referenceElement = this._config.reference[0];
        }
      } // 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


      if (this._config.boundary !== 'scrollParent') {
XhmikosR's avatar
XhmikosR committed
2207
        parent.classList.add(CLASS_NAME_POSITION_STATIC);
XhmikosR's avatar
Dist.  
XhmikosR committed
2208
2209
2210
2211
2212
2213
2214
2215
2216
      }

      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


XhmikosR's avatar
XhmikosR committed
2217
    if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
XhmikosR's avatar
XhmikosR committed
2218
2219
2220
      var _ref;

      (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {
XhmikosR's avatar
XhmikosR committed
2221
2222
        return EventHandler.on(elem, 'mouseover', null, noop());
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2223
2224
2225
2226
2227
2228
    }

    this._element.focus();

    this._element.setAttribute('aria-expanded', true);

XhmikosR's avatar
XhmikosR committed
2229
2230
2231
    Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW$1);
    Manipulator.toggleClass(this._element, CLASS_NAME_SHOW$1);
    EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget);
XhmikosR's avatar
XhmikosR committed
2232
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2233

XhmikosR's avatar
XhmikosR committed
2234
  _proto.hide = function hide() {
XhmikosR's avatar
XhmikosR committed
2235
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2236
2237
2238
      return;
    }

XhmikosR's avatar
XhmikosR committed
2239
    var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
XhmikosR committed
2240
    var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2241
2242
      relatedTarget: this._element
    };
XhmikosR's avatar
XhmikosR committed
2243
    var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2244
2245
2246
2247
2248

    if (hideEvent.defaultPrevented) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2249
2250
2251
2252
    if (this._popper) {
      this._popper.destroy();
    }

XhmikosR's avatar
XhmikosR committed
2253
2254
2255
    Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW$1);
    Manipulator.toggleClass(this._element, CLASS_NAME_SHOW$1);
    EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
XhmikosR's avatar
XhmikosR committed
2256
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2257

XhmikosR's avatar
XhmikosR committed
2258
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2259
2260
2261
2262
2263
    Data.removeData(this._element, DATA_KEY$4);
    EventHandler.off(this._element, EVENT_KEY$4);
    this._element = null;
    this._menu = null;

XhmikosR's avatar
XhmikosR committed
2264
    if (this._popper) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2265
2266
2267
2268
      this._popper.destroy();

      this._popper = null;
    }
XhmikosR's avatar
XhmikosR committed
2269
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2270

XhmikosR's avatar
XhmikosR committed
2271
  _proto.update = function update() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2272
2273
    this._inNavbar = this._detectNavbar();

XhmikosR's avatar
XhmikosR committed
2274
    if (this._popper) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2275
2276
2277
      this._popper.scheduleUpdate();
    }
  } // Private
XhmikosR's avatar
XhmikosR committed
2278
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2279

XhmikosR's avatar
XhmikosR committed
2280
2281
  _proto._addEventListeners = function _addEventListeners() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2282

XhmikosR's avatar
XhmikosR committed
2283
    EventHandler.on(this._element, EVENT_CLICK, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2284
2285
      event.preventDefault();
      event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
2286
2287

      _this.toggle();
XhmikosR's avatar
Dist.  
XhmikosR committed
2288
    });
XhmikosR's avatar
XhmikosR committed
2289
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2290

XhmikosR's avatar
XhmikosR committed
2291
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
2292
    config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2293
2294
    typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
    return config;
XhmikosR's avatar
XhmikosR committed
2295
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2296

XhmikosR's avatar
XhmikosR committed
2297
  _proto._getMenuElement = function _getMenuElement() {
XhmikosR's avatar
XhmikosR committed
2298
    return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
XhmikosR's avatar
XhmikosR committed
2299
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2300

XhmikosR's avatar
XhmikosR committed
2301
2302
  _proto._getPlacement = function _getPlacement() {
    var parentDropdown = this._element.parentNode;
XhmikosR's avatar
XhmikosR committed
2303
    var placement = PLACEMENT_BOTTOM; // Handle dropup
XhmikosR's avatar
Dist.  
XhmikosR committed
2304

XhmikosR's avatar
XhmikosR committed
2305
2306
    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
      placement = PLACEMENT_TOP;
XhmikosR's avatar
Dist.  
XhmikosR committed
2307

XhmikosR's avatar
XhmikosR committed
2308
2309
      if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {
        placement = PLACEMENT_TOPEND;
XhmikosR's avatar
Dist.  
XhmikosR committed
2310
      }
XhmikosR's avatar
XhmikosR committed
2311
2312
2313
2314
2315
2316
    } else if (parentDropdown.classList.contains(CLASS_NAME_DROPRIGHT)) {
      placement = PLACEMENT_RIGHT;
    } else if (parentDropdown.classList.contains(CLASS_NAME_DROPLEFT)) {
      placement = PLACEMENT_LEFT;
    } else if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {
      placement = PLACEMENT_BOTTOMEND;
XhmikosR's avatar
Dist.  
XhmikosR committed
2317
2318
2319
    }

    return placement;
XhmikosR's avatar
XhmikosR committed
2320
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2321

XhmikosR's avatar
XhmikosR committed
2322
  _proto._detectNavbar = function _detectNavbar() {
XhmikosR's avatar
XhmikosR committed
2323
    return Boolean(this._element.closest("." + CLASS_NAME_NAVBAR));
XhmikosR's avatar
XhmikosR committed
2324
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2325

XhmikosR's avatar
XhmikosR committed
2326
2327
2328
2329
  _proto._getOffset = function _getOffset() {
    var _this2 = this;

    var offset = {};
XhmikosR's avatar
Dist.  
XhmikosR committed
2330
2331

    if (typeof this._config.offset === 'function') {
XhmikosR's avatar
XhmikosR committed
2332
      offset.fn = function (data) {
XhmikosR's avatar
XhmikosR committed
2333
        data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
XhmikosR's avatar
Dist.  
XhmikosR committed
2334
2335
2336
2337
2338
2339
2340
        return data;
      };
    } else {
      offset.offset = this._config.offset;
    }

    return offset;
XhmikosR's avatar
XhmikosR committed
2341
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2342

XhmikosR's avatar
XhmikosR committed
2343
2344
  _proto._getPopperConfig = function _getPopperConfig() {
    var popperConfig = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2345
2346
2347
2348
2349
2350
2351
2352
2353
      placement: this._getPlacement(),
      modifiers: {
        offset: this._getOffset(),
        flip: {
          enabled: this._config.flip
        },
        preventOverflow: {
          boundariesElement: this._config.boundary
        }
XhmikosR's avatar
XhmikosR committed
2354
2355
      }
    }; // Disable Popper.js if we have a static display
XhmikosR's avatar
Dist.  
XhmikosR committed
2356
2357
2358
2359
2360
2361
2362

    if (this._config.display === 'static') {
      popperConfig.modifiers.applyStyle = {
        enabled: false
      };
    }

XhmikosR's avatar
XhmikosR committed
2363
    return _extends({}, popperConfig, this._config.popperConfig);
XhmikosR's avatar
Dist.  
XhmikosR committed
2364
  } // Static
XhmikosR's avatar
XhmikosR committed
2365
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2366

XhmikosR's avatar
XhmikosR committed
2367
  Dropdown.dropdownInterface = function dropdownInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
2368
    var data = Data.getData(element, DATA_KEY$4);
XhmikosR's avatar
Dist.  
XhmikosR committed
2369

XhmikosR's avatar
XhmikosR committed
2370
    var _config = typeof config === 'object' ? config : null;
XhmikosR's avatar
Dist.  
XhmikosR committed
2371
2372
2373
2374
2375
2376
2377

    if (!data) {
      data = new Dropdown(element, _config);
    }

    if (typeof config === 'string') {
      if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
2378
        throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
2379
2380
2381
2382
      }

      data[config]();
    }
XhmikosR's avatar
XhmikosR committed
2383
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2384

XhmikosR's avatar
XhmikosR committed
2385
  Dropdown.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2386
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
2387
      Dropdown.dropdownInterface(this, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2388
    });
XhmikosR's avatar
XhmikosR committed
2389
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2390

XhmikosR's avatar
XhmikosR committed
2391
  Dropdown.clearMenus = function clearMenus(event) {
XhmikosR's avatar
XhmikosR committed
2392
    if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2393
2394
2395
      return;
    }

XhmikosR's avatar
XhmikosR committed
2396
    var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2397

XhmikosR's avatar
XhmikosR committed
2398
    for (var i = 0, len = toggles.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
2399
      var parent = Dropdown.getParentFromElement(toggles[i]);
XhmikosR's avatar
XhmikosR committed
2400
2401
      var context = Data.getData(toggles[i], DATA_KEY$4);
      var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
        relatedTarget: toggles[i]
      };

      if (event && event.type === 'click') {
        relatedTarget.clickEvent = event;
      }

      if (!context) {
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2413
      var dropdownMenu = context._menu;
XhmikosR's avatar
Dist.  
XhmikosR committed
2414

XhmikosR's avatar
XhmikosR committed
2415
      if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2416
2417
2418
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2419
      if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2420
2421
2422
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2423
      var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2424
2425
2426
2427
2428
2429
2430
2431

      if (hideEvent.defaultPrevented) {
        continue;
      } // If this is a touch-enabled device we remove the extra
      // empty mouseover listeners we added for iOS support


      if ('ontouchstart' in document.documentElement) {
XhmikosR's avatar
XhmikosR committed
2432
2433
2434
        var _ref2;

        (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {
XhmikosR's avatar
XhmikosR committed
2435
2436
          return EventHandler.off(elem, 'mouseover', null, noop());
        });
XhmikosR's avatar
Dist.  
XhmikosR committed
2437
2438
2439
      }

      toggles[i].setAttribute('aria-expanded', 'false');
XhmikosR's avatar
XhmikosR committed
2440
2441
2442
2443
2444

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

XhmikosR's avatar
XhmikosR committed
2445
2446
2447
      dropdownMenu.classList.remove(CLASS_NAME_SHOW$1);
      toggles[i].classList.remove(CLASS_NAME_SHOW$1);
      EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2448
    }
XhmikosR's avatar
XhmikosR committed
2449
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2450

XhmikosR's avatar
XhmikosR committed
2451
2452
  Dropdown.getParentFromElement = function getParentFromElement(element) {
    return getElementFromSelector(element) || element.parentNode;
XhmikosR's avatar
XhmikosR committed
2453
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2454

XhmikosR's avatar
XhmikosR committed
2455
  Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2456
2457
2458
2459
2460
2461
2462
    // 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
2463
    if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2464
2465
2466
2467
2468
2469
      return;
    }

    event.preventDefault();
    event.stopPropagation();

XhmikosR's avatar
XhmikosR committed
2470
    if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2471
2472
2473
      return;
    }

XhmikosR's avatar
XhmikosR committed
2474
    var parent = Dropdown.getParentFromElement(this);
XhmikosR's avatar
XhmikosR committed
2475
    var isActive = this.classList.contains(CLASS_NAME_SHOW$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
2476

XhmikosR's avatar
XhmikosR committed
2477
    if (event.key === ESCAPE_KEY) {
XhmikosR's avatar
XhmikosR committed
2478
2479
2480
2481
2482
      var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0];
      button.focus();
      Dropdown.clearMenus();
      return;
    }
XhmikosR's avatar
Dist.  
XhmikosR committed
2483

XhmikosR's avatar
XhmikosR committed
2484
    if (!isActive || event.key === SPACE_KEY) {
XhmikosR's avatar
XhmikosR committed
2485
      Dropdown.clearMenus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2486
2487
2488
      return;
    }

XhmikosR's avatar
XhmikosR committed
2489
    var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
XhmikosR's avatar
Dist.  
XhmikosR committed
2490
2491
2492
2493
2494

    if (!items.length) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2495
    var index = items.indexOf(event.target);
XhmikosR's avatar
Dist.  
XhmikosR committed
2496

XhmikosR's avatar
XhmikosR committed
2497
    if (event.key === ARROW_UP_KEY && index > 0) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2498
2499
2500
2501
      // Up
      index--;
    }

XhmikosR's avatar
XhmikosR committed
2502
    if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2503
2504
      // Down
      index++;
XhmikosR's avatar
XhmikosR committed
2505
2506
    } // index is -1 if the first keydown is an ArrowUp

XhmikosR's avatar
Dist.  
XhmikosR committed
2507

XhmikosR's avatar
XhmikosR committed
2508
    index = index === -1 ? 0 : index;
XhmikosR's avatar
Dist.  
XhmikosR committed
2509
    items[index].focus();
XhmikosR's avatar
XhmikosR committed
2510
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2511

XhmikosR's avatar
XhmikosR committed
2512
  Dropdown.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2513
    return Data.getData(element, DATA_KEY$4);
XhmikosR's avatar
XhmikosR committed
2514
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2515

XhmikosR's avatar
XhmikosR committed
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
  _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;
    }
  }]);

  return Dropdown;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
2535
2536
2537
2538
2539
2540
2541
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
2542
2543
2544
2545
2546
EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler);
EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus);
EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2547
2548
  event.preventDefault();
  event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
2549
  Dropdown.dropdownInterface(this, 'toggle');
XhmikosR's avatar
Dist.  
XhmikosR committed
2550
});
XhmikosR's avatar
XhmikosR committed
2551
EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {
XhmikosR's avatar
XhmikosR committed
2552
2553
  return e.stopPropagation();
});
XhmikosR's avatar
XhmikosR committed
2554
var $$5 = getjQuery();
XhmikosR's avatar
Dist.  
XhmikosR committed
2555
2556
2557
2558
2559
2560
2561
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
 * add .dropdown to jQuery only if jQuery is present
 */

2562
2563
/* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
2564
2565
2566
2567
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
2568

XhmikosR's avatar
XhmikosR committed
2569
2570
2571
  $$5.fn[NAME$4].noConflict = function () {
    $$5.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
    return Dropdown.jQueryInterface;
XhmikosR's avatar
Dist.  
XhmikosR committed
2572
2573
2574
2575
2576
2577
2578
2579
2580
  };
}

/**
 * ------------------------------------------------------------------------
 * Constants
 * ------------------------------------------------------------------------
 */

XhmikosR's avatar
XhmikosR committed
2581
var NAME$5 = 'modal';
XhmikosR's avatar
XhmikosR committed
2582
var VERSION$5 = '5.0.0-alpha2';
XhmikosR's avatar
XhmikosR committed
2583
2584
2585
var DATA_KEY$5 = 'bs.modal';
var EVENT_KEY$5 = "." + DATA_KEY$5;
var DATA_API_KEY$5 = '.data-api';
XhmikosR's avatar
XhmikosR committed
2586
var ESCAPE_KEY$1 = 'Escape';
XhmikosR's avatar
XhmikosR committed
2587
var Default$3 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2588
2589
2590
2591
2592
  backdrop: true,
  keyboard: true,
  focus: true,
  show: true
};
XhmikosR's avatar
XhmikosR committed
2593
var DefaultType$3 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2594
2595
2596
2597
2598
  backdrop: '(boolean|string)',
  keyboard: 'boolean',
  focus: 'boolean',
  show: 'boolean'
};
XhmikosR's avatar
XhmikosR committed
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;
var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;
var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;
var EVENT_SHOW$2 = "show" + EVENT_KEY$5;
var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;
var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;
var EVENT_RESIZE = "resize" + EVENT_KEY$5;
var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5;
var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;
var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;
var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;
var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5;
var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
var CLASS_NAME_BACKDROP = 'modal-backdrop';
var CLASS_NAME_OPEN = 'modal-open';
var CLASS_NAME_FADE = 'fade';
var CLASS_NAME_SHOW$2 = 'show';
var CLASS_NAME_STATIC = 'modal-static';
var SELECTOR_DIALOG = '.modal-dialog';
var SELECTOR_MODAL_BODY = '.modal-body';
var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="modal"]';
var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
var SELECTOR_STICKY_CONTENT = '.sticky-top';
XhmikosR's avatar
XhmikosR committed
2623
2624
2625
2626
2627
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
2628

XhmikosR's avatar
XhmikosR committed
2629
var Modal = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
2630
  function Modal(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2631
2632
    this._config = this._getConfig(config);
    this._element = element;
XhmikosR's avatar
XhmikosR committed
2633
    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element);
XhmikosR's avatar
Dist.  
XhmikosR committed
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
    this._backdrop = null;
    this._isShown = false;
    this._isBodyOverflowing = false;
    this._ignoreBackdropClick = false;
    this._isTransitioning = false;
    this._scrollbarWidth = 0;
    Data.setData(element, DATA_KEY$5, this);
  } // Getters


XhmikosR's avatar
XhmikosR committed
2644
  var _proto = Modal.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
2645

XhmikosR's avatar
XhmikosR committed
2646
2647
  // Public
  _proto.toggle = function toggle(relatedTarget) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2648
    return this._isShown ? this.hide() : this.show(relatedTarget);
XhmikosR's avatar
XhmikosR committed
2649
2650
2651
2652
  };

  _proto.show = function show(relatedTarget) {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2653
2654
2655
2656
2657

    if (this._isShown || this._isTransitioning) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2658
    if (this._element.classList.contains(CLASS_NAME_FADE)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2659
2660
2661
      this._isTransitioning = true;
    }

XhmikosR's avatar
XhmikosR committed
2662
    var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
XhmikosR's avatar
XhmikosR committed
2663
      relatedTarget: relatedTarget
XhmikosR's avatar
Dist.  
XhmikosR committed
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
    });

    if (this._isShown || showEvent.defaultPrevented) {
      return;
    }

    this._isShown = true;

    this._checkScrollbar();

    this._setScrollbar();

    this._adjustDialog();

    this._setEscapeEvent();

    this._setResizeEvent();

XhmikosR's avatar
XhmikosR committed
2682
    EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2683
2684
      return _this.hide(event);
    });
XhmikosR's avatar
XhmikosR committed
2685
2686
    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
      EventHandler.one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2687
2688
        if (event.target === _this._element) {
          _this._ignoreBackdropClick = true;
XhmikosR's avatar
Dist.  
XhmikosR committed
2689
2690
2691
2692
        }
      });
    });

XhmikosR's avatar
XhmikosR committed
2693
2694
2695
2696
2697
2698
2699
    this._showBackdrop(function () {
      return _this._showElement(relatedTarget);
    });
  };

  _proto.hide = function hide(event) {
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2700
2701
2702
2703
2704
2705
2706
2707
2708

    if (event) {
      event.preventDefault();
    }

    if (!this._isShown || this._isTransitioning) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2709
    var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2710

2711
    if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2712
2713
2714
2715
2716
      return;
    }

    this._isShown = false;

XhmikosR's avatar
XhmikosR committed
2717
    var transition = this._element.classList.contains(CLASS_NAME_FADE);
XhmikosR's avatar
Dist.  
XhmikosR committed
2718
2719
2720
2721
2722
2723
2724
2725
2726

    if (transition) {
      this._isTransitioning = true;
    }

    this._setEscapeEvent();

    this._setResizeEvent();

XhmikosR's avatar
XhmikosR committed
2727
    EventHandler.off(document, EVENT_FOCUSIN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2728

XhmikosR's avatar
XhmikosR committed
2729
    this._element.classList.remove(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2730

XhmikosR's avatar
XhmikosR committed
2731
2732
    EventHandler.off(this._element, EVENT_CLICK_DISMISS);
    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
XhmikosR's avatar
Dist.  
XhmikosR committed
2733
2734

    if (transition) {
XhmikosR's avatar
XhmikosR committed
2735
2736
2737
2738
      var transitionDuration = getTransitionDurationFromElement(this._element);
      EventHandler.one(this._element, TRANSITION_END, function (event) {
        return _this2._hideModal(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2739
2740
2741
2742
      emulateTransitionEnd(this._element, transitionDuration);
    } else {
      this._hideModal();
    }
XhmikosR's avatar
XhmikosR committed
2743
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2744

XhmikosR's avatar
XhmikosR committed
2745
2746
2747
2748
  _proto.dispose = function dispose() {
    [window, this._element, this._dialog].forEach(function (htmlElement) {
      return EventHandler.off(htmlElement, EVENT_KEY$5);
    });
XhmikosR's avatar
Dist.  
XhmikosR committed
2749
    /**
XhmikosR's avatar
XhmikosR committed
2750
     * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
XhmikosR's avatar
Dist.  
XhmikosR committed
2751
     * Do not move `document` in `htmlElements` array
XhmikosR's avatar
XhmikosR committed
2752
     * It will remove `EVENT_CLICK_DATA_API` event that should remain
XhmikosR's avatar
Dist.  
XhmikosR committed
2753
2754
     */

XhmikosR's avatar
XhmikosR committed
2755
    EventHandler.off(document, EVENT_FOCUSIN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
    Data.removeData(this._element, DATA_KEY$5);
    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;
XhmikosR's avatar
XhmikosR committed
2766
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2767

XhmikosR's avatar
XhmikosR committed
2768
  _proto.handleUpdate = function handleUpdate() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2769
2770
    this._adjustDialog();
  } // Private
XhmikosR's avatar
XhmikosR committed
2771
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2772

XhmikosR's avatar
XhmikosR committed
2773
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
2774
    config = _extends({}, Default$3, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2775
2776
    typeCheckConfig(NAME$5, config, DefaultType$3);
    return config;
XhmikosR's avatar
XhmikosR committed
2777
2778
2779
2780
  };

  _proto._showElement = function _showElement(relatedTarget) {
    var _this3 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2781

XhmikosR's avatar
XhmikosR committed
2782
    var transition = this._element.classList.contains(CLASS_NAME_FADE);
XhmikosR's avatar
Dist.  
XhmikosR committed
2783

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

XhmikosR's avatar
Dist.  
XhmikosR committed
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
      // Don't move modal's DOM position
      document.body.appendChild(this._element);
    }

    this._element.style.display = 'block';

    this._element.removeAttribute('aria-hidden');

    this._element.setAttribute('aria-modal', true);

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

XhmikosR's avatar
XhmikosR committed
2799
2800
2801
    this._element.scrollTop = 0;

    if (modalBody) {
XhmikosR's avatar
XhmikosR committed
2802
      modalBody.scrollTop = 0;
XhmikosR's avatar
Dist.  
XhmikosR committed
2803
2804
2805
2806
2807
2808
    }

    if (transition) {
      reflow(this._element);
    }

XhmikosR's avatar
XhmikosR committed
2809
    this._element.classList.add(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2810
2811
2812
2813
2814

    if (this._config.focus) {
      this._enforceFocus();
    }

XhmikosR's avatar
XhmikosR committed
2815
2816
2817
    var transitionComplete = function transitionComplete() {
      if (_this3._config.focus) {
        _this3._element.focus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2818
2819
      }

XhmikosR's avatar
XhmikosR committed
2820
      _this3._isTransitioning = false;
XhmikosR's avatar
XhmikosR committed
2821
      EventHandler.trigger(_this3._element, EVENT_SHOWN$2, {
XhmikosR's avatar
XhmikosR committed
2822
        relatedTarget: relatedTarget
XhmikosR's avatar
Dist.  
XhmikosR committed
2823
2824
2825
2826
      });
    };

    if (transition) {
XhmikosR's avatar
XhmikosR committed
2827
      var transitionDuration = getTransitionDurationFromElement(this._dialog);
XhmikosR's avatar
Dist.  
XhmikosR committed
2828
2829
2830
2831
2832
      EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
      emulateTransitionEnd(this._dialog, transitionDuration);
    } else {
      transitionComplete();
    }
XhmikosR's avatar
XhmikosR committed
2833
2834
2835
2836
  };

  _proto._enforceFocus = function _enforceFocus() {
    var _this4 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2837

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

XhmikosR's avatar
XhmikosR committed
2840
    EventHandler.on(document, EVENT_FOCUSIN, function (event) {
XhmikosR's avatar
XhmikosR committed
2841
2842
      if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {
        _this4._element.focus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2843
2844
      }
    });
XhmikosR's avatar
XhmikosR committed
2845
2846
2847
2848
  };

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

XhmikosR's avatar
XhmikosR committed
2850
2851
    if (this._isShown) {
      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2852
        if (_this5._config.keyboard && event.key === ESCAPE_KEY$1) {
XhmikosR's avatar
XhmikosR committed
2853
2854
2855
          event.preventDefault();

          _this5.hide();
XhmikosR's avatar
XhmikosR committed
2856
        } else if (!_this5._config.keyboard && event.key === ESCAPE_KEY$1) {
XhmikosR's avatar
XhmikosR committed
2857
          _this5._triggerBackdropTransition();
XhmikosR's avatar
Dist.  
XhmikosR committed
2858
2859
        }
      });
2860
    } else {
XhmikosR's avatar
XhmikosR committed
2861
      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS);
XhmikosR's avatar
Dist.  
XhmikosR committed
2862
    }
XhmikosR's avatar
XhmikosR committed
2863
2864
2865
2866
  };

  _proto._setResizeEvent = function _setResizeEvent() {
    var _this6 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2867
2868

    if (this._isShown) {
XhmikosR's avatar
XhmikosR committed
2869
      EventHandler.on(window, EVENT_RESIZE, function () {
2870
        return _this6._adjustDialog();
XhmikosR's avatar
XhmikosR committed
2871
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2872
    } else {
XhmikosR's avatar
XhmikosR committed
2873
      EventHandler.off(window, EVENT_RESIZE);
XhmikosR's avatar
Dist.  
XhmikosR committed
2874
    }
XhmikosR's avatar
XhmikosR committed
2875
2876
2877
2878
  };

  _proto._hideModal = function _hideModal() {
    var _this7 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2879
2880
2881
2882
2883
2884
2885

    this._element.style.display = 'none';

    this._element.setAttribute('aria-hidden', true);

    this._element.removeAttribute('aria-modal');

Mark Otto's avatar
Mark Otto committed
2886
2887
    this._element.removeAttribute('role');

XhmikosR's avatar
Dist.  
XhmikosR committed
2888
2889
    this._isTransitioning = false;

XhmikosR's avatar
XhmikosR committed
2890
    this._showBackdrop(function () {
XhmikosR's avatar
XhmikosR committed
2891
      document.body.classList.remove(CLASS_NAME_OPEN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2892

XhmikosR's avatar
XhmikosR committed
2893
      _this7._resetAdjustments();
XhmikosR's avatar
Dist.  
XhmikosR committed
2894

XhmikosR's avatar
XhmikosR committed
2895
      _this7._resetScrollbar();
XhmikosR's avatar
Dist.  
XhmikosR committed
2896

XhmikosR's avatar
XhmikosR committed
2897
      EventHandler.trigger(_this7._element, EVENT_HIDDEN$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2898
    });
XhmikosR's avatar
XhmikosR committed
2899
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2900

XhmikosR's avatar
XhmikosR committed
2901
  _proto._removeBackdrop = function _removeBackdrop() {
2902
    this._backdrop.parentNode.removeChild(this._backdrop);
XhmikosR's avatar
Dist.  
XhmikosR committed
2903

2904
    this._backdrop = null;
XhmikosR's avatar
XhmikosR committed
2905
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2906

XhmikosR's avatar
XhmikosR committed
2907
2908
2909
  _proto._showBackdrop = function _showBackdrop(callback) {
    var _this8 = this;

XhmikosR's avatar
XhmikosR committed
2910
    var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
XhmikosR's avatar
Dist.  
XhmikosR committed
2911
2912
2913

    if (this._isShown && this._config.backdrop) {
      this._backdrop = document.createElement('div');
XhmikosR's avatar
XhmikosR committed
2914
      this._backdrop.className = CLASS_NAME_BACKDROP;
XhmikosR's avatar
Dist.  
XhmikosR committed
2915
2916
2917
2918
2919
2920

      if (animate) {
        this._backdrop.classList.add(animate);
      }

      document.body.appendChild(this._backdrop);
XhmikosR's avatar
XhmikosR committed
2921
      EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2922
2923
        if (_this8._ignoreBackdropClick) {
          _this8._ignoreBackdropClick = false;
XhmikosR's avatar
Dist.  
XhmikosR committed
2924
2925
2926
2927
2928
2929
2930
          return;
        }

        if (event.target !== event.currentTarget) {
          return;
        }

XhmikosR's avatar
XhmikosR committed
2931
        _this8._triggerBackdropTransition();
XhmikosR's avatar
Dist.  
XhmikosR committed
2932
2933
2934
2935
2936
2937
      });

      if (animate) {
        reflow(this._backdrop);
      }

XhmikosR's avatar
XhmikosR committed
2938
      this._backdrop.classList.add(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2939
2940
2941
2942
2943
2944

      if (!animate) {
        callback();
        return;
      }

XhmikosR's avatar
XhmikosR committed
2945
      var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
XhmikosR's avatar
Dist.  
XhmikosR committed
2946
2947
2948
      EventHandler.one(this._backdrop, TRANSITION_END, callback);
      emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
    } else if (!this._isShown && this._backdrop) {
XhmikosR's avatar
XhmikosR committed
2949
      this._backdrop.classList.remove(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2950

XhmikosR's avatar
XhmikosR committed
2951
2952
      var callbackRemove = function callbackRemove() {
        _this8._removeBackdrop();
XhmikosR's avatar
Dist.  
XhmikosR committed
2953

2954
        callback();
XhmikosR's avatar
Dist.  
XhmikosR committed
2955
2956
      };

XhmikosR's avatar
XhmikosR committed
2957
      if (this._element.classList.contains(CLASS_NAME_FADE)) {
XhmikosR's avatar
XhmikosR committed
2958
2959
        var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);

XhmikosR's avatar
Dist.  
XhmikosR committed
2960
        EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
XhmikosR's avatar
XhmikosR committed
2961
        emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
XhmikosR's avatar
Dist.  
XhmikosR committed
2962
2963
2964
      } else {
        callbackRemove();
      }
2965
    } else {
XhmikosR's avatar
Dist.  
XhmikosR committed
2966
2967
      callback();
    }
XhmikosR's avatar
XhmikosR committed
2968
2969
2970
2971
2972
2973
  };

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

    if (this._config.backdrop === 'static') {
XhmikosR's avatar
XhmikosR committed
2974
      var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
XhmikosR's avatar
XhmikosR committed
2975
2976
2977
2978
2979

      if (hideEvent.defaultPrevented) {
        return;
      }

XhmikosR's avatar
XhmikosR committed
2980
2981
2982
2983
2984
2985
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;

      if (!isModalOverflowing) {
        this._element.style.overflowY = 'hidden';
      }

XhmikosR's avatar
XhmikosR committed
2986
      this._element.classList.add(CLASS_NAME_STATIC);
XhmikosR's avatar
XhmikosR committed
2987

XhmikosR's avatar
XhmikosR committed
2988
2989
      var modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
      EventHandler.off(this._element, TRANSITION_END);
XhmikosR's avatar
XhmikosR committed
2990
      EventHandler.one(this._element, TRANSITION_END, function () {
XhmikosR's avatar
XhmikosR committed
2991
        _this9._element.classList.remove(CLASS_NAME_STATIC);
XhmikosR's avatar
XhmikosR committed
2992
2993
2994
2995
2996
2997
2998

        if (!isModalOverflowing) {
          EventHandler.one(_this9._element, TRANSITION_END, function () {
            _this9._element.style.overflowY = '';
          });
          emulateTransitionEnd(_this9._element, modalTransitionDuration);
        }
XhmikosR's avatar
XhmikosR committed
2999
3000
      });
      emulateTransitionEnd(this._element, modalTransitionDuration);
For faster browsing, not all history is shown. View entire blame