bootstrap-scss 5.1.3 → 5.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +5 -5
  3. package/_accordion.scss +149 -118
  4. package/_alert.scss +18 -4
  5. package/_badge.scss +14 -5
  6. package/_breadcrumb.scss +22 -10
  7. package/_button-group.scss +142 -139
  8. package/_buttons.scss +201 -111
  9. package/_card.scss +55 -37
  10. package/_close.scss +1 -1
  11. package/_containers.scss +1 -1
  12. package/_dropdown.scss +249 -240
  13. package/_functions.scss +302 -302
  14. package/_grid.scss +3 -3
  15. package/_helpers.scss +1 -0
  16. package/_list-group.scss +192 -174
  17. package/_maps.scss +54 -0
  18. package/_modal.scss +237 -209
  19. package/_nav.scss +172 -139
  20. package/_navbar.scss +278 -335
  21. package/_offcanvas.scss +144 -83
  22. package/_pagination.scss +109 -64
  23. package/_placeholders.scss +1 -1
  24. package/_popover.scss +196 -158
  25. package/_progress.scss +20 -9
  26. package/_reboot.scss +25 -40
  27. package/_root.scss +40 -21
  28. package/_spinners.scss +38 -22
  29. package/_tables.scss +32 -23
  30. package/_toasts.scss +71 -51
  31. package/_tooltip.scss +61 -56
  32. package/_type.scss +2 -0
  33. package/_utilities.scss +43 -26
  34. package/_variables.scss +1634 -1641
  35. package/bootstrap-grid.scss +3 -6
  36. package/bootstrap-reboot.scss +3 -7
  37. package/bootstrap-utilities.scss +3 -6
  38. package/bootstrap.scss +4 -6
  39. package/forms/_floating-labels.scss +75 -63
  40. package/forms/_form-check.scss +28 -5
  41. package/forms/_form-control.scss +12 -37
  42. package/forms/_form-select.scss +0 -1
  43. package/forms/_input-group.scss +132 -121
  44. package/helpers/_color-bg.scss +10 -0
  45. package/helpers/_colored-links.scss +2 -2
  46. package/helpers/_position.scss +7 -1
  47. package/helpers/_ratio.scss +2 -2
  48. package/helpers/_vr.scss +1 -1
  49. package/mixins/_alert.scss +7 -3
  50. package/mixins/_banner.scss +9 -0
  51. package/mixins/_breakpoints.scss +8 -8
  52. package/mixins/_buttons.scss +32 -95
  53. package/mixins/_container.scss +4 -2
  54. package/mixins/_forms.scss +152 -144
  55. package/mixins/_gradients.scss +1 -1
  56. package/mixins/_grid.scss +12 -12
  57. package/mixins/_pagination.scss +4 -25
  58. package/mixins/_reset-text.scss +1 -1
  59. package/mixins/_table-variants.scss +12 -9
  60. package/mixins/_utilities.scss +97 -89
  61. package/package.json +1 -1
@@ -1,14 +1,11 @@
1
- /*!
2
- * Bootstrap Grid v5.1.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors
4
- * Copyright 2011-2021 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner(Grid);
7
3
 
8
4
  $include-column-box-sizing: true !default;
9
5
 
10
6
  @import "functions";
11
7
  @import "variables";
8
+ @import "maps";
12
9
 
13
10
  @import "mixins/lists";
14
11
  @import "mixins/breakpoints";
@@ -1,13 +1,9 @@
1
- /*!
2
- * Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors
4
- * Copyright 2011-2021 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
- * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
7
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner(Reboot);
8
3
 
9
4
  @import "functions";
10
5
  @import "variables";
6
+ @import "maps";
11
7
  @import "mixins";
12
8
  @import "root";
13
9
  @import "reboot";
@@ -1,13 +1,10 @@
1
- /*!
2
- * Bootstrap Utilities v5.1.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors
4
- * Copyright 2011-2021 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner(Utilities);
7
3
 
8
4
  // Configuration
9
5
  @import "functions";
10
6
  @import "variables";
7
+ @import "maps";
11
8
  @import "mixins";
12
9
  @import "utilities";
13
10
 
package/bootstrap.scss CHANGED
@@ -1,14 +1,12 @@
1
- /*!
2
- * Bootstrap v5.1.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors
4
- * Copyright 2011-2021 Twitter, Inc.
5
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
- */
1
+ @import "mixins/banner";
2
+ @include bsBanner("");
3
+
7
4
 
8
5
  // scss-docs-start import-stack
9
6
  // Configuration
10
7
  @import "functions";
11
8
  @import "variables";
9
+ @import "maps";
12
10
  @import "mixins";
13
11
  @import "utilities";
14
12
 
@@ -1,63 +1,75 @@
1
- .form-floating {
2
- position: relative;
3
-
4
- > .form-control,
5
- > .form-select {
6
- height: $form-floating-height;
7
- line-height: $form-floating-line-height;
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
- padding: $form-floating-padding-y $form-floating-padding-x;
25
-
26
- &::placeholder {
27
- color: transparent;
28
- }
29
-
30
- &:focus,
31
- &:not(:placeholder-shown) {
32
- padding-top: $form-floating-input-padding-t;
33
- padding-bottom: $form-floating-input-padding-b;
34
- }
35
- // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
36
- &:-webkit-autofill {
37
- padding-top: $form-floating-input-padding-t;
38
- padding-bottom: $form-floating-input-padding-b;
39
- }
40
- }
41
-
42
- > .form-select {
43
- padding-top: $form-floating-input-padding-t;
44
- padding-bottom: $form-floating-input-padding-b;
45
- }
46
-
47
- > .form-control:focus,
48
- > .form-control:not(:placeholder-shown),
49
- > .form-select {
50
- ~ label {
51
- opacity: $form-floating-label-opacity;
52
- transform: $form-floating-label-transform;
53
- }
54
- }
55
- // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
56
- > .form-control:-webkit-autofill {
57
- ~ label {
58
- opacity: $form-floating-label-opacity;
59
- transform: $form-floating-label-transform;
60
- }
61
- }
62
- // stylelint-enable no-duplicate-selectors
63
- }
1
+ .form-floating {
2
+ position: relative;
3
+
4
+ > .form-control,
5
+ > .form-control-plaintext,
6
+ > .form-select {
7
+ height: $form-floating-height;
8
+ line-height: $form-floating-line-height;
9
+ }
10
+
11
+ > label {
12
+ position: absolute;
13
+ top: 0;
14
+ left: 0;
15
+ width: 100%;
16
+ height: 100%; // allow textareas
17
+ padding: $form-floating-padding-y $form-floating-padding-x;
18
+ overflow: hidden;
19
+ text-align: start;
20
+ text-overflow: ellipsis;
21
+ white-space: nowrap;
22
+ pointer-events: none;
23
+ border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model
24
+ transform-origin: 0 0;
25
+ @include transition($form-floating-transition);
26
+ }
27
+
28
+ > .form-control,
29
+ > .form-control-plaintext {
30
+ padding: $form-floating-padding-y $form-floating-padding-x;
31
+
32
+ &::placeholder {
33
+ color: transparent;
34
+ }
35
+
36
+ &:focus,
37
+ &:not(:placeholder-shown) {
38
+ padding-top: $form-floating-input-padding-t;
39
+ padding-bottom: $form-floating-input-padding-b;
40
+ }
41
+ // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
42
+ &:-webkit-autofill {
43
+ padding-top: $form-floating-input-padding-t;
44
+ padding-bottom: $form-floating-input-padding-b;
45
+ }
46
+ }
47
+
48
+ > .form-select {
49
+ padding-top: $form-floating-input-padding-t;
50
+ padding-bottom: $form-floating-input-padding-b;
51
+ }
52
+
53
+ > .form-control:focus,
54
+ > .form-control:not(:placeholder-shown),
55
+ > .form-control-plaintext,
56
+ > .form-select {
57
+ ~ label {
58
+ opacity: $form-floating-label-opacity;
59
+ transform: $form-floating-label-transform;
60
+ }
61
+ }
62
+ // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
63
+ > .form-control:-webkit-autofill {
64
+ ~ label {
65
+ opacity: $form-floating-label-opacity;
66
+ transform: $form-floating-label-transform;
67
+ }
68
+ }
69
+
70
+ > .form-control-plaintext {
71
+ ~ label {
72
+ border-width: $input-border-width 0; // Required to properly position label text - as explained above
73
+ }
74
+ }
75
+ }
@@ -14,6 +14,18 @@
14
14
  }
15
15
  }
16
16
 
17
+ .form-check-reverse {
18
+ padding-right: $form-check-padding-start;
19
+ padding-left: 0;
20
+ text-align: right;
21
+
22
+ .form-check-input {
23
+ float: right;
24
+ margin-right: $form-check-padding-start * -1;
25
+ margin-left: 0;
26
+ }
27
+ }
28
+
17
29
  .form-check-input {
18
30
  width: $form-check-input-width;
19
31
  height: $form-check-input-width;
@@ -25,7 +37,7 @@
25
37
  background-size: contain;
26
38
  border: $form-check-input-border;
27
39
  appearance: none;
28
- color-adjust: exact; // Keep themed appearance for print
40
+ print-color-adjust: exact; // Keep themed appearance for print
29
41
  @include transition($form-check-transition);
30
42
 
31
43
  &[type="checkbox"] {
@@ -53,7 +65,7 @@
53
65
 
54
66
  &[type="checkbox"] {
55
67
  @if $enable-gradients {
56
- background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$variable-prefix}gradient);
68
+ background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$prefix}gradient);
57
69
  } @else {
58
70
  background-image: escape-svg($form-check-input-checked-bg-image);
59
71
  }
@@ -61,7 +73,7 @@
61
73
 
62
74
  &[type="radio"] {
63
75
  @if $enable-gradients {
64
- background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$variable-prefix}gradient);
76
+ background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$prefix}gradient);
65
77
  } @else {
66
78
  background-image: escape-svg($form-check-radio-checked-bg-image);
67
79
  }
@@ -73,7 +85,7 @@
73
85
  border-color: $form-check-input-indeterminate-border-color;
74
86
 
75
87
  @if $enable-gradients {
76
- background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$variable-prefix}gradient);
88
+ background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$prefix}gradient);
77
89
  } @else {
78
90
  background-image: escape-svg($form-check-input-indeterminate-bg-image);
79
91
  }
@@ -90,6 +102,7 @@
90
102
  &[disabled],
91
103
  &:disabled {
92
104
  ~ .form-check-label {
105
+ cursor: default;
93
106
  opacity: $form-check-label-disabled-opacity;
94
107
  }
95
108
  }
@@ -123,12 +136,22 @@
123
136
  background-position: $form-switch-checked-bg-position;
124
137
 
125
138
  @if $enable-gradients {
126
- background-image: escape-svg($form-switch-checked-bg-image), var(--#{$variable-prefix}gradient);
139
+ background-image: escape-svg($form-switch-checked-bg-image), var(--#{$prefix}gradient);
127
140
  } @else {
128
141
  background-image: escape-svg($form-switch-checked-bg-image);
129
142
  }
130
143
  }
131
144
  }
145
+
146
+ &.form-check-reverse {
147
+ padding-right: $form-switch-padding-start;
148
+ padding-left: 0;
149
+
150
+ .form-check-input {
151
+ margin-right: $form-switch-padding-start * -1;
152
+ margin-left: 0;
153
+ }
154
+ }
132
155
  }
133
156
 
134
157
  .form-check-inline {
@@ -59,13 +59,13 @@
59
59
  opacity: 1;
60
60
  }
61
61
 
62
- // Disabled and read-only inputs
62
+ // Disabled inputs
63
63
  //
64
64
  // HTML5 says that controls under a fieldset > legend:first-child won't be
65
65
  // disabled if the fieldset is disabled. Due to implementation difficulty, we
66
66
  // don't honor that edge case; we style them as disabled anyway.
67
- &:disabled,
68
- &[readonly] {
67
+ &:disabled {
68
+ color: $input-disabled-color;
69
69
  background-color: $input-disabled-bg;
70
70
  border-color: $input-disabled-border-color;
71
71
  // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
@@ -91,25 +91,6 @@
91
91
  &:hover:not(:disabled):not([readonly])::file-selector-button {
92
92
  background-color: $form-file-button-hover-bg;
93
93
  }
94
-
95
- &::-webkit-file-upload-button {
96
- padding: $input-padding-y $input-padding-x;
97
- margin: (-$input-padding-y) (-$input-padding-x);
98
- margin-inline-end: $input-padding-x;
99
- color: $form-file-button-color;
100
- @include gradient-bg($form-file-button-bg);
101
- pointer-events: none;
102
- border-color: inherit;
103
- border-style: solid;
104
- border-width: 0;
105
- border-inline-end-width: $input-border-width;
106
- border-radius: 0; // stylelint-disable-line property-disallowed-list
107
- @include transition($btn-transition);
108
- }
109
-
110
- &:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
111
- background-color: $form-file-button-hover-bg;
112
- }
113
94
  }
114
95
 
115
96
  // Readonly controls as plain text
@@ -128,6 +109,10 @@
128
109
  border: solid transparent;
129
110
  border-width: $input-border-width 0;
130
111
 
112
+ &:focus {
113
+ outline: 0;
114
+ }
115
+
131
116
  &.form-control-sm,
132
117
  &.form-control-lg {
133
118
  padding-right: 0;
@@ -153,12 +138,6 @@
153
138
  margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
154
139
  margin-inline-end: $input-padding-x-sm;
155
140
  }
156
-
157
- &::-webkit-file-upload-button {
158
- padding: $input-padding-y-sm $input-padding-x-sm;
159
- margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
160
- margin-inline-end: $input-padding-x-sm;
161
- }
162
141
  }
163
142
 
164
143
  .form-control-lg {
@@ -172,12 +151,6 @@
172
151
  margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
173
152
  margin-inline-end: $input-padding-x-lg;
174
153
  }
175
-
176
- &::-webkit-file-upload-button {
177
- padding: $input-padding-y-lg $input-padding-x-lg;
178
- margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
179
- margin-inline-end: $input-padding-x-lg;
180
- }
181
154
  }
182
155
 
183
156
  // Make sure textareas don't shrink too much when resized
@@ -200,7 +173,7 @@ textarea {
200
173
 
201
174
  .form-control-color {
202
175
  width: $form-color-width;
203
- height: auto; // Override fixed browser height
176
+ height: $input-height;
204
177
  padding: $input-padding-y;
205
178
 
206
179
  &:not(:disabled):not([readonly]) {
@@ -208,12 +181,14 @@ textarea {
208
181
  }
209
182
 
210
183
  &::-moz-color-swatch {
211
- height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
184
+ border: 0 !important; // stylelint-disable-line declaration-no-important
212
185
  @include border-radius($input-border-radius);
213
186
  }
214
187
 
215
188
  &::-webkit-color-swatch {
216
- height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
217
189
  @include border-radius($input-border-radius);
218
190
  }
191
+
192
+ &.form-control-sm { height: $input-height-sm; }
193
+ &.form-control-lg { height: $input-height-lg; }
219
194
  }
@@ -7,7 +7,6 @@
7
7
  display: block;
8
8
  width: 100%;
9
9
  padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;
10
- // stylelint-disable-next-line property-no-vendor-prefix
11
10
  -moz-padding-start: subtract($form-select-padding-x, 3px); // See https://github.com/twbs/bootstrap/issues/32636
12
11
  font-family: $form-select-font-family;
13
12
  @include font-size($form-select-font-size);
@@ -1,121 +1,132 @@
1
- //
2
- // Base styles
3
- //
4
-
5
- .input-group {
6
- position: relative;
7
- display: flex;
8
- flex-wrap: wrap; // For form validation feedback
9
- align-items: stretch;
10
- width: 100%;
11
-
12
- > .form-control,
13
- > .form-select {
14
- position: relative; // For focus state's z-index
15
- flex: 1 1 auto;
16
- width: 1%;
17
- min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
18
- }
19
-
20
- // Bring the "active" form control to the top of surrounding elements
21
- > .form-control:focus,
22
- > .form-select:focus {
23
- z-index: 3;
24
- }
25
-
26
- // Ensure buttons are always above inputs for more visually pleasing borders.
27
- // This isn't needed for `.input-group-text` since it shares the same border-color
28
- // as our inputs.
29
- .btn {
30
- position: relative;
31
- z-index: 2;
32
-
33
- &:focus {
34
- z-index: 3;
35
- }
36
- }
37
- }
38
-
39
-
40
- // Textual addons
41
- //
42
- // Serves as a catch-all element for any text or radio/checkbox input you wish
43
- // to prepend or append to an input.
44
-
45
- .input-group-text {
46
- display: flex;
47
- align-items: center;
48
- padding: $input-group-addon-padding-y $input-group-addon-padding-x;
49
- @include font-size($input-font-size); // Match inputs
50
- font-weight: $input-group-addon-font-weight;
51
- line-height: $input-line-height;
52
- color: $input-group-addon-color;
53
- text-align: center;
54
- white-space: nowrap;
55
- background-color: $input-group-addon-bg;
56
- border: $input-border-width solid $input-group-addon-border-color;
57
- @include border-radius($input-border-radius);
58
- }
59
-
60
-
61
- // Sizing
62
- //
63
- // Remix the default form control sizing classes into new ones for easier
64
- // manipulation.
65
-
66
- .input-group-lg > .form-control,
67
- .input-group-lg > .form-select,
68
- .input-group-lg > .input-group-text,
69
- .input-group-lg > .btn {
70
- padding: $input-padding-y-lg $input-padding-x-lg;
71
- @include font-size($input-font-size-lg);
72
- @include border-radius($input-border-radius-lg);
73
- }
74
-
75
- .input-group-sm > .form-control,
76
- .input-group-sm > .form-select,
77
- .input-group-sm > .input-group-text,
78
- .input-group-sm > .btn {
79
- padding: $input-padding-y-sm $input-padding-x-sm;
80
- @include font-size($input-font-size-sm);
81
- @include border-radius($input-border-radius-sm);
82
- }
83
-
84
- .input-group-lg > .form-select,
85
- .input-group-sm > .form-select {
86
- padding-right: $form-select-padding-x + $form-select-indicator-padding;
87
- }
88
-
89
-
90
- // Rounded corners
91
- //
92
- // These rulesets must come after the sizing ones to properly override sm and lg
93
- // border-radius values when extending. They're more specific than we'd like
94
- // with the `.input-group >` part, but without it, we cannot override the sizing.
95
-
96
- // stylelint-disable-next-line no-duplicate-selectors
97
- .input-group {
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-end-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-end-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)";
115
- }
116
-
117
- > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
118
- margin-left: -$input-border-width;
119
- @include border-start-radius(0);
120
- }
121
- }
1
+ //
2
+ // Base styles
3
+ //
4
+
5
+ .input-group {
6
+ position: relative;
7
+ display: flex;
8
+ flex-wrap: wrap; // For form validation feedback
9
+ align-items: stretch;
10
+ width: 100%;
11
+
12
+ > .form-control,
13
+ > .form-select,
14
+ > .form-floating {
15
+ position: relative; // For focus state's z-index
16
+ flex: 1 1 auto;
17
+ width: 1%;
18
+ min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
19
+ }
20
+
21
+ // Bring the "active" form control to the top of surrounding elements
22
+ > .form-control:focus,
23
+ > .form-select:focus,
24
+ > .form-floating:focus-within {
25
+ z-index: 5;
26
+ }
27
+
28
+ // Ensure buttons are always above inputs for more visually pleasing borders.
29
+ // This isn't needed for `.input-group-text` since it shares the same border-color
30
+ // as our inputs.
31
+ .btn {
32
+ position: relative;
33
+ z-index: 2;
34
+
35
+ &:focus {
36
+ z-index: 5;
37
+ }
38
+ }
39
+ }
40
+
41
+
42
+ // Textual addons
43
+ //
44
+ // Serves as a catch-all element for any text or radio/checkbox input you wish
45
+ // to prepend or append to an input.
46
+
47
+ .input-group-text {
48
+ display: flex;
49
+ align-items: center;
50
+ padding: $input-group-addon-padding-y $input-group-addon-padding-x;
51
+ @include font-size($input-font-size); // Match inputs
52
+ font-weight: $input-group-addon-font-weight;
53
+ line-height: $input-line-height;
54
+ color: $input-group-addon-color;
55
+ text-align: center;
56
+ white-space: nowrap;
57
+ background-color: $input-group-addon-bg;
58
+ border: $input-border-width solid $input-group-addon-border-color;
59
+ @include border-radius($input-border-radius);
60
+ }
61
+
62
+
63
+ // Sizing
64
+ //
65
+ // Remix the default form control sizing classes into new ones for easier
66
+ // manipulation.
67
+
68
+ .input-group-lg > .form-control,
69
+ .input-group-lg > .form-select,
70
+ .input-group-lg > .input-group-text,
71
+ .input-group-lg > .btn {
72
+ padding: $input-padding-y-lg $input-padding-x-lg;
73
+ @include font-size($input-font-size-lg);
74
+ @include border-radius($input-border-radius-lg);
75
+ }
76
+
77
+ .input-group-sm > .form-control,
78
+ .input-group-sm > .form-select,
79
+ .input-group-sm > .input-group-text,
80
+ .input-group-sm > .btn {
81
+ padding: $input-padding-y-sm $input-padding-x-sm;
82
+ @include font-size($input-font-size-sm);
83
+ @include border-radius($input-border-radius-sm);
84
+ }
85
+
86
+ .input-group-lg > .form-select,
87
+ .input-group-sm > .form-select {
88
+ padding-right: $form-select-padding-x + $form-select-indicator-padding;
89
+ }
90
+
91
+
92
+ // Rounded corners
93
+ //
94
+ // These rulesets must come after the sizing ones to properly override sm and lg
95
+ // border-radius values when extending. They're more specific than we'd like
96
+ // with the `.input-group >` part, but without it, we cannot override the sizing.
97
+
98
+ // stylelint-disable-next-line no-duplicate-selectors
99
+ .input-group {
100
+ &:not(.has-validation) {
101
+ > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
102
+ > .dropdown-toggle:nth-last-child(n + 3),
103
+ > .form-floating:not(:last-child) > .form-control,
104
+ > .form-floating:not(:last-child) > .form-select {
105
+ @include border-end-radius(0);
106
+ }
107
+ }
108
+
109
+ &.has-validation {
110
+ > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
111
+ > .dropdown-toggle:nth-last-child(n + 4),
112
+ > .form-floating:nth-last-child(n + 3) > .form-control,
113
+ > .form-floating:nth-last-child(n + 3) > .form-select {
114
+ @include border-end-radius(0);
115
+ }
116
+ }
117
+
118
+ $validation-messages: "";
119
+ @each $state in map-keys($form-validation-states) {
120
+ $validation-messages: $validation-messages + ":not(." + unquote($state) + "-tooltip)" + ":not(." + unquote($state) + "-feedback)";
121
+ }
122
+
123
+ > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
124
+ margin-left: -$input-border-width;
125
+ @include border-start-radius(0);
126
+ }
127
+
128
+ > .form-floating:not(:first-child) > .form-control,
129
+ > .form-floating:not(:first-child) > .form-select {
130
+ @include border-start-radius(0);
131
+ }
132
+ }