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' 중 하나를 선택할 수 있어요. |