Documentation versions (currently viewingVaadin 23)

You are viewing documentation for Vaadin 23. View latest documentation

Input Fields

The following features are available in all input field components.


An input field should have a label to identify it. Labels should be clear, concise, and written in sentence case. Avoid unclear and verbose language. Use helper texts to provide more guidance, or tooltips in case a helper text can’t be accommodated.

Open in a
new tab
<vaadin-email-field label="Email address"></vaadin-email-field>

In situations where enough context is provided, such as grid filters and search fields, visible labels can be omitted. In such cases, an aria-label attribute should be provided instead to identify the field, so that users of assistive technologies can interpret the input correctly.

Tooltips, or, for certain input components, icons and placeholder text can be used in addition to a label or aria-label to help convey a field’s purpose and usage:

Open in a
new tab
<vaadin-text-field aria-label="search" placeholder="Search" clear-button-visible>
  <vaadin-icon icon="vaadin:search" slot="prefix"></vaadin-icon>


Helpers provide information when needed so that end users can fill in a form or field without errors. For example, they’re helpful when the field requires a specific format. Helpers typically consist of plain text, but HTML and other components are also supported.

Open in a
new tab
  label="Phone number"
  helper-text="Include country and area prefixes"

    ?hidden="${this.strengthText !== 'strong'}"

  <div slot="helper">
    Password strength:
    <span style="color:${this.strengthColor}">${this.strengthText}</span>

Tooltips can be used as an alternative to helpers. For example, you might use it in situations where there is insufficient space. Helpers are more accessible by being always visible.

Helper Position

The helper can be displayed above the field.

Open in a
new tab
  label="Phone number"
  helper-text="Include country and area prefixes"
  style="width: 15em;"

Showing the helper before the field can sometimes be a better choice. It’s more likely to be visible at small viewport sizes when the field is focused. Also, screen reader users can read the instructions before entering the field.

Use the same helper position across the entire application for consistency.


Input fields can be either optional or required. Optional fields are typically left unmarked. In the default theme, required fields are marked with a bullet character. It’s recommended to provide hint text to let users know how required fields are marked:

Open in a
new tab
  error-message="This field is required"
<vaadin-date-picker label="Date of birth"></vaadin-date-picker>

Marking Required and Optional Fields

If most of the fields in a form are optional, mark the required ones. When a form has more required than optional fields, mark instead the optional ones by adding a “(optional)” suffix to their labels.

Consistency is key to providing a good user experience, so be careful not to mix. Try to match, whether marking is applied to optional or to required fields in different forms.

Non-Editable Fields

Sometimes, the user isn’t allowed to edit the value of certain fields. Those fields can made read-only or disabled, depending on the situation. Choose the appropriate choice.


Open in a
new tab
<vaadin-text-field label="Read-only" value="Value" readonly></vaadin-text-field>

Set a field as read-only when the content needs to be accessible but not editable. Although read-only elements can’t be edited, they will be in the tabbing order and can thus receive focus. The contents of a read-only input can be selected and copied.


Open in a
new tab
<vaadin-text-field label="Disabled" value="Value" disabled></vaadin-text-field>

Disable a field to mark it as unavailable. The disabled state is used for fields that aren’t editable and don’t need to be readable. Disabled elements can’t be focused and may be inaccessible to assistive technologies, such as screen readers.

Disabling can be preferable to hiding an element to prevent changes in layout when the element’s visibility changes. It also serves to make users aware of its existence even when it’s currently unavailable.

If the user needs to be able to read or copy the value, use read-only instead.


Focus styles are used to highlight the active element, which is useful for keyboard navigation.

Open in a
new tab
<vaadin-text-field label="First name"></vaadin-text-field>
<vaadin-text-field label="Last name"></vaadin-text-field>
<vaadin-text-field label="Username" colspan="2"></vaadin-text-field>
<vaadin-password-field label="Password"></vaadin-password-field>
<vaadin-password-field label="Confirm password"></vaadin-password-field>

The focus style is different for keyboards and pointing devices:

Open in a
new tab
<vaadin-text-field label="Pointer focus" focused></vaadin-text-field>
<vaadin-text-field label="Keyboard focus" focused focus-ring></vaadin-text-field>

Input Field Components

A variety of components are available for different types of input:

Component Usage recommendations

Text Field

Basic single-line text input.

Text Area

Multi-line text input, for values that aren’t expected to fit on a single line, or when manual line breaks need to be supported.

Email Field

For email addresses.

Number Field

Numeric-only input, such as counts, measures, or monetary values.

Password Field

Optionally masked password entry.

Date Picker

Date entry with keyboard or a calendar picker.

Time Picker

Selecting a time of day; resolution range from hours to milliseconds.

Date Time Picker

Combined date and time entry.

Radio Button

Select a single option from a list. Optimal accessibility, as all options are visible without any user action.


Select a value from an overlay. More compact than Radio Buttons.

Combo Box

Select a value from a filterable overlay. Appropriate for large sets of options. Supports lazy loading and entry of custom values.


For selecting multiple options from a list, or a single binary toggle.