UNPKG

barneo-file-service

Version:

Комплексная библиотека Vue 3 для работы с файлами в приложениях Barneo. Предоставляет мощную функциональность для загрузки, управления и обработки файлов с валидацией, отслеживанием прогресса и поддержкой localStorage.

235 lines 11.4 kB
import type { FileUploadResponse } from "../UploadTypes"; /** * Emit события компонента FileUploader */ export interface FileUploaderEmits { /** Файлы успешно загружены */ "upload-success": [files: FileUploadResponse[]]; /** Загрузка завершена (успешно или с ошибками) */ "upload-complete": [allFiles: FileUploadResponse[], failedFiles: string[]]; /** Ошибка загрузки */ "upload-error": [error: Error]; /** Файлы выбраны (но еще не загружены) */ "files-selected": [files: File[]]; /** Модальное окно открыто */ "modal-open": []; /** Модальное окно закрыто */ "modal-close": []; /** Загруженные файлы очищены */ "files-cleared": []; } /** * Props компонента FileUploader */ export interface FileUploaderProps { /** Заголовок модального окна */ title?: string; /** Текст кнопки */ buttonText?: string; /** Размер кнопки */ buttonSize?: "small" | "medium" | "large"; /** Тип кнопки */ buttonVariant?: "primary" | "secondary" | "outline" | "ghost"; /** Тип отображения кнопки */ buttonType?: "default" | "input"; /** Иконка кнопки (CSS класс) */ buttonIcon?: string; /** Автоматически закрывать модальное окно после успешной загрузки */ autoCloseOnSuccess?: boolean; /** Показывать ли кнопку отмены */ showCancelButton?: boolean; /** Текст кнопки отмены */ cancelButtonText?: string; /** Максимальная ширина модального окна */ modalMaxWidth?: string; /** Позиция модального окна */ modalPosition?: "center" | "top" | "bottom"; /** Закрывать ли модальное окно при клике вне его */ closeOnOverlayClick?: boolean; /** Показывать ли анимации */ showAnimations?: boolean; /** Список загруженных файлов для отображения */ uploadedFiles?: FileUploadResponse[]; } /** * Слоты компонента FileUploader для максимальной кастомизации */ export interface FileUploaderSlots { /** * Слот для кнопки открытия модального окна (по умолчанию) * @param props.openModal - Функция для открытия модального окна * @param props.isModalOpen - Состояние открытия модального окна */ button?: (props: { openModal: () => void; isModalOpen: boolean; buttonText: string; buttonSize: string; buttonVariant: string; buttonIcon?: string; }) => any; /** * Слот для input типа кнопки (с заголовком, input полем и форматами) * @param props.openModal - Функция для открытия модального окна * @param props.isModalOpen - Состояние открытия модального окна * @param props.title - Заголовок * @param props.uploadedFiles - Загруженные файлы (включая сохраненные) * @param props.clearUploadedFiles - Функция очистки загруженных файлов * @param props.formatFileSize - Функция форматирования размера файла * @param props.allowedTypes - Разрешенные типы файлов */ "button-input"?: (props: { openModal: () => void; isModalOpen: boolean; title: string; uploadedFiles: any[]; clearUploadedFiles: () => void; formatFileSize: (bytes: number) => string; allowedTypes?: string[]; }) => any; /** * Слот для заголовка модального окна * @param props.title - Заголовок модального окна * @param props.closeModal - Функция для закрытия модального окна */ "modal-header"?: (props: { title: string; closeModal: () => void; }) => any; /** * Слот для области выбора файлов (drag & drop) * @param props.selectFiles - Функция для выбора файлов * @param props.isDragOver - Состояние перетаскивания файлов * @param props.selectedFiles - Выбранные файлы * @param props.errors - Ошибки валидации * @param props.triggerFileInput - Функция для открытия диалога выбора файлов * @param props.formatFileSize - Функция форматирования размера файла * @param props.config - Конфигурация файлового сервиса */ "file-drop-zone"?: (props: { selectFiles: (files: FileList | File[]) => void; isDragOver: boolean; selectedFiles: File[]; errors: string[]; triggerFileInput: () => void; formatFileSize: (bytes: number) => string; config: { multiple: boolean; maxFiles: number; maxFileSize: number; allowedTypes?: string[]; }; }) => any; /** * Слот для списка выбранных файлов * @param props.selectedFiles - Выбранные файлы * @param props.removeFile - Функция удаления файла по индексу * @param props.removeFileByName - Функция удаления файла по имени * @param props.clearFiles - Функция очистки всех файлов * @param props.isFileUploading - Функция проверки загрузки файла * @param props.formatFileSize - Функция форматирования размера файла * @param props.isUploading - Общее состояние загрузки */ "file-list"?: (props: { selectedFiles: File[]; removeFile: (index: number) => void; removeFileByName: (fileName: string) => void; clearFiles: () => void; isFileUploading: (file: File) => boolean; formatFileSize: (bytes: number) => string; isUploading: boolean; }) => any; /** * Слот для кнопок действий в футере * @param props.uploadFiles - Функция загрузки выбранных файлов * @param props.selectStoredFiles - Функция выбора сохраненных файлов * @param props.clearFiles - Функция очистки файлов * @param props.retryFailedUploads - Функция повтора неудачных загрузок * @param props.isUploading - Состояние загрузки * @param props.hasSelectedFiles - Есть ли выбранные файлы * @param props.hasErrors - Есть ли ошибки * @param props.activeMode - Активный режим (upload/select) * @param props.hasSelectedStoredFiles - Есть ли выбранные сохраненные файлы * @param props.closeModal - Функция закрытия модального окна * @param props.showCancelButton - Показывать ли кнопку отмены * @param props.cancelButtonText - Текст кнопки отмены */ "action-buttons"?: (props: { uploadFiles: () => Promise<any>; selectStoredFiles: () => void; clearFiles: () => void; retryFailedUploads: () => void; isUploading: boolean; hasSelectedFiles: boolean; hasErrors: boolean; activeMode: "upload" | "select"; hasSelectedStoredFiles: boolean; closeModal: () => void; showCancelButton: boolean; cancelButtonText: string; }) => any; /** * Слот для отображения ошибок * @param props.errors - Массив ошибок * @param props.clearErrors - Функция очистки ошибок */ errors?: (props: { errors: string[]; clearErrors: () => void; }) => any; /** * Слот для результатов загрузки * @param props.results - Успешно загруженные файлы * @param props.failedFiles - Имена файлов с ошибками * @param props.clearCompletedUploads - Функция очистки результатов */ "upload-results"?: (props: { results: FileUploadResponse[]; failedFiles: string[]; clearCompletedUploads: () => void; }) => any; /** * Слот для футера модального окна * @param props.closeModal - Функция закрытия модального окна * @param props.uploadFiles - Функция загрузки файлов * @param props.isUploading - Состояние загрузки */ "modal-footer"?: (props: { closeModal: () => void; uploadFiles: () => Promise<any>; isUploading: boolean; }) => any; /** * Слот для переключателя режимов (загрузка/выбор) * @param props.activeMode - Активный режим * @param props.setActiveMode - Функция смены режима * @param props.storedFilesCount - Количество сохраненных файлов */ "mode-switcher"?: (props: { activeMode: "upload" | "select"; setActiveMode: (mode: "upload" | "select") => void; storedFilesCount: number; }) => any; /** * Слот для списка сохраненных файлов * @param props.storedFiles - Массив сохраненных файлов * @param props.selectedStoredFiles - Массив выбранных файлов * @param props.toggleStoredFileSelection - Функция переключения выбора файла * @param props.isStoredFileSelected - Функция проверки выбора файла * @param props.removeStoredFile - Функция удаления файла из хранилища * @param props.formatFileSize - Функция форматирования размера * @param props.formatDate - Функция форматирования даты * @param props.hasStoredFiles - Есть ли сохраненные файлы */ "stored-files"?: (props: { storedFiles: any[]; selectedStoredFiles: any[]; toggleStoredFileSelection: (fileId: string) => void; isStoredFileSelected: (fileId: string) => boolean; removeStoredFile: (fileId: string) => void; formatFileSize: (bytes: number) => string; formatDate: (dateString: string) => string; hasStoredFiles: boolean; }) => any; } //# sourceMappingURL=FileUploaderTypes.d.ts.map