bootstrap 4.5.2 → 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 (131) 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 +1876 -1220
  5. data/assets/javascripts/bootstrap.min.js +2 -2
  6. data/assets/javascripts/bootstrap/alert.js +133 -48
  7. data/assets/javascripts/bootstrap/button.js +56 -123
  8. data/assets/javascripts/bootstrap/carousel.js +268 -129
  9. data/assets/javascripts/bootstrap/collapse.js +285 -106
  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 +235 -161
  16. data/assets/javascripts/bootstrap/modal.js +322 -193
  17. data/assets/javascripts/bootstrap/popover.js +72 -41
  18. data/assets/javascripts/bootstrap/scrollspy.js +151 -56
  19. data/assets/javascripts/bootstrap/tab.js +151 -64
  20. data/assets/javascripts/bootstrap/toast.js +163 -65
  21. data/assets/javascripts/bootstrap/tooltip.js +336 -155
  22. data/assets/stylesheets/_bootstrap-grid.scss +51 -15
  23. data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
  24. data/assets/stylesheets/_bootstrap.scss +14 -8
  25. data/assets/stylesheets/bootstrap/_alert.scss +3 -3
  26. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  27. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -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 +18 -64
  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 +10 -7
  35. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  36. data/assets/stylesheets/bootstrap/_functions.scss +82 -20
  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 +6 -3
  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 +8 -8
  43. data/assets/stylesheets/bootstrap/_navbar.scss +42 -74
  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 +2 -4
  47. data/assets/stylesheets/bootstrap/_reboot.scss +300 -164
  48. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  49. data/assets/stylesheets/bootstrap/_spinners.scss +2 -2
  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 +544 -424
  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/_breakpoints.scss +11 -8
  76. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +62 -47
  77. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  78. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  79. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  80. data/assets/stylesheets/bootstrap/mixins/_forms.scss +22 -67
  81. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  82. data/assets/stylesheets/bootstrap/mixins/_grid.scss +84 -32
  83. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  84. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  85. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  86. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  87. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  88. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +16 -22
  89. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  90. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  91. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  92. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  93. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  94. data/lib/bootstrap/version.rb +2 -2
  95. data/tasks/updater/js.rb +3 -3
  96. metadata +31 -39
  97. data/assets/javascripts/bootstrap/util.js +0 -192
  98. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  99. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -523
  100. data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
  101. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  102. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  103. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  104. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  105. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  106. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  107. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  108. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  109. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  110. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  111. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  112. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  113. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  114. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  115. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  116. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  117. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  118. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  119. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  120. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  121. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  122. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  123. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  124. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  125. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  126. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  127. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  128. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  129. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  130. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  131. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,16 +1,102 @@
1
1
  /*!
2
- * Bootstrap tab.js v4.5.2 (https://getbootstrap.com/)
2
+ * Bootstrap tab.js v5.0.0-alpha1 (https://getbootstrap.com/)
3
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.js'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
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
11
 
12
- $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
- Util = Util && Object.prototype.hasOwnProperty.call(Util, 'default') ? Util['default'] : Util;
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;
31
+ }
32
+
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
+ };
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
+ };
14
100
 
15
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); } }
16
102
 
@@ -22,11 +108,10 @@
22
108
  */
23
109
 
24
110
  var NAME = 'tab';
25
- var VERSION = '4.5.2';
111
+ var VERSION = '5.0.0-alpha1';
26
112
  var DATA_KEY = 'bs.tab';
27
113
  var EVENT_KEY = "." + DATA_KEY;
28
114
  var DATA_API_KEY = '.data-api';
29
- var JQUERY_NO_CONFLICT = $.fn[NAME];
30
115
  var EVENT_HIDE = "hide" + EVENT_KEY;
31
116
  var EVENT_HIDDEN = "hidden" + EVENT_KEY;
32
117
  var EVENT_SHOW = "show" + EVENT_KEY;
@@ -40,10 +125,10 @@
40
125
  var SELECTOR_DROPDOWN = '.dropdown';
41
126
  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
42
127
  var SELECTOR_ACTIVE = '.active';
43
- var SELECTOR_ACTIVE_UL = '> li > .active';
128
+ var SELECTOR_ACTIVE_UL = ':scope > li > .active';
44
129
  var SELECTOR_DATA_TOGGLE = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';
45
130
  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
46
- var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';
131
+ var SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
47
132
  /**
48
133
  * ------------------------------------------------------------------------
49
134
  * Class Definition
@@ -53,6 +138,7 @@
53
138
  var Tab = /*#__PURE__*/function () {
54
139
  function Tab(element) {
55
140
  this._element = element;
141
+ Data.setData(this._element, DATA_KEY, this);
56
142
  } // Getters
57
143
 
58
144
 
@@ -62,53 +148,46 @@
62
148
  _proto.show = function show() {
63
149
  var _this = this;
64
150
 
65
- if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(CLASS_NAME_ACTIVE) || $(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)) {
66
152
  return;
67
153
  }
68
154
 
69
- var target;
70
155
  var previous;
71
- var listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];
72
- var selector = Util.getSelectorFromElement(this._element);
156
+ var target = getElementFromSelector(this._element);
157
+
158
+ var listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
73
159
 
74
160
  if (listElement) {
75
161
  var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
76
- previous = $.makeArray($(listElement).find(itemSelector));
162
+ previous = SelectorEngine.find(itemSelector, listElement);
77
163
  previous = previous[previous.length - 1];
78
164
  }
79
165
 
80
- var hideEvent = $.Event(EVENT_HIDE, {
81
- relatedTarget: this._element
82
- });
83
- var showEvent = $.Event(EVENT_SHOW, {
84
- relatedTarget: previous
85
- });
166
+ var hideEvent = null;
86
167
 
87
168
  if (previous) {
88
- $(previous).trigger(hideEvent);
169
+ hideEvent = EventHandler.trigger(previous, EVENT_HIDE, {
170
+ relatedTarget: this._element
171
+ });
89
172
  }
90
173
 
91
- $(this._element).trigger(showEvent);
174
+ var showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {
175
+ relatedTarget: previous
176
+ });
92
177
 
93
- if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
178
+ if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
94
179
  return;
95
180
  }
96
181
 
97
- if (selector) {
98
- target = document.querySelector(selector);
99
- }
100
-
101
182
  this._activate(this._element, listElement);
102
183
 
103
184
  var complete = function complete() {
104
- var hiddenEvent = $.Event(EVENT_HIDDEN, {
185
+ EventHandler.trigger(previous, EVENT_HIDDEN, {
105
186
  relatedTarget: _this._element
106
187
  });
107
- var shownEvent = $.Event(EVENT_SHOWN, {
188
+ EventHandler.trigger(_this._element, EVENT_SHOWN, {
108
189
  relatedTarget: previous
109
190
  });
110
- $(previous).trigger(hiddenEvent);
111
- $(_this._element).trigger(shownEvent);
112
191
  };
113
192
 
114
193
  if (target) {
@@ -119,7 +198,7 @@
119
198
  };
120
199
 
121
200
  _proto.dispose = function dispose() {
122
- $.removeData(this._element, DATA_KEY);
201
+ Data.removeData(this._element, DATA_KEY);
123
202
  this._element = null;
124
203
  } // Private
125
204
  ;
@@ -127,17 +206,19 @@
127
206
  _proto._activate = function _activate(element, container, callback) {
128
207
  var _this2 = this;
129
208
 
130
- var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(SELECTOR_ACTIVE_UL) : $(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);
131
210
  var active = activeElements[0];
132
- var isTransitioning = callback && active && $(active).hasClass(CLASS_NAME_FADE);
211
+ var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE);
133
212
 
134
213
  var complete = function complete() {
135
214
  return _this2._transitionComplete(element, active, callback);
136
215
  };
137
216
 
138
217
  if (active && isTransitioning) {
139
- var transitionDuration = Util.getTransitionDurationFromElement(active);
140
- $(active).removeClass(CLASS_NAME_SHOW).one(Util.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);
141
222
  } else {
142
223
  complete();
143
224
  }
@@ -145,11 +226,11 @@
145
226
 
146
227
  _proto._transitionComplete = function _transitionComplete(element, active, callback) {
147
228
  if (active) {
148
- $(active).removeClass(CLASS_NAME_ACTIVE);
149
- var dropdownChild = $(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);
150
231
 
151
232
  if (dropdownChild) {
152
- $(dropdownChild).removeClass(CLASS_NAME_ACTIVE);
233
+ dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
153
234
  }
154
235
 
155
236
  if (active.getAttribute('role') === 'tab') {
@@ -157,24 +238,25 @@
157
238
  }
158
239
  }
159
240
 
160
- $(element).addClass(CLASS_NAME_ACTIVE);
241
+ element.classList.add(CLASS_NAME_ACTIVE);
161
242
 
162
243
  if (element.getAttribute('role') === 'tab') {
163
244
  element.setAttribute('aria-selected', true);
164
245
  }
165
246
 
166
- Util.reflow(element);
247
+ reflow(element);
167
248
 
168
249
  if (element.classList.contains(CLASS_NAME_FADE)) {
169
250
  element.classList.add(CLASS_NAME_SHOW);
170
251
  }
171
252
 
172
- if (element.parentNode && $(element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {
173
- var dropdownElement = $(element).closest(SELECTOR_DROPDOWN)[0];
253
+ if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
254
+ var dropdownElement = element.closest(SELECTOR_DROPDOWN);
174
255
 
175
256
  if (dropdownElement) {
176
- var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));
177
- $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE);
257
+ SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE).forEach(function (dropdown) {
258
+ return dropdown.classList.add(CLASS_NAME_ACTIVE);
259
+ });
178
260
  }
179
261
 
180
262
  element.setAttribute('aria-expanded', true);
@@ -186,15 +268,9 @@
186
268
  } // Static
187
269
  ;
188
270
 
189
- Tab._jQueryInterface = function _jQueryInterface(config) {
271
+ Tab.jQueryInterface = function jQueryInterface(config) {
190
272
  return this.each(function () {
191
- var $this = $(this);
192
- var data = $this.data(DATA_KEY);
193
-
194
- if (!data) {
195
- data = new Tab(this);
196
- $this.data(DATA_KEY, data);
197
- }
273
+ var data = Data.getData(this, DATA_KEY) || new Tab(this);
198
274
 
199
275
  if (typeof config === 'string') {
200
276
  if (typeof data[config] === 'undefined') {
@@ -206,6 +282,10 @@
206
282
  });
207
283
  };
208
284
 
285
+ Tab.getInstance = function getInstance(element) {
286
+ return Data.getData(element, DATA_KEY);
287
+ };
288
+
209
289
  _createClass(Tab, null, [{
210
290
  key: "VERSION",
211
291
  get: function get() {
@@ -222,24 +302,31 @@
222
302
  */
223
303
 
224
304
 
225
- $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
305
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
226
306
  event.preventDefault();
227
-
228
- Tab._jQueryInterface.call($(this), 'show');
307
+ var data = Data.getData(this, DATA_KEY) || new Tab(this);
308
+ data.show();
229
309
  });
310
+ var $ = getjQuery();
230
311
  /**
231
312
  * ------------------------------------------------------------------------
232
313
  * jQuery
233
314
  * ------------------------------------------------------------------------
315
+ * add .tab to jQuery only if jQuery is present
234
316
  */
235
317
 
236
- $.fn[NAME] = Tab._jQueryInterface;
237
- $.fn[NAME].Constructor = Tab;
318
+ /* istanbul ignore if */
238
319
 
239
- $.fn[NAME].noConflict = function () {
240
- $.fn[NAME] = JQUERY_NO_CONFLICT;
241
- return Tab._jQueryInterface;
242
- };
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
+ }
243
330
 
244
331
  return Tab;
245
332
 
@@ -1,18 +1,116 @@
1
1
  /*!
2
- * Bootstrap toast.js v4.5.2 (https://getbootstrap.com/)
2
+ * Bootstrap toast.js v5.0.0-alpha1 (https://getbootstrap.com/)
3
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.js'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
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
11
 
12
- $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
- Util = Util && Object.prototype.hasOwnProperty.call(Util, 'default') ? Util['default'] : Util;
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;
14
15
 
15
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
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;
28
+ }
29
+
30
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
31
+ };
32
+
33
+ var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
34
+ if (!element) {
35
+ return 0;
36
+ } // Get transition-duration of the element
37
+
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);
78
+ }
79
+ }, emulatedDuration);
80
+ };
81
+
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);
87
+
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
+ };
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; }
16
114
 
17
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); } }
18
116
 
@@ -24,10 +122,9 @@
24
122
  */
25
123
 
26
124
  var NAME = 'toast';
27
- var VERSION = '4.5.2';
125
+ var VERSION = '5.0.0-alpha1';
28
126
  var DATA_KEY = 'bs.toast';
29
127
  var EVENT_KEY = "." + DATA_KEY;
30
- var JQUERY_NO_CONFLICT = $.fn[NAME];
31
128
  var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
32
129
  var EVENT_HIDE = "hide" + EVENT_KEY;
33
130
  var EVENT_HIDDEN = "hidden" + EVENT_KEY;
@@ -61,6 +158,8 @@
61
158
  this._timeout = null;
62
159
 
63
160
  this._setListeners();
161
+
162
+ Data.setData(element, DATA_KEY, this);
64
163
  } // Getters
65
164
 
66
165
 
@@ -70,15 +169,12 @@
70
169
  _proto.show = function show() {
71
170
  var _this = this;
72
171
 
73
- var showEvent = $.Event(EVENT_SHOW);
74
- $(this._element).trigger(showEvent);
172
+ var showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
75
173
 
76
- if (showEvent.isDefaultPrevented()) {
174
+ if (showEvent.defaultPrevented) {
77
175
  return;
78
176
  }
79
177
 
80
- this._clearTimeout();
81
-
82
178
  if (this._config.animation) {
83
179
  this._element.classList.add(CLASS_NAME_FADE);
84
180
  }
@@ -88,7 +184,7 @@
88
184
 
89
185
  _this._element.classList.add(CLASS_NAME_SHOW);
90
186
 
91
- $(_this._element).trigger(EVENT_SHOWN);
187
+ EventHandler.trigger(_this._element, EVENT_SHOWN);
92
188
 
93
189
  if (_this._config.autohide) {
94
190
  _this._timeout = setTimeout(function () {
@@ -99,96 +195,87 @@
99
195
 
100
196
  this._element.classList.remove(CLASS_NAME_HIDE);
101
197
 
102
- Util.reflow(this._element);
198
+ reflow(this._element);
103
199
 
104
200
  this._element.classList.add(CLASS_NAME_SHOWING);
105
201
 
106
202
  if (this._config.animation) {
107
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
108
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
203
+ var transitionDuration = getTransitionDurationFromElement(this._element);
204
+ EventHandler.one(this._element, TRANSITION_END, complete);
205
+ emulateTransitionEnd(this._element, transitionDuration);
109
206
  } else {
110
207
  complete();
111
208
  }
112
209
  };
113
210
 
114
211
  _proto.hide = function hide() {
212
+ var _this2 = this;
213
+
115
214
  if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
116
215
  return;
117
216
  }
118
217
 
119
- var hideEvent = $.Event(EVENT_HIDE);
120
- $(this._element).trigger(hideEvent);
218
+ var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
121
219
 
122
- if (hideEvent.isDefaultPrevented()) {
220
+ if (hideEvent.defaultPrevented) {
123
221
  return;
124
222
  }
125
223
 
126
- 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
+ }
127
239
  };
128
240
 
129
241
  _proto.dispose = function dispose() {
130
- this._clearTimeout();
242
+ clearTimeout(this._timeout);
243
+ this._timeout = null;
131
244
 
132
245
  if (this._element.classList.contains(CLASS_NAME_SHOW)) {
133
246
  this._element.classList.remove(CLASS_NAME_SHOW);
134
247
  }
135
248
 
136
- $(this._element).off(EVENT_CLICK_DISMISS);
137
- $.removeData(this._element, DATA_KEY);
249
+ EventHandler.off(this._element, EVENT_CLICK_DISMISS);
250
+ Data.removeData(this._element, DATA_KEY);
138
251
  this._element = null;
139
252
  this._config = null;
140
253
  } // Private
141
254
  ;
142
255
 
143
256
  _proto._getConfig = function _getConfig(config) {
144
- config = _extends({}, Default, $(this._element).data(), typeof config === 'object' && config ? config : {});
145
- Util.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);
146
259
  return config;
147
260
  };
148
261
 
149
262
  _proto._setListeners = function _setListeners() {
150
- var _this2 = this;
151
-
152
- $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {
153
- return _this2.hide();
154
- });
155
- };
156
-
157
- _proto._close = function _close() {
158
263
  var _this3 = this;
159
264
 
160
- var complete = function complete() {
161
- _this3._element.classList.add(CLASS_NAME_HIDE);
162
-
163
- $(_this3._element).trigger(EVENT_HIDDEN);
164
- };
165
-
166
- this._element.classList.remove(CLASS_NAME_SHOW);
167
-
168
- if (this._config.animation) {
169
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
170
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
171
- } else {
172
- complete();
173
- }
174
- };
175
-
176
- _proto._clearTimeout = function _clearTimeout() {
177
- clearTimeout(this._timeout);
178
- this._timeout = null;
265
+ EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {
266
+ return _this3.hide();
267
+ });
179
268
  } // Static
180
269
  ;
181
270
 
182
- Toast._jQueryInterface = function _jQueryInterface(config) {
271
+ Toast.jQueryInterface = function jQueryInterface(config) {
183
272
  return this.each(function () {
184
- var $element = $(this);
185
- var data = $element.data(DATA_KEY);
273
+ var data = Data.getData(this, DATA_KEY);
186
274
 
187
275
  var _config = typeof config === 'object' && config;
188
276
 
189
277
  if (!data) {
190
278
  data = new Toast(this, _config);
191
- $element.data(DATA_KEY, data);
192
279
  }
193
280
 
194
281
  if (typeof config === 'string') {
@@ -201,6 +288,10 @@
201
288
  });
202
289
  };
203
290
 
291
+ Toast.getInstance = function getInstance(element) {
292
+ return Data.getData(element, DATA_KEY);
293
+ };
294
+
204
295
  _createClass(Toast, null, [{
205
296
  key: "VERSION",
206
297
  get: function get() {
@@ -220,20 +311,27 @@
220
311
 
221
312
  return Toast;
222
313
  }();
314
+
315
+ var $ = getjQuery();
223
316
  /**
224
317
  * ------------------------------------------------------------------------
225
318
  * jQuery
226
319
  * ------------------------------------------------------------------------
320
+ * add .toast to jQuery only if jQuery is present
227
321
  */
228
322
 
323
+ /* istanbul ignore if */
229
324
 
230
- $.fn[NAME] = Toast._jQueryInterface;
231
- $.fn[NAME].Constructor = Toast;
325
+ if ($) {
326
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
327
+ $.fn[NAME] = Toast.jQueryInterface;
328
+ $.fn[NAME].Constructor = Toast;
232
329
 
233
- $.fn[NAME].noConflict = function () {
234
- $.fn[NAME] = JQUERY_NO_CONFLICT;
235
- return Toast._jQueryInterface;
236
- };
330
+ $.fn[NAME].noConflict = function () {
331
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
332
+ return Toast.jQueryInterface;
333
+ };
334
+ }
237
335
 
238
336
  return Toast;
239
337