311 lines
5.8 KiB
SCSS
311 lines
5.8 KiB
SCSS
|
/**
|
||
|
* Forms
|
||
|
* --------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
// Make all forms have space below them
|
||
|
form {
|
||
|
margin: 0 0 $line-height-base;
|
||
|
}
|
||
|
|
||
|
// Groups of fields with labels on top (legends)
|
||
|
legend {
|
||
|
display: block;
|
||
|
margin-bottom: $line-height-base;
|
||
|
padding: 0;
|
||
|
width: 100%;
|
||
|
border: $input-border-width solid $input-border;
|
||
|
color: $dark;
|
||
|
font-size: $font-size-base * 1.5;
|
||
|
line-height: $line-height-base * 2;
|
||
|
|
||
|
small {
|
||
|
color: $stable;
|
||
|
font-size: $line-height-base * .75;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Set font for forms
|
||
|
label,
|
||
|
input,
|
||
|
button,
|
||
|
select,
|
||
|
textarea {
|
||
|
@include font-shorthand($font-size-base, normal, $line-height-base); // Set size, weight, line-height here
|
||
|
}
|
||
|
input,
|
||
|
button,
|
||
|
select,
|
||
|
textarea {
|
||
|
font-family: $font-family-base; // And only set font-family here for those that need it (note the missing label element)
|
||
|
}
|
||
|
|
||
|
|
||
|
// Input List
|
||
|
// -------------------------------
|
||
|
|
||
|
.item-input {
|
||
|
@include display-flex();
|
||
|
@include align-items(center);
|
||
|
position: relative;
|
||
|
overflow: hidden;
|
||
|
padding: 6px 0 5px 16px;
|
||
|
|
||
|
input {
|
||
|
@include border-radius(0);
|
||
|
@include flex(1, 0, 220px);
|
||
|
@include appearance(none);
|
||
|
margin: 0;
|
||
|
padding-right: 24px;
|
||
|
background-color: transparent;
|
||
|
}
|
||
|
|
||
|
.button .icon {
|
||
|
@include flex(0, 0, 24px);
|
||
|
position: static;
|
||
|
display: inline-block;
|
||
|
height: auto;
|
||
|
text-align: center;
|
||
|
font-size: 16px;
|
||
|
}
|
||
|
|
||
|
.button-bar {
|
||
|
@include border-radius(0);
|
||
|
@include flex(1, 0, 220px);
|
||
|
@include appearance(none);
|
||
|
}
|
||
|
|
||
|
.icon {
|
||
|
min-width: 14px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.item-input-inset {
|
||
|
@include display-flex();
|
||
|
@include align-items(center);
|
||
|
position: relative;
|
||
|
overflow: hidden;
|
||
|
padding: ($item-padding / 3) * 2;
|
||
|
}
|
||
|
|
||
|
.item-input-wrapper {
|
||
|
@include display-flex();
|
||
|
@include flex(1, 0);
|
||
|
@include align-items(center);
|
||
|
@include border-radius(4px);
|
||
|
padding-right: 8px;
|
||
|
padding-left: 8px;
|
||
|
background: #eee;
|
||
|
}
|
||
|
|
||
|
.item-input-inset .item-input-wrapper input {
|
||
|
padding-left: 4px;
|
||
|
height: 29px;
|
||
|
background: transparent;
|
||
|
line-height: 18px;
|
||
|
}
|
||
|
|
||
|
.item-input-wrapper ~ .button {
|
||
|
margin-left: ($item-padding / 3) * 2;
|
||
|
}
|
||
|
|
||
|
.input-label {
|
||
|
@include flex(1, 0, 100px);
|
||
|
display: table;
|
||
|
padding: 7px 10px 7px 0px;
|
||
|
max-width: 200px;
|
||
|
width: 35%;
|
||
|
color: $input-label-color;
|
||
|
font-size: 16px;
|
||
|
}
|
||
|
|
||
|
.placeholder-icon {
|
||
|
color: #aaa;
|
||
|
&:first-child {
|
||
|
padding-right: 6px;
|
||
|
}
|
||
|
&:last-child {
|
||
|
padding-left: 6px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.item-stacked-label {
|
||
|
display: block;
|
||
|
background-color: transparent;
|
||
|
box-shadow: none;
|
||
|
|
||
|
.input-label, .icon {
|
||
|
display: inline-block;
|
||
|
padding: 4px 0 0 0px;
|
||
|
vertical-align: middle;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.item-stacked-label input,
|
||
|
.item-stacked-label textarea {
|
||
|
@include border-radius(2px);
|
||
|
padding: 4px 8px 3px 0;
|
||
|
border: none;
|
||
|
background-color: $input-bg;
|
||
|
}
|
||
|
.item-stacked-label input {
|
||
|
overflow: hidden;
|
||
|
height: $line-height-computed + $font-size-base + 12px;
|
||
|
}
|
||
|
|
||
|
.item-floating-label {
|
||
|
display: block;
|
||
|
background-color: transparent;
|
||
|
box-shadow: none;
|
||
|
|
||
|
.input-label {
|
||
|
position: relative;
|
||
|
padding: 5px 0 0 0;
|
||
|
opacity: 0;
|
||
|
top: 10px;
|
||
|
@include transition(opacity .15s ease-in, top .2s linear);
|
||
|
|
||
|
&.has-input {
|
||
|
opacity: 1;
|
||
|
top: 0;
|
||
|
@include transition(opacity .15s ease-in, top .2s linear);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// Form Controls
|
||
|
// -------------------------------
|
||
|
|
||
|
// Shared size and type resets
|
||
|
textarea,
|
||
|
input[type="text"],
|
||
|
input[type="password"],
|
||
|
input[type="datetime"],
|
||
|
input[type="datetime-local"],
|
||
|
input[type="date"],
|
||
|
input[type="month"],
|
||
|
input[type="time"],
|
||
|
input[type="week"],
|
||
|
input[type="number"],
|
||
|
input[type="email"],
|
||
|
input[type="url"],
|
||
|
input[type="search"],
|
||
|
input[type="tel"],
|
||
|
input[type="color"] {
|
||
|
display: block;
|
||
|
padding-top: 2px;
|
||
|
padding-left: 0;
|
||
|
height: $line-height-computed + $font-size-base;
|
||
|
color: $input-color;
|
||
|
vertical-align: middle;
|
||
|
font-size: $font-size-base;
|
||
|
line-height: $font-size-base + 2;
|
||
|
}
|
||
|
|
||
|
.platform-ios,
|
||
|
.platform-android {
|
||
|
input[type="datetime-local"],
|
||
|
input[type="date"],
|
||
|
input[type="month"],
|
||
|
input[type="time"],
|
||
|
input[type="week"] {
|
||
|
padding-top: 8px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
input,
|
||
|
textarea {
|
||
|
width: 100%;
|
||
|
}
|
||
|
textarea {
|
||
|
padding-left: 0;
|
||
|
@include placeholder($input-color-placeholder, -3px);
|
||
|
}
|
||
|
|
||
|
// Reset height since textareas have rows
|
||
|
textarea {
|
||
|
height: auto;
|
||
|
}
|
||
|
|
||
|
// Everything else
|
||
|
textarea,
|
||
|
input[type="text"],
|
||
|
input[type="password"],
|
||
|
input[type="datetime"],
|
||
|
input[type="datetime-local"],
|
||
|
input[type="date"],
|
||
|
input[type="month"],
|
||
|
input[type="time"],
|
||
|
input[type="week"],
|
||
|
input[type="number"],
|
||
|
input[type="email"],
|
||
|
input[type="url"],
|
||
|
input[type="search"],
|
||
|
input[type="tel"],
|
||
|
input[type="color"] {
|
||
|
border: 0;
|
||
|
}
|
||
|
|
||
|
// Position radios and checkboxes better
|
||
|
input[type="radio"],
|
||
|
input[type="checkbox"] {
|
||
|
margin: 0;
|
||
|
line-height: normal;
|
||
|
}
|
||
|
|
||
|
// Reset width of input images, buttons, radios, checkboxes
|
||
|
input[type="file"],
|
||
|
input[type="image"],
|
||
|
input[type="submit"],
|
||
|
input[type="reset"],
|
||
|
input[type="button"],
|
||
|
input[type="radio"],
|
||
|
input[type="checkbox"] {
|
||
|
width: auto; // Override of generic input selector
|
||
|
}
|
||
|
|
||
|
// Set the height of file to match text inputs
|
||
|
input[type="file"] {
|
||
|
line-height: $input-height-base;
|
||
|
}
|
||
|
|
||
|
// Text input classes to hide text caret during scroll
|
||
|
.previous-input-focus,
|
||
|
.cloned-text-input + input,
|
||
|
.cloned-text-input + textarea {
|
||
|
position: absolute !important;
|
||
|
left: -9999px;
|
||
|
width: 200px;
|
||
|
}
|
||
|
|
||
|
|
||
|
// Placeholder
|
||
|
// -------------------------------
|
||
|
input,
|
||
|
textarea {
|
||
|
@include placeholder();
|
||
|
}
|
||
|
|
||
|
|
||
|
// DISABLED STATE
|
||
|
// -------------------------------
|
||
|
|
||
|
// Disabled and read-only inputs
|
||
|
input[disabled],
|
||
|
select[disabled],
|
||
|
textarea[disabled],
|
||
|
input[readonly]:not(.cloned-text-input),
|
||
|
textarea[readonly]:not(.cloned-text-input),
|
||
|
select[readonly] {
|
||
|
background-color: $input-bg-disabled;
|
||
|
cursor: not-allowed;
|
||
|
}
|
||
|
// Explicitly reset the colors here
|
||
|
input[type="radio"][disabled],
|
||
|
input[type="checkbox"][disabled],
|
||
|
input[type="radio"][readonly],
|
||
|
input[type="checkbox"][readonly] {
|
||
|
background-color: transparent;
|
||
|
}
|