/**
* TyFileUpload Web Component
*
* Drop zone + file picker primitive. Replaces `` with
* a styleable, drag-and-drop-capable equivalent that works everywhere.
*
* - Click to browse or drag-and-drop
* - Multiple file support
* - Accept filter passed to the underlying file input
* - Emits `change` with `{ files, names }` on every selection
* - Form-associated: participates in FormData and form.reset()
*
* @example
*
*
*/
import { TyComponent } from "../base/ty-component.js";
import type { PropertyChange } from "../utils/property-manager.js";
interface FileUploadState {
listenersSetup: boolean;
}
export interface TyFileUploadElement extends HTMLElement {
multiple: boolean;
accept: string;
name: string;
disabled: boolean;
required: boolean;
label: string;
placeholder: string;
error: string;
files: File[];
form: HTMLFormElement | null;
}
export declare class TyFileUpload extends TyComponent implements TyFileUploadElement {
static formAssociated: boolean;
protected static properties: {
multiple: {
type: "boolean";
visual: boolean;
default: boolean;
};
accept: {
type: "string";
visual: boolean;
default: string;
};
name: {
type: "string";
default: string;
};
disabled: {
type: "boolean";
visual: boolean;
default: boolean;
};
required: {
type: "boolean";
visual: boolean;
default: boolean;
};
label: {
type: "string";
visual: boolean;
default: string;
};
placeholder: {
type: "string";
visual: boolean;
default: string;
};
error: {
type: "string";
visual: boolean;
default: string;
};
};
private _files;
private _isDragging;
private _listenersSetup;
private _dropZoneClickHandler;
private _dropZoneKeydownHandler;
private _dropZoneFocusHandler;
private _dropZoneBlurHandler;
private _dragoverHandler;
private _dragleaveHandler;
private _dropHandler;
private _inputChangeHandler;
constructor();
protected onConnect(): void;
protected onDisconnect(): void;
protected onPropertiesChanged(_changes: PropertyChange[]): void;
protected onFormReset(): void;
protected getFormValue(): FormData | string | null;
get files(): File[];
get multiple(): boolean;
set multiple(v: boolean);
get accept(): string;
set accept(v: string);
get name(): string;
set name(v: string);
get disabled(): boolean;
set disabled(v: boolean);
get required(): boolean;
set required(v: boolean);
get label(): string;
set label(v: string);
get placeholder(): string;
set placeholder(v: string);
get error(): string;
set error(v: string);
get form(): HTMLFormElement | null;
private setFiles;
private removeFile;
private setupEventListeners;
private removeEventListeners;
private buildDropZoneClasses;
private renderFileList;
protected render(): void;
}
export {};
//# sourceMappingURL=file-upload.d.ts.map