1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-30 00:14:19 +00:00
pds-2021-g2-nest/nest_frontend/components/interactive/BoxUserList.js

47 lines
1.6 KiB
JavaScript
Raw Normal View History

2021-05-18 00:04:06 +00:00
import React, { useContext } from "react"
2021-05-12 02:10:36 +00:00
import Loading from "../base/Loading"
import BoxFullScrollable from "../base/BoxFullScrollable"
import SummaryUser from "./SummaryUser"
2021-05-18 00:04:06 +00:00
import ContextLanguage from "../../contexts/ContextLanguage"
2021-05-12 02:10:36 +00:00
2021-05-23 03:03:41 +00:00
/**
* A {@link BoxFullScrollable} rendering an array of users as {@link SummaryUser}s.
*
* @param users - Array of users to render.
* @param shareWithUser - Async function to share a repository with an user, to be passed to {@link SummaryUser}.
* @param unshareWithUser - Async function to unshare a repository with an user, to be passed to {@link SummaryUser}.
2021-05-23 03:03:41 +00:00
* @param destroyUser - Async function to destroy an user, to be passed to {@link SummaryUser}.
* @param running - Whether another request is currently running.
* @param props - Additional props to pass to the box.
* @returns {JSX.Element}
* @constructor
*/
export default function BoxUserList({ users, shareWithUser, unshareWithUser, destroyUser, running, ...props }) {
2021-05-18 00:48:34 +00:00
const { strings } = useContext(ContextLanguage)
2021-05-18 00:04:06 +00:00
2021-05-12 02:10:36 +00:00
let contents
if(users === null) {
contents = <Loading/>
}
else {
contents = users.map(user => (
<SummaryUser
key={user["email"]}
shareWithUser={shareWithUser}
unshareWithUser={unshareWithUser}
destroyUser={destroyUser}
running={running}
user={user}
/>
)
)
2021-05-12 02:10:36 +00:00
}
return (
2021-05-18 00:04:06 +00:00
<BoxFullScrollable header={strings.userList} {...props}>
2021-05-12 02:10:36 +00:00
{contents}
</BoxFullScrollable>
)
}