import React, { useEffect, useRef, useState } from 'react'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import Avatar from '@/_ui/Avatar'; import Skeleton from 'react-loading-skeleton'; import cx from 'classnames'; import { Pagination } from '@/_components'; import SolidIcon from '@/_ui/Icon/SolidIcons'; import { Tooltip } from 'react-tooltip'; import UsersActionMenu from './UsersActionMenu'; import { humanizeifDefaultGroupName } from '@/_helpers/utils'; const UsersTable = ({ isLoading, users, archivingUser, unarchivingUser, generateInvitationURL, invitationLinkCopyHandler, unarchiveOrgUser, archiveOrgUser, meta, pageChanged, darkMode, translator, toggleEditUserDrawer, }) => { return (
{users && users[0]?.status ? ( ) : ( )} {isLoading ? ( {Array.from(Array(4)).map((_item, index) => ( {users && users[0]?.status && ( )} ))} ) : ( {Array.isArray(users) && users.length > 0 && users.map((user) => ( {user.status && ( )} ))} )}
{translator('header.organization.menus.manageUsers.name', 'Name')} {translator('header.organization.menus.manageUsers.email', 'Email')} Groups {translator('header.organization.menus.manageUsers.status', 'Status')}
{user.name} {user.email} {user.status} {user.status === 'invited' && 'invitation_token' in user ? (

Copy link

) : ( '' )}
toggleEditUserDrawer(user)} />
{meta.total_count > 10 && ( )}
); }; export default UsersTable; const GroupChipTD = ({ groups = [] }) => { const [showAllGroups, setShowAllGroups] = useState(false); const groupsListRef = useRef(); useEffect(() => { const onCloseHandler = (e) => { if (groupsListRef.current && !groupsListRef.current.contains(e.target)) { setShowAllGroups(false); } }; window.addEventListener('click', onCloseHandler); return () => { window.removeEventListener('click', onCloseHandler); }; }, [showAllGroups]); function moveValuesToLast(arr, valuesToMove) { const validValuesToMove = valuesToMove.filter((value) => arr.includes(value)); validValuesToMove.forEach((value) => { const index = arr.indexOf(value); if (index !== -1) { const removedItem = arr.splice(index, 1); arr.push(removedItem[0]); } }); return arr; } const orderedArray = moveValuesToLast(groups, ['all_users', 'admin']); const toggleAllGroupsList = (e) => { setShowAllGroups(!showAllGroups); }; const renderGroupChip = (group, index) => ( {humanizeifDefaultGroupName(group)} ); return ( { orderedArray.length > 2 && toggleAllGroupsList(e); }} className={cx('text-muted groups-name-cell', { 'groups-hover': orderedArray.length > 2 })} >
{orderedArray.slice(0, 2).map((group, index) => { if (orderedArray.length <= 2) { return renderGroupChip(group, index); } if (orderedArray.length > 2) { if (index === 1) { return ( <> {' '} +{orderedArray.length - 1} more {showAllGroups && (
{groups.map((group, index) => renderGroupChip(group, index))}
)} ); } return renderGroupChip(group, index); } })}
); };