import React, { useEffect, useState } from 'react'; import { CheckboxProps } from '.'; import { Icon } from '../Icon'; import { iconTypes } from '../Icon/collection'; import styles from './Checkbox.styles'; const { StyledInput, StyledLabel } = styles; const Checkbox: React.FC = ({ checked, disabled = false, id, ref, label, labelWhenChecked, layout = 'box', name, onChange, onBlur, validation, ...props }) => { const [isChecked, setIsChecked] = useState(false); const valueChanged = (event: React.ChangeEvent) => { setIsChecked(Boolean(event.target.checked)); if (disabled) return; onChange(event); }; useEffect( () => setIsChecked( typeof checked != 'undefined' ? Boolean(checked) : isChecked, ), [checked], ); useEffect(() => { setIsChecked( typeof checked != 'undefined' ? Boolean(checked) : isChecked, ); }, [isChecked]); return ( {layout === 'box' && ( )} ) => onBlur && onBlur(event) } required={validation?.required} type="checkbox" value={`${isChecked}`} {...props} /> {isChecked ? labelWhenChecked || label : label} ); }; export default Checkbox;