From 7a2605fdad7eafc642e719cc88008f2bb5068630 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Thu, 21 Sep 2023 16:27:26 +0800 Subject: [PATCH] =?UTF-8?q?Feat=EF=BC=9A=E6=94=AF=E6=8C=81=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E5=AF=B9=E5=A4=9A=E4=B8=AA=E8=8A=82=E7=82=B9=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E5=85=84=E5=BC=9F=E8=8A=82=E7=82=B9=EF=BC=9B=E5=AF=B9?= =?UTF-8?q?=E6=A0=B9=E8=8A=82=E7=82=B9=E8=B0=83=E7=94=A8=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E5=85=84=E5=BC=9F=E8=8A=82=E7=82=B9=E7=9A=84=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E5=86=8D=E5=88=9B=E5=BB=BA=E5=AD=90=E8=8A=82?= =?UTF-8?q?=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/core/render/Render.js | 51 ++++++++++++++--------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index 87802f4b..3c8ad5e5 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -462,35 +462,48 @@ class Render { defaultInsertBelowSecondLevelNodeText } = this.mindMap.opt let list = appointNodes.length > 0 ? appointNodes : this.activeNodeList - let first = list[0] - if (first.isGeneralization) { - return - } - if (first.isRoot) { - this.insertChildNode(openEdit, appointNodes, appointData) - } else { - let text = - first.layerIndex === 1 - ? defaultInsertSecondLevelNodeText - : defaultInsertBelowSecondLevelNodeText - if (first.layerIndex === 1) { - first.parent.destroy() + let handleMultiNodes = list.length > 1 + let needDestroyNodeList = {} + list.forEach(node => { + if (node.isGeneralization || node.isRoot) { + return } - let index = this.getNodeIndex(first) + const parent = node.parent + const isOneLayer = node.layerIndex === 1 + // 插入二级节点时根节点需要重新渲染 + if (isOneLayer && !needDestroyNodeList[parent.uid]) { + needDestroyNodeList[parent.uid] = parent + } + // 新插入节点的默认文本 + let text = isOneLayer + ? defaultInsertSecondLevelNodeText + : defaultInsertBelowSecondLevelNodeText + // 计算插入位置 + let index = parent.nodeData.children.findIndex(item => { + return item.data.uid === node.uid + }) let isRichText = !!this.mindMap.richText - first.parent.nodeData.children.splice(index + 1, 0, { - inserting: openEdit, + parent.nodeData.children.splice(index + 1, 0, { + inserting: handleMultiNodes ? false : openEdit, // 如果同时对多个节点插入子节点,那么无需进入编辑模式, data: { text: text, expand: true, richText: isRichText, resetRichText: isRichText, + isActive: handleMultiNodes || !openEdit, // 如果同时对多个节点插入子节点,那么需要把新增的节点设为激活状态。如果不进入编辑状态,那么也需要手动设为激活状态 ...(appointData || {}) }, children: [...appointChildren] }) - this.mindMap.render() + }) + Object.keys(needDestroyNodeList).forEach(key => { + needDestroyNodeList[key].destroy() + }) + // 如果同时对多个节点插入子节点,需要清除原来激活的节点 + if (handleMultiNodes || !openEdit) { + this.clearActive() } + this.mindMap.render() } // 插入子节点 @@ -523,13 +536,13 @@ class Render { : defaultInsertBelowSecondLevelNodeText let isRichText = !!this.mindMap.richText node.nodeData.children.push({ - inserting: handleMultiNodes ? false : openEdit,// 如果同时对多个节点插入子节点,那么无需进入编辑模式 + inserting: handleMultiNodes ? false : openEdit, // 如果同时对多个节点插入子节点,那么无需进入编辑模式 data: { text: text, expand: true, richText: isRichText, resetRichText: isRichText, - isActive: handleMultiNodes || !openEdit,// 如果同时对多个节点插入子节点,那么需要把新增的节点设为激活状态。如果不进入编辑状态,那么也需要手动设为激活状态 + isActive: handleMultiNodes || !openEdit, // 如果同时对多个节点插入子节点,那么需要把新增的节点设为激活状态。如果不进入编辑状态,那么也需要手动设为激活状态 ...(appointData || {}) }, children: [...appointChildren]