@acpaas-ui/ngx-forms 5.0.1 → 5.2.0

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() {
10
- this.disabled = false;
11
- this.multiple = true;
9
+ function UploadZoneComponent(renderer) {
10
+ this.renderer = renderer;
12
11
  this.id = '';
12
+ this.accept = [];
13
13
  this.ariaId = '';
14
+ this.disabled = false;
15
+ this.multiple = true;
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,16 +194,21 @@ 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 <input\n #fileInput\n type=\"file\"\n class=\"m-upload__input\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaId\"\n (click)=\"onFileClick($event)\"\n (change)=\"updateFiles()\">\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 (click)=\"onFileClick($event)\"\n (change)=\"updateFiles()\">\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 }],
171
- disabled: [{ type: Input }],
172
- multiple: [{ type: Input }],
173
207
  id: [{ type: Input }],
208
+ accept: [{ type: Input }],
174
209
  ariaId: [{ type: Input }],
210
+ disabled: [{ type: Input }],
211
+ multiple: [{ type: Input }],
175
212
  uploadedFiles: [{ type: Output }],
176
213
  queuedFiles: [{ type: Output }],
177
214
  invalidFiles: [{ type: Output }],
@@ -188,14 +225,16 @@ if (false) {
188
225
  /** @type {?} */
189
226
  UploadZoneComponent.prototype.uploader;
190
227
  /** @type {?} */
191
- UploadZoneComponent.prototype.disabled;
192
- /** @type {?} */
193
- UploadZoneComponent.prototype.multiple;
194
- /** @type {?} */
195
228
  UploadZoneComponent.prototype.id;
196
229
  /** @type {?} */
230
+ UploadZoneComponent.prototype.accept;
231
+ /** @type {?} */
197
232
  UploadZoneComponent.prototype.ariaId;
198
233
  /** @type {?} */
234
+ UploadZoneComponent.prototype.disabled;
235
+ /** @type {?} */
236
+ UploadZoneComponent.prototype.multiple;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjcGFhcy11aS9uZ3gtZm9ybXMvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2NvbXBvbmVudHMvdXBsb2FkLXpvbmUvdXBsb2FkLXpvbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc1RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEQ7SUFBQTtRQVFrQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUNSLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWCxrQkFBYSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ3JFLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDL0QsaUJBQVksR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFFeEYsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsbUJBQWMsR0FBRyxDQUFDLENBQUM7SUF3RTVCLENBQUM7Ozs7O0lBcEVRLHdDQUFVOzs7O0lBRGpCLFVBQ2tCLEtBQVU7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDOzs7OztJQUdNLHlDQUFXOzs7O0lBRGxCLFVBQ21CLEtBQVU7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOzs7OztJQUdNLG9DQUFNOzs7O0lBRGIsVUFD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Q0FBQzs4QkFNbkMsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQzt5QkFNcEMsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUF5RGxDLDBCQUFDO0NBQUEsQUExRkQsSUEwRkM7U0F0RlksbUJBQW1COzs7SUFDOUIsd0NBQStEOztJQUUvRCx1Q0FBbUM7O0lBQ25DLHVDQUFpQzs7SUFDakMsdUNBQWdDOztJQUNoQyxpQ0FBd0I7O0lBQ3hCLHFDQUE0Qjs7SUFDNUIsNENBQXNGOztJQUN0RiwwQ0FBZ0Y7O0lBQ2hGLDJDQUErRjs7SUFFL0YsMENBQTJCOztJQUMzQix5Q0FBMEI7O0lBQzFCLDZDQUEwQjs7SUFDMUIsNkNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEludmFsaWRGaWxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXBsb2FkLnR5cGVzJztcbmltcG9ydCB7IFVwbG9hZGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy91cGxvYWRlci5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS11cGxvYWQtem9uZScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtem9uZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZFpvbmVDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7c3RhdGljOiBmYWxzZX0pIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBwdWJsaWMgdXBsb2FkZXI6IFVwbG9hZGVyO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIG11bHRpcGxlID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGlkID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcmlhSWQgPSAnJztcbiAgQE91dHB1dCgpIHB1YmxpYyB1cGxvYWRlZEZpbGVzOiBFdmVudEVtaXR0ZXI8b2JqZWN0W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3RbXT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBxdWV1ZWRGaWxlczogRXZlbnRFbWl0dGVyPEZpbGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBpbnZhbGlkRmlsZXM6IEV2ZW50RW1pdHRlcjxJbnZhbGlkRmlsZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW52YWxpZEZpbGVbXT4oKTtcblxuICBwdWJsaWMgaGFzRHJhZ092ZXIgPSBmYWxzZTtcbiAgcHVibGljIGNsYXNzTmFtZXM6IHN0cmluZztcbiAgcHVibGljIHVwbG9hZFByb2dyZXNzID0gMDtcbiAgcHVibGljIHVwbG9hZGluZ0ZpbGVzOiBGaWxlW107XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgdGhpcy5oYXNEcmFnT3ZlciA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25EcmFnTGVhdmUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgIHRoaXMuaGFzRHJhZ092ZXIgPSBmYWxzZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Ecm9wKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgICB0aGlzLmhhc0RyYWdPdmVyID0gZmFsc2U7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmZpbGVMaXN0VG9BcnJheShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgIHRoaXMuaGFuZGxlRmlsZXMoZmlsZXMpO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJGaWxlKCkge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGaWxlcygpIHtcbiAgICBjb25zdCBmaWxlczogYW55W10gPSB0aGlzLmZpbGVMaXN0VG9BcnJheSh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKTtcbiAgICB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVGaWxlcyhmaWxlcykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy51cGxvYWRlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcbiAgICB0aGlzLmludmFsaWRGaWxlcy5lbWl0KHJlc3BvbnNlLmludmFsaWRGaWxlcyk7XG5cbiAgICBpZiAodGhpcy51cGxvYWRlci5vcHRpb25zLmF1dG9VcGxvYWQgJiYgcmVzcG9uc2UudmFsaWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKHJlc3BvbnNlLnZhbGlkRmlsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXVlZEZpbGVzLmVtaXQocmVzcG9uc2UudmFsaWRGaWxlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwbG9hZEZpbGVzKGZpbGVzKSB7XG4gICAgLy8gUmVzZXQgcHJvZ3Jlc3NcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gMDtcbiAgICB0aGlzLnVwbG9hZGluZ0ZpbGVzID0gZmlsZXM7XG5cbiAgICAvLyB1cGxvYWRcbiAgICB0aGlzLnVwbG9hZGVyLnVwbG9hZEZpbGVzKGZpbGVzKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByb2dyZXNzKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IE1hdGguZmxvb3IocmVzcG9uc2UucHJvZ3Jlc3MgKiAxMDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLmVtaXQocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWxlTGlzdFRvQXJyYXkobGlzdDogRmlsZUxpc3QpOiBvYmplY3RbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obGlzdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJldmVudEFuZFN0b3AoZXZlbnQ6IGFueSk6IGFueSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIl19
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLXpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjcGFhcy11aS9uZ3gtZm9ybXMvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2NvbXBvbmVudHMvdXBsb2FkLXpvbmUvdXBsb2FkLXpvbmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RJLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV4RDtJQTBDRSw2QkFDVSxRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbkNiLE9BQUUsR0FBRyxFQUFFLENBQUM7UUFDUixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNmLGtCQUFhLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDckUsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMvRCxpQkFBWSxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUV4RixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixtQkFBYyxHQUFHLENBQUMsQ0FBQztJQXlCdkIsQ0FBQzs7Ozs7SUFyQkcsd0NBQVU7Ozs7SUFEakIsVUFDa0IsS0FBVTtRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBR00seUNBQVc7Ozs7SUFEbEIsVUFDbUIsS0FBVTtRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFD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Qyw0Q0FBc0Y7O0lBQ3RGLDBDQUFnRjs7SUFDaEYsMkNBQStGOztJQUUvRiwwQ0FBMkI7O0lBQzNCLHlDQUEwQjs7SUFDMUIsNkNBQTBCOztJQUMxQiw2Q0FBOEI7Ozs7O0lBdUI1Qix1Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJbnZhbGlkRmlsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3VwbG9hZC50eXBlcyc7XG5pbXBvcnQgeyBVcGxvYWRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdXBsb2FkZXIuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktdXBsb2FkLXpvbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLXpvbmUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWRab25lQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHtzdGF0aWM6IGZhbHNlfSkgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyB1cGxvYWRlcjogVXBsb2FkZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBpZCA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgYWNjZXB0ID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBhcmlhSWQgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZSA9IHRydWU7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdXBsb2FkZWRGaWxlczogRXZlbnRFbWl0dGVyPG9iamVjdFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0W10+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcXVldWVkRmlsZXM6IEV2ZW50RW1pdHRlcjxGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlW10+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW52YWxpZEZpbGVzOiBFdmVudEVtaXR0ZXI8SW52YWxpZEZpbGVbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEludmFsaWRGaWxlW10+KCk7XG5cbiAgcHVibGljIGhhc0RyYWdPdmVyID0gZmFsc2U7XG4gIHB1YmxpYyBjbGFzc05hbWVzOiBzdHJpbmc7XG4gIHB1YmxpYyB1cGxvYWRQcm9ncmVzcyA9IDA7XG4gIHB1YmxpYyB1cGxvYWRpbmdGaWxlczogRmlsZVtdO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgIHRoaXMuaGFzRHJhZ092ZXIgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZlbnRBbmRTdG9wKGV2ZW50KTtcbiAgICB0aGlzLmhhc0RyYWdPdmVyID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uRHJvcChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgdGhpcy5oYXNEcmFnT3ZlciA9IGZhbHNlO1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5maWxlTGlzdFRvQXJyYXkoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICB0aGlzLmhhbmRsZUZpbGVzKGZpbGVzKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgKSB7fVxuXG4gIHB1YmxpYyB0cmlnZ2VyRmlsZSgpIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmlsZXMoKSB7XG4gICAgY29uc3QgZmlsZXM6IGFueVtdID0gdGhpcy5maWxlTGlzdFRvQXJyYXkodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyk7XG4gICAgdGhpcy5oYW5kbGVGaWxlcyhmaWxlcyk7XG4gIH1cblxuICBwdWJsaWMgb25GaWxlQ2xpY2soZXZlbnQpIHtcbiAgICAvLyBXaGVuIHJlbW92aW5nIGEgZmlsZSBtYWtlIHN1cmUgeW91IGNhbiBhZGQgaXQgYWdhaW4gbGF0ZXJcbiAgICAvLyBTZWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5ODcwMzM1L25nMi1maWxlLXVwbG9hZC1ub3QtYWxsb3dpbmctbWUtdG8tYWRkLXNhbWUtZG9jLWFmdGVyLWl2ZS1yZW1vdmVkLWl0LWZyb20tcXVlXG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgIT09IGZhbHNlKSB7IHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudCwgJ211bHRpcGxlJywgJ211bHRpcGxlJyk7IH1cbiAgICBpZiAodGhpcy5hY2NlcHQpIHsgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgdGhpcy5hY2NlcHQuam9pbigpKTsgfVxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7IH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVGaWxlcyhmaWxlcykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy51cGxvYWRlci52YWxpZGF0ZUZpbGVzKGZpbGVzKTtcbiAgICB0aGlzLmludmFsaWRGaWxlcy5lbWl0KHJlc3BvbnNlLmludmFsaWRGaWxlcyk7XG5cbiAgICBpZiAodGhpcy51cGxvYWRlci5vcHRpb25zLmF1dG9VcGxvYWQgJiYgcmVzcG9uc2UudmFsaWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVzKHJlc3BvbnNlLnZhbGlkRmlsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXVlZEZpbGVzLmVtaXQocmVzcG9uc2UudmFsaWRGaWxlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwbG9hZEZpbGVzKGZpbGVzKSB7XG4gICAgLy8gUmVzZXQgcHJvZ3Jlc3NcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gMDtcbiAgICB0aGlzLnVwbG9hZGluZ0ZpbGVzID0gZmlsZXM7XG5cbiAgICAvLyB1cGxvYWRcbiAgICB0aGlzLnVwbG9hZGVyLnVwbG9hZEZpbGVzKGZpbGVzKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByb2dyZXNzKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IE1hdGguZmxvb3IocmVzcG9uc2UucHJvZ3Jlc3MgKiAxMDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVzLmVtaXQocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWxlTGlzdFRvQXJyYXkobGlzdDogRmlsZUxpc3QpOiBvYmplY3RbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obGlzdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJldmVudEFuZFN0b3AoZXZlbnQ6IGFueSk6IGFueSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIl19
@@ -165,6 +165,7 @@ class AutoCompleteComponent {
165
165
  this.mask = null;
166
166
  this.clearInvalid = false;
167
167
  this.showAllByDefault = false;
168
+ this.autoComplete = 'off';
168
169
  // Eventemitter for searchvalue (parent object should update the results with this param)
169
170
  this.search = new EventEmitter();
170
171
  this.select = new EventEmitter();
@@ -438,7 +439,7 @@ class AutoCompleteComponent {
438
439
  AutoCompleteComponent.decorators = [
439
440
  { type: Component, args: [{
440
441
  selector: 'aui-auto-complete',
441
- template: "<div (closed)=\"onFlyoutClosed()\" [toggleClick]=\"false\" aria-haspopup=\"listbox\"\n auiFlyout class=\"m-flyout--scrollable m-flyout--full o-auto-complete\">\n <input (focus)=\"onFocus()\"\n (keyArrowDown)=\"onKeyArrowDown()\"\n (keyArrowUp)=\"onKeyArrowUp()\"\n (keyEnter)=\"onKeyEnter($event)\"\n (keyEscape)=\"onKeyEscape()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"doSearch()\"\n *ngIf=\"!mask\"\n [disabled]=\"isDisabled ? true : null\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n aria-autocomplete=\"list\"\n auiFlyoutAction\n auiSelectableActions\n autocomplete=\"off\"\n type=\"text\"\n />\n <input (focus)=\"onFocus()\"\n (keyArrowDown)=\"onKeyArrowDown()\"\n (keyArrowUp)=\"onKeyArrowUp()\"\n (keyEnter)=\"onKeyEnter($event)\"\n (keyEscape)=\"onKeyEscape()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"doSearch()\"\n *ngIf=\"mask\"\n [auiMask]=\"mask\"\n [disabled]=\"isDisabled ? true : null\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n aria-autocomplete=\"list\"\n auiFlyoutAction\n auiSelectableActions\n autocomplete=\"off\"\n type=\"text\"\n />\n\n <div *ngIf=\"!isDisabled\" auiFlyoutZone>\n\t\t<span *ngIf=\"focused && loadingText && searching\" class=\"o-auto-complete__info u-text-light u-margin-xs\">\n\t\t\t<span class=\"a-spinner a-spinner--inline a-spinner--sm u-margin-right-xs\"></span>\n {{ loadingText }}\n\t\t</span>\n <span *ngIf=\"focused && searchIncentiveText && !searching && !query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\">{{ searchIncentiveText }}</span>\n <span *ngIf=\"focused && noResultsText && !searching && query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\">{{ noResultsText }}</span>\n\n <aui-selectable-list (selected)=\"onSelect($event)\" *ngIf=\"results.length > 0 && !(focused && loadingText && searching)\" [index]=\"index\" [itemTemplate]=\"template\"\n [items]=\"results\" [label]=\"label\"\n [search]=\"query\"></aui-selectable-list>\n </div>\n</div>\n",
442
+ template: "<div (closed)=\"onFlyoutClosed()\" [toggleClick]=\"false\" aria-haspopup=\"listbox\"\n auiFlyout class=\"m-flyout--scrollable m-flyout--full o-auto-complete\">\n <input (focus)=\"onFocus()\"\n (keyArrowDown)=\"onKeyArrowDown()\"\n (keyArrowUp)=\"onKeyArrowUp()\"\n (keyEnter)=\"onKeyEnter($event)\"\n (keyEscape)=\"onKeyEscape()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"doSearch()\"\n *ngIf=\"!mask\"\n [disabled]=\"isDisabled ? true : null\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n aria-autocomplete=\"list\"\n auiFlyoutAction\n auiSelectableActions\n [autocomplete]=\"autoComplete\"\n type=\"text\"\n />\n <input (focus)=\"onFocus()\"\n (keyArrowDown)=\"onKeyArrowDown()\"\n (keyArrowUp)=\"onKeyArrowUp()\"\n (keyEnter)=\"onKeyEnter($event)\"\n (keyEscape)=\"onKeyEscape()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"doSearch()\"\n *ngIf=\"mask\"\n [auiMask]=\"mask\"\n [disabled]=\"isDisabled ? true : null\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n aria-autocomplete=\"list\"\n auiFlyoutAction\n auiSelectableActions\n [autocomplete]=\"autoComplete\"\n type=\"text\"\n />\n\n <div *ngIf=\"!isDisabled\" auiFlyoutZone>\n\t\t<span *ngIf=\"focused && loadingText && searching\" class=\"o-auto-complete__info u-text-light u-margin-xs\">\n\t\t\t<span class=\"a-spinner a-spinner--inline a-spinner--sm u-margin-right-xs\"></span>\n {{ loadingText }}\n\t\t</span>\n <span *ngIf=\"focused && searchIncentiveText && !searching && !query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\">{{ searchIncentiveText }}</span>\n <span *ngIf=\"focused && noResultsText && !searching && query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\">{{ noResultsText }}</span>\n\n <aui-selectable-list (selected)=\"onSelect($event)\" *ngIf=\"results.length > 0 && !(focused && loadingText && searching)\" [index]=\"index\" [itemTemplate]=\"template\"\n [items]=\"results\" [label]=\"label\"\n [search]=\"query\"></aui-selectable-list>\n </div>\n</div>\n",
442
443
  providers: [
443
444
  {
444
445
  provide: NG_VALUE_ACCESSOR,
@@ -471,6 +472,7 @@ AutoCompleteComponent.propDecorators = {
471
472
  loadingText: [{ type: Input }],
472
473
  noResultsText: [{ type: Input }],
473
474
  showAllByDefault: [{ type: Input }],
475
+ autoComplete: [{ type: Input }],
474
476
  label: [{ type: Input }],
475
477
  value: [{ type: Input }],
476
478
  search: [{ type: Output }],
@@ -505,6 +507,8 @@ if (false) {
505
507
  /** @type {?} */
506
508
  AutoCompleteComponent.prototype.showAllByDefault;
507
509
  /** @type {?} */
510
+ AutoCompleteComponent.prototype.autoComplete;
511
+ /** @type {?} */
508
512
  AutoCompleteComponent.prototype.label;
509
513
  /** @type {?} */
510
514
  AutoCompleteComponent.prototype.value;
@@ -2235,8 +2239,10 @@ if (false) {
2235
2239
  class UploadComponent {
2236
2240
  constructor() {
2237
2241
  this.id = '';
2242
+ this.accept = [];
2238
2243
  this.ariaLabelRemove = 'Verwijder';
2239
2244
  this.disabled = false;
2245
+ this.multiple = true;
2240
2246
  this.options = UPLOAD_OPTIONS_DEFAULT;
2241
2247
  this.selectUploadedFiles = new EventEmitter();
2242
2248
  this.uploadedFiles = [];
@@ -2278,14 +2284,16 @@ class UploadComponent {
2278
2284
  UploadComponent.decorators = [
2279
2285
  { type: Component, args: [{
2280
2286
  selector: 'aui-upload',
2281
- 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",
2287
+ template: "<div class=\"m-upload aui-upload\">\n <aui-upload-zone\n [id]=\"id\"\n [accept]=\"accept\"\n [ariaId]=\"ariaId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [uploader]=\"uploader\"\n (invalidFiles)=\"onInvalidFiles($event)\"\n (queuedFiles)=\"onQueuedFiles($event)\"\n (uploadedFiles)=\"onUploadedFiles($event)\">\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",
2282
2288
  styles: [".m-upload__button>.m-upload__input{display:none}"]
2283
2289
  }] }
2284
2290
  ];
2285
2291
  UploadComponent.propDecorators = {
2286
2292
  id: [{ type: Input }],
2293
+ accept: [{ type: Input }],
2287
2294
  ariaLabelRemove: [{ type: Input }],
2288
2295
  disabled: [{ type: Input }],
2296
+ multiple: [{ type: Input }],
2289
2297
  options: [{ type: Input }],
2290
2298
  selectUploadedFiles: [{ type: Output }]
2291
2299
  };
@@ -2293,10 +2301,14 @@ if (false) {
2293
2301
  /** @type {?} */
2294
2302
  UploadComponent.prototype.id;
2295
2303
  /** @type {?} */
2304
+ UploadComponent.prototype.accept;
2305
+ /** @type {?} */
2296
2306
  UploadComponent.prototype.ariaLabelRemove;
2297
2307
  /** @type {?} */
2298
2308
  UploadComponent.prototype.disabled;
2299
2309
  /** @type {?} */
2310
+ UploadComponent.prototype.multiple;
2311
+ /** @type {?} */
2300
2312
  UploadComponent.prototype.options;
2301
2313
  /** @type {?} */
2302
2314
  UploadComponent.prototype.selectUploadedFiles;
@@ -2449,11 +2461,16 @@ if (false) {
2449
2461
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2450
2462
  */
2451
2463
  class UploadZoneComponent {
2452
- constructor() {
2453
- this.disabled = false;
2454
- this.multiple = true;
2464
+ /**
2465
+ * @param {?} renderer
2466
+ */
2467
+ constructor(renderer) {
2468
+ this.renderer = renderer;
2455
2469
  this.id = '';
2470
+ this.accept = [];
2456
2471
  this.ariaId = '';
2472
+ this.disabled = false;
2473
+ this.multiple = true;
2457
2474
  this.uploadedFiles = new EventEmitter();
2458
2475
  this.queuedFiles = new EventEmitter();
2459
2476
  this.invalidFiles = new EventEmitter();
@@ -2501,6 +2518,29 @@ class UploadZoneComponent {
2501
2518
  const files = this.fileListToArray(this.fileInput.nativeElement.files);
2502
2519
  this.handleFiles(files);
2503
2520
  }
2521
+ /**
2522
+ * @param {?} event
2523
+ * @return {?}
2524
+ */
2525
+ onFileClick(event) {
2526
+ // When removing a file make sure you can add it again later
2527
+ // See: https://stackoverflow.com/questions/59870335/ng2-file-upload-not-allowing-me-to-add-same-doc-after-ive-removed-it-from-que
2528
+ event.target.value = '';
2529
+ }
2530
+ /**
2531
+ * @return {?}
2532
+ */
2533
+ ngAfterViewInit() {
2534
+ if (this.multiple !== false) {
2535
+ this.renderer.setProperty(this.fileInput.nativeElement, 'multiple', 'multiple');
2536
+ }
2537
+ if (this.accept) {
2538
+ this.renderer.setProperty(this.fileInput.nativeElement, 'accept', this.accept.join());
2539
+ }
2540
+ if (this.disabled) {
2541
+ this.renderer.setProperty(this.fileInput.nativeElement, 'disabled', 'disabled');
2542
+ }
2543
+ }
2504
2544
  /**
2505
2545
  * @protected
2506
2546
  * @param {?} files
@@ -2567,16 +2607,21 @@ class UploadZoneComponent {
2567
2607
  UploadZoneComponent.decorators = [
2568
2608
  { type: Component, args: [{
2569
2609
  selector: 'aui-upload-zone',
2570
- 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"
2610
+ 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\n #fileInput\n type=\"file\"\n class=\"m-upload__input\"\n [id]=\"id\"\n [attr.aria-labelledby]=\"ariaId\"\n (click)=\"onFileClick($event)\"\n (change)=\"updateFiles()\">\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 (click)=\"onFileClick($event)\"\n (change)=\"updateFiles()\">\n</button>\n"
2571
2611
  }] }
2572
2612
  ];
2613
+ /** @nocollapse */
2614
+ UploadZoneComponent.ctorParameters = () => [
2615
+ { type: Renderer2 }
2616
+ ];
2573
2617
  UploadZoneComponent.propDecorators = {
2574
2618
  fileInput: [{ type: ViewChild, args: ['fileInput', { static: false },] }],
2575
2619
  uploader: [{ type: Input }],
2576
- disabled: [{ type: Input }],
2577
- multiple: [{ type: Input }],
2578
2620
  id: [{ type: Input }],
2621
+ accept: [{ type: Input }],
2579
2622
  ariaId: [{ type: Input }],
2623
+ disabled: [{ type: Input }],
2624
+ multiple: [{ type: Input }],
2580
2625
  uploadedFiles: [{ type: Output }],
2581
2626
  queuedFiles: [{ type: Output }],
2582
2627
  invalidFiles: [{ type: Output }],
@@ -2590,14 +2635,16 @@ if (false) {
2590
2635
  /** @type {?} */
2591
2636
  UploadZoneComponent.prototype.uploader;
2592
2637
  /** @type {?} */
2593
- UploadZoneComponent.prototype.disabled;
2594
- /** @type {?} */
2595
- UploadZoneComponent.prototype.multiple;
2596
- /** @type {?} */
2597
2638
  UploadZoneComponent.prototype.id;
2598
2639
  /** @type {?} */
2640
+ UploadZoneComponent.prototype.accept;
2641
+ /** @type {?} */
2599
2642
  UploadZoneComponent.prototype.ariaId;
2600
2643
  /** @type {?} */
2644
+ UploadZoneComponent.prototype.disabled;
2645
+ /** @type {?} */
2646
+ UploadZoneComponent.prototype.multiple;
2647
+ /** @type {?} */
2601
2648
  UploadZoneComponent.prototype.uploadedFiles;
2602
2649
  /** @type {?} */
2603
2650
  UploadZoneComponent.prototype.queuedFiles;
@@ -2611,6 +2658,11 @@ if (false) {
2611
2658
  UploadZoneComponent.prototype.uploadProgress;
2612
2659
  /** @type {?} */
2613
2660
  UploadZoneComponent.prototype.uploadingFiles;
2661
+ /**
2662
+ * @type {?}
2663
+ * @private
2664
+ */
2665
+ UploadZoneComponent.prototype.renderer;
2614
2666
  }
2615
2667
 
2616
2668
  /**