bootstrap.esm.js 143 KB
Newer Older
XhmikosR's avatar
Dist.  
XhmikosR committed
2001
2002
    this._isTransitioning = null;
  } // Private
XhmikosR's avatar
XhmikosR committed
2003
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2004

XhmikosR's avatar
XhmikosR committed
2005
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
2006
    config = _objectSpread2(_objectSpread2({}, Default$1), config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2007
2008
2009
2010
    config.toggle = Boolean(config.toggle); // Coerce string values

    typeCheckConfig(NAME$3, config, DefaultType$1);
    return config;
XhmikosR's avatar
XhmikosR committed
2011
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2012

XhmikosR's avatar
XhmikosR committed
2013
  _proto._getDimension = function _getDimension() {
XhmikosR's avatar
XhmikosR committed
2014
    var hasWidth = this._element.classList.contains(WIDTH);
XhmikosR's avatar
Dist.  
XhmikosR committed
2015

XhmikosR's avatar
XhmikosR committed
2016
    return hasWidth ? WIDTH : HEIGHT;
XhmikosR's avatar
XhmikosR committed
2017
2018
2019
2020
  };

  _proto._getParent = function _getParent() {
    var _this3 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2021

XhmikosR's avatar
XhmikosR committed
2022
    var parent = this._config.parent;
XhmikosR's avatar
Dist.  
XhmikosR committed
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032

    if (isElement(parent)) {
      // it's a jQuery object
      if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
        parent = parent[0];
      }
    } else {
      parent = SelectorEngine.findOne(parent);
    }

XhmikosR's avatar
XhmikosR committed
2033
2034
    var selector = SELECTOR_DATA_TOGGLE$1 + "[data-parent=\"" + parent + "\"]";
    SelectorEngine.find(selector, parent).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
2035
      var selected = getElementFromSelector(element);
2036
2037

      _this3._addAriaAndCollapsedClass(selected, [element]);
XhmikosR's avatar
Dist.  
XhmikosR committed
2038
2039
    });
    return parent;
XhmikosR's avatar
XhmikosR committed
2040
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2041

XhmikosR's avatar
XhmikosR committed
2042
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2043
    if (element) {
XhmikosR's avatar
XhmikosR committed
2044
      var isOpen = element.classList.contains(CLASS_NAME_SHOW);
XhmikosR's avatar
Dist.  
XhmikosR committed
2045
2046

      if (triggerArray.length) {
XhmikosR's avatar
XhmikosR committed
2047
        triggerArray.forEach(function (elem) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2048
          if (isOpen) {
XhmikosR's avatar
XhmikosR committed
2049
            elem.classList.remove(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
Dist.  
XhmikosR committed
2050
          } else {
XhmikosR's avatar
XhmikosR committed
2051
            elem.classList.add(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
Dist.  
XhmikosR committed
2052
2053
2054
2055
2056
2057
2058
          }

          elem.setAttribute('aria-expanded', isOpen);
        });
      }
    }
  } // Static
XhmikosR's avatar
XhmikosR committed
2059
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2060

XhmikosR's avatar
XhmikosR committed
2061
  Collapse.collapseInterface = function collapseInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
2062
    var data = Data.getData(element, DATA_KEY$3);
XhmikosR's avatar
Dist.  
XhmikosR committed
2063

XhmikosR's avatar
XhmikosR committed
2064
    var _config = _objectSpread2(_objectSpread2(_objectSpread2({}, Default$1), Manipulator.getDataAttributes(element)), typeof config === 'object' && config ? config : {});
XhmikosR's avatar
Dist.  
XhmikosR committed
2065

XhmikosR's avatar
XhmikosR committed
2066
    if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2067
2068
2069
2070
2071
2072
2073
2074
2075
      _config.toggle = false;
    }

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

    if (typeof config === 'string') {
      if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
2076
        throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
2077
2078
2079
2080
      }

      data[config]();
    }
XhmikosR's avatar
XhmikosR committed
2081
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2082

XhmikosR's avatar
XhmikosR committed
2083
  Collapse.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2084
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
2085
      Collapse.collapseInterface(this, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2086
    });
XhmikosR's avatar
XhmikosR committed
2087
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2088

XhmikosR's avatar
XhmikosR committed
2089
  Collapse.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2090
    return Data.getData(element, DATA_KEY$3);
XhmikosR's avatar
XhmikosR committed
2091
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2092

XhmikosR's avatar
XhmikosR committed
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
  _createClass(Collapse, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$3;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$1;
    }
  }]);

  return Collapse;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
2107
2108
2109
2110
2111
2112
2113
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
2114
EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2115
2116
2117
2118
2119
  // 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
2120
2121
  var triggerData = Manipulator.getDataAttributes(this);
  var selector = getSelectorFromElement(this);
XhmikosR's avatar
XhmikosR committed
2122
  var selectorElements = SelectorEngine.find(selector);
XhmikosR's avatar
XhmikosR committed
2123
2124
2125
  selectorElements.forEach(function (element) {
    var data = Data.getData(element, DATA_KEY$3);
    var config;
XhmikosR's avatar
Dist.  
XhmikosR committed
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138

    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
2139
    Collapse.collapseInterface(element, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2140
2141
  });
});
XhmikosR's avatar
XhmikosR committed
2142
var $$4 = getjQuery();
XhmikosR's avatar
Dist.  
XhmikosR committed
2143
2144
2145
2146
2147
2148
2149
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
 * add .collapse to jQuery only if jQuery is present
 */

2150
2151
/* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
2152
2153
2154
2155
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
2156

XhmikosR's avatar
XhmikosR committed
2157
2158
2159
  $$4.fn[NAME$3].noConflict = function () {
    $$4.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
    return Collapse.jQueryInterface;
XhmikosR's avatar
Dist.  
XhmikosR committed
2160
2161
2162
2163
2164
2165
2166
2167
2168
  };
}

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

XhmikosR's avatar
XhmikosR committed
2169
var NAME$4 = 'dropdown';
2170
var VERSION$4 = '5.0.0-alpha1';
XhmikosR's avatar
XhmikosR committed
2171
2172
2173
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
2174
2175
2176
2177
2178
2179
2180
2181
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
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
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;
var CLASS_NAME_DISABLED$1 = 'disabled';
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
2209
var Default$2 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2210
2211
2212
2213
  offset: 0,
  flip: true,
  boundary: 'scrollParent',
  reference: 'toggle',
XhmikosR's avatar
XhmikosR committed
2214
2215
  display: 'dynamic',
  popperConfig: null
XhmikosR's avatar
Dist.  
XhmikosR committed
2216
};
XhmikosR's avatar
XhmikosR committed
2217
var DefaultType$2 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2218
2219
2220
2221
  offset: '(number|string|function)',
  flip: 'boolean',
  boundary: '(string|element)',
  reference: '(string|element)',
XhmikosR's avatar
XhmikosR committed
2222
2223
  display: 'string',
  popperConfig: '(null|object)'
XhmikosR's avatar
Dist.  
XhmikosR committed
2224
};
XhmikosR's avatar
XhmikosR committed
2225
2226
2227
2228
2229
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
2230

XhmikosR's avatar
XhmikosR committed
2231
var Dropdown = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
2232
  function Dropdown(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
    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
2245
  var _proto = Dropdown.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
2246

XhmikosR's avatar
XhmikosR committed
2247
2248
  // Public
  _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
2249
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2250
2251
2252
      return;
    }

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

XhmikosR's avatar
XhmikosR committed
2255
    Dropdown.clearMenus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2256
2257
2258
2259
2260

    if (isActive) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2261
2262
2263
2264
    this.show();
  };

  _proto.show = function show() {
XhmikosR's avatar
XhmikosR committed
2265
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED$1) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
XhmikosR committed
2266
2267
2268
2269
      return;
    }

    var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
XhmikosR committed
2270
    var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2271
2272
      relatedTarget: this._element
    };
XhmikosR's avatar
XhmikosR committed
2273
    var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284

    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
2285
      var referenceElement = this._element;
XhmikosR's avatar
Dist.  
XhmikosR committed
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300

      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
2301
        parent.classList.add(CLASS_NAME_POSITION_STATIC);
XhmikosR's avatar
Dist.  
XhmikosR committed
2302
2303
2304
2305
2306
2307
2308
2309
2310
      }

      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
2311
    if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
XhmikosR's avatar
XhmikosR committed
2312
2313
2314
      var _ref;

      (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {
XhmikosR's avatar
XhmikosR committed
2315
2316
        return EventHandler.on(elem, 'mouseover', null, noop());
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2317
2318
2319
2320
2321
2322
    }

    this._element.focus();

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

XhmikosR's avatar
XhmikosR committed
2323
2324
2325
    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
2326
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2327

XhmikosR's avatar
XhmikosR committed
2328
  _proto.hide = function hide() {
XhmikosR's avatar
XhmikosR committed
2329
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED$1) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2330
2331
2332
      return;
    }

XhmikosR's avatar
XhmikosR committed
2333
    var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
XhmikosR committed
2334
    var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2335
2336
      relatedTarget: this._element
    };
XhmikosR's avatar
XhmikosR committed
2337
    var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2338
2339
2340
2341
2342

    if (hideEvent.defaultPrevented) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2343
2344
2345
2346
    if (this._popper) {
      this._popper.destroy();
    }

XhmikosR's avatar
XhmikosR committed
2347
2348
2349
    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
2350
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2351

XhmikosR's avatar
XhmikosR committed
2352
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2353
2354
2355
2356
2357
    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
2358
    if (this._popper) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2359
2360
2361
2362
      this._popper.destroy();

      this._popper = null;
    }
XhmikosR's avatar
XhmikosR committed
2363
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2364

XhmikosR's avatar
XhmikosR committed
2365
  _proto.update = function update() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2366
2367
    this._inNavbar = this._detectNavbar();

XhmikosR's avatar
XhmikosR committed
2368
    if (this._popper) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2369
2370
2371
      this._popper.scheduleUpdate();
    }
  } // Private
XhmikosR's avatar
XhmikosR committed
2372
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2373

XhmikosR's avatar
XhmikosR committed
2374
2375
  _proto._addEventListeners = function _addEventListeners() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2376

XhmikosR's avatar
XhmikosR committed
2377
    EventHandler.on(this._element, EVENT_CLICK, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2378
2379
      event.preventDefault();
      event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
2380
2381

      _this.toggle();
XhmikosR's avatar
Dist.  
XhmikosR committed
2382
    });
XhmikosR's avatar
XhmikosR committed
2383
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2384

XhmikosR's avatar
XhmikosR committed
2385
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
2386
    config = _objectSpread2(_objectSpread2(_objectSpread2({}, this.constructor.Default), Manipulator.getDataAttributes(this._element)), config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2387
2388
    typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
    return config;
XhmikosR's avatar
XhmikosR committed
2389
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2390

XhmikosR's avatar
XhmikosR committed
2391
  _proto._getMenuElement = function _getMenuElement() {
XhmikosR's avatar
XhmikosR committed
2392
    return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
XhmikosR's avatar
XhmikosR committed
2393
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2394

XhmikosR's avatar
XhmikosR committed
2395
2396
  _proto._getPlacement = function _getPlacement() {
    var parentDropdown = this._element.parentNode;
XhmikosR's avatar
XhmikosR committed
2397
    var placement = PLACEMENT_BOTTOM; // Handle dropup
XhmikosR's avatar
Dist.  
XhmikosR committed
2398

XhmikosR's avatar
XhmikosR committed
2399
2400
    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
      placement = PLACEMENT_TOP;
XhmikosR's avatar
Dist.  
XhmikosR committed
2401

XhmikosR's avatar
XhmikosR committed
2402
2403
      if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {
        placement = PLACEMENT_TOPEND;
XhmikosR's avatar
Dist.  
XhmikosR committed
2404
      }
XhmikosR's avatar
XhmikosR committed
2405
2406
2407
2408
2409
2410
    } 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
2411
2412
2413
    }

    return placement;
XhmikosR's avatar
XhmikosR committed
2414
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2415

XhmikosR's avatar
XhmikosR committed
2416
  _proto._detectNavbar = function _detectNavbar() {
XhmikosR's avatar
XhmikosR committed
2417
    return Boolean(this._element.closest("." + CLASS_NAME_NAVBAR));
XhmikosR's avatar
XhmikosR committed
2418
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2419

XhmikosR's avatar
XhmikosR committed
2420
2421
2422
2423
  _proto._getOffset = function _getOffset() {
    var _this2 = this;

    var offset = {};
XhmikosR's avatar
Dist.  
XhmikosR committed
2424
2425

    if (typeof this._config.offset === 'function') {
XhmikosR's avatar
XhmikosR committed
2426
      offset.fn = function (data) {
XhmikosR's avatar
XhmikosR committed
2427
        data.offsets = _objectSpread2(_objectSpread2({}, data.offsets), _this2._config.offset(data.offsets, _this2._element) || {});
XhmikosR's avatar
Dist.  
XhmikosR committed
2428
2429
2430
2431
2432
2433
2434
        return data;
      };
    } else {
      offset.offset = this._config.offset;
    }

    return offset;
XhmikosR's avatar
XhmikosR committed
2435
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2436

XhmikosR's avatar
XhmikosR committed
2437
2438
  _proto._getPopperConfig = function _getPopperConfig() {
    var popperConfig = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2439
2440
2441
2442
2443
2444
2445
2446
2447
      placement: this._getPlacement(),
      modifiers: {
        offset: this._getOffset(),
        flip: {
          enabled: this._config.flip
        },
        preventOverflow: {
          boundariesElement: this._config.boundary
        }
XhmikosR's avatar
XhmikosR committed
2448
2449
      }
    }; // Disable Popper.js if we have a static display
XhmikosR's avatar
Dist.  
XhmikosR committed
2450
2451
2452
2453
2454
2455
2456

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

XhmikosR's avatar
XhmikosR committed
2457
    return _objectSpread2(_objectSpread2({}, popperConfig), this._config.popperConfig);
XhmikosR's avatar
Dist.  
XhmikosR committed
2458
  } // Static
XhmikosR's avatar
XhmikosR committed
2459
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2460

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

XhmikosR's avatar
XhmikosR committed
2464
    var _config = typeof config === 'object' ? config : null;
XhmikosR's avatar
Dist.  
XhmikosR committed
2465
2466
2467
2468
2469
2470
2471

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

    if (typeof config === 'string') {
      if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
2472
        throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
2473
2474
2475
2476
      }

      data[config]();
    }
XhmikosR's avatar
XhmikosR committed
2477
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2478

XhmikosR's avatar
XhmikosR committed
2479
  Dropdown.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2480
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
2481
      Dropdown.dropdownInterface(this, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2482
    });
XhmikosR's avatar
XhmikosR committed
2483
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2484

XhmikosR's avatar
XhmikosR committed
2485
  Dropdown.clearMenus = function clearMenus(event) {
XhmikosR's avatar
XhmikosR committed
2486
    if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2487
2488
2489
      return;
    }

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

XhmikosR's avatar
XhmikosR committed
2492
    for (var i = 0, len = toggles.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
2493
      var parent = Dropdown.getParentFromElement(toggles[i]);
XhmikosR's avatar
XhmikosR committed
2494
2495
      var context = Data.getData(toggles[i], DATA_KEY$4);
      var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
        relatedTarget: toggles[i]
      };

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

      if (!context) {
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2507
      var dropdownMenu = context._menu;
XhmikosR's avatar
Dist.  
XhmikosR committed
2508

XhmikosR's avatar
XhmikosR committed
2509
      if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2510
2511
2512
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2513
      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
2514
2515
2516
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2517
      var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2518
2519
2520
2521
2522
2523
2524
2525

      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
2526
2527
2528
        var _ref2;

        (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {
XhmikosR's avatar
XhmikosR committed
2529
2530
          return EventHandler.off(elem, 'mouseover', null, noop());
        });
XhmikosR's avatar
Dist.  
XhmikosR committed
2531
2532
2533
      }

      toggles[i].setAttribute('aria-expanded', 'false');
XhmikosR's avatar
XhmikosR committed
2534
2535
2536
2537
2538

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

XhmikosR's avatar
XhmikosR committed
2539
2540
2541
      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
2542
    }
XhmikosR's avatar
XhmikosR committed
2543
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2544

XhmikosR's avatar
XhmikosR committed
2545
2546
  Dropdown.getParentFromElement = function getParentFromElement(element) {
    return getElementFromSelector(element) || element.parentNode;
XhmikosR's avatar
XhmikosR committed
2547
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2548

XhmikosR's avatar
XhmikosR committed
2549
  Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2550
2551
2552
2553
2554
2555
2556
    // 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
2557
    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
2558
2559
2560
2561
2562
2563
      return;
    }

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

XhmikosR's avatar
XhmikosR committed
2564
    if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2565
2566
2567
      return;
    }

XhmikosR's avatar
XhmikosR committed
2568
    var parent = Dropdown.getParentFromElement(this);
XhmikosR's avatar
XhmikosR committed
2569
    var isActive = this.classList.contains(CLASS_NAME_SHOW$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
2570

XhmikosR's avatar
XhmikosR committed
2571
    if (event.key === ESCAPE_KEY) {
XhmikosR's avatar
XhmikosR committed
2572
2573
2574
2575
2576
      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
2577

XhmikosR's avatar
XhmikosR committed
2578
    if (!isActive || event.key === SPACE_KEY) {
XhmikosR's avatar
XhmikosR committed
2579
      Dropdown.clearMenus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2580
2581
2582
      return;
    }

XhmikosR's avatar
XhmikosR committed
2583
    var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
XhmikosR's avatar
Dist.  
XhmikosR committed
2584
2585
2586
2587
2588

    if (!items.length) {
      return;
    }

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

XhmikosR's avatar
XhmikosR committed
2591
    if (event.key === ARROW_UP_KEY && index > 0) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2592
2593
2594
2595
      // Up
      index--;
    }

XhmikosR's avatar
XhmikosR committed
2596
    if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2597
2598
      // Down
      index++;
XhmikosR's avatar
XhmikosR committed
2599
2600
    } // index is -1 if the first keydown is an ArrowUp

XhmikosR's avatar
Dist.  
XhmikosR committed
2601

XhmikosR's avatar
XhmikosR committed
2602
    index = index === -1 ? 0 : index;
XhmikosR's avatar
Dist.  
XhmikosR committed
2603
    items[index].focus();
XhmikosR's avatar
XhmikosR committed
2604
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2605

XhmikosR's avatar
XhmikosR committed
2606
  Dropdown.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2607
    return Data.getData(element, DATA_KEY$4);
XhmikosR's avatar
XhmikosR committed
2608
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2609

XhmikosR's avatar
XhmikosR committed
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
  _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
2629
2630
2631
2632
2633
2634
2635
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
2636
2637
2638
2639
2640
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
2641
2642
  event.preventDefault();
  event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
2643
  Dropdown.dropdownInterface(this, 'toggle');
XhmikosR's avatar
Dist.  
XhmikosR committed
2644
});
XhmikosR's avatar
XhmikosR committed
2645
EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {
XhmikosR's avatar
XhmikosR committed
2646
2647
  return e.stopPropagation();
});
XhmikosR's avatar
XhmikosR committed
2648
var $$5 = getjQuery();
XhmikosR's avatar
Dist.  
XhmikosR committed
2649
2650
2651
2652
2653
2654
2655
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
 * add .dropdown to jQuery only if jQuery is present
 */

2656
2657
/* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
2658
2659
2660
2661
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
2662

XhmikosR's avatar
XhmikosR committed
2663
2664
2665
  $$5.fn[NAME$4].noConflict = function () {
    $$5.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
    return Dropdown.jQueryInterface;
XhmikosR's avatar
Dist.  
XhmikosR committed
2666
2667
2668
2669
2670
2671
2672
2673
2674
  };
}

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

XhmikosR's avatar
XhmikosR committed
2675
var NAME$5 = 'modal';
2676
var VERSION$5 = '5.0.0-alpha1';
XhmikosR's avatar
XhmikosR committed
2677
2678
2679
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
2680
var ESCAPE_KEY$1 = 'Escape';
XhmikosR's avatar
XhmikosR committed
2681
var Default$3 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2682
2683
2684
2685
2686
  backdrop: true,
  keyboard: true,
  focus: true,
  show: true
};
XhmikosR's avatar
XhmikosR committed
2687
var DefaultType$3 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2688
2689
2690
2691
2692
  backdrop: '(boolean|string)',
  keyboard: 'boolean',
  focus: 'boolean',
  show: 'boolean'
};
XhmikosR's avatar
XhmikosR committed
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
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
2717
2718
2719
2720
2721
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
2722

XhmikosR's avatar
XhmikosR committed
2723
var Modal = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
2724
  function Modal(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2725
2726
    this._config = this._getConfig(config);
    this._element = element;
XhmikosR's avatar
XhmikosR committed
2727
    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element);
XhmikosR's avatar
Dist.  
XhmikosR committed
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
    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
2738
  var _proto = Modal.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
2739

XhmikosR's avatar
XhmikosR committed
2740
2741
  // Public
  _proto.toggle = function toggle(relatedTarget) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2742
    return this._isShown ? this.hide() : this.show(relatedTarget);
XhmikosR's avatar
XhmikosR committed
2743
2744
2745
2746
  };

  _proto.show = function show(relatedTarget) {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2747
2748
2749
2750
2751

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

XhmikosR's avatar
XhmikosR committed
2752
    if (this._element.classList.contains(CLASS_NAME_FADE)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2753
2754
2755
      this._isTransitioning = true;
    }

XhmikosR's avatar
XhmikosR committed
2756
    var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
XhmikosR's avatar
XhmikosR committed
2757
      relatedTarget: relatedTarget
XhmikosR's avatar
Dist.  
XhmikosR committed
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
    });

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

    this._isShown = true;

    this._checkScrollbar();

    this._setScrollbar();

    this._adjustDialog();

    this._setEscapeEvent();

    this._setResizeEvent();

XhmikosR's avatar
XhmikosR committed
2776
    EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2777
2778
      return _this.hide(event);
    });
XhmikosR's avatar
XhmikosR committed
2779
2780
    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
      EventHandler.one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2781
2782
        if (event.target === _this._element) {
          _this._ignoreBackdropClick = true;
XhmikosR's avatar
Dist.  
XhmikosR committed
2783
2784
2785
2786
        }
      });
    });

XhmikosR's avatar
XhmikosR committed
2787
2788
2789
2790
2791
2792
2793
    this._showBackdrop(function () {
      return _this._showElement(relatedTarget);
    });
  };

  _proto.hide = function hide(event) {
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2794
2795
2796
2797
2798
2799
2800
2801
2802

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

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

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

2805
    if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2806
2807
2808
2809
2810
      return;
    }

    this._isShown = false;

XhmikosR's avatar
XhmikosR committed
2811
    var transition = this._element.classList.contains(CLASS_NAME_FADE);
XhmikosR's avatar
Dist.  
XhmikosR committed
2812
2813
2814
2815
2816
2817
2818
2819
2820

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

    this._setEscapeEvent();

    this._setResizeEvent();

XhmikosR's avatar
XhmikosR committed
2821
    EventHandler.off(document, EVENT_FOCUSIN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2822

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

XhmikosR's avatar
XhmikosR committed
2825
2826
    EventHandler.off(this._element, EVENT_CLICK_DISMISS);
    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
XhmikosR's avatar
Dist.  
XhmikosR committed
2827
2828

    if (transition) {
XhmikosR's avatar
XhmikosR committed
2829
2830
2831
2832
      var transitionDuration = getTransitionDurationFromElement(this._element);
      EventHandler.one(this._element, TRANSITION_END, function (event) {
        return _this2._hideModal(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2833
2834
2835
2836
      emulateTransitionEnd(this._element, transitionDuration);
    } else {
      this._hideModal();
    }
XhmikosR's avatar
XhmikosR committed
2837
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2838

XhmikosR's avatar
XhmikosR committed
2839
2840
2841
2842
  _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
2843
    /**
XhmikosR's avatar
XhmikosR committed
2844
     * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
XhmikosR's avatar
Dist.  
XhmikosR committed
2845
     * Do not move `document` in `htmlElements` array
XhmikosR's avatar
XhmikosR committed
2846
     * It will remove `EVENT_CLICK_DATA_API` event that should remain
XhmikosR's avatar
Dist.  
XhmikosR committed
2847
2848
     */

XhmikosR's avatar
XhmikosR committed
2849
    EventHandler.off(document, EVENT_FOCUSIN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
    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
2860
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2861

XhmikosR's avatar
XhmikosR committed
2862
  _proto.handleUpdate = function handleUpdate() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2863
2864
    this._adjustDialog();
  } // Private
XhmikosR's avatar
XhmikosR committed
2865
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2866

XhmikosR's avatar
XhmikosR committed
2867
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
2868
    config = _objectSpread2(_objectSpread2({}, Default$3), config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2869
2870
    typeCheckConfig(NAME$5, config, DefaultType$3);
    return config;
XhmikosR's avatar
XhmikosR committed
2871
2872
2873
2874
  };

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

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

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

XhmikosR's avatar
Dist.  
XhmikosR committed
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
    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);

XhmikosR's avatar
XhmikosR committed
2891
2892
2893
    this._element.scrollTop = 0;

    if (modalBody) {
XhmikosR's avatar
XhmikosR committed
2894
      modalBody.scrollTop = 0;
XhmikosR's avatar
Dist.  
XhmikosR committed
2895
2896
2897
2898
2899
2900
    }

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

XhmikosR's avatar
XhmikosR committed
2901
    this._element.classList.add(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2902
2903
2904
2905
2906

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

XhmikosR's avatar
XhmikosR committed
2907
2908
2909
    var transitionComplete = function transitionComplete() {
      if (_this3._config.focus) {
        _this3._element.focus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2910
2911
      }

XhmikosR's avatar
XhmikosR committed
2912
      _this3._isTransitioning = false;
XhmikosR's avatar
XhmikosR committed
2913
      EventHandler.trigger(_this3._element, EVENT_SHOWN$2, {
XhmikosR's avatar
XhmikosR committed
2914
        relatedTarget: relatedTarget
XhmikosR's avatar
Dist.  
XhmikosR committed
2915
2916
2917
2918
      });
    };

    if (transition) {
XhmikosR's avatar
XhmikosR committed
2919
      var transitionDuration = getTransitionDurationFromElement(this._dialog);
XhmikosR's avatar
Dist.  
XhmikosR committed
2920
2921
2922
2923
2924
      EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
      emulateTransitionEnd(this._dialog, transitionDuration);
    } else {
      transitionComplete();
    }
XhmikosR's avatar
XhmikosR committed
2925
2926
2927
2928
  };

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

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

XhmikosR's avatar
XhmikosR committed
2932
    EventHandler.on(document, EVENT_FOCUSIN, function (event) {
XhmikosR's avatar
XhmikosR committed
2933
2934
      if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {
        _this4._element.focus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2935
2936
      }
    });
XhmikosR's avatar
XhmikosR committed
2937
2938
2939
2940
  };

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

XhmikosR's avatar
XhmikosR committed
2942
2943
    if (this._isShown) {
      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2944
        if (_this5._config.keyboard && event.key === ESCAPE_KEY$1) {
XhmikosR's avatar
XhmikosR committed
2945
2946
2947
          event.preventDefault();

          _this5.hide();
XhmikosR's avatar
XhmikosR committed
2948
        } else if (!_this5._config.keyboard && event.key === ESCAPE_KEY$1) {
XhmikosR's avatar
XhmikosR committed
2949
          _this5._triggerBackdropTransition();
XhmikosR's avatar
Dist.  
XhmikosR committed
2950
2951
        }
      });
2952
    } else {
XhmikosR's avatar
XhmikosR committed
2953
      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS);
XhmikosR's avatar
Dist.  
XhmikosR committed
2954
    }
XhmikosR's avatar
XhmikosR committed
2955
2956
2957
2958
  };

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

    if (this._isShown) {
XhmikosR's avatar
XhmikosR committed
2961
      EventHandler.on(window, EVENT_RESIZE, function () {
2962
        return _this6._adjustDialog();
XhmikosR's avatar
XhmikosR committed
2963
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2964
    } else {
XhmikosR's avatar
XhmikosR committed
2965
      EventHandler.off(window, EVENT_RESIZE);
XhmikosR's avatar
Dist.  
XhmikosR committed
2966
    }
XhmikosR's avatar
XhmikosR committed
2967
2968
2969
2970
  };

  _proto._hideModal = function _hideModal() {
    var _this7 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2971
2972
2973
2974
2975
2976
2977
2978
2979

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

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

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

    this._isTransitioning = false;

XhmikosR's avatar
XhmikosR committed
2980
    this._showBackdrop(function () {
XhmikosR's avatar
XhmikosR committed
2981
      document.body.classList.remove(CLASS_NAME_OPEN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2982

XhmikosR's avatar
XhmikosR committed
2983
      _this7._resetAdjustments();
XhmikosR's avatar
Dist.  
XhmikosR committed
2984

XhmikosR's avatar
XhmikosR committed
2985
      _this7._resetScrollbar();
XhmikosR's avatar
Dist.  
XhmikosR committed
2986

XhmikosR's avatar
XhmikosR committed
2987
      EventHandler.trigger(_this7._element, EVENT_HIDDEN$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2988
    });
XhmikosR's avatar
XhmikosR committed
2989
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2990

XhmikosR's avatar
XhmikosR committed
2991
  _proto._removeBackdrop = function _removeBackdrop() {
2992
    this._backdrop.parentNode.removeChild(this._backdrop);
XhmikosR's avatar
Dist.  
XhmikosR committed
2993

2994
    this._backdrop = null;
XhmikosR's avatar
XhmikosR committed
2995
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2996

XhmikosR's avatar
XhmikosR committed
2997
2998
2999
  _proto._showBackdrop = function _showBackdrop(callback) {
    var _this8 = this;

XhmikosR's avatar
XhmikosR committed
3000
    var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
For faster browsing, not all history is shown. View entire blame