Skip to content

Commit

Permalink
add pending state with Chip dosplaying it
Browse files Browse the repository at this point in the history
  • Loading branch information
andrii-i committed Nov 1, 2022
1 parent 3671b29 commit 7a239d0
Showing 1 changed file with 21 additions and 10 deletions.
31 changes: 21 additions & 10 deletions src/components/confirm-buttons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import {
DialogTitle,
DialogContent,
DialogContentText,
DialogActions
DialogActions,
Chip
} from '@mui/material';
import { useTranslator } from '../hooks';

Expand All @@ -17,8 +18,10 @@ export const ConfirmButton = (props: {
dialogConfirmText: string;
variant?: 'text' | 'contained' | 'outlined';
errorColor?: boolean;
pendingConfirmText?: string;
}): JSX.Element => {
const [open, setOpen] = useState(false);
const [pendingConfirm, setPendingConfirm] = useState(false);

const trans = useTranslator('jupyterlab');

Expand All @@ -28,13 +31,17 @@ export const ConfirmButton = (props: {

return (
<>
<Button
variant={props.variant ?? 'contained'}
color={props.errorColor ? 'error' : 'primary'}
onClick={_ => setOpen(true)}
>
{props.title}
</Button>
{props.pendingConfirmText && pendingConfirm ? (
<Chip label={props.pendingConfirmText} />
) : (
<Button
variant={props.variant ?? 'contained'}
color={props.errorColor ? 'error' : 'primary'}
onClick={_ => setOpen(true)}
>
{props.title}
</Button>
)}
<Dialog open={open} onClose={handleClose}>
<DialogTitle>{props.title}</DialogTitle>

Expand All @@ -55,9 +62,11 @@ export const ConfirmButton = (props: {
<Button
variant="contained"
color="error"
onClick={_ => {
onClick={async _ => {
handleClose();
props.handleConfirm();
setPendingConfirm(true);
await props.handleConfirm();
setPendingConfirm(false);
}}
>
{props.dialogConfirmText}
Expand All @@ -80,6 +89,7 @@ export const ConfirmDeleteButton = (props: {
title={props.title}
dialogText={props.dialogText}
dialogConfirmText={trans.__('Delete')}
pendingConfirmText={trans.__('Deleting')}
errorColor
/>
);
Expand All @@ -97,6 +107,7 @@ export const ConfirmStopButton = (props: {
title={props.title}
dialogText={props.dialogText}
dialogConfirmText={trans.__('Stop')}
pendingConfirmText={trans.__('Stopping')}
variant="outlined"
/>
);
Expand Down

0 comments on commit 7a239d0

Please sign in to comment.