Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 1 addition & 8 deletions next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,7 @@
const nextConfig = {
reactStrictMode: false,
images: {
remotePatterns: [
{
protocol: 'https',
hostname: 'sprint-fe-project.s3.ap-northeast-2.amazonaws.com',
port: '',
pathname: '/taskify/profile_image/**',
},
],
domains: ['sprint-fe-project.s3.ap-northeast-2.amazonaws.com'],
},
};

Expand Down
3 changes: 3 additions & 0 deletions public/icons/carrot-down.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions src/components/Modal/EditCardModal/MemberProfile.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import Image from 'next/image';

import getProfileColorStyle from '@/utils/getProfileColorStyle';

export default function MemberProfile({
userId,
nickname,
profileImageUrl,
}: {
userId: number;
nickname: string;
profileImageUrl: string | null;
}) {
return (
<div className='flex items-center'>
<div
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

프로필 아이콘은 제가 크기만 클래스로 주면 되게 공용 컴포넌트 만들어뒀어요!

className='align-center relative mr-[10px] flex size-[26px] items-center justify-center rounded-full border-solid border-white'
style={profileImageUrl ? {} : getProfileColorStyle(userId)}
>
{profileImageUrl ? (
<Image src={profileImageUrl} alt='프로필' fill style={{ objectFit: 'cover' }} className='rounded-full' />
) : (
<p className={`font-montserrat font-semibold leading-6 text-white`}>{nickname.substring(0, 1)}</p>
)}
</div>
<p>{nickname}</p>
</div>
);
}
39 changes: 39 additions & 0 deletions src/components/Modal/EditCardModal/MembersDropDown.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import MemberProfile from './MemberProfile';

export default function MembersDropDown({
members,
onSelectMember,
}: {
members: {
userId: number;
nickname: string;
profileImageUrl: string | null;
}[];
onSelectMember: (userId: number) => void;
}) {
return (
<ul className='absolute top-[110%] w-full rounded-[6px] border border-gray-d9 bg-white px-4 py-2'>
{members.map((member) => {
return (
<li
className='flex cursor-pointer items-center rounded-[6px] px-[6px] py-[5px] text-[14px] transition-all hover:bg-violet-light-hover md:text-[16px]'
key={`member-${member.userId}`}
onClick={() => {
onSelectMember(member.userId);
}}
>
<MemberProfile userId={member.userId} nickname={member.nickname} profileImageUrl={member.profileImageUrl} />
</li>
);
})}
<li
className='flex cursor-pointer items-center rounded-[6px] px-[6px] py-[5px] text-[14px] text-gray-9f transition-all hover:bg-violet-light-hover md:text-[16px]'
onClick={() => {
onSelectMember(0);
}}
>
<p className='w-full text-center'>담당자 선택 안함</p>
</li>
</ul>
);
}
18 changes: 18 additions & 0 deletions src/components/Modal/EditCardModal/TagsWrapper.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export default function TagsWrapper({ tags, onTagClick }: { tags: string[]; onTagClick: (tag: string) => void }) {
return (
<div className='mt-[10px] flex flex-wrap gap-[10px]'>
{tags.map((tag) => (
<div
// 태그 컬러만 지정해주면 됨
className='cursor-pointer text-nowrap rounded-[6px] border border-gray-d9 px-1'
key={`tag-${tag}-key`}
onClick={() => {
onTagClick(tag);
}}
>
{tag}
</div>
))}
</div>
);
}
Loading