diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ce01cce565..a7afd546d3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -25,7 +25,6 @@ "copy-to-clipboard": "^3.0.8", "crypto-js": "4.2.0", "deep-copy": "1.4.2", - "glamor": "^2.20.40", "i18next": "^17.0.13", "i18next-browser-languagedetector": "^3.0.3", "i18next-xhr-backend": "^3.1.2", @@ -7949,11 +7948,6 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, - "node_modules/bowser": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", - "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -9143,15 +9137,6 @@ "postcss": "^8.4" } }, - "node_modules/css-in-js-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", - "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", - "dependencies": { - "hyphenate-style-name": "^1.0.2", - "isobject": "^3.0.1" - } - }, "node_modules/css-loader": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", @@ -10179,14 +10164,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/engine.io-client": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz", @@ -11716,26 +11693,6 @@ "bser": "2.1.1" } }, - "node_modules/fbjs": { - "version": "0.8.18", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", - "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", - "dependencies": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.30" - } - }, - "node_modules/fbjs/node_modules/core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -12364,18 +12321,6 @@ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" }, - "node_modules/glamor": { - "version": "2.20.40", - "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz", - "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==", - "dependencies": { - "fbjs": "^0.8.12", - "inline-style-prefixer": "^3.0.6", - "object-assign": "^4.1.1", - "prop-types": "^15.5.10", - "through": "^2.3.8" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -13828,15 +13773,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/inline-style-prefixer": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", - "integrity": "sha512-ne8XIyyqkRaNJ1JfL1NYzNdCNxq+MCBQhC8NgOQlzNm2vv3XxlP0VSLQUbSRCF6KPEoveCVEpayHoHzcMyZsMQ==", - "dependencies": { - "bowser": "^1.7.3", - "css-in-js-utils": "^2.0.0" - } - }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -14452,15 +14388,6 @@ "node": ">=0.10.0" } }, - "node_modules/isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", - "dependencies": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -19009,23 +18936,6 @@ "tslib": "^2.0.3" } }, - "node_modules/node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dependencies": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "node_modules/node-fetch/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -21448,14 +21358,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dependencies": { - "asap": "~2.0.3" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -23900,7 +23802,8 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -25762,11 +25665,6 @@ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -26228,24 +26126,6 @@ "node": ">=14.17" } }, - "node_modules/ua-parser-js": { - "version": "0.7.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", - "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -27400,7 +27280,8 @@ "node_modules/whatwg-fetch": { "version": "3.6.18", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz", - "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==" + "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==", + "dev": true }, "node_modules/whatwg-mimetype": { "version": "2.3.0", @@ -33898,11 +33779,6 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, - "bowser": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", - "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -34846,15 +34722,6 @@ "postcss-selector-parser": "^6.0.9" } }, - "css-in-js-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", - "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", - "requires": { - "hyphenate-style-name": "^1.0.2", - "isobject": "^3.0.1" - } - }, "css-loader": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", @@ -35629,14 +35496,6 @@ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "requires": { - "iconv-lite": "^0.6.2" - } - }, "engine.io-client": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz", @@ -36825,27 +36684,6 @@ "bser": "2.1.1" } }, - "fbjs": { - "version": "0.8.18", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", - "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.30" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==" - } - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -37291,18 +37129,6 @@ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" }, - "glamor": { - "version": "2.20.40", - "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz", - "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==", - "requires": { - "fbjs": "^0.8.12", - "inline-style-prefixer": "^3.0.6", - "object-assign": "^4.1.1", - "prop-types": "^15.5.10", - "through": "^2.3.8" - } - }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -38400,15 +38226,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "inline-style-prefixer": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", - "integrity": "sha512-ne8XIyyqkRaNJ1JfL1NYzNdCNxq+MCBQhC8NgOQlzNm2vv3XxlP0VSLQUbSRCF6KPEoveCVEpayHoHzcMyZsMQ==", - "requires": { - "bowser": "^1.7.3", - "css-in-js-utils": "^2.0.0" - } - }, "internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -38821,15 +38638,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -42185,22 +41993,6 @@ "tslib": "^2.0.3" } }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - }, - "dependencies": { - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - } - } - }, "node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -43831,14 +43623,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -45714,7 +45498,8 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "setprototypeof": { "version": "1.2.0", @@ -47208,11 +46993,6 @@ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -47571,11 +47351,6 @@ "dev": true, "peer": true }, - "ua-parser-js": { - "version": "0.7.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", - "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==" - }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -48473,7 +48248,8 @@ "whatwg-fetch": { "version": "3.6.18", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz", - "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==" + "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==", + "dev": true }, "whatwg-mimetype": { "version": "2.3.0", diff --git a/frontend/package.json b/frontend/package.json index 151d222d0e..c19d537e36 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -20,7 +20,6 @@ "copy-to-clipboard": "^3.0.8", "crypto-js": "4.2.0", "deep-copy": "1.4.2", - "glamor": "^2.20.40", "i18next": "^17.0.13", "i18next-browser-languagedetector": "^3.0.3", "i18next-xhr-backend": "^3.1.2", diff --git a/frontend/src/components/toast/alert.js b/frontend/src/components/toast/alert.js index e30cb7c80b..e14caa164c 100644 --- a/frontend/src/components/toast/alert.js +++ b/frontend/src/components/toast/alert.js @@ -1,115 +1,53 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { css } from 'glamor'; + +const propTypes = { + intent: PropTypes.string.isRequired, + title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired, + onRemove: PropTypes.func.isRequired, + children: PropTypes.string, + isRemovable: PropTypes.bool, +}; class Alert extends React.PureComponent { - constructor(props) { - super(props); - this.containerStyle = css({ - borderRadius: '3px', - backgroundColor: '#fff', - padding: '10px 16px', - display: 'flex', - boxSizing: 'border-box', - boxShadow: 'rgba(67, 90, 111, 0.3) 0px 0px 1px, rgba(67, 90, 111, 0.47) 0px 8px 10px -4px', - justifyContent: 'space-between', - flexDirection: 'row', - }); - - this.containerBorderSuccess = css({ - borderLeft: '3px solid rgb(71, 184, 129)' - }); - - this.containerBorderWarn = css({ - borderLeft: '3px solid rgb(217, 130, 43)' - }); - - this.containerBorderDanger = css({ - borderLeft: '3px solid rgb(236, 76, 71)' - }); - - this.containerBorderNotify = css({ - borderLeft: '3px solid rgb(16, 112, 202)' - }); - - - this.toastTextTitle = css({ - fontWeight: '600', - fontSize: '14px', - color: '#435a6f', - margin: '0' - }); - - this.toastTextChild = css({ - fontSize: '14px', - color: '#999', - margin: '0' - }); - this.toastClose = css({ - marginLeft: '15px', - height: '24px', - width: '24px', - lineHeight: '22px', - fontWeight: '700', - textAlign: 'center', - fontSize: '20px', - color: '#000', - cursor: 'pointer', - opacity: '0.5', - ':hover': { - opacity: 1 - } - }); - - this.toastIcon = css({ - marginRight: '10px', - width: '14px', - height: '20px', - lineHeight: '20px' - }); - } - - getContainerStyle(intent) { + getIconClass(intent) { switch (intent) { case 'success': - return { borderStyle: this.containerBorderSuccess, iconColor: css({color: 'rgb(71, 184, 129)'}), iconClass: 'fa fa-check-circle' }; + return 'fa fa-check-circle'; case 'warning': - return { borderStyle: this.containerBorderWarn, iconColor: css({color: 'rgb(217, 130, 43)'}) , iconClass: 'fa fa-exclamation-triangle' }; + return 'fa fa-exclamation-triangle'; case 'none': - return { borderStyle: this.containerBorderNotify, iconColor: css({color: 'rgb(16, 112, 202)'}), iconClass: 'fa fa-exclamation-circle' }; - case 'notify-in-progress': - return { borderStyle: this.containerBorderNotify, iconColor: css({width: '15px', height: '15px', margin: '3px'}), iconClass: 'loading-icon' }; - case 'danger': - return { borderStyle: this.containerBorderDanger, iconColor: css({color: 'rgb(236, 76, 71)'}), iconClass: 'fa fa-exclamation-circle' }; + return 'fa fa-exclamation-circle'; + case 'danger': + return 'fa fa-exclamation-circle'; + default: + return 'fa fa-check-circle'; } } - render() { - const toastStyle = this.getContainerStyle(this.props.intent); + const { intent, title, children, isRemovable, onRemove } = this.props; + const iconClass = this.getIconClass(intent); return ( -
-
- +
+
+
-
-

{this.props.title}

- {this.props.children ?

{this.props.children}

: null} -
-
- × +
+

{title}

+ {children ?

{children}

: null}
+ {isRemovable && ( +
+ × +
+ )}
); } } -Alert.propTypes = { - onRemove: PropTypes.func.isRequired, - children: PropTypes.any, - title: PropTypes.string.isRequired, - intent: PropTypes.string.isRequired, -}; +Alert.propTypes = propTypes; export default Alert; diff --git a/frontend/src/components/toast/toast.js b/frontend/src/components/toast/toast.js index a49394055f..f450666d82 100644 --- a/frontend/src/components/toast/toast.js +++ b/frontend/src/components/toast/toast.js @@ -1,52 +1,10 @@ import React from 'react'; -import { css } from 'glamor'; import PropTypes from 'prop-types'; import Transition from 'react-transition-group/Transition'; import Alert from './alert'; -const animationEasing = { - deceleration: 'cubic-bezier(0.0, 0.0, 0.2, 1)', - acceleration: 'cubic-bezier(0.4, 0.0, 1, 1)', - spring: 'cubic-bezier(0.175, 0.885, 0.320, 1.175)' -}; - const ANIMATION_DURATION = 240; -const openAnimation = css.keyframes('openAnimation', { - from: { - opacity: 0, - transform: 'translateY(-120%)' - }, - to: { - transform: 'translateY(0)' - } -}); - -const closeAnimation = css.keyframes('closeAnimation', { - from: { - transform: 'scale(1)', - opacity: 1 - }, - to: { - transform: 'scale(0.9)', - opacity: 0 - } -}); - -const animationStyles = css({ - display: 'flex', - flexDirection: 'column', - alignItems: 'center', - height: 0, - transition: `all ${ANIMATION_DURATION}ms ${animationEasing.deceleration}`, - '&[data-state="entering"], &[data-state="entered"]': { - animation: `${openAnimation} ${ANIMATION_DURATION}ms ${animationEasing.spring} both` - }, - '&[data-state="exiting"]': { - animation: `${closeAnimation} 120ms ${animationEasing.acceleration} both` - } -}); - export default class Toast extends React.PureComponent { static propTypes = { /** @@ -67,7 +25,7 @@ export default class Toast extends React.PureComponent { /** * The type of the alert. */ - intent: PropTypes.oneOf(['none', 'notify-in-progress', 'success', 'warning', 'danger']).isRequired, + intent: PropTypes.oneOf(['none', 'success', 'warning', 'danger']).isRequired, /** * The title of the alert. @@ -116,7 +74,11 @@ export default class Toast extends React.PureComponent { this.clearCloseTimer(); } - close = () => { + close = (event) => { + if (event) { + event.nativeEvent.stopImmediatePropagation(); + event.stopPropagation(); + } this.clearCloseTimer(); this.setState({ isShown: false @@ -168,7 +130,7 @@ export default class Toast extends React.PureComponent { {state => (
this.close()} + children={this.props.children || ''} + isRemovable={this.props.hasCloseButton} + onRemove={(event) => this.close(event)} />
diff --git a/frontend/src/components/toast/toastManager.js b/frontend/src/components/toast/toastManager.js index 54c9e0b7b5..c4fac72977 100644 --- a/frontend/src/components/toast/toastManager.js +++ b/frontend/src/components/toast/toastManager.js @@ -1,20 +1,7 @@ import React from 'react'; -import { css } from 'glamor'; import PropTypes from 'prop-types'; - import Toast from './toast'; -const wrapperClass = css({ - maxWidth: 560, - margin: '0 auto', - top: 0, - left: 0, - right: 0, - position: 'fixed', - zIndex: 999999, -}); - - const hasCustomId = settings => Object.hasOwnProperty.call(settings, 'id'); export default class ToastManager extends React.PureComponent { @@ -83,12 +70,22 @@ export default class ToastManager extends React.PureComponent { const uniqueId = ++ToastManager.idCounter; const id = hasCustomId(settings) ? `${settings.id}-${uniqueId}` : uniqueId; + let hasCloseButton = settings.hasCloseButton || true; + let duration = settings.duration || 2; + if (settings.hasCloseButton !== undefined) { + hasCloseButton = settings.hasCloseButton; + } + + if (settings.duration !== undefined) { + duration = settings.duration; + } + return { id, title, description: settings.description, - hasCloseButton: settings.hasCloseButton || true, - duration: settings.duration || 2, + hasCloseButton: hasCloseButton, + duration: duration, close: () => this.closeToast(id), intent: settings.intent }; @@ -124,7 +121,7 @@ export default class ToastManager extends React.PureComponent { render() { return ( - +
{this.state.toasts.map(({ id, description, ...props }) => { return ( this.removeToast(id)} {...props}> @@ -132,7 +129,7 @@ export default class ToastManager extends React.PureComponent { ); })} - +
); } } diff --git a/frontend/src/components/toast/toaster.css b/frontend/src/components/toast/toaster.css new file mode 100644 index 0000000000..776e108325 --- /dev/null +++ b/frontend/src/components/toast/toaster.css @@ -0,0 +1,116 @@ +.seahub-toast-manager { + position: fixed; + margin: 0 auto; + max-width: 560px; + top: 0; + left: 0; + right: 0; + z-index: 999999; +} + +.seahub-toast-container { + display: flex; + flex-direction: column; + align-items: center; + height: 0; + transition: all 240ms cubic-bezier(0.0, 0.0, 0.2, 1); +} + +@keyframes openAnimation { + from { + opacity: 0; + transform: translateY(-120%); + } + to { + transform: translateY(0); + } +} + +@keyframes closeAnimation { + from { + transform: scale(1); + opacity: 1; + } + to { + transform: scale(0.9); + opacity: 0; + } +} + +.seahub-toast-container.entering, +.seahub-toast-container.entered { + animation: openAnimation 240ms cubic-bezier(0.175, 0.885, 0.320, 1.175) both; +} + +.seahub-toast-container.exiting { + animation: closeAnimation 120ms cubic-bezier(0.4, 0.0, 1, 1) both; +} + +.seahub-toast-alert-container { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + box-sizing: border-box; + border-radius: 3px; + box-shadow: rgba(67, 90, 111, 0.3) 0px 0px 1px, rgba(67, 90, 111, 0.47) 0px 8px 10px -4px; + padding: 10px 16px; + background-color: #fff; +} + +.seahub-toast-alert-container.success { + border-left: 3px solid rgb(71, 184, 129); + color: rgb(71, 184, 129); +} + +.seahub-toast-alert-container.warning { + border-left: 3px solid rgb(217, 130, 43); + color: rgb(217, 130, 43); +} + +.seahub-toast-alert-container.none { + border-left: 3px solid rgb(16, 112, 202); + color: rgb(16, 112, 202); +} + +.seahub-toast-alert-container.danger { + border-left: 3px solid rgb(236, 76, 71); + color: rgb(236, 76, 71); +} + +.seahub-toast-alert-container .toast-alert-icon { + margin-right: 10px; + width: 14px; + height: 20px; + line-height: 20px; +} + +.seahub-toast-alert-container .toast-text-title { + margin: 0; + font-weight: 600; + font-size: 14px; + color: #435a6f; +} + +.seahub-toast-alert-container .toast-text-child { + font-size: 14px; + color: #666; + margin: 0; +} + +.seahub-toast-alert-container .toast-close { + text-align: center; + cursor: pointer; + height: 24px; + width: 24px; + margin-left: 15px; + line-height: 22px; + font-weight: 700; + font-size: 20px; + color: #000; + opacity: 0.5; +} + +.seahub-toast-alert-container .toast-close:hover { + opacity: 1; +} diff --git a/frontend/src/components/toast/toaster.js b/frontend/src/components/toast/toaster.js index 1eed70bebf..49708e4ac9 100644 --- a/frontend/src/components/toast/toaster.js +++ b/frontend/src/components/toast/toaster.js @@ -1,9 +1,10 @@ import React from 'react'; -import ReactDom from 'react-dom'; +import ReactDOM from 'react-dom'; import ToastManager from './toastManager'; -const isBrowser = - typeof window !== 'undefined' && typeof window.document !== 'undefined'; +import './toaster.css'; + +const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; /** * The Toaster manages the interactionsb between @@ -17,7 +18,7 @@ export default class Toaster { container.setAttribute('data-evergreen-toaster-container', ''); document.body.appendChild(container); - ReactDom.render( + ReactDOM.render( { - return this.notifyHandler(title, { ...settings, intent: 'notify-in-progress' }); - }; - success = (title, settings = {}) => { return this.notifyHandler(title, { ...settings, intent: 'success' }); };