Skip to content

Commit fc28e41

Browse files
committed
Provide prevParent to canDrop API
1 parent 49f02a0 commit fc28e41

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

src/node-renderer-default.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ const NodeRendererDefault = ({
3232
className,
3333
style = {},
3434
didDrop,
35-
isOver: _isOver, // Not needed, but preserved for other renderers
36-
endDrag: _endDrag, // Needed for drag-and-drop utils
37-
startDrag: _startDrag, // Needed for drag-and-drop utils
35+
isOver: _isOver, // Not needed, but preserved for other renderers
36+
parentNode: _parentNode, // Needed for drag-and-drop utils
37+
endDrag: _endDrag, // Needed for drag-and-drop utils
38+
startDrag: _startDrag, // Needed for drag-and-drop utils
3839
...otherProps,
3940
}) => {
4041
let handle;
@@ -165,6 +166,7 @@ NodeRendererDefault.propTypes = {
165166
// Drag source
166167
connectDragPreview: PropTypes.func.isRequired,
167168
connectDragSource: PropTypes.func.isRequired,
169+
parentNode: PropTypes.object, // Needed for drag-and-drop utils
168170
startDrag: PropTypes.func.isRequired, // Needed for drag-and-drop utils
169171
endDrag: PropTypes.func.isRequired, // Needed for drag-and-drop utils
170172
isDragging: PropTypes.bool.isRequired,

src/react-sortable-tree.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,14 @@ class ReactSortableTree extends Component {
401401
);
402402
}
403403

404-
renderRow({ node, path, lowerSiblingCounts, treeIndex }, listIndex, key, style, getPrevRow, matchKeys) {
404+
renderRow(
405+
{ node, parentNode, path, lowerSiblingCounts, treeIndex },
406+
listIndex,
407+
key,
408+
style,
409+
getPrevRow,
410+
matchKeys
411+
) {
405412
const TreeNodeRenderer = this.treeNodeRenderer;
406413
const NodeContentRenderer = this.nodeContentRenderer;
407414
const nodeKey = path[path.length - 1];
@@ -411,6 +418,7 @@ class ReactSortableTree extends Component {
411418

412419
const nodeProps = !this.props.generateNodeProps ? {} : this.props.generateNodeProps({
413420
node,
421+
parentNode,
414422
path,
415423
lowerSiblingCounts,
416424
treeIndex,
@@ -440,6 +448,7 @@ class ReactSortableTree extends Component {
440448
>
441449
<NodeContentRenderer
442450
node={node}
451+
parentNode={parentNode}
443452
path={path}
444453
isSearchMatch={isSearchMatch}
445454
isSearchFocus={isSearchFocus}

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

+4-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ const nodeDragSource = {
1616
props.startDrag(props);
1717

1818
return {
19-
node: props.node,
20-
path: props.path,
19+
node: props.node,
20+
parentNode: props.parentNode,
21+
path: props.path,
2122
};
2223
},
2324

@@ -90,6 +91,7 @@ function canDrop(dropTargetProps, monitor) {
9091
return dropTargetProps.customCanDrop({
9192
draggedNode,
9293
prevPath: monitor.getItem().path,
94+
prevParent: monitor.getItem().parentNode,
9395
nextPath: addedResult.path,
9496
nextParent: addedResult.parentNode,
9597
});

0 commit comments

Comments
 (0)