fix: delete rowFlex when row position change #164

pr675
Hufe921 3 years ago
parent 1fa1d10fc9
commit 5c3ce57c24

@ -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
} }

@ -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
} }

@ -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
} }

@ -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
} }

@ -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 {

Loading…
Cancel
Save