import Card from "@material-ui/core/Card"; import CardContent from "@material-ui/core/CardContent"; import { createStyles, Theme, withStyles, WithStyles } from "@material-ui/core/styles"; import Typography from "@material-ui/core/Typography"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; import CardTitle from "@saleor/components/CardTitle"; import { ControlledCheckbox } from "@saleor/components/ControlledCheckbox"; import { ShopInfo_shop_permissions } from "@saleor/components/Shop/types/ShopInfo"; import Skeleton from "@saleor/components/Skeleton"; const styles = theme => createStyles({ checkboxContainer: { marginTop: theme.spacing() }, hr: { backgroundColor: theme.overrides.MuiCard.root.borderColor, border: "none", height: 1, marginBottom: 0, marginTop: 0 } }); interface AccountPermissionsProps extends WithStyles { permissions: ShopInfo_shop_permissions[]; data: { hasFullAccess: boolean; permissions: string[]; }; disabled: boolean; onChange: (event: React.ChangeEvent, cb?: () => void) => void; } const AccountPermissions = withStyles(styles, { name: "AccountPermissions" })( ({ classes, data, disabled, permissions, onChange }: AccountPermissionsProps) => { const intl = useIntl(); const handleFullAccessChange = (event: React.ChangeEvent) => onChange(event, () => onChange({ target: { name: "permissions", value: event.target.value ? permissions.map(perm => perm.code) : [] } } as any) ); const handlePermissionChange = (event: React.ChangeEvent) => { onChange({ target: { name: "permissions", value: event.target.value ? data.permissions.concat([event.target.name]) : data.permissions.filter(perm => perm !== event.target.name) } } as any); }; return (
{!data.hasFullAccess && ( <>
{permissions === undefined ? ( ) : ( permissions.map(perm => (
userPerm === perm.code ).length === 1 } disabled={disabled} label={perm.name.replace(/\./, "")} name={perm.code} onChange={handlePermissionChange} />
)) )}
)}
); } ); AccountPermissions.displayName = "AccountPermissions"; export default AccountPermissions;