Skip to content

Commit ad0d7b0

Browse files
committed
✨(tree-view) load children on keyboard navigation and simplify toggle
replace arrow click with node.toggle and trigger load on open via useEffect Signed-off-by: Cyril <[email protected]>
1 parent b93531e commit ad0d7b0

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

src/components/tree-view/TreeViewItem.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,26 @@ export const TreeViewItem = <T,>({
5555
node.open();
5656
}, [isLeaf, hasLoadedChildren, node, context?.treeData]);
5757

58+
useEffect(() => {
59+
if (isLeaf || hasLoadedChildren || node.data.value.hasLoadedChildren) {
60+
return;
61+
}
62+
63+
if (node.isOpen) {
64+
setIsLoading(true);
65+
context?.treeData
66+
.handleLoadChildren(node.data.value.id)
67+
.then(() => setIsLoading(false));
68+
}
69+
}, [
70+
node.isOpen,
71+
isLeaf,
72+
hasLoadedChildren,
73+
node.data.value.hasLoadedChildren,
74+
node.data.value.id,
75+
context?.treeData,
76+
]);
77+
5878
const handleOver = useCallback(
5979
(isOver: boolean) => {
6080
if (isOver && !node.isOpen && !node.isDragging) {
@@ -131,7 +151,7 @@ export const TreeViewItem = <T,>({
131151
<span
132152
onClick={(e) => {
133153
e.stopPropagation();
134-
void handleClick();
154+
node.toggle();
135155
}}
136156
className="c__tree-view--node__arrow material-icons"
137157
>

0 commit comments

Comments
 (0)