From 4325af9d259e5c4c3e9b854c6b7014a461075f62 Mon Sep 17 00:00:00 2001 From: Bradley Spaulding Date: Wed, 18 Jan 2017 21:03:21 -0600 Subject: [PATCH] connectDragSource can specify custom dataTransfer data This will be set on the drag event. Use case is for interop with drop targets managed by other external drag/drop libs. --- src/HTML5Backend.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/HTML5Backend.js b/src/HTML5Backend.js index 7206bfe..428e4fc 100644 --- a/src/HTML5Backend.js +++ b/src/HTML5Backend.js @@ -134,7 +134,8 @@ export default class HTML5Backend { const sourceNodeOptions = this.sourceNodeOptions[sourceId]; return defaults(sourceNodeOptions || {}, { - dropEffect: 'move' + dropEffect: 'move', + dataTransferData: {} }); } @@ -147,6 +148,10 @@ export default class HTML5Backend { return this.getCurrentSourceNodeOptions().dropEffect; } + getCurrentDataTransferData() { + return this.getCurrentSourceNodeOptions().dataTransferData; + } + getCurrentSourcePreviewNodeOptions() { const sourceId = this.monitor.getSourceId(); const sourcePreviewNodeOptions = this.sourcePreviewNodeOptions[sourceId]; @@ -297,8 +302,9 @@ export default class HTML5Backend { } try { - // Firefox won't drag without setting data - dataTransfer.setData('application/json', {}); + // a) Firefox won't drag without setting data + // b) Interop with external drag targets/drag libs + dataTransfer.setData('application/json', this.getCurrentDataTransferData()); } catch (err) { // IE doesn't support MIME types in setData }