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