11import { MultiBaseComp } from "lowcoder-core" ;
22import { BoolCodeControl , StringControl } from "comps/controls/codeControl" ;
3- import { valueComp } from "comps/generators" ;
3+ import { BoolControl } from "comps/controls/boolControl" ;
4+ import { valueComp , withPropertyViewFn } from "comps/generators" ;
45import { list } from "comps/generators/list" ;
56import {
67 parseChildrenFromValueAndChildrenMap ,
@@ -16,16 +17,21 @@ import { genRandomKey } from "comps/utils/idGenerator";
1617import { LayoutActionComp } from "comps/comps/layout/layoutActionComp" ;
1718import { migrateOldData } from "comps/generators/simpleGenerators" ;
1819
20+ // BoolControl without property view (internal state only)
21+ const CollapsedControl = withPropertyViewFn ( BoolControl , ( ) => null ) ;
22+
1923const childrenMap = {
2024 label : StringControl ,
2125 hidden : BoolCodeControl ,
2226 action : LayoutActionComp ,
27+ collapsed : CollapsedControl , // tree editor collapsed state
2328 itemKey : valueComp < string > ( "" ) ,
2429 icon : IconControl ,
2530} ;
2631
2732type ChildrenType = ToInstanceType < typeof childrenMap > & {
2833 items : InstanceType < typeof LayoutMenuItemListComp > ;
34+ collapsed : InstanceType < typeof CollapsedControl > ;
2935} ;
3036
3137/**
@@ -73,6 +79,14 @@ export class LayoutMenuItemComp extends MultiBaseComp<ChildrenType> {
7379 getItemKey ( ) {
7480 return this . children . itemKey . getView ( ) ;
7581 }
82+
83+ getCollapsed ( ) : boolean {
84+ return this . children . collapsed . getView ( ) ;
85+ }
86+
87+ setCollapsed ( collapsed : boolean ) {
88+ this . children . collapsed . dispatchChangeValueAction ( collapsed ) ;
89+ }
7690}
7791
7892const LayoutMenuItemCompMigrate = migrateOldData ( LayoutMenuItemComp , ( oldData : any ) => {
0 commit comments