bootstrap 5.1.3 → 5.3.5

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.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +61 -0
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile +1 -0
  5. data/README.md +35 -14
  6. data/Rakefile +16 -5
  7. data/assets/javascripts/bootstrap/alert.js +22 -167
  8. data/assets/javascripts/bootstrap/base-component.js +34 -133
  9. data/assets/javascripts/bootstrap/button.js +19 -86
  10. data/assets/javascripts/bootstrap/carousel.js +209 -564
  11. data/assets/javascripts/bootstrap/collapse.js +78 -324
  12. data/assets/javascripts/bootstrap/dom/data.js +8 -14
  13. data/assets/javascripts/bootstrap/dom/event-handler.js +89 -174
  14. data/assets/javascripts/bootstrap/dom/manipulator.js +22 -39
  15. data/assets/javascripts/bootstrap/dom/selector-engine.js +47 -71
  16. data/assets/javascripts/bootstrap/dropdown.js +135 -420
  17. data/assets/javascripts/bootstrap/modal.js +115 -837
  18. data/assets/javascripts/bootstrap/offcanvas.js +93 -714
  19. data/assets/javascripts/bootstrap/popover.js +42 -130
  20. data/assets/javascripts/bootstrap/scrollspy.js +180 -296
  21. data/assets/javascripts/bootstrap/tab.js +197 -245
  22. data/assets/javascripts/bootstrap/toast.js +52 -276
  23. data/assets/javascripts/bootstrap/tooltip.js +283 -744
  24. data/assets/javascripts/bootstrap/util/backdrop.js +138 -0
  25. data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
  26. data/assets/javascripts/bootstrap/util/config.js +67 -0
  27. data/assets/javascripts/bootstrap/util/focustrap.js +112 -0
  28. data/assets/javascripts/bootstrap/util/index.js +280 -0
  29. data/assets/javascripts/bootstrap/util/sanitizer.js +113 -0
  30. data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
  31. data/assets/javascripts/bootstrap/util/swipe.js +134 -0
  32. data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
  33. data/assets/javascripts/bootstrap-global-this-define.js +1 -1
  34. data/assets/javascripts/bootstrap-sprockets.js +15 -6
  35. data/assets/javascripts/bootstrap.js +2278 -2831
  36. data/assets/javascripts/bootstrap.min.js +3 -3
  37. data/assets/stylesheets/_bootstrap-grid.scss +4 -9
  38. data/assets/stylesheets/_bootstrap-reboot.scss +4 -7
  39. data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
  40. data/assets/stylesheets/_bootstrap.scss +5 -6
  41. data/assets/stylesheets/bootstrap/_accordion.scss +68 -33
  42. data/assets/stylesheets/bootstrap/_alert.scss +25 -14
  43. data/assets/stylesheets/bootstrap/_badge.scss +14 -5
  44. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -10
  45. data/assets/stylesheets/bootstrap/_button-group.scss +12 -4
  46. data/assets/stylesheets/bootstrap/_buttons.scss +133 -28
  47. data/assets/stylesheets/bootstrap/_card.scss +61 -39
  48. data/assets/stylesheets/bootstrap/_carousel.scss +22 -25
  49. data/assets/stylesheets/bootstrap/_close.scss +36 -10
  50. data/assets/stylesheets/bootstrap/_containers.scss +1 -1
  51. data/assets/stylesheets/bootstrap/_dropdown.scss +86 -76
  52. data/assets/stylesheets/bootstrap/_functions.scss +10 -10
  53. data/assets/stylesheets/bootstrap/_grid.scss +9 -3
  54. data/assets/stylesheets/bootstrap/_helpers.scss +3 -0
  55. data/assets/stylesheets/bootstrap/_list-group.scss +81 -56
  56. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  57. data/assets/stylesheets/bootstrap/_mixins.scss +1 -2
  58. data/assets/stylesheets/bootstrap/_modal.scss +76 -45
  59. data/assets/stylesheets/bootstrap/_nav.scss +87 -29
  60. data/assets/stylesheets/bootstrap/_navbar.scss +102 -148
  61. data/assets/stylesheets/bootstrap/_offcanvas.scss +125 -61
  62. data/assets/stylesheets/bootstrap/_pagination.scss +66 -21
  63. data/assets/stylesheets/bootstrap/_placeholders.scss +1 -1
  64. data/assets/stylesheets/bootstrap/_popover.scss +90 -52
  65. data/assets/stylesheets/bootstrap/_progress.scss +31 -11
  66. data/assets/stylesheets/bootstrap/_reboot.scss +32 -46
  67. data/assets/stylesheets/bootstrap/_root.scss +155 -22
  68. data/assets/stylesheets/bootstrap/_spinners.scss +38 -22
  69. data/assets/stylesheets/bootstrap/_tables.scss +40 -24
  70. data/assets/stylesheets/bootstrap/_toasts.scss +38 -16
  71. data/assets/stylesheets/bootstrap/_tooltip.scss +60 -56
  72. data/assets/stylesheets/bootstrap/_type.scss +3 -1
  73. data/assets/stylesheets/bootstrap/_utilities.scss +209 -33
  74. data/assets/stylesheets/bootstrap/_variables-dark.scss +102 -0
  75. data/assets/stylesheets/bootstrap/_variables.scss +415 -303
  76. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +39 -5
  77. data/assets/stylesheets/bootstrap/forms/_form-check.scss +51 -14
  78. data/assets/stylesheets/bootstrap/forms/_form-control.scss +36 -41
  79. data/assets/stylesheets/bootstrap/forms/_form-range.scss +3 -3
  80. data/assets/stylesheets/bootstrap/forms/_form-select.scss +12 -4
  81. data/assets/stylesheets/bootstrap/forms/_input-group.scss +20 -9
  82. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
  83. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +20 -2
  84. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  85. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  86. data/assets/stylesheets/bootstrap/helpers/_position.scss +7 -1
  87. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
  88. data/assets/stylesheets/bootstrap/helpers/_vr.scss +2 -2
  89. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -4
  90. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  91. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +8 -8
  92. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
  93. data/assets/stylesheets/bootstrap/mixins/_caret.scss +30 -25
  94. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  95. data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
  96. data/assets/stylesheets/bootstrap/mixins/_forms.scss +38 -19
  97. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
  98. data/assets/stylesheets/bootstrap/mixins/_grid.scss +15 -15
  99. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
  100. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
  101. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  102. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
  103. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +14 -6
  104. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +6 -2
  105. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +23 -29
  106. data/bootstrap.gemspec +3 -3
  107. data/lib/bootstrap/engine.rb +17 -2
  108. data/lib/bootstrap/version.rb +2 -2
  109. data/tasks/updater/js.rb +10 -5
  110. data/tasks/updater/network.rb +2 -2
  111. data/tasks/updater/scss.rb +2 -2
  112. data/tasks/updater.rb +2 -2
  113. data/test/dummy_rails/config/application.rb +0 -2
  114. data/test/dummy_rails/public/favicon.ico +0 -0
  115. data/test/gemfiles/rails_4_2.gemfile +2 -1
  116. data/test/gemfiles/rails_5_0.gemfile +1 -2
  117. data/test/gemfiles/rails_5_1.gemfile +1 -2
  118. data/test/gemfiles/rails_5_2.gemfile +7 -0
  119. data/test/gemfiles/rails_6_0.gemfile +1 -1
  120. data/test/gemfiles/rails_6_1.gemfile +1 -1
  121. data/test/gemfiles/rails_7_0_dartsass.gemfile +7 -0
  122. data/test/gemfiles/rails_7_0_sassc.gemfile +7 -0
  123. data/test/rails_test.rb +0 -5
  124. data/test/test_helper.rb +3 -2
  125. metadata +49 -29
  126. data/.travis.yml +0 -32
  127. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +0 -18
@@ -42,7 +42,6 @@
42
42
  display: block;
43
43
  }
44
44
 
45
- /* rtl:begin:ignore */
46
45
  .carousel-item-next:not(.carousel-item-start),
47
46
  .active.carousel-item-end {
48
47
  transform: translateX(100%);
@@ -53,8 +52,6 @@
53
52
  transform: translateX(-100%);
54
53
  }
55
54
 
56
- /* rtl:end:ignore */
57
-
58
55
 
59
56
  //
60
57
  // Alternate transitions
@@ -102,6 +99,7 @@
102
99
  color: $carousel-control-color;
103
100
  text-align: center;
104
101
  background: none;
102
+ filter: var(--#{$prefix}carousel-control-icon-filter);
105
103
  border: 0;
106
104
  opacity: $carousel-control-opacity;
107
105
  @include transition($carousel-control-transition);
@@ -135,19 +133,11 @@
135
133
  background-size: 100% 100%;
136
134
  }
137
135
 
138
- /* rtl:options: {
139
- "autoRename": true,
140
- "stringMap":[ {
141
- "name" : "prev-next",
142
- "search" : "prev",
143
- "replace" : "next"
144
- } ]
145
- } */
146
136
  .carousel-control-prev-icon {
147
- background-image: escape-svg($carousel-control-prev-icon-bg);
137
+ background-image: escape-svg($carousel-control-prev-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-next-icon-bg) + "*/"};
148
138
  }
149
139
  .carousel-control-next-icon {
150
- background-image: escape-svg($carousel-control-next-icon-bg);
140
+ background-image: escape-svg($carousel-control-next-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-prev-icon-bg) + "*/"};
151
141
  }
152
142
 
153
143
  // Optional indicator pips/controls
@@ -168,7 +158,6 @@
168
158
  margin-right: $carousel-control-width;
169
159
  margin-bottom: 1rem;
170
160
  margin-left: $carousel-control-width;
171
- list-style: none;
172
161
 
173
162
  [data-bs-target] {
174
163
  box-sizing: content-box;
@@ -180,7 +169,7 @@
180
169
  margin-left: $carousel-indicator-spacer;
181
170
  text-indent: -999px;
182
171
  cursor: pointer;
183
- background-color: $carousel-indicator-active-bg;
172
+ background-color: var(--#{$prefix}carousel-indicator-active-bg);
184
173
  background-clip: padding-box;
185
174
  border: 0;
186
175
  // Use transparent borders to increase the hit area by 10px on top and bottom.
@@ -207,23 +196,31 @@
207
196
  left: (100% - $carousel-caption-width) * .5;
208
197
  padding-top: $carousel-caption-padding-y;
209
198
  padding-bottom: $carousel-caption-padding-y;
210
- color: $carousel-caption-color;
199
+ color: var(--#{$prefix}carousel-caption-color);
211
200
  text-align: center;
212
201
  }
213
202
 
214
203
  // Dark mode carousel
215
204
 
205
+ @mixin carousel-dark() {
206
+ --#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg-dark};
207
+ --#{$prefix}carousel-caption-color: #{$carousel-caption-color-dark};
208
+ --#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter-dark};
209
+ }
210
+
216
211
  .carousel-dark {
217
- .carousel-control-prev-icon,
218
- .carousel-control-next-icon {
219
- filter: $carousel-dark-control-icon-filter;
220
- }
212
+ @include carousel-dark();
213
+ }
221
214
 
222
- .carousel-indicators [data-bs-target] {
223
- background-color: $carousel-dark-indicator-active-bg;
224
- }
215
+ :root,
216
+ [data-bs-theme="light"] {
217
+ --#{$prefix}carousel-indicator-active-bg: #{$carousel-indicator-active-bg};
218
+ --#{$prefix}carousel-caption-color: #{$carousel-caption-color};
219
+ --#{$prefix}carousel-control-icon-filter: #{$carousel-control-icon-filter};
220
+ }
225
221
 
226
- .carousel-caption {
227
- color: $carousel-dark-caption-color;
222
+ @if $enable-dark-mode {
223
+ @include color-mode(dark, true) {
224
+ @include carousel-dark();
228
225
  }
229
226
  }
@@ -1,40 +1,66 @@
1
- // transparent background and border properties included for button version.
1
+ // Transparent background and border properties included for button version.
2
2
  // iOS requires the button element instead of an anchor tag.
3
3
  // If you want the anchor version, it requires `href="#"`.
4
4
  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
5
5
 
6
6
  .btn-close {
7
+ // scss-docs-start close-css-vars
8
+ --#{$prefix}btn-close-color: #{$btn-close-color};
9
+ --#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
10
+ --#{$prefix}btn-close-opacity: #{$btn-close-opacity};
11
+ --#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
12
+ --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
13
+ --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
14
+ --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
15
+ // scss-docs-end close-css-vars
16
+
7
17
  box-sizing: content-box;
8
18
  width: $btn-close-width;
9
19
  height: $btn-close-height;
10
20
  padding: $btn-close-padding-y $btn-close-padding-x;
11
- color: $btn-close-color;
12
- background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
21
+ color: var(--#{$prefix}btn-close-color);
22
+ background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
23
+ filter: var(--#{$prefix}btn-close-filter);
13
24
  border: 0; // for button elements
14
25
  @include border-radius();
15
- opacity: $btn-close-opacity;
26
+ opacity: var(--#{$prefix}btn-close-opacity);
16
27
 
17
28
  // Override <a>'s hover style
18
29
  &:hover {
19
- color: $btn-close-color;
30
+ color: var(--#{$prefix}btn-close-color);
20
31
  text-decoration: none;
21
- opacity: $btn-close-hover-opacity;
32
+ opacity: var(--#{$prefix}btn-close-hover-opacity);
22
33
  }
23
34
 
24
35
  &:focus {
25
36
  outline: 0;
26
- box-shadow: $btn-close-focus-shadow;
27
- opacity: $btn-close-focus-opacity;
37
+ box-shadow: var(--#{$prefix}btn-close-focus-shadow);
38
+ opacity: var(--#{$prefix}btn-close-focus-opacity);
28
39
  }
29
40
 
30
41
  &:disabled,
31
42
  &.disabled {
32
43
  pointer-events: none;
33
44
  user-select: none;
34
- opacity: $btn-close-disabled-opacity;
45
+ opacity: var(--#{$prefix}btn-close-disabled-opacity);
35
46
  }
36
47
  }
37
48
 
49
+ @mixin btn-close-white() {
50
+ --#{$prefix}btn-close-filter: #{$btn-close-filter-dark};
51
+ }
52
+
38
53
  .btn-close-white {
39
- filter: $btn-close-white-filter;
54
+ @include btn-close-white();
55
+ }
56
+
57
+ :root,
58
+ [data-bs-theme="light"] {
59
+ --#{$prefix}btn-close-filter: #{$btn-close-filter};
60
+ }
61
+
62
+ @if $enable-dark-mode {
63
+ @include color-mode(dark, true) {
64
+ @include btn-close-white();
65
+ }
40
66
  }
@@ -2,7 +2,7 @@
2
2
  //
3
3
  // Set the container width, and override it for fixed navbars in media queries.
4
4
 
5
- @if $enable-grid-classes {
5
+ @if $enable-container-classes {
6
6
  // Single container class with breakpoint max-widths
7
7
  .container,
8
8
  // 100% wide container at all breakpoints
@@ -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,34 @@
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
-
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
- }
187
+ @include border-radius(var(--#{$prefix}dropdown-item-border-radius, 0));
155
188
 
156
189
  &:hover,
157
190
  &:focus {
158
- color: $dropdown-link-hover-color;
191
+ color: var(--#{$prefix}dropdown-link-hover-color);
159
192
  text-decoration: if($link-hover-decoration == underline, none, null);
160
- @include gradient-bg($dropdown-link-hover-bg);
193
+ @include gradient-bg(var(--#{$prefix}dropdown-link-hover-bg));
161
194
  }
162
195
 
163
196
  &.active,
164
197
  &:active {
165
- color: $dropdown-link-active-color;
198
+ color: var(--#{$prefix}dropdown-link-active-color);
166
199
  text-decoration: none;
167
- @include gradient-bg($dropdown-link-active-bg);
200
+ @include gradient-bg(var(--#{$prefix}dropdown-link-active-bg));
168
201
  }
169
202
 
170
203
  &.disabled,
171
204
  &:disabled {
172
- color: $dropdown-link-disabled-color;
205
+ color: var(--#{$prefix}dropdown-link-disabled-color);
173
206
  pointer-events: none;
174
207
  background-color: transparent;
175
208
  // Remove CSS gradients if they're enabled
@@ -184,57 +217,34 @@
184
217
  // Dropdown section headers
185
218
  .dropdown-header {
186
219
  display: block;
187
- padding: $dropdown-header-padding;
220
+ padding: var(--#{$prefix}dropdown-header-padding-y) var(--#{$prefix}dropdown-header-padding-x);
188
221
  margin-bottom: 0; // for use with heading elements
189
222
  @include font-size($font-size-sm);
190
- color: $dropdown-header-color;
223
+ color: var(--#{$prefix}dropdown-header-color);
191
224
  white-space: nowrap; // as with > li > a
192
225
  }
193
226
 
194
227
  // Dropdown text
195
228
  .dropdown-item-text {
196
229
  display: block;
197
- padding: $dropdown-item-padding-y $dropdown-item-padding-x;
198
- color: $dropdown-link-color;
230
+ padding: var(--#{$prefix}dropdown-item-padding-y) var(--#{$prefix}dropdown-item-padding-x);
231
+ color: var(--#{$prefix}dropdown-link-color);
199
232
  }
200
233
 
201
234
  // Dark dropdowns
202
235
  .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
- }
236
+ // scss-docs-start dropdown-dark-css-vars
237
+ --#{$prefix}dropdown-color: #{$dropdown-dark-color};
238
+ --#{$prefix}dropdown-bg: #{$dropdown-dark-bg};
239
+ --#{$prefix}dropdown-border-color: #{$dropdown-dark-border-color};
240
+ --#{$prefix}dropdown-box-shadow: #{$dropdown-dark-box-shadow};
241
+ --#{$prefix}dropdown-link-color: #{$dropdown-dark-link-color};
242
+ --#{$prefix}dropdown-link-hover-color: #{$dropdown-dark-link-hover-color};
243
+ --#{$prefix}dropdown-divider-bg: #{$dropdown-dark-divider-bg};
244
+ --#{$prefix}dropdown-link-hover-bg: #{$dropdown-dark-link-hover-bg};
245
+ --#{$prefix}dropdown-link-active-color: #{$dropdown-dark-link-active-color};
246
+ --#{$prefix}dropdown-link-active-bg: #{$dropdown-dark-link-active-bg};
247
+ --#{$prefix}dropdown-link-disabled-color: #{$dropdown-dark-link-disabled-color};
248
+ --#{$prefix}dropdown-header-color: #{$dropdown-dark-header-color};
249
+ // scss-docs-end dropdown-dark-css-vars
240
250
  }
@@ -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.2 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),
@@ -188,7 +188,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
188
188
  );
189
189
 
190
190
  @each $name, $value in $rgb {
191
- $value: if(divide($value, 255) < .03928, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
191
+ $value: if(divide($value, 255) < .04045, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
192
192
  $rgb: map-merge($rgb, ($name: $value));
193
193
  }
194
194
 
@@ -198,7 +198,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
198
198
  // Return opaque color
199
199
  // opaque(#fff, rgba(0, 0, 0, .5)) => #808080
200
200
  @function opaque($background, $foreground) {
201
- @return mix(rgba($foreground, 1), $background, opacity($foreground) * 100);
201
+ @return mix(rgba($foreground, 1), $background, opacity($foreground) * 100%);
202
202
  }
203
203
 
204
204
  // scss-docs-start color-functions
@@ -2,6 +2,12 @@
2
2
  //
3
3
  // Rows contain your columns.
4
4
 
5
+ :root {
6
+ @each $name, $value in $grid-breakpoints {
7
+ --#{$prefix}breakpoint-#{$name}: #{$value};
8
+ }
9
+ }
10
+
5
11
  @if $enable-grid-classes {
6
12
  .row {
7
13
  @include make-row();
@@ -15,9 +21,9 @@
15
21
  @if $enable-cssgrid {
16
22
  .grid {
17
23
  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});
24
+ grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);
25
+ grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);
26
+ gap: var(--#{$prefix}gap, #{$grid-gutter-width});
21
27
 
22
28
  @include make-cssgrid();
23
29
  }
@@ -1,5 +1,8 @@
1
1
  @import "helpers/clearfix";
2
+ @import "helpers/color-bg";
2
3
  @import "helpers/colored-links";
4
+ @import "helpers/focus-ring";
5
+ @import "helpers/icon-link";
3
6
  @import "helpers/ratio";
4
7
  @import "helpers/position";
5
8
  @import "helpers/stacks";