ngx-custom-material-file-input
Version:
File input management for Angular Material
173 lines (164 loc) • 7.01 kB
TypeScript
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 };