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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy