diff --git a/package-lock.json b/package-lock.json index 73ec56b4..e463010a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-select": "^5.7.2", + "react-toastify": "^9.1.3", "sass": "^1.59.2", "sharp": "^0.32.1", "typescript": "4.9.5", @@ -223,9 +224,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", - "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -234,9 +235,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -432,9 +433,9 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.1.tgz", - "integrity": "sha512-QgcKYwzcc8vvZ4n/5uklchy8KVdjJwcOeI+HnnTNclJjs2nYsy23DOCf+sSV1kBwD9yDAoVKCkv/gEPzgQU3Pw==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", "dependencies": { "@floating-ui/utils": "^0.1.3" } @@ -496,14 +497,14 @@ "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" }, "node_modules/@mui/base": { - "version": "5.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.25.tgz", - "integrity": "sha512-Iiv+IcappRRv6IBlknIVmLkXxfp51NEX1+l9f+dIbBuPU4PaRULegr1lCeHKsC45KU5ruxM5xMg4R/de03aJQg==", + "version": "5.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.27.tgz", + "integrity": "sha512-duL37qxihT1N0pW/gyXVezP7SttLkF+cLAs/y6g6ubEFmVadjbnZ45SeF12/vAiKzqwf5M0uFH1cczIPXFZygA==", "dependencies": { - "@babel/runtime": "^7.23.4", + "@babel/runtime": "^7.23.5", "@floating-ui/react-dom": "^2.0.4", - "@mui/types": "^7.2.10", - "@mui/utils": "^5.14.19", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", "@popperjs/core": "^2.11.8", "clsx": "^2.0.0", "prop-types": "^15.8.1" @@ -527,25 +528,25 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.19", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.19.tgz", - "integrity": "sha512-y4JseIen5pmZs1n9hHy95HKKioKco8f6N2lford2AmjJigVJOv0KsU0qryiCpyuEUZmi/xCduVilHsK9DSkPcA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.0.tgz", + "integrity": "sha512-NpGtlHwuyLfJtdrlERXb8qRqd279O0VnuGaZAor1ehdNhUJOD1bSxHDeXKZkbqNpvi50hasFj7lsbTpluworTQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/material": { - "version": "5.14.19", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.19.tgz", - "integrity": "sha512-jSPLXst/YPgDGolhiu4rbethKjLVrI1IkoK8YrFUv8ygxDuhQdsE6+ZqjSSRXk3ytTMf6ghPnQ88OFRk4XjpNw==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.0.tgz", + "integrity": "sha512-60CDI/hQNwJv9a3vEZtFG7zz0USdQhVwpBd3fZqrzhuXSdiMdYMaZcCXeX/KMuNq0ZxQEAZd74Pv+gOb408QVA==", "dependencies": { - "@babel/runtime": "^7.23.4", - "@mui/base": "5.0.0-beta.25", - "@mui/core-downloads-tracker": "^5.14.19", - "@mui/system": "^5.14.19", - "@mui/types": "^7.2.10", - "@mui/utils": "^5.14.19", + "@babel/runtime": "^7.23.5", + "@mui/base": "5.0.0-beta.27", + "@mui/core-downloads-tracker": "^5.15.0", + "@mui/system": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", "@types/react-transition-group": "^4.4.9", "clsx": "^2.0.0", "csstype": "^3.1.2", @@ -580,12 +581,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.14.19", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.19.tgz", - "integrity": "sha512-U9w39VpXLGVM8wZlUU/47YGTsBSk60ZQRRxQZtdqPfN1N7OVllQeN4cEKZKR8PjqqR3aYRcSciQ4dc6CttRoXQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.0.tgz", + "integrity": "sha512-7WxtIhXxNek0JjtsYy+ut2LtFSLpsUW5JSDehQO+jF7itJ8ehy7Bd9bSt2yIllbwGjCFowLfYpPk2Ykgvqm1tA==", "dependencies": { - "@babel/runtime": "^7.23.4", - "@mui/utils": "^5.14.19", + "@babel/runtime": "^7.23.5", + "@mui/utils": "^5.15.0", "prop-types": "^15.8.1" }, "engines": { @@ -606,11 +607,11 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.14.19", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.19.tgz", - "integrity": "sha512-jtj/Pyn/bS8PM7NXdFNTHWZfE3p+vItO4/HoQbUeAv3u+cnWXcTBGHHY/xdIn446lYGFDczTh1YyX8G4Ts0Rtg==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.0.tgz", + "integrity": "sha512-6NysIsHkuUS2lF+Lzv1jiK3UjBJk854/vKVcJQVGKlPiqNEVZJNlwaSpsaU5xYXxWEZYfbVFSAomLOS/LV/ovQ==", "dependencies": { - "@babel/runtime": "^7.23.4", + "@babel/runtime": "^7.23.5", "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -637,15 +638,15 @@ } }, "node_modules/@mui/system": { - "version": "5.14.19", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.19.tgz", - "integrity": "sha512-4e3Q+2nx+vgEsd0h5ftxlZGB7XtkkPos/zWqCqnxUs1l/T70s0lF2YNrWHHdSQ7LgtBu0eQ0qweZG2pR7KwkAw==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.0.tgz", + "integrity": "sha512-8TPjfTlYBNB7/zBJRL4QOD9kImwdZObbiYNh0+hxvhXr2koezGx8USwPXj8y/JynbzGCkIybkUztCdWlMZe6OQ==", "dependencies": { - "@babel/runtime": "^7.23.4", - "@mui/private-theming": "^5.14.19", - "@mui/styled-engine": "^5.14.19", - "@mui/types": "^7.2.10", - "@mui/utils": "^5.14.19", + "@babel/runtime": "^7.23.5", + "@mui/private-theming": "^5.15.0", + "@mui/styled-engine": "^5.15.0", + "@mui/types": "^7.2.11", + "@mui/utils": "^5.15.0", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -676,9 +677,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.10", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.10.tgz", - "integrity": "sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==", + "version": "7.2.11", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.11.tgz", + "integrity": "sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -689,11 +690,11 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.19", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.19.tgz", - "integrity": "sha512-qAHvTXzk7basbyqPvhgWqN6JbmI2wLB/mf97GkSlz5c76MiKYV6Ffjvw9BjKZQ1YRb8rDX9kgdjRezOcoB91oQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.0.tgz", + "integrity": "sha512-XSmTKStpKYamewxyJ256+srwEnsT3/6eNo6G7+WC1tj2Iq9GfUJ/6yUoB7YXjOD2jTZ3XobToZm4pVz1LBt6GA==", "dependencies": { - "@babel/runtime": "^7.23.4", + "@babel/runtime": "^7.23.5", "@types/prop-types": "^15.7.11", "prop-types": "^15.8.1", "react-is": "^18.2.0" @@ -1016,9 +1017,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz", - "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { "@types/react": "*" } @@ -1508,9 +1509,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001566", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", - "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", + "version": "1.0.30001570", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", + "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", "funding": [ { "type": "opencollective", @@ -1717,9 +1718,9 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -2681,9 +2682,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -3598,9 +3599,9 @@ } }, "node_modules/node-abi": { - "version": "3.51.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", - "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", + "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", "dependencies": { "semver": "^7.3.5" }, @@ -4085,6 +4086,26 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-toastify": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz", + "integrity": "sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==", + "dependencies": { + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/react-toastify/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -4125,9 +4146,9 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==" }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", @@ -4495,9 +4516,9 @@ } }, "node_modules/streamx": { - "version": "2.15.5", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", - "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" diff --git a/package.json b/package.json index f0f72fa7..9b32d4d6 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-select": "^5.7.2", + "react-toastify": "^9.1.3", "sass": "^1.59.2", "sharp": "^0.32.1", "typescript": "4.9.5", diff --git a/src/front/Components/DesignSystem/DepositDocument/index.tsx b/src/front/Components/DesignSystem/DepositDocument/index.tsx index c72738a6..b7cf8644 100644 --- a/src/front/Components/DesignSystem/DepositDocument/index.tsx +++ b/src/front/Components/DesignSystem/DepositDocument/index.tsx @@ -18,6 +18,7 @@ import Alert from "../Modal/Alert"; import GreenCheckIcon from "@Assets/Icons/green-check.svg"; import Loader from "../Loader"; import TextAreaField from "../Form/TextareaField"; +import { toast } from "react-toastify"; type IProps = { defaultFiles?: FileCustomer[]; @@ -86,6 +87,7 @@ export default class DepositDocument extends React.Component { this.addDocument = this.addDocument.bind(this); this.onFileChange = this.onFileChange.bind(this); + this.addFile = this.addFile.bind(this); this.removeFile = this.removeFile.bind(this); this.onDragOver = this.onDragOver.bind(this); this.onDragDrop = this.onDragDrop.bind(this); @@ -128,7 +130,8 @@ export default class DepositDocument extends React.Component { }> {this.props.document.document_type?.name} - {this.props.document.document_type?.public_description !== "" && + {this.props.document.document_type?.public_description !== " " && + this.props.document.document_type?.public_description !== "" && this.props.document.document_status !== EDocumentStatus.VALIDATED && ( )} @@ -146,44 +149,42 @@ export default class DepositDocument extends React.Component { ))} - {this.props.document.document_status !== EDocumentStatus.VALIDATED && this.state.files.length > 0 && ( -
- {this.state.files.map((file) => { - const fileObj = file.file; - if (file.archived) return; - return ( -
-
- Document check - - {this.shortName(file.fileName || fileObj.name)} - -
- Cross icon -
- ); - })} - {this.state.loading && ( -
+
+ {this.state.files.map((file) => { + const fileObj = file.file; + if (file.archived) return; + return ( +
-
- -
- - Chargement... + Document check + + {this.shortName(file.fileName || fileObj.name)}
-
+ Cross icon
- )} -
- )} + ); + })} + {this.state.loading && ( +
+
+
+ +
+ + Chargement... + +
+
+
+ )} +
{this.props.document.document_status !== EDocumentStatus.VALIDATED && (
diff --git a/src/front/Components/LayoutTemplates/DefaultLayout.tsx b/src/front/Components/LayoutTemplates/DefaultLayout.tsx index 2676be82..45452b20 100644 --- a/src/front/Components/LayoutTemplates/DefaultLayout.tsx +++ b/src/front/Components/LayoutTemplates/DefaultLayout.tsx @@ -1,7 +1,8 @@ import Head from "next/head"; import { ReactNode } from "react"; type DefaultLayoutProps = { children: ReactNode }; - +import { ToastContainer } from "react-toastify"; +import "react-toastify/dist/ReactToastify.css"; export const DefaultLayout = ({ children }: DefaultLayoutProps) => { return ( <> @@ -9,7 +10,10 @@ export const DefaultLayout = ({ children }: DefaultLayoutProps) => { LECoffre {/* */} -
{children}
+
+ {children} + +
); }; diff --git a/src/front/Components/Layouts/ClientDashboard/index.tsx b/src/front/Components/Layouts/ClientDashboard/index.tsx index 96421e68..e4383649 100644 --- a/src/front/Components/Layouts/ClientDashboard/index.tsx +++ b/src/front/Components/Layouts/ClientDashboard/index.tsx @@ -47,10 +47,9 @@ export default function ClientDashboard(props: IProps) { include: { contact: true, }, - - } - } - } + }, + }, + }, }, }; @@ -98,10 +97,10 @@ export default function ClientDashboard(props: IProps) { - Votre notaire est dans l'attente de documents pour valider votre dossier. Voici la liste des documents.Veuillez - glisser / déposez chaque document dans la zone prévue à cet effet ou cliquez sur la zone puis sélectionnez le - document correspondant. Si un des documents demandés ne vous concernent pas, veuillez contacter votre notaire à - l'aide du bouton ci-dessus. + Votre notaire est dans l'attente de documents pour valider votre dossier. Voici la liste des documents. +
Veuillez glisser / déposer chaque document dans la zone prévue à cet effet ou cliquez sur la zone puis + sélectionnez le document correspondant.
En déposant un document, celui-ci est automatiquement enregistré et + transmis à votre notaire.
diff --git a/src/front/Components/Layouts/Folder/AskDocuments/index.tsx b/src/front/Components/Layouts/Folder/AskDocuments/index.tsx index 9e62b3e3..6a6c75b8 100644 --- a/src/front/Components/Layouts/Folder/AskDocuments/index.tsx +++ b/src/front/Components/Layouts/Folder/AskDocuments/index.tsx @@ -59,14 +59,19 @@ class AskDocumentsClass extends BasePage {
- {this.state.documentTypes.map((documentType) => ( - - ))} + {this.state.documentTypes.map((documentType) => { + if (documentType.description && documentType.description.length > 1) { + return ( + + ); + } + return ; + })}
+ {this.props.isAnchored === AnchorStatus.VERIFIED_ON_CHAIN && ( + + )}
) : ( @@ -171,6 +178,25 @@ class FolderInformationClass extends BasePage { this.setState({ isArchivedModalOpen: false }); } + private async downloadAnchoringProof(uid?: string) { + if (!uid) return; + + try { + const file: Blob = await OfficeFolderAnchors.getInstance().download(uid); + const url = window.URL.createObjectURL(file); + const a = document.createElement("a"); + a.style.display = "none"; + a.href = url; + // the filename you want + a.download = `anchoring_proof_${this.props.selectedFolder?.folder_number}_${this.props.selectedFolder?.name}.zip`; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + } catch (e) { + console.error(e); + } + } + private async getFolder(): Promise { const query = { q: { diff --git a/src/front/Components/Layouts/LoginCustomer/index.tsx b/src/front/Components/Layouts/LoginCustomer/index.tsx index 8dbc3736..78c8af2e 100644 --- a/src/front/Components/Layouts/LoginCustomer/index.tsx +++ b/src/front/Components/Layouts/LoginCustomer/index.tsx @@ -57,6 +57,7 @@ export default function Login() { setPartialPhoneNumber(res.partialPhoneNumber); setTotpCodeUid(res.totpCodeUid); setStep(LoginStep.TOTP); + setValidationErrors([]); } catch (error: any) { setValidationErrors([ { @@ -79,6 +80,7 @@ export default function Login() { // If the code is valid setting it in state if (res.validCode) setTotpCode(values["totpCode"]); + setValidationErrors([]); // If it's first connection, show the form for first connection if (res.reason === TotpCodesReasons.FIRST_LOGIN) setStep(LoginStep.NEW_PASSWORD); // If it's password forgotten, show the form for password forgotten @@ -130,6 +132,7 @@ export default function Login() { } const token = await Auth.getInstance().setPassword({ totpCode, email, password: values["password"] }); CustomerStore.instance.connect(token.accessToken, token.refreshToken); + setValidationErrors([]); router.push(Module.getInstance().get().modules.pages.Folder.pages.Select.props.path); // If set password worked, setting the token and redirecting } catch (error: any) { @@ -153,6 +156,7 @@ export default function Login() { if (!values["password"]) return; const token = await Auth.getInstance().login({ totpCode, email, password: values["password"] }); CustomerStore.instance.connect(token.accessToken, token.refreshToken); + setValidationErrors([]); router.push(Module.getInstance().get().modules.pages.Folder.pages.Select.props.path); } catch (error: any) { setValidationErrors([ @@ -173,6 +177,7 @@ export default function Login() { try { const res = await Auth.getInstance().askNewPassword({ email }); setPartialPhoneNumber(res.partialPhoneNumber); + setValidationErrors([]); setStep(LoginStep.TOTP); } catch (error: any) { // If token already exists and is still valid redirect to the connect/register page @@ -188,6 +193,7 @@ export default function Login() { try { const res = await Auth.getInstance().sendAnotherCode({ email, totpCodeUid }); + setValidationErrors([]); setPartialPhoneNumber(res.partialPhoneNumber); setTotpCodeUid(res.totpCodeUid); } catch (error: any) { diff --git a/src/front/index.scss b/src/front/index.scss index a398cb89..e797f16f 100644 --- a/src/front/index.scss +++ b/src/front/index.scss @@ -63,4 +63,9 @@ a:hover { .react-select__menu-notice { font-size: 18px; font-family: Inter; -} \ No newline at end of file +} + +.Toastify__toast-body { + font-size: 14px; + font-family: "Inter", sans-serif !important; +}