diff --git a/package-lock.json b/package-lock.json index a5944fb51..d2f96a72e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2215,21 +2215,6 @@ "resolved": "https://registry.npmjs.org/@date-io/core/-/core-1.3.13.tgz", "integrity": "sha512-AlEKV7TxjeK+jxWVKcCFrfYAk8spX9aCyiToFIiLPtfQbsjmRGLIhb5VZgptQcJdHtLXo7+m0DuurwFgUToQuA==" }, - "@date-io/date-fns": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.16.0.tgz", - "integrity": "sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA==", - "requires": { - "@date-io/core": "^2.16.0" - }, - "dependencies": { - "@date-io/core": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz", - "integrity": "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==" - } - } - }, "@date-io/dayjs": { "version": "1.3.13", "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-1.3.13.tgz", @@ -2238,36 +2223,6 @@ "@date-io/core": "^1.3.13" } }, - "@date-io/luxon": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.16.1.tgz", - "integrity": "sha512-aeYp5K9PSHV28946pC+9UKUi/xMMYoaGelrpDibZSgHu2VWHXrr7zWLEr+pMPThSs5vt8Ei365PO+84pCm37WQ==", - "requires": { - "@date-io/core": "^2.16.0" - }, - "dependencies": { - "@date-io/core": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz", - "integrity": "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==" - } - } - }, - "@date-io/moment": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.16.1.tgz", - "integrity": "sha512-JkxldQxUqZBfZtsaCcCMkm/dmytdyq5pS1RxshCQ4fHhsvP5A7gSqPD22QbVXMcJydi3d3v1Y8BQdUKEuGACZQ==", - "requires": { - "@date-io/core": "^2.16.0" - }, - "dependencies": { - "@date-io/core": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz", - "integrity": "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==" - } - } - }, "@emotion/babel-plugin": { "version": "11.10.6", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz", @@ -5527,91 +5482,149 @@ } }, "@mui/base": { - "version": "5.0.0-alpha.64", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.64.tgz", - "integrity": "sha512-lqUFbAyYPl3uDaTxGWIUWx9Zin5APv5Rrn/oUcnm/71Isd5dJ94zoGHCTdNy2sxhDRcXRshsdC2dfdwIWxhkZA==", - "requires": { - "@babel/runtime": "^7.16.3", - "@emotion/is-prop-valid": "^1.1.1", - "@mui/utils": "^5.2.3", - "@popperjs/core": "^2.4.4", - "clsx": "^1.1.1", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "version": "5.0.0-beta.2", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.2.tgz", + "integrity": "sha512-R9R+aqrl1QhZJaO05rhvooqxOaf7SKpQ+EjW80sbP3ticTVmLmrn4YBLQS7/ML+WXdrkrPtqSmKFdSE5Ik3gBQ==", + "requires": { + "@babel/runtime": "^7.21.0", + "@emotion/is-prop-valid": "^1.2.1", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.13.1", + "@popperjs/core": "^2.11.7", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" }, "dependencies": { + "@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, "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==" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" } } }, + "@mui/core-downloads-tracker": { + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.2.tgz", + "integrity": "sha512-aOLCXMCySMFL2WmUhnz+DjF84AoFVu8rn35OsL759HXOZMz8zhEwVf5w/xxkWx7DycM2KXDTgAvYW48nTfqTLA==" + }, "@mui/icons-material": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.2.5.tgz", - "integrity": "sha512-uQiUz+l0xy+2jExyKyU19MkMAR2F7bQFcsQ5hdqAtsB14Jw2zlmIAD55mV6f0NxKCut7Rx6cA3ZpfzlzAfoK8Q==", + "version": "5.11.16", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.11.16.tgz", + "integrity": "sha512-oKkx9z9Kwg40NtcIajF9uOXhxiyTZrrm9nmIJ4UjkU2IdHpd4QVLbCc/5hZN/y0C6qzi2Zlxyr9TGddQx2vx2A==", "requires": { - "@babel/runtime": "^7.16.3" + "@babel/runtime": "^7.21.0" } }, "@mui/material": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.8.tgz", - "integrity": "sha512-GYNYoTDw3C07D1rkB9pTS3xMH3gL0p3kb27SVMrMqP3AWrFxfrS73OnsonJh6Uy/F22pYX6rJxiFOhPq5+i4Eg==", - "requires": { - "@babel/runtime": "^7.16.3", - "@mui/base": "5.0.0-alpha.64", - "@mui/system": "^5.2.8", - "@mui/types": "^7.1.0", - "@mui/utils": "^5.2.3", - "@types/react-transition-group": "^4.4.4", - "clsx": "^1.1.1", - "csstype": "^3.0.10", - "hoist-non-react-statics": "^3.3.2", - "prop-types": "^15.7.2", - "react-is": "^17.0.2", - "react-transition-group": "^4.4.2" + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.13.2.tgz", + "integrity": "sha512-Pfke1l0GG2OJb/Nr10aVr8huoBFcBTdWKV5iFSTEHqf9c2C1ZlyYMISn7ui6X3Gix8vr+hP5kVqH1LAWwQSb6w==", + "requires": { + "@babel/runtime": "^7.21.0", + "@mui/base": "5.0.0-beta.2", + "@mui/core-downloads-tracker": "^5.13.2", + "@mui/system": "^5.13.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.13.1", + "@types/react-transition-group": "^4.4.6", + "clsx": "^1.2.1", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" }, "dependencies": { "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==" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" } } }, "@mui/private-theming": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.12.0.tgz", - "integrity": "sha512-w5dwMen1CUm1puAtubqxY9BIzrBxbOThsg2iWMvRJmWyJAPdf3Z583fPXpqeA2lhTW79uH2jajk5Ka4FuGlTPg==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.1.tgz", + "integrity": "sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ==", "requires": { "@babel/runtime": "^7.21.0", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "prop-types": "^15.8.1" } }, "@mui/styled-engine": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.12.0.tgz", - "integrity": "sha512-frh8L7CRnvD0RDmIqEv6jFeKQUIXqW90BaZ6OrxJ2j4kIsiVLu29Gss4SbBvvrWwwatR72sBmC3w1aG4fjp9mQ==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", "requires": { "@babel/runtime": "^7.21.0", - "@emotion/cache": "^11.10.7", + "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" + }, + "dependencies": { + "@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "requires": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + } } }, "@mui/system": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.12.0.tgz", - "integrity": "sha512-Zi+WHuiJfK1ya+9+oeJQ1rLIBdY8CGDYT5oVlQg/6kIuyiCaE6SnN9PVzxBxfY77wHuOPwz4kxcPe9srdZc12Q==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.13.2.tgz", + "integrity": "sha512-TPyWmRJPt0JPVxacZISI4o070xEJ7ftxpVtu6LWuYVOUOINlhoGOclam4iV8PDT3EMQEHuUrwU49po34UdWLlw==", "requires": { "@babel/runtime": "^7.21.0", - "@mui/private-theming": "^5.12.0", - "@mui/styled-engine": "^5.12.0", + "@mui/private-theming": "^5.13.1", + "@mui/styled-engine": "^5.13.2", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "clsx": "^1.2.1", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -5623,13 +5636,13 @@ "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==" }, "@mui/utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.12.0.tgz", - "integrity": "sha512-RmQwgzF72p7Yr4+AAUO6j1v2uzt6wr7SWXn68KBsnfVpdOHyclCzH2lr/Xu6YOw9su4JRtdAIYfJFXsS6Cjkmw==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.13.1.tgz", + "integrity": "sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A==", "requires": { "@babel/runtime": "^7.21.0", "@types/prop-types": "^15.7.5", - "@types/react-is": "^16.7.1 || ^17.0.0", + "@types/react-is": "^18.2.0", "prop-types": "^15.8.1", "react-is": "^18.2.0" }, @@ -5642,36 +5655,50 @@ } }, "@mui/x-date-pickers": { - "version": "5.0.20", - "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz", - "integrity": "sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA==", - "requires": { - "@babel/runtime": "^7.18.9", - "@date-io/core": "^2.15.0", - "@date-io/date-fns": "^2.15.0", - "@date-io/dayjs": "^2.15.0", - "@date-io/luxon": "^2.15.0", - "@date-io/moment": "^2.15.0", - "@mui/utils": "^5.10.3", - "@types/react-transition-group": "^4.4.5", + "version": "6.5.0", + "resolved": "http://registry.npmjs.org/@mui%2fx-date-pickers/-/x-date-pickers-6.5.0.tgz", + "integrity": "sha512-dRCO1mzHjfOqsa4LdKxiXQnV0cuGiAkliyxSDCdRn6clK2WdF9Oj+1+4Mkx7fcJA61SV1eP4Yg29s0/VDsZKZw==", + "requires": { + "@babel/runtime": "^7.21.0", + "@mui/utils": "^5.12.3", + "@types/react-transition-group": "^4.4.6", "clsx": "^1.2.1", - "prop-types": "^15.7.2", - "react-transition-group": "^4.4.5", - "rifm": "^0.12.1" + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" }, "dependencies": { - "@date-io/core": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz", - "integrity": "sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg==" + "@mui/utils": { + "version": "5.13.1", + "resolved": "http://registry.npmjs.org/@mui%2futils/-/utils-5.13.1.tgz", + "integrity": "sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A==", + "requires": { + "@babel/runtime": "^7.21.0", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^18.2.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + } + }, + "@types/react-is": { + "version": "18.2.0", + "resolved": "http://registry.npmjs.org/@types%2freact-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-1vz2yObaQkLL7YFe/pme2cpvDsCwI1WXIfL+5eLz0MI9gFG24Re16RzUsI8t9XZn9ZWvgLNDrJBmrqXJO7GNQQ==", + "requires": { + "@types/react": "*" + } }, - "@date-io/dayjs": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.16.0.tgz", - "integrity": "sha512-y5qKyX2j/HG3zMvIxTobYZRGnd1FUW2olZLS0vTj7bEkBQkjd2RO7/FEwDY03Z1geVGlXKnzIATEVBVaGzV4Iw==", + "@types/react-transition-group": { + "version": "4.4.6", + "resolved": "http://registry.npmjs.org/@types%2freact-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", "requires": { - "@date-io/core": "^2.16.0" + "@types/react": "*" } + }, + "react-is": { + "version": "18.2.0", + "resolved": "http://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" } } }, @@ -6449,9 +6476,9 @@ } }, "@types/react-is": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-1vz2yObaQkLL7YFe/pme2cpvDsCwI1WXIfL+5eLz0MI9gFG24Re16RzUsI8t9XZn9ZWvgLNDrJBmrqXJO7GNQQ==", "requires": { "@types/react": "*" } @@ -6476,9 +6503,9 @@ } }, "@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", "requires": { "@types/react": "*" } @@ -7611,9 +7638,9 @@ } }, "semver": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", - "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "optional": true, "requires": { "lru-cache": "^6.0.0" @@ -16361,7 +16388,7 @@ }, "fs-monkey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", "optional": true }, @@ -22577,9 +22604,9 @@ } }, "memfs": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.0.tgz", - "integrity": "sha512-yK6o8xVJlQerz57kvPROwTMgx5WtGwC2ZxDtOUsnGl49rHjYkfQoPNZPCKH73VdLE1BwBu/+Fx/NL8NYMUw2aA==", + "version": "3.5.1", + "resolved": "http://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz", + "integrity": "sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==", "optional": true, "requires": { "fs-monkey": "^1.0.3" @@ -27422,11 +27449,6 @@ "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==" }, - "rifm": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", - "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==" - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", diff --git a/packages/examples-react/package.json b/packages/examples-react/package.json index 7a5c6077e..b32d24378 100644 --- a/packages/examples-react/package.json +++ b/packages/examples-react/package.json @@ -6,7 +6,7 @@ "@jsonforms/core": "^3.1.0-alpha.3", "@jsonforms/examples": "^3.1.0-alpha.3", "@jsonforms/react": "^3.1.0-alpha.3", - "@mui/material": "~5.2.2", + "@mui/material": "~5.13.0", "@types/react-highlight": "^0.12.5", "@types/react-tabs": "^2.3.3", "highlight.js": "^11.3.1", diff --git a/packages/material-renderers/package.json b/packages/material-renderers/package.json index abdee6f91..853412387 100644 --- a/packages/material-renderers/package.json +++ b/packages/material-renderers/package.json @@ -84,18 +84,18 @@ "@emotion/styled": "^11.3.0", "@jsonforms/core": "3.1.0-alpha.3", "@jsonforms/react": "3.1.0-alpha.3", - "@mui/icons-material": "~5.2.2", - "@mui/material": "~5.2.2", - "@mui/x-date-pickers": "^5.0.0-beta.5" + "@mui/icons-material": "~5.11.16", + "@mui/material": "~5.13.0", + "@mui/x-date-pickers": "^6.0.0" }, "devDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@jsonforms/core": "^3.1.0-alpha.3", "@jsonforms/react": "^3.1.0-alpha.3", - "@mui/icons-material": "~5.2.0", - "@mui/material": "~5.2.2", - "@mui/x-date-pickers": "^5.0.0-beta.5", + "@mui/icons-material": "~5.11.16", + "@mui/material": "~5.13.0", + "@mui/x-date-pickers": "^6.5.0", "@rollup/plugin-commonjs": "^23.0.3", "@rollup/plugin-json": "^5.0.2", "@rollup/plugin-node-resolve": "^15.0.1", diff --git a/packages/material-renderers/rollup.example.config.js b/packages/material-renderers/rollup.example.config.js index 1cc764d06..171b55a67 100644 --- a/packages/material-renderers/rollup.example.config.js +++ b/packages/material-renderers/rollup.example.config.js @@ -6,6 +6,39 @@ import copy from 'rollup-plugin-copy'; import css from 'rollup-plugin-import-css'; import typescript from 'rollup-plugin-typescript2'; +// This little plugin mitigates Rollup's lack of support for pre-built CommonJS dependencies with +// default exports. +// For mor details see here: https://github.com/eclipsesource/jsonforms/pull/2139 +function cjsCompatPlugin() { + return { + name: 'cjs-compat-plugin', + transform(code, id) { + // ignore all packages which are not @mui/utils + if ( + !/@mui\/utils.*.js$/.test(id) || + id.includes('@mui/utils/node_modules') + ) { + return code; + } + + // try to extract the commonjs namespace variable + const moduleName = code.match( + /(?[a-zA-Z0-9_$]*).default = _default;/ + )?.groups?.module; + + if (!moduleName || !code.includes(`return ${moduleName};`)) { + return code; + } + + // return default export instead of namespace + return code.replace( + `return ${moduleName}`, + `return ${moduleName}.default` + ); + }, + }; +} + /** * @type {import('rollup').RollupOptions} */ @@ -34,6 +67,7 @@ const config = { }, }, }), + cjsCompatPlugin(), copy({ targets: [ { diff --git a/packages/material-renderers/src/controls/MaterialDateControl.tsx b/packages/material-renderers/src/controls/MaterialDateControl.tsx index 3ae84b820..98127f923 100644 --- a/packages/material-renderers/src/controls/MaterialDateControl.tsx +++ b/packages/material-renderers/src/controls/MaterialDateControl.tsx @@ -1,19 +1,19 @@ /* The MIT License - + Copyright (c) 2017-2019 EclipseSource Munich https://github.com/eclipsesource/jsonforms - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,12 +35,7 @@ import { withJsonFormsControlProps } from '@jsonforms/react'; import { FormHelperText, Hidden } from '@mui/material'; import { DatePicker, LocalizationProvider } from '@mui/x-date-pickers'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -import { - createOnChangeHandler, - getData, - ResettableTextField, - useFocus, -} from '../util'; +import { createOnChangeHandler, getData, useFocus } from '../util'; export const MaterialDateControl = (props: ControlProps) => { const [focused, onFocus, onBlur] = useFocus(); @@ -84,7 +79,6 @@ export const MaterialDateControl = (props: ControlProps) => { ); const value = getData(data, saveFormat); - const valueInInputFormat = value ? value.format(format) : ''; return ( @@ -93,40 +87,32 @@ export const MaterialDateControl = (props: ControlProps) => { label={label} value={value} onChange={onChange} - inputFormat={format} - disableMaskedInput + format={format} views={views} disabled={!enabled} - componentsProps={{ - actionBar: { - actions: (variant) => - variant === 'desktop' ? [] : ['clear', 'cancel', 'accept'], + slotProps={{ + actionBar: ({ wrapperVariant }) => ({ + actions: + wrapperVariant === 'desktop' + ? [] + : ['clear', 'cancel', 'accept'], + }), + textField: { + id: id + '-input', + required: + required && !appliedUiSchemaOptions.hideRequiredAsterisk, + autoFocus: appliedUiSchemaOptions.focus, + error: !isValid, + fullWidth: !appliedUiSchemaOptions.trim, + inputProps: { + type: 'text', + }, + InputLabelProps: data ? { shrink: true } : undefined, + onFocus: onFocus, + onBlur: onBlur, + variant: 'standard', }, }} - renderInput={(params) => ( - - )} /> {firstFormHelperText} diff --git a/packages/material-renderers/src/controls/MaterialDateTimeControl.tsx b/packages/material-renderers/src/controls/MaterialDateTimeControl.tsx index 22cddae59..5a83bf45b 100644 --- a/packages/material-renderers/src/controls/MaterialDateTimeControl.tsx +++ b/packages/material-renderers/src/controls/MaterialDateTimeControl.tsx @@ -1,19 +1,19 @@ /* The MIT License - + Copyright (c) 2017-2019 EclipseSource Munich https://github.com/eclipsesource/jsonforms - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,12 +35,7 @@ import { withJsonFormsControlProps } from '@jsonforms/react'; import { FormHelperText, Hidden } from '@mui/material'; import { DateTimePicker, LocalizationProvider } from '@mui/x-date-pickers'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -import { - createOnChangeHandler, - getData, - ResettableTextField, - useFocus, -} from '../util'; +import { createOnChangeHandler, getData, useFocus } from '../util'; export const MaterialDateTimeControl = (props: ControlProps) => { const [focused, onFocus, onBlur] = useFocus(); @@ -91,7 +86,6 @@ export const MaterialDateTimeControl = (props: ControlProps) => { ); const value = getData(data, saveFormat); - const valueInInputFormat = value ? value.format(format) : ''; return ( @@ -100,41 +94,33 @@ export const MaterialDateTimeControl = (props: ControlProps) => { label={label} value={value} onChange={onChange} - inputFormat={format} - disableMaskedInput + format={format} ampm={!!appliedUiSchemaOptions.ampm} views={views} disabled={!enabled} - componentsProps={{ - actionBar: { - actions: (variant) => - variant === 'desktop' ? [] : ['clear', 'cancel', 'accept'], + slotProps={{ + actionBar: ({ wrapperVariant }) => ({ + actions: + wrapperVariant === 'desktop' + ? [] + : ['clear', 'cancel', 'accept'], + }), + textField: { + id: id + '-input', + required: + required && !appliedUiSchemaOptions.hideRequiredAsterisk, + autoFocus: appliedUiSchemaOptions.focus, + error: !isValid, + fullWidth: !appliedUiSchemaOptions.trim, + inputProps: { + type: 'text', + }, + InputLabelProps: data ? { shrink: true } : undefined, + onFocus: onFocus, + onBlur: onBlur, + variant: 'standard', }, }} - renderInput={(params) => ( - - )} /> {firstFormHelperText} diff --git a/packages/material-renderers/src/controls/MaterialTimeControl.tsx b/packages/material-renderers/src/controls/MaterialTimeControl.tsx index 6051af9cf..ebdaba76a 100644 --- a/packages/material-renderers/src/controls/MaterialTimeControl.tsx +++ b/packages/material-renderers/src/controls/MaterialTimeControl.tsx @@ -1,19 +1,19 @@ /* The MIT License - + Copyright (c) 2017-2019 EclipseSource Munich https://github.com/eclipsesource/jsonforms - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,12 +35,7 @@ import { withJsonFormsControlProps } from '@jsonforms/react'; import { FormHelperText, Hidden } from '@mui/material'; import { TimePicker, LocalizationProvider } from '@mui/x-date-pickers'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -import { - createOnChangeHandler, - getData, - ResettableTextField, - useFocus, -} from '../util'; +import { createOnChangeHandler, getData, useFocus } from '../util'; export const MaterialTimeControl = (props: ControlProps) => { const [focused, onFocus, onBlur] = useFocus(); @@ -86,8 +81,6 @@ export const MaterialTimeControl = (props: ControlProps) => { ); const value = getData(data, saveFormat); - const valueInInputFormat = value ? value.format(format) : ''; - return ( @@ -95,41 +88,33 @@ export const MaterialTimeControl = (props: ControlProps) => { label={label} value={value} onChange={onChange} - inputFormat={format} - disableMaskedInput + format={format} ampm={!!appliedUiSchemaOptions.ampm} views={views} disabled={!enabled} - componentsProps={{ - actionBar: { - actions: (variant) => - variant === 'desktop' ? [] : ['clear', 'cancel', 'accept'], + slotProps={{ + actionBar: ({ wrapperVariant }) => ({ + actions: + wrapperVariant === 'desktop' + ? [] + : ['clear', 'cancel', 'accept'], + }), + textField: { + id: id + '-input', + required: + required && !appliedUiSchemaOptions.hideRequiredAsterisk, + autoFocus: appliedUiSchemaOptions.focus, + error: !isValid, + fullWidth: !appliedUiSchemaOptions.trim, + inputProps: { + type: 'text', + }, + InputLabelProps: data ? { shrink: true } : undefined, + onFocus: onFocus, + onBlur: onBlur, + variant: 'standard', }, }} - renderInput={(params) => ( - - )} /> {firstFormHelperText} diff --git a/packages/material-renderers/src/util/datejs.tsx b/packages/material-renderers/src/util/datejs.tsx index 747b81682..d3f019cc1 100644 --- a/packages/material-renderers/src/util/datejs.tsx +++ b/packages/material-renderers/src/util/datejs.tsx @@ -1,7 +1,5 @@ -import { TextField, TextFieldProps } from '@mui/material'; import dayjs from 'dayjs'; import customParsing from 'dayjs/plugin/customParseFormat'; -import React, { useRef } from 'react'; // required for the custom save formats in the date, time and date-time pickers dayjs.extend(customParsing); @@ -12,13 +10,13 @@ export const createOnChangeHandler = handleChange: (path: string, value: any) => void, saveFormat: string | undefined ) => - (time: dayjs.Dayjs, textInputValue: string) => { + (time: dayjs.Dayjs) => { if (!time) { handleChange(path, undefined); return; } const result = dayjs(time).format(saveFormat); - handleChange(path, result === 'Invalid Date' ? textInputValue : result); + handleChange(path, result); }; export const getData = ( @@ -34,61 +32,3 @@ export const getData = ( } return dayjsData; }; - -interface InputRef { - lastInput: string; - toShow: string; -} - -type ResettableTextFieldProps = TextFieldProps & { - rawValue: any; - dayjsValueIsValid: boolean; - valueInInputFormat: string; - focused: boolean; -}; - -/** - * The dayjs formatter/parser is very lenient and for example ignores additional digits and/or characters. - * In these cases the input text can look vastly different than the actual value stored in the data. - * The 'ResettableTextField' component adjusts the text field to reflect the actual value stored in the data - * once it's no longer 'focused', i.e. when the user stops editing. - */ -export const ResettableTextField: React.FC = ({ - rawValue, - dayjsValueIsValid, - valueInInputFormat, - focused, - inputProps, - ...props -}) => { - const value = useRef({ - lastInput: inputProps?.value, - toShow: inputProps?.value, - }); - if (!focused) { - // The input text is not focused, therefore let's show the value actually stored in the data - if (!dayjsValueIsValid) { - // pass through the "raw" value in case it can't be formatted by dayjs - value.current.toShow = - typeof rawValue === 'string' || - rawValue === null || - rawValue === undefined - ? rawValue - : JSON.stringify(rawValue); - } else { - // otherwise use the specified format - value.current.toShow = valueInInputFormat; - } - } - if (focused && inputProps?.value !== value.current.lastInput) { - // Show the current text the user is typing into the text input - value.current.lastInput = inputProps?.value; - value.current.toShow = inputProps?.value; - } - return ( - - ); -}; diff --git a/packages/material-renderers/src/util/index.ts b/packages/material-renderers/src/util/index.ts index 95fc1d02d..8ac005b54 100644 --- a/packages/material-renderers/src/util/index.ts +++ b/packages/material-renderers/src/util/index.ts @@ -1,19 +1,19 @@ /* The MIT License - + Copyright (c) 2017-2019 EclipseSource Munich https://github.com/eclipsesource/jsonforms - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE diff --git a/packages/material-renderers/test/renderers/MaterialDateControl.test.tsx b/packages/material-renderers/test/renderers/MaterialDateControl.test.tsx index 238499e6f..5c0f51d29 100644 --- a/packages/material-renderers/test/renderers/MaterialDateControl.test.tsx +++ b/packages/material-renderers/test/renderers/MaterialDateControl.test.tsx @@ -424,30 +424,4 @@ describe('Material date control', () => { input.simulate('change', input); expect(onChangeData.data.foo).toBe('04---1961'); }); - - it('should call onChange with original input value for invalid date strings', () => { - const core = initCore(schema, uischema); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - - (input.getDOMNode() as HTMLInputElement).value = 'invalid date string'; - input.simulate('change', input); - expect(onChangeData.data.foo).toBe('invalid date string'); - }); }); diff --git a/packages/material-renderers/test/renderers/MaterialDateTimeControl.test.tsx b/packages/material-renderers/test/renderers/MaterialDateTimeControl.test.tsx index a053d915e..3e61b0d1f 100644 --- a/packages/material-renderers/test/renderers/MaterialDateTimeControl.test.tsx +++ b/packages/material-renderers/test/renderers/MaterialDateTimeControl.test.tsx @@ -430,30 +430,4 @@ describe('Material date time control', () => { input.simulate('change', input); expect(onChangeData.data.foo).toBe('2005/12/10 11:22 am'); }); - - it('should call onChange with original input value for invalid date strings', () => { - const core = initCore(schema, uischema); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - - (input.getDOMNode() as HTMLInputElement).value = 'invalid date string'; - input.simulate('change', input); - expect(onChangeData.data.foo).toBe('invalid date string'); - }); }); diff --git a/packages/material-renderers/test/renderers/MaterialNativeControl.test.tsx b/packages/material-renderers/test/renderers/MaterialNativeControl.test.tsx index 0c6987dd7..396d92268 100644 --- a/packages/material-renderers/test/renderers/MaterialNativeControl.test.tsx +++ b/packages/material-renderers/test/renderers/MaterialNativeControl.test.tsx @@ -26,7 +26,7 @@ import './MatchMediaMock'; import React from 'react'; import Enzyme, { mount, ReactWrapper } from 'enzyme'; import { MaterialNativeControl } from '../../src/controls/MaterialNativeControl'; -import TextField from '@mui/material/TextField'; +import TextField, { TextFieldProps } from '@mui/material/TextField'; import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; import { ControlElement, ControlProps } from '@jsonforms/core'; @@ -77,6 +77,8 @@ describe('Material native control', () => { it('is disabled', () => { const props = defaultControlProps(); wrapper = mount(createMaterialNativeControl(props)); - expect(wrapper.find(TextField).props().disabled).toEqual(true); + expect( + (wrapper.find(TextField).props() as TextFieldProps).disabled + ).toEqual(true); }); }); diff --git a/packages/material-renderers/test/renderers/MaterialTimeControl.test.tsx b/packages/material-renderers/test/renderers/MaterialTimeControl.test.tsx index 006f9c193..b3b6b358e 100644 --- a/packages/material-renderers/test/renderers/MaterialTimeControl.test.tsx +++ b/packages/material-renderers/test/renderers/MaterialTimeControl.test.tsx @@ -226,7 +226,7 @@ describe('Material time control', () => { const input = wrapper.find('input').first(); (input.getDOMNode() as HTMLInputElement).value = '08:40'; input.simulate('change', input); - expect(onChangeData.data.foo).toBe('08:40:00'); + expect(onChangeData.data.foo).toBe('08:40:05'); }); it('should update via action', () => { @@ -424,30 +424,4 @@ describe('Material time control', () => { input.simulate('change', input); expect(onChangeData.data.foo).toBe('1//12 am'); }); - - it('should call onChange with original input value for invalid date strings', () => { - const core = initCore(schema, uischema); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - - (input.getDOMNode() as HTMLInputElement).value = 'invalid date string'; - input.simulate('change', input); - expect(onChangeData.data.foo).toBe('invalid date string'); - }); });