bootstrap 5.0.0 → 5.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +8 -8
- data/assets/javascripts/bootstrap.js +329 -377
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +13 -73
- data/assets/javascripts/bootstrap/base-component.js +115 -10
- data/assets/javascripts/bootstrap/button.js +11 -17
- data/assets/javascripts/bootstrap/carousel.js +35 -85
- data/assets/javascripts/bootstrap/collapse.js +34 -82
- data/assets/javascripts/bootstrap/dom/data.js +2 -2
- data/assets/javascripts/bootstrap/dom/event-handler.js +2 -9
- data/assets/javascripts/bootstrap/dom/manipulator.js +2 -2
- data/assets/javascripts/bootstrap/dom/selector-engine.js +2 -2
- data/assets/javascripts/bootstrap/dropdown.js +41 -38
- data/assets/javascripts/bootstrap/modal.js +31 -43
- data/assets/javascripts/bootstrap/offcanvas.js +25 -25
- data/assets/javascripts/bootstrap/popover.js +11 -25
- data/assets/javascripts/bootstrap/scrollspy.js +26 -21
- data/assets/javascripts/bootstrap/tab.js +14 -68
- data/assets/javascripts/bootstrap/toast.js +69 -77
- data/assets/javascripts/bootstrap/tooltip.js +71 -135
- data/assets/stylesheets/_bootstrap-grid.scss +1 -1
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
- data/assets/stylesheets/_bootstrap.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +5 -5
- data/assets/stylesheets/bootstrap/_modal.scss +2 -11
- data/assets/stylesheets/bootstrap/_tables.scss +1 -0
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +5 -5
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +8 -1
- data/lib/bootstrap/version.rb +2 -2
- metadata +2 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap toast.js v5.0.
|
2
|
+
* Bootstrap toast.js v5.0.1 (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
|
*/
|
@@ -16,15 +16,6 @@
|
|
16
16
|
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
17
17
|
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
18
18
|
|
19
|
-
/**
|
20
|
-
* --------------------------------------------------------------------------
|
21
|
-
* Bootstrap (v5.0.0): util/index.js
|
22
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
23
|
-
* --------------------------------------------------------------------------
|
24
|
-
*/
|
25
|
-
const MILLISECONDS_MULTIPLIER = 1000;
|
26
|
-
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
27
|
-
|
28
19
|
const toType = obj => {
|
29
20
|
if (obj === null || obj === undefined) {
|
30
21
|
return `${obj}`;
|
@@ -33,51 +24,16 @@
|
|
33
24
|
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
34
25
|
};
|
35
26
|
|
36
|
-
const
|
37
|
-
if (!
|
38
|
-
return
|
39
|
-
}
|
40
|
-
|
41
|
-
|
42
|
-
let {
|
43
|
-
transitionDuration,
|
44
|
-
transitionDelay
|
45
|
-
} = window.getComputedStyle(element);
|
46
|
-
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
47
|
-
const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
|
48
|
-
|
49
|
-
if (!floatTransitionDuration && !floatTransitionDelay) {
|
50
|
-
return 0;
|
51
|
-
} // If multiple durations are defined, take the first
|
52
|
-
|
53
|
-
|
54
|
-
transitionDuration = transitionDuration.split(',')[0];
|
55
|
-
transitionDelay = transitionDelay.split(',')[0];
|
56
|
-
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
57
|
-
};
|
58
|
-
|
59
|
-
const triggerTransitionEnd = element => {
|
60
|
-
element.dispatchEvent(new Event(TRANSITION_END));
|
61
|
-
};
|
62
|
-
|
63
|
-
const isElement = obj => (obj[0] || obj).nodeType;
|
64
|
-
|
65
|
-
const emulateTransitionEnd = (element, duration) => {
|
66
|
-
let called = false;
|
67
|
-
const durationPadding = 5;
|
68
|
-
const emulatedDuration = duration + durationPadding;
|
27
|
+
const isElement = obj => {
|
28
|
+
if (!obj || typeof obj !== 'object') {
|
29
|
+
return false;
|
30
|
+
}
|
69
31
|
|
70
|
-
|
71
|
-
|
72
|
-
element.removeEventListener(TRANSITION_END, listener);
|
32
|
+
if (typeof obj.jquery !== 'undefined') {
|
33
|
+
obj = obj[0];
|
73
34
|
}
|
74
35
|
|
75
|
-
|
76
|
-
setTimeout(() => {
|
77
|
-
if (!called) {
|
78
|
-
triggerTransitionEnd(element);
|
79
|
-
}
|
80
|
-
}, emulatedDuration);
|
36
|
+
return typeof obj.nodeType !== 'undefined';
|
81
37
|
};
|
82
38
|
|
83
39
|
const typeCheckConfig = (componentName, config, configTypes) => {
|
@@ -114,12 +70,13 @@
|
|
114
70
|
}
|
115
71
|
};
|
116
72
|
|
117
|
-
const defineJQueryPlugin =
|
73
|
+
const defineJQueryPlugin = plugin => {
|
118
74
|
onDOMContentLoaded(() => {
|
119
75
|
const $ = getjQuery();
|
120
76
|
/* istanbul ignore if */
|
121
77
|
|
122
78
|
if ($) {
|
79
|
+
const name = plugin.NAME;
|
123
80
|
const JQUERY_NO_CONFLICT = $.fn[name];
|
124
81
|
$.fn[name] = plugin.jQueryInterface;
|
125
82
|
$.fn[name].Constructor = plugin;
|
@@ -134,7 +91,7 @@
|
|
134
91
|
|
135
92
|
/**
|
136
93
|
* --------------------------------------------------------------------------
|
137
|
-
* Bootstrap (v5.0.
|
94
|
+
* Bootstrap (v5.0.1): toast.js
|
138
95
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
139
96
|
* --------------------------------------------------------------------------
|
140
97
|
*/
|
@@ -148,6 +105,10 @@
|
|
148
105
|
const DATA_KEY = 'bs.toast';
|
149
106
|
const EVENT_KEY = `.${DATA_KEY}`;
|
150
107
|
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
108
|
+
const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
|
109
|
+
const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
|
110
|
+
const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
|
111
|
+
const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
|
151
112
|
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
152
113
|
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
153
114
|
const EVENT_SHOW = `show${EVENT_KEY}`;
|
@@ -178,6 +139,8 @@
|
|
178
139
|
super(element);
|
179
140
|
this._config = this._getConfig(config);
|
180
141
|
this._timeout = null;
|
142
|
+
this._hasMouseInteraction = false;
|
143
|
+
this._hasKeyboardInteraction = false;
|
181
144
|
|
182
145
|
this._setListeners();
|
183
146
|
} // Getters
|
@@ -191,8 +154,8 @@
|
|
191
154
|
return Default;
|
192
155
|
}
|
193
156
|
|
194
|
-
static get
|
195
|
-
return
|
157
|
+
static get NAME() {
|
158
|
+
return NAME;
|
196
159
|
} // Public
|
197
160
|
|
198
161
|
|
@@ -216,11 +179,7 @@
|
|
216
179
|
|
217
180
|
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);
|
218
181
|
|
219
|
-
|
220
|
-
this._timeout = setTimeout(() => {
|
221
|
-
this.hide();
|
222
|
-
}, this._config.delay);
|
223
|
-
}
|
182
|
+
this._maybeScheduleHide();
|
224
183
|
};
|
225
184
|
|
226
185
|
this._element.classList.remove(CLASS_NAME_HIDE);
|
@@ -229,13 +188,7 @@
|
|
229
188
|
|
230
189
|
this._element.classList.add(CLASS_NAME_SHOWING);
|
231
190
|
|
232
|
-
|
233
|
-
const transitionDuration = getTransitionDurationFromElement(this._element);
|
234
|
-
EventHandler__default['default'].one(this._element, 'transitionend', complete);
|
235
|
-
emulateTransitionEnd(this._element, transitionDuration);
|
236
|
-
} else {
|
237
|
-
complete();
|
238
|
-
}
|
191
|
+
this._queueCallback(complete, this._element, this._config.animation);
|
239
192
|
}
|
240
193
|
|
241
194
|
hide() {
|
@@ -257,13 +210,7 @@
|
|
257
210
|
|
258
211
|
this._element.classList.remove(CLASS_NAME_SHOW);
|
259
212
|
|
260
|
-
|
261
|
-
const transitionDuration = getTransitionDurationFromElement(this._element);
|
262
|
-
EventHandler__default['default'].one(this._element, 'transitionend', complete);
|
263
|
-
emulateTransitionEnd(this._element, transitionDuration);
|
264
|
-
} else {
|
265
|
-
complete();
|
266
|
-
}
|
213
|
+
this._queueCallback(complete, this._element, this._config.animation);
|
267
214
|
}
|
268
215
|
|
269
216
|
dispose() {
|
@@ -274,7 +221,6 @@
|
|
274
221
|
}
|
275
222
|
|
276
223
|
super.dispose();
|
277
|
-
this._config = null;
|
278
224
|
} // Private
|
279
225
|
|
280
226
|
|
@@ -287,8 +233,54 @@
|
|
287
233
|
return config;
|
288
234
|
}
|
289
235
|
|
236
|
+
_maybeScheduleHide() {
|
237
|
+
if (!this._config.autohide) {
|
238
|
+
return;
|
239
|
+
}
|
240
|
+
|
241
|
+
if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
|
242
|
+
return;
|
243
|
+
}
|
244
|
+
|
245
|
+
this._timeout = setTimeout(() => {
|
246
|
+
this.hide();
|
247
|
+
}, this._config.delay);
|
248
|
+
}
|
249
|
+
|
250
|
+
_onInteraction(event, isInteracting) {
|
251
|
+
switch (event.type) {
|
252
|
+
case 'mouseover':
|
253
|
+
case 'mouseout':
|
254
|
+
this._hasMouseInteraction = isInteracting;
|
255
|
+
break;
|
256
|
+
|
257
|
+
case 'focusin':
|
258
|
+
case 'focusout':
|
259
|
+
this._hasKeyboardInteraction = isInteracting;
|
260
|
+
break;
|
261
|
+
}
|
262
|
+
|
263
|
+
if (isInteracting) {
|
264
|
+
this._clearTimeout();
|
265
|
+
|
266
|
+
return;
|
267
|
+
}
|
268
|
+
|
269
|
+
const nextElement = event.relatedTarget;
|
270
|
+
|
271
|
+
if (this._element === nextElement || this._element.contains(nextElement)) {
|
272
|
+
return;
|
273
|
+
}
|
274
|
+
|
275
|
+
this._maybeScheduleHide();
|
276
|
+
}
|
277
|
+
|
290
278
|
_setListeners() {
|
291
279
|
EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide());
|
280
|
+
EventHandler__default['default'].on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
|
281
|
+
EventHandler__default['default'].on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
|
282
|
+
EventHandler__default['default'].on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
|
283
|
+
EventHandler__default['default'].on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
|
292
284
|
}
|
293
285
|
|
294
286
|
_clearTimeout() {
|
@@ -326,7 +318,7 @@
|
|
326
318
|
*/
|
327
319
|
|
328
320
|
|
329
|
-
defineJQueryPlugin(
|
321
|
+
defineJQueryPlugin(Toast);
|
330
322
|
|
331
323
|
return Toast;
|
332
324
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap tooltip.js v5.0.
|
2
|
+
* Bootstrap tooltip.js v5.0.1 (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('@popperjs/core'), require('./dom/
|
8
|
-
typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global.Popper, global.
|
10
|
-
}(this, (function (Popper, Data, EventHandler, Manipulator,
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
|
8
|
+
typeof define === 'function' && define.amd ? define(['@popperjs/core', './dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global.Popper, global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base));
|
10
|
+
}(this, (function (Popper, SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict';
|
11
11
|
|
12
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
13
13
|
|
@@ -32,21 +32,20 @@
|
|
32
32
|
}
|
33
33
|
|
34
34
|
var Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
|
35
|
+
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
35
36
|
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
36
37
|
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
37
38
|
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
38
|
-
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
39
39
|
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
40
40
|
|
41
41
|
/**
|
42
42
|
* --------------------------------------------------------------------------
|
43
|
-
* Bootstrap (v5.0.
|
43
|
+
* Bootstrap (v5.0.1): util/index.js
|
44
44
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
45
45
|
* --------------------------------------------------------------------------
|
46
46
|
*/
|
47
|
+
|
47
48
|
const MAX_UID = 1000000;
|
48
|
-
const MILLISECONDS_MULTIPLIER = 1000;
|
49
|
-
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
50
49
|
|
51
50
|
const toType = obj => {
|
52
51
|
if (obj === null || obj === undefined) {
|
@@ -70,51 +69,29 @@
|
|
70
69
|
return prefix;
|
71
70
|
};
|
72
71
|
|
73
|
-
const
|
74
|
-
if (!
|
75
|
-
return
|
76
|
-
}
|
77
|
-
|
78
|
-
|
79
|
-
let {
|
80
|
-
transitionDuration,
|
81
|
-
transitionDelay
|
82
|
-
} = window.getComputedStyle(element);
|
83
|
-
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
84
|
-
const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
|
85
|
-
|
86
|
-
if (!floatTransitionDuration && !floatTransitionDelay) {
|
87
|
-
return 0;
|
88
|
-
} // If multiple durations are defined, take the first
|
89
|
-
|
72
|
+
const isElement = obj => {
|
73
|
+
if (!obj || typeof obj !== 'object') {
|
74
|
+
return false;
|
75
|
+
}
|
90
76
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
};
|
77
|
+
if (typeof obj.jquery !== 'undefined') {
|
78
|
+
obj = obj[0];
|
79
|
+
}
|
95
80
|
|
96
|
-
|
97
|
-
element.dispatchEvent(new Event(TRANSITION_END));
|
81
|
+
return typeof obj.nodeType !== 'undefined';
|
98
82
|
};
|
99
83
|
|
100
|
-
const
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
const emulatedDuration = duration + durationPadding;
|
84
|
+
const getElement = obj => {
|
85
|
+
if (isElement(obj)) {
|
86
|
+
// it's a jQuery object or a node element
|
87
|
+
return obj.jquery ? obj[0] : obj;
|
88
|
+
}
|
106
89
|
|
107
|
-
|
108
|
-
|
109
|
-
element.removeEventListener(TRANSITION_END, listener);
|
90
|
+
if (typeof obj === 'string' && obj.length > 0) {
|
91
|
+
return SelectorEngine__default['default'].findOne(obj);
|
110
92
|
}
|
111
93
|
|
112
|
-
|
113
|
-
setTimeout(() => {
|
114
|
-
if (!called) {
|
115
|
-
triggerTransitionEnd(element);
|
116
|
-
}
|
117
|
-
}, emulatedDuration);
|
94
|
+
return null;
|
118
95
|
};
|
119
96
|
|
120
97
|
const typeCheckConfig = (componentName, config, configTypes) => {
|
@@ -176,12 +153,13 @@
|
|
176
153
|
|
177
154
|
const isRTL = () => document.documentElement.dir === 'rtl';
|
178
155
|
|
179
|
-
const defineJQueryPlugin =
|
156
|
+
const defineJQueryPlugin = plugin => {
|
180
157
|
onDOMContentLoaded(() => {
|
181
158
|
const $ = getjQuery();
|
182
159
|
/* istanbul ignore if */
|
183
160
|
|
184
161
|
if ($) {
|
162
|
+
const name = plugin.NAME;
|
185
163
|
const JQUERY_NO_CONFLICT = $.fn[name];
|
186
164
|
$.fn[name] = plugin.jQueryInterface;
|
187
165
|
$.fn[name].Constructor = plugin;
|
@@ -196,7 +174,7 @@
|
|
196
174
|
|
197
175
|
/**
|
198
176
|
* --------------------------------------------------------------------------
|
199
|
-
* Bootstrap (v5.0.
|
177
|
+
* Bootstrap (v5.0.1): util/sanitizer.js
|
200
178
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
201
179
|
* --------------------------------------------------------------------------
|
202
180
|
*/
|
@@ -309,7 +287,7 @@
|
|
309
287
|
|
310
288
|
/**
|
311
289
|
* --------------------------------------------------------------------------
|
312
|
-
* Bootstrap (v5.0.
|
290
|
+
* Bootstrap (v5.0.1): tooltip.js
|
313
291
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
314
292
|
* --------------------------------------------------------------------------
|
315
293
|
*/
|
@@ -370,7 +348,7 @@
|
|
370
348
|
allowList: DefaultAllowlist,
|
371
349
|
popperConfig: null
|
372
350
|
};
|
373
|
-
const Event
|
351
|
+
const Event = {
|
374
352
|
HIDE: `hide${EVENT_KEY}`,
|
375
353
|
HIDDEN: `hidden${EVENT_KEY}`,
|
376
354
|
SHOW: `show${EVENT_KEY}`,
|
@@ -412,7 +390,7 @@
|
|
412
390
|
this._activeTrigger = {};
|
413
391
|
this._popper = null; // Protected
|
414
392
|
|
415
|
-
this.
|
393
|
+
this._config = this._getConfig(config);
|
416
394
|
this.tip = null;
|
417
395
|
|
418
396
|
this._setListeners();
|
@@ -427,16 +405,8 @@
|
|
427
405
|
return NAME;
|
428
406
|
}
|
429
407
|
|
430
|
-
static get DATA_KEY() {
|
431
|
-
return DATA_KEY;
|
432
|
-
}
|
433
|
-
|
434
408
|
static get Event() {
|
435
|
-
return Event
|
436
|
-
}
|
437
|
-
|
438
|
-
static get EVENT_KEY() {
|
439
|
-
return EVENT_KEY;
|
409
|
+
return Event;
|
440
410
|
}
|
441
411
|
|
442
412
|
static get DefaultType() {
|
@@ -490,18 +460,10 @@
|
|
490
460
|
this.tip.parentNode.removeChild(this.tip);
|
491
461
|
}
|
492
462
|
|
493
|
-
this._isEnabled = null;
|
494
|
-
this._timeout = null;
|
495
|
-
this._hoverState = null;
|
496
|
-
this._activeTrigger = null;
|
497
|
-
|
498
463
|
if (this._popper) {
|
499
464
|
this._popper.destroy();
|
500
465
|
}
|
501
466
|
|
502
|
-
this._popper = null;
|
503
|
-
this.config = null;
|
504
|
-
this.tip = null;
|
505
467
|
super.dispose();
|
506
468
|
}
|
507
469
|
|
@@ -530,18 +492,19 @@
|
|
530
492
|
|
531
493
|
this.setContent();
|
532
494
|
|
533
|
-
if (this.
|
495
|
+
if (this._config.animation) {
|
534
496
|
tip.classList.add(CLASS_NAME_FADE);
|
535
497
|
}
|
536
498
|
|
537
|
-
const placement = typeof this.
|
499
|
+
const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
|
538
500
|
|
539
501
|
const attachment = this._getAttachment(placement);
|
540
502
|
|
541
503
|
this._addAttachmentClass(attachment);
|
542
504
|
|
543
|
-
const
|
544
|
-
|
505
|
+
const {
|
506
|
+
container
|
507
|
+
} = this._config;
|
545
508
|
Data__default['default'].set(tip, this.constructor.DATA_KEY, this);
|
546
509
|
|
547
510
|
if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
|
@@ -556,7 +519,7 @@
|
|
556
519
|
}
|
557
520
|
|
558
521
|
tip.classList.add(CLASS_NAME_SHOW);
|
559
|
-
const customClass = typeof this.
|
522
|
+
const customClass = typeof this._config.customClass === 'function' ? this._config.customClass() : this._config.customClass;
|
560
523
|
|
561
524
|
if (customClass) {
|
562
525
|
tip.classList.add(...customClass.split(' '));
|
@@ -582,13 +545,9 @@
|
|
582
545
|
}
|
583
546
|
};
|
584
547
|
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
emulateTransitionEnd(this.tip, transitionDuration);
|
589
|
-
} else {
|
590
|
-
complete();
|
591
|
-
}
|
548
|
+
const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE);
|
549
|
+
|
550
|
+
this._queueCallback(complete, this.tip, isAnimated);
|
592
551
|
}
|
593
552
|
|
594
553
|
hide() {
|
@@ -636,14 +595,9 @@
|
|
636
595
|
this._activeTrigger[TRIGGER_CLICK] = false;
|
637
596
|
this._activeTrigger[TRIGGER_FOCUS] = false;
|
638
597
|
this._activeTrigger[TRIGGER_HOVER] = false;
|
598
|
+
const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE);
|
639
599
|
|
640
|
-
|
641
|
-
const transitionDuration = getTransitionDurationFromElement(tip);
|
642
|
-
EventHandler__default['default'].one(tip, 'transitionend', complete);
|
643
|
-
emulateTransitionEnd(tip, transitionDuration);
|
644
|
-
} else {
|
645
|
-
complete();
|
646
|
-
}
|
600
|
+
this._queueCallback(complete, this.tip, isAnimated);
|
647
601
|
|
648
602
|
this._hoverState = '';
|
649
603
|
}
|
@@ -665,7 +619,7 @@
|
|
665
619
|
}
|
666
620
|
|
667
621
|
const element = document.createElement('div');
|
668
|
-
element.innerHTML = this.
|
622
|
+
element.innerHTML = this._config.template;
|
669
623
|
this.tip = element.children[0];
|
670
624
|
return this.tip;
|
671
625
|
}
|
@@ -681,13 +635,10 @@
|
|
681
635
|
return;
|
682
636
|
}
|
683
637
|
|
684
|
-
if (
|
685
|
-
|
686
|
-
content = content[0];
|
687
|
-
} // content is a DOM node or a jQuery
|
638
|
+
if (isElement(content)) {
|
639
|
+
content = getElement(content); // content is a DOM node or a jQuery
|
688
640
|
|
689
|
-
|
690
|
-
if (this.config.html) {
|
641
|
+
if (this._config.html) {
|
691
642
|
if (content.parentNode !== element) {
|
692
643
|
element.innerHTML = '';
|
693
644
|
element.appendChild(content);
|
@@ -699,9 +650,9 @@
|
|
699
650
|
return;
|
700
651
|
}
|
701
652
|
|
702
|
-
if (this.
|
703
|
-
if (this.
|
704
|
-
content = sanitizeHtml(content, this.
|
653
|
+
if (this._config.html) {
|
654
|
+
if (this._config.sanitize) {
|
655
|
+
content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);
|
705
656
|
}
|
706
657
|
|
707
658
|
element.innerHTML = content;
|
@@ -714,7 +665,7 @@
|
|
714
665
|
let title = this._element.getAttribute('data-bs-original-title');
|
715
666
|
|
716
667
|
if (!title) {
|
717
|
-
title = typeof this.
|
668
|
+
title = typeof this._config.title === 'function' ? this._config.title.call(this._element) : this._config.title;
|
718
669
|
}
|
719
670
|
|
720
671
|
return title;
|
@@ -748,7 +699,7 @@
|
|
748
699
|
_getOffset() {
|
749
700
|
const {
|
750
701
|
offset
|
751
|
-
} = this.
|
702
|
+
} = this._config;
|
752
703
|
|
753
704
|
if (typeof offset === 'string') {
|
754
705
|
return offset.split(',').map(val => Number.parseInt(val, 10));
|
@@ -767,7 +718,7 @@
|
|
767
718
|
modifiers: [{
|
768
719
|
name: 'flip',
|
769
720
|
options: {
|
770
|
-
fallbackPlacements: this.
|
721
|
+
fallbackPlacements: this._config.fallbackPlacements
|
771
722
|
}
|
772
723
|
}, {
|
773
724
|
name: 'offset',
|
@@ -777,7 +728,7 @@
|
|
777
728
|
}, {
|
778
729
|
name: 'preventOverflow',
|
779
730
|
options: {
|
780
|
-
boundary: this.
|
731
|
+
boundary: this._config.boundary
|
781
732
|
}
|
782
733
|
}, {
|
783
734
|
name: 'arrow',
|
@@ -797,7 +748,7 @@
|
|
797
748
|
}
|
798
749
|
};
|
799
750
|
return { ...defaultBsPopperConfig,
|
800
|
-
...(typeof this.
|
751
|
+
...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
|
801
752
|
};
|
802
753
|
}
|
803
754
|
|
@@ -805,32 +756,21 @@
|
|
805
756
|
this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`);
|
806
757
|
}
|
807
758
|
|
808
|
-
_getContainer() {
|
809
|
-
if (this.config.container === false) {
|
810
|
-
return document.body;
|
811
|
-
}
|
812
|
-
|
813
|
-
if (isElement(this.config.container)) {
|
814
|
-
return this.config.container;
|
815
|
-
}
|
816
|
-
|
817
|
-
return SelectorEngine__default['default'].findOne(this.config.container);
|
818
|
-
}
|
819
|
-
|
820
759
|
_getAttachment(placement) {
|
821
760
|
return AttachmentMap[placement.toUpperCase()];
|
822
761
|
}
|
823
762
|
|
824
763
|
_setListeners() {
|
825
|
-
const triggers = this.
|
764
|
+
const triggers = this._config.trigger.split(' ');
|
765
|
+
|
826
766
|
triggers.forEach(trigger => {
|
827
767
|
if (trigger === 'click') {
|
828
|
-
EventHandler__default['default'].on(this._element, this.constructor.Event.CLICK, this.
|
768
|
+
EventHandler__default['default'].on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));
|
829
769
|
} else if (trigger !== TRIGGER_MANUAL) {
|
830
770
|
const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;
|
831
771
|
const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;
|
832
|
-
EventHandler__default['default'].on(this._element, eventIn, this.
|
833
|
-
EventHandler__default['default'].on(this._element, eventOut, this.
|
772
|
+
EventHandler__default['default'].on(this._element, eventIn, this._config.selector, event => this._enter(event));
|
773
|
+
EventHandler__default['default'].on(this._element, eventOut, this._config.selector, event => this._leave(event));
|
834
774
|
}
|
835
775
|
});
|
836
776
|
|
@@ -842,8 +782,8 @@
|
|
842
782
|
|
843
783
|
EventHandler__default['default'].on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler);
|
844
784
|
|
845
|
-
if (this.
|
846
|
-
this.
|
785
|
+
if (this._config.selector) {
|
786
|
+
this._config = { ...this._config,
|
847
787
|
trigger: 'manual',
|
848
788
|
selector: ''
|
849
789
|
};
|
@@ -883,7 +823,7 @@
|
|
883
823
|
clearTimeout(context._timeout);
|
884
824
|
context._hoverState = HOVER_STATE_SHOW;
|
885
825
|
|
886
|
-
if (!context.
|
826
|
+
if (!context._config.delay || !context._config.delay.show) {
|
887
827
|
context.show();
|
888
828
|
return;
|
889
829
|
}
|
@@ -892,7 +832,7 @@
|
|
892
832
|
if (context._hoverState === HOVER_STATE_SHOW) {
|
893
833
|
context.show();
|
894
834
|
}
|
895
|
-
}, context.
|
835
|
+
}, context._config.delay.show);
|
896
836
|
}
|
897
837
|
|
898
838
|
_leave(event, context) {
|
@@ -909,7 +849,7 @@
|
|
909
849
|
clearTimeout(context._timeout);
|
910
850
|
context._hoverState = HOVER_STATE_OUT;
|
911
851
|
|
912
|
-
if (!context.
|
852
|
+
if (!context._config.delay || !context._config.delay.hide) {
|
913
853
|
context.hide();
|
914
854
|
return;
|
915
855
|
}
|
@@ -918,7 +858,7 @@
|
|
918
858
|
if (context._hoverState === HOVER_STATE_OUT) {
|
919
859
|
context.hide();
|
920
860
|
}
|
921
|
-
}, context.
|
861
|
+
}, context._config.delay.hide);
|
922
862
|
}
|
923
863
|
|
924
864
|
_isWithActiveTrigger() {
|
@@ -938,15 +878,11 @@
|
|
938
878
|
delete dataAttributes[dataAttr];
|
939
879
|
}
|
940
880
|
});
|
941
|
-
|
942
|
-
if (config && typeof config.container === 'object' && config.container.jquery) {
|
943
|
-
config.container = config.container[0];
|
944
|
-
}
|
945
|
-
|
946
881
|
config = { ...this.constructor.Default,
|
947
882
|
...dataAttributes,
|
948
883
|
...(typeof config === 'object' && config ? config : {})
|
949
884
|
};
|
885
|
+
config.container = config.container === false ? document.body : getElement(config.container);
|
950
886
|
|
951
887
|
if (typeof config.delay === 'number') {
|
952
888
|
config.delay = {
|
@@ -975,10 +911,10 @@
|
|
975
911
|
_getDelegateConfig() {
|
976
912
|
const config = {};
|
977
913
|
|
978
|
-
if (this.
|
979
|
-
for (const key in this.
|
980
|
-
if (this.constructor.Default[key] !== this.
|
981
|
-
config[key] = this.
|
914
|
+
if (this._config) {
|
915
|
+
for (const key in this._config) {
|
916
|
+
if (this.constructor.Default[key] !== this._config[key]) {
|
917
|
+
config[key] = this._config[key];
|
982
918
|
}
|
983
919
|
}
|
984
920
|
}
|
@@ -1045,7 +981,7 @@
|
|
1045
981
|
*/
|
1046
982
|
|
1047
983
|
|
1048
|
-
defineJQueryPlugin(
|
984
|
+
defineJQueryPlugin(Tooltip);
|
1049
985
|
|
1050
986
|
return Tooltip;
|
1051
987
|
|