TextArea allows for multi-line input.

Props

Component props
Name
Type
Default
id
Required
string
-

A unique identifier for the input.

onChange
Required
({| event: SyntheticInputEvent<HTMLTextAreaElement>, value: string, |}) => void
-

Callback triggered when the value of the input changes.

disabled
boolean
false

Indicate if the input is currently disabled. See the disabled example for more details.

errorMessage
React.Node
-

For most use cases, pass a string with a helpful error message (be sure to localize!). In certain instances it can be useful to make some text clickable; to support this, you may instead pass a React.Node to wrap text in Link or TapArea. See the error message example for more details.

hasError
boolean
false

This field is deprecated and will be removed soon. Please do not use.

helperText
string
-

More information about how to complete the form field. See the helper text example for more details.

label
string
-

The label for the input. Be sure to localize the text.

name
string
-

A unique name for the input.

onBlur
({| event: SyntheticFocusEvent<HTMLTextAreaElement>, value: string, |}) => void
-

Callback triggered when the user blurs the input.!

onFocus
({| event: SyntheticFocusEvent<HTMLTextAreaElement>, value: string, |}) => void
-

Callback triggered when the user focuses the input.

onKeyDown
({| event: SyntheticKeyboardEvent<HTMLTextAreaElement>, value: string, |}) => void
-

Callback triggered when the user presses any key while the input is focused.

placeholder
string
-

Placeholder text shown the the user has not yet input a value.

ref
React.Element<"input">
-

Ref that is forwarded to the underlying input element. See the ref example for more details.

rows
number
3

Number of text rows to display. Note that tags take up more space, and will show fewer rows than specified.

tags
$ReadOnlyArray<Element<typeof Tag>>
-

List of tags to display in the component. See the tags example for more details.

value
string
-

The current value of the input.

Usage guidelines

When to use
  • Allowing users to input long portions of free-form text while ensuring all text entered remains visible.
  • Allowing users to type free-form options that get converted into Tags within the TextArea.
When not to use
  • For inputs that expect a certain format, like a date or email. Use a DatePicker or TextField instead.

Example

A TextArea will expand to fill the width of the parent container.

Example: Disabled

Example: Helper Text

Whenever you want to provide more information about a form field, you should use helperText.

Example: Error message

A TextArea can display its own error message.
To use our errors, simply pass in an errorMessage when there is an error present and we will handle the rest.

Example: ref

A TextArea with an anchor ref to a Popover component

Example: Tags

You can include Tag elements in the input using the tags prop.

Note that the TextArea component does not internally manage tags. That should be handled in the application state through the component's event callbacks. We recommend creating new tags on enter key presses, and removing them on backspaces when the cursor is in the beginning of the field. We also recommend filtering out empty tags.

This example showcases the recommended behavior.

Autofocus

TextArea intentionally lacks support for autofocus. Generally speaking,
autofocus interrupts normal page flow for screen readers making it an
anti-pattern for accessibility.

onSubmit

TextArea is commonly used as an input in forms alongside submit buttons.
In these cases, users expect that pressing Enter or Return with the input
focused will submit the form.

Out of the box, TextArea doesn't expose an onSubmit handler or
individual key event handlers due to the complexities of handling these
properly. Instead, developers are encouraged to wrap the TextArea
in a form and attach an onSubmit handler to that form.