On select expand ancestory

Summary: Previously when selecting from the visualiser nothing would happen in the tree if one of the parents was collapsed

Reviewed By: lblasa

Differential Revision: D43318177

fbshipit-source-id: 7bf9296dec2ca82e3f983b4cf2676ea8741a9d0e
This commit is contained in:
Luke De Feo
2023-02-17 02:45:05 -08:00
committed by Facebook GitHub Bot
parent 1cd916e414
commit 8cae1f0de6
2 changed files with 11 additions and 2 deletions

View File

@@ -157,6 +157,7 @@ const MemoTreeItemContainer = React.memo(
const id = nextProps.treeNode.id;
return (
prevProps.treeNode.id === nextProps.treeNode.id &&
prevProps.treeNode.isExpanded === nextProps.treeNode.isExpanded &&
prevProps.isContextMenuOpen === nextProps.isContextMenuOpen &&
prevProps.frameworkEvents === nextProps.frameworkEvents &&
prevProps.highlightedNodes === nextProps.highlightedNodes &&

View File

@@ -226,7 +226,7 @@ export function plugin(client: PluginClient<Events>) {
return {
rootId,
uiState,
uiActions: uiActions(uiState),
uiActions: uiActions(uiState, nodes),
nodes,
frameworkEvents,
snapshot,
@@ -262,7 +262,7 @@ type UIActions = {
onCollapseNode: (node: Id) => void;
};
function uiActions(uiState: UIState): UIActions {
function uiActions(uiState: UIState, nodes: Atom<Map<Id, UINode>>): UIActions {
const onExpandNode = (node: Id) => {
uiState.expandedNodes.update((draft) => {
draft.add(node);
@@ -270,6 +270,14 @@ function uiActions(uiState: UIState): UIActions {
};
const onSelectNode = (node?: Id) => {
uiState.selectedNode.set(node);
let cur = node;
//expand entire ancestory in case it has been manually collapsed
uiState.expandedNodes.update((expandedNodesDraft) => {
while (cur != null) {
expandedNodesDraft.add(cur);
cur = nodes.get().get(cur)?.parent;
}
});
};
const onCollapseNode = (node: Id) => {