bootstrap 4.6.0 → 5.0.0.beta2

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