bootstrap 4.6.0 → 5.0.0

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