From f9734e8a7e47212219cb4e1ada5e0ea9a957e13f Mon Sep 17 00:00:00 2001 From: "humphry.hy" Date: Wed, 10 Nov 2021 18:01:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=20configure.supports.?= =?UTF-8?q?events=20=E7=9A=84=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/transducers/parse-props.ts | 10 ++++--- packages/types/src/metadata.ts | 28 ++++++++++++------- packages/types/src/prop-config.ts | 1 + 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/packages/editor-skeleton/src/transducers/parse-props.ts b/packages/editor-skeleton/src/transducers/parse-props.ts index 54f418ca9..47d78bea9 100644 --- a/packages/editor-skeleton/src/transducers/parse-props.ts +++ b/packages/editor-skeleton/src/transducers/parse-props.ts @@ -7,6 +7,8 @@ import { ObjectOf, ArrayOf, TransformedComponentMetadata, + ConfigureSupport, + OneOfType, } from '@ali/lowcode-types'; function propConfigToFieldConfig(propConfig: PropConfig): FieldConfig { @@ -102,7 +104,7 @@ function propTypeToSetter(propType: PropType): SetterType { isRequired, initialValue: (field: any) => { const data: any = {}; - items.forEach((item) => { + items.forEach((item: any) => { let initial = item.defaultValue; if (initial == null && item.setter && typeof item.setter === 'object') { initial = (item.setter as any).initialValue; @@ -224,14 +226,14 @@ export default function (metadata: TransformedComponentMetadata): TransformedCom name, description, }); - (supports as any).events = supportedEvents; + (supports as ConfigureSupport).events = supportedEvents; } return; } if (name === 'className' && (propType === 'string' || propType === 'any')) { - if ((supports as any).className == null) { - (supports as any).className = true; + if ((supports as ConfigureSupport).className == null) { + (supports as ConfigureSupport).className = true; } return; } diff --git a/packages/types/src/metadata.ts b/packages/types/src/metadata.ts index c266755a1..392f6c5d4 100644 --- a/packages/types/src/metadata.ts +++ b/packages/types/src/metadata.ts @@ -2,7 +2,7 @@ import { ReactNode, ComponentType, ReactElement } from 'react'; import { IconType } from './icon'; import { TipContent } from './tip'; import { TitleContent } from './title'; -import { PropConfig } from './prop-config'; +import { PropConfig, PropType } from './prop-config'; import { NpmInfo } from './npm'; import { FieldConfig } from './field-config'; import { NodeSchema, NodeData, ComponentSchema } from './schema'; @@ -105,18 +105,26 @@ export interface LiveTextEditingConfig { onSaveContent?: (content: string, prop: any) => any; } +export type ConfigureSupportEvent = string | { + name: string; + propType?: PropType; + description?: string; +}; + +export type ConfigureSupport = { + events?: ConfigureSupportEvent[]; + className?: boolean; + style?: boolean; + lifecycles?: any[]; + // general?: boolean; + loop?: boolean; + condition?: boolean; +}; + export interface Configure { props?: FieldConfig[]; component?: ComponentConfigure; - supports?: { - events?: any[]; - className?: boolean; - style?: boolean; - lifecycles?: any[]; - // general?: boolean; - loop?: boolean; - condition?: boolean; - }; + supports?: ConfigureSupport; } export interface ActionContentObject { diff --git a/packages/types/src/prop-config.ts b/packages/types/src/prop-config.ts index a8bc3620d..21b285fc4 100644 --- a/packages/types/src/prop-config.ts +++ b/packages/types/src/prop-config.ts @@ -43,4 +43,5 @@ export interface PropConfig { propType: PropType; description?: string; defaultValue?: any; + setter?: any }