Skip to content

Commit 3bc57a9

Browse files
Merge pull request #486 from OpenSignLabs/fix_formreset
fix: reset button not working in forms
2 parents 266c246 + 27730c8 commit 3bc57a9

File tree

3 files changed

+50
-8
lines changed

3 files changed

+50
-8
lines changed

apps/OpenSign/src/components/shared/fields/SelectFolder.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import CreateFolder from "./CreateFolder";
44
import ModalUi from "../../../primitives/ModalUi";
55
import Tooltip from "../../../primitives/Tooltip";
66

7-
const SelectFolder = ({ required, onSuccess, folderCls }) => {
7+
const SelectFolder = ({ required, onSuccess, folderCls, isReset }) => {
88
const [isOpen, SetIsOpen] = useState(false);
99
const [clickFolder, setClickFolder] = useState("");
1010
const [selectFolder, setSelectedFolder] = useState({});
@@ -23,6 +23,21 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
2323
}
2424
// eslint-disable-next-line
2525
}, [isOpen]);
26+
// below useEffect is used to reset folder selection if user pass isReset = true from parent component
27+
useEffect(() => {
28+
if (isReset == true) {
29+
handleReset();
30+
}
31+
}, [isReset]);
32+
const handleReset = () => {
33+
setFolderPath({});
34+
setSelectedFolder("");
35+
setClickFolder("");
36+
setIsAdd(false);
37+
setFolderList([]);
38+
setTabList([]);
39+
};
40+
// `fetchFolder` is used to fetch of folder list created by user on basis of folderPtr or without folderPtr
2641
const fetchFolder = async (folderPtr) => {
2742
setIsLoader(true);
2843
try {
@@ -48,6 +63,8 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
4863
setIsLoader(false);
4964
}
5065
};
66+
67+
// `handleSelect` is used to save pointer of folder selected by user and it's path in state
5168
const handleSelect = (item) => {
5269
setFolderList([]);
5370
setClickFolder({ ObjectId: item.objectId, Name: item.Name });
@@ -74,6 +91,7 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
7491
}
7592
};
7693

94+
// `handleSubmit` is used to pass folderPtr to parent component
7795
const handleSubmit = () => {
7896
let url = "Root";
7997
tabList.forEach((t) => {
@@ -86,13 +104,16 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
86104
}
87105
SetIsOpen(false);
88106
};
107+
108+
// `handleCancel` is used to clear list of folder, close popup and folderUrl
89109
const handleCancel = () => {
90110
SetIsOpen(false);
91111
setClickFolder({});
92112
setFolderList([]);
93113
setTabList([]);
94114
};
95115

116+
// `handleCancel` is call when user click on folder name from path/tab in popup
96117
const removeTabListItem = async (e, i) => {
97118
e.preventDefault();
98119
// setEditable(false);
@@ -122,9 +143,11 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
122143
fetchFolder(folderPtr);
123144
}
124145
};
146+
// `handleCreate` is used to open folder creation form in popup
125147
const handleCreate = () => {
126148
setIsAdd(!isAdd);
127149
};
150+
// `handleAddFolder` is call when user folder created successfully and it fetch folder list on the basis of folderPtr or without folderPtr
128151
const handleAddFolder = () => {
129152
setFolderList([]);
130153
if (clickFolder && clickFolder.ObjectId) {

apps/OpenSign/src/components/shared/fields/SignersInput.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const SignersInput = (props) => {
1919
Modal.setAppElement("body");
2020
const [state, setState] = useState(undefined);
2121
// const [editFormData, setEditFormData] = useState([]);
22-
const [selected, setSelected] = React.useState([]);
22+
const [selected, setSelected] = useState([]);
2323
const [isModal, setIsModel] = useState(false);
2424
const onChange = (selectedOptions) => setSelected(selectedOptions);
2525
const [modalIsOpen, setModalIsOpen] = useState(false);
@@ -63,6 +63,11 @@ const SignersInput = (props) => {
6363
useEffect(() => {
6464
GetSelectListData();
6565
}, []);
66+
useEffect(() => {
67+
if (props.isReset && props.isReset === true) {
68+
setSelected([]);
69+
}
70+
}, [props.isReset]);
6671

6772
useEffect(() => {
6873
if (selected && selected.length) {

apps/OpenSign/src/pages/Form.js

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState } from "react";
1+
import React, { useEffect, useState } from "react";
22
import { useNavigate, useParams } from "react-router-dom";
33
import { formJson } from "../json/FormJson";
44
import AddUser from "../components/AddUser";
@@ -11,6 +11,7 @@ import SignersInput from "../components/shared/fields/SignersInput";
1111
import Title from "../components/Title";
1212
import PageNotFound from "./PageNotFound";
1313

14+
// `Form` render all type of Form on this basis of their provided in path
1415
function Form() {
1516
const { id } = useParams();
1617

@@ -40,13 +41,16 @@ const Forms = (props) => {
4041
const [fileupload, setFileUpload] = useState([]);
4142
const [fileload, setfileload] = useState(false);
4243
const [percentage, setpercentage] = useState(0);
44+
const [isReset, setIsReset] = useState(false);
4345
const [isAlert, setIsAlert] = useState(false);
4446
const [isSubmit, setIsSubmit] = useState(false);
4547
const [isErr, setIsErr] = useState("");
4648
const handleStrInput = (e) => {
4749
setFormData({ ...formData, [e.target.name]: e.target.value });
4850
};
49-
51+
useEffect(() => {
52+
handleReset();
53+
}, [props.title]);
5054
const handleFileInput = (e) => {
5155
setpercentage(0);
5256
try {
@@ -222,15 +226,19 @@ const Forms = (props) => {
222226
};
223227

224228
const handleReset = () => {
229+
setIsReset(true);
225230
setSigners([]);
226231
setFolder({ ObjectId: "", Name: "" });
227232
setFormData({
228233
Name: "",
229234
Description: "",
230-
Note: ""
235+
Note: "Please review and sign this document",
236+
TimeToCompleteDays: 15,
237+
SendinOrder: "false"
231238
});
232239
setFileUpload([]);
233240
setpercentage(0);
241+
setTimeout(() => setIsReset(false), 50);
234242
};
235243
return (
236244
<div className="shadow-md rounded my-2 p-3 bg-[#ffffff] md:border-[1px] md:border-gray-600/50">
@@ -334,7 +342,9 @@ const Forms = (props) => {
334342
onChange={(e) => handleStrInput(e)}
335343
/>
336344
</div>
337-
{props.signers && <SignersInput onChange={handleSigners} required />}
345+
{props.signers && (
346+
<SignersInput onChange={handleSigners} isReset={isReset} required />
347+
)}
338348
<div className="text-xs mt-2">
339349
<label className="block">
340350
Note<span className="text-red-500 text-[13px]">*</span>
@@ -347,7 +357,11 @@ const Forms = (props) => {
347357
required
348358
/>
349359
</div>
350-
<SelectFolder onSuccess={handleFolder} folderCls={props.Cls} />
360+
<SelectFolder
361+
onSuccess={handleFolder}
362+
folderCls={props.Cls}
363+
isReset={isReset}
364+
/>
351365

352366
{props.title === "Request Signatures" && (
353367
<div className="text-xs mt-2">
@@ -402,7 +416,7 @@ const Forms = (props) => {
402416
Submit
403417
</button>
404418
<div
405-
className="bg-[#188ae2] rounded-sm shadow-md text-[13px] font-semibold uppercase text-white py-1.5 px-2.5 text-center ml-[2px] focus:outline-none"
419+
className="cursor-pointer bg-[#188ae2] rounded-sm shadow-md text-[13px] font-semibold uppercase text-white py-1.5 px-2.5 text-center ml-[2px] focus:outline-none"
406420
onClick={() => handleReset()}
407421
>
408422
Reset

0 commit comments

Comments
 (0)