Compare commits

..

1 Commits

Author SHA1 Message Date
Michael Albert a2807fe281 Allow importing csv files
Change-Id: I8f4c417c1762ba6dbc0fa929ecf8262e6e8a2e42
2020-04-15 11:38:11 +02:00
6 changed files with 162 additions and 222 deletions
+2 -1
View File
@@ -25,7 +25,8 @@
"react": "^16.13.1", "react": "^16.13.1",
"react-admin": "^3.4.0", "react-admin": "^3.4.0",
"react-dom": "^16.13.1", "react-dom": "^16.13.1",
"react-scripts": "^3.4.1" "react-scripts": "^3.4.1",
"react-admin-import-csv": "^0.2.5"
}, },
"scripts": { "scripts": {
"start": "react-scripts start", "start": "react-scripts start",
+29 -39
View File
@@ -1,4 +1,4 @@
import React, { Fragment } from "react"; import React from "react";
import PersonPinIcon from "@material-ui/icons/PersonPin"; import PersonPinIcon from "@material-ui/icons/PersonPin";
import SettingsInputComponentIcon from "@material-ui/icons/SettingsInputComponent"; import SettingsInputComponentIcon from "@material-ui/icons/SettingsInputComponent";
import { import {
@@ -10,7 +10,6 @@ import {
Edit, Edit,
List, List,
Filter, Filter,
Toolbar,
SimpleForm, SimpleForm,
SimpleFormIterator, SimpleFormIterator,
TabbedForm, TabbedForm,
@@ -22,14 +21,14 @@ import {
TextField, TextField,
TextInput, TextInput,
ReferenceField, ReferenceField,
Toolbar,
TopToolbar,
SelectInput, SelectInput,
BulkDeleteButton,
DeleteButton,
SaveButton,
regex, regex,
useTranslate,
Pagination, Pagination,
} from "react-admin"; } from "react-admin";
import { ImportButton } from "react-admin-import-csv";
import { CreateButton, ExportButton } from "ra-ui-materialui";
const UserPagination = props => ( const UserPagination = props => (
<Pagination {...props} rowsPerPageOptions={[10, 25, 50, 100, 500, 1000]} /> <Pagination {...props} rowsPerPageOptions={[10, 25, 50, 100, 500, 1000]} />
@@ -46,16 +45,28 @@ const UserFilter = props => (
</Filter> </Filter>
); );
const UserBulkActionButtons = props => { const ListActions = props => {
const translate = useTranslate(); const {
className,
basePath,
total,
resource,
currentSort,
filterValues,
exporter
} = props;
return ( return (
<Fragment> <TopToolbar className={className}>
<BulkDeleteButton <CreateButton basePath={basePath} />
{...props} <ImportButton {...props} />
label="resources.users.action.erase" <ExportButton
title={translate("resources.users.helper.erase")} disabled={total === 0}
resource={resource}
sort={currentSort}
filter={filterValues}
exporter={exporter}
/> />
</Fragment> </TopToolbar>
); );
}; };
@@ -64,8 +75,9 @@ export const UserList = props => (
{...props} {...props}
filters={<UserFilter />} filters={<UserFilter />}
filterDefaultValues={{ guests: true, deactivated: false }} filterDefaultValues={{ guests: true, deactivated: false }}
bulkActionButtons={<UserBulkActionButtons />} bulkActionButtons={false}
pagination={<UserPagination />} pagination={<UserPagination />}
actions={<ListActions />}
> >
<Datagrid rowClick="edit"> <Datagrid rowClick="edit">
<ReferenceField <ReferenceField
@@ -99,19 +111,6 @@ const validateUser = regex(
"synapseadmin.users.invalid_user_id" "synapseadmin.users.invalid_user_id"
); );
const UserEditToolbar = props => {
const translate = useTranslate();
return (
<Toolbar {...props}>
<SaveButton submitOnEnter={true} />
<DeleteButton
label="resources.users.action.erase"
title={translate("resources.users.helper.erase")}
/>
</Toolbar>
);
};
export const UserCreate = props => ( export const UserCreate = props => (
<Create {...props}> <Create {...props}>
<SimpleForm> <SimpleForm>
@@ -135,18 +134,9 @@ export const UserCreate = props => (
</Create> </Create>
); );
const UserTitle = ({ record }) => {
const translate = useTranslate();
return (
<span>
{translate("resources.users.name")}{" "}
{record ? `"${record.displayname}"` : ""}
</span>
);
};
export const UserEdit = props => ( export const UserEdit = props => (
<Edit {...props} title={<UserTitle />}> <Edit {...props}>
<TabbedForm toolbar={<UserEditToolbar />}> <TabbedForm>
<FormTab label="resources.users.name" icon={<PersonPinIcon />}> <FormTab label="resources.users.name" icon={<PersonPinIcon />}>
<TextInput source="id" disabled /> <TextInput source="id" disabled />
<TextInput source="displayname" /> <TextInput source="displayname" />
-4
View File
@@ -37,10 +37,6 @@ export default {
}, },
helper: { helper: {
deactivate: "Deaktivierte Nutzer können nicht wieder aktiviert werden.", deactivate: "Deaktivierte Nutzer können nicht wieder aktiviert werden.",
erase: "DSGVO konformes Löschen der Benutzerdaten",
},
action: {
erase: "Lösche Benutzerdaten",
}, },
}, },
rooms: { rooms: {
-4
View File
@@ -37,10 +37,6 @@ export default {
}, },
helper: { helper: {
deactivate: "Deactivated users cannot be reactivated", deactivate: "Deactivated users cannot be reactivated",
erase: "Mark the user as GDPR-erased",
},
action: {
erase: "Erase user data",
}, },
}, },
rooms: { rooms: {
+31 -63
View File
@@ -30,11 +30,6 @@ const resourceMap = {
? parseInt(json.next_token, 10) + perPage ? parseInt(json.next_token, 10) + perPage
: from + json.users.length; : from + json.users.length;
}, },
delete: id => ({
endpoint: `/_synapse/admin/v1/deactivate/${id}`,
body: { erase: true },
method: "POST",
}),
}, },
rooms: { rooms: {
path: "/_synapse/admin/v1/rooms", path: "/_synapse/admin/v1/rooms",
@@ -85,8 +80,8 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
const endpoint_url = homeserver + res.path; const homeserver_url = homeserver + res.path;
const url = `${endpoint_url}?${stringify(query)}`; const url = `${homeserver_url}?${stringify(query)}`;
return jsonClient(url).then(({ json }) => ({ return jsonClient(url).then(({ json }) => ({
data: json[res.data].map(res.map), data: json[res.data].map(res.map),
@@ -101,8 +96,8 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
const endpoint_url = homeserver + res.path; const homeserver_url = homeserver + res.path;
return jsonClient(`${endpoint_url}/${params.id}`).then(({ json }) => ({ return jsonClient(`${homeserver_url}/${params.id}`).then(({ json }) => ({
data: res.map(json), data: res.map(json),
})); }));
}, },
@@ -114,9 +109,9 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
const endpoint_url = homeserver + res.path; const homeserver_url = homeserver + res.path;
return Promise.all( return Promise.all(
params.ids.map(id => jsonClient(`${endpoint_url}/${id}`)) params.ids.map(id => jsonClient(`${homeserver_url}/${id}`))
).then(responses => ({ ).then(responses => ({
data: responses.map(({ json }) => res.map(json)), data: responses.map(({ json }) => res.map(json)),
})); }));
@@ -141,8 +136,8 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
const endpoint_url = homeserver + res.path; const homeserver_url = homeserver + res.path;
const url = `${endpoint_url}?${stringify(query)}`; const url = `${homeserver_url}?${stringify(query)}`;
return jsonClient(url).then(({ headers, json }) => ({ return jsonClient(url).then(({ headers, json }) => ({
data: json, data: json,
@@ -157,8 +152,8 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
const endpoint_url = homeserver + res.path; const homeserver_url = homeserver + res.path;
return jsonClient(`${endpoint_url}/${params.data.id}`, { return jsonClient(`${homeserver_url}/${params.data.id}`, {
method: "PUT", method: "PUT",
body: JSON.stringify(params.data, filterNullValues), body: JSON.stringify(params.data, filterNullValues),
}).then(({ json }) => ({ }).then(({ json }) => ({
@@ -173,9 +168,9 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
const endpoint_url = homeserver + res.path; const homeserver_url = homeserver + res.path;
return Promise.all( return Promise.all(
params.ids.map(id => jsonClient(`${endpoint_url}/${id}`), { params.ids.map(id => jsonClient(`${homeserver_url}/${id}`), {
method: "PUT", method: "PUT",
body: JSON.stringify(params.data, filterNullValues), body: JSON.stringify(params.data, filterNullValues),
}) })
@@ -191,8 +186,8 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
const endpoint_url = homeserver + res.path; const homeserver_url = homeserver + res.path;
return jsonClient(`${endpoint_url}/${params.data.id}`, { return jsonClient(`${homeserver_url}/${params.data.id}`, {
method: "PUT", method: "PUT",
body: JSON.stringify(params.data, filterNullValues), body: JSON.stringify(params.data, filterNullValues),
}).then(({ json }) => ({ }).then(({ json }) => ({
@@ -207,24 +202,12 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
if ("delete" in res) { const homeserver_url = homeserver + res.path;
const del = res["delete"](params.id); return jsonClient(`${homeserver_url}/${params.id}`, {
const endpoint_url = homeserver + del.endpoint; method: "DELETE",
return jsonClient(endpoint_url, { }).then(({ json }) => ({
method: del.method, data: json,
body: JSON.stringify(del.body), }));
}).then(({ json }) => ({
data: json,
}));
} else {
const endpoint_url = homeserver + res.path;
return jsonClient(`${endpoint_url}/${params.id}`, {
method: "DELETE",
body: JSON.stringify(params.data, filterNullValues),
}).then(({ json }) => ({
data: json,
}));
}
}, },
deleteMany: (resource, params) => { deleteMany: (resource, params) => {
@@ -234,32 +217,17 @@ const dataProvider = {
const res = resourceMap[resource]; const res = resourceMap[resource];
if ("delete" in res) { const homeserver_url = homeserver + res.path;
return Promise.all( return Promise.all(
params.ids.map(id => { params.ids.map(id =>
const del = res["delete"](id); jsonClient(`${homeserver_url}/${id}`, {
const endpoint_url = homeserver + del.endpoint; method: "DELETE",
return jsonClient(endpoint_url, { body: JSON.stringify(params.data, filterNullValues),
method: del.method, }).then(responses => ({
body: JSON.stringify(del.body), data: responses.map(({ json }) => json),
}); }))
}) )
).then(responses => ({ );
data: responses.map(({ json }) => json),
}));
} else {
const endpoint_url = homeserver + res.path;
return Promise.all(
params.ids.map(id =>
jsonClient(`${endpoint_url}/${id}`, {
method: "DELETE",
body: JSON.stringify(params.data, filterNullValues),
})
)
).then(responses => ({
data: responses.map(({ json }) => json),
}));
}
}, },
}; };
+100 -111
View File
@@ -1142,10 +1142,10 @@
"@types/istanbul-reports" "^1.1.1" "@types/istanbul-reports" "^1.1.1"
"@types/yargs" "^13.0.0" "@types/yargs" "^13.0.0"
"@jest/types@^25.4.0": "@jest/types@^25.2.6":
version "25.4.0" version "25.2.6"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.4.0.tgz#5afeb8f7e1cba153a28e5ac3c9fe3eede7206d59" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.2.6.tgz#c12f44af9bed444438091e4b59e7ed05f8659cb6"
integrity sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw== integrity sha512-myJTTV37bxK7+3NgKc4Y/DlQ5q92/NOwZsZ+Uch7OXdElxOg61QYc72fPYNAjlvbnJ2YvbXLamIsa9tj48BmyQ==
dependencies: dependencies:
"@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^1.1.1" "@types/istanbul-reports" "^1.1.1"
@@ -1153,20 +1153,19 @@
chalk "^3.0.0" chalk "^3.0.0"
"@material-ui/core@^4.3.3": "@material-ui/core@^4.3.3":
version "4.9.11" version "4.9.9"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.9.11.tgz#02f45f4dbea6db191fdc0d993323d64cfae613fd" resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.9.9.tgz#902dc37eeb415dd3288feb2c92e0dc27d9caed48"
integrity sha512-S2Ha9GpTxzl29XMeMc8dQX2pj97yApNzuhe/23If53fMdg5Fmd3SgbE1bMbyXeKhxwtXZjOFxd0vU+W/sez8Ew== integrity sha512-Gp0UdJLxPEnkn7O0QpJ2/LOeIuT8nX9e6CjQFuLnOy10rUGjRsOZ2T170Y057xdUmw1VNE+0bvkkO6dOghxt4g==
dependencies: dependencies:
"@babel/runtime" "^7.4.4" "@babel/runtime" "^7.4.4"
"@material-ui/react-transition-group" "^4.2.0" "@material-ui/styles" "^4.9.6"
"@material-ui/styles" "^4.9.10" "@material-ui/system" "^4.9.6"
"@material-ui/system" "^4.9.10" "@material-ui/types" "^5.0.0"
"@material-ui/types" "^5.0.1"
"@material-ui/utils" "^4.9.6" "@material-ui/utils" "^4.9.6"
"@types/react-transition-group" "^4.2.0" "@types/react-transition-group" "^4.2.0"
clsx "^1.0.4" clsx "^1.0.2"
hoist-non-react-statics "^3.3.2" hoist-non-react-statics "^3.3.2"
popper.js "^1.16.1-lts" popper.js "^1.14.1"
prop-types "^15.7.2" prop-types "^15.7.2"
react-is "^16.8.0" react-is "^16.8.0"
react-transition-group "^4.3.0" react-transition-group "^4.3.0"
@@ -1178,24 +1177,14 @@
dependencies: dependencies:
"@babel/runtime" "^7.4.4" "@babel/runtime" "^7.4.4"
"@material-ui/react-transition-group@^4.2.0": "@material-ui/styles@^4.3.3", "@material-ui/styles@^4.9.6":
version "4.3.0" version "4.9.6"
resolved "https://registry.yarnpkg.com/@material-ui/react-transition-group/-/react-transition-group-4.3.0.tgz#92529142addb5cc179dbf42d246c7e3fe4d6104b" resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.9.6.tgz#924a30bf7c9b91af9c8f19c12c8573b8a4ecd085"
integrity sha512-CwQ0aXrlUynUTY6sh3UvKuvye1o92en20VGAs6TORnSxUYeRmkX8YeTUN3lAkGiBX1z222FxLFO36WWh6q73rQ== integrity sha512-ijgwStEkw1OZ6gCz18hkjycpr/3lKs1hYPi88O/AUn4vMuuGEGAIrqKVFq/lADmZUNF3DOFIk8LDkp7zmjPxtA==
dependencies:
"@babel/runtime" "^7.5.5"
dom-helpers "^5.0.1"
loose-envify "^1.4.0"
prop-types "^15.6.2"
"@material-ui/styles@^4.3.3", "@material-ui/styles@^4.9.10":
version "4.9.10"
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.9.10.tgz#182ccdd0bc8525a459486499bbaebcd92b0db3ab"
integrity sha512-EXIXlqVyFDnjXF6tj72y6ZxiSy+mHtrsCo3Srkm3XUeu3Z01aftDBy7ZSr3TQ02gXHTvDSBvegp3Le6p/tl7eA==
dependencies: dependencies:
"@babel/runtime" "^7.4.4" "@babel/runtime" "^7.4.4"
"@emotion/hash" "^0.8.0" "@emotion/hash" "^0.8.0"
"@material-ui/types" "^5.0.1" "@material-ui/types" "^5.0.0"
"@material-ui/utils" "^4.9.6" "@material-ui/utils" "^4.9.6"
clsx "^1.0.2" clsx "^1.0.2"
csstype "^2.5.2" csstype "^2.5.2"
@@ -1210,19 +1199,19 @@
jss-plugin-vendor-prefixer "^10.0.3" jss-plugin-vendor-prefixer "^10.0.3"
prop-types "^15.7.2" prop-types "^15.7.2"
"@material-ui/system@^4.9.10": "@material-ui/system@^4.9.6":
version "4.9.10" version "4.9.6"
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.9.10.tgz#5de6ec7bea0f222b10b45e5bd5bb8b9a7b938926" resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.9.6.tgz#fd060540224da4d1740da8ca6e7af288e217717e"
integrity sha512-E+t0baX2TBZk6ALm8twG6objpsxLdMM4MDm1++LMt2m7CetCAEc3aIAfDaprk4+tm5hFT1Cah5dRWk8EeIFQYw== integrity sha512-QtfoAePyqXoZ2HUVSwGb1Ro0kucMCvVjbI0CdYIR21t0Opgfm1Oer6ni9P5lfeXA39xSt0wCierw37j+YES48Q==
dependencies: dependencies:
"@babel/runtime" "^7.4.4" "@babel/runtime" "^7.4.4"
"@material-ui/utils" "^4.9.6" "@material-ui/utils" "^4.9.6"
prop-types "^15.7.2" prop-types "^15.7.2"
"@material-ui/types@^5.0.1": "@material-ui/types@^5.0.0":
version "5.0.1" version "5.0.0"
resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.0.1.tgz#c4954063cdc196eb327ee62c041368b1aebb6d61" resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.0.0.tgz#26d6259dc6b39f4c2e1e9aceff7a11e031941741"
integrity sha512-wURPSY7/3+MAtng3i26g+WKwwNE3HEeqa/trDBR5+zWKmcjO+u9t7Npu/J1r+3dmIa/OeziN9D/18IrBKvKffw== integrity sha512-UeH2BuKkwDndtMSS0qgx1kCzSMw+ydtj0xx/XbFtxNSTlXydKwzs5gVW5ZKsFlAkwoOOQ9TIsyoCC8hq18tOwg==
"@material-ui/utils@^4.9.6": "@material-ui/utils@^4.9.6":
version "4.9.6" version "4.9.6"
@@ -1410,9 +1399,9 @@
wait-for-expect "^1.2.0" wait-for-expect "^1.2.0"
"@testing-library/dom@^7.1.0": "@testing-library/dom@^7.1.0":
version "7.2.1" version "7.2.0"
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.2.1.tgz#bb3b31d669bbe0c4939dadd95d69caa3c1d0b372" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.2.0.tgz#948894c2ef52017d299c35da02e085498363cd1e"
integrity sha512-xIGoHlQ2ZiEL1dJIFKNmLDypzYF+4OJTTASRctl/aoIDaS5y/pRVHRigoqvPUV11mdJoR71IIgi/6UviMgyz4g== integrity sha512-K1Sao38VxsTrjTkFkzeW8m/oCtgCI5lANCE7u9ZaF+TTL3uKuiZ+vazeurxjvRHAsE6PvXjOIl6JFuZfgcWJSQ==
dependencies: dependencies:
"@babel/runtime" "^7.9.2" "@babel/runtime" "^7.9.2"
"@types/testing-library__dom" "^7.0.0" "@types/testing-library__dom" "^7.0.0"
@@ -1421,9 +1410,9 @@
pretty-format "^25.1.0" pretty-format "^25.1.0"
"@testing-library/jest-dom@^5.1.1": "@testing-library/jest-dom@^5.1.1":
version "5.5.0" version "5.3.0"
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.5.0.tgz#4707023e8f572021e8a84f65721303ff60828d88" resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.3.0.tgz#2ae813b8b0eb69e8808f75d3af8efa3f0dc4d7ec"
integrity sha512-7sWHrpxG4Yd8TmryI7Rtbx8Ff4mbs3ASye3oshQIuHvsCR+QHgr7rTR/PfeXvOmwUwR36wSTTAvrLKsPmr6VEQ== integrity sha512-Cdhpc3BHL888X55qBNyra9eM0UG63LCm/FqCWTa1Ou/0MpsUbQTM9vW1NU6/jBQFoSLgkFfDG5XVpm2V0dOm/A==
dependencies: dependencies:
"@babel/runtime" "^7.9.2" "@babel/runtime" "^7.9.2"
"@types/testing-library__jest-dom" "^5.0.2" "@types/testing-library__jest-dom" "^5.0.2"
@@ -1436,9 +1425,9 @@
redent "^3.0.0" redent "^3.0.0"
"@testing-library/react@^10.0.2": "@testing-library/react@^10.0.2":
version "10.0.3" version "10.0.2"
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.0.3.tgz#7781adc75cce172f8cda28faa77be29c6270ab43" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.0.2.tgz#8eca7aa52d810cf7150048a2829fdc487162006d"
integrity sha512-EVmd3ghDFBEjOSLnISUdi7OcLdP6tsqjmTprpMaBz5TreoM8jnxGKIPkLD579CE0LYGqK01iffQiy6wwW/RUig== integrity sha512-YT6Mw0oJz7R6vlEkmo1FlUD+K15FeXApOB5Ffm9zooFVnrwkt00w18dUJFMOh1yRp9wTdVRonbor7o4PIpFCmA==
dependencies: dependencies:
"@babel/runtime" "^7.9.2" "@babel/runtime" "^7.9.2"
"@testing-library/dom" "^7.1.0" "@testing-library/dom" "^7.1.0"
@@ -1453,9 +1442,9 @@
"@testing-library/dom" "^5.6.1" "@testing-library/dom" "^5.6.1"
"@testing-library/user-event@^10.0.1": "@testing-library/user-event@^10.0.1":
version "10.0.2" version "10.0.1"
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-10.0.2.tgz#c44197998a9b7a8d60ff66bb9d41635d9648f064" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-10.0.1.tgz#9a02dbbc813135f25778b17f92a63933a58e8af5"
integrity sha512-fVeP4U37BIYdp9nBRKEITFSLPqgCSS7Og6LHvxoQ2JSOTJ1NJI4Dfesv4uNXxvNNcJgBS88V+Tc6h8vbDsa2iA== integrity sha512-M63ftowo1QpAGMnWyz7df0ygqnu4XyF68Sty7mivMAz2HLcY1uLoN3qcen6WMobdY0MoZUi4+BLsziSDAP62Vg==
"@types/babel__core@^7.1.0": "@types/babel__core@^7.1.0":
version "7.1.7" version "7.1.7"
@@ -1587,9 +1576,9 @@
"@types/react" "*" "@types/react" "*"
"@types/react@*": "@types/react@*":
version "16.9.34" version "16.9.32"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.34.tgz#f7d5e331c468f53affed17a8a4d488cd44ea9349" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.32.tgz#f6368625b224604148d1ddf5920e4fefbd98d383"
integrity sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow== integrity sha512-fmejdp0CTH00mOJmxUPPbWCEBWPvRIL4m8r0qD+BSDUqmutPyGQCHifzMpMzdvZwROdEdL78IuZItntFWgPXHQ==
dependencies: dependencies:
"@types/prop-types" "*" "@types/prop-types" "*"
csstype "^2.2.0" csstype "^2.2.0"
@@ -3015,7 +3004,7 @@ clone-deep@^4.0.1:
kind-of "^6.0.2" kind-of "^6.0.2"
shallow-clone "^3.0.0" shallow-clone "^3.0.0"
clsx@^1.0.2, clsx@^1.0.4: clsx@^1.0.2:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.0.tgz#62937c6adfea771247c34b54d320fb99624f5702" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.0.tgz#62937c6adfea771247c34b54d320fb99624f5702"
integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA== integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA==
@@ -3258,9 +3247,9 @@ core-js-compat@^3.6.2:
semver "7.0.0" semver "7.0.0"
core-js-pure@^3.0.0: core-js-pure@^3.0.0:
version "3.6.5" version "3.6.4"
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a"
integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==
core-js@^1.0.0: core-js@^1.0.0:
version "1.2.7" version "1.2.7"
@@ -4244,9 +4233,9 @@ escodegen@^1.11.0, escodegen@^1.9.1:
source-map "~0.6.1" source-map "~0.6.1"
eslint-config-prettier@^6.10.1: eslint-config-prettier@^6.10.1:
version "6.11.0" version "6.10.1"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a"
integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ==
dependencies: dependencies:
get-stdin "^6.0.0" get-stdin "^6.0.0"
@@ -4325,9 +4314,9 @@ eslint-plugin-jsx-a11y@6.2.3:
jsx-ast-utils "^2.2.1" jsx-ast-utils "^2.2.1"
eslint-plugin-prettier@^3.1.2: eslint-plugin-prettier@^3.1.2:
version "3.1.3" version "3.1.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba"
integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==
dependencies: dependencies:
prettier-linter-helpers "^1.0.0" prettier-linter-helpers "^1.0.0"
@@ -6215,15 +6204,15 @@ jest-diff@^24.9.0:
jest-get-type "^24.9.0" jest-get-type "^24.9.0"
pretty-format "^24.9.0" pretty-format "^24.9.0"
jest-diff@^25.1.0, jest-diff@^25.2.1, jest-diff@^25.4.0: jest-diff@^25.1.0, jest-diff@^25.2.1, jest-diff@^25.2.6:
version "25.4.0" version "25.2.6"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.4.0.tgz#260b70f19a46c283adcad7f081cae71eb784a634" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.2.6.tgz#a6d70a9ab74507715ea1092ac513d1ab81c1b5e7"
integrity sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug== integrity sha512-KuadXImtRghTFga+/adnNrv9s61HudRMR7gVSbP35UKZdn4IK2/0N0PpGZIqtmllK9aUyye54I3nu28OYSnqOg==
dependencies: dependencies:
chalk "^3.0.0" chalk "^3.0.0"
diff-sequences "^25.2.6" diff-sequences "^25.2.6"
jest-get-type "^25.2.6" jest-get-type "^25.2.6"
pretty-format "^25.4.0" pretty-format "^25.2.6"
jest-docblock@^24.3.0: jest-docblock@^24.3.0:
version "24.9.0" version "24.9.0"
@@ -6348,14 +6337,14 @@ jest-matcher-utils@^24.9.0:
pretty-format "^24.9.0" pretty-format "^24.9.0"
jest-matcher-utils@^25.1.0: jest-matcher-utils@^25.1.0:
version "25.4.0" version "25.2.7"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz#dc3e7aec402a1e567ed80b572b9ad285878895e6" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.2.7.tgz#53fad3c11fc42e92e374306df543026712c957a3"
integrity sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A== integrity sha512-jNYmKQPRyPO3ny0KY1I4f0XW4XnpJ3Nx5ovT4ik0TYDOYzuXJW40axqOyS61l/voWbVT9y9nZ1THL1DlpaBVpA==
dependencies: dependencies:
chalk "^3.0.0" chalk "^3.0.0"
jest-diff "^25.4.0" jest-diff "^25.2.6"
jest-get-type "^25.2.6" jest-get-type "^25.2.6"
pretty-format "^25.4.0" pretty-format "^25.2.6"
jest-message-util@^24.9.0: jest-message-util@^24.9.0:
version "24.9.0" version "24.9.0"
@@ -8212,7 +8201,7 @@ pnp-webpack-plugin@1.6.4:
dependencies: dependencies:
ts-pnp "^1.1.6" ts-pnp "^1.1.6"
popper.js@^1.16.1-lts: popper.js@^1.14.1:
version "1.16.1" version "1.16.1"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b"
integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==
@@ -8910,9 +8899,9 @@ prettier-linter-helpers@^1.0.0:
fast-diff "^1.1.2" fast-diff "^1.1.2"
prettier@^2.0.0: prettier@^2.0.0:
version "2.0.5" version "2.0.3"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.3.tgz#9a06f0e94a51420e78b6925568b5bec72afe41ea"
integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== integrity sha512-5qpBDBHO9fpE0zruKiTZm8Gxmz7kknO+WlQR/ivV+RMwgDw/WjOgmxLDn66MPrxq/WZPx/EgEZzh87xJO5E6Fw==
pretty-bytes@^5.1.0: pretty-bytes@^5.1.0:
version "5.3.0" version "5.3.0"
@@ -8937,12 +8926,12 @@ pretty-format@^24.8.0, pretty-format@^24.9.0:
ansi-styles "^3.2.0" ansi-styles "^3.2.0"
react-is "^16.8.4" react-is "^16.8.4"
pretty-format@^25.1.0, pretty-format@^25.2.1, pretty-format@^25.4.0: pretty-format@^25.1.0, pretty-format@^25.2.1, pretty-format@^25.2.6:
version "25.4.0" version "25.2.6"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.2.6.tgz#542a1c418d019bbf1cca2e3620443bc1323cb8d7"
integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== integrity sha512-DEiWxLBaCHneffrIT4B+TpMvkV9RNvvJrd3lY9ew1CEQobDzEXmYT1mg0hJhljZty7kCc10z13ohOFAE8jrUDg==
dependencies: dependencies:
"@jest/types" "^25.4.0" "@jest/types" "^25.2.6"
ansi-regex "^5.0.0" ansi-regex "^5.0.0"
ansi-styles "^4.0.0" ansi-styles "^4.0.0"
react-is "^16.12.0" react-is "^16.12.0"
@@ -9129,10 +9118,10 @@ querystringify@^2.1.1:
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
ra-core@^3.4.1: ra-core@^3.4.0:
version "3.4.1" version "3.4.0"
resolved "https://registry.yarnpkg.com/ra-core/-/ra-core-3.4.1.tgz#4390f7f317a1bbdabf03b6cd2d4484d7048450ef" resolved "https://registry.yarnpkg.com/ra-core/-/ra-core-3.4.0.tgz#1d4b49b78cf60eb2b0d2c1584ccfce73611ab9a6"
integrity sha512-XHcYAU36aMhIAmspdQ299SLCclu7qMmPS/IXN1VPVlRJHAIurK5tgRUMStAgDRO05qIkU5Xnb9C9PA63VmlPwA== integrity sha512-hpC0r6s6Uodj3e8T06uvBbk/dcv2H/C2Gih+ouAyuKOR4gglAWIPqcpy6SfN5cZrBxbGkvDCFSKDNNMw5067+g==
dependencies: dependencies:
"@testing-library/react" "^8.0.7" "@testing-library/react" "^8.0.7"
classnames "~2.2.5" classnames "~2.2.5"
@@ -9145,30 +9134,30 @@ ra-core@^3.4.1:
recompose "~0.26.0" recompose "~0.26.0"
reselect "~3.0.0" reselect "~3.0.0"
ra-i18n-polyglot@^3.4.1: ra-i18n-polyglot@^3.4.0:
version "3.4.1" version "3.4.0"
resolved "https://registry.yarnpkg.com/ra-i18n-polyglot/-/ra-i18n-polyglot-3.4.1.tgz#269618aaae5fd525e36cb52cf1709e5fcd79bb9b" resolved "https://registry.yarnpkg.com/ra-i18n-polyglot/-/ra-i18n-polyglot-3.4.0.tgz#fcc2067e55e953c58f496d579837241615eca85b"
integrity sha512-i13N/wGi7aOxKeABdJ54wwYJZPUeLLUQ23C1TAbNynFro1pIHl2j4lxRBhRIlYPwNKdsUjuLzt30fdcVIGH+FQ== integrity sha512-53VWZ3C9cza9cqfibzGVBdFAA/zc3c8pLY2yt5RKNiD1taHylZyX0doebC///jOe7OwUaOHv1KnD5WdLaNM93Q==
dependencies: dependencies:
node-polyglot "^2.2.2" node-polyglot "^2.2.2"
ra-core "^3.4.1" ra-core "^3.4.0"
ra-language-english@^3.4.1: ra-language-english@^3.4.0:
version "3.4.1" version "3.4.0"
resolved "https://registry.yarnpkg.com/ra-language-english/-/ra-language-english-3.4.1.tgz#04a117d9991a2da32f313819041cac7aa2a6337c" resolved "https://registry.yarnpkg.com/ra-language-english/-/ra-language-english-3.4.0.tgz#1296dd9bd632f175e71f885c9bdbc06379b49d5a"
integrity sha512-bAoJyIGL3LJ/8hIvQ+gsHYlFKwgpOalQb3ZUdJReU+vAt52nQqN/3BxknxSMRFOxH0iMQk9k3B+EakDtiesH3Q== integrity sha512-H2ZapYrn4jPyj7/+aA2X4XUaXQ6t2y5gR8DlSsRZlkmlHVWcpUFlyG2gZCYTDAeVKXO5Dedgf09KlYLJ6p7p0w==
dependencies: dependencies:
ra-core "^3.4.1" ra-core "^3.4.0"
ra-language-german@^2.1.2: ra-language-german@^2.1.2:
version "2.1.2" version "2.1.2"
resolved "https://registry.yarnpkg.com/ra-language-german/-/ra-language-german-2.1.2.tgz#d183093d470ab499ece91838cb67222db88f2e4f" resolved "https://registry.yarnpkg.com/ra-language-german/-/ra-language-german-2.1.2.tgz#d183093d470ab499ece91838cb67222db88f2e4f"
integrity sha512-N+BaBP0z98ujaKVlAMIKTfWHgmTiWD8sPQrU5vA3+b5zY9U0mMB4VjvU8sQQPR7rZE0gsRgS/X4V6ycDtNL6iQ== integrity sha512-N+BaBP0z98ujaKVlAMIKTfWHgmTiWD8sPQrU5vA3+b5zY9U0mMB4VjvU8sQQPR7rZE0gsRgS/X4V6ycDtNL6iQ==
ra-ui-materialui@^3.4.2: ra-ui-materialui@^3.4.0:
version "3.4.2" version "3.4.0"
resolved "https://registry.yarnpkg.com/ra-ui-materialui/-/ra-ui-materialui-3.4.2.tgz#6ab59b44cbe351eee2afccfeb118ee3ea67db28d" resolved "https://registry.yarnpkg.com/ra-ui-materialui/-/ra-ui-materialui-3.4.0.tgz#9f3f573384ee8c8e91637627fb888bd51a4fd0b9"
integrity sha512-P1WigQJzIGeMy2jpAoMF0PlkDKZuufUEp/J0y9YFPumHvd5Dvzzz4XCytlL+362XkzgtxVWWH+WlX8CoYD3Y2w== integrity sha512-nV10aD4Z8ZgmZUcnfNTzAelQCxqdc5cG/KxyYvcqqV9j0oGBrqC9dr00bKLIBHc1oFTVvLwcdPd4p78tO6B+5g==
dependencies: dependencies:
autosuggest-highlight "^3.1.1" autosuggest-highlight "^3.1.1"
classnames "~2.2.5" classnames "~2.2.5"
@@ -9235,9 +9224,9 @@ raw-body@2.4.0:
unpipe "1.0.0" unpipe "1.0.0"
react-admin@^3.4.0: react-admin@^3.4.0:
version "3.4.2" version "3.4.0"
resolved "https://registry.yarnpkg.com/react-admin/-/react-admin-3.4.2.tgz#081a9f930e5822cf31c4cc747d058a9522f945e4" resolved "https://registry.yarnpkg.com/react-admin/-/react-admin-3.4.0.tgz#d2806d9bab6f1c73e4f065d6f339389dd8126195"
integrity sha512-C0YeuWgd1fskhOk9oG6uyZidw7IEd5MkQWBKahDOY4PW59dZk8hFSuRzkVkaF8B/c/2oM1kCGuVR5likYPrJEA== integrity sha512-tgxCAYPkoZa7LC8ImFU8pQVFf5ja4dbxtx4/bgCOYJ7/QbTYdwFhzwuhfspnzRWDO3Tvkx3VTiuObQuR+JIDug==
dependencies: dependencies:
"@material-ui/core" "^4.3.3" "@material-ui/core" "^4.3.3"
"@material-ui/icons" "^4.2.1" "@material-ui/icons" "^4.2.1"
@@ -9245,10 +9234,10 @@ react-admin@^3.4.0:
connected-react-router "^6.5.2" connected-react-router "^6.5.2"
final-form "^4.18.5" final-form "^4.18.5"
final-form-arrays "^3.0.1" final-form-arrays "^3.0.1"
ra-core "^3.4.1" ra-core "^3.4.0"
ra-i18n-polyglot "^3.4.1" ra-i18n-polyglot "^3.4.0"
ra-language-english "^3.4.1" ra-language-english "^3.4.0"
ra-ui-materialui "^3.4.2" ra-ui-materialui "^3.4.0"
react-final-form "^6.3.3" react-final-form "^6.3.3"
react-final-form-arrays "^3.1.1" react-final-form-arrays "^3.1.1"
react-redux "^7.1.0" react-redux "^7.1.0"
@@ -10565,9 +10554,9 @@ string.prototype.trim@^1.1.2, string.prototype.trim@^1.2.1:
function-bind "^1.1.1" function-bind "^1.1.1"
string.prototype.trimend@^1.0.0: string.prototype.trimend@^1.0.0:
version "1.0.1" version "1.0.0"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373"
integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== integrity sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==
dependencies: dependencies:
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.17.5" es-abstract "^1.17.5"
@@ -10591,9 +10580,9 @@ string.prototype.trimright@^2.1.1:
string.prototype.trimend "^1.0.0" string.prototype.trimend "^1.0.0"
string.prototype.trimstart@^1.0.0: string.prototype.trimstart@^1.0.0:
version "1.0.1" version "1.0.0"
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2"
integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== integrity sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==
dependencies: dependencies:
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.17.5" es-abstract "^1.17.5"