优化节点编辑
This commit is contained in:
parent
c3393abed6
commit
b7910c4665
@ -65,14 +65,15 @@ class RichText {
|
|||||||
.ql-container.ql-snow {
|
.ql-container.ql-snow {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
`
|
|
||||||
// .smm-richtext-node-wrap p {
|
|
||||||
// display: flex;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// .smm-richtext-node-edit-wrap p {
|
.smm-richtext-node-wrap p {
|
||||||
// display: flex;
|
font-family: auto;
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
.smm-richtext-node-edit-wrap p {
|
||||||
|
font-family: auto;
|
||||||
|
}
|
||||||
|
`
|
||||||
this.styleEl = document.createElement('style')
|
this.styleEl = document.createElement('style')
|
||||||
this.styleEl.type = 'text/css'
|
this.styleEl.type = 'text/css'
|
||||||
this.styleEl.innerHTML = cssText
|
this.styleEl.innerHTML = cssText
|
||||||
|
|||||||
@ -120,11 +120,11 @@ class Style {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// html文字节点
|
// html文字节点
|
||||||
domText(node, fontSizeScale = 1, textLines) {
|
domText(node, fontSizeScale = 1, isMultiLine) {
|
||||||
node.style.fontFamily = this.merge('fontFamily')
|
node.style.fontFamily = this.merge('fontFamily')
|
||||||
node.style.fontSize = this.merge('fontSize') * fontSizeScale + 'px'
|
node.style.fontSize = this.merge('fontSize') * fontSizeScale + 'px'
|
||||||
node.style.fontWeight = this.merge('fontWeight') || 'normal'
|
node.style.fontWeight = this.merge('fontWeight') || 'normal'
|
||||||
node.style.lineHeight = textLines === 1 ? 'normal' : this.merge('lineHeight')
|
node.style.lineHeight = !isMultiLine ? 'normal' : this.merge('lineHeight')
|
||||||
node.style.fontStyle = this.merge('fontStyle')
|
node.style.fontStyle = this.merge('fontStyle')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -110,7 +110,8 @@ export default class TextEdit {
|
|||||||
let lineHeight = node.style.merge('lineHeight')
|
let lineHeight = node.style.merge('lineHeight')
|
||||||
let fontSize = node.style.merge('fontSize')
|
let fontSize = node.style.merge('fontSize')
|
||||||
let textLines = (this.cacheEditingText || node.nodeData.data.text).split(/\n/gim)
|
let textLines = (this.cacheEditingText || node.nodeData.data.text).split(/\n/gim)
|
||||||
node.style.domText(this.textEditNode, scale, textLines.length)
|
let isMultiLine = node._textData.node.attr('data-ismultiLine') === 'true'
|
||||||
|
node.style.domText(this.textEditNode, scale, isMultiLine)
|
||||||
this.textEditNode.style.zIndex = this.mindMap.opt.nodeTextEditZIndex
|
this.textEditNode.style.zIndex = this.mindMap.opt.nodeTextEditZIndex
|
||||||
this.textEditNode.innerHTML = textLines.join('<br>')
|
this.textEditNode.innerHTML = textLines.join('<br>')
|
||||||
this.textEditNode.style.minWidth = rect.width + 10 + 'px'
|
this.textEditNode.style.minWidth = rect.width + 10 + 'px'
|
||||||
@ -119,8 +120,8 @@ export default class TextEdit {
|
|||||||
this.textEditNode.style.top = rect.top + 'px'
|
this.textEditNode.style.top = rect.top + 'px'
|
||||||
this.textEditNode.style.display = 'block'
|
this.textEditNode.style.display = 'block'
|
||||||
this.textEditNode.style.maxWidth = this.mindMap.opt.textAutoWrapWidth * scale + 'px'
|
this.textEditNode.style.maxWidth = this.mindMap.opt.textAutoWrapWidth * scale + 'px'
|
||||||
if (textLines.length > 1 && lineHeight !== 1) {
|
if (isMultiLine && lineHeight !== 1) {
|
||||||
this.textEditNode.style.transform = `translateY(${-((lineHeight * fontSize - fontSize) / 2 - 2) * scale}px)`
|
this.textEditNode.style.transform = `translateY(${-((lineHeight * fontSize - fontSize) / 2) * scale}px)`
|
||||||
}
|
}
|
||||||
this.showTextEdit = true
|
this.showTextEdit = true
|
||||||
// 选中文本
|
// 选中文本
|
||||||
|
|||||||
@ -96,6 +96,7 @@ function createTextNode() {
|
|||||||
let textStyle = this.style.getTextFontStyle()
|
let textStyle = this.style.getTextFontStyle()
|
||||||
let textArr = this.nodeData.data.text.split(/\n/gim)
|
let textArr = this.nodeData.data.text.split(/\n/gim)
|
||||||
let maxWidth = this.mindMap.opt.textAutoWrapWidth
|
let maxWidth = this.mindMap.opt.textAutoWrapWidth
|
||||||
|
let isMultiLine = false
|
||||||
textArr.forEach((item, index) => {
|
textArr.forEach((item, index) => {
|
||||||
let arr = item.split('')
|
let arr = item.split('')
|
||||||
let lines = []
|
let lines = []
|
||||||
@ -113,6 +114,9 @@ function createTextNode() {
|
|||||||
if (line.length > 0) {
|
if (line.length > 0) {
|
||||||
lines.push(line.join(''))
|
lines.push(line.join(''))
|
||||||
}
|
}
|
||||||
|
if (lines.length > 1) {
|
||||||
|
isMultiLine = true
|
||||||
|
}
|
||||||
textArr[index] = lines.join('\n')
|
textArr[index] = lines.join('\n')
|
||||||
})
|
})
|
||||||
textArr = textArr.join('\n').split(/\n/gim)
|
textArr = textArr.join('\n').split(/\n/gim)
|
||||||
@ -127,6 +131,7 @@ function createTextNode() {
|
|||||||
height = Math.ceil(height)
|
height = Math.ceil(height)
|
||||||
g.attr('data-width', width)
|
g.attr('data-width', width)
|
||||||
g.attr('data-height', height)
|
g.attr('data-height', height)
|
||||||
|
g.attr('data-ismultiLine', isMultiLine || textArr.length > 1)
|
||||||
return {
|
return {
|
||||||
node: g,
|
node: g,
|
||||||
width,
|
width,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user