Skip to content

Commit 38e3be2

Browse files
authored
Merge pull request #23 from team-Ollie/13-feature-Calendar-Modal
13 feature calendar modal
2 parents ea419d6 + 22a665a commit 38e3be2

File tree

7 files changed

+84
-18
lines changed

7 files changed

+84
-18
lines changed

apis/calendar.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,35 @@ export interface MonthCalendarProps {
1919
};
2020
}
2121

22+
type CalendarDate = {
23+
year: number;
24+
month: number;
25+
day: number;
26+
};
27+
28+
interface GetProgramDetailBody {
29+
programIdx: number;
30+
name: string;
31+
openDate: CalendarDate;
32+
dueDate: CalendarDate;
33+
location: string;
34+
host: string;
35+
schedule: string;
36+
description: string;
37+
}
38+
2239
// 챌린지 월별 조회
2340
export const getMonthCalendar = async (): Promise<GetMonthCalendarResponse> => {
24-
const response = await client.get("/programs", {});
41+
const response = await client.get("/programs");
2542
// console.log("calenderData", response.data.result);
2643
return response.data.result;
2744
};
45+
46+
export const getProgramDetail = async (
47+
programIdx: number,
48+
): Promise<GetProgramDetailBody> => {
49+
// const response = await client.get(`/programs/${programIdx}`);
50+
const response = await client.get(`/programs/2`);
51+
// console.log("calenderDetail", response.data.result);
52+
return response.data.result;
53+
};

apis/hooks/calendar.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useQuery } from "@tanstack/react-query";
2-
import { getMonthCalendar } from "../calendar";
2+
import { getMonthCalendar, getProgramDetail } from "../calendar";
33

44
const useGetMonthCalendar = () => {
55
const { data } = useQuery({
@@ -12,3 +12,15 @@ const useGetMonthCalendar = () => {
1212
};
1313

1414
export { useGetMonthCalendar };
15+
16+
// const useGetProgramDetail = () => {
17+
// const { data } = useQuery({
18+
// queryKey: ["getProgramDetail"],
19+
// queryFn: getProgramDetail,
20+
// });
21+
// // console.log("isLoading", isLoading);
22+
// console.log("Query Data", data);
23+
// return { data };
24+
// };
25+
26+
// export { useGetProgramDetail };
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const CalendarModal = ({ filterName }) => {
2+
return (
3+
<div className="w-fit h-[1.9rem] flex justify-center items-center bg-main-color rounded-3xl text-white py-[0.31rem] pl-[0.94rem] pr-[0.44rem] gap-0.5">
4+
<div>{filterName}</div>
5+
</div>
6+
);
7+
};
8+
9+
export default CalendarModal;

components/calendar/InfoCalendar.tsx

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@ export default function InfoCalendar() {
2020
setClickedDate(clickedDate);
2121
};
2222

23+
// API 관리
2324
const { data } = useGetMonthCalendar();
2425

26+
const handleDayDataClick = (programIdx: number) => {
27+
console.log("API 호출: ", programIdx);
28+
};
29+
2530
const customTileContent = ({ date, view }: { date: Date; view: string }) => {
26-
let isOpen = true;
27-
if (data && view === "month") {
28-
const dayData = data.find((dayData: MonthCalendarProps) => {
31+
if (Array.isArray(data) && view === "month") {
32+
const dayData = data.filter((dayData: MonthCalendarProps) => {
2933
const openDate = new Date(
3034
dayData.openDate.year,
3135
dayData.openDate.month - 1,
@@ -38,24 +42,36 @@ export default function InfoCalendar() {
3842
dayData.dueDate.day,
3943
);
4044

41-
if (date.getTime() === openDate.getTime()) isOpen = true;
42-
else isOpen = false;
43-
4445
return (
4546
date.getTime() === openDate.getTime() ||
4647
date.getTime() === dueDate.getTime()
4748
);
4849
});
4950

50-
if (dayData) {
51+
if (dayData.length > 0) {
5152
return (
5253
<div className="custom-tile-content">
53-
<div className=" flex flex-row justify-center items-center gap-1 ">
54-
<Dot color={isOpen ? "#F06459" : "#8E8E93"} />
55-
<div className="h6 custom-tile-text text-grey-900 whitespace-nowrap overflow-hidden text-ellipsis">
56-
{dayData.name}
57-
</div>
58-
</div>
54+
{dayData.map((day: MonthCalendarProps, index: number) => {
55+
const isOpen =
56+
date.getTime() ===
57+
new Date(
58+
day.openDate.year,
59+
day.openDate.month - 1,
60+
day.openDate.day,
61+
).getTime();
62+
console.log(day);
63+
return (
64+
<div key={index} className="flex flex-row items-center gap-1">
65+
<Dot color={isOpen ? "#F06459" : "#8E8E93"} />
66+
<div
67+
className="h6 custom-tile-text text-grey-900 whitespace-nowrap overflow-hidden text-ellipsis"
68+
onClick={() => handleDayDataClick(day.programIdx)}
69+
>
70+
{day.name}
71+
</div>
72+
</div>
73+
);
74+
})}
5975
</div>
6076
);
6177
}
@@ -96,9 +112,10 @@ const StyledCalendarWrapper = styled.div`
96112
.custom-tile-content {
97113
/* position: absolute; */
98114
display: flex;
115+
flex-direction: column;
99116
justify-content: center;
100-
align-items: center;
101117
z-index: 1;
118+
gap: 1px;
102119
}
103120
104121
.custom-tile-text {

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
"@yarnpkg/pnpify": "^4.1.0",
4646
"eslint": "8.54.0",
4747
"eslint-config-next": "14.0.3",
48+
"eslint-plugin-react": "^7.34.3",
4849
"typescript": "5.4.5"
4950
},
5051
"packageManager": "[email protected]"

pages/login.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const Login: NextPage = () => {
4444
);
4545

4646
const signInMutation = useMutation({
47-
queryKey: ["SignIn"],
47+
mutationKey: ["SignIn"],
4848
mutationFn: SignIn,
4949
onSuccess: async (data) => {
5050
console.log(data);

yarn.lock

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4029,7 +4029,7 @@ __metadata:
40294029
languageName: node
40304030
linkType: hard
40314031

4032-
"eslint-plugin-react@npm:^7.33.2":
4032+
"eslint-plugin-react@npm:^7.33.2, eslint-plugin-react@npm:^7.34.3":
40334033
version: 7.34.3
40344034
resolution: "eslint-plugin-react@npm:7.34.3"
40354035
dependencies:
@@ -7677,6 +7677,7 @@ __metadata:
76777677
embla-carousel-react: "npm:^8.1.3"
76787678
eslint: "npm:8.54.0"
76797679
eslint-config-next: "npm:14.0.3"
7680+
eslint-plugin-react: "npm:^7.34.3"
76807681
gh-pages: "npm:^6.1.1"
76817682
jotai: "npm:^2.8.3"
76827683
lottie-web: "npm:^5.12.2"

0 commit comments

Comments
 (0)