Documentation versions (currently viewingVaadin 23)

Input Fields

The following features are available in all input field components.


An input field should generally 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.

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, labels can be omitted. In these cases, an aria-label attribute should be provided instead to identify the field, so that users of assistive technologies can interpret the input correctly. Icons and placeholders 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 are 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 !== StrengthText.strong}"

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

Helpers are preferable to tooltips, since tooltips cannot be accessed by assistive technologies, such as screen readers, and are unavailable to touch screen users.

Helper Position

The helper can be shown 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 be a better choice. It is more likely to be visible at small viewport sizes when the field is focused, and 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 is recommended to provide hint text to let users know how required fields are indicated:

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

The required indicator is shown only when the field is empty.

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 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, but rather match, whether marking is applied to optional or to required fields in different forms.

Non-Editable Fields

In some cases, the user is not allowed to edit the value of certain fields. Those fields can made read-only or disabled. Choose the appropriate option, depending on the situation.


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. Read-only elements cannot be edited, but they are 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 are not editable and do not need to be readable. Disabled elements cannot 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, and to make users aware of its existence even when it is 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>

Note that 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:

ComponentUsage recommendations

Text Field

Basic single-line text input.

Text Area

Multi-line text input, for values that cannot be 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.