提交 07b86fac 编写于 作者: J Joao Moreno

list: make onDragStart optional

上级 a0ba5917
......@@ -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;
}
......
......@@ -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 {
......
......@@ -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 {
......
......@@ -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 {
......
......@@ -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 && {
......
......@@ -288,10 +288,6 @@ class WatchExpressionsDragAndDrop implements ITreeDragAndDrop<IExpression> {
return elements[0].name;
}
onDragStart(data: IDragAndDropData, originalEvent: DragEvent): void {
// noop
}
drop(data: IDragAndDropData, targetElement: IExpression, targetIndex: number, originalEvent: DragEvent): void {
const draggedData = data.getData();
if (Array.isArray(draggedData)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册