fix(list-widget): fix single field usage in list widget (#1395)

This commit is contained in:
Brian Macdonald
2018-08-24 17:39:35 -04:00
committed by Shawn Erquhart
parent f58db5fb08
commit 06d3650fac
5 changed files with 60 additions and 34 deletions

View File

@ -159,16 +159,17 @@ export default class ListControl extends React.Component {
return (fieldName, newValue, newMetadata) => {
const { value, metadata, onChange, field } = this.props;
const collectionName = field.get('name');
const newObjectValue = this.getObjectValue(index).set(fieldName, newValue);
const parsedValue =
this.getValueType() === valueTypes.SINGLE ? newObjectValue.first() : newObjectValue;
const newObjectValue =
this.getValueType() === valueTypes.MULTIPLE
? this.getObjectValue(index).set(fieldName, newValue)
: newValue;
const parsedMetadata = {
[collectionName]: Object.assign(
metadata ? metadata.toJS() : {},
newMetadata ? newMetadata[collectionName] : {},
),
};
onChange(value.set(index, parsedValue), parsedMetadata);
onChange(value.set(index, newObjectValue), parsedMetadata);
};
}
@ -177,9 +178,10 @@ export default class ListControl extends React.Component {
const { itemsCollapsed } = this.state;
const { value, metadata, onChange, field } = this.props;
const collectionName = field.get('name');
const parsedMetadata = metadata && {
[collectionName]: metadata.removeIn(value.get(index).valueSeq()),
};
const isSingleField = this.valueType === valueTypes.SINGLE;
const metadataRemovePath = isSingleField ? value.get(index) : value.get(index).valueSeq();
const parsedMetadata = metadata && { [collectionName]: metadata.removeIn(metadataRemovePath) };
this.setState({ itemsCollapsed: itemsCollapsed.delete(index) });