import { useEffect, useState } from "react"; import { useToggle } from "@app/hooks"; import { Button } from "../Button"; import { FormControl } from "../FormControl"; import { Input } from "../Input"; import { Modal, ModalClose, ModalContent } from "../Modal"; type Props = { isOpen?: boolean; onClose?: () => void; onChange?: (isOpen: boolean) => void; deleteKey: string; title: string; subTitle?: string; onDeleteApproved: () => Promise; buttonText?: string; }; export const DeleteActionModal = ({ isOpen, onClose, onChange, deleteKey, onDeleteApproved, title, subTitle = "This action is irreversible!", buttonText = "Delete" }: Props): JSX.Element => { const [inputData, setInputData] = useState(""); const [isLoading, setIsLoading] = useToggle(); useEffect(() => { setInputData(""); }, [isOpen]); const onDelete = async () => { setIsLoading.on(); try { await onDeleteApproved(); } catch { setIsLoading.off(); } finally { setIsLoading.off(); } }; return ( { setInputData(""); if (onChange) onChange(isOpenState); }} > {" "} } onClose={onClose} >
{ evt.preventDefault(); if (deleteKey === inputData) onDelete(); }} > Type {deleteKey} to delete the resource } className="mb-0" > setInputData(e.target.value)} placeholder="Type to delete..." />
); };