@cause-911/material
Version:
Run `npm install @cause-911/material --save` to add this library to your project
157 lines • 11.7 kB
JavaScript
/**
* @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