diff --git a/packages/editor/src/layouts/sidebar/ComponentListPanel.vue b/packages/editor/src/layouts/sidebar/ComponentListPanel.vue index cb67a5ff..79583dcb 100644 --- a/packages/editor/src/layouts/sidebar/ComponentListPanel.vue +++ b/packages/editor/src/layouts/sidebar/ComponentListPanel.vue @@ -56,11 +56,11 @@ export default defineComponent({ collapseValue, list, - appendComponent({ text, type, ...config }: ComponentItem): void { + appendComponent({ text, type, data = {} }: ComponentItem): void { services?.editorService.add({ name: text, type, - ...config, + ...data, }); }, }; diff --git a/packages/editor/src/layouts/sidebar/LayerMenu.vue b/packages/editor/src/layouts/sidebar/LayerMenu.vue index 658fb5dc..052f11ed 100644 --- a/packages/editor/src/layouts/sidebar/LayerMenu.vue +++ b/packages/editor/src/layouts/sidebar/LayerMenu.vue @@ -72,6 +72,7 @@ export default defineComponent({ services?.editorService.add({ name: config.text, type: config.type, + ...(config.data || {}), }); }, diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index 26a30871..6599b748 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -229,7 +229,7 @@ class Editor extends BaseService { const layout = await this.getLayout(parentNode); const newNode = initPosition( - { ...toRaw(await propsService.getPropsValue(type)), ...config }, + { ...toRaw(await propsService.getPropsValue(type, config)) }, layout, parentNode, this.get('stage'), diff --git a/packages/editor/src/services/props.ts b/packages/editor/src/services/props.ts index aa561e02..a13908b2 100644 --- a/packages/editor/src/services/props.ts +++ b/packages/editor/src/services/props.ts @@ -87,7 +87,7 @@ class Props extends BaseService { * @param type 组件类型 * @returns 组件初始值 */ - public async getPropsValue(type: string) { + public async getPropsValue(type: string, defaultValue = {}) { if (type === 'area') { const value = (await this.getPropsValue('button')) as MComponent; value.className = 'action-area'; @@ -100,6 +100,7 @@ class Props extends BaseService { return cloneDeep({ ...getDefaultPropsValue(type), + ...defaultValue, ...(this.state.propsValueMap[type] || {}), }); } diff --git a/packages/editor/src/type.ts b/packages/editor/src/type.ts index 9f5191ef..e712fc86 100644 --- a/packages/editor/src/type.ts +++ b/packages/editor/src/type.ts @@ -220,7 +220,9 @@ export interface ComponentItem { type: string; /** element-plus icon class */ icon?: string | Component; - [key: string]: any; + data?: { + [key: string]: any; + }; } export interface ComponentGroup {