@bigbinary/neeto-access-control-frontend 1.0.0 → 1.1.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/README.md +15 -2
- package/app/javascript/src/translations/en.json +32 -2
- package/dist/index.cjs.js +558 -23
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +549 -25
- package/dist/index.js.map +1 -1
- package/package.json +15 -13
package/dist/index.cjs.js
CHANGED
|
@@ -14,17 +14,28 @@ var Form = require('@bigbinary/neetoui/formik/Form');
|
|
|
14
14
|
var Input = require('@bigbinary/neetoui/formik/Input');
|
|
15
15
|
var Radio = require('@bigbinary/neetoui/formik/Radio');
|
|
16
16
|
var reactI18next = require('react-i18next');
|
|
17
|
-
var reactQuery = require('@tanstack/react-query');
|
|
18
17
|
var constants = require('@bigbinary/neeto-commons-frontend/constants');
|
|
19
|
-
var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
|
|
20
|
-
var ramda = require('ramda');
|
|
21
|
-
var axios = require('axios');
|
|
22
|
-
var formik = require('formik');
|
|
23
18
|
var Delete = require('@bigbinary/neeto-icons/Delete');
|
|
19
|
+
var SubHeader = require('@bigbinary/neeto-molecules/SubHeader');
|
|
20
|
+
var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
|
|
21
|
+
var Alert = require('@bigbinary/neetoui/Alert');
|
|
24
22
|
var Button = require('@bigbinary/neetoui/Button');
|
|
23
|
+
var NoData = require('@bigbinary/neetoui/NoData');
|
|
24
|
+
var Pane = require('@bigbinary/neetoui/Pane');
|
|
25
|
+
var Table = require('@bigbinary/neetoui/Table');
|
|
26
|
+
var Typography = require('@bigbinary/neetoui/Typography');
|
|
27
|
+
var ramda = require('ramda');
|
|
28
|
+
var reactQuery = require('@tanstack/react-query');
|
|
29
|
+
var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
|
|
30
|
+
var axios = require('axios');
|
|
31
|
+
var Modal = require('@bigbinary/neetoui/Modal');
|
|
32
|
+
var MultiEmailInput = require('@bigbinary/neetoui/formik/MultiEmailInput');
|
|
33
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
25
34
|
var i18next = require('i18next');
|
|
35
|
+
var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
|
|
36
|
+
var Tooltip = require('@bigbinary/neetoui/Tooltip');
|
|
37
|
+
var formik = require('formik');
|
|
26
38
|
var yup = require('yup');
|
|
27
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
28
39
|
var NeetoHeader = require('@bigbinary/neeto-molecules/Header');
|
|
29
40
|
var HelpPopover = require('@bigbinary/neeto-molecules/HelpPopover');
|
|
30
41
|
|
|
@@ -57,9 +68,20 @@ var ActionBlock__default = /*#__PURE__*/_interopDefaultLegacy(ActionBlock);
|
|
|
57
68
|
var Form__default = /*#__PURE__*/_interopDefaultLegacy(Form);
|
|
58
69
|
var Input__default = /*#__PURE__*/_interopDefaultLegacy(Input);
|
|
59
70
|
var Radio__default = /*#__PURE__*/_interopDefaultLegacy(Radio);
|
|
60
|
-
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
61
71
|
var Delete__default = /*#__PURE__*/_interopDefaultLegacy(Delete);
|
|
72
|
+
var SubHeader__default = /*#__PURE__*/_interopDefaultLegacy(SubHeader);
|
|
73
|
+
var TableWrapper__default = /*#__PURE__*/_interopDefaultLegacy(TableWrapper);
|
|
74
|
+
var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
|
|
62
75
|
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
|
76
|
+
var NoData__default = /*#__PURE__*/_interopDefaultLegacy(NoData);
|
|
77
|
+
var Pane__default = /*#__PURE__*/_interopDefaultLegacy(Pane);
|
|
78
|
+
var Table__default = /*#__PURE__*/_interopDefaultLegacy(Table);
|
|
79
|
+
var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
|
|
80
|
+
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
81
|
+
var Modal__default = /*#__PURE__*/_interopDefaultLegacy(Modal);
|
|
82
|
+
var MultiEmailInput__default = /*#__PURE__*/_interopDefaultLegacy(MultiEmailInput);
|
|
83
|
+
var MoreDropdown__default = /*#__PURE__*/_interopDefaultLegacy(MoreDropdown);
|
|
84
|
+
var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
|
|
63
85
|
var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
|
|
64
86
|
var NeetoHeader__default = /*#__PURE__*/_interopDefaultLegacy(NeetoHeader);
|
|
65
87
|
var HelpPopover__default = /*#__PURE__*/_interopDefaultLegacy(HelpPopover);
|
|
@@ -105,8 +127,461 @@ function _defineProperty(obj, key, value) {
|
|
|
105
127
|
return obj;
|
|
106
128
|
}
|
|
107
129
|
|
|
130
|
+
function _arrayWithHoles(arr) {
|
|
131
|
+
if (Array.isArray(arr)) return arr;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function _iterableToArrayLimit(r, l) {
|
|
135
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
136
|
+
if (null != t) {
|
|
137
|
+
var e,
|
|
138
|
+
n,
|
|
139
|
+
i,
|
|
140
|
+
u,
|
|
141
|
+
a = [],
|
|
142
|
+
f = !0,
|
|
143
|
+
o = !1;
|
|
144
|
+
try {
|
|
145
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
146
|
+
if (Object(t) !== t) return;
|
|
147
|
+
f = !1;
|
|
148
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
149
|
+
} catch (r) {
|
|
150
|
+
o = !0, n = r;
|
|
151
|
+
} finally {
|
|
152
|
+
try {
|
|
153
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
154
|
+
} finally {
|
|
155
|
+
if (o) throw n;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return a;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function _arrayLikeToArray(arr, len) {
|
|
163
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
164
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
165
|
+
return arr2;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
169
|
+
if (!o) return;
|
|
170
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
171
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
172
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
173
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
174
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function _nonIterableRest() {
|
|
178
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
function _slicedToArray(arr, i) {
|
|
182
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
186
|
+
if (source == null) return {};
|
|
187
|
+
var target = {};
|
|
188
|
+
var sourceKeys = Object.keys(source);
|
|
189
|
+
var key, i;
|
|
190
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
191
|
+
key = sourceKeys[i];
|
|
192
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
193
|
+
target[key] = source[key];
|
|
194
|
+
}
|
|
195
|
+
return target;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function _objectWithoutProperties(source, excluded) {
|
|
199
|
+
if (source == null) return {};
|
|
200
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
201
|
+
var key, i;
|
|
202
|
+
if (Object.getOwnPropertySymbols) {
|
|
203
|
+
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
204
|
+
for (i = 0; i < sourceSymbolKeys.length; i++) {
|
|
205
|
+
key = sourceSymbolKeys[i];
|
|
206
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
207
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
208
|
+
target[key] = source[key];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return target;
|
|
212
|
+
}
|
|
213
|
+
|
|
108
214
|
var ACCESS_CONTROL_BASE_PATH = "/secure/api/v1";
|
|
109
215
|
|
|
216
|
+
var invitationsPath = "".concat(ACCESS_CONTROL_BASE_PATH, "/configuration/invitations");
|
|
217
|
+
var list = function list(params) {
|
|
218
|
+
return axios__default["default"].get(invitationsPath, {
|
|
219
|
+
params: params
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
var bulkCreate = function bulkCreate(_ref) {
|
|
223
|
+
var configurationId = _ref.configurationId,
|
|
224
|
+
payload = _ref.payload;
|
|
225
|
+
return axios__default["default"].post("".concat(invitationsPath, "/bulk_create"), payload, {
|
|
226
|
+
params: {
|
|
227
|
+
neetoAccessControlConfigurationId: configurationId
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
var bulkDestroy = function bulkDestroy(_ref2) {
|
|
232
|
+
var configurationId = _ref2.configurationId,
|
|
233
|
+
payload = _ref2.payload;
|
|
234
|
+
return axios__default["default"].post("".concat(invitationsPath, "/bulk_destroy"), payload, {
|
|
235
|
+
params: {
|
|
236
|
+
neetoAccessControlConfigurationId: configurationId
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
};
|
|
240
|
+
var invitationsApi = {
|
|
241
|
+
list: list,
|
|
242
|
+
bulkDestroy: bulkDestroy,
|
|
243
|
+
bulkCreate: bulkCreate
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
var QUERY_KEYS = {
|
|
247
|
+
ACCESS_CONTROL_CONFIGURATION: "access-control-configuration",
|
|
248
|
+
ACCESS_CONTROL_CONFIGURATION_INVITATIONS: "access-control-configuration-invitations"
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
var _excluded = ["ownerId", "ownerType"];
|
|
252
|
+
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
253
|
+
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
254
|
+
var ACCESS_CONTROL_CONFIGURATION_INVITATIONS$1 = QUERY_KEYS.ACCESS_CONTROL_CONFIGURATION_INVITATIONS;
|
|
255
|
+
var useListInvitations = function useListInvitations(_ref, options) {
|
|
256
|
+
var ownerId = _ref.ownerId,
|
|
257
|
+
ownerType = _ref.ownerType,
|
|
258
|
+
otherParams = _objectWithoutProperties(_ref, _excluded);
|
|
259
|
+
return reactQuery.useQuery(_objectSpread$3({
|
|
260
|
+
queryKey: [ACCESS_CONTROL_CONFIGURATION_INVITATIONS$1, ownerType, ownerId, otherParams],
|
|
261
|
+
queryFn: function queryFn() {
|
|
262
|
+
return invitationsApi.list(otherParams);
|
|
263
|
+
},
|
|
264
|
+
staleTime: constants.DEFAULT_STALE_TIME
|
|
265
|
+
}, options));
|
|
266
|
+
};
|
|
267
|
+
var useBulkCreateInvitations = function useBulkCreateInvitations(_ref2, options) {
|
|
268
|
+
var configurationId = _ref2.configurationId,
|
|
269
|
+
ownerId = _ref2.ownerId,
|
|
270
|
+
ownerType = _ref2.ownerType;
|
|
271
|
+
return reactUtils.useMutationWithInvalidation(function (payload) {
|
|
272
|
+
return invitationsApi.bulkCreate({
|
|
273
|
+
configurationId: configurationId,
|
|
274
|
+
payload: payload
|
|
275
|
+
});
|
|
276
|
+
}, _objectSpread$3({
|
|
277
|
+
keysToInvalidate: [[ACCESS_CONTROL_CONFIGURATION_INVITATIONS$1, ownerType, ownerId]]
|
|
278
|
+
}, options));
|
|
279
|
+
};
|
|
280
|
+
var useBulkDestroyInvitations = function useBulkDestroyInvitations(_ref3, options) {
|
|
281
|
+
var configurationId = _ref3.configurationId,
|
|
282
|
+
ownerId = _ref3.ownerId,
|
|
283
|
+
ownerType = _ref3.ownerType;
|
|
284
|
+
return reactUtils.useMutationWithInvalidation(function (payload) {
|
|
285
|
+
return invitationsApi.bulkDestroy({
|
|
286
|
+
configurationId: configurationId,
|
|
287
|
+
payload: payload
|
|
288
|
+
});
|
|
289
|
+
}, _objectSpread$3({
|
|
290
|
+
keysToInvalidate: [[ACCESS_CONTROL_CONFIGURATION_INVITATIONS$1, ownerType, ownerId]]
|
|
291
|
+
}, options));
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
var TRUNCATE_LENGTH = 45;
|
|
295
|
+
var ADD_EMAILS_FORM_INIT_VALUES = {
|
|
296
|
+
emails: []
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
var AddEmails = function AddEmails(_ref) {
|
|
300
|
+
var isOpen = _ref.isOpen,
|
|
301
|
+
onClose = _ref.onClose,
|
|
302
|
+
configurationId = _ref.configurationId,
|
|
303
|
+
ownerType = _ref.ownerType,
|
|
304
|
+
ownerId = _ref.ownerId;
|
|
305
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
306
|
+
t = _useTranslation.t;
|
|
307
|
+
var emailsInputRef = react.useRef();
|
|
308
|
+
var _useBulkCreateInvitat = useBulkCreateInvitations({
|
|
309
|
+
configurationId: configurationId,
|
|
310
|
+
ownerType: ownerType,
|
|
311
|
+
ownerId: ownerId
|
|
312
|
+
}),
|
|
313
|
+
addEmails = _useBulkCreateInvitat.mutate;
|
|
314
|
+
var handleAddEmails = function handleAddEmails(_ref2, _ref3) {
|
|
315
|
+
var emails = _ref2.emails;
|
|
316
|
+
var setSubmitting = _ref3.setSubmitting;
|
|
317
|
+
var payload = {
|
|
318
|
+
emails: ramda.pluck("value", emails)
|
|
319
|
+
};
|
|
320
|
+
addEmails(payload, {
|
|
321
|
+
onSuccess: function onSuccess() {
|
|
322
|
+
onClose();
|
|
323
|
+
},
|
|
324
|
+
onError: function onError() {
|
|
325
|
+
return setSubmitting(false);
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Modal__default["default"], {
|
|
330
|
+
isOpen: isOpen,
|
|
331
|
+
onClose: onClose,
|
|
332
|
+
initialFocusRef: emailsInputRef,
|
|
333
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Modal__default["default"].Header, {
|
|
334
|
+
description: t("neetoAccessControl.addEmails.description"),
|
|
335
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
|
|
336
|
+
style: "h2",
|
|
337
|
+
children: t("neetoAccessControl.buttons.addEmails")
|
|
338
|
+
})
|
|
339
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(Form__default["default"], {
|
|
340
|
+
formikProps: {
|
|
341
|
+
initialValues: ADD_EMAILS_FORM_INIT_VALUES,
|
|
342
|
+
onSubmit: handleAddEmails
|
|
343
|
+
},
|
|
344
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Modal__default["default"].Body, {
|
|
345
|
+
children: /*#__PURE__*/jsxRuntime.jsx(MultiEmailInput__default["default"], {
|
|
346
|
+
name: "emails",
|
|
347
|
+
placeholder: t("neetoAccessControl.addEmails.placeholder"),
|
|
348
|
+
ref: emailsInputRef
|
|
349
|
+
})
|
|
350
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Modal__default["default"].Footer, {
|
|
351
|
+
children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
|
|
352
|
+
cancelButtonProps: {
|
|
353
|
+
onClick: onClose
|
|
354
|
+
},
|
|
355
|
+
submitButtonProps: {
|
|
356
|
+
label: t("neetoAccessControl.buttons.addEmails")
|
|
357
|
+
}
|
|
358
|
+
})
|
|
359
|
+
})]
|
|
360
|
+
})]
|
|
361
|
+
});
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
var renderColumnData = function renderColumnData(_ref) {
|
|
365
|
+
var onDelete = _ref.onDelete;
|
|
366
|
+
return [{
|
|
367
|
+
title: i18next.t("neetoAccessControl.titles.emails"),
|
|
368
|
+
dataIndex: "email",
|
|
369
|
+
key: "email",
|
|
370
|
+
width: 75,
|
|
371
|
+
render: function render(email, inviteData) {
|
|
372
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
373
|
+
className: "flex items-center justify-between gap-x-3",
|
|
374
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Tooltip__default["default"], {
|
|
375
|
+
content: email,
|
|
376
|
+
disabled: email.length < TRUNCATE_LENGTH,
|
|
377
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
|
|
378
|
+
style: "body2",
|
|
379
|
+
children: neetoCist.truncate(email, TRUNCATE_LENGTH)
|
|
380
|
+
})
|
|
381
|
+
}), /*#__PURE__*/jsxRuntime.jsx(MoreDropdown__default["default"], {
|
|
382
|
+
dropdownProps: {
|
|
383
|
+
strategy: "fixed"
|
|
384
|
+
},
|
|
385
|
+
menuItems: [{
|
|
386
|
+
key: "delete",
|
|
387
|
+
label: i18next.t("neetoAccessControl.labels.delete"),
|
|
388
|
+
onClick: function onClick() {
|
|
389
|
+
return onDelete(inviteData);
|
|
390
|
+
}
|
|
391
|
+
}]
|
|
392
|
+
})]
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
}, {
|
|
396
|
+
title: i18next.t("neetoAccessControl.titles.status"),
|
|
397
|
+
dataIndex: "status",
|
|
398
|
+
key: "status",
|
|
399
|
+
width: 75,
|
|
400
|
+
render: function render(status) {
|
|
401
|
+
return neetoCist.humanize(status);
|
|
402
|
+
}
|
|
403
|
+
}];
|
|
404
|
+
};
|
|
405
|
+
|
|
406
|
+
var Invitations = function Invitations(_ref) {
|
|
407
|
+
var _selectedEmails$;
|
|
408
|
+
var invitationsTableColumnData = _ref.invitationsTableColumnData,
|
|
409
|
+
configurationId = _ref.configurationId,
|
|
410
|
+
ownerType = _ref.ownerType,
|
|
411
|
+
ownerId = _ref.ownerId,
|
|
412
|
+
isOpen = _ref.isOpen,
|
|
413
|
+
onClose = _ref.onClose;
|
|
414
|
+
var _useState = react.useState([]),
|
|
415
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
416
|
+
selectedEmails = _useState2[0],
|
|
417
|
+
setSelectedEmails = _useState2[1];
|
|
418
|
+
var _useState3 = react.useState(false),
|
|
419
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
420
|
+
showDeleteAlert = _useState4[0],
|
|
421
|
+
setShowDeleteAlert = _useState4[1];
|
|
422
|
+
var _useState5 = react.useState(false),
|
|
423
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
424
|
+
showAddEmails = _useState6[0],
|
|
425
|
+
setShowAddEmails = _useState6[1];
|
|
426
|
+
var _useState7 = react.useState(constants.DEFAULT_PAGE_INDEX),
|
|
427
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
428
|
+
page = _useState8[0],
|
|
429
|
+
setPage = _useState8[1];
|
|
430
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
431
|
+
t = _useTranslation.t;
|
|
432
|
+
var _useListInvitations = useListInvitations({
|
|
433
|
+
neetoAccessControlConfigurationId: configurationId,
|
|
434
|
+
ownerType: ownerType,
|
|
435
|
+
ownerId: ownerId,
|
|
436
|
+
page: page,
|
|
437
|
+
pageSize: constants.DEFAULT_PAGE_SIZE
|
|
438
|
+
}, {
|
|
439
|
+
enabled: isOpen
|
|
440
|
+
}),
|
|
441
|
+
_useListInvitations$d = _useListInvitations.data,
|
|
442
|
+
_useListInvitations$d2 = _useListInvitations$d === void 0 ? {} : _useListInvitations$d,
|
|
443
|
+
_useListInvitations$d3 = _useListInvitations$d2.invitations,
|
|
444
|
+
invitations = _useListInvitations$d3 === void 0 ? [] : _useListInvitations$d3,
|
|
445
|
+
_useListInvitations$d4 = _useListInvitations$d2.totalCount,
|
|
446
|
+
totalCount = _useListInvitations$d4 === void 0 ? 0 : _useListInvitations$d4,
|
|
447
|
+
isFetching = _useListInvitations.isFetching,
|
|
448
|
+
isLoading = _useListInvitations.isLoading;
|
|
449
|
+
var _useBulkDestroyInvita = useBulkDestroyInvitations({
|
|
450
|
+
configurationId: configurationId,
|
|
451
|
+
ownerType: ownerType,
|
|
452
|
+
ownerId: ownerId
|
|
453
|
+
}),
|
|
454
|
+
deleteEmailInvites = _useBulkDestroyInvita.mutate,
|
|
455
|
+
isPending = _useBulkDestroyInvita.isPending;
|
|
456
|
+
var handleAddEmails = function handleAddEmails() {
|
|
457
|
+
setShowAddEmails(true);
|
|
458
|
+
};
|
|
459
|
+
var handleOnClose = function handleOnClose() {
|
|
460
|
+
onClose();
|
|
461
|
+
setSelectedEmails([]);
|
|
462
|
+
};
|
|
463
|
+
var handleDeleteEmailInvites = function handleDeleteEmailInvites() {
|
|
464
|
+
var payload = {
|
|
465
|
+
emails: ramda.pluck("email", selectedEmails)
|
|
466
|
+
};
|
|
467
|
+
deleteEmailInvites(payload, {
|
|
468
|
+
onSuccess: function onSuccess() {
|
|
469
|
+
setSelectedEmails([]);
|
|
470
|
+
setShowDeleteAlert(false);
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
};
|
|
474
|
+
var handleDeleteAction = function handleDeleteAction(inviteData) {
|
|
475
|
+
setSelectedEmails([inviteData]);
|
|
476
|
+
setShowDeleteAlert(true);
|
|
477
|
+
};
|
|
478
|
+
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
479
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(Pane__default["default"], {
|
|
480
|
+
isOpen: isOpen,
|
|
481
|
+
size: "large",
|
|
482
|
+
onClose: handleOnClose,
|
|
483
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Header, {
|
|
484
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
|
|
485
|
+
style: "h2",
|
|
486
|
+
weight: "semibold",
|
|
487
|
+
children: t("neetoAccessControl.titles.invitations")
|
|
488
|
+
})
|
|
489
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Pane__default["default"].Body, {
|
|
490
|
+
className: "pt-2",
|
|
491
|
+
children: neetoCist.isNotEmpty(invitations) ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
492
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(SubHeader__default["default"], {
|
|
493
|
+
leftActionBlock: ramda.isEmpty(selectedEmails) ? /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
|
|
494
|
+
component: "h4",
|
|
495
|
+
style: "h4",
|
|
496
|
+
children: t("neetoAccessControl.titles.emailsWithCount", {
|
|
497
|
+
count: totalCount
|
|
498
|
+
})
|
|
499
|
+
}) : /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
500
|
+
className: "flex items-center gap-4",
|
|
501
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
|
|
502
|
+
style: "h4",
|
|
503
|
+
children: t("neetoAccessControl.titles.selectedEmailsWithCount", {
|
|
504
|
+
count: selectedEmails.length,
|
|
505
|
+
totalCount: totalCount
|
|
506
|
+
})
|
|
507
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
|
|
508
|
+
icon: Delete__default["default"],
|
|
509
|
+
style: "secondary",
|
|
510
|
+
tooltipProps: {
|
|
511
|
+
content: t("neetoAccessControl.labels.delete")
|
|
512
|
+
},
|
|
513
|
+
onClick: function onClick() {
|
|
514
|
+
return setShowDeleteAlert(true);
|
|
515
|
+
}
|
|
516
|
+
})]
|
|
517
|
+
}),
|
|
518
|
+
rightActionBlock: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
|
|
519
|
+
label: t("neetoAccessControl.buttons.addEmails"),
|
|
520
|
+
onClick: handleAddEmails
|
|
521
|
+
})
|
|
522
|
+
}), /*#__PURE__*/jsxRuntime.jsx(TableWrapper__default["default"], {
|
|
523
|
+
hasPagination: totalCount > constants.DEFAULT_PAGE_SIZE,
|
|
524
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Table__default["default"], {
|
|
525
|
+
totalCount: totalCount,
|
|
526
|
+
fixedHeight: true,
|
|
527
|
+
rowSelection: true,
|
|
528
|
+
currentPageNumber: page,
|
|
529
|
+
handlePageChange: setPage,
|
|
530
|
+
loading: isFetching,
|
|
531
|
+
rowData: invitations,
|
|
532
|
+
selectedRowKeys: ramda.pluck("id", selectedEmails),
|
|
533
|
+
columnData: invitationsTableColumnData !== null && invitationsTableColumnData !== void 0 ? invitationsTableColumnData : renderColumnData({
|
|
534
|
+
onDelete: handleDeleteAction
|
|
535
|
+
}),
|
|
536
|
+
onRowSelect: function onRowSelect(_, selectedRows) {
|
|
537
|
+
return setSelectedEmails(selectedRows);
|
|
538
|
+
}
|
|
539
|
+
})
|
|
540
|
+
})]
|
|
541
|
+
}) : /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
542
|
+
className: "flex h-full w-full justify-center",
|
|
543
|
+
children: [!isLoading && /*#__PURE__*/jsxRuntime.jsx(NoData__default["default"], {
|
|
544
|
+
title: t("neetoAccessControl.labels.noInvitations"),
|
|
545
|
+
primaryButtonProps: {
|
|
546
|
+
label: t("neetoAccessControl.buttons.addEmails"),
|
|
547
|
+
onClick: handleAddEmails
|
|
548
|
+
}
|
|
549
|
+
}), isLoading && /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {})]
|
|
550
|
+
})
|
|
551
|
+
})]
|
|
552
|
+
}), /*#__PURE__*/jsxRuntime.jsx(AddEmails, {
|
|
553
|
+
configurationId: configurationId,
|
|
554
|
+
ownerId: ownerId,
|
|
555
|
+
ownerType: ownerType,
|
|
556
|
+
isOpen: showAddEmails,
|
|
557
|
+
onClose: function onClose() {
|
|
558
|
+
return setShowAddEmails(false);
|
|
559
|
+
}
|
|
560
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Alert__default["default"], {
|
|
561
|
+
isOpen: showDeleteAlert,
|
|
562
|
+
isSubmitting: isPending,
|
|
563
|
+
submitButtonLabel: t("neetoAccessControl.labels.delete"),
|
|
564
|
+
message: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
|
|
565
|
+
components: [{
|
|
566
|
+
strong: /*#__PURE__*/jsxRuntime.jsx("strong", {})
|
|
567
|
+
}],
|
|
568
|
+
i18nKey: "neetoAccessControl.alerts.deleteInviation.message",
|
|
569
|
+
values: {
|
|
570
|
+
count: selectedEmails.length,
|
|
571
|
+
email: (_selectedEmails$ = selectedEmails[0]) === null || _selectedEmails$ === void 0 ? void 0 : _selectedEmails$.email
|
|
572
|
+
}
|
|
573
|
+
}),
|
|
574
|
+
title: t("neetoAccessControl.alerts.deleteInviation.title", {
|
|
575
|
+
count: selectedEmails.length
|
|
576
|
+
}),
|
|
577
|
+
onClose: function onClose() {
|
|
578
|
+
return setShowDeleteAlert(false);
|
|
579
|
+
},
|
|
580
|
+
onSubmit: handleDeleteEmailInvites
|
|
581
|
+
})]
|
|
582
|
+
});
|
|
583
|
+
};
|
|
584
|
+
|
|
110
585
|
var configurationPath = "".concat(ACCESS_CONTROL_BASE_PATH, "/configuration");
|
|
111
586
|
var show = function show(params) {
|
|
112
587
|
return axios__default["default"].get(configurationPath, {
|
|
@@ -131,13 +606,10 @@ var configurationsApi = {
|
|
|
131
606
|
update: update
|
|
132
607
|
};
|
|
133
608
|
|
|
134
|
-
var QUERY_KEYS = {
|
|
135
|
-
ACCESS_CONTROL_CONFIGURATION: "access-control-configuration"
|
|
136
|
-
};
|
|
137
|
-
|
|
138
609
|
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
139
610
|
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
140
|
-
var ACCESS_CONTROL_CONFIGURATION = QUERY_KEYS.ACCESS_CONTROL_CONFIGURATION
|
|
611
|
+
var ACCESS_CONTROL_CONFIGURATION = QUERY_KEYS.ACCESS_CONTROL_CONFIGURATION,
|
|
612
|
+
ACCESS_CONTROL_CONFIGURATION_INVITATIONS = QUERY_KEYS.ACCESS_CONTROL_CONFIGURATION_INVITATIONS;
|
|
141
613
|
var useShowConfiguration = function useShowConfiguration(_ref) {
|
|
142
614
|
var ownerId = _ref.ownerId,
|
|
143
615
|
ownerType = _ref.ownerType;
|
|
@@ -163,7 +635,7 @@ var useUpdateConfiguration = function useUpdateConfiguration(_ref2, options) {
|
|
|
163
635
|
payload: payload
|
|
164
636
|
});
|
|
165
637
|
}, _objectSpread$2({
|
|
166
|
-
keysToInvalidate: [[ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId]]
|
|
638
|
+
keysToInvalidate: [[ACCESS_CONTROL_CONFIGURATION, ownerType, ownerId], [ACCESS_CONTROL_CONFIGURATION_INVITATIONS, ownerType, ownerId]]
|
|
167
639
|
}, options));
|
|
168
640
|
};
|
|
169
641
|
|
|
@@ -171,7 +643,8 @@ var AUTH = {
|
|
|
171
643
|
NO: "no",
|
|
172
644
|
EMAIL: "email",
|
|
173
645
|
BASIC: "basic",
|
|
174
|
-
SESSION: "session"
|
|
646
|
+
SESSION: "session",
|
|
647
|
+
INVITED: "invited"
|
|
175
648
|
};
|
|
176
649
|
var AUTH_OPTIONS = [{
|
|
177
650
|
label: i18next.t("neetoAccessControl.auth.no"),
|
|
@@ -181,6 +654,9 @@ var AUTH_OPTIONS = [{
|
|
|
181
654
|
label: i18next.t("neetoAccessControl.auth.basic"),
|
|
182
655
|
value: AUTH.BASIC,
|
|
183
656
|
"data-cy": neetoCist.hyphenate(i18next.t("neetoAccessControl.auth.basic"))
|
|
657
|
+
}, {
|
|
658
|
+
label: i18next.t("neetoAccessControl.auth.invited"),
|
|
659
|
+
value: AUTH.INVITED
|
|
184
660
|
}, {
|
|
185
661
|
label: i18next.t("neetoAccessControl.auth.email"),
|
|
186
662
|
value: AUTH.EMAIL,
|
|
@@ -240,6 +716,20 @@ var buildPayload = function buildPayload(values) {
|
|
|
240
716
|
}
|
|
241
717
|
return payload;
|
|
242
718
|
};
|
|
719
|
+
var renderLabelWithViewInvitation = function renderLabelWithViewInvitation(_ref2) {
|
|
720
|
+
var onViewInvites = _ref2.onViewInvites;
|
|
721
|
+
return /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
|
|
722
|
+
i18nKey: "neetoAccessControl.auth.invitedWithViewButton",
|
|
723
|
+
components: {
|
|
724
|
+
button: /*#__PURE__*/jsxRuntime.jsx(Button__default["default"], {
|
|
725
|
+
className: "mt-1",
|
|
726
|
+
size: "small",
|
|
727
|
+
style: "link",
|
|
728
|
+
onClick: onViewInvites
|
|
729
|
+
})
|
|
730
|
+
}
|
|
731
|
+
});
|
|
732
|
+
};
|
|
243
733
|
|
|
244
734
|
var AllowedKeywords = reactUtils.withT(function (_ref) {
|
|
245
735
|
var t = _ref.t,
|
|
@@ -319,11 +809,19 @@ var Configuration = function Configuration(_ref) {
|
|
|
319
809
|
var ownerId = _ref.ownerId,
|
|
320
810
|
ownerType = _ref.ownerType,
|
|
321
811
|
onReset = _ref.onReset,
|
|
322
|
-
|
|
812
|
+
_onSuccess = _ref.onSuccess,
|
|
323
813
|
headerProps = _ref.headerProps,
|
|
324
814
|
className = _ref.className,
|
|
325
815
|
_ref$handleCancel = _ref.handleCancel,
|
|
326
|
-
handleCancel = _ref$handleCancel === void 0 ? neetoCist.noop : _ref$handleCancel
|
|
816
|
+
handleCancel = _ref$handleCancel === void 0 ? neetoCist.noop : _ref$handleCancel,
|
|
817
|
+
_ref$onConfigurationC = _ref.onConfigurationChangedToInviteOnly,
|
|
818
|
+
onConfigurationChangedToInviteOnly = _ref$onConfigurationC === void 0 ? neetoCist.noop : _ref$onConfigurationC,
|
|
819
|
+
_ref$invitationsTable = _ref.invitationsTableColumnData,
|
|
820
|
+
invitationsTableColumnData = _ref$invitationsTable === void 0 ? null : _ref$invitationsTable;
|
|
821
|
+
var _useState = react.useState(false),
|
|
822
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
823
|
+
showInviationsPane = _useState2[0],
|
|
824
|
+
setShowInviationsPane = _useState2[1];
|
|
327
825
|
var _useTranslation = reactI18next.useTranslation(),
|
|
328
826
|
t = _useTranslation.t;
|
|
329
827
|
var _useShowConfiguration = useShowConfiguration({
|
|
@@ -332,13 +830,22 @@ var Configuration = function Configuration(_ref) {
|
|
|
332
830
|
}),
|
|
333
831
|
_useShowConfiguration2 = _useShowConfiguration.data,
|
|
334
832
|
configuration = _useShowConfiguration2 === void 0 ? {} : _useShowConfiguration2,
|
|
335
|
-
isLoading = _useShowConfiguration.isLoading
|
|
833
|
+
isLoading = _useShowConfiguration.isLoading,
|
|
834
|
+
isFetching = _useShowConfiguration.isFetching;
|
|
336
835
|
var configurationInitialValues = buildConfigurationInitialValues(configuration);
|
|
337
836
|
var _useUpdateConfigurati = useUpdateConfiguration({
|
|
338
837
|
ownerId: ownerId,
|
|
339
838
|
ownerType: ownerType
|
|
340
839
|
}, {
|
|
341
|
-
onSuccess: onSuccess
|
|
840
|
+
onSuccess: function onSuccess(values) {
|
|
841
|
+
var _values$configuration = values.configuration,
|
|
842
|
+
_values$configuration2 = _values$configuration === void 0 ? {} : _values$configuration,
|
|
843
|
+
auth = _values$configuration2.auth;
|
|
844
|
+
if (auth === AUTH.INVITED) {
|
|
845
|
+
handleShowInvitations();
|
|
846
|
+
}
|
|
847
|
+
_onSuccess(values);
|
|
848
|
+
}
|
|
342
849
|
}),
|
|
343
850
|
updateConfiguration = _useUpdateConfigurati.mutate;
|
|
344
851
|
var handleSubmit = function handleSubmit(values, _ref2) {
|
|
@@ -350,12 +857,15 @@ var Configuration = function Configuration(_ref) {
|
|
|
350
857
|
}
|
|
351
858
|
});
|
|
352
859
|
};
|
|
860
|
+
var handleShowInvitations = onConfigurationChangedToInviteOnly === neetoCist.noop ? function () {
|
|
861
|
+
return setShowInviationsPane(true);
|
|
862
|
+
} : onConfigurationChangedToInviteOnly;
|
|
353
863
|
return /*#__PURE__*/jsxRuntime.jsxs(Container__default["default"], {
|
|
354
864
|
children: [/*#__PURE__*/jsxRuntime.jsx(Header, {
|
|
355
865
|
headerProps: headerProps
|
|
356
|
-
}), isLoading ? /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {}) : /*#__PURE__*/jsxRuntime.
|
|
866
|
+
}), isLoading ? /*#__PURE__*/jsxRuntime.jsx(PageLoader__default["default"], {}) : /*#__PURE__*/jsxRuntime.jsxs(Scrollable__default["default"], {
|
|
357
867
|
className: "w-full",
|
|
358
|
-
children: /*#__PURE__*/jsxRuntime.jsx(Form__default["default"], {
|
|
868
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(Form__default["default"], {
|
|
359
869
|
className: classNames__default["default"]("space-y-6", className),
|
|
360
870
|
formikProps: {
|
|
361
871
|
initialValues: configurationInitialValues,
|
|
@@ -375,7 +885,20 @@ var Configuration = function Configuration(_ref) {
|
|
|
375
885
|
name: "auth",
|
|
376
886
|
children: AUTH_OPTIONS.map(function (props) {
|
|
377
887
|
return /*#__PURE__*/react.createElement(Radio__default["default"].Item, _objectSpread(_objectSpread({}, props), {}, {
|
|
378
|
-
key: props.value
|
|
888
|
+
key: props.value,
|
|
889
|
+
className: classNames__default["default"]({
|
|
890
|
+
"items-start": (configuration === null || configuration === void 0 ? void 0 : configuration.auth) === props.value && (configuration === null || configuration === void 0 ? void 0 : configuration.auth) === AUTH.INVITED
|
|
891
|
+
}),
|
|
892
|
+
label: (configuration === null || configuration === void 0 ? void 0 : configuration.auth) === props.value && (configuration === null || configuration === void 0 ? void 0 : configuration.auth) === AUTH.INVITED ? renderLabelWithViewInvitation({
|
|
893
|
+
onViewInvites: function onViewInvites() {
|
|
894
|
+
return setShowInviationsPane(true);
|
|
895
|
+
}
|
|
896
|
+
}) : props.label,
|
|
897
|
+
labelProps: {
|
|
898
|
+
className: classNames__default["default"]({
|
|
899
|
+
"flex flex-col items-start justify-start": (configuration === null || configuration === void 0 ? void 0 : configuration.auth) === props.value && (configuration === null || configuration === void 0 ? void 0 : configuration.auth) === AUTH.INVITED
|
|
900
|
+
})
|
|
901
|
+
}
|
|
379
902
|
}));
|
|
380
903
|
})
|
|
381
904
|
}), values.auth === AUTH.BASIC && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
@@ -395,11 +918,23 @@ var Configuration = function Configuration(_ref) {
|
|
|
395
918
|
}), /*#__PURE__*/jsxRuntime.jsx(ActionBlock__default["default"], {
|
|
396
919
|
cancelButtonProps: {
|
|
397
920
|
onClick: handleCancel
|
|
398
|
-
}
|
|
921
|
+
},
|
|
922
|
+
submitButtonProps: values.auth === AUTH.INVITED ? {
|
|
923
|
+
label: t("neetoAccessControl.buttons.saveChangesAndInvite")
|
|
924
|
+
} : {}
|
|
399
925
|
})]
|
|
400
926
|
});
|
|
401
927
|
}
|
|
402
|
-
})
|
|
928
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Invitations, {
|
|
929
|
+
invitationsTableColumnData: invitationsTableColumnData,
|
|
930
|
+
ownerId: ownerId,
|
|
931
|
+
ownerType: ownerType,
|
|
932
|
+
configurationId: configuration.id,
|
|
933
|
+
isOpen: showInviationsPane && !isFetching,
|
|
934
|
+
onClose: function onClose() {
|
|
935
|
+
return setShowInviationsPane(false);
|
|
936
|
+
}
|
|
937
|
+
})]
|
|
403
938
|
})]
|
|
404
939
|
});
|
|
405
940
|
};
|