UNPKG

angular-material-fileupload

Version:
201 lines 16.5 kB
/** * @fileoverview added by tsickle * Generated from: lib/mat-file-upload-queue/mat-file-upload-queue.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ChangeDetectionStrategy, ContentChildren, forwardRef, QueryList, Input, ChangeDetectorRef, } from "@angular/core"; import { merge } from "rxjs"; import { HttpHeaders, HttpParams } from "@angular/common/http"; import { startWith } from "rxjs/operators"; import { MatFileUploadQueueService } from "./mat-file-upload-queue.service"; import { MatFileUploadComponent } from "../mat-file-upload/mat-file-upload.component"; export class MatFileUploadQueueComponent { /** * @param {?} matFileUploadQueueService * @param {?} changeDetectorRef */ constructor(matFileUploadQueueService, changeDetectorRef) { this.matFileUploadQueueService = matFileUploadQueueService; this.changeDetectorRef = changeDetectorRef; this.files = []; this.httpRequestHeaders = new HttpHeaders(); this.httpRequestParams = new HttpParams(); this.fileAlias = "file"; this.uploadAllColor = "primary"; this.uploadAllLabel = "Upload All"; this.removeAllColor = "primary"; this.removeAllLabel = "Remove All"; } /** * Combined stream of all of the file upload remove change events. * @return {?} */ get fileUploadRemoveEvents() { return merge(...this.fileUploads.map((/** * @param {?} fileUpload * @return {?} */ (fileUpload) => fileUpload.removeEvent))); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { this.matFileUploadQueueService.initialize({ httpUrl: changes["httpUrl"] ? changes["httpUrl"].currentValue : undefined, httpRequestHeaders: changes["httpRequestHeaders"] ? changes["httpRequestHeaders"].currentValue : undefined, httpRequestParams: changes["httpRequestParams"] ? changes["httpRequestParams"].currentValue : undefined, fileAlias: changes["fileAlias"] ? changes["fileAlias"].currentValue : undefined, }); } /** * @return {?} */ ngAfterViewInit() { // When the list changes, re-subscribe this._changeSubscription = this.fileUploads.changes .pipe(startWith(null)) .subscribe((/** * @return {?} */ () => { if (this._fileRemoveSubscription) { this._fileRemoveSubscription.unsubscribe(); } this._listenTofileRemoved(); })); } /** * @private * @return {?} */ _listenTofileRemoved() { this._fileRemoveSubscription = this.fileUploadRemoveEvents.subscribe((/** * @param {?} event * @return {?} */ (event) => { this.files.splice(event.id, 1); this.changeDetectorRef.markForCheck(); })); } /** * @param {?} file * @return {?} */ add(file) { this.files.push(file); this.changeDetectorRef.markForCheck(); } /** * @return {?} */ uploadAll() { this.fileUploads.forEach((/** * @param {?} fileUpload * @return {?} */ (fileUpload) => { fileUpload.upload(); })); } /** * @return {?} */ removeAll() { this.files.splice(0, this.files.length); this.changeDetectorRef.markForCheck(); } /** * @return {?} */ ngOnDestroy() { if (this._changeSubscription) this._changeSubscription.unsubscribe(); if (this._fileRemoveSubscription) this._fileRemoveSubscription.unsubscribe(); if (this.files) { this.removeAll(); } } } MatFileUploadQueueComponent.decorators = [ { type: Component, args: [{ selector: "mat-file-upload-queue", template: "<ng-content></ng-content>\n<br />\n<button\n mat-raised-button\n [color]=\"uploadAllColor\"\n *ngIf=\"files.length > 0\"\n (click)=\"uploadAll()\"\n>\n {{ uploadAllLabel }}\n</button>\n<button\n mat-raised-button\n [color]=\"removeAllColor\"\n *ngIf=\"files.length > 0\"\n (click)=\"removeAll()\"\n>\n {{ removeAllLabel }}\n</button>\n", changeDetection: ChangeDetectionStrategy.OnPush, providers: [MatFileUploadQueueService], styles: [""] }] } ]; /** @nocollapse */ MatFileUploadQueueComponent.ctorParameters = () => [ { type: MatFileUploadQueueService }, { type: ChangeDetectorRef } ]; MatFileUploadQueueComponent.propDecorators = { fileUploads: [{ type: ContentChildren, args: [forwardRef((/** * @return {?} */ () => MatFileUploadComponent)),] }], httpUrl: [{ type: Input }], httpRequestHeaders: [{ type: Input }], httpRequestParams: [{ type: Input }], fileAlias: [{ type: Input }], uploadAllColor: [{ type: Input }], uploadAllLabel: [{ type: Input }], removeAllColor: [{ type: Input }], removeAllLabel: [{ type: Input }] }; if (false) { /** @type {?} */ MatFileUploadQueueComponent.prototype.fileUploads; /** * Subscription to remove changes in files. * @type {?} * @private */ MatFileUploadQueueComponent.prototype._fileRemoveSubscription; /** * Subscription to changes in the files. * @type {?} * @private */ MatFileUploadQueueComponent.prototype._changeSubscription; /** @type {?} */ MatFileUploadQueueComponent.prototype.files; /** @type {?} */ MatFileUploadQueueComponent.prototype.httpUrl; /** @type {?} */ MatFileUploadQueueComponent.prototype.httpRequestHeaders; /** @type {?} */ MatFileUploadQueueComponent.prototype.httpRequestParams; /** @type {?} */ MatFileUploadQueueComponent.prototype.fileAlias; /** @type {?} */ MatFileUploadQueueComponent.prototype.uploadAllColor; /** @type {?} */ MatFileUploadQueueComponent.prototype.uploadAllLabel; /** @type {?} */ MatFileUploadQueueComponent.prototype.removeAllColor; /** @type {?} */ MatFileUploadQueueComponent.prototype.removeAllLabel; /** * @type {?} * @private */ MatFileUploadQueueComponent.prototype.matFileUploadQueueService; /** * @type {?} * @private */ MatFileUploadQueueComponent.prototype.changeDetectorRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWZpbGUtdXBsb2FkLXF1ZXVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbWF0ZXJpYWwtZmlsZXVwbG9hZC8iLCJzb3VyY2VzIjpbImxpYi9tYXQtZmlsZS11cGxvYWQtcXVldWUvbWF0LWZpbGUtdXBsb2FkLXF1ZXVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZixVQUFVLEVBR1YsU0FBUyxFQUVULEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFTdEYsTUFBTSxPQUFPLDJCQUEyQjs7Ozs7SUFrQ3RDLFlBQ1UseUJBQW9ELEVBQ3BELGlCQUFvQztRQURwQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFuQnZDLFVBQUssR0FBZSxFQUFFLENBQUM7UUEyQjlCLHVCQUFrQixHQUlWLElBQUksV0FBVyxFQUFFLENBQUM7UUFHMUIsc0JBQWlCLEdBSVQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUd6QixjQUFTLEdBQVcsTUFBTSxDQUFDO1FBRzNCLG1CQUFjLEdBQUcsU0FBUyxDQUFDO1FBRzNCLG1CQUFjLEdBQUcsWUFBWSxDQUFDO1FBRzlCLG1CQUFjLEdBQUcsU0FBUyxDQUFDO1FBRzNCLG1CQUFjLEdBQUcsWUFBWSxD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QUssRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNsQjtJQUNILENBQUM7OztZQTVIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMscVdBQXFEO2dCQUVyRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7O2FBQ3ZDOzs7O1lBVFEseUJBQXlCO1lBTGhDLGlCQUFpQjs7OzBCQWdCaEIsZUFBZSxTQUFDLFVBQVU7OztnQkFBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsRUFBQztzQkF1Q3hELEtBQUs7aUNBR0wsS0FBSztnQ0FPTCxLQUFLO3dCQU9MLEtBQUs7NkJBR0wsS0FBSzs2QkFHTCxLQUFLOzZCQUdMLEtBQUs7NkJBR0wsS0FBSzs7OztJQXBFTixrREFDK0M7Ozs7OztJQUcvQyw4REFBcUQ7Ozs7OztJQUdyRCwwREFBMEM7O0lBUzFDLDRDQUE4Qjs7SUF1QjlCLDhDQUNnQjs7SUFFaEIseURBSzBCOztJQUUxQix3REFLeUI7O0lBRXpCLGdEQUMyQjs7SUFFM0IscURBQzJCOztJQUUzQixxREFDOEI7O0lBRTlCLHFEQUMyQjs7SUFFM0IscURBQzhCOzs7OztJQW5DNUIsZ0VBQTREOzs7OztJQUM1RCx3REFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIGZvcndhcmRSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSwgbWVyZ2UgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgTWF0RmlsZVVwbG9hZFF1ZXVlU2VydmljZSB9IGZyb20gXCIuL21hdC1maWxlLXVwbG9hZC1xdWV1ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBNYXRGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSBcIi4uL21hdC1maWxlLXVwbG9hZC9tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtYXQtZmlsZS11cGxvYWQtcXVldWVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9tYXQtZmlsZS11cGxvYWQtcXVldWUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL21hdC1maWxlLXVwbG9hZC1xdWV1ZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW01hdEZpbGVVcGxvYWRRdWV1ZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRGaWxlVXBsb2FkUXVldWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBNYXRGaWxlVXBsb2FkQ29tcG9uZW50KSlcbiAgZmlsZVVwbG9hZHM6IFF1ZXJ5TGlzdDxNYXRGaWxlVXBsb2FkQ29tcG9uZW50PjtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIHJlbW92ZSBjaGFuZ2VzIGluIGZpbGVzLiAqL1xuICBwcml2YXRlIF9maWxlUmVtb3ZlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gIC8qKiBTdWJzY3JpcHRpb24gdG8gY2hhbmdlcyBpbiB0aGUgZmlsZXMuICovXG4gIHByaXZhdGUgX2NoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKiBDb21iaW5lZCBzdHJlYW0gb2YgYWxsIG9mIHRoZSBmaWxlIHVwbG9hZCByZW1vdmUgY2hhbmdlIGV2ZW50cy4gKi9cbiAgZ2V0IGZpbGVVcGxvYWRSZW1vdmVFdmVudHMoKTogT2JzZXJ2YWJsZTxNYXRGaWxlVXBsb2FkQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgLi4udGhpcy5maWxlVXBsb2Fkcy5tYXAoKGZpbGVVcGxvYWQpID0+IGZpbGVVcGxvYWQucmVtb3ZlRXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWxlczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLm1hdEZpbGVVcGxvYWRRdWV1ZVNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICBodHRwVXJsOiBjaGFuZ2VzW1wiaHR0cFVybFwiXSA/IGNoYW5nZXNbXCJodHRwVXJsXCJdLmN1cnJlbnRWYWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGh0dHBSZXF1ZXN0SGVhZGVyczogY2hhbmdlc1tcImh0dHBSZXF1ZXN0SGVhZGVyc1wiXVxuICAgICAgICA/IGNoYW5nZXNbXCJodHRwUmVxdWVzdEhlYWRlcnNcIl0uY3VycmVudFZhbHVlXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgaHR0cFJlcXVlc3RQYXJhbXM6IGNoYW5nZXNbXCJodHRwUmVxdWVzdFBhcmFtc1wiXVxuICAgICAgICA/IGNoYW5nZXNbXCJodHRwUmVxdWVzdFBhcmFtc1wiXS5jdXJyZW50VmFsdWVcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBmaWxlQWxpYXM6IGNoYW5nZXNbXCJmaWxlQWxpYXNcIl1cbiAgICAgICAgPyBjaGFuZ2VzW1wiZmlsZUFsaWFzXCJdLmN1cnJlbnRWYWx1ZVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWF0RmlsZVVwbG9hZFF1ZXVlU2VydmljZTogTWF0RmlsZVVwbG9hZFF1ZXVlU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgLyogSHR0cCByZXF1ZXN0IGlucHV0IGJpbmRpbmdzICovXG4gIEBJbnB1dCgpXG4gIGh0dHBVcmw6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBodHRwUmVxdWVzdEhlYWRlcnM6XG4gICAgfCBIdHRwSGVhZGVyc1xuICAgIHwge1xuICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH0gPSBuZXcgSHR0cEhlYWRlcnMoKTtcblxuICBASW5wdXQoKVxuICBodHRwUmVxdWVzdFBhcmFtczpcbiAgICB8IEh0dHBQYXJhbXNcbiAgICB8IHtcbiAgICAgICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH0gPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gIEBJbnB1dCgpXG4gIGZpbGVBbGlhczogc3RyaW5nID0gXCJmaWxlXCI7XG5cbiAgQElucHV0KClcbiAgdXBsb2FkQWxsQ29sb3IgPSBcInByaW1hcnlcIjtcblxuICBASW5wdXQoKVxuICB1cGxvYWRBbGxMYWJlbCA9IFwiVXBsb2FkIEFsbFwiO1xuXG4gIEBJbnB1dCgpXG4gIHJlbW92ZUFsbENvbG9yID0gXCJwcmltYXJ5XCI7XG5cbiAgQElucHV0KClcbiAgcmVtb3ZlQWxsTGFiZWwgPSBcIlJlbW92ZSBBbGxcIjtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gV2hlbiB0aGUgbGlzdCBjaGFuZ2VzLCByZS1zdWJzY3JpYmVcbiAgICB0aGlzLl9jaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVVcGxvYWRzLmNoYW5nZXNcbiAgICAgIC5waXBlKHN0YXJ0V2l0aChudWxsKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZmlsZVJlbW92ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgIHRoaXMuX2ZpbGVSZW1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9saXN0ZW5Ub2ZpbGVSZW1vdmVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlblRvZmlsZVJlbW92ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsZVJlbW92ZVN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsZVVwbG9hZFJlbW92ZUV2ZW50cy5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IE1hdEZpbGVVcGxvYWRDb21wb25lbnQpID0+IHtcbiAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UoZXZlbnQuaWQsIDEpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhZGQoZmlsZTogYW55KSB7XG4gICAgdGhpcy5maWxlcy5wdXNoKGZpbGUpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgdXBsb2FkQWxsKCkge1xuICAgIHRoaXMuZmlsZVVwbG9hZHMuZm9yRWFjaCgoZmlsZVVwbG9hZCkgPT4ge1xuICAgICAgZmlsZVVwbG9hZC51cGxvYWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVBbGwoKSB7XG4gICAgdGhpcy5maWxlcy5zcGxpY2UoMCwgdGhpcy5maWxlcy5sZW5ndGgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fY2hhbmdlU3Vic2NyaXB0aW9uKSB0aGlzLl9jaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5fZmlsZVJlbW92ZVN1YnNjcmlwdGlvbilcbiAgICAgIHRoaXMuX2ZpbGVSZW1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIGlmICh0aGlzLmZpbGVzKSB7XG4gICAgICB0aGlzLnJlbW92ZUFsbCgpO1xuICAgIH1cbiAgfVxufVxuIl19