diff --git a/packages/react-json-tree/src/JSONNestedNode.tsx b/packages/react-json-tree/src/JSONNestedNode.tsx index 0e5b5be5..ab451d47 100644 --- a/packages/react-json-tree/src/JSONNestedNode.tsx +++ b/packages/react-json-tree/src/JSONNestedNode.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import JSONArrow from './JSONArrow'; import getCollectionEntries from './getCollectionEntries'; import JSONNode from './JSONNode'; @@ -110,6 +110,7 @@ export default function JSONNestedNode(props: Props) { nodeType, nodeTypeIndicator, shouldExpandNodeInitially, + shouldExpandNode, styling, } = props; @@ -117,7 +118,16 @@ export default function JSONNestedNode(props: Props) { // calculate individual node expansion if necessary isCircular ? false : shouldExpandNodeInitially(keyPath, data, level) ); + + useEffect(() => { + if(shouldExpandNode === undefined){ + return + } + + setExpanded(shouldExpandNode); + }, [shouldExpandNode]) + const handleClick = useCallback(() => { if (expandable) setExpanded(!expanded); }, [expandable, expanded]); diff --git a/packages/react-json-tree/src/index.tsx b/packages/react-json-tree/src/index.tsx index 26fab0fc..48d1ceaa 100644 --- a/packages/react-json-tree/src/index.tsx +++ b/packages/react-json-tree/src/index.tsx @@ -41,6 +41,7 @@ export function JSONTree({ labelRenderer = defaultLabelRenderer, valueRenderer = identity, shouldExpandNodeInitially = expandRootNode, + shouldExpandNode, hideRoot = false, getItemString = defaultItemString, postprocessValue = identity, @@ -64,6 +65,7 @@ export function JSONTree({ labelRenderer={labelRenderer} valueRenderer={valueRenderer} shouldExpandNodeInitially={shouldExpandNodeInitially} + shouldExpandNode={shouldExpandNode} hideRoot={hideRoot} getItemString={getItemString} postprocessValue={postprocessValue} diff --git a/packages/react-json-tree/src/types.ts b/packages/react-json-tree/src/types.ts index 6a67f376..2bb3981a 100644 --- a/packages/react-json-tree/src/types.ts +++ b/packages/react-json-tree/src/types.ts @@ -47,6 +47,7 @@ export interface CommonExternalProps { labelRenderer: LabelRenderer; valueRenderer: ValueRenderer; shouldExpandNodeInitially: ShouldExpandNodeInitially; + shouldExpandNode: boolean | undefined; hideRoot: boolean; getItemString: GetItemString; postprocessValue: PostprocessValue;