bootstrap.js 113 KB
Newer Older
Mark Otto's avatar
dist    
Mark Otto committed
2001
2002
      this._adjustDialog();

Mark Otto's avatar
dist    
Mark Otto committed
2003
      $$$1(document.body).addClass(ClassName.OPEN);
Jacob Thornton's avatar
Jacob Thornton committed
2004

Mark Otto's avatar
grunt    
Mark Otto committed
2005
      this._setEscapeEvent();
Mark Otto's avatar
dist    
Mark Otto committed
2006

Mark Otto's avatar
grunt    
Mark Otto committed
2007
      this._setResizeEvent();
Jacob Thornton's avatar
Jacob Thornton committed
2008

Mark Otto's avatar
dist    
Mark Otto committed
2009
      $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2010
        return _this.hide(event);
Mark Otto's avatar
grunt    
Mark Otto committed
2011
      });
Mark Otto's avatar
dist    
Mark Otto committed
2012
2013
2014
      $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
        $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
          if ($$$1(event.target).is(_this._element)) {
Mark Otto's avatar
dist    
Mark Otto committed
2015
            _this._ignoreBackdropClick = true;
Mark Otto's avatar
grunt    
Mark Otto committed
2016
          }
Jacob Thornton's avatar
Jacob Thornton committed
2017
        });
Mark Otto's avatar
grunt    
Mark Otto committed
2018
2019
      });

Mark Otto's avatar
grunt    
Mark Otto committed
2020
      this._showBackdrop(function () {
Mark Otto's avatar
dist    
Mark Otto committed
2021
        return _this._showElement(relatedTarget);
Mark Otto's avatar
grunt    
Mark Otto committed
2022
      });
Mark Otto's avatar
grunt    
Mark Otto committed
2023
    };
Jacob Thornton's avatar
Jacob Thornton committed
2024

Mark Otto's avatar
dist    
Mark Otto committed
2025
    _proto.hide = function hide(event) {
Mark Otto's avatar
dist    
Mark Otto committed
2026
      var _this2 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2027

Mark Otto's avatar
grunt    
Mark Otto committed
2028
2029
      if (event) {
        event.preventDefault();
Jacob Thornton's avatar
Jacob Thornton committed
2030
2031
      }

Mark Otto's avatar
grunt    
Mark Otto committed
2032
2033
      if (this._isTransitioning || !this._isShown) {
        return;
Mark Otto's avatar
grunt    
Mark Otto committed
2034
      }
Jacob Thornton's avatar
Jacob Thornton committed
2035

Mark Otto's avatar
dist    
Mark Otto committed
2036
2037
      var hideEvent = $$$1.Event(Event.HIDE);
      $$$1(this._element).trigger(hideEvent);
Jacob Thornton's avatar
Jacob Thornton committed
2038

Mark Otto's avatar
grunt    
Mark Otto committed
2039
2040
2041
      if (!this._isShown || hideEvent.isDefaultPrevented()) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2042

Mark Otto's avatar
grunt    
Mark Otto committed
2043
      this._isShown = false;
Mark Otto's avatar
dist    
Mark Otto committed
2044
      var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE);
Mark Otto's avatar
dist    
Mark Otto committed
2045
2046
2047
2048

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

Mark Otto's avatar
grunt    
Mark Otto committed
2050
      this._setEscapeEvent();
Mark Otto's avatar
dist    
Mark Otto committed
2051

Mark Otto's avatar
grunt    
Mark Otto committed
2052
      this._setResizeEvent();
Jacob Thornton's avatar
Jacob Thornton committed
2053

Mark Otto's avatar
dist    
Mark Otto committed
2054
2055
2056
2057
      $$$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
2058

Mark Otto's avatar
grunt    
Mark Otto committed
2059
      if (transition) {
Mark Otto's avatar
dist    
Mark Otto committed
2060
        $$$1(this._element).one(Util.TRANSITION_END, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2061
          return _this2._hideModal(event);
Mark Otto's avatar
grunt    
Mark Otto committed
2062
        }).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
2063
2064
      } else {
        this._hideModal();
Jacob Thornton's avatar
Jacob Thornton committed
2065
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2066
    };
Jacob Thornton's avatar
Jacob Thornton committed
2067

Mark Otto's avatar
dist    
Mark Otto committed
2068
    _proto.dispose = function dispose() {
Mark Otto's avatar
dist    
Mark Otto committed
2069
2070
      $$$1.removeData(this._element, DATA_KEY);
      $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);
Mark Otto's avatar
grunt    
Mark Otto committed
2071
2072
2073
2074
2075
2076
2077
2078
2079
      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
2080

Mark Otto's avatar
dist    
Mark Otto committed
2081
    _proto.handleUpdate = function handleUpdate() {
Mark Otto's avatar
grunt    
Mark Otto committed
2082
      this._adjustDialog();
Mark Otto's avatar
dist    
Mark Otto committed
2083
    }; // Private
Mark Otto's avatar
grunt    
Mark Otto committed
2084

Jacob Thornton's avatar
Jacob Thornton committed
2085

Mark Otto's avatar
dist    
Mark Otto committed
2086
    _proto._getConfig = function _getConfig(config) {
Mark Otto's avatar
dist    
Mark Otto committed
2087
      config = _extends({}, Default, config);
Mark Otto's avatar
grunt    
Mark Otto committed
2088
2089
2090
      Util.typeCheckConfig(NAME, config, DefaultType);
      return config;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2091

Mark Otto's avatar
dist    
Mark Otto committed
2092
    _proto._showElement = function _showElement(relatedTarget) {
Mark Otto's avatar
dist    
Mark Otto committed
2093
      var _this3 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2094

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

Mark Otto's avatar
grunt    
Mark Otto committed
2097
      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
Mark Otto's avatar
dist    
Mark Otto committed
2098
        // Don't move modal's DOM position
Mark Otto's avatar
grunt    
Mark Otto committed
2099
2100
        document.body.appendChild(this._element);
      }
Jacob Thornton's avatar
Jacob Thornton committed
2101

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

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

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

Mark Otto's avatar
grunt    
Mark Otto committed
2108
2109
      if (transition) {
        Util.reflow(this._element);
Jacob Thornton's avatar
Jacob Thornton committed
2110
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2111

Mark Otto's avatar
dist    
Mark Otto committed
2112
      $$$1(this._element).addClass(ClassName.SHOW);
Mark Otto's avatar
grunt    
Mark Otto committed
2113
2114
2115

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

Mark Otto's avatar
dist    
Mark Otto committed
2118
      var shownEvent = $$$1.Event(Event.SHOWN, {
Mark Otto's avatar
grunt    
Mark Otto committed
2119
2120
2121
2122
        relatedTarget: relatedTarget
      });

      var transitionComplete = function transitionComplete() {
Mark Otto's avatar
dist    
Mark Otto committed
2123
2124
        if (_this3._config.focus) {
          _this3._element.focus();
Jacob Thornton's avatar
Jacob Thornton committed
2125
        }
Mark Otto's avatar
dist    
Mark Otto committed
2126

Mark Otto's avatar
dist    
Mark Otto committed
2127
        _this3._isTransitioning = false;
Mark Otto's avatar
dist    
Mark Otto committed
2128
        $$$1(_this3._element).trigger(shownEvent);
Mark Otto's avatar
grunt    
Mark Otto committed
2129
2130
2131
      };

      if (transition) {
Mark Otto's avatar
dist    
Mark Otto committed
2132
        $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
2133
2134
      } else {
        transitionComplete();
Jacob Thornton's avatar
Jacob Thornton committed
2135
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2136
2137
    };

Mark Otto's avatar
dist    
Mark Otto committed
2138
    _proto._enforceFocus = function _enforceFocus() {
Mark Otto's avatar
dist    
Mark Otto committed
2139
      var _this4 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2140

Mark Otto's avatar
dist    
Mark Otto committed
2141
      $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop
Mark Otto's avatar
Mark Otto committed
2142
      .on(Event.FOCUSIN, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2143
        if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
Mark Otto's avatar
dist    
Mark Otto committed
2144
          _this4._element.focus();
Jacob Thornton's avatar
Jacob Thornton committed
2145
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2146
2147
2148
      });
    };

Mark Otto's avatar
dist    
Mark Otto committed
2149
    _proto._setEscapeEvent = function _setEscapeEvent() {
Mark Otto's avatar
dist    
Mark Otto committed
2150
      var _this5 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2151
2152

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

Mark Otto's avatar
dist    
Mark Otto committed
2157
            _this5.hide();
Mark Otto's avatar
grunt    
Mark Otto committed
2158
          }
Jacob Thornton's avatar
Jacob Thornton committed
2159
        });
Mark Otto's avatar
grunt    
Mark Otto committed
2160
      } else if (!this._isShown) {
Mark Otto's avatar
dist    
Mark Otto committed
2161
        $$$1(this._element).off(Event.KEYDOWN_DISMISS);
Jacob Thornton's avatar
Jacob Thornton committed
2162
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2163
2164
    };

Mark Otto's avatar
dist    
Mark Otto committed
2165
    _proto._setResizeEvent = function _setResizeEvent() {
Mark Otto's avatar
dist    
Mark Otto committed
2166
      var _this6 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2167

Mark Otto's avatar
grunt    
Mark Otto committed
2168
      if (this._isShown) {
Mark Otto's avatar
dist    
Mark Otto committed
2169
        $$$1(window).on(Event.RESIZE, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2170
          return _this6.handleUpdate(event);
Mark Otto's avatar
grunt    
Mark Otto committed
2171
        });
Mark Otto's avatar
grunt    
Mark Otto committed
2172
      } else {
Mark Otto's avatar
dist    
Mark Otto committed
2173
        $$$1(window).off(Event.RESIZE);
Jacob Thornton's avatar
Jacob Thornton committed
2174
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2175
    };
Jacob Thornton's avatar
Jacob Thornton committed
2176

Mark Otto's avatar
dist    
Mark Otto committed
2177
    _proto._hideModal = function _hideModal() {
Mark Otto's avatar
dist    
Mark Otto committed
2178
      var _this7 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2179

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

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

Mark Otto's avatar
grunt    
Mark Otto committed
2184
      this._isTransitioning = false;
Mark Otto's avatar
dist    
Mark Otto committed
2185

Mark Otto's avatar
grunt    
Mark Otto committed
2186
      this._showBackdrop(function () {
Mark Otto's avatar
dist    
Mark Otto committed
2187
        $$$1(document.body).removeClass(ClassName.OPEN);
Mark Otto's avatar
dist    
Mark Otto committed
2188

Mark Otto's avatar
dist    
Mark Otto committed
2189
        _this7._resetAdjustments();
Mark Otto's avatar
dist    
Mark Otto committed
2190

Mark Otto's avatar
dist    
Mark Otto committed
2191
        _this7._resetScrollbar();
Mark Otto's avatar
dist    
Mark Otto committed
2192

Mark Otto's avatar
dist    
Mark Otto committed
2193
        $$$1(_this7._element).trigger(Event.HIDDEN);
Mark Otto's avatar
grunt    
Mark Otto committed
2194
2195
      });
    };
Jacob Thornton's avatar
Jacob Thornton committed
2196

Mark Otto's avatar
dist    
Mark Otto committed
2197
    _proto._removeBackdrop = function _removeBackdrop() {
Mark Otto's avatar
grunt    
Mark Otto committed
2198
      if (this._backdrop) {
Mark Otto's avatar
dist    
Mark Otto committed
2199
        $$$1(this._backdrop).remove();
Mark Otto's avatar
grunt    
Mark Otto committed
2200
2201
2202
        this._backdrop = null;
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
2203

Mark Otto's avatar
dist    
Mark Otto committed
2204
    _proto._showBackdrop = function _showBackdrop(callback) {
Mark Otto's avatar
dist    
Mark Otto committed
2205
      var _this8 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2206

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

Mark Otto's avatar
grunt    
Mark Otto committed
2209
2210
2211
2212
2213
2214
      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
2215
          $$$1(this._backdrop).addClass(animate);
Mark Otto's avatar
grunt    
Mark Otto committed
2216
        }
Jacob Thornton's avatar
Jacob Thornton committed
2217

Mark Otto's avatar
dist    
Mark Otto committed
2218
2219
        $$$1(this._backdrop).appendTo(document.body);
        $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2220
2221
          if (_this8._ignoreBackdropClick) {
            _this8._ignoreBackdropClick = false;
Jacob Thornton's avatar
Jacob Thornton committed
2222
2223
            return;
          }
Mark Otto's avatar
dist    
Mark Otto committed
2224

Mark Otto's avatar
grunt    
Mark Otto committed
2225
          if (event.target !== event.currentTarget) {
Jacob Thornton's avatar
Jacob Thornton committed
2226
2227
            return;
          }
Mark Otto's avatar
dist    
Mark Otto committed
2228

Mark Otto's avatar
dist    
Mark Otto committed
2229
2230
          if (_this8._config.backdrop === 'static') {
            _this8._element.focus();
Mark Otto's avatar
grunt    
Mark Otto committed
2231
          } else {
Mark Otto's avatar
dist    
Mark Otto committed
2232
            _this8.hide();
Mark Otto's avatar
grunt    
Mark Otto committed
2233
2234
          }
        });
Jacob Thornton's avatar
Jacob Thornton committed
2235

Mark Otto's avatar
grunt    
Mark Otto committed
2236
2237
2238
        if (doAnimate) {
          Util.reflow(this._backdrop);
        }
Jacob Thornton's avatar
Jacob Thornton committed
2239

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

Mark Otto's avatar
grunt    
Mark Otto committed
2242
2243
2244
2245
2246
        if (!callback) {
          return;
        }

        if (!doAnimate) {
Jacob Thornton's avatar
Jacob Thornton committed
2247
          callback();
Mark Otto's avatar
grunt    
Mark Otto committed
2248
          return;
Jacob Thornton's avatar
Jacob Thornton committed
2249
2250
        }

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

Mark Otto's avatar
grunt    
Mark Otto committed
2255
        var callbackRemove = function callbackRemove() {
Mark Otto's avatar
dist    
Mark Otto committed
2256
          _this8._removeBackdrop();
Mark Otto's avatar
dist    
Mark Otto committed
2257

Mark Otto's avatar
grunt    
Mark Otto committed
2258
2259
2260
2261
          if (callback) {
            callback();
          }
        };
Jacob Thornton's avatar
Jacob Thornton committed
2262

Mark Otto's avatar
dist    
Mark Otto committed
2263
2264
        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
2265
2266
        } else {
          callbackRemove();
Jacob Thornton's avatar
Jacob Thornton committed
2267
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2268
2269
2270
      } else if (callback) {
        callback();
      }
Mark Otto's avatar
dist    
Mark Otto committed
2271
    }; // ----------------------------------------------------------------------
Mark Otto's avatar
grunt    
Mark Otto committed
2272
2273
2274
2275
    // 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
2276
2277

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

      if (!this._isBodyOverflowing && isModalOverflowing) {
Mark Otto's avatar
dist    
Mark Otto committed
2281
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
Jacob Thornton's avatar
Jacob Thornton committed
2282
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2283
2284

      if (this._isBodyOverflowing && !isModalOverflowing) {
Mark Otto's avatar
dist    
Mark Otto committed
2285
        this._element.style.paddingRight = this._scrollbarWidth + "px";
Jacob Thornton's avatar
Jacob Thornton committed
2286
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2287
2288
    };

Mark Otto's avatar
dist    
Mark Otto committed
2289
    _proto._resetAdjustments = function _resetAdjustments() {
Mark Otto's avatar
grunt    
Mark Otto committed
2290
2291
2292
2293
      this._element.style.paddingLeft = '';
      this._element.style.paddingRight = '';
    };

Mark Otto's avatar
dist    
Mark Otto committed
2294
    _proto._checkScrollbar = function _checkScrollbar() {
Mark Otto's avatar
dist    
Mark Otto committed
2295
2296
      var rect = document.body.getBoundingClientRect();
      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
Mark Otto's avatar
grunt    
Mark Otto committed
2297
2298
2299
      this._scrollbarWidth = this._getScrollbarWidth();
    };

Mark Otto's avatar
dist    
Mark Otto committed
2300
    _proto._setScrollbar = function _setScrollbar() {
Mark Otto's avatar
dist    
Mark Otto committed
2301
      var _this9 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
2302
2303

      if (this._isBodyOverflowing) {
Mark Otto's avatar
grunt    
Mark Otto committed
2304
2305
2306
        // 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
2307
2308
2309
2310
        $$$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
2311
        }); // Adjust sticky content margin
Mark Otto's avatar
dist    
Mark Otto committed
2312

Mark Otto's avatar
dist    
Mark Otto committed
2313
2314
2315
2316
        $$$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
2317
        }); // Adjust navbar-toggler margin
Mark Otto's avatar
grunt    
Mark Otto committed
2318

Mark Otto's avatar
dist    
Mark Otto committed
2319
2320
2321
2322
        $$$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
2323
        }); // Adjust body padding
Mark Otto's avatar
grunt    
Mark Otto committed
2324

Mark Otto's avatar
Mark Otto committed
2325
        var actualPadding = document.body.style.paddingRight;
Mark Otto's avatar
dist    
Mark Otto committed
2326
2327
        var calculatedPadding = $$$1(document.body).css('padding-right');
        $$$1(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
Jacob Thornton's avatar
Jacob Thornton committed
2328
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2329
    };
Jacob Thornton's avatar
Jacob Thornton committed
2330

Mark Otto's avatar
dist    
Mark Otto committed
2331
    _proto._resetScrollbar = function _resetScrollbar() {
Mark Otto's avatar
grunt    
Mark Otto committed
2332
      // Restore fixed content padding
Mark Otto's avatar
dist    
Mark Otto committed
2333
2334
      $$$1(Selector.FIXED_CONTENT).each(function (index, element) {
        var padding = $$$1(element).data('padding-right');
Mark Otto's avatar
dist    
Mark Otto committed
2335

Mark Otto's avatar
grunt    
Mark Otto committed
2336
        if (typeof padding !== 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2337
          $$$1(element).css('padding-right', padding).removeData('padding-right');
Mark Otto's avatar
grunt    
Mark Otto committed
2338
        }
Mark Otto's avatar
dist    
Mark Otto committed
2339
      }); // Restore sticky content and navbar-toggler margin
Mark Otto's avatar
grunt    
Mark Otto committed
2340

Mark Otto's avatar
dist    
Mark Otto committed
2341
2342
      $$$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
2343

Mark Otto's avatar
grunt    
Mark Otto committed
2344
        if (typeof margin !== 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2345
          $$$1(element).css('margin-right', margin).removeData('margin-right');
Mark Otto's avatar
grunt    
Mark Otto committed
2346
        }
Mark Otto's avatar
dist    
Mark Otto committed
2347
      }); // Restore body padding
Mark Otto's avatar
grunt    
Mark Otto committed
2348

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

Mark Otto's avatar
grunt    
Mark Otto committed
2351
      if (typeof padding !== 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2352
        $$$1(document.body).css('padding-right', padding).removeData('padding-right');
Mark Otto's avatar
grunt    
Mark Otto committed
2353
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2354
    };
Jacob Thornton's avatar
Jacob Thornton committed
2355

Mark Otto's avatar
dist    
Mark Otto committed
2356
    _proto._getScrollbarWidth = function _getScrollbarWidth() {
Mark Otto's avatar
grunt    
Mark Otto committed
2357
2358
2359
2360
      // 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
2361
      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
Mark Otto's avatar
grunt    
Mark Otto committed
2362
2363
      document.body.removeChild(scrollDiv);
      return scrollbarWidth;
Mark Otto's avatar
dist    
Mark Otto committed
2364
    }; // Static
Mark Otto's avatar
grunt    
Mark Otto committed
2365
2366
2367
2368


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

Mark Otto's avatar
dist    
Mark Otto committed
2371
        var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config);
Mark Otto's avatar
grunt    
Mark Otto committed
2372
2373
2374

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

Mark Otto's avatar
grunt    
Mark Otto committed
2378
        if (typeof config === 'string') {
Mark Otto's avatar
dist    
Mark Otto committed
2379
          if (typeof data[config] === 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2380
            throw new TypeError("No method named \"" + config + "\"");
Jacob Thornton's avatar
Jacob Thornton committed
2381
          }
Mark Otto's avatar
dist    
Mark Otto committed
2382

Mark Otto's avatar
grunt    
Mark Otto committed
2383
2384
2385
2386
2387
2388
2389
          data[config](relatedTarget);
        } else if (_config.show) {
          data.show(relatedTarget);
        }
      });
    };

Mark Otto's avatar
Mark Otto committed
2390
    _createClass(Modal, null, [{
Mark Otto's avatar
dist    
Mark Otto committed
2391
      key: "VERSION",
Jacob Thornton's avatar
Jacob Thornton committed
2392
2393
2394
2395
      get: function get() {
        return VERSION;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
2396
      key: "Default",
Jacob Thornton's avatar
Jacob Thornton committed
2397
2398
2399
2400
2401
      get: function get() {
        return Default;
      }
    }]);
    return Modal;
Mark Otto's avatar
grunt    
Mark Otto committed
2402
2403
2404
2405
2406
2407
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Jacob Thornton's avatar
Jacob Thornton committed
2408

Mark Otto's avatar
dist    
Mark Otto committed
2409

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

Mark Otto's avatar
dist    
Mark Otto committed
2413
    var target;
Jacob Thornton's avatar
Jacob Thornton committed
2414
2415
2416
    var selector = Util.getSelectorFromElement(this);

    if (selector) {
Mark Otto's avatar
dist    
Mark Otto committed
2417
      target = $$$1(selector)[0];
Jacob Thornton's avatar
Jacob Thornton committed
2418
2419
    }

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

Mark Otto's avatar
grunt    
Mark Otto committed
2422
    if (this.tagName === 'A' || this.tagName === 'AREA') {
Jacob Thornton's avatar
Jacob Thornton committed
2423
2424
2425
      event.preventDefault();
    }

Mark Otto's avatar
dist    
Mark Otto committed
2426
    var $target = $$$1(target).one(Event.SHOW, function (showEvent) {
Jacob Thornton's avatar
Jacob Thornton committed
2427
      if (showEvent.isDefaultPrevented()) {
Mark Otto's avatar
dist    
Mark Otto committed
2428
        // Only register focus restorer if modal will actually get shown
Jacob Thornton's avatar
Jacob Thornton committed
2429
2430
2431
2432
        return;
      }

      $target.one(Event.HIDDEN, function () {
Mark Otto's avatar
dist    
Mark Otto committed
2433
        if ($$$1(_this10).is(':visible')) {
Mark Otto's avatar
dist    
Mark Otto committed
2434
          _this10.focus();
Jacob Thornton's avatar
Jacob Thornton committed
2435
2436
2437
2438
        }
      });
    });

Mark Otto's avatar
dist    
Mark Otto committed
2439
    Modal._jQueryInterface.call($$$1(target), config, this);
Mark Otto's avatar
Mark Otto committed
2440
  });
Jacob Thornton's avatar
Jacob Thornton committed
2441
2442
2443
2444
2445
2446
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
dist    
Mark Otto committed
2447
2448
  $$$1.fn[NAME] = Modal._jQueryInterface;
  $$$1.fn[NAME].Constructor = Modal;
Mark Otto's avatar
dist    
Mark Otto committed
2449

Mark Otto's avatar
dist    
Mark Otto committed
2450
2451
  $$$1.fn[NAME].noConflict = function () {
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
Jacob Thornton's avatar
Jacob Thornton committed
2452
2453
2454
2455
    return Modal._jQueryInterface;
  };

  return Modal;
Mark Otto's avatar
dist    
Mark Otto committed
2456
}($);
Jacob Thornton's avatar
Jacob Thornton committed
2457
2458
2459

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
2460
 * Bootstrap (v4.0.0): tooltip.js
Jacob Thornton's avatar
Jacob Thornton committed
2461
2462
2463
2464
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
2465
var Tooltip = function ($$$1) {
Jacob Thornton's avatar
Jacob Thornton committed
2466
2467
2468
2469
2470
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist    
Mark Otto committed
2471
  var NAME = 'tooltip';
Mark Otto's avatar
Mark Otto committed
2472
  var VERSION = '4.0.0';
Mark Otto's avatar
dist    
Mark Otto committed
2473
  var DATA_KEY = 'bs.tooltip';
Mark Otto's avatar
dist    
Mark Otto committed
2474
  var EVENT_KEY = "." + DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
2475
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
Mark Otto's avatar
dist    
Mark Otto committed
2476
2477
  var TRANSITION_DURATION = 150;
  var CLASS_PREFIX = 'bs-tooltip';
Mark Otto's avatar
dist    
Mark Otto committed
2478
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
Mark Otto's avatar
dist    
Mark Otto committed
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
  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
2490
2491
    fallbackPlacement: '(string|array)',
    boundary: '(string|element)'
Mark Otto's avatar
dist    
Mark Otto committed
2492
2493
2494
2495
2496
2497
2498
2499
  };
  var AttachmentMap = {
    AUTO: 'auto',
    TOP: 'top',
    RIGHT: 'right',
    BOTTOM: 'bottom',
    LEFT: 'left'
  };
Jacob Thornton's avatar
Jacob Thornton committed
2500
  var Default = {
Mark Otto's avatar
dist    
Mark Otto committed
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
    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
2511
2512
    fallbackPlacement: 'flip',
    boundary: 'scrollParent'
Jacob Thornton's avatar
Jacob Thornton committed
2513
  };
Mark Otto's avatar
dist    
Mark Otto committed
2514
2515
2516
  var HoverState = {
    SHOW: 'show',
    OUT: 'out'
Jacob Thornton's avatar
Jacob Thornton committed
2517
2518
  };
  var Event = {
Mark Otto's avatar
dist    
Mark Otto committed
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
    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
2529
2530
  };
  var ClassName = {
Mark Otto's avatar
dist    
Mark Otto committed
2531
2532
    FADE: 'fade',
    SHOW: 'show'
Jacob Thornton's avatar
Jacob Thornton committed
2533
2534
  };
  var Selector = {
Mark Otto's avatar
dist    
Mark Otto committed
2535
2536
2537
    TOOLTIP: '.tooltip',
    TOOLTIP_INNER: '.tooltip-inner',
    ARROW: '.arrow'
Jacob Thornton's avatar
Jacob Thornton committed
2538
  };
Mark Otto's avatar
dist    
Mark Otto committed
2539
2540
2541
2542
2543
  var Trigger = {
    HOVER: 'hover',
    FOCUS: 'focus',
    CLICK: 'click',
    MANUAL: 'manual'
Mark Otto's avatar
dist    
Mark Otto committed
2544
2545
2546
2547
2548
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
Jacob Thornton's avatar
Jacob Thornton committed
2549

Mark Otto's avatar
dist    
Mark Otto committed
2550
  };
Jacob Thornton's avatar
Jacob Thornton committed
2551

Mark Otto's avatar
dist    
Mark Otto committed
2552
2553
2554
2555
  var Tooltip =
  /*#__PURE__*/
  function () {
    function Tooltip(element, config) {
Mark Otto's avatar
dist    
Mark Otto committed
2556
2557
2558
2559
2560
      /**
       * Check for Popper dependency
       * Popper - https://popper.js.org
       */
      if (typeof Popper === 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
2561
        throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');
Mark Otto's avatar
dist    
Mark Otto committed
2562
2563
2564
      } // private


Mark Otto's avatar
dist    
Mark Otto committed
2565
2566
2567
2568
      this._isEnabled = true;
      this._timeout = 0;
      this._hoverState = '';
      this._activeTrigger = {};
Mark Otto's avatar
dist    
Mark Otto committed
2569
      this._popper = null; // Protected
Jacob Thornton's avatar
Jacob Thornton committed
2570

Mark Otto's avatar
dist    
Mark Otto committed
2571
2572
2573
      this.element = element;
      this.config = this._getConfig(config);
      this.tip = null;
Jacob Thornton's avatar
Jacob Thornton committed
2574

Mark Otto's avatar
dist    
Mark Otto committed
2575
      this._setListeners();
Mark Otto's avatar
dist    
Mark Otto committed
2576
    } // Getters
Jacob Thornton's avatar
Jacob Thornton committed
2577
2578


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

Mark Otto's avatar
dist    
Mark Otto committed
2581
    // Public
Mark Otto's avatar
dist    
Mark Otto committed
2582
    _proto.enable = function enable() {
Mark Otto's avatar
dist    
Mark Otto committed
2583
2584
      this._isEnabled = true;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2585

Mark Otto's avatar
dist    
Mark Otto committed
2586
    _proto.disable = function disable() {
Mark Otto's avatar
dist    
Mark Otto committed
2587
2588
      this._isEnabled = false;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2589

Mark Otto's avatar
dist    
Mark Otto committed
2590
    _proto.toggleEnabled = function toggleEnabled() {
Mark Otto's avatar
dist    
Mark Otto committed
2591
2592
      this._isEnabled = !this._isEnabled;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2593

Mark Otto's avatar
dist    
Mark Otto committed
2594
    _proto.toggle = function toggle(event) {
Mark Otto's avatar
dist    
Mark Otto committed
2595
2596
2597
      if (!this._isEnabled) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2598

Mark Otto's avatar
dist    
Mark Otto committed
2599
2600
      if (event) {
        var dataKey = this.constructor.DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
2601
        var context = $$$1(event.currentTarget).data(dataKey);
Jacob Thornton's avatar
Jacob Thornton committed
2602

Mark Otto's avatar
dist    
Mark Otto committed
2603
2604
        if (!context) {
          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
Mark Otto's avatar
dist    
Mark Otto committed
2605
          $$$1(event.currentTarget).data(dataKey, context);
Mark Otto's avatar
dist    
Mark Otto committed
2606
        }
Jacob Thornton's avatar
Jacob Thornton committed
2607

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

Mark Otto's avatar
dist    
Mark Otto committed
2610
2611
2612
2613
        if (context._isWithActiveTrigger()) {
          context._enter(null, context);
        } else {
          context._leave(null, context);
Mark Otto's avatar
grunt    
Mark Otto committed
2614
        }
Mark Otto's avatar
dist    
Mark Otto committed
2615
      } else {
Mark Otto's avatar
dist    
Mark Otto committed
2616
        if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {
Mark Otto's avatar
dist    
Mark Otto committed
2617
          this._leave(null, this);
Mark Otto's avatar
dist    
Mark Otto committed
2618

Mark Otto's avatar
dist    
Mark Otto committed
2619
          return;
Mark Otto's avatar
grunt    
Mark Otto committed
2620
        }
Jacob Thornton's avatar
Jacob Thornton committed
2621

Mark Otto's avatar
dist    
Mark Otto committed
2622
2623
        this._enter(null, this);
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2624
    };
Jacob Thornton's avatar
Jacob Thornton committed
2625

Mark Otto's avatar
dist    
Mark Otto committed
2626
    _proto.dispose = function dispose() {
Mark Otto's avatar
dist    
Mark Otto committed
2627
      clearTimeout(this._timeout);
Mark Otto's avatar
dist    
Mark Otto committed
2628
2629
2630
      $$$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
2631
2632

      if (this.tip) {
Mark Otto's avatar
dist    
Mark Otto committed
2633
        $$$1(this.tip).remove();
Jacob Thornton's avatar
Jacob Thornton committed
2634
2635
      }

Mark Otto's avatar
dist    
Mark Otto committed
2636
2637
2638
2639
      this._isEnabled = null;
      this._timeout = null;
      this._hoverState = null;
      this._activeTrigger = null;
Mark Otto's avatar
dist    
Mark Otto committed
2640

Mark Otto's avatar
dist    
Mark Otto committed
2641
2642
2643
      if (this._popper !== null) {
        this._popper.destroy();
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2644

Mark Otto's avatar
dist    
Mark Otto committed
2645
2646
2647
2648
      this._popper = null;
      this.element = null;
      this.config = null;
      this.tip = null;
Mark Otto's avatar
grunt    
Mark Otto committed
2649
    };
Jacob Thornton's avatar
Jacob Thornton committed
2650

Mark Otto's avatar
dist    
Mark Otto committed
2651
    _proto.show = function show() {
Mark Otto's avatar
dist    
Mark Otto committed
2652
      var _this = this;
Jacob Thornton's avatar
Jacob Thornton committed
2653

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

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

Mark Otto's avatar
dist    
Mark Otto committed
2660
      if (this.isWithContent() && this._isEnabled) {
Mark Otto's avatar
dist    
Mark Otto committed
2661
2662
        $$$1(this.element).trigger(showEvent);
        var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
Jacob Thornton's avatar
Jacob Thornton committed
2663

Mark Otto's avatar
dist    
Mark Otto committed
2664
2665
2666
        if (showEvent.isDefaultPrevented() || !isInTheDom) {
          return;
        }
Jacob Thornton's avatar
Jacob Thornton committed
2667

Mark Otto's avatar
dist    
Mark Otto committed
2668
2669
2670
2671
2672
2673
2674
        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
2675
          $$$1(tip).addClass(ClassName.FADE);
Jacob Thornton's avatar
Jacob Thornton committed
2676
        }
Jacob Thornton's avatar
Jacob Thornton committed
2677

Mark Otto's avatar
dist    
Mark Otto committed
2678
        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
2679

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

Mark Otto's avatar
dist    
Mark Otto committed
2682
        this.addAttachmentClass(attachment);
Mark Otto's avatar
dist    
Mark Otto committed
2683
2684
        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
2685

Mark Otto's avatar
dist    
Mark Otto committed
2686
2687
        if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
          $$$1(tip).appendTo(container);
Jacob Thornton's avatar
Jacob Thornton committed
2688
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2689

Mark Otto's avatar
dist    
Mark Otto committed
2690
        $$$1(this.element).trigger(this.constructor.Event.INSERTED);
Mark Otto's avatar
dist    
Mark Otto committed
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
        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
2702
2703
2704
            },
            preventOverflow: {
              boundariesElement: this.config.boundary
Mark Otto's avatar
dist    
Mark Otto committed
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
            }
          },
          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
2716
        $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
Mark Otto's avatar
dist    
Mark Otto committed
2717
2718
2719
        // 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
2720

Mark Otto's avatar
dist    
Mark Otto committed
2721
        if ('ontouchstart' in document.documentElement) {
Mark Otto's avatar
dist    
Mark Otto committed
2722
          $$$1(document.body).children().on('mouseover', null, $$$1.noop);
Mark Otto's avatar
dist    
Mark Otto committed
2723
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2724

Mark Otto's avatar
dist    
Mark Otto committed
2725
2726
2727
2728
        var complete = function complete() {
          if (_this.config.animation) {
            _this._fixTransition();
          }
Mark Otto's avatar
dist    
Mark Otto committed
2729

Mark Otto's avatar
dist    
Mark Otto committed
2730
2731
          var prevHoverState = _this._hoverState;
          _this._hoverState = null;
Mark Otto's avatar
dist    
Mark Otto committed
2732
          $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
Jacob Thornton's avatar
Jacob Thornton committed
2733

Mark Otto's avatar
dist    
Mark Otto committed
2734
2735
2736
2737
2738
          if (prevHoverState === HoverState.OUT) {
            _this._leave(null, _this);
          }
        };

Mark Otto's avatar
dist    
Mark Otto committed
2739
2740
        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
2741
2742
2743
2744
        } else {
          complete();
        }
      }
Mark Otto's avatar
grunt    
Mark Otto committed
2745
    };
Jacob Thornton's avatar
Jacob Thornton committed
2746

Mark Otto's avatar
dist    
Mark Otto committed
2747
    _proto.hide = function hide(callback) {
Mark Otto's avatar
dist    
Mark Otto committed
2748
      var _this2 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2749

Mark Otto's avatar
dist    
Mark Otto committed
2750
      var tip = this.getTipElement();
Mark Otto's avatar
dist    
Mark Otto committed
2751
      var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
Mark Otto's avatar
dist    
Mark Otto committed
2752

Mark Otto's avatar
dist    
Mark Otto committed
2753
2754
2755
2756
      var complete = function complete() {
        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
          tip.parentNode.removeChild(tip);
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2757

Mark Otto's avatar
dist    
Mark Otto committed
2758
        _this2._cleanTipClass();
Mark Otto's avatar
dist    
Mark Otto committed
2759

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

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

Mark Otto's avatar
dist    
Mark Otto committed
2764
2765
        if (_this2._popper !== null) {
          _this2._popper.destroy();
Mark Otto's avatar
grunt    
Mark Otto committed
2766
2767
        }

Mark Otto's avatar
dist    
Mark Otto committed
2768
2769
        if (callback) {
          callback();
Mark Otto's avatar
grunt    
Mark Otto committed
2770
        }
Mark Otto's avatar
dist    
Mark Otto committed
2771
      };
Mark Otto's avatar
grunt    
Mark Otto committed
2772

Mark Otto's avatar
dist    
Mark Otto committed
2773
      $$$1(this.element).trigger(hideEvent);
Mark Otto's avatar
dist    
Mark Otto committed
2774
2775
2776

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

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

Mark Otto's avatar
dist    
Mark Otto committed
2782
      if ('ontouchstart' in document.documentElement) {
Mark Otto's avatar
dist    
Mark Otto committed
2783
        $$$1(document.body).children().off('mouseover', null, $$$1.noop);
Mark Otto's avatar
dist    
Mark Otto committed
2784
      }
Jacob Thornton's avatar
Jacob Thornton committed
2785

Mark Otto's avatar
dist    
Mark Otto committed
2786
2787
2788
      this._activeTrigger[Trigger.CLICK] = false;
      this._activeTrigger[Trigger.FOCUS] = false;
      this._activeTrigger[Trigger.HOVER] = false;
Jacob Thornton's avatar
Jacob Thornton committed
2789

Mark Otto's avatar
dist    
Mark Otto committed
2790
2791
      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
2792
2793
2794
      } else {
        complete();
      }
Jacob Thornton's avatar
Jacob Thornton committed
2795

Mark Otto's avatar
dist    
Mark Otto committed
2796
2797
      this._hoverState = '';
    };
Jacob Thornton's avatar
Jacob Thornton committed
2798

Mark Otto's avatar
dist    
Mark Otto committed
2799
    _proto.update = function update() {
Mark Otto's avatar
dist    
Mark Otto committed
2800
2801
2802
      if (this._popper !== null) {
        this._popper.scheduleUpdate();
      }
Mark Otto's avatar
dist    
Mark Otto committed
2803
    }; // Protected
Jacob Thornton's avatar
Jacob Thornton committed
2804
2805


Mark Otto's avatar
dist    
Mark Otto committed
2806
    _proto.isWithContent = function isWithContent() {
Mark Otto's avatar
dist    
Mark Otto committed
2807
2808
      return Boolean(this.getTitle());
    };
Jacob Thornton's avatar
Jacob Thornton committed
2809

Mark Otto's avatar
dist    
Mark Otto committed
2810
    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
Mark Otto's avatar
dist    
Mark Otto committed
2811
      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
Mark Otto's avatar
dist    
Mark Otto committed
2812
    };
Jacob Thornton's avatar
Jacob Thornton committed
2813

Mark Otto's avatar
dist    
Mark Otto committed
2814
    _proto.getTipElement = function getTipElement() {
Mark Otto's avatar
dist    
Mark Otto committed
2815
      this.tip = this.tip || $$$1(this.config.template)[0];
Mark Otto's avatar
dist    
Mark Otto committed
2816
2817
      return this.tip;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2818

Mark Otto's avatar
dist    
Mark Otto committed
2819
    _proto.setContent = function setContent() {
Mark Otto's avatar
dist    
Mark Otto committed
2820
      var $tip = $$$1(this.getTipElement());
Mark Otto's avatar
dist    
Mark Otto committed
2821
      this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
Mark Otto's avatar
dist    
Mark Otto committed
2822
      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
Mark Otto's avatar
dist    
Mark Otto committed
2823
    };
Jacob Thornton's avatar
Jacob Thornton committed
2824

Mark Otto's avatar
dist    
Mark Otto committed
2825
    _proto.setElementContent = function setElementContent($element, content) {
Mark Otto's avatar
dist    
Mark Otto committed
2826
      var html = this.config.html;
Mark Otto's avatar
dist    
Mark Otto committed
2827
2828

      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
Mark Otto's avatar
dist    
Mark Otto committed
2829
        // Content is a DOM node or a jQuery
Mark Otto's avatar
dist    
Mark Otto committed
2830
        if (html) {
Mark Otto's avatar
dist    
Mark Otto committed
2831
          if (!$$$1(content).parent().is($element)) {
Mark Otto's avatar
dist    
Mark Otto committed
2832
2833
2834
            $element.empty().append(content);
          }
        } else {
Mark Otto's avatar
dist    
Mark Otto committed
2835
          $element.text($$$1(content).text());
Mark Otto's avatar
dist    
Mark Otto committed
2836
2837
2838
2839
2840
        }
      } else {
        $element[html ? 'html' : 'text'](content);
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
2841

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

Mark Otto's avatar
dist    
Mark Otto committed
2845
2846
2847
      if (!title) {
        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2848

Mark Otto's avatar
dist    
Mark Otto committed
2849
      return title;
Mark Otto's avatar
dist    
Mark Otto committed
2850
    }; // Private
Jacob Thornton's avatar
Jacob Thornton committed
2851
2852


Mark Otto's avatar
dist    
Mark Otto committed
2853
    _proto._getAttachment = function _getAttachment(placement) {
Mark Otto's avatar
dist    
Mark Otto committed
2854
2855
      return AttachmentMap[placement.toUpperCase()];
    };
Jacob Thornton's avatar
Jacob Thornton committed
2856

Mark Otto's avatar
dist    
Mark Otto committed
2857
    _proto._setListeners = function _setListeners() {
Mark Otto's avatar
dist    
Mark Otto committed
2858
      var _this3 = this;
Jacob Thornton's avatar
Jacob Thornton committed
2859

Mark Otto's avatar
dist    
Mark Otto committed
2860
2861
2862
      var triggers = this.config.trigger.split(' ');
      triggers.forEach(function (trigger) {
        if (trigger === 'click') {
Mark Otto's avatar
dist    
Mark Otto committed
2863
          $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2864
2865
2866
2867
2868
            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
2869
          $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
2870
2871
2872
2873
2874
            return _this3._enter(event);
          }).on(eventOut, _this3.config.selector, function (event) {
            return _this3._leave(event);
          });
        }
Jacob Thornton's avatar
Jacob Thornton committed
2875

Mark Otto's avatar
dist    
Mark Otto committed
2876
        $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
Mark Otto's avatar
dist    
Mark Otto committed
2877
2878
          return _this3.hide();
        });
Mark Otto's avatar
grunt    
Mark Otto committed
2879
      });
Jacob Thornton's avatar
Jacob Thornton committed
2880

Mark Otto's avatar
dist    
Mark Otto committed
2881
      if (this.config.selector) {
Mark Otto's avatar
dist    
Mark Otto committed
2882
        this.config = _extends({}, this.config, {
Mark Otto's avatar
dist    
Mark Otto committed
2883
2884
2885
2886
2887
2888
2889
          trigger: 'manual',
          selector: ''
        });
      } else {
        this._fixTitle();
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
2890

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

Mark Otto's avatar
dist    
Mark Otto committed
2894
2895
2896
      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
2897
      }
Mark Otto's avatar
dist    
Mark Otto committed
2898
    };
Jacob Thornton's avatar
Jacob Thornton committed
2899

Mark Otto's avatar
dist    
Mark Otto committed
2900
    _proto._enter = function _enter(event, context) {
Mark Otto's avatar
dist    
Mark Otto committed
2901
      var dataKey = this.constructor.DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
2902
      context = context || $$$1(event.currentTarget).data(dataKey);
Jacob Thornton's avatar
Jacob Thornton committed
2903

Mark Otto's avatar
dist    
Mark Otto committed
2904
2905
      if (!context) {
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
Mark Otto's avatar
dist    
Mark Otto committed
2906
        $$$1(event.currentTarget).data(dataKey, context);
Mark Otto's avatar
grunt    
Mark Otto committed
2907
      }
Jacob Thornton's avatar
Jacob Thornton committed
2908

Mark Otto's avatar
dist    
Mark Otto committed
2909
2910
2911
      if (event) {
        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2912

Mark Otto's avatar
dist    
Mark Otto committed
2913
      if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
Mark Otto's avatar
dist    
Mark Otto committed
2914
2915
2916
        context._hoverState = HoverState.SHOW;
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
2917

Mark Otto's avatar
dist    
Mark Otto committed
2918
2919
      clearTimeout(context._timeout);
      context._hoverState = HoverState.SHOW;
Jacob Thornton's avatar
Jacob Thornton committed
2920

Mark Otto's avatar
dist    
Mark Otto committed
2921
2922
2923
      if (!context.config.delay || !context.config.delay.show) {
        context.show();
        return;
Jacob Thornton's avatar
Jacob Thornton committed
2924
2925
      }

Mark Otto's avatar
dist    
Mark Otto committed
2926
2927
2928
2929
2930
      context._timeout = setTimeout(function () {
        if (context._hoverState === HoverState.SHOW) {
          context.show();
        }
      }, context.config.delay.show);
Mark Otto's avatar
grunt    
Mark Otto committed
2931
    };
Jacob Thornton's avatar
Jacob Thornton committed
2932

Mark Otto's avatar
dist    
Mark Otto committed
2933
    _proto._leave = function _leave(event, context) {
Mark Otto's avatar
dist    
Mark Otto committed
2934
      var dataKey = this.constructor.DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
2935
      context = context || $$$1(event.currentTarget).data(dataKey);
Mark Otto's avatar
grunt    
Mark Otto committed
2936

Mark Otto's avatar
dist    
Mark Otto committed
2937
2938
      if (!context) {
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
Mark Otto's avatar
dist    
Mark Otto committed
2939
        $$$1(event.currentTarget).data(dataKey, context);
Mark Otto's avatar
dist    
Mark Otto committed
2940
2941
      }

Mark Otto's avatar
dist    
Mark Otto committed
2942
2943
      if (event) {
        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
Jacob Thornton's avatar
Jacob Thornton committed
2944
2945
      }

Mark Otto's avatar
dist    
Mark Otto committed
2946
2947
      if (context._isWithActiveTrigger()) {
        return;
Mark Otto's avatar
grunt    
Mark Otto committed
2948
      }
Jacob Thornton's avatar
Jacob Thornton committed
2949

Mark Otto's avatar
dist    
Mark Otto committed
2950
2951
      clearTimeout(context._timeout);
      context._hoverState = HoverState.OUT;
Jacob Thornton's avatar
Jacob Thornton committed
2952

Mark Otto's avatar
dist    
Mark Otto committed
2953
2954
2955
      if (!context.config.delay || !context.config.delay.hide) {
        context.hide();
        return;
Mark Otto's avatar
grunt    
Mark Otto committed
2956
      }
Jacob Thornton's avatar
Jacob Thornton committed
2957

Mark Otto's avatar
dist    
Mark Otto committed
2958
2959
2960
2961
2962
2963
      context._timeout = setTimeout(function () {
        if (context._hoverState === HoverState.OUT) {
          context.hide();
        }
      }, context.config.delay.hide);
    };
Jacob Thornton's avatar
Jacob Thornton committed
2964

Mark Otto's avatar
dist    
Mark Otto committed
2965
    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
Mark Otto's avatar
dist    
Mark Otto committed
2966
2967
2968
2969
      for (var trigger in this._activeTrigger) {
        if (this._activeTrigger[trigger]) {
          return true;
        }
Mark Otto's avatar
grunt    
Mark Otto committed
2970
      }
Jacob Thornton's avatar
Jacob Thornton committed
2971

Mark Otto's avatar
dist    
Mark Otto committed
2972
2973
      return false;
    };
Jacob Thornton's avatar
Jacob Thornton committed
2974

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

Mark Otto's avatar
dist    
Mark Otto committed
2978
      if (typeof config.delay === 'number') {
Mark Otto's avatar
dist    
Mark Otto committed
2979
2980
2981
2982
        config.delay = {
          show: config.delay,
          hide: config.delay
        };
Mark Otto's avatar
grunt    
Mark Otto committed
2983
2984
      }

Mark Otto's avatar
dist    
Mark Otto committed
2985
      if (typeof config.title === 'number') {
Mark Otto's avatar
dist    
Mark Otto committed
2986
        config.title = config.title.toString();
Jacob Thornton's avatar
Jacob Thornton committed
2987
2988
      }

Mark Otto's avatar
dist    
Mark Otto committed
2989
      if (typeof config.content === 'number') {
Mark Otto's avatar
dist    
Mark Otto committed
2990
2991
        config.content = config.content.toString();
      }
Jacob Thornton's avatar
Jacob Thornton committed
2992

Mark Otto's avatar
dist    
Mark Otto committed
2993
2994
2995
2996
      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
      return config;
    };

Mark Otto's avatar
dist    
Mark Otto committed
2997
    _proto._getDelegateConfig = function _getDelegateConfig() {
Mark Otto's avatar
dist    
Mark Otto committed
2998
2999
3000
      var config = {};

      if (this.config) {
For faster browsing, not all history is shown. View entire blame