bootstrap 5.2.3 → 5.3.0.alpha3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap/alert.js +21 -32
  4. data/assets/javascripts/bootstrap/base-component.js +21 -38
  5. data/assets/javascripts/bootstrap/button.js +18 -22
  6. data/assets/javascripts/bootstrap/carousel.js +51 -135
  7. data/assets/javascripts/bootstrap/collapse.js +39 -102
  8. data/assets/javascripts/bootstrap/dom/data.js +8 -12
  9. data/assets/javascripts/bootstrap/dom/event-handler.js +18 -66
  10. data/assets/javascripts/bootstrap/dom/manipulator.js +4 -17
  11. data/assets/javascripts/bootstrap/dom/selector-engine.js +41 -24
  12. data/assets/javascripts/bootstrap/dropdown.js +73 -145
  13. data/assets/javascripts/bootstrap/modal.js +52 -133
  14. data/assets/javascripts/bootstrap/offcanvas.js +49 -102
  15. data/assets/javascripts/bootstrap/popover.js +22 -29
  16. data/assets/javascripts/bootstrap/scrollspy.js +51 -89
  17. data/assets/javascripts/bootstrap/tab.js +51 -109
  18. data/assets/javascripts/bootstrap/toast.js +30 -73
  19. data/assets/javascripts/bootstrap/tooltip.js +74 -177
  20. data/assets/javascripts/bootstrap/util/backdrop.js +27 -54
  21. data/assets/javascripts/bootstrap/util/component-functions.js +13 -19
  22. data/assets/javascripts/bootstrap/util/config.js +14 -27
  23. data/assets/javascripts/bootstrap/util/focustrap.js +19 -36
  24. data/assets/javascripts/bootstrap/util/index.js +42 -111
  25. data/assets/javascripts/bootstrap/util/sanitizer.js +13 -19
  26. data/assets/javascripts/bootstrap/util/scrollbar.js +23 -50
  27. data/assets/javascripts/bootstrap/util/swipe.js +26 -48
  28. data/assets/javascripts/bootstrap/util/template-factory.js +24 -52
  29. data/assets/javascripts/bootstrap-sprockets.js +1 -1
  30. data/assets/javascripts/bootstrap.js +626 -1406
  31. data/assets/javascripts/bootstrap.min.js +3 -3
  32. data/assets/stylesheets/_bootstrap-grid.scss +1 -3
  33. data/assets/stylesheets/_bootstrap-reboot.scss +1 -0
  34. data/assets/stylesheets/_bootstrap.scss +1 -0
  35. data/assets/stylesheets/bootstrap/_accordion.scss +9 -0
  36. data/assets/stylesheets/bootstrap/_alert.scss +8 -11
  37. data/assets/stylesheets/bootstrap/_button-group.scss +2 -2
  38. data/assets/stylesheets/bootstrap/_buttons.scss +3 -3
  39. data/assets/stylesheets/bootstrap/_card.scss +5 -0
  40. data/assets/stylesheets/bootstrap/_carousel.scss +20 -2
  41. data/assets/stylesheets/bootstrap/_close.scss +32 -9
  42. data/assets/stylesheets/bootstrap/_dropdown.scss +1 -0
  43. data/assets/stylesheets/bootstrap/_functions.scss +1 -1
  44. data/assets/stylesheets/bootstrap/_grid.scss +6 -0
  45. data/assets/stylesheets/bootstrap/_helpers.scss +2 -0
  46. data/assets/stylesheets/bootstrap/_list-group.scss +12 -7
  47. data/assets/stylesheets/bootstrap/_maps.scss +120 -0
  48. data/assets/stylesheets/bootstrap/_mixins.scss +1 -2
  49. data/assets/stylesheets/bootstrap/_nav.scss +40 -3
  50. data/assets/stylesheets/bootstrap/_navbar.scss +13 -3
  51. data/assets/stylesheets/bootstrap/_offcanvas.scss +4 -2
  52. data/assets/stylesheets/bootstrap/_pagination.scss +1 -1
  53. data/assets/stylesheets/bootstrap/_progress.scss +10 -1
  54. data/assets/stylesheets/bootstrap/_reboot.scss +3 -3
  55. data/assets/stylesheets/bootstrap/_root.scss +125 -10
  56. data/assets/stylesheets/bootstrap/_tables.scss +1 -1
  57. data/assets/stylesheets/bootstrap/_tooltip.scss +4 -5
  58. data/assets/stylesheets/bootstrap/_utilities.scss +172 -13
  59. data/assets/stylesheets/bootstrap/_variables-dark.scss +85 -0
  60. data/assets/stylesheets/bootstrap/_variables.scss +260 -151
  61. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -0
  62. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +21 -3
  63. data/assets/stylesheets/bootstrap/forms/_form-check.scss +24 -11
  64. data/assets/stylesheets/bootstrap/forms/_form-control.scss +23 -3
  65. data/assets/stylesheets/bootstrap/forms/_form-select.scss +11 -2
  66. data/assets/stylesheets/bootstrap/forms/_input-group.scss +1 -1
  67. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +22 -2
  68. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  69. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  70. data/assets/stylesheets/bootstrap/mixins/_alert.scss +4 -1
  71. data/assets/stylesheets/bootstrap/mixins/_banner.scss +2 -4
  72. data/assets/stylesheets/bootstrap/mixins/_caret.scss +30 -25
  73. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  74. data/assets/stylesheets/bootstrap/mixins/_forms.scss +8 -7
  75. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
  76. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +1 -1
  77. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +5 -1
  78. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +23 -29
  79. data/bootstrap.gemspec +1 -1
  80. data/lib/bootstrap/version.rb +2 -2
  81. data/tasks/updater/js.rb +1 -1
  82. data/tasks/updater/scss.rb +1 -1
  83. metadata +10 -6
@@ -1,18 +1,15 @@
1
1
  /*!
2
- * Bootstrap tooltip.js v5.2.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap tooltip.js v5.3.0-alpha3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2023 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('./util/index'), require('./util/sanitizer'), require('./dom/event-handler'), require('./dom/manipulator'), require('./base-component'), require('./util/template-factory')) :
8
- typeof define === 'function' && define.amd ? define(['@popperjs/core', './util/index', './util/sanitizer', './dom/event-handler', './dom/manipulator', './base-component', './util/template-factory'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global["@popperjs/core"], global.Index, global.Sanitizer, global.EventHandler, global.Manipulator, global.BaseComponent, global.TemplateFactory));
10
- })(this, (function (Popper, index, sanitizer, EventHandler, Manipulator, BaseComponent, TemplateFactory) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core'), require('./base-component.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./util/index.js'), require('./util/sanitizer.js'), require('./util/template-factory.js')) :
8
+ typeof define === 'function' && define.amd ? define(['@popperjs/core', './base-component', './dom/event-handler', './dom/manipulator', './util/index', './util/sanitizer', './util/template-factory'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tooltip = factory(global["@popperjs/core"], global.BaseComponent, global.EventHandler, global.Manipulator, global.Index, global.Sanitizer, global.TemplateFactory));
10
+ })(this, (function (Popper, BaseComponent, EventHandler, Manipulator, index_js, sanitizer_js, TemplateFactory) { 'use strict';
11
11
 
12
- const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
13
-
14
- function _interopNamespace(e) {
15
- if (e && e.__esModule) return e;
12
+ function _interopNamespaceDefault(e) {
16
13
  const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
17
14
  if (e) {
18
15
  for (const k in e) {
@@ -29,18 +26,15 @@
29
26
  return Object.freeze(n);
30
27
  }
31
28
 
32
- const Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);
33
- const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
34
- const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
35
- const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
36
- const TemplateFactory__default = /*#__PURE__*/_interopDefaultLegacy(TemplateFactory);
29
+ const Popper__namespace = /*#__PURE__*/_interopNamespaceDefault(Popper);
37
30
 
38
31
  /**
39
32
  * --------------------------------------------------------------------------
40
- * Bootstrap (v5.2.3): tooltip.js
33
+ * Bootstrap tooltip.js
41
34
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
42
35
  * --------------------------------------------------------------------------
43
36
  */
37
+
44
38
  /**
45
39
  * Constants
46
40
  */
@@ -70,12 +64,12 @@
70
64
  const AttachmentMap = {
71
65
  AUTO: 'auto',
72
66
  TOP: 'top',
73
- RIGHT: index.isRTL() ? 'left' : 'right',
67
+ RIGHT: index_js.isRTL() ? 'left' : 'right',
74
68
  BOTTOM: 'bottom',
75
- LEFT: index.isRTL() ? 'right' : 'left'
69
+ LEFT: index_js.isRTL() ? 'right' : 'left'
76
70
  };
77
71
  const Default = {
78
- allowList: sanitizer.DefaultAllowlist,
72
+ allowList: sanitizer_js.DefaultAllowlist,
79
73
  animation: true,
80
74
  boundary: 'clippingParents',
81
75
  container: false,
@@ -83,7 +77,7 @@
83
77
  delay: 0,
84
78
  fallbackPlacements: ['top', 'right', 'bottom', 'left'],
85
79
  html: false,
86
- offset: [0, 0],
80
+ offset: [0, 6],
87
81
  placement: 'top',
88
82
  popperConfig: null,
89
83
  sanitize: true,
@@ -112,171 +106,140 @@
112
106
  title: '(string|element|function)',
113
107
  trigger: 'string'
114
108
  };
109
+
115
110
  /**
116
111
  * Class definition
117
112
  */
118
113
 
119
- class Tooltip extends BaseComponent__default.default {
114
+ class Tooltip extends BaseComponent {
120
115
  constructor(element, config) {
121
116
  if (typeof Popper__namespace === 'undefined') {
122
117
  throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
123
118
  }
119
+ super(element, config);
124
120
 
125
- super(element, config); // Private
126
-
121
+ // Private
127
122
  this._isEnabled = true;
128
123
  this._timeout = 0;
129
124
  this._isHovered = null;
130
125
  this._activeTrigger = {};
131
126
  this._popper = null;
132
127
  this._templateFactory = null;
133
- this._newContent = null; // Protected
128
+ this._newContent = null;
134
129
 
130
+ // Protected
135
131
  this.tip = null;
136
-
137
132
  this._setListeners();
138
-
139
133
  if (!this._config.selector) {
140
134
  this._fixTitle();
141
135
  }
142
- } // Getters
143
-
136
+ }
144
137
 
138
+ // Getters
145
139
  static get Default() {
146
140
  return Default;
147
141
  }
148
-
149
142
  static get DefaultType() {
150
143
  return DefaultType;
151
144
  }
152
-
153
145
  static get NAME() {
154
146
  return NAME;
155
- } // Public
156
-
147
+ }
157
148
 
149
+ // Public
158
150
  enable() {
159
151
  this._isEnabled = true;
160
152
  }
161
-
162
153
  disable() {
163
154
  this._isEnabled = false;
164
155
  }
165
-
166
156
  toggleEnabled() {
167
157
  this._isEnabled = !this._isEnabled;
168
158
  }
169
-
170
159
  toggle() {
171
160
  if (!this._isEnabled) {
172
161
  return;
173
162
  }
174
-
175
163
  this._activeTrigger.click = !this._activeTrigger.click;
176
-
177
164
  if (this._isShown()) {
178
165
  this._leave();
179
-
180
166
  return;
181
167
  }
182
-
183
168
  this._enter();
184
169
  }
185
-
186
170
  dispose() {
187
171
  clearTimeout(this._timeout);
188
- EventHandler__default.default.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
189
-
172
+ EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
190
173
  if (this._element.getAttribute('data-bs-original-title')) {
191
174
  this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
192
175
  }
193
-
194
176
  this._disposePopper();
195
-
196
177
  super.dispose();
197
178
  }
198
-
199
179
  show() {
200
180
  if (this._element.style.display === 'none') {
201
181
  throw new Error('Please use show on visible elements');
202
182
  }
203
-
204
183
  if (!(this._isWithContent() && this._isEnabled)) {
205
184
  return;
206
185
  }
207
-
208
- const showEvent = EventHandler__default.default.trigger(this._element, this.constructor.eventName(EVENT_SHOW));
209
- const shadowRoot = index.findShadowRoot(this._element);
210
-
186
+ const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW));
187
+ const shadowRoot = index_js.findShadowRoot(this._element);
211
188
  const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
212
-
213
189
  if (showEvent.defaultPrevented || !isInTheDom) {
214
190
  return;
215
- } // todo v6 remove this OR make it optional
216
-
191
+ }
217
192
 
193
+ // TODO: v6 remove this or make it optional
218
194
  this._disposePopper();
219
-
220
195
  const tip = this._getTipElement();
221
-
222
196
  this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
223
-
224
197
  const {
225
198
  container
226
199
  } = this._config;
227
-
228
200
  if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
229
201
  container.append(tip);
230
- EventHandler__default.default.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
202
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
231
203
  }
232
-
233
204
  this._popper = this._createPopper(tip);
234
- tip.classList.add(CLASS_NAME_SHOW); // If this is a touch-enabled device we add extra
205
+ tip.classList.add(CLASS_NAME_SHOW);
206
+
207
+ // If this is a touch-enabled device we add extra
235
208
  // empty mouseover listeners to the body's immediate children;
236
209
  // only needed because of broken event delegation on iOS
237
210
  // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
238
-
239
211
  if ('ontouchstart' in document.documentElement) {
240
212
  for (const element of [].concat(...document.body.children)) {
241
- EventHandler__default.default.on(element, 'mouseover', index.noop);
213
+ EventHandler.on(element, 'mouseover', index_js.noop);
242
214
  }
243
215
  }
244
-
245
216
  const complete = () => {
246
- EventHandler__default.default.trigger(this._element, this.constructor.eventName(EVENT_SHOWN));
247
-
217
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN));
248
218
  if (this._isHovered === false) {
249
219
  this._leave();
250
220
  }
251
-
252
221
  this._isHovered = false;
253
222
  };
254
-
255
223
  this._queueCallback(complete, this.tip, this._isAnimated());
256
224
  }
257
-
258
225
  hide() {
259
226
  if (!this._isShown()) {
260
227
  return;
261
228
  }
262
-
263
- const hideEvent = EventHandler__default.default.trigger(this._element, this.constructor.eventName(EVENT_HIDE));
264
-
229
+ const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE));
265
230
  if (hideEvent.defaultPrevented) {
266
231
  return;
267
232
  }
268
-
269
233
  const tip = this._getTipElement();
234
+ tip.classList.remove(CLASS_NAME_SHOW);
270
235
 
271
- tip.classList.remove(CLASS_NAME_SHOW); // If this is a touch-enabled device we remove the extra
236
+ // If this is a touch-enabled device we remove the extra
272
237
  // empty mouseover listeners we added for iOS support
273
-
274
238
  if ('ontouchstart' in document.documentElement) {
275
239
  for (const element of [].concat(...document.body.children)) {
276
- EventHandler__default.default.off(element, 'mouseover', index.noop);
240
+ EventHandler.off(element, 'mouseover', index_js.noop);
277
241
  }
278
242
  }
279
-
280
243
  this._activeTrigger[TRIGGER_CLICK] = false;
281
244
  this._activeTrigger[TRIGGER_FOCUS] = false;
282
245
  this._activeTrigger[TRIGGER_HOVER] = false;
@@ -286,133 +249,107 @@
286
249
  if (this._isWithActiveTrigger()) {
287
250
  return;
288
251
  }
289
-
290
252
  if (!this._isHovered) {
291
253
  this._disposePopper();
292
254
  }
293
-
294
255
  this._element.removeAttribute('aria-describedby');
295
-
296
- EventHandler__default.default.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN));
256
+ EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN));
297
257
  };
298
-
299
258
  this._queueCallback(complete, this.tip, this._isAnimated());
300
259
  }
301
-
302
260
  update() {
303
261
  if (this._popper) {
304
262
  this._popper.update();
305
263
  }
306
- } // Protected
307
-
264
+ }
308
265
 
266
+ // Protected
309
267
  _isWithContent() {
310
268
  return Boolean(this._getTitle());
311
269
  }
312
-
313
270
  _getTipElement() {
314
271
  if (!this.tip) {
315
272
  this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
316
273
  }
317
-
318
274
  return this.tip;
319
275
  }
320
-
321
276
  _createTipElement(content) {
322
- const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6
323
-
277
+ const tip = this._getTemplateFactory(content).toHtml();
324
278
 
279
+ // TODO: remove this check in v6
325
280
  if (!tip) {
326
281
  return null;
327
282
  }
328
-
329
- tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW); // todo: on v6 the following can be achieved with CSS only
330
-
283
+ tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);
284
+ // TODO: v6 the following can be achieved with CSS only
331
285
  tip.classList.add(`bs-${this.constructor.NAME}-auto`);
332
- const tipId = index.getUID(this.constructor.NAME).toString();
286
+ const tipId = index_js.getUID(this.constructor.NAME).toString();
333
287
  tip.setAttribute('id', tipId);
334
-
335
288
  if (this._isAnimated()) {
336
289
  tip.classList.add(CLASS_NAME_FADE);
337
290
  }
338
-
339
291
  return tip;
340
292
  }
341
-
342
293
  setContent(content) {
343
294
  this._newContent = content;
344
-
345
295
  if (this._isShown()) {
346
296
  this._disposePopper();
347
-
348
297
  this.show();
349
298
  }
350
299
  }
351
-
352
300
  _getTemplateFactory(content) {
353
301
  if (this._templateFactory) {
354
302
  this._templateFactory.changeContent(content);
355
303
  } else {
356
- this._templateFactory = new TemplateFactory__default.default({ ...this._config,
304
+ this._templateFactory = new TemplateFactory({
305
+ ...this._config,
357
306
  // the `content` var has to be after `this._config`
358
307
  // to override config.content in case of popover
359
308
  content,
360
309
  extraClass: this._resolvePossibleFunction(this._config.customClass)
361
310
  });
362
311
  }
363
-
364
312
  return this._templateFactory;
365
313
  }
366
-
367
314
  _getContentForTemplate() {
368
315
  return {
369
316
  [SELECTOR_TOOLTIP_INNER]: this._getTitle()
370
317
  };
371
318
  }
372
-
373
319
  _getTitle() {
374
320
  return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');
375
- } // Private
376
-
321
+ }
377
322
 
323
+ // Private
378
324
  _initializeOnDelegatedTarget(event) {
379
325
  return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
380
326
  }
381
-
382
327
  _isAnimated() {
383
328
  return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE);
384
329
  }
385
-
386
330
  _isShown() {
387
331
  return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW);
388
332
  }
389
-
390
333
  _createPopper(tip) {
391
- const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
334
+ const placement = index_js.execute(this._config.placement, [this, tip, this._element]);
392
335
  const attachment = AttachmentMap[placement.toUpperCase()];
393
336
  return Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));
394
337
  }
395
-
396
338
  _getOffset() {
397
339
  const {
398
340
  offset
399
341
  } = this._config;
400
-
401
342
  if (typeof offset === 'string') {
402
343
  return offset.split(',').map(value => Number.parseInt(value, 10));
403
344
  }
404
-
405
345
  if (typeof offset === 'function') {
406
346
  return popperData => offset(popperData, this._element);
407
347
  }
408
-
409
348
  return offset;
410
349
  }
411
-
412
350
  _resolvePossibleFunction(arg) {
413
- return typeof arg === 'function' ? arg.call(this._element) : arg;
351
+ return index_js.execute(arg, [this._element]);
414
352
  }
415
-
416
353
  _getPopperConfig(attachment) {
417
354
  const defaultBsPopperConfig = {
418
355
  placement: attachment,
@@ -447,200 +384,160 @@
447
384
  }
448
385
  }]
449
386
  };
450
- return { ...defaultBsPopperConfig,
451
- ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
387
+ return {
388
+ ...defaultBsPopperConfig,
389
+ ...index_js.execute(this._config.popperConfig, [defaultBsPopperConfig])
452
390
  };
453
391
  }
454
-
455
392
  _setListeners() {
456
393
  const triggers = this._config.trigger.split(' ');
457
-
458
394
  for (const trigger of triggers) {
459
395
  if (trigger === 'click') {
460
- EventHandler__default.default.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {
396
+ EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {
461
397
  const context = this._initializeOnDelegatedTarget(event);
462
-
463
398
  context.toggle();
464
399
  });
465
400
  } else if (trigger !== TRIGGER_MANUAL) {
466
401
  const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN);
467
402
  const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT);
468
- EventHandler__default.default.on(this._element, eventIn, this._config.selector, event => {
403
+ EventHandler.on(this._element, eventIn, this._config.selector, event => {
469
404
  const context = this._initializeOnDelegatedTarget(event);
470
-
471
405
  context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
472
-
473
406
  context._enter();
474
407
  });
475
- EventHandler__default.default.on(this._element, eventOut, this._config.selector, event => {
408
+ EventHandler.on(this._element, eventOut, this._config.selector, event => {
476
409
  const context = this._initializeOnDelegatedTarget(event);
477
-
478
410
  context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
479
-
480
411
  context._leave();
481
412
  });
482
413
  }
483
414
  }
484
-
485
415
  this._hideModalHandler = () => {
486
416
  if (this._element) {
487
417
  this.hide();
488
418
  }
489
419
  };
490
-
491
- EventHandler__default.default.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
420
+ EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
492
421
  }
493
-
494
422
  _fixTitle() {
495
423
  const title = this._element.getAttribute('title');
496
-
497
424
  if (!title) {
498
425
  return;
499
426
  }
500
-
501
427
  if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
502
428
  this._element.setAttribute('aria-label', title);
503
429
  }
504
-
505
430
  this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
506
-
507
-
508
431
  this._element.removeAttribute('title');
509
432
  }
510
-
511
433
  _enter() {
512
434
  if (this._isShown() || this._isHovered) {
513
435
  this._isHovered = true;
514
436
  return;
515
437
  }
516
-
517
438
  this._isHovered = true;
518
-
519
439
  this._setTimeout(() => {
520
440
  if (this._isHovered) {
521
441
  this.show();
522
442
  }
523
443
  }, this._config.delay.show);
524
444
  }
525
-
526
445
  _leave() {
527
446
  if (this._isWithActiveTrigger()) {
528
447
  return;
529
448
  }
530
-
531
449
  this._isHovered = false;
532
-
533
450
  this._setTimeout(() => {
534
451
  if (!this._isHovered) {
535
452
  this.hide();
536
453
  }
537
454
  }, this._config.delay.hide);
538
455
  }
539
-
540
456
  _setTimeout(handler, timeout) {
541
457
  clearTimeout(this._timeout);
542
458
  this._timeout = setTimeout(handler, timeout);
543
459
  }
544
-
545
460
  _isWithActiveTrigger() {
546
461
  return Object.values(this._activeTrigger).includes(true);
547
462
  }
548
-
549
463
  _getConfig(config) {
550
- const dataAttributes = Manipulator__default.default.getDataAttributes(this._element);
551
-
464
+ const dataAttributes = Manipulator.getDataAttributes(this._element);
552
465
  for (const dataAttribute of Object.keys(dataAttributes)) {
553
466
  if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
554
467
  delete dataAttributes[dataAttribute];
555
468
  }
556
469
  }
557
-
558
- config = { ...dataAttributes,
470
+ config = {
471
+ ...dataAttributes,
559
472
  ...(typeof config === 'object' && config ? config : {})
560
473
  };
561
474
  config = this._mergeConfigObj(config);
562
475
  config = this._configAfterMerge(config);
563
-
564
476
  this._typeCheckConfig(config);
565
-
566
477
  return config;
567
478
  }
568
-
569
479
  _configAfterMerge(config) {
570
- config.container = config.container === false ? document.body : index.getElement(config.container);
571
-
480
+ config.container = config.container === false ? document.body : index_js.getElement(config.container);
572
481
  if (typeof config.delay === 'number') {
573
482
  config.delay = {
574
483
  show: config.delay,
575
484
  hide: config.delay
576
485
  };
577
486
  }
578
-
579
487
  if (typeof config.title === 'number') {
580
488
  config.title = config.title.toString();
581
489
  }
582
-
583
490
  if (typeof config.content === 'number') {
584
491
  config.content = config.content.toString();
585
492
  }
586
-
587
493
  return config;
588
494
  }
589
-
590
495
  _getDelegateConfig() {
591
496
  const config = {};
592
-
593
- for (const key in this._config) {
594
- if (this.constructor.Default[key] !== this._config[key]) {
595
- config[key] = this._config[key];
497
+ for (const [key, value] of Object.entries(this._config)) {
498
+ if (this.constructor.Default[key] !== value) {
499
+ config[key] = value;
596
500
  }
597
501
  }
598
-
599
502
  config.selector = false;
600
- config.trigger = 'manual'; // In the future can be replaced with:
503
+ config.trigger = 'manual';
504
+
505
+ // In the future can be replaced with:
601
506
  // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
602
507
  // `Object.fromEntries(keysWithDifferentValues)`
603
-
604
508
  return config;
605
509
  }
606
-
607
510
  _disposePopper() {
608
511
  if (this._popper) {
609
512
  this._popper.destroy();
610
-
611
513
  this._popper = null;
612
514
  }
613
-
614
515
  if (this.tip) {
615
516
  this.tip.remove();
616
517
  this.tip = null;
617
518
  }
618
- } // Static
619
-
519
+ }
620
520
 
521
+ // Static
621
522
  static jQueryInterface(config) {
622
523
  return this.each(function () {
623
524
  const data = Tooltip.getOrCreateInstance(this, config);
624
-
625
525
  if (typeof config !== 'string') {
626
526
  return;
627
527
  }
628
-
629
528
  if (typeof data[config] === 'undefined') {
630
529
  throw new TypeError(`No method named "${config}"`);
631
530
  }
632
-
633
531
  data[config]();
634
532
  });
635
533
  }
636
-
637
534
  }
535
+
638
536
  /**
639
537
  * jQuery
640
538
  */
641
539
 
642
-
643
- index.defineJQueryPlugin(Tooltip);
540
+ index_js.defineJQueryPlugin(Tooltip);
644
541
 
645
542
  return Tooltip;
646
543