@bigbinary/neeto-message-templates-frontend 1.3.11 → 1.4.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 (44) hide show
  1. package/README.md +69 -17
  2. package/app/javascript/src/translations/en.json +18 -6
  3. package/dist/ApiTemplates.js +52 -19
  4. package/dist/ApiTemplates.js.map +1 -1
  5. package/dist/JsonEditor-ChlZYDDV.js +404 -0
  6. package/dist/JsonEditor-ChlZYDDV.js.map +1 -0
  7. package/dist/JsonEditor-Cz_76w4s.js +436 -0
  8. package/dist/JsonEditor-Cz_76w4s.js.map +1 -0
  9. package/dist/MessageTemplates.js +4 -1
  10. package/dist/MessageTemplates.js.map +1 -1
  11. package/dist/SendMessagePane.js +1 -4
  12. package/dist/SendMessagePane.js.map +1 -1
  13. package/dist/SendToApiPane.js +65 -60
  14. package/dist/SendToApiPane.js.map +1 -1
  15. package/dist/cjs/ApiTemplates.js +61 -28
  16. package/dist/cjs/ApiTemplates.js.map +1 -1
  17. package/dist/cjs/MessageTemplates.js +4 -1
  18. package/dist/cjs/MessageTemplates.js.map +1 -1
  19. package/dist/cjs/SendMessagePane.js +1 -4
  20. package/dist/cjs/SendMessagePane.js.map +1 -1
  21. package/dist/cjs/SendToApiPane.js +68 -63
  22. package/dist/cjs/SendToApiPane.js.map +1 -1
  23. package/dist/cjs/index.js +7 -5
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/index.js +7 -5
  26. package/dist/index.js.map +1 -1
  27. package/dist/inject-css-DmrvuTKK.js +4 -0
  28. package/dist/inject-css-DmrvuTKK.js.map +1 -0
  29. package/dist/inject-css-vQvjPR2x.js +6 -0
  30. package/dist/inject-css-vQvjPR2x.js.map +1 -0
  31. package/dist/utils-3fvk3PIJ.js +54 -0
  32. package/dist/utils-3fvk3PIJ.js.map +1 -0
  33. package/dist/utils-o_45ksFf.js +51 -0
  34. package/dist/utils-o_45ksFf.js.map +1 -0
  35. package/package.json +21 -17
  36. package/types.d.ts +30 -3
  37. package/dist/utils-CdkVjz8p.js +0 -80
  38. package/dist/utils-CdkVjz8p.js.map +0 -1
  39. package/dist/utils-D7y24q1q.js +0 -186
  40. package/dist/utils-D7y24q1q.js.map +0 -1
  41. package/dist/utils-DCNzEjAw.js +0 -83
  42. package/dist/utils-DCNzEjAw.js.map +0 -1
  43. package/dist/utils-oljkG5EG.js +0 -156
  44. package/dist/utils-oljkG5EG.js.map +0 -1
package/README.md CHANGED
@@ -168,9 +168,11 @@ const App = () => {
168
168
  type={type}
169
169
  isTestingTemplateDisabled={isTestingTemplateDisabled}
170
170
  manageTemplatesPaneCustomFields={manageTemplatesPaneCustomFields()}
171
- onMutationSuccess={() => queryClient.invalidateQueries({
172
- queryKey: ["rules"],
173
- })}
171
+ onMutationSuccess={() =>
172
+ queryClient.invalidateQueries({
173
+ queryKey: ["rules"],
174
+ })
175
+ }
174
176
  />
175
177
  );
176
178
  };
@@ -200,7 +202,8 @@ to compose and send messages.
200
202
  model. If the owner is an Organization, this prop can be left unspecified.
201
203
  - `isSaveAsTemplateEnabled` - To allow users to save the contents of current
202
204
  message as a new template.
203
- - `canManageTemplates` - When this is set to false, `save as template` option won't be displayed to users.
205
+ - `canManageTemplates` - When this is set to false, `save as template` option
206
+ won't be displayed to users.
204
207
 
205
208
  ##### Usage
206
209
 
@@ -267,11 +270,19 @@ filtering and search capabilities.
267
270
  - `breadcrumbs`: An array of objects that specify breadcrumbs for navigation.
268
271
  - `onMutationSuccess`: The callback function which is triggered on the success
269
272
  of mutation functions(create, update & delete).
270
- - `helpPopoverProps`: To add help popover for the component. Refer
271
- [HelpPopover component doc](https://neeto-molecules.neeto.com/?path=/docs/helppopover--docs).
272
- NOTE: `href` from `helpLinkProps` will be used for displaying the help doc
273
- link in `NoData` component. Header title will be used as the help popover
274
- title if no title is provided.
273
+ - `initialPayload`: To specify the initial value of the body as an object.
274
+ - `templateVariables`: To add dynamic variables to body field.
275
+ - `helpPopoverProps` - To add help popovers to various sections.
276
+
277
+ - **Header**: Define popover props under `apiTemplates`. NOTE: `href` from
278
+ `helpLinkProps` will be used for displaying the help doc link in `NoData`
279
+ component. Header title will be used as the help popover title if no title
280
+ is provided.
281
+ - **Custom headers**: Define popover props under `customHeaders`.
282
+ - **Body**: Define popover props under `body`.
283
+
284
+ For more details. For more details, refer to the
285
+ [HelpPopover component documentation](https://neeto-molecules.neeto.com/?path=/docs/helppopover--docs).
275
286
 
276
287
  ##### Usage
277
288
 
@@ -286,10 +297,36 @@ const App = () => {
286
297
  const breadcrumbs = [{ link: "/settings", text: "Settings" }];
287
298
  const ownerId = "ownerId";
288
299
 
300
+ const HELP_POPOVER_PROPS = {
301
+ apiTemplates: {
302
+ title: "Title for the popover displayed in header",
303
+ description: "Description for the popover displayed in header.",
304
+ helpLinkProps: { href: SEND_TO_API_HELP_DOC_URL },
305
+ },
306
+ customHeaders: {
307
+ title: "Title for custom headers popover",
308
+ description: "Description for custom headers popover.",
309
+ helpLinkProps: { href: CUSTOM_HEADERS_HELP_DOC_URL },
310
+ },
311
+ body: {
312
+ title: "Title for API payload popover",
313
+ description: "Description for API payload popover.",
314
+ helpLinkProps: { href: API_PAYLOAD_HELP_DOC_URL },
315
+ },
316
+ };
317
+
318
+ TEMPLATE_VARIABLES = [
319
+ { label: t("form.allAnswers"), key: "all-answers" },
320
+ { label: t("common.formName"), key: "form-name" },
321
+ ];
322
+
289
323
  return (
290
324
  <ApiTemplates
291
325
  {...{ breadcrumbs, ownerId }}
292
- onMutationSuccess={() => queryClient.invalidateQueries({ queryKey: ["rules"] })}
326
+ templateVariables={TEMPLATE_VARIABLES}
327
+ onMutationSuccess={() =>
328
+ queryClient.invalidateQueries({ queryKey: ["rules"] })
329
+ }
293
330
  />
294
331
  );
295
332
  };
@@ -306,13 +343,17 @@ it if needed and send the data to the specified HTTP(S) endpoint.
306
343
  - `onClose`: This function will be executed while closing the pane.
307
344
  - `onSubmit`: This function will be executed while submitting the form.
308
345
  - `isSubmitting`: A boolean to know the form submission status
309
- - `canManageTemplates` - When this is set to false, `save as template` option won't be displayed to users.
346
+ - `canManageTemplates` - When this is set to false, `save as template` option
347
+ won't be displayed to users.
348
+ - `templateVariables`: To add dynamic variables to body field.
310
349
  - `helpPopoverProps` - To add help popovers to various sections in the pane.
350
+
311
351
  - **Pane title**: Define popover props under `sendToApi`.
312
- - **Additional data**: Define popover props under `additionalData`.
352
+ - **Custom headers**: Define popover props under `customHeaders`.
353
+ - **Body**: Define popover props under `body`.
313
354
 
314
355
  For more details. For more details, refer to the
315
- [HelpPopover component documentation](https://neeto-molecules.neeto.com/?path=/docs/helppopover--docs).
356
+ [HelpPopover component documentation](https://neeto-molecules.neeto.com/?path=/docs/helppopover--docs).
316
357
 
317
358
  ##### Usage
318
359
 
@@ -333,13 +374,23 @@ const App = () => {
333
374
  description: "Description for send to API popover.",
334
375
  helpLinkProps: { href: SEND_TO_API_HELP_DOC_URL },
335
376
  },
336
- additionalData: {
337
- title: "Title for additional data popover",
338
- description: "Description for additional data popover.",
339
- helpLinkProps: { href: ADDITIONAL_DATA_HELP_DOC_URL },
377
+ customHeaders: {
378
+ title: "Title for custom headers popover",
379
+ description: "Description for custom headers popover.",
380
+ helpLinkProps: { href: CUSTOM_HEADERS_HELP_DOC_URL },
381
+ },
382
+ body: {
383
+ title: "Title for API payload popover",
384
+ description: "Description for API payload popover.",
385
+ helpLinkProps: { href: API_PAYLOAD_HELP_DOC_URL },
340
386
  },
341
387
  };
342
388
 
389
+ TEMPLATE_VARIABLES = [
390
+ { label: t("form.allAnswers"), key: "all-answers" },
391
+ { label: t("common.formName"), key: "form-name" },
392
+ ];
393
+
343
394
  const handleSubmit = () => {
344
395
  setIsSubmitting(true);
345
396
  // API call
@@ -353,6 +404,7 @@ const App = () => {
353
404
  onClose={() => setIsSendToApiPaneOpen(false)}
354
405
  onSubmit={handleSubmit}
355
406
  helpPopoverProps={HELP_POPOVER_PROPS}
407
+ templateVariables={TEMPLATE_VARIABLES}
356
408
  />
357
409
  );
358
410
  };
@@ -34,7 +34,7 @@
34
34
  "whatsappTemplates": "Whatsapp Templates",
35
35
  "whatsappTemplate": "Whatsapp Template",
36
36
  "apiTemplates": "API templates",
37
- "emptyState": "There are no {{type, anyCase}} to show",
37
+ "emptyState": "There are no {{type, anyCase}} to show.",
38
38
  "whatsapp": {
39
39
  "helpDocText": "You can create and add new WhatsApp templates by referring to this <Link>help document</Link>."
40
40
  },
@@ -62,6 +62,9 @@
62
62
  "messageTemplatesWithCount_other": "{{count}} {{type, anyCase}} templates",
63
63
  "viewHelpArticle": "View help article"
64
64
  },
65
+ "validations": {
66
+ "requiredEntity": "{{entity}} is required"
67
+ },
65
68
  "sendMessage": {
66
69
  "email": "Send email",
67
70
  "sms": "Send SMS",
@@ -77,23 +80,32 @@
77
80
  "api": {
78
81
  "sendToApi": "Send to API",
79
82
  "endpoint": "Endpoint",
80
- "additionalData": "Additional data",
83
+ "headers": "Headers",
84
+ "includeHeaders": "Include headers",
81
85
  "addApiTemplate": "Add new API template",
82
86
  "editApiTemplate": "Edit API template",
83
- "addKeyValuePair": "Add new key value pair",
87
+ "addEntity": "Add {{entity}}",
84
88
  "key": "Key",
85
89
  "value": "Value",
86
90
  "deleteApiTemplate": "Delete API template?",
91
+ "insertPlaceholder": "Insert placeholder: {{label}}",
87
92
  "validation": {
88
93
  "endpointPresence": "Endpoint is required",
89
- "validEndpoint": "Endpoint should be valid URL"
94
+ "validEndpoint": "Endpoint should be valid URL",
95
+ "invalidJsonBody": "Body should be a valid JSON"
90
96
  },
91
97
  "helpPopovers": {
98
+ "apiTemplates": {
99
+ "description": "You can create and customize templates for API requests that can be sent to external services."
100
+ },
92
101
  "sendToApi": {
93
102
  "description": "In certain cases, you might want to send data to an external service. This allows you to send the selected data via an API request."
94
103
  },
95
- "additionalData": {
96
- "description": "Specify additional information that needs to be included in the request body. This allows you to send custom values alongside your selected data."
104
+ "customHeaders": {
105
+ "description": "Add custom headers to include in the API request, such as authentication tokens."
106
+ },
107
+ "body": {
108
+ "description": "Define the request payload. You can include placeholders and structure it to match your API requirements."
97
109
  }
98
110
  }
99
111
  }
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
3
3
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useState } from 'react';
4
+ import { useMemo, useState } from 'react';
5
5
  import { truncate, isNotEmpty, noop } from '@bigbinary/neeto-cist';
6
6
  import { useQueryParams } from '@bigbinary/neeto-commons-frontend/react-utils';
7
7
  import FiltersBar from '@bigbinary/neeto-filters-frontend/Bar';
@@ -16,9 +16,9 @@ import NoData from '@bigbinary/neetoui/NoData';
16
16
  import Pane from '@bigbinary/neetoui/Pane';
17
17
  import Table from '@bigbinary/neetoui/Table';
18
18
  import Typography from '@bigbinary/neetoui/Typography';
19
- import { equals, isEmpty, pick } from 'ramda';
19
+ import { equals, assoc, isEmpty, pick } from 'ramda';
20
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-oljkG5EG.js';
21
+ import { T as TEMPLATE_STATUS, A as API_TEMPLATE_INITIAL_VALUES, C as CUSTOM_HEADERS_INITIAL_VALUE, r as rejectEmptyKeyValuePairs, a as API_TEMPLATE_TYPE, b as API_TEMPLATE_FORM_VALIDATION_SCHEMA, S as SAMPLE_URL, c as CustomHeaders, J as JsonEditor, F as FILTER_COLUMNS, d as buildHelpPopoverProps } from './JsonEditor-ChlZYDDV.js';
22
22
  import { D as DEFAULT_PAGE_PROPERTIES } from './constants-D4v0xTUu.js';
23
23
  import { u as useCreateTemplate, a as useUpdateTemplate, b as useFetchTemplates, c as useDeleteTemplate } from './useTemplatesApi-D63swqeh.js';
24
24
  import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
@@ -29,8 +29,13 @@ import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
29
29
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
30
30
  import 'yup';
31
31
  import 'formik';
32
+ import '@bigbinary/neetoui/formik/Switch';
32
33
  import '@bigbinary/neeto-icons/Delete';
34
+ import '@monaco-editor/react';
35
+ import '@bigbinary/neeto-icons/Help';
36
+ import '@bigbinary/neeto-molecules/DynamicVariables';
33
37
  import '@bigbinary/neetoui/Label';
38
+ import './inject-css-DmrvuTKK.js';
34
39
  import '@bigbinary/neeto-commons-frontend/constants';
35
40
  import '@tanstack/react-query';
36
41
  import 'axios';
@@ -43,7 +48,9 @@ var buildApiTemplatePayload = function buildApiTemplatePayload(values, templateI
43
48
  entity: {
44
49
  id: templateId,
45
50
  endpoint: values.endpoint,
46
- additionalData: rejectEmptyKeyValuePairs(values.additionalData)
51
+ enableCustomHeaders: values.enableCustomHeaders,
52
+ customHeaders: rejectEmptyKeyValuePairs(values.customHeaders || []),
53
+ body: values.body
47
54
  },
48
55
  templateType: API_TEMPLATE_TYPE,
49
56
  name: values.name
@@ -109,11 +116,13 @@ var buildTableColumnData = function buildTableColumnData(_ref) {
109
116
  width: "20%"
110
117
  }];
111
118
  };
112
- var buildApiTemplateInitialValues = function buildApiTemplateInitialValues(isEdit, apiTemplate) {
113
- if (!isEdit) return API_TEMPLATE_INITIAL_VALUES;
114
- var additionalData = isEmpty(apiTemplate.additionalData) ? [ADDITIONAL_DATA_INITIAL_VALUE] : apiTemplate.additionalData;
115
- return _objectSpread$1(_objectSpread$1({}, pick(["name", "endpoint"], apiTemplate)), {}, {
116
- additionalData: additionalData
119
+ var buildApiTemplateInitialValues = function buildApiTemplateInitialValues(isEdit, apiTemplate, initialPayload) {
120
+ if (!isEdit) {
121
+ return assoc("body", initialPayload, API_TEMPLATE_INITIAL_VALUES);
122
+ }
123
+ var customHeaders = isEmpty(apiTemplate.customHeaders) ? [CUSTOM_HEADERS_INITIAL_VALUE] : apiTemplate.customHeaders;
124
+ return _objectSpread$1(_objectSpread$1({}, pick(["name", "endpoint", "body", "enableCustomHeaders"], apiTemplate)), {}, {
125
+ customHeaders: customHeaders
117
126
  });
118
127
  };
119
128
 
@@ -122,7 +131,11 @@ var Form = function Form(_ref) {
122
131
  onClose = _ref.onClose,
123
132
  ownerId = _ref.ownerId,
124
133
  selectedApiTemplate = _ref.selectedApiTemplate,
125
- onMutationSuccess = _ref.onMutationSuccess;
134
+ onMutationSuccess = _ref.onMutationSuccess,
135
+ initialPayload = _ref.initialPayload,
136
+ templateVariables = _ref.templateVariables,
137
+ bodyHelpPopoverProps = _ref.bodyHelpPopoverProps,
138
+ customHeadersHelpPopoverProps = _ref.customHeadersHelpPopoverProps;
126
139
  var _useTranslation = useTranslation(),
127
140
  t = _useTranslation.t;
128
141
  var _useCreateTemplate = useCreateTemplate(ownerId),
@@ -154,6 +167,9 @@ var Form = function Form(_ref) {
154
167
  createApiTemplate(payload, options);
155
168
  };
156
169
  var isMutating = isUpdating || isCreating;
170
+ var initialValues = useMemo(function () {
171
+ return buildApiTemplateInitialValues(isEdit, selectedApiTemplate, initialPayload);
172
+ }, [isEdit, selectedApiTemplate, initialPayload]);
157
173
  return /*#__PURE__*/jsxs(Fragment, {
158
174
  children: [/*#__PURE__*/jsx(Pane.Header, {
159
175
  children: /*#__PURE__*/jsx(Typography, {
@@ -163,13 +179,13 @@ var Form = function Form(_ref) {
163
179
  })
164
180
  }), /*#__PURE__*/jsxs(NeetoUIForm, {
165
181
  formikProps: {
166
- initialValues: buildApiTemplateInitialValues(isEdit, selectedApiTemplate),
182
+ initialValues: initialValues,
167
183
  validationSchema: API_TEMPLATE_FORM_VALIDATION_SCHEMA,
168
184
  onSubmit: handleSubmit
169
185
  },
170
186
  children: [/*#__PURE__*/jsx(Pane.Body, {
171
187
  children: /*#__PURE__*/jsxs("div", {
172
- className: "w-full space-y-5",
188
+ className: "w-full space-y-5 mb-10",
173
189
  children: [/*#__PURE__*/jsx(Input, {
174
190
  required: true,
175
191
  label: t("neetoMessageTemplate.template.name"),
@@ -180,9 +196,13 @@ var Form = function Form(_ref) {
180
196
  label: t("neetoMessageTemplate.api.endpoint"),
181
197
  name: "endpoint",
182
198
  placeholder: SAMPLE_URL
183
- }), /*#__PURE__*/jsx(KeyValuePairs, {
184
- label: t("neetoMessageTemplate.api.additionalData"),
185
- name: "additionalData"
199
+ }), /*#__PURE__*/jsx(CustomHeaders, {
200
+ helpPopoverProps: customHeadersHelpPopoverProps
201
+ }), /*#__PURE__*/jsx(JsonEditor, {
202
+ templateVariables: templateVariables,
203
+ helpPopoverProps: bodyHelpPopoverProps,
204
+ initialValue: initialValues.body,
205
+ name: "body"
186
206
  })]
187
207
  })
188
208
  }), /*#__PURE__*/jsx(Pane.Footer, {
@@ -200,12 +220,16 @@ var Form = function Form(_ref) {
200
220
  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; }
201
221
  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; }
202
222
  var ApiTemplates = function ApiTemplates(_ref) {
203
- var _helpPopoverProps$hel;
223
+ var _apiTemplatesHelpPopo;
204
224
  var ownerId = _ref.ownerId,
205
225
  _ref$breadcrumbs = _ref.breadcrumbs,
206
226
  breadcrumbs = _ref$breadcrumbs === void 0 ? [] : _ref$breadcrumbs,
207
227
  _ref$helpPopoverProps = _ref.helpPopoverProps,
208
228
  helpPopoverProps = _ref$helpPopoverProps === void 0 ? {} : _ref$helpPopoverProps,
229
+ _ref$initialPayload = _ref.initialPayload,
230
+ initialPayload = _ref$initialPayload === void 0 ? {} : _ref$initialPayload,
231
+ _ref$templateVariable = _ref.templateVariables,
232
+ templateVariables = _ref$templateVariable === void 0 ? [] : _ref$templateVariable,
209
233
  _ref$onMutationSucces = _ref.onMutationSuccess,
210
234
  onMutationSuccess = _ref$onMutationSucces === void 0 ? noop : _ref$onMutationSucces;
211
235
  var _useTranslation = useTranslation(),
@@ -303,7 +327,11 @@ var ApiTemplates = function ApiTemplates(_ref) {
303
327
  }
304
328
  });
305
329
  };
306
- var helpDocUrl = (helpPopoverProps === null || helpPopoverProps === void 0 || (_helpPopoverProps$hel = helpPopoverProps.helpLinkProps) === null || _helpPopoverProps$hel === void 0 ? void 0 : _helpPopoverProps$hel.href) || "";
330
+ var _buildHelpPopoverProp = buildHelpPopoverProps(helpPopoverProps),
331
+ apiTemplatesHelpPopoverProps = _buildHelpPopoverProp.apiTemplates,
332
+ customHeadersHelpPopoverProps = _buildHelpPopoverProp.customHeaders,
333
+ bodyHelpPopoverProps = _buildHelpPopoverProp.body;
334
+ var helpDocUrl = (apiTemplatesHelpPopoverProps === null || apiTemplatesHelpPopoverProps === void 0 || (_apiTemplatesHelpPopo = apiTemplatesHelpPopoverProps.helpLinkProps) === null || _apiTemplatesHelpPopo === void 0 ? void 0 : _apiTemplatesHelpPopo.href) || "";
307
335
  var noDataProps = _objectSpread(_objectSpread({}, !isFilterApplied && {
308
336
  primaryButtonProps: {
309
337
  label: t("neetoMessageTemplate.api.addApiTemplate"),
@@ -348,8 +376,8 @@ var ApiTemplates = function ApiTemplates(_ref) {
348
376
  placeholder: t("neetoMessageTemplate.template.searchApiTemplates"),
349
377
  "data-cy": "api-templates-search-input"
350
378
  },
351
- titleHelpPopoverProps: helpPopoverProps && _objectSpread(_objectSpread({}, helpPopoverProps), {}, {
352
- title: (helpPopoverProps === null || helpPopoverProps === void 0 ? void 0 : helpPopoverProps.title) || title
379
+ titleHelpPopoverProps: apiTemplatesHelpPopoverProps && _objectSpread(_objectSpread({}, apiTemplatesHelpPopoverProps), {}, {
380
+ title: (apiTemplatesHelpPopoverProps === null || apiTemplatesHelpPopoverProps === void 0 ? void 0 : apiTemplatesHelpPopoverProps.title) || title
353
381
  })
354
382
  }), /*#__PURE__*/jsx(SubHeader, {
355
383
  className: "mb-4",
@@ -406,14 +434,19 @@ var ApiTemplates = function ApiTemplates(_ref) {
406
434
  children: /*#__PURE__*/jsx(NoData, _objectSpread({}, noDataProps))
407
435
  }), /*#__PURE__*/jsx(Pane, {
408
436
  isOpen: isFormPaneOpen,
437
+ size: "large",
409
438
  onClose: handleCloseDeleteAlertAndFormPane,
410
439
  children: function children(_ref3) {
411
440
  var setFocusField = _ref3.setFocusField;
412
441
  return /*#__PURE__*/jsx(Form, {
442
+ bodyHelpPopoverProps: bodyHelpPopoverProps,
443
+ customHeadersHelpPopoverProps: customHeadersHelpPopoverProps,
413
444
  onMutationSuccess: onMutationSuccess,
414
445
  ownerId: ownerId,
415
446
  selectedApiTemplate: selectedApiTemplate,
416
447
  setFocusField: setFocusField,
448
+ templateVariables: templateVariables,
449
+ initialPayload: JSON.stringify(initialPayload, null, 2),
417
450
  onClose: handleCloseDeleteAlertAndFormPane
418
451
  });
419
452
  }
@@ -1 +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\";\nimport { truncate } from \"neetocist\";\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, templateId) => ({\n entity: {\n id: templateId,\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={truncate(name, 100)}\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, selectedApiTemplate?.id);\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 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: <Button href={helpDocUrl} style=\"link\" target=\"_blank\" />,\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, title }}\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 titleHelpPopoverProps={\n helpPopoverProps && {\n ...helpPopoverProps,\n title: helpPopoverProps?.title || title,\n }\n }\n />\n <SubHeader\n className=\"mb-4\"\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","templateId","entity","id","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","truncate","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","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","titleHelpPopoverProps","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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"}
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 { truncate } from \"neetocist\";\nimport MoreDropdown from \"neetomolecules/MoreDropdown\";\nimport { Button } from \"neetoui\";\nimport { assoc, equals, isEmpty, pick } from \"ramda\";\n\nimport {\n CUSTOM_HEADERS_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, templateId) => ({\n entity: {\n id: templateId,\n endpoint: values.endpoint,\n enableCustomHeaders: values.enableCustomHeaders,\n customHeaders: rejectEmptyKeyValuePairs(values.customHeaders || []),\n body: values.body,\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={truncate(name, 100)}\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 = (\n isEdit,\n apiTemplate,\n initialPayload\n) => {\n if (!isEdit) {\n return assoc(\"body\", initialPayload, API_TEMPLATE_INITIAL_VALUES);\n }\n\n const customHeaders = isEmpty(apiTemplate.customHeaders)\n ? [CUSTOM_HEADERS_INITIAL_VALUE]\n : apiTemplate.customHeaders;\n\n return {\n ...pick([\"name\", \"endpoint\", \"body\", \"enableCustomHeaders\"], apiTemplate),\n customHeaders,\n };\n};\n","import { useMemo } from \"react\";\n\nimport { isNotEmpty } from \"neetocist\";\nimport { Pane, Typography } from \"neetoui\";\nimport { ActionBlock, Input, Form as NeetoUIForm } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\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\nimport CustomHeaders from \"../CustomHeaders\";\nimport JsonEditor from \"../JsonEditor\";\n\nconst Form = ({\n setFocusField,\n onClose,\n ownerId,\n selectedApiTemplate,\n onMutationSuccess,\n initialPayload,\n templateVariables,\n bodyHelpPopoverProps,\n customHeadersHelpPopoverProps,\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, selectedApiTemplate?.id);\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 const initialValues = useMemo(\n () =>\n buildApiTemplateInitialValues(\n isEdit,\n selectedApiTemplate,\n initialPayload\n ),\n [isEdit, selectedApiTemplate, initialPayload]\n );\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,\n validationSchema: API_TEMPLATE_FORM_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n <Pane.Body>\n <div className=\"w-full space-y-5 mb-10\">\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 <CustomHeaders helpPopoverProps={customHeadersHelpPopoverProps} />\n <JsonEditor\n {...{ templateVariables }}\n helpPopoverProps={bodyHelpPopoverProps}\n initialValue={initialValues.body}\n name=\"body\"\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 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\nimport { buildHelpPopoverProps } from \"../utils\";\n\nconst ApiTemplates = ({\n ownerId,\n breadcrumbs = [],\n helpPopoverProps = {},\n initialPayload = {},\n templateVariables = [],\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 {\n apiTemplates: apiTemplatesHelpPopoverProps,\n customHeaders: customHeadersHelpPopoverProps,\n body: bodyHelpPopoverProps,\n } = buildHelpPopoverProps(helpPopoverProps);\n\n const helpDocUrl = apiTemplatesHelpPopoverProps?.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: <Button href={helpDocUrl} style=\"link\" target=\"_blank\" />,\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, title }}\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 titleHelpPopoverProps={\n apiTemplatesHelpPopoverProps && {\n ...apiTemplatesHelpPopoverProps,\n title: apiTemplatesHelpPopoverProps?.title || title,\n }\n }\n />\n <SubHeader\n className=\"mb-4\"\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\n isOpen={isFormPaneOpen}\n size=\"large\"\n onClose={handleCloseDeleteAlertAndFormPane}\n >\n {({ setFocusField }) => (\n <Form\n {...{\n bodyHelpPopoverProps,\n customHeadersHelpPopoverProps,\n onMutationSuccess,\n ownerId,\n selectedApiTemplate,\n setFocusField,\n templateVariables,\n }}\n initialPayload={JSON.stringify(initialPayload, null, 2)}\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","templateId","entity","id","endpoint","enableCustomHeaders","customHeaders","rejectEmptyKeyValuePairs","body","templateType","API_TEMPLATE_TYPE","name","buildTableColumnData","_ref","handleMarkAsActiveOrInactive","handleOpenDeleteAlert","handleOpenEditPane","dataIndex","key","title","t","render","apiTemplate","_jsxs","className","children","_jsx","Button","label","truncate","style","onClick","MoreDropdown","dropdownButtonProps","dropdownProps","strategy","menuItems","equals","status","TEMPLATE_STATUS","ACTIVE","width","buildApiTemplateInitialValues","isEdit","initialPayload","assoc","API_TEMPLATE_INITIAL_VALUES","isEmpty","CUSTOM_HEADERS_INITIAL_VALUE","_objectSpread","pick","Form","setFocusField","onClose","ownerId","selectedApiTemplate","onMutationSuccess","templateVariables","bodyHelpPopoverProps","customHeadersHelpPopoverProps","_useTranslation","useTranslation","_useCreateTemplate","useCreateTemplate","createApiTemplate","mutate","isCreating","isPending","_useUpdateTemplate","useUpdateTemplate","updateApiTemplate","isUpdating","isNotEmpty","handleSubmit","_ref2","setSubmitting","payload","options","onSuccess","apply","arguments","onSettled","isMutating","initialValues","useMemo","_Fragment","Pane","Header","Typography","weight","NeetoUIForm","formikProps","validationSchema","API_TEMPLATE_FORM_VALIDATION_SCHEMA","onSubmit","Body","Input","required","ref","placeholder","SAMPLE_URL","CustomHeaders","helpPopoverProps","JsonEditor","initialValue","Footer","ActionBlock","cancelButtonProps","isSubmitting","ApiTemplates","_apiTemplatesHelpPopo","_ref$breadcrumbs","breadcrumbs","_ref$helpPopoverProps","_ref$initialPayload","_ref$templateVariable","_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","_buildHelpPopoverProp","buildHelpPopoverProps","apiTemplatesHelpPopoverProps","apiTemplates","helpDocUrl","helpLinkProps","href","noDataProps","primaryButtonProps","helpText","Trans","i18nKey","components","Link","target","type","shouldShowTemplatesCount","Container","actionBlock","searchProps","titleHelpPopoverProps","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","JSON","stringify","Alert","submitButtonLabel","message"],"mappings":"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"}