The TextInput component only needs the label property to be displayed. Other props like placeholder, secondaryLabel, and onChange can be used to complement its behavior.
<TextInput label="Text input component" placeholder="Write what you want here" secondaryLabel="Free text input" />
TextInput along with the other inputs, all provide the option of setting the component as display only. When this property displayOnly is set to true, the component is displayed as text, without the specific input look and feel.
<TextInput label="Text input component" placeholder="Write what you want here" secondaryLabel="Free text input" value="this is the value" displayOnly={true} />
The tooltip property will make the component display the tooltip icon. When the user interacts with it, it also displays some complementary information. This property can receive text to be displayed {text: "this will be displayed when tooltip is opened"}. You can also control what specific action makes the tooltip appear by passing a second attribute trigger. This accepts the standard HTML events like pointerover, focus, and blur. By default, the tooltip is opened by clicking on the tooltip icon.
In this example, the tooltip is displayed when the mouse is over the tooltip icon.
<TextInput label="Text input component" placeholder="Write what you want here" secondaryLabel="Free text input" tooltip={{text:'tooltip text',trigger:'pointerover'}} />
TextInput does not provide specific validation logic but it provides a method for including developer validation and uses the stateMessages property to display any required error message.
This is an example of handling validation when the onChange event is triggered.
functionTextInputValidation(){ const[validationMessages, setValidationMessages]=useState({}); const onChange =useCallback((e, newValue)=>{ if(!newValue || newValue.indexOf('a')==-1){ setValidationMessages({}); }else{ setValidationMessages({ error:['The text cannot contain `a` character'], }); } },[]); return( <TextInput label="Do not accept words with 'a'" secondaryLabel="Will raise an error if contains 'a' character" stateMessages={validationMessages} onChange={onChange} /> ); }
The value property can be used for the controlled component scenario:
exportfunctionInputControlled(){ const[updatedValue, setNewValue]=useState('first given value'); constonChange=(e, newValue)=>{ setNewValue(newValue); }; return( <div> <TextInput label="Enter here the value to be assigned input below" onChange={onChange} /> <br/> <TextInput label="Changes with the above" secondaryLabel="This cannot be manually modified" value={updatedValue} /> </div> ); }
TextInput along with other inputs, all allow the use of a ref property to access some native behaviors. However only some features are exposed. In this case, when the button is clicked, the focus is automatically set in the following input:
exportfunctionInputRef(){ const inputRef =useRef(null); constsetFocus=(e)=>{ inputRef?.current?.focus(); }; return( <div> <Button label="Set focus on text input" onClick={setFocus}></Button> <TextInput label="Get the focus from the button" ref={inputRef} /> </div> ); }
Note: There are deprecated versions of this component. Switch to a version of the docs older than 10.0.x to view their docs.
The text input component enables users to enter text and numbers into data-entry fields. Text inputs are among the most important and most used interface components that users interact with. They allow users to provide the necessary information that a system requires to fulfill a specified task or set of tasks.
Helper text (optional): Provides extra context, hints, or helpful information to aid the user. Often used to explain specific requirements for correctly filling out a field.
Text input field: the text field container, consisting of a fill and a stroke, where users input text.
Use help text to provide guidance about what to input and how. Here are some examples of what you might include in help text:
Context to aid the user, such as how the information will be used
Hints for what kind of information goes inside the input field
Formatting examples or requirements
Only use help text for pertinent information. Avoid using help text that simply restates the same information that appears in the label.
Use sentence case for help text. Write the help text as 1-2 short, complete sentences that end with a period. When showing formatting examples, you don't need to end with a period.
Do use help text to provide additional aid or context to the user.
Don't use help text to simply restate the same information that appears in the label.
Don't put placeholder text in the text entry field. Placeholder text strains users' short-term memory because it disappears once a value is entered. It also poses additional burdens for users with visual and cognitive impairments.
Instead, place hints and instructions, including formatting examples and requirements, outside of the field.
Error message text tells a user how to fix the error. In the case of the text input field, errors are often related to something that must be fixed for in-line validation. For example, if the user doesn't fill out a required field that asks for their email address, you can use error text to guide them to a solution: “Enter your email address.”
Use sentence case for error text. Write 1-2 short, complete sentences that end with a period.
Do use error text to guide the user and show them a solution.
Don't write ambiguous error messages or leave users guessing as to how to resolve a problem.
Use an asterisk (*) to indicate required fields. The asterisk precedes the field label. This helps users to easily locate which fields are required by scanning just the left-most character of the label.
Do use an asterisk to indicate that a field is required.
Don't use an asterisk to denote anything that is optional.
The text input field appears with no value (default), placeholder text, or a filled input.
Visual
State
Description
No value (default)
Indicates to the user that no value has been entered and there is no placeholder.
Placeholder
Indicates to the user that no value has been entered. The placeholder is grayed out.
Filled input
Indicates to the user that the input is filled with data.
Text input fields also have interactive states for enabled, focus, disabled, error, read-only, and display-only.
State
Description
Enabled
Indicates to the user that the element is enabled for interaction.
Focus
Indicates to the user which UI element in the system is focused.
Disabled
Indicates to the user that the input value can't be changed because of local factors. For example, a checkbox above the input field must be checked to access this input field. The user can take action to enable it by interacting with the page.
Error
Indicates that the user has made a validation error. Error text provides corrective feedback to users.
Read-only
Indicates to the user that the input value can't be changed because of outside factors. For example, lack of write access. The user can take action to enable it by, for example, contacting an administrator.
Display-only
The display-only state is used for two cases:
A UI element is used in display mode.
A UI element is displayed in edit mode, but is never editable.
The label and input are programmatically associated with each other. By default, a tooltip is positioned beside the label. It includes the WAI-ARIA attribute of aria-label="Show tooltip", and also aria-expanded="false" which toggles to "true" when the tooltip is triggered. Content within the tooltip is voiced by screen readers by means of the WAI-ARIA role of 'alert'. When the required checkbox is checked in Storybook, the attribute of 'required' is added to the markup and the aria-required value toggles from 'true' to 'false'.
If content inside the text input overflows, the user should be able to scroll horizontally from one end to the other by using Shift+Scroll. The user can also use Left Arrow and Right Arrow keys to move the cursor from one side to the other.
This component adheres to the following criteria for color and zoom accessibility:
Zoom: All content is visible and functional up to and including a zoom factor of 200%.
Color: The contrast ratio of textual elements against their background is above 4.5:1.
This component has been validated to meet the WCAG 2.0 AA accessibility guidelines. However, changes made by the content author can affect accessibility conformance. When using this component within your application, ensure that labels and instructions are meaningful and concise. Provide supplemental instructions if necessary.
Note: There are deprecated versions of this component. Switch to a version of the docs older than 10.0.x to view their docs.
Make sure to understand the Design System components API surface, and the implications and trade-offs. Learn more in our introduction to the component API.
If true, displays the component value as a plain text. Consider using readonly instead, if possible, because plain text has much worse accessibility than readonly inputs
Value of input. Takes precedence over initialValue. If this prop is passed, component works in controlled mode and its value will change only if this prop changes.
The result of passing these id and maxLength properties is that they will be part of the HTML input that is created in the HTML DOM. In the case of maxLength, it prevents the user from writing more than 10 characters. This can only be done by directly pasting the value.
Jutro inputs have implemented imperative handlers as a mechanism to provide access to some common native features that might be useful for you. The following features are available:
Set focus to allow you to set the user focus into a specific component
Blur to remove the focus from the component
Scroll to the component so that you can take the user to a specific area of the page.
These features are provided through the ref property, which exposes them as follows:
Although some Jutro components might provide complementary features or a helper function to facilitate the validation process, it is your responsibility as a developer to handle the validation of any user input (using or not using the complementary helpers) and to decide what error messages to show.
Jutro components behave based on the developer implementation.
When are error messages displayed?
Error messages are only displayed when you pass them to the component through the stateMessages property. This property receives an object with the following content:
The component displays every error message provided in the same order as in the array.
When does validation occur?
This is your decision as a developer. As components do not determine when the validation is performed or when the error must be displayed, you need to implement the logic to handle it according to the project requirements, for example while the user is editing the content, when the component loses focus, and on form submission.
New @jutro/components/TextInput component introduced that replaces InputField.
The previous InputField component was deprecated and moved to the @jutro/legacy package. To view its documentation switch to a version of the documentation older than 10.0.
Component
Old location
New location
InputField
@jutro/components/InputField
@jutro/legacy/components/InputField
Codemods are available to automatically rename existing imports.