bootstrap-scss 5.1.3 → 5.2.1

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 (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
+ }