import React, { useEffect, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import { RootState } from '../../../store/store' import { FaCheck, FaSignature } from 'react-icons/fa' import { IoIosDocument } from 'react-icons/io' import { LuTableOfContents } from 'react-icons/lu' import { MdKeyboardArrowDown } from 'react-icons/md' import { RiResetLeftLine, RiResetRightLine } from 'react-icons/ri' import { fetchRecipients, toggleToTemplates, TRANSACTION_TEMPLATE_TOGGLE } from '../../../store/slices/selectedRecipientsSlice' import { fetchDocuments } from '../../../store/slices/documentSlice' import { useNavigate, useParams } from 'react-router-dom' import { Bounce, toast } from 'react-toastify' interface NavTwoProps { isFields: boolean; setIsFields: React.Dispatch> isSend: boolean | null; setIsSend: React.Dispatch> } interface FIT { label: string, value: number | null } const fitObj = [ { label: "Fit", value: "FIT" }, { label: "50%", value: "50" }, { label: "150%", value: "150" }, { label: "200%", value: "200" }, ] const NavTwo: React.FC = ({ isFields, setIsFields, isSend, setIsSend }) => { let transactionTemplateToggle = TRANSACTION_TEMPLATE_TOGGLE.TRANSACTIONS; const dispatch = useDispatch(); const params = useParams<{ accountId?: string; transactionId?: string; templateId?: string }>(); const accountId = params.accountId; let transactionId = params.transactionId if (!transactionId) { transactionTemplateToggle = TRANSACTION_TEMPLATE_TOGGLE.TEMPLATES; transactionId = params.templateId; dispatch(toggleToTemplates()); } if (!accountId || !transactionId) { window.location.href = "/"; return null; } const [transactionSaving, setTransactionSaving] = useState(false); const [dotCount, setDotCount] = useState(0); const [isFitDd, setIsFitDd] = useState(false) const [selFitIndx, setSelFitIndx] = useState(0); const navigate = useNavigate() const selectedRecipients = useSelector((state: RootState) => state.selectedRecipients.recipients) const selectedDocuments = useSelector((state: RootState) => state.documents.documents) useEffect(() => { selectedRecipients.length === 0 && dispatch(fetchRecipients({ accountId, transactionId })); selectedDocuments.length === 0 && dispatch(fetchDocuments({ accountId, transactionId })); }, []) const [nav2RecToggle, setNav2RecToggle] = useState(false); const [nav2DocToggle, setNav2DocToggle] = useState(false); function handleSend() { // dispatch(showLoader("Loading ...")); if (isSend === null) { setIsSend(false); } setIsSend(!isSend) if (transactionTemplateToggle === TRANSACTION_TEMPLATE_TOGGLE.TRANSACTIONS) { navigate(`/document-completion-screen/${accountId}/${transactionId}`) } else { navigate(`/templates`); toast.success("Template Saved...!", { position: "top-center", autoClose: 1500, hideProgressBar: false, closeOnClick: false, pauseOnHover: true, draggable: true, progress: undefined, theme: "light", transition: Bounce, }); } } const handleSetIsFields = (setTo: boolean) => { if (setTo !== isFields) setIsFields(setTo); } const zoom = (percentage: number, contentClass: string) => { const content = document.querySelector(`.${contentClass}`); if (content) { (content as HTMLElement).style.zoom = `${percentage}%`; } } useEffect(() => { let indx = fitObj[selFitIndx].value if (indx === "FIT") { indx = "100"; } zoom(Number(indx), 'zoom-con') }, [selFitIndx]) useEffect(() => { let timeoutId: number; const timeOutIn = 8000; const updateLabel = () => { if (document.visibilityState === 'visible') { setTransactionSaving(true); setTimeout(() => { setTransactionSaving(false); }, 4000) } timeoutId = setTimeout(updateLabel, timeOutIn); }; timeoutId = setTimeout(updateLabel, timeOutIn); // Cleanup on unmount return () => clearTimeout(timeoutId); }, []); useEffect(() => { if (!transactionSaving) return; const interval = setInterval(() => { setDotCount((prev) => (prev + 1) % 4); // Cycle through 0, 1, 2, 3 }, 500); // Update every 0.5s return () => clearInterval(interval); }, [transactionSaving]); const dots = '. '.repeat(dotCount); return ( <> {/* Nav Two - Oprions - START */}
{/* Left Side */}
handleSetIsFields(true)} className={`flex items-center gap-1 cursor-pointer text-xs px-2 py-1 rounded-sm ${isFields ? 'bg-slate-100' : ''}`}>

Fields

handleSetIsFields(false)} className={`flex items-center gap-1 cursor-pointer text-xs px-2 py-1 rounded-sm ${!isFields ? 'bg-slate-100' : ''}`}>

Pages

{/*

Reset

*/} {/*

Fit

*/}
setIsFitDd(false)} >
setIsFitDd(!isFitDd)} className='flex items-center gap-1 cursor-pointer text-xs px-2 py-1 rounded-sm'>

Fit

{isFitDd &&
{fitObj.map((val, indx) => { return (
setSelFitIndx(indx)} className='flex z-50 items-center justify-between gap-2 w-[70px] p-2 text-xs cursor-default hover:bg-slate-100'>

{val.label}

{selFitIndx === indx && }
) }) }
}

{transactionSaving ? `Saving ${dots}` : "Save"}

{/* Right Side - STARTS */}
{/* Documnt Nav */}
setNav2DocToggle(false)}>
setNav2DocToggle(!nav2DocToggle)} className='flex items-center gap-1 cursor-pointer text-xs px-2 py-1 rounded-sm'>

{selectedDocuments.length} Documents

{selectedDocuments.length && selectedDocuments.map((document, indx) => { return (
{/*

*/}

{document.name}

) })}
{/* Recipients Nav */}
setNav2RecToggle(false)}>
setNav2RecToggle(!nav2RecToggle)} className='flex items-center gap-1 cursor-pointer text-xs px-2 py-1 rounded-sm'>

{selectedRecipients.length} Recipients

{selectedRecipients.length && selectedRecipients.map((recipient, indx) => { return (

{recipient.firstName} {recipient.lastName} segfsdtzgszrdtgrs serdgvsrdgs dtrgv

) })}
{/* Send */}
handleSend()} className='flex items-center gap-2 cursor-pointer text-xs px-4 py-2 ml-3 rounded-sm bg-[var(--primary)]'>

{transactionTemplateToggle === TRANSACTION_TEMPLATE_TOGGLE.TEMPLATES ? "Save" : "Send"}

{/* Right Side - ENDS */}
{/* Nav Two - Oprions - End */} ) } export default NavTwo