Spaces:
Running
Running
| import { useEffect, useRef } from "react"; | |
| import TextAreaProps from "./TextArea.interface"; | |
| import "./TextArea.scss"; | |
| const TextArea = ({ ...props }: TextAreaProps) => { | |
| const textAreaRef = useRef<HTMLTextAreaElement>(null); | |
| useEffect(() => { | |
| const resizeObserver = new ResizeObserver(() => { | |
| if (textAreaRef.current) { | |
| textAreaRef.current.style.height = "auto"; | |
| textAreaRef.current.style.height = `${ | |
| textAreaRef.current.scrollHeight + 2 | |
| }px`; | |
| } | |
| }); | |
| if (textAreaRef.current) { | |
| resizeObserver.observe(textAreaRef.current); | |
| } | |
| return () => { | |
| if (textAreaRef.current) { | |
| resizeObserver.unobserve(textAreaRef.current); | |
| } | |
| }; | |
| }, [props.value]); | |
| return ( | |
| <textarea | |
| {...props} | |
| ref={textAreaRef} | |
| className={`auto-expand-textarea ${props.className}`} | |
| /> | |
| ); | |
| }; | |
| export default TextArea; | |