// @flow import React from 'react'; import type { Node } from 'react'; import Button from 'component/button'; import Card from 'component/common/card'; import Spinner from 'component/spinner'; import { Modal } from 'modal/modal'; type Props = { title: string, subtitle?: string | Node, body?: string | Node, labelOk?: string, labelCancel?: string, hideCancel?: boolean, onConfirm: (closeModal: () => void, setIsBusy: (boolean) => void) => void, // --- perform --- doHideModal: () => void, }; export default function ModalConfirm(props: Props) { const { title, subtitle, body, labelOk, labelCancel, hideCancel, onConfirm, doHideModal } = props; const [isBusy, setIsBusy] = React.useState(false); function handleOnClick() { if (onConfirm) { onConfirm(doHideModal, setIsBusy); } } return ( <Modal isOpen type="card" onAborted={doHideModal}> <Card title={title} subtitle={subtitle} body={body} actions={ <div className="section__actions"> <Button button="primary" label={isBusy ? <Spinner type="small" /> : labelOk || __('OK')} disabled={isBusy} onClick={handleOnClick} /> {!hideCancel && ( <Button button="link" label={labelCancel || __('Cancel')} disabled={isBusy} onClick={doHideModal} /> )} </div> } /> </Modal> ); }