ActiveConfirmDialog.tsx 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { atom, useAtom } from "jotai";
  2. import { actionClearCanvas } from "../actions";
  3. import { t } from "../i18n";
  4. import { jotaiScope } from "../jotai";
  5. import { useExcalidrawActionManager } from "./App";
  6. import ConfirmDialog from "./ConfirmDialog";
  7. export const activeConfirmDialogAtom = atom<"clearCanvas" | null>(null);
  8. export const ActiveConfirmDialog = () => {
  9. const [activeConfirmDialog, setActiveConfirmDialog] = useAtom(
  10. activeConfirmDialogAtom,
  11. jotaiScope,
  12. );
  13. const actionManager = useExcalidrawActionManager();
  14. if (!activeConfirmDialog) {
  15. return null;
  16. }
  17. if (activeConfirmDialog === "clearCanvas") {
  18. return (
  19. <ConfirmDialog
  20. onConfirm={() => {
  21. actionManager.executeAction(actionClearCanvas);
  22. setActiveConfirmDialog(null);
  23. }}
  24. onCancel={() => setActiveConfirmDialog(null)}
  25. title={t("clearCanvasDialog.title")}
  26. >
  27. <p className="clear-canvas__content"> {t("alerts.clearReset")}</p>
  28. </ConfirmDialog>
  29. );
  30. }
  31. return null;
  32. };