fix list widget preview
This commit is contained in:
parent
d526c27669
commit
3a7c45f34e
@ -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'];
|
||||
|
@ -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;
|
||||
|
@ -7,9 +7,7 @@ const ObjectPreview = ({ field }) => (
|
||||
);
|
||||
|
||||
ObjectPreview.propTypes = {
|
||||
value: PropTypes.node,
|
||||
field: PropTypes.node,
|
||||
getAsset: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
export default ObjectPreview;
|
||||
|
Loading…
x
Reference in New Issue
Block a user