@acpaas-ui/ngx-forms 4.4.0 → 4.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,14 +3,16 @@
3
3
  * Generated from: lib/upload/components/upload-zone/upload-zone.component.ts
4
4
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
5
  */
6
- import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
6
+ import { Component, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2, ViewChild } from '@angular/core';
7
7
  import { Uploader } from '../../classes/uploader.class';
8
8
  var UploadZoneComponent = /** @class */ (function () {
9
- function UploadZoneComponent() {
9
+ function UploadZoneComponent(renderer) {
10
+ this.renderer = renderer;
10
11
  this.disabled = false;
11
12
  this.multiple = true;
12
13
  this.id = '';
13
14
  this.ariaId = '';
15
+ this.accept = [];
14
16
  this.uploadedFiles = new EventEmitter();
15
17
  this.queuedFiles = new EventEmitter();
16
18
  this.invalidFiles = new EventEmitter();
@@ -76,6 +78,36 @@ var UploadZoneComponent = /** @class */ (function () {
76
78
  var files = this.fileListToArray(this.fileInput.nativeElement.files);
77
79
  this.handleFiles(files);
78
80
  };
81
+ /**
82
+ * @param {?} event
83
+ * @return {?}
84
+ */
85
+ UploadZoneComponent.prototype.onFileClick = /**
86
+ * @param {?} event
87
+ * @return {?}
88
+ */
89
+ function (event) {
90
+ // When removing a file make sure you can add it again later
91
+ // See: https://stackoverflow.com/questions/59870335/ng2-file-upload-not-allowing-me-to-add-same-doc-after-ive-removed-it-from-que
92
+ event.target.value = '';
93
+ };
94
+ /**
95
+ * @return {?}
96
+ */
97
+ UploadZoneComponent.prototype.ngAfterViewInit = /**
98
+ * @return {?}
99
+ */
100
+ function () {
101
+ if (this.multiple !== false) {
102
+ this.renderer.setProperty(this.fileInput.nativeElement, 'multiple', 'multiple');
103
+ }
104
+ if (this.accept) {
105
+ this.renderer.setProperty(this.fileInput.nativeElement, 'accept', this.accept.join());
106
+ }
107
+ if (this.disabled) {
108
+ this.renderer.setProperty(this.fileInput.nativeElement, 'disabled', 'disabled');
109
+ }
110
+ };
79
111
  /**
80
112
  * @protected
81
113
  * @param {?} files
@@ -162,9 +194,13 @@ var UploadZoneComponent = /** @class */ (function () {
162
194
  UploadZoneComponent.decorators = [
163
195
  { type: Component, args: [{
164
196
  selector: 'aui-upload-zone',
165
- template: "<div *ngIf=\"uploader.options.type === 'drop'\" [class.is-disabled]=\"disabled\" class=\"m-upload\">\n <div class=\"m-upload__inner\">\n <div class=\"m-upload__dropzone\">\n <input #fileInput (change)=\"updateFiles()\" *ngIf=\"multiple\" [attr.aria-labelledby]=\"ariaId\" [disabled]=\"disabled\" [id]=\"id\"\n class=\"m-upload__input\" multiple type=\"file\">\n <input #fileInput (change)=\"updateFiles()\" *ngIf=\"!multiple\" [attr.aria-labelledby]=\"ariaId\" [disabled]=\"disabled\"\n [id]=\"id\" class=\"m-upload__input\" type=\"file\">\n\n <div *ngIf=\"!uploadProgress || uploadProgress === 0\" class=\"m-upload__content\">\n <p [id]=\"ariaId\" class=\"m-upload__message\">\n <ng-content select=\".m-upload__message\"></ng-content>\n </p>\n </div>\n\n <ng-container *ngIf=\"uploadProgress > 0\">\n <p class=\"m-upload__uploads u-text-bold u-margin-bottom-xs\">\n <ng-container *ngFor=\"let file of uploadingFiles; let last = last\">\n {{ file.name }}\n <ng-container *ngIf=\"!last\">,</ng-container>\n </ng-container>\n </p>\n <aui-progress-bar [value]=\"uploadProgress\" max=\"100\"></aui-progress-bar>\n </ng-container>\n </div>\n </div>\n\n <small class=\"m-upload__description\">\n <ng-content select=\".m-upload__description\"></ng-content>\n </small>\n</div>\n\n<button (click)=\"triggerFile()\" *ngIf=\"uploader.options.type === 'button'\" [disabled]=\"disabled\" class=\"a-button m-upload__button\"\n type=\"button\">\n <span [id]=\"ariaId\"><ng-content select=\".m-upload__button\"></ng-content></span>\n <input #fileInput (change)=\"updateFiles()\" [attr.aria-labelledby]=\"ariaId\" [disabled]=\"disabled\" [id]=\"id\"\n class=\"m-upload__input\" multiple=\"multiple\" type=\"file\">\n</button>\n"
197
+ template: "<div *ngIf=\"uploader.options.type === 'drop'\" [class.is-disabled]=\"disabled\" class=\"m-upload\">\n <div class=\"m-upload__inner\">\n <div class=\"m-upload__dropzone\">\n\n <input\n #fileInput\n type=\"file\"\n class=\"m-upload__input\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaId\"\n (change)=\"updateFiles()\"\n (click)=\"onFileClick($event)\">\n\n <div *ngIf=\"!uploadProgress || uploadProgress === 0\" class=\"m-upload__content\">\n <p [id]=\"ariaId\" class=\"m-upload__message\">\n <ng-content select=\".m-upload__message\"></ng-content>\n </p>\n </div>\n\n <ng-container *ngIf=\"uploadProgress > 0\">\n <p class=\"m-upload__uploads u-text-bold u-margin-bottom-xs\">\n <ng-container *ngFor=\"let file of uploadingFiles; let last = last\">\n {{ file.name }}\n <ng-container *ngIf=\"!last\">,</ng-container>\n </ng-container>\n </p>\n <aui-progress-bar [value]=\"uploadProgress\" max=\"100\"></aui-progress-bar>\n </ng-container>\n </div>\n </div>\n\n <small class=\"m-upload__description\">\n <ng-content select=\".m-upload__description\"></ng-content>\n </small>\n</div>\n\n<button (click)=\"triggerFile()\" *ngIf=\"uploader.options.type === 'button'\" [disabled]=\"disabled\" class=\"a-button m-upload__button\"\n type=\"button\">\n <span [id]=\"ariaId\"><ng-content select=\".m-upload__button\"></ng-content></span>\n <input\n #fileInput\n type=\"file\"\n class=\"m-upload__input\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaId\"\n (change)=\"updateFiles()\"\n (click)=\"onFileClick($event)\">\n</button>\n"
166
198
  }] }
167
199
  ];
200
+ /** @nocollapse */
201
+ UploadZoneComponent.ctorParameters = function () { return [
202
+ { type: Renderer2 }
203
+ ]; };
168
204
  UploadZoneComponent.propDecorators = {
169
205
  fileInput: [{ type: ViewChild, args: ['fileInput', { static: false },] }],
170
206
  uploader: [{ type: Input }],
@@ -172,6 +208,7 @@ var UploadZoneComponent = /** @class */ (function () {
172
208
  multiple: [{ type: Input }],
173
209
  id: [{ type: Input }],
174
210
  ariaId: [{ type: Input }],
211
+ accept: [{ type: Input }],
175
212
  uploadedFiles: [{ type: Output }],
176
213
  queuedFiles: [{ type: Output }],
177
214
  invalidFiles: [{ type: Output }],
@@ -196,6 +233,8 @@ if (false) {
196
233
  /** @type {?} */
197
234
  UploadZoneComponent.prototype.ariaId;
198
235
  /** @type {?} */
236
+ UploadZoneComponent.prototype.accept;
237
+ /** @type {?} */
199
238
  UploadZoneComponent.prototype.uploadedFiles;
200
239
  /** @type {?} */
201
240
  UploadZoneComponent.prototype.queuedFiles;
@@ -209,5 +248,10 @@ if (false) {
209
248
  UploadZoneComponent.prototype.uploadProgress;
210
249
  /** @type {?} */
211
250
  UploadZoneComponent.prototype.uploadingFiles;
251
+ /**
252
+ * @type {?}
253
+ * @private
254
+ */
255
+ UploadZoneComponent.prototype.renderer;
212
256
  }
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjcGFhcy11aS9uZ3gtZm9ybXMvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2NvbXBvbmVudHMvdXBsb2FkLXpvbmUvdXBsb2FkLXpvbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUcxRyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFdEQ7SUFBQTtRQVFrQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUNSLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWCxrQkFBYSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ3JFLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDL0QsaUJBQVksR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFeEYsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsbUJBQWMsR0FBRyxDQUFDLENBQUM7SUF3RTVCLENBQUM7Ozs7O0lBcEVRLHdDQUFVOzs7O0lBRGpCLFVBQ2tCLEtBQVU7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDOzs7OztJQUdNLHlDQUFXOzs7O0lBRGxCLFVBQ21CLEtBQVU7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOzs7OztJQUdNLG9DQUFNOzs7O0lBRGIsVUFD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Q0FBQzs4QkFNbkMsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQzt5QkFNcEMsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUF5RGxDLDBCQUFDO0NBQUEsQUExRkQsSUEwRkM7U0F0RlksbUJBQW1COzs7SUFDOUIsd0NBQStEOztJQUUvRCx1Q0FBbUM7O0lBQ25DLHVDQUFpQzs7SUFDakMsdUNBQWdDOztJQUNoQyxpQ0FBd0I7O0lBQ3hCLHFDQUE0Qjs7SUFDNUIsNENBQXNGOztJQUN0RiwwQ0FBZ0Y7O0lBQ2hGLDJDQUErRjs7SUFFL0YsMENBQTJCOztJQUMzQix5Q0FBMEI7O0lBQzFCLDZDQUEwQjs7SUFDMUIsNkNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0ludmFsaWRGaWxlfSBmcm9tICcuLi8uLi90eXBlcy91cGxvYWQudHlwZXMnO1xuaW1wb3J0IHtVcGxvYWRlcn0gZnJvbSAnLi4vLi4vY2xhc3Nlcy91cGxvYWRlci5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS11cGxvYWQtem9uZScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtem9uZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZFpvbmVDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7c3RhdGljOiBmYWxzZX0pIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBwdWJsaWMgdXBsb2FkZXI6IFVwbG9hZGVyO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIG11bHRpcGxlID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGlkID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcmlhSWQgPSAnJztcbiAgQE91dHB1dCgpIHB1YmxpYyB1cGxvYWRlZEZpbGVzOiBFdmVudEVtaXR0ZXI8b2JqZWN0W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3RbXT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBxdWV1ZWRGaWxlczogRXZlbnRFbWl0dGVyPEZpbGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBpbnZhbGlkRmlsZXM6IEV2ZW50RW1pdHRlcjxJbnZhbGlkRmlsZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW52YWxpZEZpbGVbXT4oKTtcblxuICBwdWJsaWMgaGFzRHJhZ092ZXIgPSBmYWxzZTtcbiAgcHVibGljIGNsYXNzTmFtZXM6IHN0cmluZztcbiAgcHVibGljIHVwbG9hZFByb2dyZXNzID0gMDtcbiAgcHVibGljIHVwbG9hZGluZ0ZpbGVzOiBGaWxlW107XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgdGhpcy5oYXNEcmFnT3ZlciA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25EcmFnTGVhdmUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgIHRoaXMuaGFzRHJhZ092ZXIgPSBmYWxzZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Ecm9wKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgICB0aGlzLmhhc0RyYWdPdmVyID0gZmFsc2U7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmZpbGVMaXN0VG9BcnJheShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIHRoaXMuaGFuZGxlRmlsZXMoZmlsZXMpO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJGaWxlKCkge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGaWxlcygpIHtcbiAgICBjb25zdCBmaWxlczogYW55W10gPSB0aGlzLmZpbGVMaXN0VG9BcnJheSh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVGaWxlcyhmaWxlcykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy51cGxvYWRlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcbiAgICB0aGlzLmludmFsaWRGaWxlcy5lbWl0KHJlc3BvbnNlLmludmFsaWRGaWxlcyk7XG5cbiAgICBpZiAodGhpcy51cGxvYWRlci5vcHRpb25zLmF1dG9VcGxvYWQgJiYgcmVzcG9uc2UudmFsaWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKHJlc3BvbnNlLnZhbGlkRmlsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXVlZEZpbGVzLmVtaXQocmVzcG9uc2UudmFsaWRGaWxlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwbG9hZEZpbGVzKGZpbGVzKSB7XG4gICAgLy8gUmVzZXQgcHJvZ3Jlc3NcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gMDtcbiAgICB0aGlzLnVwbG9hZGluZ0ZpbGVzID0gZmlsZXM7XG5cbiAgICAvLyB1cGxvYWRcbiAgICB0aGlzLnVwbG9hZGVyLnVwbG9hZEZpbGVzKGZpbGVzKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByb2dyZXNzKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IE1hdGguZmxvb3IocmVzcG9uc2UucHJvZ3Jlc3MgKiAxMDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLmVtaXQocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWxlTGlzdFRvQXJyYXkobGlzdDogRmlsZUxpc3QpOiBvYmplY3RbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obGlzdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJldmVudEFuZFN0b3AoZXZlbnQ6IGFueSk6IGFueSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIl19
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjcGFhcy11aS9uZ3gtZm9ybXMvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2NvbXBvbmVudHMvdXBsb2FkLXpvbmUvdXBsb2FkLXpvbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3BJLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUV0RDtJQXNCRSw2QkFDVSxRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBZmIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNYLGtCQUFhLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDckUsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMvRCxpQkFBWSxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUV4RixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixtQkFBYyxHQUFHLENBQUMsQ0FBQztJQUt2QixDQUFDOzs7OztJQUdHLHdDQUFVOzs7O0lBRGpCLFVBQ2tCLEtBQVU7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDOzs7OztJQUdNLHlDQUFXOzs7O0lBRGxCLFVBQ21CLEtBQVU7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztR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NENBQXNGOztJQUN0RiwwQ0FBZ0Y7O0lBQ2hGLDJDQUErRjs7SUFFL0YsMENBQTJCOztJQUMzQix5Q0FBMEI7O0lBQzFCLDZDQUEwQjs7SUFDMUIsNkNBQThCOzs7OztJQUc1Qix1Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtJbnZhbGlkRmlsZX0gZnJvbSAnLi4vLi4vdHlwZXMvdXBsb2FkLnR5cGVzJztcbmltcG9ydCB7VXBsb2FkZXJ9IGZyb20gJy4uLy4uL2NsYXNzZXMvdXBsb2FkZXIuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktdXBsb2FkLXpvbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLXpvbmUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWRab25lQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHtzdGF0aWM6IGZhbHNlfSkgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyB1cGxvYWRlcjogVXBsb2FkZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlwbGUgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaWQgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGFyaWFJZCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgYWNjZXB0ID0gW107XG4gIEBPdXRwdXQoKSBwdWJsaWMgdXBsb2FkZWRGaWxlczogRXZlbnRFbWl0dGVyPG9iamVjdFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0W10+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcXVldWVkRmlsZXM6IEV2ZW50RW1pdHRlcjxGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlW10+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW52YWxpZEZpbGVzOiBFdmVudEVtaXR0ZXI8SW52YWxpZEZpbGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEludmFsaWRGaWxlW10+KCk7XG5cbiAgcHVibGljIGhhc0RyYWdPdmVyID0gZmFsc2U7XG4gIHB1YmxpYyBjbGFzc05hbWVzOiBzdHJpbmc7XG4gIHB1YmxpYyB1cGxvYWRQcm9ncmVzcyA9IDA7XG4gIHB1YmxpYyB1cGxvYWRpbmdGaWxlczogRmlsZVtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgIHRoaXMuaGFzRHJhZ092ZXIgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgICB0aGlzLmhhc0RyYWdPdmVyID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJvcChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgdGhpcy5oYXNEcmFnT3ZlciA9IGZhbHNlO1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5maWxlTGlzdFRvQXJyYXkoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyRmlsZSgpIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmlsZXMoKSB7XG4gICAgY29uc3QgZmlsZXM6IGFueVtdID0gdGhpcy5maWxlTGlzdFRvQXJyYXkodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XG4gICAgdGhpcy5oYW5kbGVGaWxlcyhmaWxlcyk7XG4gIH1cblxuICBwdWJsaWMgb25GaWxlQ2xpY2soZXZlbnQpIHtcbiAgICAvLyBXaGVuIHJlbW92aW5nIGEgZmlsZSBtYWtlIHN1cmUgeW91IGNhbiBhZGQgaXQgYWdhaW4gbGF0ZXJcbiAgICAvLyBTZWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5ODcwMzM1L25nMi1maWxlLXVwbG9hZC1ub3QtYWxsb3dpbmctbWUtdG8tYWRkLXNhbWUtZG9jLWFmdGVyLWl2ZS1yZW1vdmVkLWl0LWZyb20tcXVlXG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgIT09IGZhbHNlKSB7IHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudCwgJ211bHRpcGxlJywgJ211bHRpcGxlJyk7IH1cbiAgICBpZiAodGhpcy5hY2NlcHQpIHsgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgdGhpcy5hY2NlcHQuam9pbigpKTsgfVxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7IH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVGaWxlcyhmaWxlcykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy51cGxvYWRlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcbiAgICB0aGlzLmludmFsaWRGaWxlcy5lbWl0KHJlc3BvbnNlLmludmFsaWRGaWxlcyk7XG5cbiAgICBpZiAodGhpcy51cGxvYWRlci5vcHRpb25zLmF1dG9VcGxvYWQgJiYgcmVzcG9uc2UudmFsaWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKHJlc3BvbnNlLnZhbGlkRmlsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXVlZEZpbGVzLmVtaXQocmVzcG9uc2UudmFsaWRGaWxlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwbG9hZEZpbGVzKGZpbGVzKSB7XG4gICAgLy8gUmVzZXQgcHJvZ3Jlc3NcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gMDtcbiAgICB0aGlzLnVwbG9hZGluZ0ZpbGVzID0gZmlsZXM7XG5cbiAgICAvLyB1cGxvYWRcbiAgICB0aGlzLnVwbG9hZGVyLnVwbG9hZEZpbGVzKGZpbGVzKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByb2dyZXNzKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IE1hdGguZmxvb3IocmVzcG9uc2UucHJvZ3Jlc3MgKiAxMDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLmVtaXQocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWxlTGlzdFRvQXJyYXkobGlzdDogRmlsZUxpc3QpOiBvYmplY3RbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obGlzdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJldmVudEFuZFN0b3AoZXZlbnQ6IGFueSk6IGFueSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIl19
@@ -692,11 +692,11 @@ class DatepickerComponent {
692
692
  * @return {?}
693
693
  */
694
694
  writeValue(value) {
695
+ this.selectedDate = typeof value === 'string'
696
+ ? this.isISODateFormat(value) ? new Date(value) : DateHelper.parseDate(value, 'DD/MM/YYYY', true)
697
+ : value;
695
698
  /** @type {?} */
696
- const date = DateHelper.parseDate(value, 'DD/MM/YYYY', true);
697
- /** @type {?} */
698
- const dateString = date ? this.formatDate(date) : '';
699
- this.selectedDate = date;
699
+ const dateString = this.selectedDate ? this.formatDate(this.selectedDate) : '';
700
700
  this.formControl.setValue(dateString);
701
701
  }
702
702
  /**
@@ -786,6 +786,17 @@ class DatepickerComponent {
786
786
  this.blur.emit(e);
787
787
  this.onTouched(e);
788
788
  }
789
+ /**
790
+ * @private
791
+ * @param {?} value
792
+ * @return {?}
793
+ */
794
+ isISODateFormat(value) {
795
+ if (typeof value !== 'string') {
796
+ return false;
797
+ }
798
+ return value.match(/\d{4}-\d{2}-\d{2}T.*/);
799
+ }
789
800
  }
790
801
  DatepickerComponent.decorators = [
791
802
  { type: Component, args: [{
@@ -2220,8 +2231,10 @@ if (false) {
2220
2231
  class UploadComponent {
2221
2232
  constructor() {
2222
2233
  this.id = '';
2234
+ this.accept = [];
2223
2235
  this.ariaLabelRemove = 'Verwijder';
2224
2236
  this.disabled = false;
2237
+ this.multiple = true;
2225
2238
  this.options = UPLOAD_OPTIONS_DEFAULT;
2226
2239
  this.selectUploadedFiles = new EventEmitter();
2227
2240
  this.uploadedFiles = [];
@@ -2263,14 +2276,16 @@ class UploadComponent {
2263
2276
  UploadComponent.decorators = [
2264
2277
  { type: Component, args: [{
2265
2278
  selector: 'aui-upload',
2266
- template: "<div class=\"m-upload aui-upload\">\n <aui-upload-zone (invalidFiles)=\"onInvalidFiles($event)\" (queuedFiles)=\"onQueuedFiles($event)\" (uploadedFiles)=\"onUploadedFiles($event)\" [ariaId]=\"ariaId\"\n [disabled]=\"disabled\" [id]=\"id\"\n [uploader]=\"uploader\">\n <div class=\"m-upload__message\">\n <ng-content select=\".m-upload__message\"></ng-content>\n </div>\n <div class=\"m-upload__description\">\n <ng-content select=\".m-upload__description\"></ng-content>\n </div>\n <div class=\"m-upload__button\">\n <ng-content select=\".m-upload__button\"></ng-content>\n </div>\n </aui-upload-zone>\n <aui-validation-list [ariaLabelRemove]=\"ariaLabelRemove\" [invalidFiles]=\"invalidFiles\"></aui-validation-list>\n <aui-upload-queue (uploadedFiles)=\"onUploadedFiles($event)\" *ngIf=\"!options?.autoUpload\" [ariaLabelRemove]=\"ariaLabelRemove\"\n [files]=\"queuedFiles\" [uploader]=\"uploader\"></aui-upload-queue>\n</div>\n",
2279
+ template: "<div class=\"m-upload aui-upload\">\n <aui-upload-zone (invalidFiles)=\"onInvalidFiles($event)\" (queuedFiles)=\"onQueuedFiles($event)\" (uploadedFiles)=\"onUploadedFiles($event)\" [ariaId]=\"ariaId\"\n [disabled]=\"disabled\" [id]=\"id\" [accept]=\"accept\" [multiple]=\"multiple\"\n [uploader]=\"uploader\">\n <div class=\"m-upload__message\">\n <ng-content select=\".m-upload__message\"></ng-content>\n </div>\n <div class=\"m-upload__description\">\n <ng-content select=\".m-upload__description\"></ng-content>\n </div>\n <div class=\"m-upload__button\">\n <ng-content select=\".m-upload__button\"></ng-content>\n </div>\n </aui-upload-zone>\n <aui-validation-list [ariaLabelRemove]=\"ariaLabelRemove\" [invalidFiles]=\"invalidFiles\"></aui-validation-list>\n <aui-upload-queue (uploadedFiles)=\"onUploadedFiles($event)\" *ngIf=\"!options?.autoUpload\" [ariaLabelRemove]=\"ariaLabelRemove\"\n [files]=\"queuedFiles\" [uploader]=\"uploader\"></aui-upload-queue>\n</div>\n",
2267
2280
  styles: [".m-upload__button>.m-upload__input{display:none}"]
2268
2281
  }] }
2269
2282
  ];
2270
2283
  UploadComponent.propDecorators = {
2271
2284
  id: [{ type: Input }],
2285
+ accept: [{ type: Input }],
2272
2286
  ariaLabelRemove: [{ type: Input }],
2273
2287
  disabled: [{ type: Input }],
2288
+ multiple: [{ type: Input }],
2274
2289
  options: [{ type: Input }],
2275
2290
  selectUploadedFiles: [{ type: Output }]
2276
2291
  };
@@ -2278,10 +2293,14 @@ if (false) {
2278
2293
  /** @type {?} */
2279
2294
  UploadComponent.prototype.id;
2280
2295
  /** @type {?} */
2296
+ UploadComponent.prototype.accept;
2297
+ /** @type {?} */
2281
2298
  UploadComponent.prototype.ariaLabelRemove;
2282
2299
  /** @type {?} */
2283
2300
  UploadComponent.prototype.disabled;
2284
2301
  /** @type {?} */
2302
+ UploadComponent.prototype.multiple;
2303
+ /** @type {?} */
2285
2304
  UploadComponent.prototype.options;
2286
2305
  /** @type {?} */
2287
2306
  UploadComponent.prototype.selectUploadedFiles;
@@ -2434,11 +2453,16 @@ if (false) {
2434
2453
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2435
2454
  */
2436
2455
  class UploadZoneComponent {
2437
- constructor() {
2456
+ /**
2457
+ * @param {?} renderer
2458
+ */
2459
+ constructor(renderer) {
2460
+ this.renderer = renderer;
2438
2461
  this.disabled = false;
2439
2462
  this.multiple = true;
2440
2463
  this.id = '';
2441
2464
  this.ariaId = '';
2465
+ this.accept = [];
2442
2466
  this.uploadedFiles = new EventEmitter();
2443
2467
  this.queuedFiles = new EventEmitter();
2444
2468
  this.invalidFiles = new EventEmitter();
@@ -2486,6 +2510,29 @@ class UploadZoneComponent {
2486
2510
  const files = this.fileListToArray(this.fileInput.nativeElement.files);
2487
2511
  this.handleFiles(files);
2488
2512
  }
2513
+ /**
2514
+ * @param {?} event
2515
+ * @return {?}
2516
+ */
2517
+ onFileClick(event) {
2518
+ // When removing a file make sure you can add it again later
2519
+ // See: https://stackoverflow.com/questions/59870335/ng2-file-upload-not-allowing-me-to-add-same-doc-after-ive-removed-it-from-que
2520
+ event.target.value = '';
2521
+ }
2522
+ /**
2523
+ * @return {?}
2524
+ */
2525
+ ngAfterViewInit() {
2526
+ if (this.multiple !== false) {
2527
+ this.renderer.setProperty(this.fileInput.nativeElement, 'multiple', 'multiple');
2528
+ }
2529
+ if (this.accept) {
2530
+ this.renderer.setProperty(this.fileInput.nativeElement, 'accept', this.accept.join());
2531
+ }
2532
+ if (this.disabled) {
2533
+ this.renderer.setProperty(this.fileInput.nativeElement, 'disabled', 'disabled');
2534
+ }
2535
+ }
2489
2536
  /**
2490
2537
  * @protected
2491
2538
  * @param {?} files
@@ -2552,9 +2599,13 @@ class UploadZoneComponent {
2552
2599
  UploadZoneComponent.decorators = [
2553
2600
  { type: Component, args: [{
2554
2601
  selector: 'aui-upload-zone',
2555
- template: "<div *ngIf=\"uploader.options.type === 'drop'\" [class.is-disabled]=\"disabled\" class=\"m-upload\">\n <div class=\"m-upload__inner\">\n <div class=\"m-upload__dropzone\">\n <input #fileInput (change)=\"updateFiles()\" *ngIf=\"multiple\" [attr.aria-labelledby]=\"ariaId\" [disabled]=\"disabled\" [id]=\"id\"\n class=\"m-upload__input\" multiple type=\"file\">\n <input #fileInput (change)=\"updateFiles()\" *ngIf=\"!multiple\" [attr.aria-labelledby]=\"ariaId\" [disabled]=\"disabled\"\n [id]=\"id\" class=\"m-upload__input\" type=\"file\">\n\n <div *ngIf=\"!uploadProgress || uploadProgress === 0\" class=\"m-upload__content\">\n <p [id]=\"ariaId\" class=\"m-upload__message\">\n <ng-content select=\".m-upload__message\"></ng-content>\n </p>\n </div>\n\n <ng-container *ngIf=\"uploadProgress > 0\">\n <p class=\"m-upload__uploads u-text-bold u-margin-bottom-xs\">\n <ng-container *ngFor=\"let file of uploadingFiles; let last = last\">\n {{ file.name }}\n <ng-container *ngIf=\"!last\">,</ng-container>\n </ng-container>\n </p>\n <aui-progress-bar [value]=\"uploadProgress\" max=\"100\"></aui-progress-bar>\n </ng-container>\n </div>\n </div>\n\n <small class=\"m-upload__description\">\n <ng-content select=\".m-upload__description\"></ng-content>\n </small>\n</div>\n\n<button (click)=\"triggerFile()\" *ngIf=\"uploader.options.type === 'button'\" [disabled]=\"disabled\" class=\"a-button m-upload__button\"\n type=\"button\">\n <span [id]=\"ariaId\"><ng-content select=\".m-upload__button\"></ng-content></span>\n <input #fileInput (change)=\"updateFiles()\" [attr.aria-labelledby]=\"ariaId\" [disabled]=\"disabled\" [id]=\"id\"\n class=\"m-upload__input\" multiple=\"multiple\" type=\"file\">\n</button>\n"
2602
+ template: "<div *ngIf=\"uploader.options.type === 'drop'\" [class.is-disabled]=\"disabled\" class=\"m-upload\">\n <div class=\"m-upload__inner\">\n <div class=\"m-upload__dropzone\">\n\n <input\n #fileInput\n type=\"file\"\n class=\"m-upload__input\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaId\"\n (change)=\"updateFiles()\"\n (click)=\"onFileClick($event)\">\n\n <div *ngIf=\"!uploadProgress || uploadProgress === 0\" class=\"m-upload__content\">\n <p [id]=\"ariaId\" class=\"m-upload__message\">\n <ng-content select=\".m-upload__message\"></ng-content>\n </p>\n </div>\n\n <ng-container *ngIf=\"uploadProgress > 0\">\n <p class=\"m-upload__uploads u-text-bold u-margin-bottom-xs\">\n <ng-container *ngFor=\"let file of uploadingFiles; let last = last\">\n {{ file.name }}\n <ng-container *ngIf=\"!last\">,</ng-container>\n </ng-container>\n </p>\n <aui-progress-bar [value]=\"uploadProgress\" max=\"100\"></aui-progress-bar>\n </ng-container>\n </div>\n </div>\n\n <small class=\"m-upload__description\">\n <ng-content select=\".m-upload__description\"></ng-content>\n </small>\n</div>\n\n<button (click)=\"triggerFile()\" *ngIf=\"uploader.options.type === 'button'\" [disabled]=\"disabled\" class=\"a-button m-upload__button\"\n type=\"button\">\n <span [id]=\"ariaId\"><ng-content select=\".m-upload__button\"></ng-content></span>\n <input\n #fileInput\n type=\"file\"\n class=\"m-upload__input\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaId\"\n (change)=\"updateFiles()\"\n (click)=\"onFileClick($event)\">\n</button>\n"
2556
2603
  }] }
2557
2604
  ];
2605
+ /** @nocollapse */
2606
+ UploadZoneComponent.ctorParameters = () => [
2607
+ { type: Renderer2 }
2608
+ ];
2558
2609
  UploadZoneComponent.propDecorators = {
2559
2610
  fileInput: [{ type: ViewChild, args: ['fileInput', { static: false },] }],
2560
2611
  uploader: [{ type: Input }],
@@ -2562,6 +2613,7 @@ UploadZoneComponent.propDecorators = {
2562
2613
  multiple: [{ type: Input }],
2563
2614
  id: [{ type: Input }],
2564
2615
  ariaId: [{ type: Input }],
2616
+ accept: [{ type: Input }],
2565
2617
  uploadedFiles: [{ type: Output }],
2566
2618
  queuedFiles: [{ type: Output }],
2567
2619
  invalidFiles: [{ type: Output }],
@@ -2583,6 +2635,8 @@ if (false) {
2583
2635
  /** @type {?} */
2584
2636
  UploadZoneComponent.prototype.ariaId;
2585
2637
  /** @type {?} */
2638
+ UploadZoneComponent.prototype.accept;
2639
+ /** @type {?} */
2586
2640
  UploadZoneComponent.prototype.uploadedFiles;
2587
2641
  /** @type {?} */
2588
2642
  UploadZoneComponent.prototype.queuedFiles;
@@ -2596,6 +2650,11 @@ if (false) {
2596
2650
  UploadZoneComponent.prototype.uploadProgress;
2597
2651
  /** @type {?} */
2598
2652
  UploadZoneComponent.prototype.uploadingFiles;
2653
+ /**
2654
+ * @type {?}
2655
+ * @private
2656
+ */
2657
+ UploadZoneComponent.prototype.renderer;
2599
2658
  }
2600
2659
 
2601
2660
  /**