From b58621174ef2eb89e8b9f3bdd7d5c51b76f126a1 Mon Sep 17 00:00:00 2001 From: Jared Scheib Date: Fri, 23 Mar 2018 18:10:49 -0700 Subject: [PATCH] Prevent InfluxDB Admin reset state of MultiSelectDropdown on props refresh --- ui/src/admin/components/RoleRow.js | 2 ++ ui/src/admin/components/UserRow.js | 2 ++ ui/src/shared/components/MultiSelectDropdown.js | 7 ++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ui/src/admin/components/RoleRow.js b/ui/src/admin/components/RoleRow.js index 94afb37db8..c5abf73ea6 100644 --- a/ui/src/admin/components/RoleRow.js +++ b/ui/src/admin/components/RoleRow.js @@ -77,6 +77,7 @@ const RoleRow = ({ customClass={classnames(`dropdown-${ROLES_TABLE.colPermissions}`, { 'admin-table--multi-select-empty': !permissions.length, })} + resetStateOnReceiveProps={false} /> ) : null} @@ -92,6 +93,7 @@ const RoleRow = ({ customClass={classnames(`dropdown-${ROLES_TABLE.colUsers}`, { 'admin-table--multi-select-empty': !users.length, })} + resetStateOnReceiveProps={false} /> ) : null} diff --git a/ui/src/admin/components/UserRow.js b/ui/src/admin/components/UserRow.js index d35b69280e..88cf2254dc 100644 --- a/ui/src/admin/components/UserRow.js +++ b/ui/src/admin/components/UserRow.js @@ -96,6 +96,7 @@ const UserRow = ({ customClass={classnames(`dropdown-${USERS_TABLE.colRoles}`, { 'admin-table--multi-select-empty': !roles.length, })} + resetStateOnReceiveProps={false} /> ) : null} @@ -113,6 +114,7 @@ const UserRow = ({ customClass={classnames(`dropdown-${USERS_TABLE.colPermissions}`, { 'admin-table--multi-select-empty': !permissions.length, })} + resetStateOnReceiveProps={false} /> ) : null} diff --git a/ui/src/shared/components/MultiSelectDropdown.js b/ui/src/shared/components/MultiSelectDropdown.js index 1b9108ae4c..77b954329b 100644 --- a/ui/src/shared/components/MultiSelectDropdown.js +++ b/ui/src/shared/components/MultiSelectDropdown.js @@ -40,7 +40,10 @@ class MultiSelectDropdown extends Component { } componentWillReceiveProps(nextProps) { - if (!_.isEqual(this.props.selectedItems, nextProps.selectedItems)) { + if ( + !this.props.resetStateOnReceiveProps || + !_.isEqual(this.props.selectedItems, nextProps.selectedItems) + ) { return } @@ -161,6 +164,7 @@ MultiSelectDropdown.propTypes = { customClass: string, iconName: string, isApplyShown: bool, + resetStateOnReceiveProps: bool, } MultiSelectDropdown.defaultProps = { @@ -169,6 +173,7 @@ MultiSelectDropdown.defaultProps = { customClass: 'dropdown-160', selectedItems: [], isApplyShown: true, + resetStateOnReceiveProps: true, } export default OnClickOutside(MultiSelectDropdown)