Skip to content

Commit 6bcf2db

Browse files
committed
feat: 모달 컴포넌트에 overlay 클릭 시 닫기 기능 props 추가
1 parent 59c85b8 commit 6bcf2db

File tree

2 files changed

+9
-0
lines changed
  • app/(sub)/capsule-detail
    • [invite-code]/[id]/letters/_components/letter-detail-modal
    • _components/modal

2 files changed

+9
-0
lines changed

app/(sub)/capsule-detail/[invite-code]/[id]/letters/_components/letter-detail-modal/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const LetterDetailModal = ({
2323
overlayClassName={styles.modalOverlay}
2424
contentClassName={styles.modalContent}
2525
fullScreenOnMobile={false}
26+
closeOnOverlayClick={true}
2627
>
2728
<section className={styles.container}>
2829
{imageUrl && (

app/(sub)/capsule-detail/_components/modal/index.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ interface ModalProps {
1212
overlayClassName?: string;
1313
contentClassName?: string;
1414
fullScreenOnMobile?: boolean;
15+
closeOnOverlayClick?: boolean;
1516
}
1617

1718
export default function Modal({
@@ -21,6 +22,7 @@ export default function Modal({
2122
overlayClassName,
2223
contentClassName,
2324
fullScreenOnMobile = true,
25+
closeOnOverlayClick = false,
2426
}: ModalProps) {
2527
useEffect(() => {
2628
const handleEscapeKey = (event: KeyboardEvent) => {
@@ -42,6 +44,11 @@ export default function Modal({
4244

4345
if (!isOpen) return null;
4446

47+
const handleOverlayClick = (event: React.MouseEvent<HTMLDivElement>) => {
48+
if (closeOnOverlayClick && event.target === event.currentTarget) {
49+
onClose();
50+
}
51+
};
4552

4653
const contentStyles = fullScreenOnMobile
4754
? `${styles.content} ${contentClassName || ""}`
@@ -50,6 +57,7 @@ export default function Modal({
5057
return createPortal(
5158
<div
5259
className={`${styles.overlay} ${overlayClassName || ""}`}
60+
onClick={handleOverlayClick}
5361
onKeyDown={(event) => {
5462
if (
5563
(event.key === "Enter" || event.key === " ") &&

0 commit comments

Comments
 (0)