Merge "fix: fix multi role select in transfer component"
This commit is contained in:
commit
b74b026ace
@ -24,6 +24,8 @@ const TableTransfer = ({
|
|||||||
rightColumns,
|
rightColumns,
|
||||||
pageSize,
|
pageSize,
|
||||||
loading,
|
loading,
|
||||||
|
onRowLeft,
|
||||||
|
onRowRight,
|
||||||
...restProps
|
...restProps
|
||||||
}) => (
|
}) => (
|
||||||
<Transfer {...restProps} showSelectAll={false}>
|
<Transfer {...restProps} showSelectAll={false}>
|
||||||
@ -36,6 +38,7 @@ const TableTransfer = ({
|
|||||||
disabled: listDisabled,
|
disabled: listDisabled,
|
||||||
}) => {
|
}) => {
|
||||||
const columns = direction === 'left' ? leftColumns : rightColumns;
|
const columns = direction === 'left' ? leftColumns : rightColumns;
|
||||||
|
const currentOnRow = direction === 'left' ? onRowLeft : onRowRight;
|
||||||
|
|
||||||
const rowSelection = {
|
const rowSelection = {
|
||||||
getCheckboxProps: (item) => ({
|
getCheckboxProps: (item) => ({
|
||||||
@ -59,6 +62,15 @@ const TableTransfer = ({
|
|||||||
pageSize,
|
pageSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onRowDefault = ({ key, disabled: itemDisabled }) => ({
|
||||||
|
onClick: () => {
|
||||||
|
if (itemDisabled || listDisabled) return;
|
||||||
|
onItemSelect(key, !listSelectedKeys.includes(key));
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const onRow = currentOnRow || onRowDefault;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Table
|
<Table
|
||||||
loading={loading}
|
loading={loading}
|
||||||
@ -68,12 +80,7 @@ const TableTransfer = ({
|
|||||||
pagination={pagination}
|
pagination={pagination}
|
||||||
size="small"
|
size="small"
|
||||||
style={{ pointerEvents: listDisabled ? 'none' : null }}
|
style={{ pointerEvents: listDisabled ? 'none' : null }}
|
||||||
onRow={({ key, disabled: itemDisabled }) => ({
|
onRow={onRow}
|
||||||
onClick: () => {
|
|
||||||
if (itemDisabled || listDisabled) return;
|
|
||||||
onItemSelect(key, !listSelectedKeys.includes(key));
|
|
||||||
},
|
|
||||||
})}
|
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
@ -94,6 +101,8 @@ export default class Index extends Component {
|
|||||||
value: PropTypes.array,
|
value: PropTypes.array,
|
||||||
pageSize: PropTypes.number,
|
pageSize: PropTypes.number,
|
||||||
loading: PropTypes.bool,
|
loading: PropTypes.bool,
|
||||||
|
onRowLeft: PropTypes.func,
|
||||||
|
onRowRight: PropTypes.func,
|
||||||
};
|
};
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
@ -154,6 +163,8 @@ export default class Index extends Component {
|
|||||||
titles,
|
titles,
|
||||||
pageSize,
|
pageSize,
|
||||||
loading,
|
loading,
|
||||||
|
onRowLeft,
|
||||||
|
onRowRight,
|
||||||
} = this.props;
|
} = this.props;
|
||||||
const { targetKeys } = this.state;
|
const { targetKeys } = this.state;
|
||||||
return (
|
return (
|
||||||
@ -170,6 +181,8 @@ export default class Index extends Component {
|
|||||||
leftColumns={leftTableColumns}
|
leftColumns={leftTableColumns}
|
||||||
rightColumns={rightTableColumns}
|
rightColumns={rightTableColumns}
|
||||||
loading={loading}
|
loading={loading}
|
||||||
|
onRowLeft={onRowLeft}
|
||||||
|
onRowRight={onRowRight}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
@ -23,6 +23,7 @@ import {
|
|||||||
nameDomainColumns,
|
nameDomainColumns,
|
||||||
transferFilterOption,
|
transferFilterOption,
|
||||||
} from 'resources/keystone/domain';
|
} from 'resources/keystone/domain';
|
||||||
|
import { roleFilterOption } from 'resources/keystone/role';
|
||||||
|
|
||||||
export class ManageUser extends ModalAction {
|
export class ManageUser extends ModalAction {
|
||||||
static id = 'management-user';
|
static id = 'management-user';
|
||||||
@ -136,6 +137,7 @@ export class ManageUser extends ModalAction {
|
|||||||
mode="multiple"
|
mode="multiple"
|
||||||
options={this.userRolesList(id)}
|
options={this.userRolesList(id)}
|
||||||
defaultValue={this.defaultRoles(id)}
|
defaultValue={this.defaultRoles(id)}
|
||||||
|
filterOption={roleFilterOption}
|
||||||
onChange={(value, option) => {
|
onChange={(value, option) => {
|
||||||
this.onSelectChange(value, option, id);
|
this.onSelectChange(value, option, id);
|
||||||
}}
|
}}
|
||||||
@ -204,6 +206,7 @@ export class ManageUser extends ModalAction {
|
|||||||
filterOption: transferFilterOption,
|
filterOption: transferFilterOption,
|
||||||
wrapperCol: this.wrapperCol,
|
wrapperCol: this.wrapperCol,
|
||||||
loading: this.userStore.list.isLoading,
|
loading: this.userStore.list.isLoading,
|
||||||
|
onRowRight: () => null,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import {
|
|||||||
nameDomainColumns,
|
nameDomainColumns,
|
||||||
transferFilterOption,
|
transferFilterOption,
|
||||||
} from 'resources/keystone/domain';
|
} from 'resources/keystone/domain';
|
||||||
|
import { roleFilterOption } from 'resources/keystone/role';
|
||||||
|
|
||||||
export class ManageUserGroup extends ModalAction {
|
export class ManageUserGroup extends ModalAction {
|
||||||
static id = 'manage-group-group';
|
static id = 'manage-group-group';
|
||||||
@ -124,6 +125,7 @@ export class ManageUserGroup extends ModalAction {
|
|||||||
mode="multiple"
|
mode="multiple"
|
||||||
options={this.groupRolesList(groupId)}
|
options={this.groupRolesList(groupId)}
|
||||||
defaultValue={this.defaultRoles(groupId)}
|
defaultValue={this.defaultRoles(groupId)}
|
||||||
|
filterOption={roleFilterOption}
|
||||||
onChange={(value, option) => {
|
onChange={(value, option) => {
|
||||||
this.onSubChange(value, option, groupId);
|
this.onSubChange(value, option, groupId);
|
||||||
}}
|
}}
|
||||||
@ -204,6 +206,7 @@ export class ManageUserGroup extends ModalAction {
|
|||||||
onChange: this.onChangeUserGroup,
|
onChange: this.onChangeUserGroup,
|
||||||
wrapperCol: this.wrapperCol,
|
wrapperCol: this.wrapperCol,
|
||||||
loading: this.userGroupStore.list.isLoading,
|
loading: this.userGroupStore.list.isLoading,
|
||||||
|
onRowRight: () => null,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import {
|
|||||||
nameDomainColumns,
|
nameDomainColumns,
|
||||||
transferFilterOption,
|
transferFilterOption,
|
||||||
} from 'resources/keystone/domain';
|
} from 'resources/keystone/domain';
|
||||||
|
import { roleFilterOption } from 'resources/keystone/role';
|
||||||
|
|
||||||
export class Create extends FormAction {
|
export class Create extends FormAction {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@ -167,6 +168,7 @@ export class Create extends FormAction {
|
|||||||
mode="multiple"
|
mode="multiple"
|
||||||
options={this.projectRolesList(projectId)}
|
options={this.projectRolesList(projectId)}
|
||||||
defaultValue={this.defaultRoles()}
|
defaultValue={this.defaultRoles()}
|
||||||
|
filterOption={roleFilterOption}
|
||||||
onChange={(value, option) => {
|
onChange={(value, option) => {
|
||||||
this.onSelectChange(value, option, projectId);
|
this.onSelectChange(value, option, projectId);
|
||||||
}}
|
}}
|
||||||
@ -330,6 +332,7 @@ export class Create extends FormAction {
|
|||||||
onChange: this.onChangeProject,
|
onChange: this.onChangeProject,
|
||||||
filterOption: transferFilterOption,
|
filterOption: transferFilterOption,
|
||||||
loading: this.projectStore.list.isLoading,
|
loading: this.projectStore.list.isLoading,
|
||||||
|
onRowRight: () => null,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'select_user_group',
|
name: 'select_user_group',
|
||||||
|
@ -19,3 +19,8 @@ export const editable = (item) => {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const roleFilterOption = (inputValue, options) => {
|
||||||
|
const { label = '' } = options;
|
||||||
|
return label.toLowerCase().includes((inputValue || '').toLowerCase());
|
||||||
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user