Skip to content

Commit 0218cfb

Browse files
committed
Fixing TreeView nodes to expand and selection issues
1 parent 1c940e7 commit 0218cfb

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

src/controls/treeView/TreeItem.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,8 @@ export default class TreeItem extends React.Component<ITreeItemProps, ITreeItemS
160160
let active = nextProps.activeItems.filter(item => item.key === treeItem.key);
161161

162162
let _isExpanded:boolean=this.state.expanded;
163-
if(!_isExpanded && nodesToExpand?.indexOf(this.props.treeItem.key) != -1) {
164-
_isExpanded = true;
165-
}
166-
if(_isExpanded && nodesToExpand?.indexOf(this.props.treeItem.key) == -1){
163+
164+
if(!_isExpanded && nodesToExpand.indexOf(this.props.treeItem.key) == -1){
167165
_isExpanded=false;
168166
}
169167

src/controls/treeView/TreeView.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,16 @@ export class TreeView extends React.Component<ITreeViewProps, ITreeViewState> {
4343
let result: string;
4444
if (array) {
4545
array.some(({ key, children = [] }) => {
46+
const alreadyExistInNodesToExpand = this.nodesToExpand.some((node) => node === key);
47+
4648
if (key === target) {
47-
this.nodesToExpand.push(key);
49+
!alreadyExistInNodesToExpand && this.nodesToExpand.push(key);
4850
result = key;
4951
return true;
5052
}
5153
let temp = this.pathTo(children, target);
5254
if (temp) {
53-
this.nodesToExpand.push(key);
55+
!alreadyExistInNodesToExpand && this.nodesToExpand.push(key);
5456
result = key + '.' + temp;
5557
return true;
5658
}
@@ -90,6 +92,12 @@ export class TreeView extends React.Component<ITreeViewProps, ITreeViewState> {
9092
* @argument isExpanded The status of item (expanded / collapsed)
9193
*/
9294
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+
93101
if (typeof this.props.onExpandCollapse === "function") {
94102
this.props.onExpandCollapse(item, isExpanded);
95103
}
@@ -240,8 +248,8 @@ export class TreeView extends React.Component<ITreeViewProps, ITreeViewState> {
240248
showCheckboxes,
241249
treeItemActionsDisplayMode,
242250
defaultExpanded,
243-
defaultExpandedChildren,
244-
defaultExpandedKeys
251+
defaultExpandedChildren = this.props.defaultExpandedChildren ?? true,
252+
defaultExpandedKeys = this.props.defaultExpandedKeys ?? [],
245253
} = this.props;
246254

247255
return (
@@ -253,15 +261,15 @@ export class TreeView extends React.Component<ITreeViewProps, ITreeViewState> {
253261
leftOffset={20}
254262
isFirstRender={true}
255263
defaultExpanded={defaultExpanded}
256-
defaultExpandedChildren={defaultExpandedChildren !== undefined ? defaultExpandedChildren : true}
264+
defaultExpandedChildren={defaultExpandedChildren}
257265
selectionMode={selectionMode}
258266
activeItems={this.state.activeItems}
259267
parentCallbackExpandCollapse={this.handleTreeExpandCollapse}
260268
parentCallbackOnSelect={this.handleOnSelect}
261269
onRenderItem={onRenderItem}
262270
showCheckboxes={showCheckboxes}
263271
treeItemActionsDisplayMode={treeItemActionsDisplayMode}
264-
nodesToExpand={defaultExpandedKeys}
272+
nodesToExpand={[...this.nodesToExpand, ...defaultExpandedKeys]}
265273
/>
266274
))
267275
}

0 commit comments

Comments
 (0)