Dropzone

Компонент Dropzone позволяет загружать файлы как нажатием на кнопку так и перетаскиванием.

  • Файл: app/components/ui/select/Select.vue

Быстрый старт

Перетащите файлы сюда

Файлы должны быть не более 10 MB

<script setup lang="ts">
import { Dropzone } from 'components/ui/dropzone';

const files = ref<File[]>([]);
</script>

<template>
  <Dropzone v-model="files"/>
</template>

API

Props

PropTypeПо умолчаниюОписание
multiplebooleanfalseПринимать ли множество файлов
disabledbooleanfalse-
state'error', 'success', undefinedundefinedСостояние (ошибка, успех, неопределено)
acceptstringundefinedДоступные форматы файлов
maxFileSizenumber10Максимальный размер файлов (MB)
maxFilesnumber10Максимальное количество файлов
namestringundefinedname для инпута с файлом
widthnumber, stringundefinedШирина контейнера
heightnumber, stringundefinedВысота контейнера
imgWidthnumber, stringundefinedШирина превью для изображений
imgHeightnumber, stringundefinedВысота превью для изображений
previewWrapperClassesstringundefinedДополнительные классы для контейнера
previewPositioninside, outsideinsideРасположение превьюшек: внутри контейнера или вне
showSelectButtonbooleantrueОтображение кнопки с выбором
selectFileStrategyreplace, mergereplaceСтратегия редактирования файлов: замена или добавление

Models

ModelTypeПо умолчанию
modelValueDropzoneFile[]undefined

Emits

EmitTypeТриггер
update:modelValueArrayИзменение спика файлов
dropEventПеретаскивание файла в дропзону
fileRemovedObjectУдаление файла из списка

Slots

SlotНазначение
placeholder-imgЗаменяет заглушку
titleЗаменяет текст "Перетащите файлы сюда"
buttonЗаменяет кнопку "Выбрать файл"
descriptionЗаменяет описание с требованиями к файлу
previewКастомное превью для картинок

Methods

MethodПараметрыНазначение
clearFiles()-Очищает список файлов

Варианты

С множеством файлов

Перетащите файлы сюда

Файлы должны быть не более 10 MB

<script setup lang="ts">
import { Dropzone } from 'components/ui/dropzone';

const files = ref<File[]>([]);
</script>

<template>
  <Dropzone 
    v-model="files"
    multiple
  />
</template>

Без кнопки

Перетащите файлы сюда

Файлы должны быть не более 10 MB

<script setup lang="ts">
import { Dropzone } from 'components/ui/dropzone';

const files = ref<File[]>([]);
</script>

<template>
  <Dropzone 
    v-model="files"
    :showSelectButton="false"
  />
</template>

C определенным размером и форматом

Перетащите файлы сюда

Файлы должны быть не более 10 MB и в формате image/png image/jpeg

<script setup lang="ts">
import { Dropzone } from 'components/ui/dropzone';

const files = ref<File[]>([]);
</script>

<template>
  <Dropzone 
    v-model="files"
    :maxFileSize="10"
    accept="image/png, image/jpeg"
  />
</template>

Отображение превьюшек вне дропзоны

Перетащите файлы сюда

Файлы должны быть не более 10 MB

<script setup lang="ts">
import { Dropzone } from 'components/ui/dropzone';

const files = ref<File[]>([]);
const previews = ref<string[]>(['https://coffeestudio.ru/static/images/svg/header-logo.svg'])
</script>

<template>
  <Dropzone 
    v-model="files"
    v-model:previews="previews"
    mode="edit"
    multiple
    previewPosition="outside"
    previewWrapperClasses="bg-gray-100 p-4 rounded-lg border-2 border-dashed border-gray-300"
  />
</template>