-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TASK-92, TASK-93, TASK-94] style: 작품 업로드 페이지 UI 구현 #47
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Qodana for JS3 new problems were found
💡 Qodana analysis was run in the pull request mode: only the changed files were checked Contact Qodana teamContact us at [email protected]
|
Qodana for JS26 new problems were found
☁️ View the detailed Qodana report Contact Qodana teamContact us at [email protected]
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다현님 코멘트 남겼습니다-! 확인부탁드려요!😋
src/app/artwork/upload/page.tsx
Outdated
{ name: '비공개', value: 'PRIVATE' }, | ||
]; | ||
|
||
const ARTWORK_FIELDS_NOT_INCLUDED_ALL = ARTWORK_FIELDS.filter( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이부분은 크리티컬한 부분은 아니라 제안만 드립니다..!
( 카페에서 이야기했을 때 저는 이렇게 하면 어떨까 생각했었습니다..! 😋 )
const ARTWORK_FIELDS _WITH_ALL_OPTION= [
....ARTWORK_FIELDS,
{ name: '전체', value: 'ALL' },
]
const ARTWORK_FIELDS = [ ... ] // 여기는 카테고리 리스트
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 그렇게({ name: '전체', value: 'ALL' }
) 하시려는 이유가 '전체'는 작품 목록 페이지에서만 사용되기 때문일까요? 궁금해서 질문드립니당
+) 카페에선 왜 얘기 안 해주셨나요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞습니다..! 정확합니다..!
+) 미리 말씀드리면 다현님께서 다양한 방향으로 생각하실때 방해가 될 수 있잖아요 ㅎㅎ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아하! 그렇군요! 그럼 제안주신 대로 하는 게 좋을 것 같아요! 그 방향으로 로직 바꾸겠습니다
오 그런 배려가..! 🥺 감사해여 ㅋㅋㅋㅋㅋㅋㅋ
if (errors.uploadedImageError) clearErrorMessage('uploadedImageError'); | ||
}; | ||
|
||
const validateArtworkUploadForm = () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
현재 폼에 대한 validation이 값이 변경 ( 입력이나 이미지 업로드 )시 마다 확인하고, 폼 제출 직전에 한번더 확인하는데 내부 로직 ( 검증 로직 + 에러 텍스트 수정 )이 동일한 것 같은데 여러번 validation을 체크하는 의도가 있으실까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UX 때문에 그렇게 했습니다!
예림님이 Figma 내에서 요청주신 요청 사항은 필수 항목을 입력하지 않고 넘어갔을 경우처럼 필수 항목에 대한 유효성 검사 체크였어요. 이외에도 활성화되지 않은 업로드 버튼을 클릭했을 경우라든가 에러 메시지가 뜬 필수 항목을 제대로 기입 및 업로드 했을 경우에 떴던 에러 메시지가 사라지는 등 추가적인 처리를 해줘야 해서 이렇게 처리했습니다!
혹여 수정을 원하시는 부분 있으면 알려주세요 :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아하 설명감사합니다..! 따로 수정 사항은 없습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넵넵 궁금하신 부분 있으시면 언제든 질문 주세요. 저도 답변드릴 때 복기하게 돼서 좋습니당 ㅎㅎ
<Icon name='Image' size='m' className='block md:hidden' /> | ||
<Icon name='Image' size='l' className='hidden md:block' /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이건 예림님께 문의드려도 괜찮을 것 같은데, 상세페이지의 버튼은 반응형에 관계없이 사이즈가 동일합니다..!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+) 이미지 업로드에 관계없이 보이는 버튼인가요??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 엇 업로드 페이지는 아이콘 사이즈가 다릅니다. 의도를 갖고 하신 것 같은데 흠 질문드려 볼게용
- 이미지 업로드했을 때 보여야 하는데, 아직 업로드 후의 로직 작성을 안 해서 지금은 업로드 관계없이 보이도록 해두었습니다!
style={{ | ||
border: '2px dashed transparent', | ||
borderImage: | ||
'repeating-linear-gradient(45deg, gray 0, gray 10px, transparent 10px, transparent 20px) 1', | ||
}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이부분은 왜 인라인으로 스타일링 되어있나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
예림님이 디자인하신 UI(이미지 업로드 섹션의 Outline 스타일)는 style 속성으로밖에 구현이 안 돼서 인라인으로 스타일링 하였습니다! Tailwind CSS로는 긴 점선 처리가 불가해서요 🥲
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아하..! 저도 긴 점선 처리가 필요해서 참고하겠습니다... 🙏🏻
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넹 가져다 쓰시죵
textareaRef.current.style.height = 'auto'; | ||
textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
height를 두번 변경하고 있는데 어떤 이유가 있을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
textareaRef.current.style.height = 'auto';
- 사용자가
minHeight: '256px'
을 넘겨서 작성하다가 내용을 삭제하여textarea
를minHeight
높이로 돌려놨을 경우, 그 높이에 맞게 높이가 줄어듭니다!
textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;
minHeight: '256px'
을 넘길 경우, 그에 맞게textarea
의 높이가 자동으로 늘어납니다 :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
설명하신 내용과 제가 생각하는 fit-content와 유사하다는 생각이 드는데 fit-content 로는 한계가 있나요..?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 h-fit
(fit-content
)은 스타일이 최초 렌더링 시에만 적용돼서 사용자의 입력에 따라 동적으로 변화하는 높이를 처리하기에는 한계가 있어요 🥲
사용자의 입력값에 따라 동적으로 높이가 계속해서 바뀌어야 하기 때문에 CSS가 아닌, JS로 구현했습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아하... 동적으로 바뀌어야하는 거면 다현님께서 구현하신 방법이 맞는 것 같습니다..! 답변 감사합니다-!
📝 작업 내용
1. 디자인 시스템 적용
OvalButton
UploadShare
아이콘 추가)FilterDropdown
Input
placeholder
추가2. 작품 업로드 페이지에서만 사용하는 UI 구축
Image
아이콘 추가)disabled
처리disable
버튼 만들어야 함 ⇒ 디자인 시스템 버튼 아님 (색상 다름)*hover:cursor-not-allowed*
type
이 'textarea'인지 아닌지에 따라 렌더링이 분기 처리 중 → textarea, input 따로 분리3. 모바일 비율에 따른 반응형 적용
📸 스크린샷 (선택)