bootstrap 5.0.1 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/assets/javascripts/bootstrap-sprockets.js +7 -7
- data/assets/javascripts/bootstrap.js +332 -311
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +18 -17
- data/assets/javascripts/bootstrap/base-component.js +34 -25
- data/assets/javascripts/bootstrap/button.js +18 -19
- data/assets/javascripts/bootstrap/carousel.js +67 -52
- data/assets/javascripts/bootstrap/collapse.js +15 -6
- data/assets/javascripts/bootstrap/dom/data.js +2 -2
- data/assets/javascripts/bootstrap/dom/event-handler.js +2 -2
- 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 +61 -44
- data/assets/javascripts/bootstrap/modal.js +171 -108
- data/assets/javascripts/bootstrap/offcanvas.js +144 -95
- data/assets/javascripts/bootstrap/popover.js +35 -20
- data/assets/javascripts/bootstrap/scrollspy.js +14 -5
- data/assets/javascripts/bootstrap/tab.js +18 -10
- data/assets/javascripts/bootstrap/toast.js +17 -15
- data/assets/javascripts/bootstrap/tooltip.js +20 -21
- 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/_card.scss +5 -5
- data/assets/stylesheets/bootstrap/_carousel.scss +2 -2
- data/assets/stylesheets/bootstrap/_dropdown.scss +4 -4
- data/assets/stylesheets/bootstrap/_functions.scss +61 -3
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_modal.scss +4 -4
- data/assets/stylesheets/bootstrap/_offcanvas.scss +4 -2
- data/assets/stylesheets/bootstrap/_popover.scss +10 -10
- data/assets/stylesheets/bootstrap/_tables.scss +1 -1
- data/assets/stylesheets/bootstrap/_toasts.scss +1 -1
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
- data/assets/stylesheets/bootstrap/_variables.scss +22 -18
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +3 -1
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +3 -0
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +16 -9
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +55 -13
- data/lib/bootstrap/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0314dcfea7c5fef8beb89c89aae1079993ed58c6509eb6325a7b00bd25bac45e
|
4
|
+
data.tar.gz: 1cf536b8bb87f45060505977be1c795d1159b72bce299caeb8652a2f9c122e21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91e3199ea081cf8a4e515f637a20f155ae77ab602e821220e35218cd52af51563adc616646c099aeda3ee88ee1365d12bb12865963f6fae5b7481af449d3351d
|
7
|
+
data.tar.gz: 56fbbc51f5db1cad7c06e785f7b8868010c7db2bdaa6d9278a012b28b15cf7cbbe7c5fa3339f49df40e751032e956f4a00d57558caff3f626d9f1ab4236122a4
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Bootstrap Ruby Gem [](https://travis-ci.org/twbs/bootstrap-rubygem) [](https://rubygems.org/gems/bootstrap)
|
2
2
|
|
3
|
-
[Bootstrap
|
3
|
+
[Bootstrap 5][bootstrap-home] ruby gem for Ruby on Rails (*Sprockets*) and Hanami (formerly Lotus).
|
4
4
|
|
5
5
|
For Sass versions of Bootstrap 3 and 2 see [bootstrap-sass](https://github.com/twbs/bootstrap-sass) instead.
|
6
6
|
|
@@ -20,7 +20,7 @@ Please see the appropriate guide for your environment of choice:
|
|
20
20
|
Add `bootstrap` to your Gemfile:
|
21
21
|
|
22
22
|
```ruby
|
23
|
-
gem 'bootstrap', '~> 5.0.
|
23
|
+
gem 'bootstrap', '~> 5.0.2'
|
24
24
|
```
|
25
25
|
|
26
26
|
Ensure that `sprockets-rails` is at least v2.3.2.
|
@@ -4,16 +4,16 @@
|
|
4
4
|
//= require ./bootstrap/base-component
|
5
5
|
//= require ./bootstrap/dom/manipulator
|
6
6
|
//= require ./bootstrap/dom/selector-engine
|
7
|
-
//= require ./bootstrap/
|
8
|
-
//= require ./bootstrap/scrollspy
|
9
|
-
//= require ./bootstrap/alert
|
7
|
+
//= require ./bootstrap/carousel
|
10
8
|
//= require ./bootstrap/collapse
|
9
|
+
//= require ./bootstrap/button
|
10
|
+
//= require ./bootstrap/tab
|
11
11
|
//= require ./bootstrap/toast
|
12
12
|
//= require ./bootstrap/tooltip
|
13
|
-
//= require ./bootstrap/offcanvas
|
14
13
|
//= require ./bootstrap/popover
|
15
|
-
//= require ./bootstrap/
|
14
|
+
//= require ./bootstrap/alert
|
15
|
+
//= require ./bootstrap/offcanvas
|
16
|
+
//= require ./bootstrap/scrollspy
|
16
17
|
//= require ./bootstrap/modal
|
17
|
-
//= require ./bootstrap/
|
18
|
-
//= require ./bootstrap/carousel
|
18
|
+
//= require ./bootstrap/dropdown
|
19
19
|
//= require ./bootstrap-global-this-undefine
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap v5.0.
|
2
|
+
* Bootstrap v5.0.2 (https://getbootstrap.com/)
|
3
3
|
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
5
5
|
*/
|
@@ -33,7 +33,7 @@
|
|
33
33
|
|
34
34
|
/**
|
35
35
|
* --------------------------------------------------------------------------
|
36
|
-
* Bootstrap (v5.0.
|
36
|
+
* Bootstrap (v5.0.2): dom/selector-engine.js
|
37
37
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
38
38
|
* --------------------------------------------------------------------------
|
39
39
|
*/
|
@@ -104,7 +104,7 @@
|
|
104
104
|
|
105
105
|
/**
|
106
106
|
* --------------------------------------------------------------------------
|
107
|
-
* Bootstrap (v5.0.
|
107
|
+
* Bootstrap (v5.0.2): util/index.js
|
108
108
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
109
109
|
* --------------------------------------------------------------------------
|
110
110
|
*/
|
@@ -226,24 +226,6 @@
|
|
226
226
|
return null;
|
227
227
|
};
|
228
228
|
|
229
|
-
const emulateTransitionEnd = (element, duration) => {
|
230
|
-
let called = false;
|
231
|
-
const durationPadding = 5;
|
232
|
-
const emulatedDuration = duration + durationPadding;
|
233
|
-
|
234
|
-
function listener() {
|
235
|
-
called = true;
|
236
|
-
element.removeEventListener(TRANSITION_END, listener);
|
237
|
-
}
|
238
|
-
|
239
|
-
element.addEventListener(TRANSITION_END, listener);
|
240
|
-
setTimeout(() => {
|
241
|
-
if (!called) {
|
242
|
-
triggerTransitionEnd(element);
|
243
|
-
}
|
244
|
-
}, emulatedDuration);
|
245
|
-
};
|
246
|
-
|
247
229
|
const typeCheckConfig = (componentName, config, configTypes) => {
|
248
230
|
Object.keys(configTypes).forEach(property => {
|
249
231
|
const expectedTypes = configTypes[property];
|
@@ -257,17 +239,11 @@
|
|
257
239
|
};
|
258
240
|
|
259
241
|
const isVisible = element => {
|
260
|
-
if (!element) {
|
242
|
+
if (!isElement(element) || element.getClientRects().length === 0) {
|
261
243
|
return false;
|
262
244
|
}
|
263
245
|
|
264
|
-
|
265
|
-
const elementStyle = getComputedStyle(element);
|
266
|
-
const parentNodeStyle = getComputedStyle(element.parentNode);
|
267
|
-
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
|
268
|
-
}
|
269
|
-
|
270
|
-
return false;
|
246
|
+
return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
|
271
247
|
};
|
272
248
|
|
273
249
|
const isDisabled = element => {
|
@@ -325,9 +301,18 @@
|
|
325
301
|
return null;
|
326
302
|
};
|
327
303
|
|
304
|
+
const DOMContentLoadedCallbacks = [];
|
305
|
+
|
328
306
|
const onDOMContentLoaded = callback => {
|
329
307
|
if (document.readyState === 'loading') {
|
330
|
-
document
|
308
|
+
// add listener on the first call when the document is in loading state
|
309
|
+
if (!DOMContentLoadedCallbacks.length) {
|
310
|
+
document.addEventListener('DOMContentLoaded', () => {
|
311
|
+
DOMContentLoadedCallbacks.forEach(callback => callback());
|
312
|
+
});
|
313
|
+
}
|
314
|
+
|
315
|
+
DOMContentLoadedCallbacks.push(callback);
|
331
316
|
} else {
|
332
317
|
callback();
|
333
318
|
}
|
@@ -360,63 +345,66 @@
|
|
360
345
|
}
|
361
346
|
};
|
362
347
|
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
*/
|
369
|
-
|
370
|
-
/**
|
371
|
-
* ------------------------------------------------------------------------
|
372
|
-
* Constants
|
373
|
-
* ------------------------------------------------------------------------
|
374
|
-
*/
|
375
|
-
const elementMap = new Map();
|
376
|
-
var Data = {
|
377
|
-
set(element, key, instance) {
|
378
|
-
if (!elementMap.has(element)) {
|
379
|
-
elementMap.set(element, new Map());
|
380
|
-
}
|
348
|
+
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
|
349
|
+
if (!waitForTransition) {
|
350
|
+
execute(callback);
|
351
|
+
return;
|
352
|
+
}
|
381
353
|
|
382
|
-
|
383
|
-
|
354
|
+
const durationPadding = 5;
|
355
|
+
const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
|
356
|
+
let called = false;
|
384
357
|
|
385
|
-
|
386
|
-
|
387
|
-
|
358
|
+
const handler = ({
|
359
|
+
target
|
360
|
+
}) => {
|
361
|
+
if (target !== transitionElement) {
|
388
362
|
return;
|
389
363
|
}
|
390
364
|
|
391
|
-
|
392
|
-
|
365
|
+
called = true;
|
366
|
+
transitionElement.removeEventListener(TRANSITION_END, handler);
|
367
|
+
execute(callback);
|
368
|
+
};
|
393
369
|
|
394
|
-
|
395
|
-
|
396
|
-
|
370
|
+
transitionElement.addEventListener(TRANSITION_END, handler);
|
371
|
+
setTimeout(() => {
|
372
|
+
if (!called) {
|
373
|
+
triggerTransitionEnd(transitionElement);
|
397
374
|
}
|
375
|
+
}, emulatedDuration);
|
376
|
+
};
|
377
|
+
/**
|
378
|
+
* Return the previous/next element of a list.
|
379
|
+
*
|
380
|
+
* @param {array} list The list of elements
|
381
|
+
* @param activeElement The active element
|
382
|
+
* @param shouldGetNext Choose to get next or previous element
|
383
|
+
* @param isCycleAllowed
|
384
|
+
* @return {Element|elem} The proper element
|
385
|
+
*/
|
398
386
|
|
399
|
-
return null;
|
400
|
-
},
|
401
387
|
|
402
|
-
|
403
|
-
|
404
|
-
return;
|
405
|
-
}
|
388
|
+
const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
|
389
|
+
let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed
|
406
390
|
|
407
|
-
|
408
|
-
|
391
|
+
if (index === -1) {
|
392
|
+
return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];
|
393
|
+
}
|
409
394
|
|
410
|
-
|
411
|
-
|
412
|
-
|
395
|
+
const listLength = list.length;
|
396
|
+
index += shouldGetNext ? 1 : -1;
|
397
|
+
|
398
|
+
if (isCycleAllowed) {
|
399
|
+
index = (index + listLength) % listLength;
|
413
400
|
}
|
414
401
|
|
402
|
+
return list[Math.max(0, Math.min(index, listLength - 1))];
|
415
403
|
};
|
416
404
|
|
417
405
|
/**
|
418
406
|
* --------------------------------------------------------------------------
|
419
|
-
* Bootstrap (v5.0.
|
407
|
+
* Bootstrap (v5.0.2): dom/event-handler.js
|
420
408
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
421
409
|
* --------------------------------------------------------------------------
|
422
410
|
*/
|
@@ -705,17 +693,71 @@
|
|
705
693
|
|
706
694
|
/**
|
707
695
|
* --------------------------------------------------------------------------
|
708
|
-
* Bootstrap (v5.0.
|
696
|
+
* Bootstrap (v5.0.2): dom/data.js
|
709
697
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
710
698
|
* --------------------------------------------------------------------------
|
711
699
|
*/
|
700
|
+
|
712
701
|
/**
|
713
702
|
* ------------------------------------------------------------------------
|
714
703
|
* Constants
|
715
704
|
* ------------------------------------------------------------------------
|
716
705
|
*/
|
706
|
+
const elementMap = new Map();
|
707
|
+
var Data = {
|
708
|
+
set(element, key, instance) {
|
709
|
+
if (!elementMap.has(element)) {
|
710
|
+
elementMap.set(element, new Map());
|
711
|
+
}
|
712
|
+
|
713
|
+
const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
|
714
|
+
// can be removed later when multiple key/instances are fine to be used
|
717
715
|
|
718
|
-
|
716
|
+
if (!instanceMap.has(key) && instanceMap.size !== 0) {
|
717
|
+
// eslint-disable-next-line no-console
|
718
|
+
console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
|
719
|
+
return;
|
720
|
+
}
|
721
|
+
|
722
|
+
instanceMap.set(key, instance);
|
723
|
+
},
|
724
|
+
|
725
|
+
get(element, key) {
|
726
|
+
if (elementMap.has(element)) {
|
727
|
+
return elementMap.get(element).get(key) || null;
|
728
|
+
}
|
729
|
+
|
730
|
+
return null;
|
731
|
+
},
|
732
|
+
|
733
|
+
remove(element, key) {
|
734
|
+
if (!elementMap.has(element)) {
|
735
|
+
return;
|
736
|
+
}
|
737
|
+
|
738
|
+
const instanceMap = elementMap.get(element);
|
739
|
+
instanceMap.delete(key); // free up element references if there are no instances left for an element
|
740
|
+
|
741
|
+
if (instanceMap.size === 0) {
|
742
|
+
elementMap.delete(element);
|
743
|
+
}
|
744
|
+
}
|
745
|
+
|
746
|
+
};
|
747
|
+
|
748
|
+
/**
|
749
|
+
* --------------------------------------------------------------------------
|
750
|
+
* Bootstrap (v5.0.2): base-component.js
|
751
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
752
|
+
* --------------------------------------------------------------------------
|
753
|
+
*/
|
754
|
+
/**
|
755
|
+
* ------------------------------------------------------------------------
|
756
|
+
* Constants
|
757
|
+
* ------------------------------------------------------------------------
|
758
|
+
*/
|
759
|
+
|
760
|
+
const VERSION = '5.0.2';
|
719
761
|
|
720
762
|
class BaseComponent {
|
721
763
|
constructor(element) {
|
@@ -738,14 +780,7 @@
|
|
738
780
|
}
|
739
781
|
|
740
782
|
_queueCallback(callback, element, isAnimated = true) {
|
741
|
-
|
742
|
-
execute(callback);
|
743
|
-
return;
|
744
|
-
}
|
745
|
-
|
746
|
-
const transitionDuration = getTransitionDurationFromElement(element);
|
747
|
-
EventHandler.one(element, 'transitionend', () => execute(callback));
|
748
|
-
emulateTransitionEnd(element, transitionDuration);
|
783
|
+
executeAfterTransition(callback, element, isAnimated);
|
749
784
|
}
|
750
785
|
/** Static */
|
751
786
|
|
@@ -754,6 +789,10 @@
|
|
754
789
|
return Data.get(element, this.DATA_KEY);
|
755
790
|
}
|
756
791
|
|
792
|
+
static getOrCreateInstance(element, config = {}) {
|
793
|
+
return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
|
794
|
+
}
|
795
|
+
|
757
796
|
static get VERSION() {
|
758
797
|
return VERSION;
|
759
798
|
}
|
@@ -774,7 +813,7 @@
|
|
774
813
|
|
775
814
|
/**
|
776
815
|
* --------------------------------------------------------------------------
|
777
|
-
* Bootstrap (v5.0.
|
816
|
+
* Bootstrap (v5.0.2): alert.js
|
778
817
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
779
818
|
* --------------------------------------------------------------------------
|
780
819
|
*/
|
@@ -837,21 +876,14 @@
|
|
837
876
|
}
|
838
877
|
|
839
878
|
_destroyElement(element) {
|
840
|
-
|
841
|
-
element.parentNode.removeChild(element);
|
842
|
-
}
|
843
|
-
|
879
|
+
element.remove();
|
844
880
|
EventHandler.trigger(element, EVENT_CLOSED);
|
845
881
|
} // Static
|
846
882
|
|
847
883
|
|
848
884
|
static jQueryInterface(config) {
|
849
885
|
return this.each(function () {
|
850
|
-
|
851
|
-
|
852
|
-
if (!data) {
|
853
|
-
data = new Alert(this);
|
854
|
-
}
|
886
|
+
const data = Alert.getOrCreateInstance(this);
|
855
887
|
|
856
888
|
if (config === 'close') {
|
857
889
|
data[config](this);
|
@@ -889,7 +921,7 @@
|
|
889
921
|
|
890
922
|
/**
|
891
923
|
* --------------------------------------------------------------------------
|
892
|
-
* Bootstrap (v5.0.
|
924
|
+
* Bootstrap (v5.0.2): button.js
|
893
925
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
894
926
|
* --------------------------------------------------------------------------
|
895
927
|
*/
|
@@ -927,11 +959,7 @@
|
|
927
959
|
|
928
960
|
static jQueryInterface(config) {
|
929
961
|
return this.each(function () {
|
930
|
-
|
931
|
-
|
932
|
-
if (!data) {
|
933
|
-
data = new Button(this);
|
934
|
-
}
|
962
|
+
const data = Button.getOrCreateInstance(this);
|
935
963
|
|
936
964
|
if (config === 'toggle') {
|
937
965
|
data[config]();
|
@@ -950,12 +978,7 @@
|
|
950
978
|
EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
|
951
979
|
event.preventDefault();
|
952
980
|
const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
|
953
|
-
|
954
|
-
|
955
|
-
if (!data) {
|
956
|
-
data = new Button(button);
|
957
|
-
}
|
958
|
-
|
981
|
+
const data = Button.getOrCreateInstance(button);
|
959
982
|
data.toggle();
|
960
983
|
});
|
961
984
|
/**
|
@@ -969,7 +992,7 @@
|
|
969
992
|
|
970
993
|
/**
|
971
994
|
* --------------------------------------------------------------------------
|
972
|
-
* Bootstrap (v5.0.
|
995
|
+
* Bootstrap (v5.0.2): dom/manipulator.js
|
973
996
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
974
997
|
* --------------------------------------------------------------------------
|
975
998
|
*/
|
@@ -1043,7 +1066,7 @@
|
|
1043
1066
|
|
1044
1067
|
/**
|
1045
1068
|
* --------------------------------------------------------------------------
|
1046
|
-
* Bootstrap (v5.0.
|
1069
|
+
* Bootstrap (v5.0.2): carousel.js
|
1047
1070
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
1048
1071
|
* --------------------------------------------------------------------------
|
1049
1072
|
*/
|
@@ -1082,6 +1105,10 @@
|
|
1082
1105
|
const ORDER_PREV = 'prev';
|
1083
1106
|
const DIRECTION_LEFT = 'left';
|
1084
1107
|
const DIRECTION_RIGHT = 'right';
|
1108
|
+
const KEY_TO_DIRECTION = {
|
1109
|
+
[ARROW_LEFT_KEY]: DIRECTION_RIGHT,
|
1110
|
+
[ARROW_RIGHT_KEY]: DIRECTION_LEFT
|
1111
|
+
};
|
1085
1112
|
const EVENT_SLIDE = `slide${EVENT_KEY$9}`;
|
1086
1113
|
const EVENT_SLID = `slid${EVENT_KEY$9}`;
|
1087
1114
|
const EVENT_KEYDOWN = `keydown${EVENT_KEY$9}`;
|
@@ -1150,9 +1177,7 @@
|
|
1150
1177
|
|
1151
1178
|
|
1152
1179
|
next() {
|
1153
|
-
|
1154
|
-
this._slide(ORDER_NEXT);
|
1155
|
-
}
|
1180
|
+
this._slide(ORDER_NEXT);
|
1156
1181
|
}
|
1157
1182
|
|
1158
1183
|
nextWhenVisible() {
|
@@ -1164,9 +1189,7 @@
|
|
1164
1189
|
}
|
1165
1190
|
|
1166
1191
|
prev() {
|
1167
|
-
|
1168
|
-
this._slide(ORDER_PREV);
|
1169
|
-
}
|
1192
|
+
this._slide(ORDER_PREV);
|
1170
1193
|
}
|
1171
1194
|
|
1172
1195
|
pause(event) {
|
@@ -1228,7 +1251,8 @@
|
|
1228
1251
|
|
1229
1252
|
_getConfig(config) {
|
1230
1253
|
config = { ...Default$9,
|
1231
|
-
...
|
1254
|
+
...Manipulator.getDataAttributes(this._element),
|
1255
|
+
...(typeof config === 'object' ? config : {})
|
1232
1256
|
};
|
1233
1257
|
typeCheckConfig(NAME$a, config, DefaultType$9);
|
1234
1258
|
return config;
|
@@ -1326,14 +1350,12 @@
|
|
1326
1350
|
return;
|
1327
1351
|
}
|
1328
1352
|
|
1329
|
-
|
1330
|
-
event.preventDefault();
|
1353
|
+
const direction = KEY_TO_DIRECTION[event.key];
|
1331
1354
|
|
1332
|
-
|
1333
|
-
} else if (event.key === ARROW_RIGHT_KEY) {
|
1355
|
+
if (direction) {
|
1334
1356
|
event.preventDefault();
|
1335
1357
|
|
1336
|
-
this._slide(
|
1358
|
+
this._slide(direction);
|
1337
1359
|
}
|
1338
1360
|
}
|
1339
1361
|
|
@@ -1344,20 +1366,7 @@
|
|
1344
1366
|
|
1345
1367
|
_getItemByOrder(order, activeElement) {
|
1346
1368
|
const isNext = order === ORDER_NEXT;
|
1347
|
-
|
1348
|
-
|
1349
|
-
const activeIndex = this._getItemIndex(activeElement);
|
1350
|
-
|
1351
|
-
const lastItemIndex = this._items.length - 1;
|
1352
|
-
const isGoingToWrap = isPrev && activeIndex === 0 || isNext && activeIndex === lastItemIndex;
|
1353
|
-
|
1354
|
-
if (isGoingToWrap && !this._config.wrap) {
|
1355
|
-
return activeElement;
|
1356
|
-
}
|
1357
|
-
|
1358
|
-
const delta = isPrev ? -1 : 1;
|
1359
|
-
const itemIndex = (activeIndex + delta) % this._items.length;
|
1360
|
-
return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
|
1369
|
+
return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);
|
1361
1370
|
}
|
1362
1371
|
|
1363
1372
|
_triggerSlideEvent(relatedTarget, eventDirectionName) {
|
@@ -1430,6 +1439,10 @@
|
|
1430
1439
|
return;
|
1431
1440
|
}
|
1432
1441
|
|
1442
|
+
if (this._isSliding) {
|
1443
|
+
return;
|
1444
|
+
}
|
1445
|
+
|
1433
1446
|
const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
|
1434
1447
|
|
1435
1448
|
if (slideEvent.defaultPrevented) {
|
@@ -1513,10 +1526,10 @@
|
|
1513
1526
|
|
1514
1527
|
|
1515
1528
|
static carouselInterface(element, config) {
|
1516
|
-
|
1517
|
-
let
|
1518
|
-
|
1519
|
-
};
|
1529
|
+
const data = Carousel.getOrCreateInstance(element, config);
|
1530
|
+
let {
|
1531
|
+
_config
|
1532
|
+
} = data;
|
1520
1533
|
|
1521
1534
|
if (typeof config === 'object') {
|
1522
1535
|
_config = { ..._config,
|
@@ -1526,10 +1539,6 @@
|
|
1526
1539
|
|
1527
1540
|
const action = typeof config === 'string' ? config : _config.slide;
|
1528
1541
|
|
1529
|
-
if (!data) {
|
1530
|
-
data = new Carousel(element, _config);
|
1531
|
-
}
|
1532
|
-
|
1533
1542
|
if (typeof config === 'number') {
|
1534
1543
|
data.to(config);
|
1535
1544
|
} else if (typeof action === 'string') {
|
@@ -1569,7 +1578,7 @@
|
|
1569
1578
|
Carousel.carouselInterface(target, config);
|
1570
1579
|
|
1571
1580
|
if (slideIndex) {
|
1572
|
-
|
1581
|
+
Carousel.getInstance(target).to(slideIndex);
|
1573
1582
|
}
|
1574
1583
|
|
1575
1584
|
event.preventDefault();
|
@@ -1588,7 +1597,7 @@
|
|
1588
1597
|
const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
|
1589
1598
|
|
1590
1599
|
for (let i = 0, len = carousels.length; i < len; i++) {
|
1591
|
-
Carousel.carouselInterface(carousels[i],
|
1600
|
+
Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));
|
1592
1601
|
}
|
1593
1602
|
});
|
1594
1603
|
/**
|
@@ -1602,7 +1611,7 @@
|
|
1602
1611
|
|
1603
1612
|
/**
|
1604
1613
|
* --------------------------------------------------------------------------
|
1605
|
-
* Bootstrap (v5.0.
|
1614
|
+
* Bootstrap (v5.0.2): collapse.js
|
1606
1615
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
1607
1616
|
* --------------------------------------------------------------------------
|
1608
1617
|
*/
|
@@ -1718,7 +1727,7 @@
|
|
1718
1727
|
|
1719
1728
|
if (actives) {
|
1720
1729
|
const tempActiveData = actives.find(elem => container !== elem);
|
1721
|
-
activesData = tempActiveData ?
|
1730
|
+
activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;
|
1722
1731
|
|
1723
1732
|
if (activesData && activesData._isTransitioning) {
|
1724
1733
|
return;
|
@@ -1881,7 +1890,7 @@
|
|
1881
1890
|
|
1882
1891
|
|
1883
1892
|
static collapseInterface(element, config) {
|
1884
|
-
let data =
|
1893
|
+
let data = Collapse.getInstance(element);
|
1885
1894
|
const _config = { ...Default$8,
|
1886
1895
|
...Manipulator.getDataAttributes(element),
|
1887
1896
|
...(typeof config === 'object' && config ? config : {})
|
@@ -1928,7 +1937,7 @@
|
|
1928
1937
|
const selector = getSelectorFromElement(this);
|
1929
1938
|
const selectorElements = SelectorEngine.find(selector);
|
1930
1939
|
selectorElements.forEach(element => {
|
1931
|
-
const data =
|
1940
|
+
const data = Collapse.getInstance(element);
|
1932
1941
|
let config;
|
1933
1942
|
|
1934
1943
|
if (data) {
|
@@ -1957,7 +1966,7 @@
|
|
1957
1966
|
|
1958
1967
|
/**
|
1959
1968
|
* --------------------------------------------------------------------------
|
1960
|
-
* Bootstrap (v5.0.
|
1969
|
+
* Bootstrap (v5.0.2): dropdown.js
|
1961
1970
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
1962
1971
|
* --------------------------------------------------------------------------
|
1963
1972
|
*/
|
@@ -2277,38 +2286,24 @@
|
|
2277
2286
|
};
|
2278
2287
|
}
|
2279
2288
|
|
2280
|
-
_selectMenuItem(
|
2289
|
+
_selectMenuItem({
|
2290
|
+
key,
|
2291
|
+
target
|
2292
|
+
}) {
|
2281
2293
|
const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);
|
2282
2294
|
|
2283
2295
|
if (!items.length) {
|
2284
2296
|
return;
|
2285
|
-
}
|
2286
|
-
|
2287
|
-
let index = items.indexOf(event.target); // Up
|
2288
|
-
|
2289
|
-
if (event.key === ARROW_UP_KEY && index > 0) {
|
2290
|
-
index--;
|
2291
|
-
} // Down
|
2297
|
+
} // if target isn't included in items (e.g. when expanding the dropdown)
|
2298
|
+
// allow cycling to get the last item in case key equals ARROW_UP_KEY
|
2292
2299
|
|
2293
2300
|
|
2294
|
-
|
2295
|
-
index++;
|
2296
|
-
} // index is -1 if the first keydown is an ArrowUp
|
2297
|
-
|
2298
|
-
|
2299
|
-
index = index === -1 ? 0 : index;
|
2300
|
-
items[index].focus();
|
2301
|
+
getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
|
2301
2302
|
} // Static
|
2302
2303
|
|
2303
2304
|
|
2304
2305
|
static dropdownInterface(element, config) {
|
2305
|
-
|
2306
|
-
|
2307
|
-
const _config = typeof config === 'object' ? config : null;
|
2308
|
-
|
2309
|
-
if (!data) {
|
2310
|
-
data = new Dropdown(element, _config);
|
2311
|
-
}
|
2306
|
+
const data = Dropdown.getOrCreateInstance(element, config);
|
2312
2307
|
|
2313
2308
|
if (typeof config === 'string') {
|
2314
2309
|
if (typeof data[config] === 'undefined') {
|
@@ -2333,7 +2328,7 @@
|
|
2333
2328
|
const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);
|
2334
2329
|
|
2335
2330
|
for (let i = 0, len = toggles.length; i < len; i++) {
|
2336
|
-
const context =
|
2331
|
+
const context = Dropdown.getInstance(toggles[i]);
|
2337
2332
|
|
2338
2333
|
if (!context || context._config.autoClose === false) {
|
2339
2334
|
continue;
|
@@ -2406,17 +2401,19 @@
|
|
2406
2401
|
return;
|
2407
2402
|
}
|
2408
2403
|
|
2409
|
-
if (
|
2410
|
-
|
2404
|
+
if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {
|
2405
|
+
if (!isActive) {
|
2406
|
+
getToggleButton().click();
|
2407
|
+
}
|
2408
|
+
|
2409
|
+
Dropdown.getInstance(getToggleButton())._selectMenuItem(event);
|
2410
|
+
|
2411
2411
|
return;
|
2412
2412
|
}
|
2413
2413
|
|
2414
2414
|
if (!isActive || event.key === SPACE_KEY) {
|
2415
2415
|
Dropdown.clearMenus();
|
2416
|
-
return;
|
2417
2416
|
}
|
2418
|
-
|
2419
|
-
Dropdown.getInstance(getToggleButton())._selectMenuItem(event);
|
2420
2417
|
}
|
2421
2418
|
|
2422
2419
|
}
|
@@ -2446,81 +2443,111 @@
|
|
2446
2443
|
|
2447
2444
|
/**
|
2448
2445
|
* --------------------------------------------------------------------------
|
2449
|
-
* Bootstrap (v5.0.
|
2446
|
+
* Bootstrap (v5.0.2): util/scrollBar.js
|
2450
2447
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
2451
2448
|
* --------------------------------------------------------------------------
|
2452
2449
|
*/
|
2453
2450
|
const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
|
2454
2451
|
const SELECTOR_STICKY_CONTENT = '.sticky-top';
|
2455
2452
|
|
2456
|
-
|
2457
|
-
|
2458
|
-
|
2459
|
-
|
2460
|
-
};
|
2453
|
+
class ScrollBarHelper {
|
2454
|
+
constructor() {
|
2455
|
+
this._element = document.body;
|
2456
|
+
}
|
2461
2457
|
|
2462
|
-
|
2463
|
-
|
2458
|
+
getWidth() {
|
2459
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
|
2460
|
+
const documentWidth = document.documentElement.clientWidth;
|
2461
|
+
return Math.abs(window.innerWidth - documentWidth);
|
2462
|
+
}
|
2464
2463
|
|
2464
|
+
hide() {
|
2465
|
+
const width = this.getWidth();
|
2465
2466
|
|
2466
|
-
|
2467
|
+
this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
|
2467
2468
|
|
2468
2469
|
|
2469
|
-
|
2470
|
+
this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
|
2470
2471
|
|
2471
|
-
_setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
|
2472
|
-
};
|
2473
2472
|
|
2474
|
-
|
2475
|
-
const actualValue = document.body.style.overflow;
|
2473
|
+
this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);
|
2476
2474
|
|
2477
|
-
|
2478
|
-
Manipulator.setDataAttribute(document.body, 'overflow', actualValue);
|
2475
|
+
this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
|
2479
2476
|
}
|
2480
2477
|
|
2481
|
-
|
2482
|
-
|
2478
|
+
_disableOverFlow() {
|
2479
|
+
this._saveInitialAttribute(this._element, 'overflow');
|
2483
2480
|
|
2484
|
-
|
2485
|
-
|
2486
|
-
SelectorEngine.find(selector).forEach(element => {
|
2487
|
-
if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {
|
2488
|
-
return;
|
2489
|
-
}
|
2481
|
+
this._element.style.overflow = 'hidden';
|
2482
|
+
}
|
2490
2483
|
|
2491
|
-
|
2492
|
-
const
|
2493
|
-
|
2494
|
-
|
2495
|
-
|
2496
|
-
|
2484
|
+
_setElementAttributes(selector, styleProp, callback) {
|
2485
|
+
const scrollbarWidth = this.getWidth();
|
2486
|
+
|
2487
|
+
const manipulationCallBack = element => {
|
2488
|
+
if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
|
2489
|
+
return;
|
2490
|
+
}
|
2497
2491
|
|
2498
|
-
|
2499
|
-
_resetElementAttributes('body', 'overflow');
|
2492
|
+
this._saveInitialAttribute(element, styleProp);
|
2500
2493
|
|
2501
|
-
|
2494
|
+
const calculatedValue = window.getComputedStyle(element)[styleProp];
|
2495
|
+
element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
|
2496
|
+
};
|
2502
2497
|
|
2503
|
-
|
2498
|
+
this._applyManipulationCallback(selector, manipulationCallBack);
|
2499
|
+
}
|
2504
2500
|
|
2505
|
-
|
2506
|
-
|
2501
|
+
reset() {
|
2502
|
+
this._resetElementAttributes(this._element, 'overflow');
|
2503
|
+
|
2504
|
+
this._resetElementAttributes(this._element, 'paddingRight');
|
2505
|
+
|
2506
|
+
this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
|
2507
|
+
|
2508
|
+
this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
|
2509
|
+
}
|
2510
|
+
|
2511
|
+
_saveInitialAttribute(element, styleProp) {
|
2512
|
+
const actualValue = element.style[styleProp];
|
2513
|
+
|
2514
|
+
if (actualValue) {
|
2515
|
+
Manipulator.setDataAttribute(element, styleProp, actualValue);
|
2516
|
+
}
|
2517
|
+
}
|
2518
|
+
|
2519
|
+
_resetElementAttributes(selector, styleProp) {
|
2520
|
+
const manipulationCallBack = element => {
|
2521
|
+
const value = Manipulator.getDataAttribute(element, styleProp);
|
2522
|
+
|
2523
|
+
if (typeof value === 'undefined') {
|
2524
|
+
element.style.removeProperty(styleProp);
|
2525
|
+
} else {
|
2526
|
+
Manipulator.removeDataAttribute(element, styleProp);
|
2527
|
+
element.style[styleProp] = value;
|
2528
|
+
}
|
2529
|
+
};
|
2507
2530
|
|
2508
|
-
|
2509
|
-
|
2510
|
-
const value = Manipulator.getDataAttribute(element, styleProp);
|
2531
|
+
this._applyManipulationCallback(selector, manipulationCallBack);
|
2532
|
+
}
|
2511
2533
|
|
2512
|
-
|
2513
|
-
|
2534
|
+
_applyManipulationCallback(selector, callBack) {
|
2535
|
+
if (isElement(selector)) {
|
2536
|
+
callBack(selector);
|
2514
2537
|
} else {
|
2515
|
-
|
2516
|
-
element.style[styleProp] = value;
|
2538
|
+
SelectorEngine.find(selector, this._element).forEach(callBack);
|
2517
2539
|
}
|
2518
|
-
}
|
2519
|
-
|
2540
|
+
}
|
2541
|
+
|
2542
|
+
isOverflowing() {
|
2543
|
+
return this.getWidth() > 0;
|
2544
|
+
}
|
2545
|
+
|
2546
|
+
}
|
2520
2547
|
|
2521
2548
|
/**
|
2522
2549
|
* --------------------------------------------------------------------------
|
2523
|
-
* Bootstrap (v5.0.
|
2550
|
+
* Bootstrap (v5.0.2): util/backdrop.js
|
2524
2551
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
2525
2552
|
* --------------------------------------------------------------------------
|
2526
2553
|
*/
|
@@ -2528,14 +2555,14 @@
|
|
2528
2555
|
isVisible: true,
|
2529
2556
|
// if false, we use the backdrop helper without adding any element to the dom
|
2530
2557
|
isAnimated: false,
|
2531
|
-
rootElement:
|
2558
|
+
rootElement: 'body',
|
2532
2559
|
// give the choice to place backdrop under different elements
|
2533
2560
|
clickCallback: null
|
2534
2561
|
};
|
2535
2562
|
const DefaultType$6 = {
|
2536
2563
|
isVisible: 'boolean',
|
2537
2564
|
isAnimated: 'boolean',
|
2538
|
-
rootElement: 'element',
|
2565
|
+
rootElement: '(element|string)',
|
2539
2566
|
clickCallback: '(function|null)'
|
2540
2567
|
};
|
2541
2568
|
const NAME$7 = 'backdrop';
|
@@ -2603,8 +2630,9 @@
|
|
2603
2630
|
_getConfig(config) {
|
2604
2631
|
config = { ...Default$6,
|
2605
2632
|
...(typeof config === 'object' ? config : {})
|
2606
|
-
};
|
2607
|
-
|
2633
|
+
}; // use getElement() with the default "body" to get a fresh Element on each instantiation
|
2634
|
+
|
2635
|
+
config.rootElement = getElement(config.rootElement);
|
2608
2636
|
typeCheckConfig(NAME$7, config, DefaultType$6);
|
2609
2637
|
return config;
|
2610
2638
|
}
|
@@ -2629,27 +2657,20 @@
|
|
2629
2657
|
|
2630
2658
|
EventHandler.off(this._element, EVENT_MOUSEDOWN);
|
2631
2659
|
|
2632
|
-
this.
|
2660
|
+
this._element.remove();
|
2633
2661
|
|
2634
2662
|
this._isAppended = false;
|
2635
2663
|
}
|
2636
2664
|
|
2637
2665
|
_emulateAnimation(callback) {
|
2638
|
-
|
2639
|
-
execute(callback);
|
2640
|
-
return;
|
2641
|
-
}
|
2642
|
-
|
2643
|
-
const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement());
|
2644
|
-
EventHandler.one(this._getElement(), 'transitionend', () => execute(callback));
|
2645
|
-
emulateTransitionEnd(this._getElement(), backdropTransitionDuration);
|
2666
|
+
executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
|
2646
2667
|
}
|
2647
2668
|
|
2648
2669
|
}
|
2649
2670
|
|
2650
2671
|
/**
|
2651
2672
|
* --------------------------------------------------------------------------
|
2652
|
-
* Bootstrap (v5.0.
|
2673
|
+
* Bootstrap (v5.0.2): modal.js
|
2653
2674
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
2654
2675
|
* --------------------------------------------------------------------------
|
2655
2676
|
*/
|
@@ -2709,6 +2730,7 @@
|
|
2709
2730
|
this._isShown = false;
|
2710
2731
|
this._ignoreBackdropClick = false;
|
2711
2732
|
this._isTransitioning = false;
|
2733
|
+
this._scrollBar = new ScrollBarHelper();
|
2712
2734
|
} // Getters
|
2713
2735
|
|
2714
2736
|
|
@@ -2730,20 +2752,22 @@
|
|
2730
2752
|
return;
|
2731
2753
|
}
|
2732
2754
|
|
2733
|
-
if (this._isAnimated()) {
|
2734
|
-
this._isTransitioning = true;
|
2735
|
-
}
|
2736
|
-
|
2737
2755
|
const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
|
2738
2756
|
relatedTarget
|
2739
2757
|
});
|
2740
2758
|
|
2741
|
-
if (
|
2759
|
+
if (showEvent.defaultPrevented) {
|
2742
2760
|
return;
|
2743
2761
|
}
|
2744
2762
|
|
2745
2763
|
this._isShown = true;
|
2746
|
-
|
2764
|
+
|
2765
|
+
if (this._isAnimated()) {
|
2766
|
+
this._isTransitioning = true;
|
2767
|
+
}
|
2768
|
+
|
2769
|
+
this._scrollBar.hide();
|
2770
|
+
|
2747
2771
|
document.body.classList.add(CLASS_NAME_OPEN);
|
2748
2772
|
|
2749
2773
|
this._adjustDialog();
|
@@ -2765,7 +2789,7 @@
|
|
2765
2789
|
}
|
2766
2790
|
|
2767
2791
|
hide(event) {
|
2768
|
-
if (event) {
|
2792
|
+
if (event && ['A', 'AREA'].includes(event.target.tagName)) {
|
2769
2793
|
event.preventDefault();
|
2770
2794
|
}
|
2771
2795
|
|
@@ -2832,7 +2856,7 @@
|
|
2832
2856
|
_getConfig(config) {
|
2833
2857
|
config = { ...Default$5,
|
2834
2858
|
...Manipulator.getDataAttributes(this._element),
|
2835
|
-
...config
|
2859
|
+
...(typeof config === 'object' ? config : {})
|
2836
2860
|
};
|
2837
2861
|
typeCheckConfig(NAME$6, config, DefaultType$5);
|
2838
2862
|
return config;
|
@@ -2935,7 +2959,8 @@
|
|
2935
2959
|
|
2936
2960
|
this._resetAdjustments();
|
2937
2961
|
|
2938
|
-
reset();
|
2962
|
+
this._scrollBar.reset();
|
2963
|
+
|
2939
2964
|
EventHandler.trigger(this._element, EVENT_HIDDEN$3);
|
2940
2965
|
});
|
2941
2966
|
}
|
@@ -2972,27 +2997,32 @@
|
|
2972
2997
|
return;
|
2973
2998
|
}
|
2974
2999
|
|
2975
|
-
const
|
3000
|
+
const {
|
3001
|
+
classList,
|
3002
|
+
scrollHeight,
|
3003
|
+
style
|
3004
|
+
} = this._element;
|
3005
|
+
const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed
|
3006
|
+
|
3007
|
+
if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {
|
3008
|
+
return;
|
3009
|
+
}
|
2976
3010
|
|
2977
3011
|
if (!isModalOverflowing) {
|
2978
|
-
|
3012
|
+
style.overflowY = 'hidden';
|
2979
3013
|
}
|
2980
3014
|
|
2981
|
-
|
3015
|
+
classList.add(CLASS_NAME_STATIC);
|
2982
3016
|
|
2983
|
-
|
2984
|
-
|
2985
|
-
EventHandler.one(this._element, 'transitionend', () => {
|
2986
|
-
this._element.classList.remove(CLASS_NAME_STATIC);
|
3017
|
+
this._queueCallback(() => {
|
3018
|
+
classList.remove(CLASS_NAME_STATIC);
|
2987
3019
|
|
2988
3020
|
if (!isModalOverflowing) {
|
2989
|
-
|
2990
|
-
|
2991
|
-
});
|
2992
|
-
emulateTransitionEnd(this._element, modalTransitionDuration);
|
3021
|
+
this._queueCallback(() => {
|
3022
|
+
style.overflowY = '';
|
3023
|
+
}, this._dialog);
|
2993
3024
|
}
|
2994
|
-
});
|
2995
|
-
emulateTransitionEnd(this._element, modalTransitionDuration);
|
3025
|
+
}, this._dialog);
|
2996
3026
|
|
2997
3027
|
this._element.focus();
|
2998
3028
|
} // ----------------------------------------------------------------------
|
@@ -3002,7 +3032,9 @@
|
|
3002
3032
|
|
3003
3033
|
_adjustDialog() {
|
3004
3034
|
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
3005
|
-
|
3035
|
+
|
3036
|
+
const scrollbarWidth = this._scrollBar.getWidth();
|
3037
|
+
|
3006
3038
|
const isBodyOverflowing = scrollbarWidth > 0;
|
3007
3039
|
|
3008
3040
|
if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {
|
@@ -3022,7 +3054,7 @@
|
|
3022
3054
|
|
3023
3055
|
static jQueryInterface(config, relatedTarget) {
|
3024
3056
|
return this.each(function () {
|
3025
|
-
const data = Modal.
|
3057
|
+
const data = Modal.getOrCreateInstance(this, config);
|
3026
3058
|
|
3027
3059
|
if (typeof config !== 'string') {
|
3028
3060
|
return;
|
@@ -3063,7 +3095,7 @@
|
|
3063
3095
|
}
|
3064
3096
|
});
|
3065
3097
|
});
|
3066
|
-
const data = Modal.
|
3098
|
+
const data = Modal.getOrCreateInstance(target);
|
3067
3099
|
data.toggle(this);
|
3068
3100
|
});
|
3069
3101
|
/**
|
@@ -3077,7 +3109,7 @@
|
|
3077
3109
|
|
3078
3110
|
/**
|
3079
3111
|
* --------------------------------------------------------------------------
|
3080
|
-
* Bootstrap (v5.0.
|
3112
|
+
* Bootstrap (v5.0.2): offcanvas.js
|
3081
3113
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
3082
3114
|
* --------------------------------------------------------------------------
|
3083
3115
|
*/
|
@@ -3164,7 +3196,7 @@
|
|
3164
3196
|
this._backdrop.show();
|
3165
3197
|
|
3166
3198
|
if (!this._config.scroll) {
|
3167
|
-
hide();
|
3199
|
+
new ScrollBarHelper().hide();
|
3168
3200
|
|
3169
3201
|
this._enforceFocusOnElement(this._element);
|
3170
3202
|
}
|
@@ -3217,7 +3249,7 @@
|
|
3217
3249
|
this._element.style.visibility = 'hidden';
|
3218
3250
|
|
3219
3251
|
if (!this._config.scroll) {
|
3220
|
-
reset();
|
3252
|
+
new ScrollBarHelper().reset();
|
3221
3253
|
}
|
3222
3254
|
|
3223
3255
|
EventHandler.trigger(this._element, EVENT_HIDDEN$2);
|
@@ -3275,7 +3307,7 @@
|
|
3275
3307
|
|
3276
3308
|
static jQueryInterface(config) {
|
3277
3309
|
return this.each(function () {
|
3278
|
-
const data =
|
3310
|
+
const data = Offcanvas.getOrCreateInstance(this, config);
|
3279
3311
|
|
3280
3312
|
if (typeof config !== 'string') {
|
3281
3313
|
return;
|
@@ -3321,12 +3353,10 @@
|
|
3321
3353
|
Offcanvas.getInstance(allReadyOpen).hide();
|
3322
3354
|
}
|
3323
3355
|
|
3324
|
-
const data =
|
3356
|
+
const data = Offcanvas.getOrCreateInstance(target);
|
3325
3357
|
data.toggle(this);
|
3326
3358
|
});
|
3327
|
-
EventHandler.on(window, EVENT_LOAD_DATA_API$1, () =>
|
3328
|
-
SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY$5) || new Offcanvas(el)).show());
|
3329
|
-
});
|
3359
|
+
EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));
|
3330
3360
|
/**
|
3331
3361
|
* ------------------------------------------------------------------------
|
3332
3362
|
* jQuery
|
@@ -3337,7 +3367,7 @@
|
|
3337
3367
|
|
3338
3368
|
/**
|
3339
3369
|
* --------------------------------------------------------------------------
|
3340
|
-
* Bootstrap (v5.0.
|
3370
|
+
* Bootstrap (v5.0.2): util/sanitizer.js
|
3341
3371
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
3342
3372
|
* --------------------------------------------------------------------------
|
3343
3373
|
*/
|
@@ -3432,7 +3462,7 @@
|
|
3432
3462
|
const elName = el.nodeName.toLowerCase();
|
3433
3463
|
|
3434
3464
|
if (!allowlistKeys.includes(elName)) {
|
3435
|
-
el.
|
3465
|
+
el.remove();
|
3436
3466
|
continue;
|
3437
3467
|
}
|
3438
3468
|
|
@@ -3450,7 +3480,7 @@
|
|
3450
3480
|
|
3451
3481
|
/**
|
3452
3482
|
* --------------------------------------------------------------------------
|
3453
|
-
* Bootstrap (v5.0.
|
3483
|
+
* Bootstrap (v5.0.2): tooltip.js
|
3454
3484
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
3455
3485
|
* --------------------------------------------------------------------------
|
3456
3486
|
*/
|
@@ -3619,8 +3649,8 @@
|
|
3619
3649
|
clearTimeout(this._timeout);
|
3620
3650
|
EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler);
|
3621
3651
|
|
3622
|
-
if (this.tip
|
3623
|
-
this.tip.
|
3652
|
+
if (this.tip) {
|
3653
|
+
this.tip.remove();
|
3624
3654
|
}
|
3625
3655
|
|
3626
3656
|
if (this._popper) {
|
@@ -3725,8 +3755,8 @@
|
|
3725
3755
|
return;
|
3726
3756
|
}
|
3727
3757
|
|
3728
|
-
if (this._hoverState !== HOVER_STATE_SHOW
|
3729
|
-
tip.
|
3758
|
+
if (this._hoverState !== HOVER_STATE_SHOW) {
|
3759
|
+
tip.remove();
|
3730
3760
|
}
|
3731
3761
|
|
3732
3762
|
this._cleanTipClass();
|
@@ -4113,17 +4143,7 @@
|
|
4113
4143
|
|
4114
4144
|
static jQueryInterface(config) {
|
4115
4145
|
return this.each(function () {
|
4116
|
-
|
4117
|
-
|
4118
|
-
const _config = typeof config === 'object' && config;
|
4119
|
-
|
4120
|
-
if (!data && /dispose|hide/.test(config)) {
|
4121
|
-
return;
|
4122
|
-
}
|
4123
|
-
|
4124
|
-
if (!data) {
|
4125
|
-
data = new Tooltip(this, _config);
|
4126
|
-
}
|
4146
|
+
const data = Tooltip.getOrCreateInstance(this, config);
|
4127
4147
|
|
4128
4148
|
if (typeof config === 'string') {
|
4129
4149
|
if (typeof data[config] === 'undefined') {
|
@@ -4148,7 +4168,7 @@
|
|
4148
4168
|
|
4149
4169
|
/**
|
4150
4170
|
* --------------------------------------------------------------------------
|
4151
|
-
* Bootstrap (v5.0.
|
4171
|
+
* Bootstrap (v5.0.2): popover.js
|
4152
4172
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
4153
4173
|
* --------------------------------------------------------------------------
|
4154
4174
|
*/
|
@@ -4218,6 +4238,24 @@
|
|
4218
4238
|
return this.getTitle() || this._getContent();
|
4219
4239
|
}
|
4220
4240
|
|
4241
|
+
getTipElement() {
|
4242
|
+
if (this.tip) {
|
4243
|
+
return this.tip;
|
4244
|
+
}
|
4245
|
+
|
4246
|
+
this.tip = super.getTipElement();
|
4247
|
+
|
4248
|
+
if (!this.getTitle()) {
|
4249
|
+
SelectorEngine.findOne(SELECTOR_TITLE, this.tip).remove();
|
4250
|
+
}
|
4251
|
+
|
4252
|
+
if (!this._getContent()) {
|
4253
|
+
SelectorEngine.findOne(SELECTOR_CONTENT, this.tip).remove();
|
4254
|
+
}
|
4255
|
+
|
4256
|
+
return this.tip;
|
4257
|
+
}
|
4258
|
+
|
4221
4259
|
setContent() {
|
4222
4260
|
const tip = this.getTipElement(); // we use append for html objects to maintain js events
|
4223
4261
|
|
@@ -4254,18 +4292,7 @@
|
|
4254
4292
|
|
4255
4293
|
static jQueryInterface(config) {
|
4256
4294
|
return this.each(function () {
|
4257
|
-
|
4258
|
-
|
4259
|
-
const _config = typeof config === 'object' ? config : null;
|
4260
|
-
|
4261
|
-
if (!data && /dispose|hide/.test(config)) {
|
4262
|
-
return;
|
4263
|
-
}
|
4264
|
-
|
4265
|
-
if (!data) {
|
4266
|
-
data = new Popover(this, _config);
|
4267
|
-
Data.set(this, DATA_KEY$3, data);
|
4268
|
-
}
|
4295
|
+
const data = Popover.getOrCreateInstance(this, config);
|
4269
4296
|
|
4270
4297
|
if (typeof config === 'string') {
|
4271
4298
|
if (typeof data[config] === 'undefined') {
|
@@ -4290,7 +4317,7 @@
|
|
4290
4317
|
|
4291
4318
|
/**
|
4292
4319
|
* --------------------------------------------------------------------------
|
4293
|
-
* Bootstrap (v5.0.
|
4320
|
+
* Bootstrap (v5.0.2): scrollspy.js
|
4294
4321
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
4295
4322
|
* --------------------------------------------------------------------------
|
4296
4323
|
*/
|
@@ -4505,7 +4532,7 @@
|
|
4505
4532
|
|
4506
4533
|
static jQueryInterface(config) {
|
4507
4534
|
return this.each(function () {
|
4508
|
-
const data = ScrollSpy.
|
4535
|
+
const data = ScrollSpy.getOrCreateInstance(this, config);
|
4509
4536
|
|
4510
4537
|
if (typeof config !== 'string') {
|
4511
4538
|
return;
|
@@ -4541,7 +4568,7 @@
|
|
4541
4568
|
|
4542
4569
|
/**
|
4543
4570
|
* --------------------------------------------------------------------------
|
4544
|
-
* Bootstrap (v5.0.
|
4571
|
+
* Bootstrap (v5.0.2): tab.js
|
4545
4572
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
4546
4573
|
* --------------------------------------------------------------------------
|
4547
4574
|
*/
|
@@ -4696,7 +4723,7 @@
|
|
4696
4723
|
|
4697
4724
|
static jQueryInterface(config) {
|
4698
4725
|
return this.each(function () {
|
4699
|
-
const data =
|
4726
|
+
const data = Tab.getOrCreateInstance(this);
|
4700
4727
|
|
4701
4728
|
if (typeof config === 'string') {
|
4702
4729
|
if (typeof data[config] === 'undefined') {
|
@@ -4725,7 +4752,7 @@
|
|
4725
4752
|
return;
|
4726
4753
|
}
|
4727
4754
|
|
4728
|
-
const data =
|
4755
|
+
const data = Tab.getOrCreateInstance(this);
|
4729
4756
|
data.show();
|
4730
4757
|
});
|
4731
4758
|
/**
|
@@ -4739,7 +4766,7 @@
|
|
4739
4766
|
|
4740
4767
|
/**
|
4741
4768
|
* --------------------------------------------------------------------------
|
4742
|
-
* Bootstrap (v5.0.
|
4769
|
+
* Bootstrap (v5.0.2): toast.js
|
4743
4770
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
4744
4771
|
* --------------------------------------------------------------------------
|
4745
4772
|
*/
|
@@ -4939,13 +4966,7 @@
|
|
4939
4966
|
|
4940
4967
|
static jQueryInterface(config) {
|
4941
4968
|
return this.each(function () {
|
4942
|
-
|
4943
|
-
|
4944
|
-
const _config = typeof config === 'object' && config;
|
4945
|
-
|
4946
|
-
if (!data) {
|
4947
|
-
data = new Toast(this, _config);
|
4948
|
-
}
|
4969
|
+
const data = Toast.getOrCreateInstance(this, config);
|
4949
4970
|
|
4950
4971
|
if (typeof config === 'string') {
|
4951
4972
|
if (typeof data[config] === 'undefined') {
|
@@ -4970,7 +4991,7 @@
|
|
4970
4991
|
|
4971
4992
|
/**
|
4972
4993
|
* --------------------------------------------------------------------------
|
4973
|
-
* Bootstrap (v5.0.
|
4994
|
+
* Bootstrap (v5.0.2): index.umd.js
|
4974
4995
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
4975
4996
|
* --------------------------------------------------------------------------
|
4976
4997
|
*/
|