Skip to content

Commit 1fe5528

Browse files
committed
Prevent cross-tree dragging (which doesn't work currently anyway)
1 parent 44878d2 commit 1fe5528

File tree

4 files changed

+19
-13
lines changed

4 files changed

+19
-13
lines changed

src/item-types.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/react-sortable-tree.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,22 @@ import {
3030
import {
3131
dndWrapRoot,
3232
dndWrapSource,
33+
dndWrapTarget,
3334
} from './utils/drag-and-drop-utils';
3435
import styles from './react-sortable-tree.scss';
3536

37+
let dndTypeCounter = 1;
38+
3639
class ReactSortableTree extends Component {
3740
constructor(props) {
3841
super(props);
3942

40-
this.nodeContentRenderer = dndWrapSource(props.nodeContentRenderer);
43+
// Wrapping classes for use with react-dnd
44+
this.dndType = props.dndType || `rst__${dndTypeCounter++}`;
45+
this.nodeContentRenderer = dndWrapSource(props.nodeContentRenderer, this.dndType);
46+
this.treeNodeRenderer = dndWrapTarget(TreeNode, this.dndType);
47+
48+
// Prepare scroll-on-drag options for this list
4149
this.scrollZoneVirtualList = withScrolling(List);
4250
this.vStrength = createVerticalStrength(props.slideRegionSize);
4351
this.hStrength = createHorizontalStrength(props.slideRegionSize);
@@ -354,6 +362,7 @@ class ReactSortableTree extends Component {
354362
}
355363

356364
renderRow({ node, path, lowerSiblingCounts, treeIndex }, listIndex, key, style, getPrevRow, matchKeys) {
365+
const TreeNodeRenderer = this.treeNodeRenderer;
357366
const NodeContentRenderer = this.nodeContentRenderer;
358367
const nodeKey = path[path.length - 1];
359368
const isSearchMatch = nodeKey in matchKeys;
@@ -370,7 +379,7 @@ class ReactSortableTree extends Component {
370379
});
371380

372381
return (
373-
<TreeNode
382+
<TreeNodeRenderer
374383
style={style}
375384
key={key}
376385
treeIndex={treeIndex}
@@ -398,7 +407,7 @@ class ReactSortableTree extends Component {
398407
scaffoldBlockPxWidth={this.props.scaffoldBlockPxWidth}
399408
{...nodeProps}
400409
/>
401-
</TreeNode>
410+
</TreeNodeRenderer>
402411
);
403412
}
404413
}
@@ -480,6 +489,8 @@ ReactSortableTree.propTypes = {
480489

481490
// Called after children nodes collapsed or expanded.
482491
onVisibilityToggle: PropTypes.func,
492+
493+
dndType: PropTypes.string,
483494
};
484495

485496
ReactSortableTree.defaultProps = {

src/tree-node.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { PropTypes, Children, cloneElement } from 'react';
2-
import { dndWrapTarget } from './utils/drag-and-drop-utils';
32
import styles from './tree-node.scss';
43

54
const TreeNode = ({
@@ -152,4 +151,4 @@ TreeNode.propTypes = {
152151
draggedNode: PropTypes.object,
153152
};
154153

155-
export default dndWrapTarget(TreeNode);
154+
export default TreeNode;

src/utils/drag-and-drop-utils.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {
44
DropTarget as dropTarget,
55
} from 'react-dnd';
66
import HTML5Backend from 'react-dnd-html5-backend';
7-
import ItemTypes from '../item-types';
87
import {
98
getDepth,
109
} from './tree-data-utils';
@@ -126,12 +125,12 @@ function nodeDropTargetPropInjection(connect, monitor) {
126125
};
127126
}
128127

129-
export function dndWrapSource(el) {
130-
return dragSource(ItemTypes.HANDLE, nodeDragSource, nodeDragSourcePropInjection)(el);
128+
export function dndWrapSource(el, type) {
129+
return dragSource(type, nodeDragSource, nodeDragSourcePropInjection)(el);
131130
}
132131

133-
export function dndWrapTarget(el) {
134-
return dropTarget(ItemTypes.HANDLE, nodeDropTarget, nodeDropTargetPropInjection)(el);
132+
export function dndWrapTarget(el, type) {
133+
return dropTarget(type, nodeDropTarget, nodeDropTargetPropInjection)(el);
135134
}
136135

137136
export function dndWrapRoot(el) {

0 commit comments

Comments
 (0)