diff --git a/src/app/atoms/button/Checkbox.jsx b/src/app/atoms/button/Checkbox.jsx index 5bac0c0..5079a40 100644 --- a/src/app/atoms/button/Checkbox.jsx +++ b/src/app/atoms/button/Checkbox.jsx @@ -2,7 +2,9 @@ import React from 'react'; import PropTypes from 'prop-types'; import './Checkbox.scss'; -function Checkbox({ variant, isActive, onToggle }) { +function Checkbox({ + variant, isActive, onToggle, disabled, +}) { const className = `checkbox checkbox-${variant}${isActive ? ' checkbox--active' : ''}`; if (onToggle === null) return ; return ( @@ -11,6 +13,7 @@ function Checkbox({ variant, isActive, onToggle }) { onClick={() => onToggle(!isActive)} className={className} type="button" + disabled={disabled} /> ); } @@ -19,12 +22,14 @@ Checkbox.defaultProps = { variant: 'primary', isActive: false, onToggle: null, + disabled: false, }; Checkbox.propTypes = { variant: PropTypes.oneOf(['primary', 'positive', 'caution', 'danger']), isActive: PropTypes.bool, onToggle: PropTypes.func, + disabled: PropTypes.bool, }; export default Checkbox; diff --git a/src/app/atoms/button/Checkbox.scss b/src/app/atoms/button/Checkbox.scss index 5b26b9d..a54daa6 100644 --- a/src/app/atoms/button/Checkbox.scss +++ b/src/app/atoms/button/Checkbox.scss @@ -1,4 +1,5 @@ @use '../../partials/flex'; +@use './state'; .checkbox { width: 20px; @@ -8,6 +9,7 @@ background-color: var(--bg-surface-border); box-shadow: var(--bs-surface-border); cursor: pointer; + @include state.disabled; @extend .cp-fx__row--c-c; &--active { diff --git a/src/app/atoms/button/RadioButton.jsx b/src/app/atoms/button/RadioButton.jsx index c14a334..35b68ba 100644 --- a/src/app/atoms/button/RadioButton.jsx +++ b/src/app/atoms/button/RadioButton.jsx @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import './RadioButton.scss'; -function RadioButton({ isActive, onToggle }) { +function RadioButton({ isActive, onToggle, disabled }) { if (onToggle === null) return ; return ( // eslint-disable-next-line jsx-a11y/control-has-associated-label @@ -10,6 +10,7 @@ function RadioButton({ isActive, onToggle }) { onClick={() => onToggle(!isActive)} className={`radio-btn${isActive ? ' radio-btn--active' : ''}`} type="button" + disabled={disabled} /> ); } @@ -17,11 +18,13 @@ function RadioButton({ isActive, onToggle }) { RadioButton.defaultProps = { isActive: false, onToggle: null, + disabled: false, }; RadioButton.propTypes = { isActive: PropTypes.bool, onToggle: PropTypes.func, + disabled: PropTypes.bool, }; export default RadioButton; diff --git a/src/app/atoms/button/RadioButton.scss b/src/app/atoms/button/RadioButton.scss index f76eefb..1928491 100644 --- a/src/app/atoms/button/RadioButton.scss +++ b/src/app/atoms/button/RadioButton.scss @@ -1,4 +1,5 @@ @use '../../partials/flex'; +@use './state'; .radio-btn { @extend .cp-fx__row--c-c; @@ -8,6 +9,7 @@ background-color: var(--bg-surface-border); border: 2px solid var(--bg-surface-border); cursor: pointer; + @include state.disabled; &::before { content: ''; diff --git a/src/app/atoms/button/Toggle.jsx b/src/app/atoms/button/Toggle.jsx index 5d83c49..b599791 100644 --- a/src/app/atoms/button/Toggle.jsx +++ b/src/app/atoms/button/Toggle.jsx @@ -2,24 +2,30 @@ import React from 'react'; import PropTypes from 'prop-types'; import './Toggle.scss'; -function Toggle({ isActive, onToggle }) { +function Toggle({ isActive, onToggle, disabled }) { + const className = `toggle${isActive ? ' toggle--active' : ''}`; + if (onToggle === null) return ; return ( // eslint-disable-next-line jsx-a11y/control-has-associated-label