bootstrap 4.5.0 → 4.6.1

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap/alert.js +35 -41
  4. data/assets/javascripts/bootstrap/button.js +42 -44
  5. data/assets/javascripts/bootstrap/carousel.js +126 -155
  6. data/assets/javascripts/bootstrap/collapse.js +88 -125
  7. data/assets/javascripts/bootstrap/dropdown.js +93 -133
  8. data/assets/javascripts/bootstrap/modal.js +163 -183
  9. data/assets/javascripts/bootstrap/popover.js +57 -82
  10. data/assets/javascripts/bootstrap/scrollspy.js +63 -100
  11. data/assets/javascripts/bootstrap/tab.js +58 -58
  12. data/assets/javascripts/bootstrap/toast.js +66 -95
  13. data/assets/javascripts/bootstrap/tooltip.js +136 -166
  14. data/assets/javascripts/bootstrap/util.js +22 -25
  15. data/assets/javascripts/bootstrap-sprockets.js +6 -6
  16. data/assets/javascripts/bootstrap.js +884 -947
  17. data/assets/javascripts/bootstrap.min.js +4 -4
  18. data/assets/stylesheets/_bootstrap-grid.scss +5 -4
  19. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  20. data/assets/stylesheets/_bootstrap.scss +4 -4
  21. data/assets/stylesheets/bootstrap/_alert.scss +1 -0
  22. data/assets/stylesheets/bootstrap/_breadcrumb.scss +1 -3
  23. data/assets/stylesheets/bootstrap/_card.scss +19 -15
  24. data/assets/stylesheets/bootstrap/_carousel.scss +6 -3
  25. data/assets/stylesheets/bootstrap/_custom-forms.scss +20 -16
  26. data/assets/stylesheets/bootstrap/_dropdown.scss +2 -2
  27. data/assets/stylesheets/bootstrap/_forms.scss +10 -10
  28. data/assets/stylesheets/bootstrap/_functions.scss +50 -1
  29. data/assets/stylesheets/bootstrap/_grid.scss +1 -5
  30. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  31. data/assets/stylesheets/bootstrap/_input-group.scss +22 -3
  32. data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -1
  33. data/assets/stylesheets/bootstrap/_list-group.scss +1 -1
  34. data/assets/stylesheets/bootstrap/_modal.scss +2 -3
  35. data/assets/stylesheets/bootstrap/_nav.scss +3 -4
  36. data/assets/stylesheets/bootstrap/_navbar.scss +10 -2
  37. data/assets/stylesheets/bootstrap/_pagination.scss +2 -2
  38. data/assets/stylesheets/bootstrap/_popover.scss +9 -9
  39. data/assets/stylesheets/bootstrap/_print.scss +0 -9
  40. data/assets/stylesheets/bootstrap/_progress.scss +1 -1
  41. data/assets/stylesheets/bootstrap/_reboot.scss +17 -13
  42. data/assets/stylesheets/bootstrap/_root.scss +0 -1
  43. data/assets/stylesheets/bootstrap/_spinners.scss +15 -6
  44. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  45. data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
  46. data/assets/stylesheets/bootstrap/_type.scss +1 -1
  47. data/assets/stylesheets/bootstrap/_variables.scss +30 -29
  48. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +1 -1
  49. data/assets/stylesheets/bootstrap/mixins/_forms.scss +21 -3
  50. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +2 -3
  51. data/assets/stylesheets/bootstrap/mixins/_grid.scss +17 -17
  52. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
  53. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +2 -2
  54. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  55. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  56. data/assets/stylesheets/bootstrap/utilities/_embed.scss +1 -1
  57. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +1 -1
  58. data/assets/stylesheets/bootstrap/utilities/_text.scss +2 -1
  59. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +126 -102
  60. data/lib/bootstrap/version.rb +2 -2
  61. metadata +2 -2
@@ -9,9 +9,11 @@
9
9
 
10
10
  .custom-control {
11
11
  position: relative;
12
+ z-index: 1;
12
13
  display: block;
13
14
  min-height: $font-size-base * $line-height-base;
14
15
  padding-left: $custom-control-gutter + $custom-control-indicator-size;
16
+ color-adjust: exact; // Keep themed appearance for print
15
17
  }
16
18
 
17
19
  .custom-control-inline {
@@ -24,7 +26,7 @@
24
26
  left: 0;
25
27
  z-index: -1; // Put the input behind the label so it doesn't overlay text
26
28
  width: $custom-control-indicator-size;
27
- height: ($font-size-base * $line-height-base + $custom-control-indicator-size) / 2;
29
+ height: ($font-size-base * $line-height-base + $custom-control-indicator-size) * .5;
28
30
  opacity: 0;
29
31
 
30
32
  &:checked ~ .custom-control-label::before {
@@ -37,7 +39,7 @@
37
39
  &:focus ~ .custom-control-label::before {
38
40
  // the mixin is not used here to make sure there is feedback
39
41
  @if $enable-shadows {
40
- box-shadow: $input-box-shadow, $input-focus-box-shadow;
42
+ box-shadow: $input-box-shadow, $custom-control-indicator-focus-box-shadow;
41
43
  } @else {
42
44
  box-shadow: $custom-control-indicator-focus-box-shadow;
43
45
  }
@@ -81,7 +83,7 @@
81
83
  // Background-color and (when enabled) gradient
82
84
  &::before {
83
85
  position: absolute;
84
- top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
86
+ top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
85
87
  left: -($custom-control-gutter + $custom-control-indicator-size);
86
88
  display: block;
87
89
  width: $custom-control-indicator-size;
@@ -96,13 +98,13 @@
96
98
  // Foreground (icon)
97
99
  &::after {
98
100
  position: absolute;
99
- top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
101
+ top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;
100
102
  left: -($custom-control-gutter + $custom-control-indicator-size);
101
103
  display: block;
102
104
  width: $custom-control-indicator-size;
103
105
  height: $custom-control-indicator-size;
104
106
  content: "";
105
- background: no-repeat 50% / #{$custom-control-indicator-bg-size};
107
+ background: 50% / #{$custom-control-indicator-bg-size} no-repeat;
106
108
  }
107
109
  }
108
110
 
@@ -135,10 +137,10 @@
135
137
 
136
138
  .custom-control-input:disabled {
137
139
  &:checked ~ .custom-control-label::before {
138
- background-color: $custom-control-indicator-checked-disabled-bg;
140
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
139
141
  }
140
142
  &:indeterminate ~ .custom-control-label::before {
141
- background-color: $custom-control-indicator-checked-disabled-bg;
143
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
142
144
  }
143
145
  }
144
146
  }
@@ -149,7 +151,7 @@
149
151
 
150
152
  .custom-radio {
151
153
  .custom-control-label::before {
152
- // stylelint-disable-next-line property-blacklist
154
+ // stylelint-disable-next-line property-disallowed-list
153
155
  border-radius: $custom-radio-indicator-border-radius;
154
156
  }
155
157
 
@@ -161,7 +163,7 @@
161
163
 
162
164
  .custom-control-input:disabled {
163
165
  &:checked ~ .custom-control-label::before {
164
- background-color: $custom-control-indicator-checked-disabled-bg;
166
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
165
167
  }
166
168
  }
167
169
  }
@@ -179,17 +181,17 @@
179
181
  left: -($custom-switch-width + $custom-control-gutter);
180
182
  width: $custom-switch-width;
181
183
  pointer-events: all;
182
- // stylelint-disable-next-line property-blacklist
184
+ // stylelint-disable-next-line property-disallowed-list
183
185
  border-radius: $custom-switch-indicator-border-radius;
184
186
  }
185
187
 
186
188
  &::after {
187
- top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) / 2, $custom-control-indicator-border-width * 2);
189
+ top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) * .5, $custom-control-indicator-border-width * 2);
188
190
  left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);
189
191
  width: $custom-switch-indicator-size;
190
192
  height: $custom-switch-indicator-size;
191
193
  background-color: $custom-control-indicator-border-color;
192
- // stylelint-disable-next-line property-blacklist
194
+ // stylelint-disable-next-line property-disallowed-list
193
195
  border-radius: $custom-switch-indicator-border-radius;
194
196
  @include transition(transform .15s ease-in-out, $custom-forms-transition);
195
197
  }
@@ -204,7 +206,7 @@
204
206
 
205
207
  .custom-control-input:disabled {
206
208
  &:checked ~ .custom-control-label::before {
207
- background-color: $custom-control-indicator-checked-disabled-bg;
209
+ @include gradient-bg($custom-control-indicator-checked-disabled-bg);
208
210
  }
209
211
  }
210
212
  }
@@ -313,6 +315,7 @@
313
315
  width: 100%;
314
316
  height: $custom-file-height;
315
317
  margin: 0;
318
+ overflow: hidden;
316
319
  opacity: 0;
317
320
 
318
321
  &:focus ~ .custom-file-label {
@@ -345,6 +348,7 @@
345
348
  z-index: 1;
346
349
  height: $custom-file-height;
347
350
  padding: $custom-file-padding-y $custom-file-padding-x;
351
+ overflow: hidden;
348
352
  font-family: $custom-file-font-family;
349
353
  font-weight: $custom-file-font-weight;
350
354
  line-height: $custom-file-line-height;
@@ -386,7 +390,7 @@
386
390
  appearance: none;
387
391
 
388
392
  &:focus {
389
- outline: none;
393
+ outline: 0;
390
394
 
391
395
  // Pseudo-elements must be split across multiple rulesets to have an effect.
392
396
  // No box-shadow() mixin for focus accessibility.
@@ -402,7 +406,7 @@
402
406
  &::-webkit-slider-thumb {
403
407
  width: $custom-range-thumb-width;
404
408
  height: $custom-range-thumb-height;
405
- margin-top: ($custom-range-track-height - $custom-range-thumb-height) / 2; // Webkit specific
409
+ margin-top: ($custom-range-track-height - $custom-range-thumb-height) * .5; // Webkit specific
406
410
  @include gradient-bg($custom-range-thumb-bg);
407
411
  border: $custom-range-thumb-border;
408
412
  @include border-radius($custom-range-thumb-border-radius);
@@ -477,7 +481,7 @@
477
481
  cursor: $custom-range-track-cursor;
478
482
  background-color: transparent;
479
483
  border-color: transparent;
480
- border-width: $custom-range-thumb-height / 2;
484
+ border-width: $custom-range-thumb-height * .5;
481
485
  @include box-shadow($custom-range-track-box-shadow);
482
486
  }
483
487
 
@@ -22,7 +22,7 @@
22
22
  display: none; // none by default, but block on "open" of the menu
23
23
  float: left;
24
24
  min-width: $dropdown-min-width;
25
- padding: $dropdown-padding-y 0;
25
+ padding: $dropdown-padding-y $dropdown-padding-x;
26
26
  margin: $dropdown-spacer 0 0; // override default ul
27
27
  @include font-size($dropdown-font-size);
28
28
  color: $dropdown-color;
@@ -100,7 +100,7 @@
100
100
  }
101
101
  }
102
102
 
103
- // When enabled Popper.js, reset basic dropdown position
103
+ // When Popper is enabled, reset the basic dropdown position
104
104
  // stylelint-disable-next-line no-duplicate-selectors
105
105
  .dropdown-menu {
106
106
  &[x-placement^="top"],
@@ -30,12 +30,6 @@
30
30
  border: 0;
31
31
  }
32
32
 
33
- // Remove select outline from select box in FF
34
- &:-moz-focusring {
35
- color: transparent;
36
- text-shadow: 0 0 0 $input-color;
37
- }
38
-
39
33
  // Customize the `:focus` state to imitate native WebKit styles.
40
34
  @include form-control-focus($ignore-warning: true);
41
35
 
@@ -69,6 +63,12 @@ input[type="month"] {
69
63
  }
70
64
 
71
65
  select.form-control {
66
+ // Remove select outline from select box in FF
67
+ &:-moz-focusring {
68
+ color: transparent;
69
+ text-shadow: 0 0 0 $input-color;
70
+ }
71
+
72
72
  &:focus::-ms-value {
73
73
  // Suppress the nested default white text on blue background highlight given to
74
74
  // the selected option text when the (still closed) <select> receives focus
@@ -199,13 +199,13 @@ textarea.form-control {
199
199
  .form-row {
200
200
  display: flex;
201
201
  flex-wrap: wrap;
202
- margin-right: -$form-grid-gutter-width / 2;
203
- margin-left: -$form-grid-gutter-width / 2;
202
+ margin-right: -$form-grid-gutter-width * .5;
203
+ margin-left: -$form-grid-gutter-width * .5;
204
204
 
205
205
  > .col,
206
206
  > [class*="col-"] {
207
- padding-right: $form-grid-gutter-width / 2;
208
- padding-left: $form-grid-gutter-width / 2;
207
+ padding-right: $form-grid-gutter-width * .5;
208
+ padding-left: $form-grid-gutter-width * .5;
209
209
  }
210
210
  }
211
211
 
@@ -51,6 +51,9 @@
51
51
  }
52
52
 
53
53
  // See https://codepen.io/kevinweber/pen/dXWoRw
54
+ //
55
+ // Requires the use of quotes around data URIs.
56
+
54
57
  @function escape-svg($string) {
55
58
  @if str-index($string, "data:image/svg+xml") {
56
59
  @each $char, $encoded in $escaped-characters {
@@ -72,7 +75,7 @@
72
75
  $g: green($color);
73
76
  $b: blue($color);
74
77
 
75
- $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
78
+ $yiq: (($r * 299) + ($g * 587) + ($b * 114)) * .001;
76
79
 
77
80
  @if ($yiq >= $yiq-contrasted-threshold) {
78
81
  @return $dark;
@@ -137,5 +140,51 @@
137
140
  @return $value1 - $value2;
138
141
  }
139
142
 
143
+ @if type-of($value2) != number {
144
+ $value2: unquote("(") + $value2 + unquote(")");
145
+ }
146
+
140
147
  @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
141
148
  }
149
+
150
+ @function divide($dividend, $divisor, $precision: 10) {
151
+ $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
152
+ $dividend: abs($dividend);
153
+ $divisor: abs($divisor);
154
+ @if $dividend == 0 {
155
+ @return 0;
156
+ }
157
+ @if $divisor == 0 {
158
+ @error "Cannot divide by 0";
159
+ }
160
+ $remainder: $dividend;
161
+ $result: 0;
162
+ $factor: 10;
163
+ @while ($remainder > 0 and $precision >= 0) {
164
+ $quotient: 0;
165
+ @while ($remainder >= $divisor) {
166
+ $remainder: $remainder - $divisor;
167
+ $quotient: $quotient + 1;
168
+ }
169
+ $result: $result * 10 + $quotient;
170
+ $factor: $factor * .1;
171
+ $remainder: $remainder * 10;
172
+ $precision: $precision - 1;
173
+ @if ($precision < 0 and $remainder >= $divisor * 5) {
174
+ $result: $result + 1;
175
+ }
176
+ }
177
+ $result: $result * $factor * $sign;
178
+ $dividend-unit: unit($dividend);
179
+ $divisor-unit: unit($divisor);
180
+ $unit-map: (
181
+ "px": 1px,
182
+ "rem": 1rem,
183
+ "em": 1em,
184
+ "%": 1%
185
+ );
186
+ @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
187
+ $result: $result * map-get($unit-map, $dividend-unit);
188
+ }
189
+ @return $result;
190
+ }
@@ -4,11 +4,7 @@
4
4
 
5
5
  @if $enable-grid-classes {
6
6
  // Single container class with breakpoint max-widths
7
- .container {
8
- @include make-container();
9
- @include make-container-max-widths();
10
- }
11
-
7
+ .container,
12
8
  // 100% wide container at all breakpoints
13
9
  .container-fluid {
14
10
  @include make-container();
@@ -32,7 +32,7 @@
32
32
  }
33
33
 
34
34
  .figure-img {
35
- margin-bottom: $spacer / 2;
35
+ margin-bottom: $spacer * .5;
36
36
  line-height: 1;
37
37
  }
38
38
 
@@ -42,7 +42,6 @@
42
42
 
43
43
  > .form-control,
44
44
  > .custom-select {
45
- &:not(:last-child) { @include border-right-radius(0); }
46
45
  &:not(:first-child) { @include border-left-radius(0); }
47
46
  }
48
47
 
@@ -56,6 +55,24 @@
56
55
  &:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }
57
56
  &:not(:first-child) .custom-file-label { @include border-left-radius(0); }
58
57
  }
58
+
59
+ &:not(.has-validation) {
60
+ > .form-control:not(:last-child),
61
+ > .custom-select:not(:last-child),
62
+ > .custom-file:not(:last-child) .custom-file-label,
63
+ > .custom-file:not(:last-child) .custom-file-label::after {
64
+ @include border-right-radius(0);
65
+ }
66
+ }
67
+
68
+ &.has-validation {
69
+ > .form-control:nth-last-child(n + 3),
70
+ > .custom-select:nth-last-child(n + 3),
71
+ > .custom-file:nth-last-child(n + 3) .custom-file-label,
72
+ > .custom-file:nth-last-child(n + 3) .custom-file-label::after {
73
+ @include border-right-radius(0);
74
+ }
75
+ }
59
76
  }
60
77
 
61
78
 
@@ -175,8 +192,10 @@
175
192
 
176
193
  .input-group > .input-group-prepend > .btn,
177
194
  .input-group > .input-group-prepend > .input-group-text,
178
- .input-group > .input-group-append:not(:last-child) > .btn,
179
- .input-group > .input-group-append:not(:last-child) > .input-group-text,
195
+ .input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
196
+ .input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
197
+ .input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
198
+ .input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
180
199
  .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
181
200
  .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
182
201
  @include border-right-radius(0);
@@ -1,5 +1,5 @@
1
1
  .jumbotron {
2
- padding: $jumbotron-padding ($jumbotron-padding / 2);
2
+ padding: $jumbotron-padding ($jumbotron-padding * .5);
3
3
  margin-bottom: $jumbotron-padding;
4
4
  color: $jumbotron-color;
5
5
  background-color: $jumbotron-bg;
@@ -111,7 +111,7 @@
111
111
  margin-top: 0;
112
112
  }
113
113
 
114
- & + .list-group-item {
114
+ + .list-group-item {
115
115
  border-top-width: $list-group-border-width;
116
116
  border-left-width: 0;
117
117
 
@@ -175,16 +175,15 @@
175
175
  flex-wrap: wrap;
176
176
  align-items: center; // vertically center
177
177
  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
178
- padding: $modal-inner-padding - $modal-footer-margin-between / 2;
178
+ padding: $modal-inner-padding - $modal-footer-margin-between * .5;
179
179
  border-top: $modal-footer-border-width solid $modal-footer-border-color;
180
180
  @include border-bottom-radius($modal-content-inner-border-radius);
181
181
 
182
182
  // Place margin between footer elements
183
183
  // This solution is far from ideal because of the universal selector usage,
184
184
  // but is needed to fix https://github.com/twbs/bootstrap/issues/24800
185
- // stylelint-disable-next-line selector-max-universal
186
185
  > * {
187
- margin: $modal-footer-margin-between / 2;
186
+ margin: $modal-footer-margin-between * .5;
188
187
  }
189
188
  }
190
189
 
@@ -35,11 +35,8 @@
35
35
  .nav-tabs {
36
36
  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
37
37
 
38
- .nav-item {
39
- margin-bottom: -$nav-tabs-border-width;
40
- }
41
-
42
38
  .nav-link {
39
+ margin-bottom: -$nav-tabs-border-width;
43
40
  border: $nav-tabs-border-width solid transparent;
44
41
  @include border-top-radius($nav-tabs-border-radius);
45
42
 
@@ -92,6 +89,7 @@
92
89
  //
93
90
 
94
91
  .nav-fill {
92
+ > .nav-link,
95
93
  .nav-item {
96
94
  flex: 1 1 auto;
97
95
  text-align: center;
@@ -99,6 +97,7 @@
99
97
  }
100
98
 
101
99
  .nav-justified {
100
+ > .nav-link,
102
101
  .nav-item {
103
102
  flex-basis: 0;
104
103
  flex-grow: 1;
@@ -136,8 +136,12 @@
136
136
  height: 1.5em;
137
137
  vertical-align: middle;
138
138
  content: "";
139
- background: no-repeat center center;
140
- background-size: 100% 100%;
139
+ background: 50% / 100% 100% no-repeat;
140
+ }
141
+
142
+ .navbar-nav-scroll {
143
+ max-height: $navbar-nav-scroll-max-height;
144
+ overflow-y: auto;
141
145
  }
142
146
 
143
147
  // Generate series of `.navbar-expand-*` responsive classes for configuring
@@ -199,6 +203,10 @@
199
203
  }
200
204
  }
201
205
 
206
+ .navbar-nav-scroll {
207
+ overflow: visible;
208
+ }
209
+
202
210
  .navbar-collapse {
203
211
  display: flex !important; // stylelint-disable-line declaration-no-important
204
212
 
@@ -66,9 +66,9 @@
66
66
  //
67
67
 
68
68
  .pagination-lg {
69
- @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
69
+ @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $pagination-border-radius-lg);
70
70
  }
71
71
 
72
72
  .pagination-sm {
73
- @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
73
+ @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $pagination-border-radius-sm);
74
74
  }
@@ -43,13 +43,13 @@
43
43
 
44
44
  &::before {
45
45
  bottom: 0;
46
- border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
46
+ border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
47
47
  border-top-color: $popover-arrow-outer-color;
48
48
  }
49
49
 
50
50
  &::after {
51
51
  bottom: $popover-border-width;
52
- border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
52
+ border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;
53
53
  border-top-color: $popover-arrow-color;
54
54
  }
55
55
  }
@@ -66,13 +66,13 @@
66
66
 
67
67
  &::before {
68
68
  left: 0;
69
- border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
69
+ border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
70
70
  border-right-color: $popover-arrow-outer-color;
71
71
  }
72
72
 
73
73
  &::after {
74
74
  left: $popover-border-width;
75
- border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
75
+ border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;
76
76
  border-right-color: $popover-arrow-color;
77
77
  }
78
78
  }
@@ -86,13 +86,13 @@
86
86
 
87
87
  &::before {
88
88
  top: 0;
89
- border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
89
+ border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
90
90
  border-bottom-color: $popover-arrow-outer-color;
91
91
  }
92
92
 
93
93
  &::after {
94
94
  top: $popover-border-width;
95
- border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
95
+ border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);
96
96
  border-bottom-color: $popover-arrow-color;
97
97
  }
98
98
  }
@@ -104,7 +104,7 @@
104
104
  left: 50%;
105
105
  display: block;
106
106
  width: $popover-arrow-width;
107
- margin-left: -$popover-arrow-width / 2;
107
+ margin-left: -$popover-arrow-width * .5;
108
108
  content: "";
109
109
  border-bottom: $popover-border-width solid $popover-header-bg;
110
110
  }
@@ -121,13 +121,13 @@
121
121
 
122
122
  &::before {
123
123
  right: 0;
124
- border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
124
+ border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
125
125
  border-left-color: $popover-arrow-outer-color;
126
126
  }
127
127
 
128
128
  &::after {
129
129
  right: $popover-border-width;
130
- border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
130
+ border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;
131
131
  border-left-color: $popover-arrow-color;
132
132
  }
133
133
  }
@@ -55,15 +55,6 @@
55
55
  page-break-inside: avoid;
56
56
  }
57
57
 
58
- //
59
- // Printing Tables:
60
- // https://web.archive.org/web/20180815150934/http://css-discuss.incutio.com/wiki/Printing_Tables
61
- //
62
-
63
- thead {
64
- display: table-header-group;
65
- }
66
-
67
58
  tr,
68
59
  img {
69
60
  page-break-inside: avoid;
@@ -36,7 +36,7 @@
36
36
 
37
37
  @if $enable-transitions {
38
38
  .progress-bar-animated {
39
- animation: progress-bar-stripes $progress-bar-animation-timing;
39
+ animation: $progress-bar-animation-timing progress-bar-stripes;
40
40
 
41
41
  @if $enable-prefers-reduced-motion-media-query {
42
42
  @media (prefers-reduced-motion: reduce) {
@@ -1,4 +1,4 @@
1
- // stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
1
+ // stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
2
2
 
3
3
  // Reboot
4
4
  //
@@ -199,7 +199,7 @@ a {
199
199
  // causes specificity issues in many other styles that are too complex to fix.
200
200
  // See https://github.com/twbs/bootstrap/issues/19402
201
201
 
202
- a:not([href]) {
202
+ a:not([href]):not([class]) {
203
203
  color: inherit;
204
204
  text-decoration: none;
205
205
 
@@ -278,10 +278,14 @@ caption {
278
278
  caption-side: bottom;
279
279
  }
280
280
 
281
+ // 1. Removes font-weight bold by inheriting
282
+ // 2. Matches default `<td>` alignment by inheriting `text-align`.
283
+ // 3. Fix alignment for Safari
284
+
281
285
  th {
282
- // Matches default `<td>` alignment by inheriting from the `<body>`, or the
283
- // closest parent with a set `text-align`.
284
- text-align: inherit;
286
+ font-weight: $table-th-font-weight; // 1
287
+ text-align: inherit; // 2
288
+ text-align: -webkit-match-parent; // 3
285
289
  }
286
290
 
287
291
 
@@ -299,17 +303,17 @@ label {
299
303
  //
300
304
  // Details at https://github.com/twbs/bootstrap/issues/24093
301
305
  button {
302
- // stylelint-disable-next-line property-blacklist
306
+ // stylelint-disable-next-line property-disallowed-list
303
307
  border-radius: 0;
304
308
  }
305
309
 
306
- // Work around a Firefox/IE bug where the transparent `button` background
307
- // results in a loss of the default `button` focus styles.
308
- //
309
- // Credit: https://github.com/suitcss/base/
310
- button:focus {
311
- outline: 1px dotted;
312
- outline: 5px auto -webkit-focus-ring-color;
310
+ // Explicitly remove focus outline in Chromium when it shouldn't be
311
+ // visible (e.g. as result of mouse click or touch tap). It already
312
+ // should be doing this automatically, but seems to currently be
313
+ // confused and applies its very visible two-tone outline anyway.
314
+
315
+ button:focus:not(:focus-visible) {
316
+ outline: 0;
313
317
  }
314
318
 
315
319
  input,
@@ -1,4 +1,3 @@
1
- // Do not forget to update getting-started/theming.md!
2
1
  :root {
3
2
  // Custom variable values only support SassScript inside `#{}`.
4
3
  @each $color, $value in $colors {
@@ -10,12 +10,12 @@
10
10
  display: inline-block;
11
11
  width: $spinner-width;
12
12
  height: $spinner-height;
13
- vertical-align: text-bottom;
13
+ vertical-align: $spinner-vertical-align;
14
14
  border: $spinner-border-width solid currentColor;
15
15
  border-right-color: transparent;
16
- // stylelint-disable-next-line property-blacklist
16
+ // stylelint-disable-next-line property-disallowed-list
17
17
  border-radius: 50%;
18
- animation: spinner-border .75s linear infinite;
18
+ animation: .75s linear infinite spinner-border;
19
19
  }
20
20
 
21
21
  .spinner-border-sm {
@@ -42,15 +42,24 @@
42
42
  display: inline-block;
43
43
  width: $spinner-width;
44
44
  height: $spinner-height;
45
- vertical-align: text-bottom;
45
+ vertical-align: $spinner-vertical-align;
46
46
  background-color: currentColor;
47
- // stylelint-disable-next-line property-blacklist
47
+ // stylelint-disable-next-line property-disallowed-list
48
48
  border-radius: 50%;
49
49
  opacity: 0;
50
- animation: spinner-grow .75s linear infinite;
50
+ animation: .75s linear infinite spinner-grow;
51
51
  }
52
52
 
53
53
  .spinner-grow-sm {
54
54
  width: $spinner-width-sm;
55
55
  height: $spinner-height-sm;
56
56
  }
57
+
58
+ @if $enable-prefers-reduced-motion-media-query {
59
+ @media (prefers-reduced-motion: reduce) {
60
+ .spinner-border,
61
+ .spinner-grow {
62
+ animation-duration: 1.5s;
63
+ }
64
+ }
65
+ }