diff --git a/simple-mind-map/src/core/render/TextEdit.js b/simple-mind-map/src/core/render/TextEdit.js index cc0d7009..ea4292e7 100644 --- a/simple-mind-map/src/core/render/TextEdit.js +++ b/simple-mind-map/src/core/render/TextEdit.js @@ -43,7 +43,7 @@ export default class TextEdit { this.onKeydown = this.onKeydown.bind(this) // 节点双击事件 this.mindMap.on('node_dblclick', (node, e, isInserting) => { - this.show({ node, e, isInserting }) + this.show({ node, e, isInserting, isFromDbclick: true }) }) // 点击事件 this.mindMap.on('draw_click', () => { @@ -92,7 +92,7 @@ export default class TextEdit { }) this.mindMap.on('scale', this.onScale) // // 监听按键事件,判断是否自动进入文本编辑模式 - if (this.mindMap.opt.enableAutoEnterTextEditWhenKeydown) { + if (this.mindMap.opt.enableAutoEnterTextEditWhenKeydown || this.mindMap.opt.enableAutoEnterTextCoverWhenKeydown) { window.addEventListener('keydown', this.onKeydown) } this.mindMap.on('beforeDestroy', () => { @@ -123,6 +123,16 @@ export default class TextEdit { : 'removeEventListener' ]('keydown', this.onKeydown) } + if ( + opt.enableAutoEnterTextCoverWhenKeydown !== + lastOpt.enableAutoEnterTextCoverWhenKeydown + ) { + window[ + opt.enableAutoEnterTextCoverWhenKeydown + ? 'addEventListener' + : 'removeEventListener' + ]('keydown', this.onKeydown) + } }) } @@ -184,7 +194,8 @@ export default class TextEdit { node, isInserting = false, isFromKeyDown = false, - isFromScale = false + isFromScale = false, + isFromDbclick = false }) { // 使用了自定义节点内容那么不响应编辑事件 if (node.isUseCustomNodeContent()) { @@ -216,7 +227,8 @@ export default class TextEdit { rect, isInserting, isFromKeyDown, - isFromScale + isFromScale, + isFromDbclick } if (this.mindMap.richText) { this.mindMap.richText.showEditText(params) @@ -259,7 +271,7 @@ export default class TextEdit { } // 显示文本编辑框 - showEditTextBox({ node, rect, isInserting, isFromKeyDown, isFromScale }) { + showEditTextBox({ node, rect, isInserting, isFromKeyDown, isFromScale, isFromDbclick }) { if (this.showTextEdit) return const { nodeTextEditZIndex, @@ -339,6 +351,19 @@ export default class TextEdit { } this.textEditNode.style.zIndex = nodeTextEditZIndex this.textEditNode.innerHTML = textLines.join('
') + if(this.mindMap.opt.enableAutoEnterTextCoverWhenKeydown){ + this.textEditNode.innerHTML = '' + } + if(this.mindMap.opt.enableAutoSelectAllTextWhenDoubleClick && isFromDbclick){ + console.log('here') + this.textEditNode.innerHTML = textLines.join('
') + const selection = window.getSelection() + // selection.removeAllRanges() + const range = document.createRange() + range.selectNodeContents(this.textEditNode) + selection.addRange(range) + console.log('selection', selection) + } this.textEditNode.style.minWidth = rect.width + this.textNodePaddingX * 2 + 'px' this.textEditNode.style.minHeight = rect.height + 'px'