diff --git a/lib/content-services/upload/components/upload-drag-area.component.ts b/lib/content-services/upload/components/upload-drag-area.component.ts
index c72756032f..0552785421 100644
--- a/lib/content-services/upload/components/upload-drag-area.component.ts
+++ b/lib/content-services/upload/components/upload-drag-area.component.ts
@@ -60,6 +60,7 @@ export class UploadDragAreaComponent extends UploadBase implements NodePermissio
}
/**
+ * @deprecated in 2.4.0: use `onFilesDropped` instead
* Called when the file are dropped in the drag area
*
* @param item - FileEntity
diff --git a/lib/content-services/upload/directives/file-draggable.directive.ts b/lib/content-services/upload/directives/file-draggable.directive.ts
index 8ffdce64d4..de9da851e6 100644
--- a/lib/content-services/upload/directives/file-draggable.directive.ts
+++ b/lib/content-services/upload/directives/file-draggable.directive.ts
@@ -35,7 +35,9 @@ export class FileDraggableDirective implements OnInit, OnDestroy {
@Output()
filesDropped: EventEmitter
= new EventEmitter();
- /** Emitted when one or more files are dragged and dropped onto the draggable element. */
+ /** @deprecated in 2.4.0: use `filesDropped` instead.
+ * Emitted when one or more files are dragged and dropped onto the draggable element.
+ */
@Output()
filesEntityDropped: EventEmitter = new EventEmitter();
@@ -74,26 +76,34 @@ export class FileDraggableDirective implements OnInit, OnDestroy {
if (this.enabled && !event.defaultPrevented) {
this.preventDefault(event);
- let items = event.dataTransfer.items;
+ // Chrome, Edge, Firefox, Opera (Files + Folders)
+ const items = event.dataTransfer.items;
if (items) {
+ const files: File[] = [];
+
for (let i = 0; i < items.length; i++) {
- if (typeof items[i].webkitGetAsEntry !== 'undefined') {
- let item = items[i].webkitGetAsEntry();
+ if (items[i].webkitGetAsEntry) {
+ const item = items[i].webkitGetAsEntry();
+
if (item) {
if (item.isFile) {
- this.filesEntityDropped.emit(item);
+ const file = items[i].getAsFile();
+
+ if (file) {
+ files.push(file);
+ }
} else if (item.isDirectory) {
this.folderEntityDropped.emit(item);
}
}
- } else {
- let files = FileUtils.toFileArray(event.dataTransfer.files);
- this.filesDropped.emit(files);
}
}
+ if (files.length > 0) {
+ this.filesDropped.emit(files);
+ }
} else {
- // safari or FF
- let files = FileUtils.toFileArray(event.dataTransfer.files);
+ // IE, Safari, Chrome, Edge, Firefox, Opera (Files only)
+ const files = FileUtils.toFileArray(event.dataTransfer.files);
this.filesDropped.emit(files);
}