Implement file remove dialogs
[arvados-workbench2.git] / src / components / confirmation-dialog / confirmation-dialog.tsx
diff --git a/src/components/confirmation-dialog/confirmation-dialog.tsx b/src/components/confirmation-dialog/confirmation-dialog.tsx
new file mode 100644 (file)
index 0000000..6e87416
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import * as React from "react";
+import { defaultTo, property } from 'lodash';
+import { Dialog, DialogTitle, DialogContent, DialogActions, Button, Typography, DialogContentText, CircularProgress } from "@material-ui/core";
+import { WithDialogProps } from "../../store/dialog/with-dialog";
+import { TextField } from "../text-field/text-field";
+
+export interface ConfirmationDialogDataProps {
+    title: string;
+    text: string;
+    cancelButtonLabel?: string;
+    confirmButtonLabel?: string;
+}
+
+export interface ConfirmationDialogProps {
+    onConfirm: () => void;
+}
+
+export const ConfirmationDialog = (props: ConfirmationDialogProps & WithDialogProps<ConfirmationDialogDataProps>) =>
+    <Dialog open={props.open}>
+        <DialogTitle>{props.data.title}</DialogTitle>
+        <DialogContent>
+            <DialogContentText>
+                {props.data.text}
+            </DialogContentText>
+        </DialogContent>
+        <DialogActions>
+            <Button
+                variant='flat'
+                color='primary'
+                onClick={props.closeDialog}>
+                {props.data.cancelButtonLabel || 'Cancel'}
+            </Button>
+            <Button
+                variant='contained'
+                color='primary'
+                type='submit'
+                onClick={props.onConfirm}>
+                {props.data.confirmButtonLabel || 'Ok'}
+            </Button>
+        </DialogActions>
+    </Dialog>;