@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
JavaScript
/**
* @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=