mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-09-02 21:59:54 +08:00
feat(editor): contentmenu支持扩展
This commit is contained in:
parent
586711b9bd
commit
70292b92c8
@ -56,7 +56,7 @@ import eventsService from '@editor/services/events';
|
|||||||
import historyService from '@editor/services/history';
|
import historyService from '@editor/services/history';
|
||||||
import propsService from '@editor/services/props';
|
import propsService from '@editor/services/props';
|
||||||
import uiService from '@editor/services/ui';
|
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({
|
export default defineComponent({
|
||||||
name: 'm-editor',
|
name: 'm-editor',
|
||||||
@ -88,6 +88,16 @@ export default defineComponent({
|
|||||||
type: Object as PropType<SideBarData>,
|
type: Object as PropType<SideBarData>,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
layerContentMenu: {
|
||||||
|
type: Array as PropType<MenuItem[]>,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
|
||||||
|
stageContentMenu: {
|
||||||
|
type: Array as PropType<MenuItem[]>,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
|
||||||
/** 顶部工具栏配置 */
|
/** 顶部工具栏配置 */
|
||||||
menu: {
|
menu: {
|
||||||
type: Object as PropType<MenuBarData>,
|
type: Object as PropType<MenuBarData>,
|
||||||
@ -237,6 +247,9 @@ export default defineComponent({
|
|||||||
|
|
||||||
provide('services', services);
|
provide('services', services);
|
||||||
|
|
||||||
|
provide('layerContentMenu', props.layerContentMenu);
|
||||||
|
provide('stageContentMenu', props.stageContentMenu);
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -22,6 +22,8 @@ export default defineComponent({
|
|||||||
const isPage = computed(() => node.value?.type === NodeType.PAGE);
|
const isPage = computed(() => node.value?.type === NodeType.PAGE);
|
||||||
const componentList = computed(() => services?.componentListService.getList() || []);
|
const componentList = computed(() => services?.componentListService.getList() || []);
|
||||||
|
|
||||||
|
const layerContentMenu = inject<MenuItem[]>('layerContentMenu', []);
|
||||||
|
|
||||||
const createMenuItems = (group: ComponentGroup): MenuButton[] =>
|
const createMenuItems = (group: ComponentGroup): MenuButton[] =>
|
||||||
group.items.map((component) => ({
|
group.items.map((component) => ({
|
||||||
text: component.text,
|
text: component.text,
|
||||||
@ -101,6 +103,7 @@ export default defineComponent({
|
|||||||
node.value && services?.editorService.remove(node.value);
|
node.value && services?.editorService.remove(node.value);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
...layerContentMenu,
|
||||||
]),
|
]),
|
||||||
|
|
||||||
show(e: MouseEvent) {
|
show(e: MouseEvent) {
|
||||||
|
@ -27,6 +27,8 @@ export default defineComponent({
|
|||||||
const parent = computed(() => editorService?.get('parent'));
|
const parent = computed(() => editorService?.get('parent'));
|
||||||
const isPage = computed(() => node.value?.type === NodeType.PAGE);
|
const isPage = computed(() => node.value?.type === NodeType.PAGE);
|
||||||
|
|
||||||
|
const stageContentMenu = inject<MenuItem[]>('stageContentMenu', []);
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const data = globalThis.localStorage.getItem(COPY_STORAGE_KEY);
|
const data = globalThis.localStorage.getItem(COPY_STORAGE_KEY);
|
||||||
canPaste.value = data !== 'undefined' && !!data;
|
canPaste.value = data !== 'undefined' && !!data;
|
||||||
@ -150,6 +152,7 @@ export default defineComponent({
|
|||||||
editorService?.get<StageCore>('stage').clearGuides();
|
editorService?.get<StageCore>('stage').clearGuides();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
...stageContentMenu,
|
||||||
]),
|
]),
|
||||||
|
|
||||||
show(e: MouseEvent) {
|
show(e: MouseEvent) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user