Tree: register node after dragging (#12279)

* Tree: register node after dragging

* update Tree docs
This commit is contained in:
hetech
2018-08-08 18:07:16 +08:00
committed by Jikkai Xiao
parent 9e738a85c3
commit 3da485b617
5 changed files with 19 additions and 17 deletions

View File

@@ -91,7 +91,7 @@ export default class TreeStore {
remove(data) {
const node = this.getNode(data);
if (node) {
if (node && node.parent) {
node.parent.removeChild(node);
}
}
@@ -144,11 +144,9 @@ export default class TreeStore {
const key = this.key;
if (!key || !node || !node.data) return;
const childNodes = node.childNodes;
for (let i = 0, j = childNodes.length; i < j; i++) {
const child = childNodes[i];
node.childNodes.forEach(child => {
this.deregisterNode(child);
}
});
delete this.nodesMap[node.key];
}

View File

@@ -447,17 +447,21 @@
event.dataTransfer.dropEffect = 'move';
if (draggingNode && dropNode) {
const data = draggingNode.node.data;
if (dropType === 'before') {
draggingNode.node.remove();
dropNode.node.parent.insertBefore({ data }, dropNode.node);
} else if (dropType === 'after') {
draggingNode.node.remove();
dropNode.node.parent.insertAfter({ data }, dropNode.node);
} else if (dropType === 'inner') {
dropNode.node.insertChild({ data });
const draggingNodeCopy = { data: draggingNode.node.data };
if (dropType !== 'none') {
draggingNode.node.remove();
}
if (dropType === 'before') {
dropNode.node.parent.insertBefore(draggingNodeCopy, dropNode.node);
} else if (dropType === 'after') {
dropNode.node.parent.insertAfter(draggingNodeCopy, dropNode.node);
} else if (dropType === 'inner') {
dropNode.node.insertChild(draggingNodeCopy);
}
if (dropType !== 'none') {
this.store.registerNode(draggingNodeCopy);
}
removeClass(dropNode.$el, 'is-drop-inner');
this.$emit('node-drag-end', draggingNode.node, dropNode.node, dropType, event);