bootstrap 4.3.0 → 4.5.3

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 (89) 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 +7 -7
  6. data/assets/javascripts/bootstrap.js +1186 -1056
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +45 -65
  9. data/assets/javascripts/bootstrap/button.js +114 -80
  10. data/assets/javascripts/bootstrap/carousel.js +131 -186
  11. data/assets/javascripts/bootstrap/collapse.js +86 -140
  12. data/assets/javascripts/bootstrap/dropdown.js +152 -207
  13. data/assets/javascripts/bootstrap/modal.js +204 -214
  14. data/assets/javascripts/bootstrap/popover.js +41 -95
  15. data/assets/javascripts/bootstrap/scrollspy.js +69 -127
  16. data/assets/javascripts/bootstrap/tab.js +75 -95
  17. data/assets/javascripts/bootstrap/toast.js +87 -127
  18. data/assets/javascripts/bootstrap/tooltip.js +298 -198
  19. data/assets/javascripts/bootstrap/util.js +41 -20
  20. data/assets/stylesheets/_bootstrap-grid.scss +4 -4
  21. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  22. data/assets/stylesheets/_bootstrap.scss +4 -4
  23. data/assets/stylesheets/bootstrap/_alert.scss +1 -0
  24. data/assets/stylesheets/bootstrap/_badge.scss +1 -1
  25. data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -1
  26. data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
  27. data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
  28. data/assets/stylesheets/bootstrap/_card.scss +42 -45
  29. data/assets/stylesheets/bootstrap/_carousel.scss +6 -6
  30. data/assets/stylesheets/bootstrap/_close.scss +2 -3
  31. data/assets/stylesheets/bootstrap/_code.scss +1 -1
  32. data/assets/stylesheets/bootstrap/_custom-forms.scss +34 -17
  33. data/assets/stylesheets/bootstrap/_dropdown.scss +6 -5
  34. data/assets/stylesheets/bootstrap/_forms.scss +26 -9
  35. data/assets/stylesheets/bootstrap/_functions.scss +63 -5
  36. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  37. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  38. data/assets/stylesheets/bootstrap/_input-group.scss +1 -2
  39. data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
  40. data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
  41. data/assets/stylesheets/bootstrap/_modal.scss +26 -15
  42. data/assets/stylesheets/bootstrap/_nav.scss +6 -3
  43. data/assets/stylesheets/bootstrap/_navbar.scss +45 -15
  44. data/assets/stylesheets/bootstrap/_pagination.scss +3 -2
  45. data/assets/stylesheets/bootstrap/_popover.scss +8 -9
  46. data/assets/stylesheets/bootstrap/_print.scss +2 -2
  47. data/assets/stylesheets/bootstrap/_progress.scss +6 -2
  48. data/assets/stylesheets/bootstrap/_reboot.scss +32 -31
  49. data/assets/stylesheets/bootstrap/_root.scss +1 -0
  50. data/assets/stylesheets/bootstrap/_spinners.scss +3 -2
  51. data/assets/stylesheets/bootstrap/_tables.scss +3 -3
  52. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  53. data/assets/stylesheets/bootstrap/_type.scss +2 -2
  54. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  55. data/assets/stylesheets/bootstrap/_variables.scss +51 -32
  56. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  57. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
  58. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
  59. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
  60. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  61. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
  62. data/assets/stylesheets/bootstrap/mixins/_forms.scss +35 -49
  63. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +29 -15
  64. data/assets/stylesheets/bootstrap/mixins/_grid.scss +25 -7
  65. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  66. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
  67. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  68. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  69. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  70. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  71. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +4 -3
  72. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  73. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
  74. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  75. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  76. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  77. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  78. data/assets/stylesheets/bootstrap/utilities/_text.scss +4 -4
  79. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +0 -8
  80. data/bootstrap.gemspec +1 -1
  81. data/lib/bootstrap/version.rb +2 -2
  82. data/tasks/updater/js.rb +1 -1
  83. data/tasks/updater/network.rb +2 -2
  84. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  85. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  86. data/test/gemfiles/rails_6_0.gemfile +7 -0
  87. data/test/support/dummy_rails_integration.rb +3 -1
  88. data/test/test_helper.rb +18 -13
  89. metadata +11 -5
@@ -11,6 +11,7 @@
11
11
  margin-left: -$pagination-border-width;
12
12
  line-height: $pagination-line-height;
13
13
  color: $pagination-color;
14
+ text-decoration: if($link-decoration == none, null, none);
14
15
  background-color: $pagination-bg;
15
16
  border: $pagination-border-width solid $pagination-border-color;
16
17
 
@@ -23,7 +24,7 @@
23
24
  }
24
25
 
25
26
  &:focus {
26
- z-index: 2;
27
+ z-index: 3;
27
28
  outline: $pagination-focus-outline;
28
29
  box-shadow: $pagination-focus-box-shadow;
29
30
  }
@@ -43,7 +44,7 @@
43
44
  }
44
45
 
45
46
  &.active .page-link {
46
- z-index: 1;
47
+ z-index: 3;
47
48
  color: $pagination-active-color;
48
49
  background-color: $pagination-active-bg;
49
50
  border-color: $pagination-active-border-color;
@@ -22,7 +22,7 @@
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 {
@@ -39,7 +39,7 @@
39
39
  margin-bottom: $popover-arrow-height;
40
40
 
41
41
  > .arrow {
42
- bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
42
+ bottom: subtract(-$popover-arrow-height, $popover-border-width);
43
43
 
44
44
  &::before {
45
45
  bottom: 0;
@@ -59,10 +59,10 @@
59
59
  margin-left: $popover-arrow-height;
60
60
 
61
61
  > .arrow {
62
- left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
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;
@@ -82,7 +82,7 @@
82
82
  margin-top: $popover-arrow-height;
83
83
 
84
84
  > .arrow {
85
- top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
85
+ top: subtract(-$popover-arrow-height, $popover-border-width);
86
86
 
87
87
  &::before {
88
88
  top: 0;
@@ -114,10 +114,10 @@
114
114
  margin-right: $popover-arrow-height;
115
115
 
116
116
  > .arrow {
117
- right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
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,6 +1,6 @@
1
1
  // stylelint-disable declaration-no-important, selector-no-qualifying-type
2
2
 
3
- // Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css
3
+ // Source: https://github.com/h5bp/main.css/blob/master/src/_print.css
4
4
 
5
5
  // ==========================================================================
6
6
  // Print styles.
@@ -57,7 +57,7 @@
57
57
 
58
58
  //
59
59
  // Printing Tables:
60
- // http://css-discuss.incutio.com/wiki/Printing_Tables
60
+ // https://web.archive.org/web/20180815150934/http://css-discuss.incutio.com/wiki/Printing_Tables
61
61
  //
62
62
 
63
63
  thead {
@@ -10,6 +10,7 @@
10
10
  display: flex;
11
11
  height: $progress-height;
12
12
  overflow: hidden; // force rounded corners by cropping it
13
+ line-height: 0;
13
14
  @include font-size($progress-font-size);
14
15
  background-color: $progress-bg;
15
16
  @include border-radius($progress-border-radius);
@@ -20,6 +21,7 @@
20
21
  display: flex;
21
22
  flex-direction: column;
22
23
  justify-content: center;
24
+ overflow: hidden;
23
25
  color: $progress-bar-color;
24
26
  text-align: center;
25
27
  white-space: nowrap;
@@ -36,8 +38,10 @@
36
38
  .progress-bar-animated {
37
39
  animation: progress-bar-stripes $progress-bar-animation-timing;
38
40
 
39
- @media (prefers-reduced-motion: reduce) {
40
- animation: none;
41
+ @if $enable-prefers-reduced-motion-media-query {
42
+ @media (prefers-reduced-motion: reduce) {
43
+ animation: none;
44
+ }
41
45
  }
42
46
  }
43
47
  }
@@ -54,12 +54,16 @@ body {
54
54
  background-color: $body-bg; // 2
55
55
  }
56
56
 
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 {
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) {
63
67
  outline: 0 !important;
64
68
  }
65
69
 
@@ -184,30 +188,25 @@ a {
184
188
  text-decoration: $link-decoration;
185
189
  background-color: transparent; // Remove the gray background on active links in IE 10.
186
190
 
187
- @include hover {
191
+ @include hover() {
188
192
  color: $link-hover-color;
189
193
  text-decoration: $link-hover-decoration;
190
194
  }
191
195
  }
192
196
 
193
- // And undo these styles for placeholder links/named anchors (without href)
194
- // which have not been made explicitly keyboard-focusable (without tabindex).
197
+ // And undo these styles for placeholder links/named anchors (without href).
195
198
  // It would be more straightforward to just use a[href] in previous block, but that
196
199
  // causes specificity issues in many other styles that are too complex to fix.
197
200
  // See https://github.com/twbs/bootstrap/issues/19402
198
201
 
199
- a:not([href]):not([tabindex]) {
202
+ a:not([href]):not([class]) {
200
203
  color: inherit;
201
204
  text-decoration: none;
202
205
 
203
- @include hover-focus {
206
+ @include hover() {
204
207
  color: inherit;
205
208
  text-decoration: none;
206
209
  }
207
-
208
- &:focus {
209
- outline: 0;
210
- }
211
210
  }
212
211
 
213
212
 
@@ -230,6 +229,9 @@ pre {
230
229
  margin-bottom: 1rem;
231
230
  // Don't allow content to break outside
232
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;
233
235
  }
234
236
 
235
237
 
@@ -276,10 +278,14 @@ caption {
276
278
  caption-side: bottom;
277
279
  }
278
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
+
279
285
  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;
286
+ font-weight: $table-th-font-weight; // 1
287
+ text-align: inherit; // 2
288
+ text-align: -webkit-match-parent; // 3
283
289
  }
284
290
 
285
291
 
@@ -297,7 +303,7 @@ label {
297
303
  //
298
304
  // Details at https://github.com/twbs/bootstrap/issues/24093
299
305
  button {
300
- // stylelint-disable-next-line property-blacklist
306
+ // stylelint-disable-next-line property-disallowed-list
301
307
  border-radius: 0;
302
308
  }
303
309
 
@@ -331,6 +337,13 @@ select {
331
337
  text-transform: none; // Remove the inheritance of text transform in Firefox
332
338
  }
333
339
 
340
+ // Set the cursor for non-`<button>` buttons
341
+ //
342
+ // Details at https://github.com/twbs/bootstrap/pull/30562
343
+ [role="button"] {
344
+ cursor: pointer;
345
+ }
346
+
334
347
  // Remove the inheritance of word-wrap in Safari.
335
348
  //
336
349
  // Details at https://github.com/twbs/bootstrap/issues/24990
@@ -377,18 +390,6 @@ input[type="checkbox"] {
377
390
  }
378
391
 
379
392
 
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
- }
391
-
392
393
  textarea {
393
394
  overflow: auto; // Remove the default vertical scrollbar in IE.
394
395
  // Textareas should really only resize vertically so they don't break their (horizontal) containers.
@@ -1,3 +1,4 @@
1
+ // Do not forget to update getting-started/theming.md!
1
2
  :root {
2
3
  // Custom variable values only support SassScript inside `#{}`.
3
4
  @each $color, $value in $colors {
@@ -13,7 +13,7 @@
13
13
  vertical-align: text-bottom;
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
18
  animation: spinner-border .75s linear infinite;
19
19
  }
@@ -34,6 +34,7 @@
34
34
  }
35
35
  50% {
36
36
  opacity: 1;
37
+ transform: none;
37
38
  }
38
39
  }
39
40
 
@@ -43,7 +44,7 @@
43
44
  height: $spinner-height;
44
45
  vertical-align: text-bottom;
45
46
  background-color: currentColor;
46
- // stylelint-disable-next-line property-blacklist
47
+ // stylelint-disable-next-line property-disallowed-list
47
48
  border-radius: 50%;
48
49
  opacity: 0;
49
50
  animation: spinner-grow .75s linear infinite;
@@ -84,7 +84,7 @@
84
84
 
85
85
  .table-hover {
86
86
  tbody tr {
87
- @include hover {
87
+ @include hover() {
88
88
  color: $table-hover-color;
89
89
  background-color: $table-hover-bg;
90
90
  }
@@ -142,14 +142,14 @@
142
142
  }
143
143
 
144
144
  &.table-striped {
145
- tbody tr:nth-of-type(odd) {
145
+ tbody tr:nth-of-type(#{$table-striped-order}) {
146
146
  background-color: $table-dark-accent-bg;
147
147
  }
148
148
  }
149
149
 
150
150
  &.table-hover {
151
151
  tbody tr {
152
- @include hover {
152
+ @include hover() {
153
153
  color: $table-dark-hover-color;
154
154
  background-color: $table-dark-hover-bg;
155
155
  }
@@ -1,13 +1,14 @@
1
1
  .toast {
2
+ // Prevents from shrinking in IE11, when in a flex container
3
+ // See https://github.com/twbs/bootstrap/issues/28341
4
+ flex-basis: $toast-max-width;
2
5
  max-width: $toast-max-width;
3
- overflow: hidden; // cheap rounded corners on nested items
4
6
  @include font-size($toast-font-size);
5
7
  color: $toast-color;
6
8
  background-color: $toast-background-color;
7
9
  background-clip: padding-box;
8
10
  border: $toast-border-width solid $toast-border-color;
9
11
  box-shadow: $toast-box-shadow;
10
- backdrop-filter: blur(10px);
11
12
  opacity: 0;
12
13
  @include border-radius($toast-border-radius);
13
14
 
@@ -37,6 +38,7 @@
37
38
  background-color: $toast-header-background-color;
38
39
  background-clip: padding-box;
39
40
  border-bottom: $toast-border-width solid $toast-header-border-color;
41
+ @include border-top-radius(subtract($toast-border-radius, $toast-border-width));
40
42
  }
41
43
 
42
44
  .toast-body {
@@ -82,12 +82,12 @@ mark,
82
82
  //
83
83
 
84
84
  .list-unstyled {
85
- @include list-unstyled;
85
+ @include list-unstyled();
86
86
  }
87
87
 
88
88
  // Inline turns list items into inline-block
89
89
  .list-inline {
90
- @include list-unstyled;
90
+ @include list-unstyled();
91
91
  }
92
92
  .list-inline-item {
93
93
  display: inline-block;
@@ -6,12 +6,13 @@
6
6
  @import "utilities/embed";
7
7
  @import "utilities/flex";
8
8
  @import "utilities/float";
9
+ @import "utilities/interactions";
9
10
  @import "utilities/overflow";
10
11
  @import "utilities/position";
11
12
  @import "utilities/screenreaders";
12
13
  @import "utilities/shadows";
13
14
  @import "utilities/sizing";
14
- @import "utilities/stretched-link";
15
15
  @import "utilities/spacing";
16
+ @import "utilities/stretched-link";
16
17
  @import "utilities/text";
17
18
  @import "utilities/visibility";
@@ -18,7 +18,6 @@ $gray-900: #212529 !default;
18
18
  $black: #000 !default;
19
19
 
20
20
  $grays: () !default;
21
- // stylelint-disable-next-line scss/dollar-variable-default
22
21
  $grays: map-merge(
23
22
  (
24
23
  "100": $gray-100,
@@ -46,7 +45,6 @@ $teal: #20c997 !default;
46
45
  $cyan: #17a2b8 !default;
47
46
 
48
47
  $colors: () !default;
49
- // stylelint-disable-next-line scss/dollar-variable-default
50
48
  $colors: map-merge(
51
49
  (
52
50
  "blue": $blue,
@@ -76,7 +74,6 @@ $light: $gray-100 !default;
76
74
  $dark: $gray-800 !default;
77
75
 
78
76
  $theme-colors: () !default;
79
- // stylelint-disable-next-line scss/dollar-variable-default
80
77
  $theme-colors: map-merge(
81
78
  (
82
79
  "primary": $primary,
@@ -101,6 +98,15 @@ $yiq-contrasted-threshold: 150 !default;
101
98
  $yiq-text-dark: $gray-900 !default;
102
99
  $yiq-text-light: $white !default;
103
100
 
101
+ // Characters which are escaped by the escape-svg function
102
+ $escaped-characters: (
103
+ ("<", "%3c"),
104
+ (">", "%3e"),
105
+ ("#", "%23"),
106
+ ("(", "%28"),
107
+ (")", "%29"),
108
+ ) !default;
109
+
104
110
 
105
111
  // Options
106
112
  //
@@ -129,7 +135,6 @@ $enable-deprecation-messages: true !default;
129
135
 
130
136
  $spacer: 1rem !default;
131
137
  $spacers: () !default;
132
- // stylelint-disable-next-line scss/dollar-variable-default
133
138
  $spacers: map-merge(
134
139
  (
135
140
  0: 0,
@@ -144,7 +149,6 @@ $spacers: map-merge(
144
149
 
145
150
  // This variable affects the `.h-*` and `.w-*` classes.
146
151
  $sizes: () !default;
147
- // stylelint-disable-next-line scss/dollar-variable-default
148
152
  $sizes: map-merge(
149
153
  (
150
154
  25: 25%,
@@ -220,6 +224,7 @@ $container-max-widths: (
220
224
 
221
225
  $grid-columns: 12 !default;
222
226
  $grid-gutter-width: 30px !default;
227
+ $grid-row-columns: 6 !default;
223
228
 
224
229
 
225
230
  // Components
@@ -254,7 +259,6 @@ $transition-fade: opacity .15s linear !default;
254
259
  $transition-collapse: height .35s ease !default;
255
260
 
256
261
  $embed-responsive-aspect-ratios: () !default;
257
- // stylelint-disable-next-line scss/dollar-variable-default
258
262
  $embed-responsive-aspect-ratios: join(
259
263
  (
260
264
  (21 9),
@@ -359,6 +363,7 @@ $table-border-color: $border-color !default;
359
363
 
360
364
  $table-head-bg: $gray-200 !default;
361
365
  $table-head-color: $gray-700 !default;
366
+ $table-th-font-weight: null !default;
362
367
 
363
368
  $table-dark-color: $white !default;
364
369
  $table-dark-bg: $gray-800 !default;
@@ -366,7 +371,6 @@ $table-dark-accent-bg: rgba($white, .05) !default;
366
371
  $table-dark-hover-color: $table-dark-color !default;
367
372
  $table-dark-hover-bg: rgba($white, .075) !default;
368
373
  $table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;
369
- $table-dark-color: $white !default;
370
374
 
371
375
  $table-striped-order: odd !default;
372
376
 
@@ -412,6 +416,7 @@ $btn-padding-x: $input-btn-padding-x !default;
412
416
  $btn-font-family: $input-btn-font-family !default;
413
417
  $btn-font-size: $input-btn-font-size !default;
414
418
  $btn-line-height: $input-btn-line-height !default;
419
+ $btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping
415
420
 
416
421
  $btn-padding-y-sm: $input-btn-padding-y-sm !default;
417
422
  $btn-padding-x-sm: $input-btn-padding-x-sm !default;
@@ -488,13 +493,13 @@ $input-plaintext-color: $body-color !default;
488
493
 
489
494
  $input-height-border: $input-border-width * 2 !default;
490
495
 
491
- $input-height-inner: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2}) !default;
492
- $input-height-inner-half: calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;
493
- $input-height-inner-quarter: calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;
496
+ $input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;
497
+ $input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;
498
+ $input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;
494
499
 
495
- $input-height: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2} + #{$input-height-border}) !default;
496
- $input-height-sm: calc(#{$input-line-height-sm * 1em} + #{$input-btn-padding-y-sm * 2} + #{$input-height-border}) !default;
497
- $input-height-lg: calc(#{$input-line-height-lg * 1em} + #{$input-btn-padding-y-lg * 2} + #{$input-height-border}) !default;
500
+ $input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;
501
+ $input-height-sm: add($input-line-height-sm * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;
502
+ $input-height-lg: add($input-line-height-lg * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;
498
503
 
499
504
  $input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
500
505
 
@@ -518,6 +523,7 @@ $custom-forms-transition: background-color .15s ease-in-out, borde
518
523
 
519
524
  $custom-control-gutter: .5rem !default;
520
525
  $custom-control-spacer-x: 1rem !default;
526
+ $custom-control-cursor: null !default;
521
527
 
522
528
  $custom-control-indicator-size: 1rem !default;
523
529
  $custom-control-indicator-bg: $input-bg !default;
@@ -527,13 +533,15 @@ $custom-control-indicator-box-shadow: $input-box-shadow !default;
527
533
  $custom-control-indicator-border-color: $gray-500 !default;
528
534
  $custom-control-indicator-border-width: $input-border-width !default;
529
535
 
536
+ $custom-control-label-color: null !default;
537
+
530
538
  $custom-control-indicator-disabled-bg: $input-disabled-bg !default;
531
539
  $custom-control-label-disabled-color: $gray-600 !default;
532
540
 
533
541
  $custom-control-indicator-checked-color: $component-active-color !default;
534
542
  $custom-control-indicator-checked-bg: $component-active-bg !default;
535
543
  $custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
536
- $custom-control-indicator-checked-box-shadow: none !default;
544
+ $custom-control-indicator-checked-box-shadow: null !default;
537
545
  $custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
538
546
 
539
547
  $custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;
@@ -541,24 +549,24 @@ $custom-control-indicator-focus-border-color: $input-focus-border-color !defau
541
549
 
542
550
  $custom-control-indicator-active-color: $component-active-color !default;
543
551
  $custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;
544
- $custom-control-indicator-active-box-shadow: none !default;
552
+ $custom-control-indicator-active-box-shadow: null !default;
545
553
  $custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;
546
554
 
547
555
  $custom-checkbox-indicator-border-radius: $border-radius !default;
548
- $custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"), "#", "%23") !default;
556
+ $custom-checkbox-indicator-icon-checked: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/></svg>") !default;
549
557
 
550
558
  $custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
551
559
  $custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
552
- $custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3e%3c/svg%3e"), "#", "%23") !default;
553
- $custom-checkbox-indicator-indeterminate-box-shadow: none !default;
560
+ $custom-checkbox-indicator-icon-indeterminate: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'><path stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/></svg>") !default;
561
+ $custom-checkbox-indicator-indeterminate-box-shadow: null !default;
554
562
  $custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
555
563
 
556
564
  $custom-radio-indicator-border-radius: 50% !default;
557
- $custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e"), "#", "%23") !default;
565
+ $custom-radio-indicator-icon-checked: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'><circle r='3' fill='#{$custom-control-indicator-checked-color}'/></svg>") !default;
558
566
 
559
567
  $custom-switch-width: $custom-control-indicator-size * 1.75 !default;
560
568
  $custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;
561
- $custom-switch-indicator-size: calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;
569
+ $custom-switch-indicator-size: subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;
562
570
 
563
571
  $custom-select-padding-y: $input-padding-y !default;
564
572
  $custom-select-padding-x: $input-padding-x !default;
@@ -574,10 +582,10 @@ $custom-select-bg: $input-bg !default;
574
582
  $custom-select-disabled-bg: $gray-200 !default;
575
583
  $custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
576
584
  $custom-select-indicator-color: $gray-800 !default;
577
- $custom-select-indicator: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e"), "#", "%23") !default;
578
- $custom-select-background: $custom-select-indicator no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
585
+ $custom-select-indicator: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'><path fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/></svg>") !default;
586
+ $custom-select-background: escape-svg($custom-select-indicator) no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
579
587
 
580
- $custom-select-feedback-icon-padding-right: calc((1em + #{2 * $custom-select-padding-y}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;
588
+ $custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;
581
589
  $custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
582
590
  $custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;
583
591
 
@@ -650,12 +658,11 @@ $form-feedback-valid-color: theme-color("success") !default;
650
658
  $form-feedback-invalid-color: theme-color("danger") !default;
651
659
 
652
660
  $form-feedback-icon-valid-color: $form-feedback-valid-color !default;
653
- $form-feedback-icon-valid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"), "#", "%23") !default;
661
+ $form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>") !default;
654
662
  $form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
655
- $form-feedback-icon-invalid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='#{$form-feedback-icon-invalid-color}' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"), "#", "%23") !default;
663
+ $form-feedback-icon-invalid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
656
664
 
657
665
  $form-validation-states: () !default;
658
- // stylelint-disable-next-line scss/dollar-variable-default
659
666
  $form-validation-states: map-merge(
660
667
  (
661
668
  "valid": (
@@ -728,14 +735,14 @@ $navbar-dark-color: rgba($white, .5) !default;
728
735
  $navbar-dark-hover-color: rgba($white, .75) !default;
729
736
  $navbar-dark-active-color: $white !default;
730
737
  $navbar-dark-disabled-color: rgba($white, .25) !default;
731
- $navbar-dark-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
738
+ $navbar-dark-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
732
739
  $navbar-dark-toggler-border-color: rgba($white, .1) !default;
733
740
 
734
741
  $navbar-light-color: rgba($black, .5) !default;
735
742
  $navbar-light-hover-color: rgba($black, .7) !default;
736
743
  $navbar-light-active-color: rgba($black, .9) !default;
737
744
  $navbar-light-disabled-color: rgba($black, .3) !default;
738
- $navbar-light-toggler-icon-bg: str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
745
+ $navbar-light-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
739
746
  $navbar-light-toggler-border-color: rgba($black, .1) !default;
740
747
 
741
748
  $navbar-light-brand-color: $navbar-light-active-color !default;
@@ -749,6 +756,7 @@ $navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
749
756
  // Dropdown menu container and contents.
750
757
 
751
758
  $dropdown-min-width: 10rem !default;
759
+ $dropdown-padding-x: 0 !default;
752
760
  $dropdown-padding-y: .5rem !default;
753
761
  $dropdown-spacer: .125rem !default;
754
762
  $dropdown-font-size: $font-size-base !default;
@@ -757,7 +765,7 @@ $dropdown-bg: $white !default;
757
765
  $dropdown-border-color: rgba($black, .15) !default;
758
766
  $dropdown-border-radius: $border-radius !default;
759
767
  $dropdown-border-width: $border-width !default;
760
- $dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default;
768
+ $dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;
761
769
  $dropdown-divider-bg: $gray-200 !default;
762
770
  $dropdown-divider-margin-y: $nav-divider-margin-y !default;
763
771
  $dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;
@@ -775,6 +783,7 @@ $dropdown-item-padding-y: .25rem !default;
775
783
  $dropdown-item-padding-x: 1.5rem !default;
776
784
 
777
785
  $dropdown-header-color: $gray-600 !default;
786
+ $dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;
778
787
 
779
788
 
780
789
  // Pagination
@@ -822,9 +831,10 @@ $card-spacer-x: 1.25rem !default;
822
831
  $card-border-width: $border-width !default;
823
832
  $card-border-radius: $border-radius !default;
824
833
  $card-border-color: rgba($black, .125) !default;
825
- $card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
834
+ $card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;
826
835
  $card-cap-bg: rgba($black, .03) !default;
827
836
  $card-cap-color: null !default;
837
+ $card-height: null !default;
828
838
  $card-color: null !default;
829
839
  $card-bg: $white !default;
830
840
 
@@ -871,6 +881,7 @@ $popover-max-width: 276px !default;
871
881
  $popover-border-width: $border-width !default;
872
882
  $popover-border-color: rgba($black, .2) !default;
873
883
  $popover-border-radius: $border-radius-lg !default;
884
+ $popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;
874
885
  $popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;
875
886
 
876
887
  $popover-header-bg: darken($popover-bg, 3%) !default;
@@ -929,6 +940,9 @@ $badge-pill-border-radius: 10rem !default;
929
940
  // Padding applied to the modal body
930
941
  $modal-inner-padding: 1rem !default;
931
942
 
943
+ // Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding
944
+ $modal-footer-margin-between: .5rem !default;
945
+
932
946
  $modal-dialog-margin: .5rem !default;
933
947
  $modal-dialog-margin-y-sm-up: 1.75rem !default;
934
948
 
@@ -939,6 +953,7 @@ $modal-content-bg: $white !default;
939
953
  $modal-content-border-color: rgba($black, .2) !default;
940
954
  $modal-content-border-width: $border-width !default;
941
955
  $modal-content-border-radius: $border-radius-lg !default;
956
+ $modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;
942
957
  $modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;
943
958
  $modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;
944
959
 
@@ -960,6 +975,7 @@ $modal-sm: 300px !default;
960
975
  $modal-fade-transform: translate(0, -50px) !default;
961
976
  $modal-show-transform: none !default;
962
977
  $modal-transition: transform .3s ease-out !default;
978
+ $modal-scale-transform: scale(1.02) !default;
963
979
 
964
980
 
965
981
  // Alerts
@@ -1035,6 +1051,8 @@ $figure-caption-color: $gray-600 !default;
1035
1051
 
1036
1052
  // Breadcrumbs
1037
1053
 
1054
+ $breadcrumb-font-size: null !default;
1055
+
1038
1056
  $breadcrumb-padding-y: .75rem !default;
1039
1057
  $breadcrumb-padding-x: 1rem !default;
1040
1058
  $breadcrumb-item-padding: .5rem !default;
@@ -1069,8 +1087,8 @@ $carousel-caption-color: $white !default;
1069
1087
 
1070
1088
  $carousel-control-icon-width: 20px !default;
1071
1089
 
1072
- $carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"), "#", "%23") !default;
1073
- $carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"), "#", "%23") !default;
1090
+ $carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/></svg>") !default;
1091
+ $carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/></svg>") !default;
1074
1092
 
1075
1093
  $carousel-transition-duration: .6s !default;
1076
1094
  $carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
@@ -1115,6 +1133,7 @@ $pre-scrollable-max-height: 340px !default;
1115
1133
  $displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
1116
1134
  $overflows: auto, hidden !default;
1117
1135
  $positions: static, relative, absolute, fixed, sticky !default;
1136
+ $user-selects: all, auto, none !default;
1118
1137
 
1119
1138
 
1120
1139
  // Printing