|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <t-menu class="context-menu" @change="onMenu">
|
|
|
+ <t-menu class="context-menu" @change="onMenu" expandType="popup">
|
|
|
<template v-if="props.type === 'anchor'">
|
|
|
<t-menu-item value="addAnchorHand">
|
|
|
<div class="flex">{{$t('添加手柄')}} <span class="flex-grow"></span> H</div>
|
|
@@ -34,8 +34,39 @@
|
|
|
<t-menu-item :disabled="!selections.mode" value="down">
|
|
|
{{$t('下一个图层')}}
|
|
|
</t-menu-item>
|
|
|
- <t-divider></t-divider>
|
|
|
-
|
|
|
+ <template v-if="selections.mode === SelectionMode.Pens">
|
|
|
+ <t-submenu value="1-1-10" title="画布层">
|
|
|
+ <t-menu-item :disabled="!allImg()" value="4">
|
|
|
+ 上层图片层
|
|
|
+ </t-menu-item>
|
|
|
+ <t-menu-item :disabled="hasDom()" value="3">
|
|
|
+ 主画布层
|
|
|
+ </t-menu-item>
|
|
|
+ <t-menu-item :disabled="!allImg()" value="2">
|
|
|
+ 下层图片层
|
|
|
+ </t-menu-item>
|
|
|
+ <t-menu-item :disabled="hasDom()" value="1">
|
|
|
+ 模板层
|
|
|
+ </t-menu-item>
|
|
|
+ </t-submenu>
|
|
|
+ </template>
|
|
|
+ <template v-if="selections.mode === SelectionMode.Pen">
|
|
|
+ <t-submenu value="1-1-10" title="画布层">
|
|
|
+ <t-menu-item :disabled="!isImg()" value="4">
|
|
|
+ 上层图片层
|
|
|
+ </t-menu-item>
|
|
|
+ <t-menu-item value="3">
|
|
|
+ 主画布层
|
|
|
+ </t-menu-item>
|
|
|
+ <t-menu-item :disabled="!isImg()" value="2">
|
|
|
+ 下层图片层
|
|
|
+ </t-menu-item>
|
|
|
+ <t-menu-item value="1">
|
|
|
+ 模板层
|
|
|
+ </t-menu-item>
|
|
|
+ </t-submenu>
|
|
|
+ </template>
|
|
|
+ <t-divider />
|
|
|
<template v-if="selections.mode === SelectionMode.Pens">
|
|
|
<t-menu-item value="group"> {{$t('组合')}} </t-menu-item>
|
|
|
<t-menu-item value="states"> {{$t('组合为状态')}} </t-menu-item>
|
|
@@ -80,7 +111,7 @@
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { onMounted, ref, getCurrentInstance } from 'vue';
|
|
|
-import { LockState, Pen, PenType } from '@meta2d/core';
|
|
|
+import { LockState, Pen, PenType, isDomShapes } from '@meta2d/core';
|
|
|
import { useSelection, SelectionMode } from '@/services/selections';
|
|
|
import { updateC } from '@/services/updateC';
|
|
|
import { rootDomain } from '@/services/defaults';
|
|
@@ -126,6 +157,28 @@ onMounted(() => {
|
|
|
|
|
|
const onMenu = (val: string) => {
|
|
|
let id,url;
|
|
|
+ if(!isNaN(parseInt(val))){
|
|
|
+ const pens = meta2d.store.active;
|
|
|
+ if (Array.isArray(pens)) {
|
|
|
+ for (const pen of pens) {
|
|
|
+ meta2d.setValue(
|
|
|
+ {
|
|
|
+ id: pen.id,
|
|
|
+ canvasLayer: parseInt(val),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ history: false,
|
|
|
+ render:false,
|
|
|
+ doEvent:false
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ meta2d.render();
|
|
|
+ meta2d.emit('layer');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
switch (val) {
|
|
|
case 'addAnchorHand':
|
|
|
meta2d.addAnchorHand();
|
|
@@ -255,10 +308,44 @@ const isIframe = ()=>{
|
|
|
return meta2d?.store.active.length === 1 && meta2d?.store.active[0].name === "iframe"
|
|
|
}
|
|
|
|
|
|
+const isImg = ()=>{
|
|
|
+ return meta2d?.store.active[0].name==='image'
|
|
|
+}
|
|
|
+
|
|
|
+const hasDom = () => {
|
|
|
+ return selections.pens.some((item: Pen) => {
|
|
|
+ return isDomShapes.includes(item.name) ||
|
|
|
+ item.name.endsWith('Dom') ||
|
|
|
+ meta2d.store.options.domShapes.includes(item.name);
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const allImg = () => {
|
|
|
+ return selections.pens.every((item: Pen) => {
|
|
|
+ return item.name === 'image';
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<style lang="postcss" scoped>
|
|
|
.context-menu {
|
|
|
height: auto !important;
|
|
|
}
|
|
|
+:deep(.t-menu) {
|
|
|
+ .t-menu__item {
|
|
|
+ &.t-is-opened {
|
|
|
+ background-color: var(--color-background-popup-hover);
|
|
|
+ transition: none !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .t-fake-arrow {
|
|
|
+ transform: rotate(-90deg) !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ .t-fake-arrow--active {
|
|
|
+ transform: rotate(90deg) !important;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|