UNPKG

@cause-911/material

Version:

Run `npm install @cause-911/material --save` to add this library to your project

157 lines 11.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { MatDialog } from '@angular/material'; import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import { TranslateService } from '@cause-911/core'; import { SimpleDialogComponent } from '../simple-dialog/simple-dialog.component'; export class InputFileComponent { /** * @param {?} translateService * @param {?} dialog */ constructor(translateService, dialog) { this.translateService = translateService; this.dialog = dialog; this.readend = new EventEmitter(); this.accept = ''; this.multiple = false; this.icon = ''; this.text = ''; this.labels = {}; } /** * @return {?} */ ngOnInit() { if (!this.icon && !this.text) { this.translateService.get(['material.select', 'material.dialogTitle', 'material.dialogMessage']).subscribe((/** * @param {?} labels * @return {?} */ labels => { this.labels = labels; this.text = labels['material.select']; })); } } /** * @param {?} e * @return {?} */ onSelectFile(e) { for (let i = 0, j = e.target.files.length; i < j; i++) { /** @type {?} */ const file = e.target.files[i]; /** @type {?} */ const reader = new FileReader(); reader.onerror = ((/** * @param {?} error * @return {?} */ error => this.onError(error))); reader.onload = ((/** * @param {?} event * @return {?} */ event => this.onReadEnd(file, event))); reader.readAsDataURL(file); } if (e.target.files.length) { this.dialog.open(SimpleDialogComponent, { width: '250px', disableClose: true, data: { title: this.labels['material.dialogTitle'], message: this.labels['material.dialogMessage'] } }); } } /** * @param {?} event * @return {?} */ openDialog(event) { if (this.file) { this.file.nativeElement.click(); } event.stopPropagation(); } /** * @private * @param {?} error * @return {?} */ onError(error) { throw error; } /** * @private * @param {?} file * @param {?} e * @return {?} */ onReadEnd(file, e) { this.dialog.closeAll(); this.readend.emit({ name: file.name, size: file.size, type: file.type, lastModifiedDate: file.lastModifiedDate, content: e.target['result'], file: file, }); } } InputFileComponent.decorators = [ { type: Component, args: [{ selector: 'cause-input-file', template: "<button mat-raised-button (click)=\"openDialog($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n <span *ngIf=\"text\">{{text}}</span>\n</button>\n<ng-container *ngIf=\"multiple; else notMultipleInput\">\n <input #file type=\"file\" (change)=\"onSelectFile($event)\" [accept]=\"accept\" multiple=\"multiple\" />\n</ng-container>\n\n<ng-template #notMultipleInput>\n <input #file type=\"file\" (change)=\"onSelectFile($event)\" [accept]=\"accept\" />\n</ng-template>", styles: [":host input{display:none}"] }] } ]; /** @nocollapse */ InputFileComponent.ctorParameters = () => [ { type: TranslateService }, { type: MatDialog } ]; InputFileComponent.propDecorators = { file: [{ type: ViewChild, args: ['file', { static: false },] }], readend: [{ type: Output }], accept: [{ type: Input }], multiple: [{ type: Input }], icon: [{ type: Input }], text: [{ type: Input }] }; if (false) { /** @type {?} */ InputFileComponent.prototype.file; /** @type {?} */ InputFileComponent.prototype.readend; /** @type {?} */ InputFileComponent.prototype.accept; /** @type {?} */ InputFileComponent.prototype.multiple; /** @type {?} */ InputFileComponent.prototype.icon; /** @type {?} */ InputFileComponent.prototype.text; /** * @type {?} * @private */ InputFileComponent.prototype.labels; /** * @type {?} * @private */ InputFileComponent.prototype.translateService; /** * @type {?} * @private */ InputFileComponent.prototype.dialog; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY2F1c2UtOTExL21hdGVyaWFsLyIsInNvdXJjZXMiOlsibGliL2lucHV0LWZpbGUvaW5wdXQtZmlsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFPakYsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7SUFVM0IsWUFDWSxnQkFBa0MsRUFDbEMsTUFBaUI7UUFEakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVm5CLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzlCLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRVgsV0FBTSxHQUFRLEVBQUUsQ0FBQztJQU16QixDQUFDOzs7O0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUNyQixDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixDQUFDLENBQ3hFLENBQUMsU0FBUzs7OztZQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1B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aWFsJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQGNhdXNlLTkxMS9jb3JlJztcbmltcG9ydCB7IFNpbXBsZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBsZS1kaWFsb2cvc2ltcGxlLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NhdXNlLWlucHV0LWZpbGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRGaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdmaWxlJywge3N0YXRpYzogZmFsc2V9KSBmaWxlOiBFbGVtZW50UmVmO1xuICAgIEBPdXRwdXQoKSByZWFkZW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBJbnB1dCgpIGFjY2VwdCA9ICcnO1xuICAgIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gICAgQElucHV0KCkgaWNvbiA9ICcnO1xuICAgIEBJbnB1dCgpIHRleHQgPSAnJztcblxuICAgIHByaXZhdGUgbGFiZWxzOiBhbnkgPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5pY29uICYmICF0aGlzLnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoXG4gICAgICAgICAgICAgICAgWydtYXRlcmlhbC5zZWxlY3QnLCAnbWF0ZXJpYWwuZGlhbG9nVGl0bGUnLCAnbWF0ZXJpYWwuZGlhbG9nTWVzc2FnZSddXG4gICAgICAgICAgICApLnN1YnNjcmliZShsYWJlbHMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgICAgICAgICAgICAgIHRoaXMudGV4dCA9IGxhYmVsc1snbWF0ZXJpYWwuc2VsZWN0J107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0RmlsZShlKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBqID0gZS50YXJnZXQuZmlsZXMubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gZS50YXJnZXQuZmlsZXNbaV07XG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IgPT4gdGhpcy5vbkVycm9yKGVycm9yKSk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGV2ZW50ID0+IHRoaXMub25SZWFkRW5kKGZpbGUsIGV2ZW50KSk7XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlLnRhcmdldC5maWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oU2ltcGxlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcyNTBweCcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMubGFiZWxzWydtYXRlcmlhbC5kaWFsb2dUaXRsZSddLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmxhYmVsc1snbWF0ZXJpYWwuZGlhbG9nTWVzc2FnZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuRGlhbG9nKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkVycm9yKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25SZWFkRW5kKGZpbGUsIGUpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICAgICAgdGhpcy5yZWFkZW5kLmVtaXQoe1xuICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICAgICAgdHlwZTogZmlsZS50eXBlLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkRGF0ZTogZmlsZS5sYXN0TW9kaWZpZWREYXRlLFxuICAgICAgICAgICAgY29udGVudDogZS50YXJnZXRbJ3Jlc3VsdCddLFxuICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19