diff --git a/client/licenses.txt b/client/licenses.txt index dd30e85e7..30a972ca6 100644 --- a/client/licenses.txt +++ b/client/licenses.txt @@ -8872,13 +8872,13 @@ │ ├─ email: luis@luisrudge.net │ ├─ path: /Users/pfic/Documents/Development/bodyshop/client/node_modules/postcss-flexbugs-fixes │ └─ licenseFile: /Users/pfic/Documents/Development/bodyshop/client/node_modules/postcss-flexbugs-fixes/LICENSE -├─ postcss-focus-visible@4.0.0 +├─ postcss-focus-open@4.0.0 │ ├─ licenses: CC0-1.0 -│ ├─ repository: https://github.com/jonathantneal/postcss-focus-visible +│ ├─ repository: https://github.com/jonathantneal/postcss-focus-open │ ├─ publisher: Jonathan Neal │ ├─ email: jonathantneal@hotmail.com -│ ├─ path: /Users/pfic/Documents/Development/bodyshop/client/node_modules/postcss-focus-visible -│ └─ licenseFile: /Users/pfic/Documents/Development/bodyshop/client/node_modules/postcss-focus-visible/LICENSE.md +│ ├─ path: /Users/pfic/Documents/Development/bodyshop/client/node_modules/postcss-focus-open +│ └─ licenseFile: /Users/pfic/Documents/Development/bodyshop/client/node_modules/postcss-focus-open/LICENSE.md ├─ postcss-focus-within@3.0.0 │ ├─ licenses: CC0-1.0 │ ├─ repository: https://github.com/jonathantneal/postcss-focus-within diff --git a/client/package-lock.json b/client/package-lock.json index 2fa95fadb..5040547ae 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -16,8 +16,8 @@ "@fingerprintjs/fingerprintjs": "^4.2.1", "@jsreport/browser-client": "^3.1.0", "@reduxjs/toolkit": "^2.0.1", - "@sentry/react": "^7.92.0", - "@sentry/tracing": "^7.92.0", + "@sentry/react": "^7.93.0", + "@sentry/tracing": "^7.93.0", "@splitsoftware/splitio-react": "^1.10.2", "@tanem/react-nprogress": "^5.0.51", "antd": "^5.12.8", @@ -56,13 +56,13 @@ "react-grid-gallery": "^1.0.0", "react-grid-layout": "^1.3.4", "react-i18next": "^14.0.0", - "react-icons": "^4.7.1", + "react-icons": "^5.0.1", "react-image-lightbox": "^5.1.4", "react-intersection-observer": "^9.5.3", "react-number-format": "^5.1.4", - "react-redux": "^9.0.4", + "react-redux": "^9.1.0", "react-resizable": "^3.0.5", - "react-router-dom": "^6.21.1", + "react-router-dom": "^6.21.2", "react-scripts": "^5.0.1", "react-sticky": "^6.0.3", "react-sublime-video": "^0.2.5", @@ -74,7 +74,7 @@ "redux-state-sync": "^3.1.4", "reselect": "^5.1.0", "sass": "^1.69.7", - "socket.io-client": "^4.7.3", + "socket.io-client": "^4.7.4", "styled-components": "^6.1.8", "subscriptions-transport-ws": "^0.11.0", "terser-webpack-plugin": "^5.3.10", @@ -4402,9 +4402,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.1.tgz", - "integrity": "sha512-Qg4DMQsfPNAs88rb2xkdk03N3bjK4jgX5fR24eHCTR9q6PrhZQZ4UJBPzCHJkIpTRN1UKxx2DzjZmnC+7Lj0Ow==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.2.tgz", + "integrity": "sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==", "engines": { "node": ">=14.0.0" } @@ -4508,44 +4508,44 @@ "integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==" }, "node_modules/@sentry-internal/feedback": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.92.0.tgz", - "integrity": "sha512-/jEALRtVqboxB9kcK2tag8QCO6XANTlGBb9RV3oeGXJe0DDNJXRq6wVZbfgztXJRrfgx4XVDcNt1pRVoGGG++g==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.93.0.tgz", + "integrity": "sha512-4G7rMeQbYGfCHxEoFroABX+UREYc2BSbFqjLmLbIcWowSpgzcwweLLphWHKOciqK6f7DnNDK0jZzx3u7NrkWHw==", "dependencies": { - "@sentry/core": "7.92.0", - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry/core": "7.93.0", + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/feedback/node_modules/@sentry/core": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", - "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.93.0.tgz", + "integrity": "sha512-vZQSUiDn73n+yu2fEcH+Wpm4GbRmtxmnXnYCPgM6IjnXqkVm3awWAkzrheADblx3kmxrRiOlTXYHw9NTWs56fg==", "dependencies": { - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/feedback/node_modules/@sentry/types": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", - "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.93.0.tgz", + "integrity": "sha512-UnzUccNakhFRA/esWBWP+0v7cjNg+RilFBQC03Mv9OEMaZaS29zSbcOGtRzuFOXXLBdbr44BWADqpz3VW0XaNw==", "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/feedback/node_modules/@sentry/utils": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", - "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.93.0.tgz", + "integrity": "sha512-Iovj7tUnbgSkh/WrAaMrd5UuYjW7AzyzZlFDIUrwidsyIdUficjCG2OIxYzh76H6nYIx9SxewW0R54Q6XoB4uA==", "dependencies": { - "@sentry/types": "7.92.0" + "@sentry/types": "7.93.0" }, "engines": { "node": ">=8" @@ -4566,60 +4566,60 @@ } }, "node_modules/@sentry/browser": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.92.0.tgz", - "integrity": "sha512-loMr02/zQ38u8aQhYLtIBg0i5n3ps2e3GUXrt3CdsJQdkRYfa62gcrE7SzvoEpMVHTk7VOI4fWGht8cWw/1k3A==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.93.0.tgz", + "integrity": "sha512-MtLTcQ7y3rfk+aIvnnwCfSJvYhTJnIJi+Mf6y/ap6SKObdlsKMbQoJLlRViglGLq+nKxHLAvU0fONiCEmKfV6A==", "dependencies": { - "@sentry-internal/feedback": "7.92.0", - "@sentry-internal/tracing": "7.92.0", - "@sentry/core": "7.92.0", - "@sentry/replay": "7.92.0", - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry-internal/feedback": "7.93.0", + "@sentry-internal/tracing": "7.93.0", + "@sentry/core": "7.93.0", + "@sentry/replay": "7.93.0", + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser/node_modules/@sentry-internal/tracing": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz", - "integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.93.0.tgz", + "integrity": "sha512-DjuhmQNywPp+8fxC9dvhGrqgsUb6wI/HQp25lS2Re7VxL1swCasvpkg8EOYP4iBniVQ86QK0uITkOIRc5tdY1w==", "dependencies": { - "@sentry/core": "7.92.0", - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry/core": "7.93.0", + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser/node_modules/@sentry/core": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", - "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.93.0.tgz", + "integrity": "sha512-vZQSUiDn73n+yu2fEcH+Wpm4GbRmtxmnXnYCPgM6IjnXqkVm3awWAkzrheADblx3kmxrRiOlTXYHw9NTWs56fg==", "dependencies": { - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser/node_modules/@sentry/types": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", - "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.93.0.tgz", + "integrity": "sha512-UnzUccNakhFRA/esWBWP+0v7cjNg+RilFBQC03Mv9OEMaZaS29zSbcOGtRzuFOXXLBdbr44BWADqpz3VW0XaNw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/browser/node_modules/@sentry/utils": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", - "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.93.0.tgz", + "integrity": "sha512-Iovj7tUnbgSkh/WrAaMrd5UuYjW7AzyzZlFDIUrwidsyIdUficjCG2OIxYzh76H6nYIx9SxewW0R54Q6XoB4uA==", "dependencies": { - "@sentry/types": "7.92.0" + "@sentry/types": "7.93.0" }, "engines": { "node": ">=8" @@ -4817,13 +4817,14 @@ } }, "node_modules/@sentry/react": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.92.0.tgz", - "integrity": "sha512-lTvrLuvxtGEZbkW6NHru03K6eyixKyBliwiLwO+k37FK7Ha8Bwat2m77weyizWCdQ6DKlVazJNppkNeAlACIvQ==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.93.0.tgz", + "integrity": "sha512-B0bzziV1lEyN7xd0orUPyJdpoK6CtcyodmQkfY0WsHLm/1d9xi95M05lObHnsMWO1js6c9B9d9kO8RlKFz947A==", "dependencies": { - "@sentry/browser": "7.92.0", - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0", + "@sentry/browser": "7.93.0", + "@sentry/core": "7.93.0", + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -4833,133 +4834,145 @@ "react": "15.x || 16.x || 17.x || 18.x" } }, + "node_modules/@sentry/react/node_modules/@sentry/core": { + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.93.0.tgz", + "integrity": "sha512-vZQSUiDn73n+yu2fEcH+Wpm4GbRmtxmnXnYCPgM6IjnXqkVm3awWAkzrheADblx3kmxrRiOlTXYHw9NTWs56fg==", + "dependencies": { + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@sentry/react/node_modules/@sentry/types": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", - "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.93.0.tgz", + "integrity": "sha512-UnzUccNakhFRA/esWBWP+0v7cjNg+RilFBQC03Mv9OEMaZaS29zSbcOGtRzuFOXXLBdbr44BWADqpz3VW0XaNw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/react/node_modules/@sentry/utils": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", - "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.93.0.tgz", + "integrity": "sha512-Iovj7tUnbgSkh/WrAaMrd5UuYjW7AzyzZlFDIUrwidsyIdUficjCG2OIxYzh76H6nYIx9SxewW0R54Q6XoB4uA==", "dependencies": { - "@sentry/types": "7.92.0" + "@sentry/types": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.92.0.tgz", - "integrity": "sha512-G1t9Uvc9cR8VpNkElwvHIMGzykjIKikb10n0tfVd3e+rBPMCCjCPWOduwG6jZYxcvCjTpqmJh6NSLXxL/Mt4JA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.93.0.tgz", + "integrity": "sha512-dMlLU8v+OkUeGCrPvTu5NriH7BGj3el4rGHWWAYicfJ2QXqTTq50vfasQBP1JeVNcFqnf1y653TdEIvo4RH4tw==", "dependencies": { - "@sentry-internal/tracing": "7.92.0", - "@sentry/core": "7.92.0", - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry-internal/tracing": "7.93.0", + "@sentry/core": "7.93.0", + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/replay/node_modules/@sentry-internal/tracing": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz", - "integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.93.0.tgz", + "integrity": "sha512-DjuhmQNywPp+8fxC9dvhGrqgsUb6wI/HQp25lS2Re7VxL1swCasvpkg8EOYP4iBniVQ86QK0uITkOIRc5tdY1w==", "dependencies": { - "@sentry/core": "7.92.0", - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry/core": "7.93.0", + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay/node_modules/@sentry/core": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", - "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.93.0.tgz", + "integrity": "sha512-vZQSUiDn73n+yu2fEcH+Wpm4GbRmtxmnXnYCPgM6IjnXqkVm3awWAkzrheADblx3kmxrRiOlTXYHw9NTWs56fg==", "dependencies": { - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay/node_modules/@sentry/types": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", - "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.93.0.tgz", + "integrity": "sha512-UnzUccNakhFRA/esWBWP+0v7cjNg+RilFBQC03Mv9OEMaZaS29zSbcOGtRzuFOXXLBdbr44BWADqpz3VW0XaNw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/replay/node_modules/@sentry/utils": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", - "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.93.0.tgz", + "integrity": "sha512-Iovj7tUnbgSkh/WrAaMrd5UuYjW7AzyzZlFDIUrwidsyIdUficjCG2OIxYzh76H6nYIx9SxewW0R54Q6XoB4uA==", "dependencies": { - "@sentry/types": "7.92.0" + "@sentry/types": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.92.0.tgz", - "integrity": "sha512-1+TFFPVEdax4dNi68gin6MENiyGe9mOuNXfjulrP5eCzUEByus5HAxeDI/LLQ1hArfn048AzwSwKUsS2fO5sbg==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.93.0.tgz", + "integrity": "sha512-n4XbAQ7e098Jzv4ZvpXAsFgM+XFfjhKci18r7s3UfDMnrB4FTCwhHZoeiygO8PZhB944mEFbNXNFhHkb8nTDbA==", "dependencies": { - "@sentry-internal/tracing": "7.92.0" + "@sentry-internal/tracing": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing/node_modules/@sentry-internal/tracing": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz", - "integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.93.0.tgz", + "integrity": "sha512-DjuhmQNywPp+8fxC9dvhGrqgsUb6wI/HQp25lS2Re7VxL1swCasvpkg8EOYP4iBniVQ86QK0uITkOIRc5tdY1w==", "dependencies": { - "@sentry/core": "7.92.0", - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry/core": "7.93.0", + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing/node_modules/@sentry/core": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", - "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.93.0.tgz", + "integrity": "sha512-vZQSUiDn73n+yu2fEcH+Wpm4GbRmtxmnXnYCPgM6IjnXqkVm3awWAkzrheADblx3kmxrRiOlTXYHw9NTWs56fg==", "dependencies": { - "@sentry/types": "7.92.0", - "@sentry/utils": "7.92.0" + "@sentry/types": "7.93.0", + "@sentry/utils": "7.93.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing/node_modules/@sentry/types": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", - "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.93.0.tgz", + "integrity": "sha512-UnzUccNakhFRA/esWBWP+0v7cjNg+RilFBQC03Mv9OEMaZaS29zSbcOGtRzuFOXXLBdbr44BWADqpz3VW0XaNw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/tracing/node_modules/@sentry/utils": { - "version": "7.92.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", - "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", + "version": "7.93.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.93.0.tgz", + "integrity": "sha512-Iovj7tUnbgSkh/WrAaMrd5UuYjW7AzyzZlFDIUrwidsyIdUficjCG2OIxYzh76H6nYIx9SxewW0R54Q6XoB4uA==", "dependencies": { - "@sentry/types": "7.92.0" + "@sentry/types": "7.93.0" }, "engines": { "node": ">=8" @@ -18327,9 +18340,9 @@ } }, "node_modules/react-icons": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz", - "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz", + "integrity": "sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==", "peerDependencies": { "react": "*" } @@ -18416,9 +18429,9 @@ } }, "node_modules/react-redux": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.0.4.tgz", - "integrity": "sha512-9J1xh8sWO0vYq2sCxK2My/QO7MzUMRi3rpiILP/+tDr8krBHixC6JMM17fMK88+Oh3e4Ae6/sHIhNBgkUivwFA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.0.tgz", + "integrity": "sha512-6qoDzIO+gbrza8h3hjMA9aq4nwVFCKFtY2iLxCtVT38Swyy2C/dJCGBXHeHLtx6qlg/8qzc2MrhOeduf5K32wQ==", "dependencies": { "@types/use-sync-external-store": "^0.0.3", "use-sync-external-store": "^1.0.0" @@ -18462,11 +18475,11 @@ } }, "node_modules/react-router": { - "version": "6.21.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.1.tgz", - "integrity": "sha512-W0l13YlMTm1YrpVIOpjCADJqEUpz1vm+CMo47RuFX4Ftegwm6KOYsL5G3eiE52jnJpKvzm6uB/vTKTPKM8dmkA==", + "version": "6.21.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.21.2.tgz", + "integrity": "sha512-jJcgiwDsnaHIeC+IN7atO0XiSRCrOsQAHHbChtJxmgqG2IaYQXSnhqGb5vk2CU/wBQA12Zt+TkbuJjIn65gzbA==", "dependencies": { - "@remix-run/router": "1.14.1" + "@remix-run/router": "1.14.2" }, "engines": { "node": ">=14.0.0" @@ -18476,12 +18489,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.21.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.1.tgz", - "integrity": "sha512-QCNrtjtDPwHDO+AO21MJd7yIcr41UetYt5jzaB9Y1UYaPTCnVuJq6S748g1dE11OQlCFIQg+RtAA1SEZIyiBeA==", + "version": "6.21.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.21.2.tgz", + "integrity": "sha512-tE13UukgUOh2/sqYr6jPzZTzmzc70aGRP4pAjG2if0IP3aUT+sBtAKUJh0qMh0zylJHGLmzS+XWVaON4UklHeg==", "dependencies": { - "@remix-run/router": "1.14.1", - "react-router": "6.21.1" + "@remix-run/router": "1.14.2", + "react-router": "6.21.2" }, "engines": { "node": ">=14.0.0" @@ -19793,9 +19806,9 @@ } }, "node_modules/socket.io-client": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.3.tgz", - "integrity": "sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", + "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", diff --git a/client/package.json b/client/package.json index 4d5cf59e8..f50df71ea 100644 --- a/client/package.json +++ b/client/package.json @@ -12,8 +12,8 @@ "@fingerprintjs/fingerprintjs": "^4.2.1", "@jsreport/browser-client": "^3.1.0", "@reduxjs/toolkit": "^2.0.1", - "@sentry/react": "^7.92.0", - "@sentry/tracing": "^7.92.0", + "@sentry/react": "^7.93.0", + "@sentry/tracing": "^7.93.0", "@splitsoftware/splitio-react": "^1.10.2", "@tanem/react-nprogress": "^5.0.51", "antd": "^5.12.8", @@ -52,13 +52,13 @@ "react-grid-gallery": "^1.0.0", "react-grid-layout": "^1.3.4", "react-i18next": "^14.0.0", - "react-icons": "^4.7.1", + "react-icons": "^5.0.1", "react-image-lightbox": "^5.1.4", "react-intersection-observer": "^9.5.3", "react-number-format": "^5.1.4", - "react-redux": "^9.0.4", + "react-redux": "^9.1.0", "react-resizable": "^3.0.5", - "react-router-dom": "^6.21.1", + "react-router-dom": "^6.21.2", "react-scripts": "^5.0.1", "react-sticky": "^6.0.3", "react-sublime-video": "^0.2.5", @@ -70,7 +70,7 @@ "redux-state-sync": "^3.1.4", "reselect": "^5.1.0", "sass": "^1.69.7", - "socket.io-client": "^4.7.3", + "socket.io-client": "^4.7.4", "styled-components": "^6.1.8", "subscriptions-transport-ws": "^0.11.0", "terser-webpack-plugin": "^5.3.10", diff --git a/client/public/3rdparty-api.txt b/client/public/3rdparty-api.txt index 9d76ffc9c..f5acd9569 100644 --- a/client/public/3rdparty-api.txt +++ b/client/public/3rdparty-api.txt @@ -190,7 +190,7 @@ This package contains the following license and notice below: # @firebase/logger This package serves as the base of all logging in the JS SDK. Any logging that -is intended to be visible to Firebase end developers should go through this +is intended to be open to Firebase end developers should go through this module. ## Basic Usage @@ -9375,7 +9375,7 @@ parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible +to the extent that it includes a convenient and prominently open feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the diff --git a/client/public/3rdparty-app.txt b/client/public/3rdparty-app.txt index 0e6120c50..8fe9b97b2 100644 --- a/client/public/3rdparty-app.txt +++ b/client/public/3rdparty-app.txt @@ -1029,7 +1029,7 @@ The following NPM packages may be included in this product: - postcss-dir-pseudo-class@5.0.0 - postcss-double-position-gradients@1.0.0 - postcss-env-function@2.0.2 - - postcss-focus-visible@4.0.0 + - postcss-focus-open@4.0.0 - postcss-focus-within@3.0.0 - postcss-gap-properties@2.0.0 - postcss-image-set-function@3.0.1 @@ -1699,7 +1699,7 @@ This package contains the following license and notice below: # @firebase/logger This package serves as the base of all logging in the JS SDK. Any logging that -is intended to be visible to Firebase end developers should go through this +is intended to be open to Firebase end developers should go through this module. ## Basic Usage @@ -24029,7 +24029,7 @@ parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible +to the extent that it includes a convenient and prominently open feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the diff --git a/client/src/App/App.jsx b/client/src/App/App.jsx index faa8cc211..4f8695240 100644 --- a/client/src/App/App.jsx +++ b/client/src/App/App.jsx @@ -1,7 +1,7 @@ import {useSplitClient} from "@splitsoftware/splitio-react"; import {Button, Result} from "antd"; import LogRocket from "logrocket"; -import React, {lazy, Suspense, useEffect} from "react"; +import React, {lazy, Suspense, useEffect, useState} from "react"; import {useTranslation} from "react-i18next"; import {connect} from "react-redux"; import {Route, Routes} from "react-router-dom"; @@ -19,6 +19,7 @@ import {checkUserSession} from "../redux/user/user.actions"; import {selectBodyshop, selectCurrentUser,} from "../redux/user/user.selectors"; import PrivateRoute from "../components/PrivateRoute"; import "./App.styles.scss"; +import handleBeta from "../utils/betaHandler"; const ResetPassword = lazy(() => import("../pages/reset-password/reset-password.component") @@ -40,14 +41,16 @@ const mapDispatchToProps = (dispatch) => ({ setOnline: (isOnline) => dispatch(setOnline(isOnline)), }); -export function App({ - bodyshop, - checkUserSession, - currentUser, - online, - setOnline, - }) { +export function App({bodyshop, checkUserSession, currentUser, online, setOnline}) { + const client = useSplitClient().client; + const [listenersAdded, setListenersAdded] = useState(false) + const {t} = useTranslation(); + + // Handle The Beta Switch. + useEffect(() => { + handleBeta(); + }, []) useEffect(() => { if (!navigator.onLine) { @@ -60,21 +63,37 @@ export function App({ //const b = Grid.useBreakpoint(); // console.log("Breakpoints:", b); - const {t} = useTranslation(); + // Associate event listeners, memoize to prevent multiple listeners being added + useEffect(() => { + const offlineListener = (e) => { + setOnline(false); + } - window.addEventListener("offline", function (e) { - setOnline(false); - }); + const onlineListener = (e) => { + setOnline(true); + } - window.addEventListener("online", function (e) { - setOnline(true); - }); + if (!listenersAdded) { + console.log('Added events for offline and online'); + window.addEventListener("offline", offlineListener); + window.addEventListener("online", onlineListener); + setListenersAdded(true); + } + + return () => { + window.removeEventListener("offline", offlineListener); + window.removeEventListener("online", onlineListener); + } + }, [setOnline, listenersAdded]); useEffect(() => { if (currentUser.authorized && bodyshop) { client.setAttribute("imexshopid", bodyshop.imexshopid); - if (client.getTreatment("LogRocket_Tracking") === "on") { + if ( + client.getTreatment("LogRocket_Tracking") === "on" || + window.location.hostname === 'beta.imex.online' + ) { console.log("LR Start"); LogRocket.init("gvfvfw/bodyshopapp"); } diff --git a/client/src/App/App.styles.scss b/client/src/App/App.styles.scss index 50e656895..736093151 100644 --- a/client/src/App/App.styles.scss +++ b/client/src/App/App.styles.scss @@ -1,5 +1,8 @@ //Global Styles. @import "react-big-calendar/lib/sass/styles"; +.ant-menu-item-divider { + border-bottom: 1px solid #74695c !important; +} .imex-table-header { display: flex; diff --git a/client/src/components/bill-detail-edit/bill-detail-edit-component.jsx b/client/src/components/bill-detail-edit/bill-detail-edit-component.jsx index 36b1111f1..c4a243ca8 100644 --- a/client/src/components/bill-detail-edit/bill-detail-edit-component.jsx +++ b/client/src/components/bill-detail-edit/bill-detail-edit-component.jsx @@ -48,7 +48,7 @@ export function BillDetailEditcontainer({setPartsOrderContext, insertAuditTrail, const {t} = useTranslation(); const [form] = Form.useForm(); - const [visible, setVisible] = useState(false); + const [open, setOpen] = useState(false); const [updateLoading, setUpdateLoading] = useState(false); const [update_bill] = useMutation(UPDATE_BILL); const [insertBillLine] = useMutation(INSERT_NEW_BILL_LINES); @@ -71,7 +71,7 @@ export function BillDetailEditcontainer({setPartsOrderContext, insertAuditTrail, form.getFieldValue("billlines").filter((b) => b.deductedfromlbr).length > 0 ) - setVisible(true); + setOpen(true); else { form.submit(); } @@ -154,7 +154,7 @@ export function BillDetailEditcontainer({setPartsOrderContext, insertAuditTrail, await refetch(); form.setFieldsValue(transformData(data)); form.resetFields(); - setVisible(false); + setOpen(false); setUpdateLoading(false); }; @@ -178,9 +178,9 @@ export function BillDetailEditcontainer({setPartsOrderContext, insertAuditTrail, form.submit()} - onCancel={() => setVisible(false)} + onCancel={() => setOpen(false)} okButtonProps={{ loading: updateLoading }} title={t("bills.labels.editadjwarning")} > diff --git a/client/src/components/bill-detail-edit/bill-detail-edit-return.component.jsx b/client/src/components/bill-detail-edit/bill-detail-edit-return.component.jsx index 7c7281509..cc02dba56 100644 --- a/client/src/components/bill-detail-edit/bill-detail-edit-return.component.jsx +++ b/client/src/components/bill-detail-edit/bill-detail-edit-return.component.jsx @@ -36,7 +36,7 @@ export function BillDetailEditReturn({ const history = useNavigate(); const { t } = useTranslation(); const [form] = Form.useForm(); - const [visible, setVisible] = useState(false); + const [open, setOpen] = useState(false); const handleFinish = ({ billlines }) => { const selectedLines = billlines.filter((l) => l.selected).map((l) => l.id); @@ -68,17 +68,17 @@ export function BillDetailEditReturn({ delete search.billid; history({ search: queryString.stringify(search) }); - setVisible(false); + setOpen(false); }; useEffect(() => { - if (visible === false) form.resetFields(); - }, [visible, form]); + if (open === false) form.resetFields(); + }, [open, form]); return ( <> setVisible(false)} + open={open} + onCancel={() => setOpen(false)} destroyOnClose title={t("bills.actions.return")} onOk={() => form.submit()} @@ -175,7 +175,7 @@ export function BillDetailEditReturn({ - - + + + + ), }); } @@ -81,16 +71,16 @@ export function ChatAffixContainer({ bodyshop, chatVisible }) { payload: (payload && payload.data && payload.data.data) || payload.data, }); } - let stopMessageListenr, channel; + let stopMessageListener, channel; try { - stopMessageListenr = onMessage(messaging, handleMessage); + stopMessageListener = onMessage(messaging, handleMessage); channel = new BroadcastChannel("imex-sw-messages"); channel.addEventListener("message", handleMessage); } catch (error) { console.log("Unable to set event listeners."); } return () => { - stopMessageListenr && stopMessageListenr(); + stopMessageListener && stopMessageListener(); channel && channel.removeEventListener("message", handleMessage); }; }, [client]); @@ -98,9 +88,10 @@ export function ChatAffixContainer({ bodyshop, chatVisible }) { if (!bodyshop || !bodyshop.messagingservicesid) return <>; return ( -
- {bodyshop && bodyshop.messagingservicesid ? : null} -
+
+ {bodyshop && bodyshop.messagingservicesid ? : null} +
); } -export default connect(mapStateToProps, null)(ChatAffixContainer); + +export default ChatAffixContainer; \ No newline at end of file diff --git a/client/src/components/chat-media-selector/chat-media-selector.component.jsx b/client/src/components/chat-media-selector/chat-media-selector.component.jsx index 5306aebb7..159b20de6 100644 --- a/client/src/components/chat-media-selector/chat-media-selector.component.jsx +++ b/client/src/components/chat-media-selector/chat-media-selector.component.jsx @@ -27,7 +27,7 @@ export function ChatMediaSelector({ conversation, }) { const { t } = useTranslation(); - const [visible, setVisible] = useState(false); + const [open, setOpen] = useState(false); const { loading, error, data } = useQuery(GET_DOCUMENTS_BY_JOB, { fetchPolicy: "network-only", @@ -39,13 +39,13 @@ export function ChatMediaSelector({ }, skip: - !visible || + !open || !conversation.job_conversations || conversation.job_conversations.length === 0, }); - const handleVisibleChange = (visible) => { - setVisible(visible); + const handleVisibleChange = (change) => { + setOpen(change); }; useEffect(() => { @@ -65,7 +65,7 @@ export function ChatMediaSelector({ externalMediaState={[selectedMedia, setSelectedMedia]} /> )} - {bodyshop.uselocalmediaserver && visible && ( + {bodyshop.uselocalmediaserver && open && ( s.isSelected).length}> diff --git a/client/src/components/chat-tag-ro/chat-tag-ro.component.jsx b/client/src/components/chat-tag-ro/chat-tag-ro.component.jsx index b6d33962f..d56170125 100644 --- a/client/src/components/chat-tag-ro/chat-tag-ro.component.jsx +++ b/client/src/components/chat-tag-ro/chat-tag-ro.component.jsx @@ -9,12 +9,12 @@ export default function ChatTagRoComponent({ loading, handleSearch, handleInsertTag, - setVisible, + setOpen, }) { const { t } = useTranslation(); return ( - +
({ - label: lsr, - value: lsr, - }))} - /> - - - - } - > - {t("menus.jobsactions.cancelallappointments")} - - ) + label: t("menus.jobsactions.cancelallappointments") }, { + key: 'intake', disabled: !!job.intakechecklist || !jobInPreProduction || !job.converted || jobRO, label: !!job.intakechecklist || !jobInPreProduction || !job.converted || jobRO ? ( t("jobs.actions.intake") @@ -658,6 +644,7 @@ export function JobsDetailHeaderActions({ ) }, { + key: 'deliver', disabled: !jobInProduction || jobRO, label: !jobInProduction ? ( t("jobs.actions.deliver") @@ -668,6 +655,7 @@ export function JobsDetailHeaderActions({ ) }, { + key: 'checklist', disabled: !job.converted, label: {t("jobs.actions.viewchecklist")} @@ -771,6 +759,7 @@ export function JobsDetailHeaderActions({ label: t("menus.jobsactions.duplicate"), children: [ { + key: 'duplicate', label: }, { + key: 'duplicatenolines', label: e.stopPropagation()} onConfirm={handleDeleteJob} - getPopupContainer={(trigger) => trigger.parentNode} > {t("menus.jobsactions.deletejob")} @@ -965,6 +955,7 @@ export function JobsDetailHeaderActions({ menuItems.push( { + key: 'manualevent', onClick: (e) => { setVisibility(true); }, @@ -974,6 +965,7 @@ export function JobsDetailHeaderActions({ if (!jobRO && job.converted) { menuItems.push({ + key: 'voidjob', label: e.stopPropagation()} onConfirm={handleVoidJob} - getPopupContainer={(trigger) => trigger.parentNode} > {t("menus.jobsactions.void")} @@ -996,6 +987,47 @@ export function JobsDetailHeaderActions({ return ( <> + + {t("general.actions.cancel")} + , + , + ]} + > +
{ + console.log(s); + handleLostSaleFinish(s); + }} + > + +