@webiny/app-security-access-management 5.27.0 → 5.28.0-beta.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.
Files changed (53) hide show
  1. package/components/GroupAutocomplete/graphql.js +14 -3
  2. package/components/GroupAutocomplete/graphql.js.map +1 -1
  3. package/components/GroupAutocomplete/index.js +23 -8
  4. package/components/GroupAutocomplete/index.js.map +1 -1
  5. package/components/NotAuthorizedError/NotAuthorizedError.js +39 -18
  6. package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -1
  7. package/components/NotAuthorizedError/index.js +13 -1
  8. package/components/NotAuthorizedError/index.js.map +1 -1
  9. package/index.js +57 -32
  10. package/index.js.map +1 -1
  11. package/package.json +12 -12
  12. package/plugins/constants.js +9 -2
  13. package/plugins/constants.js.map +1 -1
  14. package/plugins/index.js +20 -6
  15. package/plugins/index.js.map +1 -1
  16. package/plugins/installation.js +47 -25
  17. package/plugins/installation.js.map +1 -1
  18. package/plugins/permissionRenderer/SecurityPermissions.js +69 -46
  19. package/plugins/permissionRenderer/SecurityPermissions.js.map +1 -1
  20. package/plugins/permissionRenderer/index.js +33 -15
  21. package/plugins/permissionRenderer/index.js.map +1 -1
  22. package/plugins/routes.js +37 -19
  23. package/plugins/routes.js.map +1 -1
  24. package/plugins/secureRouteError.js +16 -4
  25. package/plugins/secureRouteError.js.map +1 -1
  26. package/types.js +5 -1
  27. package/types.js.map +1 -1
  28. package/ui/elements/GroupAutocompleteElement.js +34 -18
  29. package/ui/elements/GroupAutocompleteElement.js.map +1 -1
  30. package/ui/views/ApiKeys/ApiKeyForm.js +122 -81
  31. package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -1
  32. package/ui/views/ApiKeys/ApiKeys.js +22 -7
  33. package/ui/views/ApiKeys/ApiKeys.js.map +1 -1
  34. package/ui/views/ApiKeys/ApiKeysDataList.js +101 -66
  35. package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -1
  36. package/ui/views/ApiKeys/graphql.js +22 -7
  37. package/ui/views/ApiKeys/graphql.js.map +1 -1
  38. package/ui/views/ApiKeys/index.js +18 -1
  39. package/ui/views/ApiKeys/index.js.map +1 -1
  40. package/ui/views/ApiKeys/utils.js +18 -5
  41. package/ui/views/ApiKeys/utils.js.map +1 -1
  42. package/ui/views/Groups/Groups.js +22 -7
  43. package/ui/views/Groups/Groups.js.map +1 -1
  44. package/ui/views/Groups/GroupsDataList.js +107 -71
  45. package/ui/views/Groups/GroupsDataList.js.map +1 -1
  46. package/ui/views/Groups/GroupsForm.js +125 -84
  47. package/ui/views/Groups/GroupsForm.js.map +1 -1
  48. package/ui/views/Groups/graphql.js +22 -7
  49. package/ui/views/Groups/graphql.js.map +1 -1
  50. package/ui/views/Groups/index.js +18 -1
  51. package/ui/views/Groups/index.js.map +1 -1
  52. package/ui/views/utils.js +16 -4
  53. package/ui/views/utils.js.map +1 -1
@@ -1,103 +1,137 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.GroupsDataList = void 0;
11
+
12
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _orderBy = _interopRequireDefault(require("lodash/orderBy"));
23
+
24
+ var _i18n = require("@webiny/app/i18n");
25
+
26
+ var _List = require("@webiny/ui/List");
27
+
28
+ var _icons = require("@webiny/ui/List/DataList/icons");
29
+
30
+ var _reactRouter = require("@webiny/react-router");
31
+
32
+ var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
33
+
34
+ var _reactHooks = require("@apollo/react-hooks");
35
+
36
+ var _useConfirmationDialog = require("@webiny/app-admin/hooks/useConfirmationDialog");
37
+
38
+ var _graphql = require("./graphql");
39
+
40
+ var _Tooltip = require("@webiny/ui/Tooltip");
41
+
42
+ var _Button = require("@webiny/ui/Button");
43
+
44
+ var _Grid = require("@webiny/ui/Grid");
45
+
46
+ var _Select = require("@webiny/ui/Select");
47
+
48
+ var _SearchUI = _interopRequireDefault(require("@webiny/app-admin/components/SearchUI"));
49
+
50
+ var _add18px = require("@webiny/app-admin/assets/icons/add-18px.svg");
51
+
52
+ var _filter24px = require("@webiny/app-admin/assets/icons/filter-24px.svg");
53
+
54
+ var _utils = require("../utils");
4
55
 
5
56
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
6
57
 
7
- import _regeneratorRuntime from "@babel/runtime/regenerator";
8
- import React, { useCallback, useMemo, useState } from "react";
9
- import orderBy from "lodash/orderBy";
10
- import { i18n } from "@webiny/app/i18n";
11
- import { DataList, ScrollList, ListItem, ListItemText, ListItemTextSecondary, ListItemMeta, ListActions, DataListModalOverlayAction, DataListModalOverlay } from "@webiny/ui/List";
12
- import { DeleteIcon } from "@webiny/ui/List/DataList/icons";
13
- import { useRouter } from "@webiny/react-router";
14
- import { useSnackbar } from "@webiny/app-admin/hooks/useSnackbar";
15
- import { useQuery, useMutation } from "@apollo/react-hooks";
16
- import { useConfirmationDialog } from "@webiny/app-admin/hooks/useConfirmationDialog";
17
- import { LIST_GROUPS, DELETE_GROUP } from "./graphql";
18
- import { Tooltip } from "@webiny/ui/Tooltip";
19
- import { ButtonIcon, ButtonSecondary } from "@webiny/ui/Button";
20
- import { Cell, Grid } from "@webiny/ui/Grid";
21
- import { Select } from "@webiny/ui/Select";
22
- import SearchUI from "@webiny/app-admin/components/SearchUI";
23
- import { ReactComponent as AddIcon } from "@webiny/app-admin/assets/icons/add-18px.svg";
24
- import { ReactComponent as FilterIcon } from "@webiny/app-admin/assets/icons/filter-24px.svg";
25
- import { deserializeSorters } from "../utils";
26
- var t = i18n.ns("app-security/admin/groups/data-list");
58
+ var t = _i18n.i18n.ns("app-security/admin/groups/data-list");
59
+
27
60
  var SORTERS = [{
28
- label: t(_templateObject || (_templateObject = _taggedTemplateLiteral(["Newest to oldest"]))),
61
+ label: t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Newest to oldest"]))),
29
62
  sorter: "createdOn_DESC"
30
63
  }, {
31
- label: t(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["Oldest to newest"]))),
64
+ label: t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Oldest to newest"]))),
32
65
  sorter: "createdOn_ASC"
33
66
  }, {
34
- label: t(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["Name A-Z"]))),
67
+ label: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Name A-Z"]))),
35
68
  sorter: "name_ASC"
36
69
  }, {
37
- label: t(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["Name Z-A"]))),
70
+ label: t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["Name Z-A"]))),
38
71
  sorter: "name_DESC"
39
72
  }];
40
- export var GroupsDataList = function GroupsDataList() {
41
- var _useState = useState(""),
42
- _useState2 = _slicedToArray(_useState, 2),
73
+
74
+ var GroupsDataList = function GroupsDataList() {
75
+ var _useState = (0, _react.useState)(""),
76
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
43
77
  filter = _useState2[0],
44
78
  setFilter = _useState2[1];
45
79
 
46
- var _useState3 = useState(SORTERS[0].sorter),
47
- _useState4 = _slicedToArray(_useState3, 2),
80
+ var _useState3 = (0, _react.useState)(SORTERS[0].sorter),
81
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
48
82
  sort = _useState4[0],
49
83
  setSort = _useState4[1];
50
84
 
51
- var _useRouter = useRouter(),
85
+ var _useRouter = (0, _reactRouter.useRouter)(),
52
86
  history = _useRouter.history,
53
87
  location = _useRouter.location;
54
88
 
55
- var _useSnackbar = useSnackbar(),
89
+ var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
56
90
  showSnackbar = _useSnackbar.showSnackbar;
57
91
 
58
- var _useConfirmationDialo = useConfirmationDialog({
92
+ var _useConfirmationDialo = (0, _useConfirmationDialog.useConfirmationDialog)({
59
93
  dataTestId: "default-data-list.delete-dialog"
60
94
  }),
61
95
  showConfirmation = _useConfirmationDialo.showConfirmation;
62
96
 
63
- var _useQuery = useQuery(LIST_GROUPS),
97
+ var _useQuery = (0, _reactHooks.useQuery)(_graphql.LIST_GROUPS),
64
98
  listResponse = _useQuery.data,
65
99
  listLoading = _useQuery.loading;
66
100
 
67
- var _useMutation = useMutation(DELETE_GROUP, {
101
+ var _useMutation = (0, _reactHooks.useMutation)(_graphql.DELETE_GROUP, {
68
102
  refetchQueries: [{
69
- query: LIST_GROUPS
103
+ query: _graphql.LIST_GROUPS
70
104
  }]
71
105
  }),
72
- _useMutation2 = _slicedToArray(_useMutation, 2),
106
+ _useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
73
107
  deleteIt = _useMutation2[0],
74
108
  deleteLoading = _useMutation2[1].loading;
75
109
 
76
110
  var data = listLoading && !listResponse ? [] : listResponse.security.groups.data;
77
111
  var id = new URLSearchParams(location.search).get("id");
78
- var filterGroup = useCallback(function (_ref) {
112
+ var filterGroup = (0, _react.useCallback)(function (_ref) {
79
113
  var name = _ref.name,
80
114
  slug = _ref.slug,
81
115
  description = _ref.description;
82
116
  return name.toLowerCase().includes(filter) || slug.toLowerCase().includes(filter) || description && description.toLowerCase().includes(filter);
83
117
  }, [filter]);
84
- var sortGroups = useCallback(function (groups) {
118
+ var sortGroups = (0, _react.useCallback)(function (groups) {
85
119
  if (!sort) {
86
120
  return groups;
87
121
  }
88
122
 
89
- var _deserializeSorters = deserializeSorters(sort),
90
- _deserializeSorters2 = _slicedToArray(_deserializeSorters, 2),
123
+ var _deserializeSorters = (0, _utils.deserializeSorters)(sort),
124
+ _deserializeSorters2 = (0, _slicedToArray2.default)(_deserializeSorters, 2),
91
125
  key = _deserializeSorters2[0],
92
126
  sortBy = _deserializeSorters2[1];
93
127
 
94
- return orderBy(groups, [key], [sortBy]);
128
+ return (0, _orderBy.default)(groups, [key], [sortBy]);
95
129
  }, [sort]);
96
- var deleteItem = useCallback(function (item) {
97
- showConfirmation( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
130
+ var deleteItem = (0, _react.useCallback)(function (item) {
131
+ showConfirmation( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
98
132
  var _yield$deleteIt, data, error;
99
133
 
100
- return _regeneratorRuntime.wrap(function _callee$(_context) {
134
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
101
135
  while (1) {
102
136
  switch (_context.prev = _context.next) {
103
137
  case 0:
@@ -119,7 +153,7 @@ export var GroupsDataList = function GroupsDataList() {
119
153
  return _context.abrupt("return", showSnackbar(error.message));
120
154
 
121
155
  case 7:
122
- showSnackbar(t(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["Group \"{slug}\" deleted."])))({
156
+ showSnackbar(t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Group \"{slug}\" deleted."])))({
123
157
  slug: item.slug
124
158
  }));
125
159
 
@@ -135,17 +169,17 @@ export var GroupsDataList = function GroupsDataList() {
135
169
  }, _callee);
136
170
  })));
137
171
  }, [id]);
138
- var groupsDataListModalOverlay = useMemo(function () {
139
- return /*#__PURE__*/React.createElement(DataListModalOverlay, null, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
172
+ var groupsDataListModalOverlay = (0, _react.useMemo)(function () {
173
+ return /*#__PURE__*/_react.default.createElement(_List.DataListModalOverlay, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
140
174
  span: 12
141
- }, /*#__PURE__*/React.createElement(Select, {
175
+ }, /*#__PURE__*/_react.default.createElement(_Select.Select, {
142
176
  value: sort,
143
177
  onChange: setSort,
144
- label: t(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["Sort by"])))
178
+ label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Sort by"])))
145
179
  }, SORTERS.map(function (_ref3) {
146
180
  var label = _ref3.label,
147
181
  sorter = _ref3.sorter;
148
- return /*#__PURE__*/React.createElement("option", {
182
+ return /*#__PURE__*/_react.default.createElement("option", {
149
183
  key: label,
150
184
  value: sorter
151
185
  }, label);
@@ -153,51 +187,53 @@ export var GroupsDataList = function GroupsDataList() {
153
187
  }, [sort]);
154
188
  var filteredData = filter === "" ? data : data.filter(filterGroup);
155
189
  var groupList = sortGroups(filteredData);
156
- return /*#__PURE__*/React.createElement(DataList, {
157
- title: t(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["Groups"]))),
158
- actions: /*#__PURE__*/React.createElement(ButtonSecondary, {
190
+ return /*#__PURE__*/_react.default.createElement(_List.DataList, {
191
+ title: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Groups"]))),
192
+ actions: /*#__PURE__*/_react.default.createElement(_Button.ButtonSecondary, {
159
193
  "data-testid": "new-record-button",
160
194
  onClick: function onClick() {
161
195
  return history.push("/access-management/groups?new=true");
162
196
  }
163
- }, /*#__PURE__*/React.createElement(ButtonIcon, {
164
- icon: /*#__PURE__*/React.createElement(AddIcon, null)
165
- }), " ", t(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["New Group"])))),
197
+ }, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
198
+ icon: /*#__PURE__*/_react.default.createElement(_add18px.ReactComponent, null)
199
+ }), " ", t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["New Group"])))),
166
200
  data: groupList,
167
201
  loading: listLoading || deleteLoading,
168
- search: /*#__PURE__*/React.createElement(SearchUI, {
202
+ search: /*#__PURE__*/_react.default.createElement(_SearchUI.default, {
169
203
  value: filter,
170
204
  onChange: setFilter,
171
- inputPlaceholder: t(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["Search Groups"])))
205
+ inputPlaceholder: t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Search Groups"])))
172
206
  }),
173
207
  modalOverlay: groupsDataListModalOverlay,
174
- modalOverlayAction: /*#__PURE__*/React.createElement(DataListModalOverlayAction, {
175
- icon: /*#__PURE__*/React.createElement(FilterIcon, null),
208
+ modalOverlayAction: /*#__PURE__*/_react.default.createElement(_List.DataListModalOverlayAction, {
209
+ icon: /*#__PURE__*/_react.default.createElement(_filter24px.ReactComponent, null),
176
210
  "data-testid": "default-data-list.filter"
177
211
  })
178
212
  }, function (_ref4) {
179
213
  var data = _ref4.data;
180
- return /*#__PURE__*/React.createElement(ScrollList, {
214
+ return /*#__PURE__*/_react.default.createElement(_List.ScrollList, {
181
215
  "data-testid": "default-data-list"
182
216
  }, data.map(function (item) {
183
- return /*#__PURE__*/React.createElement(ListItem, {
217
+ return /*#__PURE__*/_react.default.createElement(_List.ListItem, {
184
218
  key: item.id,
185
219
  selected: item.id === id
186
- }, /*#__PURE__*/React.createElement(ListItemText, {
220
+ }, /*#__PURE__*/_react.default.createElement(_List.ListItemText, {
187
221
  onClick: function onClick() {
188
222
  return history.push("/access-management/groups?id=".concat(item.id));
189
223
  }
190
- }, item.name, /*#__PURE__*/React.createElement(ListItemTextSecondary, null, item.description)), /*#__PURE__*/React.createElement(ListItemMeta, null, /*#__PURE__*/React.createElement(ListActions, null, !item.system ? /*#__PURE__*/React.createElement(DeleteIcon, {
224
+ }, item.name, /*#__PURE__*/_react.default.createElement(_List.ListItemTextSecondary, null, item.description)), /*#__PURE__*/_react.default.createElement(_List.ListItemMeta, null, /*#__PURE__*/_react.default.createElement(_List.ListActions, null, !item.system ? /*#__PURE__*/_react.default.createElement(_icons.DeleteIcon, {
191
225
  onClick: function onClick() {
192
226
  return deleteItem(item);
193
227
  },
194
228
  "data-testid": "default-data-list.delete"
195
- }) : /*#__PURE__*/React.createElement(Tooltip, {
229
+ }) : /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
196
230
  placement: "bottom",
197
- content: /*#__PURE__*/React.createElement("span", null, t(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["You can't delete this group."]))))
198
- }, /*#__PURE__*/React.createElement(DeleteIcon, {
231
+ content: /*#__PURE__*/_react.default.createElement("span", null, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["You can't delete this group."]))))
232
+ }, /*#__PURE__*/_react.default.createElement(_icons.DeleteIcon, {
199
233
  disabled: true
200
234
  })))));
201
235
  }));
202
236
  });
203
- };
237
+ };
238
+
239
+ exports.GroupsDataList = GroupsDataList;
@@ -1 +1 @@
1
- {"version":3,"sources":["GroupsDataList.tsx"],"names":["React","useCallback","useMemo","useState","orderBy","i18n","DataList","ScrollList","ListItem","ListItemText","ListItemTextSecondary","ListItemMeta","ListActions","DataListModalOverlayAction","DataListModalOverlay","DeleteIcon","useRouter","useSnackbar","useQuery","useMutation","useConfirmationDialog","LIST_GROUPS","DELETE_GROUP","Tooltip","ButtonIcon","ButtonSecondary","Cell","Grid","Select","SearchUI","ReactComponent","AddIcon","FilterIcon","deserializeSorters","t","ns","SORTERS","label","sorter","GroupsDataList","filter","setFilter","sort","setSort","history","location","showSnackbar","dataTestId","showConfirmation","listResponse","data","listLoading","loading","refetchQueries","query","deleteIt","deleteLoading","security","groups","id","URLSearchParams","search","get","filterGroup","name","slug","description","toLowerCase","includes","sortGroups","key","sortBy","deleteItem","item","variables","error","deleteGroup","message","push","groupsDataListModalOverlay","map","filteredData","groupList","system"],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport orderBy from \"lodash/orderBy\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n DataList,\n ScrollList,\n ListItem,\n ListItemText,\n ListItemTextSecondary,\n ListItemMeta,\n ListActions,\n DataListModalOverlayAction,\n DataListModalOverlay\n} from \"@webiny/ui/List\";\nimport { DeleteIcon } from \"@webiny/ui/List/DataList/icons\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/useConfirmationDialog\";\nimport { LIST_GROUPS, DELETE_GROUP } from \"./graphql\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport { deserializeSorters } from \"../utils\";\nimport { Group } from \"~/types\";\n\nconst t = i18n.ns(\"app-security/admin/groups/data-list\");\n\nconst SORTERS = [\n {\n label: t`Newest to oldest`,\n sorter: \"createdOn_DESC\"\n },\n {\n label: t`Oldest to newest`,\n sorter: \"createdOn_ASC\"\n },\n {\n label: t`Name A-Z`,\n sorter: \"name_ASC\"\n },\n {\n label: t`Name Z-A`,\n sorter: \"name_DESC\"\n }\n];\n\nexport interface GroupsDataListProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const GroupsDataList: React.FC<GroupsDataListProps> = () => {\n const [filter, setFilter] = useState(\"\");\n const [sort, setSort] = useState(SORTERS[0].sorter);\n const { history, location } = useRouter();\n const { showSnackbar } = useSnackbar();\n const { showConfirmation } = useConfirmationDialog({\n dataTestId: \"default-data-list.delete-dialog\"\n });\n\n const { data: listResponse, loading: listLoading } = useQuery(LIST_GROUPS);\n\n const [deleteIt, { loading: deleteLoading }] = useMutation(DELETE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const data = listLoading && !listResponse ? [] : listResponse.security.groups.data;\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const filterGroup = useCallback(\n ({ name, slug, description }) => {\n return (\n name.toLowerCase().includes(filter) ||\n slug.toLowerCase().includes(filter) ||\n (description && description.toLowerCase().includes(filter))\n );\n },\n [filter]\n );\n\n const sortGroups = useCallback(\n groups => {\n if (!sort) {\n return groups;\n }\n const [key, sortBy] = deserializeSorters(sort);\n return orderBy(groups, [key], [sortBy]);\n },\n [sort]\n );\n\n const deleteItem = useCallback(\n item => {\n showConfirmation(async () => {\n const { data } = await deleteIt({\n variables: item\n });\n\n const { error } = data.security.deleteGroup;\n if (error) {\n return showSnackbar(error.message);\n }\n\n showSnackbar(t`Group \"{slug}\" deleted.`({ slug: item.slug }));\n\n if (id === item.id) {\n history.push(`/access-management/groups`);\n }\n });\n },\n [id]\n );\n\n const groupsDataListModalOverlay = useMemo(\n () => (\n <DataListModalOverlay>\n <Grid>\n <Cell span={12}>\n <Select value={sort} onChange={setSort} label={t`Sort by`}>\n {SORTERS.map(({ label, sorter }) => {\n return (\n <option key={label} value={sorter}>\n {label}\n </option>\n );\n })}\n </Select>\n </Cell>\n </Grid>\n </DataListModalOverlay>\n ),\n [sort]\n );\n\n const filteredData = filter === \"\" ? data : data.filter(filterGroup);\n const groupList = sortGroups(filteredData);\n\n return (\n <DataList\n title={t`Groups`}\n actions={\n <ButtonSecondary\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New Group`}\n </ButtonSecondary>\n }\n data={groupList}\n loading={listLoading || deleteLoading}\n search={\n <SearchUI value={filter} onChange={setFilter} inputPlaceholder={t`Search Groups`} />\n }\n modalOverlay={groupsDataListModalOverlay}\n modalOverlayAction={\n <DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: Group[] }) => (\n <ScrollList data-testid=\"default-data-list\">\n {data.map(item => (\n <ListItem key={item.id} selected={item.id === id}>\n <ListItemText\n onClick={() =>\n history.push(`/access-management/groups?id=${item.id}`)\n }\n >\n {item.name}\n <ListItemTextSecondary>{item.description}</ListItemTextSecondary>\n </ListItemText>\n\n <ListItemMeta>\n <ListActions>\n {!item.system ? (\n <DeleteIcon\n onClick={() => deleteItem(item)}\n data-testid={\"default-data-list.delete\"}\n />\n ) : (\n <Tooltip\n placement={\"bottom\"}\n content={<span>{t`You can't delete this group.`}</span>}\n >\n <DeleteIcon disabled />\n </Tooltip>\n )}\n </ListActions>\n </ListItemMeta>\n </ListItem>\n ))}\n </ScrollList>\n )}\n </DataList>\n );\n};\n"]}
1
+ {"version":3,"names":["t","i18n","ns","SORTERS","label","sorter","GroupsDataList","useState","filter","setFilter","sort","setSort","useRouter","history","location","useSnackbar","showSnackbar","useConfirmationDialog","dataTestId","showConfirmation","useQuery","LIST_GROUPS","listResponse","data","listLoading","loading","useMutation","DELETE_GROUP","refetchQueries","query","deleteIt","deleteLoading","security","groups","id","URLSearchParams","search","get","filterGroup","useCallback","name","slug","description","toLowerCase","includes","sortGroups","deserializeSorters","key","sortBy","orderBy","deleteItem","item","variables","error","deleteGroup","message","push","groupsDataListModalOverlay","useMemo","map","filteredData","groupList","system"],"sources":["GroupsDataList.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport orderBy from \"lodash/orderBy\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport {\n DataList,\n ScrollList,\n ListItem,\n ListItemText,\n ListItemTextSecondary,\n ListItemMeta,\n ListActions,\n DataListModalOverlayAction,\n DataListModalOverlay\n} from \"@webiny/ui/List\";\nimport { DeleteIcon } from \"@webiny/ui/List/DataList/icons\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { useSnackbar } from \"@webiny/app-admin/hooks/useSnackbar\";\nimport { useQuery, useMutation } from \"@apollo/react-hooks\";\nimport { useConfirmationDialog } from \"@webiny/app-admin/hooks/useConfirmationDialog\";\nimport { LIST_GROUPS, DELETE_GROUP } from \"./graphql\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { ButtonIcon, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Cell, Grid } from \"@webiny/ui/Grid\";\nimport { Select } from \"@webiny/ui/Select\";\nimport SearchUI from \"@webiny/app-admin/components/SearchUI\";\nimport { ReactComponent as AddIcon } from \"@webiny/app-admin/assets/icons/add-18px.svg\";\nimport { ReactComponent as FilterIcon } from \"@webiny/app-admin/assets/icons/filter-24px.svg\";\nimport { deserializeSorters } from \"../utils\";\nimport { Group } from \"~/types\";\n\nconst t = i18n.ns(\"app-security/admin/groups/data-list\");\n\nconst SORTERS = [\n {\n label: t`Newest to oldest`,\n sorter: \"createdOn_DESC\"\n },\n {\n label: t`Oldest to newest`,\n sorter: \"createdOn_ASC\"\n },\n {\n label: t`Name A-Z`,\n sorter: \"name_ASC\"\n },\n {\n label: t`Name Z-A`,\n sorter: \"name_DESC\"\n }\n];\n\nexport interface GroupsDataListProps {\n // TODO @ts-refactor delete and go up the tree and sort it out\n [key: string]: any;\n}\nexport const GroupsDataList: React.FC<GroupsDataListProps> = () => {\n const [filter, setFilter] = useState(\"\");\n const [sort, setSort] = useState(SORTERS[0].sorter);\n const { history, location } = useRouter();\n const { showSnackbar } = useSnackbar();\n const { showConfirmation } = useConfirmationDialog({\n dataTestId: \"default-data-list.delete-dialog\"\n });\n\n const { data: listResponse, loading: listLoading } = useQuery(LIST_GROUPS);\n\n const [deleteIt, { loading: deleteLoading }] = useMutation(DELETE_GROUP, {\n refetchQueries: [{ query: LIST_GROUPS }]\n });\n\n const data = listLoading && !listResponse ? [] : listResponse.security.groups.data;\n const id = new URLSearchParams(location.search).get(\"id\");\n\n const filterGroup = useCallback(\n ({ name, slug, description }) => {\n return (\n name.toLowerCase().includes(filter) ||\n slug.toLowerCase().includes(filter) ||\n (description && description.toLowerCase().includes(filter))\n );\n },\n [filter]\n );\n\n const sortGroups = useCallback(\n groups => {\n if (!sort) {\n return groups;\n }\n const [key, sortBy] = deserializeSorters(sort);\n return orderBy(groups, [key], [sortBy]);\n },\n [sort]\n );\n\n const deleteItem = useCallback(\n item => {\n showConfirmation(async () => {\n const { data } = await deleteIt({\n variables: item\n });\n\n const { error } = data.security.deleteGroup;\n if (error) {\n return showSnackbar(error.message);\n }\n\n showSnackbar(t`Group \"{slug}\" deleted.`({ slug: item.slug }));\n\n if (id === item.id) {\n history.push(`/access-management/groups`);\n }\n });\n },\n [id]\n );\n\n const groupsDataListModalOverlay = useMemo(\n () => (\n <DataListModalOverlay>\n <Grid>\n <Cell span={12}>\n <Select value={sort} onChange={setSort} label={t`Sort by`}>\n {SORTERS.map(({ label, sorter }) => {\n return (\n <option key={label} value={sorter}>\n {label}\n </option>\n );\n })}\n </Select>\n </Cell>\n </Grid>\n </DataListModalOverlay>\n ),\n [sort]\n );\n\n const filteredData = filter === \"\" ? data : data.filter(filterGroup);\n const groupList = sortGroups(filteredData);\n\n return (\n <DataList\n title={t`Groups`}\n actions={\n <ButtonSecondary\n data-testid=\"new-record-button\"\n onClick={() => history.push(\"/access-management/groups?new=true\")}\n >\n <ButtonIcon icon={<AddIcon />} /> {t`New Group`}\n </ButtonSecondary>\n }\n data={groupList}\n loading={listLoading || deleteLoading}\n search={\n <SearchUI value={filter} onChange={setFilter} inputPlaceholder={t`Search Groups`} />\n }\n modalOverlay={groupsDataListModalOverlay}\n modalOverlayAction={\n <DataListModalOverlayAction\n icon={<FilterIcon />}\n data-testid={\"default-data-list.filter\"}\n />\n }\n >\n {({ data }: { data: Group[] }) => (\n <ScrollList data-testid=\"default-data-list\">\n {data.map(item => (\n <ListItem key={item.id} selected={item.id === id}>\n <ListItemText\n onClick={() =>\n history.push(`/access-management/groups?id=${item.id}`)\n }\n >\n {item.name}\n <ListItemTextSecondary>{item.description}</ListItemTextSecondary>\n </ListItemText>\n\n <ListItemMeta>\n <ListActions>\n {!item.system ? (\n <DeleteIcon\n onClick={() => deleteItem(item)}\n data-testid={\"default-data-list.delete\"}\n />\n ) : (\n <Tooltip\n placement={\"bottom\"}\n content={<span>{t`You can't delete this group.`}</span>}\n >\n <DeleteIcon disabled />\n </Tooltip>\n )}\n </ListActions>\n </ListItemMeta>\n </ListItem>\n ))}\n </ScrollList>\n )}\n </DataList>\n );\n};\n"],"mappings":"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"}