You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FirstStepCreateReview.js 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import React from "react";
  2. import PropTypes from "prop-types";
  3. import {
  4. FirstStepCreateReviewContainer,
  5. CreateReviewTitle,
  6. ProfileImage,
  7. ProfileImageContainer,
  8. ProfileName,
  9. } from "./FirstStepCreateReview.styled";
  10. import { useTranslation } from "react-i18next";
  11. import LittleOfferCard from "../../Cards/LittleOfferCard/LittleOfferCard";
  12. import { useFormik } from "formik";
  13. import { getImageUrl, variants } from "../../../util/helpers/imageUrlGetter";
  14. import { useMemo } from "react";
  15. import firstPartCreateReviewInitialValues from "../../../initialValues/createReviewInitialValues/firstPartCreateReviewInitialValues";
  16. import firstPartCreateReviewValidation from "../../../validations/createReviewValidations/firstPartCreateReviewValidation";
  17. import CorrectCommunicationField from "./CorrectCommunicationField/CorrectCommunicationField";
  18. import SuccessfulSwapField from "./SuccessfulSwapField/SuccessfulSwapField";
  19. import CommentField from "./CommentField/CommentField";
  20. import NextButton from "./NextButton/NextButton";
  21. const FirstStepCreateReview = (props) => {
  22. const offer = props.offer;
  23. const interlocutor = props.interlocutor;
  24. console.log(props);
  25. const { t } = useTranslation();
  26. const handleSubmit = (values) => {
  27. props.goToNextStep(values);
  28. };
  29. const initialValues = useMemo(() => {
  30. return firstPartCreateReviewInitialValues(props.informations);
  31. }, [props.informations]);
  32. const formik = useFormik({
  33. initialValues,
  34. validationSchema: firstPartCreateReviewValidation,
  35. onSubmit: handleSubmit,
  36. validateOnBlur: true,
  37. enableReinitialize: true,
  38. });
  39. return (
  40. <FirstStepCreateReviewContainer
  41. component="form"
  42. onSubmit={formik.handleSubmit}
  43. >
  44. <CreateReviewTitle>{t("reviews.modalTitle")}</CreateReviewTitle>
  45. <ProfileImageContainer>
  46. <ProfileImage
  47. src={getImageUrl(
  48. interlocutor.image,
  49. variants.createReviewCard,
  50. false
  51. )}
  52. />
  53. </ProfileImageContainer>
  54. <ProfileName>{interlocutor.company.name}</ProfileName>
  55. <LittleOfferCard
  56. image={offer?.images[0]}
  57. name={offer?.name}
  58. categoryName={offer?.category?.name}
  59. />
  60. <CorrectCommunicationField formik={formik} />
  61. <SuccessfulSwapField formik={formik} />
  62. <CommentField formik={formik} />
  63. <NextButton formik={formik} />
  64. </FirstStepCreateReviewContainer>
  65. );
  66. };
  67. FirstStepCreateReview.propTypes = {
  68. children: PropTypes.node,
  69. offer: PropTypes.any,
  70. interlocutor: PropTypes.any,
  71. goToNextStep: PropTypes.func,
  72. informations: PropTypes.shape({
  73. exchangeSucceed: PropTypes.string,
  74. correctCommunication: PropTypes.string,
  75. comment: PropTypes.string,
  76. }),
  77. };
  78. export default FirstStepCreateReview;