Skip to content

Commit 6cf8dc0

Browse files
Merge pull request #1874 from kamalqureshi/filter_group_members_role
Filter group members by role
2 parents eef90fe + 111ef6a commit 6cf8dc0

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

client/packages/lowcoder/src/i18n/locales/en.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3034,6 +3034,7 @@ export const en = {
30343034
"joinTimeColumn": "Joining Time",
30353035
"actionColumn": "Operation",
30363036
"roleColumn": "Role",
3037+
"filterByRole": "Filter by role",
30373038
"exitGroup": "Exit Group",
30383039
"moveOutGroup": "Remove from Group",
30393040
"inviteUser": "Invite Members",

client/packages/lowcoder/src/pages/setting/permission/groupUsersPermission.tsx

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { GroupRoleInfo, GroupUser, OrgGroup, TacoRoles } from "constants/orgConstants";
1+
import { GroupRoleInfo, GroupUser, OrgGroup, TacoRoles, RoleIdType } from "constants/orgConstants";
22
import { User } from "constants/userConstants";
3-
import { AddIcon, ArrowIcon, CustomSelect, PackUpIcon, Search, SuperUserIcon } from "lowcoder-design";
3+
import { AddIcon, ArrowIcon, CustomSelect, Dropdown, PackUpIcon, Search, SuperUserIcon } from "lowcoder-design";
44
import { trans } from "i18n";
55
import ProfileImage from "pages/common/profileImage";
66
import React, { useCallback, useEffect, useMemo, useState } from "react";
@@ -84,6 +84,7 @@ const GroupUsersPermission: React.FC<GroupPermissionProp> = (props) => {
8484
setElements
8585
} = props;
8686
const [searchValue, setSearchValue] = useState("")
87+
const [roleFilter, setRoleFilter] = useState<RoleIdType | "">("")
8788
const dispatch = useDispatch();
8889

8990
const adminCount = groupUsers.filter((user) => isGroupAdmin(user.role)).length;
@@ -99,9 +100,20 @@ const GroupUsersPermission: React.FC<GroupPermissionProp> = (props) => {
99100
});
100101
}, [groupUsers]);
101102

103+
const roleFilterOptions = useMemo(() => [
104+
...TacoRoles.map(role => ({
105+
label: GroupRoleInfo[role].name,
106+
value: role as RoleIdType | ""
107+
})),
108+
{
109+
label: "All",
110+
value: "" as RoleIdType | ""
111+
}
112+
], []);
113+
102114
const debouncedFetchPotentialMembers = useCallback(
103-
debounce((searchVal: string) => {
104-
fetchGroupUsrPagination({groupId: group.groupId, search: searchVal})
115+
debounce((searchVal: string, roleFilter: string) => {
116+
fetchGroupUsrPagination({groupId: group.groupId, search: searchVal, role: roleFilter})
105117
.then(result => {
106118
if (result.success) {
107119
setElements({
@@ -115,13 +127,13 @@ const GroupUsersPermission: React.FC<GroupPermissionProp> = (props) => {
115127
);
116128

117129
useEffect(() => {
118-
if (searchValue.length > 2 || searchValue === "") {
119-
debouncedFetchPotentialMembers(searchValue);
130+
if (searchValue.length > 2 || searchValue === "" || roleFilter) {
131+
debouncedFetchPotentialMembers(searchValue, roleFilter);
120132
}
121133
return () => {
122134
debouncedFetchPotentialMembers.cancel();
123135
};
124-
}, [searchValue, debouncedFetchPotentialMembers]);
136+
}, [searchValue, roleFilter, debouncedFetchPotentialMembers]);
125137

126138
return (
127139
<>
@@ -137,6 +149,17 @@ const GroupUsersPermission: React.FC<GroupPermissionProp> = (props) => {
137149
</HeaderBack>
138150
{isGroupAdmin(currentUserGroupRole) && !group.syncGroup && (
139151
<OptionsHeader>
152+
<Dropdown
153+
options={roleFilterOptions}
154+
value={roleFilter || ""}
155+
onChange={(value) => {
156+
setRoleFilter(value);
157+
}}
158+
style={{
159+
minWidth: "100px"
160+
}}
161+
placeholder={trans("memberSettings.filterByRole")}
162+
/>
140163
<Search
141164
placeholder={trans("memberSettings.searchMember")}
142165
value={searchValue}

client/packages/lowcoder/src/util/pagination/type.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ export interface fetchGroupUserRequestType {
8787
groupId: string;
8888
pageNum?: number;
8989
pageSize?: number;
90-
search?: string
90+
search?: string;
91+
role?: string;
9192
}
9293

9394
export interface fetchQueryLibraryPaginationRequestType {

0 commit comments

Comments
 (0)