//
.form-control {
+ // scss-docs-start form-control-css-vars
+ --#{$prefix}form-control-min-height: #{$input-height};
+ --#{$prefix}form-control-padding-y: #{$input-padding-y};
+ --#{$prefix}form-control-padding-x: #{$input-padding-x};
+ // scss-docs-end form-control-css-vars
+
display: block;
width: 100%;
- padding: $input-padding-y $input-padding-x;
+ min-height: var(--#{$prefix}form-control-min-height);
+ padding: var(--#{$prefix}form-control-padding-y) var(--#{$prefix}form-control-padding-x);
font-family: $input-font-family;
@include font-size($input-font-size);
font-weight: $input-font-weight;
// File input buttons theming
&::file-selector-button {
- padding: $input-padding-y $input-padding-x;
- margin: (-$input-padding-y) (-$input-padding-x);
- margin-inline-end: $input-padding-x;
+ padding: var(--#{$prefix}form-control-padding-y) var(--#{$prefix}form-control-padding-x);
+ margin: calc(-1 * var(--#{$prefix}form-control-padding-y)) calc(-1 * var(--#{$prefix}form-control-padding-x)); // stylelint-disable-line function-disallowed-list
+ margin-inline-end: var(--#{$prefix}form-control-padding-x);
color: $form-file-button-color;
@include gradient-bg($form-file-button-bg);
pointer-events: none;
// text (without any border, background color, focus indicator)
.form-control-plaintext {
+ --#{$prefix}form-control-padding-x: 0;
+
display: block;
width: 100%;
- padding: $input-padding-y 0;
margin-bottom: 0; // match inputs if this class comes on inputs with default margins
line-height: $input-line-height;
color: $input-plaintext-color;
&:focus {
outline: 0;
}
-
- &.form-control-sm,
- &.form-control-lg {
- padding-right: 0;
- padding-left: 0;
- }
}
// Form control sizing
// Repeated in `_input_group.scss` to avoid Sass extend issues.
.form-control-sm {
- min-height: $input-height-sm;
- padding: $input-padding-y-sm $input-padding-x-sm;
+ --#{$prefix}form-control-min-height: #{$input-height-sm};
+ --#{$prefix}form-control-padding-y: #{$input-padding-y-sm};
+ --#{$prefix}form-control-padding-x: #{$input-padding-x-sm};
@include font-size($input-font-size-sm);
@include border-radius($input-border-radius-sm);
-
- &::file-selector-button {
- padding: $input-padding-y-sm $input-padding-x-sm;
- margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
- margin-inline-end: $input-padding-x-sm;
- }
}
.form-control-lg {
- min-height: $input-height-lg;
- padding: $input-padding-y-lg $input-padding-x-lg;
+ --#{$prefix}form-control-min-height: #{$input-height-lg};
+ --#{$prefix}form-control-padding-y: #{$input-padding-y-lg};
+ --#{$prefix}form-control-padding-x: #{$input-padding-x-lg};
@include font-size($input-font-size-lg);
@include border-radius($input-border-radius-lg);
-
- &::file-selector-button {
- padding: $input-padding-y-lg $input-padding-x-lg;
- margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
- margin-inline-end: $input-padding-x-lg;
- }
}
-// Make sure textareas don't shrink too much when resized
-// https://github.com/twbs/bootstrap/pull/29124
-// stylelint-disable selector-no-qualifying-type
-textarea {
- &.form-control {
- min-height: $input-height;
- }
-
- &.form-control-sm {
- min-height: $input-height-sm;
- }
-
- &.form-control-lg {
- min-height: $input-height-lg;
- }
-}
-// stylelint-enable selector-no-qualifying-type
-
.form-control-color {
width: $form-color-width;
- height: $input-height;
- padding: $input-padding-y;
+ padding: var(--#{$prefix}form-control-padding-y);
&:not(:disabled):not([readonly]) {
cursor: pointer;
border: 0 !important; // stylelint-disable-line declaration-no-important
@include border-radius($input-border-radius);
}
-
- &.form-control-sm { height: $input-height-sm; }
- &.form-control-lg { height: $input-height-lg; }
}