Fix bug where lookup parent state is not updated on toggleSelected

This commit is contained in:
Marliana Lara
2019-02-25 11:05:42 -05:00
parent ff339e0eba
commit ffefba9bf9

View File

@@ -32,7 +32,7 @@ class Lookup extends React.Component {
this.state = { this.state = {
isModalOpen: false, isModalOpen: false,
lookupSelectedItems: props.value || [], lookupSelectedItems: [...props.value] || [],
results: [], results: [],
count: 0, count: 0,
page: 1, page: 1,
@@ -101,17 +101,27 @@ class Lookup extends React.Component {
}; };
toggleSelected (row) { toggleSelected (row) {
const { lookupSelectedItems } = this.state; const { name, onLookupSave } = this.props;
const selectedIndex = lookupSelectedItems const { lookupSelectedItems: updatedSelectedItems, isModalOpen } = this.state;
const selectedIndex = updatedSelectedItems
.findIndex(selectedRow => selectedRow.id === row.id); .findIndex(selectedRow => selectedRow.id === row.id);
if (selectedIndex > -1) { if (selectedIndex > -1) {
lookupSelectedItems.splice(selectedIndex, 1); updatedSelectedItems.splice(selectedIndex, 1);
this.setState({ lookupSelectedItems }); this.setState({ lookupSelectedItems: updatedSelectedItems });
} else { } else {
this.setState(prevState => ({ this.setState(prevState => ({
lookupSelectedItems: [...prevState.lookupSelectedItems, row] lookupSelectedItems: [...prevState.lookupSelectedItems, row]
})); }));
} }
// Updates the selected items from parent state
// This handles the case where the user removes chips from the lookup input
// while the modal is closed
if (!isModalOpen) {
onLookupSave(updatedSelectedItems, name);
}
} }
handleModalToggle () { handleModalToggle () {