UNPKG

angular-material-fileupload

Version:
231 lines 17.9 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 * as tslib_1 from "tslib"; 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"; var MatFileUploadQueueComponent = /** @class */ (function () { function MatFileUploadQueueComponent(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"; } Object.defineProperty(MatFileUploadQueueComponent.prototype, "fileUploadRemoveEvents", { /** Combined stream of all of the file upload remove change events. */ get: /** * Combined stream of all of the file upload remove change events. * @return {?} */ function () { return merge.apply(void 0, tslib_1.__spread(this.fileUploads.map((/** * @param {?} fileUpload * @return {?} */ function (fileUpload) { return fileUpload.removeEvent; })))); }, enumerable: true, configurable: true }); /** * @param {?} changes * @return {?} */ MatFileUploadQueueComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (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 {?} */ MatFileUploadQueueComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; // When the list changes, re-subscribe this._changeSubscription = this.fileUploads.changes .pipe(startWith(null)) .subscribe((/** * @return {?} */ function () { if (_this._fileRemoveSubscription) { _this._fileRemoveSubscription.unsubscribe(); } _this._listenTofileRemoved(); })); }; /** * @private * @return {?} */ MatFileUploadQueueComponent.prototype._listenTofileRemoved = /** * @private * @return {?} */ function () { var _this = this; this._fileRemoveSubscription = this.fileUploadRemoveEvents.subscribe((/** * @param {?} event * @return {?} */ function (event) { _this.files.splice(event.id, 1); _this.changeDetectorRef.markForCheck(); })); }; /** * @param {?} file * @return {?} */ MatFileUploadQueueComponent.prototype.add = /** * @param {?} file * @return {?} */ function (file) { this.files.push(file); this.changeDetectorRef.markForCheck(); }; /** * @return {?} */ MatFileUploadQueueComponent.prototype.uploadAll = /** * @return {?} */ function () { this.fileUploads.forEach((/** * @param {?} fileUpload * @return {?} */ function (fileUpload) { fileUpload.upload(); })); }; /** * @return {?} */ MatFileUploadQueueComponent.prototype.removeAll = /** * @return {?} */ function () { this.files.splice(0, this.files.length); this.changeDetectorRef.markForCheck(); }; /** * @return {?} */ MatFileUploadQueueComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { 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 = function () { return [ { type: MatFileUploadQueueService }, { type: ChangeDetectorRef } ]; }; MatFileUploadQueueComponent.propDecorators = { fileUploads: [{ type: ContentChildren, args: [forwardRef((/** * @return {?} */ function () { 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 }] }; return MatFileUploadQueueComponent; }()); export { MatFileUploadQueueComponent }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWZpbGUtdXBsb2FkLXF1ZXVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbWF0ZXJpYWwtZmlsZXVwbG9hZC8iLCJzb3VyY2VzIjpbImxpYi9tYXQtZmlsZS11cGxvYWQtcXVldWUvbWF0LWZpbGUtdXBsb2FkLXF1ZXVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixlQUFlLEVBQ2YsVUFBVSxFQUdWLFNBQVMsRUFFVCxLQUFLLEVBQ0wsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBNEIsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRGO0lBeUNFLHFDQUNVLHlCQUFvRCxFQUNwRCxpQkFBb0M7UUFEcEMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBbkJ2QyxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBMkI5Qix1QkFBa0IsR0FJVixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRzFCLHNCQUFpQixHQUlULElBQUksVUFBVSxFQUFFLENBQUM7UUFHekIsY0FBUyxHQUFXLE1BQU0sQ0FBQztRQUczQixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUczQixtQkFBYyxHQUFHLFlBQVksQ0FBQztRQUc5QixtQkFBYyxHQUFHLFNBQVMsQ0FBQztRQUczQixtQkFBYyxHQUFHLFlBQVksQ0FBQztJQWpDM0IsQ0FBQztJQTFC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LENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFN0MsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7Z0JBNUhGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxxV0FBcUQ7b0JBRXJELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQzs7aUJBQ3ZDOzs7O2dCQVRRLHlCQUF5QjtnQkFMaEMsaUJBQWlCOzs7OEJBZ0JoQixlQUFlLFNBQUMsVUFBVTs7O29CQUFDLGNBQU0sT0FBQSxzQkFBc0IsRUFBdEIsQ0FBc0IsRUFBQzswQkF1Q3hELEtBQUs7cUNBR0wsS0FBSztvQ0FPTCxLQUFLOzRCQU9MLEtBQUs7aUNBR0wsS0FBSztpQ0FHTCxLQUFLO2lDQUdMLEtBQUs7aUNBR0wsS0FBSzs7SUFpRFIsa0NBQUM7Q0FBQSxBQTdIRCxJQTZIQztTQXRIWSwyQkFBMkI7OztJQUN0QyxrREFDK0M7Ozs7OztJQUcvQyw4REFBcUQ7Ozs7OztJQUdyRCwwREFBMEM7O0lBUzFDLDRDQUE4Qjs7SUF1QjlCLDhDQUNnQjs7SUFFaEIseURBSzBCOztJQUUxQix3REFLeUI7O0lBRXpCLGdEQUMyQjs7SUFFM0IscURBQzJCOztJQUUzQixxREFDOEI7O0lBRTlCLHFEQUMyQjs7SUFFM0IscURBQzhCOzs7OztJQW5DNUIsZ0VBQTREOzs7OztJQUM1RCx3REFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIGZvcndhcmRSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSwgbWVyZ2UgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgTWF0RmlsZVVwbG9hZFF1ZXVlU2VydmljZSB9IGZyb20gXCIuL21hdC1maWxlLXVwbG9hZC1xdWV1ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBNYXRGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSBcIi4uL21hdC1maWxlLXVwbG9hZC9tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtYXQtZmlsZS11cGxvYWQtcXVldWVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9tYXQtZmlsZS11cGxvYWQtcXVldWUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL21hdC1maWxlLXVwbG9hZC1xdWV1ZS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW01hdEZpbGVVcGxvYWRRdWV1ZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRGaWxlVXBsb2FkUXVldWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBNYXRGaWxlVXBsb2FkQ29tcG9uZW50KSlcbiAgZmlsZVVwbG9hZHM6IFF1ZXJ5TGlzdDxNYXRGaWxlVXBsb2FkQ29tcG9uZW50PjtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIHJlbW92ZSBjaGFuZ2VzIGluIGZpbGVzLiAqL1xuICBwcml2YXRlIF9maWxlUmVtb3ZlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gIC8qKiBTdWJzY3JpcHRpb24gdG8gY2hhbmdlcyBpbiB0aGUgZmlsZXMuICovXG4gIHByaXZhdGUgX2NoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKiBDb21iaW5lZCBzdHJlYW0gb2YgYWxsIG9mIHRoZSBmaWxlIHVwbG9hZCByZW1vdmUgY2hhbmdlIGV2ZW50cy4gKi9cbiAgZ2V0IGZpbGVVcGxvYWRSZW1vdmVFdmVudHMoKTogT2JzZXJ2YWJsZTxNYXRGaWxlVXBsb2FkQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgLi4udGhpcy5maWxlVXBsb2Fkcy5tYXAoKGZpbGVVcGxvYWQpID0+IGZpbGVVcGxvYWQucmVtb3ZlRXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWxlczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLm1hdEZpbGVVcGxvYWRRdWV1ZVNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICBodHRwVXJsOiBjaGFuZ2VzW1wiaHR0cFVybFwiXSA/IGNoYW5nZXNbXCJodHRwVXJsXCJdLmN1cnJlbnRWYWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGh0dHBSZXF1ZXN0SGVhZGVyczogY2hhbmdlc1tcImh0dHBSZXF1ZXN0SGVhZGVyc1wiXVxuICAgICAgICA/IGNoYW5nZXNbXCJodHRwUmVxdWVzdEhlYWRlcnNcIl0uY3VycmVudFZhbHVlXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgaHR0cFJlcXVlc3RQYXJhbXM6IGNoYW5nZXNbXCJodHRwUmVxdWVzdFBhcmFtc1wiXVxuICAgICAgICA/IGNoYW5nZXNbXCJodHRwUmVxdWVzdFBhcmFtc1wiXS5jdXJyZW50VmFsdWVcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBmaWxlQWxpYXM6IGNoYW5nZXNbXCJmaWxlQWxpYXNcIl1cbiAgICAgICAgPyBjaGFuZ2VzW1wiZmlsZUFsaWFzXCJdLmN1cnJlbnRWYWx1ZVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWF0RmlsZVVwbG9hZFF1ZXVlU2VydmljZTogTWF0RmlsZVVwbG9hZFF1ZXVlU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgLyogSHR0cCByZXF1ZXN0IGlucHV0IGJpbmRpbmdzICovXG4gIEBJbnB1dCgpXG4gIGh0dHBVcmw6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBodHRwUmVxdWVzdEhlYWRlcnM6XG4gICAgfCBIdHRwSGVhZGVyc1xuICAgIHwge1xuICAgICAgICBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH0gPSBuZXcgSHR0cEhlYWRlcnMoKTtcblxuICBASW5wdXQoKVxuICBodHRwUmVxdWVzdFBhcmFtczpcbiAgICB8IEh0dHBQYXJhbXNcbiAgICB8IHtcbiAgICAgICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAgIH0gPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gIEBJbnB1dCgpXG4gIGZpbGVBbGlhczogc3RyaW5nID0gXCJmaWxlXCI7XG5cbiAgQElucHV0KClcbiAgdXBsb2FkQWxsQ29sb3IgPSBcInByaW1hcnlcIjtcblxuICBASW5wdXQoKVxuICB1cGxvYWRBbGxMYWJlbCA9IFwiVXBsb2FkIEFsbFwiO1xuXG4gIEBJbnB1dCgpXG4gIHJlbW92ZUFsbENvbG9yID0gXCJwcmltYXJ5XCI7XG5cbiAgQElucHV0KClcbiAgcmVtb3ZlQWxsTGFiZWwgPSBcIlJlbW92ZSBBbGxcIjtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gV2hlbiB0aGUgbGlzdCBjaGFuZ2VzLCByZS1zdWJzY3JpYmVcbiAgICB0aGlzLl9jaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmZpbGVVcGxvYWRzLmNoYW5nZXNcbiAgICAgIC5waXBlKHN0YXJ0V2l0aChudWxsKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZmlsZVJlbW92ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgIHRoaXMuX2ZpbGVSZW1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9saXN0ZW5Ub2ZpbGVSZW1vdmVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlblRvZmlsZVJlbW92ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsZVJlbW92ZVN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsZVVwbG9hZFJlbW92ZUV2ZW50cy5zdWJzY3JpYmUoXG4gICAgICAoZXZlbnQ6IE1hdEZpbGVVcGxvYWRDb21wb25lbnQpID0+IHtcbiAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UoZXZlbnQuaWQsIDEpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhZGQoZmlsZTogYW55KSB7XG4gICAgdGhpcy5maWxlcy5wdXNoKGZpbGUpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgdXBsb2FkQWxsKCkge1xuICAgIHRoaXMuZmlsZVVwbG9hZHMuZm9yRWFjaCgoZmlsZVVwbG9hZCkgPT4ge1xuICAgICAgZmlsZVVwbG9hZC51cGxvYWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVBbGwoKSB7XG4gICAgdGhpcy5maWxlcy5zcGxpY2UoMCwgdGhpcy5maWxlcy5sZW5ndGgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fY2hhbmdlU3Vic2NyaXB0aW9uKSB0aGlzLl9jaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5fZmlsZVJlbW92ZVN1YnNjcmlwdGlvbilcbiAgICAgIHRoaXMuX2ZpbGVSZW1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIGlmICh0aGlzLmZpbGVzKSB7XG4gICAgICB0aGlzLnJlbW92ZUFsbCgpO1xuICAgIH1cbiAgfVxufVxuIl19