Артем Леванов
first commit
41a71fd
import { ReactNode, TextareaHTMLAttributes } 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 { Textarea } from '../../fieldsUI/Textarea/Textarea';
import cls from './HTextarea.module.scss';
interface HTextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange' | 'name'> {
className?: string;
name: string;
label?: string;
noteText?: ReactNode;
registerOptions?: Omit<RegisterOptions<FieldValues, string>, 'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'>;
}
export const HTextarea = (props: HTextareaProps) => {
const { className, name, label, noteText, registerOptions, ...otherProps } = props;
const { control } = useFormContext();
return (
<Controller
name={name}
control={control}
rules={registerOptions}
render={({ field, fieldState }) => (
<Cell //
className={classNames(cls.HTextarea, {}, [className])}
label={label}
noteText={noteText}
fieldError={fieldState.error}
>
<Textarea
name={field.name}
inputRef={field.ref}
onBlur={field.onBlur}
onChange={field.onChange}
value={field.value ?? ''}
{...otherProps}
/>
</Cell>
)}
/>
);
};