ユーザの選択を待つ子ウィンドウコンポーネント
OverlayProvider
の子孫で使用してください。OverlayProvider
はアプリケーション内で複数必要ありません。ModalBody
,ModalHeader
,ModalAlign
を必要に応じて利用できます。
import { FC, useState } from 'react'
import {
Button,
Modal,
ModalAlign,
ModalBody,
ModalHeader,
OverlayProvider,
} from '@charcoal-ui/react'
export const ExampleModal: FC = () => {
const [isOpen, setIsOpen] = useState(false)
return (
<>
<Button onClick={() => setIsOpen(true)}>open</Button>
<OverlayProvider>
<Modal
title="modal"
isOpen={isOpen}
onClose={() => setIsOpen(false)}
portalContainer={
typeof document !== 'undefined' ? document.body : undefined
}
>
<ModalBody>
<ModalHeader />
<ModalAlign>
<Button onClick={() => setIsOpen(false)}>close</Button>
</ModalAlign>
</ModalBody>
</Modal>
</OverlayProvider>
</>
)
}
name | description | type | default | required |
---|---|---|---|---|
isOpen | モーダルの開閉状態 | boolean | YES | |
onClose | バツボタンやオーバーレイをクリックした際や、ESCキーを押した際に呼ばれる関数 | () => void | YES | |
title | タイトル | string | YES | |
bottomSheet | モバイル向けに下からシート形式で表示するかどうか、"full"だと画面の高さに合わせて表示される | boolean | "full" | false | NO |
isDismissable | バツボタンを表示しモーダルを閉じれるようにする、かつモーダルの背景をクリックすることで閉じれるようにする | boolean | false | NO |
portalContainer | Next.jsで使用する際はdocument.bodyを渡す | HTMLElement | NO | |
size | モーダルのサイズ | "S" | "M" | "L" | "M" | NO |
zIndex | z-index | number | NO |