//
// Custom Form Variables
//
$include-html-custom-form-classes: $include-html-classes !default;
// We use these to control the basic form styles input styles
$custom-form-border-color: #ccc !default;
$custom-form-border-size: 1px !default;
$custom-form-bg: #fff !default;
$custom-form-bg-disabled: #ddd !default;
$custom-form-input-size: 16px !default;
$custom-form-check-color: #222 !default;
$custom-form-check-size: 16px !default;
$custom-form-radio-size: 8px !default;
$custom-form-checkbox-radius: 0 !default;
// We use these to style the custom select form element.
$custom-select-bg: #fff !default;
$custom-select-fade-to-color: #f3f3f3 !default;
$custom-select-border-color: #ddd !default;
$custom-select-triangle-color: #aaa !default;
$custom-select-triangle-color-open: #222 !default;
$custom-select-height: em-calc(13) + ($form-spacing * 1.5) !default;
$custom-select-margin-bottom: em-calc(20) !default;
$custom-select-font-color-selected: #141414 !default;
$custom-select-disabled-color: #888 !default;
// We use these to control the style of the custom select dropdown element.
$custom-dropdown-height: 200px !default;
$custom-dropdown-bg: #fff !default;
$custom-dropdown-border-color: darken(#fff, 20%) !default;
$custom-dropdown-border-width: 1px !default;
$custom-dropdown-border-style: solid !default;
$custom-dropdown-font-color: #555 !default;
$custom-dropdown-font-size: em-calc(14) !default;
$custom-dropdown-color-selected: #eeeeee !default;
$custom-dropdown-font-color-selected: #000 !default;
$custom-dropdown-shadow: 0 2px 2px 0 rgba(0,0,0,0.1) !default;
$custom-dropdown-offset-top: auto !default;
$custom-dropdown-list-padding: em-calc(4) !default;
$custom-dropdown-default-float-padding: em-calc(6) !default;
$custom-dropdown-opposite-padding: em-calc(38) !default;
$custom-dropdown-list-item-min-height: em-calc(24) !default;
$custom-dropdown-width-small: 134px !default;
$custom-dropdown-width-medium: 254px !default;
$custom-dropdown-width-large: 434px !default;
// We decided not to make a mixin for the custom forms because
// they rely on a very specific class naming structure.
// We may look at updating this in the future.
@mixin custom-form-input($radius:0px, $mark-size:0px) {
@include radius($radius);
$custom-form-input-padding: (($custom-form-input-size - $mark-size) / 2) - $custom-form-border-size;
@if $custom-form-input-padding >= 0 {
padding: $custom-form-input-padding;
} @else {
padding: 0;
}
}
// Only include these classes if the variable is true, otherwise they'll be left out.
@if $include-html-custom-form-classes != false {
/* Custom Checkbox and Radio Inputs */
form.custom {
.hidden-field {
margin-#{$default-float}: -99999px;
position: absolute;
visibility: hidden;
}
.custom {
display: inline-block;
width: $custom-form-input-size;
height: $custom-form-input-size;
position: relative;
top:-1px; /* fix centering issue */
vertical-align: middle;
border: solid $custom-form-border-size $custom-form-border-color;
background: $custom-form-bg;
&.checkbox {
@include custom-form-input($radius:$custom-form-checkbox-radius, $mark-size:$custom-form-check-size);
}
&.radio {
@include custom-form-input($radius:1000px, $mark-size:$custom-form-radio-size);
}
&.checkbox {
&:before {
content: "";
display: block;
font-size: $custom-form-check-size;
color: $custom-form-bg;
}
}
&.radio.checked {
&:before {
content: "";
display: block;
width: $custom-form-radio-size;
height: $custom-form-radio-size;
@include radius(1000px);
background: $custom-form-check-color;
position: relative;
}
}
&.checkbox.checked {
&:before {
content: "\00d7";
color: $custom-form-check-color;
position: absolute;
top: -50%;
left: 50%;
margin-top: 4px;
margin-left: -5px;
}
}
}
}
/* Custom Select Options and Dropdowns */
form.custom {
.custom.dropdown {
display: block;
position: relative;
top: 0;
height: $custom-select-height;
margin-bottom: $custom-select-margin-bottom;
margin-top: 0;
padding: 0;
width: 100%;
background: $custom-dropdown-bg;
@if $experimental {
background: -moz-linear-gradient(top, $custom-dropdown-bg 0%, $custom-select-fade-to-color 100%);
background: -webkit-linear-gradient(top, $custom-dropdown-bg 0%,$custom-select-fade-to-color 100%);
-webkit-box-shadow: none;
}
background: linear-gradient(to bottom, $custom-dropdown-bg 0%,$custom-select-fade-to-color 100%);
box-shadow: none;
font-size: $custom-dropdown-font-size;
vertical-align: top;
ul {
overflow-y: auto;
max-height: $custom-dropdown-height;
}
.current {
cursor:default;
white-space: nowrap;
line-height: $custom-select-height - em-calc(1);
color: $input-font-color;
text-decoration: none;
overflow: hidden;
display: block;
margin-#{$default-float}: $form-spacing / 2;
margin-#{$opposite-direction}: $custom-select-height;
}
.selector {
cursor:default;
position: absolute;
width: $form-spacing * 2.5;
height: $custom-select-height;
display: block;
#{$opposite-direction}: 0;
top: 0;
&:after {
content: "";
display: block;
@include css-triangle(5px, $custom-select-triangle-color, top);
position: absolute;
#{$default-float}: ($form-spacing * 2.5) / 2 - em-calc(5);
top: 50%;
margin-top: -3px;
}
}
&:hover, &.open {
a.selector {
&:after { @include css-triangle(5px, $custom-select-triangle-color-open, top); }
}
}
.disabled {
color: $custom-select-disabled-color;
&:hover {
background: transparent;
color: $custom-select-disabled-color;
&:after { display: none; }
}
}
&.open ul {
display: block;
z-index: 10;
min-width:100%;
@include box-sizing(content-box);
}
&.small { max-width: $custom-dropdown-width-small; }
&.medium { max-width: $custom-dropdown-width-medium; }
&.large { max-width: $custom-dropdown-width-large; }
&.expand { width: 100% !important; }
&.open.small ul { min-width: $custom-dropdown-width-small; @include box-sizing(border-box); }
&.open.medium ul { min-width: $custom-dropdown-width-medium; @include box-sizing(border-box); }
&.open.large ul { min-width: $custom-dropdown-width-large; @include box-sizing(border-box); }
}
.error .custom.dropdown {
@include form-error-color;
background: rgba($alert-color, 0.1);
margin-bottom: 0;
}
.error .custom.dropdown + small.error {
margin-top: 0;
}
.custom.dropdown ul {
position: absolute;
width: auto;
display: none;
margin: 0;
#{$default-float}: -$input-border-width;
top: $custom-dropdown-offset-top;
@if $experimental {
-webkit-box-shadow: $custom-dropdown-shadow;
}
box-shadow: $custom-dropdown-shadow;
margin: 0;
padding: 0;
background: $custom-dropdown-bg;
border: $custom-dropdown-border-style $custom-dropdown-border-width $custom-dropdown-border-color;
font-size: $em-base;
li {
color: $custom-dropdown-font-color;
font-size: $custom-dropdown-font-size;
cursor: $cursor-default-value;
padding-top: $custom-dropdown-list-padding;
padding-bottom: $custom-dropdown-list-padding;
padding-#{$default-float}: $custom-dropdown-default-float-padding;
padding-#{$opposite-direction}: $custom-dropdown-opposite-padding;
min-height: $custom-dropdown-list-item-min-height;
line-height: $custom-dropdown-list-item-min-height;
margin: 0;
white-space: nowrap;
list-style: none;
&.selected {
background: $custom-dropdown-color-selected;
color: $custom-dropdown-font-color-selected;
}
&:hover {
background-color: darken($custom-dropdown-color-selected, 4%);
color: $custom-dropdown-font-color-selected;
}
&.selected:hover {
background: $custom-dropdown-color-selected;
cursor: $cursor-default-value;
color: $custom-dropdown-font-color-selected;
}
}
&.show { display: block; }
}
/* Custom input, disabled */
.custom.disabled { background: $custom-form-bg-disabled; }
}
}