amis2/scss/components/form/_checks.scss
liaoxuezhi 019dac8040
feat: Select 支持更多的展示模式比如:表格、分组、分栏级联、树形、关联查询 (#2968)
* 调整代码

* feat: Select 支持更多的模式

* 删除无用文件

* saveAs 改成 import file-saver

* 添加选中高亮

* 暴露各种 selection

* 修复 ts 报错
2021-11-17 15:11:12 +08:00

286 lines
6.3 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;
> 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;
}
}