ConfirmDialog
ConfirmDialog
컴포넌트는 사용자의 액션이나 선택이 필요한 상황에서 사용되는 인터페이스를 제공해요. 확인과 취소, 두 개의 버튼을 통해 사용자가 명확한 선택을 할 수 있도록 도와줘요.
사용 예제
기본 사용법
ConfirmDialog
컴포넌트의 기본적인 구성은 제목(title
), 설명(description
), 취소 버튼(cancelButton
), 확인 버튼(confirmButton
)으로 이루어져 있어요. open
상태와onClose
핸들러를 함께 사용하여 ConfirmDialog
컴포넌트의 표시 여부를 제어할 수 있어요.
외부 딤 클릭 제어하기
closeOnDimmerClick
속성을 통해 ConfirmDialog
컴포넌트 외부(딤) 영역 클릭 시의 동작을 제어할 수 있어요. 기본값은 true
이며, false
로 설정하면 외부 클릭으로 ConfirmDialog
컴포넌트가 닫히지 않고, Wiggle 애니메이션을 보여줘요.
긴 콘텐츠 처리하기
ConfirmDialog
컴포넌트는 다양한 길이의 콘텐츠를 자연스럽게 표시할 수 있어요.
긴 설명 사용하기
설명이 길 경우 스크롤이 자동으로 생성되어 모든 내용을 확인할 수 있어요.
긴 버튼 텍스트 사용하기
버튼의 텍스트가 길어지면 버튼의 레이아웃이 자동으로 조정돼요. 버튼의 텍스트가 짧을 때는 가로로 나란히 배치되지만, 텍스트가 길어지면 세로로 쌓이면서 각 버튼이 전체 너비를 사용해요.
설명 없는 ConfirmDialog
컴포넌트
간단한 확인이 필요한 경우 제목과 버튼들만으로도 구성할 수 있어요.
특정 DOM 요소에 렌더링하기
ConfirmDialog
컴포넌트는 기본적으로 document.body
에 렌더링이 되지만, portalContainer
속성을 사용하면 렌더링 위치를 변경할 수 있어요. 이는 특히 z-index
관련 이슈나 특별한 레이아웃 요구사항이 있을 때 유용해요.
인터페이스
ConfirmDialogProps
속성 | 기본값 | 타입 |
---|---|---|
open | - | false |true `ConfirmDialog` 컴포넌트의 표시 여부를 결정해요. `true`일 때는 `ConfirmDialog` 컴포넌트가 화면에 표시되고, `false`일 때는 `ConfirmDialog` 컴포넌트가 숨겨져요. |
title | - | React.ReactNode `ConfirmDialog` 컴포넌트의 제목이에요. |
description | - | React.ReactNode `ConfirmDialog` 컴포넌트의 내용을 설명하는 텍스트나 컴포넌트를 나타낼 수 있어요. |
cancelButton | - | React.ReactNode `ConfirmDialog` 컴포넌트의 취소 버튼이에요. |
confirmButton | - | React.ReactNode `ConfirmDialog` 컴포넌트의 확인 버튼이에요. |
closeOnDimmerClick | true | false |true 딤(배경) 클릭 시 `ConfirmDialog` 컴포넌트를 닫을지 여부를 결정해요. `true`로 설정하면 사용자가 `ConfirmDialog` 컴포넌트 외부를 클릭했을 때 `ConfirmDialog` 컴포넌트가 닫혀요. |
closeOnBackEvent | true | false |true 뒤로가기 이벤트가 발생했을 때 `ConfirmDialog` 컴포넌트를 닫을지 여부를 결정해요. `true`로 설정하면 사용자가 뒤로가기를 눌렀을 때 `ConfirmDialog` 컴포넌트가 닫혀요. |
onClose | - | () => void `ConfirmDialog` 컴포넌트가 닫힐 때 호출되는 콜백 함수에요. `closeOnDimmerClick`이 `true`이어도 `onClose`에 함수를 전달하지 않으면 `ConfirmDialog` 컴포넌트가 닫히지 않아요. `ConfirmDialog` 컴포넌트를 닫으려면 반드시 `onClose` 함수를 전달해야 해요. |
onEntered | - | () => void `ConfirmDialog` 컴포넌트가 완전히 열린 후 호출되는 콜백 함수에요. `ConfirmDialog` 컴포넌트가 열리는 애니메이션이 완료된 후에 호출돼요. |
onExited | - | () => void `ConfirmDialog` 컴포넌트가 완전히 닫힌 후 호출되는 콜백 함수에요. `ConfirmDialog` 컴포넌트가 닫히는 애니메이션이 완료된 후에 호출돼요. |
portalContainer | document.body | HTMLElement `ConfirmDialog` 컴포넌트가 렌더링될 컨테이너를 지정해요. `portalContainer` 속성을 사용하면 `ConfirmDialog` 컴포넌트가 렌더링될 DOM 요소를 지정할 수 있어요. 기본적으로는 `document.body`에 렌더링 되지만, 특정 DOM 요소를 지정하여 렌더링 위치를 변경할 수 있어요. 이는 특히 `z-index` 관련 이슈나 특별한 레이아웃 요구사항이 있을 때 유용해요. |
ConfirmDialogTitleProps
속성 | 기본값 | 타입 |
---|---|---|
as | 'h3' | string `ConfirmDialog` 컴포넌트 제목의 HTML 태그를 지정해요. |
color | adaptive.grey800 | string 제목의 색상을 지정해요. 기본적으로 `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` 두께가 적용돼요. |
ConfirmDialogDescriptionProps
속성 | 기본값 | 타입 |
---|---|---|
as | 'h3' | string 설명의 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` 두께가 적용돼요. |
ConfirmDialogCancelButtonProps
속성 | 기본값 | 타입 |
---|---|---|
type | 'dark' | "primary" |"danger" |"light" |"dark" 버튼의 타입을 지정해요. 기본적으로 `dark` 타입이 적용돼요. |
style | 'weak' | "fill" |"weak" 버튼의 스타일을 지정해요. 기본적으로 `weak` 스타일이 적용돼요. |
size | 'large' | "medium" |"big" |"large" |"tiny" 버튼의 크기를 지정해요. 기본적으로 `large` 크기가 적용돼요. |
ConfirmDialogConfirmButtonProps
Button 컴포넌트를 확장하여 제작했어요. Button 컴포넌트의 모든 속성을 사용할 수 있어요.
속성 | 기본값 | 타입 |
---|---|---|
size | 'large' | "medium" |"big" |"large" |"tiny" 버튼의 크기를 지정해요. 기본적으로 `large` 크기가 적용돼요. |