import React, { ChangeEvent, useContext, HTMLAttributes } from 'react'
import classNames from 'classnames'
import { CheckboxGroupContext } from './util'
interface CheckboxProps extends Omit, 'onChange'> {
value?: V
checked?: boolean
onChange?: (event: ChangeEvent) => void
disabled?: boolean
indeterminate?: boolean
name?: string
}
function Checkbox({
value,
checked,
onChange,
children,
name,
disabled,
indeterminate,
className,
style,
...rest
}: CheckboxProps) {
const checkBoxGroupContext = useContext(CheckboxGroupContext)
const handleChange = (event: ChangeEvent) => {
onChange && onChange(event)
// 代表在 CheckBoxGroup 下
if (checkBoxGroupContext.isInCheckboxGroup) {
checkBoxGroupContext.onChange(value!)
}
}
let oName = name
let oChecked = checked
if (checkBoxGroupContext.isInCheckboxGroup) {
oName = checkBoxGroupContext.name
oChecked = checkBoxGroupContext.value?.includes(value!)
if (checked !== undefined || name !== undefined || onChange !== undefined) {
console.warn('在 CheckBoxGroup 下,不能提供 checked name onChange')
}
}
return (
)
}
export default Checkbox
export type { CheckboxProps }