Skip to content

[UI] 목표 상세페이지 구현#94

Merged
HiJuwon merged 12 commits into
developfrom
feature/#57-goal_detail-ui
Aug 1, 2025
Merged

[UI] 목표 상세페이지 구현#94
HiJuwon merged 12 commits into
developfrom
feature/#57-goal_detail-ui

Conversation

@HiJuwon

@HiJuwon HiJuwon commented Jul 28, 2025

Copy link
Copy Markdown
Member

체크리스트

  • 🧰 npm run dev로 실행 환경에서 잘 돌아가는걸 확인했나요?
  • 🎋 base 브랜치를 develop 브랜치로 설정했나요?
  • 🖌️ PR 제목은 형식에 맞게 잘 작성했나요?
  • 🏷️ 라벨은 등록했나요?
  • 🙆 리뷰어는 등록했나요?

📌 관련 이슈번호


✅ Key Changes

구현한 상세페이지 기본 컴포넌트 기반으로, 목표 상세페이지 구현을 완료했습니다.

주요 변경사항:

  • 달력 드롭다운(CalendarDropdown.tsx)을 '기한' 속성 항목에 연결 완료.
  • 이슈 드롭다운(ArrowDropdown.tsx)을 '이슈' 속성 항목에 연결 완료.
  • '속성' 탭에서 각 속성별로 클릭 가능한 범위: 속성 항목명에서 속성 아이템(PropertyItem.tsx)으로 변경하여 UX 개선.

⚠️ 25.07.31. update 내용:

  • pr 남겨주신 내용 반영하여, '기한' 속성의 항목명 서식을 바꾸었습니다 (연도 숫자 끝 2자리만 뜨도록)
  • pr 남겨주신 내용 반영하여, 상세 설명 영역과 댓글창 영역 둘다 확보하되, 댓글목록에 고정 높이를 지정하지 않고 스크롤뷰 구현을 했습니다.
  • 상세페이지 제목 줄바꿈: 엔터 키 눌러서 줄바꿈 되는 것을 방지했습니다.

📸 스크린샷 or 실행영상

2025-08-01.2.47.18.mov

💬 To Reviewers

상세페이지 타이틀 문구가 파묻히는 문제

  • 상세페이지 제목 입력하여 작성 완료 버튼을 눌렀을 때 댓글창은 제대로 나타나지만, 상세페이지 제목이 파묻히게 되는 현상
    => ✅ 금주에 리팩토링하면서 해당 오류를 수정하였습니다.

기타: 디자인 측에게 추가 기능 명세 물어보고 반영해야 하는 부분들

  • 금주에 논의 완료 후 추가 반영하겠습니다.
    => ✅ 금주에 논의 완료된 내용(댓글창 위 오버레이되는 흰색 그라데이션)을 반영했습니다.

이슈 드롭다운(ArrowDropdown.tsx) 관련 요청 @gaeulzzang

  • (1) 현재 실행 영상을 보시면, '이슈' 속성의 드롭다운에서 개별 항목을 선택해도 해당 드롭다운이 닫히지 않습니다. 코드상에는 항목 선택 시 드롭다운이 닫히게 하는 로직이 반영되어있는 것 같은데 왜 안되는지 모르겠습니다 🥲
  • (2) 이슈 드롭다운 내 항목 중 텍스트가 길어서 넘치는 항목을 선택했을 때, 해당 드롭다운을 사용한 부모 컴포넌트에 보여지는 항목명도 truncate 속성이 적용되어 "..." 처리되게 하려면 어떻게 해야 하나요? truncate 속성을 썼는데 잘 안되네요.

그외 자잘한 내용들을 마저 수정하였습니다.
확인 후 리뷰 부탁드립니다. @sunhwaaRj @jinj00oo @waldls

@HiJuwon HiJuwon self-assigned this Jul 28, 2025
@HiJuwon HiJuwon added the 🎨 UI 페이지나 컴포넌트 구현 label Jul 28, 2025
@HiJuwon
HiJuwon requested review from jinj00oo and waldls as code owners July 28, 2025 07:17
@github-actions

Copy link
Copy Markdown

<img src={IcCalendar} alt="date" />
<div className="relative">
{/* '기한' 항목명 - 날짜 설정하면 반영됨 */}
<span className={`font-body-r text-gray-600`}>{getDisplayText()}</span>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

p2: 기한명 서식 2025.07.28 이 아닌 25.07.08 입니다

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

넵 감사합니다 수정 반영하겠습니다~

@jinj00oo jinj00oo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

현재 글 공간이 작아서, 게시글 공간을 확보하고 댓글은 화면을 초과해도 되도록 댓글 목록을 스크롤뷰로 구현해주시면 좋을 것 같아용! (높이 지정 X)
수고하셨습니다~~

@HiJuwon

HiJuwon commented Jul 28, 2025

Copy link
Copy Markdown
Member Author

현재 글 공간이 작아서, 게시글 공간을 확보하고 댓글은 화면을 초과해도 되도록 댓글 목록을 스크롤뷰로 구현해주시면 좋을 것 같아용! (높이 지정 X) 수고하셨습니다~~

넵 반영하겠습니다!

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

@gaeulzzang gaeulzzang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

드롭다운 관련 이슈는 코드 리뷰에 해결 방법 남겨두었으니 참고 부탁드립니다!
또한, 불필요한 div 태그 사용은 지양하고, 텍스트나 본문 내용은 p 태그를 활용해 구현해주시면 더 좋을 것 같습니다.

Comment thread src/pages/goal/GoalDetail.tsx Outdated
Comment on lines +168 to +171
<div className="flex items-center">
{/* 속성 항목명 */}
<div className="font-body-r text-gray-600">{option}</div>
</div>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
<div className="flex items-center">
{/* 속성 항목명 */}
<div className="font-body-r text-gray-600">{option}</div>
</div>
<p className="font-body-r text-gray-600 max-w-[27.4rem] truncate">{option}</p>

P1: 속성 항목명을 감싸는 상위 div 태그는 불필요한 것 같아 없애주시면 좋을 것 같습니다!
또한, 글이 들어가기 때문에 div 태그보다는 p태그를 사용하는게 더 적절할 것 같습니다.

truncate을 지정하려면 최대 너비를 지정해야 하므로 ArrowDropdown과 같은 너비인 27.4rem을 지정해주시면 될 것 같습니다!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

반영했습니다

Comment on lines +174 to +185
{isOpen && content?.name === '이슈' && (
<ArrowDropdown
defaultValue={'이슈'}
options={[
'기능 정의: 구현할 핵심 기능과 어쩌구 저쩌구 텍스트가 길어지면 이렇게 표시',
'와이어프레임 디자인',
'컴포넌트 정리',
]}
onSelect={(value: string) => setOption(value)}
onClose={closeDropdown}
/>
)}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

P1: 드롭다운이 정상적으로 닫히지 않는 문제는 e.stopPropagation() 처리가 누락되어 발생한 것으로 확인되었습니다...
ArrowDropdown.tsx 상위 div 태그에 아래와 같이 onClick 이벤트에 e.stopPropagation()을 추가해주시면 문제를 해결하실 수 있습니다. 죄송합니다 😢

 <div
      ref={dropdownRef}
      style={{ boxShadow: '0px 4px 12px 0px rgba(0, 0, 0, 0.15)' }}
      className={`absolute z-30 top-0 left-0 flex flex-col w-[27.4rem]
      border border-gray-400 bg-white rounded-[0.4rem] ${className}`}
      onClick={(e) => e.stopPropagation()}
    >

@HiJuwon HiJuwon Aug 1, 2025

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

이거는 아래 내용 보시면, 해당 속성 항목이 차지하는 전체 영역을 눌렀을 때 드롭다운이 열리게 하는 방식으로 UX를 개선하고자 e.stopPropagation() 처리도 속성 항목의 최상위 div에 적용을 했는데요,

바로 직속 상위 div 태그에 이벤트 처리하지 않고, 아래와 같은 방식으로 처리하면 해당 이벤트 처리가 안 먹히는 건가 싶어서 해당 e.stopPropagation() 처리만 최상위 div 태그가 아닌 바로 직속 상위 div 태그에 넣어봤는데, 이렇게 하면 문제는 해결되지만 대신에 바로 직속 상위 div 태그인 속성 이름을 클릭하면 드롭다운이 열리지 않는 문제가 생깁니다...

{/* (5) 이슈 */}
<div
  onClick={(e) => {
    e.stopPropagation();
    openDropdown({ name: '이슈' });
  }}
  className={`flex w-full h-[3.2rem] px-[0.5rem] rounded-md items-center gap-[0.8rem] mb-[1.6rem] whitespace-nowrap hover:bg-gray-200 cursor-pointer`}
>
  {/* 속성 아이콘 */}
  <img src={IcIssue} alt="이슈" />

  {/* 속성 이름 */}
  <div className="flex relative">
    {/* 속성 항목명 */}
    <p className="font-body-r text-gray-600 max-w-[27.4rem] truncate">{option}</p>

    {/* 드롭다운 오픈 */}
    {isOpen && content?.name === '이슈' && (
      <ArrowDropdown
        defaultValue={'이슈'}
        options={[
          '기능 정의: 구현할 핵심 기능과 어쩌구 저쩌구 텍스트가 길어지면 이렇게 표시',
          '와이어프레임 디자인',
          '컴포넌트 정리',
        ]}
        onSelect={(value: string) => setOption(value)}
        onClose={closeDropdown}
      />
    )}
  </div>
</div>

이 부분에 대해서도 한번만 봐주시면 좋을 것 같아요.... ㅠㅠ 어떻게 해야할지 모르겠습니다 @gaeulzzang

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

image GoalDetail.tsx 코드는 그대로 두고 ArrowDropdown.tsx 코드로 가서 제가 마우스로 드래그한 부분만 추가해주시면 됩니답

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

아아 넵 해결했습니다!!!

Comment on lines +59 to +62
<div className="flex items-center">
{/* 속성 항목명 */}
<div className="font-body-r text-gray-600">{value}</div>
</span>
</div>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

P1: 속성 항목명도 div로 감싸지 않고 바로 p태그로 적용하는게 좋을 것 같습니다

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

네 반영했습니다

@gaeulzzang gaeulzzang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

GoalHome.tsx 보시면 TODO: 추가 버튼 라우터 연결이 있는데 상세페이지랑 버튼 연결해주셔야 할 것 같습니다

@github-actions

github-actions Bot commented Aug 1, 2025

Copy link
Copy Markdown

@HiJuwon

HiJuwon commented Aug 1, 2025

Copy link
Copy Markdown
Member Author

GoalHome.tsx 보시면 TODO: 추가 버튼 라우터 연결이 있는데 상세페이지랑 버튼 연결해주셔야 할 것 같습니다

네 이 부분도 반영했습니다~

@HiJuwon

HiJuwon commented Aug 1, 2025

Copy link
Copy Markdown
Member Author

드롭다운 이벤트 처리 제외하고는 리뷰 남겨주신 부분들 모두 수정해서 반영했습니다~

@github-actions

github-actions Bot commented Aug 1, 2025

Copy link
Copy Markdown

@gaeulzzang gaeulzzang left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

수정사항 확인했습니다~!! 상세페이지 와다다 머지하자!!! ❤️

@HiJuwon
HiJuwon merged commit 77cf3d7 into develop Aug 1, 2025
1 check passed
@HiJuwon
HiJuwon deleted the feature/#57-goal_detail-ui branch August 1, 2025 06:02
@HiJuwon HiJuwon added this to the Demo Day milestone Aug 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🎨 UI 페이지나 컴포넌트 구현 🐥 주원

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UI] 목표 상세페이지 구현

4 participants