Merged in feature/IO-3499-React-19 (pull request #2854)
Feature/IO-3499 React 19
This commit is contained in:
589
client/package-lock.json
generated
589
client/package-lock.json
generated
@@ -11,7 +11,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@amplitude/analytics-browser": "^2.33.4",
|
"@amplitude/analytics-browser": "^2.33.4",
|
||||||
"@ant-design/pro-layout": "^7.22.6",
|
"@ant-design/pro-layout": "^7.22.6",
|
||||||
"@apollo/client": "^4.1.0",
|
"@apollo/client": "^4.1.1",
|
||||||
"@emotion/is-prop-valid": "^1.4.0",
|
"@emotion/is-prop-valid": "^1.4.0",
|
||||||
"@fingerprintjs/fingerprintjs": "^5.0.1",
|
"@fingerprintjs/fingerprintjs": "^5.0.1",
|
||||||
"@firebase/analytics": "^0.10.19",
|
"@firebase/analytics": "^0.10.19",
|
||||||
@@ -22,11 +22,11 @@
|
|||||||
"@jsreport/browser-client": "^3.1.0",
|
"@jsreport/browser-client": "^3.1.0",
|
||||||
"@reduxjs/toolkit": "^2.11.2",
|
"@reduxjs/toolkit": "^2.11.2",
|
||||||
"@sentry/cli": "^3.1.0",
|
"@sentry/cli": "^3.1.0",
|
||||||
"@sentry/react": "^10.34.0",
|
"@sentry/react": "^10.35.0",
|
||||||
"@sentry/vite-plugin": "^4.6.2",
|
"@sentry/vite-plugin": "^4.7.0",
|
||||||
"@splitsoftware/splitio-react": "^2.6.1",
|
"@splitsoftware/splitio-react": "^2.6.1",
|
||||||
"@tanem/react-nprogress": "^5.0.56",
|
"@tanem/react-nprogress": "^5.0.56",
|
||||||
"antd": "^6.2.0",
|
"antd": "^6.2.1",
|
||||||
"apollo-link-logger": "^3.0.0",
|
"apollo-link-logger": "^3.0.0",
|
||||||
"autosize": "^6.0.1",
|
"autosize": "^6.0.1",
|
||||||
"axios": "^1.13.2",
|
"axios": "^1.13.2",
|
||||||
@@ -40,18 +40,18 @@
|
|||||||
"exifr": "^7.1.3",
|
"exifr": "^7.1.3",
|
||||||
"graphql": "^16.12.0",
|
"graphql": "^16.12.0",
|
||||||
"graphql-ws": "^6.0.6",
|
"graphql-ws": "^6.0.6",
|
||||||
"i18next": "^25.7.4",
|
"i18next": "^25.8.0",
|
||||||
"i18next-browser-languagedetector": "^8.2.0",
|
"i18next-browser-languagedetector": "^8.2.0",
|
||||||
"immutability-helper": "^3.1.1",
|
"immutability-helper": "^3.1.1",
|
||||||
"libphonenumber-js": "^1.12.34",
|
"libphonenumber-js": "^1.12.34",
|
||||||
"lightningcss": "^1.30.2",
|
"lightningcss": "^1.31.0",
|
||||||
"logrocket": "^11.0.0",
|
"logrocket": "^11.0.0",
|
||||||
"markerjs2": "^2.32.7",
|
"markerjs2": "^2.32.7",
|
||||||
"memoize-one": "^6.0.0",
|
"memoize-one": "^6.0.0",
|
||||||
"normalize-url": "^8.1.1",
|
"normalize-url": "^8.1.1",
|
||||||
"object-hash": "^3.0.0",
|
"object-hash": "^3.0.0",
|
||||||
"phone": "^3.1.69",
|
"phone": "^3.1.69",
|
||||||
"posthog-js": "^1.325.0",
|
"posthog-js": "^1.331.2",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
"query-string": "^9.3.1",
|
"query-string": "^9.3.1",
|
||||||
"raf-schd": "^4.0.3",
|
"raf-schd": "^4.0.3",
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
"@playwright/test": "^1.57.0",
|
"@playwright/test": "^1.57.0",
|
||||||
"@testing-library/dom": "^10.4.1",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/jest-dom": "^6.9.1",
|
"@testing-library/jest-dom": "^6.9.1",
|
||||||
"@testing-library/react": "^16.3.1",
|
"@testing-library/react": "^16.3.2",
|
||||||
"@vitejs/plugin-react": "^5.1.2",
|
"@vitejs/plugin-react": "^5.1.2",
|
||||||
"babel-plugin-react-compiler": "^1.0.0",
|
"babel-plugin-react-compiler": "^1.0.0",
|
||||||
"browserslist": "^4.28.1",
|
"browserslist": "^4.28.1",
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
"eslint-plugin-react-compiler": "^19.1.0-rc.2",
|
"eslint-plugin-react-compiler": "^19.1.0-rc.2",
|
||||||
"globals": "^17.0.0",
|
"globals": "^17.0.0",
|
||||||
"jsdom": "^27.4.0",
|
"jsdom": "^27.4.0",
|
||||||
"memfs": "^4.52.0",
|
"memfs": "^4.56.4",
|
||||||
"os-browserify": "^0.3.0",
|
"os-browserify": "^0.3.0",
|
||||||
"playwright": "^1.57.0",
|
"playwright": "^1.57.0",
|
||||||
"react-error-overlay": "^6.1.0",
|
"react-error-overlay": "^6.1.0",
|
||||||
@@ -540,9 +540,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@apollo/client": {
|
"node_modules/@apollo/client": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/@apollo/client/-/client-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@apollo/client/-/client-4.1.1.tgz",
|
||||||
"integrity": "sha512-N/nZXGNBMoHnshNaHXxHZoC42BcIjRqD4XgpmNBPhueoWIbp17VIJe/sGysFNQo1w7DVD78K6gVsNMO87nfgRQ==",
|
"integrity": "sha512-EizMzR+qfn3kRZ7dy9LxEI2omkyaylWNbBy3Sce8QBmeQP+sOlmYqx2uu5aDFk+uGdrf/QtzHLOI6hUPGfm34A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"dist",
|
"dist",
|
||||||
@@ -3848,6 +3848,298 @@
|
|||||||
"tslib": "2"
|
"tslib": "2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-core": {
|
||||||
|
"version": "4.56.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.4.tgz",
|
||||||
|
"integrity": "sha512-mgiAa7w0N0mlr7G3PUY/iRSYuJwyZmHBt+y7D9veiXfAqsIhEi9+FCu47tU+y/3KPqaTNJMsfgAGwUnLPnRdqA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/fs-node-builtins": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-utils": "4.56.4",
|
||||||
|
"thingies": "^2.5.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-fsa": {
|
||||||
|
"version": "4.56.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.4.tgz",
|
||||||
|
"integrity": "sha512-D6tHSr8xMiZnV9pQcX0ysoEg1kTsTFK6fRV+TX+1uFcEiNKJR7hooGBq8iKnkZCXRxY8S4nZJ+rErpVF1XJ4vw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/fs-core": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-builtins": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-utils": "4.56.4",
|
||||||
|
"thingies": "^2.5.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-node": {
|
||||||
|
"version": "4.56.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.4.tgz",
|
||||||
|
"integrity": "sha512-4G7KBypcWy2BGPnuDCmUQWHasbNZnEqcb3DLODuH22J8fre7YK8MiyciIohkUTFMqR9qem84LK22T1FmUwiTSQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/fs-core": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-builtins": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-utils": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-print": "4.56.4",
|
||||||
|
"glob-to-regex.js": "^1.0.0",
|
||||||
|
"thingies": "^2.5.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-node-builtins": {
|
||||||
|
"version": "4.56.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.4.tgz",
|
||||||
|
"integrity": "sha512-/HMj267Ygg/fa3kHuZL+L7rVXvZ7HT2Bm7d8CpKs6l7QpT4mzTnN4f2/E0u+LsrrJVbT+R34/nsBr2dIZSYIgg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-node-to-fsa": {
|
||||||
|
"version": "4.56.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.4.tgz",
|
||||||
|
"integrity": "sha512-Wewg2JlMkFpUt2Z+RrhdxLrbG6o4XAZB9UdGbpcQS+acvwytmhEjUCCodD3kqY5wPSNpnIbD614VeTA/5jPzvg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/fs-fsa": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-builtins": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-utils": "4.56.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-node-utils": {
|
||||||
|
"version": "4.56.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.4.tgz",
|
||||||
|
"integrity": "sha512-7yvPBX+YUPvoljJ5ELmHrK7sLYzEVdLnILoNXLtsztN4Ag8UbS7DteWRiW3BFAUIvI4kDBJ8OymdxwLLCkX+AQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/fs-node-builtins": "4.56.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-print": {
|
||||||
|
"version": "4.56.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.4.tgz",
|
||||||
|
"integrity": "sha512-GtTDri9Ot1l7XPe3ft+ViTqxFOqtKcM4RLyXEXWDvQEoqgmU/6bCNNjfSze9VlpfC8KfuUYAixuDLD1quzHdow==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/fs-node-utils": "4.56.4",
|
||||||
|
"tree-dump": "^1.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-snapshot": {
|
||||||
|
"version": "4.56.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.4.tgz",
|
||||||
|
"integrity": "sha512-qQxl+GVp9gzT21/Ot8qa+pcNurpfTL/ruMODYmshpcTLXy6x06aP4/xdhBOJpBclhqbnQcMTVDCny98CtGvyzQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/buffers": "^17.65.0",
|
||||||
|
"@jsonjoy.com/fs-node-utils": "4.56.4",
|
||||||
|
"@jsonjoy.com/json-pack": "^17.65.0",
|
||||||
|
"@jsonjoy.com/util": "^17.65.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": {
|
||||||
|
"version": "17.65.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.65.0.tgz",
|
||||||
|
"integrity": "sha512-Xrh7Fm/M0QAYpekSgmskdZYnFdSGnsxJ/tHaolA4bNwWdG9i65S8m83Meh7FOxyJyQAdo4d4J97NOomBLEfkDQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/buffers": {
|
||||||
|
"version": "17.65.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.65.0.tgz",
|
||||||
|
"integrity": "sha512-eBrIXd0/Ld3p9lpDDlMaMn6IEfWqtHMD+z61u0JrIiPzsV1r7m6xDZFRxJyvIFTEO+SWdYF9EiQbXZGd8BzPfA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": {
|
||||||
|
"version": "17.65.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.65.0.tgz",
|
||||||
|
"integrity": "sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": {
|
||||||
|
"version": "17.65.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.65.0.tgz",
|
||||||
|
"integrity": "sha512-e0SG/6qUCnVhHa0rjDJHgnXnbsacooHVqQHxspjvlYQSkHm+66wkHw6Gql+3u/WxI/b1VsOdUi0M+fOtkgKGdQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/base64": "17.65.0",
|
||||||
|
"@jsonjoy.com/buffers": "17.65.0",
|
||||||
|
"@jsonjoy.com/codegen": "17.65.0",
|
||||||
|
"@jsonjoy.com/json-pointer": "17.65.0",
|
||||||
|
"@jsonjoy.com/util": "17.65.0",
|
||||||
|
"hyperdyperid": "^1.2.0",
|
||||||
|
"thingies": "^2.5.0",
|
||||||
|
"tree-dump": "^1.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": {
|
||||||
|
"version": "17.65.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.65.0.tgz",
|
||||||
|
"integrity": "sha512-uhTe+XhlIZpWOxgPcnO+iSCDgKKBpwkDVTyYiXX9VayGV8HSFVJM67M6pUE71zdnXF1W0Da21AvnhlmdwYPpow==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/util": "17.65.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": {
|
||||||
|
"version": "17.65.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.65.0.tgz",
|
||||||
|
"integrity": "sha512-cWiEHZccQORf96q2y6zU3wDeIVPeidmGqd9cNKJRYoVHTV0S1eHPy5JTbHpMnGfDvtvujQwQozOqgO9ABu6h0w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/buffers": "17.65.0",
|
||||||
|
"@jsonjoy.com/codegen": "17.65.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@jsonjoy.com/json-pack": {
|
"node_modules/@jsonjoy.com/json-pack": {
|
||||||
"version": "1.11.0",
|
"version": "1.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz",
|
||||||
@@ -4555,18 +4847,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@posthog/core": {
|
"node_modules/@posthog/core": {
|
||||||
"version": "1.9.1",
|
"version": "1.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.12.0.tgz",
|
||||||
"integrity": "sha512-kRb1ch2dhQjsAapZmu6V66551IF2LnCbc1rnrQqnR7ArooVyJN9KOPXre16AJ3ObJz2eTfuP7x25BMyS2Y5Exw==",
|
"integrity": "sha512-slDU/sl+kY2L48x6vIMQfa5kYM6eYCgPI9HV19fjhYyj5xRAVN6bGo+8DjrAjOnoN8xchc7ARmkHDYyxb1z1YA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cross-spawn": "^7.0.6"
|
"cross-spawn": "^7.0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@posthog/types": {
|
"node_modules/@posthog/types": {
|
||||||
"version": "1.325.0",
|
"version": "1.331.2",
|
||||||
"resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.325.0.tgz",
|
"resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.331.2.tgz",
|
||||||
"integrity": "sha512-cBOZvVwpL8VHnNmkOVNxVsbwuf0/Fbxl32SjveQGapvkDojzFbpuj9wQPzrzF/wtCukkPjlPEDKAG/f1c8oPVQ==",
|
"integrity": "sha512-Bozinp+5MWLuwy7M266sOCx4yBAB3nUVquF9YB0JLazB15+CmHI4r3VdQRAFvNuAthCR5FFJY/X65GEyEhvI6w==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@protobufjs/aspromise": {
|
"node_modules/@protobufjs/aspromise": {
|
||||||
@@ -5246,9 +5538,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rc-component/resize-observer": {
|
"node_modules/@rc-component/resize-observer": {
|
||||||
"version": "1.0.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/@rc-component/resize-observer/-/resize-observer-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rc-component/resize-observer/-/resize-observer-1.1.1.tgz",
|
||||||
"integrity": "sha512-r+w+Mz1EiueGk1IgjB3ptNXLYSLZ5vnEfKHH+gfgj7JMupftyzvUUl3fRcMZe5uMM04x0n8+G2o/c6nlO2+Wag==",
|
"integrity": "sha512-NfXXMmiR+SmUuKE1NwJESzEUYUFWIDUn2uXpxCTOLwiRUUakd62DRNFjRJArgzyFW8S5rsL4aX5XlyIXyC/vRA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rc-component/util": "^1.2.0"
|
"@rc-component/util": "^1.2.0"
|
||||||
@@ -5577,14 +5869,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rc-component/trigger": {
|
"node_modules/@rc-component/trigger": {
|
||||||
"version": "3.8.2",
|
"version": "3.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-3.8.2.tgz",
|
"resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-3.9.0.tgz",
|
||||||
"integrity": "sha512-I6idYAk8YY3Ly6v5hB7ONqxfdTYTcVNUmV1ZjtSsGH6N/k5tss9+OAtusr+7zdlIcD7TwnlsoB5etfB14ORtMw==",
|
"integrity": "sha512-X8btpwfrT27AgrZVOz4swclhEHTZcqaHeQMXXBgveagOiakTa36uObXbdwerXffgV8G9dH1fAAE0DHtVQs8EHg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rc-component/motion": "^1.1.4",
|
"@rc-component/motion": "^1.1.4",
|
||||||
"@rc-component/portal": "^2.2.0",
|
"@rc-component/portal": "^2.2.0",
|
||||||
"@rc-component/resize-observer": "^1.0.0",
|
"@rc-component/resize-observer": "^1.1.1",
|
||||||
"@rc-component/util": "^1.2.1",
|
"@rc-component/util": "^1.2.1",
|
||||||
"clsx": "^2.1.1"
|
"clsx": "^2.1.1"
|
||||||
},
|
},
|
||||||
@@ -6333,88 +6625,88 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/browser-utils": {
|
"node_modules/@sentry-internal/browser-utils": {
|
||||||
"version": "10.34.0",
|
"version": "10.35.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.34.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.35.0.tgz",
|
||||||
"integrity": "sha512-0YNr60rGHyedmwkO0lbDBjNx2KAmT3kWamjaqu7Aw+jsESoPLgt+fzaTVvUBvkftBDui2PeTSzXm/nqzssctYg==",
|
"integrity": "sha512-YjVbyqpJu6E6U/BCdOgIUuUQPUDZ7XdFiBYXtGy59xqQB1qSqNfei163hkfnXxIN90csDubxWNrnit+W5Wo/uQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/core": "10.34.0"
|
"@sentry/core": "10.35.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/feedback": {
|
"node_modules/@sentry-internal/feedback": {
|
||||||
"version": "10.34.0",
|
"version": "10.35.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.34.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.35.0.tgz",
|
||||||
"integrity": "sha512-wgGnq+iNxsFSOe9WX/FOvtoItSTjgLJJ4dQkVYtcVM6WGBVIg4wgNYfECCnRNztUTPzpZHLjC9r+4Pym451DDQ==",
|
"integrity": "sha512-h/rtGcgvGtZIY9njxnzHHMzMwFYAYG/UwDaNtpf8jN63JD6cTQDQ8wNWp0arD9gmUr96YjER55BNRRF8oSg6Fw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/core": "10.34.0"
|
"@sentry/core": "10.35.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/replay": {
|
"node_modules/@sentry-internal/replay": {
|
||||||
"version": "10.34.0",
|
"version": "10.35.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.34.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.35.0.tgz",
|
||||||
"integrity": "sha512-Vmea0GcOg57z/S1bVSj3saFcRvDqdLzdy4wd9fQMpMgy5OCbTlo7lxVUndKzbcZnanma6zF6VxwnWER1WuN9RA==",
|
"integrity": "sha512-9hGP3lD+7o/4ovGTdwv3T9K2t9LxSlR/CAcRQeFApW2c0AGsjTdcglOxsgxYei4YmaISx0CBJ/YqJfQVYxaxWw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/browser-utils": "10.34.0",
|
"@sentry-internal/browser-utils": "10.35.0",
|
||||||
"@sentry/core": "10.34.0"
|
"@sentry/core": "10.35.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry-internal/replay-canvas": {
|
"node_modules/@sentry-internal/replay-canvas": {
|
||||||
"version": "10.34.0",
|
"version": "10.35.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.34.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.35.0.tgz",
|
||||||
"integrity": "sha512-XWH/9njtgMD+LLWjc4KKgBpb+dTCkoUEIFDxcvzG/87d+jirmzf0+r8EfpLwKG+GrqNiiGRV39zIqu0SfPl+cw==",
|
"integrity": "sha512-efaz8ETDLd0rSpoqX4m8fMnq7abzUJAdqeChz9Jdq6OgvHeBgM6tTfqWSes6sFnSCvFUVkdFngZQfgmBxWGuEA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/replay": "10.34.0",
|
"@sentry-internal/replay": "10.35.0",
|
||||||
"@sentry/core": "10.34.0"
|
"@sentry/core": "10.35.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/babel-plugin-component-annotate": {
|
"node_modules/@sentry/babel-plugin-component-annotate": {
|
||||||
"version": "4.6.2",
|
"version": "4.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.7.0.tgz",
|
||||||
"integrity": "sha512-6VTjLJXtIHKwxMmThtZKwi1+hdklLNzlbYH98NhbH22/Vzb/c6BlSD2b5A0NGN9vFB807rD4x4tuP+Su7BxQXQ==",
|
"integrity": "sha512-MkyajDiO17/GaHHFgOmh05ZtOwF5hmm9KRjVgn9PXHIdpz+TFM5mkp1dABmR6Y75TyNU98Z1aOwPOgyaR5etJw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 14"
|
"node": ">= 14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/browser": {
|
"node_modules/@sentry/browser": {
|
||||||
"version": "10.34.0",
|
"version": "10.35.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.34.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.35.0.tgz",
|
||||||
"integrity": "sha512-8WCsAXli5Z+eIN8dMY8KGQjrS3XgUp1np/pjdeWNrVPVR8q8XpS34qc+f+y/LFrYQC9bs2Of5aIBwRtDCIvRsg==",
|
"integrity": "sha512-3wCdmKOTqg6Fvmb9HLHzCVIpSSYCPhXFQ95VaYsb1rESIgL7BMS9nyqhecPcPR3oJppU2a/TqZk4YH3nFrPXmA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry-internal/browser-utils": "10.34.0",
|
"@sentry-internal/browser-utils": "10.35.0",
|
||||||
"@sentry-internal/feedback": "10.34.0",
|
"@sentry-internal/feedback": "10.35.0",
|
||||||
"@sentry-internal/replay": "10.34.0",
|
"@sentry-internal/replay": "10.35.0",
|
||||||
"@sentry-internal/replay-canvas": "10.34.0",
|
"@sentry-internal/replay-canvas": "10.35.0",
|
||||||
"@sentry/core": "10.34.0"
|
"@sentry/core": "10.35.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/bundler-plugin-core": {
|
"node_modules/@sentry/bundler-plugin-core": {
|
||||||
"version": "4.6.2",
|
"version": "4.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-4.7.0.tgz",
|
||||||
"integrity": "sha512-JkOc3JkVzi/fbXsFp8R9uxNKmBrPRaU4Yu4y1i3ihWfugqymsIYaN0ixLENZbGk2j4xGHIk20PAJzBJqBMTHew==",
|
"integrity": "sha512-gFdEtiup/7qYhN3vp1v2f0WL9AG9OorWLtIpfSBYbWjtzklVNg1sizvNyZ8nEiwtnb25LzvvCUbOP1SyP6IodQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.18.5",
|
"@babel/core": "^7.18.5",
|
||||||
"@sentry/babel-plugin-component-annotate": "4.6.2",
|
"@sentry/babel-plugin-component-annotate": "4.7.0",
|
||||||
"@sentry/cli": "^2.57.0",
|
"@sentry/cli": "^2.57.0",
|
||||||
"dotenv": "^16.3.1",
|
"dotenv": "^16.3.1",
|
||||||
"find-up": "^5.0.0",
|
"find-up": "^5.0.0",
|
||||||
@@ -6810,22 +7102,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/core": {
|
"node_modules/@sentry/core": {
|
||||||
"version": "10.34.0",
|
"version": "10.35.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.34.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.35.0.tgz",
|
||||||
"integrity": "sha512-4FFpYBMf0VFdPcsr4grDYDOR87mRu6oCfb51oQjU/Pndmty7UgYo0Bst3LEC/8v0SpytBtzXq+Wx/fkwulBesg==",
|
"integrity": "sha512-lEK1WFqt6oHtMq5dDLVE/FDzHDGs1PlYT5cZH4aBirYtJVyUiTf0NknKFob4a2zTywczlq7SbLv6Ba8UMU9dYg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/react": {
|
"node_modules/@sentry/react": {
|
||||||
"version": "10.34.0",
|
"version": "10.35.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.34.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.35.0.tgz",
|
||||||
"integrity": "sha512-LDpg9WDrEwo6lr/YOAA54id/g5D1PGKEIiOGxqRZbBVyjzrsquwzhSG2CMqnp+YO6lz/r96LWuqm2cvfpht2zA==",
|
"integrity": "sha512-RJsJVZRVe646euf1HLlhbjeAHn2ABd54Y7Zpy4XUJaL4FdKqaaFmqeHKi6IxXFf6IE35onk/kn8CfR7xWBhe2g==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/browser": "10.34.0",
|
"@sentry/browser": "10.35.0",
|
||||||
"@sentry/core": "10.34.0"
|
"@sentry/core": "10.35.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
@@ -6835,12 +7127,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sentry/vite-plugin": {
|
"node_modules/@sentry/vite-plugin": {
|
||||||
"version": "4.6.2",
|
"version": "4.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-4.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-4.7.0.tgz",
|
||||||
"integrity": "sha512-hK9N50LlTaPlb2P1r87CFupU7MJjvtrp+Js96a2KDdiP8ViWnw4Gsa/OvA0pkj2wAFXFeBQMLS6g/SktTKG54w==",
|
"integrity": "sha512-eQXDghOQLsYwnHutJo8TCzhG4gp0KLNq3h96iqFMhsbjnNnfYeCX1lIw1pJEh/az3cDwSyPI/KGkvf8hr0dZmQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/bundler-plugin-core": "4.6.2",
|
"@sentry/bundler-plugin-core": "4.7.0",
|
||||||
"unplugin": "1.0.1"
|
"unplugin": "1.0.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -7007,9 +7299,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@testing-library/react": {
|
"node_modules/@testing-library/react": {
|
||||||
"version": "16.3.1",
|
"version": "16.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz",
|
||||||
"integrity": "sha512-gr4KtAWqIOQoucWYD/f6ki+j5chXfcPc74Col/6poTyqTmn7zRmodWahWRCp8tYd+GMqBonw6hstNzqjbs6gjw==",
|
"integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -7648,13 +7940,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/antd": {
|
"node_modules/antd": {
|
||||||
"version": "6.2.0",
|
"version": "6.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/antd/-/antd-6.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/antd/-/antd-6.2.1.tgz",
|
||||||
"integrity": "sha512-fwETatwHYExjfzKcV41fBtgPo4kp+g+9gp5YOSSGxwnJHljps8TbXef8WP7ZnaOn5dkcA9xIC0TyUecIybBG7w==",
|
"integrity": "sha512-ycw/XX7So4MdrwYKGfvZJdkGiCYUOSTebAIi+ejE95WJ138b11oy/iJg7iH0qydaD/B5sFd7Tz8XfPBuW7CRmw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ant-design/colors": "^8.0.1",
|
"@ant-design/colors": "^8.0.1",
|
||||||
"@ant-design/cssinjs": "^2.0.1",
|
"@ant-design/cssinjs": "^2.0.3",
|
||||||
"@ant-design/cssinjs-utils": "^2.0.2",
|
"@ant-design/cssinjs-utils": "^2.0.2",
|
||||||
"@ant-design/fast-color": "^3.0.0",
|
"@ant-design/fast-color": "^3.0.0",
|
||||||
"@ant-design/icons": "^6.1.0",
|
"@ant-design/icons": "^6.1.0",
|
||||||
@@ -7681,7 +7973,7 @@
|
|||||||
"@rc-component/progress": "~1.0.2",
|
"@rc-component/progress": "~1.0.2",
|
||||||
"@rc-component/qrcode": "~1.1.1",
|
"@rc-component/qrcode": "~1.1.1",
|
||||||
"@rc-component/rate": "~1.0.1",
|
"@rc-component/rate": "~1.0.1",
|
||||||
"@rc-component/resize-observer": "^1.0.1",
|
"@rc-component/resize-observer": "^1.1.1",
|
||||||
"@rc-component/segmented": "~1.3.0",
|
"@rc-component/segmented": "~1.3.0",
|
||||||
"@rc-component/select": "~1.5.0",
|
"@rc-component/select": "~1.5.0",
|
||||||
"@rc-component/slider": "~1.0.1",
|
"@rc-component/slider": "~1.0.1",
|
||||||
@@ -7694,7 +7986,7 @@
|
|||||||
"@rc-component/tour": "~2.3.0",
|
"@rc-component/tour": "~2.3.0",
|
||||||
"@rc-component/tree": "~1.1.0",
|
"@rc-component/tree": "~1.1.0",
|
||||||
"@rc-component/tree-select": "~1.6.0",
|
"@rc-component/tree-select": "~1.6.0",
|
||||||
"@rc-component/trigger": "^3.8.2",
|
"@rc-component/trigger": "^3.9.0",
|
||||||
"@rc-component/upload": "~1.1.0",
|
"@rc-component/upload": "~1.1.0",
|
||||||
"@rc-component/util": "^1.7.0",
|
"@rc-component/util": "^1.7.0",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
@@ -7712,9 +8004,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/antd/node_modules/@ant-design/cssinjs": {
|
"node_modules/antd/node_modules/@ant-design/cssinjs": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-2.0.3.tgz",
|
||||||
"integrity": "sha512-7KDVIigtqlamOLtJ0hbjECX/sDGDaJXsM/KHala8I/1E4lpl9RAO585kbVvh/k1rIrFAV6JeGkXmdWyYj9XvuA==",
|
"integrity": "sha512-HAo8SZ3a6G8v6jT0suCz1270na6EA3obeJWM4uzRijBhdwdoMAXWK2f4WWkwB28yUufsfk3CAhN1coGPQq4kNQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.11.1",
|
"@babel/runtime": "^7.11.1",
|
||||||
@@ -11434,9 +11726,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/i18next": {
|
"node_modules/i18next": {
|
||||||
"version": "25.7.4",
|
"version": "25.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-25.7.4.tgz",
|
"resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.0.tgz",
|
||||||
"integrity": "sha512-hRkpEblXXcXSNbw8mBNq9042OEetgyB/ahc/X17uV/khPwzV+uB8RHceHh3qavyrkPJvmXFKXME2Sy1E0KjAfw==",
|
"integrity": "sha512-urrg4HMFFMQZ2bbKRK7IZ8/CTE7D8H4JRlAwqA2ZwDRFfdd0K/4cdbNNLgfn9mo+I/h9wJu61qJzH7jCFAhUZQ==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "individual",
|
"type": "individual",
|
||||||
@@ -12572,9 +12864,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss": {
|
"node_modules/lightningcss": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.0.tgz",
|
||||||
"integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==",
|
"integrity": "sha512-mKXR8TIPqVNcs0qQplcnLgDSmyMW5q9Bt5GmcvABpeexaGGPILxDmMNoabSsS9pAPgICYmgzL2wYFPf84/fQ2A==",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"detect-libc": "^2.0.3"
|
"detect-libc": "^2.0.3"
|
||||||
@@ -12587,23 +12879,23 @@
|
|||||||
"url": "https://opencollective.com/parcel"
|
"url": "https://opencollective.com/parcel"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"lightningcss-android-arm64": "1.30.2",
|
"lightningcss-android-arm64": "1.31.0",
|
||||||
"lightningcss-darwin-arm64": "1.30.2",
|
"lightningcss-darwin-arm64": "1.31.0",
|
||||||
"lightningcss-darwin-x64": "1.30.2",
|
"lightningcss-darwin-x64": "1.31.0",
|
||||||
"lightningcss-freebsd-x64": "1.30.2",
|
"lightningcss-freebsd-x64": "1.31.0",
|
||||||
"lightningcss-linux-arm-gnueabihf": "1.30.2",
|
"lightningcss-linux-arm-gnueabihf": "1.31.0",
|
||||||
"lightningcss-linux-arm64-gnu": "1.30.2",
|
"lightningcss-linux-arm64-gnu": "1.31.0",
|
||||||
"lightningcss-linux-arm64-musl": "1.30.2",
|
"lightningcss-linux-arm64-musl": "1.31.0",
|
||||||
"lightningcss-linux-x64-gnu": "1.30.2",
|
"lightningcss-linux-x64-gnu": "1.31.0",
|
||||||
"lightningcss-linux-x64-musl": "1.30.2",
|
"lightningcss-linux-x64-musl": "1.31.0",
|
||||||
"lightningcss-win32-arm64-msvc": "1.30.2",
|
"lightningcss-win32-arm64-msvc": "1.31.0",
|
||||||
"lightningcss-win32-x64-msvc": "1.30.2"
|
"lightningcss-win32-x64-msvc": "1.31.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-android-arm64": {
|
"node_modules/lightningcss-android-arm64": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.0.tgz",
|
||||||
"integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==",
|
"integrity": "sha512-qRdhuBXBgGfO3NZ37l/lA1qqjqptBQoa37YiMDeMRpJpv/+0CGKtL4o5+VUFaHzZb9+hS/DOg3XNff3YmwY2ug==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -12621,9 +12913,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-darwin-arm64": {
|
"node_modules/lightningcss-darwin-arm64": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.0.tgz",
|
||||||
"integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==",
|
"integrity": "sha512-ctMERKCPJHgEhkCUvcCT5Z1wB+pCyFO+XskTNFB3uTrE9i3LzQXvrlm2PSuYhOYSExrzfmfD/HVyfqZYnfpjvQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -12641,9 +12933,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-darwin-x64": {
|
"node_modules/lightningcss-darwin-x64": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.0.tgz",
|
||||||
"integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==",
|
"integrity": "sha512-7+8dwpz4qj/IiKxSs210WKWoJg59npBxvEXrpuxAkfZDPSgXiPcNZfaL9HtcaRntd7DbzVSI5SHMsmlsl+NZgA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -12661,9 +12953,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-freebsd-x64": {
|
"node_modules/lightningcss-freebsd-x64": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.0.tgz",
|
||||||
"integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==",
|
"integrity": "sha512-HZdu0reyMXO0TzJnK3D37dxgijjJsZt9muQRi+df/sr6WnkSZJKHfOufm0amWz+LiWg9X3H+XIBW24s/y3itmQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -12681,9 +12973,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-linux-arm-gnueabihf": {
|
"node_modules/lightningcss-linux-arm-gnueabihf": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.0.tgz",
|
||||||
"integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==",
|
"integrity": "sha512-pqp0rGHc9rebDT7vVtu92JqU6gP5zm19m+zCqvHHMI+cEQrCjbNlMbPqn9UEfPYfRltL4pti9MJQ62558nVHnw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@@ -12701,9 +12993,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-linux-arm64-gnu": {
|
"node_modules/lightningcss-linux-arm64-gnu": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.0.tgz",
|
||||||
"integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==",
|
"integrity": "sha512-EpAQTq6TXL+200bDNMzhbFpqAJsto01R//xuE8yAWN0l4wmJhmS1r/FxoudIUM9PxHMPEiWeLw+1thdF5ZPg7Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -12721,9 +13013,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-linux-arm64-musl": {
|
"node_modules/lightningcss-linux-arm64-musl": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.0.tgz",
|
||||||
"integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==",
|
"integrity": "sha512-6tuU37nXStA3kxNnjC49z1tPFEoviC9ZLyB34O3X1/VTLXdZX2vmPZ+45XesagvlgoeJQ9r9XVSovUZny41AQA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -12741,9 +13033,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-linux-x64-gnu": {
|
"node_modules/lightningcss-linux-x64-gnu": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.0.tgz",
|
||||||
"integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==",
|
"integrity": "sha512-enNePbgDKmJybVz90/8dAGTOulvpn0IwxamHHnIj32gmdbuSPJ9mk+Nob4UmiqLMAdHlH+0c+lpsZkv4TSxi3w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -12761,9 +13053,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-linux-x64-musl": {
|
"node_modules/lightningcss-linux-x64-musl": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.0.tgz",
|
||||||
"integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==",
|
"integrity": "sha512-EM4jGT+V+PdFkcrIB5m5yiSzfV7z43k0pOtUmODhFSbuay5JvbVChK1uoaMmwPTKGWatwSRbiu90BUzU262B9g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -12781,9 +13073,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-win32-arm64-msvc": {
|
"node_modules/lightningcss-win32-arm64-msvc": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.0.tgz",
|
||||||
"integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==",
|
"integrity": "sha512-IGvE0eCsWrYWerlkXFitANJ2vdkzs4EVCm1sEttanqVc4lqdRKyZ7ZIapBfo5OckE+zuq/JNaIkbWHdYDpOblQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -12801,9 +13093,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lightningcss-win32-x64-msvc": {
|
"node_modules/lightningcss-win32-x64-msvc": {
|
||||||
"version": "1.30.2",
|
"version": "1.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz",
|
"resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.0.tgz",
|
||||||
"integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==",
|
"integrity": "sha512-7V6CPCLNO1Pv5gPPvXWst7V8cvZjbRKgwht1qd4/OH7yacV/kMV5VDq/RDnmdQpXUTnn4ye+vZkU8REXU46iZA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -13177,12 +13469,20 @@
|
|||||||
"license": "CC0-1.0"
|
"license": "CC0-1.0"
|
||||||
},
|
},
|
||||||
"node_modules/memfs": {
|
"node_modules/memfs": {
|
||||||
"version": "4.52.0",
|
"version": "4.56.4",
|
||||||
"resolved": "https://registry.npmjs.org/memfs/-/memfs-4.52.0.tgz",
|
"resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.4.tgz",
|
||||||
"integrity": "sha512-dG5ZY1wUCPWhtl4M2mlc7Wx4OrMGtiI79axnScxwDoPR/25biQYrYm21OpKyZcnKv8pvWaX95SRtZgecZ84gFg==",
|
"integrity": "sha512-GKqmHEFyFwccco9NmTEY38AemzpNLs5tKKxGfNpnLI/5D92NAr7STItdzTMeUlKdd3FjkE5w18TPLyKTb6MDVA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@jsonjoy.com/fs-core": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-fsa": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-builtins": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-to-fsa": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-node-utils": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-print": "4.56.4",
|
||||||
|
"@jsonjoy.com/fs-snapshot": "^4.56.4",
|
||||||
"@jsonjoy.com/json-pack": "^1.11.0",
|
"@jsonjoy.com/json-pack": "^1.11.0",
|
||||||
"@jsonjoy.com/util": "^1.9.0",
|
"@jsonjoy.com/util": "^1.9.0",
|
||||||
"glob-to-regex.js": "^1.0.1",
|
"glob-to-regex.js": "^1.0.1",
|
||||||
@@ -13193,6 +13493,9 @@
|
|||||||
"funding": {
|
"funding": {
|
||||||
"type": "github",
|
"type": "github",
|
||||||
"url": "https://github.com/sponsors/streamich"
|
"url": "https://github.com/sponsors/streamich"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tslib": "2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/memoize-one": {
|
"node_modules/memoize-one": {
|
||||||
@@ -14698,9 +15001,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/posthog-js": {
|
"node_modules/posthog-js": {
|
||||||
"version": "1.325.0",
|
"version": "1.331.2",
|
||||||
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.325.0.tgz",
|
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.331.2.tgz",
|
||||||
"integrity": "sha512-u4A/QPtI742X4lnXmdr9fl00jwg22mUIs3SrbHg7i8Ju5uBa4CThV/2n+4XSXyre3LygOASshFxhzT3UMpcQPQ==",
|
"integrity": "sha512-EQGdp1dZdhDJI4uPJVEEiL57t/HXsqM0ZfLJHm5uXisuSEdy1DvMDQ2i1k3JDqt99Mew7JBFR53GYA7LOGoOVw==",
|
||||||
"license": "SEE LICENSE IN LICENSE",
|
"license": "SEE LICENSE IN LICENSE",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@opentelemetry/api": "^1.9.0",
|
"@opentelemetry/api": "^1.9.0",
|
||||||
@@ -14708,8 +15011,8 @@
|
|||||||
"@opentelemetry/exporter-logs-otlp-http": "^0.208.0",
|
"@opentelemetry/exporter-logs-otlp-http": "^0.208.0",
|
||||||
"@opentelemetry/resources": "^2.2.0",
|
"@opentelemetry/resources": "^2.2.0",
|
||||||
"@opentelemetry/sdk-logs": "^0.208.0",
|
"@opentelemetry/sdk-logs": "^0.208.0",
|
||||||
"@posthog/core": "1.9.1",
|
"@posthog/core": "1.12.0",
|
||||||
"@posthog/types": "1.325.0",
|
"@posthog/types": "1.331.2",
|
||||||
"core-js": "^3.38.1",
|
"core-js": "^3.38.1",
|
||||||
"dompurify": "^3.3.1",
|
"dompurify": "^3.3.1",
|
||||||
"fflate": "^0.4.8",
|
"fflate": "^0.4.8",
|
||||||
@@ -17376,9 +17679,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tree-dump": {
|
"node_modules/tree-dump": {
|
||||||
"version": "1.0.3",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz",
|
||||||
"integrity": "sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==",
|
"integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@amplitude/analytics-browser": "^2.33.4",
|
"@amplitude/analytics-browser": "^2.33.4",
|
||||||
"@ant-design/pro-layout": "^7.22.6",
|
"@ant-design/pro-layout": "^7.22.6",
|
||||||
"@apollo/client": "^4.1.0",
|
"@apollo/client": "^4.1.1",
|
||||||
"@emotion/is-prop-valid": "^1.4.0",
|
"@emotion/is-prop-valid": "^1.4.0",
|
||||||
"@fingerprintjs/fingerprintjs": "^5.0.1",
|
"@fingerprintjs/fingerprintjs": "^5.0.1",
|
||||||
"@firebase/analytics": "^0.10.19",
|
"@firebase/analytics": "^0.10.19",
|
||||||
@@ -21,11 +21,11 @@
|
|||||||
"@jsreport/browser-client": "^3.1.0",
|
"@jsreport/browser-client": "^3.1.0",
|
||||||
"@reduxjs/toolkit": "^2.11.2",
|
"@reduxjs/toolkit": "^2.11.2",
|
||||||
"@sentry/cli": "^3.1.0",
|
"@sentry/cli": "^3.1.0",
|
||||||
"@sentry/react": "^10.34.0",
|
"@sentry/react": "^10.35.0",
|
||||||
"@sentry/vite-plugin": "^4.6.2",
|
"@sentry/vite-plugin": "^4.7.0",
|
||||||
"@splitsoftware/splitio-react": "^2.6.1",
|
"@splitsoftware/splitio-react": "^2.6.1",
|
||||||
"@tanem/react-nprogress": "^5.0.56",
|
"@tanem/react-nprogress": "^5.0.56",
|
||||||
"antd": "^6.2.0",
|
"antd": "^6.2.1",
|
||||||
"apollo-link-logger": "^3.0.0",
|
"apollo-link-logger": "^3.0.0",
|
||||||
"autosize": "^6.0.1",
|
"autosize": "^6.0.1",
|
||||||
"axios": "^1.13.2",
|
"axios": "^1.13.2",
|
||||||
@@ -39,18 +39,18 @@
|
|||||||
"exifr": "^7.1.3",
|
"exifr": "^7.1.3",
|
||||||
"graphql": "^16.12.0",
|
"graphql": "^16.12.0",
|
||||||
"graphql-ws": "^6.0.6",
|
"graphql-ws": "^6.0.6",
|
||||||
"i18next": "^25.7.4",
|
"i18next": "^25.8.0",
|
||||||
"i18next-browser-languagedetector": "^8.2.0",
|
"i18next-browser-languagedetector": "^8.2.0",
|
||||||
"immutability-helper": "^3.1.1",
|
"immutability-helper": "^3.1.1",
|
||||||
"libphonenumber-js": "^1.12.34",
|
"libphonenumber-js": "^1.12.34",
|
||||||
"lightningcss": "^1.30.2",
|
"lightningcss": "^1.31.0",
|
||||||
"logrocket": "^11.0.0",
|
"logrocket": "^11.0.0",
|
||||||
"markerjs2": "^2.32.7",
|
"markerjs2": "^2.32.7",
|
||||||
"memoize-one": "^6.0.0",
|
"memoize-one": "^6.0.0",
|
||||||
"normalize-url": "^8.1.1",
|
"normalize-url": "^8.1.1",
|
||||||
"object-hash": "^3.0.0",
|
"object-hash": "^3.0.0",
|
||||||
"phone": "^3.1.69",
|
"phone": "^3.1.69",
|
||||||
"posthog-js": "^1.325.0",
|
"posthog-js": "^1.331.2",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
"query-string": "^9.3.1",
|
"query-string": "^9.3.1",
|
||||||
"raf-schd": "^4.0.3",
|
"raf-schd": "^4.0.3",
|
||||||
@@ -142,7 +142,7 @@
|
|||||||
"@playwright/test": "^1.57.0",
|
"@playwright/test": "^1.57.0",
|
||||||
"@testing-library/dom": "^10.4.1",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/jest-dom": "^6.9.1",
|
"@testing-library/jest-dom": "^6.9.1",
|
||||||
"@testing-library/react": "^16.3.1",
|
"@testing-library/react": "^16.3.2",
|
||||||
"@vitejs/plugin-react": "^5.1.2",
|
"@vitejs/plugin-react": "^5.1.2",
|
||||||
"babel-plugin-react-compiler": "^1.0.0",
|
"babel-plugin-react-compiler": "^1.0.0",
|
||||||
"browserslist": "^4.28.1",
|
"browserslist": "^4.28.1",
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
"eslint-plugin-react-compiler": "^19.1.0-rc.2",
|
"eslint-plugin-react-compiler": "^19.1.0-rc.2",
|
||||||
"globals": "^17.0.0",
|
"globals": "^17.0.0",
|
||||||
"jsdom": "^27.4.0",
|
"jsdom": "^27.4.0",
|
||||||
"memfs": "^4.52.0",
|
"memfs": "^4.56.4",
|
||||||
"os-browserify": "^0.3.0",
|
"os-browserify": "^0.3.0",
|
||||||
"playwright": "^1.57.0",
|
"playwright": "^1.57.0",
|
||||||
"react-error-overlay": "^6.1.0",
|
"react-error-overlay": "^6.1.0",
|
||||||
|
|||||||
@@ -98,17 +98,19 @@ export function BillFormComponent({
|
|||||||
}
|
}
|
||||||
const jobId = form.getFieldValue("jobid");
|
const jobId = form.getFieldValue("jobid");
|
||||||
if (jobId) {
|
if (jobId) {
|
||||||
loadLines({ id: jobId });
|
loadLines({ variables: { id: jobId } });
|
||||||
if (form.getFieldValue("is_credit_memo") && vendorId && !billEdit) {
|
if (form.getFieldValue("is_credit_memo") && vendorId && !billEdit) {
|
||||||
loadOutstandingReturns({
|
loadOutstandingReturns({
|
||||||
jobId: jobId,
|
variables: {
|
||||||
vendorId: vendorId
|
jobId: jobId,
|
||||||
|
vendorId: vendorId
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vendorId === bodyshop.inhousevendorid && !billEdit) {
|
if (vendorId === bodyshop.inhousevendorid && !billEdit) {
|
||||||
loadInventory();
|
loadInventory({ variables: {} });
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
form,
|
form,
|
||||||
@@ -144,11 +146,13 @@ export function BillFormComponent({
|
|||||||
notExported={false}
|
notExported={false}
|
||||||
onBlur={() => {
|
onBlur={() => {
|
||||||
if (form.getFieldValue("jobid") !== null && form.getFieldValue("jobid") !== undefined) {
|
if (form.getFieldValue("jobid") !== null && form.getFieldValue("jobid") !== undefined) {
|
||||||
loadLines({ id: form.getFieldValue("jobid") });
|
loadLines({ variables: { id: form.getFieldValue("jobid") } });
|
||||||
if (form.getFieldValue("vendorid") !== null && form.getFieldValue("vendorid") !== undefined) {
|
if (form.getFieldValue("vendorid") !== null && form.getFieldValue("vendorid") !== undefined) {
|
||||||
loadOutstandingReturns({
|
loadOutstandingReturns({
|
||||||
jobId: form.getFieldValue("jobid"),
|
variables: {
|
||||||
vendorId: form.getFieldValue("vendorid")
|
jobId: form.getFieldValue("jobid"),
|
||||||
|
vendorId: form.getFieldValue("vendorid")
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -189,7 +193,7 @@ export function BillFormComponent({
|
|||||||
<Alert
|
<Alert
|
||||||
key={iou.id}
|
key={iou.id}
|
||||||
type="warning"
|
type="warning"
|
||||||
message={
|
title={
|
||||||
<Space>
|
<Space>
|
||||||
{t("bills.labels.iouexists")}
|
{t("bills.labels.iouexists")}
|
||||||
<Link target="_blank" rel="noopener noreferrer" to={`/manage/jobs/${iou.id}?tab=repairdata`}>
|
<Link target="_blank" rel="noopener noreferrer" to={`/manage/jobs/${iou.id}?tab=repairdata`}>
|
||||||
|
|||||||
@@ -14,13 +14,11 @@ import CurrencyInput from "../form-items-formatted/currency-form-item.component"
|
|||||||
import { bodyshopHasDmsKey } from "../../utils/dmsUtils.js";
|
import { bodyshopHasDmsKey } from "../../utils/dmsUtils.js";
|
||||||
|
|
||||||
const mapStateToProps = createStructuredSelector({
|
const mapStateToProps = createStructuredSelector({
|
||||||
//currentUser: selectCurrentUser
|
|
||||||
bodyshop: selectBodyshop,
|
bodyshop: selectBodyshop,
|
||||||
isDarkMode: selectDarkMode
|
isDarkMode: selectDarkMode
|
||||||
});
|
});
|
||||||
const mapDispatchToProps = () => ({
|
|
||||||
//setUserLanguage: language => dispatch(setUserLanguage(language))
|
const mapDispatchToProps = () => ({});
|
||||||
});
|
|
||||||
|
|
||||||
export function BillEnterModalLinesComponent({
|
export function BillEnterModalLinesComponent({
|
||||||
bodyshop,
|
bodyshop,
|
||||||
@@ -35,6 +33,102 @@ export function BillEnterModalLinesComponent({
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { setFieldsValue, getFieldsValue, getFieldValue } = form;
|
const { setFieldsValue, getFieldsValue, getFieldValue } = form;
|
||||||
|
|
||||||
|
// Keep input row heights consistent with the rest of the table controls.
|
||||||
|
const CONTROL_HEIGHT = 32;
|
||||||
|
|
||||||
|
const normalizeDiscount = (d) => {
|
||||||
|
const n = Number(d);
|
||||||
|
if (!Number.isFinite(n) || n <= 0) return 0;
|
||||||
|
return n > 1 ? n / 100 : n; // supports 15 or 0.15
|
||||||
|
};
|
||||||
|
|
||||||
|
const round2 = (v) => Math.round((v + Number.EPSILON) * 100) / 100;
|
||||||
|
|
||||||
|
const isBlank = (v) => v === null || v === undefined || v === "" || Number.isNaN(v);
|
||||||
|
|
||||||
|
const toNumber = (raw) => {
|
||||||
|
if (raw === null || raw === undefined) return NaN;
|
||||||
|
if (typeof raw === "number") return raw;
|
||||||
|
|
||||||
|
if (typeof raw === "string") {
|
||||||
|
const cleaned = raw
|
||||||
|
.trim()
|
||||||
|
.replace(/[^\d.,-]/g, "")
|
||||||
|
.replace(/,/g, "");
|
||||||
|
return Number.parseFloat(cleaned);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof raw === "object") {
|
||||||
|
try {
|
||||||
|
if (typeof raw.toNumber === "function") return raw.toNumber();
|
||||||
|
|
||||||
|
const v = raw.valueOf?.();
|
||||||
|
if (typeof v === "number") return v;
|
||||||
|
if (typeof v === "string") {
|
||||||
|
const cleaned = v
|
||||||
|
.trim()
|
||||||
|
.replace(/[^\d.,-]/g, "")
|
||||||
|
.replace(/,/g, "");
|
||||||
|
return Number.parseFloat(cleaned);
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NaN;
|
||||||
|
};
|
||||||
|
|
||||||
|
// safe per-field setter (supports AntD 6+ setFieldValue, falls back to setFieldsValue)
|
||||||
|
const setLineField = (index, field, value) => {
|
||||||
|
if (typeof form.setFieldValue === "function") {
|
||||||
|
form.setFieldValue(["billlines", index, field], value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const lines = form.getFieldValue("billlines") || [];
|
||||||
|
form.setFieldsValue({
|
||||||
|
billlines: lines.map((l, i) => (i === index ? { ...l, [field]: value } : l))
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const autofillActualCost = (index) => {
|
||||||
|
Promise.resolve().then(() => {
|
||||||
|
const retailRaw = form.getFieldValue(["billlines", index, "actual_price"]);
|
||||||
|
const actualRaw = form.getFieldValue(["billlines", index, "actual_cost"]);
|
||||||
|
const d = normalizeDiscount(discount);
|
||||||
|
|
||||||
|
if (!isBlank(actualRaw)) return;
|
||||||
|
|
||||||
|
const retail = toNumber(retailRaw);
|
||||||
|
if (!Number.isFinite(retail)) return;
|
||||||
|
|
||||||
|
const next = round2(retail * (1 - d));
|
||||||
|
setLineField(index, "actual_cost", next);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const getIndicatorColor = (lineDiscount) => {
|
||||||
|
const d = normalizeDiscount(discount);
|
||||||
|
if (Math.abs(lineDiscount - d) > 0.005) return lineDiscount > d ? "orange" : "red";
|
||||||
|
return "green";
|
||||||
|
};
|
||||||
|
|
||||||
|
const getIndicatorShellStyles = (statusColor) => {
|
||||||
|
// bring back the “colored shell” feel around the $ indicator while keeping row height stable
|
||||||
|
if (isDarkMode) {
|
||||||
|
if (statusColor === "green")
|
||||||
|
return { borderColor: "rgba(82, 196, 26, 0.75)", background: "rgba(82, 196, 26, 0.10)" };
|
||||||
|
if (statusColor === "orange")
|
||||||
|
return { borderColor: "rgba(250, 173, 20, 0.75)", background: "rgba(250, 173, 20, 0.10)" };
|
||||||
|
return { borderColor: "rgba(255, 77, 79, 0.75)", background: "rgba(255, 77, 79, 0.10)" };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (statusColor === "green") return { borderColor: "#b7eb8f", background: "#f6ffed" };
|
||||||
|
if (statusColor === "orange") return { borderColor: "#ffe58f", background: "#fffbe6" };
|
||||||
|
return { borderColor: "#ffccc7", background: "#fff2f0" };
|
||||||
|
};
|
||||||
|
|
||||||
const {
|
const {
|
||||||
treatments: { Simple_Inventory, Enhanced_Payroll }
|
treatments: { Simple_Inventory, Enhanced_Payroll }
|
||||||
} = useTreatmentsWithConfig({
|
} = useTreatmentsWithConfig({
|
||||||
@@ -50,24 +144,15 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "joblineid",
|
dataIndex: "joblineid",
|
||||||
editable: true,
|
editable: true,
|
||||||
minWidth: "10rem",
|
minWidth: "10rem",
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
key: `${field.index}joblinename`,
|
||||||
key: `${field.index}joblinename`,
|
name: [field.name, "joblineid"],
|
||||||
name: [field.name, "joblineid"],
|
label: t("billlines.fields.jobline"),
|
||||||
label: t("billlines.fields.jobline"),
|
rules: [{ required: true }]
|
||||||
rules: [
|
}),
|
||||||
{
|
|
||||||
required: true
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
wrapper: (props) => (
|
wrapper: (props) => (
|
||||||
<Form.Item noStyle shouldUpdate={(prev, cur) => prev.is_credit_memo !== cur.is_credit_memo}>
|
<Form.Item noStyle shouldUpdate={(prev, cur) => prev.is_credit_memo !== cur.is_credit_memo}>
|
||||||
{() => {
|
{() => props.children}
|
||||||
return props.children;
|
|
||||||
}}
|
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
),
|
),
|
||||||
formInput: (record, index) => (
|
formInput: (record, index) => (
|
||||||
@@ -75,35 +160,37 @@ export function BillEnterModalLinesComponent({
|
|||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
options={lineData}
|
options={lineData}
|
||||||
style={{
|
style={{
|
||||||
//width: "10rem",
|
|
||||||
// maxWidth: "20rem",
|
|
||||||
minWidth: "20rem",
|
minWidth: "20rem",
|
||||||
whiteSpace: "normal",
|
whiteSpace: "normal",
|
||||||
height: "auto",
|
height: "auto",
|
||||||
minHeight: "32px" // default height of Ant Design inputs
|
minHeight: `${CONTROL_HEIGHT}px`
|
||||||
}}
|
}}
|
||||||
allowRemoved={form.getFieldValue("is_credit_memo") || false}
|
allowRemoved={form.getFieldValue("is_credit_memo") || false}
|
||||||
onSelect={(value, opt) => {
|
onSelect={(value, opt) => {
|
||||||
|
const d = normalizeDiscount(discount);
|
||||||
|
const retail = Number(opt.cost);
|
||||||
|
const computedActual = Number.isFinite(retail) ? round2(retail * (1 - d)) : null;
|
||||||
|
|
||||||
setFieldsValue({
|
setFieldsValue({
|
||||||
billlines: getFieldsValue(["billlines"]).billlines.map((item, idx) => {
|
billlines: (getFieldValue("billlines") || []).map((item, idx) => {
|
||||||
if (idx === index) {
|
if (idx !== index) return item;
|
||||||
return {
|
|
||||||
...item,
|
return {
|
||||||
line_desc: opt.line_desc,
|
...item,
|
||||||
quantity: opt.part_qty || 1,
|
line_desc: opt.line_desc,
|
||||||
actual_price: opt.cost,
|
quantity: opt.part_qty || 1,
|
||||||
original_actual_price: opt.cost,
|
actual_price: opt.cost,
|
||||||
cost_center: opt.part_type
|
original_actual_price: opt.cost,
|
||||||
? bodyshopHasDmsKey(bodyshop)
|
actual_cost: isBlank(item.actual_cost) ? computedActual : item.actual_cost,
|
||||||
? opt.part_type !== "PAE"
|
cost_center: opt.part_type
|
||||||
? opt.part_type
|
? bodyshopHasDmsKey(bodyshop)
|
||||||
: null
|
? opt.part_type !== "PAE"
|
||||||
: responsibilityCenters.defaults &&
|
? opt.part_type
|
||||||
(responsibilityCenters.defaults.costs[opt.part_type] || null)
|
: null
|
||||||
: null
|
: responsibilityCenters.defaults &&
|
||||||
};
|
(responsibilityCenters.defaults.costs[opt.part_type] || null)
|
||||||
}
|
: null
|
||||||
return item;
|
};
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
@@ -115,19 +202,12 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "line_desc",
|
dataIndex: "line_desc",
|
||||||
editable: true,
|
editable: true,
|
||||||
minWidth: "10rem",
|
minWidth: "10rem",
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
key: `${field.index}line_desc`,
|
||||||
key: `${field.index}line_desc`,
|
name: [field.name, "line_desc"],
|
||||||
name: [field.name, "line_desc"],
|
label: t("billlines.fields.line_desc"),
|
||||||
label: t("billlines.fields.line_desc"),
|
rules: [{ required: true }]
|
||||||
rules: [
|
}),
|
||||||
{
|
|
||||||
required: true
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
formInput: () => <Input.TextArea disabled={disabled} autoSize />
|
formInput: () => <Input.TextArea disabled={disabled} autoSize />
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -135,31 +215,26 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "quantity",
|
dataIndex: "quantity",
|
||||||
editable: true,
|
editable: true,
|
||||||
width: "4rem",
|
width: "4rem",
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
key: `${field.index}quantity`,
|
||||||
key: `${field.index}quantity`,
|
name: [field.name, "quantity"],
|
||||||
name: [field.name, "quantity"],
|
label: t("billlines.fields.quantity"),
|
||||||
label: t("billlines.fields.quantity"),
|
rules: [
|
||||||
rules: [
|
{ required: true },
|
||||||
{
|
({ getFieldValue: gf }) => ({
|
||||||
required: true
|
validator(rule, value) {
|
||||||
//message: t("general.validation.required"),
|
if (value && gf("billlines")[field.fieldKey]?.inventories?.length > value) {
|
||||||
},
|
return Promise.reject(
|
||||||
({ getFieldValue }) => ({
|
t("bills.validation.inventoryquantity", {
|
||||||
validator(rule, value) {
|
number: gf("billlines")[field.fieldKey]?.inventories?.length
|
||||||
if (value && getFieldValue("billlines")[field.fieldKey]?.inventories?.length > value) {
|
})
|
||||||
return Promise.reject(
|
);
|
||||||
t("bills.validation.inventoryquantity", {
|
|
||||||
number: getFieldValue("billlines")[field.fieldKey]?.inventories?.length
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return Promise.resolve();
|
|
||||||
}
|
}
|
||||||
})
|
return Promise.resolve();
|
||||||
]
|
}
|
||||||
};
|
})
|
||||||
},
|
]
|
||||||
|
}),
|
||||||
formInput: () => <InputNumber precision={0} min={1} disabled={disabled} />
|
formInput: () => <InputNumber precision={0} min={1} disabled={disabled} />
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -167,37 +242,19 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "actual_price",
|
dataIndex: "actual_price",
|
||||||
width: "8rem",
|
width: "8rem",
|
||||||
editable: true,
|
editable: true,
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
key: `${field.index}actual_price`,
|
||||||
key: `${field.index}actual_price`,
|
name: [field.name, "actual_price"],
|
||||||
name: [field.name, "actual_price"],
|
label: t("billlines.fields.actual_price"),
|
||||||
label: t("billlines.fields.actual_price"),
|
rules: [{ required: true }]
|
||||||
rules: [
|
}),
|
||||||
{
|
|
||||||
required: true
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
formInput: (record, index) => (
|
formInput: (record, index) => (
|
||||||
<CurrencyInput
|
<CurrencyInput
|
||||||
min={0}
|
min={0}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
onBlur={(e) => {
|
onBlur={() => autofillActualCost(index)}
|
||||||
setFieldsValue({
|
onKeyDown={(e) => {
|
||||||
billlines: getFieldsValue("billlines").billlines.map((item, idx) => {
|
if (e.key === "Tab") autofillActualCost(index);
|
||||||
if (idx === index) {
|
|
||||||
return {
|
|
||||||
...item,
|
|
||||||
actual_cost: item.actual_cost
|
|
||||||
? item.actual_cost
|
|
||||||
: Math.round((parseFloat(e.target.value) * (1 - discount) + Number.EPSILON) * 100) / 100
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return item;
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
@@ -224,9 +281,8 @@ export function BillEnterModalLinesComponent({
|
|||||||
{t("joblines.fields.create_ppc")}
|
{t("joblines.fields.create_ppc")}
|
||||||
</Space>
|
</Space>
|
||||||
);
|
);
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}}
|
}}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
)
|
)
|
||||||
@@ -237,100 +293,105 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "actual_cost",
|
dataIndex: "actual_cost",
|
||||||
editable: true,
|
editable: true,
|
||||||
width: "10rem",
|
width: "10rem",
|
||||||
|
skipFormItem: true,
|
||||||
|
formItemProps: (field) => ({
|
||||||
|
key: `${field.index}actual_cost`,
|
||||||
|
name: [field.name, "actual_cost"],
|
||||||
|
label: t("billlines.fields.actual_cost"),
|
||||||
|
rules: [{ required: true }]
|
||||||
|
}),
|
||||||
|
formInput: (record, index, fieldProps) => {
|
||||||
|
const { name, rules, valuePropName, getValueFromEvent, normalize, validateTrigger, initialValue } =
|
||||||
|
fieldProps || {};
|
||||||
|
|
||||||
formItemProps: (field) => {
|
const bindProps = {
|
||||||
return {
|
name,
|
||||||
key: `${field.index}actual_cost`,
|
rules,
|
||||||
name: [field.name, "actual_cost"],
|
valuePropName,
|
||||||
label: t("billlines.fields.actual_cost"),
|
getValueFromEvent,
|
||||||
rules: [
|
normalize,
|
||||||
{
|
validateTrigger,
|
||||||
required: true
|
initialValue
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
},
|
|
||||||
formInput: (record, index) => (
|
|
||||||
<Space.Compact style={{ width: "100%" }}>
|
|
||||||
<CurrencyInput min={0} disabled={disabled} controls={false} style={{ width: "100%" }} />
|
|
||||||
<Form.Item shouldUpdate noStyle>
|
|
||||||
{() => {
|
|
||||||
const line = getFieldsValue(["billlines"]).billlines[index];
|
|
||||||
if (!line) return null;
|
|
||||||
let lineDiscount = 1 - line.actual_cost / line.actual_price;
|
|
||||||
if (isNaN(lineDiscount)) lineDiscount = 0;
|
|
||||||
return (
|
|
||||||
<Tooltip title={`${(lineDiscount * 100).toFixed(2) || 0}%`}>
|
|
||||||
<div
|
|
||||||
style={{
|
|
||||||
padding: "4px 11px",
|
|
||||||
display: "flex",
|
|
||||||
alignItems: "center",
|
|
||||||
background: isDarkMode ? "#141414" : "#fafafa",
|
|
||||||
border: isDarkMode ? "1px solid #424242" : "1px solid #d9d9d9",
|
|
||||||
borderLeft: 0
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<DollarCircleFilled
|
|
||||||
style={{
|
|
||||||
color:
|
|
||||||
Math.abs(lineDiscount - discount) > 0.005
|
|
||||||
? lineDiscount > discount
|
|
||||||
? "orange"
|
|
||||||
: "red"
|
|
||||||
: "green"
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</Tooltip>
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
</Form.Item>
|
|
||||||
</Space.Compact>
|
|
||||||
)
|
|
||||||
// additional: (record, index) => (
|
|
||||||
// <Form.Item shouldUpdate>
|
|
||||||
// {() => {
|
|
||||||
// const line = getFieldsValue(["billlines"]).billlines[index];
|
|
||||||
// if (!!!line) return null;
|
|
||||||
// const lineDiscount = (
|
|
||||||
// 1 -
|
|
||||||
// Math.round((line.actual_cost / line.actual_price) * 100) / 100
|
|
||||||
// ).toPrecision(2);
|
|
||||||
|
|
||||||
// return (
|
return (
|
||||||
// <Tooltip title={`${(lineDiscount * 100).toFixed(0) || 0}%`}>
|
<div
|
||||||
// <DollarCircleFilled
|
style={{
|
||||||
// style={{
|
display: "flex",
|
||||||
// color: lineDiscount - discount !== 0 ? "red" : "green",
|
width: "100%",
|
||||||
// }}
|
alignItems: "center",
|
||||||
// />
|
height: CONTROL_HEIGHT
|
||||||
// </Tooltip>
|
}}
|
||||||
// );
|
>
|
||||||
// }}
|
<div style={{ flex: "1 1 auto", minWidth: 0 }}>
|
||||||
// </Form.Item>
|
<Form.Item noStyle {...bindProps}>
|
||||||
// ),
|
<CurrencyInput
|
||||||
|
min={0}
|
||||||
|
disabled={disabled}
|
||||||
|
controls={false}
|
||||||
|
style={{ width: "100%", height: CONTROL_HEIGHT }}
|
||||||
|
onFocus={() => autofillActualCost(index)}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Form.Item shouldUpdate noStyle>
|
||||||
|
{() => {
|
||||||
|
const all = getFieldsValue(["billlines"]);
|
||||||
|
const line = all?.billlines?.[index];
|
||||||
|
if (!line) return null;
|
||||||
|
|
||||||
|
const ap = toNumber(line.actual_price);
|
||||||
|
const ac = toNumber(line.actual_cost);
|
||||||
|
|
||||||
|
let lineDiscount = 0;
|
||||||
|
if (Number.isFinite(ap) && ap !== 0 && Number.isFinite(ac)) {
|
||||||
|
lineDiscount = 1 - ac / ap;
|
||||||
|
}
|
||||||
|
|
||||||
|
const statusColor = getIndicatorColor(lineDiscount);
|
||||||
|
const shell = getIndicatorShellStyles(statusColor);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Tooltip title={`${(lineDiscount * 100).toFixed(2) || 0}%`}>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
height: CONTROL_HEIGHT,
|
||||||
|
minWidth: CONTROL_HEIGHT,
|
||||||
|
padding: "0 10px",
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "center",
|
||||||
|
boxSizing: "border-box",
|
||||||
|
borderStyle: "solid",
|
||||||
|
borderWidth: 1,
|
||||||
|
borderLeftWidth: 0,
|
||||||
|
...shell,
|
||||||
|
borderTopRightRadius: 6,
|
||||||
|
borderBottomRightRadius: 6
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<DollarCircleFilled style={{ color: statusColor, lineHeight: 1 }} />
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
</Form.Item>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t("billlines.fields.cost_center"),
|
title: t("billlines.fields.cost_center"),
|
||||||
dataIndex: "cost_center",
|
dataIndex: "cost_center",
|
||||||
editable: true,
|
editable: true,
|
||||||
|
formItemProps: (field) => ({
|
||||||
formItemProps: (field) => {
|
key: `${field.index}cost_center`,
|
||||||
return {
|
name: [field.name, "cost_center"],
|
||||||
key: `${field.index}cost_center`,
|
label: t("billlines.fields.cost_center"),
|
||||||
name: [field.name, "cost_center"],
|
valuePropName: "value",
|
||||||
label: t("billlines.fields.cost_center"),
|
rules: [{ required: true }]
|
||||||
valuePropName: "value",
|
}),
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
required: true
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
formInput: () => (
|
formInput: () => (
|
||||||
<Select showSearch style={{ minWidth: "3rem" }} disabled={disabled}>
|
<Select showSearch style={{ minWidth: "3rem" }} disabled={disabled}>
|
||||||
{bodyshopHasDmsKey(bodyshop)
|
{bodyshopHasDmsKey(bodyshop)
|
||||||
@@ -347,12 +408,10 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "location",
|
dataIndex: "location",
|
||||||
editable: true,
|
editable: true,
|
||||||
label: t("billlines.fields.location"),
|
label: t("billlines.fields.location"),
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
key: `${field.index}location`,
|
||||||
key: `${field.index}location`,
|
name: [field.name, "location"]
|
||||||
name: [field.name, "location"]
|
}),
|
||||||
};
|
|
||||||
},
|
|
||||||
formInput: () => (
|
formInput: () => (
|
||||||
<Select disabled={disabled}>
|
<Select disabled={disabled}>
|
||||||
{bodyshop.md_parts_locations.map((loc, idx) => (
|
{bodyshop.md_parts_locations.map((loc, idx) => (
|
||||||
@@ -369,25 +428,19 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "deductedfromlbr",
|
dataIndex: "deductedfromlbr",
|
||||||
editable: true,
|
editable: true,
|
||||||
width: "40px",
|
width: "40px",
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
valuePropName: "checked",
|
||||||
valuePropName: "checked",
|
key: `${field.index}deductedfromlbr`,
|
||||||
key: `${field.index}deductedfromlbr`,
|
name: [field.name, "deductedfromlbr"]
|
||||||
name: [field.name, "deductedfromlbr"]
|
}),
|
||||||
};
|
|
||||||
},
|
|
||||||
formInput: () => <Switch disabled={disabled} />,
|
formInput: () => <Switch disabled={disabled} />,
|
||||||
additional: (record, index) => (
|
additional: (record, index) => (
|
||||||
<Form.Item shouldUpdate noStyle style={{ display: "inline-block" }}>
|
<Form.Item shouldUpdate noStyle style={{ display: "inline-block" }}>
|
||||||
{() => {
|
{() => {
|
||||||
const price = getFieldValue(["billlines", record.name, "actual_price"]);
|
const price = getFieldValue(["billlines", record.name, "actual_price"]);
|
||||||
|
|
||||||
const adjustmentRate = getFieldValue(["billlines", record.name, "lbr_adjustment", "rate"]);
|
const adjustmentRate = getFieldValue(["billlines", record.name, "lbr_adjustment", "rate"]);
|
||||||
|
|
||||||
const billline = getFieldValue(["billlines", record.name]);
|
const billline = getFieldValue(["billlines", record.name]);
|
||||||
|
|
||||||
const jobline = lineData.find((line) => line.id === billline?.joblineid);
|
const jobline = lineData.find((line) => line.id === billline?.joblineid);
|
||||||
|
|
||||||
const employeeTeamName = bodyshop.employee_teams.find((team) => team.id === jobline?.assigned_team);
|
const employeeTeamName = bodyshop.employee_teams.find((team) => team.id === jobline?.assigned_team);
|
||||||
|
|
||||||
if (getFieldValue(["billlines", record.name, "deductedfromlbr"]))
|
if (getFieldValue(["billlines", record.name, "deductedfromlbr"]))
|
||||||
@@ -395,9 +448,7 @@ export function BillEnterModalLinesComponent({
|
|||||||
<div>
|
<div>
|
||||||
{Enhanced_Payroll.treatment === "on" ? (
|
{Enhanced_Payroll.treatment === "on" ? (
|
||||||
<Space>
|
<Space>
|
||||||
{t("joblines.fields.assigned_team", {
|
{t("joblines.fields.assigned_team", { name: employeeTeamName?.name })}
|
||||||
name: employeeTeamName?.name
|
|
||||||
})}
|
|
||||||
{`${jobline.mod_lb_hrs} units/${t(`joblines.fields.lbr_types.${jobline.mod_lbr_ty}`)}`}
|
{`${jobline.mod_lb_hrs} units/${t(`joblines.fields.lbr_types.${jobline.mod_lbr_ty}`)}`}
|
||||||
</Space>
|
</Space>
|
||||||
) : null}
|
) : null}
|
||||||
@@ -406,12 +457,7 @@ export function BillEnterModalLinesComponent({
|
|||||||
label={t("joblines.fields.mod_lbr_ty")}
|
label={t("joblines.fields.mod_lbr_ty")}
|
||||||
key={`${index}modlbrty`}
|
key={`${index}modlbrty`}
|
||||||
initialValue={jobline ? jobline.mod_lbr_ty : null}
|
initialValue={jobline ? jobline.mod_lbr_ty : null}
|
||||||
rules={[
|
rules={[{ required: true }]}
|
||||||
{
|
|
||||||
required: true
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
name={[record.name, "lbr_adjustment", "mod_lbr_ty"]}
|
name={[record.name, "lbr_adjustment", "mod_lbr_ty"]}
|
||||||
>
|
>
|
||||||
<Select allowClear>
|
<Select allowClear>
|
||||||
@@ -431,16 +477,12 @@ export function BillEnterModalLinesComponent({
|
|||||||
<Select.Option value="LA4">{t("joblines.fields.lbr_types.LA4")}</Select.Option>
|
<Select.Option value="LA4">{t("joblines.fields.lbr_types.LA4")}</Select.Option>
|
||||||
</Select>
|
</Select>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
{Enhanced_Payroll.treatment === "on" ? (
|
{Enhanced_Payroll.treatment === "on" ? (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label={t("billlines.labels.mod_lbr_adjustment")}
|
label={t("billlines.labels.mod_lbr_adjustment")}
|
||||||
name={[record.name, "lbr_adjustment", "mod_lb_hrs"]}
|
name={[record.name, "lbr_adjustment", "mod_lb_hrs"]}
|
||||||
rules={[
|
rules={[{ required: true }]}
|
||||||
{
|
|
||||||
required: true
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
>
|
>
|
||||||
<InputNumber precision={5} min={0.01} max={jobline ? jobline.mod_lb_hrs : 0} />
|
<InputNumber precision={5} min={0.01} max={jobline ? jobline.mod_lb_hrs : 0} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
@@ -449,12 +491,7 @@ export function BillEnterModalLinesComponent({
|
|||||||
label={t("jobs.labels.adjustmentrate")}
|
label={t("jobs.labels.adjustmentrate")}
|
||||||
name={[record.name, "lbr_adjustment", "rate"]}
|
name={[record.name, "lbr_adjustment", "rate"]}
|
||||||
initialValue={bodyshop.default_adjustment_rate}
|
initialValue={bodyshop.default_adjustment_rate}
|
||||||
rules={[
|
rules={[{ required: true }]}
|
||||||
{
|
|
||||||
required: true
|
|
||||||
//message: t("general.validation.required"),
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
>
|
>
|
||||||
<InputNumber precision={2} min={0.01} />
|
<InputNumber precision={2} min={0.01} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
@@ -463,6 +500,7 @@ export function BillEnterModalLinesComponent({
|
|||||||
<Space>{price && adjustmentRate && `${(price / adjustmentRate).toFixed(1)} hrs`}</Space>
|
<Space>{price && adjustmentRate && `${(price / adjustmentRate).toFixed(1)} hrs`}</Space>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
return <></>;
|
return <></>;
|
||||||
}}
|
}}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
@@ -477,17 +515,11 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "applicable_taxes.federal",
|
dataIndex: "applicable_taxes.federal",
|
||||||
editable: true,
|
editable: true,
|
||||||
width: "40px",
|
width: "40px",
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
key: `${field.index}fedtax`,
|
||||||
key: `${field.index}fedtax`,
|
valuePropName: "checked",
|
||||||
valuePropName: "checked",
|
name: [field.name, "applicable_taxes", "federal"]
|
||||||
initialValue: InstanceRenderManager({
|
}),
|
||||||
imex: true,
|
|
||||||
rome: false
|
|
||||||
}),
|
|
||||||
name: [field.name, "applicable_taxes", "federal"]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
formInput: () => <Switch disabled={disabled} />
|
formInput: () => <Switch disabled={disabled} />
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -498,13 +530,11 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "applicable_taxes.state",
|
dataIndex: "applicable_taxes.state",
|
||||||
editable: true,
|
editable: true,
|
||||||
width: "40px",
|
width: "40px",
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
key: `${field.index}statetax`,
|
||||||
key: `${field.index}statetax`,
|
valuePropName: "checked",
|
||||||
valuePropName: "checked",
|
name: [field.name, "applicable_taxes", "state"]
|
||||||
name: [field.name, "applicable_taxes", "state"]
|
}),
|
||||||
};
|
|
||||||
},
|
|
||||||
formInput: () => <Switch disabled={disabled} />
|
formInput: () => <Switch disabled={disabled} />
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -516,20 +546,18 @@ export function BillEnterModalLinesComponent({
|
|||||||
dataIndex: "applicable_taxes.local",
|
dataIndex: "applicable_taxes.local",
|
||||||
editable: true,
|
editable: true,
|
||||||
width: "40px",
|
width: "40px",
|
||||||
formItemProps: (field) => {
|
formItemProps: (field) => ({
|
||||||
return {
|
key: `${field.index}localtax`,
|
||||||
key: `${field.index}localtax`,
|
valuePropName: "checked",
|
||||||
valuePropName: "checked",
|
name: [field.name, "applicable_taxes", "local"]
|
||||||
name: [field.name, "applicable_taxes", "local"]
|
}),
|
||||||
};
|
|
||||||
},
|
|
||||||
formInput: () => <Switch disabled={disabled} />
|
formInput: () => <Switch disabled={disabled} />
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}),
|
}),
|
||||||
|
|
||||||
{
|
{
|
||||||
title: t("general.labels.actions"),
|
title: t("general.labels.actions"),
|
||||||
|
|
||||||
dataIndex: "actions",
|
dataIndex: "actions",
|
||||||
render: (text, record) => (
|
render: (text, record) => (
|
||||||
<Form.Item shouldUpdate noStyle>
|
<Form.Item shouldUpdate noStyle>
|
||||||
@@ -541,6 +569,7 @@ export function BillEnterModalLinesComponent({
|
|||||||
>
|
>
|
||||||
<DeleteFilled />
|
<DeleteFilled />
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
{Simple_Inventory.treatment === "on" && (
|
{Simple_Inventory.treatment === "on" && (
|
||||||
<BilllineAddInventory
|
<BilllineAddInventory
|
||||||
disabled={!billEdit || form.isFieldsTouched() || form.getFieldValue("is_credit_memo")}
|
disabled={!billEdit || form.isFieldsTouched() || form.getFieldValue("is_credit_memo")}
|
||||||
@@ -559,6 +588,7 @@ export function BillEnterModalLinesComponent({
|
|||||||
const mergedColumns = (remove) =>
|
const mergedColumns = (remove) =>
|
||||||
columns(remove).map((col) => {
|
columns(remove).map((col) => {
|
||||||
if (!col.editable) return col;
|
if (!col.editable) return col;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...col,
|
...col,
|
||||||
onCell: (record) => ({
|
onCell: (record) => ({
|
||||||
@@ -566,8 +596,8 @@ export function BillEnterModalLinesComponent({
|
|||||||
formItemProps: col.formItemProps,
|
formItemProps: col.formItemProps,
|
||||||
formInput: col.formInput,
|
formInput: col.formInput,
|
||||||
additional: col.additional,
|
additional: col.additional,
|
||||||
dataIndex: col.dataIndex,
|
wrapper: col.wrapper,
|
||||||
title: col.title
|
skipFormItem: col.skipFormItem
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@@ -586,33 +616,40 @@ export function BillEnterModalLinesComponent({
|
|||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
{(fields, { add, remove }) => {
|
{(fields, { add, remove }) => {
|
||||||
|
const hasRows = fields.length > 0;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Table
|
<Table
|
||||||
components={{
|
className="bill-lines-table"
|
||||||
body: {
|
components={{ body: { cell: EditableCell } }}
|
||||||
cell: EditableCell
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
size="small"
|
size="small"
|
||||||
bordered
|
bordered
|
||||||
dataSource={fields}
|
dataSource={fields}
|
||||||
columns={mergedColumns(remove)}
|
columns={mergedColumns(remove)}
|
||||||
scroll={{ x: true }}
|
scroll={hasRows ? { x: "max-content" } : undefined} // <-- no scrollbar when empty
|
||||||
pagination={false}
|
pagination={false}
|
||||||
rowClassName="editable-row"
|
rowClassName="editable-row"
|
||||||
/>
|
/>
|
||||||
<Form.Item>
|
|
||||||
<Button
|
<div style={{ marginTop: 12 }}>
|
||||||
disabled={disabled}
|
<Form.Item style={{ marginBottom: 0 }}>
|
||||||
onClick={() => {
|
<Button
|
||||||
add();
|
disabled={disabled}
|
||||||
}}
|
onClick={() => {
|
||||||
style={{ width: "100%" }}
|
add(
|
||||||
>
|
InstanceRenderManager({
|
||||||
{t("billlines.actions.newline")}
|
imex: { applicable_taxes: { federal: true } },
|
||||||
</Button>
|
rome: { applicable_taxes: { federal: false } }
|
||||||
</Form.Item>
|
})
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
>
|
||||||
|
{t("billlines.actions.newline")}
|
||||||
|
</Button>
|
||||||
|
</Form.Item>
|
||||||
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
@@ -623,18 +660,17 @@ export function BillEnterModalLinesComponent({
|
|||||||
export default connect(mapStateToProps, mapDispatchToProps)(BillEnterModalLinesComponent);
|
export default connect(mapStateToProps, mapDispatchToProps)(BillEnterModalLinesComponent);
|
||||||
|
|
||||||
const EditableCell = ({
|
const EditableCell = ({
|
||||||
dataIndex,
|
|
||||||
record,
|
record,
|
||||||
children,
|
children,
|
||||||
formInput,
|
formInput,
|
||||||
formItemProps,
|
formItemProps,
|
||||||
additional,
|
additional,
|
||||||
wrapper: Wrapper,
|
wrapper: Wrapper,
|
||||||
|
skipFormItem,
|
||||||
...restProps
|
...restProps
|
||||||
}) => {
|
}) => {
|
||||||
const rawProps = formItemProps?.(record);
|
const rawProps = formItemProps?.(record);
|
||||||
|
|
||||||
// DO NOT mutate rawProps; omit `key` immutably
|
|
||||||
const propsFinal = rawProps
|
const propsFinal = rawProps
|
||||||
? (() => {
|
? (() => {
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
@@ -643,36 +679,38 @@ const EditableCell = ({
|
|||||||
})()
|
})()
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
if (additional) {
|
const control = skipFormItem ? (
|
||||||
return (
|
(formInput && formInput(record, record.name, propsFinal)) || children
|
||||||
<td {...restProps}>
|
) : (
|
||||||
<div>
|
<Form.Item
|
||||||
<Form.Item name={dataIndex} labelCol={{ span: 0 }} {...propsFinal}>
|
labelCol={{ span: 0 }}
|
||||||
{(formInput && formInput(record, record.name)) || children}
|
{...propsFinal}
|
||||||
</Form.Item>
|
style={{ marginBottom: 0 }} // <-- important: remove default Form.Item margin
|
||||||
{additional(record, record.name)}
|
>
|
||||||
</div>
|
{(formInput && formInput(record, record.name, propsFinal)) || children}
|
||||||
</td>
|
</Form.Item>
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
if (Wrapper) {
|
const cellInner = additional ? (
|
||||||
return (
|
<div>
|
||||||
<Wrapper>
|
{control}
|
||||||
<td {...restProps}>
|
{additional(record, record.name)}
|
||||||
<Form.Item labelCol={{ span: 0 }} name={dataIndex} {...propsFinal}>
|
</div>
|
||||||
{(formInput && formInput(record, record.name)) || children}
|
) : (
|
||||||
</Form.Item>
|
control
|
||||||
</td>
|
);
|
||||||
</Wrapper>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
const { style: tdStyle, ...tdRest } = restProps;
|
||||||
<td {...restProps}>
|
|
||||||
<Form.Item labelCol={{ span: 0 }} name={dataIndex} {...propsFinal}>
|
const td = (
|
||||||
{(formInput && formInput(record, record.name)) || children}
|
<td
|
||||||
</Form.Item>
|
{...tdRest}
|
||||||
|
style={{ ...tdStyle, verticalAlign: "middle" }} // optional but helps consistency
|
||||||
|
>
|
||||||
|
{cellInner}
|
||||||
</td>
|
</td>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (Wrapper) return <Wrapper>{td}</Wrapper>;
|
||||||
|
return td;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ export function ChatPopupComponent({ chatVisible, selectedConversation, toggleCh
|
|||||||
|
|
||||||
hasLoadedConversationsOnceRef.current = true;
|
hasLoadedConversationsOnceRef.current = true;
|
||||||
|
|
||||||
getConversations({ offset: 0 }).catch((err) => {
|
getConversations({ variables: { offset: 0 } }).catch((err) => {
|
||||||
console.error(`Error fetching conversations: ${err?.message || ""}`, err);
|
console.error(`Error fetching conversations: ${err?.message || ""}`, err);
|
||||||
});
|
});
|
||||||
}, [getConversations]);
|
}, [getConversations]);
|
||||||
@@ -115,7 +115,7 @@ export function ChatPopupComponent({ chatVisible, selectedConversation, toggleCh
|
|||||||
if (called && typeof refetch === "function") {
|
if (called && typeof refetch === "function") {
|
||||||
await refetch({ variables: { offset: 0 } });
|
await refetch({ variables: { offset: 0 } });
|
||||||
} else {
|
} else {
|
||||||
await getConversations({ offset: 0 });
|
await getConversations({ variables: { offset: 0 } });
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(`Error refreshing conversations: ${err?.message || ""}`, err);
|
console.error(`Error refreshing conversations: ${err?.message || ""}`, err);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export function ChatTagRoContainer({ conversation, bodyshop }) {
|
|||||||
|
|
||||||
const executeSearch = (v) => {
|
const executeSearch = (v) => {
|
||||||
logImEXEvent("messaging_search_job_tag", { searchTerm: v });
|
logImEXEvent("messaging_search_job_tag", { searchTerm: v });
|
||||||
loadRo(v).catch((e) => console.error("Error in ChatTagRoContainer executeSearch:", e));
|
loadRo({ variables: v }).catch((e) => console.error("Error in ChatTagRoContainer executeSearch:", e));
|
||||||
};
|
};
|
||||||
|
|
||||||
const debouncedExecuteSearch = _.debounce(executeSearch, 500);
|
const debouncedExecuteSearch = _.debounce(executeSearch, 500);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export default function ContractCreateJobPrefillComponent({ jobId, form }) {
|
|||||||
const notification = useNotification();
|
const notification = useNotification();
|
||||||
|
|
||||||
const handleClick = () => {
|
const handleClick = () => {
|
||||||
call({ id: jobId });
|
call({ variables: { id: jobId } });
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@@ -35,8 +35,10 @@ export function ContractsFindModalContainer({ contractFinderModal, toggleModalVi
|
|||||||
|
|
||||||
//Execute contract find
|
//Execute contract find
|
||||||
callSearch({
|
callSearch({
|
||||||
plate: (values.plate && values.plate !== "" && values.plate) || undefined,
|
variables: {
|
||||||
time: values.time
|
plate: (values.plate && values.plate !== "" && values.plate) || undefined,
|
||||||
|
time: values.time
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ export function DmsCdkVehicles({ form, job }) {
|
|||||||
<Table
|
<Table
|
||||||
title={() => (
|
title={() => (
|
||||||
<Input.Search
|
<Input.Search
|
||||||
onSearch={(val) => callSearch({ search: val })}
|
onSearch={(val) => callSearch({ variables: { search: val } })}
|
||||||
placeholder={t("general.labels.search")}
|
placeholder={t("general.labels.search")}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
@@ -87,7 +87,9 @@ export function DmsCdkVehicles({ form, job }) {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
setOpen(true);
|
setOpen(true);
|
||||||
callSearch({
|
callSearch({
|
||||||
search: job?.v_model_desc && job.v_model_desc.substr(0, 3)
|
variables: {
|
||||||
|
search: job?.v_model_desc && job.v_model_desc.substr(0, 3)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ export function ScoreboardAddButton({ bodyshop, job, disabled, ...otherBtnProps
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (visibility) {
|
if (visibility) {
|
||||||
callQuery({ jobid: job.id });
|
callQuery({ variables: { jobid: job.id } });
|
||||||
}
|
}
|
||||||
}, [visibility, job.id, callQuery]);
|
}, [visibility, job.id, callQuery]);
|
||||||
|
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ export function JobsDetailHeaderActionsToggleProduction({
|
|||||||
open={popOverVisible}
|
open={popOverVisible}
|
||||||
onOpenChange={setPopOverVisible}
|
onOpenChange={setPopOverVisible}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
getJobDetails({ id: job.id });
|
getJobDetails({ variables: { id: job.id } });
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}}
|
}}
|
||||||
getPopupContainer={(trigger) => trigger.parentNode}
|
getPopupContainer={(trigger) => trigger.parentNode}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ const OwnerSearchSelect = ({ value, onChange, onBlur, disabled, ref }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const executeSearch = (v) => {
|
const executeSearch = (v) => {
|
||||||
if (v && v.variables?.search !== "" && v.variables.search.length >= 2) callSearch(v);
|
if (v && v.variables?.search !== "" && v.variables.search.length >= 2) callSearch({ variables: v.variables });
|
||||||
};
|
};
|
||||||
const debouncedExecuteSearch = _.debounce(executeSearch, 500);
|
const debouncedExecuteSearch = _.debounce(executeSearch, 500);
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ const OwnerSearchSelect = ({ value, onChange, onBlur, disabled, ref }) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (value === option && value) {
|
if (value === option && value) {
|
||||||
callIdSearch({ id: value });
|
callIdSearch({ variables: { id: value } });
|
||||||
}
|
}
|
||||||
}, [value, option, callIdSearch]);
|
}, [value, option, callIdSearch]);
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,9 @@ export function PartsOrderListTableDrawerComponent({
|
|||||||
if (selectedPartsOrderRecord?.returnfrombill) {
|
if (selectedPartsOrderRecord?.returnfrombill) {
|
||||||
try {
|
try {
|
||||||
const { data } = await billQuery({
|
const { data } = await billQuery({
|
||||||
billid: selectedPartsOrderRecord.returnfrombill
|
variables: {
|
||||||
|
billid: selectedPartsOrderRecord.returnfrombill
|
||||||
|
}
|
||||||
});
|
});
|
||||||
setBillData(data);
|
setBillData(data);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -258,9 +258,10 @@ export function ReportCenterModalComponent({ reportCenterModal, bodyshop }) {
|
|||||||
form.setFieldsValue({ id: null });
|
form.setFieldsValue({ id: null });
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!vendorCalled && idtype === "vendor") callVendorQuery();
|
if (!vendorCalled && idtype === "vendor") callVendorQuery({ variables: {} });
|
||||||
if (!employeeCalled && idtype === "employee") callEmployeeQuery();
|
if (!employeeCalled && idtype === "employee") callEmployeeQuery({ variables: {} });
|
||||||
if (!employeeWithEmailCalled && idtype === "employeeWithEmail") callEmployeeWithEmailQuery();
|
if (!employeeWithEmailCalled && idtype === "employeeWithEmail")
|
||||||
|
callEmployeeWithEmailQuery({ variables: {} });
|
||||||
if (idtype === "vendor")
|
if (idtype === "vendor")
|
||||||
return (
|
return (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ export default function ScheduleProductionList() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Popover content={content} trigger="click" placement="bottomRight">
|
<Popover content={content} trigger="click" placement="bottomRight">
|
||||||
<Button onClick={() => callQuery()}>
|
<Button onClick={() => callQuery({ variables: {} })}>
|
||||||
{t("appointments.labels.inproduction")}
|
{t("appointments.labels.inproduction")}
|
||||||
<DownOutlined />
|
<DownOutlined />
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ const VehicleSearchSelect = ({ value, onChange, onBlur, disabled, ref }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const executeSearch = (v) => {
|
const executeSearch = (v) => {
|
||||||
if (v && v.variables?.search !== "" && v.variables.search.length >= 2) callSearch(v);
|
if (v && v.variables?.search !== "" && v.variables.search.length >= 2) callSearch({ variables: v.variables });
|
||||||
};
|
};
|
||||||
const debouncedExecuteSearch = _.debounce(executeSearch, 500);
|
const debouncedExecuteSearch = _.debounce(executeSearch, 500);
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ const VehicleSearchSelect = ({ value, onChange, onBlur, disabled, ref }) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (value === option && value) {
|
if (value === option && value) {
|
||||||
callIdSearch({ id: value });
|
callIdSearch({ variables: { id: value } });
|
||||||
}
|
}
|
||||||
}, [value, option, callIdSearch]);
|
}, [value, option, callIdSearch]);
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ function JobsCreateContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, curr
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (state.owner.selectedid) {
|
if (state.owner.selectedid) {
|
||||||
loadOwner({ id: state.owner.selectedid });
|
loadOwner({ variables: { id: state.owner.selectedid } });
|
||||||
}
|
}
|
||||||
}, [state.owner.selectedid, loadOwner]);
|
}, [state.owner.selectedid, loadOwner]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user