feat(editor): contentmenu支持扩展

This commit is contained in:
roymondchen 2022-06-06 14:06:50 +08:00 committed by jia000
parent 586711b9bd
commit 70292b92c8
3 changed files with 20 additions and 1 deletions

View File

@ -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<SideBarData>,
},
layerContentMenu: {
type: Array as PropType<MenuItem[]>,
default: () => [],
},
stageContentMenu: {
type: Array as PropType<MenuItem[]>,
default: () => [],
},
/** 顶部工具栏配置 */
menu: {
type: Object as PropType<MenuBarData>,
@ -237,6 +247,9 @@ export default defineComponent({
provide('services', services);
provide('layerContentMenu', props.layerContentMenu);
provide('stageContentMenu', props.stageContentMenu);
return services;
},
});

View File

@ -22,6 +22,8 @@ export default defineComponent({
const isPage = computed(() => node.value?.type === NodeType.PAGE);
const componentList = computed(() => services?.componentListService.getList() || []);
const layerContentMenu = inject<MenuItem[]>('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) {

View File

@ -27,6 +27,8 @@ export default defineComponent({
const parent = computed(() => editorService?.get('parent'));
const isPage = computed(() => node.value?.type === NodeType.PAGE);
const stageContentMenu = inject<MenuItem[]>('stageContentMenu', []);
onMounted(() => {
const data = globalThis.localStorage.getItem(COPY_STORAGE_KEY);
canPaste.value = data !== 'undefined' && !!data;
@ -150,6 +152,7 @@ export default defineComponent({
editorService?.get<StageCore>('stage').clearGuides();
},
},
...stageContentMenu,
]),
show(e: MouseEvent) {