import React, { FC, useEffect, useRef } from 'react'; import styled from '@emotion/styled'; import { useState } from 'react'; import { RatingForm } from './RatingForm'; import { InputForm } from './InputForm'; import { HiddenForm } from './HiddenForm'; import { Thanks } from './Thanks'; type FeedbackFormProps = { slug: string }; export const FeedbackForm: FC = (props) => { const { slug } = props; const formRef = useRef(null); const [rating, setRating] = useState(0); const [feedback, setFeedback] = useState(''); const [isRatingForm, setRatingForm] = useState(true); const [isRatingSubmitted, setRatingSubmitted] = useState(false); const [isInputSubmitted, setInputSubmitted] = useState(false); const [isSuccess, setSuccess] = useState(false); useEffect(() => { if (!isRatingSubmitted) { return; } if (rating < 5) { setRatingForm(false); } else { setSuccess(true); formRef.current.submit(); } }, [isRatingSubmitted, rating]); useEffect(() => { if (isInputSubmitted) { setSuccess(true); formRef.current.submit(); } }, [isInputSubmitted]); let content = null; if (isRatingForm) { content = setRatingSubmitted(true)} />; } else { content = setInputSubmitted(true)} />; } if (isSuccess) { content = ; } return ( {content} ); }; const Container = styled.div` padding: 32px 56px; display: flex; align-items: center; grid-area: feedback; `;