From 6c33984b8cbe6fbf9245eadbca2e65acfb89f6dc Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Tue, 4 Jul 2023 08:42:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=88=9A=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E7=9A=84=E8=8A=82=E7=82=B9=E9=BB=98=E8=AE=A4=E5=85=A8?= =?UTF-8?q?=E9=80=89=E6=96=B9=E4=BE=BF=E5=88=A0=E9=99=A4=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/core/render/TextEdit.js | 7 ++++--- simple-mind-map/src/core/render/node/Node.js | 2 +- simple-mind-map/src/plugins/RichText.js | 14 ++++++++++---- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/simple-mind-map/src/core/render/TextEdit.js b/simple-mind-map/src/core/render/TextEdit.js index 56efc9f6..6ae819a9 100644 --- a/simple-mind-map/src/core/render/TextEdit.js +++ b/simple-mind-map/src/core/render/TextEdit.js @@ -65,7 +65,8 @@ export default class TextEdit { } // 显示文本编辑框 - async show(node) { + // isInserting:是否是刚创建的节点 + async show(node, e, isInserting = false) { // 使用了自定义节点内容那么不响应编辑事件 if (node.isUseCustomNodeContent()) { return @@ -74,7 +75,7 @@ export default class TextEdit { if (typeof beforeTextEdit === 'function') { let isShow = false try { - isShow = await beforeTextEdit(node) + isShow = await beforeTextEdit(node, isInserting) } catch (error) { isShow = false } @@ -85,7 +86,7 @@ export default class TextEdit { this.mindMap.view.translateXY(offsetLeft, offsetTop) let rect = node._textData.node.node.getBoundingClientRect() if (this.mindMap.richText) { - this.mindMap.richText.showEditText(node, rect) + this.mindMap.richText.showEditText(node, rect, isInserting) return } this.showEditTextBox(node, rect) diff --git a/simple-mind-map/src/core/render/node/Node.js b/simple-mind-map/src/core/render/node/Node.js index 7934a6e7..89874467 100644 --- a/simple-mind-map/src/core/render/node/Node.js +++ b/simple-mind-map/src/core/render/node/Node.js @@ -578,7 +578,7 @@ class Node { delete this.nodeData.inserting this.active() setTimeout(() => { - this.mindMap.emit('node_dblclick', this) + this.mindMap.emit('node_dblclick', this, null, true) }, 0) } } diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index 47cc9ecd..d501c282 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -39,6 +39,7 @@ class RichText { this.range = null this.lastRange = null this.node = null + this.isInserting = false this.styleEl = null this.cacheEditingText = '' this.lostStyle = false @@ -145,11 +146,12 @@ class RichText { } // 显示文本编辑控件 - showEditText(node, rect) { + showEditText(node, rect, isInserting) { if (this.showTextEdit) { return } this.node = node + this.isInserting = isInserting if (!rect) rect = node._textData.node.node.getBoundingClientRect() this.mindMap.emit('before_show_text_edit') this.mindMap.renderer.textEdit.registerTmpShortcut() @@ -200,7 +202,8 @@ class RichText { this.initQuillEditor() document.querySelector('.ql-editor').style.minHeight = originHeight + 'px' this.showTextEdit = true - this.focus() + // 如果是刚创建的节点,那么默认全选,否则普通激活不全选 + this.focus(isInserting ? 0 : null) if (!node.nodeData.data.richText) { // 如果是非富文本的情况,需要手动应用文本样式 this.setTextStyleIfNotRichText(node) @@ -250,6 +253,7 @@ class RichText { this.showTextEdit = false this.mindMap.emit('rich_text_selection_change', false) this.node = null + this.isInserting = false } // 初始化Quill富文本编辑器 @@ -271,6 +275,8 @@ class RichText { theme: 'snow' }) this.quill.on('selection-change', range => { + // 刚创建的节点全选不需要显示操作条 + if (this.isInserting) return this.lastRange = this.range this.range = null if (range) { @@ -338,9 +344,9 @@ class RichText { } // 聚焦 - focus() { + focus(start) { let len = this.quill.getLength() - this.quill.setSelection(len, len) + this.quill.setSelection(typeof start === 'number' ? start : len, len) } // 格式化当前选中的文本