Prevent InfluxDB Admin reset state of MultiSelectDropdown on props refresh

pull/10616/head
Jared Scheib 2018-03-23 18:10:49 -07:00
parent 0a1ddf7a8d
commit b58621174e
3 changed files with 10 additions and 1 deletions

View File

@ -77,6 +77,7 @@ const RoleRow = ({
customClass={classnames(`dropdown-${ROLES_TABLE.colPermissions}`, { customClass={classnames(`dropdown-${ROLES_TABLE.colPermissions}`, {
'admin-table--multi-select-empty': !permissions.length, 'admin-table--multi-select-empty': !permissions.length,
})} })}
resetStateOnReceiveProps={false}
/> />
) : null} ) : null}
</td> </td>
@ -92,6 +93,7 @@ const RoleRow = ({
customClass={classnames(`dropdown-${ROLES_TABLE.colUsers}`, { customClass={classnames(`dropdown-${ROLES_TABLE.colUsers}`, {
'admin-table--multi-select-empty': !users.length, 'admin-table--multi-select-empty': !users.length,
})} })}
resetStateOnReceiveProps={false}
/> />
) : null} ) : null}
</td> </td>

View File

@ -96,6 +96,7 @@ const UserRow = ({
customClass={classnames(`dropdown-${USERS_TABLE.colRoles}`, { customClass={classnames(`dropdown-${USERS_TABLE.colRoles}`, {
'admin-table--multi-select-empty': !roles.length, 'admin-table--multi-select-empty': !roles.length,
})} })}
resetStateOnReceiveProps={false}
/> />
</td> </td>
) : null} ) : null}
@ -113,6 +114,7 @@ const UserRow = ({
customClass={classnames(`dropdown-${USERS_TABLE.colPermissions}`, { customClass={classnames(`dropdown-${USERS_TABLE.colPermissions}`, {
'admin-table--multi-select-empty': !permissions.length, 'admin-table--multi-select-empty': !permissions.length,
})} })}
resetStateOnReceiveProps={false}
/> />
) : null} ) : null}
</td> </td>

View File

@ -40,7 +40,10 @@ class MultiSelectDropdown extends Component {
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
if (!_.isEqual(this.props.selectedItems, nextProps.selectedItems)) { if (
!this.props.resetStateOnReceiveProps ||
!_.isEqual(this.props.selectedItems, nextProps.selectedItems)
) {
return return
} }
@ -161,6 +164,7 @@ MultiSelectDropdown.propTypes = {
customClass: string, customClass: string,
iconName: string, iconName: string,
isApplyShown: bool, isApplyShown: bool,
resetStateOnReceiveProps: bool,
} }
MultiSelectDropdown.defaultProps = { MultiSelectDropdown.defaultProps = {
@ -169,6 +173,7 @@ MultiSelectDropdown.defaultProps = {
customClass: 'dropdown-160', customClass: 'dropdown-160',
selectedItems: [], selectedItems: [],
isApplyShown: true, isApplyShown: true,
resetStateOnReceiveProps: true,
} }
export default OnClickOutside(MultiSelectDropdown) export default OnClickOutside(MultiSelectDropdown)