import { useState, useEffect } from 'react'; import { MdClose, MdDelete } from 'react-icons/md'; import clsx from 'clsx'; interface ConfirmDeleteBtnProps { onDelete: () => void; size?: 'sm' | 'md' | 'lg'; position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'; className?: string; } const ConfirmDeleteBtn: React.FC = ({ onDelete, size = 'sm', position = 'top-right', className }) => { const [showConfirm, setShowConfirm] = useState(false); useEffect(() => { const handleClickOutside = () => setShowConfirm(false); if (showConfirm) { document.addEventListener('click', handleClickOutside); return () => document.removeEventListener('click', handleClickOutside); } }, [showConfirm]); const handleClick = (e: React.MouseEvent) => { e.stopPropagation(); setShowConfirm(true); }; const handleConfirm = (e: React.MouseEvent) => { e.stopPropagation(); onDelete(); setShowConfirm(false); }; const handleCancel = (e: React.MouseEvent) => { e.stopPropagation(); setShowConfirm(false); }; const sizeClasses = { sm: 'p-0.5', md: 'p-1', lg: 'p-1.5' }; const iconSizes = { sm: 14, md: 16, lg: 18 }; const positionClasses = { 'top-right': '-right-1 -top-1', 'top-left': '-left-1 -top-1', 'bottom-right': '-right-1 -bottom-1', 'bottom-left': '-left-1 -bottom-1' }; return (
e.stopPropagation()} > {!showConfirm && ( )} {showConfirm && (
)}
); }; export default ConfirmDeleteBtn;