mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
fix upload directive for Safari (#1871)
This commit is contained in:
committed by
Eugenio Romano
parent
3482cc57be
commit
5c7d53230d
@@ -113,6 +113,7 @@ describe('UploadDirective', () => {
|
|||||||
directive.enabled = true;
|
directive.enabled = true;
|
||||||
let files = [<File> {}];
|
let files = [<File> {}];
|
||||||
let event = jasmine.createSpyObj('event', ['preventDefault', 'stopPropagation']);
|
let event = jasmine.createSpyObj('event', ['preventDefault', 'stopPropagation']);
|
||||||
|
spyOn(directive, 'getDataTransfer').and.returnValue({});
|
||||||
spyOn(directive, 'getFilesDropped').and.returnValue(files);
|
spyOn(directive, 'getFilesDropped').and.returnValue(files);
|
||||||
spyOn(nativeElement, 'dispatchEvent').and.stub();
|
spyOn(nativeElement, 'dispatchEvent').and.stub();
|
||||||
directive.onDrop(event);
|
directive.onDrop(event);
|
||||||
@@ -123,6 +124,7 @@ describe('UploadDirective', () => {
|
|||||||
directive.enabled = true;
|
directive.enabled = true;
|
||||||
let files = [<File> {}];
|
let files = [<File> {}];
|
||||||
let event = jasmine.createSpyObj('event', ['preventDefault', 'stopPropagation']);
|
let event = jasmine.createSpyObj('event', ['preventDefault', 'stopPropagation']);
|
||||||
|
spyOn(directive, 'getDataTransfer').and.returnValue({});
|
||||||
spyOn(directive, 'getFilesDropped').and.returnValue(files);
|
spyOn(directive, 'getFilesDropped').and.returnValue(files);
|
||||||
|
|
||||||
spyOn(nativeElement, 'dispatchEvent').and.callFake(e => {
|
spyOn(nativeElement, 'dispatchEvent').and.callFake(e => {
|
||||||
|
@@ -105,15 +105,18 @@ export class UploadDirective implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@HostListener('drop', ['$event'])
|
@HostListener('drop', ['$event'])
|
||||||
onDrop(event: DragEvent) {
|
onDrop(event: Event) {
|
||||||
if (this.isDropMode()) {
|
if (this.isDropMode()) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
this.isDragging = false;
|
this.isDragging = false;
|
||||||
|
|
||||||
const files = this.getFilesDropped(event.dataTransfer);
|
const dataTranfer = this.getDataTransfer(event);
|
||||||
this.onUploadFiles(files);
|
if (dataTranfer) {
|
||||||
|
const files = this.getFilesDropped(dataTranfer);
|
||||||
|
this.onUploadFiles(files);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,6 +147,16 @@ export class UploadDirective implements OnInit {
|
|||||||
return this.hasMode('click');
|
return this.hasMode('click');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected getDataTransfer(event: Event | any): DataTransfer {
|
||||||
|
if (event && event.dataTranfer) {
|
||||||
|
return event.dataTranfer;
|
||||||
|
}
|
||||||
|
if (event && event.originalEvent && event.originalEvent.dataTranfer) {
|
||||||
|
return event.originalEvent.dataTranfer;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extract files from the DataTransfer object used to hold the data that is being dragged during a drag and drop operation.
|
* Extract files from the DataTransfer object used to hold the data that is being dragged during a drag and drop operation.
|
||||||
* @param dataTransfer DataTransfer object
|
* @param dataTransfer DataTransfer object
|
||||||
|
Reference in New Issue
Block a user