Browse Source

取消打组功能

liwei 1 year ago
parent
commit
5bba544f95

+ 17 - 12
src/modules/editor/module/actions/edit.tsx

@@ -8,6 +8,7 @@ import { ICompKeys, Layout } from "../../typings";
 import CompSave from "../../components/CompSave";
 import { ObjsContainer } from "../../controllers/SelectCtrl/ObjsContainer";
 import { getKeyThenIncreaseKey } from "ant-design-vue/lib/message";
+import { Matrix } from "../../controllers/SelectCtrl/matrix";
 
 export const editActions = EditorModule.action({
   pickComp(compId: string, selected = true) {
@@ -541,19 +542,23 @@ export const editActions = EditorModule.action({
   // 取消打组
   cancelGroupComps(groupComp: DesignComp) {
     console.log("cancel group");
-    // const childs = groupComp.children.default;
-    // const objC = this.controls.selectCtrl.objContainer as ObjsContainer;
-
-    // objC.parent.children.forEach(o=>{
-    //   const obj = o as CompObject;
-    //   obj.comp.layout.transformMatrix = o.worldTransform.getMatrixStr();
-    // })
-
-    // this.controls.transferCtrl.groupCtrl.cancelGroup(groupComp);
-
-    // this.store.setCurrComp(groupComp.children.default?.[0] as string);
-
 
+    const childs = groupComp.children.default || [];
+    const objC = this.controls.selectCtrl.objContainer as ObjsContainer;
+    const parentMtrx = objC.parent.worldTransform.clone();
+    childs.forEach(o=>{
+      const obj = this.helper.findComp(o) as DesignComp;
+      const mxt = Matrix.createFromMatrixStr(obj.layout.transformMatrix as string);
+      mxt.prepend(parentMtrx);
+      obj.layout.transformMatrix = mxt.getMatrixStr();
+    })
+    const paths = this.helper.getCompTrees(groupComp.id)
+    const card = paths[1];
+    const parentChilds = (card.children.default || []).filter(item=>item != groupComp.id);
+    parentChilds.push(...childs);
+    card.children.default = childs;
+    
+    this.actions.selectObjs([childs[0]]);
   },
 
   createGroupComps() {

+ 1 - 12
src/modules/editor/module/helpers/index.ts

@@ -108,21 +108,10 @@ export const helpers = EditorModule.helper({
     return i >= 0;
   },
   isCompCanDelete(compId: string): boolean {
-    const comp = this.helper.findComp(compId);
-    if (!comp || !this.helper.isCustomChildComp(comp)) return false;
-    if (comp.compKey == "Container" && this.store.streamCardIds.length == 1)
-      return false;
-    return true;
-    // if (this.store.isEditComp) return true;
-    // return this.store.pageCompIds.includes(compId);
+    return this.helper.isStreamCardChild(compId);
   },
   isShowSaveComp(comp: DesignComp): boolean {
-    // if (!comp.children?.default || comp.children?.default?.length == 0)
-    //   return false;
     if ( !this.helper.isStreamCardChild(comp.id) ) return false;
-
-    // if (!this.helper.isCustomChildComp(comp)) return false;
-    
     return true;
   },
 

+ 1 - 0
src/modules/editor/objects/Toolbars/CompToolbars.ts

@@ -15,6 +15,7 @@ export const CompToolbars: ICompToolbars = {
   
   Group: [
     toolbars.cancelGroup,
+    multiSelToolbar.delete,
   ],
   MultiSelector: [
     multiSelToolbar.delete,

+ 2 - 2
src/modules/editor/objects/Toolbars/default.ts

@@ -194,9 +194,9 @@ export const toolbars = createToolbars({
   cancelGroup: {
     component: TipIcons.CancelGroup,
     getVisible(comp) {
-      return comp.compKey == "Group" && this.store.selected.length == 1;
+      return comp && comp.compKey == "Group" && this.store.selected.length == 1 && this.helper.isStreamCardChild(comp.id);
     },
-    
+
     onClick(comp) {
       this.actions.cancelGroupComps(comp);
     },