mirror of
https://github.com/ElemeFE/element.git
synced 2025-12-19 12:04:02 +08:00
Tree: register node after dragging (#12279)
* Tree: register node after dragging * update Tree docs
This commit is contained in:
@@ -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];
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user