/** * 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