forked from github/plane
22 lines
704 B
TypeScript
22 lines
704 B
TypeScript
import { useEffect } from "react";
|
|
|
|
// Updates the height of a <textarea> when the value changes.
|
|
const useAutosizeTextArea = (
|
|
textAreaRef: HTMLTextAreaElement | null,
|
|
value: any
|
|
) => {
|
|
useEffect(() => {
|
|
if (textAreaRef) {
|
|
// We need to reset the height momentarily to get the correct scrollHeight for the textarea
|
|
textAreaRef.style.height = "0px";
|
|
const scrollHeight = textAreaRef.scrollHeight;
|
|
|
|
// We then set the height directly, outside of the render loop
|
|
// Trying to set this with state or a ref will product an incorrect value.
|
|
textAreaRef.style.height = scrollHeight + "px";
|
|
}
|
|
}, [textAreaRef, value]);
|
|
};
|
|
|
|
export default useAutosizeTextArea;
|