From 72bdb86c98323ebb40f391fbdd439ccac58e9ef0 Mon Sep 17 00:00:00 2001 From: usodhi <61431818+usodhi@users.noreply.github.com> Date: Thu, 16 Jul 2020 17:44:28 +0530 Subject: fixed onExternalDrop --- .../collectionGrid/CollectionGridView.tsx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/collectionGrid/CollectionGridView.tsx b/src/client/views/collections/collectionGrid/CollectionGridView.tsx index bf6958c68..110025313 100644 --- a/src/client/views/collections/collectionGrid/CollectionGridView.tsx +++ b/src/client/views/collections/collectionGrid/CollectionGridView.tsx @@ -30,6 +30,7 @@ export class CollectionGridView extends CollectionSubView(GridSchema) { private _resetListenerDisposer: Opt; // listens for when the reset button is clicked @observable private _rowHeight: Opt; // temporary store of row height to make change undoable @observable private _scroll: number = 0; // required to make sure the decorations box container updates on scroll + private dropLocation: object = {}; onChildClickHandler = () => ScriptCast(this.Document.onChildClick); @@ -57,7 +58,15 @@ export class CollectionGridView extends CollectionSubView(GridSchema) { pairs.forEach((pair, i) => { const existing = oldLayouts.find(l => l.i === pair.layout[Id]); if (existing) newLayouts.push(existing); - else this.addLayoutItem(newLayouts, this.makeLayoutItem(pair.layout, this.unflexedPosition(i), !this.flexGrid)); + else { + if (Object.keys(this.dropLocation).length) { + this.addLayoutItem(newLayouts, this.makeLayoutItem(pair.layout, this.dropLocation as { x: number, y: number }, !this.flexGrid)); + this.dropLocation = {}; + } + else { + this.addLayoutItem(newLayouts, this.makeLayoutItem(pair.layout, this.unflexedPosition(i), !this.flexGrid)); + } + } }); pairs?.length && this.setLayoutList(newLayouts); }, { fireImmediately: true }); @@ -254,9 +263,8 @@ export class CollectionGridView extends CollectionSubView(GridSchema) { */ @action onExternalDrop = async (e: React.DragEvent): Promise => { - const where = this.screenToCell(e.clientX, e.clientY); - super.onExternalDrop(e, { x: where.x, y: where.y }); - + this.dropLocation = this.screenToCell(e.clientX, e.clientY); + super.onExternalDrop(e, {}); } /** @@ -313,7 +321,9 @@ export class CollectionGridView extends CollectionSubView(GridSchema) {
this.onPointerDown(e)}> + onPointerDown={this.onPointerDown} + onDrop={this.onExternalDrop} + >
e.stopPropagation()} -- cgit v1.2.3-70-g09d2