bootstrap 5.0.0.beta3 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/assets/javascripts/bootstrap-sprockets.js +1 -1
  4. data/assets/javascripts/bootstrap.js +509 -459
  5. data/assets/javascripts/bootstrap.min.js +2 -2
  6. data/assets/javascripts/bootstrap/alert.js +4 -4
  7. data/assets/javascripts/bootstrap/base-component.js +9 -7
  8. data/assets/javascripts/bootstrap/button.js +3 -3
  9. data/assets/javascripts/bootstrap/carousel.js +11 -12
  10. data/assets/javascripts/bootstrap/collapse.js +5 -5
  11. data/assets/javascripts/bootstrap/dom/data.js +2 -2
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +32 -14
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +2 -2
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +2 -2
  15. data/assets/javascripts/bootstrap/dropdown.js +109 -94
  16. data/assets/javascripts/bootstrap/modal.js +262 -177
  17. data/assets/javascripts/bootstrap/offcanvas.js +219 -56
  18. data/assets/javascripts/bootstrap/popover.js +3 -3
  19. data/assets/javascripts/bootstrap/scrollspy.js +18 -22
  20. data/assets/javascripts/bootstrap/tab.js +21 -8
  21. data/assets/javascripts/bootstrap/toast.js +4 -5
  22. data/assets/javascripts/bootstrap/tooltip.js +7 -9
  23. data/assets/stylesheets/_bootstrap-grid.scss +1 -1
  24. data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
  25. data/assets/stylesheets/_bootstrap.scss +1 -1
  26. data/assets/stylesheets/bootstrap/_accordion.scss +4 -2
  27. data/assets/stylesheets/bootstrap/_dropdown.scss +7 -13
  28. data/assets/stylesheets/bootstrap/_list-group.scss +1 -1
  29. data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
  30. data/assets/stylesheets/bootstrap/_modal.scss +0 -9
  31. data/assets/stylesheets/bootstrap/_offcanvas.scss +11 -11
  32. data/assets/stylesheets/bootstrap/_spinners.scss +2 -2
  33. data/assets/stylesheets/bootstrap/_variables.scss +7 -7
  34. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
  35. data/assets/stylesheets/bootstrap/forms/_form-control.scss +5 -5
  36. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  37. data/assets/stylesheets/bootstrap/mixins/_forms.scss +7 -4
  38. data/assets/stylesheets/bootstrap/mixins/_grid.scss +8 -3
  39. data/bootstrap.gemspec +1 -1
  40. data/lib/bootstrap/version.rb +2 -2
  41. data/tasks/updater/js.rb +1 -1
  42. metadata +7 -6
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap popover.js v5.0.0-beta3 (https://getbootstrap.com/)
2
+ * Bootstrap popover.js v5.0.0 (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
  */
@@ -17,7 +17,7 @@
17
17
 
18
18
  /**
19
19
  * --------------------------------------------------------------------------
20
- * Bootstrap (v5.0.0-beta3): util/index.js
20
+ * Bootstrap (v5.0.0): util/index.js
21
21
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
22
22
  * --------------------------------------------------------------------------
23
23
  */
@@ -62,7 +62,7 @@
62
62
 
63
63
  /**
64
64
  * --------------------------------------------------------------------------
65
- * Bootstrap (v5.0.0-beta3): popover.js
65
+ * Bootstrap (v5.0.0): popover.js
66
66
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
67
67
  * --------------------------------------------------------------------------
68
68
  */
@@ -1,17 +1,16 @@
1
1
  /*!
2
- * Bootstrap scrollspy.js v5.0.0-beta3 (https://getbootstrap.com/)
2
+ * Bootstrap scrollspy.js v5.0.0 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
10
- }(this, (function (Data, EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
10
+ }(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
11
11
 
12
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
13
 
14
- var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
14
  var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
16
15
  var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
17
16
  var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
@@ -19,7 +18,7 @@
19
18
 
20
19
  /**
21
20
  * --------------------------------------------------------------------------
22
- * Bootstrap (v5.0.0-beta3): util/index.js
21
+ * Bootstrap (v5.0.0): util/index.js
23
22
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24
23
  * --------------------------------------------------------------------------
25
24
  */
@@ -62,7 +61,7 @@
62
61
 
63
62
 
64
63
  if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
65
- hrefAttr = '#' + hrefAttr.split('#')[1];
64
+ hrefAttr = `#${hrefAttr.split('#')[1]}`;
66
65
  }
67
66
 
68
67
  selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
@@ -90,7 +89,7 @@
90
89
  const valueType = value && isElement(value) ? 'element' : toType(value);
91
90
 
92
91
  if (!new RegExp(expectedTypes).test(valueType)) {
93
- throw new TypeError(`${componentName.toUpperCase()}: ` + `Option "${property}" provided type "${valueType}" ` + `but expected type "${expectedTypes}".`);
92
+ throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
94
93
  }
95
94
  });
96
95
  };
@@ -135,7 +134,7 @@
135
134
 
136
135
  /**
137
136
  * --------------------------------------------------------------------------
138
- * Bootstrap (v5.0.0-beta3): scrollspy.js
137
+ * Bootstrap (v5.0.0): scrollspy.js
139
138
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
140
139
  * --------------------------------------------------------------------------
141
140
  */
@@ -248,6 +247,7 @@
248
247
 
249
248
  _getConfig(config) {
250
249
  config = { ...Default,
250
+ ...Manipulator__default['default'].getDataAttributes(this._element),
251
251
  ...(typeof config === 'object' && config ? config : {})
252
252
  };
253
253
 
@@ -356,21 +356,17 @@
356
356
 
357
357
  static jQueryInterface(config) {
358
358
  return this.each(function () {
359
- let data = Data__default['default'].get(this, DATA_KEY);
359
+ const data = ScrollSpy.getInstance(this) || new ScrollSpy(this, typeof config === 'object' ? config : {});
360
360
 
361
- const _config = typeof config === 'object' && config;
362
-
363
- if (!data) {
364
- data = new ScrollSpy(this, _config);
361
+ if (typeof config !== 'string') {
362
+ return;
365
363
  }
366
364
 
367
- if (typeof config === 'string') {
368
- if (typeof data[config] === 'undefined') {
369
- throw new TypeError(`No method named "${config}"`);
370
- }
371
-
372
- data[config]();
365
+ if (typeof data[config] === 'undefined') {
366
+ throw new TypeError(`No method named "${config}"`);
373
367
  }
368
+
369
+ data[config]();
374
370
  });
375
371
  }
376
372
 
@@ -383,7 +379,7 @@
383
379
 
384
380
 
385
381
  EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, () => {
386
- SelectorEngine__default['default'].find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy, Manipulator__default['default'].getDataAttributes(spy)));
382
+ SelectorEngine__default['default'].find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));
387
383
  });
388
384
  /**
389
385
  * ------------------------------------------------------------------------
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap tab.js v5.0.0-beta3 (https://getbootstrap.com/)
2
+ * Bootstrap tab.js v5.0.0 (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
  */
@@ -18,7 +18,7 @@
18
18
 
19
19
  /**
20
20
  * --------------------------------------------------------------------------
21
- * Bootstrap (v5.0.0-beta3): util/index.js
21
+ * Bootstrap (v5.0.0): util/index.js
22
22
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23
23
  * --------------------------------------------------------------------------
24
24
  */
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
  if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
43
- hrefAttr = '#' + hrefAttr.split('#')[1];
43
+ hrefAttr = `#${hrefAttr.split('#')[1]}`;
44
44
  }
45
45
 
46
46
  selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
@@ -157,7 +157,7 @@
157
157
 
158
158
  /**
159
159
  * --------------------------------------------------------------------------
160
- * Bootstrap (v5.0.0-beta3): tab.js
160
+ * Bootstrap (v5.0.0): tab.js
161
161
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
162
162
  * --------------------------------------------------------------------------
163
163
  */
@@ -201,7 +201,7 @@
201
201
 
202
202
 
203
203
  show() {
204
- if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE) || isDisabled(this._element)) {
204
+ if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
205
205
  return;
206
206
  }
207
207
 
@@ -289,11 +289,17 @@
289
289
  element.classList.add(CLASS_NAME_SHOW);
290
290
  }
291
291
 
292
- if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
292
+ let parent = element.parentNode;
293
+
294
+ if (parent && parent.nodeName === 'LI') {
295
+ parent = parent.parentNode;
296
+ }
297
+
298
+ if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
293
299
  const dropdownElement = element.closest(SELECTOR_DROPDOWN);
294
300
 
295
301
  if (dropdownElement) {
296
- SelectorEngine__default['default'].find(SELECTOR_DROPDOWN_TOGGLE).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
302
+ SelectorEngine__default['default'].find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
297
303
  }
298
304
 
299
305
  element.setAttribute('aria-expanded', true);
@@ -328,7 +334,14 @@
328
334
 
329
335
 
330
336
  EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
331
- event.preventDefault();
337
+ if (['A', 'AREA'].includes(this.tagName)) {
338
+ event.preventDefault();
339
+ }
340
+
341
+ if (isDisabled(this)) {
342
+ return;
343
+ }
344
+
332
345
  const data = Data__default['default'].get(this, DATA_KEY) || new Tab(this);
333
346
  data.show();
334
347
  });
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap toast.js v5.0.0-beta3 (https://getbootstrap.com/)
2
+ * Bootstrap toast.js v5.0.0 (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
  */
@@ -18,7 +18,7 @@
18
18
 
19
19
  /**
20
20
  * --------------------------------------------------------------------------
21
- * Bootstrap (v5.0.0-beta3): util/index.js
21
+ * Bootstrap (v5.0.0): util/index.js
22
22
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23
23
  * --------------------------------------------------------------------------
24
24
  */
@@ -87,7 +87,7 @@
87
87
  const valueType = value && isElement(value) ? 'element' : toType(value);
88
88
 
89
89
  if (!new RegExp(expectedTypes).test(valueType)) {
90
- throw new TypeError(`${componentName.toUpperCase()}: ` + `Option "${property}" provided type "${valueType}" ` + `but expected type "${expectedTypes}".`);
90
+ throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
91
91
  }
92
92
  });
93
93
  };
@@ -134,7 +134,7 @@
134
134
 
135
135
  /**
136
136
  * --------------------------------------------------------------------------
137
- * Bootstrap (v5.0.0-beta3): toast.js
137
+ * Bootstrap (v5.0.0): toast.js
138
138
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
139
139
  * --------------------------------------------------------------------------
140
140
  */
@@ -273,7 +273,6 @@
273
273
  this._element.classList.remove(CLASS_NAME_SHOW);
274
274
  }
275
275
 
276
- EventHandler__default['default'].off(this._element, EVENT_CLICK_DISMISS);
277
276
  super.dispose();
278
277
  this._config = null;
279
278
  } // Private
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap tooltip.js v5.0.0-beta3 (https://getbootstrap.com/)
2
+ * Bootstrap tooltip.js v5.0.0 (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
  */
@@ -40,7 +40,7 @@
40
40
 
41
41
  /**
42
42
  * --------------------------------------------------------------------------
43
- * Bootstrap (v5.0.0-beta3): util/index.js
43
+ * Bootstrap (v5.0.0): util/index.js
44
44
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
45
45
  * --------------------------------------------------------------------------
46
46
  */
@@ -124,7 +124,7 @@
124
124
  const valueType = value && isElement(value) ? 'element' : toType(value);
125
125
 
126
126
  if (!new RegExp(expectedTypes).test(valueType)) {
127
- throw new TypeError(`${componentName.toUpperCase()}: ` + `Option "${property}" provided type "${valueType}" ` + `but expected type "${expectedTypes}".`);
127
+ throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
128
128
  }
129
129
  });
130
130
  };
@@ -152,7 +152,7 @@
152
152
  return findShadowRoot(element.parentNode);
153
153
  };
154
154
 
155
- const noop = () => function () {};
155
+ const noop = () => {};
156
156
 
157
157
  const getjQuery = () => {
158
158
  const {
@@ -196,7 +196,7 @@
196
196
 
197
197
  /**
198
198
  * --------------------------------------------------------------------------
199
- * Bootstrap (v5.0.0-beta3): util/sanitizer.js
199
+ * Bootstrap (v5.0.0): util/sanitizer.js
200
200
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
201
201
  * --------------------------------------------------------------------------
202
202
  */
@@ -309,7 +309,7 @@
309
309
 
310
310
  /**
311
311
  * --------------------------------------------------------------------------
312
- * Bootstrap (v5.0.0-beta3): tooltip.js
312
+ * Bootstrap (v5.0.0): tooltip.js
313
313
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
314
314
  * --------------------------------------------------------------------------
315
315
  */
@@ -484,7 +484,6 @@
484
484
 
485
485
  dispose() {
486
486
  clearTimeout(this._timeout);
487
- EventHandler__default['default'].off(this._element, this.constructor.EVENT_KEY);
488
487
  EventHandler__default['default'].off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler);
489
488
 
490
489
  if (this.tip && this.tip.parentNode) {
@@ -569,7 +568,7 @@
569
568
 
570
569
  if ('ontouchstart' in document.documentElement) {
571
570
  [].concat(...document.body.children).forEach(element => {
572
- EventHandler__default['default'].on(element, 'mouseover', noop());
571
+ EventHandler__default['default'].on(element, 'mouseover', noop);
573
572
  });
574
573
  }
575
574
 
@@ -768,7 +767,6 @@
768
767
  modifiers: [{
769
768
  name: 'flip',
770
769
  options: {
771
- altBoundary: true,
772
770
  fallbackPlacements: this.config.fallbackPlacements
773
771
  }
774
772
  }, {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)
2
+ * Bootstrap Grid v5.0.0 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 The Bootstrap Authors
4
4
  * Copyright 2011-2021 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap Reboot v5.0.0-beta3 (https://getbootstrap.com/)
2
+ * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 The Bootstrap Authors
4
4
  * Copyright 2011-2021 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap v5.0.0-beta3 (https://getbootstrap.com/)
2
+ * Bootstrap v5.0.0 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 The Bootstrap Authors
4
4
  * Copyright 2011-2021 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
@@ -58,7 +58,6 @@
58
58
  }
59
59
 
60
60
  .accordion-item {
61
- margin-bottom: -$accordion-border-width;
62
61
  background-color: $accordion-bg;
63
62
  border: $accordion-border-width solid $accordion-border-color;
64
63
 
@@ -70,9 +69,12 @@
70
69
  }
71
70
  }
72
71
 
72
+ &:not(:first-of-type) {
73
+ border-top: 0;
74
+ }
75
+
73
76
  // Only set a border-radius on the last item if the accordion is collapsed
74
77
  &:last-of-type {
75
- margin-bottom: 0;
76
78
  @include border-bottom-radius($accordion-border-radius);
77
79
 
78
80
  .accordion-button {
@@ -16,7 +16,6 @@
16
16
  // The dropdown menu
17
17
  .dropdown-menu {
18
18
  position: absolute;
19
- top: 100%;
20
19
  z-index: $zindex-dropdown;
21
20
  display: none; // none by default, but block on "open" of the menu
22
21
  min-width: $dropdown-min-width;
@@ -33,6 +32,7 @@
33
32
  @include box-shadow($dropdown-box-shadow);
34
33
 
35
34
  &[data-bs-popper] {
35
+ top: 100%;
36
36
  left: 0;
37
37
  margin-top: $dropdown-spacer;
38
38
  }
@@ -83,15 +83,12 @@
83
83
  }
84
84
 
85
85
  .dropend {
86
- .dropdown-menu {
86
+ .dropdown-menu[data-bs-popper] {
87
87
  top: 0;
88
88
  right: auto;
89
89
  left: 100%;
90
-
91
- &[data-bs-popper] {
92
- margin-top: 0;
93
- margin-left: $dropdown-spacer;
94
- }
90
+ margin-top: 0;
91
+ margin-left: $dropdown-spacer;
95
92
  }
96
93
 
97
94
  .dropdown-toggle {
@@ -103,15 +100,12 @@
103
100
  }
104
101
 
105
102
  .dropstart {
106
- .dropdown-menu {
103
+ .dropdown-menu[data-bs-popper] {
107
104
  top: 0;
108
105
  right: 100%;
109
106
  left: auto;
110
-
111
- &[data-bs-popper] {
112
- margin-top: 0;
113
- margin-right: $dropdown-spacer;
114
- }
107
+ margin-top: 0;
108
+ margin-right: $dropdown-spacer;
115
109
  }
116
110
 
117
111
  .dropdown-toggle {
@@ -166,7 +166,7 @@
166
166
  $list-group-background: shift-color($value, $list-group-item-bg-scale);
167
167
  $list-group-color: shift-color($value, $list-group-item-color-scale);
168
168
  @if (contrast-ratio($list-group-background, $list-group-color) < $min-contrast-ratio) {
169
- $list-group-color: mix($value, color-contrast($list-group-background), abs($alert-color-scale));
169
+ $list-group-color: mix($value, color-contrast($list-group-background), abs($list-group-item-color-scale));
170
170
  }
171
171
 
172
172
  @include list-group-item-variant($state, $list-group-background, $list-group-color);
@@ -10,6 +10,7 @@
10
10
 
11
11
  // Helpers
12
12
  @import "mixins/breakpoints";
13
+ @import "mixins/color-scheme";
13
14
  @import "mixins/image";
14
15
  @import "mixins/resize";
15
16
  @import "mixins/visually-hidden";
@@ -159,15 +159,6 @@
159
159
  }
160
160
  }
161
161
 
162
- // Measure scrollbar width for padding body during modal show/hide
163
- .modal-scrollbar-measure {
164
- position: absolute;
165
- top: -9999px;
166
- width: 50px;
167
- height: 50px;
168
- overflow: scroll;
169
- }
170
-
171
162
  // Scale up the modal
172
163
  @include media-breakpoint-up(sm) {
173
164
  // Automatically set modal's width for larger viewports