Skip to content

Commit 2134a5a

Browse files
committed
feat: add onExpand props.
1 parent bc701aa commit 2134a5a

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

core/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,13 @@ export interface JsonViewProps<T> extends React.DetailedHTMLProps<React.HTMLAttr
396396
enableClipboard?: boolean;
397397
/** Display for quotes in object-key @default " */
398398
quotes?: "'" | '"' | '';
399+
/** Callback function for when a treeNode is expanded or collapsed */
400+
onExpand?: (props: {
401+
expand: boolean;
402+
value: T;
403+
keyid: string;
404+
keyName?: string | number;
405+
}) => void;
399406
/** Redefine interface elements to re-render. */
400407
components?: {
401408
braces?: MetaProps['render'];

core/src/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ export interface JsonViewProps<T extends object>
2222
enableClipboard?: boolean;
2323
/** Display for quotes in object-key @default " */
2424
quotes?: "'" | '"' | '';
25+
/** Callback function for when a treeNode is expanded or collapsed */
26+
onExpand?: (props: { expand: boolean; value: T; keyid: string; keyName?: string | number; }) => void;
2527
/** Redefine interface elements to re-render. */
2628
components?: {
2729
braces?: MetaProps['render'];

core/src/node.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export function RooNode<T extends object>(props: RooNodeProps<T>) {
9393
indentWidth = 15,
9494
keyid = 'root',
9595
quotes = '"',
96+
onExpand,
9697
...reset
9798
} = props;
9899
const isArray = Array.isArray(value);
@@ -102,6 +103,7 @@ export function RooNode<T extends object>(props: RooNodeProps<T>) {
102103
const expand = expands[keyid] ?? true;
103104
const arrowStyle = { transform: `rotate(${expand ? '0' : '-90'}deg)`, transition: 'all 0.3s' };
104105
const handle = () => {
106+
onExpand && typeof onExpand === 'function' && onExpand({ expand: !expand, keyid, keyName, value: value as T })
105107
!expand ? store.expand(keyid) : store.collapse(keyid);
106108
};
107109
const subNodeProps: RooNodeProps<T> = {
@@ -110,6 +112,7 @@ export function RooNode<T extends object>(props: RooNodeProps<T>) {
110112
displayDataTypes,
111113
displayObjectSize,
112114
enableClipboard,
115+
onExpand,
113116
quotes,
114117
style: { paddingLeft: indentWidth },
115118
};

0 commit comments

Comments
 (0)