mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-22 18:50:08 +03:00
(cherry picked from commit b88e478f04e3441e91bc657b6657a56a6668e453)
This commit is contained in:
parent
1deb13bd45
commit
f1f2d19d88
320
src/fireedge/package-lock.json
generated
320
src/fireedge/package-lock.json
generated
@ -26,7 +26,7 @@
|
||||
"@loadable/component": "5.15.0",
|
||||
"@loadable/server": "5.15.1",
|
||||
"@loadable/webpack-plugin": "5.15.1",
|
||||
"@mui/lab": "5.0.0-alpha.54",
|
||||
"@mui/lab": "5.0.0-alpha.59",
|
||||
"@mui/material": "5.1.0",
|
||||
"@mui/styles": "5.1.0",
|
||||
"@mui/system": "5.1.0",
|
||||
@ -46,7 +46,6 @@
|
||||
"dompurify": "2.2.6",
|
||||
"express": "4.17.1",
|
||||
"fast-xml-parser": "3.19.0",
|
||||
"flatpickr": "4.6.9",
|
||||
"fs-extra": "9.0.1",
|
||||
"fuse.js": "6.4.1",
|
||||
"helmet": "4.1.1",
|
||||
@ -60,7 +59,7 @@
|
||||
"jsonwebtoken": "8.5.1",
|
||||
"jwt-simple": "0.5.6",
|
||||
"lockfile": "1.0.4",
|
||||
"luxon": "1.28.0",
|
||||
"luxon": "2.1.1",
|
||||
"marked": "2.0.0",
|
||||
"morgan": "1.10.0",
|
||||
"multer": "1.4.3",
|
||||
@ -74,7 +73,6 @@
|
||||
"react": "17.0.2",
|
||||
"react-beautiful-dnd": "13.1.0",
|
||||
"react-dom": "17.0.2",
|
||||
"react-flatpickr": "3.10.7",
|
||||
"react-flow-renderer": "9.6.0",
|
||||
"react-hook-form": "7.18.1",
|
||||
"react-json-pretty": "2.2.0",
|
||||
@ -1850,9 +1848,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/babel-plugin": {
|
||||
"version": "11.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz",
|
||||
"integrity": "sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA==",
|
||||
"version": "11.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.1.tgz",
|
||||
"integrity": "sha512-K3/6Y+J/sIAjplf3uIteWLhPuOyuMNnE+iyYnTF/m294vc6IL90kTHp7y8ldZYbpKlP17rpOWDKM9DvTcrOmNQ==",
|
||||
"dependencies": {
|
||||
"@babel/helper-module-imports": "^7.12.13",
|
||||
"@babel/plugin-syntax-jsx": "^7.12.13",
|
||||
@ -1865,22 +1863,22 @@
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"find-root": "^1.1.0",
|
||||
"source-map": "^0.5.7",
|
||||
"stylis": "^4.0.3"
|
||||
"stylis": "4.0.13"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/cache": {
|
||||
"version": "11.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.6.0.tgz",
|
||||
"integrity": "sha512-ElbsWY1KMwEowkv42vGo0UPuLgtPYfIs9BxxVrmvsaJVvktknsHYYlx5NQ5g6zLDcOTyamlDc7FkRg2TAcQDKQ==",
|
||||
"version": "11.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz",
|
||||
"integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==",
|
||||
"dependencies": {
|
||||
"@emotion/memoize": "^0.7.4",
|
||||
"@emotion/sheet": "^1.1.0",
|
||||
"@emotion/utils": "^1.0.0",
|
||||
"@emotion/weak-memoize": "^0.2.5",
|
||||
"stylis": "^4.0.10"
|
||||
"stylis": "4.0.13"
|
||||
}
|
||||
},
|
||||
"node_modules/@emotion/hash": {
|
||||
@ -2168,6 +2166,42 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/base": {
|
||||
"version": "5.0.0-alpha.59",
|
||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.59.tgz",
|
||||
"integrity": "sha512-rPgN2FW0FAjQ9+LQ+XBsq3DFcuiiMFhf8uoLJAWnnzft27IJvJqbrhfpCZ68G6l+umJLbbl5RIIbpt8ALZDDNQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.3",
|
||||
"@emotion/is-prop-valid": "^1.1.1",
|
||||
"@mui/utils": "^5.2.3",
|
||||
"@popperjs/core": "^2.4.4",
|
||||
"clsx": "^1.1.1",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-is": "^17.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/mui"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "^16.8.6 || ^17.0.0",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/base/node_modules/react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||
},
|
||||
"node_modules/@mui/core": {
|
||||
"version": "5.0.0-alpha.54",
|
||||
"resolved": "https://registry.npmjs.org/@mui/core/-/core-5.0.0-alpha.54.tgz",
|
||||
@ -2201,33 +2235,37 @@
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||
},
|
||||
"node_modules/@mui/lab": {
|
||||
"version": "5.0.0-alpha.54",
|
||||
"resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.54.tgz",
|
||||
"integrity": "sha512-G7Ic9TQkWT+DA8AUYKU99sQivFjz3WEuy3SsG9I/zc9DanlmUH26F1jdwUcHhEiCNEif7tEzVtIAPhgSGjbgsg==",
|
||||
"version": "5.0.0-alpha.59",
|
||||
"resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.59.tgz",
|
||||
"integrity": "sha512-B+7EkbM+NRuUFFPzG2lqbyI73FM3W19RFkrWJdNZ+gd6C+NTdHdVS9UxSZm54PmSFEnd77wAWKdrIkhcFzEgZQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.0",
|
||||
"@babel/runtime": "^7.16.3",
|
||||
"@date-io/date-fns": "^2.11.0",
|
||||
"@date-io/dayjs": "^2.11.0",
|
||||
"@date-io/luxon": "^2.11.1",
|
||||
"@date-io/moment": "^2.11.0",
|
||||
"@mui/core": "5.0.0-alpha.54",
|
||||
"@mui/system": "^5.1.0",
|
||||
"@mui/utils": "^5.1.0",
|
||||
"@mui/base": "5.0.0-alpha.59",
|
||||
"@mui/system": "^5.2.3",
|
||||
"@mui/utils": "^5.2.3",
|
||||
"clsx": "^1.1.1",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-is": "^17.0.2",
|
||||
"react-transition-group": "^4.4.2",
|
||||
"rifm": "^0.12.0"
|
||||
"rifm": "^0.12.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/mui"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@mui/material": "^5.0.0",
|
||||
"@types/react": "^16.8.6 || ^17.0.0",
|
||||
"date-fns": "^2.25.0",
|
||||
"dayjs": "^1.10.7",
|
||||
"luxon": "^1.28.0",
|
||||
"luxon": "^1.28.0 || ^2.0.0",
|
||||
"moment": "^2.29.1",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2"
|
||||
@ -2250,6 +2288,45 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/lab/node_modules/@mui/system": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.2.3.tgz",
|
||||
"integrity": "sha512-YvkjmqgOruZgr+IkueRns99gl3MmnNs8BhnlZosYMLzKz/1lY0JqVBFqUh4sGVbD0UEKFwdk8H31itG5OIPChA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.3",
|
||||
"@mui/private-theming": "^5.2.3",
|
||||
"@mui/styled-engine": "^5.2.0",
|
||||
"@mui/types": "^7.1.0",
|
||||
"@mui/utils": "^5.2.3",
|
||||
"clsx": "^1.1.1",
|
||||
"csstype": "^3.0.10",
|
||||
"prop-types": "^15.7.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/mui"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@emotion/react": "^11.5.0",
|
||||
"@emotion/styled": "^11.3.0",
|
||||
"@types/react": "^16.8.6 || ^17.0.0",
|
||||
"react": "^17.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@emotion/react": {
|
||||
"optional": true
|
||||
},
|
||||
"@emotion/styled": {
|
||||
"optional": true
|
||||
},
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@mui/lab/node_modules/react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
@ -5082,9 +5159,9 @@
|
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.14.tgz",
|
||||
"integrity": "sha512-RsGkAN9JEAYMObS72kzUsPPcPGMqX1rBqGuXi9aa4TBKLzICoLf+DAAtd0fVFzrniJqYzpby47gthCUoObfs0Q=="
|
||||
"version": "1.4.16",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.16.tgz",
|
||||
"integrity": "sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA=="
|
||||
},
|
||||
"node_modules/elliptic": {
|
||||
"version": "6.5.4",
|
||||
@ -6579,11 +6656,6 @@
|
||||
"node": "^10.12.0 || >=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/flatpickr": {
|
||||
"version": "4.6.9",
|
||||
"resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz",
|
||||
"integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw=="
|
||||
},
|
||||
"node_modules/flatted": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
|
||||
@ -7576,9 +7648,9 @@
|
||||
"integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU="
|
||||
},
|
||||
"node_modules/is-negative-zero": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
|
||||
"integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
|
||||
"integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
@ -7687,11 +7759,11 @@
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||
},
|
||||
"node_modules/is-weakref": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz",
|
||||
"integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==",
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
|
||||
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.0"
|
||||
"call-bind": "^1.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
@ -7721,9 +7793,9 @@
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||
},
|
||||
"node_modules/jest-worker": {
|
||||
"version": "27.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz",
|
||||
"integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==",
|
||||
"version": "27.4.4",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.4.tgz",
|
||||
"integrity": "sha512-jfwxYJvfua1b1XkyuyPh01ATmgg4e5fPM/muLmhy9Qc6dmiwacQB0MLHaU6IjEsv/+nAixHGxTn8WllA27Pn0w==",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"merge-stream": "^2.0.0",
|
||||
@ -8240,11 +8312,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/luxon": {
|
||||
"version": "1.28.0",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz",
|
||||
"integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-2.1.1.tgz",
|
||||
"integrity": "sha512-6VQVNw7+kQu3hL1ZH5GyOhnk8uZm21xS7XJ/6vDZaFNcb62dpFDKcH8TI5NkoZOdMRxr7af7aYGrJlE/Wv0i1w==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/make-dir": {
|
||||
@ -9395,9 +9467,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.4.tgz",
|
||||
"integrity": "sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==",
|
||||
"version": "8.4.5",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
|
||||
"integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
|
||||
"dependencies": {
|
||||
"nanoid": "^3.1.30",
|
||||
"picocolors": "^1.0.0",
|
||||
@ -9467,9 +9539,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-selector-parser": {
|
||||
"version": "6.0.6",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz",
|
||||
"integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
|
||||
"version": "6.0.7",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz",
|
||||
"integrity": "sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA==",
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
@ -10012,18 +10084,6 @@
|
||||
"react-dom": ">= 16.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-flatpickr": {
|
||||
"version": "3.10.7",
|
||||
"resolved": "https://registry.npmjs.org/react-flatpickr/-/react-flatpickr-3.10.7.tgz",
|
||||
"integrity": "sha512-dJ7cZAayefqWJnX4Xe8Piy13oK2h4aeGCH9tz+D2iSNh+kbezUAWVMVCKdTqjsNBqTMS4v0DkfMy2CP2atNCTQ==",
|
||||
"dependencies": {
|
||||
"flatpickr": "^4.6.2",
|
||||
"prop-types": "^15.5.10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^17.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/react-flow-renderer": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmjs.org/react-flow-renderer/-/react-flow-renderer-9.6.0.tgz",
|
||||
@ -11279,9 +11339,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stylis": {
|
||||
"version": "4.0.10",
|
||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz",
|
||||
"integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg=="
|
||||
"version": "4.0.13",
|
||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
|
||||
"integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
|
||||
},
|
||||
"node_modules/supports-color": {
|
||||
"version": "5.5.0",
|
||||
@ -13581,9 +13641,9 @@
|
||||
"integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA=="
|
||||
},
|
||||
"@emotion/babel-plugin": {
|
||||
"version": "11.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz",
|
||||
"integrity": "sha512-UZKwBV2rADuhRp+ZOGgNWg2eYgbzKzQXfQPtJbu/PLy8onurxlNCLvxMQEvlr1/GudguPI5IU9qIY1+2z1M5bA==",
|
||||
"version": "11.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.1.tgz",
|
||||
"integrity": "sha512-K3/6Y+J/sIAjplf3uIteWLhPuOyuMNnE+iyYnTF/m294vc6IL90kTHp7y8ldZYbpKlP17rpOWDKM9DvTcrOmNQ==",
|
||||
"requires": {
|
||||
"@babel/helper-module-imports": "^7.12.13",
|
||||
"@babel/plugin-syntax-jsx": "^7.12.13",
|
||||
@ -13596,19 +13656,19 @@
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"find-root": "^1.1.0",
|
||||
"source-map": "^0.5.7",
|
||||
"stylis": "^4.0.3"
|
||||
"stylis": "4.0.13"
|
||||
}
|
||||
},
|
||||
"@emotion/cache": {
|
||||
"version": "11.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.6.0.tgz",
|
||||
"integrity": "sha512-ElbsWY1KMwEowkv42vGo0UPuLgtPYfIs9BxxVrmvsaJVvktknsHYYlx5NQ5g6zLDcOTyamlDc7FkRg2TAcQDKQ==",
|
||||
"version": "11.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz",
|
||||
"integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==",
|
||||
"requires": {
|
||||
"@emotion/memoize": "^0.7.4",
|
||||
"@emotion/sheet": "^1.1.0",
|
||||
"@emotion/utils": "^1.0.0",
|
||||
"@emotion/weak-memoize": "^0.2.5",
|
||||
"stylis": "^4.0.10"
|
||||
"stylis": "4.0.13"
|
||||
}
|
||||
},
|
||||
"@emotion/hash": {
|
||||
@ -13806,6 +13866,27 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@mui/base": {
|
||||
"version": "5.0.0-alpha.59",
|
||||
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.59.tgz",
|
||||
"integrity": "sha512-rPgN2FW0FAjQ9+LQ+XBsq3DFcuiiMFhf8uoLJAWnnzft27IJvJqbrhfpCZ68G6l+umJLbbl5RIIbpt8ALZDDNQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.16.3",
|
||||
"@emotion/is-prop-valid": "^1.1.1",
|
||||
"@mui/utils": "^5.2.3",
|
||||
"@popperjs/core": "^2.4.4",
|
||||
"clsx": "^1.1.1",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-is": "^17.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@mui/core": {
|
||||
"version": "5.0.0-alpha.54",
|
||||
"resolved": "https://registry.npmjs.org/@mui/core/-/core-5.0.0-alpha.54.tgz",
|
||||
@ -13828,25 +13909,40 @@
|
||||
}
|
||||
},
|
||||
"@mui/lab": {
|
||||
"version": "5.0.0-alpha.54",
|
||||
"resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.54.tgz",
|
||||
"integrity": "sha512-G7Ic9TQkWT+DA8AUYKU99sQivFjz3WEuy3SsG9I/zc9DanlmUH26F1jdwUcHhEiCNEif7tEzVtIAPhgSGjbgsg==",
|
||||
"version": "5.0.0-alpha.59",
|
||||
"resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.59.tgz",
|
||||
"integrity": "sha512-B+7EkbM+NRuUFFPzG2lqbyI73FM3W19RFkrWJdNZ+gd6C+NTdHdVS9UxSZm54PmSFEnd77wAWKdrIkhcFzEgZQ==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.16.0",
|
||||
"@babel/runtime": "^7.16.3",
|
||||
"@date-io/date-fns": "^2.11.0",
|
||||
"@date-io/dayjs": "^2.11.0",
|
||||
"@date-io/luxon": "^2.11.1",
|
||||
"@date-io/moment": "^2.11.0",
|
||||
"@mui/core": "5.0.0-alpha.54",
|
||||
"@mui/system": "^5.1.0",
|
||||
"@mui/utils": "^5.1.0",
|
||||
"@mui/base": "5.0.0-alpha.59",
|
||||
"@mui/system": "^5.2.3",
|
||||
"@mui/utils": "^5.2.3",
|
||||
"clsx": "^1.1.1",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-is": "^17.0.2",
|
||||
"react-transition-group": "^4.4.2",
|
||||
"rifm": "^0.12.0"
|
||||
"rifm": "^0.12.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@mui/system": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.2.3.tgz",
|
||||
"integrity": "sha512-YvkjmqgOruZgr+IkueRns99gl3MmnNs8BhnlZosYMLzKz/1lY0JqVBFqUh4sGVbD0UEKFwdk8H31itG5OIPChA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.16.3",
|
||||
"@mui/private-theming": "^5.2.3",
|
||||
"@mui/styled-engine": "^5.2.0",
|
||||
"@mui/types": "^7.1.0",
|
||||
"@mui/utils": "^5.2.3",
|
||||
"clsx": "^1.1.1",
|
||||
"csstype": "^3.0.10",
|
||||
"prop-types": "^15.7.2"
|
||||
}
|
||||
},
|
||||
"react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
@ -16123,9 +16219,9 @@
|
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.4.14",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.14.tgz",
|
||||
"integrity": "sha512-RsGkAN9JEAYMObS72kzUsPPcPGMqX1rBqGuXi9aa4TBKLzICoLf+DAAtd0fVFzrniJqYzpby47gthCUoObfs0Q=="
|
||||
"version": "1.4.16",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.16.tgz",
|
||||
"integrity": "sha512-BQb7FgYwnu6haWLU63/CdVW+9xhmHls3RCQUFiV4lvw3wimEHTVcUk2hkuZo76QhR8nnDdfZE7evJIZqijwPdA=="
|
||||
},
|
||||
"elliptic": {
|
||||
"version": "6.5.4",
|
||||
@ -17266,11 +17362,6 @@
|
||||
"rimraf": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"flatpickr": {
|
||||
"version": "4.6.9",
|
||||
"resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz",
|
||||
"integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw=="
|
||||
},
|
||||
"flatted": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
|
||||
@ -17992,9 +18083,9 @@
|
||||
"integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU="
|
||||
},
|
||||
"is-negative-zero": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
|
||||
"integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
|
||||
"integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
|
||||
},
|
||||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
@ -18058,11 +18149,11 @@
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||
},
|
||||
"is-weakref": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz",
|
||||
"integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==",
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
|
||||
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0"
|
||||
"call-bind": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"isarray": {
|
||||
@ -18086,9 +18177,9 @@
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||
},
|
||||
"jest-worker": {
|
||||
"version": "27.4.2",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.2.tgz",
|
||||
"integrity": "sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag==",
|
||||
"version": "27.4.4",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.4.tgz",
|
||||
"integrity": "sha512-jfwxYJvfua1b1XkyuyPh01ATmgg4e5fPM/muLmhy9Qc6dmiwacQB0MLHaU6IjEsv/+nAixHGxTn8WllA27Pn0w==",
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"merge-stream": "^2.0.0",
|
||||
@ -18527,9 +18618,9 @@
|
||||
}
|
||||
},
|
||||
"luxon": {
|
||||
"version": "1.28.0",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz",
|
||||
"integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ=="
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-2.1.1.tgz",
|
||||
"integrity": "sha512-6VQVNw7+kQu3hL1ZH5GyOhnk8uZm21xS7XJ/6vDZaFNcb62dpFDKcH8TI5NkoZOdMRxr7af7aYGrJlE/Wv0i1w=="
|
||||
},
|
||||
"make-dir": {
|
||||
"version": "2.1.0",
|
||||
@ -19423,9 +19514,9 @@
|
||||
"integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.4.4",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.4.tgz",
|
||||
"integrity": "sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==",
|
||||
"version": "8.4.5",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz",
|
||||
"integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==",
|
||||
"requires": {
|
||||
"nanoid": "^3.1.30",
|
||||
"picocolors": "^1.0.0",
|
||||
@ -19465,9 +19556,9 @@
|
||||
}
|
||||
},
|
||||
"postcss-selector-parser": {
|
||||
"version": "6.0.6",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz",
|
||||
"integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
|
||||
"version": "6.0.7",
|
||||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz",
|
||||
"integrity": "sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA==",
|
||||
"requires": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
@ -19882,15 +19973,6 @@
|
||||
"prop-types": "^15.6.0"
|
||||
}
|
||||
},
|
||||
"react-flatpickr": {
|
||||
"version": "3.10.7",
|
||||
"resolved": "https://registry.npmjs.org/react-flatpickr/-/react-flatpickr-3.10.7.tgz",
|
||||
"integrity": "sha512-dJ7cZAayefqWJnX4Xe8Piy13oK2h4aeGCH9tz+D2iSNh+kbezUAWVMVCKdTqjsNBqTMS4v0DkfMy2CP2atNCTQ==",
|
||||
"requires": {
|
||||
"flatpickr": "^4.6.2",
|
||||
"prop-types": "^15.5.10"
|
||||
}
|
||||
},
|
||||
"react-flow-renderer": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmjs.org/react-flow-renderer/-/react-flow-renderer-9.6.0.tgz",
|
||||
@ -20875,9 +20957,9 @@
|
||||
"requires": {}
|
||||
},
|
||||
"stylis": {
|
||||
"version": "4.0.10",
|
||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz",
|
||||
"integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg=="
|
||||
"version": "4.0.13",
|
||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz",
|
||||
"integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag=="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.5.0",
|
||||
|
@ -60,7 +60,7 @@
|
||||
"@loadable/component": "5.15.0",
|
||||
"@loadable/server": "5.15.1",
|
||||
"@loadable/webpack-plugin": "5.15.1",
|
||||
"@mui/lab": "5.0.0-alpha.54",
|
||||
"@mui/lab": "5.0.0-alpha.59",
|
||||
"@mui/material": "5.1.0",
|
||||
"@mui/styles": "5.1.0",
|
||||
"@mui/system": "5.1.0",
|
||||
@ -80,7 +80,6 @@
|
||||
"dompurify": "2.2.6",
|
||||
"express": "4.17.1",
|
||||
"fast-xml-parser": "3.19.0",
|
||||
"flatpickr": "4.6.9",
|
||||
"fs-extra": "9.0.1",
|
||||
"fuse.js": "6.4.1",
|
||||
"helmet": "4.1.1",
|
||||
@ -94,7 +93,7 @@
|
||||
"jsonwebtoken": "8.5.1",
|
||||
"jwt-simple": "0.5.6",
|
||||
"lockfile": "1.0.4",
|
||||
"luxon": "1.28.0",
|
||||
"luxon": "2.1.1",
|
||||
"marked": "2.0.0",
|
||||
"morgan": "1.10.0",
|
||||
"multer": "1.4.3",
|
||||
@ -108,7 +107,6 @@
|
||||
"react": "17.0.2",
|
||||
"react-beautiful-dnd": "13.1.0",
|
||||
"react-dom": "17.0.2",
|
||||
"react-flatpickr": "3.10.7",
|
||||
"react-flow-renderer": "9.6.0",
|
||||
"react-hook-form": "7.18.1",
|
||||
"react-json-pretty": "2.2.0",
|
||||
|
@ -103,8 +103,7 @@ const AutocompleteController = memo(
|
||||
/>
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) =>
|
||||
prevProps.error === nextProps.error && prevProps.values === nextProps.values
|
||||
(prevProps, nextProps) => prevProps.values === nextProps.values
|
||||
)
|
||||
|
||||
AutocompleteController.propTypes = {
|
||||
|
@ -77,8 +77,7 @@ const CheckboxController = memo(
|
||||
)}
|
||||
</FormControl>
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) => prevProps.error === nextProps.error
|
||||
}
|
||||
)
|
||||
|
||||
CheckboxController.propTypes = {
|
||||
|
@ -14,12 +14,12 @@
|
||||
* limitations under the License. *
|
||||
* ------------------------------------------------------------------------- */
|
||||
import { memo } from 'react'
|
||||
import { oneOfType, string, node } from 'prop-types'
|
||||
import PropTypes from 'prop-types'
|
||||
|
||||
import { Stack, Typography, styled } from '@mui/material'
|
||||
import { WarningCircledOutline as WarningIcon } from 'iconoir-react'
|
||||
|
||||
import { Tr, labelCanBeTranslated } from 'client/components/HOC'
|
||||
import { Translate } from 'client/components/HOC'
|
||||
|
||||
const ErrorTypo = styled(Typography)(({ theme }) => ({
|
||||
...theme.typography.body1,
|
||||
@ -27,23 +27,38 @@ const ErrorTypo = styled(Typography)(({ theme }) => ({
|
||||
overflowWrap: 'anywhere',
|
||||
}))
|
||||
|
||||
const ErrorHelper = memo(({ label, ...rest }) => (
|
||||
<Stack
|
||||
component="span"
|
||||
color="error.dark"
|
||||
direction="row"
|
||||
alignItems="center"
|
||||
{...rest}
|
||||
>
|
||||
<WarningIcon />
|
||||
<ErrorTypo component="span" data-cy="error-text">
|
||||
{labelCanBeTranslated(label) ? Tr(label) : label}
|
||||
</ErrorTypo>
|
||||
</Stack>
|
||||
))
|
||||
const ErrorHelper = memo(({ label, ...rest }) => {
|
||||
const translateProps = label?.word ? { ...label } : { word: label }
|
||||
|
||||
return (
|
||||
<Stack
|
||||
component="span"
|
||||
color="error.dark"
|
||||
direction="row"
|
||||
alignItems="center"
|
||||
{...rest}
|
||||
>
|
||||
<WarningIcon />
|
||||
<ErrorTypo component="span" data-cy="error-text">
|
||||
<Translate {...translateProps} />
|
||||
</ErrorTypo>
|
||||
</Stack>
|
||||
)
|
||||
})
|
||||
|
||||
ErrorHelper.propTypes = {
|
||||
label: oneOfType([string, node]),
|
||||
label: PropTypes.oneOfType([
|
||||
PropTypes.string,
|
||||
PropTypes.node,
|
||||
PropTypes.shape({
|
||||
word: PropTypes.string,
|
||||
values: PropTypes.oneOfType([
|
||||
PropTypes.number,
|
||||
PropTypes.string,
|
||||
PropTypes.array,
|
||||
]),
|
||||
}),
|
||||
]),
|
||||
}
|
||||
|
||||
ErrorHelper.displayName = 'ErrorHelper'
|
||||
|
@ -144,9 +144,7 @@ const FileController = memo(
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) =>
|
||||
prevProps.error === nextProps.error &&
|
||||
prevProps.type === nextProps.type &&
|
||||
prevProps.label === nextProps.label
|
||||
prevProps.type === nextProps.type && prevProps.label === nextProps.label
|
||||
)
|
||||
|
||||
FileController.propTypes = {
|
||||
|
@ -51,8 +51,7 @@ const PasswordController = memo(
|
||||
/>
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) =>
|
||||
prevProps.error === nextProps.error && prevProps.type === nextProps.type
|
||||
(prevProps, nextProps) => prevProps.type === nextProps.type
|
||||
)
|
||||
|
||||
PasswordController.propTypes = {
|
||||
|
@ -89,8 +89,7 @@ const SliderController = memo(
|
||||
)}
|
||||
</>
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) => prevProps.error === nextProps.error
|
||||
}
|
||||
)
|
||||
|
||||
SliderController.propTypes = {
|
||||
|
@ -77,8 +77,7 @@ const SwitchController = memo(
|
||||
)}
|
||||
</FormControl>
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) => prevProps.error === nextProps.error
|
||||
}
|
||||
)
|
||||
|
||||
SwitchController.propTypes = {
|
||||
|
@ -86,7 +86,6 @@ const TableController = memo(
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) =>
|
||||
prevProps.error === nextProps.error &&
|
||||
prevProps.label === nextProps.label &&
|
||||
prevProps.Table === nextProps.Table &&
|
||||
prevProps.tooltip === nextProps.tooltip
|
||||
|
@ -79,7 +79,6 @@ const TextController = memo(
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) =>
|
||||
prevProps.error === nextProps.error &&
|
||||
prevProps.type === nextProps.type &&
|
||||
prevProps.label === nextProps.label &&
|
||||
prevProps.tooltip === nextProps.tooltip &&
|
||||
|
@ -1,126 +0,0 @@
|
||||
/* ------------------------------------------------------------------------- *
|
||||
* Copyright 2002-2021, OpenNebula Project, OpenNebula Systems *
|
||||
* *
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may *
|
||||
* not use this file except in compliance with the License. You may obtain *
|
||||
* a copy of the License at *
|
||||
* *
|
||||
* http://www.apache.org/licenses/LICENSE-2.0 *
|
||||
* *
|
||||
* Unless required by applicable law or agreed to in writing, software *
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, *
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
|
||||
* See the License for the specific language governing permissions and *
|
||||
* limitations under the License. *
|
||||
* ------------------------------------------------------------------------- */
|
||||
import { memo, useState, useEffect } from 'react'
|
||||
import PropTypes from 'prop-types'
|
||||
|
||||
import Flatpickr from 'react-flatpickr'
|
||||
import { TextField } from '@mui/material'
|
||||
import { Controller } from 'react-hook-form'
|
||||
|
||||
import { Tr } from 'client/components/HOC'
|
||||
import { ErrorHelper } from 'client/components/FormControl'
|
||||
|
||||
const WrapperToLoadLib = ({ children, id, lib }) => {
|
||||
const [loading, setLoading] = useState(true)
|
||||
|
||||
useEffect(() => {
|
||||
const loadLib = async () => {
|
||||
try {
|
||||
await import(lib)
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
}
|
||||
|
||||
loadLib()
|
||||
|
||||
return () => {
|
||||
// remove all styles when component will be unmounted
|
||||
document
|
||||
.querySelectorAll(`[id^=${id}]`)
|
||||
.forEach((child) => child.parentNode.removeChild(child))
|
||||
}
|
||||
}, [])
|
||||
|
||||
return loading ? null : children
|
||||
}
|
||||
|
||||
const TimeController = memo(
|
||||
({ control, cy, name, label, error, fieldProps }) => (
|
||||
<WrapperToLoadLib
|
||||
id="flatpicker"
|
||||
lib={'flatpickr/dist/themes/material_blue.css'}
|
||||
>
|
||||
<Controller
|
||||
render={({ value, onChange, onBlur }) => {
|
||||
const translated = typeof label === 'string' ? Tr(label) : label
|
||||
|
||||
return (
|
||||
<Flatpickr
|
||||
onblur={onBlur}
|
||||
onChange={onChange}
|
||||
// onCreate={function (flatpickr) { this.calendar = flatpickr }}
|
||||
onDestroy={() => {
|
||||
onChange(undefined)
|
||||
}}
|
||||
data-enable-time
|
||||
options={{ allowInput: true }}
|
||||
render={({ defaultValue, ...props }, ref) => (
|
||||
<TextField
|
||||
{...props}
|
||||
fullWidth
|
||||
defaultValue={defaultValue}
|
||||
value={value}
|
||||
label={translated}
|
||||
inputProps={{ 'data-cy': cy }}
|
||||
inputRef={ref}
|
||||
error={Boolean(error)}
|
||||
helperText={Boolean(error) && <ErrorHelper label={error} />}
|
||||
FormHelperTextProps={{ 'data-cy': `${cy}-error` }}
|
||||
{...fieldProps}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
)
|
||||
}}
|
||||
name={name}
|
||||
control={control}
|
||||
/>
|
||||
</WrapperToLoadLib>
|
||||
),
|
||||
(prevProps, nextProps) => prevProps.error === nextProps.error
|
||||
)
|
||||
|
||||
TimeController.propTypes = {
|
||||
control: PropTypes.object,
|
||||
cy: PropTypes.string,
|
||||
multiline: PropTypes.bool,
|
||||
name: PropTypes.string.isRequired,
|
||||
label: PropTypes.any,
|
||||
tooltip: PropTypes.any,
|
||||
error: PropTypes.any,
|
||||
fieldProps: PropTypes.object,
|
||||
formContext: PropTypes.shape({
|
||||
setValue: PropTypes.func,
|
||||
setError: PropTypes.func,
|
||||
clearErrors: PropTypes.func,
|
||||
watch: PropTypes.func,
|
||||
register: PropTypes.func,
|
||||
}),
|
||||
}
|
||||
|
||||
TimeController.defaultProps = {
|
||||
control: {},
|
||||
cy: 'cy',
|
||||
name: '',
|
||||
label: '',
|
||||
error: false,
|
||||
fieldProps: undefined,
|
||||
}
|
||||
|
||||
TimeController.displayName = 'TimeController'
|
||||
|
||||
export default TimeController
|
@ -16,62 +16,70 @@
|
||||
import { memo } from 'react'
|
||||
import PropTypes from 'prop-types'
|
||||
|
||||
import { TextField } from '@mui/material'
|
||||
import { useController } from 'react-hook-form'
|
||||
import { TextField } from '@mui/material'
|
||||
import DateTimePicker from '@mui/lab/DateTimePicker'
|
||||
|
||||
import { ErrorHelper } from 'client/components/FormControl'
|
||||
import { Tr, labelCanBeTranslated } from 'client/components/HOC'
|
||||
import { ErrorHelper, Tooltip } from 'client/components/FormControl'
|
||||
import { Translate } from 'client/components/HOC'
|
||||
import { generateKey } from 'client/utils'
|
||||
import { T } from 'client/constants'
|
||||
|
||||
const TimeController = memo(
|
||||
({
|
||||
control,
|
||||
cy = `datetime-${generateKey()}`,
|
||||
cy = `input-date-${generateKey()}`,
|
||||
name = '',
|
||||
label = '',
|
||||
type = 'datetime-local',
|
||||
fieldProps = {},
|
||||
tooltip,
|
||||
fieldProps: { defaultValue, ...fieldProps } = {},
|
||||
...props
|
||||
}) => {
|
||||
const {
|
||||
field: { ref, value, ...inputProps },
|
||||
field: { value, ...controllerProps },
|
||||
fieldState: { error },
|
||||
} = useController({ name, control })
|
||||
} = useController({ name, control, defaultValue })
|
||||
|
||||
return (
|
||||
<TextField
|
||||
{...inputProps}
|
||||
fullWidth
|
||||
label={labelCanBeTranslated(label) ? Tr(label) : label}
|
||||
inputRef={ref}
|
||||
type={type}
|
||||
inputProps={{ 'data-cy': cy, ...fieldProps }}
|
||||
InputLabelProps={{ shrink: true }}
|
||||
error={Boolean(error)}
|
||||
helperText={Boolean(error) && <ErrorHelper label={error?.message} />}
|
||||
FormHelperTextProps={{ 'data-cy': `${cy}-error` }}
|
||||
<DateTimePicker
|
||||
{...controllerProps}
|
||||
{...fieldProps}
|
||||
value={value}
|
||||
label={<Translate word={label} />}
|
||||
cancelText={<Translate word={T.Cancel} />}
|
||||
clearText={<Translate word={T.Clear} />}
|
||||
todayText={<Translate word={T.Today} />}
|
||||
InputProps={{
|
||||
autoComplete: 'off',
|
||||
startAdornment: tooltip && <Tooltip title={tooltip} />,
|
||||
}}
|
||||
renderInput={({ inputProps, ...dateTimePickerProps }) => (
|
||||
<TextField
|
||||
{...dateTimePickerProps}
|
||||
fullWidth
|
||||
inputProps={{ ...inputProps, 'data-cy': cy }}
|
||||
error={Boolean(error)}
|
||||
helperText={
|
||||
Boolean(error) && <ErrorHelper label={error?.message} />
|
||||
}
|
||||
FormHelperTextProps={{ 'data-cy': `${cy}-error` }}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) =>
|
||||
prevProps.error === nextProps.error && prevProps.label === nextProps.label
|
||||
prevProps.label === nextProps.label &&
|
||||
prevProps.tooltip === nextProps.tooltip
|
||||
)
|
||||
|
||||
TimeController.propTypes = {
|
||||
control: PropTypes.object,
|
||||
cy: PropTypes.string,
|
||||
multiline: PropTypes.bool,
|
||||
name: PropTypes.string.isRequired,
|
||||
label: PropTypes.any,
|
||||
tooltip: PropTypes.any,
|
||||
type: PropTypes.string,
|
||||
fieldProps: PropTypes.object,
|
||||
formContext: PropTypes.shape({
|
||||
setValue: PropTypes.func,
|
||||
setError: PropTypes.func,
|
||||
clearErrors: PropTypes.func,
|
||||
watch: PropTypes.func,
|
||||
register: PropTypes.func,
|
||||
}),
|
||||
}
|
||||
|
||||
TimeController.displayName = 'TimeController'
|
||||
|
@ -96,7 +96,6 @@ const ToggleController = memo(
|
||||
)
|
||||
},
|
||||
(prevProps, nextProps) =>
|
||||
prevProps.error === nextProps.error &&
|
||||
prevProps.values.length === nextProps.values.length &&
|
||||
prevProps.label === nextProps.label &&
|
||||
prevProps.tooltip === nextProps.tooltip
|
||||
|
@ -27,7 +27,9 @@ const TranslateContext = createContext()
|
||||
let languageScript = root.document?.createElement('script')
|
||||
|
||||
const labelCanBeTranslated = (val) =>
|
||||
typeof val === 'string' || (Array.isArray(val) && val.length === 2)
|
||||
typeof val === 'string' ||
|
||||
(Array.isArray(val) && val.length === 2) ||
|
||||
(typeof val === 'object' && val?.word)
|
||||
|
||||
const GenerateScript = (
|
||||
language = DEFAULT_LANGUAGE,
|
||||
@ -131,12 +133,7 @@ TranslateProvider.propTypes = {
|
||||
|
||||
Translate.propTypes = {
|
||||
word: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
|
||||
values: PropTypes.oneOfType([
|
||||
PropTypes.string,
|
||||
PropTypes.number,
|
||||
PropTypes.bool,
|
||||
PropTypes.array,
|
||||
]),
|
||||
values: PropTypes.any,
|
||||
}
|
||||
|
||||
export {
|
||||
|
@ -157,6 +157,7 @@ module.exports = {
|
||||
Yearly: 'Yearly',
|
||||
EachHours: 'Each %s hours',
|
||||
AfterTimes: 'After %s times',
|
||||
Today: 'Today',
|
||||
|
||||
/* dashboard */
|
||||
InTotal: 'In Total',
|
||||
|
@ -69,7 +69,7 @@ export const timeFromMilliseconds = (time) => DateTime.fromMillis(+time * 1000)
|
||||
/**
|
||||
* Returns the epoch milliseconds of the date.
|
||||
*
|
||||
* @param {number|string} date - Date
|
||||
* @param {number|string} date - JS Date
|
||||
* @returns {number} - Total milliseconds.
|
||||
*/
|
||||
export const dateToMilliseconds = (date) =>
|
||||
@ -78,7 +78,7 @@ export const dateToMilliseconds = (date) =>
|
||||
/**
|
||||
* Returns the epoch milliseconds of the date.
|
||||
*
|
||||
* @param {number|string} date - Date
|
||||
* @param {number|string} date - Date on ISO format
|
||||
* @returns {number} - Total milliseconds.
|
||||
*/
|
||||
export const isoDateToMilliseconds = (date) =>
|
||||
|
@ -24,6 +24,9 @@ import {
|
||||
useMediaQuery,
|
||||
} from '@mui/material'
|
||||
import StylesProvider from '@mui/styles/StylesProvider'
|
||||
import AdapterLuxon from '@mui/lab/AdapterLuxon'
|
||||
import LocalizationProvider from '@mui/lab/LocalizationProvider'
|
||||
|
||||
import { createTheme, generateClassName } from 'client/theme'
|
||||
import { useAuth } from 'client/features/Auth'
|
||||
import { SCHEMES } from 'client/constants'
|
||||
@ -55,14 +58,16 @@ const MuiProvider = ({ theme: appTheme, children }) => {
|
||||
}, [scheme, prefersDarkMode])
|
||||
|
||||
return (
|
||||
<StyledEngineProvider injectFirst>
|
||||
<ThemeProvider theme={muitheme}>
|
||||
<CssBaseline enableColorScheme />
|
||||
<StylesProvider generateClassName={generateClassName}>
|
||||
{children}
|
||||
</StylesProvider>
|
||||
</ThemeProvider>
|
||||
</StyledEngineProvider>
|
||||
<LocalizationProvider dateAdapter={AdapterLuxon}>
|
||||
<StyledEngineProvider injectFirst>
|
||||
<ThemeProvider theme={muitheme}>
|
||||
<CssBaseline enableColorScheme />
|
||||
<StylesProvider generateClassName={generateClassName}>
|
||||
{children}
|
||||
</StylesProvider>
|
||||
</ThemeProvider>
|
||||
</StyledEngineProvider>
|
||||
</LocalizationProvider>
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -359,16 +359,16 @@ export const mapUserInputs = (userInputs = {}) =>
|
||||
* @param {any[]} list - List of option values
|
||||
* @param {object} [options] - Options to conversion
|
||||
* @param {boolean|string} [options.addEmpty] - If `true`, add an empty option
|
||||
* @param {function(any):any} [options.getText] - Function to get the text option
|
||||
* @param {function(any):any} [options.getValue] - Function to get the value option
|
||||
* @param {function(any, number):any} [options.getText] - Function to get the text option
|
||||
* @param {function(any, number):any} [options.getValue] - Function to get the value option
|
||||
* @returns {SelectOption} Options
|
||||
*/
|
||||
export const arrayToOptions = (list = [], options = {}) => {
|
||||
const { addEmpty = true, getText = (o) => o, getValue = (o) => o } = options
|
||||
|
||||
const values = list.map((item) => ({
|
||||
text: getText(item),
|
||||
value: getValue(item),
|
||||
const values = list.map((item, idx) => ({
|
||||
text: getText(item, idx),
|
||||
value: getValue(item, idx),
|
||||
}))
|
||||
|
||||
if (addEmpty) {
|
||||
|
@ -98,16 +98,31 @@ const buildTranslationLocale = () => {
|
||||
default: () => T['validation.mixed.default'],
|
||||
required: () => T['validation.mixed.required'],
|
||||
defined: () => T['validation.mixed.defined'],
|
||||
oneOf: ({ values }) => [T['validation.mixed.oneOf'], values],
|
||||
notOneOf: ({ values }) => [T['validation.mixed.notOneOf'], values],
|
||||
oneOf: ({ values }) => ({ word: T['validation.mixed.oneOf'], values }),
|
||||
notOneOf: ({ values }) => ({
|
||||
word: T['validation.mixed.notOneOf'],
|
||||
values,
|
||||
}),
|
||||
notType: ({ type }) =>
|
||||
T[`validation.mixed.notType.${type}`] ?? T['validation.mixed.notType'],
|
||||
},
|
||||
string: {
|
||||
length: ({ length }) => [T['validation.string.length'], length],
|
||||
min: ({ min }) => [T['validation.string.min'], min],
|
||||
max: ({ max }) => [T['validation.string.max'], max],
|
||||
matches: ({ matches }) => [T['validation.string.matches'], matches],
|
||||
length: ({ length }) => ({
|
||||
word: T['validation.string.length'],
|
||||
values: length,
|
||||
}),
|
||||
min: ({ min }) => ({
|
||||
word: T['validation.string.min'],
|
||||
values: min,
|
||||
}),
|
||||
max: ({ max }) => ({
|
||||
word: T['validation.string.max'],
|
||||
values: max,
|
||||
}),
|
||||
matches: ({ matches }) => ({
|
||||
word: T['validation.string.matches'],
|
||||
values: matches,
|
||||
}),
|
||||
email: () => T['validation.string.email'],
|
||||
url: () => T['validation.string.url'],
|
||||
uuid: () => T['validation.string.uuid'],
|
||||
@ -116,31 +131,61 @@ const buildTranslationLocale = () => {
|
||||
uppercase: () => T['validation.string.uppercase'],
|
||||
},
|
||||
number: {
|
||||
min: ({ min }) => [T['validation.number.min'], min],
|
||||
max: ({ max }) => [T['validation.number.max'], max],
|
||||
lessThan: ({ less }) => [T['validation.number.lessThan'], less],
|
||||
moreThan: ({ more }) => [T['validation.number.moreThan'], more],
|
||||
min: ({ min }) => ({
|
||||
word: T['validation.number.min'],
|
||||
values: min,
|
||||
}),
|
||||
max: ({ max }) => ({
|
||||
word: T['validation.number.max'],
|
||||
values: max,
|
||||
}),
|
||||
lessThan: ({ less }) => ({
|
||||
word: T['validation.number.lessThan'],
|
||||
values: less,
|
||||
}),
|
||||
moreThan: ({ more }) => ({
|
||||
word: T['validation.number.moreThan'],
|
||||
values: more,
|
||||
}),
|
||||
positive: () => T['validation.number.positive'],
|
||||
negative: () => T['validation.number.negative'],
|
||||
integer: () => T['validation.number.integer'],
|
||||
},
|
||||
boolean: {
|
||||
isValue: ({ value }) => [T['validation.boolean.isValue'], value],
|
||||
isValue: ({ value }) => ({
|
||||
word: T['validation.boolean.isValue'],
|
||||
values: [value],
|
||||
}),
|
||||
},
|
||||
date: {
|
||||
min: ({ min }) => [T['validation.date.min'], min],
|
||||
max: ({ max }) => [T['validation.date.max'], max],
|
||||
min: ({ min }) => ({
|
||||
word: T['validation.date.min'],
|
||||
values: min,
|
||||
}),
|
||||
max: ({ max }) => ({
|
||||
word: T['validation.date.max'],
|
||||
values: max,
|
||||
}),
|
||||
},
|
||||
object: {
|
||||
noUnknown: ({ nounknown }) => [
|
||||
T['validation.object.noUnknown'],
|
||||
nounknown,
|
||||
],
|
||||
noUnknown: ({ nounknown }) => ({
|
||||
word: T['validation.object.noUnknown'],
|
||||
values: nounknown,
|
||||
}),
|
||||
},
|
||||
array: {
|
||||
min: ({ min }) => [T['validation.array.min'], min],
|
||||
max: ({ max }) => [T['validation.array.max'], max],
|
||||
length: ({ length }) => [T['validation.array.length'], length],
|
||||
min: ({ min }) => ({
|
||||
word: T['validation.array.min'],
|
||||
values: min,
|
||||
}),
|
||||
max: ({ max }) => ({
|
||||
word: T['validation.array.max'],
|
||||
values: max,
|
||||
}),
|
||||
length: ({ length }) => ({
|
||||
word: T['validation.array.length'],
|
||||
values: length,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user