import * as _angular_core from '@angular/core'; import { Signal, OnInit, ElementRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { ZEvent } from '@shival99/z-ui/utils'; import { ClassValue } from 'clsx'; import * as class_variance_authority_types from 'class-variance-authority/types'; import { VariantProps } from 'class-variance-authority'; type ZUploadSize = 'sm' | 'default' | 'lg'; type ZUploadStatus = 'pending' | 'uploading' | 'success' | 'error'; interface ZUploadFile { id: string; name: string; size: number; type: string; file?: File; url?: string; progress: number; status: ZUploadStatus; } interface ZUploadError { file: File; error: string; } interface ZUploadValidator { error: string; message: string; validate?: (files: ZUploadFile[]) => boolean; } interface ZUploadControl { /** Trigger validation and return true if valid */ valid: () => boolean; /** * Trigger validation and return true if has error. * @deprecated Use `valid()` for boolean form-submit checks. */ validate: () => boolean; reset: () => void; clearFiles: () => void; openFileDialog: () => void; markAsTouched: () => void; markAsUntouched: () => void; markAsDirty: () => void; markAsPristine: () => void; hasError: Signal; files: Signal; errorMessage: Signal; } declare const formatFileSize: (bytes: number) => string; declare class ZUploadComponent implements OnInit, ControlValueAccessor { private readonly _injector; private readonly _destroyRef; private readonly _zTranslate; protected readonly fileInputRef: _angular_core.Signal | undefined>; readonly zOnUpload: _angular_core.OutputEmitterRef; readonly zOnRemove: _angular_core.OutputEmitterRef; readonly zOnDownload: _angular_core.OutputEmitterRef; readonly zOnError: _angular_core.OutputEmitterRef; readonly zOnFileChange: _angular_core.OutputEmitterRef; readonly zOnDragover: _angular_core.OutputEmitterRef; readonly zOnDragleave: _angular_core.OutputEmitterRef; readonly zOnDrop: _angular_core.OutputEmitterRef; readonly zControl: _angular_core.OutputEmitterRef; readonly zEvent: _angular_core.OutputEmitterRef; readonly class: _angular_core.InputSignal; readonly zLabel: _angular_core.InputSignal; readonly zLabelClass: _angular_core.InputSignal; readonly zNote: _angular_core.InputSignal; readonly zSize: _angular_core.InputSignal; readonly zAcceptFile: _angular_core.InputSignal; readonly zMultipleFile: _angular_core.InputSignalWithTransform; readonly zMaxSize: _angular_core.InputSignal; readonly zMaxFiles: _angular_core.InputSignal; readonly zRequired: _angular_core.InputSignalWithTransform; readonly zDisabled: _angular_core.InputSignalWithTransform; readonly zReadonly: _angular_core.InputSignalWithTransform; readonly zLoading: _angular_core.InputSignalWithTransform; readonly zShowProgress: _angular_core.InputSignalWithTransform; readonly zValidators: _angular_core.InputSignal; readonly files: _angular_core.WritableSignal; protected readonly inputId: string; protected readonly labelId: string; protected readonly isDragOver: _angular_core.WritableSignal; protected readonly uiState: _angular_core.WritableSignal<{ touched: boolean; dirty: boolean; }>; private readonly _fileError; private readonly _disabled; private readonly _formControl; private readonly _formStateVersion; private readonly _isNgModel; private _onChange; private _onTouched; private _ngControl; protected readonly isDisabled: _angular_core.Signal; protected readonly isBlocked: _angular_core.Signal; private readonly _shouldShowValidation; protected readonly hasError: _angular_core.Signal; protected readonly showError: _angular_core.Signal; protected readonly errorMessage: _angular_core.Signal; protected readonly currentStatus: _angular_core.Signal<"default" | "error" | "disabled" | "readonly" | "active">; protected readonly dropzoneClasses: _angular_core.Signal; protected readonly acceptTypes: _angular_core.Signal; protected readonly formatFileSize: (bytes: number) => string; protected readonly getFileItemClasses: (file: ZUploadFile) => string; ngOnInit(): void; writeValue(value: ZUploadFile[] | null): void; registerOnChange(fn: (value: ZUploadFile[]) => void): void; registerOnTouched(fn: () => void): void; setDisabledState(isDisabled: boolean): void; updateProgress(fileId: string, progress: number): void; setFileStatus(fileId: string, status: ZUploadFile['status']): void; clearFiles(): void; /** @deprecated Use `valid()` for boolean form-submit checks. */ validate(): boolean; valid(): boolean; reset(): void; markAsTouched(): void; markAsUntouched(): void; markAsDirty(): void; markAsPristine(): void; private _emitControl; getFiles(): File[]; protected openFileDialog(): void; protected onFileSelected(event: Event): void; protected onDragOver(event: DragEvent): void; protected onDragLeave(event: DragEvent): void; protected onDrop(event: DragEvent): void; protected removeFile(file: ZUploadFile): void; protected downloadFile(file: ZUploadFile): void; private _getValidationErrors; private _processFiles; private _emitFileChange; private _isValidFileType; private _notifyChange; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare const zUploadDropzoneVariants: (props?: ({ zSize?: "sm" | "default" | "lg" | null | undefined; zStatus?: "default" | "error" | "active" | "disabled" | "readonly" | null | undefined; } & class_variance_authority_types.ClassProp) | undefined) => string; type ZUploadDropzoneVariants = VariantProps; declare const zUploadFileItemVariants: (props?: ({ zStatus?: "pending" | "uploading" | "success" | "error" | null | undefined; } & class_variance_authority_types.ClassProp) | undefined) => string; type ZUploadFileItemVariants = VariantProps; export { ZUploadComponent, formatFileSize, zUploadDropzoneVariants, zUploadFileItemVariants }; export type { ZUploadControl, ZUploadDropzoneVariants, ZUploadError, ZUploadFile, ZUploadFileItemVariants, ZUploadSize, ZUploadStatus, ZUploadValidator };