|
import { ReactNode } from 'react'; |
|
import { Controller, FieldValues, RegisterOptions, useFormContext } from 'react-hook-form'; |
|
import { classNames } from '@/shared/lib/classNames/classNames'; |
|
import { Cell } from '@/shared/ui/FormComponents/fieldsUI/Cell/Cell'; |
|
import { IRadioButtons, RadioButtons } from '@/shared/ui/FormComponents/fieldsUI/RadioButtons/RadioButtons'; |
|
import cls from './HRadioButtons.module.scss'; |
|
|
|
interface HRadioButtonsProps { |
|
className?: string; |
|
name: string; |
|
title?: string; |
|
label?: string; |
|
noteText?: ReactNode; |
|
radioData: IRadioButtons[]; |
|
theme?: string; |
|
registerOptions?: Omit<RegisterOptions<FieldValues, string>, 'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'>; |
|
} |
|
|
|
export const HRadioButtons = (props: HRadioButtonsProps) => { |
|
const { className, name, title, label, noteText, radioData, theme, 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 |
|
> |
|
<RadioButtons |
|
name={field.name} |
|
title={title} |
|
onChange={field.onChange} |
|
currentValue={field.value} |
|
data={radioData} |
|
theme={theme} |
|
/> |
|
</Cell> |
|
)} |
|
/> |
|
); |
|
}; |
|
|