From e5b3d05991a26dc186cdf63962ca3c7b50a32572 Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Wed, 10 Jul 2024 19:43:15 +0800 Subject: [PATCH] feat: add executeInsertControl api --- docs/en/guide/command-execute.md | 10 ++++++++++ docs/guide/command-execute.md | 10 ++++++++++ src/editor/core/command/Command.ts | 2 ++ src/editor/core/command/CommandAdapt.ts | 19 +++++++++++++++++++ 4 files changed, 41 insertions(+) diff --git a/docs/en/guide/command-execute.md b/docs/en/guide/command-execute.md index e285dcd..7b0cd77 100644 --- a/docs/en/guide/command-execute.md +++ b/docs/en/guide/command-execute.md @@ -932,6 +932,16 @@ Usage: instance.command.executeLocationControl(controlId: string) ``` +## executeInsertControl + +Feature: Insert control + +Usage: + +```javascript +instance.command.executeInsertControl(payload: IElement) +``` + ## executeUpdateOptions Feature: Update options diff --git a/docs/guide/command-execute.md b/docs/guide/command-execute.md index e37ca9d..edd3da2 100644 --- a/docs/guide/command-execute.md +++ b/docs/guide/command-execute.md @@ -932,6 +932,16 @@ instance.command.executeSetControlHighlight(payload: ISetControlHighlightOption) instance.command.executeLocationControl(controlId: string) ``` +## executeInsertControl + +功能:插入控件 + +用法: + +```javascript +instance.command.executeInsertControl(payload: IElement) +``` + ## executeUpdateOptions 功能:修改配置 diff --git a/src/editor/core/command/Command.ts b/src/editor/core/command/Command.ts index 43e82e9..aadab4d 100644 --- a/src/editor/core/command/Command.ts +++ b/src/editor/core/command/Command.ts @@ -92,6 +92,7 @@ export class Command { public executeSetControlProperties: CommandAdapt['setControlProperties'] public executeSetControlHighlight: CommandAdapt['setControlHighlight'] public executeLocationControl: CommandAdapt['locationControl'] + public executeInsertControl: CommandAdapt['insertControl'] public executeUpdateOptions: CommandAdapt['updateOptions'] public executeInsertTitle: CommandAdapt['insertTitle'] public getCatalog: CommandAdapt['getCatalog'] @@ -242,5 +243,6 @@ export class Command { this.getControlValue = adapt.getControlValue.bind(adapt) this.getControlList = adapt.getControlList.bind(adapt) this.executeLocationControl = adapt.locationControl.bind(adapt) + this.executeInsertControl = adapt.insertControl.bind(adapt) } } diff --git a/src/editor/core/command/CommandAdapt.ts b/src/editor/core/command/CommandAdapt.ts index a5b861b..9139940 100644 --- a/src/editor/core/command/CommandAdapt.ts +++ b/src/editor/core/command/CommandAdapt.ts @@ -2582,6 +2582,25 @@ export class CommandAdapt { } } + public insertControl(payload: IElement) { + const isReadonly = this.draw.isReadonly() + if (isReadonly) return + const cloneElement = deepClone(payload) + // 格式化上下文信息 + const { startIndex } = this.range.getRange() + const elementList = this.draw.getElementList() + const copyElement = getAnchorElement(elementList, startIndex) + if (!copyElement) return + const cloneAttr = [ + ...TABLE_CONTEXT_ATTR, + ...EDITOR_ROW_ATTR, + ...LIST_CONTEXT_ATTR + ] + cloneProperty(cloneAttr, copyElement, cloneElement) + // 插入控件 + this.draw.insertElementList([cloneElement]) + } + public getContainer(): HTMLDivElement { return this.draw.getContainer() }