From df0f5553fc3d01311a2031a4cfac798d0cd34435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=98=88=EC=9D=80?= Date: Wed, 6 Nov 2024 17:23:46 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=94=A5=20Remove:=20=EC=98=9B=EB=82=A0?= =?UTF-8?q?=20develop=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my-page/reviewing-modal/button-hearts.tsx | 35 +++++++++ .../my-page/reviewing-modal/review-form.tsx | 71 +++++++++++++++++++ .../reviewing-modal.stories.tsx | 41 +++++++++++ .../reviewing-modal/reviewing-modal.tsx | 36 ++++++++++ 4 files changed, 183 insertions(+) create mode 100644 src/components/my-page/reviewing-modal/button-hearts.tsx create mode 100644 src/components/my-page/reviewing-modal/review-form.tsx create mode 100644 src/components/my-page/reviewing-modal/reviewing-modal.stories.tsx create mode 100644 src/components/my-page/reviewing-modal/reviewing-modal.tsx diff --git a/src/components/my-page/reviewing-modal/button-hearts.tsx b/src/components/my-page/reviewing-modal/button-hearts.tsx new file mode 100644 index 00000000..b9744f1d --- /dev/null +++ b/src/components/my-page/reviewing-modal/button-hearts.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react'; +import Image from 'next/image'; +import activeHeart from '@/public/assets/icons/active-heart.svg'; +import defaultHeart from '@/public/assets/icons/default-heart.svg'; + +interface ButtonHeartsProps { + onChange: (score: number) => void; +} + +export default function ButtonHearts({ onChange }: ButtonHeartsProps) { + const [clickedArray, setClickedArray] = useState(Array(5).fill(false)); + + const handleClick = (index: number) => { + setClickedArray((prev) => prev.map((_, i) => i <= index)); + onChange(index + 1); + }; + + return ( +
+

만족스러운 경험이었나요?

+
+ {Array.from({ length: 5 }).map((_, index) => ( + + ))} +
+
+ ); +} diff --git a/src/components/my-page/reviewing-modal/review-form.tsx b/src/components/my-page/reviewing-modal/review-form.tsx new file mode 100644 index 00000000..6aea056a --- /dev/null +++ b/src/components/my-page/reviewing-modal/review-form.tsx @@ -0,0 +1,71 @@ +import { useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { useApiMutation } from '@/src/hooks/useApi'; +import Button from '@/src/components/common/button'; +import Textarea from '@/src/components/common/input/textarea'; +import ButtonHearts from './button-hearts'; + +type FormValues = { + reviewText: string; + score: number; +}; + +interface ReviewProps { + onCancel: () => void; +} + +export default function ReviewForm({ onCancel }: ReviewProps) { + const { register, handleSubmit } = useForm(); + const [textReview, setTextReview] = useState(''); + const [point, setPoint] = useState(0); + + // TODO : 주석 부분(api 연결) 수정 + // TODO : form에 넣기: onSubmit={handleSubmit(clickSubmit)} + + const handleTextChange = (e: React.ChangeEvent) => { + setTextReview(e.target.value); + }; + + const handleScoreChange = (newScore: number) => { + setPoint(newScore); + }; + + return ( +
+ +