@webiny/app-security-access-management 5.29.0 → 5.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
declare const _default: () => never[];
|
|
3
2
|
/**
|
|
4
3
|
* TODO @ts-refactor
|
|
5
4
|
* Find out why is there empty default export
|
|
6
5
|
*/
|
|
6
|
+
declare const _default: () => never[];
|
|
7
7
|
export default _default;
|
|
8
8
|
export declare const AccessManagementExtension: () => JSX.Element;
|
|
9
9
|
export declare const AccessManagement: React.MemoExoticComponent<() => JSX.Element>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-security-access-management",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.30.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@apollo/react-hooks": "3.1.5",
|
|
17
17
|
"@emotion/styled": "10.3.0",
|
|
18
|
-
"@webiny/app": "5.
|
|
19
|
-
"@webiny/app-admin": "5.
|
|
20
|
-
"@webiny/app-security": "5.
|
|
21
|
-
"@webiny/form": "5.
|
|
22
|
-
"@webiny/plugins": "5.
|
|
23
|
-
"@webiny/react-router": "5.
|
|
24
|
-
"@webiny/ui": "5.
|
|
25
|
-
"@webiny/validation": "5.
|
|
18
|
+
"@webiny/app": "5.30.0",
|
|
19
|
+
"@webiny/app-admin": "5.30.0",
|
|
20
|
+
"@webiny/app-security": "5.30.0",
|
|
21
|
+
"@webiny/form": "5.30.0",
|
|
22
|
+
"@webiny/plugins": "5.30.0",
|
|
23
|
+
"@webiny/react-router": "5.30.0",
|
|
24
|
+
"@webiny/ui": "5.30.0",
|
|
25
|
+
"@webiny/validation": "5.30.0",
|
|
26
26
|
"emotion": "10.0.27",
|
|
27
27
|
"graphql-tag": "2.12.6",
|
|
28
28
|
"lodash": "4.17.21",
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
"@babel/preset-react": "^7.16.0",
|
|
39
39
|
"@babel/preset-typescript": "^7.16.0",
|
|
40
40
|
"@types/react-helmet": "^6.1.5",
|
|
41
|
-
"@webiny/cli": "^5.
|
|
42
|
-
"@webiny/project-utils": "^5.
|
|
41
|
+
"@webiny/cli": "^5.30.0",
|
|
42
|
+
"@webiny/project-utils": "^5.30.0",
|
|
43
43
|
"babel-plugin-emotion": "^9.2.8",
|
|
44
44
|
"babel-plugin-lodash": "^3.3.4",
|
|
45
45
|
"rimraf": "^3.0.2",
|
|
46
46
|
"ttypescript": "^1.5.12",
|
|
47
|
-
"typescript": "4.
|
|
47
|
+
"typescript": "4.7.4"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
]
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "3cadc5d26e565586b28772afbc18ae554ce7b782"
|
|
65
65
|
}
|
|
@@ -222,7 +222,8 @@ var ApiKeyForm = function ApiKeyForm() {
|
|
|
222
222
|
name: "name",
|
|
223
223
|
validators: _validation.validation.create("required")
|
|
224
224
|
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
225
|
-
label: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Name"])))
|
|
225
|
+
label: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Name"]))),
|
|
226
|
+
"data-testid": "sam.key.new.form.name"
|
|
226
227
|
})))), /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
227
228
|
span: 12
|
|
228
229
|
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
@@ -230,7 +231,8 @@ var ApiKeyForm = function ApiKeyForm() {
|
|
|
230
231
|
validators: _validation.validation.create("required")
|
|
231
232
|
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
232
233
|
label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Description"]))),
|
|
233
|
-
rows: 4
|
|
234
|
+
rows: 4,
|
|
235
|
+
"data-testid": "sam.key.new.form.description"
|
|
234
236
|
})))), /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
235
237
|
span: 12
|
|
236
238
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
@@ -272,11 +274,13 @@ var ApiKeyForm = function ApiKeyForm() {
|
|
|
272
274
|
})))), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormFooter, null, /*#__PURE__*/_react.default.createElement(ButtonWrapper, null, /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
|
|
273
275
|
onClick: function onClick() {
|
|
274
276
|
return history.push("/access-management/api-keys");
|
|
275
|
-
}
|
|
277
|
+
},
|
|
278
|
+
"data-testid": "sam.key.new.form.button.cancel"
|
|
276
279
|
}, t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Cancel"])))), /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
|
|
277
280
|
onClick: function onClick(ev) {
|
|
278
281
|
form.submit(ev);
|
|
279
|
-
}
|
|
282
|
+
},
|
|
283
|
+
"data-testid": "sam.key.new.form.button.save"
|
|
280
284
|
}, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Save API key"])))))));
|
|
281
285
|
});
|
|
282
286
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","ButtonWrapper","styled","display","justifyContent","ApiKeyForm","useRouter","location","history","useSnackbar","showSnackbar","newEntry","URLSearchParams","search","get","id","getQuery","useQuery","GQL","READ_API_KEY","variables","skip","onCompleted","data","error","security","apiKey","push","message","useMutation","CREATE_API_KEY","refetchQueries","query","LIST_API_KEYS","create","createMutation","UPDATE_API_KEY","update","updateMutation","loading","find","item","onSubmit","useCallback","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","pickDataForAPI","operation","args","response","showEmptyView","isEmpty","form","Bind","name","validation","token","background","padding","paddingLeft","lineHeight","verticalAlign","position","right","bind","ev","submit"],"sources":["ApiKeyForm.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary, CopyButton } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { Permissions } from \"@webiny/app-admin/components/Permissions\";\nimport { validation } from \"@webiny/validation\";\nimport {\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { pickDataForAPI } from \"./utils\";\nimport * as GQL from \"./graphql\";\nimport { SnackbarAction } from \"@webiny/ui/Snackbar\";\nimport isEmpty from \"lodash/isEmpty\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport styled from \"@emotion/styled\";\nimport { ApiKey } from \"~/types\";\n\nconst t = i18n.ns(\"app-security-admin-users/admin/api-keys/form\");\n\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\nexport interface ApiKeyFormProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const ApiKeyForm: React.FC<ApiKeyFormProps> = () => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const newEntry = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery(GQL.READ_API_KEY, {\n variables: { id },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.security.apiKey;\n if (error) {\n history.push(\"/access-management/api-keys\");\n showSnackbar(error.message);\n }\n }\n });\n\n const [create, createMutation] = useMutation(GQL.CREATE_API_KEY, {\n refetchQueries: [{ query: GQL.LIST_API_KEYS }]\n });\n\n const [update, updateMutation] = useMutation(GQL.UPDATE_API_KEY, {\n refetchQueries: [{ query: GQL.LIST_API_KEYS }]\n });\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const onSubmit = useCallback(\n async data => {\n if (!data.permissions || !data.permissions.length) {\n showSnackbar(t`You must configure permissions before saving!`, {\n timeout: 60000,\n dismissesOnAction: true,\n action: <SnackbarAction label={\"OK\"} />\n });\n return;\n }\n\n const isUpdate = data.createdOn;\n const [operation, args] = isUpdate\n ? [update, { variables: { id: data.id, data: pickDataForAPI(data) } }]\n : [create, { variables: { data: pickDataForAPI(data) } }];\n\n const response = await operation(args);\n\n const { error } = response.data.security.apiKey;\n if (error) {\n return showSnackbar(error.message);\n }\n\n const { id } = response.data.security.apiKey.data;\n\n !isUpdate && history.push(`/access-management/api-keys?id=${id}`);\n showSnackbar(t`API key saved successfully.`);\n },\n [id]\n );\n\n const data: ApiKey[] = get(getQuery, \"data.security.apiKey.data\", {});\n\n const showEmptyView = !newEntry && !loading && isEmpty(data);\n // Render \"No content\" selected view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display API key details or create a...`}\n action={\n <ButtonDefault\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/api-keys?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New API Key`}\n </ButtonDefault>\n }\n />\n );\n }\n\n return (\n <Form data={data} onSubmit={onSubmit}>\n {({ data, form, Bind }) => {\n return (\n <SimpleForm>\n {loading && <CircularProgress />}\n <SimpleFormHeader title={data.name ? data.name : \"Untitled\"} />\n <SimpleFormContent>\n <Grid>\n <Cell span={12}>\n <Bind name=\"name\" validators={validation.create(\"required\")}>\n <Input label={t`Name`} />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"description\"\n validators={validation.create(\"required\")}\n >\n <Input label={t`Description`} rows={4} />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <div>\n <Typography use={\"subtitle1\"}>{t`Token`}</Typography>\n {data.token ? (\n <div\n style={{\n background: \"var(--mdc-theme-background)\",\n padding: \"8px\",\n paddingLeft: \"16px\"\n }}\n >\n <span\n style={{\n lineHeight: \"48px\",\n verticalAlign: \"middle\"\n }}\n >\n {data.token}\n </span>\n <span\n style={{ position: \"absolute\", right: \"32px\" }}\n >\n <CopyButton\n value={data.token}\n onCopy={() =>\n showSnackbar(\"Successfully copied!\")\n }\n />\n </span>\n </div>\n ) : (\n <FormElementMessage>\n Your token will be shown once you submit the form.\n </FormElementMessage>\n )}\n </div>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Typography use={\"subtitle1\"}>{t`Permissions`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"permissions\"} defaultValue={[]}>\n {bind => <Permissions id={data.id || \"new\"} {...bind} />}\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/access-management/api-keys\")}\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >{t`Save API key`}</ButtonPrimary>\n </ButtonWrapper>\n </SimpleFormFooter>\n </SimpleForm>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","ButtonWrapper","styled","display","justifyContent","ApiKeyForm","useRouter","location","history","useSnackbar","showSnackbar","newEntry","URLSearchParams","search","get","id","getQuery","useQuery","GQL","READ_API_KEY","variables","skip","onCompleted","data","error","security","apiKey","push","message","useMutation","CREATE_API_KEY","refetchQueries","query","LIST_API_KEYS","create","createMutation","UPDATE_API_KEY","update","updateMutation","loading","find","item","onSubmit","useCallback","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","pickDataForAPI","operation","args","response","showEmptyView","isEmpty","form","Bind","name","validation","token","background","padding","paddingLeft","lineHeight","verticalAlign","position","right","bind","ev","submit"],"sources":["ApiKeyForm.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary, CopyButton } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { Permissions } from \"@webiny/app-admin/components/Permissions\";\nimport { validation } from \"@webiny/validation\";\nimport {\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { pickDataForAPI } from \"./utils\";\nimport * as GQL from \"./graphql\";\nimport { SnackbarAction } from \"@webiny/ui/Snackbar\";\nimport isEmpty from \"lodash/isEmpty\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport styled from \"@emotion/styled\";\nimport { ApiKey } from \"~/types\";\n\nconst t = i18n.ns(\"app-security-admin-users/admin/api-keys/form\");\n\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\nexport interface ApiKeyFormProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const ApiKeyForm: React.FC<ApiKeyFormProps> = () => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const newEntry = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery(GQL.READ_API_KEY, {\n variables: { id },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.security.apiKey;\n if (error) {\n history.push(\"/access-management/api-keys\");\n showSnackbar(error.message);\n }\n }\n });\n\n const [create, createMutation] = useMutation(GQL.CREATE_API_KEY, {\n refetchQueries: [{ query: GQL.LIST_API_KEYS }]\n });\n\n const [update, updateMutation] = useMutation(GQL.UPDATE_API_KEY, {\n refetchQueries: [{ query: GQL.LIST_API_KEYS }]\n });\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const onSubmit = useCallback(\n async data => {\n if (!data.permissions || !data.permissions.length) {\n showSnackbar(t`You must configure permissions before saving!`, {\n timeout: 60000,\n dismissesOnAction: true,\n action: <SnackbarAction label={\"OK\"} />\n });\n return;\n }\n\n const isUpdate = data.createdOn;\n const [operation, args] = isUpdate\n ? [update, { variables: { id: data.id, data: pickDataForAPI(data) } }]\n : [create, { variables: { data: pickDataForAPI(data) } }];\n\n const response = await operation(args);\n\n const { error } = response.data.security.apiKey;\n if (error) {\n return showSnackbar(error.message);\n }\n\n const { id } = response.data.security.apiKey.data;\n\n !isUpdate && history.push(`/access-management/api-keys?id=${id}`);\n showSnackbar(t`API key saved successfully.`);\n },\n [id]\n );\n\n const data: ApiKey[] = get(getQuery, \"data.security.apiKey.data\", {});\n\n const showEmptyView = !newEntry && !loading && isEmpty(data);\n // Render \"No content\" selected view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display API key details or create a...`}\n action={\n <ButtonDefault\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/api-keys?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New API Key`}\n </ButtonDefault>\n }\n />\n );\n }\n\n return (\n <Form data={data} onSubmit={onSubmit}>\n {({ data, form, Bind }) => {\n return (\n <SimpleForm>\n {loading && <CircularProgress />}\n <SimpleFormHeader title={data.name ? data.name : \"Untitled\"} />\n <SimpleFormContent>\n <Grid>\n <Cell span={12}>\n <Bind name=\"name\" validators={validation.create(\"required\")}>\n <Input\n label={t`Name`}\n data-testid=\"sam.key.new.form.name\"\n />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"description\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`Description`}\n rows={4}\n data-testid=\"sam.key.new.form.description\"\n />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <div>\n <Typography use={\"subtitle1\"}>{t`Token`}</Typography>\n {data.token ? (\n <div\n style={{\n background: \"var(--mdc-theme-background)\",\n padding: \"8px\",\n paddingLeft: \"16px\"\n }}\n >\n <span\n style={{\n lineHeight: \"48px\",\n verticalAlign: \"middle\"\n }}\n >\n {data.token}\n </span>\n <span\n style={{ position: \"absolute\", right: \"32px\" }}\n >\n <CopyButton\n value={data.token}\n onCopy={() =>\n showSnackbar(\"Successfully copied!\")\n }\n />\n </span>\n </div>\n ) : (\n <FormElementMessage>\n Your token will be shown once you submit the form.\n </FormElementMessage>\n )}\n </div>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Typography use={\"subtitle1\"}>{t`Permissions`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"permissions\"} defaultValue={[]}>\n {bind => <Permissions id={data.id || \"new\"} {...bind} />}\n </Bind>\n </Cell>\n </Grid>\n </SimpleFormContent>\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/access-management/api-keys\")}\n data-testid=\"sam.key.new.form.button.cancel\"\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n data-testid=\"sam.key.new.form.button.save\"\n >{t`Save API key`}</ButtonPrimary>\n </ButtonWrapper>\n </SimpleFormFooter>\n </SimpleForm>\n );\n }}\n </Form>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAGA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,8CAAR,CAAV;;AAEA,IAAMC,aAAa,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EAChCC,OAAO,EAAE,MADuB;EAEhCC,cAAc,EAAE;AAFgB,CAAjB,CAAnB;;AAQO,IAAMC,UAAqC,GAAG,SAAxCA,UAAwC,GAAM;EACvD,iBAA8B,IAAAC,sBAAA,GAA9B;EAAA,IAAQC,QAAR,cAAQA,QAAR;EAAA,IAAkBC,OAAlB,cAAkBA,OAAlB;;EACA,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR;;EACA,IAAMC,QAAQ,GAAG,IAAIC,eAAJ,CAAoBL,QAAQ,CAACM,MAA7B,EAAqCC,GAArC,CAAyC,KAAzC,MAAoD,MAArE;EACA,IAAMC,EAAE,GAAG,IAAIH,eAAJ,CAAoBL,QAAQ,CAACM,MAA7B,EAAqCC,GAArC,CAAyC,IAAzC,CAAX;EAEA,IAAME,QAAQ,GAAG,IAAAC,oBAAA,EAASC,GAAG,CAACC,YAAb,EAA2B;IACxCC,SAAS,EAAE;MAAEL,EAAE,EAAFA;IAAF,CAD6B;IAExCM,IAAI,EAAE,CAACN,EAFiC;IAGxCO,WAAW,EAAE,qBAAAC,IAAI,EAAI;MACjB,IAAI,CAACA,IAAL,EAAW;QACP;MACH;;MAED,IAAQC,KAAR,GAAkBD,IAAI,CAACE,QAAL,CAAcC,MAAhC,CAAQF,KAAR;;MACA,IAAIA,KAAJ,EAAW;QACPhB,OAAO,CAACmB,IAAR,CAAa,6BAAb;QACAjB,YAAY,CAACc,KAAK,CAACI,OAAP,CAAZ;MACH;IACJ;EAbuC,CAA3B,CAAjB;;EAgBA,mBAAiC,IAAAC,uBAAA,EAAYX,GAAG,CAACY,cAAhB,EAAgC;IAC7DC,cAAc,EAAE,CAAC;MAAEC,KAAK,EAAEd,GAAG,CAACe;IAAb,CAAD;EAD6C,CAAhC,CAAjC;EAAA;EAAA,IAAOC,MAAP;EAAA,IAAeC,cAAf;;EAIA,oBAAiC,IAAAN,uBAAA,EAAYX,GAAG,CAACkB,cAAhB,EAAgC;IAC7DL,cAAc,EAAE,CAAC;MAAEC,KAAK,EAAEd,GAAG,CAACe;IAAb,CAAD;EAD6C,CAAhC,CAAjC;EAAA;EAAA,IAAOI,MAAP;EAAA,IAAeC,cAAf;;EAIA,IAAMC,OAAO,GAAG,CAACvB,QAAD,EAAWmB,cAAX,EAA2BG,cAA3B,EAA2CE,IAA3C,CAAgD,UAAAC,IAAI;IAAA,OAAIA,IAAI,CAACF,OAAT;EAAA,CAApD,CAAhB;EAEA,IAAMG,QAAQ,GAAG,IAAAC,kBAAA;IAAA,kGACb,iBAAMpB,IAAN;MAAA;;MAAA;QAAA;UAAA;YAAA;cAAA,MACQ,CAACA,IAAI,CAACqB,WAAN,IAAqB,CAACrB,IAAI,CAACqB,WAAL,CAAiBC,MAD/C;gBAAA;gBAAA;cAAA;;cAEQnC,YAAY,CAACZ,CAAD,kIAAmD;gBAC3DgD,OAAO,EAAE,KADkD;gBAE3DC,iBAAiB,EAAE,IAFwC;gBAG3DC,MAAM,eAAE,6BAAC,wBAAD;kBAAgB,KAAK,EAAE;gBAAvB;cAHmD,CAAnD,CAAZ;cAFR;;YAAA;cAUUC,QAVV,GAUqB1B,IAAI,CAAC2B,SAV1B;cAAA,QAW8BD,QAAQ,GAC5B,CAACZ,MAAD,EAAS;gBAAEjB,SAAS,EAAE;kBAAEL,EAAE,EAAEQ,IAAI,CAACR,EAAX;kBAAeQ,IAAI,EAAE,IAAA4B,qBAAA,EAAe5B,IAAf;gBAArB;cAAb,CAAT,CAD4B,GAE5B,CAACW,MAAD,EAAS;gBAAEd,SAAS,EAAE;kBAAEG,IAAI,EAAE,IAAA4B,qBAAA,EAAe5B,IAAf;gBAAR;cAAb,CAAT,CAbV,kDAWW6B,SAXX,aAWsBC,IAXtB;cAAA;cAAA,OAe2BD,SAAS,CAACC,IAAD,CAfpC;;YAAA;cAeUC,QAfV;cAiBY9B,KAjBZ,GAiBsB8B,QAAQ,CAAC/B,IAAT,CAAcE,QAAd,CAAuBC,MAjB7C,CAiBYF,KAjBZ;;cAAA,KAkBQA,KAlBR;gBAAA;gBAAA;cAAA;;cAAA,iCAmBed,YAAY,CAACc,KAAK,CAACI,OAAP,CAnB3B;;YAAA;cAsBYb,EAtBZ,GAsBmBuC,QAAQ,CAAC/B,IAAT,CAAcE,QAAd,CAAuBC,MAAvB,CAA8BH,IAtBjD,CAsBYR,EAtBZ;cAwBI,CAACkC,QAAD,IAAazC,OAAO,CAACmB,IAAR,0CAA+CZ,EAA/C,EAAb;cACAL,YAAY,CAACZ,CAAD,iHAAZ;;YAzBJ;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CADa;;IAAA;MAAA;IAAA;EAAA,KA4Bb,CAACiB,EAAD,CA5Ba,CAAjB;EA+BA,IAAMQ,IAAc,GAAG,IAAAT,YAAA,EAAIE,QAAJ,EAAc,2BAAd,EAA2C,EAA3C,CAAvB;EAEA,IAAMuC,aAAa,GAAG,CAAC5C,QAAD,IAAa,CAAC4B,OAAd,IAAyB,IAAAiB,gBAAA,EAAQjC,IAAR,CAA/C,CAjEuD,CAkEvD;;EACA,IAAIgC,aAAJ,EAAmB;IACf,oBACI,6BAAC,kBAAD;MACI,KAAK,EAAEzD,CAAF,0JADT;MAEI,MAAM,eACF,6BAAC,qBAAD;QACI,eAAY,mBADhB;QAEI,OAAO,EAAE;UAAA,OAAMU,OAAO,CAACmB,IAAR,CAAa,sCAAb,CAAN;QAAA;MAFb,gBAII,6BAAC,kBAAD;QAAY,IAAI,eAAE,6BAAC,uBAAD;MAAlB,EAJJ,OAIuC7B,CAJvC;IAHR,EADJ;EAaH;;EAED,oBACI,6BAAC,UAAD;IAAM,IAAI,EAAEyB,IAAZ;IAAkB,QAAQ,EAAEmB;EAA5B,GACK,iBAA0B;IAAA,IAAvBnB,IAAuB,SAAvBA,IAAuB;IAAA,IAAjBkC,IAAiB,SAAjBA,IAAiB;IAAA,IAAXC,IAAW,SAAXA,IAAW;IACvB,oBACI,6BAAC,sBAAD,QACKnB,OAAO,iBAAI,6BAAC,0BAAD,OADhB,eAEI,6BAAC,4BAAD;MAAkB,KAAK,EAAEhB,IAAI,CAACoC,IAAL,GAAYpC,IAAI,CAACoC,IAAjB,GAAwB;IAAjD,EAFJ,eAGI,6BAAC,6BAAD,qBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MAAM,IAAI,EAAC,MAAX;MAAkB,UAAU,EAAEC,sBAAA,CAAW1B,MAAX,CAAkB,UAAlB;IAA9B,gBACI,6BAAC,YAAD;MACI,KAAK,EAAEpC,CAAF,yFADT;MAEI,eAAY;IAFhB,EADJ,CADJ,CADJ,CADJ,eAWI,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MACI,IAAI,EAAC,aADT;MAEI,UAAU,EAAE8D,sBAAA,CAAW1B,MAAX,CAAkB,UAAlB;IAFhB,gBAII,6BAAC,YAAD;MACI,KAAK,EAAEpC,CAAF,gGADT;MAEI,IAAI,EAAE,CAFV;MAGI,eAAY;IAHhB,EAJJ,CADJ,CADJ,CAXJ,eAyBI,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,uDACI,6BAAC,sBAAD;MAAY,GAAG,EAAE;IAAjB,GAA+BA,CAA/B,2FADJ,EAEKyB,IAAI,CAACsC,KAAL,gBACG;MACI,KAAK,EAAE;QACHC,UAAU,EAAE,6BADT;QAEHC,OAAO,EAAE,KAFN;QAGHC,WAAW,EAAE;MAHV;IADX,gBAOI;MACI,KAAK,EAAE;QACHC,UAAU,EAAE,MADT;QAEHC,aAAa,EAAE;MAFZ;IADX,GAMK3C,IAAI,CAACsC,KANV,CAPJ,eAeI;MACI,KAAK,EAAE;QAAEM,QAAQ,EAAE,UAAZ;QAAwBC,KAAK,EAAE;MAA/B;IADX,gBAGI,6BAAC,kBAAD;MACI,KAAK,EAAE7C,IAAI,CAACsC,KADhB;MAEI,MAAM,EAAE;QAAA,OACJnD,YAAY,CAAC,sBAAD,CADR;MAAA;IAFZ,EAHJ,CAfJ,CADH,gBA4BG,6BAAC,sCAAD,6DA9BR,CADJ,CADJ,CAzBJ,eAgEI,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,sBAAD;MAAY,GAAG,EAAE;IAAjB,GAA+BZ,CAA/B,iGADJ,CADJ,eAII,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MAAM,IAAI,EAAE,aAAZ;MAA2B,YAAY,EAAE;IAAzC,GACK,UAAAuE,IAAI;MAAA,oBAAI,6BAAC,wBAAD;QAAa,EAAE,EAAE9C,IAAI,CAACR,EAAL,IAAW;MAA5B,GAAuCsD,IAAvC,EAAJ;IAAA,CADT,CADJ,CAJJ,CAhEJ,CAHJ,eA8EI,6BAAC,4BAAD,qBACI,6BAAC,aAAD,qBACI,6BAAC,qBAAD;MACI,OAAO,EAAE;QAAA,OAAM7D,OAAO,CAACmB,IAAR,CAAa,6BAAb,CAAN;MAAA,CADb;MAEI,eAAY;IAFhB,GAGE7B,CAHF,4FADJ,eAKI,6BAAC,qBAAD;MACI,OAAO,EAAE,iBAAAwE,EAAE,EAAI;QACXb,IAAI,CAACc,MAAL,CAAYD,EAAZ;MACH,CAHL;MAII,eAAY;IAJhB,GAKExE,CALF,oGALJ,CADJ,CA9EJ,CADJ;EA+FH,CAjGL,CADJ;AAqGH,CAxLM"}
|
|
@@ -223,7 +223,8 @@ var GroupsForm = function GroupsForm() {
|
|
|
223
223
|
validators: _validation.validation.create("required,minLength:3")
|
|
224
224
|
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
225
225
|
label: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Name"]))),
|
|
226
|
-
disabled: systemGroup
|
|
226
|
+
disabled: systemGroup,
|
|
227
|
+
"data-testid": "admin.am.group.new.name"
|
|
227
228
|
}))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
228
229
|
span: 6
|
|
229
230
|
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
@@ -231,7 +232,8 @@ var GroupsForm = function GroupsForm() {
|
|
|
231
232
|
validators: _validation.validation.create("required,minLength:3")
|
|
232
233
|
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
233
234
|
disabled: Boolean(data.id),
|
|
234
|
-
label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Slug"])))
|
|
235
|
+
label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Slug"]))),
|
|
236
|
+
"data-testid": "admin.am.group.new.slug"
|
|
235
237
|
})))), /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
236
238
|
span: 12
|
|
237
239
|
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
@@ -240,7 +242,8 @@ var GroupsForm = function GroupsForm() {
|
|
|
240
242
|
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
241
243
|
label: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Description"]))),
|
|
242
244
|
rows: 3,
|
|
243
|
-
disabled: systemGroup
|
|
245
|
+
disabled: systemGroup,
|
|
246
|
+
"data-testid": "admin.am.group.new.description"
|
|
244
247
|
})))), systemGroup && /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
245
248
|
span: 12
|
|
246
249
|
}, /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
|
|
@@ -264,6 +267,7 @@ var GroupsForm = function GroupsForm() {
|
|
|
264
267
|
return history.push("/access-management/groups");
|
|
265
268
|
}
|
|
266
269
|
}, t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Cancel"])))), /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
|
|
270
|
+
"data-testid": "admin.am.group.new.save",
|
|
267
271
|
onClick: function onClick(ev) {
|
|
268
272
|
form.submit(ev);
|
|
269
273
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["t","i18n","ns","ButtonWrapper","styled","display","justifyContent","GroupsForm","useRouter","location","history","useSnackbar","showSnackbar","newGroup","URLSearchParams","search","get","id","getQuery","useQuery","READ_GROUP","variables","skip","onCompleted","data","error","security","group","push","message","useMutation","CREATE_GROUP","refetchQueries","query","LIST_GROUPS","create","createMutation","UPDATE_GROUP","update","updateMutation","loading","find","item","onSubmit","useCallback","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","pick","operation","args","response","systemGroup","slug","showEmptyView","isEmpty","form","Bind","name","validation","Boolean","bind","ev","submit"],"sources":["GroupsForm.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport styled from \"@emotion/styled\";\nimport pick from \"lodash/pick\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { validation } from \"@webiny/validation\";\nimport {\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Permissions } from \"@webiny/app-admin/components/Permissions\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CREATE_GROUP, LIST_GROUPS, READ_GROUP, UPDATE_GROUP } from \"./graphql\";\nimport { SnackbarAction } from \"@webiny/ui/Snackbar\";\nimport isEmpty from \"lodash/isEmpty\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\n\nconst t = i18n.ns(\"app-security/admin/groups/form\");\n\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\nexport interface GroupsFormProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const GroupsForm: React.FC<GroupsFormProps> = () => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const newGroup = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery(READ_GROUP, {\n variables: { id },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.security.group;\n if (error) {\n history.push(\"/access-management/groups\");\n showSnackbar(error.message);\n }\n }\n });\n\n const [create, createMutation] = useMutation(CREATE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const [update, updateMutation] = useMutation(UPDATE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const onSubmit = useCallback(\n async data => {\n if (!data.permissions || !data.permissions.length) {\n showSnackbar(t`You must configure permissions before saving!`, {\n timeout: 60000,\n dismissesOnAction: true,\n action: <SnackbarAction label={\"OK\"} />\n });\n return;\n }\n\n const isUpdate = data.createdOn;\n const [operation, args] = isUpdate\n ? [\n update,\n {\n variables: {\n id: data.id,\n data: pick(data, [\"name\", \"description\", \"permissions\"])\n }\n }\n ]\n : [\n create,\n {\n variables: {\n data: pick(data, [\"name\", \"slug\", \"description\", \"permissions\"])\n }\n }\n ];\n\n const response = await operation(args);\n\n const { data: group, error } = response.data.security.group;\n if (error) {\n return showSnackbar(error.message);\n }\n\n !isUpdate && history.push(`/access-management/groups?id=${group.id}`);\n showSnackbar(t`Group saved successfully!`);\n },\n [id]\n );\n\n const data = loading ? {} : get(getQuery, \"data.security.group.data\", {});\n\n const systemGroup = data.slug === \"full-access\";\n\n const showEmptyView = !newGroup && !loading && isEmpty(data);\n // Render \"No content\" selected view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display group details or create a...`}\n action={\n <ButtonDefault\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} />\n {t`New Group`}\n </ButtonDefault>\n }\n />\n );\n }\n\n return (\n <Form data={data} onSubmit={onSubmit}>\n {({ data, form, Bind }) => {\n return (\n <SimpleForm>\n {loading && <CircularProgress />}\n <SimpleFormHeader title={data.name ? data.name : \"Untitled\"} />\n <SimpleFormContent>\n <Grid>\n <Cell span={6}>\n <Bind\n name=\"name\"\n validators={validation.create(\"required,minLength:3\")}\n >\n <Input label={t`Name`} disabled={systemGroup} />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind\n name=\"slug\"\n validators={validation.create(\"required,minLength:3\")}\n >\n <Input disabled={Boolean(data.id)} label={t`Slug`} />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"description\"\n validators={validation.create(\"maxLength:500\")}\n >\n <Input\n label={t`Description`}\n rows={3}\n disabled={systemGroup}\n />\n </Bind>\n </Cell>\n </Grid>\n {systemGroup && (\n <Grid>\n <Cell span={12}>\n <Alert type={\"info\"} title={\"Permissions are locked\"}>\n This is a protected system group and you can't\n modify its permissions.\n </Alert>\n </Cell>\n </Grid>\n )}\n {!systemGroup && (\n <Grid>\n <Cell span={12}>\n <Typography use={\"subtitle1\"}>{t`Permissions`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"permissions\"} defaultValue={[]}>\n {bind => (\n <Permissions id={data.id || \"new\"} {...bind} />\n )}\n </Bind>\n </Cell>\n </Grid>\n )}\n </SimpleFormContent>\n {systemGroup ? null : (\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/access-management/groups\")}\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n onClick={ev => {\n form.submit(ev);\n }}\n >{t`Save group`}</ButtonPrimary>\n </ButtonWrapper>\n </SimpleFormFooter>\n )}\n </SimpleForm>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["t","i18n","ns","ButtonWrapper","styled","display","justifyContent","GroupsForm","useRouter","location","history","useSnackbar","showSnackbar","newGroup","URLSearchParams","search","get","id","getQuery","useQuery","READ_GROUP","variables","skip","onCompleted","data","error","security","group","push","message","useMutation","CREATE_GROUP","refetchQueries","query","LIST_GROUPS","create","createMutation","UPDATE_GROUP","update","updateMutation","loading","find","item","onSubmit","useCallback","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","pick","operation","args","response","systemGroup","slug","showEmptyView","isEmpty","form","Bind","name","validation","Boolean","bind","ev","submit"],"sources":["GroupsForm.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport styled from \"@emotion/styled\";\nimport pick from \"lodash/pick\";\nimport get from \"lodash/get\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { Form } from \"@webiny/form\";\nimport { Grid, Cell } from \"@webiny/ui/Grid\";\nimport { Input } from \"@webiny/ui/Input\";\nimport { Alert } from \"@webiny/ui/Alert\";\nimport { ButtonDefault, ButtonIcon, ButtonPrimary } from \"@webiny/ui/Button\";\nimport { CircularProgress } from \"@webiny/ui/Progress\";\nimport { validation } from \"@webiny/validation\";\nimport {\n SimpleForm,\n SimpleFormFooter,\n SimpleFormContent,\n SimpleFormHeader\n} from \"@webiny/app-admin/components/SimpleForm\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { Permissions } from \"@webiny/app-admin/components/Permissions\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { CREATE_GROUP, LIST_GROUPS, READ_GROUP, UPDATE_GROUP } from \"./graphql\";\nimport { SnackbarAction } from \"@webiny/ui/Snackbar\";\nimport isEmpty from \"lodash/isEmpty\";\nimport EmptyView from \"@webiny/app-admin/components/EmptyView\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\n\nconst t = i18n.ns(\"app-security/admin/groups/form\");\n\nconst ButtonWrapper = styled(\"div\")({\n display: \"flex\",\n justifyContent: \"space-between\"\n});\n\nexport interface GroupsFormProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const GroupsForm: React.FC<GroupsFormProps> = () => {\n const { location, history } = useRouter();\n const { showSnackbar } = useSnackbar();\n const newGroup = new URLSearchParams(location.search).get(\"new\") === \"true\";\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const getQuery = useQuery(READ_GROUP, {\n variables: { id },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.security.group;\n if (error) {\n history.push(\"/access-management/groups\");\n showSnackbar(error.message);\n }\n }\n });\n\n const [create, createMutation] = useMutation(CREATE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const [update, updateMutation] = useMutation(UPDATE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const loading = [getQuery, createMutation, updateMutation].find(item => item.loading);\n\n const onSubmit = useCallback(\n async data => {\n if (!data.permissions || !data.permissions.length) {\n showSnackbar(t`You must configure permissions before saving!`, {\n timeout: 60000,\n dismissesOnAction: true,\n action: <SnackbarAction label={\"OK\"} />\n });\n return;\n }\n\n const isUpdate = data.createdOn;\n const [operation, args] = isUpdate\n ? [\n update,\n {\n variables: {\n id: data.id,\n data: pick(data, [\"name\", \"description\", \"permissions\"])\n }\n }\n ]\n : [\n create,\n {\n variables: {\n data: pick(data, [\"name\", \"slug\", \"description\", \"permissions\"])\n }\n }\n ];\n\n const response = await operation(args);\n\n const { data: group, error } = response.data.security.group;\n if (error) {\n return showSnackbar(error.message);\n }\n\n !isUpdate && history.push(`/access-management/groups?id=${group.id}`);\n showSnackbar(t`Group saved successfully!`);\n },\n [id]\n );\n\n const data = loading ? {} : get(getQuery, \"data.security.group.data\", {});\n\n const systemGroup = data.slug === \"full-access\";\n\n const showEmptyView = !newGroup && !loading && isEmpty(data);\n // Render \"No content\" selected view.\n if (showEmptyView) {\n return (\n <EmptyView\n title={t`Click on the left side list to display group details or create a...`}\n action={\n <ButtonDefault\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} />\n {t`New Group`}\n </ButtonDefault>\n }\n />\n );\n }\n\n return (\n <Form data={data} onSubmit={onSubmit}>\n {({ data, form, Bind }) => {\n return (\n <SimpleForm>\n {loading && <CircularProgress />}\n <SimpleFormHeader title={data.name ? data.name : \"Untitled\"} />\n <SimpleFormContent>\n <Grid>\n <Cell span={6}>\n <Bind\n name=\"name\"\n validators={validation.create(\"required,minLength:3\")}\n >\n <Input\n label={t`Name`}\n disabled={systemGroup}\n data-testid=\"admin.am.group.new.name\"\n />\n </Bind>\n </Cell>\n <Cell span={6}>\n <Bind\n name=\"slug\"\n validators={validation.create(\"required,minLength:3\")}\n >\n <Input\n disabled={Boolean(data.id)}\n label={t`Slug`}\n data-testid=\"admin.am.group.new.slug\"\n />\n </Bind>\n </Cell>\n </Grid>\n <Grid>\n <Cell span={12}>\n <Bind\n name=\"description\"\n validators={validation.create(\"maxLength:500\")}\n >\n <Input\n label={t`Description`}\n rows={3}\n disabled={systemGroup}\n data-testid=\"admin.am.group.new.description\"\n />\n </Bind>\n </Cell>\n </Grid>\n {systemGroup && (\n <Grid>\n <Cell span={12}>\n <Alert type={\"info\"} title={\"Permissions are locked\"}>\n This is a protected system group and you can't\n modify its permissions.\n </Alert>\n </Cell>\n </Grid>\n )}\n {!systemGroup && (\n <Grid>\n <Cell span={12}>\n <Typography use={\"subtitle1\"}>{t`Permissions`}</Typography>\n </Cell>\n <Cell span={12}>\n <Bind name={\"permissions\"} defaultValue={[]}>\n {bind => (\n <Permissions id={data.id || \"new\"} {...bind} />\n )}\n </Bind>\n </Cell>\n </Grid>\n )}\n </SimpleFormContent>\n {systemGroup ? null : (\n <SimpleFormFooter>\n <ButtonWrapper>\n <ButtonDefault\n onClick={() => history.push(\"/access-management/groups\")}\n >{t`Cancel`}</ButtonDefault>\n <ButtonPrimary\n data-testid=\"admin.am.group.new.save\"\n onClick={ev => {\n form.submit(ev);\n }}\n >{t`Save group`}</ButtonPrimary>\n </ButtonWrapper>\n </SimpleFormFooter>\n )}\n </SimpleForm>\n );\n }}\n </Form>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,gCAAR,CAAV;;AAEA,IAAMC,aAAa,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EAChCC,OAAO,EAAE,MADuB;EAEhCC,cAAc,EAAE;AAFgB,CAAjB,CAAnB;;AASO,IAAMC,UAAqC,GAAG,SAAxCA,UAAwC,GAAM;EACvD,iBAA8B,IAAAC,sBAAA,GAA9B;EAAA,IAAQC,QAAR,cAAQA,QAAR;EAAA,IAAkBC,OAAlB,cAAkBA,OAAlB;;EACA,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR;;EACA,IAAMC,QAAQ,GAAG,IAAIC,eAAJ,CAAoBL,QAAQ,CAACM,MAA7B,EAAqCC,GAArC,CAAyC,KAAzC,MAAoD,MAArE;EACA,IAAMC,EAAE,GAAG,IAAIH,eAAJ,CAAoBL,QAAQ,CAACM,MAA7B,EAAqCC,GAArC,CAAyC,IAAzC,CAAX;EAEA,IAAME,QAAQ,GAAG,IAAAC,oBAAA,EAASC,mBAAT,EAAqB;IAClCC,SAAS,EAAE;MAAEJ,EAAE,EAAFA;IAAF,CADuB;IAElCK,IAAI,EAAE,CAACL,EAF2B;IAGlCM,WAAW,EAAE,qBAAAC,IAAI,EAAI;MACjB,IAAI,CAACA,IAAL,EAAW;QACP;MACH;;MAED,IAAQC,KAAR,GAAkBD,IAAI,CAACE,QAAL,CAAcC,KAAhC,CAAQF,KAAR;;MACA,IAAIA,KAAJ,EAAW;QACPf,OAAO,CAACkB,IAAR,CAAa,2BAAb;QACAhB,YAAY,CAACa,KAAK,CAACI,OAAP,CAAZ;MACH;IACJ;EAbiC,CAArB,CAAjB;;EAgBA,mBAAiC,IAAAC,uBAAA,EAAYC,qBAAZ,EAA0B;IACvDC,cAAc,EAAE,CAAC;MAAEC,KAAK,EAAEC;IAAT,CAAD;EADuC,CAA1B,CAAjC;EAAA;EAAA,IAAOC,MAAP;EAAA,IAAeC,cAAf;;EAIA,oBAAiC,IAAAN,uBAAA,EAAYO,qBAAZ,EAA0B;IACvDL,cAAc,EAAE,CAAC;MAAEC,KAAK,EAAEC;IAAT,CAAD;EADuC,CAA1B,CAAjC;EAAA;EAAA,IAAOI,MAAP;EAAA,IAAeC,cAAf;;EAIA,IAAMC,OAAO,GAAG,CAACtB,QAAD,EAAWkB,cAAX,EAA2BG,cAA3B,EAA2CE,IAA3C,CAAgD,UAAAC,IAAI;IAAA,OAAIA,IAAI,CAACF,OAAT;EAAA,CAApD,CAAhB;EAEA,IAAMG,QAAQ,GAAG,IAAAC,kBAAA;IAAA,kGACb,iBAAMpB,IAAN;MAAA;;MAAA;QAAA;UAAA;YAAA;cAAA,MACQ,CAACA,IAAI,CAACqB,WAAN,IAAqB,CAACrB,IAAI,CAACqB,WAAL,CAAiBC,MAD/C;gBAAA;gBAAA;cAAA;;cAEQlC,YAAY,CAACZ,CAAD,kIAAmD;gBAC3D+C,OAAO,EAAE,KADkD;gBAE3DC,iBAAiB,EAAE,IAFwC;gBAG3DC,MAAM,eAAE,6BAAC,wBAAD;kBAAgB,KAAK,EAAE;gBAAvB;cAHmD,CAAnD,CAAZ;cAFR;;YAAA;cAUUC,QAVV,GAUqB1B,IAAI,CAAC2B,SAV1B;cAAA,QAW8BD,QAAQ,GAC5B,CACIZ,MADJ,EAEI;gBACIjB,SAAS,EAAE;kBACPJ,EAAE,EAAEO,IAAI,CAACP,EADF;kBAEPO,IAAI,EAAE,IAAA4B,aAAA,EAAK5B,IAAL,EAAW,CAAC,MAAD,EAAS,aAAT,EAAwB,aAAxB,CAAX;gBAFC;cADf,CAFJ,CAD4B,GAU5B,CACIW,MADJ,EAEI;gBACId,SAAS,EAAE;kBACPG,IAAI,EAAE,IAAA4B,aAAA,EAAK5B,IAAL,EAAW,CAAC,MAAD,EAAS,MAAT,EAAiB,aAAjB,EAAgC,aAAhC,CAAX;gBADC;cADf,CAFJ,CArBV,kDAWW6B,SAXX,aAWsBC,IAXtB;cAAA;cAAA,OA8B2BD,SAAS,CAACC,IAAD,CA9BpC;;YAAA;cA8BUC,QA9BV;cAAA,wBAgCmCA,QAAQ,CAAC/B,IAAT,CAAcE,QAAd,CAAuBC,KAhC1D,EAgCkBA,KAhClB,yBAgCYH,IAhCZ,EAgCyBC,KAhCzB,yBAgCyBA,KAhCzB;;cAAA,KAiCQA,KAjCR;gBAAA;gBAAA;cAAA;;cAAA,iCAkCeb,YAAY,CAACa,KAAK,CAACI,OAAP,CAlC3B;;YAAA;cAqCI,CAACqB,QAAD,IAAaxC,OAAO,CAACkB,IAAR,wCAA6CD,KAAK,CAACV,EAAnD,EAAb;cACAL,YAAY,CAACZ,CAAD,+GAAZ;;YAtCJ;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CADa;;IAAA;MAAA;IAAA;EAAA,KAyCb,CAACiB,EAAD,CAzCa,CAAjB;EA4CA,IAAMO,IAAI,GAAGgB,OAAO,GAAG,EAAH,GAAQ,IAAAxB,YAAA,EAAIE,QAAJ,EAAc,0BAAd,EAA0C,EAA1C,CAA5B;EAEA,IAAMsC,WAAW,GAAGhC,IAAI,CAACiC,IAAL,KAAc,aAAlC;EAEA,IAAMC,aAAa,GAAG,CAAC7C,QAAD,IAAa,CAAC2B,OAAd,IAAyB,IAAAmB,gBAAA,EAAQnC,IAAR,CAA/C,CAhFuD,CAiFvD;;EACA,IAAIkC,aAAJ,EAAmB;IACf,oBACI,6BAAC,kBAAD;MACI,KAAK,EAAE1D,CAAF,wJADT;MAEI,MAAM,eACF,6BAAC,qBAAD;QACI,eAAY,mBADhB;QAEI,OAAO,EAAE;UAAA,OAAMU,OAAO,CAACkB,IAAR,CAAa,oCAAb,CAAN;QAAA;MAFb,gBAII,6BAAC,kBAAD;QAAY,IAAI,eAAE,6BAAC,uBAAD;MAAlB,EAJJ,EAKK5B,CALL;IAHR,EADJ;EAcH;;EAED,oBACI,6BAAC,UAAD;IAAM,IAAI,EAAEwB,IAAZ;IAAkB,QAAQ,EAAEmB;EAA5B,GACK,iBAA0B;IAAA,IAAvBnB,IAAuB,SAAvBA,IAAuB;IAAA,IAAjBoC,IAAiB,SAAjBA,IAAiB;IAAA,IAAXC,IAAW,SAAXA,IAAW;IACvB,oBACI,6BAAC,sBAAD,QACKrB,OAAO,iBAAI,6BAAC,0BAAD,OADhB,eAEI,6BAAC,4BAAD;MAAkB,KAAK,EAAEhB,IAAI,CAACsC,IAAL,GAAYtC,IAAI,CAACsC,IAAjB,GAAwB;IAAjD,EAFJ,eAGI,6BAAC,6BAAD,qBACI,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MACI,IAAI,EAAC,MADT;MAEI,UAAU,EAAEC,sBAAA,CAAW5B,MAAX,CAAkB,sBAAlB;IAFhB,gBAII,6BAAC,YAAD;MACI,KAAK,EAAEnC,CAAF,yFADT;MAEI,QAAQ,EAAEwD,WAFd;MAGI,eAAY;IAHhB,EAJJ,CADJ,CADJ,eAaI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MACI,IAAI,EAAC,MADT;MAEI,UAAU,EAAEO,sBAAA,CAAW5B,MAAX,CAAkB,sBAAlB;IAFhB,gBAII,6BAAC,YAAD;MACI,QAAQ,EAAE6B,OAAO,CAACxC,IAAI,CAACP,EAAN,CADrB;MAEI,KAAK,EAAEjB,CAAF,yFAFT;MAGI,eAAY;IAHhB,EAJJ,CADJ,CAbJ,CADJ,eA2BI,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MACI,IAAI,EAAC,aADT;MAEI,UAAU,EAAE+D,sBAAA,CAAW5B,MAAX,CAAkB,eAAlB;IAFhB,gBAII,6BAAC,YAAD;MACI,KAAK,EAAEnC,CAAF,gGADT;MAEI,IAAI,EAAE,CAFV;MAGI,QAAQ,EAAEwD,WAHd;MAII,eAAY;IAJhB,EAJJ,CADJ,CADJ,CA3BJ,EA0CKA,WAAW,iBACR,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,YAAD;MAAO,IAAI,EAAE,MAAb;MAAqB,KAAK,EAAE;IAA5B,4EADJ,CADJ,CA3CR,EAoDK,CAACA,WAAD,iBACG,6BAAC,UAAD,qBACI,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,sBAAD;MAAY,GAAG,EAAE;IAAjB,GAA+BxD,CAA/B,iGADJ,CADJ,eAII,6BAAC,UAAD;MAAM,IAAI,EAAE;IAAZ,gBACI,6BAAC,IAAD;MAAM,IAAI,EAAE,aAAZ;MAA2B,YAAY,EAAE;IAAzC,GACK,UAAAiE,IAAI;MAAA,oBACD,6BAAC,wBAAD;QAAa,EAAE,EAAEzC,IAAI,CAACP,EAAL,IAAW;MAA5B,GAAuCgD,IAAvC,EADC;IAAA,CADT,CADJ,CAJJ,CArDR,CAHJ,EAsEKT,WAAW,GAAG,IAAH,gBACR,6BAAC,4BAAD,qBACI,6BAAC,aAAD,qBACI,6BAAC,qBAAD;MACI,OAAO,EAAE;QAAA,OAAM9C,OAAO,CAACkB,IAAR,CAAa,2BAAb,CAAN;MAAA;IADb,GAEE5B,CAFF,4FADJ,eAII,6BAAC,qBAAD;MACI,eAAY,yBADhB;MAEI,OAAO,EAAE,iBAAAkE,EAAE,EAAI;QACXN,IAAI,CAACO,MAAL,CAAYD,EAAZ;MACH;IAJL,GAKElE,CALF,kGAJJ,CADJ,CAvER,CADJ;EAwFH,CA1FL,CADJ;AA8FH,CAjMM"}
|