@webiny/app-security-access-management 5.27.0 → 5.29.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.
- package/components/GroupAutocomplete/graphql.js +14 -3
- package/components/GroupAutocomplete/graphql.js.map +1 -1
- package/components/GroupAutocomplete/index.js +23 -8
- package/components/GroupAutocomplete/index.js.map +1 -1
- package/components/NotAuthorizedError/NotAuthorizedError.js +39 -18
- package/components/NotAuthorizedError/NotAuthorizedError.js.map +1 -1
- package/components/NotAuthorizedError/index.js +13 -1
- package/components/NotAuthorizedError/index.js.map +1 -1
- package/index.js +57 -32
- package/index.js.map +1 -1
- package/package.json +12 -12
- package/plugins/constants.js +9 -2
- package/plugins/constants.js.map +1 -1
- package/plugins/index.js +20 -6
- package/plugins/index.js.map +1 -1
- package/plugins/installation.js +47 -25
- package/plugins/installation.js.map +1 -1
- package/plugins/permissionRenderer/SecurityPermissions.js +69 -46
- package/plugins/permissionRenderer/SecurityPermissions.js.map +1 -1
- package/plugins/permissionRenderer/index.js +33 -15
- package/plugins/permissionRenderer/index.js.map +1 -1
- package/plugins/routes.js +37 -19
- package/plugins/routes.js.map +1 -1
- package/plugins/secureRouteError.js +16 -4
- package/plugins/secureRouteError.js.map +1 -1
- package/types.js +5 -1
- package/types.js.map +1 -1
- package/ui/elements/GroupAutocompleteElement.js +34 -18
- package/ui/elements/GroupAutocompleteElement.js.map +1 -1
- package/ui/views/ApiKeys/ApiKeyForm.js +122 -81
- package/ui/views/ApiKeys/ApiKeyForm.js.map +1 -1
- package/ui/views/ApiKeys/ApiKeys.js +22 -7
- package/ui/views/ApiKeys/ApiKeys.js.map +1 -1
- package/ui/views/ApiKeys/ApiKeysDataList.js +101 -66
- package/ui/views/ApiKeys/ApiKeysDataList.js.map +1 -1
- package/ui/views/ApiKeys/graphql.js +22 -7
- package/ui/views/ApiKeys/graphql.js.map +1 -1
- package/ui/views/ApiKeys/index.js +18 -1
- package/ui/views/ApiKeys/index.js.map +1 -1
- package/ui/views/ApiKeys/utils.js +18 -5
- package/ui/views/ApiKeys/utils.js.map +1 -1
- package/ui/views/Groups/Groups.js +22 -7
- package/ui/views/Groups/Groups.js.map +1 -1
- package/ui/views/Groups/GroupsDataList.js +107 -71
- package/ui/views/Groups/GroupsDataList.js.map +1 -1
- package/ui/views/Groups/GroupsForm.js +125 -84
- package/ui/views/Groups/GroupsForm.js.map +1 -1
- package/ui/views/Groups/graphql.js +22 -7
- package/ui/views/Groups/graphql.js.map +1 -1
- package/ui/views/Groups/index.js +18 -1
- package/ui/views/Groups/index.js.map +1 -1
- package/ui/views/utils.js +16 -4
- package/ui/views/utils.js.map +1 -1
|
@@ -1,52 +1,91 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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.GroupsForm = void 0;
|
|
11
|
+
|
|
12
|
+
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
13
|
+
|
|
14
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
|
+
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
+
|
|
18
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _reactHooks = require("@apollo/react-hooks");
|
|
23
|
+
|
|
24
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
25
|
+
|
|
26
|
+
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
27
|
+
|
|
28
|
+
var _get = _interopRequireDefault(require("lodash/get"));
|
|
29
|
+
|
|
30
|
+
var _reactRouter = require("@webiny/react-router");
|
|
31
|
+
|
|
32
|
+
var _i18n = require("@webiny/app/i18n");
|
|
33
|
+
|
|
34
|
+
var _form = require("@webiny/form");
|
|
35
|
+
|
|
36
|
+
var _Grid = require("@webiny/ui/Grid");
|
|
37
|
+
|
|
38
|
+
var _Input = require("@webiny/ui/Input");
|
|
39
|
+
|
|
40
|
+
var _Alert = require("@webiny/ui/Alert");
|
|
41
|
+
|
|
42
|
+
var _Button = require("@webiny/ui/Button");
|
|
43
|
+
|
|
44
|
+
var _Progress = require("@webiny/ui/Progress");
|
|
45
|
+
|
|
46
|
+
var _validation = require("@webiny/validation");
|
|
47
|
+
|
|
48
|
+
var _SimpleForm = require("@webiny/app-admin/components/SimpleForm");
|
|
49
|
+
|
|
50
|
+
var _Typography = require("@webiny/ui/Typography");
|
|
51
|
+
|
|
52
|
+
var _Permissions = require("@webiny/app-admin/components/Permissions");
|
|
53
|
+
|
|
54
|
+
var _useSnackbar2 = require("@webiny/app-admin/hooks/useSnackbar");
|
|
55
|
+
|
|
56
|
+
var _graphql = require("./graphql");
|
|
57
|
+
|
|
58
|
+
var _Snackbar = require("@webiny/ui/Snackbar");
|
|
59
|
+
|
|
60
|
+
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
61
|
+
|
|
62
|
+
var _EmptyView = _interopRequireDefault(require("@webiny/app-admin/components/EmptyView"));
|
|
63
|
+
|
|
64
|
+
var _add18px = require("@webiny/app-admin/assets/icons/add-18px.svg");
|
|
4
65
|
|
|
5
66
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
|
|
6
67
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import styled from "@emotion/styled";
|
|
11
|
-
import pick from "lodash/pick";
|
|
12
|
-
import get from "lodash/get";
|
|
13
|
-
import { useRouter } from "@webiny/react-router";
|
|
14
|
-
import { i18n } from "@webiny/app/i18n";
|
|
15
|
-
import { Form } from "@webiny/form";
|
|
16
|
-
import { Grid, Cell } from "@webiny/ui/Grid";
|
|
17
|
-
import { Input } from "@webiny/ui/Input";
|
|
18
|
-
import { Alert } from "@webiny/ui/Alert";
|
|
19
|
-
import { ButtonDefault, ButtonIcon, ButtonPrimary } from "@webiny/ui/Button";
|
|
20
|
-
import { CircularProgress } from "@webiny/ui/Progress";
|
|
21
|
-
import { validation } from "@webiny/validation";
|
|
22
|
-
import { SimpleForm, SimpleFormFooter, SimpleFormContent, SimpleFormHeader } from "@webiny/app-admin/components/SimpleForm";
|
|
23
|
-
import { Typography } from "@webiny/ui/Typography";
|
|
24
|
-
import { Permissions } from "@webiny/app-admin/components/Permissions";
|
|
25
|
-
import { useSnackbar } from "@webiny/app-admin/hooks/useSnackbar";
|
|
26
|
-
import { CREATE_GROUP, LIST_GROUPS, READ_GROUP, UPDATE_GROUP } from "./graphql";
|
|
27
|
-
import { SnackbarAction } from "@webiny/ui/Snackbar";
|
|
28
|
-
import isEmpty from "lodash/isEmpty";
|
|
29
|
-
import EmptyView from "@webiny/app-admin/components/EmptyView";
|
|
30
|
-
import { ReactComponent as AddIcon } from "@webiny/app-admin/assets/icons/add-18px.svg";
|
|
31
|
-
var t = i18n.ns("app-security/admin/groups/form");
|
|
32
|
-
var ButtonWrapper = /*#__PURE__*/styled("div", {
|
|
68
|
+
var t = _i18n.i18n.ns("app-security/admin/groups/form");
|
|
69
|
+
|
|
70
|
+
var ButtonWrapper = /*#__PURE__*/(0, _styled.default)("div", {
|
|
33
71
|
target: "euuiyav0",
|
|
34
72
|
label: "ButtonWrapper"
|
|
35
73
|
})({
|
|
36
74
|
display: "flex",
|
|
37
75
|
justifyContent: "space-between"
|
|
38
76
|
});
|
|
39
|
-
|
|
40
|
-
|
|
77
|
+
|
|
78
|
+
var GroupsForm = function GroupsForm() {
|
|
79
|
+
var _useRouter = (0, _reactRouter.useRouter)(),
|
|
41
80
|
location = _useRouter.location,
|
|
42
81
|
history = _useRouter.history;
|
|
43
82
|
|
|
44
|
-
var _useSnackbar = useSnackbar(),
|
|
83
|
+
var _useSnackbar = (0, _useSnackbar2.useSnackbar)(),
|
|
45
84
|
showSnackbar = _useSnackbar.showSnackbar;
|
|
46
85
|
|
|
47
86
|
var newGroup = new URLSearchParams(location.search).get("new") === "true";
|
|
48
87
|
var id = new URLSearchParams(location.search).get("id");
|
|
49
|
-
var getQuery = useQuery(READ_GROUP, {
|
|
88
|
+
var getQuery = (0, _reactHooks.useQuery)(_graphql.READ_GROUP, {
|
|
50
89
|
variables: {
|
|
51
90
|
id: id
|
|
52
91
|
},
|
|
@@ -65,32 +104,32 @@ export var GroupsForm = function GroupsForm() {
|
|
|
65
104
|
}
|
|
66
105
|
});
|
|
67
106
|
|
|
68
|
-
var _useMutation = useMutation(CREATE_GROUP, {
|
|
107
|
+
var _useMutation = (0, _reactHooks.useMutation)(_graphql.CREATE_GROUP, {
|
|
69
108
|
refetchQueries: [{
|
|
70
|
-
query: LIST_GROUPS
|
|
109
|
+
query: _graphql.LIST_GROUPS
|
|
71
110
|
}]
|
|
72
111
|
}),
|
|
73
|
-
_useMutation2 =
|
|
112
|
+
_useMutation2 = (0, _slicedToArray2.default)(_useMutation, 2),
|
|
74
113
|
create = _useMutation2[0],
|
|
75
114
|
createMutation = _useMutation2[1];
|
|
76
115
|
|
|
77
|
-
var _useMutation3 = useMutation(UPDATE_GROUP, {
|
|
116
|
+
var _useMutation3 = (0, _reactHooks.useMutation)(_graphql.UPDATE_GROUP, {
|
|
78
117
|
refetchQueries: [{
|
|
79
|
-
query: LIST_GROUPS
|
|
118
|
+
query: _graphql.LIST_GROUPS
|
|
80
119
|
}]
|
|
81
120
|
}),
|
|
82
|
-
_useMutation4 =
|
|
121
|
+
_useMutation4 = (0, _slicedToArray2.default)(_useMutation3, 2),
|
|
83
122
|
update = _useMutation4[0],
|
|
84
123
|
updateMutation = _useMutation4[1];
|
|
85
124
|
|
|
86
125
|
var loading = [getQuery, createMutation, updateMutation].find(function (item) {
|
|
87
126
|
return item.loading;
|
|
88
127
|
});
|
|
89
|
-
var onSubmit = useCallback( /*#__PURE__*/function () {
|
|
90
|
-
var _ref =
|
|
128
|
+
var onSubmit = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
129
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(data) {
|
|
91
130
|
var isUpdate, _ref2, _ref3, operation, args, response, _response$data$securi, group, error;
|
|
92
131
|
|
|
93
|
-
return
|
|
132
|
+
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
94
133
|
while (1) {
|
|
95
134
|
switch (_context.prev = _context.next) {
|
|
96
135
|
case 0:
|
|
@@ -99,10 +138,10 @@ export var GroupsForm = function GroupsForm() {
|
|
|
99
138
|
break;
|
|
100
139
|
}
|
|
101
140
|
|
|
102
|
-
showSnackbar(t(_templateObject || (_templateObject =
|
|
141
|
+
showSnackbar(t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["You must configure permissions before saving!"]))), {
|
|
103
142
|
timeout: 60000,
|
|
104
143
|
dismissesOnAction: true,
|
|
105
|
-
action: /*#__PURE__*/
|
|
144
|
+
action: /*#__PURE__*/_react.default.createElement(_Snackbar.SnackbarAction, {
|
|
106
145
|
label: "OK"
|
|
107
146
|
})
|
|
108
147
|
});
|
|
@@ -113,13 +152,13 @@ export var GroupsForm = function GroupsForm() {
|
|
|
113
152
|
_ref2 = isUpdate ? [update, {
|
|
114
153
|
variables: {
|
|
115
154
|
id: data.id,
|
|
116
|
-
data:
|
|
155
|
+
data: (0, _pick.default)(data, ["name", "description", "permissions"])
|
|
117
156
|
}
|
|
118
157
|
}] : [create, {
|
|
119
158
|
variables: {
|
|
120
|
-
data:
|
|
159
|
+
data: (0, _pick.default)(data, ["name", "slug", "description", "permissions"])
|
|
121
160
|
}
|
|
122
|
-
}], _ref3 =
|
|
161
|
+
}], _ref3 = (0, _slicedToArray2.default)(_ref2, 2), operation = _ref3[0], args = _ref3[1];
|
|
123
162
|
_context.next = 7;
|
|
124
163
|
return operation(args);
|
|
125
164
|
|
|
@@ -136,7 +175,7 @@ export var GroupsForm = function GroupsForm() {
|
|
|
136
175
|
|
|
137
176
|
case 11:
|
|
138
177
|
!isUpdate && history.push("/access-management/groups?id=".concat(group.id));
|
|
139
|
-
showSnackbar(t(_templateObject2 || (_templateObject2 =
|
|
178
|
+
showSnackbar(t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Group saved successfully!"]))));
|
|
140
179
|
|
|
141
180
|
case 13:
|
|
142
181
|
case "end":
|
|
@@ -150,84 +189,86 @@ export var GroupsForm = function GroupsForm() {
|
|
|
150
189
|
return _ref.apply(this, arguments);
|
|
151
190
|
};
|
|
152
191
|
}(), [id]);
|
|
153
|
-
var data = loading ? {} :
|
|
192
|
+
var data = loading ? {} : (0, _get.default)(getQuery, "data.security.group.data", {});
|
|
154
193
|
var systemGroup = data.slug === "full-access";
|
|
155
|
-
var showEmptyView = !newGroup && !loading &&
|
|
194
|
+
var showEmptyView = !newGroup && !loading && (0, _isEmpty.default)(data); // Render "No content" selected view.
|
|
156
195
|
|
|
157
196
|
if (showEmptyView) {
|
|
158
|
-
return /*#__PURE__*/
|
|
159
|
-
title: t(_templateObject3 || (_templateObject3 =
|
|
160
|
-
action: /*#__PURE__*/
|
|
197
|
+
return /*#__PURE__*/_react.default.createElement(_EmptyView.default, {
|
|
198
|
+
title: t(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["Click on the left side list to display group details or create a..."]))),
|
|
199
|
+
action: /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
|
|
161
200
|
"data-testid": "new-record-button",
|
|
162
201
|
onClick: function onClick() {
|
|
163
202
|
return history.push("/access-management/groups?new=true");
|
|
164
203
|
}
|
|
165
|
-
}, /*#__PURE__*/
|
|
166
|
-
icon: /*#__PURE__*/
|
|
167
|
-
}), t(_templateObject4 || (_templateObject4 =
|
|
204
|
+
}, /*#__PURE__*/_react.default.createElement(_Button.ButtonIcon, {
|
|
205
|
+
icon: /*#__PURE__*/_react.default.createElement(_add18px.ReactComponent, null)
|
|
206
|
+
}), t(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["New Group"]))))
|
|
168
207
|
});
|
|
169
208
|
}
|
|
170
209
|
|
|
171
|
-
return /*#__PURE__*/
|
|
210
|
+
return /*#__PURE__*/_react.default.createElement(_form.Form, {
|
|
172
211
|
data: data,
|
|
173
212
|
onSubmit: onSubmit
|
|
174
213
|
}, function (_ref4) {
|
|
175
214
|
var data = _ref4.data,
|
|
176
215
|
form = _ref4.form,
|
|
177
216
|
Bind = _ref4.Bind;
|
|
178
|
-
return /*#__PURE__*/
|
|
217
|
+
return /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleForm, null, loading && /*#__PURE__*/_react.default.createElement(_Progress.CircularProgress, null), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormHeader, {
|
|
179
218
|
title: data.name ? data.name : "Untitled"
|
|
180
|
-
}), /*#__PURE__*/
|
|
219
|
+
}), /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormContent, null, /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
181
220
|
span: 6
|
|
182
|
-
}, /*#__PURE__*/
|
|
221
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
183
222
|
name: "name",
|
|
184
|
-
validators: validation.create("required,minLength:3")
|
|
185
|
-
}, /*#__PURE__*/
|
|
186
|
-
label: t(_templateObject5 || (_templateObject5 =
|
|
223
|
+
validators: _validation.validation.create("required,minLength:3")
|
|
224
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
225
|
+
label: t(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["Name"]))),
|
|
187
226
|
disabled: systemGroup
|
|
188
|
-
}))), /*#__PURE__*/
|
|
227
|
+
}))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
189
228
|
span: 6
|
|
190
|
-
}, /*#__PURE__*/
|
|
229
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
191
230
|
name: "slug",
|
|
192
|
-
validators: validation.create("required,minLength:3")
|
|
193
|
-
}, /*#__PURE__*/
|
|
231
|
+
validators: _validation.validation.create("required,minLength:3")
|
|
232
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
194
233
|
disabled: Boolean(data.id),
|
|
195
|
-
label: t(_templateObject6 || (_templateObject6 =
|
|
196
|
-
})))), /*#__PURE__*/
|
|
234
|
+
label: t(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["Slug"])))
|
|
235
|
+
})))), /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
197
236
|
span: 12
|
|
198
|
-
}, /*#__PURE__*/
|
|
237
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
199
238
|
name: "description",
|
|
200
|
-
validators: validation.create("maxLength:500")
|
|
201
|
-
}, /*#__PURE__*/
|
|
202
|
-
label: t(_templateObject7 || (_templateObject7 =
|
|
239
|
+
validators: _validation.validation.create("maxLength:500")
|
|
240
|
+
}, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
241
|
+
label: t(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["Description"]))),
|
|
203
242
|
rows: 3,
|
|
204
243
|
disabled: systemGroup
|
|
205
|
-
})))), systemGroup && /*#__PURE__*/
|
|
244
|
+
})))), systemGroup && /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
206
245
|
span: 12
|
|
207
|
-
}, /*#__PURE__*/
|
|
246
|
+
}, /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
|
|
208
247
|
type: "info",
|
|
209
248
|
title: "Permissions are locked"
|
|
210
|
-
}, "This is a protected system group and you can't modify its permissions."))), !systemGroup && /*#__PURE__*/
|
|
249
|
+
}, "This is a protected system group and you can't modify its permissions."))), !systemGroup && /*#__PURE__*/_react.default.createElement(_Grid.Grid, null, /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
211
250
|
span: 12
|
|
212
|
-
}, /*#__PURE__*/
|
|
251
|
+
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
213
252
|
use: "subtitle1"
|
|
214
|
-
}, t(_templateObject8 || (_templateObject8 =
|
|
253
|
+
}, t(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["Permissions"]))))), /*#__PURE__*/_react.default.createElement(_Grid.Cell, {
|
|
215
254
|
span: 12
|
|
216
|
-
}, /*#__PURE__*/
|
|
255
|
+
}, /*#__PURE__*/_react.default.createElement(Bind, {
|
|
217
256
|
name: "permissions",
|
|
218
257
|
defaultValue: []
|
|
219
258
|
}, function (bind) {
|
|
220
|
-
return /*#__PURE__*/
|
|
259
|
+
return /*#__PURE__*/_react.default.createElement(_Permissions.Permissions, Object.assign({
|
|
221
260
|
id: data.id || "new"
|
|
222
261
|
}, bind));
|
|
223
|
-
})))), systemGroup ? null : /*#__PURE__*/
|
|
262
|
+
})))), systemGroup ? null : /*#__PURE__*/_react.default.createElement(_SimpleForm.SimpleFormFooter, null, /*#__PURE__*/_react.default.createElement(ButtonWrapper, null, /*#__PURE__*/_react.default.createElement(_Button.ButtonDefault, {
|
|
224
263
|
onClick: function onClick() {
|
|
225
264
|
return history.push("/access-management/groups");
|
|
226
265
|
}
|
|
227
|
-
}, t(_templateObject9 || (_templateObject9 =
|
|
266
|
+
}, t(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["Cancel"])))), /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
|
|
228
267
|
onClick: function onClick(ev) {
|
|
229
268
|
form.submit(ev);
|
|
230
269
|
}
|
|
231
|
-
}, t(_templateObject10 || (_templateObject10 =
|
|
270
|
+
}, t(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["Save group"])))))));
|
|
232
271
|
});
|
|
233
|
-
};
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
exports.GroupsForm = GroupsForm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GroupsForm.tsx"],"names":["React","useCallback","useMutation","useQuery","styled","pick","get","useRouter","i18n","Form","Grid","Cell","Input","Alert","ButtonDefault","ButtonIcon","ButtonPrimary","CircularProgress","validation","SimpleForm","SimpleFormFooter","SimpleFormContent","SimpleFormHeader","Typography","Permissions","useSnackbar","CREATE_GROUP","LIST_GROUPS","READ_GROUP","UPDATE_GROUP","SnackbarAction","isEmpty","EmptyView","ReactComponent","AddIcon","t","ns","ButtonWrapper","display","justifyContent","GroupsForm","location","history","showSnackbar","newGroup","URLSearchParams","search","id","getQuery","variables","skip","onCompleted","data","error","security","group","push","message","refetchQueries","query","create","createMutation","update","updateMutation","loading","find","item","onSubmit","permissions","length","timeout","dismissesOnAction","action","isUpdate","createdOn","operation","args","response","systemGroup","slug","showEmptyView","form","Bind","name","Boolean","bind","ev","submit"],"mappings":"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","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"]}
|
|
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,11 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.UPDATE_GROUP = exports.READ_GROUP = exports.LIST_GROUPS = exports.DELETE_GROUP = exports.CREATE_GROUP = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
2
13
|
|
|
3
14
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
4
15
|
|
|
5
|
-
import gql from "graphql-tag";
|
|
6
16
|
var fields = "\n id\n name\n slug\n description\n permissions\n system\n createdOn\n";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
var LIST_GROUPS = (0, _graphqlTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n query listGroups {\n security {\n groups: listGroups {\n data {\n ", "\n }\n }\n }\n }\n"])), fields);
|
|
18
|
+
exports.LIST_GROUPS = LIST_GROUPS;
|
|
19
|
+
var READ_GROUP = (0, _graphqlTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n query getGroup($id: ID!) {\n security {\n group: getGroup(where: { id: $id }){\n data {\n ", "\n }\n error {\n code\n message\n }\n }\n }\n }\n"])), fields);
|
|
20
|
+
exports.READ_GROUP = READ_GROUP;
|
|
21
|
+
var CREATE_GROUP = (0, _graphqlTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n mutation createGroup($data: SecurityGroupCreateInput!){\n security {\n group: createGroup(data: $data) {\n data {\n ", "\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n"])), fields);
|
|
22
|
+
exports.CREATE_GROUP = CREATE_GROUP;
|
|
23
|
+
var UPDATE_GROUP = (0, _graphqlTag.default)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n mutation updateGroup($id: ID!, $data: SecurityGroupUpdateInput!){\n security {\n group: updateGroup(id: $id, data: $data) {\n data {\n ", "\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n"])), fields);
|
|
24
|
+
exports.UPDATE_GROUP = UPDATE_GROUP;
|
|
25
|
+
var DELETE_GROUP = (0, _graphqlTag.default)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n mutation deleteGroup($id: ID!) {\n security {\n deleteGroup(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n"])));
|
|
26
|
+
exports.DELETE_GROUP = DELETE_GROUP;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["fields","LIST_GROUPS","gql","READ_GROUP","CREATE_GROUP","UPDATE_GROUP","DELETE_GROUP"],"sources":["graphql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nconst fields = `\n id\n name\n slug\n description\n permissions\n system\n createdOn\n`;\n\nexport const LIST_GROUPS = gql`\n query listGroups {\n security {\n groups: listGroups {\n data {\n ${fields}\n }\n }\n }\n }\n`;\n\nexport const READ_GROUP = gql`\n query getGroup($id: ID!) {\n security {\n group: getGroup(where: { id: $id }){\n data {\n ${fields}\n }\n error {\n code\n message\n }\n }\n }\n }\n`;\n\nexport const CREATE_GROUP = gql`\n mutation createGroup($data: SecurityGroupCreateInput!){\n security {\n group: createGroup(data: $data) {\n data {\n ${fields}\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\nexport const UPDATE_GROUP = gql`\n mutation updateGroup($id: ID!, $data: SecurityGroupUpdateInput!){\n security {\n group: updateGroup(id: $id, data: $data) {\n data {\n ${fields}\n }\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\nexport const DELETE_GROUP = gql`\n mutation deleteGroup($id: ID!) {\n security {\n deleteGroup(id: $id) {\n data\n error {\n code\n message\n }\n }\n }\n }\n`;\n"],"mappings":";;;;;;;;;;;AAAA;;;;AAEA,IAAMA,MAAM,gGAAZ;AAUO,IAAMC,WAAW,OAAGC,mBAAH,2QAKFF,MALE,CAAjB;;AAYA,IAAMG,UAAU,OAAGD,mBAAH,wYAKDF,MALC,CAAhB;;AAgBA,IAAMI,YAAY,OAAGF,mBAAH,4bAKHF,MALG,CAAlB;;AAiBA,IAAMK,YAAY,OAAGH,mBAAH,+cAKHF,MALG,CAAlB;;AAiBA,IAAMM,YAAY,OAAGJ,mBAAH,gVAAlB"}
|
package/ui/views/Groups/index.js
CHANGED
|
@@ -1 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
var _Groups = require("./Groups");
|
|
8
|
+
|
|
9
|
+
Object.keys(_Groups).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _Groups[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _Groups[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./Groups\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
package/ui/views/utils.js
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.deserializeSorters = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var deserializeSorters = function deserializeSorters(data) {
|
|
3
13
|
if (typeof data !== "string") {
|
|
4
14
|
return data;
|
|
5
15
|
}
|
|
6
16
|
|
|
7
17
|
var _ref = data.split("_"),
|
|
8
|
-
_ref2 =
|
|
18
|
+
_ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
9
19
|
field = _ref2[0],
|
|
10
20
|
orderBy = _ref2[1];
|
|
11
21
|
|
|
12
22
|
var order = String(orderBy).toLowerCase() === "asc" ? "asc" : "desc";
|
|
13
23
|
return [field, order];
|
|
14
|
-
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.deserializeSorters = deserializeSorters;
|
package/ui/views/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["deserializeSorters","data","split","field","orderBy","order","String","toLowerCase"],"sources":["utils.ts"],"sourcesContent":["type SortTypes = \"asc\" | \"desc\";\nexport const deserializeSorters = (data: string): [string, SortTypes] => {\n if (typeof data !== \"string\") {\n return data;\n }\n const [field, orderBy] = data.split(\"_\") as [string, SortTypes];\n const order = String(orderBy).toLowerCase() === \"asc\" ? \"asc\" : \"desc\";\n return [field, order];\n};\n"],"mappings":";;;;;;;;;;;AACO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,IAAD,EAAuC;EACrE,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;IAC1B,OAAOA,IAAP;EACH;;EACD,WAAyBA,IAAI,CAACC,KAAL,CAAW,GAAX,CAAzB;EAAA;EAAA,IAAOC,KAAP;EAAA,IAAcC,OAAd;;EACA,IAAMC,KAAK,GAAGC,MAAM,CAACF,OAAD,CAAN,CAAgBG,WAAhB,OAAkC,KAAlC,GAA0C,KAA1C,GAAkD,MAAhE;EACA,OAAO,CAACJ,KAAD,EAAQE,KAAR,CAAP;AACH,CAPM"}
|