TextField allows for text input.

Props

Component props
Name
Type
Default
id
Required
string
-

A unique identifier for the input.

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

Callback triggered when the value of the input changes.

autoComplete
"current-password" | "new-password" | "on" | "off" | "username" | "email"
-

Indicate if autocomplete should be available on the input, and the type of autocomplete.

disabled
boolean
false

Indicate if the input is disabled.

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.

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.

label
string
-

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

name
string
-

A unique name for the input.

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

Callback triggered when the user blurs the input.

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

Callback triggered when the user focuses the input.

onKeyDown
({| event: SyntheticKeyboardEvent<HTMLInputElement>, 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.

size
"md" | "lg"
"md"

md: 40px, lg: 48px

tags
$ReadOnlyArray<React.Element<typeof Tag>>
-

List of tags to display in the component.

type
"date" | "email" | "number" | "password" | "tel" | "text" | "url"
"text"

The type of input. For numerical input, please use NumberField.

value
string
-

The current value of the input.

Usage guidelines

When to Use
  • Any time succinct data needs to be entered by a user, like a date, email address, name, or Pin title.
When Not to Use
  • Situations where long amounts of text need to be entered, since the full content of the TextField will be truncated. Use TextArea instead.

Example

TextField 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.

https://pinterest.com/

Example: Error message

TextField can display an error message.
Simply pass in an errorMessage when there is an error present and we will handle the rest. Be sure to localize the text!

This field can't be blank!

Example: Tags

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

Note that TextField 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. In addition, it creates new tags by splitting the input on spaces, commas, semicolons.

a@pinterest.com
b@pinterest.com

Example: ref

TextField with an anchor ref to a Popover component

Autofocus

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

onSubmit

TextField 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, TextField 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 TextField
in a <form> and attach an onSubmit handler to that <form>.