mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
group uploaded files into single batch, IE fixes (#3438)
This commit is contained in:
committed by
Eugenio Romano
parent
74ed04dc53
commit
302091d338
@@ -13,7 +13,6 @@ Provides drag-and-drop features for an element such as a `div`.
|
|||||||
```html
|
```html
|
||||||
<div [file-draggable]="true" id="DragAndDropBorder" class="drag-and-drop-border"
|
<div [file-draggable]="true" id="DragAndDropBorder" class="drag-and-drop-border"
|
||||||
(filesDropped)="onFilesDropped($event)"
|
(filesDropped)="onFilesDropped($event)"
|
||||||
(filesEntityDropped)="onFilesEntityDropped($event)"
|
|
||||||
(folderEntityDropped)="onFolderEntityDropped($event)"
|
(folderEntityDropped)="onFolderEntityDropped($event)"
|
||||||
dropzone="" webkitdropzone="*" #dragAndDropArea>
|
dropzone="" webkitdropzone="*" #dragAndDropArea>
|
||||||
<ng-content></ng-content>
|
<ng-content></ng-content>
|
||||||
@@ -47,7 +46,7 @@ Some sample CSS to show the drag and drop area:
|
|||||||
| Name | Type | Description |
|
| Name | Type | Description |
|
||||||
| -- | -- | -- |
|
| -- | -- | -- |
|
||||||
| filesDropped | `EventEmitter<File[]>` | Emitted when one or more files are dragged and dropped onto the draggable element. |
|
| filesDropped | `EventEmitter<File[]>` | Emitted when one or more files are dragged and dropped onto the draggable element. |
|
||||||
| filesEntityDropped | `EventEmitter<any>` | Emitted when one or more files are dragged and dropped onto the draggable element. |
|
| filesEntityDropped | `EventEmitter<any>` | **Deprecated in 2.4.0**: use `filesDropped` instead. Emitted when one or more files are dragged and dropped onto the draggable element. |
|
||||||
| folderEntityDropped | `EventEmitter<any>` | Emitted when a directory is dragged and dropped onto the draggable element. |
|
| folderEntityDropped | `EventEmitter<any>` | Emitted when a directory is dragged and dropped onto the draggable element. |
|
||||||
|
|
||||||
## Details
|
## Details
|
||||||
@@ -66,11 +65,6 @@ export class SomeComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onFilesEntityDropped(item: any): void {
|
|
||||||
// Use for example the uploadService to upload files to ACS
|
|
||||||
console.log('# of files dropped: ', item);
|
|
||||||
}
|
|
||||||
|
|
||||||
onFolderEntityDropped(folder: any): void {
|
onFolderEntityDropped(folder: any): void {
|
||||||
if (folder.isDirectory) {
|
if (folder.isDirectory) {
|
||||||
// Use for example the uploadService to upload folder content to ACS
|
// Use for example the uploadService to upload folder content to ACS
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
<div [file-draggable]="isDroppable()" class="upload-border"
|
<div [file-draggable]="isDroppable()" class="upload-border"
|
||||||
(filesDropped)="onFilesDropped($event)"
|
(filesDropped)="onFilesDropped($event)"
|
||||||
(filesEntityDropped)="onFilesEntityDropped($event)"
|
|
||||||
(folderEntityDropped)="onFolderEntityDropped($event)"
|
(folderEntityDropped)="onFolderEntityDropped($event)"
|
||||||
(upload-files)="onUploadFiles($event)"
|
(upload-files)="onUploadFiles($event)"
|
||||||
dropzone="" webkitdropzone="*" #droparea>
|
dropzone="" webkitdropzone="*" #droparea>
|
||||||
|
@@ -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
|
* Called when the file are dropped in the drag area
|
||||||
*
|
*
|
||||||
* @param item - FileEntity
|
* @param item - FileEntity
|
||||||
|
@@ -35,7 +35,9 @@ export class FileDraggableDirective implements OnInit, OnDestroy {
|
|||||||
@Output()
|
@Output()
|
||||||
filesDropped: EventEmitter<File[]> = new EventEmitter<File[]>();
|
filesDropped: EventEmitter<File[]> = new EventEmitter<File[]>();
|
||||||
|
|
||||||
/** 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()
|
@Output()
|
||||||
filesEntityDropped: EventEmitter<any> = new EventEmitter();
|
filesEntityDropped: EventEmitter<any> = new EventEmitter();
|
||||||
|
|
||||||
@@ -74,26 +76,34 @@ export class FileDraggableDirective implements OnInit, OnDestroy {
|
|||||||
if (this.enabled && !event.defaultPrevented) {
|
if (this.enabled && !event.defaultPrevented) {
|
||||||
this.preventDefault(event);
|
this.preventDefault(event);
|
||||||
|
|
||||||
let items = event.dataTransfer.items;
|
// Chrome, Edge, Firefox, Opera (Files + Folders)
|
||||||
|
const items = event.dataTransfer.items;
|
||||||
if (items) {
|
if (items) {
|
||||||
|
const files: File[] = [];
|
||||||
|
|
||||||
for (let i = 0; i < items.length; i++) {
|
for (let i = 0; i < items.length; i++) {
|
||||||
if (typeof items[i].webkitGetAsEntry !== 'undefined') {
|
if (items[i].webkitGetAsEntry) {
|
||||||
let item = items[i].webkitGetAsEntry();
|
const item = items[i].webkitGetAsEntry();
|
||||||
|
|
||||||
if (item) {
|
if (item) {
|
||||||
if (item.isFile) {
|
if (item.isFile) {
|
||||||
this.filesEntityDropped.emit(item);
|
const file = items[i].getAsFile();
|
||||||
|
|
||||||
|
if (file) {
|
||||||
|
files.push(file);
|
||||||
|
}
|
||||||
} else if (item.isDirectory) {
|
} else if (item.isDirectory) {
|
||||||
this.folderEntityDropped.emit(item);
|
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 {
|
} else {
|
||||||
// safari or FF
|
// IE, Safari, Chrome, Edge, Firefox, Opera (Files only)
|
||||||
let files = FileUtils.toFileArray(event.dataTransfer.files);
|
const files = FileUtils.toFileArray(event.dataTransfer.files);
|
||||||
this.filesDropped.emit(files);
|
this.filesDropped.emit(files);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user