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 TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import React from "react"; import SVG from "react-inlinesvg"; import CardTitle from "@saleor/components/CardTitle"; import i18n from "../../../i18n"; import { getUserInitials, maybe } from "../../../misc"; import { StaffMemberDetails_user } from "../../types/StaffMemberDetails"; import * as photoIcon from "@assets/images/photo-icon.svg"; const styles = (theme: Theme) => createStyles({ avatar: { "& svg": { fill: "#fff" }, "&:hover $avatarHover": { opacity: 1 }, alignItems: "center", borderRadius: "100%", display: "grid", height: 120, justifyContent: "center", overflow: "hidden", position: "relative", width: 120 }, avatarDefault: { "& p": { color: "#fff", fontSize: 35, fontWeight: "bold", lineHeight: "120px" }, background: theme.palette.primary.main, height: 120, textAlign: "center", width: 120 }, avatarHover: { "& p": { "&:hover": { textDecoration: "underline" }, color: theme.palette.primary.main, cursor: "pointer", fontSize: 12, fontWeight: 500 }, background: "#00000080", borderRadius: "100%", height: 120, opacity: 0, padding: `${theme.spacing.unit * 2.5}px 0`, position: "absolute", textAlign: "center", textTransform: "uppercase", transition: "opacity 0.5s", width: 120 }, avatarImage: { pointerEvents: "none", width: "100%" }, fileField: { display: "none" }, prop: { marginBottom: theme.spacing.unit * 2 + "px" }, propGrid: { display: "grid", gridColumnGap: theme.spacing.unit * 2 + "px", gridRowGap: theme.spacing.unit + "px", gridTemplateColumns: "1fr 1fr", [theme.breakpoints.down("xs")]: { gridTemplateColumns: "1fr" } }, root: { display: "grid", gridColumnGap: theme.spacing.unit * 4 + "px", gridTemplateColumns: "120px 1fr" } }); interface StaffPropertiesProps extends WithStyles { canEditAvatar: boolean; className?: string; data: { email: string; firstName: string; lastName: string; }; disabled: boolean; staffMember: StaffMemberDetails_user; onChange: (event: React.ChangeEvent) => void; onImageDelete: () => void; onImageUpload: (file: File) => void; } const StaffProperties = withStyles(styles, { name: "StaffProperties" })( ({ canEditAvatar, classes, className, data, staffMember, onChange, onImageDelete, onImageUpload }: StaffPropertiesProps) => { const imgInputAnchor = React.createRef(); const clickImgInput = () => imgInputAnchor.current.click(); return (
{maybe(() => staffMember.avatar.url) ? ( staffMember.avatar.url)} /> ) : (
{getUserInitials(data)}
)} {canEditAvatar && (
{i18n.t("Change photo")} {i18n.t("Delete photo")} onImageUpload(event.target.files[0])} type="file" ref={imgInputAnchor} />
)}
); } ); StaffProperties.displayName = "StaffProperties"; export default StaffProperties;