diff --git a/packages/designer/src/document/node/props/prop.ts b/packages/designer/src/document/node/props/prop.ts index 755a74e93..45868b74f 100644 --- a/packages/designer/src/document/node/props/prop.ts +++ b/packages/designer/src/document/node/props/prop.ts @@ -86,6 +86,8 @@ export class Prop implements IPropParent { type: 'JSSlot', params: schema.params, value: schema.children, + title: schema.title, + name: schema.name, }; } @@ -235,6 +237,7 @@ export class Prop implements IPropParent { const slotSchema: SlotSchema = { componentName: 'Slot', title: data.title, + name: data.name, params: data.params, children: data.value, }; diff --git a/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts index bcb0e4548..0db24f0b5 100644 --- a/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts +++ b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts @@ -281,7 +281,7 @@ export function upgradePropConfig(config: OldPropConfig, collector: ConfigCollec let initialFn = (slotName ? null : initial) || initialValue; if (slotName && initialValue === true) { - initialFn = (field: any, value: any) => { + initialFn = (value: any, defaultValue: any) => { if (isJSSlot(value)) { return { title: slotTitle || title, diff --git a/packages/editor-preset-vision/src/editor.ts b/packages/editor-preset-vision/src/editor.ts index d8669460a..22c44174e 100644 --- a/packages/editor-preset-vision/src/editor.ts +++ b/packages/editor-preset-vision/src/editor.ts @@ -55,6 +55,7 @@ function upgradePropsReducer(props: any) { val = { type: 'JSSlot', title: (val.value.props as any)?.slotTitle, + name: (val.value.props as any)?.slotName, value: val.value.children }; } else { @@ -138,7 +139,6 @@ function compatiableReducer(props: any) { const newProps: any = {}; Object.entries(props).forEach(([key, val]) => { if (isJSSlot(val)) { - val.value val = { type: 'JSBlock', value: { @@ -146,6 +146,7 @@ function compatiableReducer(props: any) { children: val.value, props: { slotTitle: val.title, + slotName: val.name, }, }, } diff --git a/packages/types/src/schema.ts b/packages/types/src/schema.ts index 1a8c3f091..d3e74f6ea 100644 --- a/packages/types/src/schema.ts +++ b/packages/types/src/schema.ts @@ -69,6 +69,7 @@ export interface BlockSchema extends NodeSchema { componentName: 'Block'; } export interface SlotSchema extends NodeSchema { + name?: string; componentName: 'Slot'; params?: string[]; } diff --git a/packages/types/src/value-type.ts b/packages/types/src/value-type.ts index 9918d2a3b..dd6e48f18 100644 --- a/packages/types/src/value-type.ts +++ b/packages/types/src/value-type.ts @@ -14,6 +14,7 @@ export interface JSExpression { } export interface JSSlot { + name?: string; type: 'JSSlot'; title?: string; // 函数的入参