amis2/scss/components/form/_checks.scss
青辉 d6771c6fb8
feat: Radios 功能补齐 (#3475)
* feat: Radios 组件功能丰富

* bugfix: radios 缺失属性补充

Co-authored-by: jiangchunhui <jiangchunhui@baidu.com>
2022-02-17 11:00:45 +08:00

295 lines
6.5 KiB
SCSS

.#{$ns}Checkbox {
margin: 0 var(--gap-sm) 0 0;
font-weight: var(--fontWeightNormal);
user-select: none;
pointer-events: none;
input {
position: absolute;
clip: rect(1px 1px 1px 1px);
clip: rect(1px, 1px, 1px, 1px);
pointer-events: none;
}
&:hover input:not(:disabled) + i {
border-color: var(--Checkbox-onHover-color);
// box-shadow: 0 0 px2rem(1px) var(--Checkbox-onHover-color) inset;
}
> i {
cursor: pointer;
line-height: 1;
background: var(--Checkbox-gb);
display: inline-block;
vertical-align: middle;
position: relative;
pointer-events: all;
+ span {
pointer-events: all;
margin-left: var(--Checkbox-gap);
cursor: pointer;
display: inline-block;
vertical-align: middle;
> a {
// float: right;
margin-left: var(--gap-xs);
display: none;
}
&:empty {
display: none;
}
}
&:before {
content: '';
position: absolute;
left: 50%;
top: 50%;
width: 0px;
height: 0px;
background: transparent;
transition: all var(--animation-duration);
transform-origin: 50% 50%;
transform: translate(-50%, -50%);
}
}
&:hover > i + span > a {
display: inline-block;
}
&--checkbox {
padding-left: var(--Checkbox-size);
input {
margin-left: calc(var(--Checkbox-size) * -1);
&:checked + i {
border-color: var(--Checkbox-onHover-color);
&:before {
width: var(--Checkbox-inner-size);
height: var(--Checkbox-inner-size);
background: var(--Checkbox-onHover-color);
}
}
&[disabled] + i {
border-color: var(--Checkbox-onDisabled-color);
cursor: not-allowed;
&:before {
width: var(--Checkbox-inner-size);
height: calc(var(--Checkbox-inner-size) / 2);
background: var(--Checkbox-onDisabled-bg);
}
}
&[disabled] + i + span {
cursor: not-allowed;
color: var(--text--muted-color);
}
}
> i {
width: var(--Checkbox-size);
height: var(--Checkbox-size);
border: px2rem(1px) solid var(--Checkbox-color);
border-radius: var(--Checkbox-borderRadius);
margin-left: calc(var(--Checkbox-size) * -1);
}
}
&--full.#{$ns}Checkbox--checkbox {
&:not(:disabled) + i:hover {
border-color: var(--Checkbox-color);
}
input {
&:checked + i {
border-color: var(--Checkbox-onHover-color);
background: var(--Checkbox-onHover-color);
&:before {
width: var(--Checkbox--full-inner-size);
height: calc(var(--Checkbox--full-inner-size) / 2);
border-color: var(--Checkbox-gb);
}
}
&[disabled] + i {
border-color: var(--Checkbox-onDisabled-color);
background: var(--Checkbox-onDisabled-bg);
}
&[disabled]:checked + i {
&:before {
border-color: var(--Checkbox-onDisabled-color);
}
}
&:checked[disabled] + i {
border-color: var(--Checkbox-onDisabled-color);
background: var(--Checkbox-onDisabled-bg);
}
}
> i {
position: relative;
cursor: pointer;
&:before {
content: '';
position: absolute;
left: 50%;
top: 50%;
width: 0;
height: 0;
border-color: transparent;
transition: width var(--animation-duration),
height var(--animation-duration), transform var(--animation-duration);
border-width: 0 0 px2rem(2px) px2rem(2px);
transform: translate(-50%, -60%) rotate(-40deg);
border-style: solid;
}
}
}
&--radio {
padding-left: var(--Radio-size);
input {
margin-left: calc(var(--Radio-size) * -1);
&:checked + i {
border-color: var(--Radio-onHover-color);
&:before {
width: var(--Radio-inner-size);
height: var(--Radio-inner-size);
background: var(--Radio-onHover-color);
border-radius: 50%;
}
}
&[disabled] + i {
border-color: var(--Radio-onDisabled-color);
background: var(--Radio-onDisabled-bg);
cursor: not-allowed;
&:before {
background: var(--Radio-onDisabled-color);
}
}
&[disabled] + i + span {
cursor: not-allowed;
color: var(--text--muted-color);
}
&:focus + i {
box-shadow: var(--Radio-onFocus-boxShadow);
}
}
> i {
cursor: pointer;
width: var(--Radio-size);
height: var(--Radio-size);
border: px2rem(1px) solid var(--Radio-color);
margin-left: calc(var(--Radio-size) * -1);
margin-top: px2rem(-2px);
border-radius: 50%;
}
}
&--sm {
padding-left: var(--Checkbox--sm-size);
input {
margin-left: calc(var(--Checkbox--sm-size) * -1);
&:checked + i {
&:before {
width: var(--Checkbox--sm-inner-size);
height: var(--Checkbox--sm-inner-size);
}
}
}
> i {
width: var(--Checkbox--sm-size);
height: var(--Checkbox--sm-size);
margin-left: calc(var(--Checkbox--sm-size) * -1);
margin-top: 0;
+ span {
margin-left: var(--gap-xs);
}
}
}
&--sm.#{$ns}Checkbox--full {
input[type='checkbox'] {
&:checked + i {
&:before {
width: var(--Checkbox--sm--full-inner-size);
height: calc(var(--Checkbox--sm--full-inner-size) / 2);
}
}
}
}
&-desc {
color: var(--text--muted-color);
margin-left: var(--Checkbox-gap);
margin-top: var(--gap-xs);
pointer-events: all;
}
}
.#{$ns}CheckboxControl,
.#{$ns}RadiosControl,
.#{$ns}CheckboxesControl {
padding-top: calc(
(var(--Form-input-height) - var(--Checkbox-size)) / 2 - 3px
); // 3px 是空白的高度
}
.#{$ns}RadiosControl,
.#{$ns}CheckboxesControl {
.#{$ns}Checkbox {
display: block;
margin-bottom: var(--Form-label-paddingTop);
}
&.is-inline .#{$ns}Checkbox {
display: inline-block;
margin-right: var(--gap-md);
}
}
.#{$ns}RadiosControl-group,
.#{$ns}CheckboxesControl-group {
&:not(:first-child) {
margin-top: px2rem(10px);
}
.#{$ns}RadiosControl-groupLabel,
.#{$ns}CheckboxesControl-groupLabel {
display: block;
font-size: var(--fontSizeSm);
color: #999;
}
}
.#{$ns}RadiosControl {
.#{$ns}Button:active,
.#{$ns}Button.is-active {
background: var(--ButtonGroup--primary-isActive-bg);
}
}