diff options
Diffstat (limited to 'src/ForceRemoveModal.jsx')
-rw-r--r-- | src/ForceRemoveModal.jsx | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/ForceRemoveModal.jsx b/src/ForceRemoveModal.jsx new file mode 100644 index 0000000..5d55697 --- /dev/null +++ b/src/ForceRemoveModal.jsx @@ -0,0 +1,33 @@ +import React, { useState } from 'react'; +import { Button } from "@patternfly/react-core/dist/esm/components/Button"; +import { Modal } from "@patternfly/react-core/dist/esm/components/Modal"; +import { useDialogs } from "dialogs.jsx"; +import cockpit from 'cockpit'; + +const _ = cockpit.gettext; + +const ForceRemoveModal = ({ name, reason, handleForceRemove }) => { + const Dialogs = useDialogs(); + const [inProgress, setInProgress] = useState(false); + return ( + <Modal isOpen + showClose={false} + position="top" variant="medium" + titleIconVariant="warning" + onClose={Dialogs.close} + title={cockpit.format(_("Delete $0?"), name)} + footer={<> + <Button variant="danger" isDisabled={inProgress} isLoading={inProgress} + onClick={() => { setInProgress(true); handleForceRemove().catch(() => setInProgress(false)) }} + > + {_("Force delete")} + </Button> + <Button variant="link" isDisabled={inProgress} onClick={Dialogs.close}>{_("Cancel")}</Button> + </>} + > + {reason} + </Modal> + ); +}; + +export default ForceRemoveModal; |