@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
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var formik = require('formik');
5
+ var neetoCist = require('@bigbinary/neeto-cist');
6
+ var Input = require('@bigbinary/neetoui/formik/Input');
7
+ var Switch = require('@bigbinary/neetoui/formik/Switch');
8
+ var reactI18next = require('react-i18next');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+ var ramda = require('ramda');
11
+
12
+ var SaveAsTemplate = function SaveAsTemplate() {
13
+ var _useFormikContext = formik.useFormikContext(),
14
+ shouldSaveAsTemplate = _useFormikContext.values.shouldSaveAsTemplate,
15
+ setFieldValue = _useFormikContext.setFieldValue;
16
+ var _useTranslation = reactI18next.useTranslation(),
17
+ t = _useTranslation.t;
18
+ react.useEffect(function () {
19
+ return function () {
20
+ setFieldValue("shouldSaveAsTemplate", false);
21
+ setFieldValue("templateName", "");
22
+ };
23
+ }, []);
24
+ var handleChange = function handleChange(_ref) {
25
+ var checked = _ref.target.checked;
26
+ if (!checked) {
27
+ setFieldValue("templateName", "");
28
+ }
29
+ setFieldValue("shouldSaveAsTemplate", checked);
30
+ };
31
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
32
+ className: "flex flex-col space-y-4",
33
+ children: [/*#__PURE__*/jsxRuntime.jsx(Switch, {
34
+ "data-cy": "neeto-message-template-".concat(neetoCist.hyphenate(t("neetoMessageTemplate.sendMessage.saveAsTemplate")), "-switch"),
35
+ label: t("neetoMessageTemplate.sendMessage.saveAsTemplate"),
36
+ name: "shouldSaveAsTemplate",
37
+ onChange: handleChange
38
+ }), shouldSaveAsTemplate && /*#__PURE__*/jsxRuntime.jsx(Input, {
39
+ autoFocus: true,
40
+ required: true,
41
+ label: t("neetoMessageTemplate.template.templateName"),
42
+ name: "templateName"
43
+ })]
44
+ });
45
+ };
46
+
47
+ var areValuesEqual = function areValuesEqual(value1, value2) {
48
+ var normalize = ramda.when(ramda.is(String), ramda.trim);
49
+ return ramda.eqBy(normalize, value1, value2);
50
+ };
51
+
52
+ exports.SaveAsTemplate = SaveAsTemplate;
53
+ exports.areValuesEqual = areValuesEqual;
54
+ //# sourceMappingURL=utils-3fvk3PIJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-3fvk3PIJ.js","sources":["../app/javascript/src/components/commons/SaveAsTemplate.jsx","../app/javascript/src/components/utils.js"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { hyphenate } from \"neetocist\";\nimport { Input, Switch } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst SaveAsTemplate = () => {\n const {\n values: { shouldSaveAsTemplate },\n setFieldValue,\n } = useFormikContext();\n\n const { t } = useTranslation();\n\n useEffect(\n () => () => {\n setFieldValue(\"shouldSaveAsTemplate\", false);\n setFieldValue(\"templateName\", \"\");\n },\n []\n );\n\n const handleChange = ({ target: { checked } }) => {\n if (!checked) {\n setFieldValue(\"templateName\", \"\");\n }\n\n setFieldValue(\"shouldSaveAsTemplate\", checked);\n };\n\n return (\n <div className=\"flex flex-col space-y-4\">\n <Switch\n data-cy={`neeto-message-template-${hyphenate(t(\"neetoMessageTemplate.sendMessage.saveAsTemplate\"))}-switch`}\n label={t(\"neetoMessageTemplate.sendMessage.saveAsTemplate\")}\n name=\"shouldSaveAsTemplate\"\n onChange={handleChange}\n />\n {shouldSaveAsTemplate && (\n <Input\n autoFocus\n required\n label={t(\"neetoMessageTemplate.template.templateName\")}\n name=\"templateName\"\n />\n )}\n </div>\n );\n};\n\nexport default SaveAsTemplate;\n","import { eqBy, is, trim, when } from \"ramda\";\n\nexport const areValuesEqual = (value1, value2) => {\n const normalize = when(is(String), trim);\n\n return eqBy(normalize, value1, value2);\n};\n"],"names":["SaveAsTemplate","_useFormikContext","useFormikContext","shouldSaveAsTemplate","values","setFieldValue","_useTranslation","useTranslation","t","useEffect","handleChange","_ref","checked","target","_jsxs","className","children","_jsx","Switch","concat","hyphenate","label","name","onChange","Input","autoFocus","required","areValuesEqual","value1","value2","normalize","when","is","String","trim","eqBy"],"mappings":";;;;;;;;;;;AAOA,IAAMA,cAAc,GAAG,SAAjBA,cAAcA,GAAS;AAC3B,EAAA,IAAAC,iBAAA,GAGIC,uBAAgB,EAAE;AAFVC,IAAAA,oBAAoB,GAAAF,iBAAA,CAA9BG,MAAM,CAAID,oBAAoB;IAC9BE,aAAa,GAAAJ,iBAAA,CAAbI,aAAa;AAGf,EAAA,IAAAC,eAAA,GAAcC,2BAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AAETC,EAAAA,eAAS,CACP,YAAA;AAAA,IAAA,OAAM,YAAM;AACVJ,MAAAA,aAAa,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5CA,MAAAA,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;KAClC;AAAA,GAAA,EACD,EACF,CAAC;AAED,EAAA,IAAMK,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA,EAAgC;AAAA,IAAA,IAAhBC,OAAO,GAAAD,IAAA,CAAjBE,MAAM,CAAID,OAAO;IACvC,IAAI,CAACA,OAAO,EAAE;AACZP,MAAAA,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;AACnC;AAEAA,IAAAA,aAAa,CAAC,sBAAsB,EAAEO,OAAO,CAAC;GAC/C;AAED,EAAA,oBACEE,eAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,yBAAyB;IAAAC,QAAA,EAAA,cACtCC,cAAA,CAACC,MAAM,EAAA;MACL,SAAAC,EAAAA,yBAAAA,CAAAA,MAAA,CAAmCC,mBAAS,CAACZ,CAAC,CAAC,iDAAiD,CAAC,CAAC,EAAU,SAAA,CAAA;AAC5Ga,MAAAA,KAAK,EAAEb,CAAC,CAAC,iDAAiD,CAAE;AAC5Dc,MAAAA,IAAI,EAAC,sBAAsB;AAC3BC,MAAAA,QAAQ,EAAEb;AAAa,KACxB,CAAC,EACDP,oBAAoB,iBACnBc,cAAA,CAACO,KAAK,EAAA;MACJC,SAAS,EAAA,IAAA;MACTC,QAAQ,EAAA,IAAA;AACRL,MAAAA,KAAK,EAAEb,CAAC,CAAC,4CAA4C,CAAE;AACvDc,MAAAA,IAAI,EAAC;AAAc,KACpB,CACF;AAAA,GACE,CAAC;AAEV;;AC/CO,IAAMK,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,MAAM,EAAEC,MAAM,EAAK;EAChD,IAAMC,SAAS,GAAGC,UAAI,CAACC,QAAE,CAACC,MAAM,CAAC,EAAEC,UAAI,CAAC;AAExC,EAAA,OAAOC,UAAI,CAACL,SAAS,EAAEF,MAAM,EAAEC,MAAM,CAAC;AACxC;;;;;"}
@@ -0,0 +1,51 @@
1
+ import { useEffect } from 'react';
2
+ import { useFormikContext } from 'formik';
3
+ import { hyphenate } from '@bigbinary/neeto-cist';
4
+ import Input from '@bigbinary/neetoui/formik/Input';
5
+ import Switch from '@bigbinary/neetoui/formik/Switch';
6
+ import { useTranslation } from 'react-i18next';
7
+ import { jsxs, jsx } from 'react/jsx-runtime';
8
+ import { when, is, trim, eqBy } from 'ramda';
9
+
10
+ var SaveAsTemplate = function SaveAsTemplate() {
11
+ var _useFormikContext = useFormikContext(),
12
+ shouldSaveAsTemplate = _useFormikContext.values.shouldSaveAsTemplate,
13
+ setFieldValue = _useFormikContext.setFieldValue;
14
+ var _useTranslation = useTranslation(),
15
+ t = _useTranslation.t;
16
+ useEffect(function () {
17
+ return function () {
18
+ setFieldValue("shouldSaveAsTemplate", false);
19
+ setFieldValue("templateName", "");
20
+ };
21
+ }, []);
22
+ var handleChange = function handleChange(_ref) {
23
+ var checked = _ref.target.checked;
24
+ if (!checked) {
25
+ setFieldValue("templateName", "");
26
+ }
27
+ setFieldValue("shouldSaveAsTemplate", checked);
28
+ };
29
+ return /*#__PURE__*/jsxs("div", {
30
+ className: "flex flex-col space-y-4",
31
+ children: [/*#__PURE__*/jsx(Switch, {
32
+ "data-cy": "neeto-message-template-".concat(hyphenate(t("neetoMessageTemplate.sendMessage.saveAsTemplate")), "-switch"),
33
+ label: t("neetoMessageTemplate.sendMessage.saveAsTemplate"),
34
+ name: "shouldSaveAsTemplate",
35
+ onChange: handleChange
36
+ }), shouldSaveAsTemplate && /*#__PURE__*/jsx(Input, {
37
+ autoFocus: true,
38
+ required: true,
39
+ label: t("neetoMessageTemplate.template.templateName"),
40
+ name: "templateName"
41
+ })]
42
+ });
43
+ };
44
+
45
+ var areValuesEqual = function areValuesEqual(value1, value2) {
46
+ var normalize = when(is(String), trim);
47
+ return eqBy(normalize, value1, value2);
48
+ };
49
+
50
+ export { SaveAsTemplate as S, areValuesEqual as a };
51
+ //# sourceMappingURL=utils-o_45ksFf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-o_45ksFf.js","sources":["../app/javascript/src/components/commons/SaveAsTemplate.jsx","../app/javascript/src/components/utils.js"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { hyphenate } from \"neetocist\";\nimport { Input, Switch } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nconst SaveAsTemplate = () => {\n const {\n values: { shouldSaveAsTemplate },\n setFieldValue,\n } = useFormikContext();\n\n const { t } = useTranslation();\n\n useEffect(\n () => () => {\n setFieldValue(\"shouldSaveAsTemplate\", false);\n setFieldValue(\"templateName\", \"\");\n },\n []\n );\n\n const handleChange = ({ target: { checked } }) => {\n if (!checked) {\n setFieldValue(\"templateName\", \"\");\n }\n\n setFieldValue(\"shouldSaveAsTemplate\", checked);\n };\n\n return (\n <div className=\"flex flex-col space-y-4\">\n <Switch\n data-cy={`neeto-message-template-${hyphenate(t(\"neetoMessageTemplate.sendMessage.saveAsTemplate\"))}-switch`}\n label={t(\"neetoMessageTemplate.sendMessage.saveAsTemplate\")}\n name=\"shouldSaveAsTemplate\"\n onChange={handleChange}\n />\n {shouldSaveAsTemplate && (\n <Input\n autoFocus\n required\n label={t(\"neetoMessageTemplate.template.templateName\")}\n name=\"templateName\"\n />\n )}\n </div>\n );\n};\n\nexport default SaveAsTemplate;\n","import { eqBy, is, trim, when } from \"ramda\";\n\nexport const areValuesEqual = (value1, value2) => {\n const normalize = when(is(String), trim);\n\n return eqBy(normalize, value1, value2);\n};\n"],"names":["SaveAsTemplate","_useFormikContext","useFormikContext","shouldSaveAsTemplate","values","setFieldValue","_useTranslation","useTranslation","t","useEffect","handleChange","_ref","checked","target","_jsxs","className","children","_jsx","Switch","concat","hyphenate","label","name","onChange","Input","autoFocus","required","areValuesEqual","value1","value2","normalize","when","is","String","trim","eqBy"],"mappings":";;;;;;;;;AAOA,IAAMA,cAAc,GAAG,SAAjBA,cAAcA,GAAS;AAC3B,EAAA,IAAAC,iBAAA,GAGIC,gBAAgB,EAAE;AAFVC,IAAAA,oBAAoB,GAAAF,iBAAA,CAA9BG,MAAM,CAAID,oBAAoB;IAC9BE,aAAa,GAAAJ,iBAAA,CAAbI,aAAa;AAGf,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtBC,CAAC,GAAAF,eAAA,CAADE,CAAC;AAETC,EAAAA,SAAS,CACP,YAAA;AAAA,IAAA,OAAM,YAAM;AACVJ,MAAAA,aAAa,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5CA,MAAAA,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;KAClC;AAAA,GAAA,EACD,EACF,CAAC;AAED,EAAA,IAAMK,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA,EAAgC;AAAA,IAAA,IAAhBC,OAAO,GAAAD,IAAA,CAAjBE,MAAM,CAAID,OAAO;IACvC,IAAI,CAACA,OAAO,EAAE;AACZP,MAAAA,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;AACnC;AAEAA,IAAAA,aAAa,CAAC,sBAAsB,EAAEO,OAAO,CAAC;GAC/C;AAED,EAAA,oBACEE,IAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,yBAAyB;IAAAC,QAAA,EAAA,cACtCC,GAAA,CAACC,MAAM,EAAA;MACL,SAAAC,EAAAA,yBAAAA,CAAAA,MAAA,CAAmCC,SAAS,CAACZ,CAAC,CAAC,iDAAiD,CAAC,CAAC,EAAU,SAAA,CAAA;AAC5Ga,MAAAA,KAAK,EAAEb,CAAC,CAAC,iDAAiD,CAAE;AAC5Dc,MAAAA,IAAI,EAAC,sBAAsB;AAC3BC,MAAAA,QAAQ,EAAEb;AAAa,KACxB,CAAC,EACDP,oBAAoB,iBACnBc,GAAA,CAACO,KAAK,EAAA;MACJC,SAAS,EAAA,IAAA;MACTC,QAAQ,EAAA,IAAA;AACRL,MAAAA,KAAK,EAAEb,CAAC,CAAC,4CAA4C,CAAE;AACvDc,MAAAA,IAAI,EAAC;AAAc,KACpB,CACF;AAAA,GACE,CAAC;AAEV;;AC/CO,IAAMK,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,MAAM,EAAEC,MAAM,EAAK;EAChD,IAAMC,SAAS,GAAGC,IAAI,CAACC,EAAE,CAACC,MAAM,CAAC,EAAEC,IAAI,CAAC;AAExC,EAAA,OAAOC,IAAI,CAACL,SAAS,EAAEF,MAAM,EAAEC,MAAM,CAAC;AACxC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-message-templates-frontend",
3
- "version": "1.3.10",
3
+ "version": "1.4.0",
4
4
  "description": "To manage message templates across neeto products.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://github.com/bigbinary/neeto-message-templates-nano",
@@ -63,17 +63,18 @@
63
63
  "@bigbinary/babel-preset-neeto": "^1.0.3",
64
64
  "@bigbinary/eslint-plugin-neeto": "1.6.2",
65
65
  "@bigbinary/neeto-cist": "1.0.17",
66
- "@bigbinary/neeto-commons-frontend": "4.13.39",
67
- "@bigbinary/neeto-editor": "1.47.7",
66
+ "@bigbinary/neeto-commons-frontend": "4.13.40",
67
+ "@bigbinary/neeto-editor": "1.47.10",
68
68
  "@bigbinary/neeto-filters-frontend": "4.3.19",
69
69
  "@bigbinary/neeto-icons": "1.20.47",
70
- "@bigbinary/neeto-molecules": "3.16.49",
71
- "@bigbinary/neeto-team-members-frontend": "4.5.8",
72
- "@bigbinary/neetoui": "8.3.6",
70
+ "@bigbinary/neeto-molecules": "3.16.55",
71
+ "@bigbinary/neeto-team-members-frontend": "4.5.9",
72
+ "@bigbinary/neetoui": "8.3.7",
73
73
  "@emotion/is-prop-valid": "1.2.0",
74
74
  "@faker-js/faker": "8.2.0",
75
75
  "@honeybadger-io/js": "6.10.1",
76
76
  "@honeybadger-io/react": "6.1.25",
77
+ "@monaco-editor/react": "^4.7.0",
77
78
  "@rollup/plugin-alias": "5.1.1",
78
79
  "@rollup/plugin-babel": "6.0.4",
79
80
  "@rollup/plugin-commonjs": "25.0.7",
@@ -139,8 +140,8 @@
139
140
  "process": "^0.11.10",
140
141
  "qs": "^6.11.2",
141
142
  "ramda": "0.29.0",
142
- "react": "18.2.0",
143
- "react-dom": "18.2.0",
143
+ "react": "18.3.1",
144
+ "react-dom": "18.3.1",
144
145
  "react-helmet": "^6.1.0",
145
146
  "react-i18next": "12.3.1",
146
147
  "react-router-dom": "5.3.3",
@@ -167,7 +168,7 @@
167
168
  "webpack": "5.76.0",
168
169
  "webpack-assets-manifest": "^5.1.0",
169
170
  "webpack-cli": "4.10.0",
170
- "webpack-dev-server": "^4.15.0",
171
+ "webpack-dev-server": "^5.2.1",
171
172
  "yup": "0.32.11",
172
173
  "zustand": "4.4.2"
173
174
  },
@@ -175,15 +176,16 @@
175
176
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
176
177
  "@babel/runtime": "7.26.10",
177
178
  "@bigbinary/neeto-cist": "1.0.17",
178
- "@bigbinary/neeto-commons-frontend": "4.13.39",
179
- "@bigbinary/neeto-editor": "1.47.7",
179
+ "@bigbinary/neeto-commons-frontend": "4.13.40",
180
+ "@bigbinary/neeto-editor": "1.47.10",
180
181
  "@bigbinary/neeto-filters-frontend": "4.3.19",
181
182
  "@bigbinary/neeto-icons": "1.20.47",
182
- "@bigbinary/neeto-molecules": "3.16.49",
183
- "@bigbinary/neeto-team-members-frontend": "4.5.8",
184
- "@bigbinary/neetoui": "8.3.6",
183
+ "@bigbinary/neeto-molecules": "3.16.55",
184
+ "@bigbinary/neeto-team-members-frontend": "4.5.9",
185
+ "@bigbinary/neetoui": "8.3.7",
185
186
  "@honeybadger-io/js": "6.10.1",
186
187
  "@honeybadger-io/react": "6.1.25",
188
+ "@monaco-editor/react": "^4.7.0",
187
189
  "@tailwindcss/container-queries": "^0.1.1",
188
190
  "@tanstack/react-query": "5.59.20",
189
191
  "@tanstack/react-query-devtools": "5.59.20",
@@ -202,8 +204,8 @@
202
204
  "path-browserify": "^1.0.1",
203
205
  "qs": "^6.11.2",
204
206
  "ramda": "0.29.0",
205
- "react": "18.2.0",
206
- "react-dom": "18.2.0",
207
+ "react": "18.3.1",
208
+ "react-dom": "18.3.1",
207
209
  "react-helmet": "^6.1.0",
208
210
  "react-i18next": "12.3.1",
209
211
  "react-router-dom": "5.3.3",
@@ -222,7 +224,9 @@
222
224
  "resolutions": {
223
225
  "postcss": "^8",
224
226
  "wrap-ansi": "7.0.0",
225
- "string-width": "4.1.0"
227
+ "string-width": "4.1.0",
228
+ "react": "18.3.1",
229
+ "react-dom": "18.3.1"
226
230
  },
227
231
  "engines": {
228
232
  "node": ">=22.13",
package/types.d.ts CHANGED
@@ -18,8 +18,32 @@ interface SendToApiHelpPopoverProps {
18
18
  description?: React.ReactNode;
19
19
  helpLinkProps?: ButtonProps;
20
20
  popoverProps?: PopoverProps;
21
- },
22
- additionalData?: {
21
+ };
22
+ customHeaders?: {
23
+ title?: string;
24
+ description?: React.ReactNode;
25
+ helpLinkProps?: ButtonProps;
26
+ } & PopoverProps;
27
+ body?: {
28
+ title?: string;
29
+ description?: React.ReactNode;
30
+ helpLinkProps?: ButtonProps;
31
+ } & PopoverProps;
32
+ }
33
+
34
+ interface ApiTemplatesHelpPopoverProps {
35
+ apiTemplates?: {
36
+ title?: string;
37
+ description?: React.ReactNode;
38
+ helpLinkProps?: ButtonProps;
39
+ popoverProps?: PopoverProps;
40
+ };
41
+ customHeaders?: {
42
+ title?: string;
43
+ description?: React.ReactNode;
44
+ helpLinkProps?: ButtonProps;
45
+ } & PopoverProps;
46
+ body?: {
23
47
  title?: string;
24
48
  description?: React.ReactNode;
25
49
  helpLinkProps?: ButtonProps;
@@ -58,7 +82,9 @@ interface ApiTemplatesProps {
58
82
  ownerId?: string;
59
83
  breadcrumbs?: Breadcrumb[];
60
84
  onMutationSuccess?: (...args: any[]) => void;
61
- helpPopoverProps?: PopoverProps;
85
+ initialPayload?: object;
86
+ templateVariables?: TemplateVariables[];
87
+ helpPopoverProps?: ApiTemplatesHelpPopoverProps;
62
88
  }
63
89
 
64
90
  interface SendToApiPaneProps {
@@ -68,6 +94,7 @@ interface SendToApiPaneProps {
68
94
  onSubmit?: (values: { [key: string]: any }) => void;
69
95
  isSubmitting?: boolean;
70
96
  canManageTemplates?: boolean;
97
+ templateVariables?: TemplateVariables[];
71
98
  helpPopoverProps?: SendToApiHelpPopoverProps;
72
99
  }
73
100
 
@@ -1,80 +0,0 @@
1
- import { useEffect } from 'react';
2
- import { useFormikContext } from 'formik';
3
- import Input from '@bigbinary/neetoui/formik/Input';
4
- import { useTranslation } from 'react-i18next';
5
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
6
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
7
- import classnames from 'classnames';
8
- import { hyphenate } from '@bigbinary/neeto-cist';
9
- import Label from '@bigbinary/neetoui/Label';
10
- import Typography from '@bigbinary/neetoui/Typography';
11
- import Switch from '@bigbinary/neetoui/formik/Switch';
12
- import { jsxs, jsx } from 'react/jsx-runtime';
13
- import { when, is, trim, eqBy } from 'ramda';
14
-
15
- var _excluded = ["name", "title", "className"];
16
- 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; }
17
- 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; }
18
- var SwitchBlock = function SwitchBlock(_ref) {
19
- var name = _ref.name,
20
- title = _ref.title,
21
- _ref$className = _ref.className,
22
- className = _ref$className === void 0 ? "" : _ref$className,
23
- otherProps = _objectWithoutProperties(_ref, _excluded);
24
- return /*#__PURE__*/jsxs(Label, {
25
- className: classnames("flex items-center justify-start gap-2 ", className),
26
- "data-cy": "neeto-message-template-".concat(hyphenate(title), "-toggle-label"),
27
- children: [/*#__PURE__*/jsx(Switch, _objectSpread(_objectSpread({}, _objectSpread(_objectSpread({}, otherProps), {}, {
28
- name: name
29
- })), {}, {
30
- "data-cy": "neeto-message-template-".concat(hyphenate(title), "-switch")
31
- })), /*#__PURE__*/jsx(Typography, {
32
- component: "span",
33
- style: "body1",
34
- children: title
35
- })]
36
- });
37
- };
38
-
39
- var SaveAsTemplate = function SaveAsTemplate() {
40
- var _useFormikContext = useFormikContext(),
41
- shouldSaveAsTemplate = _useFormikContext.values.shouldSaveAsTemplate,
42
- setFieldValue = _useFormikContext.setFieldValue;
43
- var _useTranslation = useTranslation(),
44
- t = _useTranslation.t;
45
- useEffect(function () {
46
- return function () {
47
- setFieldValue("shouldSaveAsTemplate", false);
48
- setFieldValue("templateName", "");
49
- };
50
- }, []);
51
- var handleChange = function handleChange(_ref) {
52
- var checked = _ref.target.checked;
53
- if (!checked) {
54
- setFieldValue("templateName", "");
55
- }
56
- setFieldValue("shouldSaveAsTemplate", checked);
57
- };
58
- return /*#__PURE__*/jsxs("div", {
59
- className: "flex flex-col space-y-4",
60
- children: [/*#__PURE__*/jsx(SwitchBlock, {
61
- className: "mt-4",
62
- name: "shouldSaveAsTemplate",
63
- title: t("neetoMessageTemplate.sendMessage.saveAsTemplate"),
64
- onChange: handleChange
65
- }), shouldSaveAsTemplate && /*#__PURE__*/jsx(Input, {
66
- autoFocus: true,
67
- required: true,
68
- label: t("neetoMessageTemplate.template.templateName"),
69
- name: "templateName"
70
- })]
71
- });
72
- };
73
-
74
- var areValuesEqual = function areValuesEqual(value1, value2) {
75
- var normalize = when(is(String), trim);
76
- return eqBy(normalize, value1, value2);
77
- };
78
-
79
- export { SaveAsTemplate as S, areValuesEqual as a };
80
- //# sourceMappingURL=utils-CdkVjz8p.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils-CdkVjz8p.js","sources":["../app/javascript/src/components/commons/SwitchBlock.jsx","../app/javascript/src/components/commons/SaveAsTemplate.jsx","../app/javascript/src/components/utils.js"],"sourcesContent":["import classnames from \"classnames\";\nimport { hyphenate } from \"neetocist\";\nimport { Label, Typography } from \"neetoui\";\nimport { Switch } from \"neetoui/formik\";\n\nconst SwitchBlock = ({ name, title, className = \"\", ...otherProps }) => (\n <Label\n className={classnames(\"flex items-center justify-start gap-2 \", className)}\n data-cy={`neeto-message-template-${hyphenate(title)}-toggle-label`}\n >\n <Switch\n {...{ ...otherProps, name }}\n data-cy={`neeto-message-template-${hyphenate(title)}-switch`}\n />\n <Typography component=\"span\" style=\"body1\">\n {title}\n </Typography>\n </Label>\n);\n\nexport default SwitchBlock;\n","import { useEffect } from \"react\";\n\nimport { useFormikContext } from \"formik\";\nimport { Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SwitchBlock from \"./SwitchBlock\";\n\nconst SaveAsTemplate = () => {\n const {\n values: { shouldSaveAsTemplate },\n setFieldValue,\n } = useFormikContext();\n\n const { t } = useTranslation();\n\n useEffect(\n () => () => {\n setFieldValue(\"shouldSaveAsTemplate\", false);\n setFieldValue(\"templateName\", \"\");\n },\n []\n );\n\n const handleChange = ({ target: { checked } }) => {\n if (!checked) {\n setFieldValue(\"templateName\", \"\");\n }\n\n setFieldValue(\"shouldSaveAsTemplate\", checked);\n };\n\n return (\n <div className=\"flex flex-col space-y-4\">\n <SwitchBlock\n className=\"mt-4\"\n name=\"shouldSaveAsTemplate\"\n title={t(\"neetoMessageTemplate.sendMessage.saveAsTemplate\")}\n onChange={handleChange}\n />\n {shouldSaveAsTemplate && (\n <Input\n autoFocus\n required\n label={t(\"neetoMessageTemplate.template.templateName\")}\n name=\"templateName\"\n />\n )}\n </div>\n );\n};\n\nexport default SaveAsTemplate;\n","import { eqBy, is, trim, when } from \"ramda\";\n\nexport const areValuesEqual = (value1, value2) => {\n const normalize = when(is(String), trim);\n\n return eqBy(normalize, value1, value2);\n};\n"],"names":["SwitchBlock","_ref","name","title","_ref$className","className","otherProps","_objectWithoutProperties","_excluded","_jsxs","Label","classnames","concat","hyphenate","children","_jsx","Switch","_objectSpread","Typography","component","style","SaveAsTemplate","_useFormikContext","useFormikContext","shouldSaveAsTemplate","values","setFieldValue","_useTranslation","useTranslation","t","useEffect","handleChange","checked","target","onChange","Input","autoFocus","required","label","areValuesEqual","value1","value2","normalize","when","is","String","trim","eqBy"],"mappings":"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"}
@@ -1,186 +0,0 @@
1
- 'use strict';
2
-
3
- var i18next = require('i18next');
4
- var yup = require('yup');
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var formik = require('formik');
7
- var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
8
- var Delete = require('@bigbinary/neeto-icons/Delete');
9
- var Button = require('@bigbinary/neetoui/Button');
10
- var Label = require('@bigbinary/neetoui/Label');
11
- var Input = require('@bigbinary/neetoui/formik/Input');
12
- var neetoCist = require('@bigbinary/neeto-cist');
13
- var ramda = require('ramda');
14
- var jsxRuntime = require('react/jsx-runtime');
15
-
16
- function _interopNamespaceDefault(e) {
17
- var n = Object.create(null);
18
- if (e) {
19
- Object.keys(e).forEach(function (k) {
20
- if (k !== 'default') {
21
- var d = Object.getOwnPropertyDescriptor(e, k);
22
- Object.defineProperty(n, k, d.get ? d : {
23
- enumerable: true,
24
- get: function () { return e[k]; }
25
- });
26
- }
27
- });
28
- }
29
- n.default = e;
30
- return Object.freeze(n);
31
- }
32
-
33
- var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
34
-
35
- var VALID_URL_REGEX = /^(https?):\/\/([a-zA-Z0-9-]+\.){1,}[a-zA-Z]{2,}\/?[^\s]*$/;
36
- var ADDITIONAL_DATA_INITIAL_VALUE = {
37
- key: "",
38
- value: ""
39
- };
40
- var API_TEMPLATE_TYPE = "api_template";
41
-
42
- [{
43
- dataIndex: "name",
44
- key: "name",
45
- title: i18next.t("neetoMessageTemplate.template.name")
46
- }, {
47
- dataIndex: "status",
48
- key: "status",
49
- title: i18next.t("neetoMessageTemplate.template.active"),
50
- render: function render(status) {
51
- return status === "active" ? i18next.t("neetoMessageTemplate.yes") : i18next.t("neetoMessageTemplate.no");
52
- },
53
- width: "20%"
54
- }];
55
- var FILTER_COLUMNS = [{
56
- key: "name",
57
- node: "name",
58
- label: i18next.t("neetoMessageTemplate.template.name"),
59
- type: "text"
60
- }, {
61
- key: "status",
62
- node: "status",
63
- label: i18next.t("neetoMessageTemplate.template.active"),
64
- type: "single_option",
65
- values: [{
66
- label: i18next.t("neetoMessageTemplate.yes"),
67
- value: "active"
68
- }, {
69
- label: i18next.t("neetoMessageTemplate.no"),
70
- value: "inactive"
71
- }]
72
- }];
73
- var API_TEMPLATE_INITIAL_VALUES = {
74
- name: "",
75
- endpoint: "",
76
- additionalData: [ADDITIONAL_DATA_INITIAL_VALUE]
77
- };
78
- var SAMPLE_URL = "https://example.com";
79
- var API_TEMPLATE_FORM_VALIDATION_SCHEMA = yup__namespace.object({
80
- name: yup__namespace.string().trim().required(i18next.t("neetoMessageTemplate.template.validation.namePresence")),
81
- endpoint: yup__namespace.string().required(i18next.t("neetoMessageTemplate.api.validation.endpointPresence")).matches(VALID_URL_REGEX, i18next.t("neetoMessageTemplate.api.validation.validEndpoint")),
82
- additionalData: yup__namespace.array().of(yup__namespace.object({
83
- key: yup__namespace.string(),
84
- value: yup__namespace.string()
85
- }))
86
- });
87
- var TEMPLATE_STATUS = {
88
- ACTIVE: "active",
89
- INACTIVE: "inactive"
90
- };
91
-
92
- var removeOption = function removeOption(_ref) {
93
- var arrayHelpers = _ref.arrayHelpers,
94
- index = _ref.index,
95
- data = _ref.data;
96
- if (data.length === 1) {
97
- arrayHelpers.remove(index);
98
- arrayHelpers.push(ADDITIONAL_DATA_INITIAL_VALUE);
99
- return;
100
- }
101
- arrayHelpers.remove(index);
102
- };
103
- var addOption = function addOption(arrayHelpers) {
104
- return arrayHelpers.push(ADDITIONAL_DATA_INITIAL_VALUE);
105
- };
106
- var isKeyOrValueNotEmpty = ramda.whereAny({
107
- key: neetoCist.isNotEmpty,
108
- value: neetoCist.isNotEmpty
109
- });
110
-
111
- 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; }
112
- 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; }
113
- var KeyValuePairs = reactUtils.withT(function (_ref) {
114
- var t = _ref.t,
115
- name = _ref.name,
116
- _ref$label = _ref.label,
117
- label = _ref$label === void 0 ? "" : _ref$label,
118
- _ref$labelProps = _ref.labelProps,
119
- labelProps = _ref$labelProps === void 0 ? {} : _ref$labelProps;
120
- return /*#__PURE__*/jsxRuntime.jsx(formik.FieldArray, {
121
- name: name,
122
- children: function children(arrayHelpers) {
123
- var data = arrayHelpers.form.values[name];
124
- var showDeleteButton = data.length > 1 || isKeyOrValueNotEmpty(data[0]);
125
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
126
- className: "space-y-2",
127
- children: [/*#__PURE__*/jsxRuntime.jsx(Label, _objectSpread(_objectSpread({}, labelProps), {}, {
128
- children: label
129
- })), data.map(function (_, index) {
130
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
131
- className: "flex h-8 space-x-3",
132
- children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
133
- className: "w-2/5",
134
- "data-cy": "key-input-".concat(index),
135
- name: "".concat(name, ".").concat(index, ".key"),
136
- placeholder: t("neetoMessageTemplate.api.key")
137
- }), /*#__PURE__*/jsxRuntime.jsx(Input, {
138
- className: "w-3/5",
139
- "data-cy": "value-input-".concat(index),
140
- name: "".concat(name, ".").concat(index, ".value"),
141
- placeholder: t("neetoMessageTemplate.api.value"),
142
- suffix: showDeleteButton && /*#__PURE__*/jsxRuntime.jsx(Button, {
143
- "data-cy": "delete-key-value-pair-".concat(index),
144
- icon: Delete,
145
- size: "small",
146
- style: "text",
147
- onClick: function onClick() {
148
- return removeOption({
149
- arrayHelpers: arrayHelpers,
150
- index: index,
151
- data: data
152
- });
153
- }
154
- })
155
- })]
156
- }, index);
157
- }), /*#__PURE__*/jsxRuntime.jsx(Button, {
158
- className: "w-full justify-center",
159
- "data-cy": "add-key-value-pair-button",
160
- label: t("neetoMessageTemplate.api.addKeyValuePair"),
161
- style: "secondary",
162
- onClick: function onClick() {
163
- return addOption(arrayHelpers);
164
- }
165
- })]
166
- });
167
- }
168
- });
169
- });
170
-
171
- var rejectEmptyKeyValuePairs = ramda.reject(ramda.whereAny({
172
- key: ramda.isEmpty,
173
- value: ramda.isEmpty
174
- }));
175
-
176
- exports.ADDITIONAL_DATA_INITIAL_VALUE = ADDITIONAL_DATA_INITIAL_VALUE;
177
- exports.API_TEMPLATE_FORM_VALIDATION_SCHEMA = API_TEMPLATE_FORM_VALIDATION_SCHEMA;
178
- exports.API_TEMPLATE_INITIAL_VALUES = API_TEMPLATE_INITIAL_VALUES;
179
- exports.API_TEMPLATE_TYPE = API_TEMPLATE_TYPE;
180
- exports.FILTER_COLUMNS = FILTER_COLUMNS;
181
- exports.KeyValuePairs = KeyValuePairs;
182
- exports.SAMPLE_URL = SAMPLE_URL;
183
- exports.TEMPLATE_STATUS = TEMPLATE_STATUS;
184
- exports.VALID_URL_REGEX = VALID_URL_REGEX;
185
- exports.rejectEmptyKeyValuePairs = rejectEmptyKeyValuePairs;
186
- //# sourceMappingURL=utils-D7y24q1q.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils-D7y24q1q.js","sources":["../app/javascript/src/components/Api/constants.js","../app/javascript/src/components/Api/ApiTemplates/constants.js","../app/javascript/src/components/commons/KeyValuePairs/utils.js","../app/javascript/src/components/commons/KeyValuePairs/index.jsx","../app/javascript/src/components/Api/utils.js"],"sourcesContent":["export const VALID_URL_REGEX =\n /^(https?):\\/\\/([a-zA-Z0-9-]+\\.){1,}[a-zA-Z]{2,}\\/?[^\\s]*$/;\n\nexport const ADDITIONAL_DATA_INITIAL_VALUE = { key: \"\", value: \"\" };\n\nexport const API_TEMPLATE_TYPE = \"api_template\";\n","import { t } from \"i18next\";\nimport * as yup from \"yup\";\n\nimport {\n ADDITIONAL_DATA_INITIAL_VALUE,\n VALID_URL_REGEX,\n} from \"components/Api/constants\";\n\nexport const TABLE_COLUMN_DATA = [\n {\n dataIndex: \"name\",\n key: \"name\",\n title: t(\"neetoMessageTemplate.template.name\"),\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 FILTER_COLUMNS = [\n {\n key: \"name\",\n node: \"name\",\n label: t(\"neetoMessageTemplate.template.name\"),\n type: \"text\",\n },\n {\n key: \"status\",\n node: \"status\",\n label: t(\"neetoMessageTemplate.template.active\"),\n type: \"single_option\",\n values: [\n { label: t(\"neetoMessageTemplate.yes\"), value: \"active\" },\n { label: t(\"neetoMessageTemplate.no\"), value: \"inactive\" },\n ],\n },\n];\n\nexport const API_TEMPLATE_INITIAL_VALUES = {\n name: \"\",\n endpoint: \"\",\n additionalData: [ADDITIONAL_DATA_INITIAL_VALUE],\n};\n\nexport const SAMPLE_URL = \"https://example.com\";\n\nexport const API_TEMPLATE_FORM_VALIDATION_SCHEMA = yup.object({\n name: yup\n .string()\n .trim()\n .required(t(\"neetoMessageTemplate.template.validation.namePresence\")),\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});\n\nexport const TEMPLATE_STATUS = { ACTIVE: \"active\", INACTIVE: \"inactive\" };\n","import { isNotEmpty } from \"neetocist\";\nimport { whereAny } from \"ramda\";\n\nimport { ADDITIONAL_DATA_INITIAL_VALUE } from \"components/Api/constants\";\n\nexport const removeOption = ({ arrayHelpers, index, data }) => {\n if (data.length === 1) {\n arrayHelpers.remove(index);\n arrayHelpers.push(ADDITIONAL_DATA_INITIAL_VALUE);\n\n return;\n }\n\n arrayHelpers.remove(index);\n};\n\nexport const addOption = arrayHelpers =>\n arrayHelpers.push(ADDITIONAL_DATA_INITIAL_VALUE);\n\nexport const isKeyOrValueNotEmpty = whereAny({\n key: isNotEmpty,\n value: isNotEmpty,\n});\n","import { FieldArray } from \"formik\";\nimport { withT } from \"neetocommons/react-utils\";\nimport { Delete } from \"neetoicons\";\nimport { Button, Label } from \"neetoui\";\nimport { Input } from \"neetoui/formik\";\n\nimport { addOption, isKeyOrValueNotEmpty, removeOption } from \"./utils\";\n\nconst KeyValuePairs = withT(({ t, name, label = \"\", labelProps = {} }) => (\n <FieldArray {...{ name }}>\n {arrayHelpers => {\n const data = arrayHelpers.form.values[name];\n\n const showDeleteButton = data.length > 1 || isKeyOrValueNotEmpty(data[0]);\n\n return (\n <div className=\"space-y-2\">\n <Label {...labelProps}>{label}</Label>\n {data.map((_, index) => (\n <div className=\"flex h-8 space-x-3\" key={index}>\n <Input\n className=\"w-2/5\"\n data-cy={`key-input-${index}`}\n name={`${name}.${index}.key`}\n placeholder={t(\"neetoMessageTemplate.api.key\")}\n />\n <Input\n className=\"w-3/5\"\n data-cy={`value-input-${index}`}\n name={`${name}.${index}.value`}\n placeholder={t(\"neetoMessageTemplate.api.value\")}\n suffix={\n showDeleteButton && (\n <Button\n data-cy={`delete-key-value-pair-${index}`}\n icon={Delete}\n size=\"small\"\n style=\"text\"\n onClick={() =>\n removeOption({ arrayHelpers, index, data })\n }\n />\n )\n }\n />\n </div>\n ))}\n <Button\n className=\"w-full justify-center\"\n data-cy=\"add-key-value-pair-button\"\n label={t(\"neetoMessageTemplate.api.addKeyValuePair\")}\n style=\"secondary\"\n onClick={() => addOption(arrayHelpers)}\n />\n </div>\n );\n }}\n </FieldArray>\n));\n\nexport default KeyValuePairs;\n","import { isEmpty, reject, whereAny } from \"ramda\";\n\nexport const rejectEmptyKeyValuePairs = reject(\n whereAny({ key: isEmpty, value: isEmpty })\n);\n"],"names":["VALID_URL_REGEX","ADDITIONAL_DATA_INITIAL_VALUE","key","value","API_TEMPLATE_TYPE","dataIndex","title","t","render","status","width","FILTER_COLUMNS","node","label","type","values","API_TEMPLATE_INITIAL_VALUES","name","endpoint","additionalData","SAMPLE_URL","API_TEMPLATE_FORM_VALIDATION_SCHEMA","yup","object","string","trim","required","matches","array","of","TEMPLATE_STATUS","ACTIVE","INACTIVE","removeOption","_ref","arrayHelpers","index","data","length","remove","push","addOption","isKeyOrValueNotEmpty","whereAny","isNotEmpty","KeyValuePairs","withT","_ref$label","_ref$labelProps","labelProps","_jsx","FieldArray","children","form","showDeleteButton","_jsxs","className","Label","_objectSpread","map","_","Input","concat","placeholder","suffix","Button","icon","Delete","size","style","onClick","rejectEmptyKeyValuePairs","reject","isEmpty"],"mappings":"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"}