:root {
--checkbox-size: 22px;
--checkbox-border: 1px solid #c7c7cd;
--checkbox-checked-background-color: var(--highlight-color); /* background color active */
--background-color--before--checkbox: var(--checkbox-checked-background-color);
--checkmark-border: 2px solid #fff;
--material-checkbox-size: 18px;
--material-checkbox-focus-ring-size: 40px;
--material-checkbox-focus-ring-shadow-size: calc((var(--material-checkbox-focus-ring-size) - var(--material-checkbox-size)) / 2);
--checkbox: {
@apply(--reset-box-model);
position: relative;
display: inline-block;
vertical-align: top;
@apply(--reset-cursor);
@apply(--reset-font);
@apply(--hide-input-parent);
}
--checkbox__label: {
position: relative;
display: inline-block;
vertical-align: top;
@apply(--reset-cursor);
@apply(--reset-font);
}
--checkbox--disabled: {
@apply(--disabled);
}
--checkbox--before: {
content: '';
position: absolute;
}
--checkbox--after: {
@apply(--checkbox--before);
}
}
/*~
name: Checkbox
category: Checkbox
elements: ons-input
markup: |
*/
.checkbox {
@apply(--checkbox__label);
line-height: var(--checkbox-size);
}
.checkbox__checkmark {
@apply(--checkbox);
height: var(--checkbox-size);
width: var(--checkbox-size);
pointer-events: none;
}
.checkbox__input,
.checkbox__input:checked {
@apply(--hide-input);
}
.checkbox__checkmark:before {
@apply(--checkbox--before);
@apply(--reset-box-model);
width: var(--checkbox-size);
height: var(--checkbox-size);
background: transparent;
border: var(--checkbox-border);
border-radius: var(--checkbox-size);
left: 0;
}
/* checkmark's line */
.checkbox__checkmark:after {
@apply(--checkbox--after);
top: 7px;
left: 5px;
width: 11px;
height: 5px;
background: transparent;
border: var(--checkmark-border);
border-width: 1px;
border-top: none;
border-right: none;
border-radius: 0;
transform: rotate(-45deg);
opacity: 0;
}
:checked + .checkbox__checkmark:before {
background: var(--background-color--before--checkbox);
border: none;
}
:checked + .checkbox__checkmark:after {
opacity: 1;
}
:disabled + .checkbox__checkmark {
@apply(--checkbox--disabled);
}
:disabled:active + .checkbox__checkmark:before { /* FIXME */
background: transparent;
}
/*~
name: No border Checkbox
category: Checkbox
elements: ons-input
markup: |
*/
.checkbox--noborder {
@apply(--checkbox__label);
line-height: var(--checkbox-size);
@apply(--hide-input-parent);
}
.checkbox--noborder__input {
@apply(--hide-input);
}
.checkbox--noborder__checkmark {
position: relative;
display: inline-block;
vertical-align: top;
@apply(--reset-cursor);
@apply(--reset-box-model);
width: var(--checkbox-size);
height: var(--checkbox-size);
background: transparent;
border: none;
}
.checkbox--noborder__checkmark:before {
content: '';
position: absolute;
width: var(--checkbox-size);
height: var(--checkbox-size);
background: transparent;
border: none;
border-radius: var(--checkbox-size);
left: 0;
}
/* checkmark's line */
.checkbox--noborder__checkmark:after {
@apply(--checkmark);
}
:checked + .checkbox--noborder__checkmark:before {
background: transparent;
border: none;
}
:checked + .checkbox--noborder__checkmark:after {
opacity: 1;
}
:focus + .checkbox--noborder__checkmark:before {
border: none;
}
:disabled + .checkbox--noborder__checkmark {
@apply(--disabled);
}
:disabled:active + .checkbox--noborder__checkmark:before {
background: transparent;
border: none;
}
/*~
name: Material Checkbox
category: Checkbox
elements: ons-input
markup: |
*/
.checkbox--material {
line-height: var(--material-checkbox-size);
@apply(--material-font);
overflow: visible;
}
.checkbox--material__checkmark {
width: var(--material-checkbox-size);
height: var(--material-checkbox-size);
}
.checkbox--material__checkmark:before {
border-radius: 2px;
height: var(--material-checkbox-size);
width: var(--material-checkbox-size);
border: 2px solid var(--material-checkbox-inactive-color);
transition: background-color 0.1s linear 0.2s, border-color 0.1s linear 0.2s;
background-color: transparent;
}
:checked + .checkbox--material__checkmark:before {
border: 2px solid var(--material-checkbox-active-color);
background-color: var(--material-checkbox-active-color);
transition: background-color 0.1s linear, border-color 0.1s linear;
}
.checkbox--material__checkmark:after {
border-color: var(--material-checkbox-checkmark-color);
transition: transform 0.2s ease 0;
width: 10px;
height: 5px;
top: 4px;
left: 3px;
transform: scale(0) rotate(-45deg);
border-width: 2px;
}
:checked + .checkbox--material__checkmark:after {
transition: transform 0.2s ease 0.2s;
width: 10px;
height: 5px;
top: 4px;
left: 3px;
transform: scale(1) rotate(-45deg);
border-width: 2px;
}
/* active ring effect */
.checkbox--material__input:before {
content: '';
opacity: 0;
position: absolute;
top: 0;
left: 0;
width: var(--material-checkbox-size);
height: var(--material-checkbox-size);
box-shadow: 0 0 0 var(--material-checkbox-focus-ring-shadow-size) var(--material-checkbox-inactive-color);
box-sizing: border-box;
border-radius: 50%;
background-color: var(--material-checkbox-inactive-color);
pointer-events: none;
display: block;
transform: scale3d(0.2, 0.2, 0.2);
transition: opacity 0.25s ease-out, transform 0.1s ease-out;
}
.checkbox--material__input:checked:before {
box-shadow: 0 0 0 var(--material-checkbox-focus-ring-shadow-size) var(--material-checkbox-active-color);
background-color: var(--material-checkbox-active-color);
}
.checkbox--material__input:active:before {
opacity: .15;
transform: scale3d(1, 1, 1);
}
:disabled + .checkbox--material__checkmark {
opacity: 1;
}
:disabled + .checkbox--material__checkmark:before {
border-color: #afafaf;
}
:disabled:checked + .checkbox--material__checkmark:before {
background-color: #afafaf;
}
:disabled:checked + .checkbox--material__checkmark:after {
border-color: #ffffff;
}