@@ -43,14 +43,16 @@ export class TreeView extends React.Component<ITreeViewProps, ITreeViewState> {
43
43
let result : string ;
44
44
if ( array ) {
45
45
array . some ( ( { key, children = [ ] } ) => {
46
+ const alreadyExistInNodesToExpand = this . nodesToExpand . some ( ( node ) => node === key ) ;
47
+
46
48
if ( key === target ) {
47
- this . nodesToExpand . push ( key ) ;
49
+ ! alreadyExistInNodesToExpand && this . nodesToExpand . push ( key ) ;
48
50
result = key ;
49
51
return true ;
50
52
}
51
53
let temp = this . pathTo ( children , target ) ;
52
54
if ( temp ) {
53
- this . nodesToExpand . push ( key ) ;
55
+ ! alreadyExistInNodesToExpand && this . nodesToExpand . push ( key ) ;
54
56
result = key + '.' + temp ;
55
57
return true ;
56
58
}
@@ -90,6 +92,12 @@ export class TreeView extends React.Component<ITreeViewProps, ITreeViewState> {
90
92
* @argument isExpanded The status of item (expanded / collapsed)
91
93
*/
92
94
private handleTreeExpandCollapse ( item : ITreeItem , isExpanded : boolean ) : void {
95
+ if ( isExpanded ) {
96
+ this . nodesToExpand . push ( item . key ) ;
97
+ } else {
98
+ this . nodesToExpand = this . nodesToExpand . filter ( ( node ) => node !== item . key ) ;
99
+ }
100
+
93
101
if ( typeof this . props . onExpandCollapse === "function" ) {
94
102
this . props . onExpandCollapse ( item , isExpanded ) ;
95
103
}
@@ -240,8 +248,8 @@ export class TreeView extends React.Component<ITreeViewProps, ITreeViewState> {
240
248
showCheckboxes,
241
249
treeItemActionsDisplayMode,
242
250
defaultExpanded,
243
- defaultExpandedChildren,
244
- defaultExpandedKeys
251
+ defaultExpandedChildren = this . props . defaultExpandedChildren ?? true ,
252
+ defaultExpandedKeys = this . props . defaultExpandedKeys ?? [ ] ,
245
253
} = this . props ;
246
254
247
255
return (
@@ -253,15 +261,15 @@ export class TreeView extends React.Component<ITreeViewProps, ITreeViewState> {
253
261
leftOffset = { 20 }
254
262
isFirstRender = { true }
255
263
defaultExpanded = { defaultExpanded }
256
- defaultExpandedChildren = { defaultExpandedChildren !== undefined ? defaultExpandedChildren : true }
264
+ defaultExpandedChildren = { defaultExpandedChildren }
257
265
selectionMode = { selectionMode }
258
266
activeItems = { this . state . activeItems }
259
267
parentCallbackExpandCollapse = { this . handleTreeExpandCollapse }
260
268
parentCallbackOnSelect = { this . handleOnSelect }
261
269
onRenderItem = { onRenderItem }
262
270
showCheckboxes = { showCheckboxes }
263
271
treeItemActionsDisplayMode = { treeItemActionsDisplayMode }
264
- nodesToExpand = { defaultExpandedKeys }
272
+ nodesToExpand = { [ ... this . nodesToExpand , ... defaultExpandedKeys ] }
265
273
/>
266
274
) )
267
275
}
0 commit comments