| import { TextareaHTMLAttributes, useEffect, useRef } from 'react'; | |
| import { classNames } from '@/shared/lib/classNames/classNames'; | |
| import cls from './Textarea.module.scss'; | |
| type HTMLTextareaProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'>; | |
| interface TextareaProps extends HTMLTextareaProps { | |
| className?: string; | |
| value?: string; | |
| onChange?: (value: string) => void; | |
| inputRef?: (ref: any) => void; | |
| } | |
| export const Textarea = (props: TextareaProps) => { | |
| const { className, value, onChange, inputRef, ...otherProps } = props; | |
| const inputRefValue = useRef(null); | |
| useEffect(() => { | |
| if (inputRef) inputRef(inputRefValue.current); | |
| }, [inputRefValue.current]); | |
| return ( | |
| <textarea | |
| className={classNames(cls.Textarea, {}, [className])} | |
| ref={inputRefValue} | |
| value={value} | |
| onChange={(e) => onChange?.(e.target.value)} | |
| {...otherProps} | |
| /> | |
| ); | |
| }; | |