From cf45d847454d392a1d8ad303cbf676638ee66277 Mon Sep 17 00:00:00 2001 From: jnptk <110389276+jnptk@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:46:08 +0100 Subject: [PATCH 1/7] Update users controlpanel to work with new response format --- .../manage/Controlpanels/Users/UsersControlpanel.jsx | 4 ++-- packages/volto/src/reducers/users/users.js | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx index 02ae4d6b03e..cdfaf319df4 100644 --- a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +++ b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx @@ -140,7 +140,7 @@ const UsersControlpanel = () => { if (!many_users) { listGroupsAction(); await listUsersAction(); - setEntries(users); + setEntries(users.items); } await getUserSchemaAction(); await getUserAction(userId); @@ -457,7 +457,7 @@ const UsersControlpanel = () => { }, []); // eslint-disable-line react-hooks/exhaustive-deps useEffect(() => { - setEntries(users); + setEntries(users.items); }, [users]); useEffect(() => { diff --git a/packages/volto/src/reducers/users/users.js b/packages/volto/src/reducers/users/users.js index 1eb3d296ed6..b7932bb00f5 100644 --- a/packages/volto/src/reducers/users/users.js +++ b/packages/volto/src/reducers/users/users.js @@ -18,7 +18,10 @@ import { const initialState = { user: {}, - users: [], + users: { + items: [], + items_total: 0, + }, create: { error: null, loaded: false, @@ -117,7 +120,9 @@ export default function users(state = initialState, action = {}) { case `${LIST_USERS}_SUCCESS`: return { ...state, - users: action.result, + users: action.result.items + ? action.result + : { items: action.result, items_total: action.result.length }, [getRequestKey(action.type)]: { loading: false, loaded: true, From 086bf9ff3fddd2fd6322e4a4358d112fda1c51a6 Mon Sep 17 00:00:00 2001 From: jnptk <110389276+jnptk@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:51:35 +0100 Subject: [PATCH 2/7] Add changelog entry --- packages/volto/news/+userscp.feature | 1 + 1 file changed, 1 insertion(+) create mode 100644 packages/volto/news/+userscp.feature diff --git a/packages/volto/news/+userscp.feature b/packages/volto/news/+userscp.feature new file mode 100644 index 00000000000..37f8f9e1afd --- /dev/null +++ b/packages/volto/news/+userscp.feature @@ -0,0 +1 @@ +Update the users controlpanel to be compatible with the new response format of the users endpoint introduced in https://github.com/plone/plone.restapi/pull/1971. @jnptk From fb5229d4a48ead9043a9a6cef8f74cdc066a97ce Mon Sep 17 00:00:00 2001 From: jnptk <110389276+jnptk@users.noreply.github.com> Date: Fri, 13 Feb 2026 12:49:47 +0100 Subject: [PATCH 3/7] Update tests --- .../Controlpanels/Users/UsersControlpanel.test.jsx | 5 ++++- packages/volto/src/reducers/users/users.test.js | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx index 6accfb76115..1e5a88767b6 100644 --- a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx +++ b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx @@ -20,7 +20,10 @@ describe('UsersControlpanel', () => { }, roles: { roles: [] }, users: { - users: [], + users: { + items: [], + items_total: 0, + }, create: { loading: false }, user: { roles: ['Manager'], diff --git a/packages/volto/src/reducers/users/users.test.js b/packages/volto/src/reducers/users/users.test.js index bc90c75b9a5..026bc4bf29f 100644 --- a/packages/volto/src/reducers/users/users.test.js +++ b/packages/volto/src/reducers/users/users.test.js @@ -14,7 +14,10 @@ describe('Users reducer', () => { it('should return the initial state', () => { expect(users()).toEqual({ user: {}, - users: [], + users: { + items: [], + items_total: 0, + }, create: { error: null, loaded: false, @@ -216,7 +219,9 @@ describe('Users reducer', () => { result: 'result', }), ).toMatchObject({ - users: 'result', + users: { + items: 'result', + }, list: { error: null, loaded: true, From 7f2bedf25c0ce2acd689b33fb5cd87810e9d8b20 Mon Sep 17 00:00:00 2001 From: jnptk <110389276+jnptk@users.noreply.github.com> Date: Fri, 13 Feb 2026 15:21:07 +0100 Subject: [PATCH 4/7] Fix user deletion & css overflow --- .../components/manage/Controlpanels/Users/UsersControlpanel.jsx | 2 +- packages/volto/theme/themes/pastanaga/extras/main.less | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx index cdfaf319df4..bc1ddcc9b08 100644 --- a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +++ b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx @@ -175,7 +175,7 @@ const UsersControlpanel = () => { const getUserFromProps = useCallback( (value) => { - return find(users, ['@id', value]); + return find(users.items, ['@id', value]); }, [users], ); diff --git a/packages/volto/theme/themes/pastanaga/extras/main.less b/packages/volto/theme/themes/pastanaga/extras/main.less index fa73f2a7d86..453c736978f 100644 --- a/packages/volto/theme/themes/pastanaga/extras/main.less +++ b/packages/volto/theme/themes/pastanaga/extras/main.less @@ -394,8 +394,6 @@ button { } .users-control-panel .table { - overflow-x: scroll; - &::-webkit-scrollbar { width: 3px; height: 3px; /* scrollbar height */ From c7ec932c943716c255c4d39b102617b002d723eb Mon Sep 17 00:00:00 2001 From: jnptk <110389276+jnptk@users.noreply.github.com> Date: Fri, 13 Feb 2026 15:34:25 +0100 Subject: [PATCH 5/7] Fix cypress test --- .../manage/Controlpanels/Users/UserGroupMembershipListing.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/volto/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx b/packages/volto/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx index 489456026d3..e50ce62af51 100644 --- a/packages/volto/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx +++ b/packages/volto/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx @@ -41,7 +41,7 @@ const ListingTemplate = ({ const isUserManager = isManager(user); // y axis - let items = useSelector((state) => state.users.users); + let items = useSelector((state) => state.users.users.items); let show_users = !many_users || (many_users && query_user.length > 1) || From 5f48e71b5d2469caaa355a22b3fdcd401db99d8b Mon Sep 17 00:00:00 2001 From: jnptk <110389276+jnptk@users.noreply.github.com> Date: Fri, 20 Feb 2026 10:25:53 +0100 Subject: [PATCH 6/7] Convert new response format to old one, this way components don't need to be updated --- .../Controlpanels/Users/UserGroupMembershipListing.jsx | 2 +- .../manage/Controlpanels/Users/UsersControlpanel.jsx | 6 +++--- .../Controlpanels/Users/UsersControlpanel.test.jsx | 5 +---- packages/volto/src/reducers/users/users.js | 9 ++------- packages/volto/src/reducers/users/users.test.js | 9 ++------- 5 files changed, 9 insertions(+), 22 deletions(-) diff --git a/packages/volto/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx b/packages/volto/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx index e50ce62af51..489456026d3 100644 --- a/packages/volto/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx +++ b/packages/volto/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx @@ -41,7 +41,7 @@ const ListingTemplate = ({ const isUserManager = isManager(user); // y axis - let items = useSelector((state) => state.users.users.items); + let items = useSelector((state) => state.users.users); let show_users = !many_users || (many_users && query_user.length > 1) || diff --git a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx index bc1ddcc9b08..02ae4d6b03e 100644 --- a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +++ b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx @@ -140,7 +140,7 @@ const UsersControlpanel = () => { if (!many_users) { listGroupsAction(); await listUsersAction(); - setEntries(users.items); + setEntries(users); } await getUserSchemaAction(); await getUserAction(userId); @@ -175,7 +175,7 @@ const UsersControlpanel = () => { const getUserFromProps = useCallback( (value) => { - return find(users.items, ['@id', value]); + return find(users, ['@id', value]); }, [users], ); @@ -457,7 +457,7 @@ const UsersControlpanel = () => { }, []); // eslint-disable-line react-hooks/exhaustive-deps useEffect(() => { - setEntries(users.items); + setEntries(users); }, [users]); useEffect(() => { diff --git a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx index 1e5a88767b6..6accfb76115 100644 --- a/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx +++ b/packages/volto/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx @@ -20,10 +20,7 @@ describe('UsersControlpanel', () => { }, roles: { roles: [] }, users: { - users: { - items: [], - items_total: 0, - }, + users: [], create: { loading: false }, user: { roles: ['Manager'], diff --git a/packages/volto/src/reducers/users/users.js b/packages/volto/src/reducers/users/users.js index b7932bb00f5..90b02b839a7 100644 --- a/packages/volto/src/reducers/users/users.js +++ b/packages/volto/src/reducers/users/users.js @@ -18,10 +18,7 @@ import { const initialState = { user: {}, - users: { - items: [], - items_total: 0, - }, + users: [], create: { error: null, loaded: false, @@ -120,9 +117,7 @@ export default function users(state = initialState, action = {}) { case `${LIST_USERS}_SUCCESS`: return { ...state, - users: action.result.items - ? action.result - : { items: action.result, items_total: action.result.length }, + users: action.result.items ? action.result.items : action.result, [getRequestKey(action.type)]: { loading: false, loaded: true, diff --git a/packages/volto/src/reducers/users/users.test.js b/packages/volto/src/reducers/users/users.test.js index 026bc4bf29f..bc90c75b9a5 100644 --- a/packages/volto/src/reducers/users/users.test.js +++ b/packages/volto/src/reducers/users/users.test.js @@ -14,10 +14,7 @@ describe('Users reducer', () => { it('should return the initial state', () => { expect(users()).toEqual({ user: {}, - users: { - items: [], - items_total: 0, - }, + users: [], create: { error: null, loaded: false, @@ -219,9 +216,7 @@ describe('Users reducer', () => { result: 'result', }), ).toMatchObject({ - users: { - items: 'result', - }, + users: 'result', list: { error: null, loaded: true, From 489b01bc04ca4ddba5e7e0f3564450255e834f35 Mon Sep 17 00:00:00 2001 From: David Glick Date: Sun, 22 Feb 2026 21:52:48 -0800 Subject: [PATCH 7/7] Rename changelog --- packages/volto/news/{+userscp.feature => +userscp.bugfix} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/volto/news/{+userscp.feature => +userscp.bugfix} (100%) diff --git a/packages/volto/news/+userscp.feature b/packages/volto/news/+userscp.bugfix similarity index 100% rename from packages/volto/news/+userscp.feature rename to packages/volto/news/+userscp.bugfix