Skip to content

Commit a68e1cb

Browse files
committed
feat: add onCopied props.
1 parent 1f6d940 commit a68e1cb

File tree

4 files changed

+9
-3
lines changed

4 files changed

+9
-3
lines changed

core/src/copied.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { useState } from 'react';
33
export interface CopiedProps<T = object> extends React.SVGProps<SVGSVGElement> {
44
show?: boolean;
55
text?: T;
6+
onCopied?: (text: string, obj: T) => void;
67
render?: (props: Omit<CopiedProps<T>, 'render'>) => JSX.Element;
78
}
89

core/src/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ export interface JsonViewProps<T extends object>
2626
collapsed?: boolean | number;
2727
/** Callback function for when a treeNode is expanded or collapsed */
2828
onExpand?: (props: { expand: boolean; value: T; keyid: string; keyName?: string | number; }) => void;
29+
/** Fires event when you copy */
30+
onCopied?: CopiedProps<T>['onCopied'];
2931
/** Redefine interface elements to re-render. */
3032
components?: {
3133
braces?: MetaProps['render'];

core/src/node.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export function RooNode<T extends object>(props: RooNodeProps<T>) {
9696
level = 1,
9797
keyid = 'root',
9898
quotes = '"',
99+
onCopied,
99100
onExpand,
100101
...reset
101102
} = props;
@@ -115,6 +116,7 @@ export function RooNode<T extends object>(props: RooNodeProps<T>) {
115116
displayDataTypes,
116117
displayObjectSize,
117118
enableClipboard,
119+
onCopied,
118120
onExpand,
119121
collapsed,
120122
quotes,
@@ -126,6 +128,7 @@ export function RooNode<T extends object>(props: RooNodeProps<T>) {
126128
displayObjectSize,
127129
enableClipboard,
128130
indentWidth,
131+
renderBraces: components.braces,
129132
renderValue: components.value,
130133
} as ValueViewProps<T>;
131134

@@ -135,7 +138,7 @@ export function RooNode<T extends object>(props: RooNodeProps<T>) {
135138
<TriangleArrow style={arrowStyle} className="w-rjv-arrow" />
136139
);
137140
const [showTools, setShowTools] = useState(false);
138-
const tools = enableClipboard ? <Copied show={showTools} text={value as T} render={components.copied} /> : undefined;
141+
const tools = enableClipboard ? <Copied show={showTools} text={value as T} onCopied={onCopied} render={components.copied} /> : undefined;
139142
const eventProps: React.HTMLAttributes<HTMLDivElement> = {};
140143
if (enableClipboard) {
141144
eventProps.onMouseEnter = () => setShowTools(true);
@@ -201,7 +204,7 @@ export function RooNode<T extends object>(props: RooNodeProps<T>) {
201204
return;
202205
}
203206
return (
204-
<ValueView key={idx} {...valueViewProps} renderBraces={components.braces} renderKey={renderKey} keyName={key} value={item} />
207+
<ValueView key={idx} {...valueViewProps} renderKey={renderKey} keyName={key} value={item} />
205208
);
206209
})}
207210
</Line>

www/src/Example.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export function Example() {
7474
displayDataTypes={displayDataTypes}
7575
quotes={quotes}
7676
enableClipboard={clipboard}
77-
style={theme}
77+
style={{ ...theme, padding: 6, borderRadius: 6 }}
7878
collapsed={collapsed}
7979
/>
8080
<Options>

0 commit comments

Comments
 (0)