diff --git a/README.md b/README.md index 7a3ad6656..82a1c3b4c 100644 --- a/README.md +++ b/README.md @@ -42,24 +42,24 @@ Please star ⭐ the repo to support us! 😀 ### Introduction -Welcome to OpenSign, the premier open-source docusign alternative - document e-signing solution designed to provide a secure, reliable, and free alternative to commercial platforms like DocuSign, PandaDoc, SignNow, Adobe Sign, Smartwaiver, SignRequest, HelloSign & Zoho sign. Developed under the OpenSignLabs organization, our mission is to democratize the e-signing process, making it accessible and straightforward for everyone. +Welcome to OpenSign, the premier open source docusign alternative - document e-signing solution designed to provide a secure, reliable and free alternative to commercial esign platforms like DocuSign, PandaDoc, SignNow, Adobe Sign, Smartwaiver, SignRequest, HelloSign & Zoho sign. Our mission is to democratize the e-signing process, making it accessible and straightforward for everyone. --- ### Features -- **Secure PDF E-Signing:** With the help of Robust encryption algorithms, OpenSign™ ensures maximum security, privacy & compatibility. -- **Annotate Documents:** OpenSign™ allows you to annotate PDF documents with an advanced signing pad that comes with hand drawn signatures support as well as uploaded images & saved signatures for the simplest signing experience. -- **User-Friendly Interface:** OpenSign™ was built while keeping Intuitive design in mind for ease of use. Features like "Sign yourself", "One click signatures" and "OpenSign Drive" makes it stand out of the crowd and even makes it better than a lot of so-called industry leaders. -- **Multi-signer Support:** OpenSign's ability to invite multiple signers for signing along with the ability to invite witnesses & being able to enforce signing in a sequence makes it the only open source solution that is fully loaded and allows it to compete head-to-head with established players. +- **Secure PDF E-Signing:** With the help of robust encryption algorithms, OpenSign™ ensures maximum security, privacy & compatibility. +- **Annotate Documents:** OpenSign™ allows you to annotate PDF documents with an advanced signing pad that allows hand drawn signatures, uploaded images, typed signatures & saved signatures for the simplest signing experience ever. +- **User-Friendly Interface:** OpenSign™ was built while keeping Intuitive design in mind for ease of use. Features like "Sign yourself", "Templates", "One click signatures" and "OpenSign™ Drive" makes it stand out of the crowd and even makes it better than a lot of so-called industry leaders. +- **Multi-signer Support:** OpenSign's ability to invite multiple signers for signing along with the ability to invite witnesses & being able to enforce signing in a sequence makes it the only open source solution that is fully loaded and allows it to compete head-to-head with established players in e-signature space. - **Email Unique Code(OTP) verification support for guest signers:** With OpenSign™, your documents are fully secure even when being signed by guest users. Guest signers can only sign the document after entering a unique code sent to their email address.  -- **"Expiring Docs" & "Rejection":** You can set documents to expire after certain number of days after which nobody will be able to sign it. Not just this, OpenSign also allows signers to reject signing a document. +- **"Expiring Docs" & "Rejection":** You can set documents to expire after certain number of days after which nobody will be able to sign. Not just this, OpenSign™ also allows signers to reject signing a document. - **Beautiful email templates:** All document signing invitations, completion notifications & reminders are formatted using great looking email templates. -- **PDF Template Creation(coming soon):** OpenSign™ allows you to create and store PDF document templates for repeated use thereby saving you a lot of time. -- **OpenSign™ Drive:** It is a centralised secure vault for your signed documents that makes storing, signing, organizing, sharing & achieving your docs a breeze. +- **PDF Template Creation:** OpenSign™ allows you to create and store PDF document templates for repeated use thereby saving you a lot of time & collect e-signatures seamlessly. +- **OpenSign™ Drive:** It is a centralised secure vault for your digital documents that makes storing, signing, organizing, sharing & achieving your docs a breeze. - **Audit Trails & completion certificate:** Being a security focused solution, OpenSign™ makes it a top priority to save detailed logs for tracking document activities along with time-stamps, IP addresses, email IDs & phone numbers. A completion certificate is generated as soon as document is completed which contains all the document related logs for added safety. -- **API Support(coming soon):** OpenSign™ API allows seamless integration into existing systems and software. APIs will soon be available as a cloud hosted solution. -- **Integrations:** Seamless integrations with various Cloud storage systems, CRMs & enterprise platforms is coming soon. +- **API Support:** OpenSign™ API allows seamless integration into existing systems and software. You can generate an API key from the app and refer the [docs](https://docs.opensignlabs.com) to start integrating it in your existing applications. +- **Integrations:** Seamless integrations with various Cloud storage systems, CRMs & enterprise platforms is available. We also have a Zapier integration that allows you to integrate it with virtually any application. @@ -76,7 +76,7 @@ Please refer to the [Installation Guide](INSTALLATION.md) for detailed instructi ### Usage -For comprehensive guidelines on how to use OpenSign, please consult our [User Manual](USAGE.md). +For comprehensive guidelines on how to use OpenSign™, please consult our [User Manual](USAGE.md). --- diff --git a/apps/OpenSign/src/components/dashboard/DashboardCard.js b/apps/OpenSign/src/components/dashboard/DashboardCard.js index 9b54c273e..b6e12579e 100644 --- a/apps/OpenSign/src/components/dashboard/DashboardCard.js +++ b/apps/OpenSign/src/components/dashboard/DashboardCard.js @@ -353,7 +353,7 @@ const DashboardCard = (props) => { -
+
diff --git a/apps/OpenSign/src/components/pdf/Placeholder.js b/apps/OpenSign/src/components/pdf/Placeholder.js index 0b292b58f..29ee1eca4 100644 --- a/apps/OpenSign/src/components/pdf/Placeholder.js +++ b/apps/OpenSign/src/components/pdf/Placeholder.js @@ -275,6 +275,7 @@ function Placeholder(props) { } }; const handleOnClickPlaceholder = () => { + props.setCurrWidgetsDetails && props.setCurrWidgetsDetails(props.pos); if (!props.isNeedSign) { props.setWidgetType(props.pos.type); } diff --git a/apps/OpenSign/src/components/pdf/PlaceholderType.js b/apps/OpenSign/src/components/pdf/PlaceholderType.js index 00e927429..58bdd0f14 100644 --- a/apps/OpenSign/src/components/pdf/PlaceholderType.js +++ b/apps/OpenSign/src/components/pdf/PlaceholderType.js @@ -307,6 +307,7 @@ function PlaceholderType(props) { return props.pos.SignUrl ? ( signimg signimg { data-tut="reactourFirst" onMouseEnter={() => setIsHover(ind)} onMouseLeave={() => setIsHover(null)} - className={props.sendInOrder && "dragCursor"} + className={ + props.sendInOrder + ? props.isMailSend + ? "disabled" + : "dragCursor" + : props.isMailSend && "disabled" + } style={ (!isMobile && isHover === ind) || props.isSelectListId === ind ? onHoverStyle(ind, obj?.blockColor) diff --git a/apps/OpenSign/src/components/pdf/RenderPdf.js b/apps/OpenSign/src/components/pdf/RenderPdf.js index 7e7cadef6..8d656d383 100644 --- a/apps/OpenSign/src/components/pdf/RenderPdf.js +++ b/apps/OpenSign/src/components/pdf/RenderPdf.js @@ -272,6 +272,7 @@ function RenderPdf({ unSignedWidgetId={unSignedWidgetId} setSelectWidgetId={setSelectWidgetId} selectWidgetId={selectWidgetId} + setCurrWidgetsDetails={setCurrWidgetsDetails} /> ) diff --git a/apps/OpenSign/src/components/pdf/SignPad.js b/apps/OpenSign/src/components/pdf/SignPad.js index 32f29bdfe..9103a3d8f 100644 --- a/apps/OpenSign/src/components/pdf/SignPad.js +++ b/apps/OpenSign/src/components/pdf/SignPad.js @@ -20,7 +20,9 @@ function SignPad({ isInitial, setIsInitial, setIsStamp, - widgetType + widgetType, + currWidgetsDetails, + setCurrWidgetsDetails }) { const [penColor, setPenColor] = useState("blue"); const allColor = ["blue", "red", "black"]; @@ -31,6 +33,7 @@ function SignPad({ const [signValue, setSignValue] = useState(""); const [textWidth, setTextWidth] = useState(null); const [textHeight, setTextHeight] = useState(null); + const [signatureType, setSignatureType] = useState("draw"); const fontOptions = [ { value: "Fasthand" }, { value: "Dancing Script" }, @@ -48,19 +51,11 @@ function SignPad({ `Parse/${localStorage.getItem("parseAppId")}/currentUser` ); const jsonSender = JSON.parse(senderUser); - const currentUserName = jsonSender && jsonSender.name; - useEffect(() => { - const trimmedName = currentUserName.trim(); - const firstCharacter = trimmedName.charAt(0); - const userName = isInitial ? firstCharacter : currentUserName; - setSignValue(userName); - setFontSelect("Fasthand"); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); //function for clear signature image const handleClear = () => { + setCurrWidgetsDetails({}); if (isTab === "draw") { if (canvasRef.current) { canvasRef.current.clear(); @@ -72,7 +67,7 @@ function SignPad({ } else if (isTab === "uploadImage") { setImage(""); } - setIsInitial(false); + // setIsInitial(false); }; //function for set signature url const handleSignatureChange = () => { @@ -100,27 +95,28 @@ function SignPad({ ) : ( <> @@ -17,17 +24,18 @@ const Tooltip = ({ children, id, message, url, iconColor }) => data-tooltip-content={message} className="z-50" > - {children ? ( - children - ) : ( + - )} + diff --git a/apps/OpenSign/src/styles/signature.css b/apps/OpenSign/src/styles/signature.css index 5e2ad5078..4a4f23646 100644 --- a/apps/OpenSign/src/styles/signature.css +++ b/apps/OpenSign/src/styles/signature.css @@ -496,7 +496,11 @@ overflow: hidden !important; text-overflow: ellipsis; } - +.disabled { + opacity: 0.5; /* Example: reduce opacity to visually indicate disabled state */ + pointer-events: none; /* Prevents mouse clicks and other events */ + /* background-color: #888; */ +} .useEmail { font-size: 10px; color: #424242;