UNPKG

ngx-uploader-directive

Version:

Angular File Uploader Directive which provides two directives, which are select and file drag and drop to upload files on server.

160 lines 16.6 kB
/** * @fileoverview added by tsickle * Generated from: lib/directives/ngx-uploader-select.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @license * The MIT License (MIT) * Copyright (c) 2015-2018 Jan Kuri jan@bleenco.com * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ // tslint:disable: max-line-length // tslint:disable: no-console import { Directive, Input, EventEmitter, Output, ElementRef } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { NgxUploaderDirectiveService } from '../services/ngx-uploader-directive.service'; import { environment } from '../configs/config'; export class NgxUploaderSelectDirective { /** * @param {?} elementRef * @param {?} httpClient */ constructor(elementRef, httpClient) { this.elementRef = elementRef; this.httpClient = httpClient; this.devEnv = !environment.production; this.fileListener = (/** * @return {?} */ () => { // tslint:disable-next-line: no-console if (this.element.files) { // call service method to handle selected files this.uploadService.handleSelectedFiles(this.element.files, 'SELECT'); } }); this.uploadOutput = new EventEmitter(); } // tslint:disable-next-line: use-life-cycle-interface /** * @return {?} */ ngOnInit() { this.subscriptions = new Array(); /** @type {?} */ const concurrency = this.options.requestConcurrency; /** @type {?} */ const allowedFileTypes = this.options.allowedFileTypes; /** @type {?} */ const maxFileUploads = this.options.maxFileUploads; /** @type {?} */ const maxFileSize = this.options.maxFileSize; // tslint:disable-next-line: max-line-length this.uploadService = new NgxUploaderDirectiveService(concurrency, this.options.maxFilesToAddInSingleRequest, allowedFileTypes, maxFileUploads, maxFileSize, this.httpClient, this.options.logs); // file upload element this.element = this.elementRef.nativeElement; // Adding on change event listener this.element.addEventListener('change', this.fileListener, false); this.subscriptions.push(this.uploadService.fileServiceEvents.subscribe((/** * @param {?} event * @return {?} */ (event) => { if (event.fileSelectedEventType === 'SELECT' || event.fileSelectedEventType === 'ALL') { if (event.type === 'error' || event.type === 'removedAll') { this.element.files = null; this.element.value = ''; } else if (event.type === 'removed' || event.type === 'rejected') { if (this.uploadService.queue.length === 0) { this.element.files = null; this.element.value = ''; } } this.uploadOutput.emit(event); } }))); if (this.uploadInput instanceof EventEmitter) { if (this.options.logs && this.devEnv) { console.info('Input select Init'); } this.subscriptions.push(this.uploadService.handleInputEvents(this.uploadInput)); } } // tslint:disable-next-line: use-life-cycle-interface /** * @return {?} */ ngOnDestroy() { if (this.element) { this.element.removeEventListener('change', this.fileListener, false); this.subscriptions.forEach((/** * @param {?} sub * @return {?} */ sub => sub.unsubscribe())); } } } NgxUploaderSelectDirective.decorators = [ { type: Directive, args: [{ // tslint:disable-next-line: directive-selector selector: '[ngxFileSelect]' },] } ]; /** @nocollapse */ NgxUploaderSelectDirective.ctorParameters = () => [ { type: ElementRef }, { type: HttpClient } ]; NgxUploaderSelectDirective.propDecorators = { options: [{ type: Input }], uploadInput: [{ type: Input }], uploadOutput: [{ type: Output }] }; if (false) { /** * @type {?} * @private */ NgxUploaderSelectDirective.prototype.devEnv; /** @type {?} */ NgxUploaderSelectDirective.prototype.options; /** @type {?} */ NgxUploaderSelectDirective.prototype.uploadInput; /** @type {?} */ NgxUploaderSelectDirective.prototype.uploadOutput; /** @type {?} */ NgxUploaderSelectDirective.prototype.uploadService; /** @type {?} */ NgxUploaderSelectDirective.prototype.element; /** @type {?} */ NgxUploaderSelectDirective.prototype.subscriptions; /** @type {?} */ NgxUploaderSelectDirective.prototype.fileListener; /** @type {?} */ NgxUploaderSelectDirective.prototype.elementRef; /** * @type {?} * @private */ NgxUploaderSelectDirective.prototype.httpClient; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXVwbG9hZGVyLXNlbGVjdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvbmd4LXVwbG9hZGVyLWRpcmVjdGl2ZS9zcmMvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9uZ3gtdXBsb2FkZXItc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBT2hELE1BQU0sT0FBTywwQkFBMEI7Ozs7O0lBYXJDLFlBQ1MsVUFBc0IsRUFDckIsVUFBc0I7UUFEdkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBYnhCLFdBQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFvRXpDLGlCQUFZOzs7UUFBRyxHQUFHLEVBQUU7WUFDbEIsdUNBQXVDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ3RCLCtDQUErQztnQkFDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN0RTtRQUNILENBQUMsRUFBQTtRQTNEQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO0lBQ3hELENBQUM7Ozs7O0lBR0QsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxLQUFL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QUs7MkJBQ0wsTUFBTTs7Ozs7OztJQUpQLDRDQUF5Qzs7SUFFekMsNkNBQWlDOztJQUNqQyxpREFBd0M7O0lBQ3hDLGtEQUFvRDs7SUFFcEQsbURBQTJDOztJQUMzQyw2Q0FBMEI7O0lBRTFCLG1EQUFtQzs7SUEyRG5DLGtEQU1DOztJQTlEQyxnREFBNkI7Ozs7O0lBQzdCLGdEQUE4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcclxuICogQ29weXJpZ2h0IChjKSAyMDE1LTIwMTggSmFuIEt1cmkgamFuQGJsZWVuY28uY29tXHJcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcclxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxyXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXHJcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcclxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXHJcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XHJcbiAqXHJcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxyXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxyXG4gKlxyXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXHJcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxyXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcclxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxyXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxyXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxyXG4gKiBTT0ZUV0FSRS5cclxuICovXHJcblxyXG4vLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoXHJcbi8vIHRzbGludDpkaXNhYmxlOiBuby1jb25zb2xlXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElVcGxvYWRPcHRpb25zLCBJVXBsb2FkSW5wdXQsIElVcGxvYWRPdXRwdXQgfSBmcm9tICcuLi9tb2RlbHMvbmd4LXVwbG9hZGVyLWRpcmVjdGl2ZS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTmd4VXBsb2FkZXJEaXJlY3RpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbmd4LXVwbG9hZGVyLWRpcmVjdGl2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9jb25maWdzL2NvbmZpZyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRpcmVjdGl2ZS1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnW25neEZpbGVTZWxlY3RdJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIE5neFVwbG9hZGVyU2VsZWN0RGlyZWN0aXZlIHtcclxuXHJcbiAgcHJpdmF0ZSBkZXZFbnYgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcclxuXHJcbiAgQElucHV0KCkgb3B0aW9uczogSVVwbG9hZE9wdGlvbnM7XHJcbiAgQElucHV0KCkgdXBsb2FkSW5wdXQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPdXRwdXQoKSB1cGxvYWRPdXRwdXQ6IEV2ZW50RW1pdHRlcjxJVXBsb2FkT3V0cHV0PjtcclxuXHJcbiAgdXBsb2FkU2VydmljZTogTmd4VXBsb2FkZXJEaXJlY3RpdmVTZXJ2aWNlO1xyXG4gIGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQ7XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVwbG9hZE91dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8SVVwbG9hZE91dHB1dD4oKTtcclxuICB9XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdXNlLWxpZmUtY3ljbGUtaW50ZXJmYWNlXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBuZXcgQXJyYXk8U3Vic2NyaXB0aW9uPigpO1xyXG4gICAgY29uc3QgY29uY3VycmVuY3kgPSB0aGlzLm9wdGlvbnMucmVxdWVzdENvbmN1cnJlbmN5O1xyXG4gICAgY29uc3QgYWxsb3dlZEZpbGVUeXBlcyA9IHRoaXMub3B0aW9ucy5hbGxvd2VkRmlsZVR5cGVzO1xyXG4gICAgY29uc3QgbWF4RmlsZVVwbG9hZHMgPSB0aGlzLm9wdGlvbnMubWF4RmlsZVVwbG9hZHM7XHJcbiAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHRoaXMub3B0aW9ucy5tYXhGaWxlU2l6ZTtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UgPSBuZXcgTmd4VXBsb2FkZXJEaXJlY3RpdmVTZXJ2aWNlKGNvbmN1cnJlbmN5LCB0aGlzLm9wdGlvbnMubWF4RmlsZXNUb0FkZEluU2luZ2xlUmVxdWVzdCwgYWxsb3dlZEZpbGVUeXBlcywgbWF4RmlsZVVwbG9hZHMsIG1heEZpbGVTaXplLCB0aGlzLmh0dHBDbGllbnQsIHRoaXMub3B0aW9ucy5sb2dzKTtcclxuXHJcbiAgICAvLyBmaWxlIHVwbG9hZCBlbGVtZW50XHJcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAvLyBBZGRpbmcgb24gY2hhbmdlIGV2ZW50IGxpc3RlbmVyXHJcbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5maWxlTGlzdGVuZXIsIGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmZpbGVTZXJ2aWNlRXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IElVcGxvYWRPdXRwdXQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQuZmlsZVNlbGVjdGVkRXZlbnRUeXBlID09PSAnU0VMRUNUJyB8fCBldmVudC5maWxlU2VsZWN0ZWRFdmVudFR5cGUgPT09ICdBTEwnKSB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2Vycm9yJyB8fCBldmVudC50eXBlID09PSAncmVtb3ZlZEFsbCcpIHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZpbGVzID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdyZW1vdmVkJyB8fCBldmVudC50eXBlID09PSAncmVqZWN0ZWQnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVwbG9hZFNlcnZpY2UucXVldWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmZpbGVzID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMudXBsb2FkT3V0cHV0LmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sb2dzICYmIHRoaXMuZGV2RW52KSB7XHJcbiAgICAgICAgY29uc29sZS5pbmZvKCdJbnB1dCBzZWxlY3QgSW5pdCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMudXBsb2FkU2VydmljZS5oYW5kbGVJbnB1dEV2ZW50cyh0aGlzLnVwbG9hZElucHV0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHVzZS1saWZlLWN5Y2xlLWludGVyZmFjZVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudCkge1xyXG4gICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5maWxlTGlzdGVuZXIsIGZhbHNlKTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbGVMaXN0ZW5lciA9ICgpID0+IHtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uc29sZVxyXG4gICAgaWYgKHRoaXMuZWxlbWVudC5maWxlcykge1xyXG4gICAgICAvLyBjYWxsIHNlcnZpY2UgbWV0aG9kIHRvIGhhbmRsZSBzZWxlY3RlZCBmaWxlc1xyXG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuaGFuZGxlU2VsZWN0ZWRGaWxlcyh0aGlzLmVsZW1lbnQuZmlsZXMsICdTRUxFQ1QnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==