UNPKG

ngx-custom-material-file-input

Version:
173 lines (164 loc) 7.01 kB
import * as i0 from '@angular/core'; import { OnInit, OnDestroy, DoCheck, ElementRef, Renderer2, InjectionToken, PipeTransform } from '@angular/core'; import { NgForm, FormGroupDirective, NgControl, ControlValueAccessor, ValidatorFn } from '@angular/forms'; import { MatFormFieldControl } from '@angular/material/form-field'; import { ErrorStateMatcher } from '@angular/material/core'; import { FocusMonitor } from '@angular/cdk/a11y'; import { Subject } from 'rxjs'; /** Base class for error state management */ declare class FileInputBase { _defaultErrorStateMatcher: ErrorStateMatcher; _parentForm: NgForm | null; _parentFormGroup: FormGroupDirective | null; ngControl: NgControl; stateChanges: Subject<void>; private _errorState; constructor(_defaultErrorStateMatcher: ErrorStateMatcher, _parentForm: NgForm | null, _parentFormGroup: FormGroupDirective | null, ngControl: NgControl, stateChanges: Subject<void>); /** Determines whether the control is in an error state */ get errorState(): boolean; /** Triggers error state update */ updateErrorState(): void; } /** * The files to be uploaded */ declare class FileInput { private _files; private delimiter; private _fileNames; constructor(_files: File[] | null, delimiter?: string); get files(): File[]; get fileNames(): string; } declare class FileInputComponent extends FileInputBase implements MatFormFieldControl<FileInput>, ControlValueAccessor, OnInit, OnDestroy, DoCheck { private fm; private _elementRef; private _renderer; _defaultErrorStateMatcher: ErrorStateMatcher; ngControl: NgControl; _parentForm: NgForm; _parentFormGroup: FormGroupDirective; static nextId: number; focused: boolean; controlType: string; autofilled: boolean; private _placeholder; private _required; private _multiple; private _previewUrls; private _objectURLs; valuePlaceholder: string; accept: string | null; errorStateMatcher: ErrorStateMatcher; defaultIconBase64: string; get errorState(): boolean; id: string; describedBy: string; setDescribedByIds(ids: string[]): void; get value(): FileInput | null; set value(fileInput: FileInput | null); get multiple(): boolean; set multiple(value: boolean | string); get placeholder(): string; set placeholder(plh: string); /** * Whether the current input has files */ get empty(): boolean; get shouldLabelFloat(): boolean; get required(): boolean; set required(req: boolean | string); get isDisabled(): boolean; get disabled(): boolean; set disabled(dis: boolean | string); get previewUrls(): string[]; onContainerClick(event: MouseEvent): void; /** * @see https://angular.io/api/forms/ControlValueAccessor */ constructor(fm: FocusMonitor, _elementRef: ElementRef, _renderer: Renderer2, _defaultErrorStateMatcher: ErrorStateMatcher, ngControl: NgControl, _parentForm: NgForm, _parentFormGroup: FormGroupDirective); private _onChange; private _onTouched; get fileNames(): string; writeValue(obj: FileInput | null): void; registerOnChange(fn: (_: any) => void): void; registerOnTouched(fn: any): void; /** * Remove all files from the file input component * @param [event] optional event that may have triggered the clear action */ clear(event?: Event): void; change(event: Event): void; private updatePreviewUrls; private revokeObjectURLs; removeFile(index: number): void; blur(): void; setDisabledState(isDisabled: boolean): void; open(): void; ngOnInit(): void; ngOnDestroy(): void; ngDoCheck(): void; static ɵfac: i0.ɵɵFactoryDeclaration<FileInputComponent, [null, null, null, null, { optional: true; self: true; }, { optional: true; }, { optional: true; }]>; static ɵcmp: i0.ɵɵComponentDeclaration<FileInputComponent, "ngx-mat-file-input", never, { "autofilled": { "alias": "autofilled"; "required": false; }; "valuePlaceholder": { "alias": "valuePlaceholder"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "defaultIconBase64": { "alias": "defaultIconBase64"; "required": false; }; "value": { "alias": "value"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>; } /** * Optional token to provide custom configuration to the module */ declare const NGX_MAT_FILE_INPUT_CONFIG: InjectionToken<FileInputConfig>; /** * Provide additional configuration to dynamically customize the module injection */ interface FileInputConfig { /** * Unit used with the ByteFormatPipe, default value is *Byte*. * The first letter is used for the short notation. */ sizeUnit: string; } declare class ByteFormatPipe implements PipeTransform { private config; private unit; constructor(config: FileInputConfig); transform(value: any, args?: any): any; private formatBytes; static ɵfac: i0.ɵɵFactoryDeclaration<ByteFormatPipe, [{ optional: true; }]>; static ɵpipe: i0.ɵɵPipeDeclaration<ByteFormatPipe, "byteFormat", false>; } declare class MaterialFileInputModule { static ɵfac: i0.ɵɵFactoryDeclaration<MaterialFileInputModule, never>; static ɵmod: i0.ɵɵNgModuleDeclaration<MaterialFileInputModule, [typeof FileInputComponent, typeof ByteFormatPipe], never, [typeof FileInputComponent, typeof ByteFormatPipe]>; static ɵinj: i0.ɵɵInjectorDeclaration<MaterialFileInputModule>; } declare class FileValidator { /** * Function to control content of files * * @param bytes max number of bytes allowed * * @returns Validator function */ static maxContentSize(bytes: number): ValidatorFn; /** * Validator function to validate accepted file formats * * @param acceptedMimeTypes Array of accepted MIME types (e.g., ['image/jpeg', 'application/pdf']) * @returns Validator function */ static acceptedMimeTypes(acceptedMimeTypes: string[]): ValidatorFn; /** * Validator function to validate the min number of uploaded files * * @param minCount Number of minimum files to upload * @returns Validator function */ static minFileCount(minCount: number): ValidatorFn; /** * Validator function to validate the max number of uploaded files * * @param maxCount Number of maximum files to upload * @returns Validator function */ static maxFileCount(maxCount: number): ValidatorFn; } export { ByteFormatPipe, FileInput, FileInputComponent, FileValidator, MaterialFileInputModule, NGX_MAT_FILE_INPUT_CONFIG }; export type { FileInputConfig };