diff --git a/Frontend/package-lock.json b/Frontend/package-lock.json index d73232c..1d26866 100644 --- a/Frontend/package-lock.json +++ b/Frontend/package-lock.json @@ -14,6 +14,7 @@ "@testing-library/jest-dom": "^5.16.3", "@testing-library/react": "^12.1.4", "@testing-library/user-event": "^13.5.0", + "aos": "^2.3.4", "axios": "^0.26.1", "d3": "^7.4.4", "framer-motion": "^3.10.6", @@ -21,11 +22,14 @@ "node-sass": "^7.0.1", "react": "^18.0.0", "react-chartjs-2": "^4.1.0", + "react-datepicker": "^4.7.0", "react-dom": "^18.0.0", "react-icons": "^4.3.1", "react-router-dom": "^6.3.0", "react-scripts": "5.0.0", + "react-toastify": "^8.2.0", "sweetalert": "^2.1.2", + "validator": "^13.7.0", "web-vitals": "^2.1.4" } }, @@ -5622,6 +5626,16 @@ "node": ">= 8" } }, + "node_modules/aos": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/aos/-/aos-2.3.4.tgz", + "integrity": "sha512-zh/ahtR2yME4I51z8IttIt4lC1Nw0ktsFtmeDzID1m9naJnWXhCoARaCgNOGXb5CLy3zm+wqmRAEgMYB5E2HUw==", + "dependencies": { + "classlist-polyfill": "^1.0.3", + "lodash.debounce": "^4.0.6", + "lodash.throttle": "^4.0.1" + } + }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -6564,12 +6578,6 @@ "node": ">=6" } }, - "node_modules/chart.js": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", - "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==", - "peer": true - }, "node_modules/check-types": { "version": "11.1.2", "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", @@ -6638,6 +6646,16 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" }, + "node_modules/classlist-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", + "integrity": "sha1-k1vC39lFiodrJ5YXUUY4vKqWSi4=" + }, + "node_modules/classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, "node_modules/clean-css": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", @@ -6675,6 +6693,14 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -7806,6 +7832,18 @@ "node": ">=10" } }, + "node_modules/date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -13121,6 +13159,11 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -15859,6 +15902,36 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-datepicker": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.7.0.tgz", + "integrity": "sha512-FS8KgbwqpxmJBv/bUdA42MYqYZa+fEYcpc746DZiHvVE2nhjrW/dg7c5B5fIUuI8gZET6FOzuDgezNcj568Czw==", + "dependencies": { + "@popperjs/core": "^2.9.2", + "classnames": "^2.2.6", + "date-fns": "^2.24.0", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.12.0", + "react-popper": "^2.2.5" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17", + "react-dom": "^16.9.0 || ^17" + } + }, + "node_modules/react-datepicker/node_modules/react-onclickoutside": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.12.1.tgz", + "integrity": "sha512-a5Q7CkWznBRUWPmocCvE8b6lEYw1s6+opp/60dCunhO+G6E4tDTO2Sd2jKE+leEnnrLAE2Wj5DlDHNqj5wPv1Q==", + "funding": { + "type": "individual", + "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" + }, + "peerDependencies": { + "react": "^15.5.x || ^16.x || ^17.x", + "react-dom": "^15.5.x || ^16.x || ^17.x" + } + }, "node_modules/react-dev-utils": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz", @@ -16011,6 +16084,20 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, "node_modules/react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", @@ -16115,6 +16202,18 @@ } } }, + "node_modules/react-toastify": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-8.2.0.tgz", + "integrity": "sha512-Pg2Ju7NngAamarFvLwqrFomJ57u/Ay6i6zfLurt/qPynWkAkOthu6vxfqYpJCyNhHRhR4hu7+bySSeWWJu6PAg==", + "dependencies": { + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -18258,19 +18357,6 @@ "is-typedarray": "^1.0.0" } }, - "node_modules/typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -18461,6 +18547,14 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -23394,6 +23488,16 @@ "picomatch": "^2.0.4" } }, + "aos": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/aos/-/aos-2.3.4.tgz", + "integrity": "sha512-zh/ahtR2yME4I51z8IttIt4lC1Nw0ktsFtmeDzID1m9naJnWXhCoARaCgNOGXb5CLy3zm+wqmRAEgMYB5E2HUw==", + "requires": { + "classlist-polyfill": "^1.0.3", + "lodash.debounce": "^4.0.6", + "lodash.throttle": "^4.0.1" + } + }, "aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -24099,12 +24203,6 @@ "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==" }, - "chart.js": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", - "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==", - "peer": true - }, "check-types": { "version": "11.1.2", "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", @@ -24155,6 +24253,16 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" }, + "classlist-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", + "integrity": "sha1-k1vC39lFiodrJ5YXUUY4vKqWSi4=" + }, + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, "clean-css": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", @@ -24185,6 +24293,11 @@ "wrap-ansi": "^7.0.0" } }, + "clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -25002,6 +25115,11 @@ "whatwg-url": "^8.0.0" } }, + "date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -28885,6 +29003,11 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -30745,6 +30868,27 @@ "integrity": "sha512-AsUihxEp8Jm1oBhbEovE+w50m9PVNhz1sfwEIT4hZduRC0m14gHWHd0cUaxkFDb8HNkdMIGzsNlmVqKiOpU74g==", "requires": {} }, + "react-datepicker": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.7.0.tgz", + "integrity": "sha512-FS8KgbwqpxmJBv/bUdA42MYqYZa+fEYcpc746DZiHvVE2nhjrW/dg7c5B5fIUuI8gZET6FOzuDgezNcj568Czw==", + "requires": { + "@popperjs/core": "^2.9.2", + "classnames": "^2.2.6", + "date-fns": "^2.24.0", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.12.0", + "react-popper": "^2.2.5" + }, + "dependencies": { + "react-onclickoutside": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.12.1.tgz", + "integrity": "sha512-a5Q7CkWznBRUWPmocCvE8b6lEYw1s6+opp/60dCunhO+G6E4tDTO2Sd2jKE+leEnnrLAE2Wj5DlDHNqj5wPv1Q==", + "requires": {} + } + } + }, "react-dev-utils": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz", @@ -30861,6 +31005,15 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "requires": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + } + }, "react-refresh": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", @@ -30938,6 +31091,14 @@ "workbox-webpack-plugin": "^6.4.1" } }, + "react-toastify": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-8.2.0.tgz", + "integrity": "sha512-Pg2Ju7NngAamarFvLwqrFomJ57u/Ay6i6zfLurt/qPynWkAkOthu6vxfqYpJCyNhHRhR4hu7+bySSeWWJu6PAg==", + "requires": { + "clsx": "^1.1.1" + } + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -32565,12 +32726,6 @@ "is-typedarray": "^1.0.0" } }, - "typescript": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", - "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", - "peer": true - }, "unbox-primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", @@ -32720,6 +32875,11 @@ "spdx-expression-parse": "^3.0.0" } }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/Frontend/package.json b/Frontend/package.json index 7fd9eca..2678a9c 100644 --- a/Frontend/package.json +++ b/Frontend/package.json @@ -9,6 +9,7 @@ "@testing-library/jest-dom": "^5.16.3", "@testing-library/react": "^12.1.4", "@testing-library/user-event": "^13.5.0", + "aos": "^2.3.4", "axios": "^0.26.1", "d3": "^7.4.4", "framer-motion": "^3.10.6", @@ -16,11 +17,14 @@ "node-sass": "^7.0.1", "react": "^18.0.0", "react-chartjs-2": "^4.1.0", + "react-datepicker": "^4.7.0", "react-dom": "^18.0.0", "react-icons": "^4.3.1", "react-router-dom": "^6.3.0", "react-scripts": "5.0.0", + "react-toastify": "^8.2.0", "sweetalert": "^2.1.2", + "validator": "^13.7.0", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/Frontend/public/favicon.ico b/Frontend/public/favicon.ico index a11777c..606623b 100644 Binary files a/Frontend/public/favicon.ico and b/Frontend/public/favicon.ico differ diff --git a/Frontend/public/index.html b/Frontend/public/index.html index aa069f2..6cf570b 100644 --- a/Frontend/public/index.html +++ b/Frontend/public/index.html @@ -7,7 +7,7 @@ - React App + DebtFix diff --git a/Frontend/public/logo192.png b/Frontend/public/logo192.png index fc44b0a..2945d70 100644 Binary files a/Frontend/public/logo192.png and b/Frontend/public/logo192.png differ diff --git a/Frontend/src/Pages/ListofCreditors/ListofCreditors.css b/Frontend/src/Pages/ListofCreditors/ListofCreditors.css index 60cd929..0c60986 100644 --- a/Frontend/src/Pages/ListofCreditors/ListofCreditors.css +++ b/Frontend/src/Pages/ListofCreditors/ListofCreditors.css @@ -19,7 +19,7 @@ @media screen and (max-width:450px) { .glow-on-hover{ - font-size: 12px; + font-size: 14px; } } @@ -28,13 +28,11 @@ @media screen and (max-width:344px) { .glow-on-hover{ - font-size: 10px; + font-size: 14px; } } @media screen and (max-width:300px) { - .glow-on-hover{ - font-size: 10px; - } + } \ No newline at end of file diff --git a/Frontend/src/Pages/ListofCreditors/ListofCreditors.jsx b/Frontend/src/Pages/ListofCreditors/ListofCreditors.jsx index 98ad278..eb011de 100644 --- a/Frontend/src/Pages/ListofCreditors/ListofCreditors.jsx +++ b/Frontend/src/Pages/ListofCreditors/ListofCreditors.jsx @@ -2,7 +2,6 @@ import React, {useState, useEffect} from 'react' import {Box, Flex, Text, Spacer, Grid, GridItem, Icon, Center} from '@chakra-ui/react' import {BsSearch, BsBell} from 'react-icons/bs' import {AiOutlineUsergroupAdd, AiOutlineTeam, AiOutlinePlus, AiOutlineEdit, AiOutlineDelete} from 'react-icons/ai' -import {MdPayments} from 'react-icons/md' import {GiHamburgerMenu } from 'react-icons/gi' import {Table,Thead,Tbody,Tfoot,Tr,Th,Td,TableCaption,TableContainer, HStack} from '@chakra-ui/react' import {BsWallet} from 'react-icons/bs' @@ -17,6 +16,27 @@ import Signin from '../Signin/Signin' const ListofCreditors = () => { + + const [screenSize, setScreenSize] = useState(window.innerWidth) + + /*const checkSize = ()=>{ + //console.log(window.innerWidth) + return setScreenSize(window.innerWidth) + } + useEffect(()=>{ + window.addEventListener('resize', checkSize) + return ()=>{ + window.removeEventListener('resize', checkSize) + } + }) + useEffect(()=>{ + if (screenSize >=815) { + document.getElementById("sidenav").style.width = "16rem"; + document.getElementById("links-cont").style.display = "block"; + } + }) + */ + const [addCreditorModal, setAddcreditorModal] = useState(false) const [showEditModal, setShowEditModal] = useState(false) const [payCreditorModal, setPaycreditorModal] = useState(false) @@ -97,56 +117,54 @@ const ListofCreditors = () => { const payCreditor =()=>{ setPaycreditorModal(true) } - if (!token) { - return - } - if (loading) { - return <> - - - - } - const openSidebar = ()=>{ + const openSidebar = ()=>{ document.getElementById("sidenav").style.width = "16rem"; document.getElementById("links-cont").style.display = "block"; - //document.getElementById("dashboard-details").style.width = "0"; - + + } + if (loading) { + + return( <> + + + ) } - - return ( - <> - - - - - - - +return( + <> + + + + {/* + + + */} List of Creditors View creditors Quick Actions @@ -158,7 +176,7 @@ const ListofCreditors = () => { { Creditor AmountOwned AccountNo - Date Due + Date Added Status Activity @@ -207,14 +225,16 @@ const ListofCreditors = () => { { creditors?.map((creditor)=>{ const {id,name,amount_owned, account_number,status, bank_code, date_due} = creditor - //console.log(id) + //console.log(date_due,'date due') + //const c = { time: date_due }; + //console.log(new Date(c.time).toLocaleDateString(), "converted") return ( {name} {amount_owned} {account_number} - {date_due} + {new Date (date_due).toLocaleDateString()} {status} editDebtorDetails(id,name,amount_owned,account_number, bank_code)} className='edit' color='green' as={AiOutlineEdit}> diff --git a/Frontend/src/Pages/Sign-up/Signup.jsx b/Frontend/src/Pages/Sign-up/Signup.jsx index f2a6f7f..55ac3cb 100644 --- a/Frontend/src/Pages/Sign-up/Signup.jsx +++ b/Frontend/src/Pages/Sign-up/Signup.jsx @@ -1,10 +1,22 @@ import React, { useEffect, useState } from 'react' import {AiOutlineArrowLeft} from 'react-icons/ai' -import {Box, Flex, Text,Spacer} from'@chakra-ui/react' +import {Box, Flex, Text,Spacer, Spinner} from'@chakra-ui/react' import Logo from '../../Images/Logosign.svg' import './Signup.css' import { useNavigate, Link } from 'react-router-dom' +import {toast, ToastContainer} from 'react-toastify' +import 'react-toastify/dist/ReactToastify.css'; +import validator from 'validator' + + +import AOS from "aos"; +import "aos/dist/aos.css"; + + + const Signup = () => { + + const [pending,setPending] = useState(false) const baseUrl = "https://debt-fix.herokuapp.com/register/" const [email, setEmail] = useState() const [password, setPassword] = useState('') @@ -29,27 +41,36 @@ const Signup = () => { const handleSubmit = async (e) =>{ e.preventDefault(); const details = {email, password, username} - //setIspending(true) + if(email && password && username){ + + setPending(true) + if (!validator.isEmail(email)) { + setPending(false) + return toast.error('Enter a valid mail') + } try { const response = await SignupUser(details) console.log(response) if("id" in response){ + toast.success("Successfully registered") console.log(response) + setPending(false) navigate("/signin", { replace: true }) } else{ + toast.error('Email or username already exists!') setAlert({message1:'User with the email or Username already exist',message2:'Sign in instead?'}) + setPending(false) } } catch (error) { setAlert({message1:'Unkown Error', message2:''}) - - console.log(error) - console.log('errorrrrrrrrrrrrrrrr') + setPending(false) } }else{ setAlert({message1:'Fill in every field correctly', message2:''}) + toast.error("Please fill every details") } @@ -58,27 +79,35 @@ const Signup = () => { useEffect( () => { console.log(alert) - let timer1 = setTimeout(() => setAlert({message1:'',message2:''}), 5000); + let timer1 = setTimeout(() => setAlert({message1:'',message2:''}), 2000); return () => { clearTimeout(timer1); }; }, [alert]); - + + useEffect(() => { + AOS.init(); + AOS.refresh(); + }, []); return ( <> - + + - + - - + + { >Create an Account { onChange={e => setPassword(e.target.value)}/> - +
@@ -130,13 +159,13 @@ const Signup = () => { color='#271B3E' >Forgot Password - {alert.message1}{alert.message2} + {alert.message1}{alert.message2} - + { const baseUrl = "https://debt-fix.herokuapp.com/login/" + + const [pending,setPending] = useState(false) const [email, setEmail] = useState() const [password, setPassword] = useState() const [isPending, setIspending] = useState(false) @@ -37,48 +44,79 @@ const Signin = () => { setAlert({link: "", text:''}) e.preventDefault(); const details = {email, password} - try { - const response = await loginUser(details) - if ('token' in response) { - //console.log("successful") - console.log('SUCCESS') - localStorage.setItem('accessToken', response.token); - localStorage.setItem('useremail', JSON.stringify(response.email)); - localStorage.setItem('ID', JSON.stringify(response.id)); - localStorage.setItem('username', JSON.stringify(response.username)); - setPassword('') - setEmail('') - navigate("/profile/dashboard", { replace: true }) - } else{ - console.log("erorrrrrrrr") - setAlert({link: "Signup Instead?", text:`Invalid login details`}) + if(email && password){ + setPending(true) + console.log("email and password valid") + try { + + const response = await loginUser(details) - } - console.log(response) - } catch (error) { - console.log('erorrrrrrrrr') - setAlert({link: 'Signup instead?', text: 'invalid login details'}) + if ('token' in response) { + + setPending(false) + toast.success('Successfully signed in') + //console.log("successful") + console.log('SUCCESS') + localStorage.setItem('accessToken', response.token); + localStorage.setItem('useremail', JSON.stringify(response.email)); + localStorage.setItem('ID', JSON.stringify(response.id)); + localStorage.setItem('username', JSON.stringify(response.username)); + setPassword('') + setEmail('') + navigate("/profile/dashboard", { replace: true }) + } else{ + console.log("erorrrrrrrr") + setAlert({link: "Signup Instead?", text:`Invalid login details`}) + setPending(false) + + } + //console.log(response) + } catch (error) { + console.error(error) + console.log('erorrrrrrrrr') + setAlert({link: 'Signup instead?', text: 'invalid login details'}) + setPending(false) + } + }else{ + console.log('no more details') + toast.error('Please fill every details') + setAlert({link: 'Please fill in all the details', text:''}) } - } + - + useEffect( + () => { + let timer1 = setTimeout(() => setAlert({text:'',link:''}), 2000); + return () => { + clearTimeout(timer1); + }; + + }, + [alert]); - + useEffect(() => { + AOS.init(); + AOS.refresh(); + }, []); + return ( <> - - + + - + - + { >Sign into your Account { color='#271B3E' >Forgot Password - + {alert.text} {alert.link} - + { return ( <> - + diff --git a/Frontend/src/components/DashboardDetails/DashboardDetails.css b/Frontend/src/components/DashboardDetails/DashboardDetails.css index d0ef42c..e794baf 100644 --- a/Frontend/src/components/DashboardDetails/DashboardDetails.css +++ b/Frontend/src/components/DashboardDetails/DashboardDetails.css @@ -14,7 +14,7 @@ border-radius: 5px; background-color: #573498; } -.piechart-checkbox2{ +.piechart-checkbox2{ width: 20px; height: 20px; border-radius: 5px; @@ -226,14 +226,12 @@ Tr:nth-child(even) {background-color: #f2f2f2;} } } @media screen and (max-width:520px) { - .glow-on-hover{ - padding: 12px 15px; - } + .dashboard-stat{ width: 130px !important; } .analytics-dashboard{ - width: 300px !important; + width: 280px !important; } } @@ -242,17 +240,15 @@ Tr:nth-child(even) {background-color: #f2f2f2;} width: 100px !important; height: 100px !important; } - .glow-on-hover{ - padding: 10px 12px !important; + .table-heading{ + font-size: 12px !important; } + } @media screen and (max-width:370px) { .dashboard-stat{ - width: 80px !important; - height: 80px !important; - } - .glow-on-hover{ - padding: 8px 12px !important; + width: 90px !important; + height: 90px !important; } } \ No newline at end of file diff --git a/Frontend/src/components/DashboardDetails/DashboardDetails.jsx b/Frontend/src/components/DashboardDetails/DashboardDetails.jsx index 4789bc5..7c11728 100644 --- a/Frontend/src/components/DashboardDetails/DashboardDetails.jsx +++ b/Frontend/src/components/DashboardDetails/DashboardDetails.jsx @@ -21,9 +21,27 @@ import { useNavigate } from 'react-router-dom' const DashboardDetails = ({username,id, setLoading}) => { - - + + const [screenSize, setScreenSize] = useState(window.innerWidth) + + /* const checkSize = ()=>{ + //console.log(window.innerWidth) + return setScreenSize(window.innerWidth) + } + useEffect(()=>{ + window.addEventListener('resize', checkSize) + return ()=>{ + window.removeEventListener('resize', checkSize) + } + }) + useEffect(()=>{ + if (screenSize >=815) { + document.getElementById("sidenav").style.width = "16rem"; + document.getElementById("links-cont").style.display = "block"; + } +},[screenSize])*/ + const [addCreditorModal, setAddcreditorModal] = useState(false) const [showEditModal, setShowEditModal] = useState(false) const [payCreditorModal, setPaycreditorModal] = useState(false) @@ -105,23 +123,24 @@ const DashboardDetails = ({username,id, setLoading}) => { return ( <> - - + + {/* - + }*/} Welcome back, {username} Let us help you manage your debts @@ -136,12 +155,12 @@ const DashboardDetails = ({username,id, setLoading}) => { p='0.5rem 0' >Quick Actions - - + + { Creditor AmountOwned AccountNo - Date Due + Date Added Status Activity @@ -197,7 +216,7 @@ const DashboardDetails = ({username,id, setLoading}) => { {name} {amount_owned} {account_number} - {date_due} + {new Date (date_due).toLocaleDateString()} {status} editDebtorDetails(id,name,amount_owned,account_number, bank_code)} className='edit' color='green' as={AiOutlineEdit}> diff --git a/Frontend/src/components/DashboardDetails/DashboardStatistics.jsx b/Frontend/src/components/DashboardDetails/DashboardStatistics.jsx index c6e462b..acce0f1 100644 --- a/Frontend/src/components/DashboardDetails/DashboardStatistics.jsx +++ b/Frontend/src/components/DashboardDetails/DashboardStatistics.jsx @@ -47,26 +47,26 @@ const DashboardStatistics = ({debts_total}) => { <> - + Total Creditors {creditors_all} - + { lineHeight='46px' color='#170154' fontWeight='Bold' - p={{base:'0px 7px',sm:'5px 10px'}} + p={{base:'5px 7px',sm:'5px 10px'}} >{creditors_paid} - - + + Total debts left @@ -100,7 +100,7 @@ const DashboardStatistics = ({debts_total}) => { lineHeight='46px' color='#170154' fontWeight='Bold' - p={{base:'0px 7px',sm:'5px 10px'}} + p={{base:'5px 7px',sm:'5px 10px'}} >{creditors_unpaid} diff --git a/Frontend/src/components/DatePicker/DatePicker.jsx b/Frontend/src/components/DatePicker/DatePicker.jsx new file mode 100644 index 0000000..33fa6ea --- /dev/null +++ b/Frontend/src/components/DatePicker/DatePicker.jsx @@ -0,0 +1,19 @@ +import React, { useState } from 'react'; +import DatePicker from "react-datepicker"; + +const DatepickerTimehooks = () => { + const [currentDate, setCurrentDate] = useState(new Date()); + + return ( +
+ setCurrentDate(date)} /> + +
+ ); +}; + +export default DatepickerTimehooks; \ No newline at end of file diff --git a/Frontend/src/components/Footer/Footer.jsx b/Frontend/src/components/Footer/Footer.jsx index a088cf5..64e4a33 100644 --- a/Frontend/src/components/Footer/Footer.jsx +++ b/Frontend/src/components/Footer/Footer.jsx @@ -10,10 +10,10 @@ const Footer = () => { <> - logo + logo { >© 2022 DebtFix { + + useEffect(() => { + AOS.init(); + AOS.refresh(); + }, []); + return ( <> - + With 3 easy steps, get started on DebtFix - - + + - + 1 - + { - + 2 - + { 3 - + { - +import DatePicker from "react-datepicker"; +import "react-datepicker/dist/react-datepicker.css"; + + +const ModalAddCreditor = ({setAddcreditorModal}) => { + const [currentDate, setCurrentDate] = useState(new Date()); + const [name, setName] = useState('') const [amount_owned, setAmount_owned] = useState('') const [bank_code, setBank_code] = useState('') const [account_number, setAccount_number] = useState('') const [alert, setAlert] = useState(false) const url = 'https://debt-fix.herokuapp.com/creditor/create/' + const clearModal = async(e)=>{ - console.log(name, amount_owned, bank_code, account_number) - console.log("bankcode", bank_code) + if(name && amount_owned && bank_code && account_number){ - console.log('details filled') setAlert(false) const details = {name:name, amount_owned: amount_owned, bank_code:bank_code, account_number:account_number} - console.log(details) try { const AddaCreditor = await GetEndpoint(details, url) - console.log(AddaCreditor) + //console.log(AddaCreditor) setAddcreditorModal(false) } catch (error) { console.log("erorrrrrrrrrrrrr adding debtor") @@ -48,7 +50,7 @@ import '../Modal/Modal.css' setAmount_owned('') setAddcreditorModal(false) } - + console.log(currentDate) return ( <> @@ -58,7 +60,7 @@ import '../Modal/Modal.css'
Add a Creditor @@ -94,8 +96,17 @@ import '../Modal/Modal.css' onChange={e =>{ return setAlert(false), setAccount_number(e.target.value)}} > + + Timeline for debt + setCurrentDate(date)} /> + - + diff --git a/Frontend/src/components/ModalCreditors/ModalEditCreditor.jsx b/Frontend/src/components/ModalCreditors/ModalEditCreditor.jsx index df83390..60a8c1c 100644 --- a/Frontend/src/components/ModalCreditors/ModalEditCreditor.jsx +++ b/Frontend/src/components/ModalCreditors/ModalEditCreditor.jsx @@ -58,7 +58,7 @@ import { UpdateDetails } from '../../services/Accessdetails'
Edit Details diff --git a/Frontend/src/components/ModalCreditors/ModalFundWallet.jsx b/Frontend/src/components/ModalCreditors/ModalFundWallet.jsx index debfaf9..b763866 100644 --- a/Frontend/src/components/ModalCreditors/ModalFundWallet.jsx +++ b/Frontend/src/components/ModalCreditors/ModalFundWallet.jsx @@ -46,7 +46,7 @@ const ModalFundWallet = ({setFundWalletModal}) => {
Fund Wallet diff --git a/Frontend/src/components/ModalCreditors/ModalPayaCreditor.jsx b/Frontend/src/components/ModalCreditors/ModalPayaCreditor.jsx index dbc9c4d..a8c2128 100644 --- a/Frontend/src/components/ModalCreditors/ModalPayaCreditor.jsx +++ b/Frontend/src/components/ModalCreditors/ModalPayaCreditor.jsx @@ -1,4 +1,4 @@ -import React, {useState} from 'react' +import React, {useState, useEffect} from 'react' import {Box, Flex, Spacer, Text, Icon, Select, Button, Radio, RadioGroup, Stack} from '@chakra-ui/react' import { AiOutlineArrowRight } from 'react-icons/ai' import { GetEndpoint } from '../../services/Accessdetails' @@ -26,7 +26,8 @@ const ModalPayaCreditor = ({setPaycreditorModal,creditors}) => { const clearModal = async (e)=>{ - + + if ((name && narration) && ( optionalAmt || radioValue)) { console.log("filled correctly") const filteredCreditors = creditors.filter((creditor)=>{ @@ -72,6 +73,19 @@ const ModalPayaCreditor = ({setPaycreditorModal,creditors}) => { const closeModal = ()=>{ setPaycreditorModal(false) } + + useEffect( + () => { + console.log(alert) + let timer1 = setTimeout(() => setPaymentText({message:'',status:''}), 3000); + let timer2 = setTimeout(() => setAlert(''), 3000); + return () => { + clearTimeout(timer1); + clearTimeout(timer2) + }; + + }, + [alert, paymentText]); return ( <>
@@ -79,7 +93,7 @@ const ModalPayaCreditor = ({setPaycreditorModal,creditors}) => {
Pay a Creditor diff --git a/Frontend/src/components/Navbar/Navbar.css b/Frontend/src/components/Navbar/Navbar.css index 9f320e7..10ca213 100644 --- a/Frontend/src/components/Navbar/Navbar.css +++ b/Frontend/src/components/Navbar/Navbar.css @@ -11,7 +11,9 @@ text-align:center; font-weight: 400; } - +.navbar-container{ + padding: 2px 0; +} .sign-navbar{ padding: 3px 17px; border:1px solid #3A1C6B; @@ -110,5 +112,15 @@ .navbar-links-sign{ display: none !important; } + .navbar-container{ + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1) !important; + } } + +@media screen and (max-width:540px) { + .navbar-logo{ + width: 90px !important; + margin-top: 10px !important; + } +} diff --git a/Frontend/src/components/Navbar/Navbar.jsx b/Frontend/src/components/Navbar/Navbar.jsx index 57e603a..95c8493 100644 --- a/Frontend/src/components/Navbar/Navbar.jsx +++ b/Frontend/src/components/Navbar/Navbar.jsx @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from 'react' +import React, {useEffect, useState, useRef} from 'react' import {Text, Flex, Spacer, Box, Button} from '@chakra-ui/react' import logo from '../../Images/Logo.svg' import './Navbar.css' @@ -19,23 +19,39 @@ const breakpoints = { // 3. Extend the theme const theme = extendTheme({ breakpoints }) const Navbar = () => { + + const node = useRef(); + const [showsidebar, setShowsidebar] = useState(false) const showbar = ()=>{ setShowsidebar(!showsidebar) } - function getHeight(){ - console.log(window.innerHeight) - } + + const handleClick = e => { + if (node.current.contains(e.target)) { + // inside click + return; + } + document.getElementById('nav-links-container').style.display = "none" + + }; + useEffect(()=>{ - console.log(window.pageYOffset,'scroll') - }) + // add when mounted + document.addEventListener("mousedown", handleClick); + // return function to be called when unmounted + return () => { + document.removeEventListener("mousedown", handleClick); + }; + },[]) return ( <> - - logo + + + logo Home @@ -53,7 +69,8 @@ const Navbar = () => { - {showsidebar && + + {showsidebar &&
  • Home
  • Product
  • diff --git a/Frontend/src/components/PaymentInfo/PaymentInfo.jsx b/Frontend/src/components/PaymentInfo/PaymentInfo.jsx index 83d9f30..45f76b4 100644 --- a/Frontend/src/components/PaymentInfo/PaymentInfo.jsx +++ b/Frontend/src/components/PaymentInfo/PaymentInfo.jsx @@ -6,6 +6,25 @@ import Loading from '../Loading/Loading' import {GiHamburgerMenu } from 'react-icons/gi' import './PaymentInfo.css' const PaymentInfo = () => { + + /*const [screenSize, setScreenSize] = useState(window.innerWidth) + + const checkSize = ()=>{ + //console.log(window.innerWidth) + return setScreenSize(window.innerWidth) + } + useEffect(()=>{ + window.addEventListener('resize', checkSize) + return ()=>{ + window.removeEventListener('resize', checkSize) + } + }) + useEffect(()=>{ + if (screenSize >=815) { + document.getElementById("sidenav").style.width = "16rem"; + document.getElementById("links-cont").style.display = "block"; + } + })*/ const [transactionHistory, setTransactionHistory] = useState([]) const url = 'https://debt-fix.herokuapp.com/payment/transactions/' @@ -65,23 +84,24 @@ const PaymentInfo = () => { return ( <> - - + + {/* - + */} Payments Keep track of every of your transactions @@ -131,7 +151,7 @@ const PaymentInfo = () => { {transaction_type} {amount} {narration} - {updated_at} + {new Date (updated_at).toLocaleDateString()} {transaction_status} {paystack_reference} diff --git a/Frontend/src/components/PlanAhead/Planahead.css b/Frontend/src/components/PlanAhead/Planahead.css index b4f2ee7..a94b121 100644 --- a/Frontend/src/components/PlanAhead/Planahead.css +++ b/Frontend/src/components/PlanAhead/Planahead.css @@ -8,4 +8,10 @@ background-color: #FFFFFF; border-radius: 10px; margin: 20px; +} +@media screen and (max-width:520px) { + .button-create-now{ + padding: 5px 12px; + font-size: 15px; + } } \ No newline at end of file diff --git a/Frontend/src/components/PlanAhead/Planahead.jsx b/Frontend/src/components/PlanAhead/Planahead.jsx index e82a794..ffd68ce 100644 --- a/Frontend/src/components/PlanAhead/Planahead.jsx +++ b/Frontend/src/components/PlanAhead/Planahead.jsx @@ -1,38 +1,52 @@ -import React from 'react' +import React, {useEffect} from 'react' import {Box, Flex,Text, Center} from '@chakra-ui/react' import './Planahead.css' import { Link } from 'react-router-dom' +import AOS from "aos"; +import "aos/dist/aos.css"; + + const Planahead = () => { + + useEffect(() => { + AOS.init(); + AOS.refresh(); + }, []); + return ( <> -
    - +
    + We help you plan ahead and offset bills without worry. DebtFix has come to alleviate any financial worry in the best way possible. Whether debts, bills or monetary promises, DebtFix will fix it all with just one click. - +
    diff --git a/Frontend/src/components/SettingsInfo/SettingsInfo.css b/Frontend/src/components/SettingsInfo/SettingsInfo.css index fae57bb..f116d04 100644 --- a/Frontend/src/components/SettingsInfo/SettingsInfo.css +++ b/Frontend/src/components/SettingsInfo/SettingsInfo.css @@ -91,7 +91,9 @@ } - + .settings-input-password{ + width: 100%; + } @media screen and (max-width:1162px) { .settings-item-container{ width: 90% !important; @@ -109,8 +111,9 @@ width: 100% !important; } .settings-input{ - width: 95% !important; + width: 100% !important; } + } @media screen and (max-width:815px) { @@ -127,28 +130,33 @@ .settings-password-container{ width: 100% !important; } + } @media screen and (max-width:500px){ + .settings-item{ flex-direction: column; } .settings-item-label{ max-width: 100% !important; + } .second-input{ position: relative; left: 180px; top: -53px; + width: 50%; } .settings-item-2-label{ + width: 100% !important; } .settings-item-2-input { width: 100% !important; } - .settings-item-input{ - width: 40% !important; + .item2-input{ + width: 100% !important; } @@ -162,4 +170,20 @@ .settings-password-container{ width: 100% !important; } + + .edit-btn{ + height: 2.2rem; + font-size: 10px; + border-radius: 5px; + + } +} + +@media screen and (max-width:370px) { + .second-input{ + position: relative; + left: 160px; + top: -53px; + width: 100%; + } } \ No newline at end of file diff --git a/Frontend/src/components/SettingsInfo/SettingsInfo.jsx b/Frontend/src/components/SettingsInfo/SettingsInfo.jsx index 6e95aa6..4c61c09 100644 --- a/Frontend/src/components/SettingsInfo/SettingsInfo.jsx +++ b/Frontend/src/components/SettingsInfo/SettingsInfo.jsx @@ -8,6 +8,27 @@ import './SettingsInfo.css' import SettingsPassword from './SettingsPassword' const SettingsInfo = () => { + + /*const [screenSize, setScreenSize] = useState(window.innerWidth) + + const checkSize = ()=>{ + //console.log(window.innerWidth) + return setScreenSize(window.innerWidth) + } + useEffect(()=>{ + window.addEventListener('resize', checkSize) + return ()=>{ + window.removeEventListener('resize', checkSize) + } + }) + useEffect(()=>{ + if (screenSize >=815) { + document.getElementById("sidenav").style.width = "16rem"; + document.getElementById("links-cont").style.display = "block"; + } + + })*/ + const [id, setId] = useState(); const updateUrl = `https://debt-fix.herokuapp.com/profile/${id}/update/` @@ -78,8 +99,6 @@ const SettingsInfo = () => { const openSidebar = ()=>{ document.getElementById("sidenav").style.width = "16rem"; document.getElementById("links-cont").style.display = "block"; - //document.getElementById("dashboard-details").style.width = "0"; - } if (loading) { @@ -90,17 +109,18 @@ const SettingsInfo = () => { return ( <> - - + + {/* - + */} Settings { - + @@ -248,11 +268,11 @@ const SettingsInfo = () => { fontWeight='600' lineHeight='25px' color='#8872AC'>Sex - { return setGender(e.target.value)}}/> - + @@ -286,7 +306,7 @@ const SettingsInfo = () => { value={email} onChange={e => { return setEmail(e.target.value)}}/> - + @@ -319,7 +339,7 @@ const SettingsInfo = () => { value={phonenumber} onChange={e => { return setPhonenumber(e.target.value)}}/> - + {status} diff --git a/Frontend/src/components/SettingsInfo/SettingsPassword.jsx b/Frontend/src/components/SettingsInfo/SettingsPassword.jsx index 6048b66..1b8322e 100644 --- a/Frontend/src/components/SettingsInfo/SettingsPassword.jsx +++ b/Frontend/src/components/SettingsInfo/SettingsPassword.jsx @@ -29,7 +29,7 @@ const SettingsPassword = () => { - + { onChange={e => { return setOldPassword(e.target.value)}} /> - + { onChange={e => { return setNewPassword(e.target.value)}} /> - + { /> - + diff --git a/Frontend/src/components/Sidebar/Sidebar.css b/Frontend/src/components/Sidebar/Sidebar.css index fe05245..32fc969 100644 --- a/Frontend/src/components/Sidebar/Sidebar.css +++ b/Frontend/src/components/Sidebar/Sidebar.css @@ -17,6 +17,7 @@ padding: 10px 10px; border-radius: 0px; transition: all 0.3s linear ; + font-size: 18px; } .links-container{ @@ -63,7 +64,7 @@ } .sidebar-logo img{ height: 4rem; - width: 13rem; + width: 11rem; } @@ -78,6 +79,31 @@ @media screen and (min-width:815px) { .profile-sidebar{ - width: 16rem; + width: 16rem !important; } +} + + +@media screen and (max-width:520px) { + .links{ + font-size: 16px; + padding: 10px 7px; + } + .sidebar-logo{ + position: relative; + top: 0px; + + } + .sidebar-logo img{ + height: 2rem; + width: 7rem; + } + + .sidebar-close-menu{ + + margin-left: 100px; + + } + + } \ No newline at end of file diff --git a/Frontend/src/components/Sidebar/Sidebar.jsx b/Frontend/src/components/Sidebar/Sidebar.jsx index aa606c5..2111a33 100644 --- a/Frontend/src/components/Sidebar/Sidebar.jsx +++ b/Frontend/src/components/Sidebar/Sidebar.jsx @@ -1,16 +1,16 @@ import React, {useEffect, useState, useRef} from 'react' import './Sidebar.css' -import {GiHamburgerMenu } from 'react-icons/gi' import {BsFillGridFill} from 'react-icons/bs' import {MdPayment} from 'react-icons/md' import {IoMdSettings} from 'react-icons/io' import {AiOutlineUserDelete,AiOutlineClose} from 'react-icons/ai' import Logo from '../../Images/Logo.svg' -import {Box, Flex, Spacer,List,ListItem,ListIcon,} from '@chakra-ui/react' -import { Link, NavLink } from 'react-router-dom' +import {Box, Flex, List,ListItem,ListIcon,} from '@chakra-ui/react' +import { NavLink } from 'react-router-dom' const Sidebar = () => { + const node = useRef(); @@ -32,25 +32,26 @@ const Sidebar = () => { } const handleClick = e => { - if (node.current.contains(e.target)) { - // inside click - return; + if(window.innerWidth <=815 ){ + if (node.current.contains(e.target)) { + // inside click + return; + } + + document.getElementById("sidenav").style.width = "0"; + // outside click } - - document.getElementById("sidenav").style.width = "0"; - - document.getElementById("links-cont").style.display = "none"; - // outside click }; useEffect(() => { // add when mounted document.addEventListener("mousedown", handleClick); - // return function to be called when unmounted - return () => { + // return function to be called when unmounted + return () => { document.removeEventListener("mousedown", handleClick); }; + }, []); @@ -59,9 +60,9 @@ const Sidebar = () => {