umami/src/components/common/ConfirmDeleteForm.tsx

36 lines
1.0 KiB
TypeScript
Raw Normal View History

2023-07-30 09:11:26 +02:00
import { useState } from 'react';
import { Button, LoadingButton, Form, FormButtons } from 'react-basics';
import useMessages from 'components/hooks/useMessages';
2023-07-30 09:11:26 +02:00
2023-11-13 23:12:05 +01:00
export interface ConfirmDeleteFormProps {
name: string;
onConfirm?: () => void;
onClose?: () => void;
}
export function ConfirmDeleteForm({ name, onConfirm, onClose }: ConfirmDeleteFormProps) {
2023-07-30 09:11:26 +02:00
const [loading, setLoading] = useState(false);
const { formatMessage, labels, messages, FormattedMessage } = useMessages();
const handleConfirm = () => {
setLoading(true);
onConfirm();
};
return (
<Form>
<p>
<FormattedMessage {...messages.confirmDelete} values={{ target: <b>{name}</b> }} />
</p>
<FormButtons flex>
2023-08-25 22:32:24 +02:00
<LoadingButton isLoading={loading} onClick={handleConfirm} variant="danger">
2023-07-30 09:11:26 +02:00
{formatMessage(labels.delete)}
</LoadingButton>
<Button onClick={onClose}>{formatMessage(labels.cancel)}</Button>
</FormButtons>
</Form>
);
}
export default ConfirmDeleteForm;