react-toolbox/components/checkbox/theme.scss

122 lines
2.5 KiB
SCSS

@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
.field {
position: relative;
display: block;
height: $checkbox-size;
margin-bottom: $checkbox-field-margin-bottom;
white-space: nowrap;
vertical-align: middle;
.ripple {
background-color: $checkbox-color;
opacity: .3;
transition-duration: $checkbox-ripple-duration;
}
}
.text {
display: inline-block;
padding-left: $unit;
font-size: $checkbox-text-font-size;
line-height: $checkbox-size;
color: $checkbox-text-color;
white-space: nowrap;
vertical-align: top;
}
.input {
position: absolute;
width: 0;
height: 0;
overflow: hidden;
opacity: 0;
&:focus ~ .check {
&:before {
position: absolute;
top: 50%;
left: 50%;
width: $checkbox-focus-size;
height: $checkbox-focus-size;
margin-top: - $checkbox-focus-size / 2;
margin-left: - $checkbox-focus-size / 2;
pointer-events: none;
content: "";
background-color: $checkbox-focus-color;
border-radius: 50%;
}
&.checked:before {
background-color: $checkbox-focus-checked-color;
}
}
}
.check {
position: relative;
display: inline-block;
width: $checkbox-size;
height: $checkbox-size;
vertical-align: top;
cursor: pointer;
border-color: $checkbox-text-color;
border-style: solid;
border-width: 2px;
border-radius: 2px;
transition-timing-function: $animation-curve-default;
transition-duration: $checkbox-transition-duration;
transition-property: background-color;
&.checked {
background-color: $checkbox-color;
border-color: $checkbox-color;
&:after {
position: absolute;
top: -.1 * $unit;
left: .4 * $unit;
width: .7 * $unit;
height: 1.2 * $unit;
content: "";
border-color: $color-background;
border-style: solid;
border-top: 0;
border-right-width: 2px;
border-bottom-width: 2px;
border-left: 0;
transform: rotate(45deg);
animation: checkmark-expand 140ms ease-out forwards;
}
}
}
.disabled {
> .text {
color: $checkbox-disabled-color;
}
> .check {
cursor: auto;
border-color: $checkbox-disabled-color;
&.checked {
cursor: auto;
background-color: $checkbox-disabled-color;
border-color: transparent;
}
}
}
@keyframes checkmark-expand {
0% {
top: .9 * $unit;
left: .6 * $unit;
width: 0;
height: 0;
}
100% {
top: -.1 * $unit;
left: .4 * $unit;
width: .7 * $unit;
height: 1.2 * $unit;
}
}