mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2025-07-23 14:39:58 +03:00
put in a line renderer that gives an opportunity to customize key/value key /nestedvalue behavior
This commit is contained in:
parent
03d1448dc3
commit
974d94f8b5
47
packages/react-json-tree/src/JSONNestedNode.js
vendored
47
packages/react-json-tree/src/JSONNestedNode.js
vendored
|
@ -90,6 +90,7 @@ export default class JSONNestedNode extends React.Component {
|
||||||
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
||||||
).isRequired,
|
).isRequired,
|
||||||
labelRenderer: PropTypes.func.isRequired,
|
labelRenderer: PropTypes.func.isRequired,
|
||||||
|
lineRenderer: PropTypes.func.isRequired,
|
||||||
shouldExpandNode: PropTypes.func,
|
shouldExpandNode: PropTypes.func,
|
||||||
level: PropTypes.number.isRequired,
|
level: PropTypes.number.isRequired,
|
||||||
sortObjectKeys: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),
|
sortObjectKeys: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),
|
||||||
|
@ -140,6 +141,7 @@ export default class JSONNestedNode extends React.Component {
|
||||||
collectionLimit,
|
collectionLimit,
|
||||||
keyPath,
|
keyPath,
|
||||||
labelRenderer,
|
labelRenderer,
|
||||||
|
lineRenderer,
|
||||||
expandable
|
expandable
|
||||||
} = this.props;
|
} = this.props;
|
||||||
const { expanded } = this.state;
|
const { expanded } = this.state;
|
||||||
|
@ -161,23 +163,16 @@ export default class JSONNestedNode extends React.Component {
|
||||||
);
|
);
|
||||||
const stylingArgs = [keyPath, nodeType, expanded, expandable];
|
const stylingArgs = [keyPath, nodeType, expanded, expandable];
|
||||||
|
|
||||||
return hideRoot ? (
|
const labelItem = <>
|
||||||
<li {...styling('rootNode', ...stylingArgs)}>
|
{expandable && (
|
||||||
<ul {...styling('rootNodeChildren', ...stylingArgs)}>
|
<JSONArrow
|
||||||
{renderedChildren}
|
styling={styling}
|
||||||
</ul>
|
nodeType={nodeType}
|
||||||
</li>
|
expanded={expanded}
|
||||||
) : (
|
onClick={this.handleClick}
|
||||||
<li {...styling('nestedNode', ...stylingArgs)}>
|
/>
|
||||||
{expandable && (
|
)}
|
||||||
<JSONArrow
|
<label
|
||||||
styling={styling}
|
|
||||||
nodeType={nodeType}
|
|
||||||
expanded={expanded}
|
|
||||||
onClick={this.handleClick}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
<label
|
|
||||||
{...styling(['label', 'nestedNodeLabel'], ...stylingArgs)}
|
{...styling(['label', 'nestedNodeLabel'], ...stylingArgs)}
|
||||||
onClick={this.handleClick}
|
onClick={this.handleClick}
|
||||||
>
|
>
|
||||||
|
@ -189,11 +184,25 @@ export default class JSONNestedNode extends React.Component {
|
||||||
>
|
>
|
||||||
{renderedItemString}
|
{renderedItemString}
|
||||||
</span>
|
</span>
|
||||||
<ul {...styling('nestedNodeChildren', ...stylingArgs)}>
|
</>
|
||||||
|
|
||||||
|
const valueItem =
|
||||||
|
<ul {...styling('nestedNodeChildren', ...stylingArgs)}>
|
||||||
|
{renderedChildren}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
return hideRoot ? (
|
||||||
|
<li {...styling('rootNode', ...stylingArgs)}>
|
||||||
|
<ul {...styling('rootNodeChildren', ...stylingArgs)}>
|
||||||
{renderedChildren}
|
{renderedChildren}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
);
|
) :
|
||||||
|
<li {...styling('nestedNode', ...stylingArgs)}>
|
||||||
|
{lineRenderer(labelItem, valueItem, ...stylingArgs)}
|
||||||
|
</li>
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
handleClick = () => {
|
handleClick = () => {
|
||||||
|
|
3
packages/react-json-tree/src/JSONNode.js
vendored
3
packages/react-json-tree/src/JSONNode.js
vendored
|
@ -10,6 +10,7 @@ const JSONNode = ({
|
||||||
getItemString,
|
getItemString,
|
||||||
keyPath,
|
keyPath,
|
||||||
labelRenderer,
|
labelRenderer,
|
||||||
|
lineRenderer,
|
||||||
styling,
|
styling,
|
||||||
value,
|
value,
|
||||||
valueRenderer,
|
valueRenderer,
|
||||||
|
@ -23,6 +24,7 @@ const JSONNode = ({
|
||||||
key: keyPath[0],
|
key: keyPath[0],
|
||||||
keyPath,
|
keyPath,
|
||||||
labelRenderer,
|
labelRenderer,
|
||||||
|
lineRenderer,
|
||||||
nodeType,
|
nodeType,
|
||||||
styling,
|
styling,
|
||||||
value,
|
value,
|
||||||
|
@ -100,6 +102,7 @@ JSONNode.propTypes = {
|
||||||
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
||||||
).isRequired,
|
).isRequired,
|
||||||
labelRenderer: PropTypes.func.isRequired,
|
labelRenderer: PropTypes.func.isRequired,
|
||||||
|
lineRenderer: PropTypes.func.isRequired,
|
||||||
styling: PropTypes.func.isRequired,
|
styling: PropTypes.func.isRequired,
|
||||||
value: PropTypes.any,
|
value: PropTypes.any,
|
||||||
valueRenderer: PropTypes.func.isRequired,
|
valueRenderer: PropTypes.func.isRequired,
|
||||||
|
|
20
packages/react-json-tree/src/JSONValueNode.js
vendored
20
packages/react-json-tree/src/JSONValueNode.js
vendored
|
@ -9,25 +9,29 @@ const JSONValueNode = ({
|
||||||
nodeType,
|
nodeType,
|
||||||
styling,
|
styling,
|
||||||
labelRenderer,
|
labelRenderer,
|
||||||
|
lineRenderer,
|
||||||
keyPath,
|
keyPath,
|
||||||
valueRenderer,
|
valueRenderer,
|
||||||
value,
|
value,
|
||||||
valueGetter
|
valueGetter
|
||||||
}) => (
|
}) => {
|
||||||
<li {...styling('value', nodeType, keyPath)}>
|
const labelItem = (<label {...styling(['label', 'valueLabel'], nodeType, keyPath)}>
|
||||||
<label {...styling(['label', 'valueLabel'], nodeType, keyPath)}>
|
{labelRenderer(keyPath, nodeType, false, false)}
|
||||||
{labelRenderer(keyPath, nodeType, false, false)}
|
</label>)
|
||||||
</label>
|
const valueItem = (<span {...styling('valueText', nodeType, keyPath)}>
|
||||||
<span {...styling('valueText', nodeType, keyPath)}>
|
|
||||||
{valueRenderer(valueGetter(value), value, ...keyPath)}
|
{valueRenderer(valueGetter(value), value, ...keyPath)}
|
||||||
</span>
|
</span>)
|
||||||
|
return <li {...styling('value', nodeType, keyPath)}>
|
||||||
|
{lineRenderer(labelItem, valueItem, keyPath,nodeType, false, false)}
|
||||||
</li>
|
</li>
|
||||||
);
|
};
|
||||||
|
|
||||||
|
|
||||||
JSONValueNode.propTypes = {
|
JSONValueNode.propTypes = {
|
||||||
nodeType: PropTypes.string.isRequired,
|
nodeType: PropTypes.string.isRequired,
|
||||||
styling: PropTypes.func.isRequired,
|
styling: PropTypes.func.isRequired,
|
||||||
labelRenderer: PropTypes.func.isRequired,
|
labelRenderer: PropTypes.func.isRequired,
|
||||||
|
lineRenderer: PropTypes.func.isRequired,
|
||||||
keyPath: PropTypes.arrayOf(
|
keyPath: PropTypes.arrayOf(
|
||||||
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
||||||
).isRequired,
|
).isRequired,
|
||||||
|
|
2
packages/react-json-tree/src/index.js
vendored
2
packages/react-json-tree/src/index.js
vendored
|
@ -17,6 +17,7 @@ const defaultItemString = (type, data, itemType, itemString) => (
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
const defaultLabelRenderer = ([label]) => <span>{label}:</span>;
|
const defaultLabelRenderer = ([label]) => <span>{label}:</span>;
|
||||||
|
const defaultLineRenderer = (labelItem, valueItem, [other]) => <>{labelItem}{valueItem}</>;
|
||||||
const noCustomNode = () => false;
|
const noCustomNode = () => false;
|
||||||
|
|
||||||
function checkLegacyTheming(theme, props) {
|
function checkLegacyTheming(theme, props) {
|
||||||
|
@ -98,6 +99,7 @@ export default class JSONTree extends React.Component {
|
||||||
keyPath: ['root'],
|
keyPath: ['root'],
|
||||||
getItemString: defaultItemString,
|
getItemString: defaultItemString,
|
||||||
labelRenderer: defaultLabelRenderer,
|
labelRenderer: defaultLabelRenderer,
|
||||||
|
lineRenderer: defaultLineRenderer,
|
||||||
valueRenderer: identity,
|
valueRenderer: identity,
|
||||||
postprocessValue: identity,
|
postprocessValue: identity,
|
||||||
isCustomNode: noCustomNode,
|
isCustomNode: noCustomNode,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user