forms
FormGroup
Display a label and additional informations around a form element.
Usage
Use the FormGroup component around an Input, Textarea, Select or a SelectMenu with the name
prop to automatically associate a <label>
element with the form element.
<UFormGroup label="Email" name="email">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>
Required
Use the required
prop to indicate that the form element is required.
<UFormGroup label="Email" required>
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>
Description
Use the description
prop to display a description below the label.
<UFormGroup label="Email" description="We'll only use this for spam.">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>
Hint
Use the hint
prop to display a hint above the form element.
<UFormGroup label="Email" hint="Optional">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>
Help
Use the help
prop to display an help message below the form element.
<UFormGroup label="Email" help="We will never share your email with anyone else.">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>
Error
Use the error
prop to display an error message below the form element.
When used together with the help
prop, the error
prop will take precedence.
<template>
<UFormGroup v-slot="{ error }" label="Email" :error="!email && 'You must enter an email'" help="This is a nice email!">
<UInput v-model="email" type="email" placeholder="Enter email" :trailing-icon="error && 'i-heroicons-exclamation-triangle-20-solid'" />
</UFormGroup>
</template>
<script setup lang="ts">
const email = ref('')
</script>
error
prop will automatically set the color
prop of the form element to red
.You can also use the error
prop as a boolean to mark the form element as invalid.
<UFormGroup label="Email" error>
<UInput placeholder="you@example.com" /></UFormGroup>
Form
component.Size
Use the size
prop to change the size of the label and the form element.
<UFormGroup size="xl" label="Email" hint="Optional" description="We'll only use this for spam." help="We will never share your email with anyone else.">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>
size
prop.Props
null
null
{}
null
null
null
null
null
false
Preset
{
"wrapper": "",
"label": {
"wrapper": "flex content-center items-center justify-between",
"base": "block font-medium text-gray-700 dark:text-gray-200",
"required": "after:content-['*'] after:ms-0.5 after:text-red-500 dark:after:text-red-400"
},
"size": {
"2xs": "text-xs",
"xs": "text-xs",
"sm": "text-sm",
"md": "text-sm",
"lg": "text-sm",
"xl": "text-base"
},
"container": "mt-1 relative",
"description": "text-gray-500 dark:text-gray-400",
"hint": "text-gray-500 dark:text-gray-400",
"help": "mt-2 text-gray-500 dark:text-gray-400",
"error": "mt-2 text-red-500 dark:text-red-400"
}