bootstrap 4.6.2.1 → 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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +61 -0
  3. data/CHANGELOG.md +7 -2
  4. data/Gemfile +1 -0
  5. data/README.md +33 -15
  6. data/Rakefile +1 -2
  7. data/assets/javascripts/bootstrap/alert.js +50 -147
  8. data/assets/javascripts/bootstrap/base-component.js +83 -0
  9. data/assets/javascripts/bootstrap/button.js +40 -190
  10. data/assets/javascripts/bootstrap/carousel.js +282 -537
  11. data/assets/javascripts/bootstrap/collapse.js +166 -314
  12. data/assets/javascripts/bootstrap/dom/data.js +62 -0
  13. data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
  14. data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
  15. data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
  16. data/assets/javascripts/bootstrap/dropdown.js +297 -455
  17. data/assets/javascripts/bootstrap/modal.js +223 -566
  18. data/assets/javascripts/bootstrap/offcanvas.js +245 -0
  19. data/assets/javascripts/bootstrap/popover.js +59 -208
  20. data/assets/javascripts/bootstrap/scrollspy.js +213 -276
  21. data/assets/javascripts/bootstrap/tab.js +222 -200
  22. data/assets/javascripts/bootstrap/toast.js +137 -206
  23. data/assets/javascripts/bootstrap/tooltip.js +403 -747
  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 +6 -0
  34. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  35. data/assets/javascripts/bootstrap-sprockets.js +21 -5
  36. data/assets/javascripts/bootstrap.js +3625 -3488
  37. data/assets/javascripts/bootstrap.min.js +3 -3
  38. data/assets/stylesheets/_bootstrap-grid.scss +53 -21
  39. data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
  40. data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
  41. data/assets/stylesheets/_bootstrap.scss +21 -13
  42. data/assets/stylesheets/bootstrap/_accordion.scss +153 -0
  43. data/assets/stylesheets/bootstrap/_alert.scss +32 -16
  44. data/assets/stylesheets/bootstrap/_badge.scss +15 -31
  45. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -24
  46. data/assets/stylesheets/bootstrap/_button-group.scss +32 -48
  47. data/assets/stylesheets/bootstrap/_buttons.scss +145 -71
  48. data/assets/stylesheets/bootstrap/_card.scss +67 -115
  49. data/assets/stylesheets/bootstrap/_carousel.scss +63 -37
  50. data/assets/stylesheets/bootstrap/_close.scss +53 -27
  51. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  52. data/assets/stylesheets/bootstrap/_dropdown.scss +129 -71
  53. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  54. data/assets/stylesheets/bootstrap/_functions.scss +135 -23
  55. data/assets/stylesheets/bootstrap/_grid.scss +18 -52
  56. data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
  57. data/assets/stylesheets/bootstrap/_list-group.scss +93 -48
  58. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  59. data/assets/stylesheets/bootstrap/_mixins.scss +10 -15
  60. data/assets/stylesheets/bootstrap/_modal.scss +112 -112
  61. data/assets/stylesheets/bootstrap/_nav.scss +100 -28
  62. data/assets/stylesheets/bootstrap/_navbar.scss +130 -173
  63. data/assets/stylesheets/bootstrap/_offcanvas.scss +147 -0
  64. data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
  65. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  66. data/assets/stylesheets/bootstrap/_popover.scss +99 -73
  67. data/assets/stylesheets/bootstrap/_progress.scss +35 -14
  68. data/assets/stylesheets/bootstrap/_reboot.scss +319 -192
  69. data/assets/stylesheets/bootstrap/_root.scss +177 -9
  70. data/assets/stylesheets/bootstrap/_spinners.scss +43 -23
  71. data/assets/stylesheets/bootstrap/_tables.scss +101 -115
  72. data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
  73. data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
  74. data/assets/stylesheets/bootstrap/_transitions.scss +3 -2
  75. data/assets/stylesheets/bootstrap/_type.scss +40 -59
  76. data/assets/stylesheets/bootstrap/_utilities.scss +806 -18
  77. data/assets/stylesheets/bootstrap/_variables-dark.scss +102 -0
  78. data/assets/stylesheets/bootstrap/_variables.scss +1210 -606
  79. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +97 -0
  80. data/assets/stylesheets/bootstrap/forms/_form-check.scss +189 -0
  81. data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
  82. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  83. data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
  84. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  85. data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
  86. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  87. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  88. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
  89. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
  90. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  91. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  92. data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
  93. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  94. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  95. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  96. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  97. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  98. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  99. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
  100. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  101. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  102. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
  103. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  104. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
  105. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
  106. data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
  107. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  108. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  109. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  110. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  111. data/assets/stylesheets/bootstrap/mixins/_forms.scss +64 -96
  112. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  113. data/assets/stylesheets/bootstrap/mixins/_grid.scss +118 -36
  114. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  115. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
  116. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  117. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
  118. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  119. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
  120. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  121. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
  122. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
  123. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  124. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +211 -91
  125. data/bootstrap.gemspec +6 -6
  126. data/lib/bootstrap/engine.rb +0 -1
  127. data/lib/bootstrap/version.rb +2 -2
  128. data/tasks/updater/js.rb +17 -5
  129. data/tasks/updater/network.rb +2 -2
  130. data/tasks/updater/scss.rb +2 -2
  131. data/tasks/updater.rb +2 -2
  132. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  133. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  134. data/test/dummy_rails/app/views/pages/root.html +89 -0
  135. data/test/dummy_rails/config/application.rb +0 -5
  136. data/test/dummy_rails/public/favicon.ico +0 -0
  137. data/test/gemfiles/rails_4_2.gemfile +2 -1
  138. data/test/gemfiles/rails_5_0.gemfile +1 -2
  139. data/test/gemfiles/rails_5_1.gemfile +1 -2
  140. data/test/gemfiles/rails_5_2.gemfile +7 -0
  141. data/test/gemfiles/rails_6_0.gemfile +1 -1
  142. data/test/gemfiles/rails_6_1.gemfile +7 -0
  143. data/test/gemfiles/rails_7_0_dartsass.gemfile +0 -1
  144. data/test/gemfiles/rails_7_0_sassc.gemfile +0 -1
  145. data/test/rails_test.rb +0 -5
  146. data/test/test_helper.rb +3 -2
  147. metadata +92 -86
  148. data/.travis.yml +0 -31
  149. data/assets/javascripts/bootstrap/util.js +0 -189
  150. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  151. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  152. data/assets/stylesheets/bootstrap/_input-group.scss +0 -211
  153. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  154. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  155. data/assets/stylesheets/bootstrap/_print.scss +0 -132
  156. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  157. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  158. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  159. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  160. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  161. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  162. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  163. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  164. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  165. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  166. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  167. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  168. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  169. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  170. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  171. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  172. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  173. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  174. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  175. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  176. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  177. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  178. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  179. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  180. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  181. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  182. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  183. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  184. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  185. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  186. /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
@@ -1,5 +1,6 @@
1
1
  // stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
2
2
 
3
+
3
4
  // Reboot
4
5
  //
5
6
  // Normalization of HTML elements, manually forked from Normalize.css to remove
@@ -10,122 +11,156 @@
10
11
 
11
12
  // Document
12
13
  //
13
- // 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
14
- // 2. Change the default font family in all browsers.
15
- // 3. Correct the line height in all browsers.
16
- // 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
17
- // 5. Change the default tap highlight to be completely transparent in iOS.
14
+ // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
18
15
 
19
16
  *,
20
17
  *::before,
21
18
  *::after {
22
- box-sizing: border-box; // 1
19
+ box-sizing: border-box;
23
20
  }
24
21
 
25
- html {
26
- font-family: sans-serif; // 2
27
- line-height: 1.15; // 3
28
- -webkit-text-size-adjust: 100%; // 4
29
- -webkit-tap-highlight-color: rgba($black, 0); // 5
30
- }
31
22
 
32
- // Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
33
- // TODO: remove in v5
34
- // stylelint-disable-next-line selector-list-comma-newline-after
35
- article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
36
- display: block;
23
+ // Root
24
+ //
25
+ // Ability to the value of the root font sizes, affecting the value of `rem`.
26
+ // null by default, thus nothing is generated.
27
+
28
+ :root {
29
+ @if $font-size-root != null {
30
+ @include font-size(var(--#{$prefix}root-font-size));
31
+ }
32
+
33
+ @if $enable-smooth-scroll {
34
+ @media (prefers-reduced-motion: no-preference) {
35
+ scroll-behavior: smooth;
36
+ }
37
+ }
37
38
  }
38
39
 
40
+
39
41
  // Body
40
42
  //
41
43
  // 1. Remove the margin in all browsers.
42
44
  // 2. As a best practice, apply a default `background-color`.
43
- // 3. Set an explicit initial text-align value so that we can later use
44
- // the `inherit` value on things like `<th>` elements.
45
+ // 3. Prevent adjustments of font size after orientation changes in iOS.
46
+ // 4. Change the default tap highlight to be completely transparent in iOS.
45
47
 
48
+ // scss-docs-start reboot-body-rules
46
49
  body {
47
50
  margin: 0; // 1
48
- font-family: $font-family-base;
49
- @include font-size($font-size-base);
50
- font-weight: $font-weight-base;
51
- line-height: $line-height-base;
52
- color: $body-color;
53
- text-align: left; // 3
54
- background-color: $body-bg; // 2
55
- }
56
-
57
- // Future-proof rule: in browsers that support :focus-visible, suppress the focus outline
58
- // on elements that programmatically receive focus but wouldn't normally show a visible
59
- // focus outline. In general, this would mean that the outline is only applied if the
60
- // interaction that led to the element receiving programmatic focus was a keyboard interaction,
61
- // or the browser has somehow determined that the user is primarily a keyboard user and/or
62
- // wants focus outlines to always be presented.
63
- //
64
- // See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible
65
- // and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/
66
- [tabindex="-1"]:focus:not(:focus-visible) {
67
- outline: 0 !important;
51
+ font-family: var(--#{$prefix}body-font-family);
52
+ @include font-size(var(--#{$prefix}body-font-size));
53
+ font-weight: var(--#{$prefix}body-font-weight);
54
+ line-height: var(--#{$prefix}body-line-height);
55
+ color: var(--#{$prefix}body-color);
56
+ text-align: var(--#{$prefix}body-text-align);
57
+ background-color: var(--#{$prefix}body-bg); // 2
58
+ -webkit-text-size-adjust: 100%; // 3
59
+ -webkit-tap-highlight-color: rgba($black, 0); // 4
68
60
  }
61
+ // scss-docs-end reboot-body-rules
69
62
 
70
63
 
71
64
  // Content grouping
72
65
  //
73
- // 1. Add the correct box sizing in Firefox.
74
- // 2. Show the overflow in Edge and IE.
66
+ // 1. Reset Firefox's gray color
75
67
 
76
68
  hr {
77
- box-sizing: content-box; // 1
78
- height: 0; // 1
79
- overflow: visible; // 2
69
+ margin: $hr-margin-y 0;
70
+ color: $hr-color; // 1
71
+ border: 0;
72
+ border-top: $hr-border-width solid $hr-border-color;
73
+ opacity: $hr-opacity;
80
74
  }
81
75
 
82
76
 
83
- //
84
77
  // Typography
85
78
  //
79
+ // 1. Remove top margins from headings
80
+ // By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
81
+ // margin for easier control within type scales as it avoids margin collapsing.
86
82
 
87
- // Remove top margins from headings
88
- //
89
- // By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
90
- // margin for easier control within type scales as it avoids margin collapsing.
91
- // stylelint-disable-next-line selector-list-comma-newline-after
92
- h1, h2, h3, h4, h5, h6 {
93
- margin-top: 0;
83
+ %heading {
84
+ margin-top: 0; // 1
94
85
  margin-bottom: $headings-margin-bottom;
86
+ font-family: $headings-font-family;
87
+ font-style: $headings-font-style;
88
+ font-weight: $headings-font-weight;
89
+ line-height: $headings-line-height;
90
+ color: var(--#{$prefix}heading-color);
91
+ }
92
+
93
+ h1 {
94
+ @extend %heading;
95
+ @include font-size($h1-font-size);
96
+ }
97
+
98
+ h2 {
99
+ @extend %heading;
100
+ @include font-size($h2-font-size);
95
101
  }
96
102
 
103
+ h3 {
104
+ @extend %heading;
105
+ @include font-size($h3-font-size);
106
+ }
107
+
108
+ h4 {
109
+ @extend %heading;
110
+ @include font-size($h4-font-size);
111
+ }
112
+
113
+ h5 {
114
+ @extend %heading;
115
+ @include font-size($h5-font-size);
116
+ }
117
+
118
+ h6 {
119
+ @extend %heading;
120
+ @include font-size($h6-font-size);
121
+ }
122
+
123
+
97
124
  // Reset margins on paragraphs
98
125
  //
99
126
  // Similarly, the top margin on `<p>`s get reset. However, we also reset the
100
127
  // bottom margin to use `rem` units instead of `em`.
128
+
101
129
  p {
102
130
  margin-top: 0;
103
131
  margin-bottom: $paragraph-margin-bottom;
104
132
  }
105
133
 
134
+
106
135
  // Abbreviations
107
136
  //
108
- // 1. Duplicate behavior to the data-* attribute for our tooltip plugin
109
- // 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
110
- // 3. Add explicit cursor to indicate changed behavior.
111
- // 4. Remove the bottom border in Firefox 39-.
112
- // 5. Prevent the text-decoration to be skipped.
137
+ // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.
138
+ // 2. Add explicit cursor to indicate changed behavior.
139
+ // 3. Prevent the text-decoration to be skipped.
113
140
 
114
- abbr[title],
115
- abbr[data-original-title] { // 1
116
- text-decoration: underline; // 2
117
- text-decoration: underline dotted; // 2
118
- cursor: help; // 3
119
- border-bottom: 0; // 4
120
- text-decoration-skip-ink: none; // 5
141
+ abbr[title] {
142
+ text-decoration: underline dotted; // 1
143
+ cursor: help; // 2
144
+ text-decoration-skip-ink: none; // 3
121
145
  }
122
146
 
147
+
148
+ // Address
149
+
123
150
  address {
124
151
  margin-bottom: 1rem;
125
152
  font-style: normal;
126
153
  line-height: inherit;
127
154
  }
128
155
 
156
+
157
+ // Lists
158
+
159
+ ol,
160
+ ul {
161
+ padding-left: 2rem;
162
+ }
163
+
129
164
  ol,
130
165
  ul,
131
166
  dl {
@@ -144,33 +179,58 @@ dt {
144
179
  font-weight: $dt-font-weight;
145
180
  }
146
181
 
182
+ // 1. Undo browser default
183
+
147
184
  dd {
148
185
  margin-bottom: .5rem;
149
- margin-left: 0; // Undo browser default
186
+ margin-left: 0; // 1
150
187
  }
151
188
 
189
+
190
+ // Blockquote
191
+
152
192
  blockquote {
153
193
  margin: 0 0 1rem;
154
194
  }
155
195
 
196
+
197
+ // Strong
198
+ //
199
+ // Add the correct font weight in Chrome, Edge, and Safari
200
+
156
201
  b,
157
202
  strong {
158
- font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari
203
+ font-weight: $font-weight-bolder;
159
204
  }
160
205
 
206
+
207
+ // Small
208
+ //
209
+ // Add the correct font size in all browsers
210
+
161
211
  small {
162
- @include font-size(80%); // Add the correct font size in all browsers
212
+ @include font-size($small-font-size);
163
213
  }
164
214
 
215
+
216
+ // Mark
217
+
218
+ mark {
219
+ padding: $mark-padding;
220
+ color: var(--#{$prefix}highlight-color);
221
+ background-color: var(--#{$prefix}highlight-bg);
222
+ }
223
+
224
+
225
+ // Sub and Sup
165
226
  //
166
227
  // Prevent `sub` and `sup` elements from affecting the line height in
167
228
  // all browsers.
168
- //
169
229
 
170
230
  sub,
171
231
  sup {
172
232
  position: relative;
173
- @include font-size(75%);
233
+ @include font-size($sub-sup-font-size);
174
234
  line-height: 0;
175
235
  vertical-align: baseline;
176
236
  }
@@ -179,17 +239,14 @@ sub { bottom: -.25em; }
179
239
  sup { top: -.5em; }
180
240
 
181
241
 
182
- //
183
242
  // Links
184
- //
185
243
 
186
244
  a {
187
- color: $link-color;
245
+ color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));
188
246
  text-decoration: $link-decoration;
189
- background-color: transparent; // Remove the gray background on active links in IE 10.
190
247
 
191
- @include hover() {
192
- color: $link-hover-color;
248
+ &:hover {
249
+ --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);
193
250
  text-decoration: $link-hover-decoration;
194
251
  }
195
252
  }
@@ -200,82 +257,101 @@ a {
200
257
  // See https://github.com/twbs/bootstrap/issues/19402
201
258
 
202
259
  a:not([href]):not([class]) {
203
- color: inherit;
204
- text-decoration: none;
205
-
206
- @include hover() {
260
+ &,
261
+ &:hover {
207
262
  color: inherit;
208
263
  text-decoration: none;
209
264
  }
210
265
  }
211
266
 
212
267
 
213
- //
214
268
  // Code
215
- //
216
269
 
217
270
  pre,
218
271
  code,
219
272
  kbd,
220
273
  samp {
221
- font-family: $font-family-monospace;
274
+ font-family: $font-family-code;
222
275
  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
223
276
  }
224
277
 
278
+ // 1. Remove browser default top margin
279
+ // 2. Reset browser default of `1em` to use `rem`s
280
+ // 3. Don't allow content to break outside
281
+
225
282
  pre {
226
- // Remove browser default top margin
227
- margin-top: 0;
228
- // Reset browser default of `1em` to use `rem`s
229
- margin-bottom: 1rem;
230
- // Don't allow content to break outside
231
- overflow: auto;
232
- // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,
233
- // making it impossible to interact with the content
234
- -ms-overflow-style: scrollbar;
283
+ display: block;
284
+ margin-top: 0; // 1
285
+ margin-bottom: 1rem; // 2
286
+ overflow: auto; // 3
287
+ @include font-size($code-font-size);
288
+ color: $pre-color;
289
+
290
+ // Account for some code outputs that place code tags in pre tags
291
+ code {
292
+ @include font-size(inherit);
293
+ color: inherit;
294
+ word-break: normal;
295
+ }
296
+ }
297
+
298
+ code {
299
+ @include font-size($code-font-size);
300
+ color: var(--#{$prefix}code-color);
301
+ word-wrap: break-word;
302
+
303
+ // Streamline the style when inside anchors to avoid broken underline and more
304
+ a > & {
305
+ color: inherit;
306
+ }
307
+ }
308
+
309
+ kbd {
310
+ padding: $kbd-padding-y $kbd-padding-x;
311
+ @include font-size($kbd-font-size);
312
+ color: $kbd-color;
313
+ background-color: $kbd-bg;
314
+ @include border-radius($border-radius-sm);
315
+
316
+ kbd {
317
+ padding: 0;
318
+ @include font-size(1em);
319
+ font-weight: $nested-kbd-font-weight;
320
+ }
235
321
  }
236
322
 
237
323
 
238
- //
239
324
  // Figures
240
325
  //
326
+ // Apply a consistent margin strategy (matches our type styles).
241
327
 
242
328
  figure {
243
- // Apply a consistent margin strategy (matches our type styles).
244
329
  margin: 0 0 1rem;
245
330
  }
246
331
 
247
332
 
248
- //
249
333
  // Images and content
250
- //
251
-
252
- img {
253
- vertical-align: middle;
254
- border-style: none; // Remove the border on images inside links in IE 10-.
255
- }
256
334
 
335
+ img,
257
336
  svg {
258
- // Workaround for the SVG overflow bug in IE10/11 is still required.
259
- // See https://github.com/twbs/bootstrap/issues/26878
260
- overflow: hidden;
261
337
  vertical-align: middle;
262
338
  }
263
339
 
264
340
 
265
- //
266
341
  // Tables
267
342
  //
343
+ // Prevent double borders
268
344
 
269
345
  table {
270
- border-collapse: collapse; // Prevent double borders
346
+ caption-side: bottom;
347
+ border-collapse: collapse;
271
348
  }
272
349
 
273
350
  caption {
274
- padding-top: $table-cell-padding;
275
- padding-bottom: $table-cell-padding;
351
+ padding-top: $table-cell-padding-y;
352
+ padding-bottom: $table-cell-padding-y;
276
353
  color: $table-caption-color;
277
354
  text-align: left;
278
- caption-side: bottom;
279
355
  }
280
356
 
281
357
  // 1. Removes font-weight bold by inheriting
@@ -288,20 +364,29 @@ th {
288
364
  text-align: -webkit-match-parent; // 3
289
365
  }
290
366
 
367
+ thead,
368
+ tbody,
369
+ tfoot,
370
+ tr,
371
+ td,
372
+ th {
373
+ border-color: inherit;
374
+ border-style: solid;
375
+ border-width: 0;
376
+ }
377
+
291
378
 
292
- //
293
379
  // Forms
294
380
  //
381
+ // 1. Allow labels to use `margin` for spacing.
295
382
 
296
383
  label {
297
- // Allow labels to use `margin` for spacing.
298
- display: inline-block;
299
- margin-bottom: $label-margin-bottom;
384
+ display: inline-block; // 1
300
385
  }
301
386
 
302
387
  // Remove the default `border-radius` that macOS Chrome adds.
303
- //
304
- // Details at https://github.com/twbs/bootstrap/issues/24093
388
+ // See https://github.com/twbs/bootstrap/issues/24093
389
+
305
390
  button {
306
391
  // stylelint-disable-next-line property-disallowed-list
307
392
  border-radius: 0;
@@ -316,27 +401,24 @@ button:focus:not(:focus-visible) {
316
401
  outline: 0;
317
402
  }
318
403
 
404
+ // 1. Remove the margin in Firefox and Safari
405
+
319
406
  input,
320
407
  button,
321
408
  select,
322
409
  optgroup,
323
410
  textarea {
324
- margin: 0; // Remove the margin in Firefox and Safari
411
+ margin: 0; // 1
325
412
  font-family: inherit;
326
413
  @include font-size(inherit);
327
414
  line-height: inherit;
328
415
  }
329
416
 
330
- button,
331
- input {
332
- overflow: visible; // Show the overflow in Edge
333
- }
334
-
417
+ // Remove the inheritance of text transform in Firefox
335
418
  button,
336
419
  select {
337
- text-transform: none; // Remove the inheritance of text transform in Firefox
420
+ text-transform: none;
338
421
  }
339
-
340
422
  // Set the cursor for non-`<button>` buttons
341
423
  //
342
424
  // Details at https://github.com/twbs/bootstrap/pull/30562
@@ -344,141 +426,186 @@ select {
344
426
  cursor: pointer;
345
427
  }
346
428
 
347
- // Remove the inheritance of word-wrap in Safari.
348
- //
349
- // Details at https://github.com/twbs/bootstrap/issues/24990
350
429
  select {
430
+ // Remove the inheritance of word-wrap in Safari.
431
+ // See https://github.com/twbs/bootstrap/issues/24990
351
432
  word-wrap: normal;
433
+
434
+ // Undo the opacity change from Chrome
435
+ &:disabled {
436
+ opacity: 1;
437
+ }
352
438
  }
353
439
 
440
+ // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.
441
+ // See https://stackoverflow.com/a/54997118
442
+
443
+ [list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator {
444
+ display: none !important;
445
+ }
354
446
 
355
447
  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
356
448
  // controls in Android 4.
357
449
  // 2. Correct the inability to style clickable types in iOS and Safari.
450
+ // 3. Opinionated: add "hand" cursor to non-disabled button elements.
451
+
358
452
  button,
359
453
  [type="button"], // 1
360
454
  [type="reset"],
361
455
  [type="submit"] {
362
456
  -webkit-appearance: button; // 2
363
- }
364
457
 
365
- // Opinionated: add "hand" cursor to non-disabled button elements.
366
- @if $enable-pointer-cursor-for-buttons {
367
- button,
368
- [type="button"],
369
- [type="reset"],
370
- [type="submit"] {
458
+ @if $enable-button-pointers {
371
459
  &:not(:disabled) {
372
- cursor: pointer;
460
+ cursor: pointer; // 3
373
461
  }
374
462
  }
375
463
  }
376
464
 
377
465
  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
378
- button::-moz-focus-inner,
379
- [type="button"]::-moz-focus-inner,
380
- [type="reset"]::-moz-focus-inner,
381
- [type="submit"]::-moz-focus-inner {
466
+
467
+ ::-moz-focus-inner {
382
468
  padding: 0;
383
469
  border-style: none;
384
470
  }
385
471
 
386
- input[type="radio"],
387
- input[type="checkbox"] {
388
- box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
389
- padding: 0; // 2. Remove the padding in IE 10-
390
- }
391
-
472
+ // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.
392
473
 
393
474
  textarea {
394
- overflow: auto; // Remove the default vertical scrollbar in IE.
395
- // Textareas should really only resize vertically so they don't break their (horizontal) containers.
396
- resize: vertical;
475
+ resize: vertical; // 1
397
476
  }
398
477
 
478
+ // 1. Browsers set a default `min-width: min-content;` on fieldsets,
479
+ // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
480
+ // So we reset that to ensure fieldsets behave more like a standard block element.
481
+ // See https://github.com/twbs/bootstrap/issues/12359
482
+ // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
483
+ // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.
484
+
399
485
  fieldset {
400
- // Browsers set a default `min-width: min-content;` on fieldsets,
401
- // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
402
- // So we reset that to ensure fieldsets behave more like a standard block element.
403
- // See https://github.com/twbs/bootstrap/issues/12359
404
- // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
405
- min-width: 0;
406
- // Reset the default outline behavior of fieldsets so they don't affect page layout.
407
- padding: 0;
408
- margin: 0;
409
- border: 0;
486
+ min-width: 0; // 1
487
+ padding: 0; // 2
488
+ margin: 0; // 2
489
+ border: 0; // 2
410
490
  }
411
491
 
412
- // 1. Correct the text wrapping in Edge and IE.
413
- // 2. Correct the color inheritance from `fieldset` elements in IE.
492
+ // 1. By using `float: left`, the legend will behave like a block element.
493
+ // This way the border of a fieldset wraps around the legend if present.
494
+ // 2. Fix wrapping bug.
495
+ // See https://github.com/twbs/bootstrap/issues/29712
496
+
414
497
  legend {
415
- display: block;
498
+ float: left; // 1
416
499
  width: 100%;
417
- max-width: 100%; // 1
418
500
  padding: 0;
419
- margin-bottom: .5rem;
420
- @include font-size(1.5rem);
501
+ margin-bottom: $legend-margin-bottom;
502
+ font-weight: $legend-font-weight;
421
503
  line-height: inherit;
422
- color: inherit; // 2
423
- white-space: normal; // 1
504
+ @include font-size($legend-font-size);
505
+
506
+ + * {
507
+ clear: left; // 2
508
+ }
424
509
  }
425
510
 
426
- progress {
427
- vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
511
+ // Fix height of inputs with a type of datetime-local, date, month, week, or time
512
+ // See https://github.com/twbs/bootstrap/issues/18842
513
+
514
+ ::-webkit-datetime-edit-fields-wrapper,
515
+ ::-webkit-datetime-edit-text,
516
+ ::-webkit-datetime-edit-minute,
517
+ ::-webkit-datetime-edit-hour-field,
518
+ ::-webkit-datetime-edit-day-field,
519
+ ::-webkit-datetime-edit-month-field,
520
+ ::-webkit-datetime-edit-year-field {
521
+ padding: 0;
428
522
  }
429
523
 
430
- // Correct the cursor style of increment and decrement buttons in Chrome.
431
- [type="number"]::-webkit-inner-spin-button,
432
- [type="number"]::-webkit-outer-spin-button {
524
+ ::-webkit-inner-spin-button {
433
525
  height: auto;
434
526
  }
435
527
 
528
+ // 1. This overrides the extra rounded corners on search inputs in iOS so that our
529
+ // `.form-control` class can properly style them. Note that this cannot simply
530
+ // be added to `.form-control` as it's not specific enough. For details, see
531
+ // https://github.com/twbs/bootstrap/issues/11586.
532
+ // 2. Correct the outline style in Safari.
533
+
436
534
  [type="search"] {
437
- // This overrides the extra rounded corners on search inputs in iOS so that our
438
- // `.form-control` class can properly style them. Note that this cannot simply
439
- // be added to `.form-control` as it's not specific enough. For details, see
440
- // https://github.com/twbs/bootstrap/issues/11586.
441
- outline-offset: -2px; // 2. Correct the outline style in Safari.
442
- -webkit-appearance: none;
535
+ -webkit-appearance: textfield; // 1
536
+ outline-offset: -2px; // 2
443
537
  }
444
538
 
445
- //
539
+ // 1. A few input types should stay LTR
540
+ // See https://rtlstyling.com/posts/rtl-styling#form-inputs
541
+ // 2. RTL only output
542
+ // See https://rtlcss.com/learn/usage-guide/control-directives/#raw
543
+
544
+ /* rtl:raw:
545
+ [type="tel"],
546
+ [type="url"],
547
+ [type="email"],
548
+ [type="number"] {
549
+ direction: ltr;
550
+ }
551
+ */
552
+
446
553
  // Remove the inner padding in Chrome and Safari on macOS.
447
- //
448
554
 
449
- [type="search"]::-webkit-search-decoration {
555
+ ::-webkit-search-decoration {
450
556
  -webkit-appearance: none;
451
557
  }
452
558
 
453
- //
454
- // 1. Correct the inability to style clickable types in iOS and Safari.
455
- // 2. Change font properties to `inherit` in Safari.
456
- //
559
+ // Remove padding around color pickers in webkit browsers
457
560
 
458
- ::-webkit-file-upload-button {
459
- font: inherit; // 2
460
- -webkit-appearance: button; // 1
561
+ ::-webkit-color-swatch-wrapper {
562
+ padding: 0;
563
+ }
564
+
565
+
566
+ // 1. Inherit font family and line height for file input buttons
567
+ // 2. Correct the inability to style clickable types in iOS and Safari.
568
+
569
+ ::file-selector-button {
570
+ font: inherit; // 1
571
+ -webkit-appearance: button; // 2
461
572
  }
462
573
 
463
- //
464
574
  // Correct element displays
465
- //
466
575
 
467
576
  output {
468
577
  display: inline-block;
469
578
  }
470
579
 
580
+ // Remove border from iframe
581
+
582
+ iframe {
583
+ border: 0;
584
+ }
585
+
586
+ // Summary
587
+ //
588
+ // 1. Add the correct display in all browsers
589
+
471
590
  summary {
472
- display: list-item; // Add the correct display in all browsers
591
+ display: list-item; // 1
473
592
  cursor: pointer;
474
593
  }
475
594
 
476
- template {
477
- display: none; // Add the correct display in IE
595
+
596
+ // Progress
597
+ //
598
+ // Add the correct vertical alignment in Chrome, Firefox, and Opera.
599
+
600
+ progress {
601
+ vertical-align: baseline;
478
602
  }
479
603
 
480
- // Always hide an element with the `hidden` HTML attribute (from PureCSS).
481
- // Needed for proper display in IE 10-.
604
+
605
+ // Hidden attribute
606
+ //
607
+ // Always hide an element with the `hidden` HTML attribute.
608
+
482
609
  [hidden] {
483
610
  display: none !important;
484
611
  }