import Card from "@material-ui/core/Card"; import { makeStyles } from "@material-ui/core/styles"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableHead from "@saleor/components/TableHead"; import TableRow from "@material-ui/core/TableRow"; import Typography from "@material-ui/core/Typography"; import classNames from "classnames"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; import DeleteIcon from "@material-ui/icons/Delete"; import ResponsiveTable from "@saleor/components/ResponsiveTable"; import Skeleton from "@saleor/components/Skeleton"; import { getUserInitials, getUserName, stopPropagation, renderCollection } from "@saleor/misc"; import { ListActions, SortPage } from "@saleor/types"; import TableCellHeader from "@saleor/components/TableCellHeader"; import Checkbox from "@saleor/components/Checkbox"; import { Button, IconButton } from "@material-ui/core"; import CardTitle from "@saleor/components/CardTitle"; import { PermissionGroupDetails_permissionGroup_users } from "@saleor/permissionGroups/types/PermissionGroupDetails"; import { MembersListUrlSortField } from "@saleor/permissionGroups/urls"; import { getArrowDirection } from "@saleor/utils/sort"; import { sortMembers } from "@saleor/permissionGroups/sort"; const useStyles = makeStyles( theme => ({ [theme.breakpoints.up("lg")]: { colActions: { width: 120 }, colEmail: { width: 300 }, colName: { width: "auto" } }, avatar: { alignItems: "center", borderRadius: "100%", display: "grid", float: "left", height: 47, justifyContent: "center", marginRight: theme.spacing(1), overflow: "hidden", width: 47 }, avatarDefault: { "& p": { color: "#fff", lineHeight: "47px" }, background: theme.palette.primary.main, height: 47, textAlign: "center", width: 47 }, avatarImage: { pointerEvents: "none", width: "100%" }, colActions: { paddingRight: theme.spacing(), textAlign: "right" }, helperText: { marginBottom: theme.spacing(3), marginTop: theme.spacing(3), textAlign: "center" }, statusText: { color: "#9E9D9D" }, tableRow: {} }), { name: "PermissionGroup" } ); const numberOfColumns = 4; interface PermissionGroupProps extends ListActions, SortPage { users: PermissionGroupDetails_permissionGroup_users[]; disabled: boolean; onUnassign: (ida: string[]) => void; onAssign: () => void; } const PermissionGroupMemberList: React.FC = props => { const { disabled, users, onUnassign, onAssign, onSort, toggle, toolbar, isChecked, selected, toggleAll, sort } = props; const classes = useStyles(props); const intl = useIntl(); const members = users?.sort(sortMembers(sort?.sort, sort?.asc)); return ( } /> {members?.length === 0 ? (
) : ( onSort(MembersListUrlSortField.name)} direction={ sort?.sort === MembersListUrlSortField.name ? getArrowDirection(sort.asc) : undefined } > onSort(MembersListUrlSortField.email)} direction={ sort?.sort === MembersListUrlSortField.email ? getArrowDirection(sort.asc) : undefined } > {renderCollection( members, user => { const isSelected = user ? isChecked(user.id) : false; return ( toggle(user.id)} />
{user?.avatar?.url ? ( ) : (
{getUserInitials(user)}
)}
{getUserName(user) || } {!user ? ( ) : user.isActive ? ( intl.formatMessage({ defaultMessage: "Active", description: "staff member status" }) ) : ( intl.formatMessage({ defaultMessage: "Inactive", description: "staff member status" }) )}
{user?.email || } {user ? ( <> onUnassign([user.id]) )} > ) : ( )}
); }, () => ( ) )}
)}
); }; PermissionGroupMemberList.displayName = "PermissionGroupMemberList"; export default PermissionGroupMemberList;