From 4afe2f23778a5ce512cc3fe00dab925716b7b25c Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Mon, 16 Jun 2025 16:36:03 -0700 Subject: [PATCH] improvements: use stored preferred page size for project roles table and add reset helper --- .../ProjectRoleList/ProjectRoleList.tsx | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/frontend/src/pages/project/AccessControlPage/components/ProjectRoleListTab/components/ProjectRoleList/ProjectRoleList.tsx b/frontend/src/pages/project/AccessControlPage/components/ProjectRoleListTab/components/ProjectRoleList/ProjectRoleList.tsx index 7420b616c..d1c925a33 100644 --- a/frontend/src/pages/project/AccessControlPage/components/ProjectRoleListTab/components/ProjectRoleList/ProjectRoleList.tsx +++ b/frontend/src/pages/project/AccessControlPage/components/ProjectRoleListTab/components/ProjectRoleList/ProjectRoleList.tsx @@ -39,7 +39,12 @@ import { Tr } from "@app/components/v2"; import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context"; -import { usePagination, usePopUp } from "@app/hooks"; +import { + getUserTablePreference, + PreferenceKey, + setUserTablePreference +} from "@app/helpers/userTablePreferences"; +import { usePagination, usePopUp, useResetPageHelper } from "@app/hooks"; import { useDeleteProjectRole, useGetProjectRoles } from "@app/hooks/api"; import { OrderByDirection } from "@app/hooks/api/generic/types"; import { ProjectMembershipRole, TProjectRole } from "@app/hooks/api/roles/types"; @@ -93,7 +98,14 @@ export const ProjectRoleList = () => { setPerPage, setPage, offset - } = usePagination(RolesOrderBy.Name); + } = usePagination(RolesOrderBy.Name, { + initPerPage: getUserTablePreference("projectRolesTable", PreferenceKey.PerPage, 20) + }); + + const handlePerPageChange = (newPerPage: number) => { + setPerPage(newPerPage); + setUserTablePreference("projectRolesTable", PreferenceKey.PerPage, newPerPage); + }; const filteredRoles = useMemo( () => @@ -117,10 +129,16 @@ export const ProjectRoleList = () => { default: return roleOne.name.toLowerCase().localeCompare(roleTwo.name.toLowerCase()); } - }), + }) ?? [], [roles, orderDirection, search, orderBy] ); + useResetPageHelper({ + totalCount: filteredRoles.length, + offset, + setPage + }); + const handleSort = (column: RolesOrderBy) => { if (column === orderBy) { toggleOrderDirection(); @@ -143,7 +161,7 @@ export const ProjectRoleList = () => { {(isAllowed) => (