diff --git a/apps/OpenSign/moduleFederation.config.js b/apps/OpenSign/moduleFederation.config.js
index 5324d4c8c..9ba314cd1 100644
--- a/apps/OpenSign/moduleFederation.config.js
+++ b/apps/OpenSign/moduleFederation.config.js
@@ -20,10 +20,6 @@ module.exports = {
"react-router-dom": {
singleton: true,
requiredVersion: dependencies["react-router-dom"]
- },
- "rjsf-conditionals": {
- singleton: true,
- requiredVersion: dependencies["rjsf-conditionals"]
}
}
};
diff --git a/apps/OpenSign/package-lock.json b/apps/OpenSign/package-lock.json
index 4832ae0ee..a4c879102 100644
--- a/apps/OpenSign/package-lock.json
+++ b/apps/OpenSign/package-lock.json
@@ -9,9 +9,6 @@
"version": "0.1.0",
"dependencies": {
"@reduxjs/toolkit": "^1.9.7",
- "@rjsf/core": "^5.13.0",
- "@rjsf/utils": "^5.13.0",
- "@rjsf/validator-ajv8": "^5.13.0",
"axios": "^1.5.1",
"daisyui": "^3.9.2",
"file-saver": "^2.0.5",
@@ -39,7 +36,6 @@
"reactour": "^1.19.2",
"redux": "^4.2.1",
"redux-thunk": "^2.4.2",
- "rjsf-conditionals": "github:prafullnavkar-nxg/rjsf-conditionals",
"serve": "^14.2.1",
"styled-components": "^4.4.1",
"web-vitals": "^2.1.4"
@@ -3921,85 +3917,6 @@
"react": ">=16.14.0"
}
},
- "node_modules/@rjsf/core": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-5.13.0.tgz",
- "integrity": "sha512-rCpJGR0yPP/ip9LKcr3SmDMkbLx4QIaRA+ag0rcalSw1XLXBSzh53SpfgaB2HN++1xhUvWtIUERRHpWjQp1E7w==",
- "dependencies": {
- "lodash": "^4.17.21",
- "lodash-es": "^4.17.21",
- "markdown-to-jsx": "^7.3.2",
- "nanoid": "^3.3.6",
- "prop-types": "^15.8.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@rjsf/utils": "^5.12.x",
- "react": "^16.14.0 || >=17"
- }
- },
- "node_modules/@rjsf/utils": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-5.13.0.tgz",
- "integrity": "sha512-tG2OuOJUJZ0W7VMZceD0I2SOjfMRRT1tRtG+SKbdNqhtH/gpg40aOMUj9cWgSQnYISEkNZjZq/z7NWln5RxW6A==",
- "dependencies": {
- "json-schema-merge-allof": "^0.8.1",
- "jsonpointer": "^5.0.1",
- "lodash": "^4.17.21",
- "lodash-es": "^4.17.21",
- "react-is": "^18.2.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "react": "^16.14.0 || >=17"
- }
- },
- "node_modules/@rjsf/utils/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
- },
- "node_modules/@rjsf/validator-ajv8": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-5.13.0.tgz",
- "integrity": "sha512-8j0xLsxJA/k1UADeDYZ2aMVrswvOCEYNC++YchoAgWRHqDiaGAUyRbbk7oxMi6QUXnhnlCIepzNeTclHnSfPXQ==",
- "dependencies": {
- "ajv": "^8.12.0",
- "ajv-formats": "^2.1.1",
- "lodash": "^4.17.21",
- "lodash-es": "^4.17.21"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@rjsf/utils": "^5.12.x"
- }
- },
- "node_modules/@rjsf/validator-ajv8/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/@rjsf/validator-ajv8/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
"node_modules/@rollup/plugin-babel": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
@@ -6965,27 +6882,6 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
- "node_modules/compute-gcd": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/compute-gcd/-/compute-gcd-1.2.1.tgz",
- "integrity": "sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==",
- "dependencies": {
- "validate.io-array": "^1.0.3",
- "validate.io-function": "^1.0.2",
- "validate.io-integer-array": "^1.0.0"
- }
- },
- "node_modules/compute-lcm": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/compute-lcm/-/compute-lcm-1.1.2.tgz",
- "integrity": "sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==",
- "dependencies": {
- "compute-gcd": "^1.2.1",
- "validate.io-array": "^1.0.3",
- "validate.io-function": "^1.0.2",
- "validate.io-integer-array": "^1.0.0"
- }
- },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -7676,14 +7572,6 @@
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
},
- "node_modules/deepcopy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz",
- "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==",
- "dependencies": {
- "type-detect": "^4.0.8"
- }
- },
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
@@ -13418,27 +13306,6 @@
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
- "node_modules/json-schema-compare": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/json-schema-compare/-/json-schema-compare-0.2.2.tgz",
- "integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==",
- "dependencies": {
- "lodash": "^4.17.4"
- }
- },
- "node_modules/json-schema-merge-allof": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.8.1.tgz",
- "integrity": "sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==",
- "dependencies": {
- "compute-lcm": "^1.1.2",
- "json-schema-compare": "^0.2.2",
- "lodash": "^4.17.20"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -13934,21 +13801,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
- "node_modules/lodash-es": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
- },
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
},
- "node_modules/lodash.isequalwith": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz",
- "integrity": "sha512-dcZON0IalGBpRmJBmMkaoV7d3I80R2O+FrzsZyHdNSFrANq/cgDqKQNmAHE8UEj4+QYWwwhkQOVdLHiAopzlsQ=="
- },
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
@@ -14310,17 +14167,6 @@
"tmpl": "1.0.5"
}
},
- "node_modules/markdown-to-jsx": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz",
- "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==",
- "engines": {
- "node": ">= 10"
- },
- "peerDependencies": {
- "react": ">= 0.14.0"
- }
- },
"node_modules/mdn-data": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
@@ -18202,26 +18048,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/rjsf-conditionals": {
- "version": "1.5.0",
- "resolved": "git+ssh://git@github.com/prafullnavkar-nxg/rjsf-conditionals.git#439aa44e3ece077b1c8098278f86f454ad7185cf",
- "license": "Apache-2.0",
- "dependencies": {
- "@rjsf/validator-ajv8": "^5.13.0",
- "deepcopy": "^2.0.0",
- "lodash.isequalwith": "^4.4.0",
- "selectn": "^1.1.2"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "@rjsf/core": ">=2.0.0",
- "core-js": "^2.5.7",
- "prop-types": "^15.7.2",
- "react": "^18.2.0"
- }
- },
"node_modules/rollup": {
"version": "2.79.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
@@ -20423,38 +20249,6 @@
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
},
- "node_modules/validate.io-array": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz",
- "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg=="
- },
- "node_modules/validate.io-function": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz",
- "integrity": "sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ=="
- },
- "node_modules/validate.io-integer": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz",
- "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==",
- "dependencies": {
- "validate.io-number": "^1.0.3"
- }
- },
- "node_modules/validate.io-integer-array": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz",
- "integrity": "sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==",
- "dependencies": {
- "validate.io-array": "^1.0.3",
- "validate.io-integer": "^1.0.4"
- }
- },
- "node_modules/validate.io-number": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz",
- "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg=="
- },
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
diff --git a/apps/OpenSign/package.json b/apps/OpenSign/package.json
index d18085126..edffdbc62 100644
--- a/apps/OpenSign/package.json
+++ b/apps/OpenSign/package.json
@@ -4,9 +4,6 @@
"private": true,
"dependencies": {
"@reduxjs/toolkit": "^1.9.7",
- "@rjsf/core": "^5.13.0",
- "@rjsf/utils": "^5.13.0",
- "@rjsf/validator-ajv8": "^5.13.0",
"axios": "^1.5.1",
"daisyui": "^3.9.2",
"file-saver": "^2.0.5",
@@ -34,7 +31,6 @@
"reactour": "^1.19.2",
"redux": "^4.2.1",
"redux-thunk": "^2.4.2",
- "rjsf-conditionals": "github:prafullnavkar-nxg/rjsf-conditionals",
"serve": "^14.2.1",
"styled-components": "^4.4.1",
"web-vitals": "^2.1.4"
diff --git a/apps/OpenSign/src/components/AddUser.js b/apps/OpenSign/src/components/AddUser.js
new file mode 100644
index 000000000..5861f6be6
--- /dev/null
+++ b/apps/OpenSign/src/components/AddUser.js
@@ -0,0 +1,283 @@
+import React, { useState } from "react";
+import Parse from "parse";
+import axios from "axios";
+import Title from "./Title";
+import Alert from "../primitives/Alert";
+
+const AddUser = (props) => {
+ const [name, setName] = useState("");
+ const [phone, setPhone] = useState("");
+ const [email, setEmail] = useState("");
+ const [isLoader, setIsLoader] = useState(false);
+ const [isUserExist, setIsUserExist] = useState(false);
+ const parseBaseUrl = localStorage.getItem("baseUrl");
+ const parseAppId = localStorage.getItem("parseAppId");
+ Parse.serverURL = parseBaseUrl;
+ Parse.initialize(parseAppId);
+
+ const checkUserExist = async () => {
+ try {
+ const res = await Parse.Cloud.run("getUserDetails", {
+ email: email,
+ userId: Parse.User.current().id
+ });
+ if (res) {
+ return true;
+ } else {
+ return false;
+ }
+ } catch (err) {
+ console.log("err", err);
+ }
+ };
+ // Define a function to handle form submission
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ setIsLoader(true);
+ const res = await checkUserExist();
+ if (res) {
+ setIsUserExist(true);
+ setIsLoader(false);
+ setTimeout(() => {
+ setIsUserExist(false);
+ }, 1000);
+ } else {
+ try {
+ const contactQuery = new Parse.Object("contracts_Users");
+ contactQuery.set("Name", name);
+ contactQuery.set("Phone", phone);
+ contactQuery.set("Email", email);
+ contactQuery.set("UserRole", "contracts_User");
+
+ if (localStorage.getItem("TenetId")) {
+ contactQuery.set("TenantId", {
+ __type: "Pointer",
+ className: "partners_Tenant",
+ objectId: localStorage.getItem("TenetId")
+ });
+ }
+
+ try {
+ const _users = Parse.Object.extend("User");
+ const _user = new _users();
+ _user.set("name", name);
+ _user.set("username", email);
+ _user.set("email", email);
+ _user.set("phone", phone);
+ _user.set("password", phone);
+
+ const user = await _user.save();
+ if (user) {
+ const roleurl = `${parseBaseUrl}functions/AddUserToRole`;
+ const headers = {
+ "Content-Type": "application/json",
+ "X-Parse-Application-Id": parseAppId,
+ sessionToken: localStorage.getItem("accesstoken")
+ };
+ const body = {
+ appName: localStorage.getItem("_appName"),
+ roleName: "contracts_User",
+ userId: user.id
+ };
+ await axios.post(roleurl, body, { headers: headers });
+ const currentUser = Parse.User.current();
+ contactQuery.set(
+ "CreatedBy",
+ Parse.User.createWithoutData(currentUser.id)
+ );
+
+ contactQuery.set("UserId", user);
+ const acl = new Parse.ACL();
+ acl.setPublicReadAccess(true);
+ acl.setPublicWriteAccess(true);
+ acl.setReadAccess(currentUser.id, true);
+ acl.setWriteAccess(currentUser.id, true);
+
+ contactQuery.setACL(acl);
+
+ const res = await contactQuery.save();
+
+ const parseData = JSON.parse(JSON.stringify(res));
+ if (props.details) {
+ props.details({
+ value: parseData[props.valueKey],
+ label: parseData[props.displayKey]
+ });
+ }
+ if (props.closePopup) {
+ props.closePopup();
+ }
+ if (props.handleUserData) {
+ props.handleUserData(parseData);
+ }
+
+ setIsLoader(false);
+
+ setName("");
+ setPhone("");
+ setEmail("");
+ }
+ } catch (err) {
+ console.log("err ", err);
+ if (err.code === 202) {
+ const params = { email: email };
+ const userRes = await Parse.Cloud.run("getUserId", params);
+ const roleurl = `${parseBaseUrl}functions/AddUserToRole`;
+ const headers = {
+ "Content-Type": "application/json",
+ "X-Parse-Application-Id": parseAppId,
+ sessionToken: localStorage.getItem("accesstoken")
+ };
+ const body = {
+ appName: localStorage.getItem("_appName"),
+ roleName: "contracts_User",
+ userId: userRes.id
+ };
+ await axios.post(roleurl, body, { headers: headers });
+ const currentUser = Parse.User.current();
+ contactQuery.set(
+ "CreatedBy",
+ Parse.User.createWithoutData(currentUser.id)
+ );
+
+ contactQuery.set("UserId", {
+ __type: "Pointer",
+ className: "_User",
+ objectId: userRes.id
+ });
+ const acl = new Parse.ACL();
+ acl.setPublicReadAccess(true);
+ acl.setPublicWriteAccess(true);
+ acl.setReadAccess(currentUser.id, true);
+ acl.setWriteAccess(currentUser.id, true);
+
+ contactQuery.setACL(acl);
+ const res = await contactQuery.save();
+
+ const parseData = JSON.parse(JSON.stringify(res));
+ if (props.details) {
+ props.details({
+ value: parseData[props.valueKey],
+ label: parseData[props.displayKey]
+ });
+ }
+ if (props.closePopup) {
+ props.closePopup();
+ }
+ if (props.handleUserData) {
+ props.handleUserData(parseData);
+ }
+ setIsLoader(false);
+ setName("");
+ setPhone("");
+ setEmail("");
+ }
+ }
+ } catch (err) {
+ // console.log("err", err);
+ setIsLoader(false);
+ alert("something went wrong!");
+ }
+ }
+ };
+
+ // Define a function to handle the "add yourself" checkbox
+ const handleReset = () => {
+ setName("");
+ setPhone("");
+ setEmail("");
+ };
+
+ return (
+
]*>/g, "")
- .replace(/<\/p>/g, " ");
- RowData[k] = newHtml;
- }
- }
- if (val.properties[k].component === "DateTime") {
- if (RowData[k]) {
- let newDate11 = new Date(RowData[k]);
- RowData[k] = newDate11;
- }
- }
- if (val.properties[k].component === "CurrencyInput") {
- if (val.properties[k].currencyColumn) {
- RowData[`${val.properties[k].currencyColumn}`] =
- val.properties[k].defaultcurrency;
- }
- }
- if (val.properties[k].type === "string") {
- if (typeof RowData[k] === "string")
- RowData[k] = RowData[k].trim();
- }
- if (val.properties[k].data !== undefined) {
- if (val.properties[k].data.isPointer) {
- let pointer = undefined;
- if (val.properties[k].data.class) {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: val.properties[k].data.class,
- objectId: RowData[k]
- };
- }
- } else {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: localStorage.getItem("extended_class"),
- objectId: RowData[k]
- };
- }
- }
- RowData[k] = pointer;
- }
- if (val.properties[k].data.FolderTypeValue) {
- if (RowData[k]) {
- let obj = {
- __type: "Pointer",
- className: val.properties[k].data.ClassName,
- objectId: RowData[k]
- };
- RowData[k] = obj;
- }
- }
- }
- }
- });
- });
- }
- });
- }
- let temp = [];
-
- let _dd = _scanData.properties;
- let allowed = [];
- if (_dd) {
- Object.keys(_dd).forEach(function (k) {
- allowed.push(k);
- if (RowData[k]) {
- let pointer = {
- __type: "Pointer",
- className: _dd[k].class,
- objectId: RowData[k]
- };
- RowData[k] = pointer;
- }
- if (_dd[k].format === "date") {
- if (RowData[k]) {
- let newdate = new Date(RowData[k]);
- if (!isNaN(newdate.getTime())) {
- RowData[k] = newdate;
- }
- }
- }
- if (_dd[k].component === "HtmlEditor") {
- if (RowData[k]) {
- let newHtml = RowData[k]
- .replace(/
]*>/g, "")
- .replace(/<\/p>/g, " ");
- RowData[k] = newHtml;
- }
- }
- if (_dd[k].component === "DateTime") {
- if (RowData[k]) {
- let newdate = new Date(RowData[k]);
- if (!isNaN(newdate.getTime())) {
- RowData[k] = newdate;
- }
- }
- }
- if (_dd[k].format === "date-time") {
- let newdate = new Date(RowData[k]);
- RowData[k] = newdate;
- }
- if (_dd[k].component === "CurrencyInput") {
- if (_dd[k].currencyColumn) {
- RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency;
- }
- }
- if (_dd[k].data !== undefined) {
- if (_dd[k].data.isPointer) {
- let pointer = undefined;
- if (typeof RowData[k] === "object") {
- if (RowData[k]) {
- if (RowData[k].objectId !== "Select") {
- let obj = {
- __type: "Pointer",
- className: RowData[k].className,
- objectId: RowData[k].objectId
- };
- pointer = obj;
- }
- }
- } else if (_dd[k].data.class) {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: _dd[k].data.class,
- objectId: RowData[k]
- };
- }
- } else {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: localStorage.getItem("extended_class"),
- objectId: RowData[k]
- };
- }
- }
-
- RowData[k] = pointer;
- }
- if (_dd[k].data.FolderTypeValue) {
- if (RowData[k]) {
- let obj = {
- __type: "Pointer",
- className: _dd[k].data.ClassName,
- objectId: RowData[k]
- };
- RowData[k] = obj;
- }
- }
- }
- if (_dd[k].type === "string") {
- if (typeof RowData[k] === "string") RowData[k] = RowData[k].trim();
- }
- });
- }
- const filtered = Object.keys(RowData)
- .filter((key) => allowed.includes(key))
- .reduce((obj, key) => {
- obj[key] = RowData[key];
- return obj;
- }, {});
-
- try {
- Parse.serverURL = parseBaseUrl;
- Parse.initialize(parseAppId);
- const currentUser = Parse.User.current();
- if (temp.length !== 0) {
- let userPointer = {
- __type: "Pointer",
- className: "_User",
- objectId: currentUser.id
- };
- filtered[[temp[0]]] = userPointer;
- }
- var data = Parse.Object.extend(title);
- var query = new Parse.Query(data);
- query.get(props.objectId).then(async (object) => {
- object.save(filtered).then(
- () => {
- try {
- alert("Record updated successfully");
- props.HideView(false);
- setloading(false);
- setactive(true);
- } catch (error) {
- console.log("err", error);
- }
- },
- (error) => {
- console.log("err", error);
- setloading(false);
- setactive(true);
- }
- );
- });
- } catch (error) {
- console.log("err", error);
-
- alert(error.message);
- setloading(false);
- setactive(true);
- }
- };
-
- useEffect(() => {
- if (props.FormId) {
- getForm(props.FormId);
- }
- // eslint-disable-next-line
- }, [props.FormId]);
-
- if (loading) {
- return (
-
onChange(value || undefined)}
- />
- );
-}
-
-if (process.env.NODE_ENV !== "production") {
- TimeWidget.propTypes = {
- value: PropTypes.string
- };
-}
-
-export default TimeWidget;
diff --git a/apps/OpenSign/src/constant/const.js b/apps/OpenSign/src/constant/const.js
index 33e711591..b2401db56 100644
--- a/apps/OpenSign/src/constant/const.js
+++ b/apps/OpenSign/src/constant/const.js
@@ -1,5 +1,6 @@
export const contactCls = "contracts_Contactbook";
export const templateCls = "contracts_Template";
+export const documentCls = "contracts_Document";
export const rejectBtn =
"bg-[#ffffff] rounded-sm shadow-md text-[12px] font-semibold uppercase text-black py-1.5 px-4 focus:outline-none text-center border-[1px] border-[#b4b4b4]";
export const submitBtn =
diff --git a/apps/OpenSign/src/json/FormJson.js b/apps/OpenSign/src/json/FormJson.js
index eaa5818b3..9edef57bf 100644
--- a/apps/OpenSign/src/json/FormJson.js
+++ b/apps/OpenSign/src/json/FormJson.js
@@ -1,584 +1,26 @@
-import Parse from "parse";
-export const formJson = (id) => {
- let formData;
+import { documentCls, templateCls } from "../constant/const";
+export const formJson = {
//json form for signYourself
- if (id === "sHAnZphf69") {
- formData = {
- jsonSchema: {
- title: "Sign Yourself",
- description: "",
- type: "object",
- required: ["URL", "Name"],
- properties: {
- URL: {
- type: "string",
- title: "Select Document",
- filetypes: [],
- maxfilesizeKB: "10000",
- uploadtype: "regular",
- helpbody: "",
- helplink: ""
- },
- Name: {
- type: "string",
- title: "Title",
- maxLength: 50
- },
- Description: {
- type: "string",
- title: "Description",
- maxLength: 500
- },
- Folder: {
- title: "Folder",
- parent: null,
- data: {
- ClassName: "contracts_Document",
- FolderNameField: "Name",
- FolderTypeField: "Type",
- FolderTypeValue: "Folder",
- FolderDescription: "Description",
- ParentFolderField: "Folder",
- FormId: "YjIB7W7Xs6",
- Query: 'where={"Folder":{"$exists":false},"Type":"Folder"}'
- }
- },
- ExtUserPtr: {
- data: {
- valueKey: "objectId",
- isPointer: true
- }
- }
- }
- },
- uiSchema: {
- URL: {
- "ui:field": "FileUpload"
- },
- Description: {
- "ui:widget": "textarea",
- "ui:options": {
- rows: 2
- }
- },
- Note: {
- "ui:widget": "textarea",
- "ui:options": {
- rows: 2
- }
- },
- Folder: {
- "ui:field": "FolderComponent"
- },
- ExtUserPtr: {
- "ui:field": "HiddenField"
- }
- },
- userSchema: {},
- rules: null,
- noValidate: false,
- liveValidate: false,
- isRegisterForm: false,
- help: { htmlbody: "" },
- description: "",
- class: "contracts_Document",
- buttons: {
- add: {
- resetText: "Reset",
- submitText: "Submit"
- },
- edit: { submitText: "Update", cancelText: "Cancel" }
- },
- formACL: {
- "#currentUser#": { read: true, write: true },
- "*": { read: true, write: true }
- },
- redirect_id:
- "remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/signaturePdf",
- success_message: "Success!",
- success_redirect: "Microapp",
- validFunction:
- "ZnVuY3Rpb24gdmFsaWRhdGUoZm9ybURhdGEsIGVycm9ycykgeyBpZiAoZm9ybURhdGEucGFzczEgIT09IGZvcm1EYXRhLnBhc3MyKSB7IGVycm9ycy5wYXNzMi5hZGRFcnJvcignUGFzc3dvcmRzIGRvbid0IG1hdGNoJyk7IH0gcmV0dXJuIGVycm9yczsgfQ=="
- };
+ sHAnZphf69: {
+ title: "Sign Yourself",
+ redirectRoute: "signaturePdf",
+ msgVar: "Document",
+ Cls: documentCls
+ },
- return formData;
- }
//json form for request signature
- else if (id === "8mZzFxbG1z") {
- const user = Parse.User.current();
- const userPtr = JSON.stringify({
- __type: "Pointer",
- className: "_User",
- objectId: user.id
- });
- formData = {
- jsonSchema: {
- title: "Request signatures",
- description: "",
- type: "object",
- required: ["URL", "Name", "Note", "TimeToCompleteDays", "Signers"],
- properties: {
- URL: {
- type: "string",
- title: "Select Document",
- filetypes: [],
- maxfilesizeKB: "5000",
- uploadtype: "regular",
- helpbody: "",
- helplink: ""
- },
- Name: {
- type: "string",
- title: "Title",
- maxLength: 100
- },
- Description: {
- type: "string",
- title: "Description",
- maxLength: 500
- },
- Signers: {
- type: "array",
- title: "Signers",
- isSortable: false,
- selectAll: false,
- selectedData: null,
- data: {
- class: "contracts_Contactbook",
- displayKey: "Name",
- valueKey: "objectId",
- query: `where={"CreatedBy":${userPtr},"IsDeleted":{"$ne":true}}&keys=Name`,
- isPointer: true,
- helpbody: "",
- helplink: "",
- quickAddFormId: "qUGywSWd8e"
- }
- },
- Note: {
- type: "string",
- title: "Note",
- default: "Please review and sign this document",
- maxLength: 500
- },
- Folder: {
- title: "Folder",
- data: {
- ClassName: "contracts_Document",
- FolderNameField: "Name",
- FolderTypeField: "Type",
- FolderTypeValue: "Folder",
- FolderDescription: "Description",
- ParentFolderField: "Folder",
- FormId: "YjIB7W7Xs6",
- Query: 'where={"Folder":{"$exists":false},"Type":"Folder"}'
- }
- },
- TimeToCompleteDays: {
- type: "number",
- title: "Time To Complete (Days)",
- default: 15,
- maxLength: 5000
- },
- ExtUserPtr: {
- data: {
- valueKey: "objectId",
- isPointer: true
- }
- }
- }
- },
- uiSchema: {
- URL: {
- "ui:field": "FileUpload"
- },
- Description: {
- "ui:widget": "textarea",
- "ui:options": {
- rows: 2
- }
- },
- Note: {
- "ui:widget": "textarea",
- "ui:options": {
- rows: 2
- }
- },
- Signers: {
- "ui:field": "MultiSelectField"
- },
- Folder: {
- "ui:field": "FolderComponent"
- },
- TimeToCompleteDays: {
- "ui:placeholder": "No. of days",
- "ui:widget": "updown"
- },
- ExtUserPtr: {
- "ui:field": "HiddenField"
- }
- },
- userSchema: {},
- rules: null,
- noValidate: false,
- liveValidate: false,
- isRegisterForm: false,
- help: { htmlbody: "" },
- description: "",
- class: "contracts_Document",
- buttons: {
- add: {
- resetText: "Reset",
- submitText: "Submit"
- },
- edit: { submitText: "Update", cancelText: "Cancel" }
- },
- formACL: {
- "#currentUser#": { read: true, write: true },
- "*": { read: true, write: true }
- },
- redirect_id:
- "remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/placeHolderSign",
- success_message: "Success!",
- success_redirect: "Microapp",
- validFunction:
- "ZnVuY3Rpb24gdmFsaWRhdGUoZm9ybURhdGEsIGVycm9ycykgeyBpZiAoZm9ybURhdGEucGFzczEgIT09IGZvcm1EYXRhLnBhc3MyKSB7IGVycm9ycy5wYXNzMi5hZGRFcnJvcignUGFzc3dvcmRzIGRvbid0IG1hdGNoJyk7IH0gcmV0dXJuIGVycm9yczsgfQ=="
- };
-
- return formData;
- }
- //json form for create new folder
- else if (id === "YjIB7W7Xs6") {
- formData = {
- jsonSchema: {
- title: "New Folder",
- description: "",
- type: "object",
- required: ["Name"],
- properties: {
- Name: {
- type: "string",
- title: "Name",
- maxLength: 50
- },
- Type: {
- type: "string",
- data: {
- valueKey: "Type",
- isPointer: false
- },
- default: "Folder"
- },
- Folder: {
- title: "Parent Folder",
- data: {
- class: "contracts_Document",
- displayKey: "Name",
- valueKey: "objectId",
- query: 'where={"Type":"Folder"}&keys=Name',
- isPointer: true,
- savePointerClass: "",
- helpbody: "",
- helplink: ""
- }
- }
- }
- },
- uiSchema: {
- Type: {
- "ui:field": "HiddenField"
- },
- Folder: {
- "ui:field": "Level1Dropdown"
- }
- },
- userSchema: {},
- rules: null,
- noValidate: false,
- liveValidate: false,
- isRegisterForm: false,
- help: { htmlbody: "" },
- description: "",
- class: "contracts_Document",
- buttons: {
- add: {
- resetText: "Reset",
- submitText: "Submit"
- },
- edit: { submitText: "Update", cancelText: "Cancel" }
- },
- formACL: {
- "#currentUser#": { read: true, write: true },
- "*": { read: true, write: true }
- },
- redirect_id: "",
- success_message: "Success!",
- success_redirect: "",
- validFunction:
- "ZnVuY3Rpb24gdmFsaWRhdGUoZm9ybURhdGEsIGVycm9ycykgeyBpZiAoZm9ybURhdGEucGFzczEgIT09IGZvcm1EYXRhLnBhc3MyKSB7IGVycm9ycy5wYXNzMi5hZGRFcnJvcignUGFzc3dvcmRzIGRvbid0IG1hdGNoJyk7IH0gcmV0dXJuIGVycm9yczsgfQ=="
- };
- return formData;
- }
- //json form for add signers
- else if (id === "fICciRuUcB") {
- formData = {
- jsonSchema: {
- title: "Add Signer",
- description: "",
- type: "object",
- required: ["Name", "Email", "Phone", "Company"],
- properties: {
- Name: {
- type: "string",
- title: "Name",
- maxLength: 50
- },
- Email: {
- type: "string",
- title: "Email",
- maxLength: 50
- },
- Phone: {
- type: "string",
- title: "Phone",
- maxLength: 50
- },
- Company: {
- type: "string",
- title: "Company",
- maxLength: 50
- },
- JobTitle: {
- type: "string",
- title: "JobTitle",
- maxLength: 50
- },
- IsContactEntry: {
- type: "boolean",
- data: {
- valueKey: "IsContactEntry",
- isPointer: false
- },
- default: true
- }
- }
- },
- uiSchema: {
- Email: {
- "ui:widget": "email"
- },
- IsContactEntry: {
- "ui:field": "HiddenField"
- }
- },
- userSchema: {
- email: "$Email",
- name: "$Name",
- password: "$Phone",
- phone: "$Phone",
- role: "contracts_User",
- username: "$Email"
- },
- rules: null,
- noValidate: false,
- liveValidate: false,
- isRegisterForm: true,
- help: {},
- description: "",
- class: "contracts_Users",
- buttons: {
- add: {
- resetText: "Reset",
- submitText: "Submit"
- },
- edit: { submitText: "Update", cancelText: "Cancel" }
- },
- formACL: {
- "#currentUser#": { read: true, write: true },
- "*": { read: true, write: true }
- },
- redirect_id: "",
- success_message: "Success!",
- success_redirect: "",
- validFunction:
- "ZnVuY3Rpb24gdmFsaWRhdGUoZm9ybURhdGEsIGVycm9ycykgeyBpZiAoZm9ybURhdGEucGFzczEgIT09IGZvcm1EYXRhLnBhc3MyKSB7IGVycm9ycy5wYXNzMi5hZGRFcnJvcignUGFzc3dvcmRzIGRvbid0IG1hdGNoJyk7IH0gcmV0dXJuIGVycm9yczsgfQ=="
- };
- return formData;
- }
- //json form for add users
- else if (id === "lM0xRnM3iE") {
- formData = {
- jsonSchema: {
- title: "Add User",
- description: "",
- type: "object",
- required: ["Name", "Email", "Phone", "JobTitle"],
- properties: {
- Name: {
- type: "string",
- title: "Name",
- maxLength: 50
- },
- Email: {
- type: "string",
- title: "Email",
- maxLength: 50
- },
- Phone: {
- type: "string",
- title: "Phone",
- maxLength: 50
- },
- JobTitle: {
- type: "string",
- title: "Job Title",
- maxLength: 50
- },
- Company: {
- type: "string",
- title: "Company",
- maxLength: 50
- }
- }
- },
- uiSchema: {
- Email: {
- "ui:widget": "email"
- },
- Phone: {
- "ui:options": {
- inputType: "tel"
- }
- }
- },
- userSchema: {
- email: "$Email",
- name: "$Name",
- password: "$Phone",
- phone: "$Phone",
- role: "contracts_User",
- username: "$Email"
- },
- rules: null,
- noValidate: false,
- liveValidate: false,
- isRegisterForm: true,
- help: {},
- description: "",
- class: "contracts_Users",
- buttons: {
- add: {
- resetText: "Reset",
- submitText: "Submit"
- },
- edit: { submitText: "Update", cancelText: "Cancel" }
- },
- formACL: {
- "#currentUser#": { read: true, write: true },
- "*": { read: true, write: true }
- },
- redirect_id: "",
- success_message: "Success!",
- success_redirect: "",
- validFunction:
- "ZnVuY3Rpb24gdmFsaWRhdGUoZm9ybURhdGEsIGVycm9ycykgeyBpZiAoZm9ybURhdGEucGFzczEgIT09IGZvcm1EYXRhLnBhc3MyKSB7IGVycm9ycy5wYXNzMi5hZGRFcnJvcignUGFzc3dvcmRzIGRvbid0IG1hdGNoJyk7IH0gcmV0dXJuIGVycm9yczsgfQ=="
- };
- return formData;
- } else if (id === "qUGywSWd8e") {
- formData = {
- jsonSchema: {
- title: "Add Contact",
- description: "",
- type: "object",
- required: ["Name", "Email", "Phone"],
- properties: {
- Name: {
- type: "string",
- title: "Name",
- maxLength: 50
- },
- Email: {
- type: "string",
- title: "Email",
- maxLength: 50
- },
- Phone: {
- type: "string",
- title: "Phone",
- maxLength: 50
- }
- }
- },
- uiSchema: {
- Email: {
- "ui:widget": "email"
- },
- Phone: {
- "ui:options": {
- inputType: "tel"
- }
- }
- },
- userSchema: {
- name: "$Name",
- username: "$Email",
- email: "$Email",
- password: "$Phone",
- phone: "$Phone",
- role: "contracts_Guest"
- },
- restrict_form_entry: {
- enable_captcha: false,
- allow_one_entry_per_ip_address: false,
- allow_one_entry_per_user: false,
- enable_geo_fence: false
- },
- restrict_form_access: {
- entryCount: ""
- },
- help: {},
- email_template: {
- from: "",
- to: "",
- subject: "",
- message: ""
- },
- buttons: {
- add: {
- submitText: "Submit",
- resetText: "Reset"
- },
- edit: {
- submitText: "Update",
- cancelText: "Cancel"
- }
- },
- appId: {
- __type: "Pointer",
- className: "w_appinfo",
- objectId: "aIPmIvMzGM"
- },
- formACL: {
- "*": {
- read: true,
- write: true
- },
- "#currentUser#": {
- read: true,
- write: true
- }
- },
- class: "contracts_Contactbook",
- description: "",
- success_message: "Success!",
- form_permission: "private",
- success_redirect: "",
- redirect_id: "",
- isRegisterForm: true,
- liveValidate: false,
- noValidate: false,
- validFunction:
- "ZnVuY3Rpb24gdmFsaWRhdGUoZm9ybURhdGEsIGVycm9ycykgeyBpZiAoZm9ybURhdGEucGFzczEgIT09IGZvcm1EYXRhLnBhc3MyKSB7IGVycm9ycy5wYXNzMi5hZGRFcnJvcignUGFzc3dvcmRzIGRvbid0IG1hdGNoJyk7IH0gcmV0dXJuIGVycm9yczsgfQ=="
- };
- return formData;
+ "8mZzFxbG1z": {
+ title: "Request Signature",
+ msgVar: "Document",
+ redirectRoute: "placeHolderSign",
+ Cls: documentCls,
+ signers: true
+ },
+ //json form for template
+ template: {
+ title: "New Template",
+ redirectRoute: "template",
+ msgVar: "Template",
+ Cls: templateCls
}
};
diff --git a/apps/OpenSign/src/primitives/TemplateForm.js b/apps/OpenSign/src/primitives/TemplateForm.js
deleted file mode 100644
index 5fa592870..000000000
--- a/apps/OpenSign/src/primitives/TemplateForm.js
+++ /dev/null
@@ -1,336 +0,0 @@
-import React, { useState } from "react";
-import sanitizeFileName from "./sanitizeFileName";
-import Parse from "parse";
-import DropboxChooser from "../components/fields/DropboxChoose";
-import Alert from "./Alert";
-import SelectFolder from "../components/fields/SelectFolder";
-// import SignersInput from "../components/fields/SignersInput";
-import Title from "../components/Title";
-import { useNavigate } from "react-router-dom";
-import { templateCls } from "../constant/const";
-
-const TemplateForm = () => {
- const navigate = useNavigate();
- const [signers, setSigners] = useState([]);
- const [folder, setFolder] = useState({ ObjectId: "", Name: "" });
- const [formData, setFormData] = useState({
- Name: "",
- Description: "",
- Note: "Please review and sign this document"
- });
- const [fileupload, setFileUpload] = useState([]);
- const [fileload, setfileload] = useState(false);
- const [percentage, setpercentage] = useState(0);
- const [isAlert, setIsAlert] = useState(false);
- const [isSubmit, setIsSubmit] = useState(false);
- const [isErr, setIsErr] = useState("");
- const handleStrInput = (e) => {
- setFormData({ ...formData, [e.target.name]: e.target.value });
- };
-
- const handleFileInput = (e) => {
- setpercentage(0);
- try {
- let files = e.target.files;
- if (typeof files[0] !== "undefined") {
- const mb = Math.round(files[0].bytes / Math.pow(1024, 2));
- if (mb > 10) {
- alert(
- `The selected file size is too large. Please select a file less than ${Math.round(
- 10
- )} MB`
- );
- return;
- }
-
- handleFileUpload(files[0]);
- } else {
- alert("Please select file.");
- return false;
- }
- } catch (error) {
- alert(error.message);
- return false;
- }
- };
-
- const handleFileUpload = async (file) => {
- Parse.serverURL = process.env.REACT_APP_SERVERURL;
- Parse.initialize(process.env.REACT_APP_APPID);
- setfileload(true);
- const fileName = file.name;
- const name = sanitizeFileName(fileName);
- const pdfFile = file;
- const parseFile = new Parse.File(name, pdfFile);
-
- try {
- const response = await parseFile.save({
- progress: (progressValue, loaded, total, { type }) => {
- if (type === "upload" && progressValue !== null) {
- const percentCompleted = Math.round((loaded * 100) / total);
- setpercentage(percentCompleted);
- }
- }
- });
-
- // The response object will contain information about the uploaded file
- // You can access the URL of the uploaded file using response.url()
- setFileUpload(response.url());
- setfileload(false);
- if (response.url()) {
- return response.url();
- }
- } catch (error) {
- setfileload(false);
- setpercentage(0);
- console.error("Error uploading file:", error);
- }
- };
-
- const dropboxSuccess = async (files) => {
- setfileload(true);
- const file = files[0];
- const url = file.link;
- const mb = Math.round(file.bytes / Math.pow(1024, 2));
-
- if (mb > 10) {
- setTimeout(() => {
- alert(
- `The selected file size is too large. Please select a file less than 10 MB`
- );
- }, 500);
- return;
- } else {
- const name = sanitizeFileName(file.name);
-
- const parseFile = new Parse.File(name, { uri: url });
-
- try {
- const response = await parseFile.save({
- progress: (progressValue, loaded, total, { type }) => {
- if (type === "upload" && progressValue !== null) {
- const percentCompleted = Math.round((loaded * 100) / total);
- setpercentage(percentCompleted);
- }
- }
- });
- setFileUpload(response.url());
- setfileload(false);
-
- if (response.url()) {
- return response.url();
- }
- } catch (error) {
- setfileload(false);
- setpercentage(0);
- console.error("Error uploading file:", error);
- }
- }
- };
- const dropboxCancel = async () => {};
- const handleSubmit = async (e) => {
- e.preventDefault();
- setIsSubmit(true);
- try {
- const currentUser = Parse.User.current();
- const template = new Parse.Object(templateCls);
- Object.entries(formData).forEach((item) =>
- template.set(item[0], item[1])
- );
- template.set("URL", fileupload);
- template.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
- if (folder && folder.ObjectId) {
- template.set("Folder", {
- __type: "Pointer",
- className: templateCls,
- objectId: folder.ObjectId
- });
- }
- if (signers && signers.length > 0) {
- template.set("Signers", signers);
- }
- const ExtCls = JSON.parse(localStorage.getItem("Extand_Class"));
- template.set("ExtUserPtr", {
- __type: "Pointer",
- className: "contracts_Users",
- objectId: ExtCls[0].objectId
- });
-
- const res = await template.save();
- if (res) {
- setSigners([]);
- setFolder({ ObjectId: "", Name: "" });
- setFormData({
- Name: "",
- Description: "",
- Note: ""
- });
- setFileUpload([]);
- setpercentage(0);
- navigate(
- "/asmf/remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/template/" +
- res.id
- );
- }
- } catch (err) {
- console.log("err ", err);
- setIsErr(true);
- } finally {
- setIsAlert(true);
- setTimeout(() => {
- setIsAlert(false);
- }, 1000);
- setIsSubmit(false);
- }
- };
-
- const handleFolder = (data) => {
- setFolder(data);
- };
- // const handleSigners = (data) => {
- // if (data && data.length > 0) {
- // const updateSigners = data.map((x) => ({
- // __type: "Pointer",
- // className: "contracts_Contactbook",
- // objectId: x
- // }));
- // setSigners(updateSigners);
- // }
- // };
-
- const handleReset = () => {
- setSigners([]);
- setFolder({ ObjectId: "", Name: "" });
- setFormData({
- Name: "",
- Description: "",
- Note: ""
- });
- setFileUpload([]);
- setpercentage(0);
- };
- return (
-
-
- {isAlert && (
-
- {isErr
- ? "Something went wrong please try again!"
- : "Template created successfully!"}
-
- )}
-
-
- );
-};
-
-export default TemplateForm;
diff --git a/apps/OpenSign/src/redux/actions/index.js b/apps/OpenSign/src/redux/actions/index.js
index afec8161d..3e9e2816a 100644
--- a/apps/OpenSign/src/redux/actions/index.js
+++ b/apps/OpenSign/src/redux/actions/index.js
@@ -124,8 +124,7 @@ export const login = (username, password) => async (dispatch) => {
const currentUser = Parse.User.current();
await Parse.Cloud.run("getUserDetails", {
email: currentUser.get("email")
- })
- .then(
+ }).then(
(results) => {
let userinfo = results.toJSON();
if (userinfo.TenantId) {
@@ -215,95 +214,10 @@ export const fetchRoleEnum = (name) => async (dispatch) => {
dispatch({ type: "FETCH_ROLE", payload: response });
};
-export const setEnableCart = (val) => async (dispatch) => {
- dispatch({
- type: "ENABLE_CART",
- payload: val
- });
-};
-
-export const setCartUpdateData = (val) => async (dispatch) => {
- dispatch({
- type: "UPDATE_CART",
- payload: val
- });
-};
-
-export const addItemsToCart = (val) => async (dispatch) => {
- dispatch({
- type: "ADD_CART",
- payload: val
- });
-};
-
-export const clearCartData = () => async (dispatch) => {
- dispatch({
- type: "CLEAR_CART",
- payload: []
- });
-};
-
-export const SaveMultipleCart = (val) => async (dispatch) => {
- dispatch({
- type: "MULTI_CART",
- payload: val
- });
-};
-
-export const removeFromCart = (val) => async (dispatch) => {
- dispatch({
- type: "REMOVE_CART",
- payload: val
- });
-};
-
-export const onChangeLevel1Dropdown = (id, name) => async (dispatch) => {
- localStorage.setItem(`_dd${name}`, id);
- let _data = { [name]: `${id}` };
- dispatch({ type: "Level1_Dropdown", payload: _data });
-};
-
-export const onChangeLevel2Dropdown = (id, name) => async (dispatch) => {
- localStorage.setItem(`_dd${name}`, id);
- let _data = { [name]: `${id}` };
- dispatch({ type: "Level2_Dropdown", payload: _data });
-};
-
-export const onChangeLevel3Dropdown = (id, name) => async (dispatch) => {
- localStorage.setItem(`_dd${name}`, id);
- let _data = { [name]: `${id}` };
- dispatch({ type: "Level3_Dropdown", payload: _data });
-};
-
-export const removeState = () => async (dispatch) => {
- dispatch({ type: "REMOVE_STATE", payload: {} });
-};
-export const removeLevel2State = () => async (dispatch) => {
- dispatch({ type: "removeLevel2", payload: {} });
-};
-
-export const removeLevel3State = () => async (dispatch) => {
- dispatch({ type: "removeLevel3", payload: {} });
-};
-
export const showTenantName = (name) => async (dispatch) => {
dispatch({ type: "SHOW_TENANT", payload: name || null });
};
-export const saveDependantDDValue = (id, value) => async (dispatch) => {
- let _data = { [`${id}_dd`]: value };
- dispatch({ type: "SAVE_DEPENDANTDD", payload: _data });
-};
-
-export const removeDependantDDValue = (id, value) => async (dispatch) => {
- let _data = { [`${id}_dd`]: value };
- dispatch({ type: "REMOVE_DEPENDANTDD", payload: _data });
-};
-
-export const remove_AlldependantDD = () => async (dispatch) => {
- dispatch({ type: "REMOVE_ALLDEPENDANTDD", payload: {} });
-};
-
export const save_tourSteps = (steps) => async (dispatch) => {
dispatch({ type: "SAVE_TOURSTEPS", payload: steps });
};
diff --git a/apps/OpenSign/src/routes/Form.js b/apps/OpenSign/src/routes/Form.js
index 2c6c67709..0bf604eaa 100644
--- a/apps/OpenSign/src/routes/Form.js
+++ b/apps/OpenSign/src/routes/Form.js
@@ -1,1244 +1,248 @@
-import React, { Component } from "react";
-import { connect } from "react-redux";
-import {
- removeState,
- removeLevel2State,
- removeLevel3State
-} from "../redux/actions/index";
-import Engine from "json-rules-engine-simplified";
-import applyRules from "rjsf-conditionals";
-import Form from "@rjsf/core";
-import validator from "@rjsf/validator-ajv8";
-import LayoutField from "../components/fields/Rjsf-layout";
-import "../styles/form.css";
-import "../styles/toast.css";
-import Parse from "parse";
-import "../styles/loader.css";
-import TimeWidget from "../components/fields/TimeWidget";
-import axios from "axios";
+import React, { useState } from "react";
import { useNavigate, useParams } from "react-router-dom";
-import HiddenField from "../components/fields/HiddenField";
-import MultiSelectField from "../components/fields/MultiSelectField";
-import ErrorBoundary from "../components/ErrorBoundary";
-import FileUpload from "../components/fields/FileUpload";
-import TreeWidget from "../components/TreeWidget";
-import parse from "html-react-parser";
-import Title from "../components/Title";
import { formJson } from "../json/FormJson";
-import TemplateForm from "../primitives/TemplateForm";
-const widget = {
- TimeWidget: TimeWidget
-};
-const fields = () => {
- return {
- layout: LayoutField,
- FileUpload: FileUpload,
- HiddenField: HiddenField,
- MultiSelectField: MultiSelectField,
- FolderComponent: TreeWidget
- };
-};
+import AddUser from "../components/AddUser";
+import sanitizeFileName from "../primitives/sanitizeFileName";
+import Parse from "parse";
+import DropboxChooser from "../components/fields/DropboxChoose";
+import Alert from "../primitives/Alert";
+import SelectFolder from "../components/fields/SelectFolder";
+import SignersInput from "../components/fields/SignersInput";
+import Title from "../components/Title";
+import PageNotFound from "./PageNotFound";
-function FormBuilderFn(props) {
+function Form() {
const { id } = useParams();
- const navigate = useNavigate();
- if (id === "template") {
- return
;
+
+ if (id === "lM0xRnM3iE") {
+ return
;
} else {
- return (
-
- );
+ const config = formJson[id];
+ if (config) {
+ return
;
+ } else {
+ return
;
+ }
}
}
-class FormBuilder extends Component {
- state = {
- schema: {},
- ui_schema: {},
- extraActions: undefined,
- rules: [],
- isAppRequest: false,
- formData: {},
- persistentFields: [],
- successMassage: "Record inserted successfully.",
- title: "",
- active: true,
- buttons: {},
- schemaState: {},
- noValidate: false,
- liveValidate: false,
- _validate: null,
- userSchema: {},
- loading: false,
- parseBaseUrl: localStorage.getItem("baseUrl"),
- parseAppId: localStorage.getItem("parseAppId"),
- toastColor: "#5cb85c",
- toastDescription: "",
- redirect_type: "",
- redirect_id: "",
- FormACL: null,
- help: "",
- link: ""
+
+const Forms = (props) => {
+ const navigate = useNavigate();
+ const [signers, setSigners] = useState([]);
+ const [folder, setFolder] = useState({ ObjectId: "", Name: "" });
+ const [formData, setFormData] = useState({
+ Name: "",
+ Description: "",
+ Note: "Please review and sign this document",
+ TimeToCompleteDays: 15
+ });
+ const [fileupload, setFileUpload] = useState([]);
+ const [fileload, setfileload] = useState(false);
+ const [percentage, setpercentage] = useState(0);
+ const [isAlert, setIsAlert] = useState(false);
+ const [isSubmit, setIsSubmit] = useState(false);
+ const [isErr, setIsErr] = useState("");
+ const handleStrInput = (e) => {
+ setFormData({ ...formData, [e.target.name]: e.target.value });
};
- async getForm(id) {
- this.setState({
- loading: true
- });
+ const handleFileInput = (e) => {
+ setpercentage(0);
try {
- const results = formJson(id);
- // console.log("custom result",results)
- if (results) {
- const resultjson = results;
- if (resultjson.userSchema !== undefined) {
- this.setState({
- userSchema: resultjson.userSchema
- });
+ let files = e.target.files;
+ if (typeof files[0] !== "undefined") {
+ const mb = Math.round(files[0].bytes / Math.pow(1024, 2));
+ if (mb > 10) {
+ alert(
+ `The selected file size is too large. Please select a file less than ${Math.round(
+ 10
+ )} MB`
+ );
+ return;
}
- for (let [value] of Object.entries(resultjson.jsonSchema.properties)) {
- if (typeof value === "object") {
- for (let [k, v] of Object.entries(value)) {
- if (k === "format" && v === "date") {
- let today = new Date();
- let date =
- today.getFullYear() +
- "-" +
- ("0" + (today.getMonth() + 1)).slice(-2) +
- "-" +
- ("0" + today.getDate()).slice(-2);
- value.default = date;
- }
- if (k === "component" && v === "DateTime") {
- value.default = new Date().toISOString();
- }
- }
- }
- }
- let txt,
- link,
- successMsg,
- _rules = [],
- persistentFields = [],
- _extraActions = {};
- if (resultjson.help) {
- if (resultjson.help.htmlbody) {
- txt = resultjson.help.htmlbody;
- }
- if (resultjson.help.link) {
- link = resultjson.help.link;
- }
- }
- if (resultjson.rules) {
- _rules = resultjson.rules;
- }
- if (resultjson.persistentFields) {
- persistentFields = resultjson.persistentFields;
- }
- if (resultjson.extraActions) {
- _extraActions = this.setExtraActions(resultjson.extraActions);
- }
- if (resultjson.success_message) {
- successMsg = resultjson.success_message;
- } else {
- successMsg = this.state.successMassage;
- }
- let _jsonSchema = JSON.stringify(resultjson.jsonSchema);
- _jsonSchema = _jsonSchema.replace("#$", "$");
- _jsonSchema = _jsonSchema.replace("#*", "$");
- _jsonSchema = _jsonSchema.replace("_DOT_", ".");
- let _replaceJSONSchema = JSON.parse(_jsonSchema);
- this.setState({
- redirect_type: resultjson.success_redirect,
- redirect_id: resultjson.redirect_id,
- FormACL: resultjson.formACL,
- help: txt,
- link: link,
- persistentFields: persistentFields,
- successMassage: successMsg,
- buttons: resultjson.buttons.add,
- schemaState: _replaceJSONSchema,
- ui_schema: resultjson.uiSchema,
- rules: _rules,
- extraActions: _extraActions,
- title: resultjson.class,
- _validate: resultjson.validFunction,
- noValidate: resultjson.noValidate,
- liveValidate: resultjson.liveValidate && resultjson.liveValidate,
- loading: false
- });
- localStorage.setItem(
- "jsonschema",
- JSON.stringify(resultjson.jsonSchema)
- );
+ handleFileUpload(files[0]);
} else {
- alert("form not found");
+ alert("Please select file.");
+ return false;
}
- } catch (e) {
- if (e.message === "Invalid session token") {
- let appdata = localStorage.getItem("userSettings");
- let applogo = localStorage.getItem("appLogo");
- let appName = localStorage.getItem("appName");
- let defaultmenuid = localStorage.getItem("defaultmenuid");
- let PageLanding = localStorage.getItem("PageLanding");
- let domain = localStorage.getItem("domain");
- let _appName = localStorage.getItem("_appName");
- let baseUrl = localStorage.getItem("BaseUrl12");
- let appid = localStorage.getItem("AppID12");
- localStorage.clear();
- localStorage.setItem("appLogo", applogo);
- localStorage.setItem("appName", appName);
- localStorage.setItem("_appName", _appName);
- localStorage.setItem("defaultmenuid", defaultmenuid);
- localStorage.setItem("PageLanding", PageLanding);
- localStorage.setItem("domain", domain);
- localStorage.setItem("userSettings", appdata);
- localStorage.setItem("BaseUrl12", baseUrl);
- localStorage.setItem("AppID12", appid);
- this.props.navigate(`/`);
- }
- console.log(e.message);
- console.error("Problem", e);
- this.setState({
- loading: false
- });
- }
- }
-
- wrap = (s) => "{ return " + s + " };";
-
- // func = new Function(wrap(body));
-
- dynamicValidate = (formData, errors) => {
- try {
- let body = atob(this.state._validate);
- let res = new Function(this.wrap(body))
- .call(null)
- .call(null, formData, errors);
- return res;
} catch (error) {
- console.log(error);
+ alert(error.message);
+ return false;
}
};
- setExtraActions = (actions) => {
+ const handleFileUpload = async (file) => {
+ Parse.serverURL = process.env.REACT_APP_SERVERURL;
+ Parse.initialize(process.env.REACT_APP_APPID);
+ setfileload(true);
+ const fileName = file.name;
+ const name = sanitizeFileName(fileName);
+ const pdfFile = file;
+ const parseFile = new Parse.File(name, pdfFile);
+
try {
- let result = {};
- Object.entries(actions).forEach(([key, value]) => {
- let body = atob(value);
- let res = new Function(this.wrap(body)).call(null);
- result[key] = res;
+ const response = await parseFile.save({
+ progress: (progressValue, loaded, total, { type }) => {
+ if (type === "upload" && progressValue !== null) {
+ const percentCompleted = Math.round((loaded * 100) / total);
+ setpercentage(percentCompleted);
+ }
+ }
});
- return result;
+
+ // The response object will contain information about the uploaded file
+ // You can access the URL of the uploaded file using response.url()
+ setFileUpload(response.url());
+ setfileload(false);
+ if (response.url()) {
+ return response.url();
+ }
} catch (error) {
- console.log(error);
+ setfileload(false);
+ setpercentage(0);
+ console.error("Error uploading file:", error);
}
};
- handleSubmit = async ({ formData }) => {
- this.setState({ active: false, loading: true });
- if (
- this.state.userSchema &&
- Object.entries(this.state.userSchema).length !== 0 &&
- this.state.userSchema.constructor === Object
- ) {
- try {
- let RowData = formData;
- RowData &&
- Object.entries(RowData).forEach(([key, value]) => {
- if (typeof value === "string") {
- RowData[key] = value.trim();
- }
- });
- let UserData = {};
- let RoleField = "";
- let _scanData = this.state.schemaState;
- if (_scanData.dependencies) {
- Object.keys(_scanData.dependencies).forEach((key) => {
- if (_scanData.dependencies[key].oneOf) {
- _scanData.dependencies[key].oneOf.forEach((val) => {
- Object.keys(val.properties).forEach((k) => {
- if (typeof val.properties[k] === "object") {
- if (val.properties[k].format === "date") {
- if (RowData[k]) {
- let newdate = new Date(RowData[k]);
- RowData[k] = newdate;
- }
- }
- if (val.properties[k].component === "HtmlEditor") {
- if (RowData[k]) {
- let newHtml = RowData[k]
- .replace(/
]*>/g, "")
- .replace(/<\/p>/g, " ");
- RowData[k] = newHtml;
- }
- }
- if (val.properties[k].component === "DateTime") {
- if (RowData[k]) {
- let newDate11 = new Date(RowData[k]);
- RowData[k] = newDate11;
- }
- }
- if (val.properties[k].component === "CurrencyInput") {
- if (val.properties[k].currencyColumn) {
- RowData[`${val.properties[k].currencyColumn}`] =
- val.properties[k].defaultcurrency;
- }
- }
- if (val.properties[k].type === "string") {
- if (typeof RowData[k] === "string")
- RowData[k] = RowData[k].trim();
- }
- if (val.properties[k].data !== undefined) {
- if (val.properties[k].data.isPointer) {
- let pointer = undefined;
- if (val.properties[k].data.class) {
- if (val.properties[k].data.savePointerClass) {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className:
- val.properties[k].data.savePointerClass,
- objectId: RowData[k]
- };
- }
- } else {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: val.properties[k].data.class,
- objectId: RowData[k]
- };
- }
- }
- } else {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: localStorage.getItem("extended_class"),
- objectId: RowData[k]
- };
- }
- }
- RowData[k] = pointer;
- }
- if (val.properties[k].data.FolderTypeValue) {
- if (RowData[k]) {
- let obj = {
- __type: "Pointer",
- className: val.properties[k].data.ClassName,
- objectId: RowData[k]
- };
- RowData[k] = obj;
- }
- }
- }
- }
- });
- });
- }
- });
- }
- let _userScheama = this.state.userSchema;
- Object.keys(_scanData).forEach(function (key) {
- let _dd = _scanData[key];
- typeof _dd === "object" &&
- Object.keys(_dd).forEach(function (k) {
- if (_dd[k].type === "array" && _dd[k].items) {
- let _prop = _dd[k].items.properties;
+ const dropboxSuccess = async (files) => {
+ setfileload(true);
+ const file = files[0];
+ const url = file.link;
+ const mb = Math.round(file.bytes / Math.pow(1024, 2));
- if (_prop && Array.isArray(RowData[k])) {
- let newRow = [];
- RowData[k].forEach((t) => {
- let _newObj = t;
- if (typeof t === "object") {
- Object.keys(_prop).forEach(function (l) {
- if (_prop[l].data && _prop[l].data.isPointer) {
- if (typeof t[l] === "object") {
- let obj = {
- __type: "Pointer",
- className: _prop[l].data.class,
- objectId: t[l].objectId
- };
- _newObj = { ..._newObj, [l]: obj };
- } else {
- let obj = {
- __type: "Pointer",
- className: _prop[l].data.class,
- objectId: t[l]
- };
- _newObj = { ..._newObj, [l]: obj };
- }
- }
- });
- }
- newRow.push(_newObj);
- });
- RowData[k] = newRow;
- }
- }
-
- if (_dd[k].component === "AutoSuggest" && _dd[k].isPointer) {
- if (RowData[k]) {
- let pointer = {
- __type: "Pointer",
- className: _dd[k].class,
- objectId: RowData[k]
- };
- RowData[k] = pointer;
- }
- }
- if (_dd[k].format === "date") {
- let newdate = new Date(RowData[k]);
- RowData[k] = newdate;
- }
- if (_dd[k].component === "CurrencyInput") {
- RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency;
- }
- if (_dd[k].component === "HtmlEditor") {
- if (RowData[k]) {
- let newHtml = RowData[k]
- .replace(/
]*>/g, "")
- .replace(/<\/p>/g, " ");
- RowData[k] = newHtml;
- }
- }
- if (_dd[k].component === "DateTime") {
- let newDate;
- if (!RowData[k]) {
- newDate = new Date();
- } else {
- newDate = new Date(RowData[k]);
- }
- RowData[k] = newDate;
- }
- if (_dd[k].data !== undefined) {
- if (_dd[k].data.isPointer) {
- let pointer = undefined;
- if (_dd[k].data.savePointerClass) {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: _dd[k].data.savePointerClass,
- objectId: RowData[k]
- };
- RowData[k] = pointer;
- }
- } else if (RowData[k]) {
- if (_dd[k].data.class) {
- pointer = {
- __type: "Pointer",
- className: _dd[k].data.class,
- objectId: RowData[k]
- };
- } else {
- pointer = {
- __type: "Pointer",
- className: localStorage.getItem("extended_class"),
- objectId: RowData[k]
- };
- }
-
- RowData[k] = pointer;
- }
- }
- if (_dd[k].data.FolderTypeValue) {
- if (RowData[k]) {
- let obj = {
- __type: "Pointer",
- className: _dd[k].data.ClassName,
- objectId: RowData[k]
- };
- RowData[k] = obj;
- }
- }
- }
- if (_dd[k].type === "string") {
- let d = RowData[k];
- if (typeof d === "string") {
- RowData[k] = d.trim();
- }
- }
- });
- });
-
- Object.keys(_userScheama).forEach(function (kkey) {
- Object.keys(RowData).forEach(function (_k) {
- if (_userScheama[kkey].startsWith("$")) {
- let _uuu = _userScheama[kkey].replace("$", "");
- if (kkey === "Role" || kkey === "role") {
- if (RowData[_uuu] === RowData[_k]) {
- RoleField = RowData[_uuu];
- }
- } else if (_uuu === _k) {
- UserData[kkey] = RowData[_k];
- }
- } else {
- RoleField = _userScheama[kkey];
- }
- });
- });
- Parse.serverURL = this.state.parseBaseUrl;
- Parse.initialize(this.state.parseAppId);
- var _users = Parse.Object.extend("User");
- var _user = new _users();
- let _uname = UserData.name;
- _user.set("name", _uname.toString().trim());
- if (UserData.username) {
- let _u_un = UserData.username;
- _user.set("username", _u_un.toString().trim());
- if (UserData.email) {
- let _email = UserData.email;
- _user.set("email", _email.trim());
- }
- } else if (UserData.email) {
- let _email = UserData.email;
- _user.set("email", _email.trim());
- _user.set("username", _email.trim());
- } else {
- _user.set("username", UserData.phone.toString().trim());
- }
- _user.set("phone", UserData.phone);
- _user.set("password", UserData.password);
- _user.save().then(
- (u) => {
- let roleurl = `${this.state.parseBaseUrl}functions/AddUserToRole`;
- const headers = {
- "Content-Type": "application/json",
- "X-Parse-Application-Id": this.state.parseAppId,
- sessionToken: localStorage.getItem("accesstoken")
- };
- let body = {
- appName: localStorage.getItem("_appName"),
- roleName: RoleField,
- userId: u.id
- };
- axios.post(roleurl, body, { headers: headers }).then(() => {
- const currentUser = Parse.User.current();
- let _fname = this.state.title;
- var forms = Parse.Object.extend(_fname);
- var form = new forms();
- form.set(
- "CreatedBy",
- Parse.User.createWithoutData(currentUser.id)
- );
- if (localStorage.getItem("TenetId")) {
- form.set("TenantId", {
- __type: "Pointer",
- className: "partners_Tenant",
- objectId: localStorage.getItem("TenetId")
- });
- }
- form.set("UserId", u);
- form.set("UserRole", RoleField);
- if (this.state["FormACL"]) {
- let ACL = {};
- for (let [key, value] of Object.entries(
- this.state["FormACL"]
- )) {
- if (key === "*") {
- ACL[key] = value;
- }
- if (key === "#currentUser#") {
- ACL[Parse.User.current().id] = value;
- }
- if (key.startsWith("role")) {
- ACL[key] = value;
- }
- }
- form.setACL(new Parse.ACL(ACL));
- }
- form.save(RowData).then(
- () => {
- let filtered = {};
- if (this.state.redirect_type === "clearData") {
- if (
- this.state.persistentFields &&
- this.state.persistentFields.length
- ) {
- filtered = Object.keys(RowData)
- .filter((key) =>
- this.state.persistentFields.includes(key)
- )
- .reduce((obj, key) => {
- obj[key] = RowData[key];
- return obj;
- }, {});
- }
- } else {
- RowData = {};
- }
- this.setState(
- {
- formData: filtered,
- active: true,
- loading: false,
- toastColor: "#5cb85c",
- toastDescription: this.state.successMassage
- },
- () => {
- let redirect_type = this.state.redirect_type;
- let redirect_id = this.state.redirect_id;
- this.props.removeState();
- this.props.removeLevel2State();
- this.props.removeLevel3State();
- var x = document.getElementById("snackbar");
- x.className = "show";
- setTimeout(function () {
- x.className = x.className.replace("show", "");
- if (redirect_type === "Form") {
- this.props.navigate(`/form/${redirect_id}`);
- } else if (redirect_type === "Report") {
- this.props.navigate(`/report/${redirect_id}`);
- } else if (redirect_type === "Dashboard") {
- this.props.navigate(`/dashboard/${redirect_id}`);
- } else if (redirect_type === "Url") {
- window.location = redirect_id;
- } else if (redirect_type === "Microapp") {
- this.props.navigate(`/asmf/${redirect_id}`);
- }
- }, 2000);
- }
- );
- },
- (error) => {
- console.log("error", error.message);
- this.setState({
- loading: false,
- active: true,
- toastColor: "#d9534f",
- toastDescription: error.message
- });
-
- var x = document.getElementById("snackbar");
- x.className = "show";
- setTimeout(function () {
- x.className = x.className.replace("show", "");
- }, 2000);
- }
- );
- });
- },
- async (error) => {
- if (error.code === 202) {
- let params;
- if (UserData.username) {
- params = { username: UserData.username };
- } else if (UserData.email) {
- params = { email: UserData.email };
- } else {
- params = { username: UserData.phone };
- }
- const userRes = await Parse.Cloud.run("getUserId", params);
- try {
- let _emp = {
- __type: "Pointer",
- className: "_User",
- objectId: userRes.id
- };
- let roleurl = `${this.state.parseBaseUrl}functions/AddUserToRole`;
- const headers = {
- "Content-Type": "application/json",
- "X-Parse-Application-Id": this.state.parseAppId,
- sessionToken: localStorage.getItem("accesstoken")
- };
- let body = {
- appName: localStorage.getItem("_appName"),
- roleName: RoleField,
- userId: userRes.id
- };
- await axios
- .post(roleurl, body, { headers: headers })
- .then(() => {
- const currentUser = Parse.User.current();
- let _fname = this.state.title;
- var forms = Parse.Object.extend(_fname);
- var form = new forms();
- form.set(
- "CreatedBy",
- Parse.User.createWithoutData(currentUser.id)
- );
- if (localStorage.getItem("TenetId")) {
- form.set("TenantId", {
- __type: "Pointer",
- className: "partners_Tenant",
- objectId: localStorage.getItem("TenetId")
- });
- }
- form.set("UserId", _emp);
- form.set("UserRole", RoleField);
- if (this.state["FormACL"]) {
- let ACL = {};
- for (let [key, value] of Object.entries(
- this.state["FormACL"]
- )) {
- if (key === "*") {
- ACL[key] = value;
- }
- if (key === "#currentUser#") {
- ACL[Parse.User.current().id] = value;
- }
- if (key.startsWith("role")) {
- ACL[key] = value;
- }
- }
- form.setACL(new Parse.ACL(ACL));
- }
- form.save(RowData).then(
- () => {
- let filtered = {};
- if (this.state.redirect_type === "clearData") {
- if (
- this.state.persistentFields &&
- this.state.persistentFields.length
- ) {
- filtered = Object.keys(RowData)
- .filter((key) =>
- this.state.persistentFields.includes(key)
- )
- .reduce((obj, key) => {
- obj[key] = RowData[key];
- return obj;
- }, {});
- }
- } else {
- RowData = {};
- }
- this.setState(
- {
- formData: filtered,
- active: true,
- loading: false,
- toastColor: "#5cb85c",
- toastDescription: this.state.successMassage
- },
- () => {
- let redirect_type = this.state.redirect_type;
- let redirect_id = this.state.redirect_id;
- this.props.removeState();
- this.props.removeLevel2State();
- this.props.removeLevel3State();
- var x = document.getElementById("snackbar");
- x.className = "show";
- setTimeout(function () {
- x.className = x.className.replace("show", "");
- if (redirect_type === "Form") {
- this.props.navigate(`/form/${redirect_id}`);
- } else if (redirect_type === "Report") {
- this.props.navigate(`/report/${redirect_id}`);
- } else if (redirect_type === "Dashboard") {
- this.props.navigate(
- `/dashboard/${redirect_id}`
- );
- } else if (redirect_type === "Url") {
- window.location = redirect_id;
- } else if (redirect_type === "Microapp") {
- this.props.navigate(`/asmf/${redirect_id}`);
- }
- }, 2000);
- }
- );
- },
- (error) => {
- this.setState({
- loading: false,
- active: true,
- toastColor: "#d9534f",
- toastDescription: error.message
- });
-
- var x = document.getElementById("snackbar");
- x.className = "show";
- setTimeout(function () {
- x.className = x.className.replace("show", "");
- }, 2000);
- }
- );
- });
- } catch (error) {
- this.setState({
- loading: false,
- active: true,
- toastColor: "#d9534f",
- toastDescription: error.message
- });
-
- var x = document.getElementById("snackbar");
- x.className = "show";
- setTimeout(function () {
- x.className = x.className.replace("show", "");
- }, 2000);
- }
- }
- }
+ if (mb > 10) {
+ setTimeout(() => {
+ alert(
+ `The selected file size is too large. Please select a file less than 10 MB`
);
- } catch (e) {
- console.log("Problem", e.message);
- this.setState({ loading: false, active: true });
- }
+ }, 500);
+ return;
} else {
+ const name = sanitizeFileName(file.name);
+
+ const parseFile = new Parse.File(name, { uri: url });
+
try {
- let RowData = formData;
- let _scanData = this.state.schemaState;
- if (_scanData.dependencies) {
- Object.keys(_scanData.dependencies).forEach((key) => {
- if (_scanData.dependencies[key].oneOf) {
- _scanData.dependencies[key].oneOf.forEach((val) => {
- Object.keys(val.properties).forEach((k) => {
- if (typeof val.properties[k] === "object") {
- if (val.properties[k].format === "date") {
- if (RowData[k]) {
- let newdate = new Date(RowData[k]);
- RowData[k] = newdate;
- }
- }
- if (val.properties[k].component === "HtmlEditor") {
- if (RowData[k]) {
- let newHtml = RowData[k]
- .replace(/
]*>/g, "")
- .replace(/<\/p>/g, " ");
- RowData[k] = newHtml;
- }
- }
- if (val.properties[k].component === "DateTime") {
- if (RowData[k]) {
- let newDate11 = new Date(RowData[k]);
- RowData[k] = newDate11;
- }
- }
- if (val.properties[k].component === "CurrencyInput") {
- if (val.properties[k].currencyColumn) {
- RowData[`${val.properties[k].currencyColumn}`] =
- val.properties[k].defaultcurrency;
- }
- }
- if (val.properties[k].type === "string") {
- if (typeof RowData[k] === "string")
- RowData[k] = RowData[k].trim();
- }
- if (val.properties[k].data !== undefined) {
- if (val.properties[k].data.isPointer) {
- let pointer = undefined;
- if (val.properties[k].data.savePointerClass) {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className:
- val.properties[k].data.savePointerClass,
- objectId: RowData[k]
- };
- }
- } else if (val.properties[k].data.class) {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: val.properties[k].data.class,
- objectId: RowData[k]
- };
- }
- } else {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: localStorage.getItem("extended_class"),
- objectId: RowData[k]
- };
- }
- }
-
- RowData[k] = pointer;
- }
- if (val.properties[k].data.FolderTypeValue) {
- if (RowData[k]) {
- let obj = {
- __type: "Pointer",
- className: val.properties[k].data.ClassName,
- objectId: RowData[k]
- };
- RowData[k] = obj;
- }
- }
- }
- }
- });
- });
+ const response = await parseFile.save({
+ progress: (progressValue, loaded, total, { type }) => {
+ if (type === "upload" && progressValue !== null) {
+ const percentCompleted = Math.round((loaded * 100) / total);
+ setpercentage(percentCompleted);
}
- });
- }
- Object.keys(_scanData).forEach(function (key) {
- let _dd = _scanData[key];
- if (typeof _dd === "object") {
- Object.keys(_dd).forEach(function (k) {
- if (_dd[k].type === "array" && _dd[k].items) {
- let _prop = _dd[k].items.properties;
- if (_prop && Array.isArray(RowData[k])) {
- let newRow = [];
- RowData[k].forEach((t) => {
- let _newObj = t;
- if (typeof t === "object") {
- Object.keys(_prop).forEach(function (l) {
- if (_prop[l].data && _prop[l].data.isPointer) {
- if (typeof t[l] === "object") {
- let obj = {
- __type: "Pointer",
- className: _prop[l].data.class,
- objectId: t[l].objectId
- };
- _newObj = { ..._newObj, [l]: obj };
- } else {
- let obj = {
- __type: "Pointer",
- className: _prop[l].data.class,
- objectId: t[l]
- };
- _newObj = { ..._newObj, [l]: obj };
- }
- }
- });
- }
- newRow.push(_newObj);
- });
- RowData[k] = newRow;
- }
- }
-
- if (_dd[k].component === "AutoSuggest" && _dd[k].isPointer) {
- if (RowData[k]) {
- let pointer = {
- __type: "Pointer",
- className: _dd[k].class,
- objectId: RowData[k]
- };
- RowData[k] = pointer;
- }
- }
- if (_dd[k].format === "date") {
- let newdate = new Date(RowData[k]);
- RowData[k] = newdate;
- }
- if (_dd[k].component === "HtmlEditor") {
- if (RowData[k]) {
- let newHtml = RowData[k]
- .replace(/
]*>/g, "")
- .replace(/<\/p>/g, " ");
- RowData[k] = newHtml;
- }
- }
- if (_dd[k].component === "DateTime") {
- let newDate11;
- if (!RowData[k]) {
- newDate11 = new Date();
- } else {
- newDate11 = new Date(RowData[k]);
- }
- RowData[k] = newDate11;
- }
- if (_dd[k].component === "CurrencyInput") {
- if (_dd[k].currencyColumn) {
- RowData[`${_dd[k].currencyColumn}`] = _dd[k].defaultcurrency;
- }
- }
- if (_dd[k].data !== undefined) {
- if (_dd[k].data.isPointer) {
- let pointer = undefined;
- if (RowData[k] && RowData[k] !== "Select") {
- if (_dd[k].type === "array") {
- pointer = [];
- RowData[k] &&
- RowData[k].forEach((a) => {
- let _kk = {};
- if (_dd[k].data.savePointerClass) {
- _kk = {
- __type: "Pointer",
- className: _dd[k].data.savePointerClass,
- objectId: a
- };
- } else {
- _kk = {
- __type: "Pointer",
- className: _dd[k].data.class,
- objectId: a
- };
- }
-
- pointer.push(_kk);
- });
- } else if (_dd[k].data.class) {
- if (_dd[k].data.savePointerClass) {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: _dd[k].data.savePointerClass,
- objectId: RowData[k]
- };
- }
- } else if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: _dd[k].data.class,
- objectId: RowData[k]
- };
- }
- } else {
- if (RowData[k]) {
- pointer = {
- __type: "Pointer",
- className: localStorage.getItem("extended_class"),
- objectId: RowData[k]
- };
- }
- }
-
- RowData[k] = pointer;
- }
- }
- if (_dd[k].data.FolderTypeValue) {
- if (RowData[k]) {
- let obj = {
- __type: "Pointer",
- className: _dd[k].data.ClassName,
- objectId: RowData[k]
- };
- RowData[k] = obj;
- }
- }
- }
- if (_dd[k].type === "string") {
- let d = RowData[k];
- if (typeof d === "string") {
- RowData[k] = d.trim();
- }
- }
- });
}
});
- Parse.serverURL = this.state.parseBaseUrl;
- Parse.initialize(this.state.parseAppId);
- const currentUser = Parse.User.current();
- let _fname = this.state.title;
- var forms = Parse.Object.extend(_fname);
+ setFileUpload(response.url());
+ setfileload(false);
- var form = new forms();
-
- form.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
-
- if (this.state["FormACL"]) {
- let ACL = {};
- for (let [key, value] of Object.entries(this.state["FormACL"])) {
- if (key === "*") {
- ACL[key] = value;
- }
- if (key === "#currentUser#") {
- ACL[Parse.User.current().id] = value;
- } else if (key.startsWith("#")) {
- let arr = key.split("#");
- let new_arr = arr.filter((x) => x !== "");
- if (new_arr.length === 2) {
- let l = RowData[new_arr[0]];
- try {
- const Agent = Parse.Object.extend(l.className);
- const qu = new Parse.Query(Agent);
- qu.equalTo("objectId", l.objectId);
- qu.include(new_arr[1]);
- await qu.first();
- } catch (err) {
- console.error("Error while fetching Agent", err.massage);
- }
- }
- }
- if (key.startsWith("role")) {
- ACL[key] = value;
- }
- }
- form.setACL(new Parse.ACL(ACL));
+ if (response.url()) {
+ return response.url();
}
-
- form.save(RowData).then(
- (form) => {
- let filtered = {};
- if (this.state.redirect_type === "clearData") {
- if (
- this.state.persistentFields &&
- this.state.persistentFields.length
- ) {
- filtered = Object.keys(RowData)
- .filter((key) => this.state.persistentFields.includes(key))
- .reduce((obj, key) => {
- obj[key] = RowData[key];
- return obj;
- }, {});
- }
- } else {
- RowData = {};
- }
-
- this.setState(
- {
- formData: filtered,
- active: true,
- loading: false,
- toastColor: "#5cb85c",
- toastDescription: this.state.successMassage
- },
- () => {
- let redirect_type = this.state.redirect_type;
- let redirect_id = this.state.redirect_id;
- var x = document.getElementById("snackbar");
- this.props.removeState();
- this.props.removeLevel2State();
- this.props.removeLevel3State();
- x.className = "show";
- setTimeout(function () {
- x.className = x.className.replace("show", "");
- }, 2000);
- if (redirect_type === "Form") {
- this.props.navigate(`/form/${redirect_id}`);
- } else if (redirect_type === "Report") {
- this.props.navigate(`/report/${redirect_id}`);
- } else if (redirect_type === "Dashboard") {
- this.props.navigate(`/dashboard/${redirect_id}`);
- } else if (redirect_type === "Url") {
- window.location = redirect_id;
- } else if (redirect_type === "Microapp") {
- window.localStorage.setItem(
- "rowlevel",
- JSON.stringify({ ...formData, ...form })
- );
- this.props.navigate(`/asmf/${redirect_id}`);
- }
- }
- );
- },
- (error) => {
- this.setState({
- loading: false,
- active: true,
- toastColor: "#d9534f",
- toastDescription: error.message
- });
-
- var x = document.getElementById("snackbar");
- x.className = "show";
- setTimeout(function () {
- x.className = x.className.replace("show", "");
- }, 2000);
- }
- );
} catch (error) {
- this.setState({
- loading: false,
- active: true,
- toastColor: "#d9534f",
- toastDescription: error.message
- });
-
- var x = document.getElementById("snackbar");
- x.className = "show";
- setTimeout(function () {
- x.className = x.className.replace("show", "");
- }, 2000);
+ setfileload(false);
+ setpercentage(0);
+ console.error("Error uploading file:", error);
}
}
};
+ const dropboxCancel = async () => {};
+ const handleSubmit = async (e) => {
+ e.preventDefault();
+ setIsSubmit(true);
+ try {
+ const currentUser = Parse.User.current();
+ const object = new Parse.Object(props.Cls);
+ object.set("Name", formData?.Name);
+ object.set("Description", formData?.Description);
+ object.set("Note", formData?.Note);
+ if (props.title === "Request Signature") {
+ object.set(
+ "TimeToCompleteDays",
+ parseInt(formData?.TimeToCompleteDays)
+ );
+ }
+ object.set("URL", fileupload);
+ object.set("CreatedBy", Parse.User.createWithoutData(currentUser.id));
+ if (folder && folder.ObjectId) {
+ object.set("Folder", {
+ __type: "Pointer",
+ className: props.Cls,
+ objectId: folder.ObjectId
+ });
+ }
+ if (signers && signers.length > 0) {
+ object.set("Signers", signers);
+ }
+ const ExtCls = JSON.parse(localStorage.getItem("Extand_Class"));
+ object.set("ExtUserPtr", {
+ __type: "Pointer",
+ className: "contracts_Users",
+ objectId: ExtCls[0].objectId
+ });
- saveUrlParamToFormdata = () => {
- let url = window.location.hash;
- let paramString = url.split("?")[1];
- let queryString = new URLSearchParams(paramString);
- let obj = {};
- for (const [key, value] of queryString.entries()) {
- obj = { ...obj, [key]: value };
+ const res = await object.save();
+ if (res) {
+ setSigners([]);
+ setFolder({ ObjectId: "", Name: "" });
+ setFormData({
+ Name: "",
+ Description: "",
+ Note: ""
+ });
+ setFileUpload([]);
+ setpercentage(0);
+ navigate(
+ `/asmf/remoteUrl=aHR0cHM6Ly9xaWstYWktb3JnLmdpdGh1Yi5pby9TaWduLU1pY3JvYXBwVjIvcmVtb3RlRW50cnkuanM=&moduleToLoad=AppRoutes&remoteName=signmicroapp/${props?.redirectRoute}/${res.id}`
+ );
+ }
+ } catch (err) {
+ console.log("err ", err);
+ setIsErr(true);
+ } finally {
+ setIsAlert(true);
+ setTimeout(() => {
+ setIsAlert(false);
+ }, 1000);
+ setIsSubmit(false);
}
- this.setState({ formData: obj });
};
- componentDidMount() {
- let url = window.location.hash;
- if (url.includes("_app")) {
- this.setState({ isAppRequest: true });
+ const handleFolder = (data) => {
+ setFolder(data);
+ };
+ const handleSigners = (data) => {
+ if (data && data.length > 0) {
+ const updateSigners = data.map((x) => ({
+ __type: "Pointer",
+ className: "contracts_Contactbook",
+ objectId: x
+ }));
+ setSigners(updateSigners);
}
- let id = this.props.id;
- this.getForm(id);
- this.saveUrlParamToFormdata();
- }
+ };
- UNSAFE_componentWillReceiveProps(newProps) {
- let id = newProps.id;
- this.getForm(id);
- }
-
- render() {
- if (localStorage.getItem("accesstoken") === null) {
- this.props.navigate(`/`);
- }
-
- let schema = this.state.schemaState;
- let uiSchema = this.state.ui_schema;
- let rules = this.state.rules;
- let extraActions = this.state.extraActions;
-
- let FormToDisplay = applyRules(
- schema,
- uiSchema,
- rules,
- Engine,
- extraActions
- )(Form);
- let formView = (
-
-
-
- {this.state.active && this.state.buttons.submitText ? (
-
- ) : (
- this.state.buttons.submitText && (
-
- )
- )}
-
- {this.state.buttons.resetText && (
-
- )}
-
-
-
- );
-
- if (this.state.loading) {
- formView = (
+ const handleReset = () => {
+ setSigners([]);
+ setFolder({ ObjectId: "", Name: "" });
+ setFormData({
+ Name: "",
+ Description: "",
+ Note: ""
+ });
+ setFileUpload([]);
+ setpercentage(0);
+ };
+ return (
+
+
+ {isAlert && (
+
+ {isErr
+ ? "Something went wrong please try again!"
+ : `${props.msgVar} created successfully!`}
+
+ )}
+ {isSubmit ? (
- );
- }
- return (
-
-
-
-
-
-
-
- {this.state.help ? (
-
- ) : null}
-
{formView}
-
+ ) : (
+
+ )}
+
+ );
+};
+export default Form;
diff --git a/apps/OpenSign/src/routes/PageNotFound.js b/apps/OpenSign/src/routes/PageNotFound.js
index be8d10e6d..825cb98fb 100644
--- a/apps/OpenSign/src/routes/PageNotFound.js
+++ b/apps/OpenSign/src/routes/PageNotFound.js
@@ -2,7 +2,7 @@
import React from "react";
import Title from "../components/Title";
-const PageNotFound = () => {
+const PageNotFound = ({ prefix }) => {
return (
@@ -10,7 +10,9 @@ const PageNotFound = () => {
404
-
Page Not Found
+
+ {prefix ? prefix : "Page"} Not Found
+
);
diff --git a/apps/OpenSign/src/routes/Report.js b/apps/OpenSign/src/routes/Report.js
index af3273095..b47be1f34 100644
--- a/apps/OpenSign/src/routes/Report.js
+++ b/apps/OpenSign/src/routes/Report.js
@@ -5,6 +5,7 @@ import axios from "axios";
import reportJson from "../json/ReportJson";
import { useParams } from "react-router-dom";
import Title from "../components/Title";
+import PageNotFound from "./PageNotFound";
const Report = () => {
const { id } = useParams();
@@ -15,7 +16,7 @@ const Report = () => {
const [heading, setHeading] = useState([]);
const [isNextRecord, setIsNextRecord] = useState(false);
const [isMoreDocs, setIsMoreDocs] = useState(true);
- const [form, setForm]= useState("")
+ const [form, setForm] = useState("");
const abortController = new AbortController();
const docPerPage = 10;
@@ -51,7 +52,7 @@ const Report = () => {
setActions(json.actions);
setHeading(json.heading);
setReportName(json.reportName);
- setForm(json.form)
+ setForm(json.form);
Parse.serverURL = localStorage.getItem("BaseUrl12");
Parse.initialize(localStorage.getItem("AppID12"));
const currentUser = Parse.User.current().id;
@@ -159,13 +160,7 @@ const Report = () => {
form={form}
/>
) : (
-
+
)}
>
)}
diff --git a/apps/OpenSign/src/styles/loader.css b/apps/OpenSign/src/styles/loader.css
index e6e1624f8..940d1c557 100644
--- a/apps/OpenSign/src/styles/loader.css
+++ b/apps/OpenSign/src/styles/loader.css
@@ -1,2215 +1,66 @@
- fieldset {
- border: 0 !important;
- margin: 0 !important;
- padding: 0 !important;
- }
-
- [class*="loader-"] {
- display: inline-block;
- width: 1em;
- height: 1em;
- color: inherit;
- vertical-align: middle;
- pointer-events: none;
- }
-
- .loader-01 {
- border: 0.2em dotted currentcolor;
- border-radius: 50%;
- -webkit-animation: 1s loader-01 linear infinite;
- animation: 1s loader-01 linear infinite;
- }
-
- @-webkit-keyframes loader-01 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-01 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-02 {
- border: 0.2em solid transparent;
- border-left-color: currentcolor;
- border-right-color: currentcolor;
- border-radius: 50%;
- -webkit-animation: 1s loader-02 linear infinite;
- animation: 1s loader-02 linear infinite;
- }
-
- @-webkit-keyframes loader-02 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-02 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-03 {
- border: 0.2em solid currentcolor;
- border-bottom-color: transparent;
- border-radius: 50%;
- -webkit-animation: 1s loader-03 linear infinite;
- animation: 1s loader-03 linear infinite;
- position: relative;
- }
-
- @-webkit-keyframes loader-03 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-03 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-04 {
- border: 1px solid currentcolor;
- border-radius: 50%;
- -webkit-animation: 1s loader-04 linear infinite;
- animation: 1s loader-04 linear infinite;
- position: relative;
- }
- .loader-04:before {
- content: "";
- display: block;
- width: 0;
- height: 0;
- position: absolute;
- top: -0.2em;
- left: 50%;
- border: 0.2em solid currentcolor;
- border-radius: 50%;
- }
-
- @-webkit-keyframes loader-04 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-04 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-05 {
- border: 0.2em solid transparent;
- border-top-color: currentcolor;
- border-radius: 50%;
- -webkit-animation: 1s loader-05 linear infinite;
- animation: 1s loader-05 linear infinite;
- position: relative;
- }
- .loader-05:before {
- content: "";
- display: block;
- width: inherit;
- height: inherit;
- position: absolute;
- top: -0.2em;
- left: -0.2em;
- border: 0.2em solid currentcolor;
- border-radius: 50%;
- opacity: 0.5;
- }
-
- @-webkit-keyframes loader-05 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-05 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-06 {
- border: 0.2em solid currentcolor;
- border-radius: 50%;
- -webkit-animation: loader-06 1s ease-out infinite;
- animation: loader-06 1s ease-out infinite;
- }
-
- @-webkit-keyframes loader-06 {
- 0% {
- -webkit-transform: scale(0);
- transform: scale(0);
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 100% {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 0;
- }
- }
-
- @keyframes loader-06 {
- 0% {
- -webkit-transform: scale(0);
- transform: scale(0);
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 100% {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 0;
- }
- }
- .loader-07 {
- border: 0 solid transparent;
- border-radius: 50%;
- position: relative;
- }
- .loader-07:before, .loader-07:after {
- content: "";
- border: 0.2em solid currentcolor;
- border-radius: 50%;
- width: inherit;
- height: inherit;
- position: absolute;
- top: 0;
- left: 0;
- -webkit-animation: loader-07 1s linear infinite;
- animation: loader-07 1s linear infinite;
- opacity: 0;
- }
- .loader-07:before {
- -webkit-animation-delay: 1s;
- animation-delay: 1s;
- }
- .loader-07:after {
- -webkit-animation-delay: 0.5s;
- animation-delay: 0.5s;
- }
-
- @-webkit-keyframes loader-07 {
- 0% {
- -webkit-transform: scale(0);
- transform: scale(0);
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 100% {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 0;
- }
- }
-
- @keyframes loader-07 {
- 0% {
- -webkit-transform: scale(0);
- transform: scale(0);
- opacity: 0;
- }
- 50% {
- opacity: 1;
- }
- 100% {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 0;
- }
- }
- .loader-08 {
- position: relative;
- }
- .loader-08:before, .loader-08:after {
- content: "";
- width: inherit;
- height: inherit;
- border-radius: 50%;
- background-color: currentcolor;
- opacity: 0.6;
- position: absolute;
- top: 0;
- left: 0;
- -webkit-animation: loader-08 2s infinite ease-in-out;
- animation: loader-08 2s infinite ease-in-out;
- }
- .loader-08:after {
- -webkit-animation-delay: -1s;
- animation-delay: -1s;
- }
-
- @-webkit-keyframes loader-08 {
- 0%,
- 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
- 50% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
- }
-
- @keyframes loader-08 {
- 0%,
- 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
- 50% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
- }
- .loader-09 {
- background-color: currentcolor;
- border-radius: 50%;
- -webkit-animation: loader-09 1s infinite ease-in-out;
- animation: loader-09 1s infinite ease-in-out;
- }
-
- @-webkit-keyframes loader-09 {
- 0% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
- 100% {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 0;
- }
- }
-
- @keyframes loader-09 {
- 0% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
- 100% {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 0;
- }
- }
- .loader-10 {
- position: relative;
- -webkit-animation: loader-10-1 2s infinite linear;
- animation: loader-10-1 2s infinite linear;
- }
- .loader-10:before, .loader-10:after {
- content: "";
- width: 0;
- height: 0;
- border: 0.5em solid currentcolor;
- display: block;
- position: absolute;
- border-radius: 100%;
- -webkit-animation: loader-10-2 2s infinite ease-in-out;
- animation: loader-10-2 2s infinite ease-in-out;
- }
- .loader-10:before {
- top: 0;
- left: 50%;
- }
- .loader-10:after {
- bottom: 0;
- right: 50%;
- -webkit-animation-delay: -1s;
- animation-delay: -1s;
- }
-
- @-webkit-keyframes loader-10-1 {
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-10-1 {
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- @-webkit-keyframes loader-10-2 {
- 0%,
- 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
- 50% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
- }
- @keyframes loader-10-2 {
- 0%,
- 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
- 50% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
- }
- .loader-11 {
- background-color: currentcolor;
- -webkit-animation: loader-11 1.2s infinite ease-in-out;
- animation: loader-11 1.2s infinite ease-in-out;
- }
-
- @-webkit-keyframes loader-11 {
- 0% {
- -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
- transform: perspective(120px) rotateX(0deg) rotateY(0deg);
- }
- 50% {
- -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
- transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
- }
- 100% {
- -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
- transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
- }
- }
-
- @keyframes loader-11 {
- 0% {
- -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
- transform: perspective(120px) rotateX(0deg) rotateY(0deg);
- }
- 50% {
- -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
- transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
- }
- 100% {
- -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
- transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
- }
- }
- .loader-12 {
- position: relative;
- }
- .loader-12:before, .loader-12:after {
- content: "";
- display: block;
- position: absolute;
- background-color: currentcolor;
- left: 50%;
- right: 0;
- top: 0;
- bottom: 50%;
- box-shadow: -0.5em 0 0 currentcolor;
- -webkit-animation: loader-12 1s linear infinite;
- animation: loader-12 1s linear infinite;
- }
- .loader-12:after {
- top: 50%;
- bottom: 0;
- -webkit-animation-delay: 0.25s;
- animation-delay: 0.25s;
- }
-
- @-webkit-keyframes loader-12 {
- 0%,
- 100% {
- box-shadow: -0.5em 0 0 transparent;
- background-color: currentcolor;
- }
- 50% {
- box-shadow: -0.5em 0 0 currentcolor;
- background-color: transparent;
- }
- }
-
- @keyframes loader-12 {
- 0%,
- 100% {
- box-shadow: -0.5em 0 0 transparent;
- background-color: currentcolor;
- }
- 50% {
- box-shadow: -0.5em 0 0 currentcolor;
- background-color: transparent;
- }
- }
- .loader-13:before,
- .loader-13:after,
- .loader-13 {
- border-radius: 50%;
- -webkit-animation-fill-mode: both;
- animation-fill-mode: both;
- -webkit-animation: loader-13 1.8s infinite ease-in-out;
- animation: loader-13 1.8s infinite ease-in-out;
- }
-
- .loader-13 {
- color: currentcolor;
- position: relative;
- -webkit-transform: translateZ(0);
- transform: translateZ(0);
- -webkit-animation-delay: -0.16s;
- animation-delay: -0.16s;
- top: -1em;
- }
- .loader-13:before {
- right: 100%;
- -webkit-animation-delay: -0.32s;
- animation-delay: -0.32s;
- }
- .loader-13:after {
- left: 100%;
- }
- .loader-13:before, .loader-13:after {
- content: "";
- display: block;
- position: absolute;
- top: 0;
- width: inherit;
- height: inherit;
- }
-
- @-webkit-keyframes loader-13 {
- 0%,
- 80%,
- 100% {
- box-shadow: 0 1em 0 -1em;
- }
- 40% {
- box-shadow: 0 1em 0 -0.2em;
- }
- }
-
- @keyframes loader-13 {
- 0%,
- 80%,
- 100% {
- box-shadow: 0 1em 0 -1em;
- }
- 40% {
- box-shadow: 0 1em 0 -0.2em;
- }
- }
- .loader-14 {
- border-radius: 50%;
- box-shadow: 0 1em 0 -0.2em currentcolor;
- position: relative;
- -webkit-animation: loader-14 0.8s ease-in-out alternate infinite;
- animation: loader-14 0.8s ease-in-out alternate infinite;
- -webkit-animation-delay: 0.32s;
- animation-delay: 0.32s;
- top: -1em;
- }
- .loader-14:after, .loader-14:before {
- content: "";
- position: absolute;
- width: inherit;
- height: inherit;
- border-radius: inherit;
- box-shadow: inherit;
- -webkit-animation: inherit;
- animation: inherit;
- }
- .loader-14:before {
- left: -1em;
- -webkit-animation-delay: 0.48s;
- animation-delay: 0.48s;
- }
- .loader-14:after {
- right: -1em;
- -webkit-animation-delay: 0.16s;
- animation-delay: 0.16s;
- }
-
- @-webkit-keyframes loader-14 {
- 0% {
- box-shadow: 0 2em 0 -0.2em currentcolor;
- }
- 100% {
- box-shadow: 0 1em 0 -0.2em currentcolor;
- }
- }
-
- @keyframes loader-14 {
- 0% {
- box-shadow: 0 2em 0 -0.2em currentcolor;
- }
- 100% {
- box-shadow: 0 1em 0 -0.2em currentcolor;
- }
- }
- .loader-15 {
- background: currentcolor;
- position: relative;
- -webkit-animation: loader-15 1s ease-in-out infinite;
- animation: loader-15 1s ease-in-out infinite;
- -webkit-animation-delay: 0.4s;
- animation-delay: 0.4s;
- width: 0.25em;
- height: 0.5em;
- margin: 0 0.5em;
- }
- .loader-15:after, .loader-15:before {
- content: "";
- position: absolute;
- width: inherit;
- height: inherit;
- background: inherit;
- -webkit-animation: inherit;
- animation: inherit;
- }
- .loader-15:before {
- right: 0.5em;
- -webkit-animation-delay: 0.2s;
- animation-delay: 0.2s;
- }
- .loader-15:after {
- left: 0.5em;
- -webkit-animation-delay: 0.6s;
- animation-delay: 0.6s;
- }
-
- @-webkit-keyframes loader-15 {
- 0%,
- 100% {
- box-shadow: 0 0 0 currentcolor, 0 0 0 currentcolor;
- }
- 50% {
- box-shadow: 0 -0.25em 0 currentcolor, 0 0.25em 0 currentcolor;
- }
- }
-
- @keyframes loader-15 {
- 0%,
- 100% {
- box-shadow: 0 0 0 currentcolor, 0 0 0 currentcolor;
- }
- 50% {
- box-shadow: 0 -0.25em 0 currentcolor, 0 0.25em 0 currentcolor;
- }
- }
- .loader-16 {
- -webkit-transform: rotateZ(45deg);
- transform: rotateZ(45deg);
- -webkit-perspective: 1000px;
- perspective: 1000px;
- border-radius: 50%;
- }
- .loader-16:before, .loader-16:after {
- content: "";
- display: block;
- position: absolute;
- top: 0;
- left: 0;
- width: inherit;
- height: inherit;
- border-radius: 50%;
- -webkit-animation: 1s spin linear infinite;
- animation: 1s spin linear infinite;
- }
- .loader-16:before {
- -webkit-transform: rotateX(70deg);
- transform: rotateX(70deg);
- }
- .loader-16:after {
- -webkit-transform: rotateY(70deg);
- transform: rotateY(70deg);
- -webkit-animation-delay: 0.4s;
- animation-delay: 0.4s;
- }
-
- @-webkit-keyframes rotate {
- 0% {
- -webkit-transform: translate(-50%, -50%) rotateZ(0deg);
- transform: translate(-50%, -50%) rotateZ(0deg);
- }
- 100% {
- -webkit-transform: translate(-50%, -50%) rotateZ(360deg);
- transform: translate(-50%, -50%) rotateZ(360deg);
- }
- }
-
- @keyframes rotate {
- 0% {
- -webkit-transform: translate(-50%, -50%) rotateZ(0deg);
- transform: translate(-50%, -50%) rotateZ(0deg);
- }
- 100% {
- -webkit-transform: translate(-50%, -50%) rotateZ(360deg);
- transform: translate(-50%, -50%) rotateZ(360deg);
- }
- }
- @-webkit-keyframes rotateccw {
- 0% {
- -webkit-transform: translate(-50%, -50%) rotate(0deg);
- transform: translate(-50%, -50%) rotate(0deg);
- }
- 100% {
- -webkit-transform: translate(-50%, -50%) rotate(-360deg);
- transform: translate(-50%, -50%) rotate(-360deg);
- }
- }
- @keyframes rotateccw {
- 0% {
- -webkit-transform: translate(-50%, -50%) rotate(0deg);
- transform: translate(-50%, -50%) rotate(0deg);
- }
- 100% {
- -webkit-transform: translate(-50%, -50%) rotate(-360deg);
- transform: translate(-50%, -50%) rotate(-360deg);
- }
- }
- @-webkit-keyframes spin {
- 0%,
- 100% {
- box-shadow: 0.2em 0px 0 0px currentcolor;
- }
- 12% {
- box-shadow: 0.2em 0.2em 0 0 currentcolor;
- }
- 25% {
- box-shadow: 0 0.2em 0 0px currentcolor;
- }
- 37% {
- box-shadow: -0.2em 0.2em 0 0 currentcolor;
- }
- 50% {
- box-shadow: -0.2em 0 0 0 currentcolor;
- }
- 62% {
- box-shadow: -0.2em -0.2em 0 0 currentcolor;
- }
- 75% {
- box-shadow: 0px -0.2em 0 0 currentcolor;
- }
- 87% {
- box-shadow: 0.2em -0.2em 0 0 currentcolor;
- }
- }
- @keyframes spin {
- 0%,
- 100% {
- box-shadow: 0.2em 0px 0 0px currentcolor;
- }
- 12% {
- box-shadow: 0.2em 0.2em 0 0 currentcolor;
- }
- 25% {
- box-shadow: 0 0.2em 0 0px currentcolor;
- }
- 37% {
- box-shadow: -0.2em 0.2em 0 0 currentcolor;
- }
- 50% {
- box-shadow: -0.2em 0 0 0 currentcolor;
- }
- 62% {
- box-shadow: -0.2em -0.2em 0 0 currentcolor;
- }
- 75% {
- box-shadow: 0px -0.2em 0 0 currentcolor;
- }
- 87% {
- box-shadow: 0.2em -0.2em 0 0 currentcolor;
- }
- }
- .loader-17 {
- position: relative;
- background-color: currentcolor;
- border-radius: 50%;
- }
- .loader-17:after, .loader-17:before {
- content: "";
- position: absolute;
- width: 0.25em;
- height: 0.25em;
- border-radius: 50%;
- opacity: 0.8;
- }
- .loader-17:after {
- left: -0.5em;
- top: -0.25em;
- background-color: currentcolor;
- -webkit-transform-origin: 0.75em 1em;
- transform-origin: 0.75em 1em;
- -webkit-animation: loader-17 1s linear infinite;
- animation: loader-17 1s linear infinite;
- opacity: 0.6;
- }
- .loader-17:before {
- left: -1.25em;
- top: -0.75em;
- background-color: currentcolor;
- -webkit-transform-origin: 1.5em 1em;
- transform-origin: 1.5em 1em;
- -webkit-animation: loader-17 2s linear infinite;
- animation: loader-17 2s linear infinite;
- }
-
- @-webkit-keyframes loader-17 {
- 0% {
- -webkit-transform: rotateZ(0deg) translate3d(0, 0, 0);
- transform: rotateZ(0deg) translate3d(0, 0, 0);
- }
- 100% {
- -webkit-transform: rotateZ(360deg) translate3d(0, 0, 0);
- transform: rotateZ(360deg) translate3d(0, 0, 0);
- }
- }
-
- @keyframes loader-17 {
- 0% {
- -webkit-transform: rotateZ(0deg) translate3d(0, 0, 0);
- transform: rotateZ(0deg) translate3d(0, 0, 0);
- }
- 100% {
- -webkit-transform: rotateZ(360deg) translate3d(0, 0, 0);
- transform: rotateZ(360deg) translate3d(0, 0, 0);
- }
- }
- .loader-18 {
- position: relative;
- }
- .loader-18:before, .loader-18:after {
- content: "";
- display: block;
- position: absolute;
- border-radius: 50%;
- border: 0.1em solid transparent;
- border-bottom-color: currentcolor;
- top: 0;
- left: 0;
- -webkit-animation: 1s loader-18 linear infinite;
- animation: 1s loader-18 linear infinite;
- }
- .loader-18:before {
- width: 1em;
- height: 1em;
- }
- .loader-18:after {
- width: 0.8em;
- height: 0.8em;
- top: 0.1em;
- left: 0.1em;
- animation-direction: reverse;
- }
-
- @-webkit-keyframes loader-18 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-18 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-19 {
- border-top: 0.2em solid currentcolor;
- border-right: 0.2em solid transparent;
- -webkit-animation: loader-19 1s linear infinite;
- animation: loader-19 1s linear infinite;
- border-radius: 100%;
- position: relative;
- }
-
- @-webkit-keyframes loader-19 {
- to {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-19 {
- to {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-20 {
- background-color: transparent;
- box-shadow: inset 0px 0px 0px 0.1em currentcolor;
- border-radius: 50%;
- position: relative;
- }
- .loader-20:after, .loader-20:before {
- position: absolute;
- content: "";
- background-color: currentcolor;
- top: 0.5em;
- left: 0.5em;
- height: 0.1em;
- -webkit-transform-origin: left center;
- transform-origin: left center;
- }
- .loader-20:after {
- width: 0.4em;
- -webkit-animation: loader-20 2s linear infinite;
- animation: loader-20 2s linear infinite;
- }
- .loader-20:before {
- width: 0.3em;
- -webkit-animation: loader-20 8s linear infinite;
- animation: loader-20 8s linear infinite;
- }
-
- @-webkit-keyframes loader-20 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-20 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-21 {
- position: relative;
- }
- .loader-21:before, .loader-21:after {
- position: absolute;
- content: "";
- }
- .loader-21:before {
- width: 80%;
- height: 80%;
- left: 10%;
- bottom: 10%;
- border-radius: 100% 100% 100% 0;
- box-shadow: 0px 0px 0px 0.1em currentcolor;
- -webkit-animation: loader-21 1s linear infinite;
- animation: loader-21 1s linear infinite;
- -webkit-transform: rotate(-46deg);
- transform: rotate(-46deg);
- }
- .loader-21:after {
- width: 1em;
- height: 0.3em;
- border-radius: 100%;
- left: 0;
- background-color: rgba(255, 255, 255, 0.2);
- bottom: -0.2em;
- z-index: -1;
- }
-
- @-webkit-keyframes loader-21 {
- 0% {
- top: 0;
- }
- 50% {
- top: -5px;
- }
- 100% {
- top: 0;
- }
- }
-
- @keyframes loader-21 {
- 0% {
- top: 0;
- }
- 50% {
- top: -5px;
- }
- 100% {
- top: 0;
- }
- }
- .loader-22 {
- border: 0.1em currentcolor solid;
- border-radius: 100%;
- position: relative;
- overflow: hidden;
- z-index: 1;
- }
- .loader-22:after, .loader-22:before {
- position: absolute;
- content: "";
- background-color: currentcolor;
- }
- .loader-22:after {
- width: 50%;
- height: 0.1em;
- left: 50%;
- top: 50%;
- -webkit-transform-origin: left center;
- transform-origin: left center;
- -webkit-animation: loader-22 2s linear infinite alternate;
- animation: loader-22 2s linear infinite alternate;
- }
- .loader-22:before {
- width: 100%;
- height: 40%;
- left: 0;
- bottom: 0;
- }
-
- @-webkit-keyframes loader-22 {
- 0% {
- -webkit-transform: rotate(-160deg);
- transform: rotate(-160deg);
- }
- 100% {
- -webkit-transform: rotate(-20deg);
- transform: rotate(-20deg);
- }
- }
-
- @keyframes loader-22 {
- 0% {
- -webkit-transform: rotate(-160deg);
- transform: rotate(-160deg);
- }
- 100% {
- -webkit-transform: rotate(-20deg);
- transform: rotate(-20deg);
- }
- }
- .loader-23 {
- height: 0.5em;
- border: 0.1em currentcolor solid;
- border-radius: 0.1em;
- position: relative;
- -webkit-animation: loader-23 5s linear infinite;
- animation: loader-23 5s linear infinite;
- }
- .loader-23:after {
- width: 0.07em;
- height: 100%;
- background-color: currentcolor;
- border-radius: 0px 0.5em 0.5em 0px;
- position: absolute;
- content: "";
- top: 0;
- left: calc(100% + 0.1em);
- }
-
- @-webkit-keyframes loader-23 {
- 0% {
- box-shadow: inset 0px 0px 0px currentcolor;
- }
- 100% {
- box-shadow: inset 1em 0px 0px currentcolor;
- }
- }
-
- @keyframes loader-23 {
- 0% {
- box-shadow: inset 0px 0px 0px currentcolor;
- }
- 100% {
- box-shadow: inset 1em 0px 0px currentcolor;
- }
- }
- .loader-24 {
- width: 0.8em;
- height: 1em;
- border: 0.1em currentcolor solid;
- border-radius: 0px 0px 0.2em 0.2em;
- position: relative;
- }
- .loader-24:after, .loader-24:before {
- position: absolute;
- content: "";
- }
- .loader-24:after {
- width: 0.2em;
- height: 50%;
- border: 0.1em currentcolor solid;
- border-left: none;
- border-radius: 0px 0.5em 0.5em 0px;
- left: calc(100% + 0.1em);
- top: 0.1em;
- }
- .loader-24:before {
- width: 0.1em;
- height: 0.3em;
- background-color: currentcolor;
- top: -0.3em;
- left: 0.05em;
- box-shadow: 0.2em 0px 0px 0px currentcolor, 0.2em -0.2em 0px 0px currentcolor, 0.4em 0px 0px 0px currentcolor;
- -webkit-animation: loader-24 1s linear infinite alternate;
- animation: loader-24 1s linear infinite alternate;
- }
-
- @-webkit-keyframes loader-24 {
- 0% {
- height: 0px;
- }
- 100% {
- height: 6px;
- }
- }
-
- @keyframes loader-24 {
- 0% {
- height: 0px;
- }
- 100% {
- height: 6px;
- }
- }
- .loader-25 {
- border: 0.1em currentcolor solid;
- position: relative;
- -webkit-animation: loader-25-1 5s linear infinite;
- animation: loader-25-1 5s linear infinite;
- }
- .loader-25:after {
- width: 0.2em;
- height: 0.2em;
- position: absolute;
- content: "";
- background-color: currentcolor;
- bottom: calc(100% + 0.2em);
- left: -0.4em;
- -webkit-animation: loader-25-2 1s ease-in-out infinite;
- animation: loader-25-2 1s ease-in-out infinite;
- }
-
- @-webkit-keyframes loader-25-1 {
- 0% {
- box-shadow: inset 0 0 0 0 currentcolor;
- }
- 100% {
- box-shadow: inset 0 -1em 0 0 currentcolor;
- }
- }
-
- @keyframes loader-25-1 {
- 0% {
- box-shadow: inset 0 0 0 0 currentcolor;
- }
- 100% {
- box-shadow: inset 0 -1em 0 0 currentcolor;
- }
- }
- @-webkit-keyframes loader-25-2 {
- 25% {
- left: calc(100% + 0.2em);
- bottom: calc(100% + 0.2em);
- }
- 50% {
- left: calc(100% + 0.2em);
- bottom: -0.4em;
- }
- 75% {
- left: -0.4em;
- bottom: -0.4em;
- }
- 100% {
- left: -0.4em;
- bottom: calc(100% + 0.2em);
- }
- }
- @keyframes loader-25-2 {
- 25% {
- left: calc(100% + 0.2em);
- bottom: calc(100% + 0.2em);
- }
- 50% {
- left: calc(100% + 0.2em);
- bottom: -0.4em;
- }
- 75% {
- left: -0.4em;
- bottom: -0.4em;
- }
- 100% {
- left: -0.4em;
- bottom: calc(100% + 0.2em);
- }
- }
- .loader-26 {
- width: 0.5em;
- height: 0.5em;
- background-color: currentcolor;
- box-shadow: 1em 0px 0px currentcolor;
- border-radius: 50%;
- -webkit-animation: loader-26 1s ease-in-out infinite alternate;
- animation: loader-26 1s ease-in-out infinite alternate;
- }
-
- @-webkit-keyframes loader-26 {
- 0% {
- opacity: 0.1;
- -webkit-transform: rotate(0deg) scale(0.5);
- transform: rotate(0deg) scale(0.5);
- }
- 100% {
- opacity: 1;
- -webkit-transform: rotate(360deg) scale(1.2);
- transform: rotate(360deg) scale(1.2);
- }
- }
-
- @keyframes loader-26 {
- 0% {
- opacity: 0.1;
- -webkit-transform: rotate(0deg) scale(0.5);
- transform: rotate(0deg) scale(0.5);
- }
- 100% {
- opacity: 1;
- -webkit-transform: rotate(360deg) scale(1.2);
- transform: rotate(360deg) scale(1.2);
- }
- }
- .loader-27 {
- box-shadow: inset 0 0 0 0.1em currentcolor;
- border-radius: 50%;
- position: relative;
- margin-left: 1.2em;
- }
- .loader-27:before {
- content: "";
- display: block;
- width: inherit;
- height: inherit;
- border-radius: 50%;
- position: absolute;
- right: 1.2em;
- top: 0;
- box-shadow: inset 0 0 0 0.1em currentcolor;
- }
- .loader-27:after {
- border: 0.2em solid currentcolor;
- box-shadow: -1.2em 0 0 0 currentcolor;
- width: 0;
- height: 0;
- border-radius: 50%;
- left: 50%;
- top: 25%;
- position: absolute;
- content: "";
- -webkit-animation: loader-27 2s linear infinite alternate;
- animation: loader-27 2s linear infinite alternate;
- }
-
- @-webkit-keyframes loader-27 {
- 0% {
- left: 0;
- }
- 100% {
- left: 0.5em;
- }
- }
-
- @keyframes loader-27 {
- 0% {
- left: 0;
- }
- 100% {
- left: 0.5em;
- }
- }
- .loader-28 {
- position: relative;
- -webkit-animation: 2s loader-28-1 infinite;
- animation: 2s loader-28-1 infinite;
- }
- .loader-28:before {
- content: "";
- display: block;
- width: inherit;
- height: inherit;
- border-radius: 80% 20%;
- border: 0.1em solid currentcolor;
- -webkit-transform: rotate(45deg);
- transform: rotate(45deg);
- border-width: 0.1em 0.05em 0.05em 0.1em;
- }
- .loader-28:after {
- content: "";
- display: block;
- width: 0.2em;
- height: 0.2em;
- position: absolute;
- top: 0.4em;
- left: 50%;
- border-radius: 50%;
- box-shadow: -0.07em 0.07em 0 0.1em currentcolor;
- -webkit-animation: 2s loader-28-2 linear infinite;
- animation: 2s loader-28-2 linear infinite;
- }
-
- @-webkit-keyframes loader-28-1 {
- 0%,
- 100% {
- -webkit-transform: scaleY(1);
- transform: scaleY(1);
- }
- 10% {
- -webkit-transform: scaleY(0);
- transform: scaleY(0);
- }
- 20% {
- -webkit-transform: scaleY(1);
- transform: scaleY(1);
- }
- }
-
- @keyframes loader-28-1 {
- 0%,
- 100% {
- -webkit-transform: scaleY(1);
- transform: scaleY(1);
- }
- 10% {
- -webkit-transform: scaleY(0);
- transform: scaleY(0);
- }
- 20% {
- -webkit-transform: scaleY(1);
- transform: scaleY(1);
- }
- }
- @-webkit-keyframes loader-28-2 {
- 0%,
- 100% {
- -webkit-transform: translateX(0);
- transform: translateX(0);
- }
- 30% {
- -webkit-transform: translateX(-100%);
- transform: translateX(-100%);
- }
- 50% {
- -webkit-transform: transalteX(200%);
- transform: transalteX(200%);
- }
- }
- @keyframes loader-28-2 {
- 0%,
- 100% {
- -webkit-transform: translateX(0);
- transform: translateX(0);
- }
- 30% {
- -webkit-transform: translateX(-100%);
- transform: translateX(-100%);
- }
- 50% {
- -webkit-transform: transalteX(200%);
- transform: transalteX(200%);
- }
- }
- .loader-29 {
- border-radius: 50%;
- box-shadow: inset 0 0 0 0.1em currentcolor, -0.5em -0.5em 0 -0.4em currentcolor, 0 -0.7em 0 -0.4em currentcolor, 0.5em -0.5em 0 -0.4em currentcolor, -0.5em 0.5em 0 -0.4em currentcolor, 0 0.7em 0 -0.4em currentcolor, 0.5em 0.5em 0 -0.4em currentcolor, -0.7em 0 0 -0.4em currentcolor, 0.7em 0 0 -0.4em currentcolor;
- -webkit-animation: 5s loader-29 linear infinite;
- animation: 5s loader-29 linear infinite;
- }
-
- @-webkit-keyframes loader-29 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-29 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-30 {
- border: 0.2em solid transparent;
- border-top-color: currentcolor;
- border-bottom-color: currentcolor;
- border-radius: 50%;
- position: relative;
- -webkit-animation: 1s loader-30 linear infinite;
- animation: 1s loader-30 linear infinite;
- }
- .loader-30:before, .loader-30:after {
- content: "";
- display: block;
- width: 0;
- height: 0;
- position: absolute;
- border: 0.2em solid transparent;
- border-bottom-color: currentcolor;
- }
- .loader-30:before {
- -webkit-transform: rotate(135deg);
- transform: rotate(135deg);
- right: -0.3em;
- top: -0.05em;
- }
- .loader-30:after {
- -webkit-transform: rotate(-45deg);
- transform: rotate(-45deg);
- left: -0.3em;
- bottom: -0.05em;
- }
-
- @-webkit-keyframes loader-30 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-30 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- .loader-31 {
- box-shadow: 0 0 2em currentcolor;
- background-color: currentcolor;
- position: relative;
- border-radius: 50%;
- -webkit-transform: rotateX(-60deg) perspective(1000px);
- transform: rotateX(-60deg) perspective(1000px);
- }
- .loader-31:before, .loader-31:after {
- content: "";
- display: block;
- position: absolute;
- top: 0;
- left: 0;
- width: inherit;
- height: inherit;
- border-radius: inherit;
- -webkit-animation: 1s loader-31 ease-out infinite;
- animation: 1s loader-31 ease-out infinite;
- }
- .loader-31:after {
- -webkit-animation-delay: 0.4s;
- animation-delay: 0.4s;
- }
-
- @-webkit-keyframes loader-31 {
- 0% {
- opacity: 1;
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- box-shadow: 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor;
- }
- 100% {
- opacity: 0;
- -webkit-transform: rotate(180deg);
- transform: rotate(180deg);
- box-shadow: -1em -1em 0 -0.35em currentcolor, 0 -1.5em 0 -0.35em currentcolor, 1em -1em 0 -0.35em currentcolor, -1.5em 0 0 -0.35em currentcolor, 1.5em -0 0 -0.35em currentcolor, -1em 1em 0 -0.35em currentcolor, 0 1.5em 0 -0.35em currentcolor, 1em 1em 0 -0.35em currentcolor;
- }
- }
-
- @keyframes loader-31 {
- 0% {
- opacity: 1;
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- box-shadow: 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor, 0 0 0 -0.5em currentcolor;
- }
- 100% {
- opacity: 0;
- -webkit-transform: rotate(180deg);
- transform: rotate(180deg);
- box-shadow: -1em -1em 0 -0.35em currentcolor, 0 -1.5em 0 -0.35em currentcolor, 1em -1em 0 -0.35em currentcolor, -1.5em 0 0 -0.35em currentcolor, 1.5em -0 0 -0.35em currentcolor, -1em 1em 0 -0.35em currentcolor, 0 1.5em 0 -0.35em currentcolor, 1em 1em 0 -0.35em currentcolor;
- }
- }
- .loader-32 {
- position: relative;
- border-radius: 50%;
- box-shadow: 0 0 1em 0 currentcolor, inset 0 0 1em 0 currentcolor;
- -webkit-animation: 1s loader-32 linear infinite;
- animation: 1s loader-32 linear infinite;
- }
- .loader-32:before, .loader-32:after {
- content: "";
- display: block;
- width: inherit;
- height: inherit;
- position: absolute;
- border-radius: 50%;
- }
- .loader-32:before {
- border-top: 0.2em solid currentcolor;
- border-right: 0.2em solid transparent;
- top: 0.28em;
- right: calc(50% - 0.22em);
- }
- .loader-32:after {
- border-bottom: 0.2em solid currentcolor;
- border-left: 0.2em solid transparent;
- bottom: 0.28em;
- left: calc(50% - 0.22em);
- }
-
- @-webkit-keyframes loader-32 {
- 0% {
- -webkit-transform: rotateX(-60deg) rotateZ(0deg);
- transform: rotateX(-60deg) rotateZ(0deg);
- }
- 100% {
- -webkit-transform: rotateX(-60deg) rotateZ(360deg);
- transform: rotateX(-60deg) rotateZ(360deg);
- }
- }
-
- @keyframes loader-32 {
- 0% {
- -webkit-transform: rotateX(-60deg) rotateZ(0deg);
- transform: rotateX(-60deg) rotateZ(0deg);
- }
- 100% {
- -webkit-transform: rotateX(-60deg) rotateZ(360deg);
- transform: rotateX(-60deg) rotateZ(360deg);
- }
- }
- .loader-33 {
- border-radius: 50%;
- position: relative;
- }
- .loader-33:after, .loader-33:before {
- position: absolute;
- content: "";
- }
- .loader-33:after {
- height: 0.1em;
- width: 1em;
- background-color: currentcolor;
- border-radius: 0.1em;
- bottom: 0;
- left: 0;
- -webkit-transform-origin: bottom center;
- transform-origin: bottom center;
- -webkit-animation: loader-33-1 0.8s ease-in-out infinite alternate;
- animation: loader-33-1 0.8s ease-in-out infinite alternate;
- }
- .loader-33:before {
- height: 0.2em;
- width: 0.2em;
- background-color: currentcolor;
- border-radius: 50%;
- top: 0;
- left: calc(50% - 0.1em);
- -webkit-animation: loader-33-2 0.4s ease-in-out infinite alternate;
- animation: loader-33-2 0.4s ease-in-out infinite alternate;
- }
-
- @-webkit-keyframes loader-33-2 {
- 0% {
- height: 0.24em;
- -webkit-transform: translateY(0px);
- transform: translateY(0px);
- }
- 75% {
- height: 0.2em;
- width: 0.2em;
- }
- 100% {
- height: 0.1em;
- width: 0.24em;
- -webkit-transform: translateY(0.8em);
- transform: translateY(0.8em);
- }
- }
-
- @keyframes loader-33-2 {
- 0% {
- height: 0.24em;
- -webkit-transform: translateY(0px);
- transform: translateY(0px);
- }
- 75% {
- height: 0.2em;
- width: 0.2em;
- }
- 100% {
- height: 0.1em;
- width: 0.24em;
- -webkit-transform: translateY(0.8em);
- transform: translateY(0.8em);
- }
- }
- @-webkit-keyframes loader-33-1 {
- 0% {
- -webkit-transform: rotate(-45deg);
- transform: rotate(-45deg);
- }
- 100% {
- -webkit-transform: rotate(45deg);
- transform: rotate(45deg);
- }
- }
- @keyframes loader-33-1 {
- 0% {
- -webkit-transform: rotate(-45deg);
- transform: rotate(-45deg);
- }
- 100% {
- -webkit-transform: rotate(45deg);
- transform: rotate(45deg);
- }
- }
- .loader-34 {
- position: relative;
- width: 1em;
- height: 0.5em;
- }
- .loader-34:after, .loader-34:before {
- position: absolute;
- content: "";
- height: 0.4em;
- width: 0.4em;
- top: 0;
- background-color: currentcolor;
- border-radius: 50%;
- }
- .loader-34:after {
- right: 0;
- -webkit-animation: loader-34-2 0.5s ease-in-out infinite;
- animation: loader-34-2 0.5s ease-in-out infinite;
- -webkit-animation-direction: alternate;
- animation-direction: alternate;
- }
- .loader-34:before {
- left: 0;
- -webkit-animation: loader-34-1 0.5s ease-in-out infinite;
- animation: loader-34-1 0.5s ease-in-out infinite;
- -webkit-animation-direction: alternate;
- animation-direction: alternate;
- }
-
- @-webkit-keyframes loader-34-1 {
- 0% {
- -webkit-transform: translatex(0px);
- transform: translatex(0px);
- }
- 65% {
- height: 0.4em;
- width: 0.4em;
- }
- 100% {
- height: 0.5em;
- width: 0.3em;
- -webkit-transform: translatex(0.2em);
- transform: translatex(0.2em);
- }
- }
-
- @keyframes loader-34-1 {
- 0% {
- -webkit-transform: translatex(0px);
- transform: translatex(0px);
- }
- 65% {
- height: 0.4em;
- width: 0.4em;
- }
- 100% {
- height: 0.5em;
- width: 0.3em;
- -webkit-transform: translatex(0.2em);
- transform: translatex(0.2em);
- }
- }
- @-webkit-keyframes loader-34-2 {
- 0% {
- -webkit-transform: translatex(0px);
- transform: translatex(0px);
- }
- 65% {
- height: 0.4em;
- width: 0.4em;
- }
- 100% {
- height: 0.5em;
- width: 0.3em;
- -webkit-transform: translatex(-0.2em);
- transform: translatex(-0.2em);
- }
- }
- @keyframes loader-34-2 {
- 0% {
- -webkit-transform: translatex(0px);
- transform: translatex(0px);
- }
- 65% {
- height: 0.4em;
- width: 0.4em;
- }
- 100% {
- height: 0.5em;
- width: 0.3em;
- -webkit-transform: translatex(-0.2em);
- transform: translatex(-0.2em);
- }
- }
- .loader-35 {
- margin: 0 0.5em;
- position: relative;
- }
- .loader-35:before {
- border-radius: 50%;
- background-color: currentcolor;
- -webkit-animation: loader-35 3s cubic-bezier(0.77, 0, 0.175, 1) infinite;
- animation: loader-35 3s cubic-bezier(0.77, 0, 0.175, 1) infinite;
- content: "";
- width: inherit;
- height: inherit;
- top: 0;
- left: 0;
- position: absolute;
- }
-
- @-webkit-keyframes loader-35 {
- 0% {
- -webkit-transform: translateX(0) scale(1);
- transform: translateX(0) scale(1);
- }
- 25% {
- -webkit-transform: translateX(-100%) scale(0.3);
- transform: translateX(-100%) scale(0.3);
- }
- 50% {
- -webkit-transform: translateX(0) scale(1);
- transform: translateX(0) scale(1);
- }
- 75% {
- -webkit-transform: translateX(100%) scale(0.3);
- transform: translateX(100%) scale(0.3);
- }
- 100% {
- -webkit-transform: translateX(0) scale(1);
- transform: translateX(0) scale(1);
- }
- }
-
- @keyframes loader-35 {
- 0% {
- -webkit-transform: translateX(0) scale(1);
- transform: translateX(0) scale(1);
- }
- 25% {
- -webkit-transform: translateX(-100%) scale(0.3);
- transform: translateX(-100%) scale(0.3);
- }
- 50% {
- -webkit-transform: translateX(0) scale(1);
- transform: translateX(0) scale(1);
- }
- 75% {
- -webkit-transform: translateX(100%) scale(0.3);
- transform: translateX(100%) scale(0.3);
- }
- 100% {
- -webkit-transform: translateX(0) scale(1);
- transform: translateX(0) scale(1);
- }
- }
- .loader-36 {
- position: relative;
- }
- .loader-36:before, .loader-36:after {
- content: "";
- position: absolute;
- top: 0;
- left: 0;
- }
- .loader-36:before {
- width: 1em;
- height: 1em;
- border: 0.1em solid currentcolor;
- border-radius: 50%;
- -webkit-animation: loader-36-1 1.15s infinite -0.3s;
- animation: loader-36-1 1.15s infinite -0.3s;
- }
- .loader-36:after {
- right: 0;
- bottom: 0;
- margin: auto;
- width: 0;
- height: 0;
- border: 0.1em solid currentcolor;
- border-radius: 50%;
- -webkit-transform: translate(-0.2em);
- transform: translate(-0.2em);
- -webkit-animation: loader-36-2 4.6s infinite steps(1);
- animation: loader-36-2 4.6s infinite steps(1);
- }
-
- @-webkit-keyframes loader-36-1 {
- to {
- -webkit-transform: rotateX(180deg);
- transform: rotateX(180deg);
- }
- }
-
- @keyframes loader-36-1 {
- to {
- -webkit-transform: rotateX(180deg);
- transform: rotateX(180deg);
- }
- }
- @-webkit-keyframes loader-36-2 {
- 0% {
- opacity: 0;
- }
- 25% {
- opacity: 1;
- }
- 50% {
- box-shadow: 0.2em 0 0 currentcolor;
- }
- 75% {
- box-shadow: 0.2em 0 0 currentcolor, 0.4em 0 0 currentcolor;
- }
- }
- @keyframes loader-36-2 {
- 0% {
- opacity: 0;
- }
- 25% {
- opacity: 1;
- }
- 50% {
- box-shadow: 0.2em 0 0 currentcolor;
- }
- 75% {
- box-shadow: 0.2em 0 0 currentcolor, 0.4em 0 0 currentcolor;
- }
- }
- .loader-37 {
- border-right: 0.1em solid currentcolor;
- border-radius: 100%;
- -webkit-animation: loader-37 800ms linear infinite;
- animation: loader-37 800ms linear infinite;
- }
- .loader-37:before, .loader-37:after {
- content: "";
- width: 0.8em;
- height: 0.8em;
- display: block;
- position: absolute;
- top: calc(50% - 0.4em);
- left: calc(50% - 0.4em);
- border-left: 0.08em solid currentcolor;
- border-radius: 100%;
- animation: loader-37 400ms linear infinite reverse;
- }
- .loader-37:after {
- width: 0.6em;
- height: 0.6em;
- top: calc(50% - 0.3em);
- left: calc(50% - 0.3em);
- border: 0;
- border-right: 0.05em solid currentcolor;
- -webkit-animation: none;
- animation: none;
- }
-
- @-webkit-keyframes loader-37 {
- from {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- to {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- }
-
- @keyframes loader-37 {
- from {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- to {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- }
- .loader-38 {
- height: 0.1em;
- width: 0.1em;
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor;
- -webkit-animation: loader-38 6s infinite;
- animation: loader-38 6s infinite;
- }
-
- @-webkit-keyframes loader-38 {
- 0% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor;
- }
- 8.33% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor;
- }
- 16.66% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor;
- }
- 24.99% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 33.32% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor;
- }
- 41.65% {
- box-shadow: 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor;
- }
- 49.98% {
- box-shadow: 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor;
- }
- 58.31% {
- box-shadow: -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 66.64% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 74.97% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 83.3% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 91.63% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 100% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor;
- }
- }
-
- @keyframes loader-38 {
- 0% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor;
- }
- 8.33% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor;
- }
- 16.66% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor;
- }
- 24.99% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 33.32% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor;
- }
- 41.65% {
- box-shadow: 0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor;
- }
- 49.98% {
- box-shadow: 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor;
- }
- 58.31% {
- box-shadow: -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 66.64% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 74.97% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 83.3% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, 0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 91.63% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor, -0.2em 0.2em 0 0.1em currentcolor;
- }
- 100% {
- box-shadow: -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor, -0.2em -0.2em 0 0.1em currentcolor;
- }
- }
- .loader-39 {
- position: relative;
- width: 0.15em;
- height: 0.15em;
- background-color: currentcolor;
- border-radius: 100%;
- -webkit-animation: loader-39-1 30s infinite linear;
- animation: loader-39-1 30s infinite linear;
- }
- .loader-39:before, .loader-39:after {
- content: "";
- border-radius: 100%;
- position: absolute;
- top: 50%;
- left: 50%;
- -webkit-transform: translate(-50%, -50%);
- transform: translate(-50%, -50%);
- }
- .loader-39:before {
- width: 0.3em;
- height: 1em;
- -webkit-animation: loader-39-2 0.8s linear infinite;
- animation: loader-39-2 0.8s linear infinite;
- }
- .loader-39:after {
- width: 1em;
- height: 0.3em;
- -webkit-animation: loader-39-2 1.2s linear infinite;
- animation: loader-39-2 1.2s linear infinite;
- }
-
- @-webkit-keyframes loader-39-1 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
-
- @keyframes loader-39-1 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- }
- @-webkit-keyframes loader-39-2 {
- 0% {
- box-shadow: 0.04em -0.04em 0 0.02em currentcolor;
- }
- 25% {
- box-shadow: 0.04em 0.04em 0 0.02em currentcolor;
- }
- 50% {
- box-shadow: -0.04em 0.04em 0 0.02em currentcolor;
- }
- 75% {
- box-shadow: -0.04em -0.04em 0 0.02em currentcolor;
- }
- 100% {
- box-shadow: 0.04em -0.04em 0 0.02em currentcolor;
- }
- }
- @keyframes loader-39-2 {
- 0% {
- box-shadow: 0.04em -0.04em 0 0.02em currentcolor;
- }
- 25% {
- box-shadow: 0.04em 0.04em 0 0.02em currentcolor;
- }
- 50% {
- box-shadow: -0.04em 0.04em 0 0.02em currentcolor;
- }
- 75% {
- box-shadow: -0.04em -0.04em 0 0.02em currentcolor;
- }
- 100% {
- box-shadow: 0.04em -0.04em 0 0.02em currentcolor;
- }
- }
- .loader-40 {
- border: 0.05em currentcolor solid;
- border-radius: 0.2em;
- overflow: hidden;
- position: relative;
- }
- .loader-40:after, .loader-40:before {
- content: "";
- border-radius: 50%;
- position: absolute;
- width: inherit;
- height: inherit;
- -webkit-animation: loader-40 2s infinite linear;
- animation: loader-40 2s infinite linear;
- }
- .loader-40:before {
- border-top: 0.2em currentcolor solid;
- top: -0.15em;
- left: calc(-50% - 0.15em);
- -webkit-transform-origin: right center;
- transform-origin: right center;
- }
- .loader-40:after {
- border-bottom: 0.2em currentcolor solid;
- top: 0.15em;
- right: calc(-50% - 0.15em);
- -webkit-transform-origin: left center;
- transform-origin: left center;
- }
-
- @-webkit-keyframes loader-40 {
- from {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- to {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
- }
-
- @keyframes loader-40 {
- from {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- to {
- -webkit-transform: rotate(359deg);
- transform: rotate(359deg);
- }
- }
- .loader-41 {
- border: 0.05em currentcolor solid;
- border-radius: 0.2em;
- position: relative;
- background: linear-gradient(45deg, transparent 48%, currentcolor 50%, currentcolor 50%, transparent 52%, transparent), linear-gradient(-45deg, transparent 48%, currentcolor 50%, currentcolor 50%, transparent 52%, transparent);
- background-size: 0.5em 0.5em;
- background-position: 0% 0%;
- -webkit-animation: loader-41 1s infinite linear;
- animation: loader-41 1s infinite linear;
- }
-
- @-webkit-keyframes loader-41 {
- from {
- background-position: 0 0;
- }
- to {
- background-position: -1em 0;
- }
- }
-
- @keyframes loader-41 {
- from {
- background-position: 0 0;
- }
- to {
- background-position: -1em 0;
- }
- }
- .loader-42 {
- width: 2em;
- height: 0.66em;
- border: 0.05em currentcolor solid;
- border-radius: 0.1em;
- background: linear-gradient(-60deg, transparent 0%, transparent 50%, currentcolor 50%, currentcolor 75%, transparent 75%, transparent);
- background-size: 1em 2em;
- background-position: 0 0;
- -webkit-animation: loader-42 0.8s infinite linear;
- animation: loader-42 0.8s infinite linear;
- }
-
- @-webkit-keyframes loader-42 {
- from {
- background-position: 0 0;
- }
- to {
- background-position: -2em 0;
- }
- }
-
- @keyframes loader-42 {
- from {
- background-position: 0 0;
- }
- to {
- background-position: -2em 0;
- }
- }
+fieldset {
+ border: 0 !important;
+ margin: 0 !important;
+ padding: 0 !important;
+}
-
+[class*="loader-"] {
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+ color: inherit;
+ vertical-align: middle;
+ pointer-events: none;
+}
+
+.loader-37 {
+ border-right: 0.1em solid currentcolor;
+ border-radius: 100%;
+ -webkit-animation: loader-37 800ms linear infinite;
+ animation: loader-37 800ms linear infinite;
+}
+.loader-37:before,
+.loader-37:after {
+ content: "";
+ width: 0.8em;
+ height: 0.8em;
+ display: block;
+ position: absolute;
+ top: calc(50% - 0.4em);
+ left: calc(50% - 0.4em);
+ border-left: 0.08em solid currentcolor;
+ border-radius: 100%;
+ animation: loader-37 400ms linear infinite reverse;
+}
+.loader-37:after {
+ width: 0.6em;
+ height: 0.6em;
+ top: calc(50% - 0.3em);
+ left: calc(50% - 0.3em);
+ border: 0;
+ border-right: 0.05em solid currentcolor;
+ -webkit-animation: none;
+ animation: none;
+}
+
+@-webkit-keyframes loader-37 {
+ from {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ to {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+}
+
+@keyframes loader-37 {
+ from {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+ to {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+}
diff --git a/apps/OpenSign/src/styles/toast.css b/apps/OpenSign/src/styles/toast.css
index 4e3ff0bc9..409833af9 100644
--- a/apps/OpenSign/src/styles/toast.css
+++ b/apps/OpenSign/src/styles/toast.css
@@ -1,209 +1,64 @@
#snackbar {
- visibility: hidden;
- min-width: 250px;
- margin-left: -125px;
- background-color: #333;
- color: #fff;
- text-align: center;
- border-radius: 2px;
- padding: 16px;
- position: fixed;
- z-index: 99999;
- left: 50%;
+ visibility: hidden;
+ min-width: 250px;
+ margin-left: -125px;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+ padding: 16px;
+ position: fixed;
+ z-index: 99999;
+ left: 50%;
+ top: 30px;
+ font-size: 14px;
+}
+
+#snackbar.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s;
+}
+
+@-webkit-keyframes fadein {
+ from {
+ top: 0;
+ opacity: 0;
+ }
+ to {
top: 30px;
- font-size: 14px;
+ opacity: 1;
}
-
- #_editsnackbar {
- visibility: hidden;
- min-width: 250px;
- margin-left: -125px;
- background-color: #333;
- color: #fff;
- text-align: center;
- border-radius: 2px;
- padding: 16px;
- position: fixed;
- z-index: 99999;
- left: 50%;
+}
+
+@keyframes fadein {
+ from {
+ top: 0;
+ opacity: 0;
+ }
+ to {
top: 30px;
- font-size: 14px;
+ opacity: 1;
}
-
- #_editsnackbar.show {
- visibility: visible;
- -webkit-animation: fadein 0.5s;
- }
-
- #UpdateColumnValue.show {
- visibility: visible;
- -webkit-animation: fadein 0.5s;
- }
- #DeleteUser.show {
- visibility: visible;
- -webkit-animation: fadein 0.5s;
- }
- #DeleteUser {
- visibility: hidden;
- min-width: 250px;
- margin-left: -125px;
- background-color: #333;
- color: #fff;
- text-align: center;
- border-radius: 2px;
- padding: 16px;
- position: fixed;
- z-index: 99999;
- left: 50%;
+}
+
+@-webkit-keyframes fadeout {
+ from {
top: 30px;
- font-size: 14px;
+ opacity: 1;
}
-
- #deleteObj.show {
- visibility: visible;
- -webkit-animation: fadein 0.5s;
+ to {
+ top: 0;
+ opacity: 0;
}
- #deleteObj {
- visibility: hidden;
- min-width: 250px;
- margin-left: -125px;
- background-color: #333;
- color: #fff;
- text-align: center;
- border-radius: 2px;
- padding: 16px;
- position: fixed;
- z-index: 99999;
- left: 50%;
+}
+
+@keyframes fadeout {
+ from {
top: 30px;
- font-size: 14px;
+ opacity: 1;
}
-
- #UpdateColumnValue {
- visibility: hidden;
- min-width: 250px;
- margin-left: -125px;
- background-color: #333;
- color: #fff;
- text-align: center;
- border-radius: 2px;
- padding: 16px;
- position: fixed;
- z-index: 99999;
- left: 50%;
- top: 30px;
- font-size: 14px;
+ to {
+ top: 0;
+ opacity: 0;
}
-
- #snackbar.show {
- visibility: visible;
- -webkit-animation: fadein 0.5s;
- }
-
- #snackbar1 {
- visibility: hidden;
- min-width: 250px;
- margin-left: -125px;
- background-color: #333;
- color: #fff;
- text-align: center;
- border-radius: 2px;
- padding: 16px;
- position: fixed;
- z-index: 99999;
- left: 50%;
- top: 30px;
- font-size: 14px;
- }
-
- #snackbar1.show {
- visibility: visible;
- -webkit-animation: fadein 0.5s;
- }
-
- #snackbar10 {
- visibility: hidden;
- min-width: 250px;
- margin-left: -125px;
- background-color: #333;
- color: #fff;
- text-align: center;
- border-radius: 2px;
- padding: 16px;
- position: fixed;
- z-index: 99999;
- left: 50%;
- top: 30px;
- font-size: 14px;
- }
-
- #snackbar10.show {
- visibility: visible;
- -webkit-animation: fadein 0.5s;
- }
-
- #snackbarCol {
- visibility: hidden;
- min-width: 250px;
- margin-left: -125px;
- background-color: #333;
- color: #fff;
- text-align: center;
- border-radius: 2px;
- padding: 16px;
- position: fixed;
- z-index: 99999;
- left: 50%;
- top: 30px;
- font-size: 14px;
- }
-
- #snackbarCol.show {
- visibility: visible;
- -webkit-animation: fadein 0.5s;
- }
-
- @-webkit-keyframes fadein {
- from {
- top: 0;
- opacity: 0;
- }
- to {
- top: 30px;
- opacity: 1;
- }
- }
-
- @keyframes fadein {
- from {
- top: 0;
- opacity: 0;
- }
- to {
- top: 30px;
- opacity: 1;
- }
- }
-
- @-webkit-keyframes fadeout {
- from {
- top: 30px;
- opacity: 1;
- }
- to {
- top: 0;
- opacity: 0;
- }
- }
-
- @keyframes fadeout {
- from {
- top: 30px;
- opacity: 1;
- }
- to {
- top: 0;
- opacity: 0;
- }
- }
-
\ No newline at end of file
+}
diff --git a/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js b/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js
index 2e50b25a8..671b91d9d 100644
--- a/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js
+++ b/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js
@@ -1,9 +1,13 @@
async function getUserDetails(request) {
try {
+ const userId = request.params.userId;
const userQuery = new Parse.Query('contracts_Users');
userQuery.equalTo('Email', request.params.email);
userQuery.include('TenantId');
- userQuery.include('UserId')
+ userQuery.include('UserId');
+ if (userId) {
+ userQuery.equalTo('CreatedBy', { __type: 'Pointer', className: '_User', objectId: userId });
+ }
const res = await userQuery.first({ useMasterKey: true });
return res;
} catch (err) {