Skip to content

Commit 1b215f5

Browse files
feat: add help for select folder input
1 parent 61b123c commit 1b215f5

File tree

5 files changed

+78
-19
lines changed

5 files changed

+78
-19
lines changed

apps/OpenSign/package-lock.json

Lines changed: 14 additions & 0 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: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"react-scrollbars-custom": "^4.1.1",
3939
"react-select": "^5.8.0",
4040
"react-signature-canvas": "^1.0.6",
41+
"react-tooltip": "^5.26.3",
4142
"reactour": "^1.19.2",
4243
"redux": "^4.2.1",
4344
"redux-thunk": "^2.4.2",

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
1111
const [name, setName] = useState("");
1212
const [folderList, setFolderList] = useState([]);
1313
const [isAlert, setIsAlert] = useState(false);
14+
const [isLoader, setIsLoader] = useState(false);
1415
const [selectedParent, setSelectedParent] = useState();
1516
const [alert, setAlert] = useState({ type: "info", message: "" });
1617
useEffect(() => {
@@ -42,6 +43,7 @@ const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
4243
};
4344
const handleCreateFolder = async (event) => {
4445
event.preventDefault();
46+
handleLoader(true);
4547
if (name) {
4648
const currentUser = Parse.User.current();
4749
const exsitQuery = new Parse.Query(folderCls);
@@ -52,7 +54,7 @@ const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
5254
}
5355
const templExist = await exsitQuery.first();
5456
if (templExist) {
55-
setAlert({ type: "dange", message: "Folder already exist!" });
57+
setAlert({ type: "danger", message: "Folder already exist!" });
5658
setIsAlert(true);
5759
setTimeout(() => {
5860
setIsAlert(false);
@@ -74,6 +76,7 @@ const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
7476
template.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
7577
const res = await template.save();
7678
if (res) {
79+
handleLoader(false);
7780
setAlert({
7881
type: "success",
7982
message: "Folder created successfully!"
@@ -88,6 +91,7 @@ const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
8891
}
8992
}
9093
} else {
94+
handleLoader(false);
9195
setAlert({ type: "info", message: "Please fill folder name" });
9296
setIsAlert(true);
9397
setTimeout(() => {
@@ -98,10 +102,21 @@ const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
98102
const handleOptions = (e) => {
99103
setSelectedParent(e.target.value);
100104
};
105+
const handleLoader = (status) => {
106+
setIsLoader(status);
107+
};
101108
return (
102109
<div>
103110
{isAlert && <Alert type={alert.type}>{alert.message}</Alert>}
104-
<div id="createFolder">
111+
<div id="createFolder" className="relative">
112+
{isLoader && (
113+
<div className="absolute h-full w-full flex justify-center items-center ">
114+
<div
115+
style={{ fontSize: "45px", color: "#3dd3e0" }}
116+
className="loader-37"
117+
></div>
118+
</div>
119+
)}
105120
<h1 className="text-base font-semibold">Create Folder</h1>
106121
<div className="text-xs mt-2">
107122
<label className="block">
@@ -133,6 +148,7 @@ const CreateFolder = ({ parentFolderId, onSuccess, folderCls }) => {
133148
<div>
134149
<button
135150
onClick={handleCreateFolder}
151+
disabled={isLoader}
136152
className="flex items-center rounded p-2 bg-[#32a3ac] text-white mt-3"
137153
>
138154
<i className="fa-solid fa-plus mr-1"></i>

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

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useEffect, useState } from "react";
22
import Parse from "parse";
33
import CreateFolder from "./CreateFolder";
44
import ModalUi from "../../../primitives/ModalUi";
5+
import Tooltip from "../../../primitives/Tooltip";
56

67
const SelectFolder = ({ required, onSuccess, folderCls }) => {
78
const [isOpen, SetIsOpen] = useState(false);
@@ -145,7 +146,7 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
145146
{required && <span className="text-red-500 text-[13px]">*</span>}
146147
</label>
147148
</div>
148-
<div className="rounded px-[20px] py-[20px] bg-white border border-gray-200 shadow flex max-w-sm gap-8 items-center">
149+
<div className="relative rounded px-[20px] py-[20px] bg-white border border-gray-200 shadow flex max-w-sm gap-8 items-center">
149150
<div>
150151
<i
151152
className="far fa-folder-open text-[40px] text-[#33bbff]"
@@ -170,6 +171,13 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
170171
{selectFolder && selectFolder.Name ? `(${folderPath})` : ""}
171172
</p>
172173
</div>
174+
<div className="absolute top-1 right-1 cursor-pointer">
175+
<Tooltip
176+
message={
177+
"If you do not select a folder, your signed document will be saved in the Main OpenSign drive folder."
178+
}
179+
/>
180+
</div>
173181
</div>
174182
<ModalUi
175183
title={"Select Folder"}
@@ -201,23 +209,25 @@ const SelectFolder = ({ required, onSuccess, folderCls }) => {
201209
<hr />
202210
</div>
203211
<div className="mt-2 mb-3">
204-
{!isAdd &&
205-
folderList.length > 0 &&
206-
folderList.map((folder) => (
207-
<div
208-
key={folder.Name}
209-
className="border-[1px] border-[#8a8a8a] px-2 py-2 mb-2 cursor-pointer"
210-
onClick={() => handleSelect(folder)}
211-
>
212-
<div className="flex items-center gap-2">
213-
<i
214-
className="fa fa-folder text-[#33bbff] text-[1.4rem]"
215-
aria-hidden="true"
216-
></i>
217-
<span className="font-semibold">{folder.Name}</span>
212+
<div className="max-h-[210px] overflow-auto">
213+
{!isAdd &&
214+
folderList.length > 0 &&
215+
folderList.map((folder) => (
216+
<div
217+
key={folder.Name}
218+
className="border-[1px] border-[#8a8a8a] px-2 py-2 mb-2 cursor-pointer "
219+
onClick={() => handleSelect(folder)}
220+
>
221+
<div className="flex items-center gap-2">
222+
<i
223+
className="fa fa-folder text-[#33bbff] text-[1.4rem]"
224+
aria-hidden="true"
225+
></i>
226+
<span className="font-semibold">{folder.Name}</span>
227+
</div>
218228
</div>
219-
</div>
220-
))}
229+
))}
230+
</div>
221231
{isAdd && (
222232
<CreateFolder
223233
parentFolderId={clickFolder && clickFolder.ObjectId}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React from "react";
2+
// import * as HoverCard from "@radix-ui/react-hover-card";
3+
// import "../styles/opensigndrive.css";
4+
import { Tooltip as ReactTooltip } from "react-tooltip";
5+
const Tooltip = ({ children, message }) => (
6+
<>
7+
<a data-tooltip-id="my-tooltip" data-tooltip-content={message}>
8+
{children ? (
9+
children
10+
) : (
11+
<i className="fa-solid fa-question border-[1.5px] px-1.5 py-0.5 rounded-full border-[#33bbff] text-xs text-[#33bbff]"></i>
12+
)}
13+
</a>
14+
<ReactTooltip id="my-tooltip" className="max-w-[200px]" />
15+
</>
16+
);
17+
18+
export default Tooltip;

0 commit comments

Comments
 (0)