Skip to content

Commit

Permalink
Prevent form validation mixin from generating invalid CSS (#28447)
Browse files Browse the repository at this point in the history
Extrapolates the previously used selector into a new mixin that only generates valid CSS by creating psuedo-classes for `valid` and `invalid`, and nothing else.

Fixes #28380.
  • Loading branch information
mdo authored and XhmikosR committed Apr 25, 2019
1 parent 2d0f2fe commit 60d826a
Showing 1 changed file with 19 additions and 14 deletions.
33 changes: 19 additions & 14 deletions scss/mixins/_forms.scss
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@
@include deprecate("The `form-control-focus()` mixin", "v4.3.2", "v5", $ignore-warning);
}

@mixin form-validation-state-selector($state) {
@if ($state == "valid" or $state == "invalid") {
.was-validated &:#{$state},
&.is-#{$state} {
@content;
}
} @else {
&.is-#{$state} {
@content;
}
}
}

@mixin form-validation-state($state, $color, $icon) {
.#{$state}-feedback {
Expand All @@ -52,8 +64,7 @@
}

.form-control {
.was-validated &:#{$state},
&.is-#{$state} {
@include form-validation-state-selector($state) {
border-color: $color;

@if $enable-validation-icons {
Expand All @@ -78,8 +89,7 @@

// stylelint-disable-next-line selector-no-qualifying-type
textarea.form-control {
.was-validated &:#{$state},
&.is-#{$state} {
@include form-validation-state-selector($state) {
@if $enable-validation-icons {
padding-right: $input-height-inner;
background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
Expand All @@ -88,8 +98,7 @@
}

.custom-select {
.was-validated &:#{$state},
&.is-#{$state} {
@include form-validation-state-selector($state) {
border-color: $color;

@if $enable-validation-icons {
Expand All @@ -111,8 +120,7 @@


.form-control-file {
.was-validated &:#{$state},
&.is-#{$state} {
@include form-validation-state-selector($state) {
~ .#{$state}-feedback,
~ .#{$state}-tooltip {
display: block;
Expand All @@ -121,8 +129,7 @@
}

.form-check-input {
.was-validated &:#{$state},
&.is-#{$state} {
@include form-validation-state-selector($state) {
~ .form-check-label {
color: $color;
}
Expand All @@ -135,8 +142,7 @@
}

.custom-control-input {
.was-validated &:#{$state},
&.is-#{$state} {
@include form-validation-state-selector($state) {
~ .custom-control-label {
color: $color;

Expand Down Expand Up @@ -171,8 +177,7 @@

// custom file
.custom-file-input {
.was-validated &:#{$state},
&.is-#{$state} {
@include form-validation-state-selector($state) {
~ .custom-file-label {
border-color: $color;
}
Expand Down

0 comments on commit 60d826a

Please sign in to comment.