128 lines
3.9 KiB
SCSS
128 lines
3.9 KiB
SCSS
// Name: Form advanced
|
|
// Description: Custom appearance of radio and checkbox buttons
|
|
//
|
|
// Component: `uk-form`
|
|
//
|
|
// ========================================================================
|
|
|
|
|
|
// Variables
|
|
// ========================================================================
|
|
|
|
$form-advanced-size: 14px !default;
|
|
$form-advanced-border: #aaa !default;
|
|
$form-advanced-border-width: 1px !default;
|
|
$form-advanced-margin-top: -4px !default;
|
|
$form-advanced-color: transparent !default;
|
|
|
|
$form-advanced-checked-color: #00a8e6 !default;
|
|
|
|
$form-advanced-radio-size: 8px !default;
|
|
|
|
$form-advanced-checkbox-icon: "\f00c" !default;
|
|
$form-advanced-checkbox-indeterminate-icon: "\f068" !default;
|
|
$form-advanced-checkbox-font-size: 12px !default;
|
|
|
|
$form-advanced-disabled-border: #ddd !default;
|
|
$form-advanced-disabled-color: #aaa !default;
|
|
|
|
|
|
/* ========================================================================
|
|
Component: Form advanced
|
|
Note: Only works in Webkit at the moment
|
|
========================================================================== */
|
|
|
|
/*
|
|
* 1. Style
|
|
* 2. Makes box more robust so it clips the child element
|
|
* 3. Vertical alignment
|
|
* 4. Remove default style
|
|
* 5. Fix black background on iOS
|
|
*/
|
|
|
|
|
|
.uk-form input[type="radio"],
|
|
.uk-form input[type="checkbox"] {
|
|
/* 1 */
|
|
display: inline-block;
|
|
height: $form-advanced-size;
|
|
width: $form-advanced-size;
|
|
border: $form-advanced-border-width solid $form-advanced-border;
|
|
/* 2 */
|
|
overflow: hidden;
|
|
/* 3 */
|
|
margin-top: $form-advanced-margin-top;
|
|
vertical-align: middle;
|
|
/* 4 */
|
|
-webkit-appearance: none;
|
|
outline: 0;
|
|
/* 5 */
|
|
background: $form-advanced-color;
|
|
@include hook-form-advanced();
|
|
}
|
|
|
|
/* Radio */
|
|
.uk-form input[type="radio"] { border-radius: 50%; }
|
|
|
|
/*
|
|
* Checked
|
|
*/
|
|
|
|
.uk-form input[type=radio]:before,
|
|
.uk-form input[type=checkbox]:before {
|
|
display: block;
|
|
@include hook-form-advanced-checked();
|
|
}
|
|
|
|
/* Radio */
|
|
.uk-form input[type=radio]:checked:before {
|
|
content: '';
|
|
width: $form-advanced-radio-size;
|
|
height: $form-advanced-radio-size;
|
|
margin: (($form-advanced-size - (2 * $form-advanced-border-width) - $form-advanced-radio-size) / 2) auto 0;
|
|
border-radius: 50%;
|
|
background: $form-advanced-checked-color;
|
|
@include hook-form-advanced-radio();
|
|
}
|
|
|
|
/* Checkbox */
|
|
.uk-form input[type=checkbox]:checked:before,
|
|
.uk-form input[type=checkbox]:indeterminate:before {
|
|
content: $form-advanced-checkbox-icon;
|
|
font-family: FontAwesome;
|
|
font-size: $form-advanced-checkbox-font-size;
|
|
-webkit-font-smoothing: antialiased;
|
|
text-align: center;
|
|
line-height: $form-advanced-size - (2 * $form-advanced-border-width);
|
|
color: $form-advanced-checked-color;
|
|
@include hook-form-advanced-checkbox();
|
|
}
|
|
|
|
.uk-form input[type=checkbox]:indeterminate:before { content: $form-advanced-checkbox-indeterminate-icon; }
|
|
|
|
/*
|
|
* Disabled
|
|
*/
|
|
|
|
.uk-form input[type=radio]:disabled,
|
|
.uk-form input[type=checkbox]:disabled {
|
|
border-color: $form-advanced-disabled-border;
|
|
@include hook-form-advanced-disabled();
|
|
}
|
|
|
|
.uk-form input[type=radio]:disabled:checked:before { background-color: $form-advanced-disabled-color; }
|
|
.uk-form input[type=checkbox]:disabled:checked:before,
|
|
.uk-form input[type=checkbox]:disabled:indeterminate:before { color: $form-advanced-disabled-color; }
|
|
|
|
|
|
// Hooks
|
|
// ========================================================================
|
|
|
|
@include hook-form-advanced-misc();
|
|
|
|
// @mixin hook-form-advanced(){}
|
|
// @mixin hook-form-advanced-checked(){}
|
|
// @mixin hook-form-advanced-radio(){}
|
|
// @mixin hook-form-advanced-checkbox(){}
|
|
// @mixin hook-form-advanced-disabled(){}
|
|
// @mixin hook-form-advanced-misc(){} |