barneo-file-service
Version:
Комплексная библиотека Vue 3 для работы с файлами в приложениях Barneo. Предоставляет мощную функциональность для загрузки, управления и обработки файлов с валидацией, отслеживанием прогресса и поддержкой localStorage.
235 lines • 11.4 kB
TypeScript
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