// We use mixins instead of placeholders as placeholders would combine the selectors when @extend-ed
-@mixin form-floating-active-input-styles() {
- padding-top: $form-floating-input-padding-t;
- padding-bottom: $form-floating-input-padding-b;
-}
-
-@mixin form-floating-active-label-styles() {
- opacity: $form-floating-label-opacity;
- transform: $form-floating-label-transform;
-}
-
.form-floating {
position: relative;
color: transparent;
}
+ &:focus::placeholder {
+ color: $input-placeholder-color;
+ }
+
&:focus,
&:not(:placeholder-shown) {
@include form-floating-active-input-styles();
> .form-select {
~ label {
@include form-floating-active-label-styles();
- color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
&::after {
position: absolute;
> .form-control:-webkit-autofill {
~ label {
@include form-floating-active-label-styles();
- color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
}
}
// Todo in v6: Consider combining this with the .form-control-plaintext rules to reduce some CSS?
.form-floating-always {
- > .form-control {
- @include form-floating-active-input-styles();
+ &.form-floating,
+ .form-floating {
+ .form-control {
+ @include form-floating-active-input-styles();
- &::placeholder {
- color: $input-color;
- }
- &:focus::placeholder {
- color: $input-placeholder-color;
+ &::placeholder,
+ &:focus::placeholder {
+ color: $input-placeholder-color;
+ }
}
- }
- > label {
- @include form-floating-active-label-styles();
+ label {
+ @include form-floating-active-label-styles();
+ }
}
}
// This mixin uses an `if()` technique to be compatible with Dart Sass
// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
+// scss-docs-start form-floating-mixins
+@mixin form-floating-active-input-styles() {
+ padding-top: $form-floating-input-padding-t;
+ padding-bottom: $form-floating-input-padding-b;
+}
+
+@mixin form-floating-active-label-styles() {
+ color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
+ transform: $form-floating-label-transform;
+}
+// scss-docs-end form-floating-mixins
+
// scss-docs-start form-validation-mixins
@mixin form-validation-state-selector($state) {
@if ($state == "valid" or $state == "invalid") {