choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
130 lines (119 loc) • 3.47 kB
text/less
@import '../../../../es/style/themes/default';
@import '../../../../es/style/mixins/index';
@import '../../radio/style/mixin';
@pro-checkbox-prefix-cls: ~'@{c7n-pro-prefix}-checkbox';
.@{pro-checkbox-prefix-cls} {
.radio-btn;
&-inner {
position: relative;
display: inline-block;
width: @checkbox-size;
height: @checkbox-size;
font-size: @font-size-base ;
vertical-align: middle;
background-color: #fff;
border: @checkbox-border-width @border-style-base @checkbox-border-color;
border-radius: @border-radius-sm;
border-collapse: separate;
transition: border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),
background-color 90ms cubic-bezier(0, 0, 0.2, 0.1);
&::after {
@check-width: (@checkbox-size / 14) * 5;
@check-height: (@checkbox-size / 14) * 10;
position: absolute;
top: (@checkbox-size - @check-height) / 2 - 3 * (@checkbox-size / 14);
left: (@checkbox-size - @check-width) / 2 - 1.5 * (@checkbox-size / 14);
display: table;
width: @check-width;
height: @check-height;
border: 0.02rem solid #fff;
border-top: 0;
border-left: 0;
transform: rotate(45deg) scale(0);
transition: all 0.1s @ease-in-back;
content: ' ';
}
& + span {
padding-right: 0.08rem;
padding-left: 0.08rem;
vertical-align: middle;
}
}
&:hover + &-inner,
&-wrapper:hover &-inner {
border-color: @primary-7;
}
&:focus + &-inner {
border-color: @primary-7;
box-shadow: 0 0 @outline-blur-size @outline-width fade(@outline-color, 20%);
}
&:checked + &-inner,
&-indeterminate &-inner {
background-color: @primary-color ;
border-color: @primary-color;
&::after {
transform: rotate(45deg) scale(1);
opacity: 1;
}
}
&:hover &:checked + &-inner,
&-indeterminate:hover &-inner,
&:focus:checked + &-inner {
background-color: @primary-7;
border-color: @primary-7;
}
&-indeterminate &-inner::after {
@indeterminate-width: (@checkbox-size / 14) * 8;
@indeterminate-height: (@checkbox-size / 14) * 1;
position: absolute;
top: (@checkbox-size - 0.05rem - @indeterminate-height) / 2;
left: (@checkbox-size - @indeterminate-width - @checkbox-border-width * 2) / 2;
width: @indeterminate-width;
height: @indeterminate-height;
transform: scale(1) ;
content: ' ';
}
&:disabled + &-inner {
color: @disabled-color;
background-color: @input-disabled-bg ;
border-color: @disabled-color ;
&::after {
border-color: @disabled-color ;
}
}
&-button {
padding: 0 0.15rem;
line-height: 0.3rem;
.@{pro-checkbox-prefix-cls}-inner {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: auto;
height: auto;
border-radius: @border-radius-base;
&::after {
display: none;
}
& + span {
position: relative;
z-index: 1;
padding: 0;
}
}
.@{pro-checkbox-prefix-cls}:checked + .@{pro-checkbox-prefix-cls}-inner + span {
color: #fff;
}
&:hover .@{pro-checkbox-prefix-cls}-inner + span {
color: @primary-color;
}
}
&-button + &-button {
margin-left: 0.1rem;
}
&-float-label .@{field-label-prefix-cls}-wrapper {
left: 0;
transform-origin: @float-label-transform-origin-high;
}
}