bootstrap 4.3.0 → 4.5.3

Sign up to get free protection for your applications and to get access to all the features.
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