diff --git a/packages/editor/src/layouts/workspace/Stage.vue b/packages/editor/src/layouts/workspace/Stage.vue index 1deaec85..b8fbd124 100644 --- a/packages/editor/src/layouts/workspace/Stage.vue +++ b/packages/editor/src/layouts/workspace/Stage.vue @@ -264,6 +264,8 @@ export default defineComponent({ left, }; + config.inputEvent = e; + services?.editorService.add(config, parent); } }, diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index 0f950222..51383c36 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -271,7 +271,8 @@ class Editor extends BaseService { * @returns 添加后的节点 */ public async add(addNode: AddMNode, parent?: MContainer | null): Promise { - const { type, ...config } = addNode; + // 加入inputEvent是为给业务扩展时可以获取到更多的信息,只有在使用拖拽添加组件时才有改对象 + const { type, inputEvent, ...config } = addNode; const curNode = this.get('node'); let parentNode: MContainer | undefined; diff --git a/packages/editor/src/services/props.ts b/packages/editor/src/services/props.ts index b5ab80ae..c66cc55e 100644 --- a/packages/editor/src/services/props.ts +++ b/packages/editor/src/services/props.ts @@ -88,7 +88,7 @@ class Props extends BaseService { * @param type 组件类型 * @returns 组件初始值 */ - public async getPropsValue(type: string, defaultValue: Record = {}) { + public async getPropsValue(type: string, { inputEvent, ...defaultValue }: Record = {}) { if (type === 'area') { const value = (await this.getPropsValue('button')) as MComponent; value.className = 'action-area'; diff --git a/packages/editor/src/type.ts b/packages/editor/src/type.ts index 00a2287a..50f0b074 100644 --- a/packages/editor/src/type.ts +++ b/packages/editor/src/type.ts @@ -125,6 +125,7 @@ export interface EditorNodeInfo { export interface AddMNode { type: string; name?: string; + inputEvent?: DragEvent; [key: string]: any; }