@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
142 lines (141 loc) • 5.51 kB
TypeScript
import { AfterViewInit, ElementRef, OnDestroy, OnInit } from "@angular/core";
import { FileField, FilePreviewType } from "../models/file-field";
import { DomSanitizer, SafeUrl } from "@angular/platform-browser";
import { BehaviorSubject } from "rxjs";
import { TaskResourceService } from "../../../resources/engine-endpoint/task-resource.service";
import { LoggerService } from "../../../logger/services/logger.service";
import { SnackBarService } from "../../../snack-bar/services/snack-bar.service";
import { TranslateService } from "@ngx-translate/core";
import { EventService } from "../../../event/services/event.service";
import { ResizedEvent } from "angular-resize-event";
import { DataFieldPortalData } from "../../models/data-field-portal-data-injection-token";
import { FileFieldRequest } from "../../../resources/interface/file-field-request-body";
import { AbstractFileFieldDefaultComponent } from '../../models/abstract-file-field-default-component';
import * as i0 from "@angular/core";
export interface FileState {
progress: number;
uploading: boolean;
downloading: boolean;
completed: boolean;
error: boolean;
}
export declare abstract class AbstractFileDefaultFieldComponent extends AbstractFileFieldDefaultComponent<FileField> implements OnInit, AfterViewInit, OnDestroy {
protected _taskResourceService: TaskResourceService;
protected _log: LoggerService;
protected _snackbar: SnackBarService;
protected _translate: TranslateService;
protected _eventService: EventService;
protected _sanitizer: DomSanitizer;
/**
* The width of the default file preview border in pixels. The `px` string is appended in the code.
*/
static readonly DEFAULT_PREVIEW_BORDER_WIDTH = 0;
/**
* The CSS style attribute of the default file preview border.
*/
static readonly DEFAULT_PREVIEW_BORDER_STYLE = "none";
/**
* The CSS color string of the default file preview border.
*/
static readonly DEFAULT_PREVIEW_BORDER_COLOR = "black";
state: FileState;
/**
* Image field view element reference from component template that is initialized after view init.
*/
imageEl: ElementRef;
imageDivEl: ElementRef;
/**
* If file type can be displayed
*/
isDisplayable: boolean;
/**
* Max height of preview
*/
private maxHeight;
/**
* Store file for preview
*/
private fileForPreview;
/**
* Url of preview file
*/
previewSource: SafeUrl;
/**
* Store file to show/download
*/
private fileForDownload;
/**
* Full size file url
*/
fullSource: BehaviorSubject<SafeUrl>;
/**
* Extension of file to preview
*/
previewExtension: FilePreviewType;
/**
* Form control subscription
*/
private updatedFieldSubscription;
isFilePreview: boolean;
isFilePreviewButton: boolean;
/**
* Only inject services.
* @param _taskResourceService Provides to download a file from the backend
* @param _log Logger service
* @param _snackbar Snackbar service to notify user
* @param _translate Translate service for I18N
* @param _eventService used for parsing of backend response
* Option injected trough `NAE_INFORM_ABOUT_INVALID_DATA` InjectionToken
* @param _sanitizer Sanitize url of image preview
* @param dataFieldPortalData Field and form control data if field is provided with portal
*/
protected constructor(_taskResourceService: TaskResourceService, _log: LoggerService, _snackbar: SnackBarService, _translate: TranslateService, _eventService: EventService, _sanitizer: DomSanitizer, dataFieldPortalData: DataFieldPortalData<FileField>);
/**
* Set :
* - File field to [FileFieldService]{@link FileFieldService}
* - Display name
*/
ngOnInit(): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
chooseFile(): void;
/**
* Call after click on file field.
*
* If file field has no file uploaded
* [FilesUploadComponent]{@link AbstractFilesUploadComponent} via [SideMenu]{@link SideMenuService} opens.
*
* Otherwise opens a file picker from which the user can select files.
*/
upload(): void;
download(): void;
private initDownloadFile;
protected downloadViaAnchor(blob: Blob): void;
deleteFile(): void;
isEmpty(): boolean;
protected createRequestBody(): FileFieldRequest;
protected get defaultState(): FileState;
/**
* Construct display name.
*/
constructDisplayName(): string;
/**
* Initialize file field image from backend if it is image type.
*/
protected initFileFieldImage(): void;
protected checkFileBeforeDownload(): boolean;
showPreviewDialog(): void;
changeMaxWidth(event: ResizedEvent): void;
protected initializePreviewIfDisplayable(): void;
getHeight(): number;
getPreviewBorderWidth(): string;
getPreviewBorderStyle(): string;
getPreviewBorderColor(): string;
isBorderLGBTQ(): boolean;
isBorderDefault(): boolean;
borderPropertyEnabled(property: string): boolean;
hasTitle(): boolean;
hasHint(): boolean;
static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFileDefaultFieldComponent, [null, null, null, null, null, null, { optional: true; }]>;
static ɵcmp: i0.ɵɵComponentDeclaration<AbstractFileDefaultFieldComponent, "ncc-abstract-file-default-fied", never, {}, {}, never, never, false, never>;
}