choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
177 lines (146 loc) • 4.19 kB
text/less
@import '../../../../lib/style/themes/default';
@import '../../../../lib/style/mixins/index';
@import 'mixin';
@pro-radio-prefix-cls: ~'@{c7n-pro-prefix}-radio';
@radio-duration: @animation-duration-slow;
.@{pro-radio-prefix-cls} {
.radio-btn;
&-wrapper,
&-wrapper.@{field-prefix-cls} {
display: inline-flex;
}
&-wrapper.@{field-prefix-cls} {
width: auto;
}
&-inner {
position: relative;
display: inline-block;
width: @radio-size;
height: @radio-size;
vertical-align: middle;
background-color: #fff;
border: @radio-border-width @border-style-base @radio-border-color;
border-radius: 50%;
transition: all @radio-duration;
&::before {
position: absolute;
// top: @radio-dot-distance;
// left: @radio-dot-distance;
width: @radio-dot-size;
height: @radio-dot-size;
inset: 0;
margin: auto;
background-color: @radio-dot-color;
border-radius: 50%;
transform: scale(0);
opacity: 0;
transition: all @radio-duration @ease-in-out-circ;
content: ' ';
}
& + span {
padding-right: 0.08rem;
padding-left: 0.08rem;
}
}
&&:checked + &-inner {
border-color: @radio-check-border-color;
border-width: @radio-check-border-width;
&::before {
background-color: @radio-check-dot-color;
transform: scale(1);
opacity: 1;
}
}
&&:hover:not(:checked) + &-inner,
&-wrapper:hover &&:not(:checked) + &-inner,
&&:focus:not(:checked) + &-inner {
border-color: @radio-uncheck-hover-border-color;
&::before {
background-color: @radio-uncheck-hover-border-color;
}
}
&-highlight &-inner {
border-color: @input-highlight-border-color;
}
&-highlight &&:checked + &-inner {
border-color: @input-highlight-border-color;
&::before {
background-color: @radio-highlight-check-dot-color;
}
}
&&:focus + &-inner {
box-shadow: 0 0 @outline-blur-size @outline-width @radio-shadow-color;
}
&&:disabled + &-inner {
color: @radio-disabled-color;
background-color: @radio-disabled-bg;
border-color: @radio-disabled-border-color ;
&::before {
background-color: @radio-disabled-color;
}
}
&&:disabled:checked + &-inner {
color: @radio-disabled-check-color;
background-color: @radio-disabled-check-bg;
border-color: @radio-disabled-check-border-color ;
&::before {
background-color: @radio-disabled-check-color;
}
}
&-label {
flex-basis: 0;
flex-grow: 1;
flex-shrink: 1;
overflow: hidden;
text-overflow: ellipsis;
}
&-button {
min-width: @radio-button-min-width;
padding: @radio-button-padding;
line-height: @radio-button-line-height;
text-align: center;
background-color: #fff;
.@{pro-radio-prefix-cls}-inner {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: auto;
height: auto;
background-color: transparent;
border-radius: @radio-button-radius;
&::before {
display: none;
}
& + span {
position: relative;
z-index: 1;
padding: 0;
}
}
.@{pro-radio-prefix-cls}:not(:disabled):checked + .@{pro-radio-prefix-cls}-inner {
z-index: 1;
background-color: @radio-button-check-bg;
& + span {
color: @radio-button-check-color;
}
}
&:not(.@{pro-radio-prefix-cls}-disabled):hover .@{pro-radio-prefix-cls}-inner + span {
color: @radio-dot-color;
}
}
&-wrapper&-button &:checked + &-inner {
border-width: @radio-button-check-border-width;
}
&-wrapper&-button &:disabled:checked + &-inner {
background-color: @radio-button-disabled-check-bg;
border-color: @radio-button-disabled-check-border-color ;
+ span {
color: @radio-button-disabled-check-color;
}
}
&-button + &-button {
margin-left: @btn-group-spacing;
}
}