tools/preview/ui/TreeView.js (29 lines of code) (raw):
import React from 'react';
export default class TreeView extends React.Component {
renderLevel(fields, depth) {
return (fields || []).map(field => {
return (
<div key={field.id} style={{ paddingLeft: `${20 * depth}px` }}>
{field.id}
<button type="button" onClick={e => this.props.onEditFieldClick(field)}>Edit</button>
{this.renderLevel(field.fields, depth + 1)}
</div>
);
});
}
render() {
const {
config,
registeredComponents,
} = this.props;
if (!config) {
return null;
}
return (
<div>
<h2>Tree view</h2>
{this.renderLevel(config.fields, 0)}
</div>
);
}
}