import Button from "@/components/Low/Button"; import { Module } from "@/interfaces"; import useExamEditorStore from "@/stores/examEditor"; import { Dialog, DialogPanel, DialogTitle, Transition, TransitionChild } from "@headlessui/react"; import { capitalize } from "lodash"; import React, { Fragment, useCallback, useEffect, useState } from "react"; interface Props { module: Module; isOpen: boolean; setIsOpen: React.Dispatch>; setNumberOfLevelParts: React.Dispatch>; } const ResetModule: React.FC = ({ module, isOpen, setIsOpen, setNumberOfLevelParts }) => { const [isClosing, setIsClosing] = useState(false); const [mounted, setMounted] = useState(false); const { dispatch } = useExamEditorStore(); useEffect(() => { if (isOpen) { setMounted(true); } }, [isOpen]); useEffect(() => { if (!isOpen && mounted) { const timer = setTimeout(() => { setMounted(false); setIsClosing(false); }, 300); return () => clearTimeout(timer); } }, [isOpen, mounted]); const blockMultipleClicksClose = useCallback(() => { if (isClosing) return; setIsClosing(true); setIsOpen(!isOpen); const timer = setTimeout(() => { setIsClosing(false); }, 300); return () => clearTimeout(timer); }, [isClosing, setIsOpen, isOpen]); if (!mounted && !isOpen) return null; const handleResetModule = () => { dispatch({ type: 'RESET_MODULE', payload: { module } }); setIsOpen(false); if (module === "level") { setNumberOfLevelParts(1); } } return ( setIsClosing(false)} beforeLeave={() => setIsClosing(true)} afterLeave={() => { setIsClosing(false); setMounted(false); }} > blockMultipleClicksClose()} className="relative z-50">
Reset {capitalize(module)} Module

Do you want to reset the {module} module?


This will reset all the current data in the {module} module and cannot be undone.

); } export default ResetModule;