/** * TyFileUpload Web Component — drop zone + file picker primitive. Replaces * `` with a styleable, drag-and-drop-capable equivalent. * Form-associated: participates in FormData and form.reset(). */ 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; /** * Match a file against the `accept` attribute the way native inputs do: * comma-separated list of `.ext`, `type/subtype` or `type/*` entries. * No/blank accept matches everything. */ private matchesAccept; 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 {};