import { ElementRef } from '@angular/core'; import { ControlValueAccessor, FormGroup } from '@angular/forms'; import { InputSizeProps, InputVariantProps } from '@sixbell-telco/sdk/components/forms/input'; import { FileExtension } from '../shared/types/file-upload'; import * as i0 from "@angular/core"; /** Possible style variants for the file uploader component */ export type FileUploaderVariantProps = InputVariantProps; /** Possible size variants for the file uploader component */ export type FileUploaderSizeProps = InputSizeProps; /** Configuration object for file uploader styling */ export type FileUploaderProps = { variant?: FileUploaderVariantProps; size?: FileUploaderSizeProps; }; /** * A customizable file upload component with form integration and validation support * * @remarks * Supports file type restrictions, form control integration, and visual validation states. * Implements ControlValueAccessor for Angular form compatibility. * * @example * ```html * * * ``` * * @example * ```html * * * ``` */ export declare class FileUploaderComponent implements ControlValueAccessor { /** * Visual style variant * @defaultValue 'secondary' */ variant: import("@angular/core").InputSignal; /** * Component size variant * @defaultValue 'md' */ size: import("@angular/core").InputSignal; /** * Label displayed above the uploader */ label: import("@angular/core").InputSignal; /** * HTML name attribute for the input */ name: import("@angular/core").InputSignal; /** * Placeholder text when no file is selected */ placeholder: import("@angular/core").InputSignal; /** * Whether to show allowed file extensions * @defaultValue true */ showExtensions: import("@angular/core").InputSignal; /** * Allowed file extensions (e.g., ['.pdf', '.docx']) */ extensions: import("@angular/core").InputSignal; /** * Computed accept attribute for native file input * @internal */ accept: import("@angular/core").Signal; /** * Event emitted when a valid file is selected */ fileUpdated: import("@angular/core").OutputEmitterRef; /** * Stop event propagation for activation events * @defaultValue false */ stopPropagation: import("@angular/core").InputSignal; /** * Event emitted on click */ clicked: import("@angular/core").OutputEmitterRef; /** * Event emitted on Enter keydown */ keyDownEnter: import("@angular/core").OutputEmitterRef; /** * Event emitted on Space keydown */ keyDownSpace: import("@angular/core").OutputEmitterRef; /** * Event emitted on activation (click or keyboard) */ triggered: import("@angular/core").OutputEmitterRef; /** * Current selected filename * @internal */ filename: string; /** * Current file value * @internal */ fileValue: File | null; /** * Formatted extensions string for display * @internal */ formattedExtensions: import("@angular/core").Signal; /** * Reference to the hidden file input * @internal */ fileInput: import("@angular/core").Signal | undefined>; /** * Event emitted on component blur */ blurred: import("@angular/core").OutputEmitterRef; /** * Whether the component is disabled * @defaultValue false */ disabled: import("@angular/core").ModelSignal; /** @internal Track blur events for validation */ private readonly blurTrigger; /** * Parent form group for reactive forms */ parentForm: import("@angular/core").InputSignal | null>; /** * Form control name for reactive forms */ formControlName: import("@angular/core").InputSignal; /** * Two-way bindable file value */ value: import("@angular/core").ModelSignal; /** @internal */ private onControlChange; /** @internal */ private onControlTouch; /** * Writes form value to component * @param obj - The incoming form value */ writeValue(obj: any): void; /** * Registers change callback * @param fn - Callback function for value changes */ registerOnChange(fn: any): void; /** * Registers touch callback * @param fn - Callback function for touch events */ registerOnTouched(fn: any): void; /** * Sets disabled state * @param isDisabled - Whether the component should be disabled */ setDisabledState(isDisabled: boolean): void; /** * Handles click event on the upload area * @internal */ handleClick(event: MouseEvent): void; /** * @internal * Handle Enter key activation */ handleKeyDownEnter(event: Event): void; /** * @internal * Handle Space key activation */ handleKeyDownSpace(event: Event): void; /** * Notifies form control of value changes * @internal */ handleChange(): void; /** * Handles file selection from input * @param event - File input change event * @internal */ handleFileChange(event: Event): void; /** * Clears selected file * @internal */ removeFile(): void; /** * @internal * Returns base component classes */ componentClass(): FileUploaderProps; /** * @internal * Returns error state classes */ errorClass(): FileUploaderProps; /** * @internal * Returns success state classes */ successClass(): FileUploaderProps; /** * Handles blur events and validation * @internal */ handleBlur(): void; /** @internal */ private readonly formControl; /** @internal */ private readonly formControl$; /** @internal */ private readonly statusChanges$; /** @internal */ private readonly stateChanges$; /** @internal */ private readonly statusSignal; /** @internal */ private readonly stateSignal; /** * Computes validation classes based on form state * @internal */ validationClass: import("@angular/core").Signal; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }