From 3aabfc70c38db03e77229a49f4f8c7ed58169cf7 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Wed, 29 Mar 2023 12:46:09 -0500 Subject: [PATCH] Another pass at fixing floating labels disabled colors (#38313) * Another pass at fixing floating labels disabled colors * Fix height for textareas * Fix disabled background * Move from full width to an inline-block-ish approach --------- Co-authored-by: XhmikosR --- scss/_variables.scss | 2 +- scss/forms/_floating-labels.scss | 33 +++++++++++++++++--------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/scss/_variables.scss b/scss/_variables.scss index eed9a13535..e311bb0ef2 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -1068,7 +1068,7 @@ $form-floating-padding-x: $input-padding-x !default; $form-floating-padding-y: 1rem !default; $form-floating-input-padding-t: 1.625rem !default; $form-floating-input-padding-b: .625rem !default; -$form-floating-label-height: 1.875em !default; +$form-floating-label-height: 1.5em !default; $form-floating-label-opacity: .65 !default; $form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default; $form-floating-label-disabled-color: $gray-600 !default; diff --git a/scss/forms/_floating-labels.scss b/scss/forms/_floating-labels.scss index acae3fd684..7d04723e33 100644 --- a/scss/forms/_floating-labels.scss +++ b/scss/forms/_floating-labels.scss @@ -1,17 +1,6 @@ .form-floating { position: relative; - &:not(.form-control:disabled)::before { - position: absolute; - top: $input-border-width; - left: $input-border-width; - width: subtract(100%, add($input-height-inner-quarter, $input-height-inner-half)); - height: $form-floating-label-height; - content: ""; - background-color: $input-bg; - @include border-radius($input-border-radius); - } - > .form-control, > .form-control-plaintext, > .form-select { @@ -23,7 +12,7 @@ position: absolute; top: 0; left: 0; - width: 100%; + z-index: 2; height: 100%; // allow textareas padding: $form-floating-padding-y $form-floating-padding-x; overflow: hidden; @@ -66,14 +55,24 @@ > .form-control-plaintext, > .form-select { ~ label { - opacity: $form-floating-label-opacity; + color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity}); transform: $form-floating-label-transform; + + &::after { + position: absolute; + inset: $form-floating-padding-y ($form-floating-padding-x * .5); + z-index: -1; + height: $form-floating-label-height; + content: ""; + background-color: $input-bg; + @include border-radius($input-border-radius); + } } } // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped > .form-control:-webkit-autofill { ~ label { - opacity: $form-floating-label-opacity; + color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity}); transform: $form-floating-label-transform; } } @@ -84,7 +83,11 @@ } } - > .form-control:disabled ~ label { + > :disabled ~ label { color: $form-floating-label-disabled-color; + + &::after { + background-color: $input-disabled-bg; + } } }