From 0d79e28ec964088080783bd6c7a3a0c3b49432ae Mon Sep 17 00:00:00 2001
From: wanglin2 <1013335014@qq.com>
Date: Mon, 9 May 2022 14:24:11 +0800
Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E5=A4=87=E6=B3=A8=E6=94=AF?=
=?UTF-8?q?=E6=8C=81markdown=E5=8F=8A=E5=AF=8C=E6=96=87=E6=9C=AC=E3=80=81?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8D=E8=83=BD=E9=80=89=E4=B8=AD=E6=96=87?=
=?UTF-8?q?=E5=AD=97=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
simple-mind-map/index.js | 10 ++-
simple-mind-map/src/Drag.js | 2 +
simple-mind-map/src/Event.js | 4 +-
simple-mind-map/src/Node.js | 42 +++++++-----
web/package.json | 1 +
web/src/pages/Edit/components/Edit.vue | 11 ++++
web/src/pages/Edit/components/NodeNote.vue | 32 ++++++++-
.../Edit/components/NodeNoteContentShow.vue | 66 +++++++++++++++++++
9 files changed, 147 insertions(+), 23 deletions(-)
create mode 100644 web/src/pages/Edit/components/NodeNoteContentShow.vue
diff --git a/README.md b/README.md
index d2907fb2..f1d16e25 100644
--- a/README.md
+++ b/README.md
@@ -105,7 +105,7 @@ const mindMap = new MindMap({
| textContentMargin | Number | 2 | 节点里各种文字信息的间距,如图标和文字的间距 | |
| selectTranslateStep | Number | 3 | 多选节点时鼠标移动到边缘时的画布移动偏移量 | |
| selectTranslateLimit | Number | 20 | 多选节点时鼠标移动距边缘多少距离时开始偏移 | |
-
+| customNoteContentShow(v0.1.6+) | Object | null | 自定义节点备注内容显示,Object类型,结构为:{show: (noteContent, left, top) => {// 你的显示节点备注逻辑 }, hide: () => {// 你的隐藏节点备注逻辑 }} | |
### 实例方法:
diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js
index 8d163859..662bd270 100644
--- a/simple-mind-map/index.js
+++ b/simple-mind-map/index.js
@@ -40,7 +40,15 @@ const defaultOpt = {
// 多选节点时鼠标移动到边缘时的画布移动偏移量
selectTranslateStep: 3,
// 多选节点时鼠标移动距边缘多少距离时开始偏移
- selectTranslateLimit: 20
+ selectTranslateLimit: 20,
+ // 自定义节点备注内容显示
+ customNoteContentShow: null
+ /*
+ {
+ show(){},
+ hide(){}
+ }
+ */
}
/**
diff --git a/simple-mind-map/src/Drag.js b/simple-mind-map/src/Drag.js
index 2b48dd58..96ed44b4 100644
--- a/simple-mind-map/src/Drag.js
+++ b/simple-mind-map/src/Drag.js
@@ -74,6 +74,7 @@ class Drag extends Base {
if (e.which !== 1 || node.isRoot) {
return
}
+ e.preventDefault()
// 计算鼠标按下的位置距离节点左上角的距离
this.drawTransform = this.mindMap.draw.transform()
let {
@@ -98,6 +99,7 @@ class Drag extends Base {
if (!this.isMousedown) {
return
}
+ e.preventDefault()
let {
x,
y
diff --git a/simple-mind-map/src/Event.js b/simple-mind-map/src/Event.js
index a11197c3..f11b391b 100644
--- a/simple-mind-map/src/Event.js
+++ b/simple-mind-map/src/Event.js
@@ -111,7 +111,7 @@ class Event extends EventEmitter {
* @Desc: 鼠标按下事件
*/
onMousedown(e) {
- e.preventDefault()
+ // e.preventDefault()
// 鼠标左键
if (e.which === 1) {
this.isLeftMousedown = true
@@ -128,7 +128,7 @@ class Event extends EventEmitter {
* @Desc: 鼠标移动事件
*/
onMousemove(e) {
- e.preventDefault()
+ // e.preventDefault()
this.mousemovePos.x = e.clientX
this.mousemovePos.y = e.clientY
this.mousemoveOffset.x = e.clientX - this.mousedownPos.x
diff --git a/simple-mind-map/src/Node.js b/simple-mind-map/src/Node.js
index 0e3700f5..742e0023 100644
--- a/simple-mind-map/src/Node.js
+++ b/simple-mind-map/src/Node.js
@@ -445,27 +445,37 @@ class Node {
this.style.iconNode(iconNode)
node.add(iconNode)
// 备注tooltip
- if (!this.noteEl) {
- this.noteEl = document.createElement('div')
- this.noteEl.style.cssText = `
- position: absolute;
- padding: 10px;
- border-radius: 5px;
- box-shadow: 0 2px 5px rgb(0 0 0 / 10%);
- display: none;
- background-color: #fff;
- `
+ if (!this.mindMap.opt.customNoteContentShow) {
+ if (!this.noteEl) {
+ this.noteEl = document.createElement('div')
+ this.noteEl.style.cssText = `
+ position: absolute;
+ padding: 10px;
+ border-radius: 5px;
+ box-shadow: 0 2px 5px rgb(0 0 0 / 10%);
+ display: none;
+ background-color: #fff;
+ `
+ document.body.appendChild(this.noteEl)
+ }
+ this.noteEl.innerText = this.nodeData.data.note
}
- this.noteEl.innerText = this.nodeData.data.note
- document.body.appendChild(this.noteEl)
node.on('mouseover', () => {
let { left, top } = node.node.getBoundingClientRect()
- this.noteEl.style.left = left + 'px'
- this.noteEl.style.top = top + iconSize + 'px'
- this.noteEl.style.display = 'block'
+ if (!this.mindMap.opt.customNoteContentShow) {
+ this.noteEl.style.left = left + 'px'
+ this.noteEl.style.top = top + iconSize + 'px'
+ this.noteEl.style.display = 'block'
+ } else {
+ this.mindMap.opt.customNoteContentShow.show(this.nodeData.data.note, left, top + iconSize)
+ }
})
node.on('mouseout', () => {
- this.noteEl.style.display = 'none'
+ if (!this.mindMap.opt.customNoteContentShow) {
+ this.noteEl.style.display = 'none'
+ } else {
+ this.mindMap.opt.customNoteContentShow.hide()
+ }
})
return {
node,
diff --git a/web/package.json b/web/package.json
index 54b893ec..60278536 100644
--- a/web/package.json
+++ b/web/package.json
@@ -8,6 +8,7 @@
"lint": "vue-cli-service lint"
},
"dependencies": {
+ "@toast-ui/editor": "^3.1.5",
"core-js": "^3.6.5",
"element-ui": "^2.15.1",
"vue": "^2.6.11",
diff --git a/web/src/pages/Edit/components/Edit.vue b/web/src/pages/Edit/components/Edit.vue
index ca3ff7d2..878b9283 100644
--- a/web/src/pages/Edit/components/Edit.vue
+++ b/web/src/pages/Edit/components/Edit.vue
@@ -10,6 +10,7 @@