Appearance
File Input Component Demo
This page demonstrates the File Input component with various configurations and examples.
Basic File Input
A simple file input with a default label.
vue
<template>
<OFileInput
label="Upload your file"
:modelValue="selectedFile"
@update:modelValue="selectedFile = $event"
/>
</template>
<script setup>
import { ref } from "vue";
const selectedFile = ref(null);
</script>Multiple File Input
A file input that allows selecting multiple files.
vue
<template>
<OFileInput
label="Upload your files"
:multiple="true"
:modelValue="selectedFiles"
@update:modelValue="selectedFiles = $event"
/>
</template>
<script setup>
import { ref } from "vue";
const selectedFiles = ref([]);
</script>File Input with Chip Display
A file input that displays selected files as chips.
vue
<template>
<OFileInput
label="Upload your files"
:multiple="true"
:chip="true"
:modelValue="selectedFiles"
@update:modelValue="selectedFiles = $event"
/>
</template>
<script setup>
import { ref } from "vue";
const selectedFiles = ref([]);
</script>File Input with File Type Restrictions
A file input that only accepts specific file types.
vue
<template>
<OFileInput
label="Upload images"
accept="image/*"
:modelValue="selectedFile"
@update:modelValue="selectedFile = $event"
/>
</template>
<script setup>
import { ref } from "vue";
const selectedFile = ref(null);
</script>File Input with Size Restrictions
A file input with maximum file size and count restrictions.
vue
<template>
<OFileInput
label="Upload files (max 2 files, 5MB total)"
:multiple="true"
:maxFiles="2"
:maxSize="5242880"
:modelValue="selectedFiles"
@update:modelValue="selectedFiles = $event"
/>
</template>
<script setup>
import { ref } from "vue";
const selectedFiles = ref([]);
</script>File Input with Drag and Drop
The file input component supports drag and drop functionality by default. Try dragging files onto the input area.
vue
<template>
<OFileInput
label="Drag and drop files here"
:multiple="true"
:modelValue="selectedFiles"
@update:modelValue="selectedFiles = $event"
/>
</template>
<script setup>
import { ref } from "vue";
const selectedFiles = ref([]);
</script>File Input with Validation
A file input with custom validation rules.
vue
<template>
<OFileInput
label="Upload PDF files only"
accept=".pdf"
:modelValue="selectedFile"
@update:modelValue="selectedFile = $event"
@validate="handleValidation"
/>
</template>
<script setup>
import { ref } from "vue";
const selectedFile = ref(null);
const handleValidation = (validationResult) => {
console.log("Validation result:", validationResult);
};
</script>File Input States
File input in different states: disabled and readonly.
vue
<template>
<div class="state-demo">
<OFileInput
label="Normal File Input"
:modelValue="selectedFile"
@update:modelValue="selectedFile = $event"
/>
<OFileInput
label="Disabled File Input"
:disabled="true"
:modelValue="selectedFile"
/>
<OFileInput
label="Disabled File Input"
:disabled="true"
:modelValue="dummyFile"
/>
<OFileInput
label="Readonly File Input"
:readonly="true"
:modelValue="selectedFile"
/>
</div>
</template>
<script setup>
import { ref } from "vue";
const selectedFile = ref(null);
</script>
<style>
.state-demo {
display: flex;
flex-direction: column;
gap: 16px;
}
</style>