2020-07-15 21:30:37 +00:00
# Textarea
[component-header:sl-textarea]
Textareas collect data from the user and allow multiple lines of text.
```html preview
< sl-textarea > < / sl-textarea >
```
2021-11-04 22:12:47 +00:00
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
2022-03-02 15:10:41 +00:00
const App = () => < SlTextarea / > ;
2021-11-04 22:12:47 +00:00
```
2022-01-11 14:18:20 +00:00
?> This component works with standard `<form>` elements. Please refer to the section on [form controls ](/getting-started/form-controls ) to learn more about form submission and client-side validation.
2020-08-28 20:14:39 +00:00
2020-07-15 21:30:37 +00:00
## Examples
2022-03-18 19:58:25 +00:00
### Labels
Use the `label` attribute to give the textarea an accessible label. For labels that contain HTML, use the `label` slot instead.
```html preview
< sl-textarea label = "Comments" > < / sl-textarea >
```
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
const App = () => < SlTextarea label = "Comments" / > ;
```
### Help Text
Add descriptive help text to a textarea with the `help-text` attribute. For help texts that contain HTML, use the `help-text` slot instead.
```html preview
< sl-textarea label = "Feedback" help-text = "Please tell us what you think." > < / sl-textarea >
```
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
const App = () => < SlTextarea label = "Feedback" help-text = "Please tell us what you think." / > ;
```
2020-08-25 20:23:33 +00:00
### Rows
2020-07-15 21:30:37 +00:00
2020-08-25 20:23:33 +00:00
Use the `rows` attribute to change the number of text rows that get shown.
2020-07-15 21:30:37 +00:00
```html preview
2020-08-25 20:23:33 +00:00
< sl-textarea rows = "2" > < / sl-textarea >
2020-07-15 21:30:37 +00:00
```
2021-11-04 22:12:47 +00:00
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
2022-03-02 15:10:41 +00:00
const App = () => < SlTextarea rows = {2} / > ;
2021-11-04 22:12:47 +00:00
```
2020-08-25 20:23:33 +00:00
### Placeholders
2020-07-15 21:30:37 +00:00
2020-08-25 20:23:33 +00:00
Use the `placeholder` attribute to add a placeholder.
2020-07-15 21:30:37 +00:00
```html preview
2020-08-25 20:23:33 +00:00
< sl-textarea placeholder = "Type something" > < / sl-textarea >
2020-07-15 21:30:37 +00:00
```
2021-11-04 22:12:47 +00:00
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
2022-03-02 15:10:41 +00:00
const App = () => < SlTextarea placeholder = "Type something" / > ;
2021-11-04 22:12:47 +00:00
```
2021-09-25 02:28:14 +00:00
### Filled Textareas
Add the `filled` attribute to draw a filled textarea.
```html preview
< sl-textarea placeholder = "Type something" filled > < / sl-textarea >
```
2021-11-04 22:12:47 +00:00
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
2022-03-02 15:10:41 +00:00
const App = () => < SlTextarea placeholder = "Type something" filled / > ;
2021-11-04 22:12:47 +00:00
```
2020-08-25 20:23:33 +00:00
### Disabled
2020-07-15 21:30:37 +00:00
2021-09-25 02:28:14 +00:00
Use the `disabled` attribute to disable a textarea.
2020-07-15 21:30:37 +00:00
```html preview
2020-08-25 20:23:33 +00:00
< sl-textarea placeholder = "Textarea" disabled > < / sl-textarea >
2020-07-15 21:30:37 +00:00
```
2021-11-04 22:12:47 +00:00
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
2022-03-02 15:10:41 +00:00
const App = () => < SlTextarea placeholder = "Textarea" disabled / > ;
2021-11-04 22:12:47 +00:00
```
2020-08-25 20:23:33 +00:00
### Sizes
2020-07-15 21:30:37 +00:00
2020-08-25 20:23:33 +00:00
Use the `size` attribute to change a textarea's size.
2020-07-15 21:30:37 +00:00
```html preview
2020-08-25 20:23:33 +00:00
< sl-textarea placeholder = "Small" size = "small" > < / sl-textarea >
2022-03-02 15:10:41 +00:00
< br / >
2020-08-25 20:23:33 +00:00
< sl-textarea placeholder = "Medium" size = "medium" > < / sl-textarea >
2022-03-02 15:10:41 +00:00
< br / >
2020-08-25 20:23:33 +00:00
< sl-textarea placeholder = "Large" size = "large" > < / sl-textarea >
2020-07-15 21:30:37 +00:00
```
2021-11-04 22:12:47 +00:00
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
const App = () => (
< >
< SlTextarea placeholder = "Small" size = "small" > < / SlTextarea >
< br / >
< SlTextarea placeholder = "Medium" size = "medium" > < / SlTextarea >
< br / >
< SlTextarea placeholder = "Large" size = "large" > < / SlTextarea >
< />
);
```
2020-07-15 21:30:37 +00:00
### Prevent Resizing
By default, textareas can be resized vertically by the user. To prevent resizing, set the `resize` attribute to `none` .
```html preview
< sl-textarea resize = "none" > < / sl-textarea >
```
2021-11-04 22:12:47 +00:00
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
2022-03-02 15:10:41 +00:00
const App = () => < SlTextarea resize = "none" / > ;
2021-11-04 22:12:47 +00:00
```
2020-07-15 21:30:37 +00:00
### Expand with Content
Textareas will automatically resize to expand to fit their content when `resize` is set to `auto` .
```html preview
< sl-textarea resize = "auto" > < / sl-textarea >
```
2021-11-04 22:12:47 +00:00
```jsx react
import { SlTextarea } from '@shoelace-style/shoelace/dist/react';
2022-03-02 15:10:41 +00:00
const App = () => < SlTextarea resize = "auto" / > ;
2021-11-04 22:12:47 +00:00
```
2020-07-15 21:30:37 +00:00
[component-metadata:sl-textarea]