bootstrap 5.0.1 → 5.1.2
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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/assets/javascripts/bootstrap/alert.js +89 -58
- data/assets/javascripts/bootstrap/base-component.js +53 -39
- data/assets/javascripts/bootstrap/button.js +31 -25
- data/assets/javascripts/bootstrap/carousel.js +126 -89
- data/assets/javascripts/bootstrap/collapse.js +125 -133
- data/assets/javascripts/bootstrap/dom/data.js +5 -5
- data/assets/javascripts/bootstrap/dom/event-handler.js +11 -5
- data/assets/javascripts/bootstrap/dom/manipulator.js +6 -6
- data/assets/javascripts/bootstrap/dom/selector-engine.js +49 -7
- data/assets/javascripts/bootstrap/dropdown.js +147 -140
- data/assets/javascripts/bootstrap/modal.js +397 -180
- data/assets/javascripts/bootstrap/offcanvas.js +333 -138
- data/assets/javascripts/bootstrap/popover.js +36 -54
- data/assets/javascripts/bootstrap/scrollspy.js +58 -68
- data/assets/javascripts/bootstrap/tab.js +53 -26
- data/assets/javascripts/bootstrap/toast.js +138 -41
- data/assets/javascripts/bootstrap/tooltip.js +137 -120
- data/assets/javascripts/bootstrap-sprockets.js +8 -8
- data/assets/javascripts/bootstrap.js +937 -886
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/stylesheets/_bootstrap-grid.scss +3 -1
- data/assets/stylesheets/_bootstrap-reboot.scss +2 -4
- data/assets/stylesheets/_bootstrap.scss +2 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +1 -0
- data/assets/stylesheets/bootstrap/_card.scss +7 -6
- data/assets/stylesheets/bootstrap/_carousel.scss +2 -2
- data/assets/stylesheets/bootstrap/_dropdown.scss +4 -4
- data/assets/stylesheets/bootstrap/_functions.scss +100 -3
- data/assets/stylesheets/bootstrap/_grid.scss +11 -0
- data/assets/stylesheets/bootstrap/_helpers.scss +2 -0
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
- data/assets/stylesheets/bootstrap/_modal.scss +5 -15
- data/assets/stylesheets/bootstrap/_navbar.scss +30 -1
- data/assets/stylesheets/bootstrap/_offcanvas.scss +8 -2
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +10 -10
- data/assets/stylesheets/bootstrap/_reboot.scss +12 -8
- data/assets/stylesheets/bootstrap/_root.scss +40 -2
- data/assets/stylesheets/bootstrap/_tables.scss +9 -5
- data/assets/stylesheets/bootstrap/_toasts.scss +3 -3
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
- data/assets/stylesheets/bootstrap/_transitions.scss +6 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +44 -8
- data/assets/stylesheets/bootstrap/_variables.scss +206 -29
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +3 -1
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +35 -9
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +27 -6
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +1 -1
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +55 -13
- data/bootstrap.gemspec +3 -3
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +6 -2
- metadata +12 -8
@@ -1,20 +1,26 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap toast.js v5.
|
2
|
+
* Bootstrap toast.js v5.1.2 (https://getbootstrap.com/)
|
3
3
|
* Copyright 2011-2021 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/
|
8
|
-
typeof define === 'function' && define.amd ? define(['./dom/
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.
|
10
|
-
}(this, (function (
|
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';
|
11
11
|
|
12
|
-
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
15
|
+
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
16
|
+
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
17
|
+
|
18
|
+
/**
|
19
|
+
* --------------------------------------------------------------------------
|
20
|
+
* Bootstrap (v5.1.2): util/index.js
|
21
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
22
|
+
* --------------------------------------------------------------------------
|
23
|
+
*/
|
18
24
|
|
19
25
|
const toType = obj => {
|
20
26
|
if (obj === null || obj === undefined) {
|
@@ -24,6 +30,35 @@
|
|
24
30
|
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
25
31
|
};
|
26
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
|
+
|
27
62
|
const isElement = obj => {
|
28
63
|
if (!obj || typeof obj !== 'object') {
|
29
64
|
return false;
|
@@ -48,7 +83,35 @@
|
|
48
83
|
});
|
49
84
|
};
|
50
85
|
|
51
|
-
const
|
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
|
+
};
|
52
115
|
|
53
116
|
const getjQuery = () => {
|
54
117
|
const {
|
@@ -62,9 +125,18 @@
|
|
62
125
|
return null;
|
63
126
|
};
|
64
127
|
|
128
|
+
const DOMContentLoadedCallbacks = [];
|
129
|
+
|
65
130
|
const onDOMContentLoaded = callback => {
|
66
131
|
if (document.readyState === 'loading') {
|
67
|
-
document
|
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);
|
68
140
|
} else {
|
69
141
|
callback();
|
70
142
|
}
|
@@ -91,7 +163,33 @@
|
|
91
163
|
|
92
164
|
/**
|
93
165
|
* --------------------------------------------------------------------------
|
94
|
-
* Bootstrap (v5.
|
166
|
+
* Bootstrap (v5.1.2): 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
|
+
/**
|
191
|
+
* --------------------------------------------------------------------------
|
192
|
+
* Bootstrap (v5.1.2): toast.js
|
95
193
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
96
194
|
* --------------------------------------------------------------------------
|
97
195
|
*/
|
@@ -104,7 +202,6 @@
|
|
104
202
|
const NAME = 'toast';
|
105
203
|
const DATA_KEY = 'bs.toast';
|
106
204
|
const EVENT_KEY = `.${DATA_KEY}`;
|
107
|
-
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
108
205
|
const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
|
109
206
|
const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
|
110
207
|
const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
|
@@ -114,7 +211,8 @@
|
|
114
211
|
const EVENT_SHOW = `show${EVENT_KEY}`;
|
115
212
|
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
116
213
|
const CLASS_NAME_FADE = 'fade';
|
117
|
-
const CLASS_NAME_HIDE = 'hide';
|
214
|
+
const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
|
215
|
+
|
118
216
|
const CLASS_NAME_SHOW = 'show';
|
119
217
|
const CLASS_NAME_SHOWING = 'showing';
|
120
218
|
const DefaultType = {
|
@@ -127,14 +225,13 @@
|
|
127
225
|
autohide: true,
|
128
226
|
delay: 5000
|
129
227
|
};
|
130
|
-
const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="toast"]';
|
131
228
|
/**
|
132
229
|
* ------------------------------------------------------------------------
|
133
230
|
* Class Definition
|
134
231
|
* ------------------------------------------------------------------------
|
135
232
|
*/
|
136
233
|
|
137
|
-
class Toast extends BaseComponent__default
|
234
|
+
class Toast extends BaseComponent__default.default {
|
138
235
|
constructor(element, config) {
|
139
236
|
super(element);
|
140
237
|
this._config = this._getConfig(config);
|
@@ -160,7 +257,7 @@
|
|
160
257
|
|
161
258
|
|
162
259
|
show() {
|
163
|
-
const showEvent = EventHandler__default
|
260
|
+
const showEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW);
|
164
261
|
|
165
262
|
if (showEvent.defaultPrevented) {
|
166
263
|
return;
|
@@ -175,17 +272,18 @@
|
|
175
272
|
const complete = () => {
|
176
273
|
this._element.classList.remove(CLASS_NAME_SHOWING);
|
177
274
|
|
178
|
-
this._element
|
179
|
-
|
180
|
-
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);
|
275
|
+
EventHandler__default.default.trigger(this._element, EVENT_SHOWN);
|
181
276
|
|
182
277
|
this._maybeScheduleHide();
|
183
278
|
};
|
184
279
|
|
185
|
-
this._element.classList.remove(CLASS_NAME_HIDE);
|
280
|
+
this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
|
281
|
+
|
186
282
|
|
187
283
|
reflow(this._element);
|
188
284
|
|
285
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
286
|
+
|
189
287
|
this._element.classList.add(CLASS_NAME_SHOWING);
|
190
288
|
|
191
289
|
this._queueCallback(complete, this._element, this._config.animation);
|
@@ -196,19 +294,24 @@
|
|
196
294
|
return;
|
197
295
|
}
|
198
296
|
|
199
|
-
const hideEvent = EventHandler__default
|
297
|
+
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
|
200
298
|
|
201
299
|
if (hideEvent.defaultPrevented) {
|
202
300
|
return;
|
203
301
|
}
|
204
302
|
|
205
303
|
const complete = () => {
|
206
|
-
this._element.classList.add(CLASS_NAME_HIDE);
|
304
|
+
this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
|
207
305
|
|
208
|
-
|
306
|
+
|
307
|
+
this._element.classList.remove(CLASS_NAME_SHOWING);
|
308
|
+
|
309
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
310
|
+
|
311
|
+
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
|
209
312
|
};
|
210
313
|
|
211
|
-
this._element.classList.
|
314
|
+
this._element.classList.add(CLASS_NAME_SHOWING);
|
212
315
|
|
213
316
|
this._queueCallback(complete, this._element, this._config.animation);
|
214
317
|
}
|
@@ -226,7 +329,7 @@
|
|
226
329
|
|
227
330
|
_getConfig(config) {
|
228
331
|
config = { ...Default,
|
229
|
-
...Manipulator__default
|
332
|
+
...Manipulator__default.default.getDataAttributes(this._element),
|
230
333
|
...(typeof config === 'object' && config ? config : {})
|
231
334
|
};
|
232
335
|
typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
@@ -276,11 +379,10 @@
|
|
276
379
|
}
|
277
380
|
|
278
381
|
_setListeners() {
|
279
|
-
EventHandler__default
|
280
|
-
EventHandler__default
|
281
|
-
EventHandler__default
|
282
|
-
EventHandler__default
|
283
|
-
EventHandler__default['default'].on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
|
382
|
+
EventHandler__default.default.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
|
383
|
+
EventHandler__default.default.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
|
384
|
+
EventHandler__default.default.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
|
385
|
+
EventHandler__default.default.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
|
284
386
|
}
|
285
387
|
|
286
388
|
_clearTimeout() {
|
@@ -291,13 +393,7 @@
|
|
291
393
|
|
292
394
|
static jQueryInterface(config) {
|
293
395
|
return this.each(function () {
|
294
|
-
|
295
|
-
|
296
|
-
const _config = typeof config === 'object' && config;
|
297
|
-
|
298
|
-
if (!data) {
|
299
|
-
data = new Toast(this, _config);
|
300
|
-
}
|
396
|
+
const data = Toast.getOrCreateInstance(this, config);
|
301
397
|
|
302
398
|
if (typeof config === 'string') {
|
303
399
|
if (typeof data[config] === 'undefined') {
|
@@ -310,6 +406,8 @@
|
|
310
406
|
}
|
311
407
|
|
312
408
|
}
|
409
|
+
|
410
|
+
enableDismissTrigger(Toast);
|
313
411
|
/**
|
314
412
|
* ------------------------------------------------------------------------
|
315
413
|
* jQuery
|
@@ -317,9 +415,8 @@
|
|
317
415
|
* add .Toast to jQuery only if jQuery is present
|
318
416
|
*/
|
319
417
|
|
320
|
-
|
321
418
|
defineJQueryPlugin(Toast);
|
322
419
|
|
323
420
|
return Toast;
|
324
421
|
|
325
|
-
}))
|
422
|
+
}));
|