bootstrap 5.1.3 → 5.2.1

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -4
  3. data/assets/javascripts/bootstrap/alert.js +11 -146
  4. data/assets/javascripts/bootstrap/base-component.js +37 -120
  5. data/assets/javascripts/bootstrap/button.js +10 -74
  6. data/assets/javascripts/bootstrap/carousel.js +213 -485
  7. data/assets/javascripts/bootstrap/collapse.js +65 -249
  8. data/assets/javascripts/bootstrap/dom/data.js +3 -5
  9. data/assets/javascripts/bootstrap/dom/event-handler.js +94 -132
  10. data/assets/javascripts/bootstrap/dom/manipulator.js +23 -27
  11. data/assets/javascripts/bootstrap/dom/selector-engine.js +16 -58
  12. data/assets/javascripts/bootstrap/dropdown.js +103 -317
  13. data/assets/javascripts/bootstrap/modal.js +107 -749
  14. data/assets/javascripts/bootstrap/offcanvas.js +90 -659
  15. data/assets/javascripts/bootstrap/popover.js +36 -118
  16. data/assets/javascripts/bootstrap/scrollspy.js +183 -262
  17. data/assets/javascripts/bootstrap/tab.js +215 -214
  18. data/assets/javascripts/bootstrap/toast.js +28 -214
  19. data/assets/javascripts/bootstrap/tooltip.js +272 -611
  20. data/assets/javascripts/bootstrap/util/backdrop.js +165 -0
  21. data/assets/javascripts/bootstrap/util/component-functions.js +46 -0
  22. data/assets/javascripts/bootstrap/util/config.js +79 -0
  23. data/assets/javascripts/bootstrap/util/focustrap.js +129 -0
  24. data/assets/javascripts/bootstrap/util/index.js +350 -0
  25. data/assets/javascripts/bootstrap/util/sanitizer.js +122 -0
  26. data/assets/javascripts/bootstrap/util/scrollbar.js +138 -0
  27. data/assets/javascripts/bootstrap/util/swipe.js +155 -0
  28. data/assets/javascripts/bootstrap/util/template-factory.js +177 -0
  29. data/assets/javascripts/bootstrap-global-this-define.js +1 -1
  30. data/assets/javascripts/bootstrap-sprockets.js +10 -1
  31. data/assets/javascripts/bootstrap.js +2077 -1859
  32. data/assets/javascripts/bootstrap.min.js +3 -3
  33. data/assets/stylesheets/_bootstrap-grid.scss +3 -6
  34. data/assets/stylesheets/_bootstrap-reboot.scss +3 -7
  35. data/assets/stylesheets/_bootstrap.scss +4 -6
  36. data/assets/stylesheets/bootstrap/_accordion.scss +56 -25
  37. data/assets/stylesheets/bootstrap/_alert.scss +18 -4
  38. data/assets/stylesheets/bootstrap/_badge.scss +14 -5
  39. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -10
  40. data/assets/stylesheets/bootstrap/_button-group.scss +4 -1
  41. data/assets/stylesheets/bootstrap/_buttons.scss +120 -30
  42. data/assets/stylesheets/bootstrap/_card.scss +55 -37
  43. data/assets/stylesheets/bootstrap/_close.scss +1 -1
  44. data/assets/stylesheets/bootstrap/_containers.scss +1 -1
  45. data/assets/stylesheets/bootstrap/_dropdown.scss +85 -76
  46. data/assets/stylesheets/bootstrap/_functions.scss +8 -8
  47. data/assets/stylesheets/bootstrap/_grid.scss +3 -3
  48. data/assets/stylesheets/bootstrap/_helpers.scss +1 -0
  49. data/assets/stylesheets/bootstrap/_list-group.scss +48 -30
  50. data/assets/stylesheets/bootstrap/_maps.scss +54 -0
  51. data/assets/stylesheets/bootstrap/_modal.scss +71 -43
  52. data/assets/stylesheets/bootstrap/_nav.scss +53 -20
  53. data/assets/stylesheets/bootstrap/_navbar.scss +93 -150
  54. data/assets/stylesheets/bootstrap/_offcanvas.scss +120 -59
  55. data/assets/stylesheets/bootstrap/_pagination.scss +66 -21
  56. data/assets/stylesheets/bootstrap/_placeholders.scss +1 -1
  57. data/assets/stylesheets/bootstrap/_popover.scss +90 -52
  58. data/assets/stylesheets/bootstrap/_progress.scss +20 -9
  59. data/assets/stylesheets/bootstrap/_reboot.scss +25 -40
  60. data/assets/stylesheets/bootstrap/_root.scss +40 -21
  61. data/assets/stylesheets/bootstrap/_spinners.scss +38 -22
  62. data/assets/stylesheets/bootstrap/_tables.scss +32 -23
  63. data/assets/stylesheets/bootstrap/_toasts.scss +36 -16
  64. data/assets/stylesheets/bootstrap/_tooltip.scss +61 -56
  65. data/assets/stylesheets/bootstrap/_type.scss +2 -0
  66. data/assets/stylesheets/bootstrap/_utilities.scss +43 -26
  67. data/assets/stylesheets/bootstrap/_variables.scss +128 -135
  68. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +3 -6
  69. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +15 -3
  70. data/assets/stylesheets/bootstrap/forms/_form-check.scss +28 -5
  71. data/assets/stylesheets/bootstrap/forms/_form-control.scss +12 -37
  72. data/assets/stylesheets/bootstrap/forms/_form-select.scss +0 -1
  73. data/assets/stylesheets/bootstrap/forms/_input-group.scss +19 -8
  74. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +10 -0
  75. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +2 -2
  76. data/assets/stylesheets/bootstrap/helpers/_position.scss +7 -1
  77. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
  78. data/assets/stylesheets/bootstrap/helpers/_vr.scss +1 -1
  79. data/assets/stylesheets/bootstrap/mixins/_alert.scss +7 -3
  80. data/assets/stylesheets/bootstrap/mixins/_banner.scss +9 -0
  81. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +8 -8
  82. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
  83. data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
  84. data/assets/stylesheets/bootstrap/mixins/_forms.scss +18 -10
  85. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
  86. data/assets/stylesheets/bootstrap/mixins/_grid.scss +12 -12
  87. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
  88. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  89. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
  90. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +13 -5
  91. data/bootstrap.gemspec +1 -1
  92. data/lib/bootstrap/version.rb +2 -2
  93. data/tasks/updater/js.rb +10 -5
  94. metadata +16 -4
@@ -1,202 +1,27 @@
1
1
  /*!
2
- * Bootstrap toast.js v5.1.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap toast.js v5.2.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 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('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './base-component'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.EventHandler, global.Manipulator, global.Base));
10
- })(this, (function (EventHandler, Manipulator, BaseComponent) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./base-component'), require('./util/component-functions')) :
8
+ typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './base-component', './util/component-functions'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.Index, global.EventHandler, global.BaseComponent, global.ComponentFunctions));
10
+ })(this, (function (index, EventHandler, BaseComponent, componentFunctions) { 'use strict';
11
11
 
12
12
  const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
13
13
 
14
14
  const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
- const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
16
15
  const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
17
16
 
18
17
  /**
19
18
  * --------------------------------------------------------------------------
20
- * Bootstrap (v5.1.3): util/index.js
19
+ * Bootstrap (v5.2.1): toast.js
21
20
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
22
21
  * --------------------------------------------------------------------------
23
22
  */
24
-
25
- const 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
- const getSelector = element => {
34
- let selector = element.getAttribute('data-bs-target');
35
-
36
- if (!selector || selector === '#') {
37
- let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
38
- // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
39
- // `document.querySelector` will rightfully complain it is invalid.
40
- // See https://github.com/twbs/bootstrap/issues/32273
41
-
42
- if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
43
- return null;
44
- } // Just in case some CMS puts out a full URL with the anchor appended
45
-
46
-
47
- if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
48
- hrefAttr = `#${hrefAttr.split('#')[1]}`;
49
- }
50
-
51
- selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
52
- }
53
-
54
- return selector;
55
- };
56
-
57
- const getElementFromSelector = element => {
58
- const selector = getSelector(element);
59
- return selector ? document.querySelector(selector) : null;
60
- };
61
-
62
- const isElement = obj => {
63
- if (!obj || typeof obj !== 'object') {
64
- return false;
65
- }
66
-
67
- if (typeof obj.jquery !== 'undefined') {
68
- obj = obj[0];
69
- }
70
-
71
- return typeof obj.nodeType !== 'undefined';
72
- };
73
-
74
- const typeCheckConfig = (componentName, config, configTypes) => {
75
- Object.keys(configTypes).forEach(property => {
76
- const expectedTypes = configTypes[property];
77
- const value = config[property];
78
- const valueType = value && isElement(value) ? 'element' : toType(value);
79
-
80
- if (!new RegExp(expectedTypes).test(valueType)) {
81
- throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
82
- }
83
- });
84
- };
85
-
86
- const isDisabled = element => {
87
- if (!element || element.nodeType !== Node.ELEMENT_NODE) {
88
- return true;
89
- }
90
-
91
- if (element.classList.contains('disabled')) {
92
- return true;
93
- }
94
-
95
- if (typeof element.disabled !== 'undefined') {
96
- return element.disabled;
97
- }
98
-
99
- return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
100
- };
101
- /**
102
- * Trick to restart an element's animation
103
- *
104
- * @param {HTMLElement} element
105
- * @return void
106
- *
107
- * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
108
- */
109
-
110
-
111
- const reflow = element => {
112
- // eslint-disable-next-line no-unused-expressions
113
- element.offsetHeight;
114
- };
115
-
116
- const getjQuery = () => {
117
- const {
118
- jQuery
119
- } = window;
120
-
121
- if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
122
- return jQuery;
123
- }
124
-
125
- return null;
126
- };
127
-
128
- const DOMContentLoadedCallbacks = [];
129
-
130
- const onDOMContentLoaded = callback => {
131
- if (document.readyState === 'loading') {
132
- // add listener on the first call when the document is in loading state
133
- if (!DOMContentLoadedCallbacks.length) {
134
- document.addEventListener('DOMContentLoaded', () => {
135
- DOMContentLoadedCallbacks.forEach(callback => callback());
136
- });
137
- }
138
-
139
- DOMContentLoadedCallbacks.push(callback);
140
- } else {
141
- callback();
142
- }
143
- };
144
-
145
- const defineJQueryPlugin = plugin => {
146
- onDOMContentLoaded(() => {
147
- const $ = getjQuery();
148
- /* istanbul ignore if */
149
-
150
- if ($) {
151
- const name = plugin.NAME;
152
- const JQUERY_NO_CONFLICT = $.fn[name];
153
- $.fn[name] = plugin.jQueryInterface;
154
- $.fn[name].Constructor = plugin;
155
-
156
- $.fn[name].noConflict = () => {
157
- $.fn[name] = JQUERY_NO_CONFLICT;
158
- return plugin.jQueryInterface;
159
- };
160
- }
161
- });
162
- };
163
-
164
- /**
165
- * --------------------------------------------------------------------------
166
- * Bootstrap (v5.1.3): util/component-functions.js
167
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
168
- * --------------------------------------------------------------------------
169
- */
170
-
171
- const enableDismissTrigger = (component, method = 'hide') => {
172
- const clickEvent = `click.dismiss${component.EVENT_KEY}`;
173
- const name = component.NAME;
174
- EventHandler__default.default.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
175
- if (['A', 'AREA'].includes(this.tagName)) {
176
- event.preventDefault();
177
- }
178
-
179
- if (isDisabled(this)) {
180
- return;
181
- }
182
-
183
- const target = getElementFromSelector(this) || this.closest(`.${name}`);
184
- const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
185
-
186
- instance[method]();
187
- });
188
- };
189
-
190
23
  /**
191
- * --------------------------------------------------------------------------
192
- * Bootstrap (v5.1.3): toast.js
193
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
194
- * --------------------------------------------------------------------------
195
- */
196
- /**
197
- * ------------------------------------------------------------------------
198
24
  * Constants
199
- * ------------------------------------------------------------------------
200
25
  */
201
26
 
202
27
  const NAME = 'toast';
@@ -226,15 +51,12 @@
226
51
  delay: 5000
227
52
  };
228
53
  /**
229
- * ------------------------------------------------------------------------
230
- * Class Definition
231
- * ------------------------------------------------------------------------
54
+ * Class definition
232
55
  */
233
56
 
234
57
  class Toast extends BaseComponent__default.default {
235
58
  constructor(element, config) {
236
- super(element);
237
- this._config = this._getConfig(config);
59
+ super(element, config);
238
60
  this._timeout = null;
239
61
  this._hasMouseInteraction = false;
240
62
  this._hasKeyboardInteraction = false;
@@ -243,14 +65,14 @@
243
65
  } // Getters
244
66
 
245
67
 
246
- static get DefaultType() {
247
- return DefaultType;
248
- }
249
-
250
68
  static get Default() {
251
69
  return Default;
252
70
  }
253
71
 
72
+ static get DefaultType() {
73
+ return DefaultType;
74
+ }
75
+
254
76
  static get NAME() {
255
77
  return NAME;
256
78
  } // Public
@@ -280,17 +102,15 @@
280
102
  this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
281
103
 
282
104
 
283
- reflow(this._element);
284
-
285
- this._element.classList.add(CLASS_NAME_SHOW);
105
+ index.reflow(this._element);
286
106
 
287
- this._element.classList.add(CLASS_NAME_SHOWING);
107
+ this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
288
108
 
289
109
  this._queueCallback(complete, this._element, this._config.animation);
290
110
  }
291
111
 
292
112
  hide() {
293
- if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
113
+ if (!this.isShown()) {
294
114
  return;
295
115
  }
296
116
 
@@ -304,9 +124,7 @@
304
124
  this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
305
125
 
306
126
 
307
- this._element.classList.remove(CLASS_NAME_SHOWING);
308
-
309
- this._element.classList.remove(CLASS_NAME_SHOW);
127
+ this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
310
128
 
311
129
  EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
312
130
  };
@@ -319,23 +137,18 @@
319
137
  dispose() {
320
138
  this._clearTimeout();
321
139
 
322
- if (this._element.classList.contains(CLASS_NAME_SHOW)) {
140
+ if (this.isShown()) {
323
141
  this._element.classList.remove(CLASS_NAME_SHOW);
324
142
  }
325
143
 
326
144
  super.dispose();
145
+ }
146
+
147
+ isShown() {
148
+ return this._element.classList.contains(CLASS_NAME_SHOW);
327
149
  } // Private
328
150
 
329
151
 
330
- _getConfig(config) {
331
- config = { ...Default,
332
- ...Manipulator__default.default.getDataAttributes(this._element),
333
- ...(typeof config === 'object' && config ? config : {})
334
- };
335
- typeCheckConfig(NAME, config, this.constructor.DefaultType);
336
- return config;
337
- }
338
-
339
152
  _maybeScheduleHide() {
340
153
  if (!this._config.autohide) {
341
154
  return;
@@ -406,16 +219,17 @@
406
219
  }
407
220
 
408
221
  }
222
+ /**
223
+ * Data API implementation
224
+ */
225
+
409
226
 
410
- enableDismissTrigger(Toast);
227
+ componentFunctions.enableDismissTrigger(Toast);
411
228
  /**
412
- * ------------------------------------------------------------------------
413
229
  * jQuery
414
- * ------------------------------------------------------------------------
415
- * add .Toast to jQuery only if jQuery is present
416
230
  */
417
231
 
418
- defineJQueryPlugin(Toast);
232
+ index.defineJQueryPlugin(Toast);
419
233
 
420
234
  return Toast;
421
235