mirror of
https://github.com/twbs/bootstrap.git
synced 2025-08-29 16:19:53 +02:00
rewrite some forms docs, use new validation styles and icons
This commit is contained in:
150
scss/_forms.scss
150
scss/_forms.scss
@@ -267,66 +267,124 @@ input[type="checkbox"] {
|
||||
//
|
||||
// Apply contextual and semantic states to individual form controls.
|
||||
|
||||
.has-feedback {
|
||||
// Enable absolute positioning
|
||||
position: relative;
|
||||
$form-icon-success: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNoZWNrIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMiA3OTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYxMiA3OTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiM1Q0I4NUMiIGQ9Ik0yMzMuOCw2MTAuMWMtMTMuMywwLTI1LjktNi4yLTM0LTE2LjlMOTAuNSw0NDguOEM3Ni4zLDQzMCw4MCw0MDMuMyw5OC44LDM4OS4xYzE4LjgtMTQuMyw0NS41LTEwLjUsNTkuOCw4LjNsNzEuOSw5NWwyMjAuOS0yNTAuNWMxMi41LTIwLDM4LjgtMjYuMSw1OC44LTEzLjZjMjAsMTIuNCwyNi4xLDM4LjcsMTMuNiw1OC44TDI3MCw1OTBjLTcuNCwxMi0yMC4yLDE5LjQtMzQuMywyMC4xQzIzNS4xLDYxMC4xLDIzNC41LDYxMC4xLDIzMy44LDYxMC4xeiIvPjwvc3ZnPg==";
|
||||
$form-icon-warning: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9Ildhcm5pbmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjEyIDc5MiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjEyIDc5MiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZmlsbD0iI0YwQUQ0RSIgZD0iTTYwMyw2NDAuMmwtMjc4LjUtNTA5Yy0zLjgtNi42LTEwLjgtMTAuNi0xOC41LTEwLjZzLTE0LjcsNC4xLTE4LjUsMTAuNkw5LDY0MC4yYy0zLjcsNi41LTMuNiwxNC40LDAuMiwyMC44YzMuOCw2LjUsMTAuOCwxMC40LDE4LjMsMTAuNGg1NTcuMWM3LjUsMCwxNC41LTMuOSwxOC4zLTEwLjRDNjA2LjYsNjU0LjYsNjA2LjcsNjQ2LjYsNjAzLDY0MC4yeiBNMzM2LjYsNjEwLjJoLTYxLjJWNTQ5aDYxLjJWNjEwLjJ6IE0zMzYuNiw1MDMuMWgtNjEuMlYzMDQuMmg2MS4yVjUwMy4xeiIvPjwvc3ZnPg==";
|
||||
$form-icon-error: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNyb3NzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMiA3OTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYxMiA3OTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiNEOTUzNEYiIGQ9Ik00NDcsNTQ0LjRjLTE0LjQsMTQuNC0zNy42LDE0LjQtNTEuOSwwTDMwNiw0NTEuN2wtODkuMSw5Mi43Yy0xNC40LDE0LjQtMzcuNiwxNC40LTUxLjksMGMtMTQuNC0xNC40LTE0LjQtMzcuNiwwLTUxLjlsOTIuNC05Ni40TDE2NSwyOTkuNmMtMTQuNC0xNC40LTE0LjQtMzcuNiwwLTUxLjlzMzcuNi0xNC40LDUxLjksMGw4OS4yLDkyLjdsODkuMS05Mi43YzE0LjQtMTQuNCwzNy42LTE0LjQsNTEuOSwwYzE0LjQsMTQuNCwxNC40LDM3LjYsMCw1MS45TDM1NC43LDM5Nmw5Mi40LDk2LjRDNDYxLjQsNTA2LjgsNDYxLjQsNTMwLDQ0Nyw1NDQuNHoiLz48L3N2Zz4=";
|
||||
|
||||
// Ensure icons don't overlap text
|
||||
.form-control {
|
||||
padding-right: ($input-height * 1.25);
|
||||
}
|
||||
}
|
||||
// Feedback icon
|
||||
.form-control-feedback {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: 2; // Ensure icon is above input groups
|
||||
display: block;
|
||||
width: $input-height;
|
||||
height: $input-height;
|
||||
line-height: $input-height;
|
||||
text-align: center;
|
||||
pointer-events: none;
|
||||
}
|
||||
.input-lg + .form-control-feedback,
|
||||
.input-group-lg + .form-control-feedback {
|
||||
width: $input-height-lg;
|
||||
height: $input-height-lg;
|
||||
line-height: $input-height-lg;
|
||||
}
|
||||
.input-sm + .form-control-feedback,
|
||||
.input-group-sm + .form-control-feedback {
|
||||
width: $input-height-sm;
|
||||
height: $input-height-sm;
|
||||
line-height: $input-height-sm;
|
||||
|
||||
.form-control-success,
|
||||
.form-control-warning,
|
||||
.form-control-error {
|
||||
padding-right: ($padding-x * 3);
|
||||
background-position: center right ($input-height * .25);
|
||||
background-size: ($input-height * .65) ($input-height * .65);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
// Form validation states
|
||||
.has-success {
|
||||
@include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
|
||||
@include form-control-validation(success, $brand-success);
|
||||
|
||||
.form-control-success {
|
||||
background-image: url($form-icon-success);
|
||||
}
|
||||
}
|
||||
|
||||
.has-warning {
|
||||
@include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
|
||||
@include form-control-validation(warning, $brand-warning);
|
||||
|
||||
.form-control-warning {
|
||||
background-image: url($form-icon-warning);
|
||||
}
|
||||
}
|
||||
|
||||
.has-error {
|
||||
@include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
|
||||
}
|
||||
@include form-control-validation(error, $brand-danger);
|
||||
|
||||
// Reposition feedback icon if input has visible label above
|
||||
.has-feedback label {
|
||||
|
||||
~ .form-control-feedback {
|
||||
// TODO: redo this since we nuked the `$line-height-computed`
|
||||
top: 0; // Height of the `label` and its margin
|
||||
}
|
||||
|
||||
&.sr-only ~ .form-control-feedback {
|
||||
top: 0;
|
||||
.form-control-error {
|
||||
background-image: url($form-icon-error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// .form-control-success {
|
||||
// background-image: url("#{$form-icon-success}");
|
||||
// border-color: $brand-success;
|
||||
// }
|
||||
//
|
||||
// .form-control-warning {
|
||||
// background-image: url("#{$form-icon-warning}");
|
||||
// border-color: $brand-warning;
|
||||
// }
|
||||
//
|
||||
// .form-control-error {
|
||||
// background-image: url("#{$form-icon-danger}");
|
||||
// border-color: $brand-danger;
|
||||
// }
|
||||
|
||||
|
||||
// .has-feedback {
|
||||
// // Enable absolute positioning
|
||||
// position: relative;
|
||||
//
|
||||
// // Ensure icons don't overlap text
|
||||
// .form-control {
|
||||
// padding-right: ($input-height * 1.25);
|
||||
// }
|
||||
// }
|
||||
// // Feedback icon
|
||||
// .form-control-feedback {
|
||||
// position: absolute;
|
||||
// top: 0;
|
||||
// right: 0;
|
||||
// z-index: 2; // Ensure icon is above input groups
|
||||
// display: block;
|
||||
// width: $input-height;
|
||||
// height: $input-height;
|
||||
// line-height: $input-height;
|
||||
// text-align: center;
|
||||
// pointer-events: none;
|
||||
// }
|
||||
// .input-lg + .form-control-feedback,
|
||||
// .input-group-lg + .form-control-feedback {
|
||||
// width: $input-height-lg;
|
||||
// height: $input-height-lg;
|
||||
// line-height: $input-height-lg;
|
||||
// }
|
||||
// .input-sm + .form-control-feedback,
|
||||
// .input-group-sm + .form-control-feedback {
|
||||
// width: $input-height-sm;
|
||||
// height: $input-height-sm;
|
||||
// line-height: $input-height-sm;
|
||||
// }
|
||||
//
|
||||
// // Form validation states
|
||||
// .has-success {
|
||||
// @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
|
||||
// }
|
||||
// .has-warning {
|
||||
// @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
|
||||
// }
|
||||
// .has-error {
|
||||
// @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
|
||||
// }
|
||||
//
|
||||
// // Reposition feedback icon if input has visible label above
|
||||
// .has-feedback label {
|
||||
//
|
||||
// ~ .form-control-feedback {
|
||||
// // TODO: redo this since we nuked the `$line-height-computed`
|
||||
// top: 0; // Height of the `label` and its margin
|
||||
// }
|
||||
//
|
||||
// &.sr-only ~ .form-control-feedback {
|
||||
// top: 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// Help text
|
||||
//
|
||||
// Apply to any element you wish to create light text for placement immediately
|
||||
|
@@ -40,7 +40,7 @@ $enable-flex: false !default;
|
||||
$enable-rounded: true !default;
|
||||
$enable-shadows: false !default;
|
||||
$enable-gradients: false !default;
|
||||
$enable-transitions: true !default;
|
||||
$enable-transitions: false !default;
|
||||
$enable-hover-media-query: false !default;
|
||||
|
||||
|
||||
|
@@ -3,7 +3,7 @@
|
||||
// Used in _forms.scss to generate the form validation CSS for warnings, errors,
|
||||
// and successes.
|
||||
|
||||
@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
|
||||
@mixin form-control-validation($state, $color) {
|
||||
// Color the label and help text
|
||||
.help-block,
|
||||
.control-label,
|
||||
@@ -15,28 +15,29 @@
|
||||
&.checkbox label,
|
||||
&.radio-inline label,
|
||||
&.checkbox-inline label {
|
||||
color: $text-color;
|
||||
color: $color;
|
||||
}
|
||||
// Set the border and box shadow on specific inputs to match
|
||||
.form-control {
|
||||
border-color: $border-color;
|
||||
@include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
|
||||
border-color: $color;
|
||||
// @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
|
||||
|
||||
&:focus {
|
||||
border-color: darken($border-color, 10%);
|
||||
$shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
|
||||
@include box-shadow($shadow);
|
||||
// border-color: darken($border-color, 10%);
|
||||
// $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
|
||||
// @include box-shadow($shadow);
|
||||
}
|
||||
}
|
||||
|
||||
// Set validation states also for addons
|
||||
.input-group-addon {
|
||||
color: $text-color;
|
||||
border-color: $border-color;
|
||||
background-color: $background-color;
|
||||
color: $color;
|
||||
border-color: $color;
|
||||
background-color: lighten($color, 40%);
|
||||
}
|
||||
// Optional feedback icon
|
||||
.form-control-feedback {
|
||||
color: $text-color;
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user