ngx-uploadx
Version:
Angular Resumable Upload Module
62 lines • 7.24 kB
JavaScript
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