diff options
author | Mark Otto <markdotto@gmail.com> | 2017-06-11 02:30:26 +0300 |
---|---|---|
committer | Mark Otto <markdotto@gmail.com> | 2017-06-11 02:30:26 +0300 |
commit | 94ed0d901bac0f3d63b51e3577af9bf338aba4f8 (patch) | |
tree | 134a898ba8626f1b11020770b62fc43db0cddca1 /scss/_forms.scss | |
parent | 280eaf132c0a24d7c3b660213d851d31bd9f35fa (diff) |
move to mixin so we can repeat it easier and allow folks to extend to custom states
Diffstat (limited to 'scss/_forms.scss')
-rw-r--r-- | scss/_forms.scss | 107 |
1 files changed, 7 insertions, 100 deletions
diff --git a/scss/_forms.scss b/scss/_forms.scss index 8b7ae2f40e..c56cfd0686 100644 --- a/scss/_forms.scss +++ b/scss/_forms.scss @@ -238,9 +238,12 @@ select.form-control-lg { } -// Form control feedback states +// Form validation // -// Apply contextual and semantic states to individual form controls. +// Provide feedback to users when form field values are valid or invalid. Works +// primarily for client-side validation via scoped `:invalid` and `:valid` +// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for +// server side validation. .invalid-feedback { display: none; @@ -264,104 +267,8 @@ select.form-control-lg { border-radius: .2rem; } -.was-validated { - // - // Valid state - // - .form-control:valid, - .custom-select:valid { - border-color: $form-feedback-valid-color; - - &:focus { - box-shadow: 0 0 0 .2rem rgba($form-feedback-valid-color,.25); - } - - ~ .invalid-feedback, - ~ .invalid-tooltip { - display: block; - } - } - - // TODO: redo check markup lol crap - .form-check-input:valid { - + .form-check-label { - color: $form-feedback-valid-color; - } - } - - // custom radios and checks - .custom-control-input:valid { - ~ .custom-control-indicator { - background-color: rgba($form-feedback-valid-color, .25); - } - ~ .custom-control-description { - color: $form-feedback-valid-color; - } - } - - // custom file - .custom-file-input:valid { - ~ .custom-file-control { - border-color: $form-feedback-valid-color; - - &::before { border-color: inherit; } - } - - &:focus { - box-shadow: 0 0 0 .2rem rgba($form-feedback-valid-color,.25); - } - } - - // - // Invalid state - // - - // input, textarea, select, and custom select - .form-control:invalid, - .custom-select:invalid { - border-color: $form-feedback-invalid-color; - - &:focus { - box-shadow: 0 0 0 .2rem rgba($form-feedback-invalid-color,.25); - } - - ~ .invalid-feedback, - ~ .invalid-tooltip { - display: block; - } - } - - // TODO: redo check markup lol crap - .form-check-input:invalid { - + .form-check-label { - color: $form-feedback-invalid-color; - } - } - - // custom radios and checks - .custom-control-input:invalid { - ~ .custom-control-indicator { - background-color: rgba($form-feedback-invalid-color, .25); - } - ~ .custom-control-description { - color: $form-feedback-invalid-color; - } - } - - // custom file - .custom-file-input:invalid { - ~ .custom-file-control { - border-color: $form-feedback-invalid-color; - - &::before { border-color: inherit; } - } - - &:focus { - box-shadow: 0 0 0 .2rem rgba($form-feedback-invalid-color,.25); - } - } -} - +@include form-validation-state("valid", $form-feedback-valid-color); +@include form-validation-state("invalid", $form-feedback-invalid-color); // Inline forms // |