@bigbinary/neeto-api-keys-frontend 2.0.0 → 2.2.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/dist/ApiKeys.js +748 -0
- package/dist/ApiKeys.js.map +1 -0
- package/dist/{index.cjs.js → cjs/ApiKeys.js} +108 -95
- package/dist/cjs/ApiKeys.js.map +1 -0
- package/dist/cjs/index.js +44 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/index.js +35 -732
- package/dist/index.js.map +1 -1
- package/package.json +27 -13
- package/dist/index.cjs.js.map +0 -1
package/dist/ApiKeys.js
ADDED
|
@@ -0,0 +1,748 @@
|
|
|
1
|
+
import { useState, useEffect, useRef } from 'react';
|
|
2
|
+
import { t } from 'i18next';
|
|
3
|
+
import { isNotEmpty, isPresent, isNotPresent } from '@bigbinary/neeto-cist';
|
|
4
|
+
import { DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
|
|
5
|
+
import { useMutationWithInvalidation, withT, withTitle, useQueryParams, useDebounce } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
6
|
+
import Header from '@bigbinary/neeto-molecules/Header';
|
|
7
|
+
import HelpPopover from '@bigbinary/neeto-molecules/HelpPopover';
|
|
8
|
+
import Alert from '@bigbinary/neetoui/Alert';
|
|
9
|
+
import Button from '@bigbinary/neetoui/Button';
|
|
10
|
+
import { useTranslation, Trans } from 'react-i18next';
|
|
11
|
+
import { isEmpty, prop } from 'ramda';
|
|
12
|
+
import { useHistory } from 'react-router-dom';
|
|
13
|
+
import { getQueryParams, buildUrl, dateFormat } from '@bigbinary/neeto-commons-frontend/utils';
|
|
14
|
+
import { globalProps as globalProps$1 } from '@bigbinary/neeto-commons-frontend/initializers';
|
|
15
|
+
import { useQuery } from '@tanstack/react-query';
|
|
16
|
+
import axios from 'axios';
|
|
17
|
+
import Pane from '@bigbinary/neetoui/Pane';
|
|
18
|
+
import Typography from '@bigbinary/neetoui/Typography';
|
|
19
|
+
import NeetoUIForm from '@bigbinary/neetoui/formik/Form';
|
|
20
|
+
import Input from '@bigbinary/neetoui/formik/Input';
|
|
21
|
+
import Checkbox from '@bigbinary/neetoui/formik/Checkbox';
|
|
22
|
+
import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
|
|
23
|
+
import { Field } from 'formik';
|
|
24
|
+
import NeetoUIDatePicker from '@bigbinary/neetoui/DatePicker';
|
|
25
|
+
import dayjs from 'dayjs';
|
|
26
|
+
import CopyToClipboardButton from '@bigbinary/neeto-molecules/CopyToClipboardButton';
|
|
27
|
+
import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
|
|
28
|
+
import Tag from '@bigbinary/neetoui/Tag';
|
|
29
|
+
import * as yup from 'yup';
|
|
30
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
31
|
+
import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
|
|
32
|
+
import TableWrapper from '@bigbinary/neeto-molecules/TableWrapper';
|
|
33
|
+
import NeetoUITable from '@bigbinary/neetoui/Table';
|
|
34
|
+
import NoData from '@bigbinary/neetoui/NoData';
|
|
35
|
+
|
|
36
|
+
function _typeof(o) {
|
|
37
|
+
"@babel/helpers - typeof";
|
|
38
|
+
|
|
39
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
|
40
|
+
return typeof o;
|
|
41
|
+
} : function (o) {
|
|
42
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
43
|
+
}, _typeof(o);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function _toPrimitive(input, hint) {
|
|
47
|
+
if (_typeof(input) !== "object" || input === null) return input;
|
|
48
|
+
var prim = input[Symbol.toPrimitive];
|
|
49
|
+
if (prim !== undefined) {
|
|
50
|
+
var res = prim.call(input, hint || "default");
|
|
51
|
+
if (_typeof(res) !== "object") return res;
|
|
52
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
53
|
+
}
|
|
54
|
+
return (hint === "string" ? String : Number)(input);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function _toPropertyKey(arg) {
|
|
58
|
+
var key = _toPrimitive(arg, "string");
|
|
59
|
+
return _typeof(key) === "symbol" ? key : String(key);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _defineProperty(obj, key, value) {
|
|
63
|
+
key = _toPropertyKey(key);
|
|
64
|
+
if (key in obj) {
|
|
65
|
+
Object.defineProperty(obj, key, {
|
|
66
|
+
value: value,
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true,
|
|
69
|
+
writable: true
|
|
70
|
+
});
|
|
71
|
+
} else {
|
|
72
|
+
obj[key] = value;
|
|
73
|
+
}
|
|
74
|
+
return obj;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function _arrayWithHoles(arr) {
|
|
78
|
+
if (Array.isArray(arr)) return arr;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function _iterableToArrayLimit(r, l) {
|
|
82
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
83
|
+
if (null != t) {
|
|
84
|
+
var e,
|
|
85
|
+
n,
|
|
86
|
+
i,
|
|
87
|
+
u,
|
|
88
|
+
a = [],
|
|
89
|
+
f = !0,
|
|
90
|
+
o = !1;
|
|
91
|
+
try {
|
|
92
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
93
|
+
if (Object(t) !== t) return;
|
|
94
|
+
f = !1;
|
|
95
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
96
|
+
} catch (r) {
|
|
97
|
+
o = !0, n = r;
|
|
98
|
+
} finally {
|
|
99
|
+
try {
|
|
100
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
101
|
+
} finally {
|
|
102
|
+
if (o) throw n;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return a;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function _arrayLikeToArray(arr, len) {
|
|
110
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
111
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
112
|
+
return arr2;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
116
|
+
if (!o) return;
|
|
117
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
118
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
119
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
120
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
121
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function _nonIterableRest() {
|
|
125
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function _slicedToArray(arr, i) {
|
|
129
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
var getPageFromSearchParams = function getPageFromSearchParams() {
|
|
133
|
+
var _getQueryParams = getQueryParams(),
|
|
134
|
+
page = _getQueryParams.page;
|
|
135
|
+
return parseInt(page) || DEFAULT_PAGE_INDEX;
|
|
136
|
+
};
|
|
137
|
+
var setPageSearchParam = function setPageSearchParam(_ref) {
|
|
138
|
+
var page = _ref.page,
|
|
139
|
+
history = _ref.history;
|
|
140
|
+
var searchParams = page !== DEFAULT_PAGE_INDEX && buildUrl("", {
|
|
141
|
+
page: page
|
|
142
|
+
});
|
|
143
|
+
history.push({
|
|
144
|
+
search: searchParams
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
var usePagination = function usePagination(_ref) {
|
|
149
|
+
var searchTerm = _ref.searchTerm;
|
|
150
|
+
var _useState = useState(getPageFromSearchParams),
|
|
151
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
152
|
+
currentPage = _useState2[0],
|
|
153
|
+
setCurrentPage = _useState2[1];
|
|
154
|
+
var history = useHistory();
|
|
155
|
+
useEffect(function () {
|
|
156
|
+
handlePageChange(getPageFromSearchParams());
|
|
157
|
+
}, []);
|
|
158
|
+
useEffect(function () {
|
|
159
|
+
if (isNotEmpty(searchTerm) && currentPage !== DEFAULT_PAGE_INDEX) {
|
|
160
|
+
handlePageChange(DEFAULT_PAGE_INDEX);
|
|
161
|
+
}
|
|
162
|
+
}, [searchTerm]);
|
|
163
|
+
var handlePageChange = function handlePageChange(page) {
|
|
164
|
+
setCurrentPage(page);
|
|
165
|
+
setPageSearchParam({
|
|
166
|
+
page: page,
|
|
167
|
+
history: history
|
|
168
|
+
});
|
|
169
|
+
};
|
|
170
|
+
var onFetchSuccess = function onFetchSuccess(_ref2) {
|
|
171
|
+
var totalCount = _ref2.totalCount,
|
|
172
|
+
apiKeys = _ref2.apiKeys;
|
|
173
|
+
if (totalCount !== 0 && isEmpty(apiKeys)) {
|
|
174
|
+
handlePageChange(DEFAULT_PAGE_INDEX);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
return {
|
|
178
|
+
currentPage: currentPage,
|
|
179
|
+
handlePageChange: handlePageChange,
|
|
180
|
+
onFetchSuccess: onFetchSuccess
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
var API_KEYS_BASE_URL = "/neeto_api_keys_engine/api/v1/api_keys";
|
|
185
|
+
var HELP_DOC_URL = "https://help.".concat(globalProps$1.appName.toLowerCase(), ".com/articles/api-keys");
|
|
186
|
+
|
|
187
|
+
var fetch = function fetch(params) {
|
|
188
|
+
return axios.get(API_KEYS_BASE_URL, {
|
|
189
|
+
params: params
|
|
190
|
+
});
|
|
191
|
+
};
|
|
192
|
+
var create = function create(payload) {
|
|
193
|
+
return axios.post(API_KEYS_BASE_URL, {
|
|
194
|
+
apiKey: payload
|
|
195
|
+
});
|
|
196
|
+
};
|
|
197
|
+
var update = function update(_ref) {
|
|
198
|
+
var id = _ref.id,
|
|
199
|
+
payload = _ref.payload;
|
|
200
|
+
return axios.put("".concat(API_KEYS_BASE_URL, "/").concat(id), {
|
|
201
|
+
apiKey: payload
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
var destroy = function destroy(id) {
|
|
205
|
+
return axios["delete"]("".concat(API_KEYS_BASE_URL, "/").concat(id));
|
|
206
|
+
};
|
|
207
|
+
var apiKeysApi = {
|
|
208
|
+
fetch: fetch,
|
|
209
|
+
create: create,
|
|
210
|
+
update: update,
|
|
211
|
+
destroy: destroy
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
var QUERY_KEYS = {
|
|
215
|
+
API_KEYS: "api-keys"
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
function ownKeys$4(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; }
|
|
219
|
+
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
220
|
+
var useFetchApiKeys = function useFetchApiKeys(_ref) {
|
|
221
|
+
var params = _ref.params,
|
|
222
|
+
_ref$options = _ref.options,
|
|
223
|
+
options = _ref$options === void 0 ? {} : _ref$options;
|
|
224
|
+
return useQuery(_objectSpread$4({
|
|
225
|
+
queryKey: [QUERY_KEYS.API_KEYS, params],
|
|
226
|
+
queryFn: function queryFn() {
|
|
227
|
+
return apiKeysApi.fetch(params);
|
|
228
|
+
}
|
|
229
|
+
}, options));
|
|
230
|
+
};
|
|
231
|
+
var useCreateApiKey = function useCreateApiKey(onSuccess) {
|
|
232
|
+
return useMutationWithInvalidation(apiKeysApi.create, {
|
|
233
|
+
keysToInvalidate: [[QUERY_KEYS.API_KEYS]],
|
|
234
|
+
onSuccess: onSuccess
|
|
235
|
+
});
|
|
236
|
+
};
|
|
237
|
+
var useUpdateApiKey = function useUpdateApiKey(onSuccess) {
|
|
238
|
+
return useMutationWithInvalidation(function (_ref2) {
|
|
239
|
+
var id = _ref2.id,
|
|
240
|
+
payload = _ref2.payload;
|
|
241
|
+
return apiKeysApi.update({
|
|
242
|
+
id: id,
|
|
243
|
+
payload: payload
|
|
244
|
+
});
|
|
245
|
+
}, {
|
|
246
|
+
keysToInvalidate: [[QUERY_KEYS.API_KEYS]],
|
|
247
|
+
onSuccess: onSuccess
|
|
248
|
+
});
|
|
249
|
+
};
|
|
250
|
+
var useDeleteApiKey = function useDeleteApiKey(onSuccess) {
|
|
251
|
+
return useMutationWithInvalidation(apiKeysApi.destroy, {
|
|
252
|
+
keysToInvalidate: [[QUERY_KEYS.API_KEYS]],
|
|
253
|
+
onSuccess: onSuccess
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
var INITIAL_VALUES = {
|
|
258
|
+
expiresAt: null,
|
|
259
|
+
label: "",
|
|
260
|
+
hasNoExpiry: true
|
|
261
|
+
};
|
|
262
|
+
var NEXT_DAY = dayjs().add(1, "day").startOf("day");
|
|
263
|
+
var VALIDATION_SCHEMA = yup.object({
|
|
264
|
+
expiresAt: yup.date().when("hasNoExpiry", function (hasNoExpiry, field) {
|
|
265
|
+
return hasNoExpiry ? field.nullable() : field.nullable().required(t("neetoApiKeys.validations.required", {
|
|
266
|
+
entity: t("neetoApiKeys.fields.expiryDate")
|
|
267
|
+
})).min(NEXT_DAY, t("neetoApiKeys.validations.expiry", {
|
|
268
|
+
date: dateFormat.date(NEXT_DAY)
|
|
269
|
+
}));
|
|
270
|
+
}),
|
|
271
|
+
label: yup.string().required(t("neetoApiKeys.validations.required", {
|
|
272
|
+
entity: t("neetoApiKeys.fields.label")
|
|
273
|
+
}))
|
|
274
|
+
});
|
|
275
|
+
var MENU_ITEMS = {
|
|
276
|
+
EDIT: "edit",
|
|
277
|
+
DELETE: "delete"
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
var isInPast = function isInPast(date) {
|
|
281
|
+
return dayjs(date).isBefore(dayjs());
|
|
282
|
+
};
|
|
283
|
+
var partlyHideToken = function partlyHideToken(key) {
|
|
284
|
+
return key.slice(-4).padStart(20, "*");
|
|
285
|
+
};
|
|
286
|
+
var formatExpiry = function formatExpiry(date) {
|
|
287
|
+
return dayjs(date).diff(dayjs(), "day") <= 2 ? dateFormat.fromNow(date) : dateFormat.date(date);
|
|
288
|
+
};
|
|
289
|
+
var getMenuItems = function getMenuItems(_ref) {
|
|
290
|
+
var onEdit = _ref.onEdit,
|
|
291
|
+
onDelete = _ref.onDelete;
|
|
292
|
+
return [{
|
|
293
|
+
key: MENU_ITEMS.EDIT,
|
|
294
|
+
label: t("neetoApiKeys.buttons.edit"),
|
|
295
|
+
onClick: onEdit
|
|
296
|
+
}, {
|
|
297
|
+
key: MENU_ITEMS.DELETE,
|
|
298
|
+
label: t("neetoApiKeys.buttons.delete"),
|
|
299
|
+
onClick: onDelete
|
|
300
|
+
}];
|
|
301
|
+
};
|
|
302
|
+
var buildColumnData = function buildColumnData(_ref2) {
|
|
303
|
+
var handleDelete = _ref2.handleDelete,
|
|
304
|
+
handleEdit = _ref2.handleEdit;
|
|
305
|
+
return [{
|
|
306
|
+
title: t("neetoApiKeys.table.headers.label"),
|
|
307
|
+
key: "label",
|
|
308
|
+
dataIndex: "label",
|
|
309
|
+
width: 400,
|
|
310
|
+
render: function render(label, apiKey) {
|
|
311
|
+
return /*#__PURE__*/jsxs("div", {
|
|
312
|
+
className: "flex items-center justify-between space-x-3",
|
|
313
|
+
children: [/*#__PURE__*/jsx(Typography, {
|
|
314
|
+
style: "body2",
|
|
315
|
+
children: label
|
|
316
|
+
}), /*#__PURE__*/jsx(MoreDropdown, {
|
|
317
|
+
dropdownProps: {
|
|
318
|
+
strategy: "fixed"
|
|
319
|
+
},
|
|
320
|
+
menuItems: getMenuItems({
|
|
321
|
+
onEdit: function onEdit() {
|
|
322
|
+
return handleEdit(apiKey);
|
|
323
|
+
},
|
|
324
|
+
onDelete: function onDelete() {
|
|
325
|
+
return handleDelete(apiKey);
|
|
326
|
+
}
|
|
327
|
+
})
|
|
328
|
+
})]
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
}, {
|
|
332
|
+
title: t("neetoApiKeys.table.headers.token"),
|
|
333
|
+
key: "token",
|
|
334
|
+
dataIndex: "token",
|
|
335
|
+
width: 400,
|
|
336
|
+
render: function render(token) {
|
|
337
|
+
return /*#__PURE__*/jsxs("div", {
|
|
338
|
+
className: "flex items-center justify-between gap-x-3",
|
|
339
|
+
children: [/*#__PURE__*/jsx(Typography, {
|
|
340
|
+
style: "body2",
|
|
341
|
+
children: partlyHideToken(token)
|
|
342
|
+
}), /*#__PURE__*/jsx(CopyToClipboardButton, {
|
|
343
|
+
style: "text",
|
|
344
|
+
value: token
|
|
345
|
+
})]
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
}, {
|
|
349
|
+
title: t("neetoApiKeys.table.headers.status"),
|
|
350
|
+
key: "status",
|
|
351
|
+
width: 144,
|
|
352
|
+
render: function render(_, _ref3) {
|
|
353
|
+
var expiresAt = _ref3.expiresAt;
|
|
354
|
+
return isPresent(expiresAt) && isInPast(expiresAt) ? /*#__PURE__*/jsx(Tag, {
|
|
355
|
+
style: "warning",
|
|
356
|
+
children: t("neetoApiKeys.tags.expired")
|
|
357
|
+
}) : /*#__PURE__*/jsx(Tag, {
|
|
358
|
+
style: "success",
|
|
359
|
+
children: t("neetoApiKeys.tags.active")
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}, {
|
|
363
|
+
title: t("neetoApiKeys.table.headers.expiresAt"),
|
|
364
|
+
key: "expiresAt",
|
|
365
|
+
dataIndex: "expiresAt",
|
|
366
|
+
width: 200,
|
|
367
|
+
render: function render(expiresAt) {
|
|
368
|
+
return isPresent(expiresAt) ? formatExpiry(expiresAt) : /*#__PURE__*/jsx(Typography, {
|
|
369
|
+
style: "body2",
|
|
370
|
+
children: t("neetoApiKeys.common.never")
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
}, {
|
|
374
|
+
title: t("neetoApiKeys.table.headers.createdAt"),
|
|
375
|
+
key: "createdAt",
|
|
376
|
+
dataIndex: "createdAt",
|
|
377
|
+
width: 200,
|
|
378
|
+
render: function render(createdAt) {
|
|
379
|
+
return isPresent(createdAt) ? dateFormat.dateTime(createdAt) : /*#__PURE__*/jsx(Typography, {
|
|
380
|
+
style: "body2",
|
|
381
|
+
children: t("neetoApiKeys.common.never")
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
}];
|
|
385
|
+
};
|
|
386
|
+
var getStartOfTime = function getStartOfTime(time, unit) {
|
|
387
|
+
return dayjs(time).startOf(unit);
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
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; }
|
|
391
|
+
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; }
|
|
392
|
+
var DatePicker = function DatePicker(_ref) {
|
|
393
|
+
var defaultValue = _ref.defaultValue,
|
|
394
|
+
disabledDate = _ref.disabledDate,
|
|
395
|
+
label = _ref.label,
|
|
396
|
+
placeholder = _ref.placeholder,
|
|
397
|
+
name = _ref.name,
|
|
398
|
+
_ref$disabled = _ref.disabled,
|
|
399
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
400
|
+
return /*#__PURE__*/jsx(Field, {
|
|
401
|
+
name: name,
|
|
402
|
+
children: function children(_ref2) {
|
|
403
|
+
var _globalProps;
|
|
404
|
+
var field = _ref2.field,
|
|
405
|
+
meta = _ref2.meta,
|
|
406
|
+
setFieldValue = _ref2.form.setFieldValue;
|
|
407
|
+
return /*#__PURE__*/jsx(NeetoUIDatePicker, _objectSpread$3(_objectSpread$3({
|
|
408
|
+
defaultValue: defaultValue,
|
|
409
|
+
disabled: disabled,
|
|
410
|
+
disabledDate: disabledDate,
|
|
411
|
+
label: label,
|
|
412
|
+
placeholder: placeholder,
|
|
413
|
+
allowClear: false,
|
|
414
|
+
className: "w-full",
|
|
415
|
+
error: meta.touched && meta.error,
|
|
416
|
+
format: (_globalProps = globalProps) === null || _globalProps === void 0 || (_globalProps = _globalProps.user) === null || _globalProps === void 0 ? void 0 : _globalProps.dateFormat,
|
|
417
|
+
getPopupContainer: prop("parentNode")
|
|
418
|
+
}, field), {}, {
|
|
419
|
+
onChange: function onChange(date) {
|
|
420
|
+
setFieldValue(field.name, getStartOfTime(date, "day"));
|
|
421
|
+
}
|
|
422
|
+
}));
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
};
|
|
426
|
+
|
|
427
|
+
var Form = withT(function (_ref) {
|
|
428
|
+
var t = _ref.t,
|
|
429
|
+
_ref$initialValues = _ref.initialValues,
|
|
430
|
+
initialValues = _ref$initialValues === void 0 ? INITIAL_VALUES : _ref$initialValues,
|
|
431
|
+
isSubmitting = _ref.isSubmitting,
|
|
432
|
+
onClose = _ref.onClose,
|
|
433
|
+
onSubmit = _ref.onSubmit,
|
|
434
|
+
initialFocusRef = _ref.initialFocusRef;
|
|
435
|
+
return /*#__PURE__*/jsx(NeetoUIForm, {
|
|
436
|
+
formikProps: {
|
|
437
|
+
validationSchema: VALIDATION_SCHEMA,
|
|
438
|
+
initialValues: initialValues,
|
|
439
|
+
onSubmit: onSubmit
|
|
440
|
+
},
|
|
441
|
+
children: function children(_ref2) {
|
|
442
|
+
var setFieldValue = _ref2.setFieldValue,
|
|
443
|
+
_ref2$values = _ref2.values,
|
|
444
|
+
_ref2$values2 = _ref2$values === void 0 ? {} : _ref2$values,
|
|
445
|
+
hasNoExpiry = _ref2$values2.hasNoExpiry,
|
|
446
|
+
expiresAt = _ref2$values2.expiresAt;
|
|
447
|
+
return /*#__PURE__*/jsxs(Fragment, {
|
|
448
|
+
children: [/*#__PURE__*/jsx(Pane.Body, {
|
|
449
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
450
|
+
className: "w-full space-y-4",
|
|
451
|
+
children: [/*#__PURE__*/jsx(Input, {
|
|
452
|
+
autoFocus: true,
|
|
453
|
+
label: t("neetoApiKeys.fields.label"),
|
|
454
|
+
name: "label",
|
|
455
|
+
placeholder: t("neetoApiKeys.placeholders.label"),
|
|
456
|
+
ref: initialFocusRef
|
|
457
|
+
}), /*#__PURE__*/jsxs("div", {
|
|
458
|
+
className: "space-y-2",
|
|
459
|
+
children: [!hasNoExpiry && /*#__PURE__*/jsx(DatePicker, {
|
|
460
|
+
defaultValue: expiresAt,
|
|
461
|
+
disabledDate: function disabledDate(date) {
|
|
462
|
+
return date < NEXT_DAY;
|
|
463
|
+
},
|
|
464
|
+
label: t("neetoApiKeys.fields.expiryDate"),
|
|
465
|
+
name: "expiresAt",
|
|
466
|
+
placeholder: t("neetoApiKeys.placeholders.selectExpiryDate")
|
|
467
|
+
}), /*#__PURE__*/jsx(Checkbox, {
|
|
468
|
+
checked: hasNoExpiry,
|
|
469
|
+
label: t("neetoApiKeys.fields.neverExpire"),
|
|
470
|
+
name: "hasNoExpiry",
|
|
471
|
+
onChange: function onChange() {
|
|
472
|
+
setFieldValue("expiresAt", null);
|
|
473
|
+
setFieldValue("hasNoExpiry", !hasNoExpiry);
|
|
474
|
+
}
|
|
475
|
+
})]
|
|
476
|
+
})]
|
|
477
|
+
})
|
|
478
|
+
}), /*#__PURE__*/jsx(Pane.Footer, {
|
|
479
|
+
children: /*#__PURE__*/jsx(ActionBlock, {
|
|
480
|
+
isSubmitting: isSubmitting,
|
|
481
|
+
cancelButtonProps: {
|
|
482
|
+
onClick: onClose
|
|
483
|
+
}
|
|
484
|
+
})
|
|
485
|
+
})]
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
});
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
var Create = function Create(_ref) {
|
|
492
|
+
var onClose = _ref.onClose,
|
|
493
|
+
isOpen = _ref.isOpen;
|
|
494
|
+
var initialFocusRef = useRef(null);
|
|
495
|
+
var _useCreateApiKey = useCreateApiKey(onClose),
|
|
496
|
+
createApiKey = _useCreateApiKey.mutate,
|
|
497
|
+
isCreating = _useCreateApiKey.isPending;
|
|
498
|
+
var _useTranslation = useTranslation(),
|
|
499
|
+
t = _useTranslation.t;
|
|
500
|
+
return /*#__PURE__*/jsxs(Pane, {
|
|
501
|
+
initialFocusRef: initialFocusRef,
|
|
502
|
+
isOpen: isOpen,
|
|
503
|
+
onClose: onClose,
|
|
504
|
+
children: [/*#__PURE__*/jsx(Pane.Header, {
|
|
505
|
+
children: /*#__PURE__*/jsxs(Typography, {
|
|
506
|
+
style: "h2",
|
|
507
|
+
children: [t("neetoApiKeys.headers.createApiKey"), /*#__PURE__*/jsx(HelpPopover, {
|
|
508
|
+
className: "ml-2",
|
|
509
|
+
description: t("neetoApiKeys.tooltips.apiKeysDescription"),
|
|
510
|
+
helpLinkProps: {
|
|
511
|
+
href: HELP_DOC_URL
|
|
512
|
+
},
|
|
513
|
+
title: t("neetoApiKeys.tooltips.apiKeys")
|
|
514
|
+
})]
|
|
515
|
+
})
|
|
516
|
+
}), /*#__PURE__*/jsx(Form, {
|
|
517
|
+
initialFocusRef: initialFocusRef,
|
|
518
|
+
onClose: onClose,
|
|
519
|
+
isSubmitting: isCreating,
|
|
520
|
+
onSubmit: createApiKey
|
|
521
|
+
})]
|
|
522
|
+
});
|
|
523
|
+
};
|
|
524
|
+
|
|
525
|
+
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; }
|
|
526
|
+
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; }
|
|
527
|
+
var Update = function Update(_ref) {
|
|
528
|
+
var onClose = _ref.onClose,
|
|
529
|
+
apiKey = _ref.apiKey;
|
|
530
|
+
var initialFocusRef = useRef(null);
|
|
531
|
+
var _useUpdateApiKey = useUpdateApiKey(onClose),
|
|
532
|
+
updateApiKey = _useUpdateApiKey.mutate,
|
|
533
|
+
isUpdating = _useUpdateApiKey.isPending;
|
|
534
|
+
var _useTranslation = useTranslation(),
|
|
535
|
+
t = _useTranslation.t;
|
|
536
|
+
var handleUpdate = function handleUpdate(values) {
|
|
537
|
+
updateApiKey({
|
|
538
|
+
id: apiKey.id,
|
|
539
|
+
payload: values
|
|
540
|
+
});
|
|
541
|
+
};
|
|
542
|
+
var initialValues = _objectSpread$2(_objectSpread$2({}, apiKey), {}, {
|
|
543
|
+
hasNoExpiry: isNotPresent(apiKey.expiresAt)
|
|
544
|
+
});
|
|
545
|
+
return /*#__PURE__*/jsxs(Pane, {
|
|
546
|
+
initialFocusRef: initialFocusRef,
|
|
547
|
+
onClose: onClose,
|
|
548
|
+
isOpen: isNotEmpty(apiKey),
|
|
549
|
+
children: [/*#__PURE__*/jsx(Pane.Header, {
|
|
550
|
+
children: /*#__PURE__*/jsxs(Typography, {
|
|
551
|
+
style: "h2",
|
|
552
|
+
children: [t("neetoApiKeys.headers.updateApiKey"), /*#__PURE__*/jsx(HelpPopover, {
|
|
553
|
+
className: "ml-2",
|
|
554
|
+
description: t("neetoApiKeys.tooltips.apiKeysDescription"),
|
|
555
|
+
helpLinkProps: {
|
|
556
|
+
href: HELP_DOC_URL
|
|
557
|
+
},
|
|
558
|
+
title: t("neetoApiKeys.tooltips.apiKeys")
|
|
559
|
+
})]
|
|
560
|
+
})
|
|
561
|
+
}), /*#__PURE__*/jsx(Form, {
|
|
562
|
+
initialFocusRef: initialFocusRef,
|
|
563
|
+
initialValues: initialValues,
|
|
564
|
+
onClose: onClose,
|
|
565
|
+
isSubmitting: isUpdating,
|
|
566
|
+
onSubmit: handleUpdate
|
|
567
|
+
})]
|
|
568
|
+
});
|
|
569
|
+
};
|
|
570
|
+
|
|
571
|
+
function ownKeys$1(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; }
|
|
572
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
573
|
+
var Table = function Table(_ref) {
|
|
574
|
+
var handleDelete = _ref.handleDelete,
|
|
575
|
+
handleEdit = _ref.handleEdit,
|
|
576
|
+
currentPage = _ref.currentPage,
|
|
577
|
+
setIsCreatePaneOpen = _ref.setIsCreatePaneOpen,
|
|
578
|
+
_ref$noDataProps = _ref.noDataProps,
|
|
579
|
+
noDataProps = _ref$noDataProps === void 0 ? {} : _ref$noDataProps,
|
|
580
|
+
data = _ref.data,
|
|
581
|
+
isLoading = _ref.isLoading,
|
|
582
|
+
isFetching = _ref.isFetching,
|
|
583
|
+
handlePageChange = _ref.handlePageChange;
|
|
584
|
+
var _useTranslation = useTranslation(),
|
|
585
|
+
t = _useTranslation.t;
|
|
586
|
+
if (isLoading) return /*#__PURE__*/jsx(PageLoader, {});
|
|
587
|
+
if (isEmpty(data === null || data === void 0 ? void 0 : data.apiKeys)) {
|
|
588
|
+
return /*#__PURE__*/jsxs("div", {
|
|
589
|
+
className: "flex h-full w-full items-center justify-center",
|
|
590
|
+
children: [/*#__PURE__*/jsx(NoData, _objectSpread$1({
|
|
591
|
+
className: "w-full",
|
|
592
|
+
title: t("neetoApiKeys.noData.title"),
|
|
593
|
+
helpText: /*#__PURE__*/jsx(Trans, {
|
|
594
|
+
i18nKey: "neetoApiKeys.noData.helpText",
|
|
595
|
+
components: {
|
|
596
|
+
helpLink: /*#__PURE__*/jsx(Button, {
|
|
597
|
+
href: HELP_DOC_URL,
|
|
598
|
+
style: "link",
|
|
599
|
+
target: "_blank"
|
|
600
|
+
})
|
|
601
|
+
}
|
|
602
|
+
}),
|
|
603
|
+
primaryButtonProps: {
|
|
604
|
+
label: t("neetoApiKeys.buttons.addApiKey"),
|
|
605
|
+
onClick: function onClick() {
|
|
606
|
+
return setIsCreatePaneOpen(true);
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
}, noDataProps)), ";"]
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
return /*#__PURE__*/jsx(TableWrapper, {
|
|
613
|
+
hasPagination: (data === null || data === void 0 ? void 0 : data.totalCount) > DEFAULT_PAGE_SIZE,
|
|
614
|
+
children: /*#__PURE__*/jsx(NeetoUITable, {
|
|
615
|
+
handlePageChange: handlePageChange,
|
|
616
|
+
fixedHeight: true,
|
|
617
|
+
columnData: buildColumnData({
|
|
618
|
+
handleDelete: handleDelete,
|
|
619
|
+
handleEdit: handleEdit
|
|
620
|
+
}),
|
|
621
|
+
currentPageNumber: currentPage,
|
|
622
|
+
defaultPageSize: DEFAULT_PAGE_SIZE,
|
|
623
|
+
loading: isFetching,
|
|
624
|
+
rowData: data === null || data === void 0 ? void 0 : data.apiKeys,
|
|
625
|
+
totalCount: data === null || data === void 0 ? void 0 : data.totalCount
|
|
626
|
+
})
|
|
627
|
+
});
|
|
628
|
+
};
|
|
629
|
+
|
|
630
|
+
function ownKeys(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; }
|
|
631
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
632
|
+
var ApiKeys = function ApiKeys(_ref) {
|
|
633
|
+
var noDataProps = _ref.noDataProps,
|
|
634
|
+
headerProps = _ref.headerProps;
|
|
635
|
+
var _useState = useState({}),
|
|
636
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
637
|
+
apiKeyToBeDeleted = _useState2[0],
|
|
638
|
+
setApiKeyToBeDeleted = _useState2[1];
|
|
639
|
+
var _useState3 = useState({}),
|
|
640
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
641
|
+
apiKeyToBeEdited = _useState4[0],
|
|
642
|
+
setApiKeyToBeEdited = _useState4[1];
|
|
643
|
+
var _useState5 = useState(false),
|
|
644
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
645
|
+
isCreatePaneOpen = _useState6[0],
|
|
646
|
+
setIsCreatePaneOpen = _useState6[1];
|
|
647
|
+
var _useTranslation = useTranslation(),
|
|
648
|
+
t = _useTranslation.t;
|
|
649
|
+
var _useQueryParams = useQueryParams(),
|
|
650
|
+
_useQueryParams$searc = _useQueryParams.searchTerm,
|
|
651
|
+
searchTerm = _useQueryParams$searc === void 0 ? "" : _useQueryParams$searc;
|
|
652
|
+
var _useDeleteApiKey = useDeleteApiKey(function () {
|
|
653
|
+
return setApiKeyToBeDeleted({});
|
|
654
|
+
}),
|
|
655
|
+
deleteApiKey = _useDeleteApiKey.mutate,
|
|
656
|
+
isDeleting = _useDeleteApiKey.isPending;
|
|
657
|
+
var debouncedSearchTerm = useDebounce(searchTerm);
|
|
658
|
+
var _usePagination = usePagination({
|
|
659
|
+
searchTerm: debouncedSearchTerm
|
|
660
|
+
}),
|
|
661
|
+
currentPage = _usePagination.currentPage,
|
|
662
|
+
handlePageChange = _usePagination.handlePageChange,
|
|
663
|
+
onFetchSuccess = _usePagination.onFetchSuccess;
|
|
664
|
+
var queryParams = {
|
|
665
|
+
searchTerm: debouncedSearchTerm,
|
|
666
|
+
page: currentPage,
|
|
667
|
+
pageSize: DEFAULT_PAGE_SIZE
|
|
668
|
+
};
|
|
669
|
+
var _useFetchApiKeys = useFetchApiKeys({
|
|
670
|
+
params: queryParams
|
|
671
|
+
}),
|
|
672
|
+
data = _useFetchApiKeys.data,
|
|
673
|
+
isLoading = _useFetchApiKeys.isLoading,
|
|
674
|
+
isFetching = _useFetchApiKeys.isFetching;
|
|
675
|
+
var showFilters = isPresent(debouncedSearchTerm) || (data === null || data === void 0 ? void 0 : data.totalCount) > 0;
|
|
676
|
+
useEffect(function () {
|
|
677
|
+
if (!data) return;
|
|
678
|
+
onFetchSuccess(data);
|
|
679
|
+
}, [data]);
|
|
680
|
+
return /*#__PURE__*/jsxs("div", {
|
|
681
|
+
className: "flex h-full w-full flex-col",
|
|
682
|
+
children: [/*#__PURE__*/jsx(Header, _objectSpread({
|
|
683
|
+
actionBlock: /*#__PURE__*/jsx(Button, {
|
|
684
|
+
label: t("neetoApiKeys.buttons.addApiKey"),
|
|
685
|
+
onClick: function onClick() {
|
|
686
|
+
return setIsCreatePaneOpen(true);
|
|
687
|
+
}
|
|
688
|
+
}),
|
|
689
|
+
searchProps: showFilters && {
|
|
690
|
+
placeholder: t("neetoApiKeys.placeholders.search")
|
|
691
|
+
},
|
|
692
|
+
title: /*#__PURE__*/jsxs("div", {
|
|
693
|
+
className: "flex items-center gap-x-2",
|
|
694
|
+
children: [t("neetoApiKeys.common.apiKey", PLURAL), /*#__PURE__*/jsx(HelpPopover, {
|
|
695
|
+
description: t("neetoApiKeys.tooltips.apiKeysDescription"),
|
|
696
|
+
helpLinkProps: {
|
|
697
|
+
href: HELP_DOC_URL
|
|
698
|
+
},
|
|
699
|
+
title: t("neetoApiKeys.tooltips.apiKeys")
|
|
700
|
+
})]
|
|
701
|
+
})
|
|
702
|
+
}, headerProps)), /*#__PURE__*/jsx(Table, {
|
|
703
|
+
currentPage: currentPage,
|
|
704
|
+
data: data,
|
|
705
|
+
handlePageChange: handlePageChange,
|
|
706
|
+
isFetching: isFetching,
|
|
707
|
+
isLoading: isLoading,
|
|
708
|
+
noDataProps: noDataProps,
|
|
709
|
+
setIsCreatePaneOpen: setIsCreatePaneOpen,
|
|
710
|
+
handleDelete: setApiKeyToBeDeleted,
|
|
711
|
+
handleEdit: setApiKeyToBeEdited
|
|
712
|
+
}), /*#__PURE__*/jsx(Alert, {
|
|
713
|
+
isOpen: isNotEmpty(apiKeyToBeDeleted),
|
|
714
|
+
isSubmitting: isDeleting,
|
|
715
|
+
submitButtonLabel: t("neetoApiKeys.buttons.delete"),
|
|
716
|
+
title: t("neetoApiKeys.alert.titles.deleteApiKey"),
|
|
717
|
+
message: /*#__PURE__*/jsx(Trans, {
|
|
718
|
+
components: {
|
|
719
|
+
bold: /*#__PURE__*/jsx("strong", {})
|
|
720
|
+
},
|
|
721
|
+
i18nKey: "neetoApiKeys.alert.descriptions.deleteApiKey",
|
|
722
|
+
values: {
|
|
723
|
+
name: apiKeyToBeDeleted.label
|
|
724
|
+
}
|
|
725
|
+
}),
|
|
726
|
+
onClose: function onClose() {
|
|
727
|
+
return setApiKeyToBeDeleted({});
|
|
728
|
+
},
|
|
729
|
+
onSubmit: function onSubmit() {
|
|
730
|
+
return deleteApiKey(apiKeyToBeDeleted.id);
|
|
731
|
+
}
|
|
732
|
+
}), /*#__PURE__*/jsx(Create, {
|
|
733
|
+
isOpen: isCreatePaneOpen,
|
|
734
|
+
onClose: function onClose() {
|
|
735
|
+
return setIsCreatePaneOpen(false);
|
|
736
|
+
}
|
|
737
|
+
}), /*#__PURE__*/jsx(Update, {
|
|
738
|
+
apiKey: apiKeyToBeEdited,
|
|
739
|
+
onClose: function onClose() {
|
|
740
|
+
return setApiKeyToBeEdited({});
|
|
741
|
+
}
|
|
742
|
+
})]
|
|
743
|
+
});
|
|
744
|
+
};
|
|
745
|
+
var index = withTitle(ApiKeys, t("neetoApiKeys.common.apiKey", PLURAL));
|
|
746
|
+
|
|
747
|
+
export { index as default };
|
|
748
|
+
//# sourceMappingURL=ApiKeys.js.map
|