bootstrap 5.0.0.beta2 → 5.0.0.beta3
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 +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +1 -0
- data/assets/javascripts/bootstrap.js +2051 -2009
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +75 -118
- data/assets/javascripts/bootstrap/base-component.js +23 -37
- data/assets/javascripts/bootstrap/button.js +39 -78
- data/assets/javascripts/bootstrap/carousel.js +284 -364
- data/assets/javascripts/bootstrap/collapse.js +178 -247
- data/assets/javascripts/bootstrap/dom/data.js +34 -47
- data/assets/javascripts/bootstrap/dom/event-handler.js +71 -77
- data/assets/javascripts/bootstrap/dom/manipulator.js +23 -21
- data/assets/javascripts/bootstrap/dom/selector-engine.js +20 -28
- data/assets/javascripts/bootstrap/dropdown.js +195 -265
- data/assets/javascripts/bootstrap/modal.js +256 -344
- data/assets/javascripts/bootstrap/offcanvas.js +508 -0
- data/assets/javascripts/bootstrap/popover.js +88 -157
- data/assets/javascripts/bootstrap/scrollspy.js +134 -212
- data/assets/javascripts/bootstrap/tab.js +108 -142
- data/assets/javascripts/bootstrap/toast.js +113 -183
- data/assets/javascripts/bootstrap/tooltip.js +297 -392
- data/assets/stylesheets/_bootstrap-grid.scss +1 -1
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
- data/assets/stylesheets/_bootstrap.scss +2 -1
- data/assets/stylesheets/bootstrap/_accordion.scss +22 -32
- data/assets/stylesheets/bootstrap/_buttons.scss +2 -0
- data/assets/stylesheets/bootstrap/_card.scss +1 -1
- data/assets/stylesheets/bootstrap/_dropdown.scss +3 -6
- data/assets/stylesheets/bootstrap/_list-group.scss +11 -0
- data/assets/stylesheets/bootstrap/_modal.scss +2 -0
- data/assets/stylesheets/bootstrap/_nav.scss +7 -0
- data/assets/stylesheets/bootstrap/_navbar.scss +2 -0
- data/assets/stylesheets/bootstrap/_offcanvas.scss +77 -0
- data/assets/stylesheets/bootstrap/_progress.scss +3 -0
- data/assets/stylesheets/bootstrap/_reboot.scss +7 -21
- data/assets/stylesheets/bootstrap/_spinners.scss +4 -0
- data/assets/stylesheets/bootstrap/_transitions.scss +2 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +65 -37
- data/assets/stylesheets/bootstrap/_variables.scss +138 -30
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +0 -4
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +6 -1
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +11 -1
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +2 -0
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +1 -1
- data/tasks/updater/network.rb +7 -1
- metadata +6 -4
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap tooltip.js v5.0.0-
|
2
|
+
* Bootstrap tooltip.js v5.0.0-beta3 (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
|
*/
|
@@ -38,69 +38,19 @@
|
|
38
38
|
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
39
39
|
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
40
40
|
|
41
|
-
function _defineProperties(target, props) {
|
42
|
-
for (var i = 0; i < props.length; i++) {
|
43
|
-
var descriptor = props[i];
|
44
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
45
|
-
descriptor.configurable = true;
|
46
|
-
if ("value" in descriptor) descriptor.writable = true;
|
47
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
52
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
53
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
54
|
-
return Constructor;
|
55
|
-
}
|
56
|
-
|
57
|
-
function _extends() {
|
58
|
-
_extends = Object.assign || function (target) {
|
59
|
-
for (var i = 1; i < arguments.length; i++) {
|
60
|
-
var source = arguments[i];
|
61
|
-
|
62
|
-
for (var key in source) {
|
63
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
64
|
-
target[key] = source[key];
|
65
|
-
}
|
66
|
-
}
|
67
|
-
}
|
68
|
-
|
69
|
-
return target;
|
70
|
-
};
|
71
|
-
|
72
|
-
return _extends.apply(this, arguments);
|
73
|
-
}
|
74
|
-
|
75
|
-
function _inheritsLoose(subClass, superClass) {
|
76
|
-
subClass.prototype = Object.create(superClass.prototype);
|
77
|
-
subClass.prototype.constructor = subClass;
|
78
|
-
|
79
|
-
_setPrototypeOf(subClass, superClass);
|
80
|
-
}
|
81
|
-
|
82
|
-
function _setPrototypeOf(o, p) {
|
83
|
-
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
84
|
-
o.__proto__ = p;
|
85
|
-
return o;
|
86
|
-
};
|
87
|
-
|
88
|
-
return _setPrototypeOf(o, p);
|
89
|
-
}
|
90
|
-
|
91
41
|
/**
|
92
42
|
* --------------------------------------------------------------------------
|
93
|
-
* Bootstrap (v5.0.0-
|
43
|
+
* Bootstrap (v5.0.0-beta3): util/index.js
|
94
44
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
95
45
|
* --------------------------------------------------------------------------
|
96
46
|
*/
|
97
|
-
|
98
|
-
|
99
|
-
|
47
|
+
const MAX_UID = 1000000;
|
48
|
+
const MILLISECONDS_MULTIPLIER = 1000;
|
49
|
+
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
100
50
|
|
101
|
-
|
51
|
+
const toType = obj => {
|
102
52
|
if (obj === null || obj === undefined) {
|
103
|
-
return
|
53
|
+
return `${obj}`;
|
104
54
|
}
|
105
55
|
|
106
56
|
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
@@ -112,7 +62,7 @@
|
|
112
62
|
*/
|
113
63
|
|
114
64
|
|
115
|
-
|
65
|
+
const getUID = prefix => {
|
116
66
|
do {
|
117
67
|
prefix += Math.floor(Math.random() * MAX_UID);
|
118
68
|
} while (document.getElementById(prefix));
|
@@ -120,18 +70,18 @@
|
|
120
70
|
return prefix;
|
121
71
|
};
|
122
72
|
|
123
|
-
|
73
|
+
const getTransitionDurationFromElement = element => {
|
124
74
|
if (!element) {
|
125
75
|
return 0;
|
126
76
|
} // Get transition-duration of the element
|
127
77
|
|
128
78
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
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
|
135
85
|
|
136
86
|
if (!floatTransitionDuration && !floatTransitionDelay) {
|
137
87
|
return 0;
|
@@ -143,18 +93,16 @@
|
|
143
93
|
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
144
94
|
};
|
145
95
|
|
146
|
-
|
96
|
+
const triggerTransitionEnd = element => {
|
147
97
|
element.dispatchEvent(new Event(TRANSITION_END));
|
148
98
|
};
|
149
99
|
|
150
|
-
|
151
|
-
return (obj[0] || obj).nodeType;
|
152
|
-
};
|
100
|
+
const isElement = obj => (obj[0] || obj).nodeType;
|
153
101
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
102
|
+
const emulateTransitionEnd = (element, duration) => {
|
103
|
+
let called = false;
|
104
|
+
const durationPadding = 5;
|
105
|
+
const emulatedDuration = duration + durationPadding;
|
158
106
|
|
159
107
|
function listener() {
|
160
108
|
called = true;
|
@@ -162,33 +110,33 @@
|
|
162
110
|
}
|
163
111
|
|
164
112
|
element.addEventListener(TRANSITION_END, listener);
|
165
|
-
setTimeout(
|
113
|
+
setTimeout(() => {
|
166
114
|
if (!called) {
|
167
115
|
triggerTransitionEnd(element);
|
168
116
|
}
|
169
117
|
}, emulatedDuration);
|
170
118
|
};
|
171
119
|
|
172
|
-
|
173
|
-
Object.keys(configTypes).forEach(
|
174
|
-
|
175
|
-
|
176
|
-
|
120
|
+
const typeCheckConfig = (componentName, config, configTypes) => {
|
121
|
+
Object.keys(configTypes).forEach(property => {
|
122
|
+
const expectedTypes = configTypes[property];
|
123
|
+
const value = config[property];
|
124
|
+
const valueType = value && isElement(value) ? 'element' : toType(value);
|
177
125
|
|
178
126
|
if (!new RegExp(expectedTypes).test(valueType)) {
|
179
|
-
throw new TypeError(componentName.toUpperCase()
|
127
|
+
throw new TypeError(`${componentName.toUpperCase()}: ` + `Option "${property}" provided type "${valueType}" ` + `but expected type "${expectedTypes}".`);
|
180
128
|
}
|
181
129
|
});
|
182
130
|
};
|
183
131
|
|
184
|
-
|
132
|
+
const findShadowRoot = element => {
|
185
133
|
if (!document.documentElement.attachShadow) {
|
186
134
|
return null;
|
187
135
|
} // Can find the shadow root otherwise it'll return the document
|
188
136
|
|
189
137
|
|
190
138
|
if (typeof element.getRootNode === 'function') {
|
191
|
-
|
139
|
+
const root = element.getRootNode();
|
192
140
|
return root instanceof ShadowRoot ? root : null;
|
193
141
|
}
|
194
142
|
|
@@ -204,13 +152,12 @@
|
|
204
152
|
return findShadowRoot(element.parentNode);
|
205
153
|
};
|
206
154
|
|
207
|
-
|
208
|
-
return function () {};
|
209
|
-
};
|
155
|
+
const noop = () => function () {};
|
210
156
|
|
211
|
-
|
212
|
-
|
213
|
-
|
157
|
+
const getjQuery = () => {
|
158
|
+
const {
|
159
|
+
jQuery
|
160
|
+
} = window;
|
214
161
|
|
215
162
|
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
216
163
|
return jQuery;
|
@@ -219,7 +166,7 @@
|
|
219
166
|
return null;
|
220
167
|
};
|
221
168
|
|
222
|
-
|
169
|
+
const onDOMContentLoaded = callback => {
|
223
170
|
if (document.readyState === 'loading') {
|
224
171
|
document.addEventListener('DOMContentLoaded', callback);
|
225
172
|
} else {
|
@@ -227,19 +174,19 @@
|
|
227
174
|
}
|
228
175
|
};
|
229
176
|
|
230
|
-
|
177
|
+
const isRTL = () => document.documentElement.dir === 'rtl';
|
231
178
|
|
232
|
-
|
233
|
-
onDOMContentLoaded(
|
234
|
-
|
179
|
+
const defineJQueryPlugin = (name, plugin) => {
|
180
|
+
onDOMContentLoaded(() => {
|
181
|
+
const $ = getjQuery();
|
235
182
|
/* istanbul ignore if */
|
236
183
|
|
237
184
|
if ($) {
|
238
|
-
|
185
|
+
const JQUERY_NO_CONFLICT = $.fn[name];
|
239
186
|
$.fn[name] = plugin.jQueryInterface;
|
240
187
|
$.fn[name].Constructor = plugin;
|
241
188
|
|
242
|
-
$.fn[name].noConflict =
|
189
|
+
$.fn[name].noConflict = () => {
|
243
190
|
$.fn[name] = JQUERY_NO_CONFLICT;
|
244
191
|
return plugin.jQueryInterface;
|
245
192
|
};
|
@@ -249,29 +196,29 @@
|
|
249
196
|
|
250
197
|
/**
|
251
198
|
* --------------------------------------------------------------------------
|
252
|
-
* Bootstrap (v5.0.0-
|
199
|
+
* Bootstrap (v5.0.0-beta3): util/sanitizer.js
|
253
200
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
254
201
|
* --------------------------------------------------------------------------
|
255
202
|
*/
|
256
|
-
|
257
|
-
|
203
|
+
const uriAttrs = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
|
204
|
+
const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
|
258
205
|
/**
|
259
206
|
* A pattern that recognizes a commonly useful subset of URLs that are safe.
|
260
207
|
*
|
261
208
|
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
262
209
|
*/
|
263
210
|
|
264
|
-
|
211
|
+
const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i;
|
265
212
|
/**
|
266
213
|
* A pattern that matches safe data URLs. Only matches image, video and audio types.
|
267
214
|
*
|
268
215
|
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
269
216
|
*/
|
270
217
|
|
271
|
-
|
218
|
+
const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
|
272
219
|
|
273
|
-
|
274
|
-
|
220
|
+
const allowedAttribute = (attr, allowedAttributeList) => {
|
221
|
+
const attrName = attr.nodeName.toLowerCase();
|
275
222
|
|
276
223
|
if (allowedAttributeList.includes(attrName)) {
|
277
224
|
if (uriAttrs.has(attrName)) {
|
@@ -281,11 +228,9 @@
|
|
281
228
|
return true;
|
282
229
|
}
|
283
230
|
|
284
|
-
|
285
|
-
return attrRegex instanceof RegExp;
|
286
|
-
}); // Check if a regular expression validates the attribute.
|
231
|
+
const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp); // Check if a regular expression validates the attribute.
|
287
232
|
|
288
|
-
for (
|
233
|
+
for (let i = 0, len = regExp.length; i < len; i++) {
|
289
234
|
if (regExp[i].test(attrName)) {
|
290
235
|
return true;
|
291
236
|
}
|
@@ -294,7 +239,7 @@
|
|
294
239
|
return false;
|
295
240
|
};
|
296
241
|
|
297
|
-
|
242
|
+
const DefaultAllowlist = {
|
298
243
|
// Global attributes allowed on any supplied element below.
|
299
244
|
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
|
300
245
|
a: ['target', 'href', 'title', 'rel'],
|
@@ -328,8 +273,6 @@
|
|
328
273
|
ul: []
|
329
274
|
};
|
330
275
|
function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
|
331
|
-
var _ref;
|
332
|
-
|
333
276
|
if (!unsafeHtml.length) {
|
334
277
|
return unsafeHtml;
|
335
278
|
}
|
@@ -338,55 +281,51 @@
|
|
338
281
|
return sanitizeFn(unsafeHtml);
|
339
282
|
}
|
340
283
|
|
341
|
-
|
342
|
-
|
343
|
-
|
284
|
+
const domParser = new window.DOMParser();
|
285
|
+
const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
|
286
|
+
const allowlistKeys = Object.keys(allowList);
|
287
|
+
const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
|
344
288
|
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
var _ref2;
|
349
|
-
|
350
|
-
var el = elements[i];
|
351
|
-
var elName = el.nodeName.toLowerCase();
|
289
|
+
for (let i = 0, len = elements.length; i < len; i++) {
|
290
|
+
const el = elements[i];
|
291
|
+
const elName = el.nodeName.toLowerCase();
|
352
292
|
|
353
293
|
if (!allowlistKeys.includes(elName)) {
|
354
294
|
el.parentNode.removeChild(el);
|
355
|
-
|
295
|
+
continue;
|
356
296
|
}
|
357
297
|
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
attributeList.forEach(function (attr) {
|
298
|
+
const attributeList = [].concat(...el.attributes);
|
299
|
+
const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
|
300
|
+
attributeList.forEach(attr => {
|
362
301
|
if (!allowedAttribute(attr, allowedAttributes)) {
|
363
302
|
el.removeAttribute(attr.nodeName);
|
364
303
|
}
|
365
304
|
});
|
366
|
-
};
|
367
|
-
|
368
|
-
for (var i = 0, len = elements.length; i < len; i++) {
|
369
|
-
var _ret = _loop(i);
|
370
|
-
|
371
|
-
if (_ret === "continue") continue;
|
372
305
|
}
|
373
306
|
|
374
307
|
return createdDocument.body.innerHTML;
|
375
308
|
}
|
376
309
|
|
310
|
+
/**
|
311
|
+
* --------------------------------------------------------------------------
|
312
|
+
* Bootstrap (v5.0.0-beta3): tooltip.js
|
313
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
314
|
+
* --------------------------------------------------------------------------
|
315
|
+
*/
|
377
316
|
/**
|
378
317
|
* ------------------------------------------------------------------------
|
379
318
|
* Constants
|
380
319
|
* ------------------------------------------------------------------------
|
381
320
|
*/
|
382
321
|
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
322
|
+
const NAME = 'tooltip';
|
323
|
+
const DATA_KEY = 'bs.tooltip';
|
324
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
325
|
+
const CLASS_PREFIX = 'bs-tooltip';
|
326
|
+
const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g');
|
327
|
+
const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
|
328
|
+
const DefaultType = {
|
390
329
|
animation: 'boolean',
|
391
330
|
template: 'string',
|
392
331
|
title: '(string|element|function)',
|
@@ -405,14 +344,14 @@
|
|
405
344
|
allowList: 'object',
|
406
345
|
popperConfig: '(null|object|function)'
|
407
346
|
};
|
408
|
-
|
347
|
+
const AttachmentMap = {
|
409
348
|
AUTO: 'auto',
|
410
349
|
TOP: 'top',
|
411
|
-
RIGHT: isRTL ? 'left' : 'right',
|
350
|
+
RIGHT: isRTL() ? 'left' : 'right',
|
412
351
|
BOTTOM: 'bottom',
|
413
|
-
LEFT: isRTL ? 'right' : 'left'
|
352
|
+
LEFT: isRTL() ? 'right' : 'left'
|
414
353
|
};
|
415
|
-
|
354
|
+
const Default = {
|
416
355
|
animation: true,
|
417
356
|
template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
|
418
357
|
trigger: 'hover focus',
|
@@ -431,83 +370,99 @@
|
|
431
370
|
allowList: DefaultAllowlist,
|
432
371
|
popperConfig: null
|
433
372
|
};
|
434
|
-
|
435
|
-
HIDE:
|
436
|
-
HIDDEN:
|
437
|
-
SHOW:
|
438
|
-
SHOWN:
|
439
|
-
INSERTED:
|
440
|
-
CLICK:
|
441
|
-
FOCUSIN:
|
442
|
-
FOCUSOUT:
|
443
|
-
MOUSEENTER:
|
444
|
-
MOUSELEAVE:
|
373
|
+
const Event$1 = {
|
374
|
+
HIDE: `hide${EVENT_KEY}`,
|
375
|
+
HIDDEN: `hidden${EVENT_KEY}`,
|
376
|
+
SHOW: `show${EVENT_KEY}`,
|
377
|
+
SHOWN: `shown${EVENT_KEY}`,
|
378
|
+
INSERTED: `inserted${EVENT_KEY}`,
|
379
|
+
CLICK: `click${EVENT_KEY}`,
|
380
|
+
FOCUSIN: `focusin${EVENT_KEY}`,
|
381
|
+
FOCUSOUT: `focusout${EVENT_KEY}`,
|
382
|
+
MOUSEENTER: `mouseenter${EVENT_KEY}`,
|
383
|
+
MOUSELEAVE: `mouseleave${EVENT_KEY}`
|
445
384
|
};
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
385
|
+
const CLASS_NAME_FADE = 'fade';
|
386
|
+
const CLASS_NAME_MODAL = 'modal';
|
387
|
+
const CLASS_NAME_SHOW = 'show';
|
388
|
+
const HOVER_STATE_SHOW = 'show';
|
389
|
+
const HOVER_STATE_OUT = 'out';
|
390
|
+
const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
|
391
|
+
const TRIGGER_HOVER = 'hover';
|
392
|
+
const TRIGGER_FOCUS = 'focus';
|
393
|
+
const TRIGGER_CLICK = 'click';
|
394
|
+
const TRIGGER_MANUAL = 'manual';
|
456
395
|
/**
|
457
396
|
* ------------------------------------------------------------------------
|
458
397
|
* Class Definition
|
459
398
|
* ------------------------------------------------------------------------
|
460
399
|
*/
|
461
400
|
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
function Tooltip(element, config) {
|
466
|
-
var _this;
|
467
|
-
|
401
|
+
class Tooltip extends BaseComponent__default['default'] {
|
402
|
+
constructor(element, config) {
|
468
403
|
if (typeof Popper__namespace === 'undefined') {
|
469
404
|
throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
|
470
405
|
}
|
471
406
|
|
472
|
-
|
473
|
-
|
474
|
-
_this._isEnabled = true;
|
475
|
-
_this._timeout = 0;
|
476
|
-
_this._hoverState = '';
|
477
|
-
_this._activeTrigger = {};
|
478
|
-
_this._popper = null; // Protected
|
407
|
+
super(element); // private
|
479
408
|
|
480
|
-
|
481
|
-
|
409
|
+
this._isEnabled = true;
|
410
|
+
this._timeout = 0;
|
411
|
+
this._hoverState = '';
|
412
|
+
this._activeTrigger = {};
|
413
|
+
this._popper = null; // Protected
|
482
414
|
|
483
|
-
|
415
|
+
this.config = this._getConfig(config);
|
416
|
+
this.tip = null;
|
484
417
|
|
485
|
-
|
418
|
+
this._setListeners();
|
486
419
|
} // Getters
|
487
420
|
|
488
421
|
|
489
|
-
|
422
|
+
static get Default() {
|
423
|
+
return Default;
|
424
|
+
}
|
425
|
+
|
426
|
+
static get NAME() {
|
427
|
+
return NAME;
|
428
|
+
}
|
490
429
|
|
491
|
-
|
492
|
-
|
430
|
+
static get DATA_KEY() {
|
431
|
+
return DATA_KEY;
|
432
|
+
}
|
433
|
+
|
434
|
+
static get Event() {
|
435
|
+
return Event$1;
|
436
|
+
}
|
437
|
+
|
438
|
+
static get EVENT_KEY() {
|
439
|
+
return EVENT_KEY;
|
440
|
+
}
|
441
|
+
|
442
|
+
static get DefaultType() {
|
443
|
+
return DefaultType;
|
444
|
+
} // Public
|
445
|
+
|
446
|
+
|
447
|
+
enable() {
|
493
448
|
this._isEnabled = true;
|
494
|
-
}
|
449
|
+
}
|
495
450
|
|
496
|
-
|
451
|
+
disable() {
|
497
452
|
this._isEnabled = false;
|
498
|
-
}
|
453
|
+
}
|
499
454
|
|
500
|
-
|
455
|
+
toggleEnabled() {
|
501
456
|
this._isEnabled = !this._isEnabled;
|
502
|
-
}
|
457
|
+
}
|
503
458
|
|
504
|
-
|
459
|
+
toggle(event) {
|
505
460
|
if (!this._isEnabled) {
|
506
461
|
return;
|
507
462
|
}
|
508
463
|
|
509
464
|
if (event) {
|
510
|
-
|
465
|
+
const context = this._initializeOnDelegatedTarget(event);
|
511
466
|
|
512
467
|
context._activeTrigger.click = !context._activeTrigger.click;
|
513
468
|
|
@@ -525,12 +480,12 @@
|
|
525
480
|
|
526
481
|
this._enter(null, this);
|
527
482
|
}
|
528
|
-
}
|
483
|
+
}
|
529
484
|
|
530
|
-
|
485
|
+
dispose() {
|
531
486
|
clearTimeout(this._timeout);
|
532
487
|
EventHandler__default['default'].off(this._element, this.constructor.EVENT_KEY);
|
533
|
-
EventHandler__default['default'].off(this._element.closest(
|
488
|
+
EventHandler__default['default'].off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler);
|
534
489
|
|
535
490
|
if (this.tip && this.tip.parentNode) {
|
536
491
|
this.tip.parentNode.removeChild(this.tip);
|
@@ -548,13 +503,10 @@
|
|
548
503
|
this._popper = null;
|
549
504
|
this.config = null;
|
550
505
|
this.tip = null;
|
506
|
+
super.dispose();
|
507
|
+
}
|
551
508
|
|
552
|
-
|
553
|
-
};
|
554
|
-
|
555
|
-
_proto.show = function show() {
|
556
|
-
var _this2 = this;
|
557
|
-
|
509
|
+
show() {
|
558
510
|
if (this._element.style.display === 'none') {
|
559
511
|
throw new Error('Please use show on visible elements');
|
560
512
|
}
|
@@ -563,16 +515,16 @@
|
|
563
515
|
return;
|
564
516
|
}
|
565
517
|
|
566
|
-
|
567
|
-
|
568
|
-
|
518
|
+
const showEvent = EventHandler__default['default'].trigger(this._element, this.constructor.Event.SHOW);
|
519
|
+
const shadowRoot = findShadowRoot(this._element);
|
520
|
+
const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
|
569
521
|
|
570
522
|
if (showEvent.defaultPrevented || !isInTheDom) {
|
571
523
|
return;
|
572
524
|
}
|
573
525
|
|
574
|
-
|
575
|
-
|
526
|
+
const tip = this.getTipElement();
|
527
|
+
const tipId = getUID(this.constructor.NAME);
|
576
528
|
tip.setAttribute('id', tipId);
|
577
529
|
|
578
530
|
this._element.setAttribute('aria-describedby', tipId);
|
@@ -583,29 +535,32 @@
|
|
583
535
|
tip.classList.add(CLASS_NAME_FADE);
|
584
536
|
}
|
585
537
|
|
586
|
-
|
538
|
+
const placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement;
|
587
539
|
|
588
|
-
|
540
|
+
const attachment = this._getAttachment(placement);
|
589
541
|
|
590
542
|
this._addAttachmentClass(attachment);
|
591
543
|
|
592
|
-
|
544
|
+
const container = this._getContainer();
|
593
545
|
|
594
|
-
Data__default['default'].
|
546
|
+
Data__default['default'].set(tip, this.constructor.DATA_KEY, this);
|
595
547
|
|
596
548
|
if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
|
597
549
|
container.appendChild(tip);
|
550
|
+
EventHandler__default['default'].trigger(this._element, this.constructor.Event.INSERTED);
|
551
|
+
}
|
552
|
+
|
553
|
+
if (this._popper) {
|
554
|
+
this._popper.update();
|
555
|
+
} else {
|
556
|
+
this._popper = Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));
|
598
557
|
}
|
599
558
|
|
600
|
-
EventHandler__default['default'].trigger(this._element, this.constructor.Event.INSERTED);
|
601
|
-
this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));
|
602
559
|
tip.classList.add(CLASS_NAME_SHOW);
|
603
|
-
|
560
|
+
const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass;
|
604
561
|
|
605
562
|
if (customClass) {
|
606
|
-
|
607
|
-
|
608
|
-
(_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' '));
|
563
|
+
tip.classList.add(...customClass.split(' '));
|
609
564
|
} // If this is a touch-enabled device we add extra
|
610
565
|
// empty mouseover listeners to the body's immediate children;
|
611
566
|
// only needed because of broken event delegation on iOS
|
@@ -613,60 +568,60 @@
|
|
613
568
|
|
614
569
|
|
615
570
|
if ('ontouchstart' in document.documentElement) {
|
616
|
-
|
617
|
-
|
618
|
-
(_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) {
|
571
|
+
[].concat(...document.body.children).forEach(element => {
|
619
572
|
EventHandler__default['default'].on(element, 'mouseover', noop());
|
620
573
|
});
|
621
574
|
}
|
622
575
|
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
EventHandler__default['default'].trigger(
|
576
|
+
const complete = () => {
|
577
|
+
const prevHoverState = this._hoverState;
|
578
|
+
this._hoverState = null;
|
579
|
+
EventHandler__default['default'].trigger(this._element, this.constructor.Event.SHOWN);
|
627
580
|
|
628
581
|
if (prevHoverState === HOVER_STATE_OUT) {
|
629
|
-
|
582
|
+
this._leave(null, this);
|
630
583
|
}
|
631
584
|
};
|
632
585
|
|
633
586
|
if (this.tip.classList.contains(CLASS_NAME_FADE)) {
|
634
|
-
|
587
|
+
const transitionDuration = getTransitionDurationFromElement(this.tip);
|
635
588
|
EventHandler__default['default'].one(this.tip, 'transitionend', complete);
|
636
589
|
emulateTransitionEnd(this.tip, transitionDuration);
|
637
590
|
} else {
|
638
591
|
complete();
|
639
592
|
}
|
640
|
-
}
|
641
|
-
|
642
|
-
_proto.hide = function hide() {
|
643
|
-
var _this3 = this;
|
593
|
+
}
|
644
594
|
|
595
|
+
hide() {
|
645
596
|
if (!this._popper) {
|
646
597
|
return;
|
647
598
|
}
|
648
599
|
|
649
|
-
|
600
|
+
const tip = this.getTipElement();
|
650
601
|
|
651
|
-
|
652
|
-
if (
|
602
|
+
const complete = () => {
|
603
|
+
if (this._isWithActiveTrigger()) {
|
604
|
+
return;
|
605
|
+
}
|
606
|
+
|
607
|
+
if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
|
653
608
|
tip.parentNode.removeChild(tip);
|
654
609
|
}
|
655
610
|
|
656
|
-
|
611
|
+
this._cleanTipClass();
|
657
612
|
|
658
|
-
|
613
|
+
this._element.removeAttribute('aria-describedby');
|
659
614
|
|
660
|
-
EventHandler__default['default'].trigger(
|
615
|
+
EventHandler__default['default'].trigger(this._element, this.constructor.Event.HIDDEN);
|
661
616
|
|
662
|
-
if (
|
663
|
-
|
617
|
+
if (this._popper) {
|
618
|
+
this._popper.destroy();
|
664
619
|
|
665
|
-
|
620
|
+
this._popper = null;
|
666
621
|
}
|
667
622
|
};
|
668
623
|
|
669
|
-
|
624
|
+
const hideEvent = EventHandler__default['default'].trigger(this._element, this.constructor.Event.HIDE);
|
670
625
|
|
671
626
|
if (hideEvent.defaultPrevented) {
|
672
627
|
return;
|
@@ -676,11 +631,7 @@
|
|
676
631
|
// empty mouseover listeners we added for iOS support
|
677
632
|
|
678
633
|
if ('ontouchstart' in document.documentElement) {
|
679
|
-
|
680
|
-
|
681
|
-
(_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) {
|
682
|
-
return EventHandler__default['default'].off(element, 'mouseover', noop);
|
683
|
-
});
|
634
|
+
[].concat(...document.body.children).forEach(element => EventHandler__default['default'].off(element, 'mouseover', noop));
|
684
635
|
}
|
685
636
|
|
686
637
|
this._activeTrigger[TRIGGER_CLICK] = false;
|
@@ -688,7 +639,7 @@
|
|
688
639
|
this._activeTrigger[TRIGGER_HOVER] = false;
|
689
640
|
|
690
641
|
if (this.tip.classList.contains(CLASS_NAME_FADE)) {
|
691
|
-
|
642
|
+
const transitionDuration = getTransitionDurationFromElement(tip);
|
692
643
|
EventHandler__default['default'].one(tip, 'transitionend', complete);
|
693
644
|
emulateTransitionEnd(tip, transitionDuration);
|
694
645
|
} else {
|
@@ -696,37 +647,37 @@
|
|
696
647
|
}
|
697
648
|
|
698
649
|
this._hoverState = '';
|
699
|
-
}
|
650
|
+
}
|
700
651
|
|
701
|
-
|
652
|
+
update() {
|
702
653
|
if (this._popper !== null) {
|
703
654
|
this._popper.update();
|
704
655
|
}
|
705
656
|
} // Protected
|
706
|
-
;
|
707
657
|
|
708
|
-
|
658
|
+
|
659
|
+
isWithContent() {
|
709
660
|
return Boolean(this.getTitle());
|
710
|
-
}
|
661
|
+
}
|
711
662
|
|
712
|
-
|
663
|
+
getTipElement() {
|
713
664
|
if (this.tip) {
|
714
665
|
return this.tip;
|
715
666
|
}
|
716
667
|
|
717
|
-
|
668
|
+
const element = document.createElement('div');
|
718
669
|
element.innerHTML = this.config.template;
|
719
670
|
this.tip = element.children[0];
|
720
671
|
return this.tip;
|
721
|
-
}
|
672
|
+
}
|
722
673
|
|
723
|
-
|
724
|
-
|
674
|
+
setContent() {
|
675
|
+
const tip = this.getTipElement();
|
725
676
|
this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle());
|
726
677
|
tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);
|
727
|
-
}
|
678
|
+
}
|
728
679
|
|
729
|
-
|
680
|
+
setElementContent(element, content) {
|
730
681
|
if (element === null) {
|
731
682
|
return;
|
732
683
|
}
|
@@ -758,19 +709,19 @@
|
|
758
709
|
} else {
|
759
710
|
element.textContent = content;
|
760
711
|
}
|
761
|
-
}
|
712
|
+
}
|
762
713
|
|
763
|
-
|
764
|
-
|
714
|
+
getTitle() {
|
715
|
+
let title = this._element.getAttribute('data-bs-original-title');
|
765
716
|
|
766
717
|
if (!title) {
|
767
718
|
title = typeof this.config.title === 'function' ? this.config.title.call(this._element) : this.config.title;
|
768
719
|
}
|
769
720
|
|
770
721
|
return title;
|
771
|
-
}
|
722
|
+
}
|
772
723
|
|
773
|
-
|
724
|
+
updateAttachment(attachment) {
|
774
725
|
if (attachment === 'right') {
|
775
726
|
return 'end';
|
776
727
|
}
|
@@ -781,44 +732,38 @@
|
|
781
732
|
|
782
733
|
return attachment;
|
783
734
|
} // Private
|
784
|
-
;
|
785
735
|
|
786
|
-
|
787
|
-
|
788
|
-
|
736
|
+
|
737
|
+
_initializeOnDelegatedTarget(event, context) {
|
738
|
+
const dataKey = this.constructor.DATA_KEY;
|
739
|
+
context = context || Data__default['default'].get(event.delegateTarget, dataKey);
|
789
740
|
|
790
741
|
if (!context) {
|
791
742
|
context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
|
792
|
-
Data__default['default'].
|
743
|
+
Data__default['default'].set(event.delegateTarget, dataKey, context);
|
793
744
|
}
|
794
745
|
|
795
746
|
return context;
|
796
|
-
}
|
797
|
-
|
798
|
-
_proto._getOffset = function _getOffset() {
|
799
|
-
var _this4 = this;
|
747
|
+
}
|
800
748
|
|
801
|
-
|
749
|
+
_getOffset() {
|
750
|
+
const {
|
751
|
+
offset
|
752
|
+
} = this.config;
|
802
753
|
|
803
754
|
if (typeof offset === 'string') {
|
804
|
-
return offset.split(',').map(
|
805
|
-
return Number.parseInt(val, 10);
|
806
|
-
});
|
755
|
+
return offset.split(',').map(val => Number.parseInt(val, 10));
|
807
756
|
}
|
808
757
|
|
809
758
|
if (typeof offset === 'function') {
|
810
|
-
return
|
811
|
-
return offset(popperData, _this4._element);
|
812
|
-
};
|
759
|
+
return popperData => offset(popperData, this._element);
|
813
760
|
}
|
814
761
|
|
815
762
|
return offset;
|
816
|
-
}
|
817
|
-
|
818
|
-
_proto._getPopperConfig = function _getPopperConfig(attachment) {
|
819
|
-
var _this5 = this;
|
763
|
+
}
|
820
764
|
|
821
|
-
|
765
|
+
_getPopperConfig(attachment) {
|
766
|
+
const defaultBsPopperConfig = {
|
822
767
|
placement: attachment,
|
823
768
|
modifiers: [{
|
824
769
|
name: 'flip',
|
@@ -839,30 +784,30 @@
|
|
839
784
|
}, {
|
840
785
|
name: 'arrow',
|
841
786
|
options: {
|
842
|
-
element:
|
787
|
+
element: `.${this.constructor.NAME}-arrow`
|
843
788
|
}
|
844
789
|
}, {
|
845
790
|
name: 'onChange',
|
846
791
|
enabled: true,
|
847
792
|
phase: 'afterWrite',
|
848
|
-
fn:
|
849
|
-
return _this5._handlePopperPlacementChange(data);
|
850
|
-
}
|
793
|
+
fn: data => this._handlePopperPlacementChange(data)
|
851
794
|
}],
|
852
|
-
onFirstUpdate:
|
795
|
+
onFirstUpdate: data => {
|
853
796
|
if (data.options.placement !== data.placement) {
|
854
|
-
|
797
|
+
this._handlePopperPlacementChange(data);
|
855
798
|
}
|
856
799
|
}
|
857
800
|
};
|
858
|
-
return
|
859
|
-
|
801
|
+
return { ...defaultBsPopperConfig,
|
802
|
+
...(typeof this.config.popperConfig === 'function' ? this.config.popperConfig(defaultBsPopperConfig) : this.config.popperConfig)
|
803
|
+
};
|
804
|
+
}
|
860
805
|
|
861
|
-
|
862
|
-
this.getTipElement().classList.add(CLASS_PREFIX
|
863
|
-
}
|
806
|
+
_addAttachmentClass(attachment) {
|
807
|
+
this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`);
|
808
|
+
}
|
864
809
|
|
865
|
-
|
810
|
+
_getContainer() {
|
866
811
|
if (this.config.container === false) {
|
867
812
|
return document.body;
|
868
813
|
}
|
@@ -872,55 +817,47 @@
|
|
872
817
|
}
|
873
818
|
|
874
819
|
return SelectorEngine__default['default'].findOne(this.config.container);
|
875
|
-
}
|
820
|
+
}
|
876
821
|
|
877
|
-
|
822
|
+
_getAttachment(placement) {
|
878
823
|
return AttachmentMap[placement.toUpperCase()];
|
879
|
-
}
|
880
|
-
|
881
|
-
_proto._setListeners = function _setListeners() {
|
882
|
-
var _this6 = this;
|
824
|
+
}
|
883
825
|
|
884
|
-
|
885
|
-
triggers.
|
826
|
+
_setListeners() {
|
827
|
+
const triggers = this.config.trigger.split(' ');
|
828
|
+
triggers.forEach(trigger => {
|
886
829
|
if (trigger === 'click') {
|
887
|
-
EventHandler__default['default'].on(
|
888
|
-
return _this6.toggle(event);
|
889
|
-
});
|
830
|
+
EventHandler__default['default'].on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event));
|
890
831
|
} else if (trigger !== TRIGGER_MANUAL) {
|
891
|
-
|
892
|
-
|
893
|
-
EventHandler__default['default'].on(
|
894
|
-
|
895
|
-
});
|
896
|
-
EventHandler__default['default'].on(_this6._element, eventOut, _this6.config.selector, function (event) {
|
897
|
-
return _this6._leave(event);
|
898
|
-
});
|
832
|
+
const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;
|
833
|
+
const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;
|
834
|
+
EventHandler__default['default'].on(this._element, eventIn, this.config.selector, event => this._enter(event));
|
835
|
+
EventHandler__default['default'].on(this._element, eventOut, this.config.selector, event => this._leave(event));
|
899
836
|
}
|
900
837
|
});
|
901
838
|
|
902
|
-
this._hideModalHandler =
|
903
|
-
if (
|
904
|
-
|
839
|
+
this._hideModalHandler = () => {
|
840
|
+
if (this._element) {
|
841
|
+
this.hide();
|
905
842
|
}
|
906
843
|
};
|
907
844
|
|
908
|
-
EventHandler__default['default'].on(this._element.closest(
|
845
|
+
EventHandler__default['default'].on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler);
|
909
846
|
|
910
847
|
if (this.config.selector) {
|
911
|
-
this.config =
|
848
|
+
this.config = { ...this.config,
|
912
849
|
trigger: 'manual',
|
913
850
|
selector: ''
|
914
|
-
}
|
851
|
+
};
|
915
852
|
} else {
|
916
853
|
this._fixTitle();
|
917
854
|
}
|
918
|
-
}
|
855
|
+
}
|
919
856
|
|
920
|
-
|
921
|
-
|
857
|
+
_fixTitle() {
|
858
|
+
const title = this._element.getAttribute('title');
|
922
859
|
|
923
|
-
|
860
|
+
const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');
|
924
861
|
|
925
862
|
if (title || originalTitleType !== 'string') {
|
926
863
|
this._element.setAttribute('data-bs-original-title', title || '');
|
@@ -931,9 +868,9 @@
|
|
931
868
|
|
932
869
|
this._element.setAttribute('title', '');
|
933
870
|
}
|
934
|
-
}
|
871
|
+
}
|
935
872
|
|
936
|
-
|
873
|
+
_enter(event, context) {
|
937
874
|
context = this._initializeOnDelegatedTarget(event, context);
|
938
875
|
|
939
876
|
if (event) {
|
@@ -953,18 +890,18 @@
|
|
953
890
|
return;
|
954
891
|
}
|
955
892
|
|
956
|
-
context._timeout = setTimeout(
|
893
|
+
context._timeout = setTimeout(() => {
|
957
894
|
if (context._hoverState === HOVER_STATE_SHOW) {
|
958
895
|
context.show();
|
959
896
|
}
|
960
897
|
}, context.config.delay.show);
|
961
|
-
}
|
898
|
+
}
|
962
899
|
|
963
|
-
|
900
|
+
_leave(event, context) {
|
964
901
|
context = this._initializeOnDelegatedTarget(event, context);
|
965
902
|
|
966
903
|
if (event) {
|
967
|
-
context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =
|
904
|
+
context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
|
968
905
|
}
|
969
906
|
|
970
907
|
if (context._isWithActiveTrigger()) {
|
@@ -979,26 +916,26 @@
|
|
979
916
|
return;
|
980
917
|
}
|
981
918
|
|
982
|
-
context._timeout = setTimeout(
|
919
|
+
context._timeout = setTimeout(() => {
|
983
920
|
if (context._hoverState === HOVER_STATE_OUT) {
|
984
921
|
context.hide();
|
985
922
|
}
|
986
923
|
}, context.config.delay.hide);
|
987
|
-
}
|
924
|
+
}
|
988
925
|
|
989
|
-
|
990
|
-
for (
|
926
|
+
_isWithActiveTrigger() {
|
927
|
+
for (const trigger in this._activeTrigger) {
|
991
928
|
if (this._activeTrigger[trigger]) {
|
992
929
|
return true;
|
993
930
|
}
|
994
931
|
}
|
995
932
|
|
996
933
|
return false;
|
997
|
-
}
|
934
|
+
}
|
998
935
|
|
999
|
-
|
1000
|
-
|
1001
|
-
Object.keys(dataAttributes).forEach(
|
936
|
+
_getConfig(config) {
|
937
|
+
const dataAttributes = Manipulator__default['default'].getDataAttributes(this._element);
|
938
|
+
Object.keys(dataAttributes).forEach(dataAttr => {
|
1002
939
|
if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {
|
1003
940
|
delete dataAttributes[dataAttr];
|
1004
941
|
}
|
@@ -1008,7 +945,10 @@
|
|
1008
945
|
config.container = config.container[0];
|
1009
946
|
}
|
1010
947
|
|
1011
|
-
config =
|
948
|
+
config = { ...this.constructor.Default,
|
949
|
+
...dataAttributes,
|
950
|
+
...(typeof config === 'object' && config ? config : {})
|
951
|
+
};
|
1012
952
|
|
1013
953
|
if (typeof config.delay === 'number') {
|
1014
954
|
config.delay = {
|
@@ -1032,13 +972,13 @@
|
|
1032
972
|
}
|
1033
973
|
|
1034
974
|
return config;
|
1035
|
-
}
|
975
|
+
}
|
1036
976
|
|
1037
|
-
|
1038
|
-
|
977
|
+
_getDelegateConfig() {
|
978
|
+
const config = {};
|
1039
979
|
|
1040
980
|
if (this.config) {
|
1041
|
-
for (
|
981
|
+
for (const key in this.config) {
|
1042
982
|
if (this.constructor.Default[key] !== this.config[key]) {
|
1043
983
|
config[key] = this.config[key];
|
1044
984
|
}
|
@@ -1046,23 +986,21 @@
|
|
1046
986
|
}
|
1047
987
|
|
1048
988
|
return config;
|
1049
|
-
}
|
989
|
+
}
|
1050
990
|
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
991
|
+
_cleanTipClass() {
|
992
|
+
const tip = this.getTipElement();
|
993
|
+
const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
|
1054
994
|
|
1055
995
|
if (tabClass !== null && tabClass.length > 0) {
|
1056
|
-
tabClass.map(
|
1057
|
-
return token.trim();
|
1058
|
-
}).forEach(function (tClass) {
|
1059
|
-
return tip.classList.remove(tClass);
|
1060
|
-
});
|
996
|
+
tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
|
1061
997
|
}
|
1062
|
-
}
|
998
|
+
}
|
1063
999
|
|
1064
|
-
|
1065
|
-
|
1000
|
+
_handlePopperPlacementChange(popperData) {
|
1001
|
+
const {
|
1002
|
+
state
|
1003
|
+
} = popperData;
|
1066
1004
|
|
1067
1005
|
if (!state) {
|
1068
1006
|
return;
|
@@ -1074,13 +1012,13 @@
|
|
1074
1012
|
|
1075
1013
|
this._addAttachmentClass(this._getAttachment(state.placement));
|
1076
1014
|
} // Static
|
1077
|
-
;
|
1078
1015
|
|
1079
|
-
|
1016
|
+
|
1017
|
+
static jQueryInterface(config) {
|
1080
1018
|
return this.each(function () {
|
1081
|
-
|
1019
|
+
let data = Data__default['default'].get(this, DATA_KEY);
|
1082
1020
|
|
1083
|
-
|
1021
|
+
const _config = typeof config === 'object' && config;
|
1084
1022
|
|
1085
1023
|
if (!data && /dispose|hide/.test(config)) {
|
1086
1024
|
return;
|
@@ -1092,48 +1030,15 @@
|
|
1092
1030
|
|
1093
1031
|
if (typeof config === 'string') {
|
1094
1032
|
if (typeof data[config] === 'undefined') {
|
1095
|
-
throw new TypeError(
|
1033
|
+
throw new TypeError(`No method named "${config}"`);
|
1096
1034
|
}
|
1097
1035
|
|
1098
1036
|
data[config]();
|
1099
1037
|
}
|
1100
1038
|
});
|
1101
|
-
}
|
1102
|
-
|
1103
|
-
_createClass(Tooltip, null, [{
|
1104
|
-
key: "Default",
|
1105
|
-
get: function get() {
|
1106
|
-
return Default;
|
1107
|
-
}
|
1108
|
-
}, {
|
1109
|
-
key: "NAME",
|
1110
|
-
get: function get() {
|
1111
|
-
return NAME;
|
1112
|
-
}
|
1113
|
-
}, {
|
1114
|
-
key: "DATA_KEY",
|
1115
|
-
get: function get() {
|
1116
|
-
return DATA_KEY;
|
1117
|
-
}
|
1118
|
-
}, {
|
1119
|
-
key: "Event",
|
1120
|
-
get: function get() {
|
1121
|
-
return Event$1;
|
1122
|
-
}
|
1123
|
-
}, {
|
1124
|
-
key: "EVENT_KEY",
|
1125
|
-
get: function get() {
|
1126
|
-
return EVENT_KEY;
|
1127
|
-
}
|
1128
|
-
}, {
|
1129
|
-
key: "DefaultType",
|
1130
|
-
get: function get() {
|
1131
|
-
return DefaultType;
|
1132
|
-
}
|
1133
|
-
}]);
|
1039
|
+
}
|
1134
1040
|
|
1135
|
-
|
1136
|
-
}(BaseComponent__default['default']);
|
1041
|
+
}
|
1137
1042
|
/**
|
1138
1043
|
* ------------------------------------------------------------------------
|
1139
1044
|
* jQuery
|