bootstrap 4.3.1 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bootstrap might be problematic. Click here for more details.

Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +1 -1
  5. data/assets/javascripts/bootstrap-sprockets.js +7 -7
  6. data/assets/javascripts/bootstrap.js +1073 -1076
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +42 -49
  9. data/assets/javascripts/bootstrap/button.js +111 -64
  10. data/assets/javascripts/bootstrap/carousel.js +162 -177
  11. data/assets/javascripts/bootstrap/collapse.js +97 -122
  12. data/assets/javascripts/bootstrap/dropdown.js +163 -189
  13. data/assets/javascripts/bootstrap/modal.js +213 -194
  14. data/assets/javascripts/bootstrap/popover.js +51 -72
  15. data/assets/javascripts/bootstrap/scrollspy.js +80 -109
  16. data/assets/javascripts/bootstrap/tab.js +72 -79
  17. data/assets/javascripts/bootstrap/toast.js +96 -107
  18. data/assets/javascripts/bootstrap/tooltip.js +186 -201
  19. data/assets/javascripts/bootstrap/util.js +41 -20
  20. data/assets/stylesheets/_bootstrap-grid.scss +5 -4
  21. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  22. data/assets/stylesheets/_bootstrap.scss +4 -4
  23. data/assets/stylesheets/bootstrap/_alert.scss +1 -0
  24. data/assets/stylesheets/bootstrap/_badge.scss +1 -1
  25. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -2
  26. data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
  27. data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
  28. data/assets/stylesheets/bootstrap/_card.scss +42 -45
  29. data/assets/stylesheets/bootstrap/_carousel.scss +7 -7
  30. data/assets/stylesheets/bootstrap/_close.scss +2 -3
  31. data/assets/stylesheets/bootstrap/_code.scss +1 -1
  32. data/assets/stylesheets/bootstrap/_custom-forms.scss +38 -19
  33. data/assets/stylesheets/bootstrap/_dropdown.scss +7 -6
  34. data/assets/stylesheets/bootstrap/_forms.scss +26 -9
  35. data/assets/stylesheets/bootstrap/_functions.scss +63 -5
  36. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  37. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  38. data/assets/stylesheets/bootstrap/_input-group.scss +21 -6
  39. data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
  40. data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
  41. data/assets/stylesheets/bootstrap/_modal.scss +26 -15
  42. data/assets/stylesheets/bootstrap/_nav.scss +7 -7
  43. data/assets/stylesheets/bootstrap/_navbar.scss +55 -17
  44. data/assets/stylesheets/bootstrap/_pagination.scss +5 -4
  45. data/assets/stylesheets/bootstrap/_popover.scss +8 -9
  46. data/assets/stylesheets/bootstrap/_print.scss +2 -2
  47. data/assets/stylesheets/bootstrap/_progress.scss +7 -3
  48. data/assets/stylesheets/bootstrap/_reboot.scss +39 -38
  49. data/assets/stylesheets/bootstrap/_spinners.scss +14 -4
  50. data/assets/stylesheets/bootstrap/_tables.scss +3 -3
  51. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  52. data/assets/stylesheets/bootstrap/_type.scss +3 -3
  53. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  54. data/assets/stylesheets/bootstrap/_variables.scss +58 -35
  55. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  56. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
  57. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
  58. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
  59. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  60. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
  61. data/assets/stylesheets/bootstrap/mixins/_forms.scss +42 -49
  62. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +29 -15
  63. data/assets/stylesheets/bootstrap/mixins/_grid.scss +25 -7
  64. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  65. data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
  66. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  67. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  68. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  69. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  70. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +4 -3
  71. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  72. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
  73. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  74. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  75. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  76. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  77. data/assets/stylesheets/bootstrap/utilities/_text.scss +4 -4
  78. data/bootstrap.gemspec +1 -1
  79. data/lib/bootstrap/version.rb +2 -2
  80. data/tasks/updater/network.rb +2 -2
  81. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  82. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  83. data/test/gemfiles/rails_6_0.gemfile +7 -0
  84. data/test/support/dummy_rails_integration.rb +3 -1
  85. data/test/test_helper.rb +18 -13
  86. metadata +11 -5
@@ -1,17 +1,19 @@
1
1
  /*!
2
- * Bootstrap tooltip.js v4.3.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap tooltip.js v4.6.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
7
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('popper.js'), require('./util.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util.js'], factory) :
9
- (global = global || self, global.Tooltip = factory(global.jQuery, global.Popper, global.Util));
10
- }(this, function ($, Popper, Util) { 'use strict';
8
+ typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global.jQuery, global.Popper, global.Util));
10
+ }(this, (function ($, Popper, Util) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
- Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
+ var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);
16
+ var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
15
17
 
16
18
  function _defineProperties(target, props) {
17
19
  for (var i = 0; i < props.length; i++) {
@@ -29,44 +31,28 @@
29
31
  return Constructor;
30
32
  }
31
33
 
32
- function _defineProperty(obj, key, value) {
33
- if (key in obj) {
34
- Object.defineProperty(obj, key, {
35
- value: value,
36
- enumerable: true,
37
- configurable: true,
38
- writable: true
39
- });
40
- } else {
41
- obj[key] = value;
42
- }
43
-
44
- return obj;
45
- }
46
-
47
- function _objectSpread(target) {
48
- for (var i = 1; i < arguments.length; i++) {
49
- var source = arguments[i] != null ? arguments[i] : {};
50
- var ownKeys = Object.keys(source);
34
+ function _extends() {
35
+ _extends = Object.assign || function (target) {
36
+ for (var i = 1; i < arguments.length; i++) {
37
+ var source = arguments[i];
51
38
 
52
- if (typeof Object.getOwnPropertySymbols === 'function') {
53
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
54
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
55
- }));
39
+ for (var key in source) {
40
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
41
+ target[key] = source[key];
42
+ }
43
+ }
56
44
  }
57
45
 
58
- ownKeys.forEach(function (key) {
59
- _defineProperty(target, key, source[key]);
60
- });
61
- }
46
+ return target;
47
+ };
62
48
 
63
- return target;
49
+ return _extends.apply(this, arguments);
64
50
  }
65
51
 
66
52
  /**
67
53
  * --------------------------------------------------------------------------
68
- * Bootstrap (v4.3.1): tools/sanitizer.js
69
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
54
+ * Bootstrap (v4.6.0): tools/sanitizer.js
55
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
70
56
  * --------------------------------------------------------------------------
71
57
  */
72
58
  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
@@ -90,7 +76,7 @@
90
76
  h5: [],
91
77
  h6: [],
92
78
  i: [],
93
- img: ['src', 'alt', 'title', 'width', 'height'],
79
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
94
80
  li: [],
95
81
  ol: [],
96
82
  p: [],
@@ -103,21 +89,21 @@
103
89
  strong: [],
104
90
  u: [],
105
91
  ul: []
106
- /**
107
- * A pattern that recognizes a commonly useful subset of URLs that are safe.
108
- *
109
- * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
110
- */
111
-
112
92
  };
113
- var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
93
+ /**
94
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
95
+ *
96
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
97
+ */
98
+
99
+ var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;
114
100
  /**
115
101
  * A pattern that matches safe data URLs. Only matches image, video and audio types.
116
102
  *
117
103
  * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
118
104
  */
119
105
 
120
- var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
106
+ var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
121
107
 
122
108
  function allowedAttribute(attr, allowedAttributeList) {
123
109
  var attrName = attr.nodeName.toLowerCase();
@@ -134,7 +120,7 @@
134
120
  return attrRegex instanceof RegExp;
135
121
  }); // Check if a regular expression validates the attribute.
136
122
 
137
- for (var i = 0, l = regExp.length; i < l; i++) {
123
+ for (var i = 0, len = regExp.length; i < len; i++) {
138
124
  if (attrName.match(regExp[i])) {
139
125
  return true;
140
126
  }
@@ -176,7 +162,7 @@
176
162
  };
177
163
 
178
164
  for (var i = 0, len = elements.length; i < len; i++) {
179
- var _ret = _loop(i, len);
165
+ var _ret = _loop(i);
180
166
 
181
167
  if (_ret === "continue") continue;
182
168
  }
@@ -191,10 +177,10 @@
191
177
  */
192
178
 
193
179
  var NAME = 'tooltip';
194
- var VERSION = '4.3.1';
180
+ var VERSION = '4.6.0';
195
181
  var DATA_KEY = 'bs.tooltip';
196
182
  var EVENT_KEY = "." + DATA_KEY;
197
- var JQUERY_NO_CONFLICT = $.fn[NAME];
183
+ var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
198
184
  var CLASS_PREFIX = 'bs-tooltip';
199
185
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
200
186
  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
@@ -211,9 +197,11 @@
211
197
  container: '(string|element|boolean)',
212
198
  fallbackPlacement: '(string|array)',
213
199
  boundary: '(string|element)',
200
+ customClass: '(string|function)',
214
201
  sanitize: 'boolean',
215
202
  sanitizeFn: '(null|function)',
216
- whiteList: 'object'
203
+ whiteList: 'object',
204
+ popperConfig: '(null|object)'
217
205
  };
218
206
  var AttachmentMap = {
219
207
  AUTO: 'auto',
@@ -235,14 +223,14 @@
235
223
  container: false,
236
224
  fallbackPlacement: 'flip',
237
225
  boundary: 'scrollParent',
226
+ customClass: '',
238
227
  sanitize: true,
239
228
  sanitizeFn: null,
240
- whiteList: DefaultWhitelist
241
- };
242
- var HoverState = {
243
- SHOW: 'show',
244
- OUT: 'out'
229
+ whiteList: DefaultWhitelist,
230
+ popperConfig: null
245
231
  };
232
+ var HOVER_STATE_SHOW = 'show';
233
+ var HOVER_STATE_OUT = 'out';
246
234
  var Event = {
247
235
  HIDE: "hide" + EVENT_KEY,
248
236
  HIDDEN: "hidden" + EVENT_KEY,
@@ -255,38 +243,24 @@
255
243
  MOUSEENTER: "mouseenter" + EVENT_KEY,
256
244
  MOUSELEAVE: "mouseleave" + EVENT_KEY
257
245
  };
258
- var ClassName = {
259
- FADE: 'fade',
260
- SHOW: 'show'
261
- };
262
- var Selector = {
263
- TOOLTIP: '.tooltip',
264
- TOOLTIP_INNER: '.tooltip-inner',
265
- ARROW: '.arrow'
266
- };
267
- var Trigger = {
268
- HOVER: 'hover',
269
- FOCUS: 'focus',
270
- CLICK: 'click',
271
- MANUAL: 'manual'
272
- /**
273
- * ------------------------------------------------------------------------
274
- * Class Definition
275
- * ------------------------------------------------------------------------
276
- */
277
-
278
- };
246
+ var CLASS_NAME_FADE = 'fade';
247
+ var CLASS_NAME_SHOW = 'show';
248
+ var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
249
+ var SELECTOR_ARROW = '.arrow';
250
+ var TRIGGER_HOVER = 'hover';
251
+ var TRIGGER_FOCUS = 'focus';
252
+ var TRIGGER_CLICK = 'click';
253
+ var TRIGGER_MANUAL = 'manual';
254
+ /**
255
+ * ------------------------------------------------------------------------
256
+ * Class Definition
257
+ * ------------------------------------------------------------------------
258
+ */
279
259
 
280
- var Tooltip =
281
- /*#__PURE__*/
282
- function () {
260
+ var Tooltip = /*#__PURE__*/function () {
283
261
  function Tooltip(element, config) {
284
- /**
285
- * Check for Popper dependency
286
- * Popper - https://popper.js.org
287
- */
288
- if (typeof Popper === 'undefined') {
289
- throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
262
+ if (typeof Popper__default['default'] === 'undefined') {
263
+ throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
290
264
  } // private
291
265
 
292
266
 
@@ -326,11 +300,11 @@
326
300
 
327
301
  if (event) {
328
302
  var dataKey = this.constructor.DATA_KEY;
329
- var context = $(event.currentTarget).data(dataKey);
303
+ var context = $__default['default'](event.currentTarget).data(dataKey);
330
304
 
331
305
  if (!context) {
332
306
  context = new this.constructor(event.currentTarget, this._getDelegateConfig());
333
- $(event.currentTarget).data(dataKey, context);
307
+ $__default['default'](event.currentTarget).data(dataKey, context);
334
308
  }
335
309
 
336
310
  context._activeTrigger.click = !context._activeTrigger.click;
@@ -341,7 +315,7 @@
341
315
  context._leave(null, context);
342
316
  }
343
317
  } else {
344
- if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {
318
+ if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {
345
319
  this._leave(null, this);
346
320
 
347
321
  return;
@@ -353,12 +327,12 @@
353
327
 
354
328
  _proto.dispose = function dispose() {
355
329
  clearTimeout(this._timeout);
356
- $.removeData(this.element, this.constructor.DATA_KEY);
357
- $(this.element).off(this.constructor.EVENT_KEY);
358
- $(this.element).closest('.modal').off('hide.bs.modal');
330
+ $__default['default'].removeData(this.element, this.constructor.DATA_KEY);
331
+ $__default['default'](this.element).off(this.constructor.EVENT_KEY);
332
+ $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);
359
333
 
360
334
  if (this.tip) {
361
- $(this.tip).remove();
335
+ $__default['default'](this.tip).remove();
362
336
  }
363
337
 
364
338
  this._isEnabled = null;
@@ -366,7 +340,7 @@
366
340
  this._hoverState = null;
367
341
  this._activeTrigger = null;
368
342
 
369
- if (this._popper !== null) {
343
+ if (this._popper) {
370
344
  this._popper.destroy();
371
345
  }
372
346
 
@@ -379,29 +353,29 @@
379
353
  _proto.show = function show() {
380
354
  var _this = this;
381
355
 
382
- if ($(this.element).css('display') === 'none') {
356
+ if ($__default['default'](this.element).css('display') === 'none') {
383
357
  throw new Error('Please use show on visible elements');
384
358
  }
385
359
 
386
- var showEvent = $.Event(this.constructor.Event.SHOW);
360
+ var showEvent = $__default['default'].Event(this.constructor.Event.SHOW);
387
361
 
388
362
  if (this.isWithContent() && this._isEnabled) {
389
- $(this.element).trigger(showEvent);
390
- var shadowRoot = Util.findShadowRoot(this.element);
391
- var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
363
+ $__default['default'](this.element).trigger(showEvent);
364
+ var shadowRoot = Util__default['default'].findShadowRoot(this.element);
365
+ var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
392
366
 
393
367
  if (showEvent.isDefaultPrevented() || !isInTheDom) {
394
368
  return;
395
369
  }
396
370
 
397
371
  var tip = this.getTipElement();
398
- var tipId = Util.getUID(this.constructor.NAME);
372
+ var tipId = Util__default['default'].getUID(this.constructor.NAME);
399
373
  tip.setAttribute('id', tipId);
400
374
  this.element.setAttribute('aria-describedby', tipId);
401
375
  this.setContent();
402
376
 
403
377
  if (this.config.animation) {
404
- $(tip).addClass(ClassName.FADE);
378
+ $__default['default'](tip).addClass(CLASS_NAME_FADE);
405
379
  }
406
380
 
407
381
  var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
@@ -412,43 +386,22 @@
412
386
 
413
387
  var container = this._getContainer();
414
388
 
415
- $(tip).data(this.constructor.DATA_KEY, this);
389
+ $__default['default'](tip).data(this.constructor.DATA_KEY, this);
416
390
 
417
- if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
418
- $(tip).appendTo(container);
391
+ if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) {
392
+ $__default['default'](tip).appendTo(container);
419
393
  }
420
394
 
421
- $(this.element).trigger(this.constructor.Event.INSERTED);
422
- this._popper = new Popper(this.element, tip, {
423
- placement: attachment,
424
- modifiers: {
425
- offset: this._getOffset(),
426
- flip: {
427
- behavior: this.config.fallbackPlacement
428
- },
429
- arrow: {
430
- element: Selector.ARROW
431
- },
432
- preventOverflow: {
433
- boundariesElement: this.config.boundary
434
- }
435
- },
436
- onCreate: function onCreate(data) {
437
- if (data.originalPlacement !== data.placement) {
438
- _this._handlePopperPlacementChange(data);
439
- }
440
- },
441
- onUpdate: function onUpdate(data) {
442
- return _this._handlePopperPlacementChange(data);
443
- }
444
- });
445
- $(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
395
+ $__default['default'](this.element).trigger(this.constructor.Event.INSERTED);
396
+ this._popper = new Popper__default['default'](this.element, tip, this._getPopperConfig(attachment));
397
+ $__default['default'](tip).addClass(CLASS_NAME_SHOW);
398
+ $__default['default'](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra
446
399
  // empty mouseover listeners to the body's immediate children;
447
400
  // only needed because of broken event delegation on iOS
448
401
  // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
449
402
 
450
403
  if ('ontouchstart' in document.documentElement) {
451
- $(document.body).children().on('mouseover', null, $.noop);
404
+ $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);
452
405
  }
453
406
 
454
407
  var complete = function complete() {
@@ -458,16 +411,16 @@
458
411
 
459
412
  var prevHoverState = _this._hoverState;
460
413
  _this._hoverState = null;
461
- $(_this.element).trigger(_this.constructor.Event.SHOWN);
414
+ $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN);
462
415
 
463
- if (prevHoverState === HoverState.OUT) {
416
+ if (prevHoverState === HOVER_STATE_OUT) {
464
417
  _this._leave(null, _this);
465
418
  }
466
419
  };
467
420
 
468
- if ($(this.tip).hasClass(ClassName.FADE)) {
469
- var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
470
- $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
421
+ if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE)) {
422
+ var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this.tip);
423
+ $__default['default'](this.tip).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
471
424
  } else {
472
425
  complete();
473
426
  }
@@ -478,10 +431,10 @@
478
431
  var _this2 = this;
479
432
 
480
433
  var tip = this.getTipElement();
481
- var hideEvent = $.Event(this.constructor.Event.HIDE);
434
+ var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE);
482
435
 
483
436
  var complete = function complete() {
484
- if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
437
+ if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
485
438
  tip.parentNode.removeChild(tip);
486
439
  }
487
440
 
@@ -489,7 +442,7 @@
489
442
 
490
443
  _this2.element.removeAttribute('aria-describedby');
491
444
 
492
- $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
445
+ $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN);
493
446
 
494
447
  if (_this2._popper !== null) {
495
448
  _this2._popper.destroy();
@@ -500,26 +453,26 @@
500
453
  }
501
454
  };
502
455
 
503
- $(this.element).trigger(hideEvent);
456
+ $__default['default'](this.element).trigger(hideEvent);
504
457
 
505
458
  if (hideEvent.isDefaultPrevented()) {
506
459
  return;
507
460
  }
508
461
 
509
- $(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
462
+ $__default['default'](tip).removeClass(CLASS_NAME_SHOW); // If this is a touch-enabled device we remove the extra
510
463
  // empty mouseover listeners we added for iOS support
511
464
 
512
465
  if ('ontouchstart' in document.documentElement) {
513
- $(document.body).children().off('mouseover', null, $.noop);
466
+ $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);
514
467
  }
515
468
 
516
- this._activeTrigger[Trigger.CLICK] = false;
517
- this._activeTrigger[Trigger.FOCUS] = false;
518
- this._activeTrigger[Trigger.HOVER] = false;
469
+ this._activeTrigger[TRIGGER_CLICK] = false;
470
+ this._activeTrigger[TRIGGER_FOCUS] = false;
471
+ this._activeTrigger[TRIGGER_HOVER] = false;
519
472
 
520
- if ($(this.tip).hasClass(ClassName.FADE)) {
521
- var transitionDuration = Util.getTransitionDurationFromElement(tip);
522
- $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
473
+ if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE)) {
474
+ var transitionDuration = Util__default['default'].getTransitionDurationFromElement(tip);
475
+ $__default['default'](tip).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
523
476
  } else {
524
477
  complete();
525
478
  }
@@ -539,29 +492,29 @@
539
492
  };
540
493
 
541
494
  _proto.addAttachmentClass = function addAttachmentClass(attachment) {
542
- $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
495
+ $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
543
496
  };
544
497
 
545
498
  _proto.getTipElement = function getTipElement() {
546
- this.tip = this.tip || $(this.config.template)[0];
499
+ this.tip = this.tip || $__default['default'](this.config.template)[0];
547
500
  return this.tip;
548
501
  };
549
502
 
550
503
  _proto.setContent = function setContent() {
551
504
  var tip = this.getTipElement();
552
- this.setElementContent($(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle());
553
- $(tip).removeClass(ClassName.FADE + " " + ClassName.SHOW);
505
+ this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());
506
+ $__default['default'](tip).removeClass(CLASS_NAME_FADE + " " + CLASS_NAME_SHOW);
554
507
  };
555
508
 
556
509
  _proto.setElementContent = function setElementContent($element, content) {
557
510
  if (typeof content === 'object' && (content.nodeType || content.jquery)) {
558
511
  // Content is a DOM node or a jQuery
559
512
  if (this.config.html) {
560
- if (!$(content).parent().is($element)) {
513
+ if (!$__default['default'](content).parent().is($element)) {
561
514
  $element.empty().append(content);
562
515
  }
563
516
  } else {
564
- $element.text($(content).text());
517
+ $element.text($__default['default'](content).text());
565
518
  }
566
519
 
567
520
  return;
@@ -589,14 +542,43 @@
589
542
  } // Private
590
543
  ;
591
544
 
592
- _proto._getOffset = function _getOffset() {
545
+ _proto._getPopperConfig = function _getPopperConfig(attachment) {
593
546
  var _this3 = this;
594
547
 
548
+ var defaultBsConfig = {
549
+ placement: attachment,
550
+ modifiers: {
551
+ offset: this._getOffset(),
552
+ flip: {
553
+ behavior: this.config.fallbackPlacement
554
+ },
555
+ arrow: {
556
+ element: SELECTOR_ARROW
557
+ },
558
+ preventOverflow: {
559
+ boundariesElement: this.config.boundary
560
+ }
561
+ },
562
+ onCreate: function onCreate(data) {
563
+ if (data.originalPlacement !== data.placement) {
564
+ _this3._handlePopperPlacementChange(data);
565
+ }
566
+ },
567
+ onUpdate: function onUpdate(data) {
568
+ return _this3._handlePopperPlacementChange(data);
569
+ }
570
+ };
571
+ return _extends({}, defaultBsConfig, this.config.popperConfig);
572
+ };
573
+
574
+ _proto._getOffset = function _getOffset() {
575
+ var _this4 = this;
576
+
595
577
  var offset = {};
596
578
 
597
579
  if (typeof this.config.offset === 'function') {
598
580
  offset.fn = function (data) {
599
- data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
581
+ data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});
600
582
  return data;
601
583
  };
602
584
  } else {
@@ -611,11 +593,11 @@
611
593
  return document.body;
612
594
  }
613
595
 
614
- if (Util.isElement(this.config.container)) {
615
- return $(this.config.container);
596
+ if (Util__default['default'].isElement(this.config.container)) {
597
+ return $__default['default'](this.config.container);
616
598
  }
617
599
 
618
- return $(document).find(this.config.container);
600
+ return $__default['default'](document).find(this.config.container);
619
601
  };
620
602
 
621
603
  _proto._getAttachment = function _getAttachment(placement) {
@@ -623,32 +605,35 @@
623
605
  };
624
606
 
625
607
  _proto._setListeners = function _setListeners() {
626
- var _this4 = this;
608
+ var _this5 = this;
627
609
 
628
610
  var triggers = this.config.trigger.split(' ');
629
611
  triggers.forEach(function (trigger) {
630
612
  if (trigger === 'click') {
631
- $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
632
- return _this4.toggle(event);
613
+ $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
614
+ return _this5.toggle(event);
633
615
  });
634
- } else if (trigger !== Trigger.MANUAL) {
635
- var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
636
- var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
637
- $(_this4.element).on(eventIn, _this4.config.selector, function (event) {
638
- return _this4._enter(event);
639
- }).on(eventOut, _this4.config.selector, function (event) {
640
- return _this4._leave(event);
616
+ } else if (trigger !== TRIGGER_MANUAL) {
617
+ var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
618
+ var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
619
+ $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) {
620
+ return _this5._enter(event);
621
+ }).on(eventOut, _this5.config.selector, function (event) {
622
+ return _this5._leave(event);
641
623
  });
642
624
  }
643
625
  });
644
- $(this.element).closest('.modal').on('hide.bs.modal', function () {
645
- if (_this4.element) {
646
- _this4.hide();
626
+
627
+ this._hideModalHandler = function () {
628
+ if (_this5.element) {
629
+ _this5.hide();
647
630
  }
648
- });
631
+ };
632
+
633
+ $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);
649
634
 
650
635
  if (this.config.selector) {
651
- this.config = _objectSpread({}, this.config, {
636
+ this.config = _extends({}, this.config, {
652
637
  trigger: 'manual',
653
638
  selector: ''
654
639
  });
@@ -668,24 +653,24 @@
668
653
 
669
654
  _proto._enter = function _enter(event, context) {
670
655
  var dataKey = this.constructor.DATA_KEY;
671
- context = context || $(event.currentTarget).data(dataKey);
656
+ context = context || $__default['default'](event.currentTarget).data(dataKey);
672
657
 
673
658
  if (!context) {
674
659
  context = new this.constructor(event.currentTarget, this._getDelegateConfig());
675
- $(event.currentTarget).data(dataKey, context);
660
+ $__default['default'](event.currentTarget).data(dataKey, context);
676
661
  }
677
662
 
678
663
  if (event) {
679
- context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
664
+ context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
680
665
  }
681
666
 
682
- if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
683
- context._hoverState = HoverState.SHOW;
667
+ if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {
668
+ context._hoverState = HOVER_STATE_SHOW;
684
669
  return;
685
670
  }
686
671
 
687
672
  clearTimeout(context._timeout);
688
- context._hoverState = HoverState.SHOW;
673
+ context._hoverState = HOVER_STATE_SHOW;
689
674
 
690
675
  if (!context.config.delay || !context.config.delay.show) {
691
676
  context.show();
@@ -693,7 +678,7 @@
693
678
  }
694
679
 
695
680
  context._timeout = setTimeout(function () {
696
- if (context._hoverState === HoverState.SHOW) {
681
+ if (context._hoverState === HOVER_STATE_SHOW) {
697
682
  context.show();
698
683
  }
699
684
  }, context.config.delay.show);
@@ -701,15 +686,15 @@
701
686
 
702
687
  _proto._leave = function _leave(event, context) {
703
688
  var dataKey = this.constructor.DATA_KEY;
704
- context = context || $(event.currentTarget).data(dataKey);
689
+ context = context || $__default['default'](event.currentTarget).data(dataKey);
705
690
 
706
691
  if (!context) {
707
692
  context = new this.constructor(event.currentTarget, this._getDelegateConfig());
708
- $(event.currentTarget).data(dataKey, context);
693
+ $__default['default'](event.currentTarget).data(dataKey, context);
709
694
  }
710
695
 
711
696
  if (event) {
712
- context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
697
+ context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
713
698
  }
714
699
 
715
700
  if (context._isWithActiveTrigger()) {
@@ -717,7 +702,7 @@
717
702
  }
718
703
 
719
704
  clearTimeout(context._timeout);
720
- context._hoverState = HoverState.OUT;
705
+ context._hoverState = HOVER_STATE_OUT;
721
706
 
722
707
  if (!context.config.delay || !context.config.delay.hide) {
723
708
  context.hide();
@@ -725,7 +710,7 @@
725
710
  }
726
711
 
727
712
  context._timeout = setTimeout(function () {
728
- if (context._hoverState === HoverState.OUT) {
713
+ if (context._hoverState === HOVER_STATE_OUT) {
729
714
  context.hide();
730
715
  }
731
716
  }, context.config.delay.hide);
@@ -742,13 +727,13 @@
742
727
  };
743
728
 
744
729
  _proto._getConfig = function _getConfig(config) {
745
- var dataAttributes = $(this.element).data();
730
+ var dataAttributes = $__default['default'](this.element).data();
746
731
  Object.keys(dataAttributes).forEach(function (dataAttr) {
747
732
  if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
748
733
  delete dataAttributes[dataAttr];
749
734
  }
750
735
  });
751
- config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
736
+ config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
752
737
 
753
738
  if (typeof config.delay === 'number') {
754
739
  config.delay = {
@@ -765,7 +750,7 @@
765
750
  config.content = config.content.toString();
766
751
  }
767
752
 
768
- Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
753
+ Util__default['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType);
769
754
 
770
755
  if (config.sanitize) {
771
756
  config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
@@ -789,7 +774,7 @@
789
774
  };
790
775
 
791
776
  _proto._cleanTipClass = function _cleanTipClass() {
792
- var $tip = $(this.getTipElement());
777
+ var $tip = $__default['default'](this.getTipElement());
793
778
  var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
794
779
 
795
780
  if (tabClass !== null && tabClass.length) {
@@ -798,8 +783,7 @@
798
783
  };
799
784
 
800
785
  _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
801
- var popperInstance = popperData.instance;
802
- this.tip = popperInstance.popper;
786
+ this.tip = popperData.instance.popper;
803
787
 
804
788
  this._cleanTipClass();
805
789
 
@@ -814,7 +798,7 @@
814
798
  return;
815
799
  }
816
800
 
817
- $(tip).removeClass(ClassName.FADE);
801
+ $__default['default'](tip).removeClass(CLASS_NAME_FADE);
818
802
  this.config.animation = false;
819
803
  this.hide();
820
804
  this.show();
@@ -824,7 +808,8 @@
824
808
 
825
809
  Tooltip._jQueryInterface = function _jQueryInterface(config) {
826
810
  return this.each(function () {
827
- var data = $(this).data(DATA_KEY);
811
+ var $element = $__default['default'](this);
812
+ var data = $element.data(DATA_KEY);
828
813
 
829
814
  var _config = typeof config === 'object' && config;
830
815
 
@@ -834,7 +819,7 @@
834
819
 
835
820
  if (!data) {
836
821
  data = new Tooltip(this, _config);
837
- $(this).data(DATA_KEY, data);
822
+ $element.data(DATA_KEY, data);
838
823
  }
839
824
 
840
825
  if (typeof config === 'string') {
@@ -893,14 +878,14 @@
893
878
  */
894
879
 
895
880
 
896
- $.fn[NAME] = Tooltip._jQueryInterface;
897
- $.fn[NAME].Constructor = Tooltip;
881
+ $__default['default'].fn[NAME] = Tooltip._jQueryInterface;
882
+ $__default['default'].fn[NAME].Constructor = Tooltip;
898
883
 
899
- $.fn[NAME].noConflict = function () {
900
- $.fn[NAME] = JQUERY_NO_CONFLICT;
884
+ $__default['default'].fn[NAME].noConflict = function () {
885
+ $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
901
886
  return Tooltip._jQueryInterface;
902
887
  };
903
888
 
904
889
  return Tooltip;
905
890
 
906
- }));
891
+ })));