-
Notifications
You must be signed in to change notification settings - Fork 0
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
[Feature/BAR-36] 모달 컴포넌트 개발 #21
Conversation
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.
수고하셨습니당~ 👍🏻
Button 컴포넌트는 공통화가 빨리 필요해보이는데 제가 빠르게 만들까요??
📌 추가로 portal 관련 내용이 보이지 않는데, 해당 Modal 컴포넌트는 현재 portal로 구현된 게 맞을까요?
interface ModalContainerProps { | ||
title: string; | ||
firstButtonProps?: ModalButtonProps; | ||
secondButtonProps?: ModalButtonProps; | ||
} |
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.
단순 의견;
first, second 보다 left, right이 더 명시적으로 보일 것 같습니당
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.
@dmswl98
버튼이 1개만 존재하는 경우는 아직 없지만, 그런 형태가 들어온다고 생각해봤을 때는 first, second
라는 명명이 좋을 것 같다고 생각했는데 혹시 이 의견에 대해서는 어떻게 생각하시나요!?
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.
first, second는 2개 이상의 버튼을 내포할 수 있다고 생각됩니다 !
보여주신 형태는 ConfirmModal
의 형태로 파악되는데 만약 한 개만 필요한 경우를 고려한다면 차라리 confirm
, cancel
등의 네이밍은 어떨까용 ?
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.
first, second는 2개 이상의 버튼을 내포할 수 있다고 생각됩니다 !
보여주신 형태는
ConfirmModal
의 형태로 파악되는데 만약 한 개만 필요한 경우를 고려한다면 차라리confirm
,cancel
등의 네이밍은 어떨까용 ?
이 의견도 좋다고 생각합니다!
@@ -1,10 +1,10 @@ | |||
{ | |||
"compilerOptions": { | |||
"strict": true, |
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.
😭
secondButtonProps?: ModalButtonProps; | ||
} | ||
|
||
const ModalContainer = ({ |
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.
현재 디자인 상으로 Modal 타입이 여러 가지라,
해당 컴포넌트 내부에서 모든 content 요소들을 prop으로 받아서 컴포넌트 내부에서 분기 처리하여 그려내기 보다,
compound pattern으로 설계해 content는 children으로 받아서 그려내는 방식으로 구현되면 다양한 Modal 컴포넌트들에 대응이 쉬울 것 같아요.
제가 생각했던 Modal 컴포넌트의 대략적인 사용 코드는 다음과 같아요.
const LoginModal = () => {
return (
<Modal>
<h1>바로 시작하기</h1>
<Button>구글 로그인</Button>
<Button>카카오 로그인</Button>
</Modal>
)
}
<button | ||
type="button" | ||
className={styles.button} | ||
style={assignInlineVars({ | ||
[styles.buttonColor]: firstButtonColor, | ||
[styles.buttonBackgroundColor]: firstButtonBackgroundColor, | ||
})} | ||
onClick={onClickFirstButton} | ||
> | ||
{firstButtonText} | ||
</button> |
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.
Button 컴포넌트도 따로 공통 컴포넌트로 만들면 좋을 것 같습니다.
const DeleteArticle = () => { | ||
return ( | ||
<ModalContainer | ||
title="해당 글을 삭제할까요?" | ||
secondButtonProps={{ | ||
text: '삭제하기', | ||
onClick: () => {}, | ||
}} | ||
> | ||
{'삭제한 글은 복구할 수 없어요!\n삭제하시겠어요'} | ||
</ModalContainer> | ||
); | ||
}; |
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 DeleteArticle = () => { | |
return ( | |
<ModalContainer | |
title="해당 글을 삭제할까요?" | |
secondButtonProps={{ | |
text: '삭제하기', | |
onClick: () => {}, | |
}} | |
> | |
{'삭제한 글은 복구할 수 없어요!\n삭제하시겠어요'} | |
</ModalContainer> | |
); | |
}; | |
const DeleteArticle = () => { | |
return ( | |
<ModalContainer> | |
<ModalHeader> | |
<h1>해당 글을 삭제할까요?</h1> | |
</ModalHeader> | |
<ModalContent> | |
<p>{'삭제한 글은 복구할 수 없어요!\n삭제하시겠어요'}</p> | |
</ModalContent> | |
<ModalFooter> | |
<button>취소</button> | |
<button>삭제하기</button> | |
</ModalFooter> | |
</ModalContainer> | |
); | |
}; |
추상화가 된다면 이렇게 활용할 수 있습니다!
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,10 +1,10 @@ | |||
{ | |||
"compilerOptions": { | |||
"strict": true, |
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.
Modal.tsx
가 하나의 파일에서 너무 많은 일을 하고 있는것 같습니다 !
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.
디자인적 요소 (버튼 등)를 포함하지 않은 모달이 존재하면 더 좋을것 같아요
@dmswl98 |
@wonjin-dev @dmswl98 포탈 컴포넌트는 툴팁 PR에 존재하는 컴포넌트 기반으로 작성했습니다. 처음에 포탈을 쓰지 않았던 이유는, 제안해주신 모달의 상세한 기능 추가 + 우측의 X 버튼 추가 + 버튼 컴포넌트 적용은 별도 PR에서 진행될 예정입니다. 이때 recipe를 활용한 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.
정말 고생하셨습니다 ㅎㅎ 개인적으로는 해당 PR은 초안으로 요정도면 머지해도 좋다고 생각합니다 !!
추가적으로 금일 저녁에 모달 전역 상태 관리
에 대해서 얘기 나눠보면 좋을것 같습니다 !
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.
헉 제가 approve를 남기지 않았군요... 수고하셨습니당
Summary
To Reviewers
src/components/Modal/components
하위에 구현하는 형태로 설계하였습니다. 각 모달 컴포넌트는 자신만의 키값으로 구분됩니다.button
에 대한 공통 컴포넌트 개발은 이후 진행할 예정입니다. 모달의 버튼도 이때 함께 수정할 계획입니다.How To Test