mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-18 08:32:10 -05:00
ed40a87cdc
* Rename manage group entry point * Migrate group management root page to React * Add cypress tests for the group management react page * Fix linting * Add checkbox labels for screen-readers + remove unused classes * Await on add/remove members calls * Display the export CSV link for a full group * Display error message when group is full * Sort locales * Handle the managers management page in React version * Fix missing type in GroupMemberRow * Split members and managers React pages * Build API paths on frontend side + add cypress tests for each page * Fix linting * Update unit tests * Review improvements * Type API errors GitOrigin-RevId: d124a9d24cbf33de8aacc5d69e9d46e7bcda93c5
29 lines
796 B
TypeScript
29 lines
796 B
TypeScript
import { useCallback, useState } from 'react'
|
|
import { User } from '../../../../../types/group-management/user'
|
|
|
|
export default function useUserSelection(initialUsers: User[]) {
|
|
const [users, setUsers] = useState<User[]>(initialUsers)
|
|
const [selectedUsers, setSelectedUsers] = useState<User[]>([])
|
|
|
|
const selectAllUsers = () => setSelectedUsers(users)
|
|
|
|
const unselectAllUsers = () => setSelectedUsers([])
|
|
|
|
const selectUser = useCallback((user: User) => {
|
|
setSelectedUsers(users => [...users, user])
|
|
}, [])
|
|
|
|
const unselectUser = useCallback((user: User) => {
|
|
setSelectedUsers(users => users.filter(u => u.email !== user.email))
|
|
}, [])
|
|
|
|
return {
|
|
users,
|
|
setUsers,
|
|
selectedUsers,
|
|
selectUser,
|
|
unselectUser,
|
|
selectAllUsers,
|
|
unselectAllUsers,
|
|
}
|
|
}
|