import * as React from "react"; import { Button } from "baseui/button"; import { Modal, ModalHeader, ModalBody, ModalFooter, ModalButton, } from "baseui/modal"; interface Props { children: (args: { isConfirmationOpen: boolean; toggleConfirm: (open?: boolean, cb?: () => any) => any; }) => React.ReactNode; } interface State { isConfirmationOpen: boolean; } class ModalStateContainer extends React.Component { state = { isConfirmationOpen: false, }; toggleConfirm = ( open = !this.state.isConfirmationOpen, cb: () => any = () => {}, ) => { this.setState({ isConfirmationOpen: open }, cb); }; render() { return this.props.children({ isConfirmationOpen: this.state.isConfirmationOpen, toggleConfirm: this.toggleConfirm, }); } } export default function Example() { const [isOpen, setIsOpen] = React.useState(false); return ( {({ isConfirmationOpen, toggleConfirm }) => ( setIsOpen(false)} isOpen={isOpen}> Hello world Proin ut dui sed metus pharetra hend rerit vel non mi. Nulla ornare faucibus ex, non facilisis nisl. Maecenas aliquet mauris ut tempus. setIsOpen(false)}> Cancel toggleConfirm(true)}> Okay toggleConfirm(false)} isOpen={isConfirmationOpen} > Confirm Confirm closing all. toggleConfirm(false)}> No { toggleConfirm(false, () => setIsOpen(false)); }} > Yes )} ); }