@bigbinary/neeto-message-templates-frontend 1.3.10 → 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
@@ -8,73 +8,74 @@ import Typography from '@bigbinary/neetoui/Typography';
8
8
  import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
9
9
  import Input from '@bigbinary/neetoui/formik/Input';
10
10
  import NeetoUIForm from '@bigbinary/neetoui/formik/Form';
11
- import { map, unless, path, omit, mergeDeepLeft, modify, equals } from 'ramda';
11
+ import { equals, modify } from 'ramda';
12
12
  import { useTranslation } from 'react-i18next';
13
- import { V as VALID_URL_REGEX, a as ADDITIONAL_DATA_INITIAL_VALUE, S as SAMPLE_URL, K as KeyValuePairs, r as rejectEmptyKeyValuePairs, b as API_TEMPLATE_TYPE } from './utils-oljkG5EG.js';
14
- import { S as SaveAsTemplate, a as areValuesEqual } from './utils-CdkVjz8p.js';
13
+ import { V as VALID_URL_REGEX, C as CUSTOM_HEADERS_INITIAL_VALUE, d as buildHelpPopoverProps, S as SAMPLE_URL, c as CustomHeaders, J as JsonEditor, r as rejectEmptyKeyValuePairs, a as API_TEMPLATE_TYPE } from './JsonEditor-ChlZYDDV.js';
14
+ import { S as SaveAsTemplate, a as areValuesEqual } from './utils-o_45ksFf.js';
15
15
  import { b as useFetchTemplates } from './useTemplatesApi-D63swqeh.js';
16
16
  import { t } from 'i18next';
17
17
  import * as yup from 'yup';
18
18
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
19
+ import 'react';
19
20
  import 'formik';
21
+ import '@bigbinary/neetoui/formik/Switch';
20
22
  import '@bigbinary/neeto-commons-frontend/react-utils';
21
23
  import '@bigbinary/neeto-icons/Delete';
22
24
  import '@bigbinary/neetoui/Button';
25
+ import '@babel/runtime/helpers/slicedToArray';
26
+ import '@monaco-editor/react';
27
+ import '@bigbinary/neeto-icons/Help';
28
+ import '@bigbinary/neeto-molecules/DynamicVariables';
23
29
  import '@bigbinary/neetoui/Label';
24
- import 'react';
25
- import '@babel/runtime/helpers/objectWithoutProperties';
26
- import 'classnames';
27
- import '@bigbinary/neetoui/formik/Switch';
30
+ import './inject-css-DmrvuTKK.js';
28
31
  import '@tanstack/react-query';
29
32
  import 'axios';
30
33
  import 'qs';
31
34
 
32
35
  var SEND_TO_API_FORM_INITIAL_VALUES = {
33
36
  endpoint: "",
34
- additionalData: [ADDITIONAL_DATA_INITIAL_VALUE],
37
+ enableCustomHeaders: false,
38
+ customHeaders: [CUSTOM_HEADERS_INITIAL_VALUE],
39
+ body: "{}",
35
40
  shouldSaveAsTemplate: false,
36
41
  templateName: ""
37
42
  };
38
43
  var SEND_TO_API_FORM_VALIDATION_SCHEMA = yup.object({
39
- endpoint: yup.string().required(t("neetoMessageTemplate.api.validation.endpointPresence")).matches(VALID_URL_REGEX, t("neetoMessageTemplate.api.validation.validEndpoint")),
40
- additionalData: yup.array().of(yup.object({
41
- key: yup.string(),
42
- value: yup.string()
43
- })),
44
- templateName: yup.string().when("shouldSaveAsTemplate", {
45
- is: true,
46
- then: yup.string().required(t("neetoMessageTemplate.template.validation.requiredEntity", {
47
- entity: t("neetoMessageTemplate.template.templateName")
48
- }))
44
+ endpoint: yup.string().trim().required(t("neetoMessageTemplate.api.validation.endpointPresence")).matches(VALID_URL_REGEX, t("neetoMessageTemplate.api.validation.validEndpoint")),
45
+ body: yup.string().trim().required(t("neetoMessageTemplate.validations.requiredEntity", {
46
+ entity: t("neetoMessageTemplate.template.body")
47
+ })).test("is-not-empty", t("neetoMessageTemplate.validations.requiredEntity", {
48
+ entity: t("neetoMessageTemplate.template.body")
49
+ }), function (value) {
50
+ return isPresent(value);
51
+ }).test("is-valid-json", t("neetoMessageTemplate.api.validation.invalidJsonBody"), function (value) {
52
+ try {
53
+ JSON.parse(value);
54
+ return true;
55
+ } catch (_unused) {
56
+ return false;
57
+ }
49
58
  })
50
59
  });
51
- var SEND_TO_API_HELP_POPOVER_PROPS = {
52
- sendToApi: {
53
- description: t("neetoMessageTemplate.api.helpPopovers.sendToApi.description"),
54
- helpLinkProps: {
55
- "data-cy": "send-to-api-action-help-link"
56
- },
57
- popoverProps: {
58
- position: "top"
59
- }
60
- },
61
- additionalData: {
62
- description: t("neetoMessageTemplate.api.helpPopovers.additionalData.description"),
63
- helpLinkProps: {
64
- label: t("neetoMessageTemplate.template.viewHelpArticle"),
65
- "data-cy": "send-to-api-additional-data-help-link"
66
- },
67
- position: "top"
68
- }
69
- };
70
60
 
71
- var sanitizeHelpPopoverProps = map(unless(path(["helpLinkProps", "href"]), omit(["helpLinkProps"])));
72
- var formatAdditionalData = function formatAdditionalData(additionalData) {
73
- return isPresent(additionalData) ? additionalData : [ADDITIONAL_DATA_INITIAL_VALUE];
61
+ var formatCustomHeaders = function formatCustomHeaders(customHeaders) {
62
+ return isPresent(customHeaders) ? customHeaders : [CUSTOM_HEADERS_INITIAL_VALUE];
74
63
  };
75
- var buildHelpPopoverProps = function buildHelpPopoverProps(popoverProps) {
76
- var combinedProps = mergeDeepLeft(popoverProps, SEND_TO_API_HELP_POPOVER_PROPS);
77
- return sanitizeHelpPopoverProps(combinedProps);
64
+ var areHeadersSame = function areHeadersSame(enableCustomHeaders, customHeaders) {
65
+ var template = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
66
+ var templateHasCustomHeaders = template.enableCustomHeaders,
67
+ templateHeaders = template.customHeaders;
68
+ if (!enableCustomHeaders && !templateHasCustomHeaders) return true;
69
+ if (enableCustomHeaders !== templateHasCustomHeaders) return false;
70
+ return equals(customHeaders, templateHeaders);
71
+ };
72
+ var isBodyAvailable = function isBodyAvailable(body) {
73
+ try {
74
+ var data = JSON.parse(body);
75
+ return isPresent(data);
76
+ } catch (_unused) {
77
+ return false;
78
+ }
78
79
  };
79
80
 
80
81
  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; }
@@ -85,6 +86,7 @@ var SendToApiPane = function SendToApiPane(props) {
85
86
  return /*#__PURE__*/jsx(Pane, {
86
87
  isOpen: isOpen,
87
88
  onClose: onClose,
89
+ size: "large",
88
90
  children: function children(paneProps) {
89
91
  return /*#__PURE__*/jsx(SendToApiForm, _objectSpread({}, _objectSpread(_objectSpread({}, props), {}, {
90
92
  paneProps: paneProps
@@ -97,6 +99,7 @@ var SendToApiForm = function SendToApiForm(_ref) {
97
99
  onClose = _ref.onClose,
98
100
  onSubmit = _ref.onSubmit,
99
101
  isSubmitting = _ref.isSubmitting,
102
+ templateVariables = _ref.templateVariables,
100
103
  _ref$canManageTemplat = _ref.canManageTemplates,
101
104
  canManageTemplates = _ref$canManageTemplat === void 0 ? true : _ref$canManageTemplat,
102
105
  _ref$helpPopoverProps = _ref.helpPopoverProps,
@@ -119,28 +122,32 @@ var SendToApiForm = function SendToApiForm(_ref) {
119
122
  var template = findBy({
120
123
  id: option.value
121
124
  }, templates);
122
- setValues(_objectSpread(_objectSpread({}, values), modify("additionalData", formatAdditionalData, template)));
125
+ setValues(_objectSpread(_objectSpread({}, values), modify("customHeaders", formatCustomHeaders, template)));
123
126
  };
124
127
  var handleSubmit = function handleSubmit(formValues) {
125
- var additionalDataModifiedFormValues = modify("additionalData", rejectEmptyKeyValuePairs, formValues);
126
- onSubmit(additionalDataModifiedFormValues);
128
+ var customHeadersModifiedFormValues = modify("customHeaders", rejectEmptyKeyValuePairs, formValues);
129
+ onSubmit(customHeadersModifiedFormValues);
127
130
  };
128
131
  var shouldShowSaveAsTemplate = function shouldShowSaveAsTemplate() {
129
132
  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
130
133
  id = _ref2.id,
131
134
  endpoint = _ref2.endpoint,
132
- additionalData = _ref2.additionalData;
135
+ enableCustomHeaders = _ref2.enableCustomHeaders,
136
+ _ref2$customHeaders = _ref2.customHeaders,
137
+ customHeaders = _ref2$customHeaders === void 0 ? [CUSTOM_HEADERS_INITIAL_VALUE] : _ref2$customHeaders,
138
+ body = _ref2.body;
133
139
  var template = findBy({
134
140
  id: id
135
141
  }, templates);
136
- var hasContent = isPresent(endpoint) || isPresent(rejectEmptyKeyValuePairs(additionalData));
137
- var isContentDifferentFromTemplate = !(areValuesEqual(template === null || template === void 0 ? void 0 : template.endpoint, endpoint) && equals(template === null || template === void 0 ? void 0 : template.additionalData, additionalData));
142
+ var hasContent = isPresent(endpoint) || isPresent(rejectEmptyKeyValuePairs(customHeaders)) || isBodyAvailable(body);
143
+ var isContentDifferentFromTemplate = !(areValuesEqual(template === null || template === void 0 ? void 0 : template.endpoint, endpoint) && areHeadersSame(enableCustomHeaders, customHeaders, template) && equals(template === null || template === void 0 ? void 0 : template.body, body));
138
144
  return hasContent && isContentDifferentFromTemplate;
139
145
  };
140
146
  var isTemplateSelectionEnabled = isPresent(templates);
141
147
  var _buildHelpPopoverProp = buildHelpPopoverProps(helpPopoverProps),
142
148
  sendToApiHelpPopoverProps = _buildHelpPopoverProp.sendToApi,
143
- additionalDataHelpPopoverProps = _buildHelpPopoverProp.additionalData;
149
+ customHeadersHelpPopoverProps = _buildHelpPopoverProp.customHeaders,
150
+ bodyHelpPopoverProps = _buildHelpPopoverProp.body;
144
151
  if (isLoadingTemplates) {
145
152
  return /*#__PURE__*/jsx("div", {
146
153
  className: "flex h-full w-full items-center justify-center",
@@ -168,7 +175,7 @@ var SendToApiForm = function SendToApiForm(_ref) {
168
175
  return /*#__PURE__*/jsxs(Fragment, {
169
176
  children: [/*#__PURE__*/jsx(Pane.Body, {
170
177
  children: /*#__PURE__*/jsxs("div", {
171
- className: "w-full space-y-5",
178
+ className: "w-full space-y-5 mb-10",
172
179
  children: [isTemplateSelectionEnabled && /*#__PURE__*/jsx(Select, {
173
180
  innerRef: setFocusField,
174
181
  isLoading: isLoadingTemplates,
@@ -187,15 +194,13 @@ var SendToApiForm = function SendToApiForm(_ref) {
187
194
  name: "endpoint",
188
195
  placeholder: SAMPLE_URL,
189
196
  ref: isTemplateSelectionEnabled ? null : setFocusField
190
- }), /*#__PURE__*/jsx(KeyValuePairs, {
191
- label: t("neetoMessageTemplate.api.additionalData"),
192
- name: "additionalData",
193
- labelProps: {
194
- className: "ml-2",
195
- helpIconProps: {
196
- popoverProps: additionalDataHelpPopoverProps
197
- }
198
- }
197
+ }), /*#__PURE__*/jsx(CustomHeaders, {
198
+ helpPopoverProps: customHeadersHelpPopoverProps
199
+ }), /*#__PURE__*/jsx(JsonEditor, {
200
+ templateVariables: templateVariables,
201
+ helpPopoverProps: bodyHelpPopoverProps,
202
+ initialValue: values.body,
203
+ name: "body"
199
204
  }), canManageTemplates && shouldShowSaveAsTemplate(values) && /*#__PURE__*/jsx(SaveAsTemplate, {})]
200
205
  })
201
206
  }), /*#__PURE__*/jsx(Pane.Footer, {
@@ -1 +1 @@
1
- {"version":3,"file":"SendToApiPane.js","sources":["../app/javascript/src/components/Api/SendToApiPane/constants.js","../app/javascript/src/components/Api/SendToApiPane/utils.js","../app/javascript/src/components/Api/SendToApiPane/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nimport { ADDITIONAL_DATA_INITIAL_VALUE, VALID_URL_REGEX } from \"../constants\";\n\nexport const SEND_TO_API_FORM_INITIAL_VALUES = {\n endpoint: \"\",\n additionalData: [ADDITIONAL_DATA_INITIAL_VALUE],\n shouldSaveAsTemplate: false,\n templateName: \"\",\n};\n\nexport const SEND_TO_API_FORM_VALIDATION_SCHEMA = yup.object({\n endpoint: yup\n .string()\n .required(t(\"neetoMessageTemplate.api.validation.endpointPresence\"))\n .matches(\n VALID_URL_REGEX,\n t(\"neetoMessageTemplate.api.validation.validEndpoint\")\n ),\n additionalData: yup\n .array()\n .of(yup.object({ key: yup.string(), value: yup.string() })),\n templateName: yup.string().when(\"shouldSaveAsTemplate\", {\n is: true,\n then: yup.string().required(\n t(\"neetoMessageTemplate.template.validation.requiredEntity\", {\n entity: t(\"neetoMessageTemplate.template.templateName\"),\n })\n ),\n }),\n});\n\nexport const SEND_TO_API_HELP_POPOVER_PROPS = {\n sendToApi: {\n description: t(\n \"neetoMessageTemplate.api.helpPopovers.sendToApi.description\"\n ),\n helpLinkProps: { \"data-cy\": \"send-to-api-action-help-link\" },\n popoverProps: { position: \"top\" },\n },\n additionalData: {\n description: t(\n \"neetoMessageTemplate.api.helpPopovers.additionalData.description\"\n ),\n helpLinkProps: {\n label: t(\"neetoMessageTemplate.template.viewHelpArticle\"),\n \"data-cy\": \"send-to-api-additional-data-help-link\",\n },\n position: \"top\",\n },\n};\n","import { isPresent } from \"neetocist\";\nimport { map, mergeDeepLeft, omit, path, unless } from \"ramda\";\n\nimport { SEND_TO_API_HELP_POPOVER_PROPS } from \"./constants\";\n\nimport { ADDITIONAL_DATA_INITIAL_VALUE } from \"../constants\";\n\nconst sanitizeHelpPopoverProps = map(\n unless(path([\"helpLinkProps\", \"href\"]), omit([\"helpLinkProps\"]))\n);\n\nexport const formatAdditionalData = additionalData =>\n isPresent(additionalData) ? additionalData : [ADDITIONAL_DATA_INITIAL_VALUE];\n\nexport const buildHelpPopoverProps = popoverProps => {\n const combinedProps = mergeDeepLeft(\n popoverProps,\n SEND_TO_API_HELP_POPOVER_PROPS\n );\n\n return sanitizeHelpPopoverProps(combinedProps);\n};\n","import { findBy, isPresent, renameKeys } from \"neetocist\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Pane, Select, Spinner, Typography } from \"neetoui\";\nimport { ActionBlock, Input, Form as NeetoUIForm } from \"neetoui/formik\";\nimport { equals, modify } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SAMPLE_URL } from \"components/Api/ApiTemplates/constants\";\nimport { API_TEMPLATE_TYPE } from \"components/Api/constants\";\nimport { rejectEmptyKeyValuePairs } from \"components/Api/utils\";\nimport KeyValuePairs from \"components/commons/KeyValuePairs\";\nimport SaveAsTemplate from \"components/commons/SaveAsTemplate\";\nimport { areValuesEqual } from \"components/utils\";\nimport { useFetchTemplates } from \"hooks/reactQuery/useTemplatesApi\";\n\nimport {\n SEND_TO_API_FORM_INITIAL_VALUES,\n SEND_TO_API_FORM_VALIDATION_SCHEMA,\n} from \"./constants\";\nimport { buildHelpPopoverProps, formatAdditionalData } from \"./utils\";\n\nconst SendToApiPane = props => {\n const { isOpen, onClose } = props;\n\n return (\n <Pane {...{ isOpen, onClose }}>\n {paneProps => <SendToApiForm {...{ ...props, paneProps }} />}\n </Pane>\n );\n};\n\nconst SendToApiForm = ({\n ownerId,\n onClose,\n onSubmit,\n isSubmitting,\n canManageTemplates = true,\n helpPopoverProps = {},\n paneProps: { setFocusField },\n}) => {\n const { t } = useTranslation();\n\n const { data: { templates = [] } = {}, isLoading: isLoadingTemplates } =\n useFetchTemplates({\n status: \"active\",\n templateType: API_TEMPLATE_TYPE,\n ownerId,\n });\n\n const handleTemplateChange = (setValues, values, option) => {\n if (!option) return;\n\n const template = findBy({ id: option.value }, templates);\n\n setValues({\n ...values,\n ...modify(\"additionalData\", formatAdditionalData, template),\n });\n };\n\n const handleSubmit = formValues => {\n const additionalDataModifiedFormValues = modify(\n \"additionalData\",\n rejectEmptyKeyValuePairs,\n formValues\n );\n\n onSubmit(additionalDataModifiedFormValues);\n };\n\n const shouldShowSaveAsTemplate = ({ id, endpoint, additionalData } = {}) => {\n const template = findBy({ id }, templates);\n const hasContent =\n isPresent(endpoint) ||\n isPresent(rejectEmptyKeyValuePairs(additionalData));\n\n const isContentDifferentFromTemplate = !(\n areValuesEqual(template?.endpoint, endpoint) &&\n equals(template?.additionalData, additionalData)\n );\n\n return hasContent && isContentDifferentFromTemplate;\n };\n\n const isTemplateSelectionEnabled = isPresent(templates);\n\n const {\n sendToApi: sendToApiHelpPopoverProps,\n additionalData: additionalDataHelpPopoverProps,\n } = buildHelpPopoverProps(helpPopoverProps);\n\n if (isLoadingTemplates) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoMessageTemplate.api.sendToApi\")}\n <HelpPopover className=\"ml-2\" {...sendToApiHelpPopoverProps} />\n </Typography>\n </Pane.Header>\n <NeetoUIForm\n formikProps={{\n initialValues: SEND_TO_API_FORM_INITIAL_VALUES,\n validationSchema: SEND_TO_API_FORM_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n {({ values, setValues }) => (\n <>\n <Pane.Body>\n <div className=\"w-full space-y-5\">\n {isTemplateSelectionEnabled && (\n <Select\n innerRef={setFocusField}\n isLoading={isLoadingTemplates}\n label={t(\"neetoMessageTemplate.template.title\")}\n options={renameKeys(\n { name: \"label\", id: \"value\" },\n templates\n )}\n placeholder={t(\n \"neetoMessageTemplate.sendMessage.selectTemplate\"\n )}\n onChange={template =>\n handleTemplateChange(setValues, values, template)\n }\n />\n )}\n <Input\n required\n label={t(\"neetoMessageTemplate.api.endpoint\")}\n name=\"endpoint\"\n placeholder={SAMPLE_URL}\n ref={isTemplateSelectionEnabled ? null : setFocusField}\n />\n <KeyValuePairs\n label={t(\"neetoMessageTemplate.api.additionalData\")}\n name=\"additionalData\"\n labelProps={{\n className: \"ml-2\",\n helpIconProps: {\n popoverProps: additionalDataHelpPopoverProps,\n },\n }}\n />\n {canManageTemplates && shouldShowSaveAsTemplate(values) && (\n <SaveAsTemplate />\n )}\n </div>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock\n {...{ isSubmitting }}\n cancelButtonProps={{\n onClick: onClose,\n \"data-cy\": \"api-template-cancel-button\",\n }}\n submitButtonProps={{\n label: t(\"neetoMessageTemplate.template.send\"),\n \"data-cy\": \"api-template-send-button\",\n }}\n />\n </Pane.Footer>\n </>\n )}\n </NeetoUIForm>\n </>\n );\n};\n\nexport default SendToApiPane;\n"],"names":["SEND_TO_API_FORM_INITIAL_VALUES","endpoint","additionalData","ADDITIONAL_DATA_INITIAL_VALUE","shouldSaveAsTemplate","templateName","SEND_TO_API_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","matches","VALID_URL_REGEX","array","of","key","value","when","is","then","entity","SEND_TO_API_HELP_POPOVER_PROPS","sendToApi","description","helpLinkProps","popoverProps","position","label","sanitizeHelpPopoverProps","map","unless","path","omit","formatAdditionalData","isPresent","buildHelpPopoverProps","combinedProps","mergeDeepLeft","SendToApiPane","props","isOpen","onClose","_jsx","Pane","children","paneProps","SendToApiForm","_objectSpread","_ref","ownerId","onSubmit","isSubmitting","_ref$canManageTemplat","canManageTemplates","_ref$helpPopoverProps","helpPopoverProps","setFocusField","_useTranslation","useTranslation","_useFetchTemplates","useFetchTemplates","status","templateType","API_TEMPLATE_TYPE","_useFetchTemplates$da","data","_useFetchTemplates$da2","_useFetchTemplates$da3","templates","isLoadingTemplates","isLoading","handleTemplateChange","setValues","values","option","template","findBy","id","modify","handleSubmit","formValues","additionalDataModifiedFormValues","rejectEmptyKeyValuePairs","shouldShowSaveAsTemplate","_ref2","arguments","length","undefined","hasContent","isContentDifferentFromTemplate","areValuesEqual","equals","isTemplateSelectionEnabled","_buildHelpPopoverProp","sendToApiHelpPopoverProps","additionalDataHelpPopoverProps","className","Spinner","_jsxs","_Fragment","Header","Typography","style","weight","HelpPopover","NeetoUIForm","formikProps","initialValues","validationSchema","_ref3","Body","Select","innerRef","options","renameKeys","name","placeholder","onChange","Input","SAMPLE_URL","ref","KeyValuePairs","labelProps","helpIconProps","SaveAsTemplate","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps"],"mappings":"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"}
1
+ {"version":3,"file":"SendToApiPane.js","sources":["../app/javascript/src/components/Api/SendToApiPane/constants.js","../app/javascript/src/components/Api/SendToApiPane/utils.js","../app/javascript/src/components/Api/SendToApiPane/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\nimport * as yup from \"yup\";\n\nimport { CUSTOM_HEADERS_INITIAL_VALUE, VALID_URL_REGEX } from \"../constants\";\n\nexport const SEND_TO_API_FORM_INITIAL_VALUES = {\n endpoint: \"\",\n enableCustomHeaders: false,\n customHeaders: [CUSTOM_HEADERS_INITIAL_VALUE],\n body: \"{}\",\n shouldSaveAsTemplate: false,\n templateName: \"\",\n};\n\nexport const SEND_TO_API_FORM_VALIDATION_SCHEMA = yup.object({\n endpoint: yup\n .string()\n .trim()\n .required(t(\"neetoMessageTemplate.api.validation.endpointPresence\"))\n .matches(\n VALID_URL_REGEX,\n t(\"neetoMessageTemplate.api.validation.validEndpoint\")\n ),\n body: yup\n .string()\n .trim()\n .required(\n t(\"neetoMessageTemplate.validations.requiredEntity\", {\n entity: t(\"neetoMessageTemplate.template.body\"),\n })\n )\n .test(\n \"is-not-empty\",\n t(\"neetoMessageTemplate.validations.requiredEntity\", {\n entity: t(\"neetoMessageTemplate.template.body\"),\n }),\n value => isPresent(value)\n )\n .test(\n \"is-valid-json\",\n t(\"neetoMessageTemplate.api.validation.invalidJsonBody\"),\n value => {\n try {\n JSON.parse(value);\n\n return true;\n } catch {\n return false;\n }\n }\n ),\n});\n","import { isPresent } from \"neetocist\";\nimport { equals } from \"ramda\";\n\nimport { CUSTOM_HEADERS_INITIAL_VALUE } from \"../constants\";\n\nexport const formatCustomHeaders = customHeaders =>\n isPresent(customHeaders) ? customHeaders : [CUSTOM_HEADERS_INITIAL_VALUE];\n\nexport const areHeadersSame = (\n enableCustomHeaders,\n customHeaders,\n template = {}\n) => {\n const {\n enableCustomHeaders: templateHasCustomHeaders,\n customHeaders: templateHeaders,\n } = template;\n if (!enableCustomHeaders && !templateHasCustomHeaders) return true;\n\n if (enableCustomHeaders !== templateHasCustomHeaders) return false;\n\n return equals(customHeaders, templateHeaders);\n};\n\nexport const isBodyAvailable = body => {\n try {\n const data = JSON.parse(body);\n\n return isPresent(data);\n } catch {\n return false;\n }\n};\n","import { findBy, isPresent, renameKeys } from \"neetocist\";\nimport HelpPopover from \"neetomolecules/HelpPopover\";\nimport { Pane, Select, Spinner, Typography } from \"neetoui\";\nimport { ActionBlock, Input, Form as NeetoUIForm } from \"neetoui/formik\";\nimport { equals, modify } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { SAMPLE_URL } from \"components/Api/ApiTemplates/constants\";\nimport {\n API_TEMPLATE_TYPE,\n CUSTOM_HEADERS_INITIAL_VALUE,\n} from \"components/Api/constants\";\nimport {\n buildHelpPopoverProps,\n rejectEmptyKeyValuePairs,\n} from \"components/Api/utils\";\nimport SaveAsTemplate from \"components/commons/SaveAsTemplate\";\nimport { areValuesEqual } from \"components/utils\";\nimport { useFetchTemplates } from \"hooks/reactQuery/useTemplatesApi\";\n\nimport {\n SEND_TO_API_FORM_INITIAL_VALUES,\n SEND_TO_API_FORM_VALIDATION_SCHEMA,\n} from \"./constants\";\nimport { areHeadersSame, formatCustomHeaders, isBodyAvailable } from \"./utils\";\n\nimport CustomHeaders from \"../CustomHeaders\";\nimport JsonEditor from \"../JsonEditor\";\n\nconst SendToApiPane = props => {\n const { isOpen, onClose } = props;\n\n return (\n <Pane {...{ isOpen, onClose }} size=\"large\">\n {paneProps => <SendToApiForm {...{ ...props, paneProps }} />}\n </Pane>\n );\n};\n\nconst SendToApiForm = ({\n ownerId,\n onClose,\n onSubmit,\n isSubmitting,\n templateVariables,\n canManageTemplates = true,\n helpPopoverProps = {},\n paneProps: { setFocusField },\n}) => {\n const { t } = useTranslation();\n\n const { data: { templates = [] } = {}, isLoading: isLoadingTemplates } =\n useFetchTemplates({\n status: \"active\",\n templateType: API_TEMPLATE_TYPE,\n ownerId,\n });\n\n const handleTemplateChange = (setValues, values, option) => {\n if (!option) return;\n\n const template = findBy({ id: option.value }, templates);\n setValues({\n ...values,\n ...modify(\"customHeaders\", formatCustomHeaders, template),\n });\n };\n\n const handleSubmit = formValues => {\n const customHeadersModifiedFormValues = modify(\n \"customHeaders\",\n rejectEmptyKeyValuePairs,\n formValues\n );\n\n onSubmit(customHeadersModifiedFormValues);\n };\n\n const shouldShowSaveAsTemplate = ({\n id,\n endpoint,\n enableCustomHeaders,\n customHeaders = [CUSTOM_HEADERS_INITIAL_VALUE],\n body,\n } = {}) => {\n const template = findBy({ id }, templates);\n const hasContent =\n isPresent(endpoint) ||\n isPresent(rejectEmptyKeyValuePairs(customHeaders)) ||\n isBodyAvailable(body);\n\n const isContentDifferentFromTemplate = !(\n areValuesEqual(template?.endpoint, endpoint) &&\n areHeadersSame(enableCustomHeaders, customHeaders, template) &&\n equals(template?.body, body)\n );\n\n return hasContent && isContentDifferentFromTemplate;\n };\n\n const isTemplateSelectionEnabled = isPresent(templates);\n\n const {\n sendToApi: sendToApiHelpPopoverProps,\n customHeaders: customHeadersHelpPopoverProps,\n body: bodyHelpPopoverProps,\n } = buildHelpPopoverProps(helpPopoverProps);\n\n if (isLoadingTemplates) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n return (\n <>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {t(\"neetoMessageTemplate.api.sendToApi\")}\n <HelpPopover className=\"ml-2\" {...sendToApiHelpPopoverProps} />\n </Typography>\n </Pane.Header>\n <NeetoUIForm\n formikProps={{\n initialValues: SEND_TO_API_FORM_INITIAL_VALUES,\n validationSchema: SEND_TO_API_FORM_VALIDATION_SCHEMA,\n onSubmit: handleSubmit,\n }}\n >\n {({ values, setValues }) => (\n <>\n <Pane.Body>\n <div className=\"w-full space-y-5 mb-10\">\n {isTemplateSelectionEnabled && (\n <Select\n innerRef={setFocusField}\n isLoading={isLoadingTemplates}\n label={t(\"neetoMessageTemplate.template.title\")}\n options={renameKeys(\n { name: \"label\", id: \"value\" },\n templates\n )}\n placeholder={t(\n \"neetoMessageTemplate.sendMessage.selectTemplate\"\n )}\n onChange={template =>\n handleTemplateChange(setValues, values, template)\n }\n />\n )}\n <Input\n required\n label={t(\"neetoMessageTemplate.api.endpoint\")}\n name=\"endpoint\"\n placeholder={SAMPLE_URL}\n ref={isTemplateSelectionEnabled ? null : setFocusField}\n />\n <CustomHeaders\n helpPopoverProps={customHeadersHelpPopoverProps}\n />\n <JsonEditor\n {...{ templateVariables }}\n helpPopoverProps={bodyHelpPopoverProps}\n initialValue={values.body}\n name=\"body\"\n />\n {canManageTemplates && shouldShowSaveAsTemplate(values) && (\n <SaveAsTemplate />\n )}\n </div>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock\n {...{ isSubmitting }}\n cancelButtonProps={{\n onClick: onClose,\n \"data-cy\": \"api-template-cancel-button\",\n }}\n submitButtonProps={{\n label: t(\"neetoMessageTemplate.template.send\"),\n \"data-cy\": \"api-template-send-button\",\n }}\n />\n </Pane.Footer>\n </>\n )}\n </NeetoUIForm>\n </>\n );\n};\n\nexport default SendToApiPane;\n"],"names":["SEND_TO_API_FORM_INITIAL_VALUES","endpoint","enableCustomHeaders","customHeaders","CUSTOM_HEADERS_INITIAL_VALUE","body","shouldSaveAsTemplate","templateName","SEND_TO_API_FORM_VALIDATION_SCHEMA","yup","object","string","trim","required","t","matches","VALID_URL_REGEX","entity","test","value","isPresent","JSON","parse","_unused","formatCustomHeaders","areHeadersSame","template","arguments","length","undefined","templateHasCustomHeaders","templateHeaders","equals","isBodyAvailable","data","SendToApiPane","props","isOpen","onClose","_jsx","Pane","size","children","paneProps","SendToApiForm","_objectSpread","_ref","ownerId","onSubmit","isSubmitting","templateVariables","_ref$canManageTemplat","canManageTemplates","_ref$helpPopoverProps","helpPopoverProps","setFocusField","_useTranslation","useTranslation","_useFetchTemplates","useFetchTemplates","status","templateType","API_TEMPLATE_TYPE","_useFetchTemplates$da","_useFetchTemplates$da2","_useFetchTemplates$da3","templates","isLoadingTemplates","isLoading","handleTemplateChange","setValues","values","option","findBy","id","modify","handleSubmit","formValues","customHeadersModifiedFormValues","rejectEmptyKeyValuePairs","shouldShowSaveAsTemplate","_ref2","_ref2$customHeaders","hasContent","isContentDifferentFromTemplate","areValuesEqual","isTemplateSelectionEnabled","_buildHelpPopoverProp","buildHelpPopoverProps","sendToApiHelpPopoverProps","sendToApi","customHeadersHelpPopoverProps","bodyHelpPopoverProps","className","Spinner","_jsxs","_Fragment","Header","Typography","style","weight","HelpPopover","NeetoUIForm","formikProps","initialValues","validationSchema","_ref3","Body","Select","innerRef","label","options","renameKeys","name","placeholder","onChange","Input","SAMPLE_URL","ref","CustomHeaders","JsonEditor","initialValue","SaveAsTemplate","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps"],"mappings":"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"}
@@ -7,7 +7,7 @@ var react = require('react');
7
7
  var neetoCist = require('@bigbinary/neeto-cist');
8
8
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
9
9
  var FiltersBar = require('@bigbinary/neeto-filters-frontend/Bar');
10
- var utils$1 = require('@bigbinary/neeto-filters-frontend/utils');
10
+ var utils = require('@bigbinary/neeto-filters-frontend/utils');
11
11
  var Container = require('@bigbinary/neeto-molecules/Container');
12
12
  var NeetoHeader = require('@bigbinary/neeto-molecules/Header');
13
13
  var SubHeader = require('@bigbinary/neeto-molecules/SubHeader');
@@ -20,7 +20,7 @@ var Table = require('@bigbinary/neetoui/Table');
20
20
  var Typography = require('@bigbinary/neetoui/Typography');
21
21
  var ramda = require('ramda');
22
22
  var reactI18next = require('react-i18next');
23
- var utils = require('../utils-D7y24q1q.js');
23
+ var JsonEditor = require('../JsonEditor-Cz_76w4s.js');
24
24
  var constants = require('../constants-CqiptWxr.js');
25
25
  var useTemplatesApi = require('../useTemplatesApi-CSsaKyRi.js');
26
26
  var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
@@ -31,8 +31,13 @@ var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
31
31
  var jsxRuntime = require('react/jsx-runtime');
32
32
  require('yup');
33
33
  require('formik');
34
+ require('@bigbinary/neetoui/formik/Switch');
34
35
  require('@bigbinary/neeto-icons/Delete');
36
+ require('@monaco-editor/react');
37
+ require('@bigbinary/neeto-icons/Help');
38
+ require('@bigbinary/neeto-molecules/DynamicVariables');
35
39
  require('@bigbinary/neetoui/Label');
40
+ require('../inject-css-vQvjPR2x.js');
36
41
  require('@bigbinary/neeto-commons-frontend/constants');
37
42
  require('@tanstack/react-query');
38
43
  require('axios');
@@ -45,9 +50,11 @@ var buildApiTemplatePayload = function buildApiTemplatePayload(values, templateI
45
50
  entity: {
46
51
  id: templateId,
47
52
  endpoint: values.endpoint,
48
- additionalData: utils.rejectEmptyKeyValuePairs(values.additionalData)
53
+ enableCustomHeaders: values.enableCustomHeaders,
54
+ customHeaders: JsonEditor.rejectEmptyKeyValuePairs(values.customHeaders || []),
55
+ body: values.body
49
56
  },
50
- templateType: utils.API_TEMPLATE_TYPE,
57
+ templateType: JsonEditor.API_TEMPLATE_TYPE,
51
58
  name: values.name
52
59
  };
53
60
  };
@@ -85,7 +92,7 @@ var buildTableColumnData = function buildTableColumnData(_ref) {
85
92
  }
86
93
  }, {
87
94
  key: "status",
88
- label: ramda.equals(apiTemplate.status, utils.TEMPLATE_STATUS.ACTIVE) ? i18next.t("neetoMessageTemplate.template.markAsInactive") : i18next.t("neetoMessageTemplate.template.markAsActive"),
95
+ label: ramda.equals(apiTemplate.status, JsonEditor.TEMPLATE_STATUS.ACTIVE) ? i18next.t("neetoMessageTemplate.template.markAsInactive") : i18next.t("neetoMessageTemplate.template.markAsActive"),
89
96
  "data-cy": "api-template-button-status-button",
90
97
  onClick: function onClick() {
91
98
  return handleMarkAsActiveOrInactive(apiTemplate);
@@ -111,11 +118,13 @@ var buildTableColumnData = function buildTableColumnData(_ref) {
111
118
  width: "20%"
112
119
  }];
113
120
  };
114
- var buildApiTemplateInitialValues = function buildApiTemplateInitialValues(isEdit, apiTemplate) {
115
- if (!isEdit) return utils.API_TEMPLATE_INITIAL_VALUES;
116
- var additionalData = ramda.isEmpty(apiTemplate.additionalData) ? [utils.ADDITIONAL_DATA_INITIAL_VALUE] : apiTemplate.additionalData;
117
- return _objectSpread$1(_objectSpread$1({}, ramda.pick(["name", "endpoint"], apiTemplate)), {}, {
118
- additionalData: additionalData
121
+ var buildApiTemplateInitialValues = function buildApiTemplateInitialValues(isEdit, apiTemplate, initialPayload) {
122
+ if (!isEdit) {
123
+ return ramda.assoc("body", initialPayload, JsonEditor.API_TEMPLATE_INITIAL_VALUES);
124
+ }
125
+ var customHeaders = ramda.isEmpty(apiTemplate.customHeaders) ? [JsonEditor.CUSTOM_HEADERS_INITIAL_VALUE] : apiTemplate.customHeaders;
126
+ return _objectSpread$1(_objectSpread$1({}, ramda.pick(["name", "endpoint", "body", "enableCustomHeaders"], apiTemplate)), {}, {
127
+ customHeaders: customHeaders
119
128
  });
120
129
  };
121
130
 
@@ -124,7 +133,11 @@ var Form = function Form(_ref) {
124
133
  onClose = _ref.onClose,
125
134
  ownerId = _ref.ownerId,
126
135
  selectedApiTemplate = _ref.selectedApiTemplate,
127
- onMutationSuccess = _ref.onMutationSuccess;
136
+ onMutationSuccess = _ref.onMutationSuccess,
137
+ initialPayload = _ref.initialPayload,
138
+ templateVariables = _ref.templateVariables,
139
+ bodyHelpPopoverProps = _ref.bodyHelpPopoverProps,
140
+ customHeadersHelpPopoverProps = _ref.customHeadersHelpPopoverProps;
128
141
  var _useTranslation = reactI18next.useTranslation(),
129
142
  t = _useTranslation.t;
130
143
  var _useCreateTemplate = useTemplatesApi.useCreateTemplate(ownerId),
@@ -156,6 +169,9 @@ var Form = function Form(_ref) {
156
169
  createApiTemplate(payload, options);
157
170
  };
158
171
  var isMutating = isUpdating || isCreating;
172
+ var initialValues = react.useMemo(function () {
173
+ return buildApiTemplateInitialValues(isEdit, selectedApiTemplate, initialPayload);
174
+ }, [isEdit, selectedApiTemplate, initialPayload]);
159
175
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
160
176
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
161
177
  children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
@@ -165,13 +181,13 @@ var Form = function Form(_ref) {
165
181
  })
166
182
  }), /*#__PURE__*/jsxRuntime.jsxs(NeetoUIForm, {
167
183
  formikProps: {
168
- initialValues: buildApiTemplateInitialValues(isEdit, selectedApiTemplate),
169
- validationSchema: utils.API_TEMPLATE_FORM_VALIDATION_SCHEMA,
184
+ initialValues: initialValues,
185
+ validationSchema: JsonEditor.API_TEMPLATE_FORM_VALIDATION_SCHEMA,
170
186
  onSubmit: handleSubmit
171
187
  },
172
188
  children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
173
189
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
174
- className: "w-full space-y-5",
190
+ className: "w-full space-y-5 mb-10",
175
191
  children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
176
192
  required: true,
177
193
  label: t("neetoMessageTemplate.template.name"),
@@ -181,10 +197,14 @@ var Form = function Form(_ref) {
181
197
  required: true,
182
198
  label: t("neetoMessageTemplate.api.endpoint"),
183
199
  name: "endpoint",
184
- placeholder: utils.SAMPLE_URL
185
- }), /*#__PURE__*/jsxRuntime.jsx(utils.KeyValuePairs, {
186
- label: t("neetoMessageTemplate.api.additionalData"),
187
- name: "additionalData"
200
+ placeholder: JsonEditor.SAMPLE_URL
201
+ }), /*#__PURE__*/jsxRuntime.jsx(JsonEditor.CustomHeaders, {
202
+ helpPopoverProps: customHeadersHelpPopoverProps
203
+ }), /*#__PURE__*/jsxRuntime.jsx(JsonEditor.JsonEditor, {
204
+ templateVariables: templateVariables,
205
+ helpPopoverProps: bodyHelpPopoverProps,
206
+ initialValue: initialValues.body,
207
+ name: "body"
188
208
  })]
189
209
  })
190
210
  }), /*#__PURE__*/jsxRuntime.jsx(Pane.Footer, {
@@ -202,12 +222,16 @@ var Form = function Form(_ref) {
202
222
  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; }
203
223
  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; }
204
224
  var ApiTemplates = function ApiTemplates(_ref) {
205
- var _helpPopoverProps$hel;
225
+ var _apiTemplatesHelpPopo;
206
226
  var ownerId = _ref.ownerId,
207
227
  _ref$breadcrumbs = _ref.breadcrumbs,
208
228
  breadcrumbs = _ref$breadcrumbs === void 0 ? [] : _ref$breadcrumbs,
209
229
  _ref$helpPopoverProps = _ref.helpPopoverProps,
210
230
  helpPopoverProps = _ref$helpPopoverProps === void 0 ? {} : _ref$helpPopoverProps,
231
+ _ref$initialPayload = _ref.initialPayload,
232
+ initialPayload = _ref$initialPayload === void 0 ? {} : _ref$initialPayload,
233
+ _ref$templateVariable = _ref.templateVariables,
234
+ templateVariables = _ref$templateVariable === void 0 ? [] : _ref$templateVariable,
211
235
  _ref$onMutationSucces = _ref.onMutationSuccess,
212
236
  onMutationSuccess = _ref$onMutationSucces === void 0 ? neetoCist.noop : _ref$onMutationSucces;
213
237
  var _useTranslation = reactI18next.useTranslation(),
@@ -241,7 +265,7 @@ var ApiTemplates = function ApiTemplates(_ref) {
241
265
  value: searchTerm
242
266
  };
243
267
  var _useState11 = react.useState(function () {
244
- return utils$1.buildFiltersFromURL([].concat(_toConsumableArray(utils.FILTER_COLUMNS), [searchKeywordProps]));
268
+ return utils.buildFiltersFromURL([].concat(_toConsumableArray(JsonEditor.FILTER_COLUMNS), [searchKeywordProps]));
245
269
  }),
246
270
  _useState12 = _slicedToArray(_useState11, 2),
247
271
  filters = _useState12[0],
@@ -250,7 +274,7 @@ var ApiTemplates = function ApiTemplates(_ref) {
250
274
  filters: filters,
251
275
  page: pageParams.index,
252
276
  pageSize: pageParams.size,
253
- templateType: utils.API_TEMPLATE_TYPE,
277
+ templateType: JsonEditor.API_TEMPLATE_TYPE,
254
278
  ownerId: ramda.isEmpty(ownerId) ? undefined : ownerId
255
279
  }),
256
280
  _useFetchTemplates$da = _useFetchTemplates.data,
@@ -286,11 +310,11 @@ var ApiTemplates = function ApiTemplates(_ref) {
286
310
  var handleMarkAsActiveOrInactive = function handleMarkAsActiveOrInactive(_ref2) {
287
311
  var status = _ref2.status,
288
312
  id = _ref2.id;
289
- var newStatus = ramda.equals(status, utils.TEMPLATE_STATUS.ACTIVE) ? utils.TEMPLATE_STATUS.INACTIVE : utils.TEMPLATE_STATUS.ACTIVE;
313
+ var newStatus = ramda.equals(status, JsonEditor.TEMPLATE_STATUS.ACTIVE) ? JsonEditor.TEMPLATE_STATUS.INACTIVE : JsonEditor.TEMPLATE_STATUS.ACTIVE;
290
314
  updateTemplate({
291
315
  payload: {
292
316
  status: newStatus,
293
- templateType: utils.API_TEMPLATE_TYPE
317
+ templateType: JsonEditor.API_TEMPLATE_TYPE
294
318
  },
295
319
  id: id
296
320
  }, {
@@ -305,7 +329,11 @@ var ApiTemplates = function ApiTemplates(_ref) {
305
329
  }
306
330
  });
307
331
  };
308
- var helpDocUrl = (helpPopoverProps === null || helpPopoverProps === void 0 || (_helpPopoverProps$hel = helpPopoverProps.helpLinkProps) === null || _helpPopoverProps$hel === void 0 ? void 0 : _helpPopoverProps$hel.href) || "";
332
+ var _buildHelpPopoverProp = JsonEditor.buildHelpPopoverProps(helpPopoverProps),
333
+ apiTemplatesHelpPopoverProps = _buildHelpPopoverProp.apiTemplates,
334
+ customHeadersHelpPopoverProps = _buildHelpPopoverProp.customHeaders,
335
+ bodyHelpPopoverProps = _buildHelpPopoverProp.body;
336
+ var helpDocUrl = (apiTemplatesHelpPopoverProps === null || apiTemplatesHelpPopoverProps === void 0 || (_apiTemplatesHelpPopo = apiTemplatesHelpPopoverProps.helpLinkProps) === null || _apiTemplatesHelpPopo === void 0 ? void 0 : _apiTemplatesHelpPopo.href) || "";
309
337
  var noDataProps = _objectSpread(_objectSpread({}, !isFilterApplied && {
310
338
  primaryButtonProps: {
311
339
  label: t("neetoMessageTemplate.api.addApiTemplate"),
@@ -350,8 +378,8 @@ var ApiTemplates = function ApiTemplates(_ref) {
350
378
  placeholder: t("neetoMessageTemplate.template.searchApiTemplates"),
351
379
  "data-cy": "api-templates-search-input"
352
380
  },
353
- titleHelpPopoverProps: helpPopoverProps && _objectSpread(_objectSpread({}, helpPopoverProps), {}, {
354
- title: (helpPopoverProps === null || helpPopoverProps === void 0 ? void 0 : helpPopoverProps.title) || title
381
+ titleHelpPopoverProps: apiTemplatesHelpPopoverProps && _objectSpread(_objectSpread({}, apiTemplatesHelpPopoverProps), {}, {
382
+ title: (apiTemplatesHelpPopoverProps === null || apiTemplatesHelpPopoverProps === void 0 ? void 0 : apiTemplatesHelpPopoverProps.title) || title
355
383
  })
356
384
  }), /*#__PURE__*/jsxRuntime.jsx(SubHeader, {
357
385
  className: "mb-4",
@@ -367,7 +395,7 @@ var ApiTemplates = function ApiTemplates(_ref) {
367
395
  totalCount: isFilterApplied ? null : totalCount
368
396
  },
369
397
  filterProps: {
370
- columns: utils.FILTER_COLUMNS,
398
+ columns: JsonEditor.FILTER_COLUMNS,
371
399
  isOpen: isFiltersPaneOpen,
372
400
  keyword: searchKeywordProps,
373
401
  setIsOpen: setIsFiltersPaneOpen,
@@ -375,7 +403,7 @@ var ApiTemplates = function ApiTemplates(_ref) {
375
403
  }
376
404
  })
377
405
  }), /*#__PURE__*/jsxRuntime.jsx(FiltersBar, {
378
- columns: utils.FILTER_COLUMNS,
406
+ columns: JsonEditor.FILTER_COLUMNS,
379
407
  keyword: searchKeywordProps,
380
408
  setIsPaneOpen: setIsFiltersPaneOpen,
381
409
  onChange: handleFiltersChange
@@ -408,14 +436,19 @@ var ApiTemplates = function ApiTemplates(_ref) {
408
436
  children: /*#__PURE__*/jsxRuntime.jsx(NoData, _objectSpread({}, noDataProps))
409
437
  }), /*#__PURE__*/jsxRuntime.jsx(Pane, {
410
438
  isOpen: isFormPaneOpen,
439
+ size: "large",
411
440
  onClose: handleCloseDeleteAlertAndFormPane,
412
441
  children: function children(_ref3) {
413
442
  var setFocusField = _ref3.setFocusField;
414
443
  return /*#__PURE__*/jsxRuntime.jsx(Form, {
444
+ bodyHelpPopoverProps: bodyHelpPopoverProps,
445
+ customHeadersHelpPopoverProps: customHeadersHelpPopoverProps,
415
446
  onMutationSuccess: onMutationSuccess,
416
447
  ownerId: ownerId,
417
448
  selectedApiTemplate: selectedApiTemplate,
418
449
  setFocusField: setFocusField,
450
+ templateVariables: templateVariables,
451
+ initialPayload: JSON.stringify(initialPayload, null, 2),
419
452
  onClose: handleCloseDeleteAlertAndFormPane
420
453
  });
421
454
  }