From 4019c69ea8e0dbf8323ceb4d87520677101f59ad Mon Sep 17 00:00:00 2001 From: M Fahru Date: Wed, 30 Aug 2023 08:20:57 -0700 Subject: [PATCH] Merge pull request #14566 from overleaf/mf-fix-select-all-checkbox-managed-users [web] Fix click all email checkbox behaviour on managed users GitOrigin-RevId: 4c4e7171d4aed3d99bc08be4b029eb3badb0fac9 --- .../components/group-members-list.tsx | 30 +++++++--- .../components/group-members.tsx | 30 +--------- .../managed-users/managed-user-row.tsx | 35 +---------- .../managed-users/managed-users-list.tsx | 22 ++----- .../managed-users-select-all-checkbox.tsx | 44 ++++++++++++++ .../managed-users-select-user-checkbox.tsx | 59 +++++++++++++++++++ .../context/group-members-context.tsx | 4 ++ .../hooks/use-user-selection.ts | 9 +++ .../managed-group-members.spec.tsx | 2 + .../managed-users/managed-users-list.spec.tsx | 13 +--- 10 files changed, 151 insertions(+), 97 deletions(-) create mode 100644 services/web/frontend/js/features/group-management/components/managed-users/managed-users-select-all-checkbox.tsx create mode 100644 services/web/frontend/js/features/group-management/components/managed-users/managed-users-select-user-checkbox.tsx diff --git a/services/web/frontend/js/features/group-management/components/group-members-list.tsx b/services/web/frontend/js/features/group-management/components/group-members-list.tsx index 8da85c3822..0e8c8d95aa 100644 --- a/services/web/frontend/js/features/group-management/components/group-members-list.tsx +++ b/services/web/frontend/js/features/group-management/components/group-members-list.tsx @@ -1,19 +1,31 @@ +import { useCallback } from 'react' import { Col, Row } from 'react-bootstrap' import { useTranslation } from 'react-i18next' import Tooltip from '../../../shared/components/tooltip' import { useGroupMembersContext } from '../context/group-members-context' import GroupMemberRow from './group-member-row' -type GroupMembersListProps = { - handleSelectAllClick: (e: any) => void -} - -export default function GroupMembersList({ - handleSelectAllClick, -}: GroupMembersListProps) { +export default function GroupMembersList() { const { t } = useTranslation() - const { selectedUsers, users, selectUser, unselectUser } = - useGroupMembersContext() + const { + selectedUsers, + users, + selectUser, + unselectUser, + selectAllUsers, + unselectAllUsers, + } = useGroupMembersContext() + + const handleSelectAllClick = useCallback( + (e: React.ChangeEvent) => { + if (e.target.checked) { + selectAllUsers() + } else { + unselectAllUsers() + } + }, + [selectAllUsers, unselectAllUsers] + ) return (