diff --git a/packages/editor/src/Editor.vue b/packages/editor/src/Editor.vue index 8418df5f..d43eefc0 100644 --- a/packages/editor/src/Editor.vue +++ b/packages/editor/src/Editor.vue @@ -56,7 +56,7 @@ import eventsService from '@editor/services/events'; import historyService from '@editor/services/history'; import propsService from '@editor/services/props'; import uiService from '@editor/services/ui'; -import type { ComponentGroup, MenuBarData, Services, SideBarData, StageRect } from '@editor/type'; +import type { ComponentGroup, MenuBarData, MenuItem, Services, SideBarData, StageRect } from '@editor/type'; export default defineComponent({ name: 'm-editor', @@ -88,6 +88,16 @@ export default defineComponent({ type: Object as PropType, }, + layerContentMenu: { + type: Array as PropType, + default: () => [], + }, + + stageContentMenu: { + type: Array as PropType, + default: () => [], + }, + /** 顶部工具栏配置 */ menu: { type: Object as PropType, @@ -237,6 +247,9 @@ export default defineComponent({ provide('services', services); + provide('layerContentMenu', props.layerContentMenu); + provide('stageContentMenu', props.stageContentMenu); + return services; }, }); diff --git a/packages/editor/src/layouts/sidebar/LayerMenu.vue b/packages/editor/src/layouts/sidebar/LayerMenu.vue index 8a2c0ba5..253142fd 100644 --- a/packages/editor/src/layouts/sidebar/LayerMenu.vue +++ b/packages/editor/src/layouts/sidebar/LayerMenu.vue @@ -22,6 +22,8 @@ export default defineComponent({ const isPage = computed(() => node.value?.type === NodeType.PAGE); const componentList = computed(() => services?.componentListService.getList() || []); + const layerContentMenu = inject('layerContentMenu', []); + const createMenuItems = (group: ComponentGroup): MenuButton[] => group.items.map((component) => ({ text: component.text, @@ -101,6 +103,7 @@ export default defineComponent({ node.value && services?.editorService.remove(node.value); }, }, + ...layerContentMenu, ]), show(e: MouseEvent) { diff --git a/packages/editor/src/layouts/workspace/ViewerMenu.vue b/packages/editor/src/layouts/workspace/ViewerMenu.vue index 43dd58e2..3eff91fc 100644 --- a/packages/editor/src/layouts/workspace/ViewerMenu.vue +++ b/packages/editor/src/layouts/workspace/ViewerMenu.vue @@ -27,6 +27,8 @@ export default defineComponent({ const parent = computed(() => editorService?.get('parent')); const isPage = computed(() => node.value?.type === NodeType.PAGE); + const stageContentMenu = inject('stageContentMenu', []); + onMounted(() => { const data = globalThis.localStorage.getItem(COPY_STORAGE_KEY); canPaste.value = data !== 'undefined' && !!data; @@ -150,6 +152,7 @@ export default defineComponent({ editorService?.get('stage').clearGuides(); }, }, + ...stageContentMenu, ]), show(e: MouseEvent) {