Compare commits
21 Commits
ada2e1cb72
...
0eef478a41
| Author | SHA1 | Date | |
|---|---|---|---|
| 0eef478a41 | |||
| 55ba6031eb | |||
| 21d47b1f90 | |||
| 9b831c86d4 | |||
| 8893b96e9b | |||
| 673efe51ed | |||
| b06595e8d8 | |||
| 05c7b49bbc | |||
| b107273db3 | |||
| 5f6eda0fc7 | |||
| f8be0b0b5f | |||
| a73ff5b9a4 | |||
| 1a9a683b25 | |||
| e8a96dd6c4 | |||
| e9aa405464 | |||
| 62f99842b3 | |||
| caf507fe1a | |||
| ba08b3a3d0 | |||
| b0c6cdcd13 | |||
| 3fd7553ce8 | |||
| 947257646d |
140
src/client/dd-hub-react/package-lock.json
generated
140
src/client/dd-hub-react/package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "@minimal/material-kit-react",
|
"name": "dd-hub-react",
|
||||||
"version": "3.0.0",
|
"version": "0.0.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@minimal/material-kit-react",
|
"name": "dd-hub-react",
|
||||||
"version": "3.0.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emotion/cache": "^11.14.0",
|
"@emotion/cache": "^11.14.0",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
@ -14,6 +14,7 @@
|
|||||||
"@fontsource-variable/dm-sans": "^5.2.5",
|
"@fontsource-variable/dm-sans": "^5.2.5",
|
||||||
"@fontsource/barlow": "^5.2.5",
|
"@fontsource/barlow": "^5.2.5",
|
||||||
"@iconify/react": "^5.2.1",
|
"@iconify/react": "^5.2.1",
|
||||||
|
"@mui/icons-material": "^7.2.0",
|
||||||
"@mui/lab": "^7.0.0-beta.10",
|
"@mui/lab": "^7.0.0-beta.10",
|
||||||
"@mui/material": "^7.0.1",
|
"@mui/material": "^7.0.1",
|
||||||
"apexcharts": "^4.5.0",
|
"apexcharts": "^4.5.0",
|
||||||
@ -128,13 +129,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/runtime": {
|
"node_modules/@babel/runtime": {
|
||||||
"version": "7.27.0",
|
"version": "7.27.6",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
|
||||||
"integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==",
|
"integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
|
||||||
"regenerator-runtime": "^0.14.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
@ -1164,15 +1162,41 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/core-downloads-tracker": {
|
"node_modules/@mui/core-downloads-tracker": {
|
||||||
"version": "7.0.1",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.2.0.tgz",
|
||||||
"integrity": "sha512-T5DNVnSD9pMbj4Jk/Uphz+yvj9dfpl2+EqsOuJtG12HxEihNG5pd3qzX5yM1Id4dDwKRvM3dPVcxyzavTFhJeA==",
|
"integrity": "sha512-d49s7kEgI5iX40xb2YPazANvo7Bx0BLg/MNRwv+7BVpZUzXj1DaVCKlQTDex3gy/0jsCb4w7AY2uH4t4AJvSog==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
"url": "https://opencollective.com/mui-org"
|
"url": "https://opencollective.com/mui-org"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@mui/icons-material": {
|
||||||
|
"version": "7.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.2.0.tgz",
|
||||||
|
"integrity": "sha512-gRCspp3pfjHQyTmSOmYw7kUQTd9Udpdan4R8EnZvqPeoAtHnPzkvjBrBqzKaoAbbBp5bGF7BcD18zZJh4nwu0A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": "^7.27.6"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/mui-org"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@mui/material": "^7.2.0",
|
||||||
|
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||||
|
"react": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/react": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@mui/lab": {
|
"node_modules/@mui/lab": {
|
||||||
"version": "7.0.0-beta.10",
|
"version": "7.0.0-beta.10",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/lab/-/lab-7.0.0-beta.10.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/lab/-/lab-7.0.0-beta.10.tgz",
|
||||||
@ -1218,22 +1242,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/material": {
|
"node_modules/@mui/material": {
|
||||||
"version": "7.0.1",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/material/-/material-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/material/-/material-7.2.0.tgz",
|
||||||
"integrity": "sha512-tQwjIIsn/UUSCHoCIQVkANuLua67h7Ro9M9gIHoGWaFbJFuF6cSO4Oda2olDVqIs4SWG+PaDChuu6SngxsaoyQ==",
|
"integrity": "sha512-NTuyFNen5Z2QY+I242MDZzXnFIVIR6ERxo7vntFi9K1wCgSwvIl0HcAO2OOydKqqKApE6omRiYhpny1ZhGuH7Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.10",
|
"@babel/runtime": "^7.27.6",
|
||||||
"@mui/core-downloads-tracker": "^7.0.1",
|
"@mui/core-downloads-tracker": "^7.2.0",
|
||||||
"@mui/system": "^7.0.1",
|
"@mui/system": "^7.2.0",
|
||||||
"@mui/types": "^7.4.0",
|
"@mui/types": "^7.4.4",
|
||||||
"@mui/utils": "^7.0.1",
|
"@mui/utils": "^7.2.0",
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
"@types/react-transition-group": "^4.4.12",
|
"@types/react-transition-group": "^4.4.12",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"csstype": "^3.1.3",
|
"csstype": "^3.1.3",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
"react-is": "^19.0.0",
|
"react-is": "^19.1.0",
|
||||||
"react-transition-group": "^4.4.5"
|
"react-transition-group": "^4.4.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1246,7 +1270,7 @@
|
|||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@emotion/react": "^11.5.0",
|
"@emotion/react": "^11.5.0",
|
||||||
"@emotion/styled": "^11.3.0",
|
"@emotion/styled": "^11.3.0",
|
||||||
"@mui/material-pigment-css": "^7.0.1",
|
"@mui/material-pigment-css": "^7.2.0",
|
||||||
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||||
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
||||||
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
@ -1267,13 +1291,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/private-theming": {
|
"node_modules/@mui/private-theming": {
|
||||||
"version": "7.0.1",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.2.0.tgz",
|
||||||
"integrity": "sha512-1kQ7REYjjzDukuMfTbAjm3pLEhD7gUMC2bWhg9VD6f6sHzyokKzX0XHzlr3IdzNWBjPytGkzHpPIRQrUOoPLCQ==",
|
"integrity": "sha512-y6N1Yt3T5RMxVFnCh6+zeSWBuQdNDm5/UlM0EAYZzZR/1u+XKJWYQmbpx4e+F+1EpkYi3Nk8KhPiQDi83M3zIw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.10",
|
"@babel/runtime": "^7.27.6",
|
||||||
"@mui/utils": "^7.0.1",
|
"@mui/utils": "^7.2.0",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -1294,13 +1318,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/styled-engine": {
|
"node_modules/@mui/styled-engine": {
|
||||||
"version": "7.0.1",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.2.0.tgz",
|
||||||
"integrity": "sha512-BeGe4xZmF7tESKhmctYrL54Kl25kGHPKVdZYM5qj5Xz76WM/poY+d8EmAqUesT6k2rbJWPp2gtOAXXinNCGunQ==",
|
"integrity": "sha512-yq08xynbrNYcB1nBcW9Fn8/h/iniM3ewRguGJXPIAbHvxEF7Pz95kbEEOAAhwzxMX4okhzvHmk0DFuC5ayvgIQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.10",
|
"@babel/runtime": "^7.27.6",
|
||||||
"@emotion/cache": "^11.13.5",
|
"@emotion/cache": "^11.14.0",
|
||||||
"@emotion/serialize": "^1.3.3",
|
"@emotion/serialize": "^1.3.3",
|
||||||
"@emotion/sheet": "^1.4.0",
|
"@emotion/sheet": "^1.4.0",
|
||||||
"csstype": "^3.1.3",
|
"csstype": "^3.1.3",
|
||||||
@ -1328,16 +1352,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/system": {
|
"node_modules/@mui/system": {
|
||||||
"version": "7.0.1",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/system/-/system-7.2.0.tgz",
|
||||||
"integrity": "sha512-pK+puz0hRPHEKGlcPd80mKYD3jpyi0uVIwWffox1WZgPTQMw2dCKLcD+9ndMDJADnrKzmKlpoH756PPFh2UvWA==",
|
"integrity": "sha512-PG7cm/WluU6RAs+gNND2R9vDwNh+ERWxPkqTaiXQJGIFAyJ+VxhyKfzpdZNk0z0XdmBxxi9KhFOpgxjehf/O0A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.10",
|
"@babel/runtime": "^7.27.6",
|
||||||
"@mui/private-theming": "^7.0.1",
|
"@mui/private-theming": "^7.2.0",
|
||||||
"@mui/styled-engine": "^7.0.1",
|
"@mui/styled-engine": "^7.2.0",
|
||||||
"@mui/types": "^7.4.0",
|
"@mui/types": "^7.4.4",
|
||||||
"@mui/utils": "^7.0.1",
|
"@mui/utils": "^7.2.0",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"csstype": "^3.1.3",
|
"csstype": "^3.1.3",
|
||||||
"prop-types": "^15.8.1"
|
"prop-types": "^15.8.1"
|
||||||
@ -1368,12 +1392,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/types": {
|
"node_modules/@mui/types": {
|
||||||
"version": "7.4.0",
|
"version": "7.4.4",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.4.tgz",
|
||||||
"integrity": "sha512-TxJ4ezEeedWHBjOmLtxI203a9DII9l4k83RXmz1PYSAmnyEcK2PglTNmJGxswC/wM5cdl9ap2h8lnXvt2swAGQ==",
|
"integrity": "sha512-p63yhbX52MO/ajXC7hDHJA5yjzJekvWD3q4YDLl1rSg+OXLczMYPvTuSuviPRCgRX8+E42RXz1D/dz9SxPSlWg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.10"
|
"@babel/runtime": "^7.27.6"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
@ -1385,17 +1409,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@mui/utils": {
|
"node_modules/@mui/utils": {
|
||||||
"version": "7.0.1",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.2.0.tgz",
|
||||||
"integrity": "sha512-SJKrrebNpmK9rJCnVL29nGPhPXQYtBZmb7Dsp0f58uIUhQfAKcBXHE4Kjs06SX4CwqeCuwEVgcHY+MgAO6XQ/g==",
|
"integrity": "sha512-O0i1GQL6MDzhKdy9iAu5Yr0Sz1wZjROH1o3aoztuivdCXqEeQYnEjTDiRLGuFxI9zrUbTHBwobMyQH5sNtyacw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.26.10",
|
"@babel/runtime": "^7.27.6",
|
||||||
"@mui/types": "^7.4.0",
|
"@mui/types": "^7.4.4",
|
||||||
"@types/prop-types": "^15.7.14",
|
"@types/prop-types": "^15.7.15",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
"react-is": "^19.0.0"
|
"react-is": "^19.1.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.0.0"
|
"node": ">=14.0.0"
|
||||||
@ -2099,9 +2123,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
"version": "15.7.14",
|
"version": "15.7.15",
|
||||||
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
|
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
|
||||||
"integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
|
"integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
@ -5698,12 +5722,6 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/regenerator-runtime": {
|
|
||||||
"version": "0.14.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
|
||||||
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/regexp.prototype.flags": {
|
"node_modules/regexp.prototype.flags": {
|
||||||
"version": "1.5.4",
|
"version": "1.5.4",
|
||||||
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
|
||||||
|
|||||||
@ -32,6 +32,7 @@
|
|||||||
"@fontsource-variable/dm-sans": "^5.2.5",
|
"@fontsource-variable/dm-sans": "^5.2.5",
|
||||||
"@fontsource/barlow": "^5.2.5",
|
"@fontsource/barlow": "^5.2.5",
|
||||||
"@iconify/react": "^5.2.1",
|
"@iconify/react": "^5.2.1",
|
||||||
|
"@mui/icons-material": "^7.2.0",
|
||||||
"@mui/lab": "^7.0.0-beta.10",
|
"@mui/lab": "^7.0.0-beta.10",
|
||||||
"@mui/material": "^7.0.1",
|
"@mui/material": "^7.0.1",
|
||||||
"apexcharts": "^4.5.0",
|
"apexcharts": "^4.5.0",
|
||||||
|
|||||||
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M20 19.59V8l-6-6H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c.45 0 .85-.15 1.19-.4l-4.43-4.43c-.8.52-1.74.83-2.76.83-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5c0 1.02-.31 1.96-.83 2.75zM9 13c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3-3 1.34-3 3"></path>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 356 B |
@ -1,3 +1,6 @@
|
|||||||
|
import { Filter } from 'src/api/filter-service';
|
||||||
|
import { Product } from 'src/api/product-service';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
_id,
|
_id,
|
||||||
_price,
|
_price,
|
||||||
@ -74,7 +77,7 @@ const COLORS = [
|
|||||||
'#FFC107',
|
'#FFC107',
|
||||||
];
|
];
|
||||||
|
|
||||||
export const _products = [...Array(24)].map((_, index) => {
|
export const _productsTextile = [...Array(24)].map((_, index) => {
|
||||||
const setIndex = index + 1;
|
const setIndex = index + 1;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -208,3 +211,29 @@ export const _notifications = [
|
|||||||
isUnRead: false,
|
isUnRead: false,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const _products: Product[] = [
|
||||||
|
{
|
||||||
|
id: '1',
|
||||||
|
name: "User Manager",
|
||||||
|
version: "1.0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '2',
|
||||||
|
name: "Envelope Generator",
|
||||||
|
version: "1.0.0"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export const _filters: Filter[] = [
|
||||||
|
{ id: 1, label: 'Rechnungsnummer', name: 'invoiceNumber', type: 'VARCHAR' },
|
||||||
|
{ id: 2, label: 'Kundenname', name: 'customerName', type: 'INTEGER' },
|
||||||
|
{ id: 3, label: 'Startdatum', name: 'startDate', type: 'DATE' },
|
||||||
|
{ id: 4, label: 'Enddatum', name: 'endDate', type: 'DATE' },
|
||||||
|
{ id: 5, label: 'Status der Rechnung', name: 'status', type: 'VARCHAR' },
|
||||||
|
{ id: 6, label: 'Mindestbetrag', name: 'minAmount', type: 'DECIMAL' },
|
||||||
|
{ id: 7, label: 'Höchstbetrag', name: 'maxAmount', type: 'DECIMAL' },
|
||||||
|
{ id: 8, label: 'Steuer inbegriffen?', name: 'taxIncluded', type: 'BOOLEAN' },
|
||||||
|
{ id: 9, label: 'Währung', name: 'currency', type: 'VARCHAR' },
|
||||||
|
{ id: 10, label: 'Erstellungsdatum', name: 'createdAt', type: 'DATE' }
|
||||||
|
];
|
||||||
14
src/client/dd-hub-react/src/api/filter-service.ts
Normal file
14
src/client/dd-hub-react/src/api/filter-service.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import { _filters } from 'src/_mock/_data';
|
||||||
|
|
||||||
|
export type Type = 'BOOLEAN' | 'DATE' | 'VARCHAR' | 'INTEGER' | 'DECIMAL';
|
||||||
|
|
||||||
|
export type Filter = {
|
||||||
|
id: number;
|
||||||
|
label?: string;
|
||||||
|
name: string;
|
||||||
|
type: Type;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function getFiltersAsync(): Promise<Filter[]> {
|
||||||
|
return Promise.resolve(_filters);
|
||||||
|
}
|
||||||
@ -1,3 +1,5 @@
|
|||||||
|
import { _products } from "src/_mock";
|
||||||
|
|
||||||
export type Product = {
|
export type Product = {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
@ -16,16 +18,5 @@ export type Product = {
|
|||||||
*/
|
*/
|
||||||
export function getProductsAsync(): Promise<Product[]> {
|
export function getProductsAsync(): Promise<Product[]> {
|
||||||
//TODO: Implement the API call using fetch or axios
|
//TODO: Implement the API call using fetch or axios
|
||||||
return Promise.resolve([
|
return Promise.resolve(_products);
|
||||||
{
|
|
||||||
id: '1',
|
|
||||||
name: "User Manager",
|
|
||||||
version: "1.0.0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: '2',
|
|
||||||
name: "Envelope Generator",
|
|
||||||
version: "1.0.0"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
@ -8,8 +8,6 @@ import { usePathname } from 'src/routes/hooks';
|
|||||||
|
|
||||||
import { ThemeProvider } from 'src/theme/theme-provider';
|
import { ThemeProvider } from 'src/theme/theme-provider';
|
||||||
|
|
||||||
import { Iconify } from 'src/components/iconify';
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
type AppProps = {
|
type AppProps = {
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
import { Label } from 'src/components/label';
|
|
||||||
import { SvgColor } from 'src/components/svg-color';
|
import { SvgColor } from 'src/components/svg-color';
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
@ -13,39 +12,48 @@ export type NavItem = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const navData = [
|
export const navData = [
|
||||||
{
|
|
||||||
title: 'Dashboard',
|
|
||||||
path: '/',
|
|
||||||
icon: icon('ic-analytics'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'User',
|
|
||||||
path: '/user',
|
|
||||||
icon: icon('ic-user'),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: 'Product',
|
title: 'Product',
|
||||||
path: '/products',
|
path: '/products',
|
||||||
icon: icon('ic-cart'),
|
icon: icon('ic-cart'),
|
||||||
info: (
|
//#region example component
|
||||||
<Label color="error" variant="inverted">
|
// info: (
|
||||||
+3
|
// <Label color="error" variant="inverted">
|
||||||
</Label>
|
// +3
|
||||||
),
|
// </Label>
|
||||||
|
// ),
|
||||||
|
//#endregion
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Blog',
|
title: 'Document Search',
|
||||||
path: '/blog',
|
path: '/doc-search',
|
||||||
icon: icon('ic-blog'),
|
icon: icon('ic-doc-search'),
|
||||||
},
|
}
|
||||||
{
|
//#region example pages
|
||||||
title: 'Sign in',
|
// {
|
||||||
path: '/sign-in',
|
// title: 'Dashboard',
|
||||||
icon: icon('ic-lock'),
|
// path: '/',
|
||||||
},
|
// icon: icon('ic-analytics'),
|
||||||
{
|
// },
|
||||||
title: 'Not found',
|
// {
|
||||||
path: '/404',
|
// title: 'User',
|
||||||
icon: icon('ic-disabled'),
|
// path: '/user',
|
||||||
},
|
// icon: icon('ic-user'),
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// title: 'Blog',
|
||||||
|
// path: '/blog',
|
||||||
|
// icon: icon('ic-blog'),
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// title: 'Sign in',
|
||||||
|
// path: '/sign-in',
|
||||||
|
// icon: icon('ic-lock'),
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// title: 'Not found',
|
||||||
|
// path: '/404',
|
||||||
|
// icon: icon('ic-disabled'),
|
||||||
|
// },
|
||||||
|
//#endregion
|
||||||
];
|
];
|
||||||
|
|||||||
16
src/client/dd-hub-react/src/pages/doc-search.tsx
Normal file
16
src/client/dd-hub-react/src/pages/doc-search.tsx
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { _posts } from 'src/_mock';
|
||||||
|
import { CONFIG } from 'src/config-global';
|
||||||
|
|
||||||
|
import { DocSearchView } from 'src/sections/document/view';
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
export default function Page() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<title>{`Document Search - ${CONFIG.appName}`}</title>
|
||||||
|
|
||||||
|
<DocSearchView posts={_posts} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -18,6 +18,7 @@ export const UserPage = lazy(() => import('src/pages/user'));
|
|||||||
export const SignInPage = lazy(() => import('src/pages/sign-in'));
|
export const SignInPage = lazy(() => import('src/pages/sign-in'));
|
||||||
export const ProductsPage = lazy(() => import('src/pages/products'));
|
export const ProductsPage = lazy(() => import('src/pages/products'));
|
||||||
export const Page404 = lazy(() => import('src/pages/page-not-found'));
|
export const Page404 = lazy(() => import('src/pages/page-not-found'));
|
||||||
|
export const DocumentSearch = lazy(() => import('src/pages/doc-search'));
|
||||||
|
|
||||||
const renderFallback = () => (
|
const renderFallback = () => (
|
||||||
<Box
|
<Box
|
||||||
@ -49,9 +50,10 @@ export const routesSection: RouteObject[] = [
|
|||||||
</DashboardLayout>
|
</DashboardLayout>
|
||||||
),
|
),
|
||||||
children: [
|
children: [
|
||||||
{ index: true, element: <DashboardPage /> },
|
{ index: true, element: <ProductsPage /> },
|
||||||
{ path: 'user', element: <UserPage /> },
|
{ path: 'doc-search', element: <DocumentSearch /> },
|
||||||
{ path: 'products', element: <ProductsPage /> },
|
{ path: 'products', element: <ProductsPage /> },
|
||||||
|
{ path: 'user', element: <UserPage /> },
|
||||||
{ path: 'blog', element: <BlogPage /> },
|
{ path: 'blog', element: <BlogPage /> },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@ -0,0 +1,33 @@
|
|||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
|
import Switch from '@mui/material/Switch';
|
||||||
|
import Checkbox from '@mui/material/Checkbox';
|
||||||
|
import FormGroup from '@mui/material/FormGroup';
|
||||||
|
import AddBoxIcon from '@mui/icons-material/AddBox';
|
||||||
|
import FormControlLabel from '@mui/material/FormControlLabel';
|
||||||
|
import AddBoxTwoToneIcon from '@mui/icons-material/AddBoxTwoTone';
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
type BoolFilterProps = {
|
||||||
|
label: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function BoolFilter({ label }: BoolFilterProps) {
|
||||||
|
const [disabled, setDisabled] = useState<boolean>(true);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<FormGroup row>
|
||||||
|
<Checkbox
|
||||||
|
{...{ inputProps: { 'aria-label': 'Checkbox demo' } }}
|
||||||
|
icon={<AddBoxTwoToneIcon />}
|
||||||
|
checkedIcon={<AddBoxIcon />}
|
||||||
|
onClick={() => setDisabled(!disabled)}
|
||||||
|
/>
|
||||||
|
{
|
||||||
|
disabled
|
||||||
|
? <FormControlLabel disabled control={<Switch />} label={label} />
|
||||||
|
: <FormControlLabel control={<Switch />} label={label} />
|
||||||
|
}
|
||||||
|
</FormGroup>
|
||||||
|
);
|
||||||
|
}
|
||||||
211
src/client/dd-hub-react/src/sections/document/doc-item.tsx
Normal file
211
src/client/dd-hub-react/src/sections/document/doc-item.tsx
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
import type { CardProps } from '@mui/material/Card';
|
||||||
|
import type { IconifyName } from 'src/components/iconify';
|
||||||
|
|
||||||
|
import { varAlpha } from 'minimal-shared/utils';
|
||||||
|
|
||||||
|
import Box from '@mui/material/Box';
|
||||||
|
import Link from '@mui/material/Link';
|
||||||
|
import Card from '@mui/material/Card';
|
||||||
|
import Avatar from '@mui/material/Avatar';
|
||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
|
||||||
|
import { fDate } from 'src/utils/format-time';
|
||||||
|
import { fShortenNumber } from 'src/utils/format-number';
|
||||||
|
|
||||||
|
import { Iconify } from 'src/components/iconify';
|
||||||
|
import { SvgColor } from 'src/components/svg-color';
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
export type IDocItem = {
|
||||||
|
id: string;
|
||||||
|
title: string;
|
||||||
|
coverUrl: string;
|
||||||
|
totalViews: number;
|
||||||
|
description: string;
|
||||||
|
totalShares: number;
|
||||||
|
totalComments: number;
|
||||||
|
totalFavorites: number;
|
||||||
|
postedAt: string | number | null;
|
||||||
|
author: {
|
||||||
|
name: string;
|
||||||
|
avatarUrl: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export function DocItem({
|
||||||
|
sx,
|
||||||
|
post,
|
||||||
|
latestDoc,
|
||||||
|
latestDocLarge,
|
||||||
|
...other
|
||||||
|
}: CardProps & {
|
||||||
|
post: IDocItem;
|
||||||
|
latestDoc: boolean;
|
||||||
|
latestDocLarge: boolean;
|
||||||
|
}) {
|
||||||
|
const renderAvatar = (
|
||||||
|
<Avatar
|
||||||
|
alt={post.author.name}
|
||||||
|
src={post.author.avatarUrl}
|
||||||
|
sx={{
|
||||||
|
left: 24,
|
||||||
|
zIndex: 9,
|
||||||
|
bottom: -24,
|
||||||
|
position: 'absolute',
|
||||||
|
...((latestDocLarge || latestDoc) && {
|
||||||
|
top: 24,
|
||||||
|
}),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
const renderTitle = (
|
||||||
|
<Link
|
||||||
|
color="inherit"
|
||||||
|
variant="subtitle2"
|
||||||
|
underline="hover"
|
||||||
|
sx={{
|
||||||
|
height: 44,
|
||||||
|
overflow: 'hidden',
|
||||||
|
WebkitLineClamp: 2,
|
||||||
|
display: '-webkit-box',
|
||||||
|
WebkitBoxOrient: 'vertical',
|
||||||
|
...(latestDocLarge && { typography: 'h5', height: 60 }),
|
||||||
|
...((latestDocLarge || latestDoc) && {
|
||||||
|
color: 'common.white',
|
||||||
|
}),
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{post.title}
|
||||||
|
</Link>
|
||||||
|
);
|
||||||
|
|
||||||
|
const renderInfo = (
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mt: 3,
|
||||||
|
gap: 1.5,
|
||||||
|
display: 'flex',
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
color: 'text.disabled',
|
||||||
|
justifyContent: 'flex-end',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{[
|
||||||
|
{ number: post.totalComments, icon: 'solar:chat-round-dots-bold' },
|
||||||
|
{ number: post.totalViews, icon: 'solar:eye-bold' },
|
||||||
|
{ number: post.totalShares, icon: 'solar:share-bold' },
|
||||||
|
].map((info, _index) => (
|
||||||
|
<Box
|
||||||
|
key={_index}
|
||||||
|
sx={{
|
||||||
|
display: 'flex',
|
||||||
|
...((latestDocLarge || latestDoc) && {
|
||||||
|
opacity: 0.64,
|
||||||
|
color: 'common.white',
|
||||||
|
}),
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Iconify width={16} icon={info.icon as IconifyName} sx={{ mr: 0.5 }} />
|
||||||
|
<Typography variant="caption">{fShortenNumber(info.number)}</Typography>
|
||||||
|
</Box>
|
||||||
|
))}
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
|
||||||
|
const renderCover = (
|
||||||
|
<Box
|
||||||
|
component="img"
|
||||||
|
alt={post.title}
|
||||||
|
src={post.coverUrl}
|
||||||
|
sx={{
|
||||||
|
top: 0,
|
||||||
|
width: 1,
|
||||||
|
height: 1,
|
||||||
|
objectFit: 'cover',
|
||||||
|
position: 'absolute',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
const renderDate = (
|
||||||
|
<Typography
|
||||||
|
variant="caption"
|
||||||
|
component="div"
|
||||||
|
sx={{
|
||||||
|
mb: 1,
|
||||||
|
color: 'text.disabled',
|
||||||
|
...((latestDocLarge || latestDoc) && {
|
||||||
|
opacity: 0.48,
|
||||||
|
color: 'common.white',
|
||||||
|
}),
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{fDate(post.postedAt)}
|
||||||
|
</Typography>
|
||||||
|
);
|
||||||
|
|
||||||
|
const renderShape = (
|
||||||
|
<SvgColor
|
||||||
|
src="/assets/icons/shape-avatar.svg"
|
||||||
|
sx={{
|
||||||
|
left: 0,
|
||||||
|
width: 88,
|
||||||
|
zIndex: 9,
|
||||||
|
height: 36,
|
||||||
|
bottom: -16,
|
||||||
|
position: 'absolute',
|
||||||
|
color: 'background.paper',
|
||||||
|
...((latestDocLarge || latestDoc) && { display: 'none' }),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Card sx={sx} {...other}>
|
||||||
|
<Box
|
||||||
|
sx={(theme) => ({
|
||||||
|
position: 'relative',
|
||||||
|
pt: 'calc(100% * 3 / 4)',
|
||||||
|
...((latestDocLarge || latestDoc) && {
|
||||||
|
pt: 'calc(100% * 4 / 3)',
|
||||||
|
'&:after': {
|
||||||
|
top: 0,
|
||||||
|
content: "''",
|
||||||
|
width: '100%',
|
||||||
|
height: '100%',
|
||||||
|
position: 'absolute',
|
||||||
|
bgcolor: varAlpha(theme.palette.grey['900Channel'], 0.72),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
...(latestDocLarge && {
|
||||||
|
pt: {
|
||||||
|
xs: 'calc(100% * 4 / 3)',
|
||||||
|
sm: 'calc(100% * 3 / 4.66)',
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{renderShape}
|
||||||
|
{renderAvatar}
|
||||||
|
{renderCover}
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
<Box
|
||||||
|
sx={(theme) => ({
|
||||||
|
p: theme.spacing(6, 3, 3, 3),
|
||||||
|
...((latestDocLarge || latestDoc) && {
|
||||||
|
width: 1,
|
||||||
|
bottom: 0,
|
||||||
|
position: 'absolute',
|
||||||
|
}),
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{renderDate}
|
||||||
|
{renderTitle}
|
||||||
|
{renderInfo}
|
||||||
|
</Box>
|
||||||
|
</Card>
|
||||||
|
);
|
||||||
|
}
|
||||||
59
src/client/dd-hub-react/src/sections/document/doc-search.tsx
Normal file
59
src/client/dd-hub-react/src/sections/document/doc-search.tsx
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
import type { Theme, SxProps } from '@mui/material/styles';
|
||||||
|
|
||||||
|
import TextField from '@mui/material/TextField';
|
||||||
|
import InputAdornment from '@mui/material/InputAdornment';
|
||||||
|
import Autocomplete, { autocompleteClasses } from '@mui/material/Autocomplete';
|
||||||
|
|
||||||
|
import { Iconify } from 'src/components/iconify';
|
||||||
|
|
||||||
|
import type { IDocItem } from './doc-item';
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
type DocSearchProps = {
|
||||||
|
posts: IDocItem[];
|
||||||
|
sx?: SxProps<Theme>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function DocSearch({ posts, sx }: DocSearchProps) {
|
||||||
|
return (
|
||||||
|
<Autocomplete
|
||||||
|
sx={{ width: 280 }}
|
||||||
|
autoHighlight
|
||||||
|
popupIcon={null}
|
||||||
|
slotProps={{
|
||||||
|
paper: {
|
||||||
|
sx: {
|
||||||
|
width: 320,
|
||||||
|
[`& .${autocompleteClasses.option}`]: {
|
||||||
|
typography: 'body2',
|
||||||
|
},
|
||||||
|
...sx,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
options={posts}
|
||||||
|
getOptionLabel={(post) => post.title}
|
||||||
|
isOptionEqualToValue={(option, value) => option.id === value.id}
|
||||||
|
renderInput={(params) => (
|
||||||
|
<TextField
|
||||||
|
{...params}
|
||||||
|
placeholder="Search post..."
|
||||||
|
slotProps={{
|
||||||
|
input: {
|
||||||
|
...params.InputProps,
|
||||||
|
startAdornment: (
|
||||||
|
<InputAdornment position="start">
|
||||||
|
<Iconify
|
||||||
|
icon="eva:search-fill"
|
||||||
|
sx={{ ml: 1, width: 20, height: 20, color: 'text.disabled' }}
|
||||||
|
/>
|
||||||
|
</InputAdornment>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
96
src/client/dd-hub-react/src/sections/document/doc-sort.tsx
Normal file
96
src/client/dd-hub-react/src/sections/document/doc-sort.tsx
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
import type { ButtonProps } from '@mui/material/Button';
|
||||||
|
|
||||||
|
import { useState, useCallback } from 'react';
|
||||||
|
import { varAlpha } from 'minimal-shared/utils';
|
||||||
|
|
||||||
|
import Button from '@mui/material/Button';
|
||||||
|
import Popover from '@mui/material/Popover';
|
||||||
|
import MenuList from '@mui/material/MenuList';
|
||||||
|
import MenuItem, { menuItemClasses } from '@mui/material/MenuItem';
|
||||||
|
|
||||||
|
import { Iconify } from 'src/components/iconify';
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
type DocSortProps = ButtonProps & {
|
||||||
|
sortBy: string;
|
||||||
|
onSort: (newSort: string) => void;
|
||||||
|
options: { value: string; label: string }[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export function DocSort({ options, sortBy, onSort, sx, ...other }: DocSortProps) {
|
||||||
|
const [openPopover, setOpenPopover] = useState<HTMLButtonElement | null>(null);
|
||||||
|
|
||||||
|
const handleOpenPopover = useCallback((event: React.MouseEvent<HTMLButtonElement>) => {
|
||||||
|
setOpenPopover(event.currentTarget);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const handleClosePopover = useCallback(() => {
|
||||||
|
setOpenPopover(null);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
disableRipple
|
||||||
|
color="inherit"
|
||||||
|
onClick={handleOpenPopover}
|
||||||
|
endIcon={
|
||||||
|
<Iconify
|
||||||
|
icon={openPopover ? 'eva:arrow-ios-upward-fill' : 'eva:arrow-ios-downward-fill'}
|
||||||
|
sx={{
|
||||||
|
ml: -0.5,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
sx={[
|
||||||
|
{
|
||||||
|
bgcolor: (theme) => varAlpha(theme.vars.palette.grey['500Channel'], 0.08),
|
||||||
|
},
|
||||||
|
...(Array.isArray(sx) ? sx : [sx]),
|
||||||
|
]}
|
||||||
|
{...other}
|
||||||
|
>
|
||||||
|
{options.find((option) => option.value === sortBy)?.label}
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<Popover
|
||||||
|
open={!!openPopover}
|
||||||
|
anchorEl={openPopover}
|
||||||
|
onClose={handleClosePopover}
|
||||||
|
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
|
||||||
|
transformOrigin={{ vertical: 'top', horizontal: 'right' }}
|
||||||
|
>
|
||||||
|
<MenuList
|
||||||
|
disablePadding
|
||||||
|
sx={{
|
||||||
|
p: 0.5,
|
||||||
|
gap: 0.5,
|
||||||
|
width: 160,
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
[`& .${menuItemClasses.root}`]: {
|
||||||
|
px: 1,
|
||||||
|
gap: 2,
|
||||||
|
borderRadius: 0.75,
|
||||||
|
[`&.${menuItemClasses.selected}`]: { bgcolor: 'action.selected' },
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{options.map((option) => (
|
||||||
|
<MenuItem
|
||||||
|
key={option.value}
|
||||||
|
selected={option.value === sortBy}
|
||||||
|
onClick={() => {
|
||||||
|
onSort(option.value);
|
||||||
|
handleClosePopover();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{option.label}
|
||||||
|
</MenuItem>
|
||||||
|
))}
|
||||||
|
</MenuList>
|
||||||
|
</Popover>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
35
src/client/dd-hub-react/src/sections/document/num-filter.tsx
Normal file
35
src/client/dd-hub-react/src/sections/document/num-filter.tsx
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
|
import TextField from '@mui/material/TextField';
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
type BoolFilterProps = {
|
||||||
|
label: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isNumbers = (str: string) => /^[0-9]*$/.test(str);
|
||||||
|
|
||||||
|
export function IntFilter({ label }: BoolFilterProps) {
|
||||||
|
const [val, setVal] = useState("");
|
||||||
|
|
||||||
|
const onInputChange = (event: any) => {
|
||||||
|
const value = event.target.value;
|
||||||
|
if (isNumbers(value)) {
|
||||||
|
setVal(value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<TextField label={label} value={val} onChange={onInputChange} />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function DecimalFilter({ label }: BoolFilterProps) {
|
||||||
|
return (
|
||||||
|
<TextField
|
||||||
|
type="number"
|
||||||
|
label={label}
|
||||||
|
variant="standard"
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -0,0 +1,160 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { useState, useCallback, useEffect } from 'react';
|
||||||
|
|
||||||
|
import Box from '@mui/material/Box';
|
||||||
|
import Grid from '@mui/material/Grid';
|
||||||
|
import Button from '@mui/material/Button';
|
||||||
|
import TextField from '@mui/material/TextField';
|
||||||
|
import Typography from '@mui/material/Typography';
|
||||||
|
import Pagination from '@mui/material/Pagination';
|
||||||
|
|
||||||
|
import { DashboardContent } from 'src/layouts/dashboard';
|
||||||
|
import { Filter, getFiltersAsync } from 'src/api/filter-service';
|
||||||
|
|
||||||
|
import { Iconify } from 'src/components/iconify';
|
||||||
|
|
||||||
|
import { DocItem } from '../doc-item';
|
||||||
|
import { BoolFilter } from '../bool-filter';
|
||||||
|
import { DecimalFilter, IntFilter } from '../num-filter';
|
||||||
|
|
||||||
|
import type { IDocItem } from '../doc-item';
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
posts: IDocItem[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export function DocSearchView({ posts }: Props) {
|
||||||
|
const [sortBy, setSortBy] = useState('latest');
|
||||||
|
|
||||||
|
const [filters, setFilters] = useState<Filter[]>([])
|
||||||
|
|
||||||
|
const [disabledStates, setDisabledStates] = useState<Record<number, boolean>>({});
|
||||||
|
|
||||||
|
const setDisabledState = useCallback((index: number, state: boolean) => {
|
||||||
|
setDisabledStates(prev => ({
|
||||||
|
...prev,
|
||||||
|
[index]: state,
|
||||||
|
}));
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const handleSort = useCallback((newSort: string) => {
|
||||||
|
setSortBy(newSort);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getFiltersAsync().then((res) => {
|
||||||
|
setFilters(res);
|
||||||
|
const newDisabledStates = res.reduce<Record<number, boolean>>((acc, filter, index) => {
|
||||||
|
if (filter.type === 'BOOLEAN') {
|
||||||
|
acc[index] = true;
|
||||||
|
}
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
setDisabledStates(newDisabledStates);
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
//#region example components
|
||||||
|
// <Box
|
||||||
|
// sx={{
|
||||||
|
// mb: 5,
|
||||||
|
// display: 'flex',
|
||||||
|
// alignItems: 'center',
|
||||||
|
// justifyContent: 'space-between',
|
||||||
|
// }}
|
||||||
|
// >
|
||||||
|
// <DocSearch posts={posts} />
|
||||||
|
// <DocSort
|
||||||
|
// sortBy={sortBy}
|
||||||
|
// onSort={handleSort}
|
||||||
|
// options={[
|
||||||
|
// { value: 'latest', label: 'Latest' },
|
||||||
|
// { value: 'popular', label: 'Popular' },
|
||||||
|
// { value: 'oldest', label: 'Oldest' },
|
||||||
|
// ]}
|
||||||
|
// />
|
||||||
|
// </Box>
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
return (
|
||||||
|
<DashboardContent>
|
||||||
|
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mb: 5,
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Typography variant="h4" sx={{ flexGrow: 1 }}>
|
||||||
|
Document Search
|
||||||
|
</Typography>
|
||||||
|
<Button
|
||||||
|
variant="contained"
|
||||||
|
color="inherit"
|
||||||
|
startIcon={<Iconify icon="mingcute:add-line" />}
|
||||||
|
>
|
||||||
|
New filter
|
||||||
|
</Button>
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
<>
|
||||||
|
{filters.map((filter, index) => {
|
||||||
|
let filterComp;
|
||||||
|
switch (filter.type) {
|
||||||
|
case 'BOOLEAN':
|
||||||
|
filterComp = <BoolFilter label={filter.label ?? filter.name} />
|
||||||
|
break;
|
||||||
|
case 'INTEGER':
|
||||||
|
filterComp = <IntFilter label={filter.label ?? filter.name} />
|
||||||
|
break;
|
||||||
|
case 'DECIMAL':
|
||||||
|
filterComp = <DecimalFilter label={filter.label ?? filter.name} />
|
||||||
|
break;
|
||||||
|
case 'VARCHAR':
|
||||||
|
case 'DATE':
|
||||||
|
default:
|
||||||
|
filterComp = <TextField id={`filter-${filter.id.toString()}`} label={filter.label ?? filter.type} variant="filled" />
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
mb: 5,
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{filterComp}
|
||||||
|
</Box>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
|
||||||
|
<Grid container spacing={3}>
|
||||||
|
{posts.map((post, index) => {
|
||||||
|
const latestDocLarge = index === 0;
|
||||||
|
const latestDoc = index === 1 || index === 2;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Grid
|
||||||
|
key={post.id}
|
||||||
|
size={{
|
||||||
|
xs: 12,
|
||||||
|
sm: latestDocLarge ? 12 : 6,
|
||||||
|
md: latestDocLarge ? 6 : 3,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<DocItem post={post} latestDoc={latestDoc} latestDocLarge={latestDocLarge} />
|
||||||
|
</Grid>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<Pagination count={10} color="primary" sx={{ mt: 8, mx: 'auto' }} />
|
||||||
|
</DashboardContent>
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
export * from './doc-search-view';
|
||||||
@ -47,12 +47,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/types" "^7.27.0"
|
"@babel/types" "^7.27.0"
|
||||||
|
|
||||||
"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.26.10", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
|
"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.26.10", "@babel/runtime@^7.27.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
|
||||||
version "7.27.0"
|
version "7.27.6"
|
||||||
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz"
|
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz"
|
||||||
integrity sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==
|
integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==
|
||||||
dependencies:
|
|
||||||
regenerator-runtime "^0.14.0"
|
|
||||||
|
|
||||||
"@babel/template@^7.27.0":
|
"@babel/template@^7.27.0":
|
||||||
version "7.27.0"
|
version "7.27.0"
|
||||||
@ -101,7 +99,7 @@
|
|||||||
source-map "^0.5.7"
|
source-map "^0.5.7"
|
||||||
stylis "4.2.0"
|
stylis "4.2.0"
|
||||||
|
|
||||||
"@emotion/cache@^11.13.5", "@emotion/cache@^11.14.0":
|
"@emotion/cache@^11.14.0":
|
||||||
version "11.14.0"
|
version "11.14.0"
|
||||||
resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz"
|
resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz"
|
||||||
integrity sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==
|
integrity sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==
|
||||||
@ -351,10 +349,17 @@
|
|||||||
"@jridgewell/resolve-uri" "^3.1.0"
|
"@jridgewell/resolve-uri" "^3.1.0"
|
||||||
"@jridgewell/sourcemap-codec" "^1.4.14"
|
"@jridgewell/sourcemap-codec" "^1.4.14"
|
||||||
|
|
||||||
"@mui/core-downloads-tracker@^7.0.1":
|
"@mui/core-downloads-tracker@^7.2.0":
|
||||||
version "7.0.1"
|
version "7.2.0"
|
||||||
resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.0.1.tgz"
|
resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.2.0.tgz"
|
||||||
integrity sha512-T5DNVnSD9pMbj4Jk/Uphz+yvj9dfpl2+EqsOuJtG12HxEihNG5pd3qzX5yM1Id4dDwKRvM3dPVcxyzavTFhJeA==
|
integrity sha512-d49s7kEgI5iX40xb2YPazANvo7Bx0BLg/MNRwv+7BVpZUzXj1DaVCKlQTDex3gy/0jsCb4w7AY2uH4t4AJvSog==
|
||||||
|
|
||||||
|
"@mui/icons-material@^7.2.0":
|
||||||
|
version "7.2.0"
|
||||||
|
resolved "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.2.0.tgz"
|
||||||
|
integrity sha512-gRCspp3pfjHQyTmSOmYw7kUQTd9Udpdan4R8EnZvqPeoAtHnPzkvjBrBqzKaoAbbBp5bGF7BcD18zZJh4nwu0A==
|
||||||
|
dependencies:
|
||||||
|
"@babel/runtime" "^7.27.6"
|
||||||
|
|
||||||
"@mui/lab@^7.0.0-beta.10":
|
"@mui/lab@^7.0.0-beta.10":
|
||||||
version "7.0.0-beta.10"
|
version "7.0.0-beta.10"
|
||||||
@ -368,77 +373,77 @@
|
|||||||
clsx "^2.1.1"
|
clsx "^2.1.1"
|
||||||
prop-types "^15.8.1"
|
prop-types "^15.8.1"
|
||||||
|
|
||||||
"@mui/material@^7.0.1":
|
"@mui/material@^7.0.1", "@mui/material@^7.2.0":
|
||||||
version "7.0.1"
|
version "7.2.0"
|
||||||
resolved "https://registry.npmjs.org/@mui/material/-/material-7.0.1.tgz"
|
resolved "https://registry.npmjs.org/@mui/material/-/material-7.2.0.tgz"
|
||||||
integrity sha512-tQwjIIsn/UUSCHoCIQVkANuLua67h7Ro9M9gIHoGWaFbJFuF6cSO4Oda2olDVqIs4SWG+PaDChuu6SngxsaoyQ==
|
integrity sha512-NTuyFNen5Z2QY+I242MDZzXnFIVIR6ERxo7vntFi9K1wCgSwvIl0HcAO2OOydKqqKApE6omRiYhpny1ZhGuH7Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.26.10"
|
"@babel/runtime" "^7.27.6"
|
||||||
"@mui/core-downloads-tracker" "^7.0.1"
|
"@mui/core-downloads-tracker" "^7.2.0"
|
||||||
"@mui/system" "^7.0.1"
|
"@mui/system" "^7.2.0"
|
||||||
"@mui/types" "^7.4.0"
|
"@mui/types" "^7.4.4"
|
||||||
"@mui/utils" "^7.0.1"
|
"@mui/utils" "^7.2.0"
|
||||||
"@popperjs/core" "^2.11.8"
|
"@popperjs/core" "^2.11.8"
|
||||||
"@types/react-transition-group" "^4.4.12"
|
"@types/react-transition-group" "^4.4.12"
|
||||||
clsx "^2.1.1"
|
clsx "^2.1.1"
|
||||||
csstype "^3.1.3"
|
csstype "^3.1.3"
|
||||||
prop-types "^15.8.1"
|
prop-types "^15.8.1"
|
||||||
react-is "^19.0.0"
|
react-is "^19.1.0"
|
||||||
react-transition-group "^4.4.5"
|
react-transition-group "^4.4.5"
|
||||||
|
|
||||||
"@mui/private-theming@^7.0.1":
|
"@mui/private-theming@^7.2.0":
|
||||||
version "7.0.1"
|
version "7.2.0"
|
||||||
resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.0.1.tgz"
|
resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.2.0.tgz"
|
||||||
integrity sha512-1kQ7REYjjzDukuMfTbAjm3pLEhD7gUMC2bWhg9VD6f6sHzyokKzX0XHzlr3IdzNWBjPytGkzHpPIRQrUOoPLCQ==
|
integrity sha512-y6N1Yt3T5RMxVFnCh6+zeSWBuQdNDm5/UlM0EAYZzZR/1u+XKJWYQmbpx4e+F+1EpkYi3Nk8KhPiQDi83M3zIw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.26.10"
|
"@babel/runtime" "^7.27.6"
|
||||||
"@mui/utils" "^7.0.1"
|
"@mui/utils" "^7.2.0"
|
||||||
prop-types "^15.8.1"
|
prop-types "^15.8.1"
|
||||||
|
|
||||||
"@mui/styled-engine@^7.0.1":
|
"@mui/styled-engine@^7.2.0":
|
||||||
version "7.0.1"
|
version "7.2.0"
|
||||||
resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.0.1.tgz"
|
resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.2.0.tgz"
|
||||||
integrity sha512-BeGe4xZmF7tESKhmctYrL54Kl25kGHPKVdZYM5qj5Xz76WM/poY+d8EmAqUesT6k2rbJWPp2gtOAXXinNCGunQ==
|
integrity sha512-yq08xynbrNYcB1nBcW9Fn8/h/iniM3ewRguGJXPIAbHvxEF7Pz95kbEEOAAhwzxMX4okhzvHmk0DFuC5ayvgIQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.26.10"
|
"@babel/runtime" "^7.27.6"
|
||||||
"@emotion/cache" "^11.13.5"
|
"@emotion/cache" "^11.14.0"
|
||||||
"@emotion/serialize" "^1.3.3"
|
"@emotion/serialize" "^1.3.3"
|
||||||
"@emotion/sheet" "^1.4.0"
|
"@emotion/sheet" "^1.4.0"
|
||||||
csstype "^3.1.3"
|
csstype "^3.1.3"
|
||||||
prop-types "^15.8.1"
|
prop-types "^15.8.1"
|
||||||
|
|
||||||
"@mui/system@^7.0.1":
|
"@mui/system@^7.0.1", "@mui/system@^7.2.0":
|
||||||
version "7.0.1"
|
version "7.2.0"
|
||||||
resolved "https://registry.npmjs.org/@mui/system/-/system-7.0.1.tgz"
|
resolved "https://registry.npmjs.org/@mui/system/-/system-7.2.0.tgz"
|
||||||
integrity sha512-pK+puz0hRPHEKGlcPd80mKYD3jpyi0uVIwWffox1WZgPTQMw2dCKLcD+9ndMDJADnrKzmKlpoH756PPFh2UvWA==
|
integrity sha512-PG7cm/WluU6RAs+gNND2R9vDwNh+ERWxPkqTaiXQJGIFAyJ+VxhyKfzpdZNk0z0XdmBxxi9KhFOpgxjehf/O0A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.26.10"
|
"@babel/runtime" "^7.27.6"
|
||||||
"@mui/private-theming" "^7.0.1"
|
"@mui/private-theming" "^7.2.0"
|
||||||
"@mui/styled-engine" "^7.0.1"
|
"@mui/styled-engine" "^7.2.0"
|
||||||
"@mui/types" "^7.4.0"
|
"@mui/types" "^7.4.4"
|
||||||
"@mui/utils" "^7.0.1"
|
"@mui/utils" "^7.2.0"
|
||||||
clsx "^2.1.1"
|
clsx "^2.1.1"
|
||||||
csstype "^3.1.3"
|
csstype "^3.1.3"
|
||||||
prop-types "^15.8.1"
|
prop-types "^15.8.1"
|
||||||
|
|
||||||
"@mui/types@^7.4.0":
|
"@mui/types@^7.4.0", "@mui/types@^7.4.4":
|
||||||
version "7.4.0"
|
version "7.4.4"
|
||||||
resolved "https://registry.npmjs.org/@mui/types/-/types-7.4.0.tgz"
|
resolved "https://registry.npmjs.org/@mui/types/-/types-7.4.4.tgz"
|
||||||
integrity sha512-TxJ4ezEeedWHBjOmLtxI203a9DII9l4k83RXmz1PYSAmnyEcK2PglTNmJGxswC/wM5cdl9ap2h8lnXvt2swAGQ==
|
integrity sha512-p63yhbX52MO/ajXC7hDHJA5yjzJekvWD3q4YDLl1rSg+OXLczMYPvTuSuviPRCgRX8+E42RXz1D/dz9SxPSlWg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.26.10"
|
"@babel/runtime" "^7.27.6"
|
||||||
|
|
||||||
"@mui/utils@^7.0.1":
|
"@mui/utils@^7.0.1", "@mui/utils@^7.2.0":
|
||||||
version "7.0.1"
|
version "7.2.0"
|
||||||
resolved "https://registry.npmjs.org/@mui/utils/-/utils-7.0.1.tgz"
|
resolved "https://registry.npmjs.org/@mui/utils/-/utils-7.2.0.tgz"
|
||||||
integrity sha512-SJKrrebNpmK9rJCnVL29nGPhPXQYtBZmb7Dsp0f58uIUhQfAKcBXHE4Kjs06SX4CwqeCuwEVgcHY+MgAO6XQ/g==
|
integrity sha512-O0i1GQL6MDzhKdy9iAu5Yr0Sz1wZjROH1o3aoztuivdCXqEeQYnEjTDiRLGuFxI9zrUbTHBwobMyQH5sNtyacw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.26.10"
|
"@babel/runtime" "^7.27.6"
|
||||||
"@mui/types" "^7.4.0"
|
"@mui/types" "^7.4.4"
|
||||||
"@types/prop-types" "^15.7.14"
|
"@types/prop-types" "^15.7.15"
|
||||||
clsx "^2.1.1"
|
clsx "^2.1.1"
|
||||||
prop-types "^15.8.1"
|
prop-types "^15.8.1"
|
||||||
react-is "^19.0.0"
|
react-is "^19.1.0"
|
||||||
|
|
||||||
"@nodelib/fs.scandir@2.1.5":
|
"@nodelib/fs.scandir@2.1.5":
|
||||||
version "2.1.5"
|
version "2.1.5"
|
||||||
@ -571,10 +576,10 @@
|
|||||||
resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz"
|
resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz"
|
||||||
integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
|
integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
|
||||||
|
|
||||||
"@types/prop-types@^15.7.14":
|
"@types/prop-types@^15.7.15":
|
||||||
version "15.7.14"
|
version "15.7.15"
|
||||||
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz"
|
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz"
|
||||||
integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==
|
integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==
|
||||||
|
|
||||||
"@types/react-dom@^19.1.1":
|
"@types/react-dom@^19.1.1":
|
||||||
version "19.1.1"
|
version "19.1.1"
|
||||||
@ -2308,7 +2313,7 @@ react-is@^16.7.0:
|
|||||||
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
||||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||||
|
|
||||||
react-is@^19.0.0:
|
react-is@^19.1.0:
|
||||||
version "19.1.0"
|
version "19.1.0"
|
||||||
resolved "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz"
|
resolved "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz"
|
||||||
integrity sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==
|
integrity sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==
|
||||||
@ -2364,11 +2369,6 @@ reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
|
|||||||
get-proto "^1.0.1"
|
get-proto "^1.0.1"
|
||||||
which-builtin-type "^1.2.1"
|
which-builtin-type "^1.2.1"
|
||||||
|
|
||||||
regenerator-runtime@^0.14.0:
|
|
||||||
version "0.14.1"
|
|
||||||
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz"
|
|
||||||
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
|
|
||||||
|
|
||||||
regexp.prototype.flags@^1.5.3:
|
regexp.prototype.flags@^1.5.3:
|
||||||
version "1.5.4"
|
version "1.5.4"
|
||||||
resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz"
|
resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user