@@ -18,8 +18,10 @@ export type WebsiteTreeNode = {
1818interface TreeStoreState {
1919 selectedNode : WebsiteTreeNode | null ;
2020 treeData : WebsiteTreeNode [ ] ;
21+ expandedKeys : string [ ] ;
2122 setSelectedNode : ( selectedNode : WebsiteTreeNode | null ) => void ;
2223 setTreeData : ( treeData : WebsiteTreeNode [ ] ) => void ;
24+ setExpandedKeys : ( expandedKeys : string [ ] ) => void ;
2325 addTreeNode : ( treeNode : WebsiteTreeNode ) => void ;
2426 addTreeNodeChildren : ( parentKey : string , treeNode : WebsiteTreeNode ) => void ;
2527 moveTreeNode : (
@@ -63,6 +65,7 @@ export const useTreeStore = create<TreeStoreState>()(
6365 immer ( ( set ) => ( {
6466 treeData : defaultTreeData ,
6567 selectedNode : null ,
68+ expandedKeys : [ ] ,
6669 setSelectedNode : ( selectedNode : WebsiteTreeNode | null ) => {
6770 set ( {
6871 selectedNode,
@@ -73,6 +76,11 @@ export const useTreeStore = create<TreeStoreState>()(
7376 treeData,
7477 } ) ;
7578 } ,
79+ setExpandedKeys : ( expandedKeys : string [ ] ) => {
80+ set ( {
81+ expandedKeys,
82+ } ) ;
83+ } ,
7684 addTreeNode : ( treeNode : WebsiteTreeNode ) => {
7785 set ( ( state ) => {
7886 state . treeData . push ( treeNode ) ;
@@ -181,7 +189,10 @@ export const useTreeStore = create<TreeStoreState>()(
181189 } ) ) ,
182190 {
183191 name : 'webbox-tree' ,
184- partialize : ( state ) => ( { treeData : state . treeData } ) ,
192+ partialize : ( state ) => ( {
193+ treeData : state . treeData ,
194+ expandedKeys : state . expandedKeys ,
195+ } ) ,
185196 }
186197 )
187198) ;
0 commit comments