TextInput
TextInput
is a form component, that allows users to input text or numbers and should be used in a form context.
How to use TextInput
The TextInput component can be configured in a number of different ways. Use this guidance to determine the correct variation based on the context.
TextInput is supporting different types of inputs, like 'text' | 'email' | 'file' | 'number' | 'password' | 'search' | 'url'
, where text
is the default.
Code examples
Basic example
TextInput with label
In order to create a correct text input the recommendation is to add a label to any kind of input. In order to do that, we provide you couple of additional components that you can use to compose your inputs with labels, help or validation messages.
Read more about FormControl
TextInput with buttons
TextInput.Group
enables the user to set a button at the start or end of an input, with some spacing or collapsed.
Example of usage:
Example of spaced TextInput.Group
.
TextInput variations
Keep in mind, that if you need to use an input without a label, you need to pass aria-label
attribute to create an input that would be accessible to assistive technologies, like screen readers.
TextInput with placeholder
TextInput disabled
TextInput invalid
Content guidelines
- Use direct and succinct copy that helps the user to successfully complete the form
- Do not preface the instructions with introductory text, such as "please"
- Use sentence style caps (in which only the first word of a sentence or term is capitalized)
Accessibility
- To ensure
TextInput
meets accessibility standards, providename
andid
- Keep in mind that to provide that accessible inputs, you need to use labels.
- If you decide, that for some reason you would not use the label, please provide
aria-label
attribute to make it accessible for technologies like screen readers.
Props
TextInput
- Name
className
DescriptionCSS class to be appended to the root element
string - Name
defaultValue
DescriptionSet's default value for text input
string - Name
icon
DescriptionExpects any of the icon components
ReactElement<any, string | JSXElementConstructor<any>> - Name
id
DescriptionSets the id of the input
string - Name
isDisabled
DescriptionApplies disabled styles
falsetrue - Name
isInvalid
DescriptionApplies invalid styles
falsetrue - Name
isReadOnly
DescriptionApplies read-only styles
falsetrue - Name
isRequired
DescriptionValidate the input
falsetrue - Name
name
DescriptionSet the name of the input
string - Name
onBlur
DescriptionAllows to listen to an event when an element loses focus
FocusEventHandler<HTMLInputElement | HTMLTextAreaElement> - Name
onChange
DescriptionAllows to listen to an input’s change in value
ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement> - Name
onFocus
DescriptionAllows to listen to an event when an element get focused
FocusEventHandler<HTMLInputElement | HTMLTextAreaElement> - Name
onKeyDown
DescriptionAllows to listen to an event when a key is pressed
KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement> - Name
size
DescriptionDefines which size of the input should be rendered
Default"small""medium"medium - Name
testId
DescriptionA [data-test-id] attribute used for testing purposes
Defaultstringcf-ui-text-input - Name
type
DescriptionSet the type of the input
"number""text""email""file""password""search""url" - Name
value
DescriptionSet the value of the input
string - Name
willBlurOnEsc
DescriptionBoolean property that allows to blur on escape
falsetrue
TextInput.Group
- Name
children(required)
ReactNode - Name
className
DescriptionCSS class to be appended to the root element
string - Name
spacing
DescriptionSets the spacing of the elements if variant is separate.
"spacing2Xs""spacingXs""spacingS""spacingM""spacingL""spacingXl""spacing2Xl""spacing3Xl""spacing4Xl""none" - Name
testId
DescriptionA [data-test-id] attribute used for testing purposes
string