@bigbinary/neeto-message-templates-frontend 1.0.2 → 1.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.
Files changed (43) hide show
  1. package/dist/ApiTemplates.js +439 -0
  2. package/dist/ApiTemplates.js.map +1 -0
  3. package/dist/MessageTemplates.js +1248 -0
  4. package/dist/MessageTemplates.js.map +1 -0
  5. package/dist/NoDataPage-00b22095.js +58 -0
  6. package/dist/NoDataPage-00b22095.js.map +1 -0
  7. package/dist/NoDataPage-4ba91a9f.js +51 -0
  8. package/dist/NoDataPage-4ba91a9f.js.map +1 -0
  9. package/dist/SendMessagePane.js +356 -0
  10. package/dist/SendMessagePane.js.map +1 -0
  11. package/dist/SendToApiPane.js +151 -0
  12. package/dist/SendToApiPane.js.map +1 -0
  13. package/dist/cjs/ApiTemplates.js +459 -0
  14. package/dist/cjs/ApiTemplates.js.map +1 -0
  15. package/dist/cjs/MessageTemplates.js +1289 -0
  16. package/dist/cjs/MessageTemplates.js.map +1 -0
  17. package/dist/cjs/SendMessagePane.js +390 -0
  18. package/dist/cjs/SendMessagePane.js.map +1 -0
  19. package/dist/cjs/SendToApiPane.js +181 -0
  20. package/dist/cjs/SendToApiPane.js.map +1 -0
  21. package/dist/cjs/index.js +61 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/index.js +49 -4587
  24. package/dist/index.js.map +1 -1
  25. package/dist/slicedToArray-b4278ecd.js +57 -0
  26. package/dist/slicedToArray-b4278ecd.js.map +1 -0
  27. package/dist/slicedToArray-f320d9e7.js +61 -0
  28. package/dist/slicedToArray-f320d9e7.js.map +1 -0
  29. package/dist/toConsumableArray-1cc38429.js +20 -0
  30. package/dist/toConsumableArray-1cc38429.js.map +1 -0
  31. package/dist/toConsumableArray-9abb3858.js +22 -0
  32. package/dist/toConsumableArray-9abb3858.js.map +1 -0
  33. package/dist/useTemplatesApi-45d43d41.js +2240 -0
  34. package/dist/useTemplatesApi-45d43d41.js.map +1 -0
  35. package/dist/useTemplatesApi-943ef380.js +2256 -0
  36. package/dist/useTemplatesApi-943ef380.js.map +1 -0
  37. package/dist/utils-90248b52.js +188 -0
  38. package/dist/utils-90248b52.js.map +1 -0
  39. package/dist/utils-b93467c8.js +151 -0
  40. package/dist/utils-b93467c8.js.map +1 -0
  41. package/package.json +24 -12
  42. package/dist/index.cjs.js +0 -4642
  43. package/dist/index.cjs.js.map +0 -1
@@ -0,0 +1,439 @@
1
+ import { _ as _defineProperty, c as useCreateTemplate, u as useUpdateTemplate, a as DEFAULT_PAGE_PROPERTIES, b as useFetchTemplates, d as useDeleteTemplate } from './useTemplatesApi-45d43d41.js';
2
+ import { _ as _toConsumableArray } from './toConsumableArray-1cc38429.js';
3
+ import { _ as _slicedToArray } from './slicedToArray-b4278ecd.js';
4
+ import { useState } from 'react';
5
+ import { isNotEmpty, noop } from '@bigbinary/neeto-cist';
6
+ import { useQueryParams } from '@bigbinary/neeto-commons-frontend/react-utils';
7
+ import { buildFiltersFromURL, Bar } from '@bigbinary/neeto-filters-frontend';
8
+ import Container from '@bigbinary/neeto-molecules/Container';
9
+ import NeetoHeader from '@bigbinary/neeto-molecules/Header';
10
+ import HelpPopover from '@bigbinary/neeto-molecules/HelpPopover';
11
+ import SubHeader from '@bigbinary/neeto-molecules/SubHeader';
12
+ import TableWrapper from '@bigbinary/neeto-molecules/TableWrapper';
13
+ import Alert from '@bigbinary/neetoui/Alert';
14
+ import Button from '@bigbinary/neetoui/Button';
15
+ import NoData from '@bigbinary/neetoui/NoData';
16
+ import Pane from '@bigbinary/neetoui/Pane';
17
+ import Table from '@bigbinary/neetoui/Table';
18
+ import Typography from '@bigbinary/neetoui/Typography';
19
+ import { equals, isEmpty, pick } from 'ramda';
20
+ import { useTranslation, Trans } from 'react-i18next';
21
+ import { T as TEMPLATE_STATUS, A as API_TEMPLATE_INITIAL_VALUES, a as ADDITIONAL_DATA_INITIAL_VALUE, r as rejectEmptyKeyValuePairs, b as API_TEMPLATE_TYPE, c as API_TEMPLATE_FORM_VALIDATION_SCHEMA, S as SAMPLE_URL, K as KeyValuePairs, F as FILTER_COLUMNS } from './utils-b93467c8.js';
22
+ import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
23
+ import Input from '@bigbinary/neetoui/formik/Input';
24
+ import NeetoUIForm from '@bigbinary/neetoui/formik/Form';
25
+ import { t } from 'i18next';
26
+ import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
27
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
28
+ import '@bigbinary/neeto-commons-frontend/constants';
29
+ import '@tanstack/react-query';
30
+ import 'axios';
31
+ import 'util';
32
+ import 'yup';
33
+ import 'formik';
34
+ import '@bigbinary/neeto-icons/Delete';
35
+ import '@bigbinary/neetoui/Label';
36
+
37
+ 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; }
38
+ 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; }
39
+ var buildApiTemplatePayload = function buildApiTemplatePayload(values) {
40
+ return {
41
+ entity: {
42
+ endpoint: values.endpoint,
43
+ additionalData: rejectEmptyKeyValuePairs(values.additionalData)
44
+ },
45
+ templateType: API_TEMPLATE_TYPE,
46
+ name: values.name
47
+ };
48
+ };
49
+ var buildTableColumnData = function buildTableColumnData(_ref) {
50
+ var handleMarkAsActiveOrInactive = _ref.handleMarkAsActiveOrInactive,
51
+ handleOpenDeleteAlert = _ref.handleOpenDeleteAlert,
52
+ handleOpenEditPane = _ref.handleOpenEditPane;
53
+ return [{
54
+ dataIndex: "name",
55
+ key: "name",
56
+ title: t("neetoMessageTemplate.template.name"),
57
+ render: function render(name, apiTemplate) {
58
+ return /*#__PURE__*/jsxs("div", {
59
+ className: "flex items-center justify-between gap-x-3",
60
+ children: [/*#__PURE__*/jsx(Button, {
61
+ "data-cy": "api-template-name-link",
62
+ label: name,
63
+ style: "link",
64
+ onClick: function onClick() {
65
+ return handleOpenEditPane(apiTemplate);
66
+ }
67
+ }), /*#__PURE__*/jsx(MoreDropdown, {
68
+ dropdownButtonProps: {
69
+ "data-cy": "api-template-dropdown"
70
+ },
71
+ dropdownProps: {
72
+ strategy: "fixed"
73
+ },
74
+ menuItems: [{
75
+ key: "edit",
76
+ label: t("neetoMessageTemplate.template.edit"),
77
+ "data-cy": "api-template-button-edit-button",
78
+ onClick: function onClick() {
79
+ return handleOpenEditPane(apiTemplate);
80
+ }
81
+ }, {
82
+ key: "status",
83
+ label: equals(apiTemplate.status, TEMPLATE_STATUS.ACTIVE) ? t("neetoMessageTemplate.template.markAsInactive") : t("neetoMessageTemplate.template.markAsActive"),
84
+ "data-cy": "api-template-button-status-button",
85
+ onClick: function onClick() {
86
+ return handleMarkAsActiveOrInactive(apiTemplate);
87
+ }
88
+ }, {
89
+ key: "delete",
90
+ label: t("neetoMessageTemplate.template.delete"),
91
+ "data-cy": "api-template-button-delete-button",
92
+ onClick: function onClick() {
93
+ return handleOpenDeleteAlert(apiTemplate);
94
+ }
95
+ }]
96
+ })]
97
+ });
98
+ }
99
+ }, {
100
+ dataIndex: "status",
101
+ key: "status",
102
+ title: t("neetoMessageTemplate.template.active"),
103
+ render: function render(status) {
104
+ return status === "active" ? t("neetoMessageTemplate.yes") : t("neetoMessageTemplate.no");
105
+ },
106
+ width: "20%"
107
+ }];
108
+ };
109
+ var buildApiTemplateInitialValues = function buildApiTemplateInitialValues(isEdit, apiTemplate) {
110
+ if (!isEdit) return API_TEMPLATE_INITIAL_VALUES;
111
+ var additionalData = isEmpty(apiTemplate.additionalData) ? [ADDITIONAL_DATA_INITIAL_VALUE] : apiTemplate.additionalData;
112
+ return _objectSpread$1(_objectSpread$1({}, pick(["name", "endpoint"], apiTemplate)), {}, {
113
+ additionalData: additionalData
114
+ });
115
+ };
116
+
117
+ var Form = function Form(_ref) {
118
+ var setFocusField = _ref.setFocusField,
119
+ onClose = _ref.onClose,
120
+ ownerId = _ref.ownerId,
121
+ selectedApiTemplate = _ref.selectedApiTemplate,
122
+ onMutationSuccess = _ref.onMutationSuccess;
123
+ var _useTranslation = useTranslation(),
124
+ t = _useTranslation.t;
125
+ var _useCreateTemplate = useCreateTemplate(ownerId),
126
+ createApiTemplate = _useCreateTemplate.mutate,
127
+ isCreating = _useCreateTemplate.isPending;
128
+ var _useUpdateTemplate = useUpdateTemplate(ownerId),
129
+ updateApiTemplate = _useUpdateTemplate.mutate,
130
+ isUpdating = _useUpdateTemplate.isPending;
131
+ var isEdit = isNotEmpty(selectedApiTemplate);
132
+ var handleSubmit = function handleSubmit(values, _ref2) {
133
+ var setSubmitting = _ref2.setSubmitting;
134
+ var payload = buildApiTemplatePayload(values);
135
+ var options = {
136
+ onSuccess: function onSuccess() {
137
+ onMutationSuccess.apply(void 0, arguments);
138
+ onClose();
139
+ },
140
+ onSettled: function onSettled() {
141
+ return setSubmitting(false);
142
+ }
143
+ };
144
+ if (isEdit) {
145
+ updateApiTemplate({
146
+ id: selectedApiTemplate.id,
147
+ payload: payload
148
+ }, options);
149
+ return;
150
+ }
151
+ createApiTemplate(payload, options);
152
+ };
153
+ var isMutating = isUpdating || isCreating;
154
+ return /*#__PURE__*/jsxs(Fragment, {
155
+ children: [/*#__PURE__*/jsx(Pane.Header, {
156
+ children: /*#__PURE__*/jsx(Typography, {
157
+ style: "h2",
158
+ weight: "semibold",
159
+ children: isEdit ? t("neetoMessageTemplate.api.editApiTemplate") : t("neetoMessageTemplate.api.addApiTemplate")
160
+ })
161
+ }), /*#__PURE__*/jsxs(NeetoUIForm, {
162
+ formikProps: {
163
+ initialValues: buildApiTemplateInitialValues(isEdit, selectedApiTemplate),
164
+ validationSchema: API_TEMPLATE_FORM_VALIDATION_SCHEMA,
165
+ onSubmit: handleSubmit
166
+ },
167
+ children: [/*#__PURE__*/jsx(Pane.Body, {
168
+ children: /*#__PURE__*/jsxs("div", {
169
+ className: "w-full space-y-5",
170
+ children: [/*#__PURE__*/jsx(Input, {
171
+ required: true,
172
+ label: t("neetoMessageTemplate.template.name"),
173
+ name: "name",
174
+ ref: setFocusField
175
+ }), /*#__PURE__*/jsx(Input, {
176
+ required: true,
177
+ label: t("neetoMessageTemplate.api.endpoint"),
178
+ name: "endpoint",
179
+ placeholder: SAMPLE_URL
180
+ }), /*#__PURE__*/jsx(KeyValuePairs, {
181
+ label: t("neetoMessageTemplate.api.additionalData"),
182
+ name: "additionalData"
183
+ })]
184
+ })
185
+ }), /*#__PURE__*/jsx(Pane.Footer, {
186
+ children: /*#__PURE__*/jsx(ActionBlock, {
187
+ cancelButtonProps: {
188
+ onClick: onClose
189
+ },
190
+ isSubmitting: isMutating
191
+ })
192
+ })]
193
+ })]
194
+ });
195
+ };
196
+
197
+ 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; }
198
+ 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; }
199
+ var ApiTemplates = function ApiTemplates(_ref) {
200
+ var _helpPopoverProps$hel;
201
+ var ownerId = _ref.ownerId,
202
+ _ref$breadcrumbs = _ref.breadcrumbs,
203
+ breadcrumbs = _ref$breadcrumbs === void 0 ? [] : _ref$breadcrumbs,
204
+ _ref$helpPopoverProps = _ref.helpPopoverProps,
205
+ helpPopoverProps = _ref$helpPopoverProps === void 0 ? {} : _ref$helpPopoverProps,
206
+ _ref$onMutationSucces = _ref.onMutationSuccess,
207
+ onMutationSuccess = _ref$onMutationSucces === void 0 ? noop : _ref$onMutationSucces;
208
+ var _useTranslation = useTranslation(),
209
+ t = _useTranslation.t;
210
+ var _useState = useState(DEFAULT_PAGE_PROPERTIES),
211
+ _useState2 = _slicedToArray(_useState, 2),
212
+ pageParams = _useState2[0],
213
+ setPageParams = _useState2[1];
214
+ var _useState3 = useState(false),
215
+ _useState4 = _slicedToArray(_useState3, 2),
216
+ isFiltersPaneOpen = _useState4[0],
217
+ setIsFiltersPaneOpen = _useState4[1];
218
+ var _useState5 = useState(false),
219
+ _useState6 = _slicedToArray(_useState5, 2),
220
+ isFormPaneOpen = _useState6[0],
221
+ setIsFormPaneOpen = _useState6[1];
222
+ var _useState7 = useState({}),
223
+ _useState8 = _slicedToArray(_useState7, 2),
224
+ selectedApiTemplate = _useState8[0],
225
+ setSelectedApiTemplate = _useState8[1];
226
+ var _useState9 = useState(false),
227
+ _useState10 = _slicedToArray(_useState9, 2),
228
+ isDeleteAlertOpen = _useState10[0],
229
+ setIsDeleteAlertOpen = _useState10[1];
230
+ var _useQueryParams = useQueryParams(),
231
+ _useQueryParams$searc = _useQueryParams.searchTerm,
232
+ searchTerm = _useQueryParams$searc === void 0 ? "" : _useQueryParams$searc;
233
+ var searchKeywordProps = {
234
+ key: "search_term",
235
+ node: "name",
236
+ value: searchTerm
237
+ };
238
+ var _useState11 = useState(function () {
239
+ return buildFiltersFromURL([].concat(_toConsumableArray(FILTER_COLUMNS), [searchKeywordProps]));
240
+ }),
241
+ _useState12 = _slicedToArray(_useState11, 2),
242
+ filters = _useState12[0],
243
+ setFilters = _useState12[1];
244
+ var _useFetchTemplates = useFetchTemplates({
245
+ filters: filters,
246
+ page: pageParams.index,
247
+ pageSize: pageParams.size,
248
+ templateType: API_TEMPLATE_TYPE,
249
+ ownerId: isEmpty(ownerId) ? undefined : ownerId
250
+ }),
251
+ _useFetchTemplates$da = _useFetchTemplates.data,
252
+ _useFetchTemplates$da2 = _useFetchTemplates$da === void 0 ? {} : _useFetchTemplates$da,
253
+ templates = _useFetchTemplates$da2.templates,
254
+ totalCount = _useFetchTemplates$da2.totalCount,
255
+ isLoading = _useFetchTemplates.isLoading,
256
+ isFetching = _useFetchTemplates.isFetching;
257
+ var title = t("neetoMessageTemplate.template.apiTemplates");
258
+ var isFilterApplied = isNotEmpty(filters);
259
+ var handleFiltersChange = function handleFiltersChange(filters) {
260
+ setFilters(filters);
261
+ setPageParams(DEFAULT_PAGE_PROPERTIES);
262
+ };
263
+ var _useDeleteTemplate = useDeleteTemplate(ownerId),
264
+ deleteTemplate = _useDeleteTemplate.mutate,
265
+ isDeleting = _useDeleteTemplate.isPending;
266
+ var _useUpdateTemplate = useUpdateTemplate(ownerId),
267
+ updateTemplate = _useUpdateTemplate.mutate;
268
+ var handleOpenEditPane = function handleOpenEditPane(apiTemplate) {
269
+ setSelectedApiTemplate(apiTemplate);
270
+ setIsFormPaneOpen(true);
271
+ };
272
+ var handleOpenDeleteAlert = function handleOpenDeleteAlert(apiTemplate) {
273
+ setSelectedApiTemplate(apiTemplate);
274
+ setIsDeleteAlertOpen(true);
275
+ };
276
+ var handleCloseDeleteAlertAndFormPane = function handleCloseDeleteAlertAndFormPane() {
277
+ setIsDeleteAlertOpen(false);
278
+ setIsFormPaneOpen(false);
279
+ setSelectedApiTemplate({});
280
+ };
281
+ var handleMarkAsActiveOrInactive = function handleMarkAsActiveOrInactive(_ref2) {
282
+ var status = _ref2.status,
283
+ id = _ref2.id;
284
+ var newStatus = equals(status, TEMPLATE_STATUS.ACTIVE) ? TEMPLATE_STATUS.INACTIVE : TEMPLATE_STATUS.ACTIVE;
285
+ updateTemplate({
286
+ payload: {
287
+ status: newStatus,
288
+ templateType: API_TEMPLATE_TYPE
289
+ },
290
+ id: id
291
+ }, {
292
+ onSuccess: onMutationSuccess
293
+ });
294
+ };
295
+ var handleDeleteApiTemplate = function handleDeleteApiTemplate() {
296
+ return deleteTemplate(selectedApiTemplate.id, {
297
+ onSuccess: function onSuccess() {
298
+ onMutationSuccess.apply(void 0, arguments);
299
+ handleCloseDeleteAlertAndFormPane();
300
+ }
301
+ });
302
+ };
303
+ var helpDocUrl = (helpPopoverProps === null || helpPopoverProps === void 0 || (_helpPopoverProps$hel = helpPopoverProps.helpLinkProps) === null || _helpPopoverProps$hel === void 0 ? void 0 : _helpPopoverProps$hel.href) || "";
304
+ var noDataProps = _objectSpread(_objectSpread({}, !isFilterApplied && {
305
+ primaryButtonProps: {
306
+ label: t("neetoMessageTemplate.api.addApiTemplate"),
307
+ onClick: function onClick() {
308
+ return setIsFormPaneOpen(true);
309
+ }
310
+ },
311
+ helpText: /*#__PURE__*/jsx(Trans, {
312
+ i18nKey: "neetoMessageTemplate.template.linkToHelpArticle",
313
+ values: {
314
+ entity: title
315
+ },
316
+ components: {
317
+ Link: /*#__PURE__*/jsx(Button, {
318
+ className: "underline",
319
+ href: helpDocUrl,
320
+ style: "link",
321
+ target: "_blank"
322
+ })
323
+ }
324
+ })
325
+ }), {}, {
326
+ title: isFilterApplied ? t("neetoMessageTemplate.template.filtersEmptyState", {
327
+ type: title
328
+ }) : t("neetoMessageTemplate.template.emptyState", {
329
+ type: title
330
+ })
331
+ });
332
+ var shouldShowTemplatesCount = !isLoading && (isFilterApplied || totalCount > 0);
333
+ return /*#__PURE__*/jsxs(Container, {
334
+ children: [/*#__PURE__*/jsx(NeetoHeader, {
335
+ breadcrumbs: breadcrumbs,
336
+ size: "small",
337
+ actionBlock: /*#__PURE__*/jsx(Button, {
338
+ "data-cy": "add-api-templates-button",
339
+ label: t("neetoMessageTemplate.api.addApiTemplate"),
340
+ onClick: function onClick() {
341
+ return setIsFormPaneOpen(true);
342
+ }
343
+ }),
344
+ searchProps: shouldShowTemplatesCount && {
345
+ placeholder: t("neetoMessageTemplate.template.searchApiTemplates"),
346
+ "data-cy": "api-templates-search-input"
347
+ },
348
+ title: /*#__PURE__*/jsxs("span", {
349
+ className: "flex",
350
+ children: [title, /*#__PURE__*/jsx(HelpPopover, _objectSpread(_objectSpread({
351
+ className: "ml-2 self-center"
352
+ }, helpPopoverProps), {}, {
353
+ title: (helpPopoverProps === null || helpPopoverProps === void 0 ? void 0 : helpPopoverProps.title) || title
354
+ }))]
355
+ })
356
+ }), /*#__PURE__*/jsx(SubHeader, {
357
+ leftActionBlock: shouldShowTemplatesCount && /*#__PURE__*/jsx(Typography, {
358
+ component: "h4",
359
+ children: t("neetoMessageTemplate.template.messageTemplatesWithCount", {
360
+ type: t("messageType.api"),
361
+ count: totalCount
362
+ })
363
+ }),
364
+ rightActionBlock: /*#__PURE__*/jsx(SubHeader.RightBlock, {
365
+ dataProps: {
366
+ totalCount: isFilterApplied ? null : totalCount
367
+ },
368
+ filterProps: {
369
+ columns: FILTER_COLUMNS,
370
+ isOpen: isFiltersPaneOpen,
371
+ keyword: searchKeywordProps,
372
+ setIsOpen: setIsFiltersPaneOpen,
373
+ onChange: handleFiltersChange
374
+ }
375
+ })
376
+ }), /*#__PURE__*/jsx(Bar, {
377
+ columns: FILTER_COLUMNS,
378
+ keyword: searchKeywordProps,
379
+ setIsPaneOpen: setIsFiltersPaneOpen,
380
+ onChange: handleFiltersChange
381
+ }), isNotEmpty(templates) ? /*#__PURE__*/jsx(TableWrapper, {
382
+ hasPagination: totalCount > pageParams.size,
383
+ children: /*#__PURE__*/jsx(Table, {
384
+ totalCount: totalCount,
385
+ fixedHeight: true,
386
+ currentPageNumber: pageParams.index,
387
+ defaultPageSize: pageParams.size,
388
+ handlePageChange: function handlePageChange(index, size) {
389
+ return setPageParams({
390
+ index: index,
391
+ size: size
392
+ });
393
+ },
394
+ loading: isLoading || isFetching,
395
+ rowData: templates,
396
+ scroll: {
397
+ x: "100%"
398
+ },
399
+ columnData: buildTableColumnData({
400
+ handleMarkAsActiveOrInactive: handleMarkAsActiveOrInactive,
401
+ handleOpenDeleteAlert: handleOpenDeleteAlert,
402
+ handleOpenEditPane: handleOpenEditPane
403
+ })
404
+ })
405
+ }) : /*#__PURE__*/jsx("div", {
406
+ className: "flex h-full w-full items-center justify-center",
407
+ children: /*#__PURE__*/jsx(NoData, _objectSpread({}, noDataProps))
408
+ }), /*#__PURE__*/jsx(Pane, {
409
+ isOpen: isFormPaneOpen,
410
+ onClose: handleCloseDeleteAlertAndFormPane,
411
+ children: function children(_ref3) {
412
+ var setFocusField = _ref3.setFocusField;
413
+ return /*#__PURE__*/jsx(Form, {
414
+ onMutationSuccess: onMutationSuccess,
415
+ ownerId: ownerId,
416
+ selectedApiTemplate: selectedApiTemplate,
417
+ setFocusField: setFocusField,
418
+ onClose: handleCloseDeleteAlertAndFormPane
419
+ });
420
+ }
421
+ }), /*#__PURE__*/jsx(Alert, {
422
+ isOpen: isDeleteAlertOpen,
423
+ isSubmitting: isDeleting,
424
+ submitButtonLabel: t("neetoMessageTemplate.template.delete"),
425
+ title: t("neetoMessageTemplate.api.deleteApiTemplate"),
426
+ message: /*#__PURE__*/jsx(Trans, {
427
+ i18nKey: "neetoMessageTemplate.template.templateDeleteConfirmation",
428
+ values: {
429
+ name: selectedApiTemplate.name
430
+ }
431
+ }),
432
+ onClose: handleCloseDeleteAlertAndFormPane,
433
+ onSubmit: handleDeleteApiTemplate
434
+ })]
435
+ });
436
+ };
437
+
438
+ export { ApiTemplates as default };
439
+ //# sourceMappingURL=ApiTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiTemplates.js","sources":["../app/javascript/src/components/Api/ApiTemplates/utils.jsx","../app/javascript/src/components/Api/ApiTemplates/Form.jsx","../app/javascript/src/components/Api/ApiTemplates/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport MoreDropdown from \"neetomolecules/MoreDropdown\";\nimport { Button } from \"neetoui\";\nimport { equals, isEmpty, pick } from \"ramda\";\n\nimport {\n ADDITIONAL_DATA_INITIAL_VALUE,\n API_TEMPLATE_TYPE,\n} from \"components/Api/constants\";\nimport { rejectEmptyKeyValuePairs } from \"components/Api/utils\";\n\nimport { API_TEMPLATE_INITIAL_VALUES, TEMPLATE_STATUS } from \"./constants\";\n\nexport const buildApiTemplatePayload = values => ({\n entity: {\n endpoint: values.endpoint,\n additionalData: rejectEmptyKeyValuePairs(values.additionalData),\n },\n templateType: API_TEMPLATE_TYPE,\n name: values.name,\n});\n\nexport const buildTableColumnData = ({\n handleMarkAsActiveOrInactive,\n handleOpenDeleteAlert,\n handleOpenEditPane,\n}) => [\n {\n dataIndex: \"name\",\n key: \"name\",\n title: t(\"neetoMessageTemplate.template.name\"),\n render: (name, apiTemplate) => (\n <div className=\"flex items-center justify-between gap-x-3\">\n <Button\n data-cy=\"api-template-name-link\"\n label={name}\n style=\"link\"\n onClick={() => handleOpenEditPane(apiTemplate)}\n />\n <MoreDropdown\n dropdownButtonProps={{ \"data-cy\": \"api-template-dropdown\" }}\n dropdownProps={{ strategy: \"fixed\" }}\n menuItems={[\n {\n key: \"edit\",\n label: t(\"neetoMessageTemplate.template.edit\"),\n \"data-cy\": \"api-template-button-edit-button\",\n onClick: () => handleOpenEditPane(apiTemplate),\n },\n {\n key: \"status\",\n label: equals(apiTemplate.status, TEMPLATE_STATUS.ACTIVE)\n ? t(\"neetoMessageTemplate.template.markAsInactive\")\n : t(\"neetoMessageTemplate.template.markAsActive\"),\n \"data-cy\": \"api-template-button-status-button\",\n onClick: () => handleMarkAsActiveOrInactive(apiTemplate),\n },\n {\n key: \"delete\",\n label: t(\"neetoMessageTemplate.template.delete\"),\n \"data-cy\": \"api-template-button-delete-button\",\n onClick: () => handleOpenDeleteAlert(apiTemplate),\n },\n ]}\n />\n </div>\n ),\n },\n {\n dataIndex: \"status\",\n key: \"status\",\n title: t(\"neetoMessageTemplate.template.active\"),\n render: status =>\n status === \"active\"\n ? t(\"neetoMessageTemplate.yes\")\n : t(\"neetoMessageTemplate.no\"),\n width: \"20%\",\n },\n];\n\nexport const buildApiTemplateInitialValues = (isEdit, apiTemplate) => {\n if (!isEdit) return API_TEMPLATE_INITIAL_VALUES;\n\n const additionalData = isEmpty(apiTemplate.additionalData)\n ? [ADDITIONAL_DATA_INITIAL_VALUE]\n : apiTemplate.additionalData;\n\n return { ...pick([\"name\", \"endpoint\"], apiTemplate), additionalData };\n};\n","import { isNotEmpty } from \"neetocist\";\nimport { Pane, Typography } from \"neetoui\";\nimport { ActionBlock, Input, Form as NeetoUIForm } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport KeyValuePairs from \"components/commons/KeyValuePairs\";\nimport {\n useCreateTemplate,\n useUpdateTemplate,\n} from \"hooks/reactQuery/useTemplatesApi\";\n\nimport { API_TEMPLATE_FORM_VALIDATION_SCHEMA, SAMPLE_URL } from \"./constants\";\nimport {\n buildApiTemplateInitialValues,\n buildApiTemplatePayload,\n} from \"./utils\";\n\nconst Form = ({\n setFocusField,\n onClose,\n ownerId,\n selectedApiTemplate,\n onMutationSuccess,\n}) => {\n const { t } = useTranslation();\n const { mutate: createApiTemplate, isPending: isCreating } =\n useCreateTemplate(ownerId);\n\n const { mutate: updateApiTemplate, isPending: isUpdating } =\n useUpdateTemplate(ownerId);\n\n const isEdit = isNotEmpty(selectedApiTemplate);\n\n const handleSubmit = (values, { setSubmitting }) => {\n const payload = buildApiTemplatePayload(values);\n const options = {\n onSuccess: (...args) => {\n onMutationSuccess(...args);\n onClose();\n },\n onSettled: () => setSubmitting(false),\n };\n\n if (isEdit) {\n updateApiTemplate({ id: selectedApiTemplate.id, payload }, options);\n\n return;\n }\n\n createApiTemplate(payload, options);\n };\n\n const isMutating = isUpdating || isCreating;\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {isEdit\n ? t(\"neetoMessageTemplate.api.editApiTemplate\")\n : t(\"neetoMessageTemplate.api.addApiTemplate\")}\n </Typography>\n </Pane.Header>\n <NeetoUIForm\n formikProps={{\n initialValues: buildApiTemplateInitialValues(\n isEdit,\n selectedApiTemplate\n ),\n validationSchema: API_TEMPLATE_FORM_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n <Pane.Body>\n <div className=\"w-full space-y-5\">\n <Input\n required\n label={t(\"neetoMessageTemplate.template.name\")}\n name=\"name\"\n ref={setFocusField}\n />\n <Input\n required\n label={t(\"neetoMessageTemplate.api.endpoint\")}\n name=\"endpoint\"\n placeholder={SAMPLE_URL}\n />\n <KeyValuePairs\n label={t(\"neetoMessageTemplate.api.additionalData\")}\n name=\"additionalData\"\n />\n </div>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock\n cancelButtonProps={{ onClick: onClose }}\n isSubmitting={isMutating}\n />\n </Pane.Footer>\n </NeetoUIForm>\n </>\n );\n};\n\nexport default Form;\n","import { useState } from \"react\";\n\nimport { noop, isNotEmpty } from \"neetocist\";\nimport { useQueryParams } from \"neetocommons/react-utils\";\nimport { Bar as FiltersBar, buildFiltersFromURL } from \"neetofilters\";\nimport Container from \"neetomolecules/Container\";\nimport Header from \"neetomolecules/Header\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport SubHeader from \"neetomolecules/SubHeader\";\nimport TableWrapper from \"neetomolecules/TableWrapper\";\nimport { Alert, Button, NoData, Pane, Table, Typography } from \"neetoui\";\nimport { equals, isEmpty } from \"ramda\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nimport { API_TEMPLATE_TYPE } from \"components/Api/constants\";\nimport { DEFAULT_PAGE_PROPERTIES } from \"components/constants\";\nimport {\n useDeleteTemplate,\n useFetchTemplates,\n useUpdateTemplate,\n} from \"hooks/reactQuery/useTemplatesApi\";\n\nimport { FILTER_COLUMNS, TEMPLATE_STATUS } from \"./constants\";\nimport Form from \"./Form\";\nimport { buildTableColumnData } from \"./utils\";\n\nconst ApiTemplates = ({\n ownerId,\n breadcrumbs = [],\n helpPopoverProps = {},\n onMutationSuccess = noop,\n}) => {\n const { t } = useTranslation();\n\n const [pageParams, setPageParams] = useState(DEFAULT_PAGE_PROPERTIES);\n const [isFiltersPaneOpen, setIsFiltersPaneOpen] = useState(false);\n const [isFormPaneOpen, setIsFormPaneOpen] = useState(false);\n const [selectedApiTemplate, setSelectedApiTemplate] = useState({});\n const [isDeleteAlertOpen, setIsDeleteAlertOpen] = useState(false);\n\n const { searchTerm = \"\" } = useQueryParams();\n\n const searchKeywordProps = {\n key: \"search_term\",\n node: \"name\",\n value: searchTerm,\n };\n\n const [filters, setFilters] = useState(() =>\n buildFiltersFromURL([...FILTER_COLUMNS, searchKeywordProps])\n );\n\n const {\n data: { templates, totalCount } = {},\n isLoading,\n isFetching,\n } = useFetchTemplates({\n filters,\n page: pageParams.index,\n pageSize: pageParams.size,\n templateType: API_TEMPLATE_TYPE,\n ownerId: isEmpty(ownerId) ? undefined : ownerId,\n });\n\n const title = t(\"neetoMessageTemplate.template.apiTemplates\");\n\n const isFilterApplied = isNotEmpty(filters);\n\n const handleFiltersChange = filters => {\n setFilters(filters);\n setPageParams(DEFAULT_PAGE_PROPERTIES);\n };\n\n const { mutate: deleteTemplate, isPending: isDeleting } =\n useDeleteTemplate(ownerId);\n const { mutate: updateTemplate } = useUpdateTemplate(ownerId);\n\n const handleOpenEditPane = apiTemplate => {\n setSelectedApiTemplate(apiTemplate);\n setIsFormPaneOpen(true);\n };\n\n const handleOpenDeleteAlert = apiTemplate => {\n setSelectedApiTemplate(apiTemplate);\n setIsDeleteAlertOpen(true);\n };\n\n const handleCloseDeleteAlertAndFormPane = () => {\n setIsDeleteAlertOpen(false);\n setIsFormPaneOpen(false);\n setSelectedApiTemplate({});\n };\n\n const handleMarkAsActiveOrInactive = ({ status, id }) => {\n const newStatus = equals(status, TEMPLATE_STATUS.ACTIVE)\n ? TEMPLATE_STATUS.INACTIVE\n : TEMPLATE_STATUS.ACTIVE;\n\n updateTemplate(\n {\n payload: { status: newStatus, templateType: API_TEMPLATE_TYPE },\n id,\n },\n { onSuccess: onMutationSuccess }\n );\n };\n\n const handleDeleteApiTemplate = () =>\n deleteTemplate(selectedApiTemplate.id, {\n onSuccess: (...args) => {\n onMutationSuccess(...args);\n handleCloseDeleteAlertAndFormPane();\n },\n });\n\n const helpDocUrl = helpPopoverProps?.helpLinkProps?.href || \"\";\n\n const noDataProps = {\n ...(!isFilterApplied && {\n primaryButtonProps: {\n label: t(\"neetoMessageTemplate.api.addApiTemplate\"),\n onClick: () => setIsFormPaneOpen(true),\n },\n helpText: (\n <Trans\n i18nKey=\"neetoMessageTemplate.template.linkToHelpArticle\"\n values={{ entity: title }}\n components={{\n Link: (\n <Button\n className=\"underline\"\n href={helpDocUrl}\n style=\"link\"\n target=\"_blank\"\n />\n ),\n }}\n />\n ),\n }),\n title: isFilterApplied\n ? t(\"neetoMessageTemplate.template.filtersEmptyState\", { type: title })\n : t(\"neetoMessageTemplate.template.emptyState\", { type: title }),\n };\n\n const shouldShowTemplatesCount =\n !isLoading && (isFilterApplied || totalCount > 0);\n\n return (\n <Container>\n <Header\n {...{ breadcrumbs }}\n size=\"small\"\n actionBlock={\n <Button\n data-cy=\"add-api-templates-button\"\n label={t(\"neetoMessageTemplate.api.addApiTemplate\")}\n onClick={() => setIsFormPaneOpen(true)}\n />\n }\n searchProps={\n shouldShowTemplatesCount && {\n placeholder: t(\"neetoMessageTemplate.template.searchApiTemplates\"),\n \"data-cy\": \"api-templates-search-input\",\n }\n }\n title={\n <span className=\"flex\">\n {title}\n <HelpPopover\n className=\"ml-2 self-center\"\n {...helpPopoverProps}\n title={helpPopoverProps?.title || title}\n />\n </span>\n }\n />\n <SubHeader\n leftActionBlock={\n shouldShowTemplatesCount && (\n <Typography component=\"h4\">\n {t(\"neetoMessageTemplate.template.messageTemplatesWithCount\", {\n type: t(\"messageType.api\"),\n count: totalCount,\n })}\n </Typography>\n )\n }\n rightActionBlock={\n <SubHeader.RightBlock\n dataProps={{ totalCount: isFilterApplied ? null : totalCount }}\n filterProps={{\n columns: FILTER_COLUMNS,\n isOpen: isFiltersPaneOpen,\n keyword: searchKeywordProps,\n setIsOpen: setIsFiltersPaneOpen,\n onChange: handleFiltersChange,\n }}\n />\n }\n />\n <FiltersBar\n columns={FILTER_COLUMNS}\n keyword={searchKeywordProps}\n setIsPaneOpen={setIsFiltersPaneOpen}\n onChange={handleFiltersChange}\n />\n {isNotEmpty(templates) ? (\n <TableWrapper hasPagination={totalCount > pageParams.size}>\n <Table\n {...{ totalCount }}\n fixedHeight\n currentPageNumber={pageParams.index}\n defaultPageSize={pageParams.size}\n handlePageChange={(index, size) => setPageParams({ index, size })}\n loading={isLoading || isFetching}\n rowData={templates}\n scroll={{ x: \"100%\" }}\n columnData={buildTableColumnData({\n handleMarkAsActiveOrInactive,\n handleOpenDeleteAlert,\n handleOpenEditPane,\n })}\n />\n </TableWrapper>\n ) : (\n <div className=\"flex h-full w-full items-center justify-center\">\n <NoData {...noDataProps} />\n </div>\n )}\n <Pane isOpen={isFormPaneOpen} onClose={handleCloseDeleteAlertAndFormPane}>\n {({ setFocusField }) => (\n <Form\n {...{\n onMutationSuccess,\n ownerId,\n selectedApiTemplate,\n setFocusField,\n }}\n onClose={handleCloseDeleteAlertAndFormPane}\n />\n )}\n </Pane>\n <Alert\n isOpen={isDeleteAlertOpen}\n isSubmitting={isDeleting}\n submitButtonLabel={t(\"neetoMessageTemplate.template.delete\")}\n title={t(\"neetoMessageTemplate.api.deleteApiTemplate\")}\n message={\n <Trans\n i18nKey=\"neetoMessageTemplate.template.templateDeleteConfirmation\"\n values={{ name: selectedApiTemplate.name }}\n />\n }\n onClose={handleCloseDeleteAlertAndFormPane}\n onSubmit={handleDeleteApiTemplate}\n />\n </Container>\n );\n};\n\nexport default ApiTemplates;\n"],"names":["buildApiTemplatePayload","values","entity","endpoint","additionalData","rejectEmptyKeyValuePairs","templateType","API_TEMPLATE_TYPE","name","buildTableColumnData","_ref","handleMarkAsActiveOrInactive","handleOpenDeleteAlert","handleOpenEditPane","dataIndex","key","title","t","render","apiTemplate","_jsxs","className","children","_jsx","Button","label","style","onClick","MoreDropdown","dropdownButtonProps","dropdownProps","strategy","menuItems","equals","status","TEMPLATE_STATUS","ACTIVE","width","buildApiTemplateInitialValues","isEdit","API_TEMPLATE_INITIAL_VALUES","isEmpty","ADDITIONAL_DATA_INITIAL_VALUE","_objectSpread","pick","Form","setFocusField","onClose","ownerId","selectedApiTemplate","onMutationSuccess","_useTranslation","useTranslation","_useCreateTemplate","useCreateTemplate","createApiTemplate","mutate","isCreating","isPending","_useUpdateTemplate","useUpdateTemplate","updateApiTemplate","isUpdating","isNotEmpty","handleSubmit","_ref2","setSubmitting","payload","options","onSuccess","apply","arguments","onSettled","id","isMutating","_Fragment","Pane","Header","Typography","weight","NeetoUIForm","formikProps","initialValues","validationSchema","API_TEMPLATE_FORM_VALIDATION_SCHEMA","onSubmit","Body","Input","required","ref","placeholder","SAMPLE_URL","KeyValuePairs","Footer","ActionBlock","cancelButtonProps","isSubmitting","ApiTemplates","_helpPopoverProps$hel","_ref$breadcrumbs","breadcrumbs","_ref$helpPopoverProps","helpPopoverProps","_ref$onMutationSucces","noop","_useState","useState","DEFAULT_PAGE_PROPERTIES","_useState2","_slicedToArray","pageParams","setPageParams","_useState3","_useState4","isFiltersPaneOpen","setIsFiltersPaneOpen","_useState5","_useState6","isFormPaneOpen","setIsFormPaneOpen","_useState7","_useState8","setSelectedApiTemplate","_useState9","_useState10","isDeleteAlertOpen","setIsDeleteAlertOpen","_useQueryParams","useQueryParams","_useQueryParams$searc","searchTerm","searchKeywordProps","node","value","_useState11","buildFiltersFromURL","concat","_toConsumableArray","FILTER_COLUMNS","_useState12","filters","setFilters","_useFetchTemplates","useFetchTemplates","page","index","pageSize","size","undefined","_useFetchTemplates$da","data","_useFetchTemplates$da2","templates","totalCount","isLoading","isFetching","isFilterApplied","handleFiltersChange","_useDeleteTemplate","useDeleteTemplate","deleteTemplate","isDeleting","updateTemplate","handleCloseDeleteAlertAndFormPane","newStatus","INACTIVE","handleDeleteApiTemplate","helpDocUrl","helpLinkProps","href","noDataProps","primaryButtonProps","helpText","Trans","i18nKey","components","Link","target","type","shouldShowTemplatesCount","Container","actionBlock","searchProps","HelpPopover","SubHeader","leftActionBlock","component","count","rightActionBlock","RightBlock","dataProps","filterProps","columns","isOpen","keyword","setIsOpen","onChange","FiltersBar","setIsPaneOpen","TableWrapper","hasPagination","Table","fixedHeight","currentPageNumber","defaultPageSize","handlePageChange","loading","rowData","scroll","x","columnData","NoData","_ref3","Alert","submitButtonLabel","message"],"mappings":"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"}