@@ -18,8 +18,10 @@ export type WebsiteTreeNode = {
18
18
interface TreeStoreState {
19
19
selectedNode : WebsiteTreeNode | null ;
20
20
treeData : WebsiteTreeNode [ ] ;
21
+ expandedKeys : string [ ] ;
21
22
setSelectedNode : ( selectedNode : WebsiteTreeNode | null ) => void ;
22
23
setTreeData : ( treeData : WebsiteTreeNode [ ] ) => void ;
24
+ setExpandedKeys : ( expandedKeys : string [ ] ) => void ;
23
25
addTreeNode : ( treeNode : WebsiteTreeNode ) => void ;
24
26
addTreeNodeChildren : ( parentKey : string , treeNode : WebsiteTreeNode ) => void ;
25
27
moveTreeNode : (
@@ -63,6 +65,7 @@ export const useTreeStore = create<TreeStoreState>()(
63
65
immer ( ( set ) => ( {
64
66
treeData : defaultTreeData ,
65
67
selectedNode : null ,
68
+ expandedKeys : [ ] ,
66
69
setSelectedNode : ( selectedNode : WebsiteTreeNode | null ) => {
67
70
set ( {
68
71
selectedNode,
@@ -73,6 +76,11 @@ export const useTreeStore = create<TreeStoreState>()(
73
76
treeData,
74
77
} ) ;
75
78
} ,
79
+ setExpandedKeys : ( expandedKeys : string [ ] ) => {
80
+ set ( {
81
+ expandedKeys,
82
+ } ) ;
83
+ } ,
76
84
addTreeNode : ( treeNode : WebsiteTreeNode ) => {
77
85
set ( ( state ) => {
78
86
state . treeData . push ( treeNode ) ;
@@ -181,7 +189,10 @@ export const useTreeStore = create<TreeStoreState>()(
181
189
} ) ) ,
182
190
{
183
191
name : 'webbox-tree' ,
184
- partialize : ( state ) => ( { treeData : state . treeData } ) ,
192
+ partialize : ( state ) => ( {
193
+ treeData : state . treeData ,
194
+ expandedKeys : state . expandedKeys ,
195
+ } ) ,
185
196
}
186
197
)
187
198
) ;
0 commit comments