UNPKG

ngx-uploadx

Version:
62 lines 7.24 kB
import { EventEmitter, HostListener, Input, Output } from '@angular/core'; import { Directive } from '@angular/core'; import { takeWhile } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "./uploadx.service"; export class UploadxDirective { elementRef; renderer; uploadService; set uploadx(value) { if (value) { this.options = value; } } options = {}; set control(value) { if (value) { this.uploadService.control(value); } } state = new EventEmitter(); constructor(elementRef, renderer, uploadService) { this.elementRef = elementRef; this.renderer = renderer; this.uploadService = uploadService; } ngOnInit() { const { multiple, allowedTypes } = { ...this.uploadService.options, ...this.options }; multiple !== false && this.renderer.setAttribute(this.elementRef.nativeElement, 'multiple', ''); allowedTypes && this.renderer.setAttribute(this.elementRef.nativeElement, 'accept', allowedTypes); this.uploadService.events .pipe(takeWhile(() => this.state.observers.length > 0)) .subscribe(this.state); } fileListener(files) { if (files?.length) { this.uploadService.handleFiles(files, this.options); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploadxDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.UploadxService }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: UploadxDirective, isStandalone: true, selector: "[uploadx]", inputs: { uploadx: "uploadx", options: "options", control: "control" }, outputs: { state: "state" }, host: { listeners: { "change": "fileListener($event.target.files)" } }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UploadxDirective, decorators: [{ type: Directive, args: [{ selector: '[uploadx]', standalone: true }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.UploadxService }], propDecorators: { uploadx: [{ type: Input }], options: [{ type: Input }], control: [{ type: Input }], state: [{ type: Output }], fileListener: [{ type: HostListener, args: ['change', ['$event.target.files']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkeC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXBsb2FkeC9saWIvdXBsb2FkeC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBUzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQmpCO0lBQ0E7SUFDQTtJQXBCVixJQUNJLE9BQU8sQ0FBQyxLQUEwQjtRQUNwQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFUSxPQUFPLEdBQW1CLEVBQUUsQ0FBQztJQUV0QyxJQUFhLE9BQU8sQ0FBQyxLQUErQjtRQUNsRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUVsRCxZQUNVLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLGFBQTZCO1FBRjdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7SUFDcEMsQ0FBQztJQUVKLFFBQVE7UUFDTixNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0RixRQUFRLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRyxZQUFZO1lBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXBGLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTthQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN0RCxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFHRCxZQUFZLENBQUMsS0FBeUI7UUFDcEMsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQzt3R0F4Q1UsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBSjVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtvSUFHSyxPQUFPO3NCQURWLEtBQUs7Z0JBT0csT0FBTztzQkFBZixLQUFLO2dCQUVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBTUksS0FBSztzQkFBZCxNQUFNO2dCQW9CUCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVXBsb2FkU3RhdGUsIFVwbG9hZHhDb250cm9sRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVXBsb2FkeE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgVXBsb2FkeFNlcnZpY2UgfSBmcm9tICcuL3VwbG9hZHguc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t1cGxvYWR4XScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkeERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHNldCB1cGxvYWR4KHZhbHVlOiBVcGxvYWR4T3B0aW9ucyB8ICcnKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBvcHRpb25zOiBVcGxvYWR4T3B0aW9ucyA9IHt9O1xuXG4gIEBJbnB1dCgpIHNldCBjb250cm9sKHZhbHVlOiBVcGxvYWR4Q29udHJvbEV2ZW50IHwgJycpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jb250cm9sKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgc3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPFVwbG9hZFN0YXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWR4U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBtdWx0aXBsZSwgYWxsb3dlZFR5cGVzIH0gPSB7IC4uLnRoaXMudXBsb2FkU2VydmljZS5vcHRpb25zLCAuLi50aGlzLm9wdGlvbnMgfTtcbiAgICBtdWx0aXBsZSAhPT0gZmFsc2UgJiYgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtdWx0aXBsZScsICcnKTtcbiAgICBhbGxvd2VkVHlwZXMgJiZcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYWNjZXB0JywgYWxsb3dlZFR5cGVzKTtcblxuICAgIHRoaXMudXBsb2FkU2VydmljZS5ldmVudHNcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLnN0YXRlLm9ic2VydmVycy5sZW5ndGggPiAwKSlcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5zdGF0ZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudC50YXJnZXQuZmlsZXMnXSlcbiAgZmlsZUxpc3RlbmVyKGZpbGVzPzogRmlsZUxpc3QgfCBGaWxlW10pOiB2b2lkIHtcbiAgICBpZiAoZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmhhbmRsZUZpbGVzKGZpbGVzLCB0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxufVxuIl19