bootstrap 4.3.0 → 5.0.0.alpha1

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