bootstrap 5.0.0.alpha2 → 5.0.0.alpha3

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -2
  3. data/assets/javascripts/bootstrap-sprockets.js +6 -7
  4. data/assets/javascripts/bootstrap.js +220 -267
  5. data/assets/javascripts/bootstrap.min.js +2 -2
  6. data/assets/javascripts/bootstrap/alert.js +25 -15
  7. data/assets/javascripts/bootstrap/button.js +25 -15
  8. data/assets/javascripts/bootstrap/carousel.js +46 -24
  9. data/assets/javascripts/bootstrap/collapse.js +25 -15
  10. data/assets/javascripts/bootstrap/dom/data.js +2 -2
  11. data/assets/javascripts/bootstrap/dom/event-handler.js +8 -16
  12. data/assets/javascripts/bootstrap/dom/manipulator.js +2 -13
  13. data/assets/javascripts/bootstrap/dom/selector-engine.js +9 -9
  14. data/assets/javascripts/bootstrap/dropdown.js +34 -24
  15. data/assets/javascripts/bootstrap/modal.js +25 -15
  16. data/assets/javascripts/bootstrap/popover.js +26 -15
  17. data/assets/javascripts/bootstrap/scrollspy.js +25 -14
  18. data/assets/javascripts/bootstrap/tab.js +25 -15
  19. data/assets/javascripts/bootstrap/toast.js +26 -16
  20. data/assets/javascripts/bootstrap/tooltip.js +27 -17
  21. data/assets/stylesheets/_bootstrap-grid.scss +1 -1
  22. data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
  23. data/assets/stylesheets/_bootstrap.scss +2 -1
  24. data/assets/stylesheets/bootstrap/_accordion.scss +125 -0
  25. data/assets/stylesheets/bootstrap/_alert.scss +10 -3
  26. data/assets/stylesheets/bootstrap/_breadcrumb.scss +1 -3
  27. data/assets/stylesheets/bootstrap/_button-group.scss +0 -2
  28. data/assets/stylesheets/bootstrap/_buttons.scss +0 -15
  29. data/assets/stylesheets/bootstrap/_card.scss +0 -27
  30. data/assets/stylesheets/bootstrap/_close.scss +1 -2
  31. data/assets/stylesheets/bootstrap/_forms.scss +1 -1
  32. data/assets/stylesheets/bootstrap/_functions.scss +12 -12
  33. data/assets/stylesheets/bootstrap/_list-group.scss +8 -2
  34. data/assets/stylesheets/bootstrap/_popover.scss +1 -1
  35. data/assets/stylesheets/bootstrap/_progress.scss +1 -1
  36. data/assets/stylesheets/bootstrap/_reboot.scss +19 -17
  37. data/assets/stylesheets/bootstrap/_root.scss +5 -5
  38. data/assets/stylesheets/bootstrap/_spinners.scss +11 -2
  39. data/assets/stylesheets/bootstrap/_tables.scss +16 -16
  40. data/assets/stylesheets/bootstrap/_utilities.scss +27 -13
  41. data/assets/stylesheets/bootstrap/_variables.scss +183 -160
  42. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
  43. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
  44. data/assets/stylesheets/bootstrap/forms/_form-check.scss +15 -6
  45. data/assets/stylesheets/bootstrap/forms/_form-control.scss +115 -8
  46. data/assets/stylesheets/bootstrap/forms/_form-range.scss +0 -45
  47. data/assets/stylesheets/bootstrap/forms/_form-select.scss +0 -14
  48. data/assets/stylesheets/bootstrap/forms/_input-group.scss +20 -39
  49. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +2 -2
  50. data/assets/stylesheets/bootstrap/mixins/_alert.scss +1 -1
  51. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +4 -4
  52. data/assets/stylesheets/bootstrap/mixins/_forms.scss +0 -16
  53. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
  54. data/assets/stylesheets/bootstrap/mixins/_grid.scss +10 -10
  55. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  56. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +7 -7
  57. data/lib/bootstrap/version.rb +2 -2
  58. metadata +4 -4
  59. data/assets/javascripts/bootstrap/dom/polyfill.js +0 -110
  60. data/assets/stylesheets/bootstrap/forms/_form-file.scss +0 -91
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap Utilities v5.0.0-alpha2 (https://getbootstrap.com/)
2
+ * Bootstrap Utilities v5.0.0-alpha3 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2020 The Bootstrap Authors
4
4
  * Copyright 2011-2020 Twitter, Inc.
5
5
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
@@ -0,0 +1,61 @@
1
+ .form-floating {
2
+ position: relative;
3
+
4
+ > .form-control,
5
+ > .form-select {
6
+ height: $form-floating-height;
7
+ padding: $form-floating-padding-y $form-floating-padding-x;
8
+ }
9
+
10
+ > label {
11
+ position: absolute;
12
+ top: 0;
13
+ left: 0;
14
+ height: 100%; // allow textareas
15
+ padding: $form-floating-padding-y $form-floating-padding-x;
16
+ pointer-events: none;
17
+ border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model
18
+ transform-origin: 0 0;
19
+ @include transition($form-floating-transition);
20
+ }
21
+
22
+ // stylelint-disable no-duplicate-selectors
23
+ > .form-control {
24
+ &::placeholder {
25
+ color: transparent;
26
+ }
27
+
28
+ &:focus,
29
+ &:not(:placeholder-shown) {
30
+ padding-top: $form-floating-input-padding-t;
31
+ padding-bottom: $form-floating-input-padding-b;
32
+ }
33
+ // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
34
+ &:-webkit-autofill {
35
+ padding-top: $form-floating-input-padding-t;
36
+ padding-bottom: $form-floating-input-padding-b;
37
+ }
38
+ }
39
+
40
+ > .form-select {
41
+ padding-top: $form-floating-input-padding-t;
42
+ padding-bottom: $form-floating-input-padding-b;
43
+ }
44
+
45
+ > .form-control:focus,
46
+ > .form-control:not(:placeholder-shown),
47
+ > .form-select {
48
+ ~ label {
49
+ opacity: $form-floating-label-opacity;
50
+ transform: $form-floating-label-transform;
51
+ }
52
+ }
53
+ // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
54
+ > .form-control:-webkit-autofill {
55
+ ~ label {
56
+ opacity: $form-floating-label-opacity;
57
+ transform: $form-floating-label-transform;
58
+ }
59
+ }
60
+ // stylelint-enable no-duplicate-selectors
61
+ }
@@ -53,7 +53,7 @@
53
53
 
54
54
  &[type="checkbox"] {
55
55
  @if $enable-gradients {
56
- background-image: escape-svg($form-check-input-checked-bg-image), var(--bs-gradient);
56
+ background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$variable-prefix}gradient);
57
57
  } @else {
58
58
  background-image: escape-svg($form-check-input-checked-bg-image);
59
59
  }
@@ -61,7 +61,7 @@
61
61
 
62
62
  &[type="radio"] {
63
63
  @if $enable-gradients {
64
- background-image: escape-svg($form-check-radio-checked-bg-image), var(--bs-gradient);
64
+ background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$variable-prefix}gradient);
65
65
  } @else {
66
66
  background-image: escape-svg($form-check-radio-checked-bg-image);
67
67
  }
@@ -73,7 +73,7 @@
73
73
  border-color: $form-check-input-indeterminate-border-color;
74
74
 
75
75
  @if $enable-gradients {
76
- background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--bs-gradient);
76
+ background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$variable-prefix}gradient);
77
77
  } @else {
78
78
  background-image: escape-svg($form-check-input-indeterminate-bg-image);
79
79
  }
@@ -82,7 +82,7 @@
82
82
  &:disabled {
83
83
  pointer-events: none;
84
84
  filter: none;
85
- opacity: .5;
85
+ opacity: $form-check-input-disabled-opacity;
86
86
  }
87
87
 
88
88
  // Use disabled attribute in addition of :disabled pseudo-class
@@ -90,7 +90,7 @@
90
90
  &[disabled],
91
91
  &:disabled {
92
92
  ~ .form-check-label {
93
- opacity: .5;
93
+ opacity: $form-check-label-disabled-opacity;
94
94
  }
95
95
  }
96
96
  }
@@ -122,7 +122,7 @@
122
122
  background-position: $form-switch-checked-bg-position;
123
123
 
124
124
  @if $enable-gradients {
125
- background-image: escape-svg($form-switch-checked-bg-image), var(--bs-gradient);
125
+ background-image: escape-svg($form-switch-checked-bg-image), var(--#{$variable-prefix}gradient);
126
126
  } @else {
127
127
  background-image: escape-svg($form-switch-checked-bg-image);
128
128
  }
@@ -139,4 +139,13 @@
139
139
  position: absolute;
140
140
  clip: rect(0, 0, 0, 0);
141
141
  pointer-events: none;
142
+
143
+ &[disabled],
144
+ &:disabled {
145
+ + .btn {
146
+ pointer-events: none;
147
+ filter: none;
148
+ opacity: $form-check-btn-check-disabled-opacity;
149
+ }
150
+ }
142
151
  }
@@ -1,11 +1,10 @@
1
1
  //
2
- // Textual form controls
2
+ // General form controls (plus a few specific high-level interventions)
3
3
  //
4
4
 
5
5
  .form-control {
6
6
  display: block;
7
7
  width: 100%;
8
- min-height: $input-height;
9
8
  padding: $input-padding-y $input-padding-x;
10
9
  font-family: $input-font-family;
11
10
  @include font-size($input-font-size);
@@ -23,6 +22,14 @@
23
22
  @include box-shadow($input-box-shadow);
24
23
  @include transition($input-transition);
25
24
 
25
+ &[type="file"] {
26
+ overflow: hidden; // prevent pseudo element button overlap
27
+
28
+ &:not(:disabled):not([readonly]) {
29
+ cursor: pointer;
30
+ }
31
+ }
32
+
26
33
  // Customize the `:focus` state to imitate native WebKit styles.
27
34
  &:focus {
28
35
  color: $input-focus-color;
@@ -37,6 +44,14 @@
37
44
  }
38
45
  }
39
46
 
47
+ // Add some height to date inputs on iOS
48
+ // https://github.com/twbs/bootstrap/issues/23307
49
+ // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
50
+ &::-webkit-date-and-time-value {
51
+ // Multiply line-height by 1em if it has no unit
52
+ height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
53
+ }
54
+
40
55
  // Placeholder
41
56
  &::placeholder {
42
57
  color: $input-placeholder-color;
@@ -56,6 +71,47 @@
56
71
  // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
57
72
  opacity: 1;
58
73
  }
74
+
75
+ // File input buttons theming
76
+ // stylelint-disable-next-line selector-pseudo-element-no-unknown
77
+ &::file-selector-button {
78
+ padding: $input-padding-y $input-padding-x;
79
+ margin: (-$input-padding-y) (-$input-padding-x);
80
+ margin-inline-end: $input-padding-x;
81
+ color: $form-file-button-color;
82
+ @include gradient-bg($form-file-button-bg);
83
+ pointer-events: none;
84
+ border-color: inherit;
85
+ border-style: solid;
86
+ border-width: 0;
87
+ border-inline-end-width: $input-border-width;
88
+ border-radius: 0; // stylelint-disable-line property-disallowed-list
89
+ @include transition($btn-transition);
90
+ }
91
+
92
+ // stylelint-disable-next-line selector-pseudo-element-no-unknown
93
+ &:hover:not(:disabled):not([readonly])::file-selector-button {
94
+ background-color: $form-file-button-hover-bg;
95
+ }
96
+
97
+ &::-webkit-file-upload-button {
98
+ padding: $input-padding-y $input-padding-x;
99
+ margin: (-$input-padding-y) (-$input-padding-x);
100
+ margin-inline-end: $input-padding-x;
101
+ color: $form-file-button-color;
102
+ @include gradient-bg($form-file-button-bg);
103
+ pointer-events: none;
104
+ border-color: inherit;
105
+ border-style: solid;
106
+ border-width: 0;
107
+ border-inline-end-width: $input-border-width;
108
+ border-radius: 0; // stylelint-disable-line property-disallowed-list
109
+ @include transition($btn-transition);
110
+ }
111
+
112
+ &:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
113
+ background-color: $form-file-button-hover-bg;
114
+ }
59
115
  }
60
116
 
61
117
  // Readonly controls as plain text
@@ -93,6 +149,19 @@
93
149
  padding: $input-padding-y-sm $input-padding-x-sm;
94
150
  @include font-size($input-font-size-sm);
95
151
  @include border-radius($input-border-radius-sm);
152
+
153
+ // stylelint-disable-next-line selector-pseudo-element-no-unknown
154
+ &::file-selector-button {
155
+ padding: $input-padding-y-sm $input-padding-x-sm;
156
+ margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
157
+ margin-inline-end: $input-padding-x-sm;
158
+ }
159
+
160
+ &::-webkit-file-upload-button {
161
+ padding: $input-padding-y-sm $input-padding-x-sm;
162
+ margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
163
+ margin-inline-end: $input-padding-x-sm;
164
+ }
96
165
  }
97
166
 
98
167
  .form-control-lg {
@@ -100,17 +169,55 @@
100
169
  padding: $input-padding-y-lg $input-padding-x-lg;
101
170
  @include font-size($input-font-size-lg);
102
171
  @include border-radius($input-border-radius-lg);
172
+
173
+ // stylelint-disable-next-line selector-pseudo-element-no-unknown
174
+ &::file-selector-button {
175
+ padding: $input-padding-y-lg $input-padding-x-lg;
176
+ margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
177
+ margin-inline-end: $input-padding-x-lg;
178
+ }
179
+
180
+ &::-webkit-file-upload-button {
181
+ padding: $input-padding-y-lg $input-padding-x-lg;
182
+ margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
183
+ margin-inline-end: $input-padding-x-lg;
184
+ }
185
+ }
186
+
187
+ // Make sure textareas don't shrink too much when resized
188
+ // https://github.com/twbs/bootstrap/pull/29124
189
+ // stylelint-disable selector-no-qualifying-type
190
+ textarea {
191
+ &.form-control {
192
+ min-height: $input-height;
193
+ }
194
+
195
+ &.form-control-sm {
196
+ min-height: $input-height-sm;
197
+ }
198
+
199
+ &.form-control-lg {
200
+ min-height: $input-height-lg;
201
+ }
103
202
  }
203
+ // stylelint-enable selector-no-qualifying-type
104
204
 
105
205
  .form-control-color {
106
206
  max-width: 3rem;
207
+ height: auto; // Override fixed browser height
107
208
  padding: $input-padding-y;
108
- }
109
209
 
110
- .form-control-color::-moz-color-swatch {
111
- @include border-radius($input-border-radius);
112
- }
210
+ &:not(:disabled):not([readonly]) {
211
+ cursor: pointer;
212
+ }
213
+
214
+ &::-moz-color-swatch {
215
+ height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
216
+ @include border-radius($input-border-radius);
217
+ }
113
218
 
114
- .form-control-color::-webkit-color-swatch {
115
- @include border-radius($input-border-radius);
219
+ &::-webkit-color-swatch {
220
+ height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
221
+ @include border-radius($input-border-radius);
222
+ }
116
223
  }
@@ -18,7 +18,6 @@
18
18
  // No box-shadow() mixin for focus accessibility.
19
19
  &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }
20
20
  &::-moz-range-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }
21
- &::-ms-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }
22
21
  }
23
22
 
24
23
  &::-moz-focus-outer {
@@ -78,46 +77,6 @@
78
77
  @include box-shadow($form-range-track-box-shadow);
79
78
  }
80
79
 
81
- &::-ms-thumb {
82
- width: $form-range-thumb-width;
83
- height: $form-range-thumb-height;
84
- margin-top: 0; // Edge specific
85
- margin-right: $form-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
86
- margin-left: $form-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
87
- @include gradient-bg($form-range-thumb-bg);
88
- border: $form-range-thumb-border;
89
- @include border-radius($form-range-thumb-border-radius);
90
- @include box-shadow($form-range-thumb-box-shadow);
91
- @include transition($form-range-thumb-transition);
92
- appearance: none;
93
-
94
- &:active {
95
- @include gradient-bg($form-range-thumb-active-bg);
96
- }
97
- }
98
-
99
- &::-ms-track {
100
- width: $form-range-track-width;
101
- height: $form-range-track-height;
102
- color: transparent;
103
- cursor: $form-range-track-cursor;
104
- background-color: transparent;
105
- border-color: transparent;
106
- border-width: $form-range-thumb-height / 2;
107
- @include box-shadow($form-range-track-box-shadow);
108
- }
109
-
110
- &::-ms-fill-lower {
111
- background-color: $form-range-track-bg;
112
- @include border-radius($form-range-track-border-radius);
113
- }
114
-
115
- &::-ms-fill-upper {
116
- margin-right: 15px; // arbitrary?
117
- background-color: $form-range-track-bg;
118
- @include border-radius($form-range-track-border-radius);
119
- }
120
-
121
80
  &:disabled {
122
81
  pointer-events: none;
123
82
 
@@ -128,9 +87,5 @@
128
87
  &::-moz-range-thumb {
129
88
  background-color: $form-range-thumb-disabled-bg;
130
89
  }
131
-
132
- &::-ms-thumb {
133
- background-color: $form-range-thumb-disabled-bg;
134
- }
135
90
  }
136
91
  }
@@ -6,7 +6,6 @@
6
6
  .form-select {
7
7
  display: block;
8
8
  width: 100%;
9
- height: $form-select-height;
10
9
  padding: $form-select-padding-y ($form-select-padding-x + $form-select-indicator-padding) $form-select-padding-y $form-select-padding-x;
11
10
  font-family: $form-select-font-family;
12
11
  @include font-size($form-select-font-size);
@@ -33,21 +32,10 @@
33
32
  // Avoid using mixin so we can pass custom focus shadow properly
34
33
  box-shadow: $form-select-focus-box-shadow;
35
34
  }
36
-
37
- &::-ms-value {
38
- // For visual consistency with other platforms/browsers,
39
- // suppress the default white text on blue background highlight given to
40
- // the selected option text when the (still closed) <select> receives focus
41
- // in Edge.
42
- // See https://github.com/twbs/bootstrap/issues/19398.
43
- color: $input-color;
44
- background-color: $input-bg;
45
- }
46
35
  }
47
36
 
48
37
  &[multiple],
49
38
  &[size]:not([size="1"]) {
50
- height: auto;
51
39
  padding-right: $form-select-padding-x;
52
40
  background-image: none;
53
41
  }
@@ -66,7 +54,6 @@
66
54
  }
67
55
 
68
56
  .form-select-sm {
69
- height: $form-select-height-sm;
70
57
  padding-top: $form-select-padding-y-sm;
71
58
  padding-bottom: $form-select-padding-y-sm;
72
59
  padding-left: $form-select-padding-x-sm;
@@ -74,7 +61,6 @@
74
61
  }
75
62
 
76
63
  .form-select-lg {
77
- height: $form-select-height-lg;
78
64
  padding-top: $form-select-padding-y-lg;
79
65
  padding-bottom: $form-select-padding-y-lg;
80
66
  padding-left: $form-select-padding-x-lg;
@@ -10,8 +10,7 @@
10
10
  width: 100%;
11
11
 
12
12
  > .form-control,
13
- > .form-select,
14
- > .form-file {
13
+ > .form-select {
15
14
  position: relative; // For focus state's z-index
16
15
  flex: 1 1 auto;
17
16
  width: 1%;
@@ -20,26 +19,10 @@
20
19
 
21
20
  // Bring the "active" form control to the top of surrounding elements
22
21
  > .form-control:focus,
23
- > .form-select:focus,
24
- > .form-file .form-file-input:focus ~ .form-file-label {
22
+ > .form-select:focus {
25
23
  z-index: 3;
26
24
  }
27
25
 
28
- // Bring the custom file input above the label
29
- > .form-file {
30
- > .form-file-input:focus {
31
- z-index: 4;
32
- }
33
-
34
- &:not(:last-child) > .form-file-label {
35
- @include border-right-radius(0);
36
- }
37
-
38
- &:not(:first-child) > .form-file-label {
39
- @include border-left-radius(0);
40
- }
41
- }
42
-
43
26
  // Ensure buttons are always above inputs for more visually pleasing borders.
44
27
  // This isn't needed for `.input-group-text` since it shares the same border-color
45
28
  // as our inputs.
@@ -80,14 +63,6 @@
80
63
  // Remix the default form control sizing classes into new ones for easier
81
64
  // manipulation.
82
65
 
83
- .input-group-lg > .form-control {
84
- min-height: $input-height-lg;
85
- }
86
-
87
- .input-group-lg > .form-select {
88
- height: $input-height-lg;
89
- }
90
-
91
66
  .input-group-lg > .form-control,
92
67
  .input-group-lg > .form-select,
93
68
  .input-group-lg > .input-group-text,
@@ -97,14 +72,6 @@
97
72
  @include border-radius($input-border-radius-lg);
98
73
  }
99
74
 
100
- .input-group-sm > .form-control {
101
- min-height: $input-height-sm;
102
- }
103
-
104
- .input-group-sm > .form-select {
105
- height: $input-height-sm;
106
- }
107
-
108
75
  .input-group-sm > .form-control,
109
76
  .input-group-sm > .form-select,
110
77
  .input-group-sm > .input-group-text,
@@ -128,12 +95,26 @@
128
95
 
129
96
  // stylelint-disable-next-line no-duplicate-selectors
130
97
  .input-group {
131
- > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
132
- > .dropdown-toggle:nth-last-child(n + 3) {
133
- @include border-right-radius(0);
98
+ &:not(.has-validation) {
99
+ > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
100
+ > .dropdown-toggle:nth-last-child(n + 3) {
101
+ @include border-right-radius(0);
102
+ }
103
+ }
104
+
105
+ &.has-validation {
106
+ > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu),
107
+ > .dropdown-toggle:nth-last-child(n + 4) {
108
+ @include border-right-radius(0);
109
+ }
110
+ }
111
+
112
+ $validation-messages: "";
113
+ @each $state in map-keys($form-validation-states) {
114
+ $validation-messages: $validation-messages + ":not(." + unquote($state) + "-tooltip)" + ":not(." + unquote($state) + "-feedback)";
134
115
  }
135
116
 
136
- > :not(:first-child):not(.dropdown-menu) {
117
+ > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
137
118
  margin-left: -$input-border-width;
138
119
  @include border-left-radius(0);
139
120
  }