diff --git a/lib/new-settings-loader.js b/lib/new-settings-loader.js
index bdf585d8..eca4fbb8 100644
--- a/lib/new-settings-loader.js
+++ b/lib/new-settings-loader.js
@@ -11,6 +11,8 @@ low(adapter).then(it => {
function saveConfig (config) {
const currentState = db.getState()
+ // TODO this should be _.assign
+ // change after flattening of schema
const newState = _.mergeWith((objValue, srcValue) => {
if (_.isArray(objValue)) {
return srcValue
diff --git a/new-lamassu-admin/package-lock.json b/new-lamassu-admin/package-lock.json
index d33803ea..aba4796d 100644
--- a/new-lamassu-admin/package-lock.json
+++ b/new-lamassu-admin/package-lock.json
@@ -1840,7 +1840,8 @@
"@emotion/hash": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.3.tgz",
- "integrity": "sha512-14ZVlsB9akwvydAdaEnVnvqu6J2P6ySv39hYyl/aoB6w/V+bXX0tay8cF6paqbgZsN2n5Xh15uF4pE+GvE+itw=="
+ "integrity": "sha512-14ZVlsB9akwvydAdaEnVnvqu6J2P6ySv39hYyl/aoB6w/V+bXX0tay8cF6paqbgZsN2n5Xh15uF4pE+GvE+itw==",
+ "dev": true
},
"@emotion/is-prop-valid": {
"version": "0.8.3",
@@ -2226,48 +2227,40 @@
}
},
"@material-ui/core": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.5.0.tgz",
- "integrity": "sha512-UHVAjU+1uDtA+OMBNBHb4RlCZOu514XeYPafNJv+GTdXBDr1SCPK7yqRE6TV1/bulxlDusTgu5Q6BAUgpmO4MA==",
+ "version": "4.9.8",
+ "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.9.8.tgz",
+ "integrity": "sha512-4cslpG6oLoPWUfwPkX+hvbak4hAGiOfgXOu/UIYeeMrtsTEebC0Mirjoby7zhS4ny86YI3rXEFW6EZDmlj5n5w==",
"requires": {
"@babel/runtime": "^7.4.4",
- "@material-ui/styles": "^4.5.0",
- "@material-ui/system": "^4.5.0",
- "@material-ui/types": "^4.1.1",
- "@material-ui/utils": "^4.4.0",
+ "@material-ui/styles": "^4.9.6",
+ "@material-ui/system": "^4.9.6",
+ "@material-ui/types": "^5.0.0",
+ "@material-ui/utils": "^4.9.6",
"@types/react-transition-group": "^4.2.0",
"clsx": "^1.0.2",
- "convert-css-length": "^2.0.1",
- "deepmerge": "^4.0.0",
- "hoist-non-react-statics": "^3.2.1",
- "is-plain-object": "^3.0.0",
- "normalize-scroll-left": "^0.2.0",
+ "hoist-non-react-statics": "^3.3.2",
"popper.js": "^1.14.1",
"prop-types": "^15.7.2",
+ "react-is": "^16.8.0",
"react-transition-group": "^4.3.0"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz",
- "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==",
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
+ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
"requires": {
- "regenerator-runtime": "^0.13.2"
+ "regenerator-runtime": "^0.13.4"
}
},
- "is-plain-object": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
- "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
"requires": {
- "isobject": "^4.0.0"
+ "react-is": "^16.7.0"
}
},
- "isobject": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
- "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="
- },
"react-transition-group": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.3.0.tgz",
@@ -2280,134 +2273,176 @@
}
},
"regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+ "version": "0.13.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
+ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
}
}
},
"@material-ui/icons": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.4.3.tgz",
- "integrity": "sha512-HVVvUyc/78kmaBd93LkfWyGkXMM+zOMKzUfulWXxaV/fFAZ3N0pD0oHjWUd94zrOoF3tZP9JC7EPlIpIcZSNow==",
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.9.1.tgz",
+ "integrity": "sha512-GBitL3oBWO0hzBhvA9KxqcowRUsA0qzwKkURyC8nppnC3fw54KPKZ+d4V1Eeg/UnDRSzDaI9nGCdel/eh9AQMg==",
"requires": {
"@babel/runtime": "^7.4.4"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz",
- "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==",
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
+ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
"requires": {
- "regenerator-runtime": "^0.13.2"
+ "regenerator-runtime": "^0.13.4"
}
},
"regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+ "version": "0.13.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
+ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
+ }
+ }
+ },
+ "@material-ui/lab": {
+ "version": "4.0.0-alpha.47",
+ "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.47.tgz",
+ "integrity": "sha512-+WC3O0M/769D3nO9Rqupusc+lob7tQMe5/DnOjAhZ0bpXlJbhZb7N84WkEk4JgQLj6ydP8e9Jhqd1lG+mGj+xw==",
+ "requires": {
+ "@babel/runtime": "^7.4.4",
+ "@material-ui/utils": "^4.9.6",
+ "clsx": "^1.0.4",
+ "prop-types": "^15.7.2",
+ "react-is": "^16.8.0"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
+ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
+ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
}
}
},
"@material-ui/styles": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.5.0.tgz",
- "integrity": "sha512-O0NSAECHK9f3DZK6wy56PZzp8b/7KSdfpJs8DSC7vnXUAoMPCTtchBKLzMtUsNlijiJFeJjSxNdQfjWXgyur5A==",
+ "version": "4.9.6",
+ "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.9.6.tgz",
+ "integrity": "sha512-ijgwStEkw1OZ6gCz18hkjycpr/3lKs1hYPi88O/AUn4vMuuGEGAIrqKVFq/lADmZUNF3DOFIk8LDkp7zmjPxtA==",
"requires": {
"@babel/runtime": "^7.4.4",
- "@emotion/hash": "^0.7.1",
- "@material-ui/types": "^4.1.1",
- "@material-ui/utils": "^4.1.0",
+ "@emotion/hash": "^0.8.0",
+ "@material-ui/types": "^5.0.0",
+ "@material-ui/utils": "^4.9.6",
"clsx": "^1.0.2",
"csstype": "^2.5.2",
- "deepmerge": "^4.0.0",
- "hoist-non-react-statics": "^3.2.1",
- "jss": "^10.0.0",
- "jss-plugin-camel-case": "^10.0.0",
- "jss-plugin-default-unit": "^10.0.0",
- "jss-plugin-global": "^10.0.0",
- "jss-plugin-nested": "^10.0.0",
- "jss-plugin-props-sort": "^10.0.0",
- "jss-plugin-rule-value-function": "^10.0.0",
- "jss-plugin-vendor-prefixer": "^10.0.0",
+ "hoist-non-react-statics": "^3.3.2",
+ "jss": "^10.0.3",
+ "jss-plugin-camel-case": "^10.0.3",
+ "jss-plugin-default-unit": "^10.0.3",
+ "jss-plugin-global": "^10.0.3",
+ "jss-plugin-nested": "^10.0.3",
+ "jss-plugin-props-sort": "^10.0.3",
+ "jss-plugin-rule-value-function": "^10.0.3",
+ "jss-plugin-vendor-prefixer": "^10.0.3",
"prop-types": "^15.7.2"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz",
- "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==",
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
+ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
"requires": {
- "regenerator-runtime": "^0.13.2"
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@emotion/hash": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
+ "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+ },
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "jss": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
+ "integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^2.6.5",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
}
},
"regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+ "version": "0.13.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
+ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
}
}
},
"@material-ui/system": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.5.0.tgz",
- "integrity": "sha512-vR0PbMTzLnuuVCoYNQ13zyhLa/4s/UA9P9JbNuHBOOkfrHn53ShINiG0v05EgfwizfULLtc7mNvsGAgIyyp/hQ==",
+ "version": "4.9.6",
+ "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.9.6.tgz",
+ "integrity": "sha512-QtfoAePyqXoZ2HUVSwGb1Ro0kucMCvVjbI0CdYIR21t0Opgfm1Oer6ni9P5lfeXA39xSt0wCierw37j+YES48Q==",
"requires": {
"@babel/runtime": "^7.4.4",
- "deepmerge": "^4.0.0",
+ "@material-ui/utils": "^4.9.6",
"prop-types": "^15.7.2"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz",
- "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==",
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
+ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
"requires": {
- "regenerator-runtime": "^0.13.2"
+ "regenerator-runtime": "^0.13.4"
}
},
"regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+ "version": "0.13.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
+ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
}
}
},
"@material-ui/types": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-4.1.1.tgz",
- "integrity": "sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ==",
- "requires": {
- "@types/react": "*"
- }
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.0.0.tgz",
+ "integrity": "sha512-UeH2BuKkwDndtMSS0qgx1kCzSMw+ydtj0xx/XbFtxNSTlXydKwzs5gVW5ZKsFlAkwoOOQ9TIsyoCC8hq18tOwg=="
},
"@material-ui/utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.4.0.tgz",
- "integrity": "sha512-UXoQVwArQEQWXxf2FPs0iJGT+MePQpKr0Qh0CPoLc1OdF0GSMTmQczcqCzwZkeHxHAOq/NkIKM1Pb/ih1Avicg==",
+ "version": "4.9.6",
+ "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.9.6.tgz",
+ "integrity": "sha512-gqlBn0JPPTUZeAktn1rgMcy9Iczrr74ecx31tyZLVGdBGGzsxzM6PP6zeS7FuoLS6vG4hoZP7hWnOoHtkR0Kvw==",
"requires": {
"@babel/runtime": "^7.4.4",
"prop-types": "^15.7.2",
- "react-is": "^16.8.6"
+ "react-is": "^16.8.0"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz",
- "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==",
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
+ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
"requires": {
- "regenerator-runtime": "^0.13.2"
+ "regenerator-runtime": "^0.13.4"
}
},
- "react-is": {
- "version": "16.10.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz",
- "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA=="
- },
"regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+ "version": "0.13.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
+ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
}
}
},
@@ -2509,6 +2544,12 @@
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz",
"integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==",
"dev": true
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "dev": true
}
}
},
@@ -3925,9 +3966,9 @@
}
},
"@types/react-transition-group": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.3.tgz",
- "integrity": "sha512-Hk8jiuT7iLOHrcjKP/ZVSyCNXK73wJAUz60xm0mVhiRujrdiI++j4duLiL282VGxwAgxetHQFfqA29LgEeSkFA==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.4.tgz",
+ "integrity": "sha512-8DMUaDqh0S70TjkqU0DxOu80tFUiiaS9rxkWip/nb7gtvAsbqOXm02UCmR8zdcjWujgeYPiPNTVpVpKzUDotwA==",
"requires": {
"@types/react": "*"
}
@@ -6906,7 +6947,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"aproba": {
"version": "1.2.0",
@@ -6927,12 +6969,14 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -6947,17 +6991,20 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -7074,7 +7121,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"ini": {
"version": "1.3.5",
@@ -7086,6 +7134,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -7100,6 +7149,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -7107,12 +7157,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -7131,6 +7183,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -7211,7 +7264,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -7223,6 +7277,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"wrappy": "1"
}
@@ -7308,7 +7363,8 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -7344,6 +7400,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -7363,6 +7420,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -7406,12 +7464,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
}
}
},
@@ -7991,11 +8051,6 @@
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"dev": true
},
- "convert-css-length": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/convert-css-length/-/convert-css-length-2.0.1.tgz",
- "integrity": "sha512-iGpbcvhLPRKUbBc0Quxx7w/bV14AC3ItuBEGMahA5WTYqB8lq9jH0kTXFheCBASsYnqeMFZhiTruNxr1N59Axg=="
- },
"convert-source-map": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
@@ -8464,17 +8519,17 @@
},
"dependencies": {
"@babel/runtime": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz",
- "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==",
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
+ "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
"requires": {
- "regenerator-runtime": "^0.13.2"
+ "regenerator-runtime": "^0.13.4"
}
},
"regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+ "version": "0.13.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
+ "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
}
}
},
@@ -8762,11 +8817,6 @@
"integrity": "sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==",
"dev": true
},
- "deepmerge": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.1.1.tgz",
- "integrity": "sha512-+qO5WbNBKBaZez95TffdUDnGIo4+r5kmsX8aOb7PDHvXsTbghAmleuxjs6ytNaf5Eg4FGBXDS5vqO61TRi6BMg=="
- },
"default-gateway": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
@@ -11291,18 +11341,18 @@
"dev": true
},
"formik": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/formik/-/formik-2.0.3.tgz",
- "integrity": "sha512-kYBvcxlsYSncY8OiJHD49C0UmoWXbgmIc9V1g3N1WwBJ7SMLk34QpcJDgroYd42K1cH+mSJlXhB7PlgTXTzlWg==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/formik/-/formik-2.1.4.tgz",
+ "integrity": "sha512-oKz8S+yQBzuQVSEoxkqqJrKQS5XJASWGVn6mrs+oTWrBoHgByVwwI1qHiVc9GKDpZBU9vAxXYAKz2BvujlwunA==",
"requires": {
"deepmerge": "^2.1.1",
"hoist-non-react-statics": "^3.3.0",
"lodash": "^4.17.14",
"lodash-es": "^4.17.14",
"react-fast-compare": "^2.0.1",
- "scheduler": "^0.14.0",
+ "scheduler": "^0.18.0",
"tiny-warning": "^1.0.2",
- "tslib": "^1.9.3"
+ "tslib": "^1.10.0"
},
"dependencies": {
"deepmerge": {
@@ -11311,13 +11361,18 @@
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
},
"scheduler": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.14.0.tgz",
- "integrity": "sha512-9CgbS06Kki2f4R9FjLSITjZo5BZxPsryiRNyL3LpvrM9WxcVmhlqAOc9E+KQbeI2nqej4JIIbOsfdL51cNb4Iw==",
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz",
+ "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1"
}
+ },
+ "tslib": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
+ "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA=="
}
}
},
@@ -14690,22 +14745,48 @@
}
},
"jss-plugin-camel-case": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0.tgz",
- "integrity": "sha512-yALDL00+pPR4FJh+k07A8FeDvfoPPuXU48HLy63enAubcVd3DnS+2rgqPXglHDGixIDVkCSXecl/l5GAMjzIbA==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.1.1.tgz",
+ "integrity": "sha512-MDIaw8FeD5uFz1seQBKz4pnvDLnj5vIKV5hXSVdMaAVq13xR6SVTVWkIV/keyTs5txxTvzGJ9hXoxgd1WTUlBw==",
"requires": {
"@babel/runtime": "^7.3.1",
"hyphenate-style-name": "^1.0.3",
- "jss": "10.0.0"
+ "jss": "10.1.1"
+ },
+ "dependencies": {
+ "jss": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
+ "integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^2.6.5",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ }
+ }
}
},
"jss-plugin-default-unit": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0.tgz",
- "integrity": "sha512-sURozIOdCtGg9ap18erQ+ijndAfEGtTaetxfU3H4qwC18Bi+fdvjlY/ahKbuu0ASs7R/+WKCP7UaRZOjUDMcdQ==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.1.1.tgz",
+ "integrity": "sha512-UkeVCA/b3QEA4k0nIKS4uWXDCNmV73WLHdh2oDGZZc3GsQtlOCuiH3EkB/qI60v2MiCq356/SYWsDXt21yjwdg==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.0.0"
+ "jss": "10.1.1"
+ },
+ "dependencies": {
+ "jss": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
+ "integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^2.6.5",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ }
+ }
}
},
"jss-plugin-extend": {
@@ -14719,50 +14800,115 @@
}
},
"jss-plugin-global": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0.tgz",
- "integrity": "sha512-80ofWKSQUo62bxLtRoTNe0kFPtHgUbAJeOeR36WEGgWIBEsXLyXOnD5KNnjPqG4heuEkz9eSLccjYST50JnI7Q==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.1.1.tgz",
+ "integrity": "sha512-VBG3wRyi3Z8S4kMhm8rZV6caYBegsk+QnQZSVmrWw6GVOT/Z4FA7eyMu5SdkorDlG/HVpHh91oFN56O4R9m2VA==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.0.0"
+ "jss": "10.1.1"
+ },
+ "dependencies": {
+ "jss": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
+ "integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^2.6.5",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ }
+ }
}
},
"jss-plugin-nested": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0.tgz",
- "integrity": "sha512-waxxwl/po1hN3azTyixKnr8ReEqUv5WK7WsO+5AWB0bFndML5Yqnt8ARZ90HEg8/P6WlqE/AB2413TkCRZE8bA==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.1.1.tgz",
+ "integrity": "sha512-ozEu7ZBSVrMYxSDplPX3H82XHNQk2DQEJ9TEyo7OVTPJ1hEieqjDFiOQOxXEj9z3PMqkylnUbvWIZRDKCFYw5Q==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.0.0",
+ "jss": "10.1.1",
"tiny-warning": "^1.0.2"
+ },
+ "dependencies": {
+ "jss": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
+ "integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^2.6.5",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ }
+ }
}
},
"jss-plugin-props-sort": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0.tgz",
- "integrity": "sha512-41mf22CImjwNdtOG3r+cdC8+RhwNm616sjHx5YlqTwtSJLyLFinbQC/a4PIFk8xqf1qpFH1kEAIw+yx9HaqZ3g==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.1.1.tgz",
+ "integrity": "sha512-g/joK3eTDZB4pkqpZB38257yD4LXB0X15jxtZAGbUzcKAVUHPl9Jb47Y7lYmiGsShiV4YmQRqG1p2DHMYoK91g==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.0.0"
+ "jss": "10.1.1"
+ },
+ "dependencies": {
+ "jss": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
+ "integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^2.6.5",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ }
+ }
}
},
"jss-plugin-rule-value-function": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0.tgz",
- "integrity": "sha512-Jw+BZ8JIw1f12V0SERqGlBT1JEPWax3vuZpMym54NAXpPb7R1LYHiCTIlaJUyqvIfEy3kiHMtgI+r2whGgRIxQ==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.1.1.tgz",
+ "integrity": "sha512-ClV1lvJ3laU9la1CUzaDugEcwnpjPTuJ0yGy2YtcU+gG/w9HMInD5vEv7xKAz53Bk4WiJm5uLOElSEshHyhKNw==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.0.0"
+ "jss": "10.1.1"
+ },
+ "dependencies": {
+ "jss": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
+ "integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^2.6.5",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ }
+ }
}
},
"jss-plugin-vendor-prefixer": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0.tgz",
- "integrity": "sha512-qslqvL0MUbWuzXJWdUxpj6mdNUX8jr4FFTo3aZnAT65nmzWL7g8oTr9ZxmTXXgdp7ANhS1QWE7036/Q2isFBpw==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.1.1.tgz",
+ "integrity": "sha512-09MZpQ6onQrhaVSF6GHC4iYifQ7+4YC/tAP6D4ZWeZotvCMq1mHLqNKRIaqQ2lkgANjlEot2JnVi1ktu4+L4pw==",
"requires": {
"@babel/runtime": "^7.3.1",
- "css-vendor": "^2.0.6",
- "jss": "10.0.0"
+ "css-vendor": "^2.0.7",
+ "jss": "10.1.1"
+ },
+ "dependencies": {
+ "jss": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.1.1.tgz",
+ "integrity": "sha512-Xz3qgRUFlxbWk1czCZibUJqhVPObrZHxY3FPsjCXhDld4NOj1BgM14Ir5hVm+Qr6OLqVljjGvoMcCdXNOAbdkQ==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^2.6.5",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ }
+ }
}
},
"jsx-ast-utils": {
@@ -16348,11 +16494,6 @@
"integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
"dev": true
},
- "normalize-scroll-left": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.2.0.tgz",
- "integrity": "sha512-t5oCENZJl8TGusJKoCJm7+asaSsPuNmK6+iEjrZ5TyBj2f02brCRsd4c83hwtu+e5d4LCSBZ0uoDlMjBo+A8yA=="
- },
"normalize-url": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
@@ -22170,6 +22311,12 @@
"psl": "^1.1.24",
"punycode": "^1.4.1"
}
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "dev": true
}
}
},
@@ -23393,6 +23540,12 @@
"requires": {
"websocket-driver": ">=0.5.1"
}
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "dev": true
}
}
},
@@ -24956,10 +25109,9 @@
"dev": true
},
"uuid": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
- "dev": true
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.2.tgz",
+ "integrity": "sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw=="
},
"v8-compile-cache": {
"version": "2.1.0",
@@ -25267,7 +25419,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"aproba": {
"version": "1.2.0",
@@ -25295,6 +25448,7 @@
"version": "1.1.11",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -25309,7 +25463,8 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"concat-map": {
"version": "0.0.1",
@@ -25320,7 +25475,8 @@
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"core-util-is": {
"version": "1.0.2",
@@ -25437,7 +25593,8 @@
"inherits": {
"version": "2.0.4",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"ini": {
"version": "1.3.5",
@@ -25449,6 +25606,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -25463,6 +25621,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -25470,12 +25629,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"minipass": {
"version": "2.9.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -25494,6 +25655,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -25583,7 +25745,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"object-assign": {
"version": "4.1.1",
@@ -25595,6 +25758,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"wrappy": "1"
}
@@ -25680,7 +25844,8 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -25716,6 +25881,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -25735,6 +25901,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
+ "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -25778,12 +25945,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
},
"yallist": {
"version": "3.1.1",
"bundled": true,
- "dev": true
+ "dev": true,
+ "optional": true
}
}
},
@@ -25879,6 +26048,14 @@
"requires": {
"ansi-colors": "^3.0.0",
"uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "dev": true
+ }
}
},
"webpack-manifest-plugin": {
diff --git a/new-lamassu-admin/package.json b/new-lamassu-admin/package.json
index a51ee905..d5536bcf 100644
--- a/new-lamassu-admin/package.json
+++ b/new-lamassu-admin/package.json
@@ -4,8 +4,9 @@
"license": "unlicense",
"dependencies": {
"@apollo/react-hooks": "^3.1.3",
- "@material-ui/core": "4.5.0",
- "@material-ui/icons": "4.4.3",
+ "@material-ui/core": "4.9.8",
+ "@material-ui/icons": "4.9.1",
+ "@material-ui/lab": "^4.0.0-alpha.47",
"@use-hooks/axios": "1.3.0",
"apollo-boost": "^0.4.7",
"axios": "0.19.0",
@@ -13,7 +14,7 @@
"classnames": "2.2.6",
"downshift": "3.3.4",
"file-saver": "2.0.2",
- "formik": "2.0.3",
+ "formik": "2.1.4",
"fuse.js": "^3.4.6",
"graphql": "^14.5.8",
"jss-plugin-extend": "^10.0.0",
@@ -27,6 +28,7 @@
"react-virtualized": "^9.21.2",
"sanctuary": "^2.0.1",
"slugify": "^1.3.6",
+ "uuid": "^7.0.2",
"yup": "0.27.0"
},
"devDependencies": {
diff --git a/new-lamassu-admin/src/App.js b/new-lamassu-admin/src/App.js
index 73f0d92c..75bc8ce8 100644
--- a/new-lamassu-admin/src/App.js
+++ b/new-lamassu-admin/src/App.js
@@ -1,3 +1,4 @@
+import { ApolloProvider } from '@apollo/react-hooks'
import CssBaseline from '@material-ui/core/CssBaseline'
import {
StylesProvider,
@@ -5,13 +6,12 @@ import {
MuiThemeProvider,
makeStyles
} from '@material-ui/core/styles'
+import ApolloClient from 'apollo-boost'
import { setAutoFreeze } from 'immer'
import { create } from 'jss'
import extendJss from 'jss-plugin-extend'
import React from 'react'
import { BrowserRouter as Router } from 'react-router-dom'
-import ApolloClient from 'apollo-boost'
-import { ApolloProvider } from '@apollo/react-hooks'
import Header from './components/Header'
import { tree, Routes } from './routing/routes'
@@ -19,8 +19,23 @@ import global from './styling/global'
import theme from './styling/theme'
import { backgroundColor, mainWidth } from './styling/variables'
+const defaultOptions = {
+ watchQuery: {
+ fetchPolicy: 'no-cache',
+ errorPolicy: 'ignore'
+ },
+ query: {
+ fetchPolicy: 'no-cache',
+ errorPolicy: 'all'
+ },
+ mutate: {
+ errorPolicy: 'all'
+ }
+}
+
const client = new ApolloClient({
credentials: 'include',
+ defaultOptions,
uri:
process.env.NODE_ENV === 'development'
? 'https://localhost:8070/graphql/'
@@ -29,7 +44,7 @@ const client = new ApolloClient({
if (process.env.NODE_ENV !== 'production') {
const whyDidYouRender = require('@welldone-software/why-did-you-render')
- whyDidYouRender(React, { include: [/Logs/] })
+ whyDidYouRender(React)
}
// disable immer autofreeze for performance
diff --git a/new-lamassu-admin/src/components/ConfirmDialog.js b/new-lamassu-admin/src/components/ConfirmDialog.js
index 1a7f9c76..b56cef22 100644
--- a/new-lamassu-admin/src/components/ConfirmDialog.js
+++ b/new-lamassu-admin/src/components/ConfirmDialog.js
@@ -73,7 +73,7 @@ export const ConfirmDialog = memo(
autoFocus
id="confirm-input"
type="text"
- large
+ size="lg"
fullWidth
value={value}
touched={{}}
diff --git a/new-lamassu-admin/src/components/booleanPropertiesTable/BooleanPropertiesTable.js b/new-lamassu-admin/src/components/booleanPropertiesTable/BooleanPropertiesTable.js
index 306e5efe..724fb483 100644
--- a/new-lamassu-admin/src/components/booleanPropertiesTable/BooleanPropertiesTable.js
+++ b/new-lamassu-admin/src/components/booleanPropertiesTable/BooleanPropertiesTable.js
@@ -1,14 +1,13 @@
import { makeStyles } from '@material-ui/core/styles'
import React, { useState, memo } from 'react'
-import { H4 } from 'src/components/typography'
import { Link } from 'src/components/buttons'
import { RadioGroup } from 'src/components/inputs'
import { Table, TableBody, TableRow, TableCell } from 'src/components/table'
-import { ReactComponent as EditIcon } from 'src/styling/icons/action/edit/enabled.svg'
+import BooleanCell from 'src/components/tables/BooleanCell'
+import { H4 } from 'src/components/typography'
import { ReactComponent as EditIconDisabled } from 'src/styling/icons/action/edit/disabled.svg'
-import { ReactComponent as TrueIcon } from 'src/styling/icons/table/true.svg'
-import { ReactComponent as FalseIcon } from 'src/styling/icons/table/false.svg'
+import { ReactComponent as EditIcon } from 'src/styling/icons/action/edit/enabled.svg'
import { booleanPropertiesTableStyles } from './BooleanPropertiesTable.styles'
@@ -82,7 +81,7 @@ const BooleanPropertiesTable = memo(
{element.display}
- {editing ? (
+ {editing && (
- ) : element.value ? (
-
- ) : (
-
)}
+ {!editing && }
))}
diff --git a/new-lamassu-admin/src/components/buttons/AddButton.js b/new-lamassu-admin/src/components/buttons/AddButton.js
index d549aa80..edd4a106 100644
--- a/new-lamassu-admin/src/components/buttons/AddButton.js
+++ b/new-lamassu-admin/src/components/buttons/AddButton.js
@@ -2,9 +2,9 @@ import { makeStyles } from '@material-ui/core/styles'
import classnames from 'classnames'
import React, { memo } from 'react'
+import typographyStyles from 'src/components/typography/styles'
import { ReactComponent as AddIcon } from 'src/styling/icons/button/add/zodiac.svg'
import { zircon, zircon2, comet, fontColor, white } from 'src/styling/variables'
-import typographyStyles from 'src/components/typography/styles'
const { p } = typographyStyles
diff --git a/new-lamassu-admin/src/components/buttons/IconButton.js b/new-lamassu-admin/src/components/buttons/IconButton.js
new file mode 100644
index 00000000..42e68747
--- /dev/null
+++ b/new-lamassu-admin/src/components/buttons/IconButton.js
@@ -0,0 +1,27 @@
+import { makeStyles, IconButton as IconB, SvgIcon } from '@material-ui/core'
+import React from 'react'
+
+const styles = {
+ root: {
+ '&:hover': {
+ backgroundColor: 'inherit'
+ }
+ }
+}
+
+const useStyles = makeStyles(styles)
+
+const IconButton = ({ children, onClick, ...props }) => {
+ const classes = useStyles()
+ return (
+
+ {children}
+
+ )
+}
+
+export default IconButton
diff --git a/new-lamassu-admin/src/components/buttons/Link.js b/new-lamassu-admin/src/components/buttons/Link.js
index 6a8c9a32..39e20780 100644
--- a/new-lamassu-admin/src/components/buttons/Link.js
+++ b/new-lamassu-admin/src/components/buttons/Link.js
@@ -6,23 +6,25 @@ import styles from './Link.styles'
const useStyles = makeStyles(styles)
-const Link = memo(({ submit, className, children, color, size, ...props }) => {
- const classes = useStyles()
- const classNames = {
- [classes.link]: true,
- [classes.primary]: color === 'primary',
- [classes.secondary]: color === 'secondary',
- [classes.noColor]: color === 'noColor'
- }
+const Link = memo(
+ ({ submit, className, children, color = 'primary', ...props }) => {
+ const classes = useStyles()
+ const classNames = {
+ [classes.link]: true,
+ [classes.primary]: color === 'primary',
+ [classes.secondary]: color === 'secondary',
+ [classes.noColor]: color === 'noColor'
+ }
- return (
-
- )
-})
+ return (
+
+ )
+ }
+)
export default Link
diff --git a/new-lamassu-admin/src/components/buttons/Link.styles.js b/new-lamassu-admin/src/components/buttons/Link.styles.js
index 411fffbd..bc6c7fbe 100644
--- a/new-lamassu-admin/src/components/buttons/Link.styles.js
+++ b/new-lamassu-admin/src/components/buttons/Link.styles.js
@@ -1,11 +1,11 @@
import { fade } from '@material-ui/core/styles/colorManipulator'
+import typographyStyles from 'src/components/typography/styles'
import {
white,
linkPrimaryColor,
linkSecondaryColor
} from 'src/styling/variables'
-import typographyStyles from 'src/components/typography/styles'
const { h4 } = typographyStyles
@@ -24,7 +24,8 @@ export default {
border: 'none',
backgroundColor: 'transparent',
cursor: 'pointer',
- padding: '0'
+ padding: '0',
+ height: '100%'
},
primary: {
extend: color(linkPrimaryColor)
diff --git a/new-lamassu-admin/src/components/buttons/index.js b/new-lamassu-admin/src/components/buttons/index.js
index 413e17d1..2031fb58 100644
--- a/new-lamassu-admin/src/components/buttons/index.js
+++ b/new-lamassu-admin/src/components/buttons/index.js
@@ -3,6 +3,7 @@ import AddButton from './AddButton'
import Button from './Button'
import FeatureButton from './FeatureButton'
import IDButton from './IDButton'
+import IconButton from './IconButton'
import Link from './Link'
import SimpleButton from './SimpleButton'
@@ -12,6 +13,7 @@ export {
SimpleButton,
ActionButton,
FeatureButton,
+ IconButton,
IDButton,
AddButton
}
diff --git a/new-lamassu-admin/src/components/dataTable/DataTable.js b/new-lamassu-admin/src/components/dataTable/DataTable.js
index 2e744d8b..56fcf116 100644
--- a/new-lamassu-admin/src/components/dataTable/DataTable.js
+++ b/new-lamassu-admin/src/components/dataTable/DataTable.js
@@ -19,15 +19,18 @@ const DataTable = memo(({ elements, data }) => {
<>
@@ -52,8 +55,8 @@ const DataTable = memo(({ elements, data }) => {
{elements.map(
(
{
- header,
size,
+ width,
className,
textAlign,
view = it => it?.toString()
@@ -63,6 +66,7 @@ const DataTable = memo(({ elements, data }) => {
{view(data[index])}
diff --git a/new-lamassu-admin/src/components/editableTable/Header.js b/new-lamassu-admin/src/components/editableTable/Header.js
new file mode 100644
index 00000000..74306fb3
--- /dev/null
+++ b/new-lamassu-admin/src/components/editableTable/Header.js
@@ -0,0 +1,35 @@
+import React from 'react'
+
+import { Td, THead } from 'src/components/fake-table/Table'
+import { startCase } from 'src/utils/string'
+
+import { ACTION_COL_SIZE, DEFAULT_COL_SIZE } from './consts'
+
+const Header = ({ elements, enableEdit, enableDelete }) => {
+ const actionColSize =
+ enableDelete && enableEdit ? ACTION_COL_SIZE / 2 : ACTION_COL_SIZE
+
+ return (
+
+ {elements.map(
+ ({ name, width = DEFAULT_COL_SIZE, header, textAlign }, idx) => (
+ |
+ {header || startCase(name)}
+ |
+ )
+ )}
+ {enableEdit && (
+
+ Edit
+ |
+ )}
+ {enableDelete && (
+
+ Delete
+ |
+ )}
+
+ )
+}
+
+export default Header
diff --git a/new-lamassu-admin/src/components/editableTable/Row.js b/new-lamassu-admin/src/components/editableTable/Row.js
index 1d7e4e16..c25b1cff 100644
--- a/new-lamassu-admin/src/components/editableTable/Row.js
+++ b/new-lamassu-admin/src/components/editableTable/Row.js
@@ -1,250 +1,150 @@
-import React, { memo } from 'react'
-import * as R from 'ramda'
-import classnames from 'classnames'
-import { Form, Formik, Field, useFormikContext } from 'formik'
import { makeStyles } from '@material-ui/core'
+import classnames from 'classnames'
+import { Field, useFormikContext } from 'formik'
+import React from 'react'
-import { Link } from 'src/components/buttons'
-import { Td, Tr, CellDoubleLevel } from 'src/components/fake-table/Table'
-import { TextInputDisplay } from 'src/components/inputs/base/TextInput'
-import { ReactComponent as DeleteIcon } from 'src/styling/icons/action/delete/enabled.svg'
+import { Link, IconButton } from 'src/components/buttons'
+import { Td, Tr } from 'src/components/fake-table/Table'
+import { TL2 } from 'src/components/typography'
import { ReactComponent as DisabledDeleteIcon } from 'src/styling/icons/action/delete/disabled.svg'
-// import { ReactComponent as EditIcon } from 'src/styling/icons/action/edit/enabled.svg'
-// import { ReactComponent as DisabledEditIcon } from 'src/styling/icons/action/edit/disabled.svg'
+import { ReactComponent as DeleteIcon } from 'src/styling/icons/action/delete/enabled.svg'
+import { ReactComponent as DisabledEditIcon } from 'src/styling/icons/action/edit/disabled.svg'
+import { ReactComponent as EditIcon } from 'src/styling/icons/action/edit/enabled.svg'
-const styles = {
- button: {
- border: 'none',
- backgroundColor: 'transparent',
- outline: 0,
- cursor: 'pointer'
- },
- actionCol: {
- display: 'flex',
- marginLeft: 'auto'
- },
- actionColDisplayMode: {
- justifyContent: 'center'
- },
- actionColEditMode: {
- justifyContent: 'flex-end',
- '& > :first-child': {
- marginRight: 16
- }
- },
- textInput: {
- '& > .MuiInputBase-input': {
- width: 282
- }
- }
- // doubleLevelRow: {
- // '& > div': {
- // marginRight: 72
- // }
- // }
-}
+import styles from './Row.styles'
+import { ACTION_COL_SIZE } from './consts'
const useStyles = makeStyles(styles)
-const ERow = memo(
- ({ elements, editing, setEditing, disableAction, action }) => {
- const classes = useStyles()
+const ActionCol = ({
+ editing,
+ setEditing,
+ enableEdit,
+ disabled,
+ onDelete,
+ enableDelete
+}) => {
+ const classes = useStyles()
+ const { values, submitForm, resetForm } = useFormikContext()
- const Cell = ({
- name,
- input,
- type,
- display,
- className,
- size,
- textAlign,
- inputProps,
- editing
- }) => {
- return (
- |
- {editing && (
-
- )}
- {!editing && type === 'text' && (
-
- )}
+ const actionColSize =
+ enableDelete && enableEdit ? ACTION_COL_SIZE / 2 : ACTION_COL_SIZE
+
+ return (
+ <>
+ {editing && (
+ |
+
+ Cancel
+
+
+ Save
+
|
- )
- }
-
- const actionCol = R.last(elements)
- const { values, errors } = useFormikContext()
-
- const actionColClasses = {
- [classes.actionCol]: true,
- [classes.actionColDisplayMode]: !editing,
- [classes.actionColEditMode]: editing
- }
-
- const icon = (action, disabled) => {
- if (action === 'delete' && !disabled) return
- if (action === 'delete' && disabled) return
- }
-
- return (
-
- {R.init(elements).map((element, idx) => {
- const colClasses = {
- [classes.textInput]: true
- }
-
- if (Array.isArray(element)) {
- return (
-
- {R.map(
- (
- {
- name,
- input,
- size,
- textAlign,
- type,
- view = it => it?.toString(),
- inputProps
- },
- idx
- ) => (
- |
- //
- // (x === '' ? '-' : x)}
- // decoration="%"
- // className={classes.eRowField}
- // setError={setError}
- // />
- // |
- )
- )(R.tail(element))}
-
- )
- }
-
- const {
- name,
- input,
- size,
- textAlign,
- type,
- view = it => it?.toString(),
- inputProps
- } = element
-
- return (
- |
- //
- // {editing && (
- //
- // )}
- // {!editing && type === 'text' && (
- //
- // )}
- // |
- )
- })}
-
- {!editing && !disableAction && (
-
- )}
- {!editing && disableAction && (
- {icon(actionCol.name, disableAction)}
- )}
- {editing && (
- <>
-
- Cancel
-
-
- Save
-
- >
- )}
+ )}
+ {!editing && enableEdit && (
+ |
+ setEditing && setEditing(values.id)}>
+ {disabled ? : }
+
|
-
- )
- }
-)
+ )}
+ {!editing && enableDelete && (
+
+ onDelete(values.id)}>
+ {disabled ? : }
+
+ |
+ )}
+ >
+ )
+}
-const ERowWithFormik = memo(
- ({
- initialValues,
- validationSchema,
- save,
- reset,
- action,
- elements,
- editing,
- disableAction
- }) => {
- return (
-
-
-
- )
- }
-)
+const ECol = ({ editing, config }) => {
+ const {
+ name,
+ input,
+ size,
+ bold,
+ width,
+ textAlign,
+ suffix,
+ view = it => it?.toString(),
+ inputProps = {}
+ } = config
-export default ERowWithFormik
+ const { values } = useFormikContext()
+ const classes = useStyles({ textAlign, size })
+
+ const viewClasses = {
+ [classes.bold]: bold,
+ [classes.size]: true
+ }
+
+ const iProps = {
+ fullWidth: true,
+ size,
+ bold,
+ textAlign,
+ ...inputProps
+ }
+
+ // Autocomplete
+ if (iProps.options && !iProps.getLabel) {
+ iProps.getLabel = view
+ }
+
+ return (
+
+ {editing && }
+ {!editing && values && (
+ {view(values[name])}
+ )}
+ {suffix && {suffix}}
+ |
+ )
+}
+
+const ERow = ({
+ elements,
+ enableEdit,
+ enableDelete,
+ onDelete,
+ editing,
+ setEditing,
+ disabled
+}) => {
+ const { errors } = useFormikContext()
+
+ return (
+
+ {elements.map((it, idx) => (
+
+ ))}
+ {(enableEdit || enableDelete) && (
+
+ )}
+
+ )
+}
+
+export default ERow
diff --git a/new-lamassu-admin/src/components/editableTable/Row.styles.js b/new-lamassu-admin/src/components/editableTable/Row.styles.js
new file mode 100644
index 00000000..65faac11
--- /dev/null
+++ b/new-lamassu-admin/src/components/editableTable/Row.styles.js
@@ -0,0 +1,17 @@
+import { bySize, bold } from 'src/styling/helpers'
+
+export default {
+ cancelButton: {
+ marginRight: 20
+ },
+ withSuffix: ({ textAlign }) => ({
+ display: 'flex',
+ alignItems: 'baseline',
+ justifyContent: textAlign === 'right' && 'end'
+ }),
+ suffix: {
+ marginLeft: 7
+ },
+ size: ({ size }) => bySize(size),
+ bold
+}
diff --git a/new-lamassu-admin/src/components/editableTable/Table.js b/new-lamassu-admin/src/components/editableTable/Table.js
index 100a9b93..ecc9d57d 100644
--- a/new-lamassu-admin/src/components/editableTable/Table.js
+++ b/new-lamassu-admin/src/components/editableTable/Table.js
@@ -1,124 +1,152 @@
-import React, { memo } from 'react'
+import { makeStyles } from '@material-ui/core'
+import { Form, Formik } from 'formik'
import * as R from 'ramda'
+import React, { useState } from 'react'
+import { v4 } from 'uuid'
-import {
- Th,
- ThDoubleLevel,
- THead,
- TBody,
- Table,
- TDoubleLevelHead
-} from 'src/components/fake-table/Table'
-import { startCase } from 'src/utils/string'
+import Link from 'src/components/buttons/Link.js'
+import { AddButton } from 'src/components/buttons/index.js'
+import { TBody, Table } from 'src/components/fake-table/Table'
+import { Info2 } from 'src/components/typography'
+import Header from './Header'
import ERow from './Row'
+import styles from './Table.styles'
+import { DEFAULT_COL_SIZE, ACTION_COL_SIZE } from './consts'
-const ETHead = memo(({ elements, className }) => {
- const action = R.last(elements)
+const useStyles = makeStyles(styles)
- return (
-
- {R.init(elements).map(({ name, size, display, textAlign }, idx) => (
-
- {display}
- |
- ))}
-
- {startCase(action.name)}
- |
-
- )
-})
-
-const ETDoubleHead = memo(({ elements, className }) => {
- const action = R.last(elements)
-
- return (
-
- {R.init(elements).map((element, idx) => {
- if (Array.isArray(element)) {
- return (
-
- {R.map(({ name, size, display, textAlign }) => (
-
- {display}
- |
- ))(R.tail(element))}
-
- )
- }
-
- const { name, size, display, textAlign } = element
- return (
-
- {display}
- |
- )
- })}
-
- {startCase(action.name)}
- |
-
- )
-})
-
-const ETable = memo(
- ({
- elements = [],
- data = [],
- save,
- reset,
- action,
- initialValues,
- validationSchema,
- editing,
- addingRow,
- disableAction,
- className,
- double
- }) => {
- return (
-
- {!double && }
- {double && (
-
- )}
-
- {addingRow && (
-
- )}
- {data.map((it, idx) => (
- reset(it)}
- action={action}
- validationSchema={validationSchema}
- disableAction={disableAction}
- editing={editing[idx]}
- />
- ))}
-
-
- )
- }
+const getWidth = R.compose(
+ R.reduce(R.add)(0),
+ R.map(it => it.width ?? DEFAULT_COL_SIZE)
)
+const ETable = ({
+ name,
+ title,
+ elements = [],
+ data = [],
+ save,
+ validationSchema,
+ enableCreate,
+ forceDisable,
+ disableAdd,
+ enableDelete,
+ initialValues,
+ enableEdit,
+ setEditing,
+ createText = 'Add override'
+}) => {
+ const [editingId, setEditingId] = useState(null)
+ const [adding, setAdding] = useState(false)
+
+ const innerSave = async it => {
+ const index = R.findIndex(R.propEq('id', it.id))(data)
+ const list = index !== -1 ? R.update(index, it, data) : R.prepend(it, data)
+
+ // no response means the save failed
+ const response = await save({ [name]: list })
+ if (!response) return
+ setAdding(false)
+ setEditingId(null)
+ }
+
+ const onDelete = id => {
+ const list = R.reject(it => it.id === id, data)
+ return save({ [name]: list })
+ }
+
+ const onReset = () => {
+ setAdding(false)
+ setEditingId(null)
+ setEditing && setEditing(false)
+ }
+
+ const onEdit = it => {
+ setEditingId(it)
+ setEditing && setEditing(it, true)
+ }
+
+ const addField = () => setAdding(true)
+
+ const actionSize = enableEdit || enableDelete ? ACTION_COL_SIZE : 0
+ const width = getWidth(elements) + actionSize
+ const classes = useStyles({ width })
+
+ const showButtonOnEmpty = !data.length && enableCreate && !adding
+ const canAdd = !forceDisable && !editingId && !disableAdd && !adding
+ const showTable = adding || data.length !== 0
+
+ return (
+
+ {showButtonOnEmpty && (
+
+ {createText}
+
+ )}
+ {showTable && (
+ <>
+
+ {title && {title}}
+ {enableCreate && canAdd && (
+
+ {createText}
+
+ )}
+
+
+
+
+ {adding && (
+
+
+
+ )}
+ {data.map((it, idx) => (
+
+
+
+ ))}
+
+
+ >
+ )}
+
+ )
+}
+
export default ETable
diff --git a/new-lamassu-admin/src/components/editableTable/Table.styles.js b/new-lamassu-admin/src/components/editableTable/Table.styles.js
new file mode 100644
index 00000000..00f93bd6
--- /dev/null
+++ b/new-lamassu-admin/src/components/editableTable/Table.styles.js
@@ -0,0 +1,21 @@
+import { offColor } from 'src/styling/variables'
+
+export default {
+ wrapper: ({ width }) => ({
+ width: width
+ }),
+ addLink: {
+ marginLeft: 'auto'
+ },
+ title: {
+ margin: 0,
+ color: offColor
+ },
+ outerHeader: {
+ minHeight: 16,
+ marginBottom: 24,
+ display: 'flex',
+ justifyContent: 'space-between',
+ alignItems: 'center'
+ }
+}
diff --git a/new-lamassu-admin/src/components/editableTable/consts.js b/new-lamassu-admin/src/components/editableTable/consts.js
new file mode 100644
index 00000000..da6fd5af
--- /dev/null
+++ b/new-lamassu-admin/src/components/editableTable/consts.js
@@ -0,0 +1,4 @@
+const ACTION_COL_SIZE = 175
+const DEFAULT_COL_SIZE = 100
+
+export { ACTION_COL_SIZE, DEFAULT_COL_SIZE }
diff --git a/new-lamassu-admin/src/components/expandable-table/ExpTable.js b/new-lamassu-admin/src/components/expandable-table/ExpTable.js
index 52a6ae9e..de996cb6 100644
--- a/new-lamassu-admin/src/components/expandable-table/ExpTable.js
+++ b/new-lamassu-admin/src/components/expandable-table/ExpTable.js
@@ -8,10 +8,10 @@ import {
CellMeasurerCache
} from 'react-virtualized'
+import { THead, Tr, Td, Th } from 'src/components/fake-table/Table'
import { ReactComponent as ExpandClosedIcon } from 'src/styling/icons/action/expand/closed.svg'
import { ReactComponent as ExpandOpenIcon } from 'src/styling/icons/action/expand/open.svg'
import { mainWidth } from 'src/styling/variables'
-import { THead, Tr, Td, Th } from 'src/components/fake-table/Table'
const styles = {
expandButton: {
@@ -48,25 +48,19 @@ const ExpRow = ({
.slice(0, -1)
.map(
(
- {
- header,
- size,
- className,
- textAlign,
- view = it => it?.toString()
- },
+ { width, className, textAlign, view = it => it?.toString() },
idx
) => (
{view(data)}
|
)
)}
-
+ |
|