bootstrap 4.4.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +11 -1
  3. data/README.md +1 -1
  4. data/assets/javascripts/bootstrap-sprockets.js +6 -6
  5. data/assets/javascripts/bootstrap.js +836 -925
  6. data/assets/javascripts/bootstrap.min.js +4 -4
  7. data/assets/javascripts/bootstrap/alert.js +35 -41
  8. data/assets/javascripts/bootstrap/button.js +69 -69
  9. data/assets/javascripts/bootstrap/carousel.js +154 -182
  10. data/assets/javascripts/bootstrap/collapse.js +91 -130
  11. data/assets/javascripts/bootstrap/dropdown.js +123 -170
  12. data/assets/javascripts/bootstrap/modal.js +181 -197
  13. data/assets/javascripts/bootstrap/popover.js +45 -80
  14. data/assets/javascripts/bootstrap/scrollspy.js +74 -117
  15. data/assets/javascripts/bootstrap/tab.js +65 -71
  16. data/assets/javascripts/bootstrap/toast.js +74 -105
  17. data/assets/javascripts/bootstrap/tooltip.js +129 -166
  18. data/assets/javascripts/bootstrap/util.js +24 -20
  19. data/assets/stylesheets/_bootstrap-grid.scss +5 -4
  20. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  21. data/assets/stylesheets/_bootstrap.scss +4 -4
  22. data/assets/stylesheets/bootstrap/_alert.scss +1 -0
  23. data/assets/stylesheets/bootstrap/_breadcrumb.scss +1 -1
  24. data/assets/stylesheets/bootstrap/_buttons.scss +10 -7
  25. data/assets/stylesheets/bootstrap/_card.scss +25 -17
  26. data/assets/stylesheets/bootstrap/_carousel.scss +1 -1
  27. data/assets/stylesheets/bootstrap/_close.scss +0 -1
  28. data/assets/stylesheets/bootstrap/_custom-forms.scss +16 -11
  29. data/assets/stylesheets/bootstrap/_dropdown.scss +4 -3
  30. data/assets/stylesheets/bootstrap/_forms.scss +9 -0
  31. data/assets/stylesheets/bootstrap/_functions.scss +15 -5
  32. data/assets/stylesheets/bootstrap/_grid.scss +10 -6
  33. data/assets/stylesheets/bootstrap/_input-group.scss +22 -5
  34. data/assets/stylesheets/bootstrap/_list-group.scss +10 -14
  35. data/assets/stylesheets/bootstrap/_modal.scss +2 -1
  36. data/assets/stylesheets/bootstrap/_nav.scss +4 -4
  37. data/assets/stylesheets/bootstrap/_navbar.scss +10 -2
  38. data/assets/stylesheets/bootstrap/_pagination.scss +3 -2
  39. data/assets/stylesheets/bootstrap/_progress.scss +2 -1
  40. data/assets/stylesheets/bootstrap/_reboot.scss +27 -25
  41. data/assets/stylesheets/bootstrap/_root.scss +0 -1
  42. data/assets/stylesheets/bootstrap/_spinners.scss +14 -4
  43. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  44. data/assets/stylesheets/bootstrap/_type.scss +1 -1
  45. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  46. data/assets/stylesheets/bootstrap/_variables.scss +20 -17
  47. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +2 -1
  48. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
  49. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +6 -6
  50. data/assets/stylesheets/bootstrap/mixins/_forms.scss +11 -3
  51. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +24 -15
  52. data/assets/stylesheets/bootstrap/mixins/_grid.scss +8 -8
  53. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
  54. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +1 -1
  55. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  56. data/assets/stylesheets/bootstrap/utilities/_background.scss +1 -1
  57. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  58. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  59. data/assets/stylesheets/bootstrap/utilities/_text.scss +2 -2
  60. data/lib/bootstrap/version.rb +2 -2
  61. data/tasks/updater/network.rb +2 -2
  62. data/test/gemfiles/rails_6_0.gemfile +7 -0
  63. metadata +6 -3
@@ -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 {
@@ -13,9 +13,9 @@
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
- animation: spinner-border .75s linear infinite;
18
+ animation: .75s linear infinite spinner-border;
19
19
  }
20
20
 
21
21
  .spinner-border-sm {
@@ -34,6 +34,7 @@
34
34
  }
35
35
  50% {
36
36
  opacity: 1;
37
+ transform: none;
37
38
  }
38
39
  }
39
40
 
@@ -43,13 +44,22 @@
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
- animation: spinner-grow .75s linear infinite;
50
+ animation: .75s linear infinite spinner-grow;
50
51
  }
51
52
 
52
53
  .spinner-grow-sm {
53
54
  width: $spinner-width-sm;
54
55
  height: $spinner-height-sm;
55
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
+ }
@@ -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 {
@@ -1,4 +1,4 @@
1
- // stylelint-disable declaration-no-important, selector-list-comma-newline-after
1
+ // stylelint-disable selector-list-comma-newline-after
2
2
 
3
3
  //
4
4
  // Headings
@@ -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,
@@ -103,9 +100,11 @@ $yiq-text-light: $white !default;
103
100
 
104
101
  // Characters which are escaped by the escape-svg function
105
102
  $escaped-characters: (
106
- ("<","%3c"),
107
- (">","%3e"),
108
- ("#","%23"),
103
+ ("<", "%3c"),
104
+ (">", "%3e"),
105
+ ("#", "%23"),
106
+ ("(", "%28"),
107
+ (")", "%29"),
109
108
  ) !default;
110
109
 
111
110
 
@@ -136,7 +135,6 @@ $enable-deprecation-messages: true !default;
136
135
 
137
136
  $spacer: 1rem !default;
138
137
  $spacers: () !default;
139
- // stylelint-disable-next-line scss/dollar-variable-default
140
138
  $spacers: map-merge(
141
139
  (
142
140
  0: 0,
@@ -151,7 +149,6 @@ $spacers: map-merge(
151
149
 
152
150
  // This variable affects the `.h-*` and `.w-*` classes.
153
151
  $sizes: () !default;
154
- // stylelint-disable-next-line scss/dollar-variable-default
155
152
  $sizes: map-merge(
156
153
  (
157
154
  25: 25%,
@@ -262,7 +259,6 @@ $transition-fade: opacity .15s linear !default;
262
259
  $transition-collapse: height .35s ease !default;
263
260
 
264
261
  $embed-responsive-aspect-ratios: () !default;
265
- // stylelint-disable-next-line scss/dollar-variable-default
266
262
  $embed-responsive-aspect-ratios: join(
267
263
  (
268
264
  (21 9),
@@ -278,7 +274,7 @@ $embed-responsive-aspect-ratios: join(
278
274
  // Font, line-height, and color for body text, headings, and more.
279
275
 
280
276
  // stylelint-disable value-keyword-case
281
- $font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
277
+ $font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
282
278
  $font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
283
279
  $font-family-base: $font-family-sans-serif !default;
284
280
  // stylelint-enable value-keyword-case
@@ -367,6 +363,7 @@ $table-border-color: $border-color !default;
367
363
 
368
364
  $table-head-bg: $gray-200 !default;
369
365
  $table-head-color: $gray-700 !default;
366
+ $table-th-font-weight: null !default;
370
367
 
371
368
  $table-dark-color: $white !default;
372
369
  $table-dark-bg: $gray-800 !default;
@@ -544,7 +541,7 @@ $custom-control-label-disabled-color: $gray-600 !default;
544
541
  $custom-control-indicator-checked-color: $component-active-color !default;
545
542
  $custom-control-indicator-checked-bg: $component-active-bg !default;
546
543
  $custom-control-indicator-checked-disabled-bg: rgba(theme-color("primary"), .5) !default;
547
- $custom-control-indicator-checked-box-shadow: none !default;
544
+ $custom-control-indicator-checked-box-shadow: null !default;
548
545
  $custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
549
546
 
550
547
  $custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;
@@ -552,7 +549,7 @@ $custom-control-indicator-focus-border-color: $input-focus-border-color !defau
552
549
 
553
550
  $custom-control-indicator-active-color: $component-active-color !default;
554
551
  $custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;
555
- $custom-control-indicator-active-box-shadow: none !default;
552
+ $custom-control-indicator-active-box-shadow: null !default;
556
553
  $custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;
557
554
 
558
555
  $custom-checkbox-indicator-border-radius: $border-radius !default;
@@ -561,7 +558,7 @@ $custom-checkbox-indicator-icon-checked: url("data:image/svg+xml,<svg xml
561
558
  $custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;
562
559
  $custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
563
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;
564
- $custom-checkbox-indicator-indeterminate-box-shadow: none !default;
561
+ $custom-checkbox-indicator-indeterminate-box-shadow: null !default;
565
562
  $custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
566
563
 
567
564
  $custom-radio-indicator-border-radius: 50% !default;
@@ -586,7 +583,7 @@ $custom-select-disabled-bg: $gray-200 !default;
586
583
  $custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
587
584
  $custom-select-indicator-color: $gray-800 !default;
588
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;
589
- $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)
586
+ $custom-select-background: escape-svg($custom-select-indicator) right $custom-select-padding-x center / $custom-select-bg-size no-repeat !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
590
587
 
591
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;
592
589
  $custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
@@ -666,7 +663,6 @@ $form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
666
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;
667
664
 
668
665
  $form-validation-states: () !default;
669
- // stylelint-disable-next-line scss/dollar-variable-default
670
666
  $form-validation-states: map-merge(
671
667
  (
672
668
  "valid": (
@@ -735,6 +731,8 @@ $navbar-toggler-padding-x: .75rem !default;
735
731
  $navbar-toggler-font-size: $font-size-lg !default;
736
732
  $navbar-toggler-border-radius: $btn-border-radius !default;
737
733
 
734
+ $navbar-nav-scroll-max-height: 75vh !default;
735
+
738
736
  $navbar-dark-color: rgba($white, .5) !default;
739
737
  $navbar-dark-hover-color: rgba($white, .75) !default;
740
738
  $navbar-dark-active-color: $white !default;
@@ -760,6 +758,7 @@ $navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
760
758
  // Dropdown menu container and contents.
761
759
 
762
760
  $dropdown-min-width: 10rem !default;
761
+ $dropdown-padding-x: 0 !default;
763
762
  $dropdown-padding-y: .5rem !default;
764
763
  $dropdown-spacer: .125rem !default;
765
764
  $dropdown-font-size: $font-size-base !default;
@@ -775,17 +774,18 @@ $dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;
775
774
 
776
775
  $dropdown-link-color: $gray-900 !default;
777
776
  $dropdown-link-hover-color: darken($gray-900, 5%) !default;
778
- $dropdown-link-hover-bg: $gray-100 !default;
777
+ $dropdown-link-hover-bg: $gray-200 !default;
779
778
 
780
779
  $dropdown-link-active-color: $component-active-color !default;
781
780
  $dropdown-link-active-bg: $component-active-bg !default;
782
781
 
783
- $dropdown-link-disabled-color: $gray-600 !default;
782
+ $dropdown-link-disabled-color: $gray-500 !default;
784
783
 
785
784
  $dropdown-item-padding-y: .25rem !default;
786
785
  $dropdown-item-padding-x: 1.5rem !default;
787
786
 
788
787
  $dropdown-header-color: $gray-600 !default;
788
+ $dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;
789
789
 
790
790
 
791
791
  // Pagination
@@ -818,6 +818,8 @@ $pagination-disabled-color: $gray-600 !default;
818
818
  $pagination-disabled-bg: $white !default;
819
819
  $pagination-disabled-border-color: $gray-300 !default;
820
820
 
821
+ $pagination-border-radius-sm: $border-radius-sm !default;
822
+ $pagination-border-radius-lg: $border-radius-lg !default;
821
823
 
822
824
  // Jumbotron
823
825
 
@@ -1135,6 +1137,7 @@ $pre-scrollable-max-height: 340px !default;
1135
1137
  $displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
1136
1138
  $overflows: auto, hidden !default;
1137
1139
  $positions: static, relative, absolute, fixed, sticky !default;
1140
+ $user-selects: all, auto, none !default;
1138
1141
 
1139
1142
 
1140
1143
  // Printing
@@ -15,8 +15,9 @@
15
15
  @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning);
16
16
  }
17
17
 
18
- @mixin bg-gradient-variant($parent, $color) {
18
+ @mixin bg-gradient-variant($parent, $color, $ignore-warning: false) {
19
19
  #{$parent} {
20
20
  background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
21
21
  }
22
+ @include deprecate("The `bg-gradient-variant` mixin", "v4.5.0", "v5", $ignore-warning);
22
23
  }
@@ -1,9 +1,22 @@
1
- // stylelint-disable property-blacklist
1
+ // stylelint-disable property-disallowed-list
2
2
  // Single side border-radius
3
3
 
4
+ // Helper function to replace negative values with 0
5
+ @function valid-radius($radius) {
6
+ $return: ();
7
+ @each $value in $radius {
8
+ @if type-of($value) == number {
9
+ $return: append($return, max($value, 0));
10
+ } @else {
11
+ $return: append($return, $value);
12
+ }
13
+ }
14
+ @return $return;
15
+ }
16
+
4
17
  @mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
5
18
  @if $enable-rounded {
6
- border-radius: $radius;
19
+ border-radius: valid-radius($radius);
7
20
  }
8
21
  @else if $fallback-border-radius != false {
9
22
  border-radius: $fallback-border-radius;
@@ -12,52 +25,52 @@
12
25
 
13
26
  @mixin border-top-radius($radius) {
14
27
  @if $enable-rounded {
15
- border-top-left-radius: $radius;
16
- border-top-right-radius: $radius;
28
+ border-top-left-radius: valid-radius($radius);
29
+ border-top-right-radius: valid-radius($radius);
17
30
  }
18
31
  }
19
32
 
20
33
  @mixin border-right-radius($radius) {
21
34
  @if $enable-rounded {
22
- border-top-right-radius: $radius;
23
- border-bottom-right-radius: $radius;
35
+ border-top-right-radius: valid-radius($radius);
36
+ border-bottom-right-radius: valid-radius($radius);
24
37
  }
25
38
  }
26
39
 
27
40
  @mixin border-bottom-radius($radius) {
28
41
  @if $enable-rounded {
29
- border-bottom-right-radius: $radius;
30
- border-bottom-left-radius: $radius;
42
+ border-bottom-right-radius: valid-radius($radius);
43
+ border-bottom-left-radius: valid-radius($radius);
31
44
  }
32
45
  }
33
46
 
34
47
  @mixin border-left-radius($radius) {
35
48
  @if $enable-rounded {
36
- border-top-left-radius: $radius;
37
- border-bottom-left-radius: $radius;
49
+ border-top-left-radius: valid-radius($radius);
50
+ border-bottom-left-radius: valid-radius($radius);
38
51
  }
39
52
  }
40
53
 
41
54
  @mixin border-top-left-radius($radius) {
42
55
  @if $enable-rounded {
43
- border-top-left-radius: $radius;
56
+ border-top-left-radius: valid-radius($radius);
44
57
  }
45
58
  }
46
59
 
47
60
  @mixin border-top-right-radius($radius) {
48
61
  @if $enable-rounded {
49
- border-top-right-radius: $radius;
62
+ border-top-right-radius: valid-radius($radius);
50
63
  }
51
64
  }
52
65
 
53
66
  @mixin border-bottom-right-radius($radius) {
54
67
  @if $enable-rounded {
55
- border-bottom-right-radius: $radius;
68
+ border-bottom-right-radius: valid-radius($radius);
56
69
  }
57
70
  }
58
71
 
59
72
  @mixin border-bottom-left-radius($radius) {
60
73
  @if $enable-rounded {
61
- border-bottom-left-radius: $radius;
74
+ border-bottom-left-radius: valid-radius($radius);
62
75
  }
63
76
  }
@@ -20,10 +20,10 @@
20
20
  color: color-yiq($hover-background);
21
21
  @include gradient-bg($hover-background);
22
22
  border-color: $hover-border;
23
- // Avoid using mixin so we can pass custom focus shadow properly
24
23
  @if $enable-shadows {
25
- box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
24
+ @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
26
25
  } @else {
26
+ // Avoid using mixin so we can pass custom focus shadow properly
27
27
  box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
28
28
  }
29
29
  }
@@ -51,10 +51,10 @@
51
51
  border-color: $active-border;
52
52
 
53
53
  &:focus {
54
- // Avoid using mixin so we can pass custom focus shadow properly
55
54
  @if $enable-shadows and $btn-active-box-shadow != none {
56
- box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
55
+ @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));
57
56
  } @else {
57
+ // Avoid using mixin so we can pass custom focus shadow properly
58
58
  box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
59
59
  }
60
60
  }
@@ -90,10 +90,10 @@
90
90
  border-color: $active-border;
91
91
 
92
92
  &:focus {
93
- // Avoid using mixin so we can pass custom focus shadow properly
94
93
  @if $enable-shadows and $btn-active-box-shadow != none {
95
- box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);
94
+ @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));
96
95
  } @else {
96
+ // Avoid using mixin so we can pass custom focus shadow properly
97
97
  box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
98
98
  }
99
99
  }
@@ -16,10 +16,10 @@
16
16
  background-color: $input-focus-bg;
17
17
  border-color: $input-focus-border-color;
18
18
  outline: 0;
19
- // Avoid using mixin so we can pass custom focus shadow properly
20
19
  @if $enable-shadows {
21
- box-shadow: $input-box-shadow, $input-focus-box-shadow;
20
+ @include box-shadow($input-box-shadow, $input-focus-box-shadow);
22
21
  } @else {
22
+ // Avoid using mixin so we can pass custom focus shadow properly
23
23
  box-shadow: $input-focus-box-shadow;
24
24
  }
25
25
  }
@@ -53,6 +53,7 @@
53
53
  .#{$state}-tooltip {
54
54
  position: absolute;
55
55
  top: 100%;
56
+ left: 0;
56
57
  z-index: 5;
57
58
  display: none;
58
59
  max-width: 100%; // Contain to parent when possible
@@ -63,6 +64,13 @@
63
64
  color: color-yiq($color);
64
65
  background-color: rgba($color, $form-feedback-tooltip-opacity);
65
66
  @include border-radius($form-feedback-tooltip-border-radius);
67
+
68
+ // See https://github.com/twbs/bootstrap/pull/31557
69
+ // Align tooltip to form elements
70
+ .form-row > .col > &,
71
+ .form-row > [class*="col-"] > & {
72
+ left: $form-grid-gutter-width / 2;
73
+ }
66
74
  }
67
75
 
68
76
  @include form-validation-state-selector($state) {
@@ -107,7 +115,7 @@
107
115
 
108
116
  @if $enable-validation-icons {
109
117
  padding-right: $custom-select-feedback-icon-padding-right;
110
- background: $custom-select-background, escape-svg($icon) $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;
118
+ background: $custom-select-background, $custom-select-bg escape-svg($icon) $custom-select-feedback-icon-position / $custom-select-feedback-icon-size no-repeat;
111
119
  }
112
120
 
113
121
  &:focus {