Skip to content
This repository was archived by the owner on May 14, 2020. It is now read-only.

Commit f98e568

Browse files
committed
Provide full JSON key path in labelRenderer (in reverse order)
1 parent e5ab132 commit f98e568

7 files changed

+23
-19
lines changed

src/JSONArrayNode.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ function getChildNodes({
2525
styles,
2626
theme,
2727
valueRenderer,
28-
allExpanded
28+
allExpanded,
29+
keyPath
2930
}) {
3031
const childNodes = [];
3132
data.forEach((value, key) => {
@@ -36,7 +37,7 @@ function getChildNodes({
3637

3738
const node = grabNode({
3839
getItemString,
39-
key,
40+
keyPath: [key, ...keyPath],
4041
labelRenderer,
4142
previousData: previousDataValue,
4243
renderItemString,

src/JSONIterableNode.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ function getChildNodes({
3333
styles,
3434
theme,
3535
valueRenderer,
36-
allExpanded
36+
allExpanded,
37+
keyPath
3738
}) {
3839
const childNodes = [];
3940
for (const entry of data) {
@@ -53,7 +54,7 @@ function getChildNodes({
5354

5455
const node = grabNode({
5556
getItemString,
56-
key,
57+
keyPath: [key, ...keyPath],
5758
labelRenderer,
5859
previousData: previousDataValue,
5960
styles,

src/JSONNestedNode.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export default class JSONNestedNode extends React.Component {
9898
color: this.props.theme.base0D,
9999
...this.props.styles.getLabelStyle(this.props.nodeType, this.state.expanded)
100100
}} onClick={::this.handleClick}>
101-
{this.props.labelRenderer(this.props.keyName)}:
101+
{this.props.labelRenderer(...this.props.keyPath)}:
102102
</label>
103103
<span style={{
104104
...spanStyle,

src/JSONObjectNode.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ export function getChildNodes({
2626
styles,
2727
theme,
2828
valueRenderer,
29-
allExpanded
29+
allExpanded,
30+
keyPath
3031
}) {
3132
const childNodes = [];
3233
for (let key in data) {
@@ -38,7 +39,7 @@ export function getChildNodes({
3839

3940
const node = grabNode({
4041
getItemString,
41-
key,
42+
keyPath: [key, ...keyPath],
4243
labelRenderer,
4344
previousData: previousDataValue,
4445
renderItemString,

src/JSONValueNode.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default class JSONValueNode extends React.Component {
4242
color: this.props.theme.base0D,
4343
...this.props.styles.getLabelStyle(this.props.nodeType, true)
4444
}}>
45-
{this.props.labelRenderer(this.props.keyName)}:
45+
{this.props.labelRenderer(...this.props.keyPath)}:
4646
</label>
4747
<span style={{
4848
color: this.props.valueColor,

src/grab-node.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default function({
99
getItemString,
1010
initialExpanded = false,
1111
allExpanded,
12-
key,
12+
keyPath,
1313
labelRenderer,
1414
previousData,
1515
styles,
@@ -22,8 +22,8 @@ export default function({
2222
const simpleNodeProps = {
2323
getItemString,
2424
initialExpanded,
25-
key,
26-
keyName: key,
25+
key: keyPath[0],
26+
keyPath,
2727
labelRenderer,
2828
nodeType,
2929
previousData,
@@ -38,7 +38,7 @@ export default function({
3838
data: value,
3939
initialExpanded,
4040
allExpanded,
41-
keyName: key
41+
keyPath
4242
};
4343

4444
switch (nodeType) {

src/index.js

+8-7
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export default class JSONTree extends React.Component {
3939
expandRoot: true,
4040
expandAll: false,
4141
hideRoot: false,
42-
keyName: 'root',
42+
keyPath: ['root'],
4343
theme: solarized,
4444
getArrowStyle: getEmptyStyle,
4545
getListStyle: getEmptyStyle,
@@ -71,19 +71,19 @@ export default class JSONTree extends React.Component {
7171
getItemString,
7272
labelRenderer,
7373
valueRenderer,
74-
keyName: key,
74+
keyPath,
7575
previousData,
7676
theme
7777
} = this.props;
7878

79-
var nodeToRender;
79+
let nodeToRender;
8080

81-
if (!this.props.hideRoot) {
81+
if (!this.props.hideRoot) {
8282
nodeToRender = grabNode({
8383
getItemString,
8484
initialExpanded,
8585
allExpanded,
86-
key,
86+
keyPath,
8787
previousData,
8888
styles: getStyles,
8989
theme,
@@ -97,10 +97,11 @@ export default class JSONTree extends React.Component {
9797
getItemString,
9898
labelRenderer,
9999
previousData,
100-
styles:getStyles,
100+
styles: getStyles,
101101
theme,
102102
valueRenderer,
103-
allExpanded
103+
allExpanded,
104+
keyPath: []
104105
});
105106
}
106107

0 commit comments

Comments
 (0)