With Ant Design
Learn how to use Ant Design’s Modal component together with overlay-kit.
Installation
Install the antd package.
shell
npm install overlay-kit antdBasic Usage
Ant Design Modal uses an open prop for visibility plus onCancel / onOk handlers. Passing close to both handlers lets overlay-kit manage the state.
import { OverlayProvider, overlay } from 'overlay-kit'; import { Button, Modal } from 'antd'; function App() { return ( <Button type="primary" onClick={() => { overlay.open(({ isOpen, close }) => ( <Modal title="Are you sure you want to continue?" open={isOpen} onCancel={close} onOk={close} cancelText="No" okText="Yes" /> )); }} > Open Confirm Dialog </Button> ); } export function Example() { return ( <OverlayProvider> <App /> </OverlayProvider> ); }
Receiving Async Results
With overlay.openAsync, you can tell whether the user pressed “OK” or “Cancel” through the resolved Promise.
import { useState } from 'react'; import { OverlayProvider, overlay } from 'overlay-kit'; import { Button, Modal } from 'antd'; function App() { const [result, setResult] = useState<boolean | null>(null); return ( <div> <p>Result: {result === null ? 'Not selected' : result ? 'Yes' : 'No'}</p> <Button type="primary" onClick={async () => { const confirmed = await overlay.openAsync<boolean>(({ isOpen, close }) => ( <Modal title="Are you sure you want to continue?" open={isOpen} onCancel={() => close(false)} onOk={() => close(true)} cancelText="No" okText="Yes" /> )); setResult(confirmed); }} > Open Confirm Dialog </Button> </div> ); } export function Example() { return ( <OverlayProvider> <App /> </OverlayProvider> ); }
Releasing Memory After Animation
Ant Design Modal fires an afterClose callback once the close animation completes. Passing unmount there keeps the animation visible while safely releasing overlay memory.
import { OverlayProvider, overlay } from 'overlay-kit'; import { Button, Modal } from 'antd'; function App() { return ( <Button type="primary" onClick={() => { overlay.open(({ isOpen, close, unmount }) => ( <Modal title="Are you sure you want to continue?" open={isOpen} onCancel={close} onOk={close} afterClose={unmount} cancelText="No" okText="Yes" /> )); }} > Open Confirm Dialog </Button> ); } export function Example() { return ( <OverlayProvider> <App /> </OverlayProvider> ); }