| import { ReactNode } from 'react'; | |
| import { Controller, FieldValues, RegisterOptions, useFormContext } from 'react-hook-form'; | |
| import { classNames } from '@/shared/lib/classNames/classNames'; | |
| import cls from './HCheckbox.module.scss'; | |
| import { Cell } from '@/shared/ui/FormComponents/fieldsUI/Cell/Cell'; | |
| import { Checkbox } from '@/shared/ui/FormComponents/fieldsUI/Checkbox/Checkbox'; | |
| interface HCheckboxProps { | |
| className?: string; | |
| name: string; | |
| label?: string; | |
| children?: ReactNode; | |
| noteText?: ReactNode; | |
| registerOptions?: Omit<RegisterOptions<FieldValues, string>, 'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'>; | |
| } | |
| export const HCheckbox = (props: HCheckboxProps) => { | |
| const { className, name, label, children, noteText, registerOptions } = props; | |
| const { control } = useFormContext(); | |
| return ( | |
| <Controller | |
| name={name} | |
| control={control} | |
| rules={registerOptions} | |
| render={({ field, fieldState }) => ( | |
| <Cell | |
| className={classNames(cls.HRadioButtons, {}, [className])} | |
| label={label} | |
| noteText={noteText} | |
| fieldError={fieldState.error} | |
| withoutBorder | |
| > | |
| <Checkbox // | |
| name={field.name} | |
| onChange={field.onChange} | |
| inputRef={field.ref} | |
| > | |
| {children} | |
| </Checkbox> | |
| </Cell> | |
| )} | |
| /> | |
| ); | |
| }; | |