Skip to content

Commit b4de13b

Browse files
authored
Merge pull request #122 from part3-4team-Taskify/feature/Gnb
[Refactor, Style] Gnb: 헤더 종류 추가, 관리 모드 버튼 스타일 수정
2 parents e1de0f5 + b5e5c99 commit b4de13b

File tree

3 files changed

+47
-35
lines changed

3 files changed

+47
-35
lines changed

src/components/gnb/Avatars.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import { MemberType, UserType } from "@/types/users";
88
interface MemberAvatarsProps {
99
members: MemberType[];
1010
isLoading: boolean;
11-
variant?: "mydashboard" | "dashboard" | "mypage";
11+
variant?: "mydashboard" | "dashboard" | "edit" | "mypage";
1212
}
1313

1414
const MAX_VISIBLE_MEMBERS = 4;
1515

16-
export const MemberAvatars: React.FC<MemberAvatarsProps> = ({
16+
export const MemberList: React.FC<MemberAvatarsProps> = ({
1717
members,
1818
isLoading,
1919
variant,

src/components/gnb/HeaderDashboard.tsx

Lines changed: 44 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import React, { useState, useEffect } from "react";
22
import { useRouter } from "next/router";
3-
import SkeletonUser from "@/shared/skeletonUser";
3+
import clsx from "clsx";
44
import Image from "next/image";
5+
import SkeletonUser from "@/shared/skeletonUser";
56
import { MemberType, UserType } from "@/types/users";
67
import { getMembers } from "@/api/members";
78
import { getUserInfo } from "@/api/users";
89
import { getDashboardById } from "@/api/dashboards";
910
import { TEAM_ID } from "@/constants/team";
10-
import { MemberAvatars, UserAvatars } from "@/components/gnb/Avatars";
11+
import { MemberList, UserAvatars } from "@/components/gnb/Avatars";
1112
import UserMenu from "@/components/gnb/UserMenu";
1213
import MemberListMenu from "@/components/gnb/MemberListMenu";
1314
import InviteDashboard from "@/components/modal/InviteDashboard";
1415
import { ToastContainer, toast } from "react-toastify";
1516
import "react-toastify/dist/ReactToastify.css";
1617

1718
interface HeaderDashboardProps {
18-
variant?: "mydashboard" | "dashboard" | "mypage";
19+
variant?: "mydashboard" | "dashboard" | "edit" | "mypage";
1920
dashboardTitle?: string;
2021
dashboardId?: string | string[];
2122
isEditMode?: boolean;
@@ -64,7 +65,10 @@ const HeaderDashboard: React.FC<HeaderDashboardProps> = ({
6465
setIsLoading(false);
6566
}
6667
};
67-
if ((variant === "dashboard" || variant === "mypage") && dashboardId) {
68+
if (
69+
(variant === "dashboard" || variant === "mypage" || variant === "edit") &&
70+
dashboardId
71+
) {
6872
fetchMembers();
6973
}
7074
}, [dashboardId, variant]);
@@ -111,9 +115,10 @@ const HeaderDashboard: React.FC<HeaderDashboardProps> = ({
111115

112116
/*헤더 종류에 따라 다른 제목 표시*/
113117
const title = (() => {
118+
if (variant === "mydashboard") return "내 대시보드";
119+
if (variant === "edit") return "대시보드 수정";
114120
if (variant === "mypage") return "계정 관리";
115121
if (variant === "dashboard" && dashboard?.title) return dashboard.title;
116-
return "내 대시보드";
117122
})();
118123

119124
return (
@@ -153,36 +158,43 @@ const HeaderDashboard: React.FC<HeaderDashboardProps> = ({
153158
className={`flex gap-[6px] md:gap-[16px] ${variant === "mydashboard" ? "pr-[22px] md:pr-[32px]" : ""}`}
154159
>
155160
{/*관리 버튼*/}
156-
<button
157-
onClick={() => {
158-
if (dashboardId) {
159-
if (dashboard && dashboard.createdByMe === true) {
160-
router.push(`/dashboard/${dashboardId}/edit`);
161+
{variant !== "edit" && (
162+
<button
163+
onClick={() => {
164+
if (dashboardId) {
165+
if (dashboard && dashboard.createdByMe === true) {
166+
router.push(`/dashboard/${dashboardId}/edit`);
167+
} else {
168+
toast.error("대시보드 수정 권한이 없습니다.");
169+
}
161170
} else {
162-
toast.error("대시보드 수정 권한이 없습니다.");
163-
}
164-
} else {
165-
if (onToggleEditMode) {
166-
onToggleEditMode();
171+
if (onToggleEditMode) {
172+
onToggleEditMode();
173+
}
167174
}
168-
}
169-
}}
170-
className="flex items-center justify-center w-[49px] h-[30px] md:w-[85px] md:h-[36px] lg:w-[88px] lg:h-[40px] rounded-[8px] border border-[var(--color-gray3)] gap-[10px] cursor-pointer"
171-
>
172-
<Image
173-
src="/svgs/settings.svg"
174-
alt="관리 아이콘"
175-
width={20}
176-
height={20}
177-
className="hidden md:block"
178-
/>
179-
<span className="text-sm md:text-base text-gray1">
180-
{isEditMode ? "완료" : "관리"}
181-
</span>
182-
</button>
175+
}}
176+
className={clsx(
177+
"flex items-center justify-center",
178+
"w-[49px] h-[30px] md:w-[85px] md:h-[36px] lg:w-[88px] lg:h-[40px]",
179+
"border border-[var(--color-gray3)] rounded-[8px] gap-[10px] cursor-pointer",
180+
isEditMode ? "hover:border-2" : ""
181+
)}
182+
>
183+
<Image
184+
src="/svgs/settings.svg"
185+
alt="관리 아이콘"
186+
width={20}
187+
height={20}
188+
className="hidden md:block"
189+
/>
190+
<span className="text-sm md:text-base text-gray1">
191+
{isEditMode ? "완료" : "관리"}
192+
</span>
193+
</button>
194+
)}
183195

184196
{/*초대하기 버튼*/}
185-
{variant !== "mydashboard" && (
197+
{variant !== "mydashboard" && variant !== "edit" && (
186198
<button
187199
onClick={openInviteModal}
188200
className="flex items-center justify-center w-[73px] h-[30px] md:w-[109px] md:h-[36px] lg:w-[116px] lg:h-[40px] rounded-[8px] border border-[var(--color-gray3)] gap-[10px] cursor-pointer"
@@ -213,7 +225,7 @@ const HeaderDashboard: React.FC<HeaderDashboardProps> = ({
213225
onClick={() => setIsListOpen((prev) => !prev)}
214226
className="flex items-center pl-[15px] md:pl-[25px] lg:pl-[30px] pr-[15px] md:pr-[25px] lg:pr-[30px] cursor-pointer"
215227
>
216-
<MemberAvatars
228+
<MemberList
217229
members={members}
218230
isLoading={isLoading}
219231
variant={variant}

src/pages/dashboard/[dashboardId]/edit.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export default function EditDashboard() {
6969

7070
<div className="flex flex-col flex-1">
7171
<div className="flex flex-col">
72-
<HeaderDashboardEdit variant="dashboard" dashboardId={dashboardId} />
72+
<HeaderDashboardEdit variant="edit" dashboardId={dashboardId} />
7373
</div>
7474
<div className="overflow-auto flex-1 px-[50px] pt-[10px] pb-10">
7575
<div className="mt-6">

0 commit comments

Comments
 (0)