ConfrimDialog
import { useState } from "react";
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog";
export const useConfirm = (
title: string,
description: string
): [() => JSX.Element, () => Promise<unknown>] => {
const [promise, setPromise] = useState<{
resolve: (value: boolean) => void;
} | null>(null);
const confirm = () =>
new Promise((resolve) => {
setPromise({ resolve });
});
const handleClose = () => {
setPromise(null);
};
const handleConfirm = () => {
promise?.resolve(true);
handleClose();
};
const handleCancel = () => {
promise?.resolve(false);
handleClose();
};
const ConfirmDialog = () => (
<Dialog open={promise !== null} onOpenChange={handleClose}>
<DialogContent>
<DialogHeader>
<DialogTitle>{title}</DialogTitle>
<DialogDescription>{description}</DialogDescription>
</DialogHeader>
<DialogFooter className="pt-2">
<Button variant="outline" onClick={handleCancel}>
Cancel
</Button>
<Button onClick={handleConfirm} variant={"destructive"}>
Confirm
</Button>
</DialogFooter>
</DialogContent>
</Dialog>
);
return [ConfirmDialog, confirm];
};Editor is loading...
Leave a Comment