forms
Input
Display an input field.
Usage
Use a v-model
to make the Input reactive.
<script setup>
const value = ref('')
</script>
<template>
<UInput v-model="value" />
</template>
Style
Use the color
and variant
props to change the visual style of the Input.
<UInput color="primary" variant="outline" />
Besides all the colors from the ui.colors
object, you can also use the white
(default) and gray
colors with their pre-defined variants.
White
<UInput color="white" variant="outline" />
Gray
<UInput color="gray" variant="outline" />
Size
Use the size
prop to change the size of the Input.
<UInput size="sm" />
Placeholder
Use the placeholder
prop to set a placeholder text.
<UInput placeholder="Search..." />
Icon
Use any icon from Iconify by setting the icon
prop by using this pattern: i-{collection_name}-{icon_name}
.
Use the leading
and trailing
props to set the icon position or the leading-icon
and trailing-icon
props to set a different icon for each position.
<UInput icon="i-heroicons-magnifying-glass-20-solid" size="sm" color="white" :trailing="false" />
Disabled
Use the disabled
prop to disable the Input.
<UInput disabled />
Loading
Use the loading
prop to show a loading icon and disable the Input.
Use the loading-icon
prop to set a different icon or change it globally in ui.input.default.loadingIcon
. Defaults to i-heroicons-arrow-path-20-solid
.
<UInput loading icon="i-heroicons-magnifying-glass-20-solid" />
Slots
leading
Use the #leading
slot to set the content of the leading icon.
<UInput>
<template #leading>
<UAvatar src="https://avatars.githubusercontent.com/u/739984?v=4" size="3xs" />
</template>
</UInput>
trailing
Use the #trailing
slot to set the content of the trailing icon.
<UInput>
<template #trailing>
<span class="text-gray-500 dark:text-gray-400 text-xs">EUR</span>
</template>
</UInput>
You can for example create a clearable Input by injecting a Button in the trailing
slot that displays when some text is entered.
<template>
<UInput v-model="q" name="q" placeholder="Search..." icon="i-heroicons-magnifying-glass-20-solid" :ui="{ icon: { trailing: { pointer: '' } } }">
<template #trailing>
<UButton
v-show="q !== ''"
color="gray"
variant="link"
icon="i-heroicons-x-mark-20-solid"
:padded="false"
@click="q = ''"
/>
</template>
</UInput>
</template>
<script setup lang="ts">
const q = ref('')
</script>
pointer-events-none
class, if you inject a clickable element in the slot, you need to remove this class to make it clickable by adding :ui="{ icon: { trailing: { pointer: '' } } }"
to the Input.Props
null
config.default.size
undefined
"text"
config.default.color
""
null
null
config.default.variant
null
null
config.default.loadingIcon
null
null
false
false
false
false
false
false
true
Preset
undefined