mirror of
https://github.com/Kingsrook/qqq-frontend-material-dashboard.git
synced 2025-07-17 21:00:45 +00:00
SPRINT-20: several widget updates, saved filters updates, updates unified widget/view/edit record screen section/widget headers
This commit is contained in:
440
package-lock.json
generated
440
package-lock.json
generated
@ -11,7 +11,7 @@
|
|||||||
"@auth0/auth0-react": "1.10.2",
|
"@auth0/auth0-react": "1.10.2",
|
||||||
"@emotion/react": "11.7.1",
|
"@emotion/react": "11.7.1",
|
||||||
"@emotion/styled": "11.6.0",
|
"@emotion/styled": "11.6.0",
|
||||||
"@kingsrook/qqq-frontend-core": "1.0.48",
|
"@kingsrook/qqq-frontend-core": "1.0.51",
|
||||||
"@mui/icons-material": "5.4.1",
|
"@mui/icons-material": "5.4.1",
|
||||||
"@mui/material": "5.11.1",
|
"@mui/material": "5.11.1",
|
||||||
"@mui/styles": "5.11.1",
|
"@mui/styles": "5.11.1",
|
||||||
@ -542,9 +542,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.20.13",
|
"version": "7.20.15",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz",
|
||||||
"integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==",
|
"integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==",
|
||||||
"bin": {
|
"bin": {
|
||||||
"parser": "bin/babel-parser.js"
|
"parser": "bin/babel-parser.js"
|
||||||
},
|
},
|
||||||
@ -1175,9 +1175,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/plugin-transform-block-scoping": {
|
"node_modules/@babel/plugin-transform-block-scoping": {
|
||||||
"version": "7.20.14",
|
"version": "7.20.15",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.14.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz",
|
||||||
"integrity": "sha512-sMPepQtsOs5fM1bwNvuJJHvaCfOEQfmc01FGw0ELlTpTJj5Ql/zuNRRldYhAPys4ghXdBIQJbRVYi44/7QflQQ==",
|
"integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-plugin-utils": "^7.20.2"
|
"@babel/helper-plugin-utils": "^7.20.2"
|
||||||
@ -1909,6 +1909,12 @@
|
|||||||
"@babel/core": "^7.0.0-0"
|
"@babel/core": "^7.0.0-0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@babel/regjsgen": {
|
||||||
|
"version": "0.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
|
||||||
|
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/@babel/runtime": {
|
"node_modules/@babel/runtime": {
|
||||||
"version": "7.20.13",
|
"version": "7.20.13",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
|
||||||
@ -3354,9 +3360,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@kingsrook/qqq-frontend-core": {
|
"node_modules/@kingsrook/qqq-frontend-core": {
|
||||||
"version": "1.0.48",
|
"version": "1.0.51",
|
||||||
"resolved": "https://npm.pkg.github.com/download/@Kingsrook/qqq-frontend-core/1.0.48/27c1a09d17eccc82cf07c76db8c74ee89a92161e",
|
"resolved": "https://npm.pkg.github.com/download/@Kingsrook/qqq-frontend-core/1.0.51/b4c2324c74f5171123cb87b87e52f4b3d45b5ab9",
|
||||||
"integrity": "sha512-781sx4RxIh6x5azNh+Nh5wtP5dPZ8nprTYVPNrBH0XsPB397bxgF3+bjfdtDFpaBkRAWuCiKoVEcz5eJZtT9dg==",
|
"integrity": "sha512-Elpb+t1pLlpKTkFNiy1xaHPt8cloDRFe7ud6w48I9wIhYAOkObXPlXz+ubo+gIh7GJ4dLqsp+RqIcQQGnOCBTg==",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "0.27.2",
|
"axios": "0.27.2",
|
||||||
@ -3402,9 +3408,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/core-downloads-tracker": {
|
"node_modules/@mui/core-downloads-tracker": {
|
||||||
"version": "5.11.7",
|
"version": "5.11.8",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.7.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.8.tgz",
|
||||||
"integrity": "sha512-lZgX7XQTk0zVcpwEa80r+T4y09dosnUxWvFPSikU/2Hh5wnyNOek8WfJwGCNsaRiXJHMi5eHY+z8oku4u5lgNw==",
|
"integrity": "sha512-n/uJRIwZAaJaROaOA4VzycxDo27cusnrRzfycnAkAP5gBndwOJQ1CXjd1Y7hJe5eorj/ukixC7IZD+qCClMCMg==",
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
"url": "https://opencollective.com/mui"
|
"url": "https://opencollective.com/mui"
|
||||||
@ -3506,11 +3512,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/styled-engine": {
|
"node_modules/@mui/styled-engine": {
|
||||||
"version": "5.11.0",
|
"version": "5.11.8",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.8.tgz",
|
||||||
"integrity": "sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ==",
|
"integrity": "sha512-iSpZp9AoeictsDi5xAQ4PGXu7mKtQyzMl7ZaWpHIGMFpsNnfY3NQNg+wkj/gpsAZ+Zg+IIyD+t+ig71Kr9fa0w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.6",
|
"@babel/runtime": "^7.20.7",
|
||||||
"@emotion/cache": "^11.10.5",
|
"@emotion/cache": "^11.10.5",
|
||||||
"csstype": "^3.1.1",
|
"csstype": "^3.1.1",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
@ -4378,9 +4384,9 @@
|
|||||||
"integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
|
"integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/eslint": {
|
"node_modules/@types/eslint": {
|
||||||
"version": "8.4.10",
|
"version": "8.21.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
|
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz",
|
||||||
"integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
|
"integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/estree": "*",
|
"@types/estree": "*",
|
||||||
@ -4404,13 +4410,13 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/express": {
|
"node_modules/@types/express": {
|
||||||
"version": "4.17.16",
|
"version": "4.17.17",
|
||||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz",
|
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
|
||||||
"integrity": "sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==",
|
"integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/body-parser": "*",
|
"@types/body-parser": "*",
|
||||||
"@types/express-serve-static-core": "^4.17.31",
|
"@types/express-serve-static-core": "^4.17.33",
|
||||||
"@types/qs": "*",
|
"@types/qs": "*",
|
||||||
"@types/serve-static": "*"
|
"@types/serve-static": "*"
|
||||||
}
|
}
|
||||||
@ -4805,12 +4811,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/experimental-utils": {
|
"node_modules/@typescript-eslint/experimental-utils": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.51.0.tgz",
|
||||||
"integrity": "sha512-gZIhzNRivy0RVqcxjKnQ+ipGc0qolilhBeNmvH+Dvu7Vymug+IfiYxTj2zM7mIlHsw6Q5aH7L7WmuTE3tZyzag==",
|
"integrity": "sha512-8/3+ZyBENl2aog1/QB3S39ptkZ2oRhDB+sJt15UWXBE3skgwL1C8BN9RjpOyhTejwR2hVrvqEjcYcNY6qtZ7nw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/utils": "5.50.0"
|
"@typescript-eslint/utils": "5.51.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@ -4824,13 +4830,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz",
|
||||||
"integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==",
|
"integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/visitor-keys": "5.50.0"
|
"@typescript-eslint/visitor-keys": "5.51.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@ -4841,9 +4847,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz",
|
||||||
"integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==",
|
"integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@ -4854,13 +4860,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz",
|
||||||
"integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==",
|
"integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/visitor-keys": "5.50.0",
|
"@typescript-eslint/visitor-keys": "5.51.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
@ -4881,16 +4887,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz",
|
||||||
"integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==",
|
"integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@types/semver": "^7.3.12",
|
"@types/semver": "^7.3.12",
|
||||||
"@typescript-eslint/scope-manager": "5.50.0",
|
"@typescript-eslint/scope-manager": "5.51.0",
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/typescript-estree": "5.50.0",
|
"@typescript-eslint/typescript-estree": "5.51.0",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0",
|
"eslint-utils": "^3.0.0",
|
||||||
"semver": "^7.3.7"
|
"semver": "^7.3.7"
|
||||||
@ -4907,12 +4913,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz",
|
||||||
"integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==",
|
"integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -6529,9 +6535,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001450",
|
"version": "1.0.30001451",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz",
|
||||||
"integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==",
|
"integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@ -8226,9 +8232,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.284",
|
"version": "1.4.291",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.291.tgz",
|
||||||
"integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA=="
|
"integrity": "sha512-8vk4rSMBh9LRfZKE6wcxOLmlfA4Xsa4v0RRwB6VJkAH703klC9XfZIocmTk2gLBzW31P6XbuNeMt1aB5aAu/2g=="
|
||||||
},
|
},
|
||||||
"node_modules/emittery": {
|
"node_modules/emittery": {
|
||||||
"version": "0.8.1",
|
"version": "0.8.1",
|
||||||
@ -8897,9 +8903,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-testing-library": {
|
"node_modules/eslint-plugin-testing-library": {
|
||||||
"version": "5.10.0",
|
"version": "5.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.1.tgz",
|
||||||
"integrity": "sha512-aTOsCAEI9trrX3TLOnsskfhe57DmsjP/yMKLPqg4ftdRvfR4qut2PGWUa8TwP7whZbwMzJjh98tgAPcE8vdHow==",
|
"integrity": "sha512-GRy87AqUi2Ij69pe0YnOXm3oGBCgnFwfIv+Hu9q/kT3jL0pX1cXA7aO+oJnvdpbJy2+riOPqGsa3iAkL888NLg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/utils": "^5.43.0"
|
"@typescript-eslint/utils": "^5.43.0"
|
||||||
@ -8913,13 +8919,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz",
|
||||||
"integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==",
|
"integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/visitor-keys": "5.50.0"
|
"@typescript-eslint/visitor-keys": "5.51.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@ -8930,9 +8936,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": {
|
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz",
|
||||||
"integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==",
|
"integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||||
@ -8943,13 +8949,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz",
|
||||||
"integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==",
|
"integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/visitor-keys": "5.50.0",
|
"@typescript-eslint/visitor-keys": "5.51.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
@ -8970,16 +8976,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/utils": {
|
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/utils": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz",
|
||||||
"integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==",
|
"integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@types/semver": "^7.3.12",
|
"@types/semver": "^7.3.12",
|
||||||
"@typescript-eslint/scope-manager": "5.50.0",
|
"@typescript-eslint/scope-manager": "5.51.0",
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/typescript-estree": "5.50.0",
|
"@typescript-eslint/typescript-estree": "5.51.0",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0",
|
"eslint-utils": "^3.0.0",
|
||||||
"semver": "^7.3.7"
|
"semver": "^7.3.7"
|
||||||
@ -8996,12 +9002,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz",
|
||||||
"integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==",
|
"integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -15051,9 +15057,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
"version": "2.0.9",
|
"version": "2.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
|
||||||
"integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA=="
|
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
|
||||||
},
|
},
|
||||||
"node_modules/normalize-path": {
|
"node_modules/normalize-path": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
@ -15297,9 +15303,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/open": {
|
"node_modules/open": {
|
||||||
"version": "8.4.0",
|
"version": "8.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz",
|
||||||
"integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
|
"integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"define-lazy-prop": "^2.0.0",
|
"define-lazy-prop": "^2.0.0",
|
||||||
@ -16151,9 +16157,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-js": {
|
"node_modules/postcss-js": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
|
||||||
"integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
|
"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"camelcase-css": "^2.0.1"
|
"camelcase-css": "^2.0.1"
|
||||||
@ -16166,7 +16172,7 @@
|
|||||||
"url": "https://opencollective.com/postcss/"
|
"url": "https://opencollective.com/postcss/"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"postcss": "^8.3.3"
|
"postcss": "^8.4.21"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-lab-function": {
|
"node_modules/postcss-lab-function": {
|
||||||
@ -17752,14 +17758,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/regexpu-core": {
|
"node_modules/regexpu-core": {
|
||||||
"version": "5.2.2",
|
"version": "5.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz",
|
||||||
"integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==",
|
"integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@babel/regjsgen": "^0.8.0",
|
||||||
"regenerate": "^1.4.2",
|
"regenerate": "^1.4.2",
|
||||||
"regenerate-unicode-properties": "^10.1.0",
|
"regenerate-unicode-properties": "^10.1.0",
|
||||||
"regjsgen": "^0.7.1",
|
|
||||||
"regjsparser": "^0.9.1",
|
"regjsparser": "^0.9.1",
|
||||||
"unicode-match-property-ecmascript": "^2.0.0",
|
"unicode-match-property-ecmascript": "^2.0.0",
|
||||||
"unicode-match-property-value-ecmascript": "^2.1.0"
|
"unicode-match-property-value-ecmascript": "^2.1.0"
|
||||||
@ -17768,12 +17774,6 @@
|
|||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/regjsgen": {
|
|
||||||
"version": "0.7.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz",
|
|
||||||
"integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/regjsparser": {
|
"node_modules/regjsparser": {
|
||||||
"version": "0.9.1",
|
"version": "0.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
|
||||||
@ -19081,9 +19081,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/tailwindcss": {
|
"node_modules/tailwindcss": {
|
||||||
"version": "3.2.4",
|
"version": "3.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.6.tgz",
|
||||||
"integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
|
"integrity": "sha512-BfgQWZrtqowOQMC2bwaSNe7xcIjdDEgixWGYOd6AL0CbKHJlvhfdbINeAW76l1sO+1ov/MJ93ODJ9yluRituIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"arg": "^5.0.2",
|
"arg": "^5.0.2",
|
||||||
@ -19100,12 +19100,12 @@
|
|||||||
"normalize-path": "^3.0.0",
|
"normalize-path": "^3.0.0",
|
||||||
"object-hash": "^3.0.0",
|
"object-hash": "^3.0.0",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"postcss": "^8.4.18",
|
"postcss": "^8.0.9",
|
||||||
"postcss-import": "^14.1.0",
|
"postcss-import": "^14.1.0",
|
||||||
"postcss-js": "^4.0.0",
|
"postcss-js": "^4.0.0",
|
||||||
"postcss-load-config": "^3.1.4",
|
"postcss-load-config": "^3.1.4",
|
||||||
"postcss-nested": "6.0.0",
|
"postcss-nested": "6.0.0",
|
||||||
"postcss-selector-parser": "^6.0.10",
|
"postcss-selector-parser": "^6.0.11",
|
||||||
"postcss-value-parser": "^4.2.0",
|
"postcss-value-parser": "^4.2.0",
|
||||||
"quick-lru": "^5.1.1",
|
"quick-lru": "^5.1.1",
|
||||||
"resolve": "^1.22.1"
|
"resolve": "^1.22.1"
|
||||||
@ -19192,9 +19192,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/terser": {
|
"node_modules/terser": {
|
||||||
"version": "5.16.2",
|
"version": "5.16.3",
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.2.tgz",
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz",
|
||||||
"integrity": "sha512-JKuM+KvvWVqT7muHVyrwv7FVRPnmHDwF6XwoIxdbF5Witi0vu99RYpxDexpJndXt3jbZZmmWr2/mQa6HvSNdSg==",
|
"integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/source-map": "^0.3.2",
|
"@jridgewell/source-map": "^0.3.2",
|
||||||
@ -21147,9 +21147,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@babel/parser": {
|
"@babel/parser": {
|
||||||
"version": "7.20.13",
|
"version": "7.20.15",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz",
|
||||||
"integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw=="
|
"integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg=="
|
||||||
},
|
},
|
||||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
|
||||||
"version": "7.18.6",
|
"version": "7.18.6",
|
||||||
@ -21561,9 +21561,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@babel/plugin-transform-block-scoping": {
|
"@babel/plugin-transform-block-scoping": {
|
||||||
"version": "7.20.14",
|
"version": "7.20.15",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.14.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz",
|
||||||
"integrity": "sha512-sMPepQtsOs5fM1bwNvuJJHvaCfOEQfmc01FGw0ELlTpTJj5Ql/zuNRRldYhAPys4ghXdBIQJbRVYi44/7QflQQ==",
|
"integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/helper-plugin-utils": "^7.20.2"
|
"@babel/helper-plugin-utils": "^7.20.2"
|
||||||
@ -22052,6 +22052,12 @@
|
|||||||
"@babel/plugin-transform-typescript": "^7.18.6"
|
"@babel/plugin-transform-typescript": "^7.18.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@babel/regjsgen": {
|
||||||
|
"version": "0.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
|
||||||
|
"integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@babel/runtime": {
|
"@babel/runtime": {
|
||||||
"version": "7.20.13",
|
"version": "7.20.13",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
|
||||||
@ -23098,9 +23104,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@kingsrook/qqq-frontend-core": {
|
"@kingsrook/qqq-frontend-core": {
|
||||||
"version": "1.0.48",
|
"version": "1.0.51",
|
||||||
"resolved": "https://npm.pkg.github.com/download/@Kingsrook/qqq-frontend-core/1.0.48/27c1a09d17eccc82cf07c76db8c74ee89a92161e",
|
"resolved": "https://npm.pkg.github.com/download/@Kingsrook/qqq-frontend-core/1.0.51/b4c2324c74f5171123cb87b87e52f4b3d45b5ab9",
|
||||||
"integrity": "sha512-781sx4RxIh6x5azNh+Nh5wtP5dPZ8nprTYVPNrBH0XsPB397bxgF3+bjfdtDFpaBkRAWuCiKoVEcz5eJZtT9dg==",
|
"integrity": "sha512-Elpb+t1pLlpKTkFNiy1xaHPt8cloDRFe7ud6w48I9wIhYAOkObXPlXz+ubo+gIh7GJ4dLqsp+RqIcQQGnOCBTg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"axios": "0.27.2",
|
"axios": "0.27.2",
|
||||||
"form-data": "4.0.0"
|
"form-data": "4.0.0"
|
||||||
@ -23128,9 +23134,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/core-downloads-tracker": {
|
"@mui/core-downloads-tracker": {
|
||||||
"version": "5.11.7",
|
"version": "5.11.8",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.7.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.8.tgz",
|
||||||
"integrity": "sha512-lZgX7XQTk0zVcpwEa80r+T4y09dosnUxWvFPSikU/2Hh5wnyNOek8WfJwGCNsaRiXJHMi5eHY+z8oku4u5lgNw=="
|
"integrity": "sha512-n/uJRIwZAaJaROaOA4VzycxDo27cusnrRzfycnAkAP5gBndwOJQ1CXjd1Y7hJe5eorj/ukixC7IZD+qCClMCMg=="
|
||||||
},
|
},
|
||||||
"@mui/icons-material": {
|
"@mui/icons-material": {
|
||||||
"version": "5.4.1",
|
"version": "5.4.1",
|
||||||
@ -23170,11 +23176,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@mui/styled-engine": {
|
"@mui/styled-engine": {
|
||||||
"version": "5.11.0",
|
"version": "5.11.8",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.11.8.tgz",
|
||||||
"integrity": "sha512-AF06K60Zc58qf0f7X+Y/QjaHaZq16znliLnGc9iVrV/+s8Ln/FCoeNuFvhlCbZZQ5WQcJvcy59zp0nXrklGGPQ==",
|
"integrity": "sha512-iSpZp9AoeictsDi5xAQ4PGXu7mKtQyzMl7ZaWpHIGMFpsNnfY3NQNg+wkj/gpsAZ+Zg+IIyD+t+ig71Kr9fa0w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.20.6",
|
"@babel/runtime": "^7.20.7",
|
||||||
"@emotion/cache": "^11.10.5",
|
"@emotion/cache": "^11.10.5",
|
||||||
"csstype": "^3.1.1",
|
"csstype": "^3.1.1",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
@ -23719,9 +23725,9 @@
|
|||||||
"integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
|
"integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
|
||||||
},
|
},
|
||||||
"@types/eslint": {
|
"@types/eslint": {
|
||||||
"version": "8.4.10",
|
"version": "8.21.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz",
|
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz",
|
||||||
"integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==",
|
"integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/estree": "*",
|
"@types/estree": "*",
|
||||||
@ -23745,13 +23751,13 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/express": {
|
"@types/express": {
|
||||||
"version": "4.17.16",
|
"version": "4.17.17",
|
||||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz",
|
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
|
||||||
"integrity": "sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==",
|
"integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/body-parser": "*",
|
"@types/body-parser": "*",
|
||||||
"@types/express-serve-static-core": "^4.17.31",
|
"@types/express-serve-static-core": "^4.17.33",
|
||||||
"@types/qs": "*",
|
"@types/qs": "*",
|
||||||
"@types/serve-static": "*"
|
"@types/serve-static": "*"
|
||||||
}
|
}
|
||||||
@ -24123,38 +24129,38 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/experimental-utils": {
|
"@typescript-eslint/experimental-utils": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.51.0.tgz",
|
||||||
"integrity": "sha512-gZIhzNRivy0RVqcxjKnQ+ipGc0qolilhBeNmvH+Dvu7Vymug+IfiYxTj2zM7mIlHsw6Q5aH7L7WmuTE3tZyzag==",
|
"integrity": "sha512-8/3+ZyBENl2aog1/QB3S39ptkZ2oRhDB+sJt15UWXBE3skgwL1C8BN9RjpOyhTejwR2hVrvqEjcYcNY6qtZ7nw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/utils": "5.50.0"
|
"@typescript-eslint/utils": "5.51.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": {
|
"@typescript-eslint/scope-manager": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz",
|
||||||
"integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==",
|
"integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/visitor-keys": "5.50.0"
|
"@typescript-eslint/visitor-keys": "5.51.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/types": {
|
"@typescript-eslint/types": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz",
|
||||||
"integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==",
|
"integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@typescript-eslint/typescript-estree": {
|
"@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz",
|
||||||
"integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==",
|
"integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/visitor-keys": "5.50.0",
|
"@typescript-eslint/visitor-keys": "5.51.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
@ -24163,28 +24169,28 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/utils": {
|
"@typescript-eslint/utils": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz",
|
||||||
"integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==",
|
"integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@types/semver": "^7.3.12",
|
"@types/semver": "^7.3.12",
|
||||||
"@typescript-eslint/scope-manager": "5.50.0",
|
"@typescript-eslint/scope-manager": "5.51.0",
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/typescript-estree": "5.50.0",
|
"@typescript-eslint/typescript-estree": "5.51.0",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0",
|
"eslint-utils": "^3.0.0",
|
||||||
"semver": "^7.3.7"
|
"semver": "^7.3.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/visitor-keys": {
|
"@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz",
|
||||||
"integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==",
|
"integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -25390,9 +25396,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001450",
|
"version": "1.0.30001451",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz",
|
||||||
"integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew=="
|
"integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w=="
|
||||||
},
|
},
|
||||||
"case-sensitive-paths-webpack-plugin": {
|
"case-sensitive-paths-webpack-plugin": {
|
||||||
"version": "2.4.0",
|
"version": "2.4.0",
|
||||||
@ -26665,9 +26671,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-to-chromium": {
|
"electron-to-chromium": {
|
||||||
"version": "1.4.284",
|
"version": "1.4.291",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.291.tgz",
|
||||||
"integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA=="
|
"integrity": "sha512-8vk4rSMBh9LRfZKE6wcxOLmlfA4Xsa4v0RRwB6VJkAH703klC9XfZIocmTk2gLBzW31P6XbuNeMt1aB5aAu/2g=="
|
||||||
},
|
},
|
||||||
"emittery": {
|
"emittery": {
|
||||||
"version": "0.8.1",
|
"version": "0.8.1",
|
||||||
@ -27259,38 +27265,38 @@
|
|||||||
"requires": {}
|
"requires": {}
|
||||||
},
|
},
|
||||||
"eslint-plugin-testing-library": {
|
"eslint-plugin-testing-library": {
|
||||||
"version": "5.10.0",
|
"version": "5.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.1.tgz",
|
||||||
"integrity": "sha512-aTOsCAEI9trrX3TLOnsskfhe57DmsjP/yMKLPqg4ftdRvfR4qut2PGWUa8TwP7whZbwMzJjh98tgAPcE8vdHow==",
|
"integrity": "sha512-GRy87AqUi2Ij69pe0YnOXm3oGBCgnFwfIv+Hu9q/kT3jL0pX1cXA7aO+oJnvdpbJy2+riOPqGsa3iAkL888NLg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/utils": "^5.43.0"
|
"@typescript-eslint/utils": "^5.43.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": {
|
"@typescript-eslint/scope-manager": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz",
|
||||||
"integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==",
|
"integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/visitor-keys": "5.50.0"
|
"@typescript-eslint/visitor-keys": "5.51.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/types": {
|
"@typescript-eslint/types": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz",
|
||||||
"integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==",
|
"integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@typescript-eslint/typescript-estree": {
|
"@typescript-eslint/typescript-estree": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz",
|
||||||
"integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==",
|
"integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/visitor-keys": "5.50.0",
|
"@typescript-eslint/visitor-keys": "5.51.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"globby": "^11.1.0",
|
"globby": "^11.1.0",
|
||||||
"is-glob": "^4.0.3",
|
"is-glob": "^4.0.3",
|
||||||
@ -27299,28 +27305,28 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/utils": {
|
"@typescript-eslint/utils": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz",
|
||||||
"integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==",
|
"integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/json-schema": "^7.0.9",
|
"@types/json-schema": "^7.0.9",
|
||||||
"@types/semver": "^7.3.12",
|
"@types/semver": "^7.3.12",
|
||||||
"@typescript-eslint/scope-manager": "5.50.0",
|
"@typescript-eslint/scope-manager": "5.51.0",
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"@typescript-eslint/typescript-estree": "5.50.0",
|
"@typescript-eslint/typescript-estree": "5.51.0",
|
||||||
"eslint-scope": "^5.1.1",
|
"eslint-scope": "^5.1.1",
|
||||||
"eslint-utils": "^3.0.0",
|
"eslint-utils": "^3.0.0",
|
||||||
"semver": "^7.3.7"
|
"semver": "^7.3.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@typescript-eslint/visitor-keys": {
|
"@typescript-eslint/visitor-keys": {
|
||||||
"version": "5.50.0",
|
"version": "5.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz",
|
||||||
"integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==",
|
"integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@typescript-eslint/types": "5.50.0",
|
"@typescript-eslint/types": "5.51.0",
|
||||||
"eslint-visitor-keys": "^3.3.0"
|
"eslint-visitor-keys": "^3.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -31759,9 +31765,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node-releases": {
|
"node-releases": {
|
||||||
"version": "2.0.9",
|
"version": "2.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
|
||||||
"integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA=="
|
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
|
||||||
},
|
},
|
||||||
"normalize-path": {
|
"normalize-path": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
@ -31933,9 +31939,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"open": {
|
"open": {
|
||||||
"version": "8.4.0",
|
"version": "8.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz",
|
||||||
"integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
|
"integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"define-lazy-prop": "^2.0.0",
|
"define-lazy-prop": "^2.0.0",
|
||||||
@ -32488,9 +32494,9 @@
|
|||||||
"requires": {}
|
"requires": {}
|
||||||
},
|
},
|
||||||
"postcss-js": {
|
"postcss-js": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
|
||||||
"integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
|
"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"camelcase-css": "^2.0.1"
|
"camelcase-css": "^2.0.1"
|
||||||
@ -33598,25 +33604,19 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"regexpu-core": {
|
"regexpu-core": {
|
||||||
"version": "5.2.2",
|
"version": "5.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.0.tgz",
|
||||||
"integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==",
|
"integrity": "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"@babel/regjsgen": "^0.8.0",
|
||||||
"regenerate": "^1.4.2",
|
"regenerate": "^1.4.2",
|
||||||
"regenerate-unicode-properties": "^10.1.0",
|
"regenerate-unicode-properties": "^10.1.0",
|
||||||
"regjsgen": "^0.7.1",
|
|
||||||
"regjsparser": "^0.9.1",
|
"regjsparser": "^0.9.1",
|
||||||
"unicode-match-property-ecmascript": "^2.0.0",
|
"unicode-match-property-ecmascript": "^2.0.0",
|
||||||
"unicode-match-property-value-ecmascript": "^2.1.0"
|
"unicode-match-property-value-ecmascript": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"regjsgen": {
|
|
||||||
"version": "0.7.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz",
|
|
||||||
"integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"regjsparser": {
|
"regjsparser": {
|
||||||
"version": "0.9.1",
|
"version": "0.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
|
||||||
@ -34609,9 +34609,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"tailwindcss": {
|
"tailwindcss": {
|
||||||
"version": "3.2.4",
|
"version": "3.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.6.tgz",
|
||||||
"integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
|
"integrity": "sha512-BfgQWZrtqowOQMC2bwaSNe7xcIjdDEgixWGYOd6AL0CbKHJlvhfdbINeAW76l1sO+1ov/MJ93ODJ9yluRituIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"arg": "^5.0.2",
|
"arg": "^5.0.2",
|
||||||
@ -34628,12 +34628,12 @@
|
|||||||
"normalize-path": "^3.0.0",
|
"normalize-path": "^3.0.0",
|
||||||
"object-hash": "^3.0.0",
|
"object-hash": "^3.0.0",
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"postcss": "^8.4.18",
|
"postcss": "^8.0.9",
|
||||||
"postcss-import": "^14.1.0",
|
"postcss-import": "^14.1.0",
|
||||||
"postcss-js": "^4.0.0",
|
"postcss-js": "^4.0.0",
|
||||||
"postcss-load-config": "^3.1.4",
|
"postcss-load-config": "^3.1.4",
|
||||||
"postcss-nested": "6.0.0",
|
"postcss-nested": "6.0.0",
|
||||||
"postcss-selector-parser": "^6.0.10",
|
"postcss-selector-parser": "^6.0.11",
|
||||||
"postcss-value-parser": "^4.2.0",
|
"postcss-value-parser": "^4.2.0",
|
||||||
"quick-lru": "^5.1.1",
|
"quick-lru": "^5.1.1",
|
||||||
"resolve": "^1.22.1"
|
"resolve": "^1.22.1"
|
||||||
@ -34690,9 +34690,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"terser": {
|
"terser": {
|
||||||
"version": "5.16.2",
|
"version": "5.16.3",
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.2.tgz",
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz",
|
||||||
"integrity": "sha512-JKuM+KvvWVqT7muHVyrwv7FVRPnmHDwF6XwoIxdbF5Witi0vu99RYpxDexpJndXt3jbZZmmWr2/mQa6HvSNdSg==",
|
"integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@jridgewell/source-map": "^0.3.2",
|
"@jridgewell/source-map": "^0.3.2",
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"@auth0/auth0-react": "1.10.2",
|
"@auth0/auth0-react": "1.10.2",
|
||||||
"@emotion/react": "11.7.1",
|
"@emotion/react": "11.7.1",
|
||||||
"@emotion/styled": "11.6.0",
|
"@emotion/styled": "11.6.0",
|
||||||
"@kingsrook/qqq-frontend-core": "1.0.50",
|
"@kingsrook/qqq-frontend-core": "1.0.51",
|
||||||
"@mui/icons-material": "5.4.1",
|
"@mui/icons-material": "5.4.1",
|
||||||
"@mui/material": "5.11.1",
|
"@mui/material": "5.11.1",
|
||||||
"@mui/styles": "5.11.1",
|
"@mui/styles": "5.11.1",
|
||||||
|
@ -511,7 +511,7 @@ function EntityForm(props: Props): JSX.Element
|
|||||||
{formFields && nonT1Sections.length ? nonT1Sections.map((section: QTableSection) => (
|
{formFields && nonT1Sections.length ? nonT1Sections.map((section: QTableSection) => (
|
||||||
<Box key={`edit-card-${section.name}`} pb={3}>
|
<Box key={`edit-card-${section.name}`} pb={3}>
|
||||||
<Card id={section.name} sx={{overflow: "visible", scrollMarginTop: "100px"}} elevation={cardElevation}>
|
<Card id={section.name} sx={{overflow: "visible", scrollMarginTop: "100px"}} elevation={cardElevation}>
|
||||||
<MDTypography variant="h5" p={3} pb={1}>
|
<MDTypography variant="h6" p={3} pb={1}>
|
||||||
{section.label}
|
{section.label}
|
||||||
</MDTypography>
|
</MDTypography>
|
||||||
<Box pb={1} px={3}>
|
<Box pb={1} px={3}>
|
||||||
|
@ -98,8 +98,6 @@ const navbarContainer = ({breakpoints}: Theme): any => ({
|
|||||||
flexDirection: "column",
|
flexDirection: "column",
|
||||||
alignItems: "flex-start",
|
alignItems: "flex-start",
|
||||||
justifyContent: "space-between",
|
justifyContent: "space-between",
|
||||||
pt: 0.5,
|
|
||||||
pb: 0.5,
|
|
||||||
|
|
||||||
[breakpoints.up("md")]: {
|
[breakpoints.up("md")]: {
|
||||||
flexDirection: "row",
|
flexDirection: "row",
|
||||||
|
@ -25,11 +25,9 @@ import {QTableMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QT
|
|||||||
import {QJobComplete} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobComplete";
|
import {QJobComplete} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobComplete";
|
||||||
import {QJobError} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobError";
|
import {QJobError} from "@kingsrook/qqq-frontend-core/lib/model/processes/QJobError";
|
||||||
import {QRecord} from "@kingsrook/qqq-frontend-core/lib/model/QRecord";
|
import {QRecord} from "@kingsrook/qqq-frontend-core/lib/model/QRecord";
|
||||||
import {FiberManualRecord, KeyboardArrowDown} from "@mui/icons-material";
|
import {FiberManualRecord} from "@mui/icons-material";
|
||||||
import {Alert, ClickAwayListener, Grow, MenuList, Paper, Popper} from "@mui/material";
|
import {Alert} from "@mui/material";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import Button from "@mui/material/Button";
|
|
||||||
import ButtonGroup from "@mui/material/ButtonGroup";
|
|
||||||
import Dialog from "@mui/material/Dialog";
|
import Dialog from "@mui/material/Dialog";
|
||||||
import DialogActions from "@mui/material/DialogActions";
|
import DialogActions from "@mui/material/DialogActions";
|
||||||
import DialogContent from "@mui/material/DialogContent";
|
import DialogContent from "@mui/material/DialogContent";
|
||||||
@ -425,61 +423,6 @@ function SavedFilters({qController, metaData, tableMetaData, currentSavedFilter,
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
</Box>
|
</Box>
|
||||||
<Box pl={2} m={0} sx={{display: "flex", alignItems: "center"}}>
|
|
||||||
<ButtonGroup variant="text" ref={anchorRef}>
|
|
||||||
{
|
|
||||||
hasStorePermission && (
|
|
||||||
<Button sx={{minHeight: 1, margin: 0, padding: 0, minWidth: "initial !important", border: "0 !important"}} onClick={() => handleDropdownOptionClick(SAVE_OPTION)}>{SAVE_OPTION}</Button>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
currentSavedFilter && (
|
|
||||||
<Button sx={{minHeight: 1, margin: 0, padding: 0, minWidth: "20px !important", border: 0}} onClick={handleToggleSaveOptions} >
|
|
||||||
<KeyboardArrowDown />
|
|
||||||
</Button>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</ButtonGroup>
|
|
||||||
<Popper
|
|
||||||
sx={{
|
|
||||||
zIndex: 10,
|
|
||||||
marginLeft: "100px !important"
|
|
||||||
}}
|
|
||||||
open={saveOptionsOpen}
|
|
||||||
anchorEl={anchorRef.current}
|
|
||||||
transition
|
|
||||||
disablePortal
|
|
||||||
role={undefined}
|
|
||||||
nonce={undefined}
|
|
||||||
onResizeCapture={undefined}
|
|
||||||
onResize={null}>
|
|
||||||
{({TransitionProps, placement}) => (
|
|
||||||
<Grow
|
|
||||||
{...TransitionProps}
|
|
||||||
style={{
|
|
||||||
transformOrigin: "inherit",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Paper>
|
|
||||||
<ClickAwayListener onClickAway={handleSaveOptionsMenuClose}>
|
|
||||||
<MenuList id="split-button-menu" autoFocusItem>
|
|
||||||
{dropdownOptions.map((option, index) => (
|
|
||||||
(option === CLEAR_OPTION || ((option !== DELETE_OPTION || hasDeletePermission) && (option !== DUPLICATE_OPTION || hasStorePermission))) && (
|
|
||||||
<MenuItem
|
|
||||||
key={option}
|
|
||||||
onClick={() => handleDropdownOptionClick(option)}
|
|
||||||
>
|
|
||||||
{option}
|
|
||||||
</MenuItem>
|
|
||||||
)
|
|
||||||
))}
|
|
||||||
</MenuList>
|
|
||||||
</ClickAwayListener>
|
|
||||||
</Paper>
|
|
||||||
</Grow>
|
|
||||||
)}
|
|
||||||
</Popper>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
</Box>
|
||||||
{
|
{
|
||||||
<Dialog
|
<Dialog
|
||||||
|
@ -21,13 +21,11 @@
|
|||||||
import {QWidgetMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QWidgetMetaData";
|
import {QWidgetMetaData} from "@kingsrook/qqq-frontend-core/lib/model/metaData/QWidgetMetaData";
|
||||||
import {Skeleton} from "@mui/material";
|
import {Skeleton} from "@mui/material";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import Card from "@mui/material/Card";
|
|
||||||
import Grid from "@mui/material/Grid";
|
import Grid from "@mui/material/Grid";
|
||||||
import parse from "html-react-parser";
|
import parse from "html-react-parser";
|
||||||
import React, {useEffect, useReducer, useState} from "react";
|
import React, {useEffect, useReducer, useState} from "react";
|
||||||
import {useLocation} from "react-router-dom";
|
import {useLocation} from "react-router-dom";
|
||||||
import colors from "qqq/assets/theme/base/colors";
|
import colors from "qqq/assets/theme/base/colors";
|
||||||
import MDBadgeDot from "qqq/components/legacy/MDBadgeDot";
|
|
||||||
import MDTypography from "qqq/components/legacy/MDTypography";
|
import MDTypography from "qqq/components/legacy/MDTypography";
|
||||||
import BarChart from "qqq/components/widgets/charts/barchart/BarChart";
|
import BarChart from "qqq/components/widgets/charts/barchart/BarChart";
|
||||||
import HorizontalBarChart from "qqq/components/widgets/charts/barchart/HorizontalBarChart";
|
import HorizontalBarChart from "qqq/components/widgets/charts/barchart/HorizontalBarChart";
|
||||||
@ -44,7 +42,6 @@ import StepperCard from "qqq/components/widgets/misc/StepperCard";
|
|||||||
import USMapWidget from "qqq/components/widgets/misc/USMapWidget";
|
import USMapWidget from "qqq/components/widgets/misc/USMapWidget";
|
||||||
import ParentWidget from "qqq/components/widgets/ParentWidget";
|
import ParentWidget from "qqq/components/widgets/ParentWidget";
|
||||||
import MultiStatisticsCard from "qqq/components/widgets/statistics/MultiStatisticsCard";
|
import MultiStatisticsCard from "qqq/components/widgets/statistics/MultiStatisticsCard";
|
||||||
import SimpleStatisticsCard from "qqq/components/widgets/statistics/SimpleStatisticsCard";
|
|
||||||
import StatisticsCard from "qqq/components/widgets/statistics/StatisticsCard";
|
import StatisticsCard from "qqq/components/widgets/statistics/StatisticsCard";
|
||||||
import TableCard from "qqq/components/widgets/tables/TableCard";
|
import TableCard from "qqq/components/widgets/tables/TableCard";
|
||||||
import Widget, {WIDGET_DROPDOWN_SELECTION_LOCAL_STORAGE_KEY_ROOT} from "qqq/components/widgets/Widget";
|
import Widget, {WIDGET_DROPDOWN_SELECTION_LOCAL_STORAGE_KEY_ROOT} from "qqq/components/widgets/Widget";
|
||||||
@ -62,6 +59,7 @@ interface Props
|
|||||||
omitWrappingGridContainer: boolean;
|
omitWrappingGridContainer: boolean;
|
||||||
areChildren?: boolean
|
areChildren?: boolean
|
||||||
childUrlParams?: string
|
childUrlParams?: string
|
||||||
|
parentWidgetMetaData?: QWidgetMetaData
|
||||||
}
|
}
|
||||||
|
|
||||||
DashboardWidgets.defaultProps = {
|
DashboardWidgets.defaultProps = {
|
||||||
@ -70,10 +68,11 @@ DashboardWidgets.defaultProps = {
|
|||||||
entityPrimaryKey: null,
|
entityPrimaryKey: null,
|
||||||
omitWrappingGridContainer: false,
|
omitWrappingGridContainer: false,
|
||||||
areChildren: false,
|
areChildren: false,
|
||||||
childUrlParams: ""
|
childUrlParams: "",
|
||||||
|
parentWidgetMetaData: null
|
||||||
};
|
};
|
||||||
|
|
||||||
function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omitWrappingGridContainer, areChildren, childUrlParams}: Props): JSX.Element
|
function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omitWrappingGridContainer, areChildren, childUrlParams, parentWidgetMetaData}: Props): JSX.Element
|
||||||
{
|
{
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const [widgetData, setWidgetData] = useState([] as any[]);
|
const [widgetData, setWidgetData] = useState([] as any[]);
|
||||||
@ -103,18 +102,10 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
|
|||||||
setWidgetData(widgetData);
|
setWidgetData(widgetData);
|
||||||
}, [widgetMetaDataList]);
|
}, [widgetMetaDataList]);
|
||||||
|
|
||||||
useEffect(() =>
|
const reloadWidget = async (index: number, data: string) =>
|
||||||
{
|
{
|
||||||
setWidgetData([] as any[]);
|
widgetData[index] = await qController.widget(widgetMetaDataList[index].name, getQueryParams(null, data));
|
||||||
}, [location.pathname]);
|
forceUpdate();
|
||||||
|
|
||||||
const reloadWidget = (index: number, data: string) =>
|
|
||||||
{
|
|
||||||
setTimeout(async () =>
|
|
||||||
{
|
|
||||||
widgetData[index] = await qController.widget(widgetMetaDataList[index].name, getQueryParams(null, data));
|
|
||||||
setWidgetCounter(widgetCounter + 1);
|
|
||||||
}, 1);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function getQueryParams(widgetMetaData: QWidgetMetaData, extraParams: string): string
|
function getQueryParams(widgetMetaData: QWidgetMetaData, extraParams: string): string
|
||||||
@ -146,12 +137,15 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
|
|||||||
// see if local storage is used for any widget dropdowns, if so, look them //
|
// see if local storage is used for any widget dropdowns, if so, look them //
|
||||||
// up and append to the query string //
|
// up and append to the query string //
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
if(widgetMetaData && widgetMetaData.storeDropdownSelections && widgetMetaData.dropdowns)
|
let thisWidgetHasDropdowns = widgetMetaData && widgetMetaData.storeDropdownSelections && widgetMetaData.dropdowns;
|
||||||
|
let parentWidgetHasDropdowns = parentWidgetMetaData && parentWidgetMetaData.storeDropdownSelections && parentWidgetMetaData.dropdowns;
|
||||||
|
if(thisWidgetHasDropdowns || parentWidgetHasDropdowns)
|
||||||
{
|
{
|
||||||
for(let i = 0; i< widgetMetaData.dropdowns.length; i++)
|
const metaDataToUse = (thisWidgetHasDropdowns) ? widgetMetaData : parentWidgetMetaData;
|
||||||
|
for(let i = 0; i< metaDataToUse.dropdowns.length; i++)
|
||||||
{
|
{
|
||||||
const dropdownName = widgetMetaData.dropdowns[i].possibleValueSourceName;
|
const dropdownName = metaDataToUse.dropdowns[i].possibleValueSourceName;
|
||||||
const localStorageKey = `${WIDGET_DROPDOWN_SELECTION_LOCAL_STORAGE_KEY_ROOT}.${widgetMetaData.name}.${dropdownName}`;
|
const localStorageKey = `${WIDGET_DROPDOWN_SELECTION_LOCAL_STORAGE_KEY_ROOT}.${metaDataToUse.name}.${dropdownName}`;
|
||||||
const json = JSON.parse(localStorage.getItem(localStorageKey));
|
const json = JSON.parse(localStorage.getItem(localStorageKey));
|
||||||
if(json)
|
if(json)
|
||||||
{
|
{
|
||||||
@ -235,18 +229,15 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
widgetMetaData.type === "stepper" && (
|
widgetMetaData.type === "stepper" && (
|
||||||
<Card sx={{alignItems: "stretch", flexGrow: 1, display: "flex", marginTop: "0px", paddingTop: "0px"}}>
|
<Widget
|
||||||
<Box padding="1rem">
|
widgetMetaData={widgetMetaData}
|
||||||
{
|
widgetData={widgetData[i]}>
|
||||||
widgetMetaData.label && (
|
<Box sx={{alignItems: "stretch", flexGrow: 1, display: "flex", marginTop: "0px", paddingTop: "0px"}}>
|
||||||
<MDTypography variant="h5" textTransform="capitalize">
|
<Box padding="1rem" sx={{width: "100%"}}>
|
||||||
{widgetMetaData.label}
|
<StepperCard data={widgetData[i]} />
|
||||||
</MDTypography>
|
</Box>
|
||||||
)
|
|
||||||
}
|
|
||||||
<StepperCard data={widgetData[i]} />
|
|
||||||
</Box>
|
</Box>
|
||||||
</Card>
|
</Widget>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -282,11 +273,10 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
|
|||||||
widgetMetaData={widgetMetaData}
|
widgetMetaData={widgetMetaData}
|
||||||
widgetData={widgetData[i]}
|
widgetData={widgetData[i]}
|
||||||
isChild={areChildren}
|
isChild={areChildren}
|
||||||
reloadWidgetCallback={(data) => reloadWidget(i, data)}>
|
|
||||||
|
// reloadWidgetCallback={(data) => reloadWidget(i, data)}
|
||||||
|
>
|
||||||
<StatisticsCard
|
<StatisticsCard
|
||||||
title={widgetMetaData.label}
|
|
||||||
color={colors.info.main}
|
|
||||||
icon={widgetMetaData.icon}
|
|
||||||
data={widgetData[i]}
|
data={widgetData[i]}
|
||||||
increaseIsGood={true}
|
increaseIsGood={true}
|
||||||
/>
|
/>
|
||||||
@ -294,18 +284,6 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
|
||||||
widgetMetaData.type === "simpleStatistics" && (
|
|
||||||
widgetData && widgetData[i] && (
|
|
||||||
<SimpleStatisticsCard
|
|
||||||
title={widgetMetaData.label}
|
|
||||||
data={widgetData[i]}
|
|
||||||
increaseIsGood={widgetData[i].increaseIsGood}
|
|
||||||
isCurrency={widgetData[i].isCurrency}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
widgetMetaData.type === "multiStatistics" && (
|
widgetMetaData.type === "multiStatistics" && (
|
||||||
<MultiStatisticsCard
|
<MultiStatisticsCard
|
||||||
@ -337,8 +315,7 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
|
|||||||
widgetMetaData={widgetMetaData}
|
widgetMetaData={widgetMetaData}
|
||||||
widgetData={widgetData[i]}
|
widgetData={widgetData[i]}
|
||||||
isChild={areChildren}
|
isChild={areChildren}
|
||||||
reloadWidgetCallback={(data) => reloadWidget(i, data)}>
|
>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<PieChart
|
<PieChart
|
||||||
chartData={widgetData[i]?.chartData}
|
chartData={widgetData[i]?.chartData}
|
||||||
@ -367,26 +344,15 @@ function DashboardWidgets({widgetMetaDataList, tableName, entityPrimaryKey, omit
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
widgetMetaData.type === "lineChart" && (
|
widgetMetaData.type === "lineChart" && (
|
||||||
widgetData && widgetData[i] && widgetData[i].chartData && widgetData[i].chartData?.datasets ? (
|
<Widget
|
||||||
|
widgetMetaData={widgetMetaData}
|
||||||
|
widgetData={widgetData[i]}
|
||||||
|
isChild={areChildren}>
|
||||||
<DefaultLineChart sx={{alignItems: "center"}}
|
<DefaultLineChart sx={{alignItems: "center"}}
|
||||||
title={widgetData[i].title}
|
data={widgetData[i]?.chartData}
|
||||||
description={(
|
isYAxisCurrency={widgetData[i]?.isYAxisCurrency}
|
||||||
<Box display="flex" justifyContent="space-between">
|
|
||||||
<Box display="flex" ml={-1}>
|
|
||||||
{
|
|
||||||
widgetData[i].chartData.datasets.map((dataSet: any) => (
|
|
||||||
<MDBadgeDot key={dataSet.label} color={dataSet.color} size="sm" badgeContent={dataSet.label} />
|
|
||||||
))
|
|
||||||
}
|
|
||||||
</Box>
|
|
||||||
<Box mt={-4} mr={-1} position="absolute" right="1.5rem" />
|
|
||||||
</Box>
|
|
||||||
)}
|
|
||||||
data={widgetData[i].chartData as { labels: string[]; datasets: { label: string; color: "primary" | "secondary" | "info" | "success" | "warning" | "error" | "light" | "dark"; data: number[]; }[]; }}
|
|
||||||
isYAxisCurrency={widgetData[i].isYAxisCurrency}
|
|
||||||
isChild={areChildren}
|
|
||||||
/>
|
/>
|
||||||
) : null
|
</Widget>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
@ -41,6 +41,7 @@ export interface ParentWidgetData
|
|||||||
}[][];
|
}[][];
|
||||||
childWidgetNameList: string[];
|
childWidgetNameList: string[];
|
||||||
dropdownNeedsSelectedText?: string;
|
dropdownNeedsSelectedText?: string;
|
||||||
|
storeDropdownSelections?: boolean;
|
||||||
icon?: string;
|
icon?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +94,6 @@ function ParentWidget({urlParams, widgetMetaData, widgetIndex, data, reloadWidge
|
|||||||
const parentReloadWidgetCallback = (data: string) =>
|
const parentReloadWidgetCallback = (data: string) =>
|
||||||
{
|
{
|
||||||
setChildUrlParams(data);
|
setChildUrlParams(data);
|
||||||
|
|
||||||
reloadWidgetCallback(widgetIndex, data);
|
reloadWidgetCallback(widgetIndex, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ function ParentWidget({urlParams, widgetMetaData, widgetIndex, data, reloadWidge
|
|||||||
reloadWidgetCallback={parentReloadWidgetCallback}
|
reloadWidgetCallback={parentReloadWidgetCallback}
|
||||||
>
|
>
|
||||||
<Box sx={{height: "100%", width: "100%"}}>
|
<Box sx={{height: "100%", width: "100%"}}>
|
||||||
<DashboardWidgets widgetMetaDataList={widgets} entityPrimaryKey={entityPrimaryKey} tableName={tableName} childUrlParams={childUrlParams} areChildren={true} />
|
<DashboardWidgets widgetMetaDataList={widgets} entityPrimaryKey={entityPrimaryKey} tableName={tableName} childUrlParams={childUrlParams} areChildren={true} parentWidgetMetaData={widgetMetaData}/>
|
||||||
</Box>
|
</Box>
|
||||||
</Widget>
|
</Widget>
|
||||||
) : null
|
) : null
|
||||||
|
@ -41,6 +41,7 @@ export interface WidgetData
|
|||||||
label: string
|
label: string
|
||||||
}[][];
|
}[][];
|
||||||
dropdownNeedsSelectedText?: string;
|
dropdownNeedsSelectedText?: string;
|
||||||
|
hasPermission?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -172,9 +173,8 @@ function Widget(props: React.PropsWithChildren<Props>): JSX.Element
|
|||||||
|
|
||||||
const dropdown = component as Dropdown
|
const dropdown = component as Dropdown
|
||||||
return (
|
return (
|
||||||
<Box my={2} mr={2} sx={{float: "right"}}>
|
<Box my={2} sx={{float: "right"}}>
|
||||||
<DropdownMenu
|
<DropdownMenu
|
||||||
localStorageKey={localStorageKey}
|
|
||||||
defaultValue={defaultValue}
|
defaultValue={defaultValue}
|
||||||
sx={{width: 200, marginLeft: "15px"}}
|
sx={{width: 200, marginLeft: "15px"}}
|
||||||
label={`Select ${dropdown.label}`}
|
label={`Select ${dropdown.label}`}
|
||||||
@ -283,75 +283,103 @@ function Widget(props: React.PropsWithChildren<Props>): JSX.Element
|
|||||||
}
|
}
|
||||||
}, [counter]);
|
}, [counter]);
|
||||||
|
|
||||||
|
const hasPermission = props.widgetData?.hasPermission === undefined || props.widgetData?.hasPermission === true;
|
||||||
const widgetContent =
|
const widgetContent =
|
||||||
<Box sx={{width: "100%"}}>
|
<Box sx={{width: "100%"}}>
|
||||||
<Box display="flex" justifyContent="space-between" alignItems="center" sx={{width: "100%"}}>
|
<Box pr={3} display="flex" justifyContent="space-between" alignItems="flex-start" sx={{width: "100%"}}>
|
||||||
<Box pt={2}>
|
<Box pt={2}>
|
||||||
{
|
{
|
||||||
props.widgetMetaData?.icon && (
|
hasPermission ?
|
||||||
<Box
|
props.widgetMetaData?.icon && (
|
||||||
ml={3}
|
<Box
|
||||||
mt={-4}
|
ml={3}
|
||||||
sx={{
|
mt={-4}
|
||||||
display: "flex",
|
sx={{
|
||||||
justifyContent: "center",
|
display: "flex",
|
||||||
alignItems: "center",
|
justifyContent: "center",
|
||||||
width: "64px",
|
alignItems: "center",
|
||||||
height: "64px",
|
width: "64px",
|
||||||
borderRadius: "8px",
|
height: "64px",
|
||||||
background: colors.info.main,
|
borderRadius: "8px",
|
||||||
color: "#ffffff",
|
background: colors.info.main,
|
||||||
float: "left"
|
color: "#ffffff",
|
||||||
}}
|
float: "left"
|
||||||
>
|
}}
|
||||||
<Icon fontSize="medium" color="inherit">
|
>
|
||||||
{props.widgetMetaData.icon}
|
<Icon fontSize="medium" color="inherit">
|
||||||
</Icon>
|
{props.widgetMetaData.icon}
|
||||||
</Box>
|
</Icon>
|
||||||
|
</Box>
|
||||||
|
|
||||||
)
|
) : (
|
||||||
|
<Box
|
||||||
|
ml={3}
|
||||||
|
mt={-4}
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
justifyContent: "center",
|
||||||
|
alignItems: "center",
|
||||||
|
width: "64px",
|
||||||
|
height: "64px",
|
||||||
|
borderRadius: "8px",
|
||||||
|
background: colors.info.main,
|
||||||
|
color: "#ffffff",
|
||||||
|
float: "left"
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Icon fontSize="medium" color="inherit">lock</Icon>
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// first look for a label in the widget data, which would override that in the metadata //
|
// first look for a label in the widget data, which would override that in the metadata //
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////
|
||||||
props.widgetData?.label? (
|
hasPermission && props.widgetData?.label? (
|
||||||
<Typography variant="h5" fontWeight="medium" pl={3} display="inline">
|
<Typography sx={{position: "relative", top: -4}} variant="h6" fontWeight="medium" pl={2} display="inline">
|
||||||
{props.widgetData.label}
|
{props.widgetData.label}
|
||||||
</Typography>
|
</Typography>
|
||||||
) : (
|
) : (
|
||||||
props.widgetMetaData?.label && (
|
hasPermission && props.widgetMetaData?.label && (
|
||||||
<Typography variant="h5" fontWeight="medium" pl={3} display="inline">
|
<Typography sx={{position: "relative", top: -4}} variant="h6" fontWeight="medium" pl={3} display="inline">
|
||||||
{props.widgetMetaData.label}
|
{props.widgetMetaData.label}
|
||||||
</Typography>
|
</Typography>
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
props.labelAdditionalComponentsLeft.map((component, i) =>
|
hasPermission && (
|
||||||
{
|
props.labelAdditionalComponentsLeft.map((component, i) =>
|
||||||
return (<span key={i}>{renderComponent(component, i)}</span>);
|
{
|
||||||
})
|
return (<span key={i}>{renderComponent(component, i)}</span>);
|
||||||
|
})
|
||||||
|
)
|
||||||
}
|
}
|
||||||
</Box>
|
</Box>
|
||||||
<Box>
|
<Box>
|
||||||
{
|
{
|
||||||
effectiveLabelAdditionalComponentsRight.map((component, i) =>
|
hasPermission && (
|
||||||
{
|
effectiveLabelAdditionalComponentsRight.map((component, i) =>
|
||||||
return (<span key={i}>{renderComponent(component, i)}</span>);
|
{
|
||||||
})
|
return (<span key={i}>{renderComponent(component, i)}</span>);
|
||||||
|
})
|
||||||
|
)
|
||||||
}
|
}
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
{
|
{
|
||||||
props.widgetData?.dropdownNeedsSelectedText ? (
|
hasPermission && props.widgetData?.dropdownNeedsSelectedText ? (
|
||||||
<Box pb={3} pr={3} sx={{width: "100%", textAlign: "right"}}>
|
<Box pb={3} pr={3} sx={{width: "100%", textAlign: "right"}}>
|
||||||
<Typography variant="body2">
|
<Typography variant="body2">
|
||||||
{props.widgetData?.dropdownNeedsSelectedText}
|
{props.widgetData?.dropdownNeedsSelectedText}
|
||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</Box>
|
||||||
) : (
|
) : (
|
||||||
props.children
|
hasPermission ? (
|
||||||
|
props.children
|
||||||
|
) : (
|
||||||
|
<Box mt={2} mb={5} sx={{display: "flex", justifyContent: "center"}}><Typography variant="body2">You do not have permission to view this data.</Typography></Box>
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</Box>;
|
</Box>;
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import {Skeleton} from "@mui/material";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import {BarElement, CategoryScale, Chart as ChartJS, Legend, LinearScale, Title, Tooltip,} from "chart.js";
|
import {BarElement, CategoryScale, Chart as ChartJS, Legend, LinearScale, Title, Tooltip,} from "chart.js";
|
||||||
import React, {useEffect, useState} from "react";
|
import React, {useEffect, useState} from "react";
|
||||||
@ -92,8 +93,8 @@ function StackedBarChart({data}: Props): JSX.Element
|
|||||||
|
|
||||||
|
|
||||||
return data ? (
|
return data ? (
|
||||||
<Box p={3}><Bar data={data} options={options} /></Box>
|
<Box p={3}><Bar data={data} options={options} getElementsAtEvent={handleClick} /></Box>
|
||||||
) : null;
|
) : <Skeleton sx={{marginLeft: "20px", marginRight: "20px", height: "200px"}} /> ;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default StackedBarChart;
|
export default StackedBarChart;
|
||||||
|
@ -161,7 +161,7 @@ function BarChart({color, title, description, date, data}: Props): JSX.Element
|
|||||||
[data, color]
|
[data, color]
|
||||||
)}
|
)}
|
||||||
<Box pt={3} pb={1} px={1}>
|
<Box pt={3} pb={1} px={1}>
|
||||||
<MDTypography variant="h5" textTransform="capitalize">
|
<MDTypography variant="h6" textTransform="capitalize">
|
||||||
{title}
|
{title}
|
||||||
</MDTypography>
|
</MDTypography>
|
||||||
<MDTypography component="div" variant="button" color="text" fontWeight="light">
|
<MDTypography component="div" variant="button" color="text" fontWeight="light">
|
||||||
|
@ -20,13 +20,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import Card from "@mui/material/Card";
|
|
||||||
import Icon from "@mui/material/Icon";
|
|
||||||
import React, {ReactNode, useMemo} from "react";
|
import React, {ReactNode, useMemo} from "react";
|
||||||
import {Line} from "react-chartjs-2";
|
import {Line} from "react-chartjs-2";
|
||||||
import colors from "qqq/assets/theme/base/colors";
|
import colors from "qqq/assets/theme/base/colors";
|
||||||
import MDBadgeDot from "qqq/components/legacy/MDBadgeDot";
|
import MDBadgeDot from "qqq/components/legacy/MDBadgeDot";
|
||||||
import MDTypography from "qqq/components/legacy/MDTypography";
|
|
||||||
|
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
// structure of default line chart data //
|
// structure of default line chart data //
|
||||||
@ -128,10 +125,9 @@ interface Props
|
|||||||
color?: "primary" | "secondary" | "info" | "success" | "warning" | "error" | "light" | "dark";
|
color?: "primary" | "secondary" | "info" | "success" | "warning" | "error" | "light" | "dark";
|
||||||
component: ReactNode;
|
component: ReactNode;
|
||||||
};
|
};
|
||||||
title?: string;
|
|
||||||
height?: string | number;
|
height?: string | number;
|
||||||
|
description?: any;
|
||||||
isYAxisCurrency?: boolean;
|
isYAxisCurrency?: boolean;
|
||||||
isChild?: boolean;
|
|
||||||
data: DefaultLineChartData;
|
data: DefaultLineChartData;
|
||||||
|
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
@ -139,12 +135,11 @@ interface Props
|
|||||||
|
|
||||||
DefaultLineChart.defaultProps = {
|
DefaultLineChart.defaultProps = {
|
||||||
icon: {color: "info", component: ""},
|
icon: {color: "info", component: ""},
|
||||||
title: "",
|
|
||||||
height: "19.125rem",
|
height: "19.125rem",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function DefaultLineChart({icon, title, height, data, isYAxisCurrency, isChild}: Props): JSX.Element
|
function DefaultLineChart({data, height, isYAxisCurrency}: Props): JSX.Element
|
||||||
{
|
{
|
||||||
const allBackgroundColors = ["info", "warning", "primary", "success", "error", "secondary", "dark"];
|
const allBackgroundColors = ["info", "warning", "primary", "success", "error", "secondary", "dark"];
|
||||||
if (data && data.datasets)
|
if (data && data.datasets)
|
||||||
@ -156,6 +151,19 @@ function DefaultLineChart({icon, title, height, data, isYAxisCurrency, isChild}:
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const description= (
|
||||||
|
<Box display="flex" justifyContent="space-between">
|
||||||
|
<Box display="flex" ml={-1}>
|
||||||
|
{
|
||||||
|
data?.datasets?.map((dataSet: any) => (
|
||||||
|
<MDBadgeDot key={dataSet.label} color={dataSet.color} size="sm" badgeContent={dataSet.label} />
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</Box>
|
||||||
|
<Box mt={-4} mr={-1} position="absolute" right="1.5rem" />
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
|
||||||
const chartDatasets = data && data.datasets
|
const chartDatasets = data && data.datasets
|
||||||
? data.datasets.map((dataset) => ({
|
? data.datasets.map((dataset) => ({
|
||||||
...dataset,
|
...dataset,
|
||||||
@ -204,55 +212,9 @@ function DefaultLineChart({icon, title, height, data, isYAxisCurrency, isChild}:
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const renderChart = (
|
return (
|
||||||
<Box py={2} pr={2} pl={icon.component ? 1 : 2}>
|
<Box py={2} pr={2} pl={2}>
|
||||||
|
{description}
|
||||||
{title ? (
|
|
||||||
<Box display="flex" px={0} pt={0}>
|
|
||||||
{icon.component && (
|
|
||||||
<Box
|
|
||||||
width="4rem"
|
|
||||||
height="4rem"
|
|
||||||
borderRadius="xl"
|
|
||||||
display="flex"
|
|
||||||
justifyContent="center"
|
|
||||||
alignItems="center"
|
|
||||||
color="white"
|
|
||||||
mt={-5}
|
|
||||||
mr={2}
|
|
||||||
sx={{backgroundColor: icon.color || "info"}}
|
|
||||||
>
|
|
||||||
<Icon fontSize="medium">{icon.component}</Icon>
|
|
||||||
</Box>
|
|
||||||
)}
|
|
||||||
<Box mt={icon.component ? -2 : 0}>
|
|
||||||
{isChild ? (
|
|
||||||
title && <MDTypography variant="h6">{title}</MDTypography>
|
|
||||||
) : (
|
|
||||||
title && <MDTypography variant="h5">{title}</MDTypography>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
<Box mb={2}>
|
|
||||||
<MDTypography component="div" variant="button" color="text">
|
|
||||||
<Box display="flex" justifyContent="space-between">
|
|
||||||
<Box display="flex" ml={-1}>
|
|
||||||
{
|
|
||||||
data && data.lineLabels ? (
|
|
||||||
(data.lineLabels.map((label: string, index: number) => (
|
|
||||||
|
|
||||||
<Box key={index}>
|
|
||||||
<MDBadgeDot color={allBackgroundColors[index]} size="sm" badgeContent={label} />
|
|
||||||
</Box>
|
|
||||||
)
|
|
||||||
))) : null
|
|
||||||
}
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
</MDTypography>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
) : null}
|
|
||||||
{useMemo(
|
{useMemo(
|
||||||
() => (
|
() => (
|
||||||
<Box height={height}>
|
<Box height={height}>
|
||||||
@ -264,12 +226,6 @@ function DefaultLineChart({icon, title, height, data, isYAxisCurrency, isChild}:
|
|||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
|
||||||
return title ?
|
|
||||||
<Card sx={{alignItems: "stretch", flexGrow: 1, display: "flex", marginTop: "0px", paddingTop: "0px"}}>
|
|
||||||
{renderChart}
|
|
||||||
</Card>
|
|
||||||
: renderChart;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default DefaultLineChart;
|
export default DefaultLineChart;
|
||||||
|
@ -77,7 +77,7 @@ function SmallLineChart({color, title, description, date, chart}: Props): JSX.El
|
|||||||
[chart, color]
|
[chart, color]
|
||||||
)}
|
)}
|
||||||
<Box pt={3} pb={1} px={1}>
|
<Box pt={3} pb={1} px={1}>
|
||||||
<MDTypography variant="h5" textTransform="capitalize">
|
<MDTypography variant="h6" textTransform="capitalize">
|
||||||
{title}
|
{title}
|
||||||
</MDTypography>
|
</MDTypography>
|
||||||
<MDTypography component="div" variant="button" color="text" fontWeight="light">
|
<MDTypography component="div" variant="button" color="text" fontWeight="light">
|
||||||
|
@ -19,12 +19,12 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {Card} from "@mui/material";
|
import {Card, Skeleton} from "@mui/material";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import Divider from "@mui/material/Divider";
|
import Divider from "@mui/material/Divider";
|
||||||
import Grid from "@mui/material/Grid";
|
import Grid from "@mui/material/Grid";
|
||||||
import parse from "html-react-parser";
|
import parse from "html-react-parser";
|
||||||
import React, {useMemo} from "react";
|
import React, {useEffect, useMemo, useState} from "react";
|
||||||
import {Pie} from "react-chartjs-2";
|
import {Pie} from "react-chartjs-2";
|
||||||
import {useNavigate} from "react-router-dom";
|
import {useNavigate} from "react-router-dom";
|
||||||
import MDTypography from "qqq/components/legacy/MDTypography";
|
import MDTypography from "qqq/components/legacy/MDTypography";
|
||||||
@ -59,14 +59,22 @@ interface Props
|
|||||||
function PieChart({description, chartData}: Props): JSX.Element
|
function PieChart({description, chartData}: Props): JSX.Element
|
||||||
{
|
{
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
const [dataLoaded, setDataLoaded] = useState(false);
|
||||||
|
|
||||||
if (chartData && chartData.dataset)
|
if (chartData && chartData.dataset)
|
||||||
{
|
{
|
||||||
chartData.dataset.backgroundColors = chartColors;
|
chartData.dataset.backgroundColors = chartColors;
|
||||||
}
|
}
|
||||||
|
|
||||||
const {data, options} = configs(chartData?.labels || [], chartData?.dataset || {});
|
const {data, options} = configs(chartData?.labels || [], chartData?.dataset || {});
|
||||||
|
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
if(chartData)
|
||||||
|
{
|
||||||
|
setDataLoaded(true);
|
||||||
|
}
|
||||||
|
}, [chartData]);
|
||||||
|
|
||||||
const handleClick = (e: Array<{}>) =>
|
const handleClick = (e: Array<{}>) =>
|
||||||
{
|
{
|
||||||
if(e && e.length > 0 && chartData?.dataset?.urls && chartData?.dataset?.urls.length)
|
if(e && e.length > 0 && chartData?.dataset?.urls && chartData?.dataset?.urls.length)
|
||||||
@ -89,6 +97,19 @@ function PieChart({description, chartData}: Props): JSX.Element
|
|||||||
[chartData]
|
[chartData]
|
||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
|
{
|
||||||
|
! chartData && (
|
||||||
|
<Box sx={{
|
||||||
|
position: "absolute",
|
||||||
|
top: "40%",
|
||||||
|
left: "50%",
|
||||||
|
transform: "translate(-50%, -50%)",
|
||||||
|
display: "flex",
|
||||||
|
justifyContent: "center"}}>
|
||||||
|
<Skeleton sx={{width: "150px", height: "150px"}} variant="circular"/>
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Divider />
|
<Divider />
|
||||||
|
@ -23,7 +23,6 @@ import {Theme} from "@mui/material";
|
|||||||
import Autocomplete from "@mui/material/Autocomplete";
|
import Autocomplete from "@mui/material/Autocomplete";
|
||||||
import TextField from "@mui/material/TextField";
|
import TextField from "@mui/material/TextField";
|
||||||
import {SxProps} from "@mui/system";
|
import {SxProps} from "@mui/system";
|
||||||
import React from "react";
|
|
||||||
|
|
||||||
|
|
||||||
export interface DropdownOption
|
export interface DropdownOption
|
||||||
@ -38,18 +37,17 @@ export interface DropdownOption
|
|||||||
interface Props
|
interface Props
|
||||||
{
|
{
|
||||||
defaultValue?: any;
|
defaultValue?: any;
|
||||||
localStorageKey?: string;
|
|
||||||
label?: string;
|
label?: string;
|
||||||
dropdownOptions?: DropdownOption[];
|
dropdownOptions?: DropdownOption[];
|
||||||
onChangeCallback?: (dropdownLabel: string, data: any) => void;
|
onChangeCallback?: (dropdownLabel: string, data: any) => void;
|
||||||
sx?: SxProps<Theme>;
|
sx?: SxProps<Theme>;
|
||||||
}
|
}
|
||||||
|
|
||||||
function DropdownMenu({localStorageKey, defaultValue, label, dropdownOptions, onChangeCallback, sx}: Props): JSX.Element
|
function DropdownMenu({defaultValue, label, dropdownOptions, onChangeCallback, sx}: Props): JSX.Element
|
||||||
{
|
{
|
||||||
const handleOnChange = (event: any, value: any, reason: string) =>
|
const handleOnChange = (event: any, newValue: any, reason: string) =>
|
||||||
{
|
{
|
||||||
onChangeCallback(label, value);
|
onChangeCallback(label, newValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -72,7 +72,7 @@ function StepperCard({data}: Props): JSX.Element
|
|||||||
// console.log(`data ${JSON.stringify(data)}`);
|
// console.log(`data ${JSON.stringify(data)}`);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stepper connector={<CustomizedConnector />} activeStep={activeStep} alternativeLabel sx={{paddingBottom: "0px", boxShadow: "none", background: "white"}}>
|
<Stepper connector={<CustomizedConnector />} activeStep={activeStep} alternativeLabel sx={{paddingBottom: "0px", boxShadow: "none", background: "none"}}>
|
||||||
{
|
{
|
||||||
data && data.steps ? (
|
data && data.steps ? (
|
||||||
data.steps.map((step, index) => (
|
data.steps.map((step, index) => (
|
||||||
|
@ -70,7 +70,7 @@ function MultiStatisticsCard({title, data}: Props): JSX.Element
|
|||||||
<Grid container>
|
<Grid container>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<Box pt={3} px={3}>
|
<Box pt={3} px={3}>
|
||||||
<MDTypography variant="h5" fontWeight="medium">
|
<MDTypography variant="h6" fontWeight="medium">
|
||||||
{title}
|
{title}
|
||||||
</MDTypography>
|
</MDTypography>
|
||||||
</Box>
|
</Box>
|
||||||
@ -105,7 +105,13 @@ function MultiStatisticsCard({title, data}: Props): JSX.Element
|
|||||||
statisticsGroup.statisticList.map((stat, i2) =>
|
statisticsGroup.statisticList.map((stat, i2) =>
|
||||||
<Box key={`stat-${i1}-${i2}`}>
|
<Box key={`stat-${i1}-${i2}`}>
|
||||||
<MDTypography variant="subtitle2">
|
<MDTypography variant="subtitle2">
|
||||||
{stat.label}: <NavLink to={stat.url}>{stat.value.toLocaleString()}</NavLink>
|
{
|
||||||
|
stat && stat.url ? (
|
||||||
|
<Box>{stat.label}: <NavLink to={stat?.url}>{stat.value.toLocaleString()}</NavLink></Box>
|
||||||
|
):(
|
||||||
|
<Box>{stat.label}: {stat.value.toLocaleString()}</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
</MDTypography>
|
</MDTypography>
|
||||||
</Box>
|
</Box>
|
||||||
)
|
)
|
||||||
|
@ -1,149 +0,0 @@
|
|||||||
/*
|
|
||||||
* QQQ - Low-code Application Framework for Engineers.
|
|
||||||
* Copyright (C) 2021-2022. Kingsrook, LLC
|
|
||||||
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
|
||||||
* contact@kingsrook.com
|
|
||||||
* https://github.com/Kingsrook/
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import Box from "@mui/material/Box";
|
|
||||||
import Card from "@mui/material/Card";
|
|
||||||
import Grid from "@mui/material/Grid";
|
|
||||||
import {ReactNode} from "react";
|
|
||||||
import MDTypography from "qqq/components/legacy/MDTypography";
|
|
||||||
import {StatisticsCardData} from "qqq/components/widgets/statistics/StatisticsCard";
|
|
||||||
|
|
||||||
interface Props
|
|
||||||
{
|
|
||||||
title: string;
|
|
||||||
data: StatisticsCardData;
|
|
||||||
increaseIsGood: boolean;
|
|
||||||
isCurrency?: boolean;
|
|
||||||
dropdown?: {
|
|
||||||
action: (...args: any) => void;
|
|
||||||
menu: ReactNode;
|
|
||||||
value: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SimpleStatisticsCard({title, data, increaseIsGood, isCurrency, dropdown}: Props): JSX.Element
|
|
||||||
{
|
|
||||||
const {count, percentageAmount, percentageLabel} = data;
|
|
||||||
|
|
||||||
let percentageString = "";
|
|
||||||
if (percentageAmount)
|
|
||||||
{
|
|
||||||
percentageString = percentageAmount.toLocaleString() + "%";
|
|
||||||
if (percentageAmount > 0)
|
|
||||||
{
|
|
||||||
percentageString = "+" + percentageString;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let percentColor: string;
|
|
||||||
if (increaseIsGood)
|
|
||||||
{
|
|
||||||
percentColor = (percentageAmount > 0) ? "success" : "warning";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
percentColor = (percentageAmount < 0) ? "success" : "warning";
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Card sx={{height: "fit-content", alignItems: "stretch", flexGrow: 1, display: "flex", marginTop: "0px", paddingTop: "0px"}}>
|
|
||||||
<Box p={2}>
|
|
||||||
<Grid container>
|
|
||||||
<Grid item xs={12}>
|
|
||||||
<Box mb={0.5} lineHeight={1}>
|
|
||||||
<MDTypography
|
|
||||||
variant="button"
|
|
||||||
fontWeight="medium"
|
|
||||||
color="text"
|
|
||||||
textTransform="capitalize"
|
|
||||||
>
|
|
||||||
{title}
|
|
||||||
</MDTypography>
|
|
||||||
</Box>
|
|
||||||
<Box lineHeight={1}>
|
|
||||||
{
|
|
||||||
count !== undefined ? (
|
|
||||||
isCurrency ? (
|
|
||||||
<MDTypography variant="h5" fontWeight="bold">
|
|
||||||
{count.toLocaleString("en-US", {style: "currency", currency: "USD"})}
|
|
||||||
</MDTypography>
|
|
||||||
) : (
|
|
||||||
|
|
||||||
<MDTypography variant="h5" fontWeight="bold">
|
|
||||||
{count.toLocaleString()}
|
|
||||||
</MDTypography>
|
|
||||||
)
|
|
||||||
) : null
|
|
||||||
}
|
|
||||||
{
|
|
||||||
count !== undefined ? (
|
|
||||||
<MDTypography variant="button" fontWeight="bold" color={percentColor}>
|
|
||||||
{percentageString}
|
|
||||||
<MDTypography
|
|
||||||
variant="button"
|
|
||||||
fontWeight="regular"
|
|
||||||
color={"secondary"}
|
|
||||||
>
|
|
||||||
{percentageLabel}
|
|
||||||
</MDTypography>
|
|
||||||
</MDTypography>
|
|
||||||
):(
|
|
||||||
<MDTypography variant="button" fontWeight="regular">
|
|
||||||
<i>Loading.</i>
|
|
||||||
</MDTypography>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</Box>
|
|
||||||
</Grid>
|
|
||||||
{dropdown && (
|
|
||||||
<Grid item xs={5}>
|
|
||||||
<Box width="100%" textAlign="right" lineHeight={1}>
|
|
||||||
<MDTypography
|
|
||||||
variant="caption"
|
|
||||||
color="secondary"
|
|
||||||
fontWeight="regular"
|
|
||||||
sx={{cursor: "pointer"}}
|
|
||||||
onClick={dropdown.action}
|
|
||||||
>
|
|
||||||
{dropdown.value}
|
|
||||||
</MDTypography>
|
|
||||||
{dropdown.menu}
|
|
||||||
</Box>
|
|
||||||
</Grid>
|
|
||||||
)}
|
|
||||||
</Grid>
|
|
||||||
</Box>
|
|
||||||
</Card>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
SimpleStatisticsCard.defaultProps = {
|
|
||||||
percentage: {
|
|
||||||
color: "success",
|
|
||||||
value: "",
|
|
||||||
label: "",
|
|
||||||
},
|
|
||||||
dropdown: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
export default SimpleStatisticsCard;
|
|
@ -22,7 +22,7 @@
|
|||||||
import {CircularProgress, Typography} from "@mui/material";
|
import {CircularProgress, Typography} from "@mui/material";
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
import Divider from "@mui/material/Divider";
|
import Divider from "@mui/material/Divider";
|
||||||
import React, {ReactNode} from "react";
|
import React from "react";
|
||||||
import {NavLink} from "react-router-dom";
|
import {NavLink} from "react-router-dom";
|
||||||
import MDTypography from "qqq/components/legacy/MDTypography";
|
import MDTypography from "qqq/components/legacy/MDTypography";
|
||||||
|
|
||||||
@ -44,15 +44,7 @@ export interface StatisticsCardData
|
|||||||
interface Props
|
interface Props
|
||||||
{
|
{
|
||||||
data: StatisticsCardData;
|
data: StatisticsCardData;
|
||||||
color?: "primary" | "secondary" | "info" | "success" | "warning" | "error" | "light" | "dark";
|
|
||||||
icon: ReactNode;
|
|
||||||
increaseIsGood: boolean;
|
increaseIsGood: boolean;
|
||||||
dropdown?: {
|
|
||||||
action: (...args: any) => void;
|
|
||||||
menu: ReactNode;
|
|
||||||
value: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +53,7 @@ StatisticsCard.defaultProps = {
|
|||||||
increaseIsGood: true
|
increaseIsGood: true
|
||||||
};
|
};
|
||||||
|
|
||||||
function StatisticsCard({data, color, icon, increaseIsGood}: Props): JSX.Element
|
function StatisticsCard({data, increaseIsGood}: Props): JSX.Element
|
||||||
{
|
{
|
||||||
const {count, percentageAmount, percentageLabel} = data;
|
const {count, percentageAmount, percentageLabel} = data;
|
||||||
|
|
||||||
@ -94,7 +86,7 @@ function StatisticsCard({data, color, icon, increaseIsGood}: Props): JSX.Element
|
|||||||
<Box mt={0} display="flex" justifyContent="center">
|
<Box mt={0} display="flex" justifyContent="center">
|
||||||
{
|
{
|
||||||
count !== undefined ? (
|
count !== undefined ? (
|
||||||
<Typography mt={0} sx={{color: "#344767", display: "flex", alignContent: "flex-end", fontSize: data?.countFontSize ? data?.countFontSize : "40px"}}>
|
<Typography pb={1} mt={0} sx={{color: "#344767", display: "flex", alignContent: "flex-end", fontSize: data?.countFontSize ? data?.countFontSize : "30px"}}>
|
||||||
{
|
{
|
||||||
data.countURL ? (
|
data.countURL ? (
|
||||||
<NavLink to={data.countURL}>{count.toLocaleString()}</NavLink>
|
<NavLink to={data.countURL}>{count.toLocaleString()}</NavLink>
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
// Declaring props types for ProductCell
|
// Declaring props types for ProductCell
|
||||||
import Box from "@mui/material/Box";
|
import Box from "@mui/material/Box";
|
||||||
|
import React from "react";
|
||||||
import MDTypography from "qqq/components/legacy/MDTypography";
|
import MDTypography from "qqq/components/legacy/MDTypography";
|
||||||
|
|
||||||
interface Props
|
interface Props
|
||||||
@ -35,8 +36,12 @@ function ImageCell({imageUrl, label, total, totalType}: Props): JSX.Element
|
|||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
<Box display="flex" alignItems="center" pr={2}>
|
<Box display="flex" alignItems="center" pr={2}>
|
||||||
<Box mr={2}>
|
<Box sx={{width: "50px"}} mr={2}>
|
||||||
<img src={imageUrl} alt={label} />
|
{
|
||||||
|
imageUrl && imageUrl !== "" && (
|
||||||
|
<img src={imageUrl} alt={label} />
|
||||||
|
)
|
||||||
|
}
|
||||||
</Box>
|
</Box>
|
||||||
<Box display="flex" flexDirection="column">
|
<Box display="flex" flexDirection="column">
|
||||||
<MDTypography variant="button" fontWeight="medium">
|
<MDTypography variant="button" fontWeight="medium">
|
||||||
|
@ -83,7 +83,7 @@ function BaseLayout({stickyNavbar, children}: Props): JSX.Element
|
|||||||
return (
|
return (
|
||||||
<DashboardLayout>
|
<DashboardLayout>
|
||||||
<NavBar />
|
<NavBar />
|
||||||
<Box mt={stickyNavbar ? 3 : 6}>{children}</Box>
|
<Box>{children}</Box>
|
||||||
<Footer company={{href: metaData?.branding?.companyUrl, name: metaData?.branding?.companyName}} />
|
<Footer company={{href: metaData?.branding?.companyUrl, name: metaData?.branding?.companyName}} />
|
||||||
</DashboardLayout>
|
</DashboardLayout>
|
||||||
);
|
);
|
||||||
|
@ -200,7 +200,7 @@ function AppHome({app}: Props): JSX.Element
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<BaseLayout>
|
<BaseLayout>
|
||||||
<Box mt={4} mb={4}>
|
<Box>
|
||||||
{app.widgets && (
|
{app.widgets && (
|
||||||
<DashboardWidgets widgetMetaDataList={widgets} />
|
<DashboardWidgets widgetMetaDataList={widgets} />
|
||||||
)}
|
)}
|
||||||
|
@ -390,7 +390,7 @@ function RecordView({table, launchProcess}: Props): JSX.Element
|
|||||||
<Grid id={section.name} key={section.name} item lg={12} xs={12} sx={{display: "flex", alignItems: "stretch", scrollMarginTop: "100px"}}>
|
<Grid id={section.name} key={section.name} item lg={12} xs={12} sx={{display: "flex", alignItems: "stretch", scrollMarginTop: "100px"}}>
|
||||||
<Box width="100%">
|
<Box width="100%">
|
||||||
<Card id={section.name} sx={{overflow: "visible", scrollMarginTop: "100px"}}>
|
<Card id={section.name} sx={{overflow: "visible", scrollMarginTop: "100px"}}>
|
||||||
<Typography variant="h5" p={3} pb={1}>
|
<Typography variant="h6" p={3} pb={1}>
|
||||||
{section.label}
|
{section.label}
|
||||||
</Typography>
|
</Typography>
|
||||||
<Box p={3} pt={0} flexDirection="column">
|
<Box p={3} pt={0} flexDirection="column">
|
||||||
@ -621,7 +621,7 @@ function RecordView({table, launchProcess}: Props): JSX.Element
|
|||||||
<Box pb={3}>
|
<Box pb={3}>
|
||||||
{
|
{
|
||||||
successMessage ?
|
successMessage ?
|
||||||
<Alert color="success" sx={{mb: 3}} onClose={() =>
|
<Alert color="success" sx={{mb: 3}} onClose={() =>
|
||||||
{
|
{
|
||||||
setSuccessMessage(null);
|
setSuccessMessage(null);
|
||||||
}}>
|
}}>
|
||||||
|
Reference in New Issue
Block a user