bootstrap 5.1.3 → 5.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -4
  3. data/assets/javascripts/bootstrap/alert.js +11 -146
  4. data/assets/javascripts/bootstrap/base-component.js +37 -120
  5. data/assets/javascripts/bootstrap/button.js +10 -74
  6. data/assets/javascripts/bootstrap/carousel.js +213 -485
  7. data/assets/javascripts/bootstrap/collapse.js +65 -249
  8. data/assets/javascripts/bootstrap/dom/data.js +3 -5
  9. data/assets/javascripts/bootstrap/dom/event-handler.js +94 -132
  10. data/assets/javascripts/bootstrap/dom/manipulator.js +23 -27
  11. data/assets/javascripts/bootstrap/dom/selector-engine.js +16 -58
  12. data/assets/javascripts/bootstrap/dropdown.js +103 -317
  13. data/assets/javascripts/bootstrap/modal.js +107 -749
  14. data/assets/javascripts/bootstrap/offcanvas.js +90 -659
  15. data/assets/javascripts/bootstrap/popover.js +36 -118
  16. data/assets/javascripts/bootstrap/scrollspy.js +183 -262
  17. data/assets/javascripts/bootstrap/tab.js +215 -214
  18. data/assets/javascripts/bootstrap/toast.js +28 -214
  19. data/assets/javascripts/bootstrap/tooltip.js +272 -611
  20. data/assets/javascripts/bootstrap/util/backdrop.js +165 -0
  21. data/assets/javascripts/bootstrap/util/component-functions.js +46 -0
  22. data/assets/javascripts/bootstrap/util/config.js +79 -0
  23. data/assets/javascripts/bootstrap/util/focustrap.js +129 -0
  24. data/assets/javascripts/bootstrap/util/index.js +350 -0
  25. data/assets/javascripts/bootstrap/util/sanitizer.js +122 -0
  26. data/assets/javascripts/bootstrap/util/scrollbar.js +138 -0
  27. data/assets/javascripts/bootstrap/util/swipe.js +155 -0
  28. data/assets/javascripts/bootstrap/util/template-factory.js +177 -0
  29. data/assets/javascripts/bootstrap-global-this-define.js +1 -1
  30. data/assets/javascripts/bootstrap-sprockets.js +10 -1
  31. data/assets/javascripts/bootstrap.js +2077 -1859
  32. data/assets/javascripts/bootstrap.min.js +3 -3
  33. data/assets/stylesheets/_bootstrap-grid.scss +3 -6
  34. data/assets/stylesheets/_bootstrap-reboot.scss +3 -7
  35. data/assets/stylesheets/_bootstrap.scss +4 -6
  36. data/assets/stylesheets/bootstrap/_accordion.scss +56 -25
  37. data/assets/stylesheets/bootstrap/_alert.scss +18 -4
  38. data/assets/stylesheets/bootstrap/_badge.scss +14 -5
  39. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -10
  40. data/assets/stylesheets/bootstrap/_button-group.scss +4 -1
  41. data/assets/stylesheets/bootstrap/_buttons.scss +120 -30
  42. data/assets/stylesheets/bootstrap/_card.scss +55 -37
  43. data/assets/stylesheets/bootstrap/_close.scss +1 -1
  44. data/assets/stylesheets/bootstrap/_containers.scss +1 -1
  45. data/assets/stylesheets/bootstrap/_dropdown.scss +85 -76
  46. data/assets/stylesheets/bootstrap/_functions.scss +8 -8
  47. data/assets/stylesheets/bootstrap/_grid.scss +3 -3
  48. data/assets/stylesheets/bootstrap/_helpers.scss +1 -0
  49. data/assets/stylesheets/bootstrap/_list-group.scss +48 -30
  50. data/assets/stylesheets/bootstrap/_maps.scss +54 -0
  51. data/assets/stylesheets/bootstrap/_modal.scss +71 -43
  52. data/assets/stylesheets/bootstrap/_nav.scss +53 -20
  53. data/assets/stylesheets/bootstrap/_navbar.scss +93 -150
  54. data/assets/stylesheets/bootstrap/_offcanvas.scss +120 -59
  55. data/assets/stylesheets/bootstrap/_pagination.scss +66 -21
  56. data/assets/stylesheets/bootstrap/_placeholders.scss +1 -1
  57. data/assets/stylesheets/bootstrap/_popover.scss +90 -52
  58. data/assets/stylesheets/bootstrap/_progress.scss +20 -9
  59. data/assets/stylesheets/bootstrap/_reboot.scss +25 -40
  60. data/assets/stylesheets/bootstrap/_root.scss +40 -21
  61. data/assets/stylesheets/bootstrap/_spinners.scss +38 -22
  62. data/assets/stylesheets/bootstrap/_tables.scss +32 -23
  63. data/assets/stylesheets/bootstrap/_toasts.scss +36 -16
  64. data/assets/stylesheets/bootstrap/_tooltip.scss +61 -56
  65. data/assets/stylesheets/bootstrap/_type.scss +2 -0
  66. data/assets/stylesheets/bootstrap/_utilities.scss +43 -26
  67. data/assets/stylesheets/bootstrap/_variables.scss +128 -135
  68. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +3 -6
  69. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +15 -3
  70. data/assets/stylesheets/bootstrap/forms/_form-check.scss +28 -5
  71. data/assets/stylesheets/bootstrap/forms/_form-control.scss +12 -37
  72. data/assets/stylesheets/bootstrap/forms/_form-select.scss +0 -1
  73. data/assets/stylesheets/bootstrap/forms/_input-group.scss +19 -8
  74. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +10 -0
  75. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +2 -2
  76. data/assets/stylesheets/bootstrap/helpers/_position.scss +7 -1
  77. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
  78. data/assets/stylesheets/bootstrap/helpers/_vr.scss +1 -1
  79. data/assets/stylesheets/bootstrap/mixins/_alert.scss +7 -3
  80. data/assets/stylesheets/bootstrap/mixins/_banner.scss +9 -0
  81. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +8 -8
  82. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
  83. data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
  84. data/assets/stylesheets/bootstrap/mixins/_forms.scss +18 -10
  85. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
  86. data/assets/stylesheets/bootstrap/mixins/_grid.scss +12 -12
  87. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
  88. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  89. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
  90. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +13 -5
  91. data/bootstrap.gemspec +1 -1
  92. data/lib/bootstrap/version.rb +2 -2
  93. data/tasks/updater/js.rb +10 -5
  94. metadata +16 -4
@@ -2,7 +2,9 @@
2
2
  .dropup,
3
3
  .dropend,
4
4
  .dropdown,
5
- .dropstart {
5
+ .dropstart,
6
+ .dropup-center,
7
+ .dropdown-center {
6
8
  position: relative;
7
9
  }
8
10
 
@@ -15,26 +17,67 @@
15
17
 
16
18
  // The dropdown menu
17
19
  .dropdown-menu {
20
+ // scss-docs-start dropdown-css-vars
21
+ --#{$prefix}dropdown-zindex: #{$zindex-dropdown};
22
+ --#{$prefix}dropdown-min-width: #{$dropdown-min-width};
23
+ --#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};
24
+ --#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};
25
+ --#{$prefix}dropdown-spacer: #{$dropdown-spacer};
26
+ @include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size);
27
+ --#{$prefix}dropdown-color: #{$dropdown-color};
28
+ --#{$prefix}dropdown-bg: #{$dropdown-bg};
29
+ --#{$prefix}dropdown-border-color: #{$dropdown-border-color};
30
+ --#{$prefix}dropdown-border-radius: #{$dropdown-border-radius};
31
+ --#{$prefix}dropdown-border-width: #{$dropdown-border-width};
32
+ --#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius};
33
+ --#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg};
34
+ --#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y};
35
+ --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow};
36
+ --#{$prefix}dropdown-link-color: #{$dropdown-link-color};
37
+ --#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color};
38
+ --#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg};
39
+ --#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color};
40
+ --#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg};
41
+ --#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color};
42
+ --#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x};
43
+ --#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y};
44
+ --#{$prefix}dropdown-header-color: #{$dropdown-header-color};
45
+ --#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x};
46
+ --#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y};
47
+ // scss-docs-end dropdown-css-vars
48
+
18
49
  position: absolute;
19
- z-index: $zindex-dropdown;
50
+ z-index: var(--#{$prefix}dropdown-zindex);
20
51
  display: none; // none by default, but block on "open" of the menu
21
- min-width: $dropdown-min-width;
22
- padding: $dropdown-padding-y $dropdown-padding-x;
52
+ min-width: var(--#{$prefix}dropdown-min-width);
53
+ padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x);
23
54
  margin: 0; // Override default margin of ul
24
- @include font-size($dropdown-font-size);
25
- color: $dropdown-color;
55
+ @include font-size(var(--#{$prefix}dropdown-font-size));
56
+ color: var(--#{$prefix}dropdown-color);
26
57
  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
27
58
  list-style: none;
28
- background-color: $dropdown-bg;
59
+ background-color: var(--#{$prefix}dropdown-bg);
29
60
  background-clip: padding-box;
30
- border: $dropdown-border-width solid $dropdown-border-color;
31
- @include border-radius($dropdown-border-radius);
32
- @include box-shadow($dropdown-box-shadow);
61
+ border: var(--#{$prefix}dropdown-border-width) solid var(--#{$prefix}dropdown-border-color);
62
+ @include border-radius(var(--#{$prefix}dropdown-border-radius));
63
+ @include box-shadow(var(--#{$prefix}dropdown-box-shadow));
33
64
 
34
65
  &[data-bs-popper] {
35
66
  top: 100%;
36
67
  left: 0;
37
- margin-top: $dropdown-spacer;
68
+ margin-top: var(--#{$prefix}dropdown-spacer);
69
+ }
70
+
71
+ @if $dropdown-padding-y == 0 {
72
+ > .dropdown-item:first-child,
73
+ > li:first-child .dropdown-item {
74
+ @include border-top-radius(var(--#{$prefix}dropdown-inner-border-radius));
75
+ }
76
+ > .dropdown-item:last-child,
77
+ > li:last-child .dropdown-item {
78
+ @include border-bottom-radius(var(--#{$prefix}dropdown-inner-border-radius));
79
+ }
80
+
38
81
  }
39
82
  }
40
83
 
@@ -74,7 +117,7 @@
74
117
  top: auto;
75
118
  bottom: 100%;
76
119
  margin-top: 0;
77
- margin-bottom: $dropdown-spacer;
120
+ margin-bottom: var(--#{$prefix}dropdown-spacer);
78
121
  }
79
122
 
80
123
  .dropdown-toggle {
@@ -88,7 +131,7 @@
88
131
  right: auto;
89
132
  left: 100%;
90
133
  margin-top: 0;
91
- margin-left: $dropdown-spacer;
134
+ margin-left: var(--#{$prefix}dropdown-spacer);
92
135
  }
93
136
 
94
137
  .dropdown-toggle {
@@ -105,7 +148,7 @@
105
148
  right: 100%;
106
149
  left: auto;
107
150
  margin-top: 0;
108
- margin-right: $dropdown-spacer;
151
+ margin-right: var(--#{$prefix}dropdown-spacer);
109
152
  }
110
153
 
111
154
  .dropdown-toggle {
@@ -120,9 +163,10 @@
120
163
  // Dividers (basically an `<hr>`) within the dropdown
121
164
  .dropdown-divider {
122
165
  height: 0;
123
- margin: $dropdown-divider-margin-y 0;
166
+ margin: var(--#{$prefix}dropdown-divider-margin-y) 0;
124
167
  overflow: hidden;
125
- border-top: 1px solid $dropdown-divider-bg;
168
+ border-top: 1px solid var(--#{$prefix}dropdown-divider-bg);
169
+ opacity: 1; // Revisit in v6 to de-dupe styles that conflict with <hr> element
126
170
  }
127
171
 
128
172
  // Links, buttons, and more within the dropdown menu
@@ -131,45 +175,33 @@
131
175
  .dropdown-item {
132
176
  display: block;
133
177
  width: 100%; // For `<button>`s
134
- padding: $dropdown-item-padding-y $dropdown-item-padding-x;
178
+ padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
135
179
  clear: both;
136
180
  font-weight: $font-weight-normal;
137
- color: $dropdown-link-color;
181
+ color: var(--#{$prefix}dropdown-link-color);
138
182
  text-align: inherit; // For `<button>`s
139
183
  text-decoration: if($link-decoration == none, null, none);
140
184
  white-space: nowrap; // prevent links from randomly breaking onto new lines
141
185
  background-color: transparent; // For `<button>`s
142
186
  border: 0; // For `<button>`s
143
187
 
144
- // Prevent dropdown overflow if there's no padding
145
- // See https://github.com/twbs/bootstrap/pull/27703
146
- @if $dropdown-padding-y == 0 {
147
- &:first-child {
148
- @include border-top-radius($dropdown-inner-border-radius);
149
- }
150
-
151
- &:last-child {
152
- @include border-bottom-radius($dropdown-inner-border-radius);
153
- }
154
- }
155
-
156
188
  &:hover,
157
189
  &:focus {
158
- color: $dropdown-link-hover-color;
190
+ color: var(--#{$prefix}dropdown-link-hover-color);
159
191
  text-decoration: if($link-hover-decoration == underline, none, null);
160
- @include gradient-bg($dropdown-link-hover-bg);
192
+ @include gradient-bg(var(--#{$prefix}dropdown-link-hover-bg));
161
193
  }
162
194
 
163
195
  &.active,
164
196
  &:active {
165
- color: $dropdown-link-active-color;
197
+ color: var(--#{$prefix}dropdown-link-active-color);
166
198
  text-decoration: none;
167
- @include gradient-bg($dropdown-link-active-bg);
199
+ @include gradient-bg(var(--#{$prefix}dropdown-link-active-bg));
168
200
  }
169
201
 
170
202
  &.disabled,
171
203
  &:disabled {
172
- color: $dropdown-link-disabled-color;
204
+ color: var(--#{$prefix}dropdown-link-disabled-color);
173
205
  pointer-events: none;
174
206
  background-color: transparent;
175
207
  // Remove CSS gradients if they're enabled
@@ -184,57 +216,34 @@
184
216
  // Dropdown section headers
185
217
  .dropdown-header {
186
218
  display: block;
187
- padding: $dropdown-header-padding;
219
+ padding: var(--#{$prefix}dropdown-header-padding-y) var(--#{$prefix}dropdown-header-padding-x);
188
220
  margin-bottom: 0; // for use with heading elements
189
221
  @include font-size($font-size-sm);
190
- color: $dropdown-header-color;
222
+ color: var(--#{$prefix}dropdown-header-color);
191
223
  white-space: nowrap; // as with > li > a
192
224
  }
193
225
 
194
226
  // Dropdown text
195
227
  .dropdown-item-text {
196
228
  display: block;
197
- padding: $dropdown-item-padding-y $dropdown-item-padding-x;
198
- color: $dropdown-link-color;
229
+ padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
230
+ color: var(--#{$prefix}dropdown-link-color);
199
231
  }
200
232
 
201
233
  // Dark dropdowns
202
234
  .dropdown-menu-dark {
203
- color: $dropdown-dark-color;
204
- background-color: $dropdown-dark-bg;
205
- border-color: $dropdown-dark-border-color;
206
- @include box-shadow($dropdown-dark-box-shadow);
207
-
208
- .dropdown-item {
209
- color: $dropdown-dark-link-color;
210
-
211
- &:hover,
212
- &:focus {
213
- color: $dropdown-dark-link-hover-color;
214
- @include gradient-bg($dropdown-dark-link-hover-bg);
215
- }
216
-
217
- &.active,
218
- &:active {
219
- color: $dropdown-dark-link-active-color;
220
- @include gradient-bg($dropdown-dark-link-active-bg);
221
- }
222
-
223
- &.disabled,
224
- &:disabled {
225
- color: $dropdown-dark-link-disabled-color;
226
- }
227
- }
228
-
229
- .dropdown-divider {
230
- border-color: $dropdown-dark-divider-bg;
231
- }
232
-
233
- .dropdown-item-text {
234
- color: $dropdown-dark-link-color;
235
- }
236
-
237
- .dropdown-header {
238
- color: $dropdown-dark-header-color;
239
- }
235
+ // scss-docs-start dropdown-dark-css-vars
236
+ --#{$prefix}dropdown-color: #{$dropdown-dark-color};
237
+ --#{$prefix}dropdown-bg: #{$dropdown-dark-bg};
238
+ --#{$prefix}dropdown-border-color: #{$dropdown-dark-border-color};
239
+ --#{$prefix}dropdown-box-shadow: #{$dropdown-dark-box-shadow};
240
+ --#{$prefix}dropdown-link-color: #{$dropdown-dark-link-color};
241
+ --#{$prefix}dropdown-link-hover-color: #{$dropdown-dark-link-hover-color};
242
+ --#{$prefix}dropdown-divider-bg: #{$dropdown-dark-divider-bg};
243
+ --#{$prefix}dropdown-link-hover-bg: #{$dropdown-dark-link-hover-bg};
244
+ --#{$prefix}dropdown-link-active-color: #{$dropdown-dark-link-active-color};
245
+ --#{$prefix}dropdown-link-active-bg: #{$dropdown-dark-link-active-bg};
246
+ --#{$prefix}dropdown-link-disabled-color: #{$dropdown-dark-link-disabled-color};
247
+ --#{$prefix}dropdown-header-color: #{$dropdown-dark-header-color};
248
+ // scss-docs-end dropdown-dark-css-vars
240
249
  }
@@ -40,11 +40,11 @@
40
40
  // stylelint-disable scss/dollar-variable-pattern
41
41
  @function rgba-css-var($identifier, $target) {
42
42
  @if $identifier == "body" and $target == "bg" {
43
- @return rgba(var(--#{$variable-prefix}#{$identifier}-bg-rgb), var(--#{$variable-prefix}#{$target}-opacity));
43
+ @return rgba(var(--#{$prefix}#{$identifier}-bg-rgb), var(--#{$prefix}#{$target}-opacity));
44
44
  } @if $identifier == "body" and $target == "text" {
45
- @return rgba(var(--#{$variable-prefix}#{$identifier}-color-rgb), var(--#{$variable-prefix}#{$target}-opacity));
45
+ @return rgba(var(--#{$prefix}#{$identifier}-color-rgb), var(--#{$prefix}#{$target}-opacity));
46
46
  } @else {
47
- @return rgba(var(--#{$variable-prefix}#{$identifier}-rgb), var(--#{$variable-prefix}#{$target}-opacity));
47
+ @return rgba(var(--#{$prefix}#{$identifier}-rgb), var(--#{$prefix}#{$target}-opacity));
48
48
  }
49
49
  }
50
50
 
@@ -68,7 +68,7 @@
68
68
  @function varify($list) {
69
69
  $result: null;
70
70
  @each $entry in $list {
71
- $result: append($result, var(--#{$variable-prefix}#{$entry}), space);
71
+ $result: append($result, var(--#{$prefix}#{$entry}), space);
72
72
  }
73
73
  @return $result;
74
74
  }
@@ -109,7 +109,7 @@
109
109
  // Replace `$search` with `$replace` in `$string`
110
110
  // Used on our SVG icon backgrounds for custom forms.
111
111
  //
112
- // @author Hugo Giraudel
112
+ // @author Kitty Giraudel
113
113
  // @param {String} $string - Initial string
114
114
  // @param {String} $search - Substring to replace
115
115
  // @param {String} $replace ('') - New value
@@ -177,9 +177,9 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
177
177
  @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
178
178
  }
179
179
 
180
- // Return WCAG2.0 relative luminance
181
- // See https://www.w3.org/WAI/GL/wiki/Relative_luminance
182
- // See https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests
180
+ // Return WCAG2.1 relative luminance
181
+ // See https://www.w3.org/TR/WCAG/#dfn-relative-luminance
182
+ // See https://www.w3.org/TR/WCAG/#dfn-contrast-ratio
183
183
  @function luminance($color) {
184
184
  $rgb: (
185
185
  "r": red($color),
@@ -15,9 +15,9 @@
15
15
  @if $enable-cssgrid {
16
16
  .grid {
17
17
  display: grid;
18
- grid-template-rows: repeat(var(--#{$variable-prefix}rows, 1), 1fr);
19
- grid-template-columns: repeat(var(--#{$variable-prefix}columns, #{$grid-columns}), 1fr);
20
- gap: var(--#{$variable-prefix}gap, #{$grid-gutter-width});
18
+ grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);
19
+ grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);
20
+ gap: var(--#{$prefix}gap, #{$grid-gutter-width});
21
21
 
22
22
  @include make-cssgrid();
23
23
  }
@@ -1,4 +1,5 @@
1
1
  @import "helpers/clearfix";
2
+ @import "helpers/color-bg";
2
3
  @import "helpers/colored-links";
3
4
  @import "helpers/ratio";
4
5
  @import "helpers/position";
@@ -3,27 +3,46 @@
3
3
  // Easily usable on <ul>, <ol>, or <div>.
4
4
 
5
5
  .list-group {
6
+ // scss-docs-start list-group-css-vars
7
+ --#{$prefix}list-group-color: #{$list-group-color};
8
+ --#{$prefix}list-group-bg: #{$list-group-bg};
9
+ --#{$prefix}list-group-border-color: #{$list-group-border-color};
10
+ --#{$prefix}list-group-border-width: #{$list-group-border-width};
11
+ --#{$prefix}list-group-border-radius: #{$list-group-border-radius};
12
+ --#{$prefix}list-group-item-padding-x: #{$list-group-item-padding-x};
13
+ --#{$prefix}list-group-item-padding-y: #{$list-group-item-padding-y};
14
+ --#{$prefix}list-group-action-color: #{$list-group-action-color};
15
+ --#{$prefix}list-group-action-hover-color: #{$list-group-action-hover-color};
16
+ --#{$prefix}list-group-action-hover-bg: #{$list-group-hover-bg};
17
+ --#{$prefix}list-group-action-active-color: #{$list-group-action-active-color};
18
+ --#{$prefix}list-group-action-active-bg: #{$list-group-action-active-bg};
19
+ --#{$prefix}list-group-disabled-color: #{$list-group-disabled-color};
20
+ --#{$prefix}list-group-disabled-bg: #{$list-group-disabled-bg};
21
+ --#{$prefix}list-group-active-color: #{$list-group-active-color};
22
+ --#{$prefix}list-group-active-bg: #{$list-group-active-bg};
23
+ --#{$prefix}list-group-active-border-color: #{$list-group-active-border-color};
24
+ // scss-docs-end list-group-css-vars
25
+
6
26
  display: flex;
7
27
  flex-direction: column;
8
28
 
9
29
  // No need to set list-style: none; since .list-group-item is block level
10
30
  padding-left: 0; // reset padding because ul and ol
11
31
  margin-bottom: 0;
12
- @include border-radius($list-group-border-radius);
32
+ @include border-radius(var(--#{$prefix}list-group-border-radius));
13
33
  }
14
34
 
15
35
  .list-group-numbered {
16
36
  list-style-type: none;
17
37
  counter-reset: section;
18
38
 
19
- > li::before {
39
+ > .list-group-item::before {
20
40
  // Increments only this instance of the section counter
21
41
  content: counters(section, ".") ". ";
22
42
  counter-increment: section;
23
43
  }
24
44
  }
25
45
 
26
-
27
46
  // Interactive list items
28
47
  //
29
48
  // Use anchor or button elements instead of `li`s or `div`s to create interactive
@@ -31,25 +50,24 @@
31
50
 
32
51
  .list-group-item-action {
33
52
  width: 100%; // For `<button>`s (anchors become 100% by default though)
34
- color: $list-group-action-color;
53
+ color: var(--#{$prefix}list-group-action-color);
35
54
  text-align: inherit; // For `<button>`s (anchors inherit)
36
55
 
37
56
  // Hover state
38
57
  &:hover,
39
58
  &:focus {
40
59
  z-index: 1; // Place hover/focus items above their siblings for proper border styling
41
- color: $list-group-action-hover-color;
60
+ color: var(--#{$prefix}list-group-action-hover-color);
42
61
  text-decoration: none;
43
- background-color: $list-group-hover-bg;
62
+ background-color: var(--#{$prefix}list-group-action-hover-bg);
44
63
  }
45
64
 
46
65
  &:active {
47
- color: $list-group-action-active-color;
48
- background-color: $list-group-action-active-bg;
66
+ color: var(--#{$prefix}list-group-action-active-color);
67
+ background-color: var(--#{$prefix}list-group-action-active-bg);
49
68
  }
50
69
  }
51
70
 
52
-
53
71
  // Individual list items
54
72
  //
55
73
  // Use on `li`s or `div`s within the `.list-group` parent.
@@ -57,11 +75,11 @@
57
75
  .list-group-item {
58
76
  position: relative;
59
77
  display: block;
60
- padding: $list-group-item-padding-y $list-group-item-padding-x;
61
- color: $list-group-color;
78
+ padding: var(--#{$prefix}list-group-item-padding-y) var(--#{$prefix}list-group-item-padding-x);
79
+ color: var(--#{$prefix}list-group-color);
62
80
  text-decoration: if($link-decoration == none, null, none);
63
- background-color: $list-group-bg;
64
- border: $list-group-border-width solid $list-group-border-color;
81
+ background-color: var(--#{$prefix}list-group-bg);
82
+ border: var(--#{$prefix}list-group-border-width) solid var(--#{$prefix}list-group-border-color);
65
83
 
66
84
  &:first-child {
67
85
  @include border-top-radius(inherit);
@@ -73,30 +91,30 @@
73
91
 
74
92
  &.disabled,
75
93
  &:disabled {
76
- color: $list-group-disabled-color;
94
+ color: var(--#{$prefix}list-group-disabled-color);
77
95
  pointer-events: none;
78
- background-color: $list-group-disabled-bg;
96
+ background-color: var(--#{$prefix}list-group-disabled-bg);
79
97
  }
80
98
 
81
99
  // Include both here for `<a>`s and `<button>`s
82
100
  &.active {
83
101
  z-index: 2; // Place active items above their siblings for proper border styling
84
- color: $list-group-active-color;
85
- background-color: $list-group-active-bg;
86
- border-color: $list-group-active-border-color;
102
+ color: var(--#{$prefix}list-group-active-color);
103
+ background-color: var(--#{$prefix}list-group-active-bg);
104
+ border-color: var(--#{$prefix}list-group-active-border-color);
87
105
  }
88
106
 
89
- & + & {
107
+ // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector
108
+ & + .list-group-item {
90
109
  border-top-width: 0;
91
110
 
92
111
  &.active {
93
- margin-top: -$list-group-border-width;
94
- border-top-width: $list-group-border-width;
112
+ margin-top: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
113
+ border-top-width: var(--#{$prefix}list-group-border-width);
95
114
  }
96
115
  }
97
116
  }
98
117
 
99
-
100
118
  // Horizontal
101
119
  //
102
120
  // Change the layout of list group items from vertical (default) to horizontal.
@@ -109,13 +127,13 @@
109
127
  flex-direction: row;
110
128
 
111
129
  > .list-group-item {
112
- &:first-child {
113
- @include border-bottom-start-radius($list-group-border-radius);
130
+ &:first-child:not(:last-child) {
131
+ @include border-bottom-start-radius(var(--#{$prefix}list-group-border-radius));
114
132
  @include border-top-end-radius(0);
115
133
  }
116
134
 
117
- &:last-child {
118
- @include border-top-end-radius($list-group-border-radius);
135
+ &:last-child:not(:first-child) {
136
+ @include border-top-end-radius(var(--#{$prefix}list-group-border-radius));
119
137
  @include border-bottom-start-radius(0);
120
138
  }
121
139
 
@@ -124,12 +142,12 @@
124
142
  }
125
143
 
126
144
  + .list-group-item {
127
- border-top-width: $list-group-border-width;
145
+ border-top-width: var(--#{$prefix}list-group-border-width);
128
146
  border-left-width: 0;
129
147
 
130
148
  &.active {
131
- margin-left: -$list-group-border-width;
132
- border-left-width: $list-group-border-width;
149
+ margin-left: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
150
+ border-left-width: var(--#{$prefix}list-group-border-width);
133
151
  }
134
152
  }
135
153
  }
@@ -147,7 +165,7 @@
147
165
  @include border-radius(0);
148
166
 
149
167
  > .list-group-item {
150
- border-width: 0 0 $list-group-border-width;
168
+ border-width: 0 0 var(--#{$prefix}list-group-border-width);
151
169
 
152
170
  &:last-child {
153
171
  border-bottom-width: 0;
@@ -0,0 +1,54 @@
1
+ // Re-assigned maps
2
+ //
3
+ // Placed here so that others can override the default Sass maps and see automatic updates to utilities and more.
4
+
5
+ // scss-docs-start theme-colors-rgb
6
+ $theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
7
+ // scss-docs-end theme-colors-rgb
8
+
9
+ // Utilities maps
10
+ //
11
+ // Extends the default `$theme-colors` maps to help create our utilities.
12
+
13
+ // Come v6, we'll de-dupe these variables. Until then, for backward compatibility, we keep them to reassign.
14
+ // scss-docs-start utilities-colors
15
+ $utilities-colors: $theme-colors-rgb !default;
16
+ // scss-docs-end utilities-colors
17
+
18
+ // scss-docs-start utilities-text-colors
19
+ $utilities-text: map-merge(
20
+ $utilities-colors,
21
+ (
22
+ "black": to-rgb($black),
23
+ "white": to-rgb($white),
24
+ "body": to-rgb($body-color)
25
+ )
26
+ ) !default;
27
+ $utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
28
+ // scss-docs-end utilities-text-colors
29
+
30
+ // scss-docs-start utilities-bg-colors
31
+ $utilities-bg: map-merge(
32
+ $utilities-colors,
33
+ (
34
+ "black": to-rgb($black),
35
+ "white": to-rgb($white),
36
+ "body": to-rgb($body-bg)
37
+ )
38
+ ) !default;
39
+ $utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
40
+ // scss-docs-end utilities-bg-colors
41
+
42
+ // scss-docs-start utilities-border-colors
43
+ $utilities-border: map-merge(
44
+ $utilities-colors,
45
+ (
46
+ "white": to-rgb($white)
47
+ )
48
+ ) !default;
49
+ $utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
50
+ // scss-docs-end utilities-border-colors
51
+
52
+ $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
53
+
54
+ $gutters: $spacers !default;