Input

The VInput component allows users to input data with various styling options. This document provides detailed usage instructions and prop descriptions to help developers integrate the component effectively.

Features

  • Provides three variants: filled (default), outlined, and underline for different input styles.
  • Provides four sizes: sm, md (default), lg and auto for different input sizes.
  • Supports v-model for easy two-way data binding.
  • Allows adding icons as prefixes or suffixes to the input field for enhanced user experience.

Usage

Here's basic example of using the VInput component.

View Code
<template>
  <VInput label="Username" placeholder="Enter your username" />
</template>

Variants

The VInput component provides three style variants: filled, outlined, and underline.

View Code
<template>
  <VInput
    outer-class="mb-4"
    label="Username"
    placeholder="Enter your username"
    variant="filled"
  />
  <VInput
    outer-class="mb-4"
    label="Username"
    placeholder="Enter your username"
    variant="outlined"
  />
  <VInput
    outer-class="mb-4"
    label="Username"
    placeholder="Enter your username"
    variant="underline"
  />
</template>

Sizes

The VInput component accept four size variants: sm, md, lg and auto.

View Code
<template>
  <VInput
    wrapper-class="mb-4"
    label="Username"
    placeholder="Enter your username"
    size="sm"
  />
  <VInput
    wrapper-class="mb-4"
    label="Username"
    placeholder="Enter your username"
    size="md"
  />
  <VInput
    wrapper-class="mb-4"
    label="Username"
    placeholder="Enter your username"
    size="lg"
  />
  <VInput
    wrapper-class="mb-4"
    label="Username"
    placeholder="Enter your username"
    size="auto"
  />
</template>

Hint

You can add a hint to provide additional information about the input via hint prop.

This is a hint
View Code
<template>
  <VInput
    label="Username"
    placeholder="Enter your username"
    hint="This is a hint"
  />
</template>

Error

You can display an error message when the input value is invalid or there's an error with error and error-message props.

This is an error
This is an error
This is an error
View Code
<template>
  <VInput
    label="Username"
    placeholder="Enter your username"
    error="This is an error"
  />
</template>

Icons

You can add icons to the input to enhance the user experience with prepend-icon or append-icon prop.

View Code
<template>
  <VInput
    label="Username" placeholder="Enter your username"
    prepend-icon="ph:person-fill"
    append-icon="ph:check-circle-fill"
    outer-class="mb-4"
  />
  <VInput
    label="Email" placeholder="Enter your email"
    prepend-icon="ri:at-fill"
  />
</template>

v-model

The VInput component supports the v-model directive for two-way data binding.

Value: 
View Code
<template>
  <VInput
    v-model="value"
    label="Username"
    placeholder="Enter your username"
  />
  <pre class="mt-4">Value: {{ value }}</pre>
</template>

Input Types

The VInput component supports various input types.

Values: {
  "text": "",
  "password": "",
  "email": "",
  "number": 0,
  "url": "",
  "tel": "",
  "search": "",
  "date": "",
  "time": "",
  "datetime-local": "",
  "month": "",
  "week": "",
  "color": "",
  "file": "",
  "range": 0
}
View Code
<script setup lang="ts">
const types = [
  'text',
  'password',
  'email',
  'number',
  'url',
  'tel',
  'search',
  'date',
  'time',
  'datetime-local',
  'month',
  'week',
  'color',
  'file',
  'range',
]

const form = reactive({
  'text': '',
  'password': '',
  'email': '',
  'number': 0,
  'url': '',
  'tel': '',
  'search': '',
  'date': '',
  'time': '',
  'datetime-local': '',
  'month': '',
  'week': '',
  'color': '',
  'file': '',
  'range': 0,
})
</script>

<template>
  <VInput
    v-for="type in types"
    :key="type"
    v-model="form[type]"
    :type="type"
    :label="type"
    placeholder="This is placeholder"
    outer-class="mb-4"
  />
  <pre class="mt-4">Values: {{ form }}</pre>
</template>

Props

The VInput component accepts the following props:

PropTypeDefaultDescription
variant'filled' | 'outlined' | 'underline''filled'Specifies the style variant for the input.
typestring'text'Specifies the type of input (e.g., 'text', 'password', 'number', etc.).
labelstring-The label for the input.
placeholderstring-The placeholder text to display inside the input when it is empty.
prependIconstring-The name of the icon to display before the input element.
prependIconClassstring-CSS class to customize the styling of the prepend icon.
prependIconSizestring-The size of the prepend icon.
appendIconstring-The name of the icon to display after the input element.
appendIconClassstring-CSS class to customize the styling of the append icon.
appendIconSizestring-The size of the append icon.
iconSizestring'20'The default size for the icons (both prepend and append icons).
size'sm' | 'md' | 'lg''auto'-
outerClassstring-CSS class to customize the styling of the outer container of the input.

Events

The VInput component emits the following events:

EventParametersDescription
click:prepend-Triggered when the user clicks on the prepend area.
click:prependIcon-Triggered when the user clicks on the prepend icon.
click:append-Triggered when the user clicks on the append area.
click:appendIcon-Triggered when the user clicks on the append icon.