import React, { useState, useEffect } from 'react'; import classNames from 'classnames'; import { BaseProps } from '../_utils/props'; export interface CheckboxProps extends BaseProps { /** Only required when use checkbox group */ value?: string; defaultChecked?: boolean; checked?: boolean; indeterminate?: boolean; disabled?: boolean; onChange?: (checked: boolean, event: React.FormEvent) => void; children?: React.ReactNode; } const Checkbox: React.FC & { Group?: any } = (props: CheckboxProps) => { const { prefixCls = 'ty-checkbox', defaultChecked = false, indeterminate = false, value, disabled, onChange, className, style, children, } = props; const [checked, setChecked] = useState('checked' in props ? props.checked : defaultChecked); const cls = classNames(prefixCls, className, { [`${prefixCls}_indeterminate`]: indeterminate && !checked, [`${prefixCls}_checked`]: checked && !indeterminate, [`${prefixCls}_disabled`]: disabled, }); const _onChange = (e: React.FormEvent) => { if (!disabled) { !('checked' in props) && setChecked(e.currentTarget.checked); onChange && onChange(e.currentTarget.checked, e); } }; useEffect(() => { 'checked' in props && setChecked(props.checked); }, [props.checked]); return ( ); }; export default Checkbox;