Skip to content

Commit c5252d9

Browse files
authored
Merge branch 'develop' into feat/#49
2 parents c326e92 + 82fa4f6 commit c5252d9

File tree

2 files changed

+40
-20
lines changed

2 files changed

+40
-20
lines changed

src/components/SelectTag/SelectTag.tsx

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,26 @@ import { useRoute } from "@/hooks/common/useRoute";
1010

1111
import { useCreateReviewStore } from "@/store/useReviewStore";
1212

13-
// 임시 데이터
14-
const TAG_LIST = [
15-
"음식이 맛있어요",
16-
"양이 많아요",
17-
"가성비가 좋아요",
18-
"메뉴 구성이 알차요",
19-
"매장이 넓어요",
20-
"단체모임 하기 좋아요",
21-
"뷰가 좋아요",
22-
"아늑해요",
23-
"분위기가 좋아요",
24-
"친절해요",
25-
"매장이 청결해요",
26-
];
27-
2813
const SelectTag = () => {
2914
const { navigateToSelectStyle } = useRoute();
3015

3116
const { setHashTag } = useCreateReviewStore();
3217

3318
const [selectedTagList, setSelectedTagList] = useState<string[]>([]);
3419
const [isBottomSheetOpen, setIsBottomSheetOpen] = useState(false);
20+
const [tagList, setTagList] = useState<string[]>([
21+
"음식이 맛있어요",
22+
"양이 많아요",
23+
"가성비가 좋아요",
24+
"메뉴 구성이 알차요",
25+
"매장이 넓어요",
26+
"단체모임 하기 좋아요",
27+
"뷰가 좋아요",
28+
"아늑해요",
29+
"분위기가 좋아요",
30+
"친절해요",
31+
"매장이 청결해요",
32+
]);
3533

3634
const handleTagClick = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
3735
const tag = e.currentTarget.textContent || "";
@@ -43,6 +41,13 @@ const SelectTag = () => {
4341
);
4442
};
4543

44+
const handleTagAdd = (newTag: string) => {
45+
setIsBottomSheetOpen(false);
46+
if (!tagList.includes(newTag)) {
47+
setTagList((prevTagList: string[]) => [...prevTagList, newTag]);
48+
}
49+
};
50+
4651
const handleSheetClose = () => {
4752
setIsBottomSheetOpen(false);
4853
};
@@ -64,7 +69,7 @@ const SelectTag = () => {
6469
</Text>
6570
</div>
6671
<div className={styles.TagList}>
67-
{TAG_LIST.map((tag) => (
72+
{tagList.map((tag) => (
6873
<Tag
6974
text={tag}
7075
key={tag}
@@ -80,7 +85,11 @@ const SelectTag = () => {
8085
<Button text="다음" onClick={handleNextClick} />
8186
</div>
8287

83-
<TagSheet isOpen={isBottomSheetOpen} handleClose={handleSheetClose} />
88+
<TagSheet
89+
isOpen={isBottomSheetOpen}
90+
handleClose={handleSheetClose}
91+
handleTagAdd={handleTagAdd}
92+
/>
8493
</div>
8594
);
8695
};

src/components/SelectTag/TagSheet/TagSheet.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState } from "react";
1+
import { useState, useEffect } from "react";
22

33
import * as Dialog from "@radix-ui/react-dialog";
44
import * as VisuallyHidden from "@radix-ui/react-visually-hidden";
@@ -15,16 +15,23 @@ import { useFocus } from "@/hooks/common/useFocus";
1515
interface TagSheetProps {
1616
isOpen: boolean;
1717
handleClose: () => void;
18+
handleTagAdd: (newTag: string) => void;
1819
}
1920

20-
const TagSheet = ({ isOpen, handleClose }: TagSheetProps) => {
21+
const TagSheet = ({ isOpen, handleClose, handleTagAdd }: TagSheetProps) => {
2122
const { isFocus, onFocus, onBlur } = useFocus({ defaultFocus: true });
2223

2324
const [newTag, setNewTag] = useState("");
2425

2526
const isInputError = newTag.length > 20;
2627
const isInputEmpty = newTag.length === 0;
2728

29+
useEffect(() => {
30+
if (isOpen) {
31+
setNewTag("");
32+
}
33+
}, [isOpen]);
34+
2835
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
2936
setNewTag(e.target.value);
3037
};
@@ -82,7 +89,11 @@ const TagSheet = ({ isOpen, handleClose }: TagSheetProps) => {
8289
)}
8390
</div>
8491

85-
<Button text="추가하기" disabled={isInputError || isInputEmpty} />
92+
<Button
93+
text="추가하기"
94+
disabled={isInputError || isInputEmpty}
95+
onClick={() => handleTagAdd(newTag)}
96+
/>
8697
</Dialog.Content>
8798
</Dialog.Portal>
8899
</Dialog.Root>

0 commit comments

Comments
 (0)