mirror of https://github.com/ElemeFE/element
Tree: register node after dragging (#12279)
* Tree: register node after dragging * update Tree docspull/12299/head
parent
9e738a85c3
commit
3da485b617
|
@ -1215,7 +1215,7 @@ You can drag and drop Tree nodes by adding a `draggable` attribute.
|
||||||
| setCurrentKey | set highlighted node by key, only works when `node-key` is assigned | (key) the node's key to be highlighted. If `null`, cancel the currently highlighted node |
|
| setCurrentKey | set highlighted node by key, only works when `node-key` is assigned | (key) the node's key to be highlighted. If `null`, cancel the currently highlighted node |
|
||||||
| setCurrentNode | set highlighted node, only works when `node-key` is assigned | (node) the node to be highlighted |
|
| setCurrentNode | set highlighted node, only works when `node-key` is assigned | (node) the node to be highlighted |
|
||||||
| getNode | get node by data or key | (data) the node's data or key |
|
| getNode | get node by data or key | (data) the node's data or key |
|
||||||
| remove | remove a node | (data) the node's data or node to be deleted |
|
| remove | remove a node, only works when node-key is assigned | (data) the node's data or node to be deleted |
|
||||||
| append | append a child node to a given node in the tree | (data, parentNode) 1. child node's data to be appended 2. parent node's data, key or node |
|
| append | append a child node to a given node in the tree | (data, parentNode) 1. child node's data to be appended 2. parent node's data, key or node |
|
||||||
| insertBefore | insert a node before a given node in the tree | (data, refNode) 1. node's data to be inserted 2. reference node's data, key or node |
|
| insertBefore | insert a node before a given node in the tree | (data, refNode) 1. node's data to be inserted 2. reference node's data, key or node |
|
||||||
| insertAfter | insert a node after a given node in the tree | (data, refNode) 1. node's data to be inserted 2. reference node's data, key or node |
|
| insertAfter | insert a node after a given node in the tree | (data, refNode) 1. node's data to be inserted 2. reference node's data, key or node |
|
||||||
|
|
|
@ -1213,7 +1213,7 @@ Puede arrastrar y soltar nodos de Tree añadiendo un atributo `draggable` .
|
||||||
| setCurrentKey | establece el nodo resaltado por la clave, solo funciona si `node-key` está asignado | (key) la clave del nodo a ser resaltado. If `null`, cancel the currently highlighted node |
|
| setCurrentKey | establece el nodo resaltado por la clave, solo funciona si `node-key` está asignado | (key) la clave del nodo a ser resaltado. If `null`, cancel the currently highlighted node |
|
||||||
| setCurrentNode | establece el nodo resaltado, solo funciona si `node-key` está asignado | (node) nodo a ser resaltado |
|
| setCurrentNode | establece el nodo resaltado, solo funciona si `node-key` está asignado | (node) nodo a ser resaltado |
|
||||||
| getNode | devuelve el nodo por el dato o la clave | (data) los datos o clave del nodo |
|
| getNode | devuelve el nodo por el dato o la clave | (data) los datos o clave del nodo |
|
||||||
| remove | elimina un nodo | (data) los datos del nodo o nodo a borrar |
|
| remove | elimina un nodo, solo funciona si `node-key` está asignado | (data) los datos del nodo o nodo a borrar |
|
||||||
| append | añadir un nodo hijo a un nodo determinado del árbol | (data, parentNode) 1. los datos del nodo hijo que se añadirán 2. los datos del nodo padre, clave o nodo |
|
| append | añadir un nodo hijo a un nodo determinado del árbol | (data, parentNode) 1. los datos del nodo hijo que se añadirán 2. los datos del nodo padre, clave o nodo |
|
||||||
| insertBefore | insertar un nodo antes de un nodo dado en el árbol | (data, refNode) 1. Datos del nodo que se insertarán 2. Datos del nodo de referencia, clave o nodo |
|
| insertBefore | insertar un nodo antes de un nodo dado en el árbol | (data, refNode) 1. Datos del nodo que se insertarán 2. Datos del nodo de referencia, clave o nodo |
|
||||||
| insertAfter | insertar un nodo después de un nodo dado en el árbol | (data, refNode) 1. Datos del nodo que se insertarán 2. Datos del nodo de referencia, clave o nodo |
|
| insertAfter | insertar un nodo después de un nodo dado en el árbol | (data, refNode) 1. Datos del nodo que se insertarán 2. Datos del nodo de referencia, clave o nodo |
|
||||||
|
|
|
@ -1236,7 +1236,7 @@
|
||||||
| setCurrentKey | 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 | (key) 待被选节点的 key,若为 null 则取消当前高亮的节点 |
|
| setCurrentKey | 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 | (key) 待被选节点的 key,若为 null 则取消当前高亮的节点 |
|
||||||
| setCurrentNode | 通过 node 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 | (node) 待被选节点的 node |
|
| setCurrentNode | 通过 node 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 | (node) 待被选节点的 node |
|
||||||
| getNode | 根据 data 或者 key 拿到 Tree 组件中的 node | (data) 要获得 node 的 key 或者 data |
|
| getNode | 根据 data 或者 key 拿到 Tree 组件中的 node | (data) 要获得 node 的 key 或者 data |
|
||||||
| remove | 删除 Tree 中的一个节点 | (data) 要删除的节点的 data、key 或者 node |
|
| remove | 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 | (data) 要删除的节点的 data 或者 node |
|
||||||
| append | 为 Tree 中的一个节点追加一个子节点 | (data, parentNode) 接收两个参数,1. 要追加的子节点的 data 2. 子节点的 parent 的 data、key 或者 node |
|
| append | 为 Tree 中的一个节点追加一个子节点 | (data, parentNode) 接收两个参数,1. 要追加的子节点的 data 2. 子节点的 parent 的 data、key 或者 node |
|
||||||
| insertBefore | 为 Tree 的一个节点的前面增加一个节点 | (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node |
|
| insertBefore | 为 Tree 的一个节点的前面增加一个节点 | (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node |
|
||||||
| insertAfter | 为 Tree 的一个节点的后面增加一个节点 | (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node |
|
| insertAfter | 为 Tree 的一个节点的后面增加一个节点 | (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node |
|
||||||
|
|
|
@ -91,7 +91,7 @@ export default class TreeStore {
|
||||||
|
|
||||||
remove(data) {
|
remove(data) {
|
||||||
const node = this.getNode(data);
|
const node = this.getNode(data);
|
||||||
if (node) {
|
if (node && node.parent) {
|
||||||
node.parent.removeChild(node);
|
node.parent.removeChild(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,11 +144,9 @@ export default class TreeStore {
|
||||||
const key = this.key;
|
const key = this.key;
|
||||||
if (!key || !node || !node.data) return;
|
if (!key || !node || !node.data) return;
|
||||||
|
|
||||||
const childNodes = node.childNodes;
|
node.childNodes.forEach(child => {
|
||||||
for (let i = 0, j = childNodes.length; i < j; i++) {
|
|
||||||
const child = childNodes[i];
|
|
||||||
this.deregisterNode(child);
|
this.deregisterNode(child);
|
||||||
}
|
});
|
||||||
|
|
||||||
delete this.nodesMap[node.key];
|
delete this.nodesMap[node.key];
|
||||||
}
|
}
|
||||||
|
|
|
@ -447,17 +447,21 @@
|
||||||
event.dataTransfer.dropEffect = 'move';
|
event.dataTransfer.dropEffect = 'move';
|
||||||
|
|
||||||
if (draggingNode && dropNode) {
|
if (draggingNode && dropNode) {
|
||||||
const data = draggingNode.node.data;
|
const draggingNodeCopy = { data: draggingNode.node.data };
|
||||||
if (dropType === 'before') {
|
if (dropType !== 'none') {
|
||||||
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 });
|
|
||||||
draggingNode.node.remove();
|
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');
|
removeClass(dropNode.$el, 'is-drop-inner');
|
||||||
|
|
||||||
this.$emit('node-drag-end', draggingNode.node, dropNode.node, dropType, event);
|
this.$emit('node-drag-end', draggingNode.node, dropNode.node, dropType, event);
|
||||||
|
|
Loading…
Reference in New Issue