import React from 'react'; import { useController, useFormContext, type FieldValues, type Path } from 'react-hook-form'; import type { FormFieldPropsBase } from './types'; import type { CheckboxGroupProps, CheckboxProps } from '../../../chakra/checkbox'; import { Checkbox, CheckboxGroup } from '../../../chakra/checkbox'; export interface FormFieldCheckboxGroupProps< FormFields extends FieldValues, Name extends Path = Path, > extends Pick, 'rules' | 'name' | 'onChange' | 'readOnly' | 'controllerProps'>, Omit { options: Array<{ label: string; value: string }>; itemProps?: CheckboxProps; } const FormFieldCheckboxGroupContent = < FormFields extends FieldValues, Name extends Path, >(props: FormFieldCheckboxGroupProps) => { const { name, options, disabled, controllerProps, itemProps, rules, onChange, ...rest } = props; const { control } = useFormContext(); const { field, formState } = useController({ control, name, rules, ...controllerProps, }); const handleChange = React.useCallback((value: Array) => { field.onChange(value); onChange?.(); }, [ field, onChange ]); return ( { options.map(({ value, label }) => ( { label } )) } ); }; export const FormFieldCheckboxGroup = React.memo(FormFieldCheckboxGroupContent) as typeof FormFieldCheckboxGroupContent;