fix:checkbox禁用状态对齐云舍 (#4482)

* perf:添加选项必填

* fix:checkbox禁用状态对齐云舍

Co-authored-by: liuguihua <liuguihua@baidu.com>
This commit is contained in:
lghxuelang 2022-06-01 12:36:43 +08:00 committed by GitHub
parent 2ec843d913
commit d101b4904e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 47 additions and 27 deletions

View File

@ -41,7 +41,8 @@ order: 8
{ {
"name": "checkbox", "name": "checkbox",
"type": "checkbox", "type": "checkbox",
"label": "勾选框" "label": "勾选框",
"option": "选项说明"
} }
] ]
} }
@ -58,6 +59,7 @@ order: 8
"name": "checkbox", "name": "checkbox",
"type": "checkbox", "type": "checkbox",
"label": "勾选框", "label": "勾选框",
"option": "选项说明",
"trueValue": 1, "trueValue": 1,
"falseValue": 0 "falseValue": 0
} }
@ -81,8 +83,7 @@ order: 8
"trueValue": true, "trueValue": true,
"falseValue": false, "falseValue": false,
"optionType": "button", "optionType": "button",
"option": "选项说明", "option": "选项说明"
"value": true
} }
] ]
} }

View File

@ -494,10 +494,12 @@
--Checkbox-size: #{px2rem(16px)}; --Checkbox-size: #{px2rem(16px)};
--Checkbox-inner-size: calc(var(--Checkbox-size) / 2); --Checkbox-inner-size: calc(var(--Checkbox-size) / 2);
--Checkbox-onHover-color: var(--info); --Checkbox-onHover-color: var(--info);
--Checkbox-onDisabled-bg: #e5e7eb; --Checkbox-onDisabled-bg: #f7f7f9;
--Checkbox-onDisabled-color: var(--text--muted-color); --Checkbox-onDisabled-color: #b8babf;
--Checkbox-inner-onDisabled-bg: #d4d6d9; --Checkbox-inner-onDisabled-bg: #d4d6d9;
--Checkbox-disabled-unchecked-bg: #f2f3f3; --Checkbox-inner-onDisabled-color: #ffffff;
--Checkbox-disabled-unchecked-bg: #f7f7f9;
--Checkbox-inner-disabled-checked-bg: #e8e9eb;
--Checkbox-border-width: var(--Form-input-borderWidth); --Checkbox-border-width: var(--Form-input-borderWidth);
--Checkbox-paddingX: #{px2rem(12px)}; --Checkbox-paddingX: #{px2rem(12px)};
--Checkbox-button-height: #{px2rem(32px)}; --Checkbox-button-height: #{px2rem(32px)};

View File

@ -164,24 +164,20 @@
} }
&[disabled] + i { &[disabled] + i {
border-color: var(--Checkbox-onDisabled-color); border-color: var(--Checkbox-color);
background: var(--FileControl-onDisabled-bg); background: var(--Checkbox-onDisabled-bg);
} }
&[disabled]:checked + i { &[disabled]:checked + i {
&:before { &:before {
border-color: var(--Checkbox-onDisabled-color); border-color: var(--Checkbox-onDisabled-color);
background: var(--Checkbox-onDisabled-bg);
} }
} }
&:checked[disabled] + i { &:checked[disabled] + i {
border-color: var(--Checkbox-onDisabled-color); border-color: var(--Checkbox-color);
background: var(--FileControl-onDisabled-bg); background: var(--Checkbox-onDisabled-bg);
&:before {
background: var(--FileControl-onDisabled-bg);
border-color: var(--Checkbox-inner-onDisabled-bg);
}
} }
} }
@ -256,6 +252,7 @@
&:hover:not(:disabled) { &:hover:not(:disabled) {
color: var(--Checkbox-onHover-color); color: var(--Checkbox-onHover-color);
border-color: var(--Checkbox-onHover-color);
} }
&:hover { &:hover {
@ -292,7 +289,7 @@
left: 0; left: 0;
width: var(--Checkbox--full-inner-size); width: var(--Checkbox--full-inner-size);
height: calc(var(--Checkbox--full-inner-size) / 2); height: calc(var(--Checkbox--full-inner-size) / 2);
transform: translate(-80%, -160%) rotate(-50deg); transform: translate(-80%, -160%) rotate(-50deg) scale(0.8);
background: transparent; background: transparent;
} }
} }
@ -307,9 +304,13 @@
&:checked[disabled] + i { &:checked[disabled] + i {
background: transparent; background: transparent;
border-width: px2rem(8px); border-width: px2rem(7px);
border-color: var(--Checkbox-onHover-color) transparent transparent border-color: var(--Checkbox-inner-disabled-checked-bg) transparent
var(--Checkbox-onHover-color); transparent var(--Checkbox-inner-disabled-checked-bg);
&:before {
background: transparent;
border-color: var(--Checkbox-inner-onDisabled-color) !important;
}
} }
} }
> i { > i {
@ -342,9 +343,18 @@
color: var(--Switch-checked-onHover-bgColor); color: var(--Switch-checked-onHover-bgColor);
} }
} }
&--button--disabled--unchecked.#{$ns}Checkbox--checkbox.#{$ns}Checkbox--full { &--button--disabled--unchecked.#{$ns}Checkbox--checkbox {
i { background: var(--Checkbox-disabled-unchecked-bg);
background: var(--FileControl-onDisabled-bg); border-color: var(--Checkbox-color);
&:hover {
border-color: var(--Checkbox-color) !important;
}
}
&--button--disabled--checked.#{$ns}Checkbox--checkbox {
background: var(--Checkbox-onDisabled-bg);
border-color: var(--Checkbox-color) !important;
&:hover {
border-color: var(--Checkbox-color) !important;
} }
} }
&--radio { &--radio {

View File

@ -217,8 +217,8 @@ $L1: 0px 4px 6px 0px rgba(8, 14, 26, 0.06),
--Number-handler--up-transform: rotate(180deg); --Number-handler--up-transform: rotate(180deg);
--Number-handler--down-content: '\e6dd'; --Number-handler--down-content: '\e6dd';
--Checkbox-onDisabled-color: #ebebeb; --Checkbox-onDisabled-bg: #F7F7F9;
--Checkbox-onDisabled-bg: #cccccc; --Checkbox-onDisabled-color: #B8BABF;
--Checkbox-inner-size: #{px2rem(8px)}; --Checkbox-inner-size: #{px2rem(8px)};
--Checkbox--full-inner-size: #{px2rem(8px)}; --Checkbox--full-inner-size: #{px2rem(8px)};

View File

@ -74,7 +74,12 @@ export class Checkbox extends React.Component<CheckboxProps, any> {
labelClassName, labelClassName,
optionType optionType
} = this.props; } = this.props;
const _checked = typeof checked !== 'undefined'
? checked
: typeof value === 'undefined'
? value
: value == trueValue;
return ( return (
<label <label
className={cx(`Checkbox Checkbox--${type}`, className, { className={cx(`Checkbox Checkbox--${type}`, className, {
@ -82,9 +87,11 @@ export class Checkbox extends React.Component<CheckboxProps, any> {
// 'Checkbox--partial': partial // 'Checkbox--partial': partial
[`Checkbox--${size}`]: size, [`Checkbox--${size}`]: size,
'Checkbox--button': optionType === 'button', 'Checkbox--button': optionType === 'button',
'Checkbox--button--checked': optionType === 'button' && checked, 'Checkbox--button--checked': optionType === 'button' && _checked,
'Checkbox--button--disabled--unchecked': 'Checkbox--button--disabled--unchecked':
optionType === 'button' && disabled && !checked optionType === 'button' && disabled && !_checked,
'Checkbox--button--disabled--checked':
optionType === 'button' && disabled && _checked
})} })}
> >
<input <input