bootstrap.js 112 KB
Newer Older
Mark Otto's avatar
grunt    
Mark Otto committed
2001
      });
Mark Otto's avatar
grunt    
Mark Otto committed
2002
    };
Jacob Thornton's avatar
Jacob Thornton committed
2003

Mark Otto's avatar
dist    
Mark Otto committed
2004
    _proto.hide = function hide(event) {
Mark Otto's avatar
dist    
Mark Otto committed
2005
      var _this2 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2006

Mark Otto's avatar
grunt    
Mark Otto committed
2007
2008
      if (event) {
        event.preventDefault();
Jacob Thornton's avatar
Jacob Thornton committed
2009
2010
      }

Mark Otto's avatar
grunt    
Mark Otto committed
2011
2012
      if (this._isTransitioning || !this._isShown) {
        return;
Mark Otto's avatar
grunt    
Mark Otto committed
2013
      }
Jacob Thornton's avatar
Jacob Thornton committed
2014

Mark Otto's avatar
dist    
Mark Otto committed
2015
2016
      var hideEvent = $$$1.Event(Event.HIDE);
      $$$1(this._element).trigger(hideEvent);
Jacob Thornton's avatar
Jacob Thornton committed
2017

Mark Otto's avatar
grunt    
Mark Otto committed
2018
2019
2020
      if (!this._isShown || hideEvent.isDefaultPrevented()) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2021

Mark Otto's avatar
grunt    
Mark Otto committed
2022
      this._isShown = false;
Mark Otto's avatar
dist    
Mark Otto committed
2023
      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
Mark Otto's avatar
dist    
Mark Otto committed
2024
2025
2026
2027

      if (transition) {
        this._isTransitioning = true;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2028

Mark Otto's avatar
grunt    
Mark Otto committed
2029
      this._setEscapeEvent();
Mark Otto's avatar
dist    
Mark Otto committed
2030

Mark Otto's avatar
grunt    
Mark Otto committed
2031
      this._setResizeEvent();
Jacob Thornton's avatar
Jacob Thornton committed
2032

Mark Otto's avatar
dist    
Mark Otto committed
2033
2034
2035
2036
      $$$1(document).off(Event.FOCUSIN);
      $$$1(this._element).removeClass(ClassName.SHOW);
      $$$1(this._element).off(Event.CLICK_DISMISS);
      $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
Jacob Thornton's avatar
Jacob Thornton committed
2037

Mark Otto's avatar
grunt    
Mark Otto committed
2038
      if (transition) {
Mark Otto's avatar
dist    
Mark Otto committed
2039
        $$$1(this._element).one(Util.TRANSITION_END, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2040
          return _this2._hideModal(event);
Mark Otto's avatar
grunt    
Mark Otto committed
2041
        }).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
2042
2043
      } else {
        this._hideModal();
Jacob Thornton's avatar
Jacob Thornton committed
2044
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2045
    };
Jacob Thornton's avatar
Jacob Thornton committed
2046

Mark Otto's avatar
dist    
Mark Otto committed
2047
    _proto.dispose = function dispose() {
Mark Otto's avatar
dist    
Mark Otto committed
2048
2049
      $$$1.removeData(this._element, DATA_KEY);
      $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
Mark Otto's avatar
grunt    
Mark Otto committed
2050
2051
2052
2053
2054
2055
2056
2057
2058
      this._config = null;
      this._element = null;
      this._dialog = null;
      this._backdrop = null;
      this._isShown = null;
      this._isBodyOverflowing = null;
      this._ignoreBackdropClick = null;
      this._scrollbarWidth = null;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2059

Mark Otto's avatar
dist    
Mark Otto committed
2060
    _proto.handleUpdate = function handleUpdate() {
Mark Otto's avatar
grunt    
Mark Otto committed
2061
      this._adjustDialog();
Mark Otto's avatar
dist    
Mark Otto committed
2062
    }; // private
Mark Otto's avatar
grunt    
Mark Otto committed
2063

Jacob Thornton's avatar
Jacob Thornton committed
2064

Mark Otto's avatar
dist    
Mark Otto committed
2065
    _proto._getConfig = function _getConfig(config) {
Mark Otto's avatar
dist    
Mark Otto committed
2066
      config = _extends({}, Default, config);
Mark Otto's avatar
grunt    
Mark Otto committed
2067
2068
2069
      Util.typeCheckConfig(NAME, config, DefaultType);
      return config;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2070

Mark Otto's avatar
dist    
Mark Otto committed
2071
    _proto._showElement = function _showElement(relatedTarget) {
Mark Otto's avatar
dist    
Mark Otto committed
2072
      var _this3 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2073

Mark Otto's avatar
dist    
Mark Otto committed
2074
      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
Jacob Thornton's avatar
Jacob Thornton committed
2075

Mark Otto's avatar
grunt    
Mark Otto committed
2076
2077
2078
2079
      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
        // don't move modals dom position
        document.body.appendChild(this._element);
      }
Jacob Thornton's avatar
Jacob Thornton committed
2080

Mark Otto's avatar
grunt    
Mark Otto committed
2081
      this._element.style.display = 'block';
Mark Otto's avatar
dist    
Mark Otto committed
2082

Mark Otto's avatar
grunt    
Mark Otto committed
2083
      this._element.removeAttribute('aria-hidden');
Mark Otto's avatar
dist    
Mark Otto committed
2084

Mark Otto's avatar
grunt    
Mark Otto committed
2085
      this._element.scrollTop = 0;
Jacob Thornton's avatar
Jacob Thornton committed
2086

Mark Otto's avatar
grunt    
Mark Otto committed
2087
2088
      if (transition) {
        Util.reflow(this._element);
Jacob Thornton's avatar
Jacob Thornton committed
2089
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2090

Mark Otto's avatar
dist    
Mark Otto committed
2091
      $$$1(this._element).addClass(ClassName.SHOW);
Mark Otto's avatar
grunt    
Mark Otto committed
2092
2093
2094

      if (this._config.focus) {
        this._enforceFocus();
Jacob Thornton's avatar
Jacob Thornton committed
2095
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2096

Mark Otto's avatar
dist    
Mark Otto committed
2097
      var shownEvent = $$$1.Event(Event.SHOWN, {
Mark Otto's avatar
grunt    
Mark Otto committed
2098
2099
2100
2101
        relatedTarget: relatedTarget
      });

      var transitionComplete = function transitionComplete() {
Mark Otto's avatar
dist    
Mark Otto committed
2102
2103
        if (_this3._config.focus) {
          _this3._element.focus();
Jacob Thornton's avatar
Jacob Thornton committed
2104
        }
Mark Otto's avatar
dist    
Mark Otto committed
2105

Mark Otto's avatar
dist    
Mark Otto committed
2106
        _this3._isTransitioning = false;
Mark Otto's avatar
dist    
Mark Otto committed
2107
        $$$1(_this3._element).trigger(shownEvent);
Mark Otto's avatar
grunt    
Mark Otto committed
2108
2109
2110
      };

      if (transition) {
Mark Otto's avatar
dist    
Mark Otto committed
2111
        $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
2112
2113
      } else {
        transitionComplete();
Jacob Thornton's avatar
Jacob Thornton committed
2114
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2115
2116
    };

Mark Otto's avatar
dist    
Mark Otto committed
2117
    _proto._enforceFocus = function _enforceFocus() {
Mark Otto's avatar
dist    
Mark Otto committed
2118
      var _this4 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2119

Mark Otto's avatar
dist    
Mark Otto committed
2120
      $$$1(document).off(Event.FOCUSIN) // guard against infinite focus loop
Mark Otto's avatar
Mark Otto committed
2121
      .on(Event.FOCUSIN, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2122
        if (document !== event.target && _this4._element !== event.target && !$$$1(_this4._element).has(event.target).length) {
Mark Otto's avatar
dist    
Mark Otto committed
2123
          _this4._element.focus();
Jacob Thornton's avatar
Jacob Thornton committed
2124
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2125
2126
2127
      });
    };

Mark Otto's avatar
dist    
Mark Otto committed
2128
    _proto._setEscapeEvent = function _setEscapeEvent() {
Mark Otto's avatar
dist    
Mark Otto committed
2129
      var _this5 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2130
2131

      if (this._isShown && this._config.keyboard) {
Mark Otto's avatar
dist    
Mark Otto committed
2132
        $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
Mark Otto's avatar
grunt    
Mark Otto committed
2133
          if (event.which === ESCAPE_KEYCODE) {
Mark Otto's avatar
grunt    
Mark Otto committed
2134
            event.preventDefault();
Mark Otto's avatar
dist    
Mark Otto committed
2135

Mark Otto's avatar
dist    
Mark Otto committed
2136
            _this5.hide();
Mark Otto's avatar
grunt    
Mark Otto committed
2137
          }
Jacob Thornton's avatar
Jacob Thornton committed
2138
        });
Mark Otto's avatar
grunt    
Mark Otto committed
2139
      } else if (!this._isShown) {
Mark Otto's avatar
dist    
Mark Otto committed
2140
        $$$1(this._element).off(Event.KEYDOWN_DISMISS);
Jacob Thornton's avatar
Jacob Thornton committed
2141
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2142
2143
    };

Mark Otto's avatar
dist    
Mark Otto committed
2144
    _proto._setResizeEvent = function _setResizeEvent() {
Mark Otto's avatar
dist    
Mark Otto committed
2145
      var _this6 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2146

Mark Otto's avatar
grunt    
Mark Otto committed
2147
      if (this._isShown) {
Mark Otto's avatar
dist    
Mark Otto committed
2148
        $$$1(window).on(Event.RESIZE, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2149
          return _this6.handleUpdate(event);
Mark Otto's avatar
grunt    
Mark Otto committed
2150
        });
Mark Otto's avatar
grunt    
Mark Otto committed
2151
      } else {
Mark Otto's avatar
dist    
Mark Otto committed
2152
        $$$1(window).off(Event.RESIZE);
Jacob Thornton's avatar
Jacob Thornton committed
2153
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2154
    };
Jacob Thornton's avatar
Jacob Thornton committed
2155

Mark Otto's avatar
dist    
Mark Otto committed
2156
    _proto._hideModal = function _hideModal() {
Mark Otto's avatar
dist    
Mark Otto committed
2157
      var _this7 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2158

Mark Otto's avatar
grunt    
Mark Otto committed
2159
      this._element.style.display = 'none';
Mark Otto's avatar
dist    
Mark Otto committed
2160

Mark Otto's avatar
grunt    
Mark Otto committed
2161
      this._element.setAttribute('aria-hidden', true);
Mark Otto's avatar
dist    
Mark Otto committed
2162

Mark Otto's avatar
grunt    
Mark Otto committed
2163
      this._isTransitioning = false;
Mark Otto's avatar
dist    
Mark Otto committed
2164

Mark Otto's avatar
grunt    
Mark Otto committed
2165
      this._showBackdrop(function () {
Mark Otto's avatar
dist    
Mark Otto committed
2166
        $$$1(document.body).removeClass(ClassName.OPEN);
Mark Otto's avatar
dist    
Mark Otto committed
2167

Mark Otto's avatar
dist    
Mark Otto committed
2168
        _this7._resetAdjustments();
Mark Otto's avatar
dist    
Mark Otto committed
2169

Mark Otto's avatar
dist    
Mark Otto committed
2170
        _this7._resetScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
2171

Mark Otto's avatar
dist    
Mark Otto committed
2172
        $$$1(_this7._element).trigger(Event.HIDDEN);
Mark Otto's avatar
grunt    
Mark Otto committed
2173
2174
      });
    };
Jacob Thornton's avatar
Jacob Thornton committed
2175

Mark Otto's avatar
dist    
Mark Otto committed
2176
    _proto._removeBackdrop = function _removeBackdrop() {
Mark Otto's avatar
grunt    
Mark Otto committed
2177
      if (this._backdrop) {
Mark Otto's avatar
dist    
Mark Otto committed
2178
        $$$1(this._backdrop).remove();
Mark Otto's avatar
grunt    
Mark Otto committed
2179
2180
2181
        this._backdrop = null;
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
2182

Mark Otto's avatar
dist    
Mark Otto committed
2183
    _proto._showBackdrop = function _showBackdrop(callback) {
Mark Otto's avatar
dist    
Mark Otto committed
2184
      var _this8 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2185

Mark Otto's avatar
dist    
Mark Otto committed
2186
      var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
Jacob Thornton's avatar
Jacob Thornton committed
2187

Mark Otto's avatar
grunt    
Mark Otto committed
2188
2189
2190
2191
2192
2193
      if (this._isShown && this._config.backdrop) {
        var doAnimate = Util.supportsTransitionEnd() && animate;
        this._backdrop = document.createElement('div');
        this._backdrop.className = ClassName.BACKDROP;

        if (animate) {
Mark Otto's avatar
dist    
Mark Otto committed
2194
          $$$1(this._backdrop).addClass(animate);
Mark Otto's avatar
grunt    
Mark Otto committed
2195
        }
Jacob Thornton's avatar
Jacob Thornton committed
2196

Mark Otto's avatar
dist    
Mark Otto committed
2197
2198
        $$$1(this._backdrop).appendTo(document.body);
        $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2199
2200
          if (_this8._ignoreBackdropClick) {
            _this8._ignoreBackdropClick = false;
Jacob Thornton's avatar
Jacob Thornton committed
2201
2202
            return;
          }
Mark Otto's avatar
dist    
Mark Otto committed
2203

Mark Otto's avatar
grunt    
Mark Otto committed
2204
          if (event.target !== event.currentTarget) {
Jacob Thornton's avatar
Jacob Thornton committed
2205
2206
            return;
          }
Mark Otto's avatar
dist    
Mark Otto committed
2207

Mark Otto's avatar
dist    
Mark Otto committed
2208
2209
          if (_this8._config.backdrop === 'static') {
            _this8._element.focus();
Mark Otto's avatar
grunt    
Mark Otto committed
2210
          } else {
Mark Otto's avatar
dist    
Mark Otto committed
2211
            _this8.hide();
Mark Otto's avatar
grunt    
Mark Otto committed
2212
2213
          }
        });
Jacob Thornton's avatar
Jacob Thornton committed
2214

Mark Otto's avatar
grunt    
Mark Otto committed
2215
2216
2217
        if (doAnimate) {
          Util.reflow(this._backdrop);
        }
Jacob Thornton's avatar
Jacob Thornton committed
2218

Mark Otto's avatar
dist    
Mark Otto committed
2219
        $$$1(this._backdrop).addClass(ClassName.SHOW);
Jacob Thornton's avatar
Jacob Thornton committed
2220

Mark Otto's avatar
grunt    
Mark Otto committed
2221
2222
2223
2224
2225
        if (!callback) {
          return;
        }

        if (!doAnimate) {
Jacob Thornton's avatar
Jacob Thornton committed
2226
          callback();
Mark Otto's avatar
grunt    
Mark Otto committed
2227
          return;
Jacob Thornton's avatar
Jacob Thornton committed
2228
2229
        }

Mark Otto's avatar
dist    
Mark Otto committed
2230
        $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
2231
      } else if (!this._isShown && this._backdrop) {
Mark Otto's avatar
dist    
Mark Otto committed
2232
        $$$1(this._backdrop).removeClass(ClassName.SHOW);
Jacob Thornton's avatar
Jacob Thornton committed
2233

Mark Otto's avatar
grunt    
Mark Otto committed
2234
        var callbackRemove = function callbackRemove() {
Mark Otto's avatar
dist    
Mark Otto committed
2235
          _this8._removeBackdrop();
Mark Otto's avatar
dist    
Mark Otto committed
2236

Mark Otto's avatar
grunt    
Mark Otto committed
2237
2238
2239
2240
          if (callback) {
            callback();
          }
        };
Jacob Thornton's avatar
Jacob Thornton committed
2241

Mark Otto's avatar
dist    
Mark Otto committed
2242
2243
        if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) {
          $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
2244
2245
        } else {
          callbackRemove();
Jacob Thornton's avatar
Jacob Thornton committed
2246
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2247
2248
2249
      } else if (callback) {
        callback();
      }
Mark Otto's avatar
dist    
Mark Otto committed
2250
    }; // ----------------------------------------------------------------------
Mark Otto's avatar
grunt    
Mark Otto committed
2251
2252
2253
2254
    // the following methods are used to handle overflowing modals
    // todo (fat): these should probably be refactored out of modal.js
    // ----------------------------------------------------------------------

Mark Otto's avatar
dist    
Mark Otto committed
2255
2256

    _proto._adjustDialog = function _adjustDialog() {
Mark Otto's avatar
grunt    
Mark Otto committed
2257
2258
2259
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;

      if (!this._isBodyOverflowing && isModalOverflowing) {
Mark Otto's avatar
dist    
Mark Otto committed
2260
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
Jacob Thornton's avatar
Jacob Thornton committed
2261
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2262
2263

      if (this._isBodyOverflowing && !isModalOverflowing) {
Mark Otto's avatar
dist    
Mark Otto committed
2264
        this._element.style.paddingRight = this._scrollbarWidth + "px";
Jacob Thornton's avatar
Jacob Thornton committed
2265
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2266
2267
    };

Mark Otto's avatar
dist    
Mark Otto committed
2268
    _proto._resetAdjustments = function _resetAdjustments() {
Mark Otto's avatar
grunt    
Mark Otto committed
2269
2270
2271
2272
      this._element.style.paddingLeft = '';
      this._element.style.paddingRight = '';
    };

Mark Otto's avatar
dist    
Mark Otto committed
2273
    _proto._checkScrollbar = function _checkScrollbar() {
Mark Otto's avatar
dist    
Mark Otto committed
2274
2275
      var rect = document.body.getBoundingClientRect();
      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
Mark Otto's avatar
grunt    
Mark Otto committed
2276
2277
2278
      this._scrollbarWidth = this._getScrollbarWidth();
    };

Mark Otto's avatar
dist    
Mark Otto committed
2279
    _proto._setScrollbar = function _setScrollbar() {
Mark Otto's avatar
dist    
Mark Otto committed
2280
      var _this9 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2281
2282

      if (this._isBodyOverflowing) {
Mark Otto's avatar
grunt    
Mark Otto committed
2283
2284
2285
        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
        // Adjust fixed content padding
Mark Otto's avatar
dist    
Mark Otto committed
2286
2287
2288
2289
        $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
          var actualPadding = $$$1(element)[0].style.paddingRight;
          var calculatedPadding = $$$1(element).css('padding-right');
          $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
Mark Otto's avatar
dist    
Mark Otto committed
2290
        }); // Adjust sticky content margin
Mark Otto's avatar
dist    
Mark Otto committed
2291

Mark Otto's avatar
dist    
Mark Otto committed
2292
2293
2294
2295
        $$$1(Selector.STICKY_CONTENT).each(function (index, element) {
          var actualMargin = $$$1(element)[0].style.marginRight;
          var calculatedMargin = $$$1(element).css('margin-right');
          $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
Mark Otto's avatar
dist    
Mark Otto committed
2296
        }); // Adjust navbar-toggler margin
Mark Otto's avatar
grunt    
Mark Otto committed
2297

Mark Otto's avatar
dist    
Mark Otto committed
2298
2299
2300
2301
        $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {
          var actualMargin = $$$1(element)[0].style.marginRight;
          var calculatedMargin = $$$1(element).css('margin-right');
          $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
Mark Otto's avatar
dist    
Mark Otto committed
2302
        }); // Adjust body padding
Mark Otto's avatar
grunt    
Mark Otto committed
2303

Mark Otto's avatar
Mark Otto committed
2304
        var actualPadding = document.body.style.paddingRight;
Mark Otto's avatar
dist    
Mark Otto committed
2305
2306
        var calculatedPadding = $$$1('body').css('padding-right');
        $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
Jacob Thornton's avatar
Jacob Thornton committed
2307
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2308
    };
Jacob Thornton's avatar
Jacob Thornton committed
2309

Mark Otto's avatar
dist    
Mark Otto committed
2310
    _proto._resetScrollbar = function _resetScrollbar() {
Mark Otto's avatar
grunt    
Mark Otto committed
2311
      // Restore fixed content padding
Mark Otto's avatar
dist    
Mark Otto committed
2312
2313
      $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
        var padding = $$$1(element).data('padding-right');
Mark Otto's avatar
dist    
Mark Otto committed
2314

Mark Otto's avatar
grunt    
Mark Otto committed
2315
        if (typeof padding !== 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2316
          $$$1(element).css('padding-right', padding).removeData('padding-right');
Mark Otto's avatar
grunt    
Mark Otto committed
2317
        }
Mark Otto's avatar
dist    
Mark Otto committed
2318
      }); // Restore sticky content and navbar-toggler margin
Mark Otto's avatar
grunt    
Mark Otto committed
2319

Mark Otto's avatar
dist    
Mark Otto committed
2320
2321
      $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
        var margin = $$$1(element).data('margin-right');
Mark Otto's avatar
dist    
Mark Otto committed
2322

Mark Otto's avatar
grunt    
Mark Otto committed
2323
        if (typeof margin !== 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2324
          $$$1(element).css('margin-right', margin).removeData('margin-right');
Mark Otto's avatar
grunt    
Mark Otto committed
2325
        }
Mark Otto's avatar
dist    
Mark Otto committed
2326
      }); // Restore body padding
Mark Otto's avatar
grunt    
Mark Otto committed
2327

Mark Otto's avatar
dist    
Mark Otto committed
2328
      var padding = $$$1('body').data('padding-right');
Mark Otto's avatar
dist    
Mark Otto committed
2329

Mark Otto's avatar
grunt    
Mark Otto committed
2330
      if (typeof padding !== 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2331
        $$$1('body').css('padding-right', padding).removeData('padding-right');
Mark Otto's avatar
grunt    
Mark Otto committed
2332
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2333
    };
Jacob Thornton's avatar
Jacob Thornton committed
2334

Mark Otto's avatar
dist    
Mark Otto committed
2335
    _proto._getScrollbarWidth = function _getScrollbarWidth() {
Mark Otto's avatar
grunt    
Mark Otto committed
2336
2337
2338
2339
      // thx d.walsh
      var scrollDiv = document.createElement('div');
      scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
      document.body.appendChild(scrollDiv);
Mark Otto's avatar
grunt    
Mark Otto committed
2340
      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
Mark Otto's avatar
grunt    
Mark Otto committed
2341
2342
      document.body.removeChild(scrollDiv);
      return scrollbarWidth;
Mark Otto's avatar
dist    
Mark Otto committed
2343
    }; // static
Mark Otto's avatar
grunt    
Mark Otto committed
2344
2345
2346
2347


    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
      return this.each(function () {
Mark Otto's avatar
dist    
Mark Otto committed
2348
        var data = $$$1(this).data(DATA_KEY);
Mark Otto's avatar
dist    
Mark Otto committed
2349

Mark Otto's avatar
dist    
Mark Otto committed
2350
        var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config);
Mark Otto's avatar
grunt    
Mark Otto committed
2351
2352
2353

        if (!data) {
          data = new Modal(this, _config);
Mark Otto's avatar
dist    
Mark Otto committed
2354
          $$$1(this).data(DATA_KEY, data);
Jacob Thornton's avatar
Jacob Thornton committed
2355
2356
        }

Mark Otto's avatar
grunt    
Mark Otto committed
2357
        if (typeof config === 'string') {
Mark Otto's avatar
dist    
Mark Otto committed
2358
          if (typeof data[config] === 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2359
            throw new Error("No method named \"" + config + "\"");
Jacob Thornton's avatar
Jacob Thornton committed
2360
          }
Mark Otto's avatar
dist    
Mark Otto committed
2361

Mark Otto's avatar
grunt    
Mark Otto committed
2362
2363
2364
2365
2366
2367
2368
          data[config](relatedTarget);
        } else if (_config.show) {
          data.show(relatedTarget);
        }
      });
    };

Mark Otto's avatar
Mark Otto committed
2369
    _createClass(Modal, null, [{
Mark Otto's avatar
dist    
Mark Otto committed
2370
      key: "VERSION",
Jacob Thornton's avatar
Jacob Thornton committed
2371
2372
2373
2374
      get: function get() {
        return VERSION;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
2375
      key: "Default",
Jacob Thornton's avatar
Jacob Thornton committed
2376
2377
2378
2379
2380
      get: function get() {
        return Default;
      }
    }]);
    return Modal;
Mark Otto's avatar
grunt    
Mark Otto committed
2381
2382
2383
2384
2385
2386
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Jacob Thornton's avatar
Jacob Thornton committed
2387

Mark Otto's avatar
dist    
Mark Otto committed
2388

Mark Otto's avatar
dist    
Mark Otto committed
2389
  $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2390
    var _this10 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2391

Mark Otto's avatar
dist    
Mark Otto committed
2392
    var target;
Jacob Thornton's avatar
Jacob Thornton committed
2393
2394
2395
    var selector = Util.getSelectorFromElement(this);

    if (selector) {
Mark Otto's avatar
dist    
Mark Otto committed
2396
      target = $$$1(selector)[0];
Jacob Thornton's avatar
Jacob Thornton committed
2397
2398
    }

Mark Otto's avatar
dist    
Mark Otto committed
2399
    var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data());
Jacob Thornton's avatar
Jacob Thornton committed
2400

Mark Otto's avatar
grunt    
Mark Otto committed
2401
    if (this.tagName === 'A' || this.tagName === 'AREA') {
Jacob Thornton's avatar
Jacob Thornton committed
2402
2403
2404
      event.preventDefault();
    }

Mark Otto's avatar
dist    
Mark Otto committed
2405
    var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
Jacob Thornton's avatar
Jacob Thornton committed
2406
2407
2408
2409
2410
2411
      if (showEvent.isDefaultPrevented()) {
        // only register focus restorer if modal will actually get shown
        return;
      }

      $target.one(Event.HIDDEN, function () {
Mark Otto's avatar
dist    
Mark Otto committed
2412
        if ($$$1(_this10).is(':visible')) {
Mark Otto's avatar
dist    
Mark Otto committed
2413
          _this10.focus();
Jacob Thornton's avatar
Jacob Thornton committed
2414
2415
2416
2417
        }
      });
    });

Mark Otto's avatar
dist    
Mark Otto committed
2418
    Modal._jQueryInterface.call($$$1(target), config, this);
Mark Otto's avatar
Mark Otto committed
2419
  });
Jacob Thornton's avatar
Jacob Thornton committed
2420
2421
2422
2423
2424
2425
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
dist    
Mark Otto committed
2426
2427
  $$$1.fn[NAME] = Modal._jQueryInterface;
  $$$1.fn[NAME].Constructor = Modal;
Mark Otto's avatar
dist    
Mark Otto committed
2428

Mark Otto's avatar
dist    
Mark Otto committed
2429
2430
  $$$1.fn[NAME].noConflict = function () {
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
Jacob Thornton's avatar
Jacob Thornton committed
2431
2432
2433
2434
    return Modal._jQueryInterface;
  };

  return Modal;
Mark Otto's avatar
dist    
Mark Otto committed
2435
}($);
Jacob Thornton's avatar
Jacob Thornton committed
2436
2437
2438

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
2439
 * Bootstrap (v4.0.0-beta.3): tooltip.js
Jacob Thornton's avatar
Jacob Thornton committed
2440
2441
2442
2443
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
2444
var Tooltip = function ($$$1) {
Jacob Thornton's avatar
Jacob Thornton committed
2445
2446
2447
2448
2449
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist    
Mark Otto committed
2450
  var NAME = 'tooltip';
Mark Otto's avatar
Mark Otto committed
2451
  var VERSION = '4.0.0-beta.3';
Mark Otto's avatar
dist    
Mark Otto committed
2452
  var DATA_KEY = 'bs.tooltip';
Mark Otto's avatar
dist    
Mark Otto committed
2453
  var EVENT_KEY = "." + DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
2454
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
Mark Otto's avatar
dist    
Mark Otto committed
2455
2456
  var TRANSITION_DURATION = 150;
  var CLASS_PREFIX = 'bs-tooltip';
Mark Otto's avatar
dist    
Mark Otto committed
2457
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
Mark Otto's avatar
dist    
Mark Otto committed
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
  var DefaultType = {
    animation: 'boolean',
    template: 'string',
    title: '(string|element|function)',
    trigger: 'string',
    delay: '(number|object)',
    html: 'boolean',
    selector: '(string|boolean)',
    placement: '(string|function)',
    offset: '(number|string)',
    container: '(string|element|boolean)',
Mark Otto's avatar
dist    
Mark Otto committed
2469
2470
    fallbackPlacement: '(string|array)',
    boundary: '(string|element)'
Mark Otto's avatar
dist    
Mark Otto committed
2471
2472
2473
2474
2475
2476
2477
2478
  };
  var AttachmentMap = {
    AUTO: 'auto',
    TOP: 'top',
    RIGHT: 'right',
    BOTTOM: 'bottom',
    LEFT: 'left'
  };
Jacob Thornton's avatar
Jacob Thornton committed
2479
  var Default = {
Mark Otto's avatar
dist    
Mark Otto committed
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
    animation: true,
    template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
    trigger: 'hover focus',
    title: '',
    delay: 0,
    html: false,
    selector: false,
    placement: 'top',
    offset: 0,
    container: false,
Mark Otto's avatar
dist    
Mark Otto committed
2490
2491
    fallbackPlacement: 'flip',
    boundary: 'scrollParent'
Jacob Thornton's avatar
Jacob Thornton committed
2492
  };
Mark Otto's avatar
dist    
Mark Otto committed
2493
2494
2495
  var HoverState = {
    SHOW: 'show',
    OUT: 'out'
Jacob Thornton's avatar
Jacob Thornton committed
2496
2497
  };
  var Event = {
Mark Otto's avatar
dist    
Mark Otto committed
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
    HIDE: "hide" + EVENT_KEY,
    HIDDEN: "hidden" + EVENT_KEY,
    SHOW: "show" + EVENT_KEY,
    SHOWN: "shown" + EVENT_KEY,
    INSERTED: "inserted" + EVENT_KEY,
    CLICK: "click" + EVENT_KEY,
    FOCUSIN: "focusin" + EVENT_KEY,
    FOCUSOUT: "focusout" + EVENT_KEY,
    MOUSEENTER: "mouseenter" + EVENT_KEY,
    MOUSELEAVE: "mouseleave" + EVENT_KEY
Jacob Thornton's avatar
Jacob Thornton committed
2508
2509
  };
  var ClassName = {
Mark Otto's avatar
dist    
Mark Otto committed
2510
2511
    FADE: 'fade',
    SHOW: 'show'
Jacob Thornton's avatar
Jacob Thornton committed
2512
2513
  };
  var Selector = {
Mark Otto's avatar
dist    
Mark Otto committed
2514
2515
2516
    TOOLTIP: '.tooltip',
    TOOLTIP_INNER: '.tooltip-inner',
    ARROW: '.arrow'
Jacob Thornton's avatar
Jacob Thornton committed
2517
  };
Mark Otto's avatar
dist    
Mark Otto committed
2518
2519
2520
2521
2522
  var Trigger = {
    HOVER: 'hover',
    FOCUS: 'focus',
    CLICK: 'click',
    MANUAL: 'manual'
Mark Otto's avatar
dist    
Mark Otto committed
2523
2524
2525
2526
2527
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
Jacob Thornton's avatar
Jacob Thornton committed
2528

Mark Otto's avatar
dist    
Mark Otto committed
2529
  };
Jacob Thornton's avatar
Jacob Thornton committed
2530

Mark Otto's avatar
dist    
Mark Otto committed
2531
2532
2533
2534
  var Tooltip =
  /*#__PURE__*/
  function () {
    function Tooltip(element, config) {
Mark Otto's avatar
dist    
Mark Otto committed
2535
2536
2537
2538
2539
2540
2541
2542
2543
      /**
       * Check for Popper dependency
       * Popper - https://popper.js.org
       */
      if (typeof Popper === 'undefined') {
        throw new Error('Bootstrap tooltips require Popper.js (https://popper.js.org)');
      } // private


Mark Otto's avatar
dist    
Mark Otto committed
2544
2545
2546
2547
      this._isEnabled = true;
      this._timeout = 0;
      this._hoverState = '';
      this._activeTrigger = {};
Mark Otto's avatar
dist    
Mark Otto committed
2548
      this._popper = null; // protected
Jacob Thornton's avatar
Jacob Thornton committed
2549

Mark Otto's avatar
dist    
Mark Otto committed
2550
2551
2552
      this.element = element;
      this.config = this._getConfig(config);
      this.tip = null;
Jacob Thornton's avatar
Jacob Thornton committed
2553

Mark Otto's avatar
dist    
Mark Otto committed
2554
      this._setListeners();
Mark Otto's avatar
dist    
Mark Otto committed
2555
    } // getters
Jacob Thornton's avatar
Jacob Thornton committed
2556
2557


Mark Otto's avatar
dist    
Mark Otto committed
2558
    var _proto = Tooltip.prototype;
Jacob Thornton's avatar
Jacob Thornton committed
2559

Mark Otto's avatar
dist    
Mark Otto committed
2560
2561
    // public
    _proto.enable = function enable() {
Mark Otto's avatar
dist    
Mark Otto committed
2562
2563
      this._isEnabled = true;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2564

Mark Otto's avatar
dist    
Mark Otto committed
2565
    _proto.disable = function disable() {
Mark Otto's avatar
dist    
Mark Otto committed
2566
2567
      this._isEnabled = false;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2568

Mark Otto's avatar
dist    
Mark Otto committed
2569
    _proto.toggleEnabled = function toggleEnabled() {
Mark Otto's avatar
dist    
Mark Otto committed
2570
2571
      this._isEnabled = !this._isEnabled;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2572

Mark Otto's avatar
dist    
Mark Otto committed
2573
    _proto.toggle = function toggle(event) {
Mark Otto's avatar
dist    
Mark Otto committed
2574
2575
2576
      if (!this._isEnabled) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2577

Mark Otto's avatar
dist    
Mark Otto committed
2578
2579
      if (event) {
        var dataKey = this.constructor.DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
2580
        var context = $$$1(event.currentTarget).data(dataKey);
Jacob Thornton's avatar
Jacob Thornton committed
2581

Mark Otto's avatar
dist    
Mark Otto committed
2582
2583
        if (!context) {
          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
Mark Otto's avatar
dist    
Mark Otto committed
2584
          $$$1(event.currentTarget).data(dataKey, context);
Mark Otto's avatar
dist    
Mark Otto committed
2585
        }
Jacob Thornton's avatar
Jacob Thornton committed
2586

Mark Otto's avatar
dist    
Mark Otto committed
2587
        context._activeTrigger.click = !context._activeTrigger.click;
Jacob Thornton's avatar
Jacob Thornton committed
2588

Mark Otto's avatar
dist    
Mark Otto committed
2589
2590
2591
2592
        if (context._isWithActiveTrigger()) {
          context._enter(null, context);
        } else {
          context._leave(null, context);
Mark Otto's avatar
grunt    
Mark Otto committed
2593
        }
Mark Otto's avatar
dist    
Mark Otto committed
2594
      } else {
Mark Otto's avatar
dist    
Mark Otto committed
2595
        if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
Mark Otto's avatar
dist    
Mark Otto committed
2596
          this._leave(null, this);
Mark Otto's avatar
dist    
Mark Otto committed
2597

Mark Otto's avatar
dist    
Mark Otto committed
2598
          return;
Mark Otto's avatar
grunt    
Mark Otto committed
2599
        }
Jacob Thornton's avatar
Jacob Thornton committed
2600

Mark Otto's avatar
dist    
Mark Otto committed
2601
2602
        this._enter(null, this);
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2603
    };
Jacob Thornton's avatar
Jacob Thornton committed
2604

Mark Otto's avatar
dist    
Mark Otto committed
2605
    _proto.dispose = function dispose() {
Mark Otto's avatar
dist    
Mark Otto committed
2606
      clearTimeout(this._timeout);
Mark Otto's avatar
dist    
Mark Otto committed
2607
2608
2609
      $$$1.removeData(this.element, this.constructor.DATA_KEY);
      $$$1(this.element).off(this.constructor.EVENT_KEY);
      $$$1(this.element).closest('.modal').off('hide.bs.modal');
Mark Otto's avatar
dist    
Mark Otto committed
2610
2611

      if (this.tip) {
Mark Otto's avatar
dist    
Mark Otto committed
2612
        $$$1(this.tip).remove();
Jacob Thornton's avatar
Jacob Thornton committed
2613
2614
      }

Mark Otto's avatar
dist    
Mark Otto committed
2615
2616
2617
2618
      this._isEnabled = null;
      this._timeout = null;
      this._hoverState = null;
      this._activeTrigger = null;
Mark Otto's avatar
dist    
Mark Otto committed
2619

Mark Otto's avatar
dist    
Mark Otto committed
2620
2621
2622
      if (this._popper !== null) {
        this._popper.destroy();
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2623

Mark Otto's avatar
dist    
Mark Otto committed
2624
2625
2626
2627
      this._popper = null;
      this.element = null;
      this.config = null;
      this.tip = null;
Mark Otto's avatar
grunt    
Mark Otto committed
2628
    };
Jacob Thornton's avatar
Jacob Thornton committed
2629

Mark Otto's avatar
dist    
Mark Otto committed
2630
    _proto.show = function show() {
Mark Otto's avatar
dist    
Mark Otto committed
2631
      var _this = this;
Jacob Thornton's avatar
Jacob Thornton committed
2632

Mark Otto's avatar
dist    
Mark Otto committed
2633
      if ($$$1(this.element).css('display') === 'none') {
Mark Otto's avatar
dist    
Mark Otto committed
2634
2635
        throw new Error('Please use show on visible elements');
      }
Jacob Thornton's avatar
Jacob Thornton committed
2636

Mark Otto's avatar
dist    
Mark Otto committed
2637
      var showEvent = $$$1.Event(this.constructor.Event.SHOW);
Mark Otto's avatar
dist    
Mark Otto committed
2638

Mark Otto's avatar
dist    
Mark Otto committed
2639
      if (this.isWithContent() && this._isEnabled) {
Mark Otto's avatar
dist    
Mark Otto committed
2640
2641
        $$$1(this.element).trigger(showEvent);
        var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
Jacob Thornton's avatar
Jacob Thornton committed
2642

Mark Otto's avatar
dist    
Mark Otto committed
2643
2644
2645
        if (showEvent.isDefaultPrevented() || !isInTheDom) {
          return;
        }
Jacob Thornton's avatar
Jacob Thornton committed
2646

Mark Otto's avatar
dist    
Mark Otto committed
2647
2648
2649
2650
2651
2652
2653
        var tip = this.getTipElement();
        var tipId = Util.getUID(this.constructor.NAME);
        tip.setAttribute('id', tipId);
        this.element.setAttribute('aria-describedby', tipId);
        this.setContent();

        if (this.config.animation) {
Mark Otto's avatar
dist    
Mark Otto committed
2654
          $$$1(tip).addClass(ClassName.FADE);
Jacob Thornton's avatar
Jacob Thornton committed
2655
        }
Jacob Thornton's avatar
Jacob Thornton committed
2656

Mark Otto's avatar
dist    
Mark Otto committed
2657
        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
Jacob Thornton's avatar
Jacob Thornton committed
2658

Mark Otto's avatar
dist    
Mark Otto committed
2659
        var attachment = this._getAttachment(placement);
Jacob Thornton's avatar
Jacob Thornton committed
2660

Mark Otto's avatar
dist    
Mark Otto committed
2661
        this.addAttachmentClass(attachment);
Mark Otto's avatar
dist    
Mark Otto committed
2662
2663
        var container = this.config.container === false ? document.body : $$$1(this.config.container);
        $$$1(tip).data(this.constructor.DATA_KEY, this);
Mark Otto's avatar
dist    
Mark Otto committed
2664

Mark Otto's avatar
dist    
Mark Otto committed
2665
2666
        if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
          $$$1(tip).appendTo(container);
Jacob Thornton's avatar
Jacob Thornton committed
2667
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2668

Mark Otto's avatar
dist    
Mark Otto committed
2669
        $$$1(this.element).trigger(this.constructor.Event.INSERTED);
Mark Otto's avatar
dist    
Mark Otto committed
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
        this._popper = new Popper(this.element, tip, {
          placement: attachment,
          modifiers: {
            offset: {
              offset: this.config.offset
            },
            flip: {
              behavior: this.config.fallbackPlacement
            },
            arrow: {
              element: Selector.ARROW
Mark Otto's avatar
dist    
Mark Otto committed
2681
2682
2683
            },
            preventOverflow: {
              boundariesElement: this.config.boundary
Mark Otto's avatar
dist    
Mark Otto committed
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
            }
          },
          onCreate: function onCreate(data) {
            if (data.originalPlacement !== data.placement) {
              _this._handlePopperPlacementChange(data);
            }
          },
          onUpdate: function onUpdate(data) {
            _this._handlePopperPlacementChange(data);
          }
        });
Mark Otto's avatar
dist    
Mark Otto committed
2695
        $$$1(tip).addClass(ClassName.SHOW); // if this is a touch-enabled device we add extra
Mark Otto's avatar
dist    
Mark Otto committed
2696
2697
2698
        // empty mouseover listeners to the body's immediate children;
        // only needed because of broken event delegation on iOS
        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
Mark Otto's avatar
dist    
Mark Otto committed
2699

Mark Otto's avatar
dist    
Mark Otto committed
2700
        if ('ontouchstart' in document.documentElement) {
Mark Otto's avatar
dist    
Mark Otto committed
2701
          $$$1('body').children().on('mouseover', null, $$$1.noop);
Mark Otto's avatar
dist    
Mark Otto committed
2702
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2703

Mark Otto's avatar
dist    
Mark Otto committed
2704
2705
2706
2707
        var complete = function complete() {
          if (_this.config.animation) {
            _this._fixTransition();
          }
Mark Otto's avatar
dist    
Mark Otto committed
2708

Mark Otto's avatar
dist    
Mark Otto committed
2709
2710
          var prevHoverState = _this._hoverState;
          _this._hoverState = null;
Mark Otto's avatar
dist    
Mark Otto committed
2711
          $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
Jacob Thornton's avatar
Jacob Thornton committed
2712

Mark Otto's avatar
dist    
Mark Otto committed
2713
2714
2715
2716
2717
          if (prevHoverState === HoverState.OUT) {
            _this._leave(null, _this);
          }
        };

Mark Otto's avatar
dist    
Mark Otto committed
2718
2719
        if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
          $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
Mark Otto's avatar
dist    
Mark Otto committed
2720
2721
2722
2723
        } else {
          complete();
        }
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2724
    };
Jacob Thornton's avatar
Jacob Thornton committed
2725

Mark Otto's avatar
dist    
Mark Otto committed
2726
    _proto.hide = function hide(callback) {
Mark Otto's avatar
dist    
Mark Otto committed
2727
      var _this2 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2728

Mark Otto's avatar
dist    
Mark Otto committed
2729
      var tip = this.getTipElement();
Mark Otto's avatar
dist    
Mark Otto committed
2730
      var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
Mark Otto's avatar
dist    
Mark Otto committed
2731

Mark Otto's avatar
dist    
Mark Otto committed
2732
2733
2734
2735
      var complete = function complete() {
        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
          tip.parentNode.removeChild(tip);
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2736

Mark Otto's avatar
dist    
Mark Otto committed
2737
        _this2._cleanTipClass();
Mark Otto's avatar
dist    
Mark Otto committed
2738

Mark Otto's avatar
dist    
Mark Otto committed
2739
        _this2.element.removeAttribute('aria-describedby');
Mark Otto's avatar
dist    
Mark Otto committed
2740

Mark Otto's avatar
dist    
Mark Otto committed
2741
        $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
Mark Otto's avatar
dist    
Mark Otto committed
2742

Mark Otto's avatar
dist    
Mark Otto committed
2743
2744
        if (_this2._popper !== null) {
          _this2._popper.destroy();
Mark Otto's avatar
grunt    
Mark Otto committed
2745
2746
        }

Mark Otto's avatar
dist    
Mark Otto committed
2747
2748
        if (callback) {
          callback();
Mark Otto's avatar
grunt    
Mark Otto committed
2749
        }
Mark Otto's avatar
dist    
Mark Otto committed
2750
      };
Mark Otto's avatar
grunt    
Mark Otto committed
2751

Mark Otto's avatar
dist    
Mark Otto committed
2752
      $$$1(this.element).trigger(hideEvent);
Mark Otto's avatar
dist    
Mark Otto committed
2753
2754
2755

      if (hideEvent.isDefaultPrevented()) {
        return;
Jacob Thornton's avatar
Jacob Thornton committed
2756
2757
      }

Mark Otto's avatar
dist    
Mark Otto committed
2758
      $$$1(tip).removeClass(ClassName.SHOW); // if this is a touch-enabled device we remove the extra
Mark Otto's avatar
dist    
Mark Otto committed
2759
      // empty mouseover listeners we added for iOS support
Mark Otto's avatar
dist    
Mark Otto committed
2760

Mark Otto's avatar
dist    
Mark Otto committed
2761
      if ('ontouchstart' in document.documentElement) {
Mark Otto's avatar
dist    
Mark Otto committed
2762
        $$$1('body').children().off('mouseover', null, $$$1.noop);
Mark Otto's avatar
dist    
Mark Otto committed
2763
      }
Jacob Thornton's avatar
Jacob Thornton committed
2764

Mark Otto's avatar
dist    
Mark Otto committed
2765
2766
2767
      this._activeTrigger[Trigger.CLICK] = false;
      this._activeTrigger[Trigger.FOCUS] = false;
      this._activeTrigger[Trigger.HOVER] = false;
Jacob Thornton's avatar
Jacob Thornton committed
2768

Mark Otto's avatar
dist    
Mark Otto committed
2769
2770
      if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
        $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
dist    
Mark Otto committed
2771
2772
2773
      } else {
        complete();
      }
Jacob Thornton's avatar
Jacob Thornton committed
2774

Mark Otto's avatar
dist    
Mark Otto committed
2775
2776
      this._hoverState = '';
    };
Jacob Thornton's avatar
Jacob Thornton committed
2777

Mark Otto's avatar
dist    
Mark Otto committed
2778
    _proto.update = function update() {
Mark Otto's avatar
dist    
Mark Otto committed
2779
2780
2781
      if (this._popper !== null) {
        this._popper.scheduleUpdate();
      }
Mark Otto's avatar
dist    
Mark Otto committed
2782
    }; // protected
Jacob Thornton's avatar
Jacob Thornton committed
2783
2784


Mark Otto's avatar
dist    
Mark Otto committed
2785
    _proto.isWithContent = function isWithContent() {
Mark Otto's avatar
dist    
Mark Otto committed
2786
2787
      return Boolean(this.getTitle());
    };
Jacob Thornton's avatar
Jacob Thornton committed
2788

Mark Otto's avatar
dist    
Mark Otto committed
2789
    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
Mark Otto's avatar
dist    
Mark Otto committed
2790
      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
Mark Otto's avatar
dist    
Mark Otto committed
2791
    };
Jacob Thornton's avatar
Jacob Thornton committed
2792

Mark Otto's avatar
dist    
Mark Otto committed
2793
    _proto.getTipElement = function getTipElement() {
Mark Otto's avatar
dist    
Mark Otto committed
2794
      this.tip = this.tip || $$$1(this.config.template)[0];
Mark Otto's avatar
dist    
Mark Otto committed
2795
2796
      return this.tip;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2797

Mark Otto's avatar
dist    
Mark Otto committed
2798
    _proto.setContent = function setContent() {
Mark Otto's avatar
dist    
Mark Otto committed
2799
      var $tip = $$$1(this.getTipElement());
Mark Otto's avatar
dist    
Mark Otto committed
2800
      this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
Mark Otto's avatar
dist    
Mark Otto committed
2801
      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
Mark Otto's avatar
dist    
Mark Otto committed
2802
    };
Jacob Thornton's avatar
Jacob Thornton committed
2803

Mark Otto's avatar
dist    
Mark Otto committed
2804
    _proto.setElementContent = function setElementContent($element, content) {
Mark Otto's avatar
dist    
Mark Otto committed
2805
      var html = this.config.html;
Mark Otto's avatar
dist    
Mark Otto committed
2806
2807

      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
Mark Otto's avatar
dist    
Mark Otto committed
2808
2809
        // content is a DOM node or a jQuery
        if (html) {
Mark Otto's avatar
dist    
Mark Otto committed
2810
          if (!$$$1(content).parent().is($element)) {
Mark Otto's avatar
dist    
Mark Otto committed
2811
2812
2813
            $element.empty().append(content);
          }
        } else {
Mark Otto's avatar
dist    
Mark Otto committed
2814
          $element.text($$$1(content).text());
Mark Otto's avatar
dist    
Mark Otto committed
2815
2816
2817
2818
2819
        }
      } else {
        $element[html ? 'html' : 'text'](content);
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
2820

Mark Otto's avatar
dist    
Mark Otto committed
2821
    _proto.getTitle = function getTitle() {
Mark Otto's avatar
dist    
Mark Otto committed
2822
      var title = this.element.getAttribute('data-original-title');
Jacob Thornton's avatar
Jacob Thornton committed
2823

Mark Otto's avatar
dist    
Mark Otto committed
2824
2825
2826
      if (!title) {
        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2827

Mark Otto's avatar
dist    
Mark Otto committed
2828
      return title;
Mark Otto's avatar
dist    
Mark Otto committed
2829
    }; // private
Jacob Thornton's avatar
Jacob Thornton committed
2830
2831


Mark Otto's avatar
dist    
Mark Otto committed
2832
    _proto._getAttachment = function _getAttachment(placement) {
Mark Otto's avatar
dist    
Mark Otto committed
2833
2834
      return AttachmentMap[placement.toUpperCase()];
    };
Jacob Thornton's avatar
Jacob Thornton committed
2835

Mark Otto's avatar
dist    
Mark Otto committed
2836
    _proto._setListeners = function _setListeners() {
Mark Otto's avatar
dist    
Mark Otto committed
2837
      var _this3 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2838

Mark Otto's avatar
dist    
Mark Otto committed
2839
2840
2841
      var triggers = this.config.trigger.split(' ');
      triggers.forEach(function (trigger) {
        if (trigger === 'click') {
Mark Otto's avatar
dist    
Mark Otto committed
2842
          $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2843
2844
2845
2846
2847
            return _this3.toggle(event);
          });
        } else if (trigger !== Trigger.MANUAL) {
          var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
          var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
Mark Otto's avatar
dist    
Mark Otto committed
2848
          $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2849
2850
2851
2852
2853
            return _this3._enter(event);
          }).on(eventOut, _this3.config.selector, function (event) {
            return _this3._leave(event);
          });
        }
Jacob Thornton's avatar
Jacob Thornton committed
2854

Mark Otto's avatar
dist    
Mark Otto committed
2855
        $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
Mark Otto's avatar
dist    
Mark Otto committed
2856
2857
          return _this3.hide();
        });
Mark Otto's avatar
grunt    
Mark Otto committed
2858
      });
Jacob Thornton's avatar
Jacob Thornton committed
2859

Mark Otto's avatar
dist    
Mark Otto committed
2860
      if (this.config.selector) {
Mark Otto's avatar
dist    
Mark Otto committed
2861
        this.config = _extends({}, this.config, {
Mark Otto's avatar
dist    
Mark Otto committed
2862
2863
2864
2865
2866
2867
2868
          trigger: 'manual',
          selector: ''
        });
      } else {
        this._fixTitle();
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
2869

Mark Otto's avatar
dist    
Mark Otto committed
2870
2871
2872
    _proto._fixTitle = function _fixTitle() {
      var titleType = typeof this.element.getAttribute('data-original-title');

Mark Otto's avatar
dist    
Mark Otto committed
2873
2874
2875
      if (this.element.getAttribute('title') || titleType !== 'string') {
        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
        this.element.setAttribute('title', '');
Mark Otto's avatar
grunt    
Mark Otto committed
2876
      }
Mark Otto's avatar
dist    
Mark Otto committed
2877
    };
Jacob Thornton's avatar
Jacob Thornton committed
2878

Mark Otto's avatar
dist    
Mark Otto committed
2879
    _proto._enter = function _enter(event, context) {
Mark Otto's avatar
dist    
Mark Otto committed
2880
      var dataKey = this.constructor.DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
2881
      context = context || $$$1(event.currentTarget).data(dataKey);
Jacob Thornton's avatar
Jacob Thornton committed
2882

Mark Otto's avatar
dist    
Mark Otto committed
2883
2884
      if (!context) {
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
Mark Otto's avatar
dist    
Mark Otto committed
2885
        $$$1(event.currentTarget).data(dataKey, context);
Mark Otto's avatar
grunt    
Mark Otto committed
2886
      }
Jacob Thornton's avatar
Jacob Thornton committed
2887

Mark Otto's avatar
dist    
Mark Otto committed
2888
2889
2890
      if (event) {
        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2891

Mark Otto's avatar
dist    
Mark Otto committed
2892
      if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
Mark Otto's avatar
dist    
Mark Otto committed
2893
2894
2895
        context._hoverState = HoverState.SHOW;
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2896

Mark Otto's avatar
dist    
Mark Otto committed
2897
2898
      clearTimeout(context._timeout);
      context._hoverState = HoverState.SHOW;
Jacob Thornton's avatar
Jacob Thornton committed
2899

Mark Otto's avatar
dist    
Mark Otto committed
2900
2901
2902
      if (!context.config.delay || !context.config.delay.show) {
        context.show();
        return;
Jacob Thornton's avatar
Jacob Thornton committed
2903
2904
      }

Mark Otto's avatar
dist    
Mark Otto committed
2905
2906
2907
2908
2909
      context._timeout = setTimeout(function () {
        if (context._hoverState === HoverState.SHOW) {
          context.show();
        }
      }, context.config.delay.show);
Mark Otto's avatar
grunt    
Mark Otto committed
2910
    };
Jacob Thornton's avatar
Jacob Thornton committed
2911

Mark Otto's avatar
dist    
Mark Otto committed
2912
    _proto._leave = function _leave(event, context) {
Mark Otto's avatar
dist    
Mark Otto committed
2913
      var dataKey = this.constructor.DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
2914
      context = context || $$$1(event.currentTarget).data(dataKey);
Mark Otto's avatar
grunt    
Mark Otto committed
2915

Mark Otto's avatar
dist    
Mark Otto committed
2916
2917
      if (!context) {
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
Mark Otto's avatar
dist    
Mark Otto committed
2918
        $$$1(event.currentTarget).data(dataKey, context);
Mark Otto's avatar
dist    
Mark Otto committed
2919
2920
      }

Mark Otto's avatar
dist    
Mark Otto committed
2921
2922
      if (event) {
        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
Jacob Thornton's avatar
Jacob Thornton committed
2923
2924
      }

Mark Otto's avatar
dist    
Mark Otto committed
2925
2926
      if (context._isWithActiveTrigger()) {
        return;
Mark Otto's avatar
grunt    
Mark Otto committed
2927
      }
Jacob Thornton's avatar
Jacob Thornton committed
2928

Mark Otto's avatar
dist    
Mark Otto committed
2929
2930
      clearTimeout(context._timeout);
      context._hoverState = HoverState.OUT;
Jacob Thornton's avatar
Jacob Thornton committed
2931

Mark Otto's avatar
dist    
Mark Otto committed
2932
2933
2934
      if (!context.config.delay || !context.config.delay.hide) {
        context.hide();
        return;
Mark Otto's avatar
grunt    
Mark Otto committed
2935
      }
Jacob Thornton's avatar
Jacob Thornton committed
2936

Mark Otto's avatar
dist    
Mark Otto committed
2937
2938
2939
2940
2941
2942
      context._timeout = setTimeout(function () {
        if (context._hoverState === HoverState.OUT) {
          context.hide();
        }
      }, context.config.delay.hide);
    };
Jacob Thornton's avatar
Jacob Thornton committed
2943

Mark Otto's avatar
dist    
Mark Otto committed
2944
    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
Mark Otto's avatar
dist    
Mark Otto committed
2945
2946
2947
2948
      for (var trigger in this._activeTrigger) {
        if (this._activeTrigger[trigger]) {
          return true;
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2949
      }
Jacob Thornton's avatar
Jacob Thornton committed
2950

Mark Otto's avatar
dist    
Mark Otto committed
2951
2952
      return false;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2953

Mark Otto's avatar
dist    
Mark Otto committed
2954
    _proto._getConfig = function _getConfig(config) {
Mark Otto's avatar
dist    
Mark Otto committed
2955
      config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config);
Jacob Thornton's avatar
Jacob Thornton committed
2956

Mark Otto's avatar
dist    
Mark Otto committed
2957
      if (typeof config.delay === 'number') {
Mark Otto's avatar
dist    
Mark Otto committed
2958
2959
2960
2961
        config.delay = {
          show: config.delay,
          hide: config.delay
        };
Mark Otto's avatar
grunt    
Mark Otto committed
2962
2963
      }

Mark Otto's avatar
dist    
Mark Otto committed
2964
      if (typeof config.title === 'number') {
Mark Otto's avatar
dist    
Mark Otto committed
2965
        config.title = config.title.toString();
Jacob Thornton's avatar
Jacob Thornton committed
2966
2967
      }

Mark Otto's avatar
dist    
Mark Otto committed
2968
      if (typeof config.content === 'number') {
Mark Otto's avatar
dist    
Mark Otto committed
2969
2970
        config.content = config.content.toString();
      }
Jacob Thornton's avatar
Jacob Thornton committed
2971

Mark Otto's avatar
dist    
Mark Otto committed
2972
2973
2974
2975
      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
      return config;
    };

Mark Otto's avatar
dist    
Mark Otto committed
2976
    _proto._getDelegateConfig = function _getDelegateConfig() {
Mark Otto's avatar
dist    
Mark Otto committed
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
      var config = {};

      if (this.config) {
        for (var key in this.config) {
          if (this.constructor.Default[key] !== this.config[key]) {
            config[key] = this.config[key];
          }
        }
      }

      return config;
    };

Mark Otto's avatar
dist    
Mark Otto committed
2990
    _proto._cleanTipClass = function _cleanTipClass() {
Mark Otto's avatar
dist    
Mark Otto committed
2991
      var $tip = $$$1(this.getTipElement());
Mark Otto's avatar
dist    
Mark Otto committed
2992
      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
Mark Otto's avatar
dist    
Mark Otto committed
2993

Mark Otto's avatar
dist    
Mark Otto committed
2994
2995
2996
2997
2998
      if (tabClass !== null && tabClass.length > 0) {
        $tip.removeClass(tabClass.join(''));
      }
    };

Mark Otto's avatar
dist    
Mark Otto committed
2999
    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
Mark Otto's avatar
dist    
Mark Otto committed
3000
      this._cleanTipClass();
For faster browsing, not all history is shown. View entire blame