diff --git a/package-lock.json b/package-lock.json index 50b7abe..b16dfdc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,10 +11,12 @@ "@emotion/react": "^11.8.1", "@emotion/styled": "^11.8.1", "@mui/icons-material": "^5.4.2", + "@mui/lab": "^5.0.0-alpha.75", "@mui/material": "^5.4.3", "@reduxjs/toolkit": "^1.8.0", "@types/react-big-calendar": "^0.36.2", "axios": "^0.26.1", + "date-fns": "^2.28.0", "moment": "^2.29.1", "react": "^17.0.2", "react-big-calendar": "^0.39.3", @@ -1703,6 +1705,75 @@ "node": ">=6.9.0" } }, + "node_modules/@date-io/core": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.13.1.tgz", + "integrity": "sha512-pVI9nfkf2qClb2Cxdq0Q4zJhdawMG4ybWZUVGifT78FDwzRMX2SwXBb55s5NRJk0HcIicDuxktmCtemZqMH1Zg==" + }, + "node_modules/@date-io/date-fns": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.13.1.tgz", + "integrity": "sha512-8fmfwjiLMpFLD+t4NBwDx0eblWnNcgt4NgfT/uiiQTGI81fnPu9tpBMYdAcuWxaV7LLpXgzLBx1SYWAMDVUDQQ==", + "dependencies": { + "@date-io/core": "^2.13.1" + }, + "peerDependencies": { + "date-fns": "^2.0.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + } + } + }, + "node_modules/@date-io/dayjs": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.13.1.tgz", + "integrity": "sha512-5bL4WWWmlI4uGZVScANhHJV7Mjp93ec2gNeUHDqqLaMZhp51S0NgD25oqj/k0LqBn1cdU2MvzNpk/ObMmVv5cQ==", + "dependencies": { + "@date-io/core": "^2.13.1" + }, + "peerDependencies": { + "dayjs": "^1.8.17" + }, + "peerDependenciesMeta": { + "dayjs": { + "optional": true + } + } + }, + "node_modules/@date-io/luxon": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.13.1.tgz", + "integrity": "sha512-yG+uM7lXfwLyKKEwjvP8oZ7qblpmfl9gxQYae55ifbwiTs0CoCTkYkxEaQHGkYtTqGTzLqcb0O9Pzx6vgWg+yg==", + "dependencies": { + "@date-io/core": "^2.13.1" + }, + "peerDependencies": { + "luxon": "^1.21.3 || ^2.x" + }, + "peerDependenciesMeta": { + "luxon": { + "optional": true + } + } + }, + "node_modules/@date-io/moment": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.13.1.tgz", + "integrity": "sha512-XX1X/Tlvl3TdqQy2j0ZUtEJV6Rl8tOyc5WOS3ki52He28Uzme4Ro/JuPWTMBDH63weSWIZDlbR7zBgp3ZA2y1A==", + "dependencies": { + "@date-io/core": "^2.13.1" + }, + "peerDependencies": { + "moment": "^2.24.0" + }, + "peerDependenciesMeta": { + "moment": { + "optional": true + } + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", @@ -1984,6 +2055,97 @@ } } }, + "node_modules/@mui/lab": { + "version": "5.0.0-alpha.75", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.75.tgz", + "integrity": "sha512-2DgPGYm0wjuSSb9R4cp97LINvHBI7+8eT1WL108GmniwFbAxb0U7hc//QF44W0JyJbLU+qNiScFJupQMTbe4dg==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@date-io/date-fns": "^2.13.1", + "@date-io/dayjs": "^2.13.1", + "@date-io/luxon": "^2.13.1", + "@date-io/moment": "^2.13.1", + "@mui/base": "5.0.0-alpha.74", + "@mui/system": "^5.5.3", + "@mui/utils": "^5.5.3", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "react-transition-group": "^4.4.2", + "rifm": "^0.12.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^16.8.6 || ^17.0.0", + "date-fns": "^2.25.0", + "dayjs": "^1.10.7", + "luxon": "^1.28.0 || ^2.0.0", + "moment": "^2.29.1", + "react": "^17.0.0", + "react-dom": "^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/@mui/lab/node_modules/@mui/base": { + "version": "5.0.0-alpha.74", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.74.tgz", + "integrity": "sha512-pw3T1xNXpW8pLo9+BvtyazZb0CSjNJsjbzznlbV/aNkBfjNPXQVI3X1NDm3WSI8y6M96WDIVO7XrHAohOwALSQ==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@emotion/is-prop-valid": "^1.1.2", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.5.3", + "@popperjs/core": "^2.11.4", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^17.0.0", + "react-dom": "^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/lab/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, "node_modules/@mui/material": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.4.3.tgz", @@ -2034,12 +2196,12 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/@mui/private-theming": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.4.2.tgz", - "integrity": "sha512-mlPDYYko4wIcwXjCPEmOWbNTT4DZ6h9YHdnRtQPnWM28+TRUHEo7SbydnnmVDQLRXUfaH4Y6XtEHIfBNPE/SLg==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.5.3.tgz", + "integrity": "sha512-Wf7NurY7lk8SBWelSBY2U02zxLt1773JpIcXTHuEC9/GZdQA4CXCJGl2cVQzheKhee5rZ+8JwGulrRiVl1m+4A==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@mui/utils": "^5.4.2", + "@babel/runtime": "^7.17.2", + "@mui/utils": "^5.5.3", "prop-types": "^15.7.2" }, "engines": { @@ -2060,11 +2222,11 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.4.2.tgz", - "integrity": "sha512-tz9p3aRtzXHKAg7x3BgP0hVQEoGKaxNCFxsJ+d/iqEHYvywWFSs6oxqYAvDHIRpvMlUZyPNoTrkcNnbdMmH/ng==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.5.2.tgz", + "integrity": "sha512-jkz5AHHbA43akBo5L3y1X1/X0f+RvXvCp3eXKt+iOf3qnKSAausbtlVz7gBbC4xIWDnP1Jb/6T+t/0/7gObRYA==", "dependencies": { - "@babel/runtime": "^7.17.0", + "@babel/runtime": "^7.17.2", "@emotion/cache": "^11.7.1", "prop-types": "^15.7.2" }, @@ -2090,17 +2252,17 @@ } }, "node_modules/@mui/system": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.4.3.tgz", - "integrity": "sha512-Xz5AVe9JMufJVozMzUv93IRtnLNZnw/Q8k+Mg7Q4oRuwdir0TcYkMVUqAHetVKb3rAouIVCu/cQv0jB8gVeVsQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.5.3.tgz", + "integrity": "sha512-J9JcySJuEqfEoP334K/2gEWm2vOx73Uqjii3qlFVhWRBOAJ0Pjyk0sN5W/eVRbwhUm95DNgh2V5s8dRK3vzyVw==", "dependencies": { - "@babel/runtime": "^7.17.0", - "@mui/private-theming": "^5.4.2", - "@mui/styled-engine": "^5.4.2", - "@mui/types": "^7.1.2", - "@mui/utils": "^5.4.2", + "@babel/runtime": "^7.17.2", + "@mui/private-theming": "^5.5.3", + "@mui/styled-engine": "^5.5.2", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.5.3", "clsx": "^1.1.1", - "csstype": "^3.0.10", + "csstype": "^3.0.11", "prop-types": "^15.7.2" }, "engines": { @@ -2129,9 +2291,9 @@ } }, "node_modules/@mui/types": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.2.tgz", - "integrity": "sha512-SD7O1nVzqG+ckQpFjDhXPZjRceB8HQFHEvdLLrPhlJy4lLbwEBbxK74Tj4t6Jgk0fTvLJisuwOutrtYe9P/xBQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.3.tgz", + "integrity": "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==", "peerDependencies": { "@types/react": "*" }, @@ -2142,11 +2304,11 @@ } }, "node_modules/@mui/utils": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.4.2.tgz", - "integrity": "sha512-646dBCC57MXTo/Gf3AnZSHRHznaTETQq5x7AWp5FRQ4jPeyT4WSs18cpJVwkV01cAHKh06pNQTIufIALIWCL5g==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.5.3.tgz", + "integrity": "sha512-t627eVRpl3SlxVya0cIVNs8jPl4KCEiGaTSWY9iKKTcMNaeDbuRML+zv/CFHDPr1zFv+FjJSP02ySB+tZ8xIag==", "dependencies": { - "@babel/runtime": "^7.17.0", + "@babel/runtime": "^7.17.2", "@types/prop-types": "^15.7.4", "@types/react-is": "^16.7.1 || ^17.0.0", "prop-types": "^15.7.2", @@ -2204,9 +2366,9 @@ } }, "node_modules/@popperjs/core": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.2.tgz", - "integrity": "sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA==", + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.4.tgz", + "integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -5229,9 +5391,9 @@ } }, "node_modules/csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" }, "node_modules/cwebp-bin": { "version": "7.0.1", @@ -5259,6 +5421,18 @@ "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz", "integrity": "sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg==" }, + "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.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -11063,6 +11237,14 @@ "node": ">=0.10.0" } }, + "node_modules/rifm": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", + "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "peerDependencies": { + "react": ">=16.8" + } + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -14269,6 +14451,43 @@ "to-fast-properties": "^2.0.0" } }, + "@date-io/core": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.13.1.tgz", + "integrity": "sha512-pVI9nfkf2qClb2Cxdq0Q4zJhdawMG4ybWZUVGifT78FDwzRMX2SwXBb55s5NRJk0HcIicDuxktmCtemZqMH1Zg==" + }, + "@date-io/date-fns": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.13.1.tgz", + "integrity": "sha512-8fmfwjiLMpFLD+t4NBwDx0eblWnNcgt4NgfT/uiiQTGI81fnPu9tpBMYdAcuWxaV7LLpXgzLBx1SYWAMDVUDQQ==", + "requires": { + "@date-io/core": "^2.13.1" + } + }, + "@date-io/dayjs": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.13.1.tgz", + "integrity": "sha512-5bL4WWWmlI4uGZVScANhHJV7Mjp93ec2gNeUHDqqLaMZhp51S0NgD25oqj/k0LqBn1cdU2MvzNpk/ObMmVv5cQ==", + "requires": { + "@date-io/core": "^2.13.1" + } + }, + "@date-io/luxon": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.13.1.tgz", + "integrity": "sha512-yG+uM7lXfwLyKKEwjvP8oZ7qblpmfl9gxQYae55ifbwiTs0CoCTkYkxEaQHGkYtTqGTzLqcb0O9Pzx6vgWg+yg==", + "requires": { + "@date-io/core": "^2.13.1" + } + }, + "@date-io/moment": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.13.1.tgz", + "integrity": "sha512-XX1X/Tlvl3TdqQy2j0ZUtEJV6Rl8tOyc5WOS3ki52He28Uzme4Ro/JuPWTMBDH63weSWIZDlbR7zBgp3ZA2y1A==", + "requires": { + "@date-io/core": "^2.13.1" + } + }, "@discoveryjs/json-ext": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", @@ -14470,6 +14689,48 @@ "@babel/runtime": "^7.17.0" } }, + "@mui/lab": { + "version": "5.0.0-alpha.75", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.75.tgz", + "integrity": "sha512-2DgPGYm0wjuSSb9R4cp97LINvHBI7+8eT1WL108GmniwFbAxb0U7hc//QF44W0JyJbLU+qNiScFJupQMTbe4dg==", + "requires": { + "@babel/runtime": "^7.17.2", + "@date-io/date-fns": "^2.13.1", + "@date-io/dayjs": "^2.13.1", + "@date-io/luxon": "^2.13.1", + "@date-io/moment": "^2.13.1", + "@mui/base": "5.0.0-alpha.74", + "@mui/system": "^5.5.3", + "@mui/utils": "^5.5.3", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2", + "react-transition-group": "^4.4.2", + "rifm": "^0.12.1" + }, + "dependencies": { + "@mui/base": { + "version": "5.0.0-alpha.74", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.74.tgz", + "integrity": "sha512-pw3T1xNXpW8pLo9+BvtyazZb0CSjNJsjbzznlbV/aNkBfjNPXQVI3X1NDm3WSI8y6M96WDIVO7XrHAohOwALSQ==", + "requires": { + "@babel/runtime": "^7.17.2", + "@emotion/is-prop-valid": "^1.1.2", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.5.3", + "@popperjs/core": "^2.11.4", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + } + } + }, "@mui/material": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.4.3.tgz", @@ -14497,52 +14758,52 @@ } }, "@mui/private-theming": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.4.2.tgz", - "integrity": "sha512-mlPDYYko4wIcwXjCPEmOWbNTT4DZ6h9YHdnRtQPnWM28+TRUHEo7SbydnnmVDQLRXUfaH4Y6XtEHIfBNPE/SLg==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.5.3.tgz", + "integrity": "sha512-Wf7NurY7lk8SBWelSBY2U02zxLt1773JpIcXTHuEC9/GZdQA4CXCJGl2cVQzheKhee5rZ+8JwGulrRiVl1m+4A==", "requires": { - "@babel/runtime": "^7.17.0", - "@mui/utils": "^5.4.2", + "@babel/runtime": "^7.17.2", + "@mui/utils": "^5.5.3", "prop-types": "^15.7.2" } }, "@mui/styled-engine": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.4.2.tgz", - "integrity": "sha512-tz9p3aRtzXHKAg7x3BgP0hVQEoGKaxNCFxsJ+d/iqEHYvywWFSs6oxqYAvDHIRpvMlUZyPNoTrkcNnbdMmH/ng==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.5.2.tgz", + "integrity": "sha512-jkz5AHHbA43akBo5L3y1X1/X0f+RvXvCp3eXKt+iOf3qnKSAausbtlVz7gBbC4xIWDnP1Jb/6T+t/0/7gObRYA==", "requires": { - "@babel/runtime": "^7.17.0", + "@babel/runtime": "^7.17.2", "@emotion/cache": "^11.7.1", "prop-types": "^15.7.2" } }, "@mui/system": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.4.3.tgz", - "integrity": "sha512-Xz5AVe9JMufJVozMzUv93IRtnLNZnw/Q8k+Mg7Q4oRuwdir0TcYkMVUqAHetVKb3rAouIVCu/cQv0jB8gVeVsQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.5.3.tgz", + "integrity": "sha512-J9JcySJuEqfEoP334K/2gEWm2vOx73Uqjii3qlFVhWRBOAJ0Pjyk0sN5W/eVRbwhUm95DNgh2V5s8dRK3vzyVw==", "requires": { - "@babel/runtime": "^7.17.0", - "@mui/private-theming": "^5.4.2", - "@mui/styled-engine": "^5.4.2", - "@mui/types": "^7.1.2", - "@mui/utils": "^5.4.2", + "@babel/runtime": "^7.17.2", + "@mui/private-theming": "^5.5.3", + "@mui/styled-engine": "^5.5.2", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.5.3", "clsx": "^1.1.1", - "csstype": "^3.0.10", + "csstype": "^3.0.11", "prop-types": "^15.7.2" } }, "@mui/types": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.2.tgz", - "integrity": "sha512-SD7O1nVzqG+ckQpFjDhXPZjRceB8HQFHEvdLLrPhlJy4lLbwEBbxK74Tj4t6Jgk0fTvLJisuwOutrtYe9P/xBQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.3.tgz", + "integrity": "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==", "requires": {} }, "@mui/utils": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.4.2.tgz", - "integrity": "sha512-646dBCC57MXTo/Gf3AnZSHRHznaTETQq5x7AWp5FRQ4jPeyT4WSs18cpJVwkV01cAHKh06pNQTIufIALIWCL5g==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.5.3.tgz", + "integrity": "sha512-t627eVRpl3SlxVya0cIVNs8jPl4KCEiGaTSWY9iKKTcMNaeDbuRML+zv/CFHDPr1zFv+FjJSP02ySB+tZ8xIag==", "requires": { - "@babel/runtime": "^7.17.0", + "@babel/runtime": "^7.17.2", "@types/prop-types": "^15.7.4", "@types/react-is": "^16.7.1 || ^17.0.0", "prop-types": "^15.7.2", @@ -14583,9 +14844,9 @@ } }, "@popperjs/core": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.2.tgz", - "integrity": "sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA==" + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.4.tgz", + "integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg==" }, "@reduxjs/toolkit": { "version": "1.8.0", @@ -16930,9 +17191,9 @@ } }, "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" }, "cwebp-bin": { "version": "7.0.1", @@ -16950,6 +17211,11 @@ "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz", "integrity": "sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg==" }, + "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.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -21323,6 +21589,12 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rifm": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", + "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "requires": {} + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", diff --git a/package.json b/package.json index 99ff8cc..b358e19 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,12 @@ "@emotion/react": "^11.8.1", "@emotion/styled": "^11.8.1", "@mui/icons-material": "^5.4.2", + "@mui/lab": "^5.0.0-alpha.75", "@mui/material": "^5.4.3", "@reduxjs/toolkit": "^1.8.0", "@types/react-big-calendar": "^0.36.2", "axios": "^0.26.1", + "date-fns": "^2.28.0", "moment": "^2.29.1", "react": "^17.0.2", "react-big-calendar": "^0.39.3", diff --git a/src/components/home/CallFavouritesDialog.tsx b/src/components/home/CallFavouritesDialog.tsx index 6156f70..484035a 100644 --- a/src/components/home/CallFavouritesDialog.tsx +++ b/src/components/home/CallFavouritesDialog.tsx @@ -15,6 +15,10 @@ import { useAppSelector } from "../../redux/hooks"; import { selectFavorites } from "../../redux/slices/favoritesSlice"; import { selectTeam, selectUsers } from "../../redux/slices/usersSlice"; import GroupSelect from "../sidebar/GroupSelect"; +import axios from "../../api/axios"; +import useAuth from "../../hooks/useAuth"; +import DetailedMeeting from "../../api-bodies/DetailedMeeting"; +import NewMeeting from "../../api-bodies/NewMeeting"; interface Props { open: boolean; @@ -51,7 +55,21 @@ const CallFavouritesDialog: React.FC = ({ selectUsers(state, groupMembersUuids) ); - const handleCall = () => { + const auth = useAuth(); + + const handleCall = async(e: React.SyntheticEvent) => { + const newMeeting: NewMeeting ={ + startTime: new Date().toISOString(), + duration: 60, + topic: "Quick Call to Group", + registrantIds: checkedUuids + }; + const response = await axios.post( + `/users/${auth?.uuid}/meetings`, + JSON.stringify(newMeeting) + ); + const meeting: DetailedMeeting = response?.data; + console.log("create meeting response: " + meeting.startTime + ":" + meeting.duration); handleClose(); }; diff --git a/src/components/home/ScheduleMeetingDialog.tsx b/src/components/home/ScheduleMeetingDialog.tsx new file mode 100644 index 0000000..3dbec0f --- /dev/null +++ b/src/components/home/ScheduleMeetingDialog.tsx @@ -0,0 +1,178 @@ +import { + Button, + Checkbox, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + FormControlLabel, + FormGroup, + TextField, + Typography, + } from "@mui/material"; + import LocalizationProvider from '@mui/lab/LocalizationProvider'; + import AdapterDateFns from '@mui/lab/AdapterDateFns'; + import DateTimePicker from '@mui/lab/DateTimePicker'; + import React, { useState } from "react"; + import { useAppSelector } from "../../redux/hooks"; + import { selectFavorites } from "../../redux/slices/favoritesSlice"; + import { selectTeam, selectUsers } from "../../redux/slices/usersSlice"; + import GroupSelect from "../sidebar/GroupSelect"; + import axios from "../../api/axios"; + import useAuth from "../../hooks/useAuth"; + import DetailedMeeting from "../../api-bodies/DetailedMeeting"; + import NewMeeting from "../../api-bodies/NewMeeting"; + + interface Props { + open: boolean; + handleClose: () => void; + } + + const CallFavouritesDialog: React.FC = ({ + open, + handleClose, + }: Props) => { + + const [meetingStartDate, setMeetingStartDate] = React.useState(new Date()); + const [meetingTopic, setMeetingTopic] = useState(""); + const [meetingDuration, setMeetingDuration] = useState(60); + const [group, setGroup] = useState("Favorites"); + const [inputText, setInputText] = useState(""); + const [checkedUuids, setCheckedUuids] = useState([]); + + const handleCheck = (uuid: string, checked: boolean) => { + if (checked) { + setCheckedUuids(checkedUuids.concat([uuid])); + } else { + setCheckedUuids(checkedUuids.filter((id) => id != uuid)); + } + }; + + const handleGroupChange = () => { + setCheckedUuids([]); + }; + + const handleDateChange = (startDate: Date | null, keyboardInputValue?: string | undefined) => { + setMeetingStartDate(startDate); + }; + + + const favoritesUuids = useAppSelector(selectFavorites); + const teamUuids = useAppSelector(selectTeam); + + const groupMembersUuids: string[] = + group === "Favorites" ? favoritesUuids : teamUuids; + const groupMembers = useAppSelector((state) => + selectUsers(state, groupMembersUuids) + ); + + const auth = useAuth(); + + const handleCall = async(e: React.SyntheticEvent) => { + const newMeeting: NewMeeting ={ + startTime: meetingStartDate ? meetingStartDate.toISOString() : new Date().toISOString(), + duration: meetingDuration, + topic: meetingTopic, + registrantIds: checkedUuids + }; + const response = await axios.post( + `/users/${auth?.uuid}/meetings`, + JSON.stringify(newMeeting) + ); + const meeting: DetailedMeeting = response?.data; + console.log("create meeting response: " + meeting.startTime + ":" + meeting.duration); + handleClose(); + }; + + return ( + + Schedule A Meeting + + + } + /> + + { + setMeetingDuration(parseInt(event.target.value)); + }} + /> + + + { + setMeetingTopic(event.target.value); + }} + /> + + + + + + { + setInputText(e.target.value); + }} + /> + + {groupMembers + .filter((member) => + member.name.toLowerCase().includes(inputText.toLowerCase()) + ) + .map((member) => ( + { + handleCheck(member.uuid, e.target.checked); + }} + control={ + + } + /> + ))} + + + + + + + + ); + }; + + export default CallFavouritesDialog; \ No newline at end of file diff --git a/src/components/home/ShortCuts.tsx b/src/components/home/ShortCuts.tsx index 8444215..dfb949a 100644 --- a/src/components/home/ShortCuts.tsx +++ b/src/components/home/ShortCuts.tsx @@ -4,37 +4,51 @@ import Button from "@mui/material/Button"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import CallFavouritesDialog from "./CallFavouritesDialog"; +import ScheduleMeetingDialog from "./ScheduleMeetingDialog"; import { useState } from "react"; const ShortCuts: React.FC = () => { - const [open, setOpen] = useState(false); + const [openScheduleMeeting, setOpenScheduleMeeting] = useState(false); + const [openCallGroup, setOpenCallGroup] = useState(false); - const handleClickOpen = () => { - setOpen(true); + const handleClickOpenCallGroup = () => { + setOpenCallGroup(true); }; - const handleClose = () => { - setOpen(false); + const handleCloseCallGroup = () => { + setOpenCallGroup(false); + }; + + const handleClickOpenScheduleMeeting = () => { + setOpenScheduleMeeting(true); + }; + + const handleCloseScheduleMeeting = () => { + setOpenScheduleMeeting(false); }; return (
- + Schedule Meeting - Call Group