fix list widget preview

This commit is contained in:
Shawn Erquhart 2017-06-06 13:06:00 -04:00
parent d526c27669
commit 3a7c45f34e
3 changed files with 7 additions and 31 deletions

View File

@ -15,6 +15,7 @@ export default class PreviewPane extends React.Component {
getWidget = (field, value, props) => {
const { fieldsMetaData, getAsset } = props;
const widget = resolveWidget(field.get('widget'));
return !widget.preview ? null : React.createElement(widget.preview, {
field,
key: field.get('name'),
@ -43,7 +44,8 @@ export default class PreviewPane extends React.Component {
let nestedFields = field.get('fields');
if (nestedFields) {
field = field.set('fields', nestedFields.map(f => this.widgetFor(f.get('name'), nestedFields, value)));
const mapFields = v => nestedFields.map(f => this.widgetFor(f.get('name'), nestedFields, v));
field = field.set('fields', List.isList(value) ? value.map(v => mapFields(v)) : mapFields(value));
}
const labelledWidgets = ['string', 'text', 'number'];

View File

@ -1,36 +1,12 @@
import React, { PropTypes, Component } from 'react';
import { resolveWidget } from '../Widgets';
import previewStyle from './defaultPreviewStyle';
import ObjectPreview from './ObjectPreview';
export default class ListPreview extends Component {
widgetFor = (field, value) => {
const { getAsset } = this.props;
const widget = resolveWidget(field.get('widget'));
return (<div key={field.get('name')}>{React.createElement(widget.preview, {
key: field.get('name'),
value: value && value.get(field.get('name')),
field,
getAsset,
})}</div>);
};
render() {
const { field, value } = this.props;
const fields = field && field.get('fields');
if (fields) {
return value ? (<div style={previewStyle}>
{value.map((val, index) => <div key={index}>
{fields && fields.map(f => this.widgetFor(f, val))}
</div>)}
</div>) : null;
}
return <div style={previewStyle}>{value ? value.join(', ') : null}</div>;
}
}
const ListPreview = ObjectPreview;
ListPreview.propTypes = {
value: PropTypes.node,
field: PropTypes.node,
getAsset: PropTypes.func.isRequired,
};
export default ListPreview;

View File

@ -7,9 +7,7 @@ const ObjectPreview = ({ field }) => (
);
ObjectPreview.propTypes = {
value: PropTypes.node,
field: PropTypes.node,
getAsset: PropTypes.func.isRequired,
};
export default ObjectPreview;