bootstrap 4.3.1 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ })));