Skip to content

Commit 51edc33

Browse files
authored
Merge pull request #769 from OpenSignLabs/staging
v1.7.3
2 parents 741efff + bf307ab commit 51edc33

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+3168
-2103
lines changed

apps/OpenSign/package-lock.json

Lines changed: 158 additions & 149 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/OpenSign/package.json

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,20 @@
66
"@formkit/auto-animate": "^0.8.2",
77
"@radix-ui/themes": "^2.0.3",
88
"@react-pdf/renderer": "^3.4.4",
9-
"@reduxjs/toolkit": "^2.2.1",
10-
"axios": "^1.6.8",
9+
"@reduxjs/toolkit": "^2.2.5",
10+
"axios": "^1.7.2",
1111
"file-saver": "^2.0.5",
1212
"jwt-decode": "^4.0.0",
1313
"moment": "^2.30.1",
14-
"parse": "^4.3.1",
14+
"parse": "^5.1.0",
1515
"pdf-lib": "^1.17.1",
1616
"print-js": "^1.6.0",
1717
"radix-ui": "^1.0.1",
1818
"react": "^18.2.0",
1919
"react-bootstrap": "^2.10.2",
20+
"react-confetti": "^6.1.0",
2021
"react-cookie": "^7.1.4",
21-
"react-datepicker": "^6.4.0",
22+
"react-datepicker": "^6.9.0",
2223
"react-dnd": "^16.0.1",
2324
"react-dnd-html5-backend": "^16.0.1",
2425
"react-dnd-multi-backend": "^8.0.3",
@@ -28,24 +29,24 @@
2829
"react-helmet": "^6.1.0",
2930
"react-konva": "^18.2.10",
3031
"react-modal": "^3.16.1",
31-
"react-pdf": "^7.7.3",
32+
"react-pdf": "^8.0.2",
3233
"react-quill": "^2.0.0",
33-
"react-redux": "^9.1.0",
34+
"react-redux": "^9.1.2",
3435
"react-rnd": "^10.4.10",
3536
"react-router-dom": "^6.22.3",
3637
"react-scripts": "5.0.1",
3738
"react-scrollbars-custom": "^4.1.1",
3839
"react-select": "^5.8.0",
3940
"react-signature-canvas": "^1.0.6",
40-
"react-tooltip": "^5.26.3",
41+
"react-tooltip": "^5.26.4",
4142
"react-web-share": "^2.0.2",
4243
"reactour": "^1.19.3",
4344
"redux": "^5.0.1",
4445
"redux-thunk": "^3.1.0",
4546
"regex-parser": "^2.3.0",
46-
"serve": "^14.2.1",
47+
"serve": "^14.2.3",
4748
"styled-components": "^4.4.1",
48-
"web-vitals": "^2.1.4"
49+
"web-vitals": "^4.0.1"
4950
},
5051
"scripts": {
5152
"start": "serve -s build",
@@ -89,10 +90,10 @@
8990
"eslint": "^8.57.0",
9091
"eslint-plugin-prettier": "^4.2.1",
9192
"eslint-plugin-react": "^7.34.1",
92-
"lint-staged": "^15.2.2",
93+
"lint-staged": "^15.2.4",
9394
"postcss": "^8.4.38",
9495
"prettier": "^2.8.8",
9596
"pretty-quick": "^3.3.1",
96-
"tailwindcss": "^3.4.1"
97+
"tailwindcss": "^3.4.3"
9798
}
9899
}

apps/OpenSign/src/components/pdf/DefaultSignature.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function DefaultSignature({ defaultSignImg, xyPostion, setDefaultSignAlert }) {
1717
};
1818

1919
return (
20-
<div>
20+
<div data-tut="reactourThird">
2121
<div
2222
style={{
2323
background: themeColor,

apps/OpenSign/src/components/pdf/EditTemplate.js

Lines changed: 87 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
import React, { useState } from "react";
1+
import React, { useState, useEffect } from "react";
22
import "../../styles/AddUser.css";
3-
import { getFileName } from "../../constant/Utils";
3+
import { checkIsSubscribed, getFileName } from "../../constant/Utils";
4+
import PremiumAlertHeader from "../../primitives/PremiumAlertHeader";
5+
import Upgrade from "../../primitives/Upgrade";
6+
import { isEnableSubscription } from "../../constant/const";
47
// import SelectFolder from "../../premitives/SelectFolder";
58

69
const EditTemplate = ({ template, onSuccess }) => {
@@ -9,9 +12,21 @@ const EditTemplate = ({ template, onSuccess }) => {
912
Name: template?.Name || "",
1013
Note: template?.Note || "",
1114
Description: template?.Description || "",
12-
SendinOrder: template?.SendinOrder ? `${template?.SendinOrder}` : "false"
15+
SendinOrder: template?.SendinOrder ? `${template?.SendinOrder}` : "false",
16+
AutomaticReminders: template?.AutomaticReminders || false,
17+
RemindOnceInEvery: template?.RemindOnceInEvery || 5
1318
});
14-
19+
const [isSubscribe, setIsSubscribe] = useState(false);
20+
useEffect(() => {
21+
fetchSubscription();
22+
// eslint-disable-next-line react-hooks/exhaustive-deps
23+
}, []);
24+
const fetchSubscription = async () => {
25+
if (isEnableSubscription) {
26+
const getIsSubscribe = await checkIsSubscribed();
27+
setIsSubscribe(getIsSubscribe);
28+
}
29+
};
1530
const handleStrInput = (e) => {
1631
setFormData({ ...formData, [e.target.name]: e.target.value });
1732
};
@@ -25,12 +40,26 @@ const EditTemplate = ({ template, onSuccess }) => {
2540
e.preventDefault();
2641
e.stopPropagation();
2742
const isChecked = formData.SendinOrder === "true" ? true : false;
28-
const data = { ...formData, SendinOrder: isChecked };
43+
const AutoReminder = formData?.AutomaticReminders || false;
44+
45+
let reminderDate = {};
46+
if (AutoReminder) {
47+
const RemindOnceInEvery = parseInt(formData?.RemindOnceInEvery);
48+
const ReminderDate = new Date(template?.createdAt);
49+
ReminderDate.setDate(ReminderDate.getDate() + RemindOnceInEvery);
50+
reminderDate = { NextReminderDate: ReminderDate };
51+
}
52+
const data = { ...formData, SendinOrder: isChecked, ...reminderDate };
2953
onSuccess(data);
3054
};
31-
55+
const handleAutoReminder = () => {
56+
setFormData((prev) => ({
57+
...prev,
58+
AutomaticReminders: !formData.AutomaticReminders
59+
}));
60+
};
3261
return (
33-
<div className="addusercontainer">
62+
<div className="max-h-[300px] md:max-h-[400px] overflow-y-scroll p-[10px]">
3463
<div className="form-wrapper">
3564
<form onSubmit={handleSubmit}>
3665
<div>
@@ -128,6 +157,57 @@ const EditTemplate = ({ template, onSuccess }) => {
128157
<div style={{ fontSize: 12 }}>No</div>
129158
</div>
130159
</div>
160+
<div className="text-xs mt-2">
161+
{!isEnableSubscription && (
162+
<PremiumAlertHeader
163+
message={
164+
"Disable Auto reminder is free in beta, this feature will incur a fee later."
165+
}
166+
/>
167+
)}
168+
<span
169+
className={
170+
isSubscribe || !isEnableSubscription
171+
? "font-semibold"
172+
: "font-semibold text-gray-300"
173+
}
174+
>
175+
Auto reminder{" "}
176+
{!isSubscribe && isEnableSubscription && <Upgrade />}
177+
</span>
178+
<label
179+
className={`${
180+
isSubscribe || !isEnableSubscription
181+
? "cursor-pointer "
182+
: "pointer-events-none opacity-50"
183+
} relative block items-center mb-0`}
184+
>
185+
<input
186+
checked={formData.AutomaticReminders}
187+
onChange={handleAutoReminder}
188+
type="checkbox"
189+
value=""
190+
className="sr-only peer"
191+
/>
192+
<div className="w-9 h-5 bg-gray-200 peer-focus:outline-none peer-focus:ring-1 peer-focus:ring-black rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all dark:border-black peer-checked:bg-blue-600 mt-2"></div>
193+
</label>
194+
</div>
195+
{isSubscribe && formData?.AutomaticReminders === true && (
196+
<div className="text-xs mt-2">
197+
<label className="block">
198+
Remind once in every (Days)
199+
<span className="text-red-500 text-[13px]">*</span>
200+
</label>
201+
<input
202+
type="number"
203+
value={formData.RemindOnceInEvery}
204+
name="RemindOnceInEvery"
205+
className="px-3 py-2 w-full border-[1px] border-gray-300 rounded focus:outline-none text-xs"
206+
onChange={handleStrInput}
207+
required
208+
/>
209+
</div>
210+
)}
131211
{/* <SelectFolder onSuccess={handleFolder} folderCls={"contracts_Template"} /> */}
132212
<div className="buttoncontainer">
133213
<button type="submit" className="submitbutton">

apps/OpenSign/src/components/pdf/EmailComponent.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import loader from "../../assets/images/loader2.gif";
1010
function EmailComponent({
1111
isEmail,
1212
pdfUrl,
13-
isCeleb,
1413
setIsEmail,
1514
setSuccessEmail,
1615
pdfName,
@@ -22,6 +21,7 @@ function EmailComponent({
2221
const [emailList, setEmailList] = useState([]);
2322
const [emailValue, setEmailValue] = useState();
2423
const [isLoading, setIsLoading] = useState(false);
24+
const [isEmailCelebration, setIsEmailCelebration] = useState(false);
2525
//function for send email
2626
const sendEmail = async () => {
2727
setIsLoading(true);
@@ -62,6 +62,10 @@ function EmailComponent({
6262
" target=_blank>here</a> </p></div></div></body></html>"
6363
};
6464
sendMail = await axios.post(url, params, { headers: headers });
65+
setIsEmailCelebration(true);
66+
setTimeout(() => {
67+
setIsEmailCelebration(false);
68+
}, 3000);
6569
} catch (error) {
6670
console.log("error", error);
6771
setIsLoading(false);
@@ -245,22 +249,17 @@ function EmailComponent({
245249
</div>
246250
</div>
247251
<div style={{ height: "100%", padding: 20 }}>
248-
{isCeleb && (
249-
<div
250-
style={{
251-
position: "absolute",
252-
marginLeft: "50px"
253-
}}
254-
>
252+
{isEmailCelebration && (
253+
<div className="absolute w-[100%] flex justify-center items-center">
255254
<img
256255
alt="print img"
257256
width={300}
258257
height={250}
259-
// style={styles.gifCeleb}
260258
src={celebration}
261259
/>
262260
</div>
263261
)}
262+
264263
<p
265264
style={{
266265
fontFamily: "system-ui",

0 commit comments

Comments
 (0)