import * as React from 'react'
import { Checkbox as $Checkbox } from 'antd'
import { FieldProps } from 'formik'
import Field from '../field'
import { CheckboxProps as $CheckboxProps } from 'antd/lib/checkbox/Checkbox'
import { FormikFieldProps } from '../FieldProps'
import { CheckboxGroupProps as $CheckboxGroupProps } from 'antd/lib/checkbox/Group'
export type CheckboxProps = FormikFieldProps & $CheckboxProps
export const Checkbox = ({
name,
validate,
fast,
onChange,
...restProps
}: CheckboxProps) => (
{({
field: { value },
form: { setFieldValue, setFieldTouched },
}: FieldProps) => (
<$Checkbox
name={name}
id={name}
checked={value}
onChange={(event) => {
setFieldValue(name, event.target.checked)
setFieldTouched(name, true, false)
onChange && onChange(event)
}}
{...restProps}
/>
)}
)
export default Checkbox
export type CheckboxGroupProps = FormikFieldProps & $CheckboxGroupProps
Checkbox.Group = ({
name,
validate,
onChange,
...restProps
}: CheckboxGroupProps) => (
{({
field: { value },
form: { setFieldValue, setFieldTouched },
}: FieldProps) => (
<$Checkbox.Group
value={value}
onChange={(value) => {
setFieldValue(name, value)
setFieldTouched(name, true, false)
onChange && onChange(value)
}}
{...restProps}
/>
)}
)