All files / app/features/profile/view/leaveReference/formSteps/submit ReferenceOverview.tsx

61.11% Statements 11/18
0% Branches 0/5
0% Functions 0/4
73.33% Lines 11/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116              1x 1x 1x 1x 1x   1x 1x 1x   1x                       1x                       1x                                                                                                                                                    
import {
  Box,
  Card,
  CardContent,
  styled,
  Typography,
  useMediaQuery,
} from "@mui/material";
import SliderLabel from "components/RatingsSlider/SliderLabel";
import TextBody from "components/TextBody";
import UserSummary from "components/UserSummary";
import { useProfileUser } from "features/profile/hooks/useProfileUser";
import { ReferenceContextFormData } from "features/profile/view/leaveReference/ReferenceForm";
import { useTranslation } from "i18n";
import { GLOBAL, PROFILE } from "i18n/namespaces";
import { theme } from "theme";
 
const StyledTextBody = styled(TextBody)(({ theme }) => ({
  "& > .MuiInputBase-root": {
    width: "100%",
  },
  marginTop: theme.spacing(1),
  [theme.breakpoints.up("md")]: {
    "& > .MuiInputBase-root": {
      width: 400,
    },
  },
}));
 
const StyledTypography = styled(Typography)(({ theme }) => ({
  "& > .MuiInputBase-root": {
    width: "100%",
  },
  marginTop: theme.spacing(1),
  [theme.breakpoints.up("md")]: {
    "& > .MuiInputBase-root": {
      width: 400,
    },
  },
}));
 
const StyledCard = styled(Card)(({ theme }) => ({
  marginTop: theme.spacing(2),
  marginBottom: theme.spacing(1),
}));
 
export default function ReferenceOverview({
  referenceData,
}: {
  referenceData: ReferenceContextFormData;
}) {
  const { t } = useTranslation([GLOBAL, PROFILE]);
  const user = useProfileUser();
  const isMobile = useMediaQuery(theme.breakpoints.down("md"));
 
  return (
    <>
      <StyledTextBody>
        {t("profile:leave_reference.thank_you_message")}
      </StyledTextBody>
      {isMobile && (
        <Box sx={{ margin: theme.spacing(2, 0) }}>
          <TextBody sx={{ marginBottom: theme.spacing(2) }}>
            {t("profile:leave_reference.writing_for_text")}
          </TextBody>
          <UserSummary user={user} />
        </Box>
      )}
      <StyledTypography variant="h3" sx={{ marginTop: theme.spacing(3) }}>
        {t("profile:leave_reference.public_text_label", { name: user.name })}
      </StyledTypography>
      <StyledCard>
        <CardContent>
          <TextBody sx={{ whiteSpace: "pre-wrap" }}>
            {referenceData.text}
          </TextBody>
        </CardContent>
      </StyledCard>
      <StyledTypography variant="h3" sx={{ marginTop: theme.spacing(3) }}>
        {t("profile:leave_reference.private_text_label")}
      </StyledTypography>
      <ul>
        <li>
          <StyledTextBody>
            {referenceData.wasAppropriate === "true"
              ? t("profile:leave_reference.yes_safe")
              : t("profile:leave_reference.no_not_safe")}
          </StyledTextBody>
        </li>
        <li>
          <Box sx={{ display: "flex", alignItems: "center" }}>
            <Typography sx={{ paddingRight: theme.spacing(1) }}>
              {t("profile:leave_reference.rating_label")}
            </Typography>
            <SliderLabel value={referenceData.rating} />
          </Box>
        </li>
      </ul>
      {referenceData.privateText && referenceData.privateText.length > 0 && (
        <>
          <StyledTypography variant="h3" sx={{ marginTop: theme.spacing(3) }}>
            {t("profile:leave_reference.private_text_summary")}
          </StyledTypography>
          <StyledCard>
            <CardContent>
              <TextBody sx={{ whiteSpace: "pre-wrap" }}>
                {referenceData.privateText}
              </TextBody>
            </CardContent>
          </StyledCard>
        </>
      )}
    </>
  );
}