ngx-mat-dynamic-form-builder
Version:
Build dynamic forms in Angular Material using Reactive forms.
29 lines • 3.66 kB
JavaScript
import { Component, Input, Output, EventEmitter } from '@angular/core';
export class FileUploadComponent {
constructor() {
this.file = new EventEmitter();
}
ngOnInit() {
}
processFile(event) {
this.fileSelected = event.target.files[0];
this.file.emit(this.fileSelected);
}
}
FileUploadComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-mat-file-upload',
template: "<ng-container *ngIf=\"buttonType === 'icon'; else normalButton;\">\n <button mat-icon-button (click)=\"fileInput.click()\">\n <mat-icon matBadge=\"1\" [matBadgeHidden]=\"!fileSelected\" matBadgeSize=\"small\" matBadgeColor=\"accent\">\n {{prefixIcon}}</mat-icon>\n <input #fileInput type=\"file\" (change)=\"processFile($event)\" style=\"display:none;\" />\n </button>\n</ng-container>\n<ng-template #normalButton>\n <button mat-flat-button [color]=\"color ? color : 'primary'\" (click)=\"fileInput.click()\">\n <mat-icon *ngIf=\"prefixIcon && !fileSelected\" style=\"margin-left: -8px;\">{{prefixIcon}}</mat-icon>\n <mat-icon *ngIf=\"fileSelected\">check</mat-icon>\n <span>{{label}}</span>\n <input #fileInput type=\"file\" (change)=\"processFile($event)\" style=\"display:none;\" />\n </button>\n</ng-template>",
styles: [""]
},] }
];
FileUploadComponent.ctorParameters = () => [];
FileUploadComponent.propDecorators = {
buttonType: [{ type: Input }],
prefixIcon: [{ type: Input }],
suffixIcon: [{ type: Input }],
label: [{ type: Input }],
color: [{ type: Input }],
file: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdC1keW5hbWljLWZvcm0tYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0UsTUFBTSxPQUFPLG1CQUFtQjtJQVk5QjtRQUpVLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBSTFCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBWTtRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7O1lBekJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQiwwM0JBQTJDOzthQUU1Qzs7Ozt5QkFHRSxLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7bUJBRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LW1hdC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBidXR0b25UeXBlOiAnYnV0dG9uJyB8ICdpY29uJztcbiAgQElucHV0KCkgcHJlZml4SWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBzdWZmaXhJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIGZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG5cbiAgZmlsZVNlbGVjdGVkOiBGaWxlO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBwcm9jZXNzRmlsZShldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmZpbGVTZWxlY3RlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXNbMF07XG4gICAgdGhpcy5maWxlLmVtaXQodGhpcy5maWxlU2VsZWN0ZWQpO1xuICB9XG5cbn1cbiJdfQ==