Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/scss
diff options
context:
space:
mode:
authorMark Otto <otto@github.com>2019-01-11 22:16:50 +0300
committerXhmikosR <xhmikosr@gmail.com>2019-01-11 22:16:50 +0300
commitdeea117293951dd51f7c3c78a719c479f736c5cb (patch)
tree57cc0a63b5e7504797fece5a48dab4ca7f21f060 /scss
parentfd9dc1a0ca879f5624f4ef8c381136c506b0bff3 (diff)
Add form-validation-states Sass map (#27999)
Diffstat (limited to 'scss')
-rw-r--r--scss/_forms.scss5
-rw-r--r--scss/_variables.scss15
-rw-r--r--scss/mixins/_forms.scss12
3 files changed, 21 insertions, 11 deletions
diff --git a/scss/_forms.scss b/scss/_forms.scss
index 9d3b6e330f..205b44a790 100644
--- a/scss/_forms.scss
+++ b/scss/_forms.scss
@@ -241,8 +241,9 @@ textarea.form-control {
// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
// server side validation.
-@include form-validation-state("valid", $form-feedback-valid-color);
-@include form-validation-state("invalid", $form-feedback-invalid-color);
+@each $state, $data in $form-validation-states {
+ @include form-validation-state($state, map-get($data, color), map-get($data, icon));
+}
// Inline forms
//
diff --git a/scss/_variables.scss b/scss/_variables.scss
index 7dd5289e9e..ae96c9b6b7 100644
--- a/scss/_variables.scss
+++ b/scss/_variables.scss
@@ -658,6 +658,21 @@ $form-feedback-icon-valid: str-replace(url("data:image/svg+xml,%3csvg x
$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
$form-feedback-icon-invalid: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='#{$form-feedback-icon-invalid-color}' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"), "#", "%23") !default;
+$form-validation-states: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$form-validation-states: map-merge(
+ (
+ "valid": (
+ "color": $form-feedback-valid-color,
+ "icon": $form-feedback-icon-valid
+ ),
+ "invalid": (
+ "color": $form-feedback-invalid-color,
+ "icon": $form-feedback-icon-invalid
+ ),
+ ),
+ $form-validation-states
+);
// Z-index master list
//
diff --git a/scss/mixins/_forms.scss b/scss/mixins/_forms.scss
index b8eb59d836..d740a2f777 100644
--- a/scss/mixins/_forms.scss
+++ b/scss/mixins/_forms.scss
@@ -26,7 +26,7 @@
}
-@mixin form-validation-state($state, $color) {
+@mixin form-validation-state($state, $color, $icon) {
.#{$state}-feedback {
display: none;
width: 100%;
@@ -57,15 +57,10 @@
@if $enable-validation-icons {
padding-right: $input-height-inner;
+ background-image: $icon;
background-repeat: no-repeat;
background-position: center right calc(#{$input-height-inner} / 4);
background-size: calc(#{$input-height-inner} / 2) calc(#{$input-height-inner} / 2);
-
- @if $state == "valid" {
- background-image: $form-feedback-icon-valid;
- } @else {
- background-image: $form-feedback-icon-invalid;
- }
}
&:focus {
@@ -97,9 +92,8 @@
border-color: $color;
@if $enable-validation-icons {
- $form-feedback-icon: if($state == "valid", $form-feedback-icon-valid, $form-feedback-icon-invalid);
padding-right: $custom-select-feedback-icon-padding-right;
- background: $custom-select-background, $form-feedback-icon no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;
+ background: $custom-select-background, $icon no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size;
}
&:focus {