UNPKG

@trendster-io/ng-uploader

Version:

A fully featured Angular file uploader that utilizes Angular's HttpClient internally, allows you to customize outgoing HTTP requests using the "Angular Way" (Interceptors), provides customizable concurrent queuing of uploads and a simple way to select fil

114 lines 9.41 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core'; export class DropzoneDirective { constructor() { // Disable dropping on the body of the document. // This prevents the browser from loading the dropped files // using it's default behaviour if the user misses the drop zone. // Set this input to false if you want the browser default behaviour. this.preventBodyDrop = true; this.disabled = false; this.fileDrop = new EventEmitter(); // The `dropzone-active` class is applied to the host // element when a drag is currently over the target, to allow styling it this.active = false; } /** * @param {?} event * @return {?} */ onDrop(event) { event.preventDefault(); if (!this.disabled) { this.active = false; const { dataTransfer } = event; if (dataTransfer.items) { /** @type {?} */ const files = []; for (let i = 0; i < dataTransfer.items.length; i++) { // If dropped items aren't files, reject them if (dataTransfer.items[i].kind === 'file') { files.push(dataTransfer.items[i].getAsFile()); } } dataTransfer.items.clear(); this.fileDrop.emit(files); } else { /** @type {?} */ const files = dataTransfer.files; dataTransfer.clearData(); this.fileDrop.emit(Array.from(files)); } } } /** * @param {?} event * @return {?} */ onDragOver(event) { event.stopPropagation(); event.preventDefault(); if (!this.disabled) { this.active = true; } } /** * @param {?} event * @return {?} */ onDragLeave(event) { if (!this.disabled) { this.active = false; } } /** * @param {?} event * @return {?} */ onBodyDragOver(event) { if (this.preventBodyDrop) { event.preventDefault(); event.stopPropagation(); } } /** * @param {?} event * @return {?} */ onBodyDrop(event) { if (this.preventBodyDrop) { event.preventDefault(); } } } DropzoneDirective.decorators = [ { type: Directive, args: [{ selector: '[dropzone]' },] } ]; DropzoneDirective.propDecorators = { preventBodyDrop: [{ type: Input }], disabled: [{ type: Input }], fileDrop: [{ type: Output }], active: [{ type: HostBinding, args: ['class.dropzone-active',] }], onDrop: [{ type: HostListener, args: ['drop', ['$event'],] }], onDragOver: [{ type: HostListener, args: ['dragover', ['$event'],] }], onDragLeave: [{ type: HostListener, args: ['dragleave', ['$event'],] }], onBodyDragOver: [{ type: HostListener, args: ['body:dragover', ['$event'],] }], onBodyDrop: [{ type: HostListener, args: ['body:drop', ['$event'],] }] }; if (false) { /** @type {?} */ DropzoneDirective.prototype.preventBodyDrop; /** @type {?} */ DropzoneDirective.prototype.disabled; /** @type {?} */ DropzoneDirective.prototype.fileDrop; /** @type {?} */ DropzoneDirective.prototype.active; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRyZW5kc3Rlci1pby9uZy11cGxvYWRlci8iLCJzb3VyY2VzIjpbImxpYi9kcm9wem9uZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUt2QixNQUFNLE9BQU8saUJBQWlCO0lBSDlCOzs7OztRQVFXLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRXZCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFaEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7OztRQUtoRCxXQUFNLEdBQUcsS0FBSyxDQUFDO0lBMERqQixDQUFDOzs7OztJQXZEQyxNQUFNLENBQUMsS0FBZ0I7UUFDckIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2tCQUVkLEVBQUUsWUFBWSxFQUFFLEdBQUcsS0FBSztZQUU5QixJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUU7O3NCQUNoQixLQUFLLEdBQVcsRUFBRTtnQkFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNsRCw2Q0FBNkM7b0JBQzdDLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO3dCQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztxQkFDL0M7aUJBQ0Y7Z0JBQ0QsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDM0I7aUJBQU07O3NCQUNDLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSztnQkFDaEMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDdkM7U0FDRjtJQUNILENBQUM7Ozs7O0lBR0QsVUFBVSxDQUFDLEtBQWdCO1FBQ3pCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDcEI7SUFDSCxDQUFDOzs7OztJQUdELFdBQVcsQ0FBQyxLQUFnQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUNyQjtJQUNILENBQUM7Ozs7O0lBR0QsY0FBYyxDQUFDLEtBQWdCO1FBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzs7Ozs7SUFHRCxVQUFVLENBQUMsS0FBZ0I7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7OztZQTFFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7YUFDdkI7Ozs4QkFNRSxLQUFLO3VCQUVMLEtBQUs7dUJBRUwsTUFBTTtxQkFJTixXQUFXLFNBQUMsdUJBQXVCO3FCQUduQyxZQUFZLFNBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO3lCQTBCL0IsWUFBWSxTQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQzswQkFTbkMsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQzs2QkFPcEMsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzt5QkFReEMsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7OztJQTdEckMsNENBQWdDOztJQUVoQyxxQ0FBMEI7O0lBRTFCLHFDQUFnRDs7SUFJaEQsbUNBQ2UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Ryb3B6b25lXSdcbn0pXG5leHBvcnQgY2xhc3MgRHJvcHpvbmVEaXJlY3RpdmUge1xuICAvLyBEaXNhYmxlIGRyb3BwaW5nIG9uIHRoZSBib2R5IG9mIHRoZSBkb2N1bWVudC5cbiAgLy8gVGhpcyBwcmV2ZW50cyB0aGUgYnJvd3NlciBmcm9tIGxvYWRpbmcgdGhlIGRyb3BwZWQgZmlsZXNcbiAgLy8gdXNpbmcgaXQncyBkZWZhdWx0IGJlaGF2aW91ciBpZiB0aGUgdXNlciBtaXNzZXMgdGhlIGRyb3Agem9uZS5cbiAgLy8gU2V0IHRoaXMgaW5wdXQgdG8gZmFsc2UgaWYgeW91IHdhbnQgdGhlIGJyb3dzZXIgZGVmYXVsdCBiZWhhdmlvdXIuXG4gIEBJbnB1dCgpIHByZXZlbnRCb2R5RHJvcCA9IHRydWU7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZmlsZURyb3AgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcblxuICAvLyBUaGUgYGRyb3B6b25lLWFjdGl2ZWAgY2xhc3MgaXMgYXBwbGllZCB0byB0aGUgaG9zdFxuICAvLyBlbGVtZW50IHdoZW4gYSBkcmFnIGlzIGN1cnJlbnRseSBvdmVyIHRoZSB0YXJnZXQsIHRvIGFsbG93IHN0eWxpbmcgaXRcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kcm9wem9uZS1hY3RpdmUnKVxuICBhY3RpdmUgPSBmYWxzZTtcblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgY29uc3QgeyBkYXRhVHJhbnNmZXIgfSA9IGV2ZW50O1xuXG4gICAgICBpZiAoZGF0YVRyYW5zZmVyLml0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhVHJhbnNmZXIuaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAvLyBJZiBkcm9wcGVkIGl0ZW1zIGFyZW4ndCBmaWxlcywgcmVqZWN0IHRoZW1cbiAgICAgICAgICBpZiAoZGF0YVRyYW5zZmVyLml0ZW1zW2ldLmtpbmQgPT09ICdmaWxlJykge1xuICAgICAgICAgICAgZmlsZXMucHVzaChkYXRhVHJhbnNmZXIuaXRlbXNbaV0uZ2V0QXNGaWxlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkYXRhVHJhbnNmZXIuaXRlbXMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5maWxlRHJvcC5lbWl0KGZpbGVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgICAgICBkYXRhVHJhbnNmZXIuY2xlYXJEYXRhKCk7XG4gICAgICAgIHRoaXMuZmlsZURyb3AuZW1pdChBcnJheS5mcm9tKGZpbGVzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50J10pXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYm9keTpkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIG9uQm9keURyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBpZiAodGhpcy5wcmV2ZW50Qm9keURyb3ApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdib2R5OmRyb3AnLCBbJyRldmVudCddKVxuICBvbkJvZHlEcm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBpZiAodGhpcy5wcmV2ZW50Qm9keURyb3ApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=