From 0523fc257ae6f2c9b2511e912a4272c6b962d41e Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Thu, 14 Mar 2024 20:38:47 +0800 Subject: [PATCH] feat: add getControlList api #455 --- docs/en/guide/command-get.md | 10 ++++++++++ docs/guide/command-get.md | 10 ++++++++++ src/editor/core/command/Command.ts | 2 ++ src/editor/core/command/CommandAdapt.ts | 4 ++++ src/editor/core/draw/control/Control.ts | 18 ++++++++++++++++++ 5 files changed, 44 insertions(+) diff --git a/docs/en/guide/command-get.md b/docs/en/guide/command-get.md index 25a27a5..225c635 100644 --- a/docs/en/guide/command-get.md +++ b/docs/en/guide/command-get.md @@ -212,6 +212,16 @@ const { } = await instance.command.getControlValue(payload: IGetControlValueOption) ``` +## getControlList + +Feature: Get control list + +Usage: + +```javascript +const controlList = await instance.command.getControlList() +``` + ## getContainer Feature: Get editor container diff --git a/docs/guide/command-get.md b/docs/guide/command-get.md index e211c1f..189eaec 100644 --- a/docs/guide/command-get.md +++ b/docs/guide/command-get.md @@ -212,6 +212,16 @@ const { } = await instance.command.getControlValue(payload: IGetControlValueOption) ``` +## getControlList + +功能:获取所有控件 + +用法: + +```javascript +const controlList = await instance.command.getControlList() +``` + ## getContainer 功能:获取编辑器容器 diff --git a/src/editor/core/command/Command.ts b/src/editor/core/command/Command.ts index 262004f..59e81ac 100644 --- a/src/editor/core/command/Command.ts +++ b/src/editor/core/command/Command.ts @@ -108,6 +108,7 @@ export class Command { public getLocale: CommandAdapt['getLocale'] public getGroupIds: CommandAdapt['getGroupIds'] public getControlValue: CommandAdapt['getControlValue'] + public getControlList: CommandAdapt['getControlList'] public getContainer: CommandAdapt['getContainer'] constructor(adapt: CommandAdapt) { @@ -228,5 +229,6 @@ export class Command { this.executeSetControlProperties = adapt.setControlProperties.bind(adapt) this.executeSetControlHighlight = adapt.setControlHighlight.bind(adapt) this.getControlValue = adapt.getControlValue.bind(adapt) + this.getControlList = adapt.getControlList.bind(adapt) } } diff --git a/src/editor/core/command/CommandAdapt.ts b/src/editor/core/command/CommandAdapt.ts index 6fe10fc..4756a58 100644 --- a/src/editor/core/command/CommandAdapt.ts +++ b/src/editor/core/command/CommandAdapt.ts @@ -2388,6 +2388,10 @@ export class CommandAdapt { this.draw.getControl().setHighlightList(payload) } + public getControlList(): IElement[] { + return this.draw.getControl().getList() + } + public getContainer(): HTMLDivElement { return this.draw.getContainer() } diff --git a/src/editor/core/draw/control/Control.ts b/src/editor/core/draw/control/Control.ts index e1e808b..acec9f6 100644 --- a/src/editor/core/draw/control/Control.ts +++ b/src/editor/core/draw/control/Control.ts @@ -752,4 +752,22 @@ export class Control { isSetCursor: false }) } + + public getList(): IElement[] { + const data = [ + this.draw.getHeader().getElementList(), + this.draw.getOriginalMainElementList(), + this.draw.getFooter().getElementList() + ] + const controlElementList: IElement[] = [] + for (const elementList of data) { + for (let e = 0; e < elementList.length; e++) { + const element = elementList[e] + if (element.controlId) { + controlElementList.push(element) + } + } + } + return zipElementList(controlElementList) + } }