High Order Component for Beautiful React Dialog
This enables any React Dialog component to be callable.
constisConfirmed=awaitconfirmation({title: 'Title',body: 'Body',});https://uraway.github.io/react-confirmable
yarn add react-confirmable
- Create your Dialog component:
WrappedComponentProps has following properties:
- show: if
true, modal will open - confirm: callback function which closes modal, returns
true - abort: callback function which closes modal, returns
false
importModalfrom'react-bootstrap/Modal';importButtonfrom'react-bootstrap/Button';import{ReactNode}from'react';import{WrappedComponentProps}from'react-confirmable';import'bootstrap/dist/css/bootstrap.min.css';typeProps={title: string,body: ReactNode,};constBaseModal=({
show,
confirm,
abort,
title,
body,}: Props&WrappedComponentProps)=>(<divclassName="static-modal"><Modalshow={show}onHide={abort}backdrop><Modal.Header><Modal.Title>{title}</Modal.Title></Modal.Header><Modal.Body>{body}</Modal.Body><Modal.Footer><Buttonid="cancel"onClick={abort}>
Cancel
</Button><Buttonid="confirm"className="button-l"onClick={confirm}>
Confirm
</Button></Modal.Footer></Modal></div>);- Wrap your Dialog component with
withConfirmation:
import{withConfirmation}from'react-confirmable';constConfirmationModal=withConfirmation(BaseModal);- Create
confirmationfunction withcreateConfirmation. It accepts any props passing to your Dialog component:
import{createConfirmation}from'react-confirmable';constconfirmation=(props: Props): Promise<boolean>=>{returncreateConfirmation(ConfirmationModal,props);};- Use
confirmation. Whenconfirmis fired, it will resolvetrue. Whenabortis fired, it will resolvefalse:
constisConfirmed=awaitconfirmation({title: 'Title',body: 'Body',});Check more examples with Chakra UI, Material UI and React Bootstrap:
MIT License
