list: make onDragStart optional

This commit is contained in:
Joao Moreno
2019-01-10 10:08:01 +01:00
parent a0ba59175c
commit 07b86facc7
6 changed files with 31 additions and 15 deletions

View File

@@ -88,7 +88,7 @@ export const ListDragOverReactions = {
export interface IListDragAndDrop<T> {
getDragURI(element: T): string | null;
getDragLabel?(elements: T[]): string | undefined;
onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void;
onDragStart?(data: IDragAndDropData, originalEvent: DragEvent): void;
onDragOver(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): boolean | IListDragOverReaction;
drop(data: IDragAndDropData, targetElement: T | undefined, targetIndex: number | undefined, originalEvent: DragEvent): void;
}

View File

@@ -632,7 +632,9 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
this.currentDragData = new ElementsDragAndDropData(elements);
StaticDND.CurrentDragAndDropData = new ExternalElementsDragAndDropData(elements);
this.dnd.onDragStart(this.currentDragData, event);
if (this.dnd.onDragStart) {
this.dnd.onDragStart(this.currentDragData, event);
}
}
private onDragOver(event: IListDragEvent<T>): boolean {

View File

@@ -956,11 +956,17 @@ class ListViewDragAndDrop<T> implements IListViewDragAndDrop<T> {
}
getDragLabel?(elements: T[]): string | undefined {
return this.dnd.getDragLabel && this.dnd.getDragLabel(elements);
if (this.dnd.getDragLabel) {
return this.dnd.getDragLabel(elements);
}
return undefined;
}
onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void {
this.dnd.onDragStart(data, originalEvent);
if (this.dnd.onDragStart) {
this.dnd.onDragStart(data, originalEvent);
}
}
onDragOver(data: IDragAndDropData, targetElement: T, targetIndex: number, originalEvent: DragEvent): boolean | IListDragOverReaction {

View File

@@ -28,11 +28,17 @@ class TreeNodeListDragAndDrop<T, TFilterData, TRef> implements IListDragAndDrop<
}
getDragLabel(nodes: ITreeNode<T, TFilterData>[]): string | undefined {
return this.dnd.getDragLabel && this.dnd.getDragLabel(nodes.map(node => node.element));
if (this.dnd.getDragLabel) {
return this.dnd.getDragLabel(nodes.map(node => node.element));
}
return undefined;
}
onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void {
this.dnd.onDragStart(data, originalEvent);
if (this.dnd.onDragStart) {
this.dnd.onDragStart(data, originalEvent);
}
}
onDragOver(data: IDragAndDropData, targetNode: ITreeNode<T, TFilterData> | undefined, targetIndex: number | undefined, originalEvent: DragEvent, raw = true): boolean | IListDragOverReaction {

View File

@@ -134,17 +134,23 @@ function asObjectTreeOptions<TInput, T, TFilterData>(options?: IAsyncDataTreeOpt
getDragURI(node) {
return options.dnd!.getDragURI(node.element as T);
},
getDragLabel: options.dnd!.getDragLabel && ((nodes) => {
return options.dnd!.getDragLabel!(nodes.map(node => node.element as T));
}),
getDragLabel(nodes) {
if (options.dnd!.getDragLabel) {
return options.dnd!.getDragLabel!(nodes.map(node => node.element as T));
}
return undefined;
},
onDragStart(data, originalEvent) {
return options.dnd!.onDragStart(data, originalEvent);
if (options.dnd!.onDragStart) {
options.dnd!.onDragStart!(data, originalEvent);
}
},
onDragOver(data, targetNode, targetIndex, originalEvent) {
return options.dnd!.onDragOver(data, targetNode && targetNode.element as T, targetIndex, originalEvent);
},
drop(data, targetNode, targetIndex, originalEvent) {
return options.dnd!.drop(data, targetNode && targetNode.element as T, targetIndex, originalEvent);
options.dnd!.drop(data, targetNode && targetNode.element as T, targetIndex, originalEvent);
}
},
multipleSelectionController: options.multipleSelectionController && {