Input
Input let users enter and edit text
Basic Usage
value: John Doe
<Input label="Name" placeholder="Full name" v-model="name" />
Adjacent content
The Input
component supports adding content to either the right, using the append
slot, or left, using the prepend
slot, of the input.
<Input label="Amount">
<template #prepend>$</template>
</Input>
<Input label="Percent">
<template #append>%</template>
</Input>
Autocomplete
The Input
component supports the native autocomplete
attribute, allowing or not suggestions from the browser. The default value is off
.
<Input label="Language" list="languages" autocomplete="on" />
<datalist id="languages">
<option value="PHP" />
<option value="C++" />
<option value="Java" />
<option value="Ruby" />
<option value="Python" />
<option value="Go" />
<option value="Perl" />
<option value="Erlang" />
</datalist>
Types
The Input
component supports the type
attribute. The default value is text
.
INFO
The usage of types such as checkbox
, radio
, file
, range
or date
is not recommended because they have their own dedicated components.
<Input label="Age" type="number" />
<Input label="Email" type="email" />
<Input label="Password" type="password" />
<Input label="URL" type="url" />
<Input label="Phone" type="tel" />
Additional information
The Input
component supports the error-text
and hint-text
props to display additional information to the user.
<Input label="Name" hint-text="Enter your full name" />
<Input label="Occupation" error-text="This field is required" />
Hint Slot
If the hint-text
prop is not sufficient, there is also a #hint
slot:
<Input label="Name">
<template #hint>
Enter your <em>full name</em>
</template>
</Input>
Spacing
If you want to preserve the spacing between the input and the additional information (even if it is not shown), you can use the addBottomSpace
property.
<Input label="Occupation" :error-text="errorText" add-bottom-space />
Label
The Input
component supports the label
prop to display a label above the input. Additionally, it supports the showOptionalInLabel
property to indicate that the input is optional.
<Input label="Zip code" show-optional-in-label />
Disabled
The Input
component supports the is-disabled
prop to disable the input.
WARNING
If the user cannot take any action to make the field editable, the is-read-only
prop should be used instead.
See Disabled vs read-only for details.
<Input label="Search" placeholder="Type to search" disabled />
Read Only
Similar to disabled fields, read-only fields cannot be edited. However, unlike disabled fields, read-only fields are able to receive focus, but are not intended to become editable.
In the example below, the Name and ZIP Code fields are read-only, the Age field is disabled, and the Location field is editable. Notice that the read-only fields have a content position and spacing which matches the other inputs.
INFO
The difference between disabled and readonly is that read-only controls can still function and are still focusable, whereas disabled controls can not receive focus and are not submitted with the form and generally do not function as controls until they are enabled.
Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/readonly#attribute_interactions
API
See the documentation below for a complete reference to all the props and classes available to the components mentioned here.