1
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-08-28 07:39:57 +02:00

Add new CSS vars to .form-control

This commit is contained in:
louismaxime.piton
2023-08-21 11:21:54 +02:00
parent f268c0be57
commit 2b4699333c
2 changed files with 28 additions and 50 deletions

View File

@@ -3,9 +3,16 @@
// //
.form-control { .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; display: block;
width: 100%; 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; font-family: $input-font-family;
@include font-size($input-font-size); @include font-size($input-font-size);
font-weight: $input-font-weight; font-weight: $input-font-weight;
@@ -93,9 +100,9 @@
// File input buttons theming // File input buttons theming
&::file-selector-button { &::file-selector-button {
padding: $input-padding-y $input-padding-x; padding: var(--#{$prefix}form-control-padding-y) var(--#{$prefix}form-control-padding-x);
margin: (-$input-padding-y) (-$input-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: $input-padding-x; margin-inline-end: var(--#{$prefix}form-control-padding-x);
color: $form-file-button-color; color: $form-file-button-color;
@include gradient-bg($form-file-button-bg); @include gradient-bg($form-file-button-bg);
pointer-events: none; pointer-events: none;
@@ -118,9 +125,10 @@
// text (without any border, background color, focus indicator) // text (without any border, background color, focus indicator)
.form-control-plaintext { .form-control-plaintext {
--#{$prefix}form-control-padding-x: 0;
display: block; display: block;
width: 100%; width: 100%;
padding: $input-padding-y 0;
margin-bottom: 0; // match inputs if this class comes on inputs with default margins margin-bottom: 0; // match inputs if this class comes on inputs with default margins
line-height: $input-line-height; line-height: $input-line-height;
color: $input-plaintext-color; color: $input-plaintext-color;
@@ -131,12 +139,6 @@
&:focus { &:focus {
outline: 0; outline: 0;
} }
&.form-control-sm,
&.form-control-lg {
padding-right: 0;
padding-left: 0;
}
} }
// Form control sizing // Form control sizing
@@ -147,53 +149,24 @@
// Repeated in `_input_group.scss` to avoid Sass extend issues. // Repeated in `_input_group.scss` to avoid Sass extend issues.
.form-control-sm { .form-control-sm {
min-height: $input-height-sm; --#{$prefix}form-control-min-height: #{$input-height-sm};
padding: $input-padding-y-sm $input-padding-x-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 font-size($input-font-size-sm);
@include border-radius($input-border-radius-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 { .form-control-lg {
min-height: $input-height-lg; --#{$prefix}form-control-min-height: #{$input-height-lg};
padding: $input-padding-y-lg $input-padding-x-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 font-size($input-font-size-lg);
@include border-radius($input-border-radius-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 { .form-control-color {
width: $form-color-width; width: $form-color-width;
height: $input-height; padding: var(--#{$prefix}form-control-padding-y);
padding: $input-padding-y;
&:not(:disabled):not([readonly]) { &:not(:disabled):not([readonly]) {
cursor: pointer; cursor: pointer;
@@ -208,7 +181,4 @@ textarea {
border: 0 !important; // stylelint-disable-line declaration-no-important border: 0 !important; // stylelint-disable-line declaration-no-important
@include border-radius($input-border-radius); @include border-radius($input-border-radius);
} }
&.form-control-sm { height: $input-height-sm; }
&.form-control-lg { height: $input-height-lg; }
} }

View File

@@ -173,6 +173,14 @@ Learn more about [support for datalist elements](https://caniuse.com/datalist).
## CSS ## CSS
### Variables
{{< added-in "5.3.2" >}}
As part of Bootstrap's evolving CSS variables approach, form controls now use local CSS variables on `.form-control` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.
{{< scss-docs name="form-control-css-vars" file="scss/forms/_form-control.scss" >}}
### Sass variables ### Sass variables
`$input-*` are shared across most of our form controls (and not buttons). `$input-*` are shared across most of our form controls (and not buttons).