AlertDialog
AlertDialog
컴포넌트는 사용자에게 중요한 정보를 전달하고 단일 확인 버튼을 사용해서 알림을 닫을 수 있는 인터페이스를 제공해요. 주로 작업 완료 알림이나 상태 변경 알림 등 사용자에게 피드백을 제공할 때 사용해요.
사용 예제
기본 사용법
AlertDialog
컴포넌트의 기본적인 구성은 제목(title
), 설명(description
), 확인 버튼(alertButton
)으로 이루어져 있어요. open
상태와 onClose
핸들러를 함께 사용하여 AlertDialog
컴포넌트의 표시 여부를 제어할 수 있어요.
외부 딤 클릭 제어하기
closeOnDimmerClick
속성을 사용해서 AlertDialog
컴포넌트의 바깥 영역을 클릭할 때의 동작을 제어할 수 있어요. 기본값은 true
이며, false
로 설정하면 외부 클릭으로 AlertDialog
컴포넌트가 닫히지 않고, Wiggle 애니메이션을 보여줘요.
긴 콘텐츠 처리하기
AlertDialog
컴포넌트는 다양한 길이의 콘텐츠를 자연스럽게 표시할 수 있어요.
긴 제목 사용하기
제목이 길어도 자연스럽게 줄 바꿈 되어 표시돼요.
긴 설명 사용하기
설명이 길 때 스크롤이 자동으로 생성되어 모든 내용을 확인할 수 있어요.
긴 버튼 텍스트(레이블) 사용하기
버튼의 텍스트가 길어도 레이아웃이 깨지지 않고 자연스럽게 표시돼요.
설명이 없는 AlertDialog
컴포넌트
간단한 알림일 때는 제목과 버튼만으로도 구성할 수 있어요.
특정 DOM 요소에 렌더링하기
AlertDialog
컴포넌트는 기본적으로 document.body
에 렌더링이 되지만, portalContainer
속성을 사용하면 렌더링 위치를 변경할 수 있어요. 이는 특히 z-index
관련 이슈나 특별한 레이아웃 요구사항이 있을 때 유용해요.
인터페이스
AlertDialogProps
속성 | 기본값 | 타입 |
---|---|---|
open | - | false |true `AlertDialog` 컴포넌트의 표시 여부를 결정해요. `true`일 때는 `AlertDialog` 컴포넌트가 화면에 표시되고, `false`일 때는 `AlertDialog` 컴포넌트가 숨겨져요. |
title | - | React.ReactNode `AlertDialog` 컴포넌트의 제목이에요. |
description | - | React.ReactNode `AlertDialog` 컴포넌트의 내용을 설명하는 텍스트나 컴포넌트를 나타낼 수 있어요. |
alertButton | - | React.ReactNode `AlertDialog` 컴포넌트의 확인 버튼이에요. |
closeOnDimmerClick | true | false |true 배경을 클릭할 때 `AlertDialog` 컴포넌트를 닫을지 여부를 설정해요. `true`로 설정하면 사용자가 `AlertDialog` 컴포넌트 외부를 클릭했을 때 `AlertDialog` 컴포넌트가 닫혀요. |
closeOnBackEvent | true | false |true 뒤로가기 이벤트가 발생했을 때 `AlertDialog` 컴포넌트를 닫을지 여부를 결정해요. `true`로 설정하면 사용자가 뒤로가기를 눌렀을 때 `AlertDialog` 컴포넌트가 닫혀요. |
onClose | - | () => void `AlertDialog` 컴포넌트가 닫힐 때 호출되는 콜백 함수에요. `closeOnDimmerClick`이 `true`여도 `onClose`에 함수를 전달하지 않으면 `AlertDialog` 컴포넌트가 닫히지 않아요. `AlertDialog` 컴포넌트를 닫으려면 반드시 `onClose` 함수를 전달해야 해요. |
onEntered | - | () => void `AlertDialog` 컴포넌트가 완전히 열린 후 호출되는 콜백 함수에요. `AlertDialog` 컴포넌트가 열리는 애니메이션이 완료된 후에 호출돼요. |
onExited | - | () => void `AlertDialog` 컴포넌트가 완전히 닫힌 후 호출되는 콜백 함수에요. `AlertDialog` 컴포넌트가 닫히는 애니메이션이 완료된 후에 호출돼요. |
portalContainer | document.body | HTMLElement `AlertDialog` 컴포넌트가 렌더링될 컨테이너를 지정해요. `portalContainer` 속성을 사용하면 `AlertDialog` 컴포넌트가 렌더링될 DOM 요소를 지정할 수 있어요. 기본적으로는 `document.body`에 렌더링 되지만, 특정 DOM 요소를 지정하여 렌더링 위치를 변경할 수 있어요. 이는 특히 `z-index` 관련 이슈나 특별한 레이아웃 요구사항이 있을 때 유용해요. |
AlertDialogTitleProps
속성 | 기본값 | 타입 |
---|---|---|
as | 'h3' | string `AlertDialog` 컴포넌트 제목의 HTML 태그를 지정해요. |
color | adaptive.grey800 | string `AlertDialog` 컴포넌트 제목의 색상을 지정해요. 기본적으로 `adaptive.grey800` 색상이 사용되며, 다른 색상으로 변경할 수 있어요. |
typography | 't4' | "t1" |"st1" |"st2" |"st3" |"t2" |"st4" |"st5" |"st6" |"t3" |"st7" |"t4" |"st8" |"st9" |"t5" |"st10" |"t6" |"st11" |"t7" |"st12" |"st13" 제목의 타이포그래피를 지정해요. 기본적으로 `t4` 타이포그래피가 적용돼요. |
fontWeight | 'bold' | "regular" |"medium" |"semibold" |"bold" 제목의 글꼴 두께를 지정해요. 기본적으로 `bold` 두께가 적용돼요. |
AlertDialogDescriptionProps
속성 | 기본값 | 타입 |
---|---|---|
as | 'h3' | string `AlertDialog` 컴포넌트 설명의 HTML 태그를 지정해요. 기본적으로 `h3` 태그로 렌더링돼요. |
color | adaptive.grey600 | string 설명의 색상을 지정해요. 기본적으로 `adaptive.grey600` 색상이 적용돼요. |
typography | 't6' | "t1" |"st1" |"st2" |"st3" |"t2" |"st4" |"st5" |"st6" |"t3" |"st7" |"t4" |"st8" |"st9" |"t5" |"st10" |"t6" |"st11" |"t7" |"st12" |"st13" 설명의 타이포그래피를 지정해요. 기본적으로 `t6` 타이포그래피가 적용돼요. |
fontWeight | 'medium' | "regular" |"medium" |"semibold" |"bold" 설명의 글꼴 두께를 지정해요. 기본적으로 `medium` 두께가 적용돼요. |
AlertDialogAlertButtonProps
속성 | 기본값 | 타입 |
---|---|---|
size | 'medium' | "medium" |"xsmall" |"small" |"large" |"xlarge" |"xxlarge" 텍스트 버튼의 사이즈를 결정해요. |
color | colors.blue500 | string 버튼의 색상을 지정해요. 기본적으로 `colors.blue500` 색상이 적용돼요. |
fontWeight | 'bold' | "regular" |"medium" |"semibold" |"bold" 버튼의 글꼴 두께를 지정해요. 기본적으로 `bold` 두께가 적용돼요. |
variant | - | "arrow" |"underline" |"clear" 버튼의 변형을 지정해요. 'arrow', 'underline', 'clear' 중 하나를 선택할 수 있어요. |