bootstrap 4.6.0 → 5.0.0.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap-sprockets.js +12 -8
  4. data/assets/javascripts/bootstrap.js +1889 -1255
  5. data/assets/javascripts/bootstrap.min.js +3 -3
  6. data/assets/javascripts/bootstrap/alert.js +136 -66
  7. data/assets/javascripts/bootstrap/button.js +59 -147
  8. data/assets/javascripts/bootstrap/carousel.js +276 -180
  9. data/assets/javascripts/bootstrap/collapse.js +284 -136
  10. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  11. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  12. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  13. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +238 -195
  16. data/assets/javascripts/bootstrap/modal.js +321 -223
  17. data/assets/javascripts/bootstrap/popover.js +75 -79
  18. data/assets/javascripts/bootstrap/scrollspy.js +150 -86
  19. data/assets/javascripts/bootstrap/tab.js +154 -82
  20. data/assets/javascripts/bootstrap/toast.js +162 -95
  21. data/assets/javascripts/bootstrap/tooltip.js +337 -191
  22. data/assets/stylesheets/_bootstrap-grid.scss +53 -18
  23. data/assets/stylesheets/_bootstrap-reboot.scss +6 -3
  24. data/assets/stylesheets/_bootstrap.scss +16 -10
  25. data/assets/stylesheets/bootstrap/_alert.scss +3 -4
  26. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  27. data/assets/stylesheets/bootstrap/_breadcrumb.scss +5 -17
  28. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  29. data/assets/stylesheets/bootstrap/_buttons.scss +27 -45
  30. data/assets/stylesheets/bootstrap/_card.scss +22 -68
  31. data/assets/stylesheets/bootstrap/_carousel.scss +13 -15
  32. data/assets/stylesheets/bootstrap/_close.scss +9 -13
  33. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +12 -9
  35. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  36. data/assets/stylesheets/bootstrap/_functions.scss +82 -23
  37. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  38. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  39. data/assets/stylesheets/bootstrap/_list-group.scss +7 -4
  40. data/assets/stylesheets/bootstrap/_mixins.scss +6 -12
  41. data/assets/stylesheets/bootstrap/_modal.scss +34 -39
  42. data/assets/stylesheets/bootstrap/_nav.scss +7 -4
  43. data/assets/stylesheets/bootstrap/_navbar.scss +42 -82
  44. data/assets/stylesheets/bootstrap/_pagination.scss +7 -20
  45. data/assets/stylesheets/bootstrap/_popover.scss +5 -5
  46. data/assets/stylesheets/bootstrap/_progress.scss +3 -5
  47. data/assets/stylesheets/bootstrap/_reboot.scss +304 -172
  48. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  49. data/assets/stylesheets/bootstrap/_spinners.scss +4 -13
  50. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  51. data/assets/stylesheets/bootstrap/_toasts.scss +2 -4
  52. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  53. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  54. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  55. data/assets/stylesheets/bootstrap/_utilities.scss +503 -18
  56. data/assets/stylesheets/bootstrap/_variables.scss +546 -432
  57. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  58. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  59. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  64. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  65. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  66. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  67. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  68. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  69. data/assets/stylesheets/bootstrap/helpers/_embed.scss +31 -0
  70. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  71. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -0
  72. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  73. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  74. data/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -4
  75. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +1 -1
  76. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  77. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +62 -47
  78. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  79. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  80. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  81. data/assets/stylesheets/bootstrap/mixins/_forms.scss +22 -74
  82. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  83. data/assets/stylesheets/bootstrap/mixins/_grid.scss +85 -33
  84. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  85. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  86. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  87. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  88. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  89. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +17 -23
  90. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  91. data/assets/stylesheets/bootstrap/mixins/_transition.scss +2 -2
  92. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  93. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  94. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  95. data/lib/bootstrap/version.rb +2 -2
  96. data/tasks/updater/js.rb +3 -3
  97. metadata +32 -40
  98. data/assets/javascripts/bootstrap/util.js +0 -192
  99. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  100. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  101. data/assets/stylesheets/bootstrap/_input-group.scss +0 -208
  102. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  103. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  104. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  105. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  106. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  107. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  108. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  109. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  110. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  111. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  112. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  113. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  114. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  115. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  116. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  117. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  118. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  119. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  120. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  121. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  122. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  123. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  124. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  125. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  126. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  127. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  128. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  129. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  130. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  131. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  132. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,35 +1,106 @@
1
1
  /*!
2
- * Bootstrap tab.js v4.6.0 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap tab.js v5.0.0-alpha1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
- var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
16
-
17
- function _defineProperties(target, props) {
18
- for (var i = 0; i < props.length; i++) {
19
- var descriptor = props[i];
20
- descriptor.enumerable = descriptor.enumerable || false;
21
- descriptor.configurable = true;
22
- if ("value" in descriptor) descriptor.writable = true;
23
- Object.defineProperty(target, descriptor.key, descriptor);
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/selector-engine.js'], factory) :
9
+ (global = global || self, global.Tab = factory(global.Data, global.EventHandler, global.SelectorEngine));
10
+ }(this, (function (Data, EventHandler, SelectorEngine) { 'use strict';
11
+
12
+ Data = Data && Object.prototype.hasOwnProperty.call(Data, 'default') ? Data['default'] : Data;
13
+ EventHandler = EventHandler && Object.prototype.hasOwnProperty.call(EventHandler, 'default') ? EventHandler['default'] : EventHandler;
14
+ SelectorEngine = SelectorEngine && Object.prototype.hasOwnProperty.call(SelectorEngine, 'default') ? SelectorEngine['default'] : SelectorEngine;
15
+
16
+ /**
17
+ * --------------------------------------------------------------------------
18
+ * Bootstrap (v5.0.0-alpha1): util/index.js
19
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
20
+ * --------------------------------------------------------------------------
21
+ */
22
+ var MILLISECONDS_MULTIPLIER = 1000;
23
+ var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
24
+
25
+ var getSelector = function getSelector(element) {
26
+ var selector = element.getAttribute('data-target');
27
+
28
+ if (!selector || selector === '#') {
29
+ var hrefAttr = element.getAttribute('href');
30
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
24
31
  }
25
- }
26
32
 
27
- function _createClass(Constructor, protoProps, staticProps) {
28
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
- if (staticProps) _defineProperties(Constructor, staticProps);
30
- return Constructor;
31
- }
33
+ return selector;
34
+ };
35
+
36
+ var getElementFromSelector = function getElementFromSelector(element) {
37
+ var selector = getSelector(element);
38
+ return selector ? document.querySelector(selector) : null;
39
+ };
40
+
41
+ var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
42
+ if (!element) {
43
+ return 0;
44
+ } // Get transition-duration of the element
45
+
46
+
47
+ var _window$getComputedSt = window.getComputedStyle(element),
48
+ transitionDuration = _window$getComputedSt.transitionDuration,
49
+ transitionDelay = _window$getComputedSt.transitionDelay;
50
+
51
+ var floatTransitionDuration = parseFloat(transitionDuration);
52
+ var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
53
+
54
+ if (!floatTransitionDuration && !floatTransitionDelay) {
55
+ return 0;
56
+ } // If multiple durations are defined, take the first
57
+
58
+
59
+ transitionDuration = transitionDuration.split(',')[0];
60
+ transitionDelay = transitionDelay.split(',')[0];
61
+ return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
62
+ };
63
+
64
+ var triggerTransitionEnd = function triggerTransitionEnd(element) {
65
+ element.dispatchEvent(new Event(TRANSITION_END));
66
+ };
67
+
68
+ var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
69
+ var called = false;
70
+ var durationPadding = 5;
71
+ var emulatedDuration = duration + durationPadding;
72
+
73
+ function listener() {
74
+ called = true;
75
+ element.removeEventListener(TRANSITION_END, listener);
76
+ }
77
+
78
+ element.addEventListener(TRANSITION_END, listener);
79
+ setTimeout(function () {
80
+ if (!called) {
81
+ triggerTransitionEnd(element);
82
+ }
83
+ }, emulatedDuration);
84
+ };
32
85
 
86
+ var reflow = function reflow(element) {
87
+ return element.offsetHeight;
88
+ };
89
+
90
+ var getjQuery = function getjQuery() {
91
+ var _window = window,
92
+ jQuery = _window.jQuery;
93
+
94
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
95
+ return jQuery;
96
+ }
97
+
98
+ return null;
99
+ };
100
+
101
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
102
+
103
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
33
104
  /**
34
105
  * ------------------------------------------------------------------------
35
106
  * Constants
@@ -37,11 +108,10 @@
37
108
  */
38
109
 
39
110
  var NAME = 'tab';
40
- var VERSION = '4.6.0';
111
+ var VERSION = '5.0.0-alpha1';
41
112
  var DATA_KEY = 'bs.tab';
42
113
  var EVENT_KEY = "." + DATA_KEY;
43
114
  var DATA_API_KEY = '.data-api';
44
- var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
45
115
  var EVENT_HIDE = "hide" + EVENT_KEY;
46
116
  var EVENT_HIDDEN = "hidden" + EVENT_KEY;
47
117
  var EVENT_SHOW = "show" + EVENT_KEY;
@@ -55,10 +125,10 @@
55
125
  var SELECTOR_DROPDOWN = '.dropdown';
56
126
  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
57
127
  var SELECTOR_ACTIVE = '.active';
58
- var SELECTOR_ACTIVE_UL = '> li > .active';
128
+ var SELECTOR_ACTIVE_UL = ':scope > li > .active';
59
129
  var SELECTOR_DATA_TOGGLE = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';
60
130
  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
61
- var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';
131
+ var SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
62
132
  /**
63
133
  * ------------------------------------------------------------------------
64
134
  * Class Definition
@@ -68,6 +138,7 @@
68
138
  var Tab = /*#__PURE__*/function () {
69
139
  function Tab(element) {
70
140
  this._element = element;
141
+ Data.setData(this._element, DATA_KEY, this);
71
142
  } // Getters
72
143
 
73
144
 
@@ -77,53 +148,46 @@
77
148
  _proto.show = function show() {
78
149
  var _this = this;
79
150
 
80
- if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default['default'](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) {
151
+ if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE) || this._element.classList.contains(CLASS_NAME_DISABLED)) {
81
152
  return;
82
153
  }
83
154
 
84
- var target;
85
155
  var previous;
86
- var listElement = $__default['default'](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];
87
- var selector = Util__default['default'].getSelectorFromElement(this._element);
156
+ var target = getElementFromSelector(this._element);
157
+
158
+ var listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
88
159
 
89
160
  if (listElement) {
90
161
  var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
91
- previous = $__default['default'].makeArray($__default['default'](listElement).find(itemSelector));
162
+ previous = SelectorEngine.find(itemSelector, listElement);
92
163
  previous = previous[previous.length - 1];
93
164
  }
94
165
 
95
- var hideEvent = $__default['default'].Event(EVENT_HIDE, {
96
- relatedTarget: this._element
97
- });
98
- var showEvent = $__default['default'].Event(EVENT_SHOW, {
99
- relatedTarget: previous
100
- });
166
+ var hideEvent = null;
101
167
 
102
168
  if (previous) {
103
- $__default['default'](previous).trigger(hideEvent);
169
+ hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {
170
+ relatedTarget: this._element
171
+ });
104
172
  }
105
173
 
106
- $__default['default'](this._element).trigger(showEvent);
174
+ var showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {
175
+ relatedTarget: previous
176
+ });
107
177
 
108
- if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
178
+ if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
109
179
  return;
110
180
  }
111
181
 
112
- if (selector) {
113
- target = document.querySelector(selector);
114
- }
115
-
116
182
  this._activate(this._element, listElement);
117
183
 
118
184
  var complete = function complete() {
119
- var hiddenEvent = $__default['default'].Event(EVENT_HIDDEN, {
185
+ EventHandler.trigger(previous, EVENT_HIDDEN, {
120
186
  relatedTarget: _this._element
121
187
  });
122
- var shownEvent = $__default['default'].Event(EVENT_SHOWN, {
188
+ EventHandler.trigger(_this._element, EVENT_SHOWN, {
123
189
  relatedTarget: previous
124
190
  });
125
- $__default['default'](previous).trigger(hiddenEvent);
126
- $__default['default'](_this._element).trigger(shownEvent);
127
191
  };
128
192
 
129
193
  if (target) {
@@ -134,7 +198,7 @@
134
198
  };
135
199
 
136
200
  _proto.dispose = function dispose() {
137
- $__default['default'].removeData(this._element, DATA_KEY);
201
+ Data.removeData(this._element, DATA_KEY);
138
202
  this._element = null;
139
203
  } // Private
140
204
  ;
@@ -142,17 +206,19 @@
142
206
  _proto._activate = function _activate(element, container, callback) {
143
207
  var _this2 = this;
144
208
 
145
- var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default['default'](container).find(SELECTOR_ACTIVE_UL) : $__default['default'](container).children(SELECTOR_ACTIVE);
209
+ var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);
146
210
  var active = activeElements[0];
147
- var isTransitioning = callback && active && $__default['default'](active).hasClass(CLASS_NAME_FADE);
211
+ var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE);
148
212
 
149
213
  var complete = function complete() {
150
214
  return _this2._transitionComplete(element, active, callback);
151
215
  };
152
216
 
153
217
  if (active && isTransitioning) {
154
- var transitionDuration = Util__default['default'].getTransitionDurationFromElement(active);
155
- $__default['default'](active).removeClass(CLASS_NAME_SHOW).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
218
+ var transitionDuration = getTransitionDurationFromElement(active);
219
+ active.classList.remove(CLASS_NAME_SHOW);
220
+ EventHandler.one(active, TRANSITION_END, complete);
221
+ emulateTransitionEnd(active, transitionDuration);
156
222
  } else {
157
223
  complete();
158
224
  }
@@ -160,11 +226,11 @@
160
226
 
161
227
  _proto._transitionComplete = function _transitionComplete(element, active, callback) {
162
228
  if (active) {
163
- $__default['default'](active).removeClass(CLASS_NAME_ACTIVE);
164
- var dropdownChild = $__default['default'](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];
229
+ active.classList.remove(CLASS_NAME_ACTIVE);
230
+ var dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
165
231
 
166
232
  if (dropdownChild) {
167
- $__default['default'](dropdownChild).removeClass(CLASS_NAME_ACTIVE);
233
+ dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
168
234
  }
169
235
 
170
236
  if (active.getAttribute('role') === 'tab') {
@@ -172,24 +238,25 @@
172
238
  }
173
239
  }
174
240
 
175
- $__default['default'](element).addClass(CLASS_NAME_ACTIVE);
241
+ element.classList.add(CLASS_NAME_ACTIVE);
176
242
 
177
243
  if (element.getAttribute('role') === 'tab') {
178
244
  element.setAttribute('aria-selected', true);
179
245
  }
180
246
 
181
- Util__default['default'].reflow(element);
247
+ reflow(element);
182
248
 
183
249
  if (element.classList.contains(CLASS_NAME_FADE)) {
184
250
  element.classList.add(CLASS_NAME_SHOW);
185
251
  }
186
252
 
187
- if (element.parentNode && $__default['default'](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {
188
- var dropdownElement = $__default['default'](element).closest(SELECTOR_DROPDOWN)[0];
253
+ if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
254
+ var dropdownElement = element.closest(SELECTOR_DROPDOWN);
189
255
 
190
256
  if (dropdownElement) {
191
- var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));
192
- $__default['default'](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);
257
+ SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE).forEach(function (dropdown) {
258
+ return dropdown.classList.add(CLASS_NAME_ACTIVE);
259
+ });
193
260
  }
194
261
 
195
262
  element.setAttribute('aria-expanded', true);
@@ -201,15 +268,9 @@
201
268
  } // Static
202
269
  ;
203
270
 
204
- Tab._jQueryInterface = function _jQueryInterface(config) {
271
+ Tab.jQueryInterface = function jQueryInterface(config) {
205
272
  return this.each(function () {
206
- var $this = $__default['default'](this);
207
- var data = $this.data(DATA_KEY);
208
-
209
- if (!data) {
210
- data = new Tab(this);
211
- $this.data(DATA_KEY, data);
212
- }
273
+ var data = Data.getData(this, DATA_KEY) || new Tab(this);
213
274
 
214
275
  if (typeof config === 'string') {
215
276
  if (typeof data[config] === 'undefined') {
@@ -221,6 +282,10 @@
221
282
  });
222
283
  };
223
284
 
285
+ Tab.getInstance = function getInstance(element) {
286
+ return Data.getData(element, DATA_KEY);
287
+ };
288
+
224
289
  _createClass(Tab, null, [{
225
290
  key: "VERSION",
226
291
  get: function get() {
@@ -237,24 +302,31 @@
237
302
  */
238
303
 
239
304
 
240
- $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
305
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
241
306
  event.preventDefault();
242
-
243
- Tab._jQueryInterface.call($__default['default'](this), 'show');
307
+ var data = Data.getData(this, DATA_KEY) || new Tab(this);
308
+ data.show();
244
309
  });
310
+ var $ = getjQuery();
245
311
  /**
246
312
  * ------------------------------------------------------------------------
247
313
  * jQuery
248
314
  * ------------------------------------------------------------------------
315
+ * add .tab to jQuery only if jQuery is present
249
316
  */
250
317
 
251
- $__default['default'].fn[NAME] = Tab._jQueryInterface;
252
- $__default['default'].fn[NAME].Constructor = Tab;
318
+ /* istanbul ignore if */
253
319
 
254
- $__default['default'].fn[NAME].noConflict = function () {
255
- $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
256
- return Tab._jQueryInterface;
257
- };
320
+ if ($) {
321
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
322
+ $.fn[NAME] = Tab.jQueryInterface;
323
+ $.fn[NAME].Constructor = Tab;
324
+
325
+ $.fn[NAME].noConflict = function () {
326
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
327
+ return Tab.jQueryInterface;
328
+ };
329
+ }
258
330
 
259
331
  return Tab;
260
332
 
@@ -1,53 +1,120 @@
1
1
  /*!
2
- * Bootstrap toast.js v4.6.0 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap toast.js v5.0.0-alpha1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
- var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
16
-
17
- function _defineProperties(target, props) {
18
- for (var i = 0; i < props.length; i++) {
19
- var descriptor = props[i];
20
- descriptor.enumerable = descriptor.enumerable || false;
21
- descriptor.configurable = true;
22
- if ("value" in descriptor) descriptor.writable = true;
23
- Object.defineProperty(target, descriptor.key, descriptor);
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js'], factory) :
9
+ (global = global || self, global.Toast = factory(global.Data, global.EventHandler, global.Manipulator));
10
+ }(this, (function (Data, EventHandler, Manipulator) { 'use strict';
11
+
12
+ Data = Data && Object.prototype.hasOwnProperty.call(Data, 'default') ? Data['default'] : Data;
13
+ EventHandler = EventHandler && Object.prototype.hasOwnProperty.call(EventHandler, 'default') ? EventHandler['default'] : EventHandler;
14
+ Manipulator = Manipulator && Object.prototype.hasOwnProperty.call(Manipulator, 'default') ? Manipulator['default'] : Manipulator;
15
+
16
+ /**
17
+ * --------------------------------------------------------------------------
18
+ * Bootstrap (v5.0.0-alpha1): util/index.js
19
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
20
+ * --------------------------------------------------------------------------
21
+ */
22
+ var MILLISECONDS_MULTIPLIER = 1000;
23
+ var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
24
+
25
+ var toType = function toType(obj) {
26
+ if (obj === null || obj === undefined) {
27
+ return "" + obj;
24
28
  }
25
- }
26
29
 
27
- function _createClass(Constructor, protoProps, staticProps) {
28
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
- if (staticProps) _defineProperties(Constructor, staticProps);
30
- return Constructor;
31
- }
30
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
31
+ };
32
32
 
33
- function _extends() {
34
- _extends = Object.assign || function (target) {
35
- for (var i = 1; i < arguments.length; i++) {
36
- var source = arguments[i];
33
+ var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
34
+ if (!element) {
35
+ return 0;
36
+ } // Get transition-duration of the element
37
37
 
38
- for (var key in source) {
39
- if (Object.prototype.hasOwnProperty.call(source, key)) {
40
- target[key] = source[key];
41
- }
42
- }
38
+
39
+ var _window$getComputedSt = window.getComputedStyle(element),
40
+ transitionDuration = _window$getComputedSt.transitionDuration,
41
+ transitionDelay = _window$getComputedSt.transitionDelay;
42
+
43
+ var floatTransitionDuration = parseFloat(transitionDuration);
44
+ var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
45
+
46
+ if (!floatTransitionDuration && !floatTransitionDelay) {
47
+ return 0;
48
+ } // If multiple durations are defined, take the first
49
+
50
+
51
+ transitionDuration = transitionDuration.split(',')[0];
52
+ transitionDelay = transitionDelay.split(',')[0];
53
+ return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
54
+ };
55
+
56
+ var triggerTransitionEnd = function triggerTransitionEnd(element) {
57
+ element.dispatchEvent(new Event(TRANSITION_END));
58
+ };
59
+
60
+ var isElement = function isElement(obj) {
61
+ return (obj[0] || obj).nodeType;
62
+ };
63
+
64
+ var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
65
+ var called = false;
66
+ var durationPadding = 5;
67
+ var emulatedDuration = duration + durationPadding;
68
+
69
+ function listener() {
70
+ called = true;
71
+ element.removeEventListener(TRANSITION_END, listener);
72
+ }
73
+
74
+ element.addEventListener(TRANSITION_END, listener);
75
+ setTimeout(function () {
76
+ if (!called) {
77
+ triggerTransitionEnd(element);
43
78
  }
79
+ }, emulatedDuration);
80
+ };
44
81
 
45
- return target;
46
- };
82
+ var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
83
+ Object.keys(configTypes).forEach(function (property) {
84
+ var expectedTypes = configTypes[property];
85
+ var value = config[property];
86
+ var valueType = value && isElement(value) ? 'element' : toType(value);
47
87
 
48
- return _extends.apply(this, arguments);
49
- }
88
+ if (!new RegExp(expectedTypes).test(valueType)) {
89
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
90
+ }
91
+ });
92
+ };
93
+
94
+ var reflow = function reflow(element) {
95
+ return element.offsetHeight;
96
+ };
50
97
 
98
+ var getjQuery = function getjQuery() {
99
+ var _window = window,
100
+ jQuery = _window.jQuery;
101
+
102
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
103
+ return jQuery;
104
+ }
105
+
106
+ return null;
107
+ };
108
+
109
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
110
+
111
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
112
+
113
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
114
+
115
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
116
+
117
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
51
118
  /**
52
119
  * ------------------------------------------------------------------------
53
120
  * Constants
@@ -55,10 +122,9 @@
55
122
  */
56
123
 
57
124
  var NAME = 'toast';
58
- var VERSION = '4.6.0';
125
+ var VERSION = '5.0.0-alpha1';
59
126
  var DATA_KEY = 'bs.toast';
60
127
  var EVENT_KEY = "." + DATA_KEY;
61
- var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
62
128
  var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
63
129
  var EVENT_HIDE = "hide" + EVENT_KEY;
64
130
  var EVENT_HIDDEN = "hidden" + EVENT_KEY;
@@ -92,6 +158,8 @@
92
158
  this._timeout = null;
93
159
 
94
160
  this._setListeners();
161
+
162
+ Data.setData(element, DATA_KEY, this);
95
163
  } // Getters
96
164
 
97
165
 
@@ -101,15 +169,12 @@
101
169
  _proto.show = function show() {
102
170
  var _this = this;
103
171
 
104
- var showEvent = $__default['default'].Event(EVENT_SHOW);
105
- $__default['default'](this._element).trigger(showEvent);
172
+ var showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
106
173
 
107
- if (showEvent.isDefaultPrevented()) {
174
+ if (showEvent.defaultPrevented) {
108
175
  return;
109
176
  }
110
177
 
111
- this._clearTimeout();
112
-
113
178
  if (this._config.animation) {
114
179
  this._element.classList.add(CLASS_NAME_FADE);
115
180
  }
@@ -119,7 +184,7 @@
119
184
 
120
185
  _this._element.classList.add(CLASS_NAME_SHOW);
121
186
 
122
- $__default['default'](_this._element).trigger(EVENT_SHOWN);
187
+ EventHandler.trigger(_this._element, EVENT_SHOWN);
123
188
 
124
189
  if (_this._config.autohide) {
125
190
  _this._timeout = setTimeout(function () {
@@ -130,96 +195,87 @@
130
195
 
131
196
  this._element.classList.remove(CLASS_NAME_HIDE);
132
197
 
133
- Util__default['default'].reflow(this._element);
198
+ reflow(this._element);
134
199
 
135
200
  this._element.classList.add(CLASS_NAME_SHOWING);
136
201
 
137
202
  if (this._config.animation) {
138
- var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);
139
- $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
203
+ var transitionDuration = getTransitionDurationFromElement(this._element);
204
+ EventHandler.one(this._element, TRANSITION_END, complete);
205
+ emulateTransitionEnd(this._element, transitionDuration);
140
206
  } else {
141
207
  complete();
142
208
  }
143
209
  };
144
210
 
145
211
  _proto.hide = function hide() {
212
+ var _this2 = this;
213
+
146
214
  if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
147
215
  return;
148
216
  }
149
217
 
150
- var hideEvent = $__default['default'].Event(EVENT_HIDE);
151
- $__default['default'](this._element).trigger(hideEvent);
218
+ var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
152
219
 
153
- if (hideEvent.isDefaultPrevented()) {
220
+ if (hideEvent.defaultPrevented) {
154
221
  return;
155
222
  }
156
223
 
157
- this._close();
224
+ var complete = function complete() {
225
+ _this2._element.classList.add(CLASS_NAME_HIDE);
226
+
227
+ EventHandler.trigger(_this2._element, EVENT_HIDDEN);
228
+ };
229
+
230
+ this._element.classList.remove(CLASS_NAME_SHOW);
231
+
232
+ if (this._config.animation) {
233
+ var transitionDuration = getTransitionDurationFromElement(this._element);
234
+ EventHandler.one(this._element, TRANSITION_END, complete);
235
+ emulateTransitionEnd(this._element, transitionDuration);
236
+ } else {
237
+ complete();
238
+ }
158
239
  };
159
240
 
160
241
  _proto.dispose = function dispose() {
161
- this._clearTimeout();
242
+ clearTimeout(this._timeout);
243
+ this._timeout = null;
162
244
 
163
245
  if (this._element.classList.contains(CLASS_NAME_SHOW)) {
164
246
  this._element.classList.remove(CLASS_NAME_SHOW);
165
247
  }
166
248
 
167
- $__default['default'](this._element).off(EVENT_CLICK_DISMISS);
168
- $__default['default'].removeData(this._element, DATA_KEY);
249
+ EventHandler.off(this._element, EVENT_CLICK_DISMISS);
250
+ Data.removeData(this._element, DATA_KEY);
169
251
  this._element = null;
170
252
  this._config = null;
171
253
  } // Private
172
254
  ;
173
255
 
174
256
  _proto._getConfig = function _getConfig(config) {
175
- config = _extends({}, Default, $__default['default'](this._element).data(), typeof config === 'object' && config ? config : {});
176
- Util__default['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType);
257
+ config = _objectSpread(_objectSpread(_objectSpread({}, Default), Manipulator.getDataAttributes(this._element)), typeof config === 'object' && config ? config : {});
258
+ typeCheckConfig(NAME, config, this.constructor.DefaultType);
177
259
  return config;
178
260
  };
179
261
 
180
262
  _proto._setListeners = function _setListeners() {
181
- var _this2 = this;
182
-
183
- $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {
184
- return _this2.hide();
185
- });
186
- };
187
-
188
- _proto._close = function _close() {
189
263
  var _this3 = this;
190
264
 
191
- var complete = function complete() {
192
- _this3._element.classList.add(CLASS_NAME_HIDE);
193
-
194
- $__default['default'](_this3._element).trigger(EVENT_HIDDEN);
195
- };
196
-
197
- this._element.classList.remove(CLASS_NAME_SHOW);
198
-
199
- if (this._config.animation) {
200
- var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);
201
- $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
202
- } else {
203
- complete();
204
- }
205
- };
206
-
207
- _proto._clearTimeout = function _clearTimeout() {
208
- clearTimeout(this._timeout);
209
- this._timeout = null;
265
+ EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {
266
+ return _this3.hide();
267
+ });
210
268
  } // Static
211
269
  ;
212
270
 
213
- Toast._jQueryInterface = function _jQueryInterface(config) {
271
+ Toast.jQueryInterface = function jQueryInterface(config) {
214
272
  return this.each(function () {
215
- var $element = $__default['default'](this);
216
- var data = $element.data(DATA_KEY);
273
+ var data = Data.getData(this, DATA_KEY);
217
274
 
218
275
  var _config = typeof config === 'object' && config;
219
276
 
220
277
  if (!data) {
221
278
  data = new Toast(this, _config);
222
- $element.data(DATA_KEY, data);
223
279
  }
224
280
 
225
281
  if (typeof config === 'string') {
@@ -232,6 +288,10 @@
232
288
  });
233
289
  };
234
290
 
291
+ Toast.getInstance = function getInstance(element) {
292
+ return Data.getData(element, DATA_KEY);
293
+ };
294
+
235
295
  _createClass(Toast, null, [{
236
296
  key: "VERSION",
237
297
  get: function get() {
@@ -251,20 +311,27 @@
251
311
 
252
312
  return Toast;
253
313
  }();
314
+
315
+ var $ = getjQuery();
254
316
  /**
255
317
  * ------------------------------------------------------------------------
256
318
  * jQuery
257
319
  * ------------------------------------------------------------------------
320
+ * add .toast to jQuery only if jQuery is present
258
321
  */
259
322
 
323
+ /* istanbul ignore if */
260
324
 
261
- $__default['default'].fn[NAME] = Toast._jQueryInterface;
262
- $__default['default'].fn[NAME].Constructor = Toast;
325
+ if ($) {
326
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
327
+ $.fn[NAME] = Toast.jQueryInterface;
328
+ $.fn[NAME].Constructor = Toast;
263
329
 
264
- $__default['default'].fn[NAME].noConflict = function () {
265
- $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
266
- return Toast._jQueryInterface;
267
- };
330
+ $.fn[NAME].noConflict = function () {
331
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
332
+ return Toast.jQueryInterface;
333
+ };
334
+ }
268
335
 
269
336
  return Toast;
270
337