fix: delete rowFlex when row position change #164

This commit is contained in:
Hufe921
2023-03-31 15:32:10 +08:00
parent 1fa1d10fc9
commit 5c3ce57c24
5 changed files with 51 additions and 9 deletions
+21 -1
View File
@@ -330,10 +330,30 @@ export class Draw {
return this.pageList return this.pageList
} }
public getRowList(): IRow[] { public getTableRowList(sourceElementList: IElement[]): IRow[] {
const positionContext = this.position.getPositionContext()
const { index, trIndex, tdIndex } = positionContext
return sourceElementList[index!].trList![trIndex!].tdList[tdIndex!].rowList!
}
public getOriginalRowList() {
const zoneManager = this.getZone()
if (zoneManager.isHeaderActive()) {
return this.header.getRowList()
}
if (zoneManager.isFooterActive()) {
return this.footer.getRowList()
}
return this.rowList return this.rowList
} }
public getRowList(): IRow[] {
const positionContext = this.position.getPositionContext()
return positionContext.isTable
? this.getTableRowList(this.getOriginalElementList())
: this.getOriginalRowList()
}
public getPageRowList(): IRow[][] { public getPageRowList(): IRow[][] {
return this.pageRowList return this.pageRowList
} }
+4
View File
@@ -27,6 +27,10 @@ export class Footer {
this.positionList = [] this.positionList = []
} }
public getRowList(): IRow[] {
return this.rowList
}
public setElementList(elementList: IElement[]) { public setElementList(elementList: IElement[]) {
this.elementList = elementList this.elementList = elementList
} }
+4
View File
@@ -27,6 +27,10 @@ export class Header {
this.positionList = [] this.positionList = []
} }
public getRowList(): IRow[] {
return this.rowList
}
public setElementList(elementList: IElement[]) { public setElementList(elementList: IElement[]) {
this.elementList = elementList this.elementList = elementList
} }
+12 -8
View File
@@ -38,7 +38,11 @@ export function input(data: string, host: CanvasEvent) {
restArg = { tdId, trId, tableId } restArg = { tdId, trId, tableId }
} }
const elementList = draw.getElementList() const elementList = draw.getElementList()
const element = elementList[endIndex] const endElement = elementList[endIndex]
const endNextElement = elementList[endIndex + 1]
const copyElement = endElement.value === ZERO && endNextElement
? endNextElement
: endElement
const inputData: IElement[] = splitText(text).map(value => { const inputData: IElement[] = splitText(text).map(value => {
const newElement: IElement = { const newElement: IElement = {
value, value,
@@ -46,15 +50,15 @@ export function input(data: string, host: CanvasEvent) {
} }
const nextElement = elementList[endIndex + 1] const nextElement = elementList[endIndex + 1]
if ( if (
element.type === TEXT copyElement.type === TEXT
|| (!element.type && element.value !== ZERO) || (!copyElement.type && copyElement.value !== ZERO)
|| (element.type === HYPERLINK && nextElement?.type === HYPERLINK) || (copyElement.type === HYPERLINK && nextElement?.type === HYPERLINK)
|| (element.type === DATE && nextElement?.type === DATE) || (copyElement.type === DATE && nextElement?.type === DATE)
|| (element.type === SUBSCRIPT && nextElement?.type === SUBSCRIPT) || (copyElement.type === SUBSCRIPT && nextElement?.type === SUBSCRIPT)
|| (element.type === SUPERSCRIPT && nextElement?.type === SUPERSCRIPT) || (copyElement.type === SUPERSCRIPT && nextElement?.type === SUPERSCRIPT)
) { ) {
EDITOR_ELEMENT_COPY_ATTR.forEach(attr => { EDITOR_ELEMENT_COPY_ATTR.forEach(attr => {
const value = element[attr] as never const value = copyElement[attr] as never
if (value !== undefined) { if (value !== undefined) {
newElement[attr] = value newElement[attr] = value
} }
+10
View File
@@ -35,6 +35,16 @@ export function keydown(evt: KeyboardEvent, host: CanvasEvent) {
evt.preventDefault() evt.preventDefault()
return return
} }
// 清空当前行对齐方式
const startElement = elementList[startIndex]
if (isCollapsed && startElement.rowFlex && startElement.value === ZERO) {
const rowList = draw.getRowList()
const rowNo = positionList[startIndex].rowNo
const rowFlexElementList = rowList[rowNo].elementList
rowFlexElementList.forEach(element => {
delete element.rowFlex
})
}
if (!isCollapsed) { if (!isCollapsed) {
elementList.splice(startIndex + 1, endIndex - startIndex) elementList.splice(startIndex + 1, endIndex - startIndex)
} else { } else {