fix(list-widget): fix single field usage in list widget (#1395)
This commit is contained in:
committed by
Shawn Erquhart
parent
f58db5fb08
commit
06d3650fac
@ -22,9 +22,10 @@ const PreviewPaneFrame = styled(Frame)`
|
||||
`;
|
||||
|
||||
export default class PreviewPane extends React.Component {
|
||||
getWidget = (field, value, props) => {
|
||||
getWidget = (field, value, props, idx = null) => {
|
||||
const { fieldsMetaData, getAsset, entry } = props;
|
||||
const widget = resolveWidget(field.get('widget'));
|
||||
const key = idx ? field.get('name') + '_' + idx : field.get('name');
|
||||
|
||||
/**
|
||||
* Use an HOC to provide conditional updates for all previews.
|
||||
@ -32,7 +33,7 @@ export default class PreviewPane extends React.Component {
|
||||
return !widget.preview ? null : (
|
||||
<PreviewHOC
|
||||
previewComponent={widget.preview}
|
||||
key={field.get('name')}
|
||||
key={key}
|
||||
field={field}
|
||||
getAsset={getAsset}
|
||||
value={value && Map.isMap(value) ? value.get(field.get('name')) : value}
|
||||
@ -68,11 +69,16 @@ export default class PreviewPane extends React.Component {
|
||||
let field = fields && fields.find(f => f.get('name') === name);
|
||||
let value = values && values.get(field.get('name'));
|
||||
let nestedFields = field.get('fields');
|
||||
let singleField = field.get('field');
|
||||
|
||||
if (nestedFields) {
|
||||
field = field.set('fields', this.getNestedWidgets(nestedFields, value));
|
||||
}
|
||||
|
||||
if (singleField) {
|
||||
field = field.set('field', this.getSingleNested(singleField, value));
|
||||
}
|
||||
|
||||
const labelledWidgets = ['string', 'text', 'number'];
|
||||
if (Object.keys(this.inferedFields).indexOf(name) !== -1) {
|
||||
value = this.inferedFields[name].defaultPreview(value);
|
||||
@ -103,6 +109,13 @@ export default class PreviewPane extends React.Component {
|
||||
return this.widgetsForNestedFields(fields, values);
|
||||
};
|
||||
|
||||
getSingleNested = (field, values) => {
|
||||
if (List.isList(values)) {
|
||||
return values.map((value, idx) => this.getWidget(field, value, this.props, idx));
|
||||
}
|
||||
return this.getWidget(field, values, this.props);
|
||||
};
|
||||
|
||||
/**
|
||||
* Use widgetFor as a mapping function for recursive widget retrieval
|
||||
*/
|
||||
|
Reference in New Issue
Block a user