From 9f8428576302a00d182aa3c469def0b6d3d0e708 Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Fri, 21 Apr 2023 13:41:57 +0800 Subject: [PATCH] feat: recursion format element context --- src/editor/core/draw/particle/date/DateParticle.ts | 7 +++++-- src/editor/utils/element.ts | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/editor/core/draw/particle/date/DateParticle.ts b/src/editor/core/draw/particle/date/DateParticle.ts index 4a839e5..4e91005 100644 --- a/src/editor/core/draw/particle/date/DateParticle.ts +++ b/src/editor/core/draw/particle/date/DateParticle.ts @@ -1,6 +1,7 @@ import { ElementType } from '../../../../dataset/enum/Element' import { IElement, IElementPosition } from '../../../../interface/Element' import { IRowElement } from '../../../../interface/Row' +import { formatElementContext } from '../../../../utils/element' import { RangeManager } from '../../../range/RangeManager' import { Draw } from '../../Draw' import { DatePicker } from './DatePicker' @@ -53,14 +54,16 @@ export class DateParticle { this.draw.spliceElementList(elementList, leftIndex + 1, rightIndex - leftIndex) this.range.setRange(leftIndex, leftIndex) // 插入新时间 - this.draw.insertElementList([{ + const dateElement: IElement = { type: ElementType.DATE, value: '', dateFormat: startElement.dateFormat, valueList: [{ value: date }] - }]) + } + formatElementContext(elementList, [dateElement], leftIndex) + this.draw.insertElementList([dateElement]) } public getDateElementRange(): [number, number] | null { diff --git a/src/editor/utils/element.ts b/src/editor/utils/element.ts index 8b60e8a..f8b462a 100644 --- a/src/editor/utils/element.ts +++ b/src/editor/utils/element.ts @@ -551,6 +551,9 @@ export function formatElementContext(sourceElementList: IElement[], formatElemen if (!copyElement) return for (let e = 0; e < formatElementList.length; e++) { const targetElement = formatElementList[e] + if (targetElement.valueList && targetElement.valueList.length) { + formatElementContext(sourceElementList, targetElement.valueList, anchorIndex) + } for (let i = 0; i < EDITOR_ELEMENT_CONTEXT_ATTR.length; i++) { const attr = EDITOR_ELEMENT_CONTEXT_ATTR[i] const value = copyElement[attr] as never