A customizable and accessible auto-resizing textarea component for React, built with TypeScript.
- Auto-Resizing: The textarea automatically adjusts its height based on the content, providing a seamless user experience.
- Customizable Default Height: Set a default height for the textarea, and it will only resize when the content exceeds this threshold.
- Real-time Resize Handling: The component resizes in real-time as the user types, ensuring that all content is visible without the need for scrolling.
- Height Change Callback: Optionally provide a callback function to be notified whenever the textarea's height changes, useful for advanced UI scenarios.
- Fully Accessible: The component passes through all standard textarea attributes, including accessibility attributes (aria-*), ensuring compliance with accessibility standards.
You can install the package via npm:
npm install react-auto-resize-textarea
Here’s an example of how to use the auto-resize textarea component in your React application:
import React, { useState } from "react";
import { TextArea } from "react-auto-resize-textarea";
const App = () => {
const [value, setValue] = useState("");
return (
<div>
<label htmlFor="example">Your text:</label>
<TextArea
id="example"
value={value}
onChange={(e) => setValue(e.target.value)}
autoResize
defaultHeight={100}
placeholder="Type here..."
/>
</div>
);
};
export default App;
Prop Name | Type | Mandatory | Default Value | Description |
---|---|---|---|---|
autoResize |
boolean |
No | true |
If true , the textarea will automatically resize based on its content. |
defaultHeight |
number | undefined |
No | undefined |
Sets the default height of the textarea in px . The textarea does not resize until the content fits within this height. |
onHeightChange |
(height: undefined | number) => void | undefined
|
No | undefined |
A callback function that is triggered every time the textarea resizes. Receives the new height (or undefined if reset) as its parameter. Works only if autoResize is true. |
...props |
React.TextareaHTMLAttributes |
N/A | N/A | All other standard textarea attributes, including accessibility attributes (e.g., aria-* ), are passed through to the underlying textarea element. |
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
This project is licensed under the MIT License.