@bigbinary/neeto-rules-frontend 2.5.15-beta-7 → 2.5.15-beta-9

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.
@@ -13,22 +13,24 @@ var Delete = require('@bigbinary/neeto-icons/Delete');
13
13
  var Refresh = require('@bigbinary/neeto-icons/Refresh');
14
14
  var Button = require('@bigbinary/neetoui/Button');
15
15
  var reactI18next = require('react-i18next');
16
- var useUtilityStore = require('../useUtilityStore-BFuftXo4.js');
16
+ var useUtilityStore = require('../useUtilityStore-DhJI92iM.js');
17
17
  var classNames = require('classnames');
18
18
  var Typography = require('@bigbinary/neetoui/Typography');
19
19
  var ramda = require('ramda');
20
+ var i18next = require('i18next');
21
+ var yup = require('yup');
20
22
  var Radio = require('@bigbinary/neetoui/formik/Radio');
21
23
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
22
24
  var managers = require('@bigbinary/neetoui/managers');
23
25
  var jsxRuntime = require('react/jsx-runtime');
24
26
  var Collapse = require('@bigbinary/neeto-icons/Collapse');
25
- var i18next = require('i18next');
26
27
  var Left = require('@bigbinary/neeto-icons/Left');
27
28
  var Textarea = require('@bigbinary/neetoui/formik/Textarea');
28
29
  var Input$1 = require('@bigbinary/neetoui/formik/Input');
29
30
  var Switch = require('@bigbinary/neetoui/formik/Switch');
30
31
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
31
32
  var Editor = require('@monaco-editor/react');
33
+ var Help = require('@bigbinary/neeto-icons/Help');
32
34
  var DynamicVariables = require('@bigbinary/neeto-molecules/DynamicVariables');
33
35
  var Label = require('@bigbinary/neetoui/Label');
34
36
  var Select = require('@bigbinary/neetoui/Select');
@@ -47,7 +49,6 @@ var _toArray = require('@babel/runtime/helpers/toArray');
47
49
  var PhoneNumber = require('@bigbinary/neeto-molecules/PhoneNumber');
48
50
  var Tag = require('@bigbinary/neetoui/Tag');
49
51
  var reactSelect = require('react-select');
50
- var yup = require('yup');
51
52
  var constants = require('../constants-BkPVd-Gz.js');
52
53
  var Radio$1 = require('@bigbinary/neetoui/Radio');
53
54
  var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
@@ -60,7 +61,6 @@ var Tooltip = require('@bigbinary/neetoui/Tooltip');
60
61
  var Container = require('@bigbinary/neeto-molecules/Container');
61
62
  var NeetoHeader = require('@bigbinary/neeto-molecules/Header');
62
63
  var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
63
- var Help = require('@bigbinary/neeto-icons/Help');
64
64
  var Switch$1 = require('@bigbinary/neetoui/Switch');
65
65
  var useCustomDataStore = require('../useCustomDataStore-BEG8I__n.js');
66
66
  var _typeof = require('@babel/runtime/helpers/typeof');
@@ -87,7 +87,7 @@ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
87
87
 
88
88
  var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
89
89
 
90
- var css = ".neeto-filters-error-boundary{align-items:center;background-color:rgb(var(--neeto-ui-gray-100));border-radius:var(--neeto-ui-rounded-sm);display:flex;gap:1rem;margin-bottom:.75rem;padding:.5rem 1.25rem}.neeto-filters-error-boundary p{color:rgb(var(--neeto-ui-gray-800))}.neeto-rules-main-content__container{height:100dvh!important}.neeto-rules-main-card .neeto-ui-btn.underline{text-align:left}.neeto-rules-side-panel{flex-grow:0;flex-shrink:0}.neeto-rules-side-panel--small{width:320px}@media (min-width:1024px){.neeto-rules-side-panel--small{width:380px}}.neeto-rules-side-panel--large{width:380px}@media (min-width:1024px){.neeto-rules-side-panel--large{width:480px}}.neeto-rules-json-editor__wrapper{height:35vh;position:relative}.neeto-rules-json-editor__editor{height:100%}.neeto-rules-json-editor__dynamic-variables{position:absolute;right:1rem;top:1rem;z-index:10}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19lcnJvci1ib3VuZGFyeS5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL21haW4uc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19sYXlvdXQuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19wYW5lLnNjc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fanNvbi1lZGl0b3Iuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4QkFJRSxrQkFBQSxDQUdBLDhDQUFBLENBREEsd0NBQUEsQ0FIQSxZQUFBLENBRUEsUUFBQSxDQUhBLG9CQUFBLENBREEscUJDT0YsQ0RDRSxnQ0FDRSxtQ0NDSixDQ1hBLHFDQUNFLHVCRGNGLENDWEEsK0NBQ0UsZURjRixDRW5CQSx3QkFFRSxXQUFBLENBREEsYUZ1QkYsQ0VwQkUsK0JBQ0UsV0ZzQkosQ0VwQkksMEJBSEYsK0JBSUksV0Z1QkosQ0FDRixDRXBCRSwrQkFDRSxXRnNCSixDRXBCSSwwQkFIRiwrQkFJSSxXRnVCSixDQUNGLENHdkNFLGtDQUVFLFdBQUEsQ0FEQSxpQkgyQ0osQ0d2Q0UsaUNBQ0UsV0h5Q0osQ0d0Q0UsNENBQ0UsaUJBQUEsQ0FFQSxVQUFBLENBREEsUUFBQSxDQUVBLFVId0NKIiwic291cmNlc0NvbnRlbnQiOlsiLm5lZXRvLWZpbHRlcnMtZXJyb3ItYm91bmRhcnkge1xuICBwYWRkaW5nOiAwLjVyZW0gMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxcmVtO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1uZWV0by11aS1yb3VuZGVkLXNtKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktMTAwKSk7XG5cbiAgcCB7XG4gICAgY29sb3I6IHJnYih2YXIoLS1uZWV0by11aS1ncmF5LTgwMCkpO1xuICB9XG59XG4iLCIubmVldG8tZmlsdGVycy1lcnJvci1ib3VuZGFyeSB7XG4gIHBhZGRpbmc6IDAuNXJlbSAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLW5lZXRvLXVpLXJvdW5kZWQtc20pO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IodmFyKC0tbmVldG8tdWktZ3JheS0xMDApKTtcbn1cbi5uZWV0by1maWx0ZXJzLWVycm9yLWJvdW5kYXJ5IHAge1xuICBjb2xvcjogcmdiKHZhcigtLW5lZXRvLXVpLWdyYXktODAwKSk7XG59XG5cbi5uZWV0by1ydWxlcy1tYWluLWNvbnRlbnRfX2NvbnRhaW5lciB7XG4gIGhlaWdodDogMTAwZHZoICFpbXBvcnRhbnQ7XG59XG5cbi5uZWV0by1ydWxlcy1tYWluLWNhcmQgLm5lZXRvLXVpLWJ0bi51bmRlcmxpbmUge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4ubmVldG8tcnVsZXMtc2lkZS1wYW5lbCB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG4ubmVldG8tcnVsZXMtc2lkZS1wYW5lbC0tc21hbGwge1xuICB3aWR0aDogMzIwcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1zbWFsbCB7XG4gICAgd2lkdGg6IDM4MHB4O1xuICB9XG59XG4ubmVldG8tcnVsZXMtc2lkZS1wYW5lbC0tbGFyZ2Uge1xuICB3aWR0aDogMzgwcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1sYXJnZSB7XG4gICAgd2lkdGg6IDQ4MHB4O1xuICB9XG59XG5cbi5uZWV0by1ydWxlcy1qc29uLWVkaXRvcl9fd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAzNXZoO1xufVxuLm5lZXRvLXJ1bGVzLWpzb24tZWRpdG9yX19lZGl0b3Ige1xuICBoZWlnaHQ6IDEwMCU7XG59XG4ubmVldG8tcnVsZXMtanNvbi1lZGl0b3JfX2R5bmFtaWMtdmFyaWFibGVzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFyZW07XG4gIHJpZ2h0OiAxcmVtO1xuICB6LWluZGV4OiAxMDtcbn0iLCIubmVldG8tcnVsZXMtbWFpbi1jb250ZW50X19jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMGR2aCAhaW1wb3J0YW50O1xufVxuXG4ubmVldG8tcnVsZXMtbWFpbi1jYXJkIC5uZWV0by11aS1idG4udW5kZXJsaW5lIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn0iLCIubmVldG8tcnVsZXMtc2lkZS1wYW5lbCB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBmbGV4LWdyb3c6IDA7XG5cbiAgJi0tc21hbGwge1xuICAgIHdpZHRoOiAzMjBweDtcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIHdpZHRoOiAzODBweDtcbiAgICB9XG4gIH1cblxuICAmLS1sYXJnZSB7XG4gICAgd2lkdGg6IDM4MHB4O1xuXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAgICAgd2lkdGg6IDQ4MHB4O1xuICAgIH1cbiAgfVxufSIsIi5uZWV0by1ydWxlcy1qc29uLWVkaXRvciB7XG4gICZfX3dyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDM1dmg7XG4gIH1cblxuICAmX19lZGl0b3Ige1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuXG4gICZfX2R5bmFtaWMtdmFyaWFibGVzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxcmVtO1xuICAgIHJpZ2h0OiAxcmVtO1xuICAgIHotaW5kZXg6IDEwO1xuICB9XG59XG4iXX0= */";
90
+ var css = ".neeto-rules-main-content__container{height:100dvh!important}.neeto-rules-main-card .neeto-ui-btn.underline{text-align:left}.neeto-rules-side-panel{flex-grow:0;flex-shrink:0}.neeto-rules-side-panel--small{width:320px}@media (min-width:1024px){.neeto-rules-side-panel--small{width:380px}}.neeto-rules-side-panel--large{width:380px}@media (min-width:1024px){.neeto-rules-side-panel--large{width:480px}}.neeto-rules-json-editor__wrapper{height:35vh;padding-bottom:2rem;position:relative}.neeto-rules-json-editor__editor{height:100%}.neeto-rules-json-editor__dynamic-variables{position:absolute;right:1rem;top:1rem;z-index:10}[data-tippy-root]{z-index:99999!important}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19sYXlvdXQuc2NzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9tYWluLnNjc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fcGFuZS5zY3NzIiwiYXBwL2phdmFzY3JpcHQvc3JjL3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2pzb24tZWRpdG9yLnNjc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fZHJvcGRvd24uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FDRSx1QkNDRixDREVBLCtDQUNFLGVDQ0YsQ0NOQSx3QkFFRSxXQUFBLENBREEsYURVRixDQ1BFLCtCQUNFLFdEU0osQ0NQSSwwQkFIRiwrQkFJSSxXRFVKLENBQ0YsQ0NQRSwrQkFDRSxXRFNKLENDUEksMEJBSEYsK0JBSUksV0RVSixDQUNGLENFMUJFLGtDQUVFLFdBQUEsQ0FDQSxtQkFBQSxDQUZBLGlCRitCSixDRTFCRSxpQ0FDRSxXRjRCSixDRXpCRSw0Q0FDRSxpQkFBQSxDQUVBLFVBQUEsQ0FEQSxRQUFBLENBRUEsVUYyQkosQ0cxQ0Esa0JBQ0UsdUJINkNGIiwic291cmNlc0NvbnRlbnQiOlsiLm5lZXRvLXJ1bGVzLW1haW4tY29udGVudF9fY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDBkdmggIWltcG9ydGFudDtcbn1cblxuLm5lZXRvLXJ1bGVzLW1haW4tY2FyZCAubmVldG8tdWktYnRuLnVuZGVybGluZSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59IiwiLm5lZXRvLXJ1bGVzLW1haW4tY29udGVudF9fY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDBkdmggIWltcG9ydGFudDtcbn1cblxuLm5lZXRvLXJ1bGVzLW1haW4tY2FyZCAubmVldG8tdWktYnRuLnVuZGVybGluZSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5uZWV0by1ydWxlcy1zaWRlLXBhbmVsIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGZsZXgtZ3JvdzogMDtcbn1cbi5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1zbWFsbCB7XG4gIHdpZHRoOiAzMjBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLm5lZXRvLXJ1bGVzLXNpZGUtcGFuZWwtLXNtYWxsIHtcbiAgICB3aWR0aDogMzgwcHg7XG4gIH1cbn1cbi5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1sYXJnZSB7XG4gIHdpZHRoOiAzODBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLm5lZXRvLXJ1bGVzLXNpZGUtcGFuZWwtLWxhcmdlIHtcbiAgICB3aWR0aDogNDgwcHg7XG4gIH1cbn1cblxuLm5lZXRvLXJ1bGVzLWpzb24tZWRpdG9yX193cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDM1dmg7XG4gIHBhZGRpbmctYm90dG9tOiAycmVtO1xufVxuLm5lZXRvLXJ1bGVzLWpzb24tZWRpdG9yX19lZGl0b3Ige1xuICBoZWlnaHQ6IDEwMCU7XG59XG4ubmVldG8tcnVsZXMtanNvbi1lZGl0b3JfX2R5bmFtaWMtdmFyaWFibGVzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFyZW07XG4gIHJpZ2h0OiAxcmVtO1xuICB6LWluZGV4OiAxMDtcbn1cblxuW2RhdGEtdGlwcHktcm9vdF0ge1xuICB6LWluZGV4OiA5OTk5OSAhaW1wb3J0YW50O1xufSIsIi5uZWV0by1ydWxlcy1zaWRlLXBhbmVsIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGZsZXgtZ3JvdzogMDtcblxuICAmLS1zbWFsbCB7XG4gICAgd2lkdGg6IDMyMHB4O1xuXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAgICAgd2lkdGg6IDM4MHB4O1xuICAgIH1cbiAgfVxuXG4gICYtLWxhcmdlIHtcbiAgICB3aWR0aDogMzgwcHg7XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgICB3aWR0aDogNDgwcHg7XG4gICAgfVxuICB9XG59IiwiLm5lZXRvLXJ1bGVzLWpzb24tZWRpdG9yIHtcbiAgJl9fd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMzV2aDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbiAgfVxuXG4gICZfX2VkaXRvciB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgJl9fZHluYW1pYy12YXJpYWJsZXMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDFyZW07XG4gICAgcmlnaHQ6IDFyZW07XG4gICAgei1pbmRleDogMTA7XG4gIH1cbn1cbiIsIltkYXRhLXRpcHB5LXJvb3RdIHtcbiAgei1pbmRleDogOTk5OTkgIWltcG9ydGFudDtcbn1cbiJdfQ== */";
91
91
  n(css,{});
92
92
 
93
93
  var useActiveField = function useActiveField(name) {
@@ -196,9 +196,9 @@ var Header = function Header(_ref) {
196
196
  });
197
197
  };
198
198
 
199
- var _excluded$e = ["component"];
200
- function ownKeys$o(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
- function _objectSpread$o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$o(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
199
+ var _excluded$f = ["component"];
200
+ function ownKeys$u(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
+ function _objectSpread$u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$u(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
202
202
  var Panel = function Panel() {
203
203
  var _useUtilityStore = useUtilityStore.useUtilityStore(function (store) {
204
204
  return {
@@ -219,17 +219,17 @@ var Panel = function Panel() {
219
219
  Object.assign(data, panelState.data);
220
220
  }
221
221
  var Component = config.component,
222
- paneProps = _objectWithoutProperties(config, _excluded$e);
222
+ paneProps = _objectWithoutProperties(config, _excluded$f);
223
223
  var isOpen = !!panelState.type;
224
224
  var hasOverlays = managers.manager.hasOverlays();
225
225
  var panelSize = {
226
226
  small: "neeto-rules-side-panel--small",
227
227
  large: "neeto-rules-side-panel--large"
228
228
  }[panelState.size] || "neeto-rules-side-panel--small";
229
- return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$o(_objectSpread$o({
229
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread$u(_objectSpread$u({
230
230
  className: classNames("neeto-rules-side-panel neeto-ui-border-gray-300 transition-width neeto-ui-bg-white ml-auto flex h-screen max-h-full flex-col overflow-y-auto border-l duration-300 ease-in-out", _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, panelSize, isOpen), "w-0 overflow-hidden", !isOpen), "absolute", hasOverlays), "right-0", hasOverlays))
231
231
  }, paneProps), {}, {
232
- children: /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread$o(_objectSpread$o({}, data), {}, {
232
+ children: /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread$u(_objectSpread$u({}, data), {}, {
233
233
  onClose: resetPanelState
234
234
  }), panelState.type)
235
235
  }));
@@ -293,6 +293,11 @@ var DEFAULT_RULE_ACTION = {
293
293
  var EDITOR_ADDONS = ["code-block", "block-quote", "image-upload"];
294
294
  var EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
295
295
  var ACTION_INPUT_TYPES = ["text", "number", "decimal", "regex"];
296
+ var DEFAULT_HELP_POPOVER_PROPS = {
297
+ helpLinkProps: {
298
+ label: i18next.t("neetoRules.labels.viewHelpArticle")
299
+ }
300
+ };
296
301
 
297
302
  var getFieldDetails$1 = function getFieldDetails(fieldValue) {
298
303
  var actionOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
@@ -574,7 +579,9 @@ var LongTextField = function LongTextField(_ref2) {
574
579
  _ref2$selectedField = _ref2.selectedField,
575
580
  selectedField = _ref2$selectedField === void 0 ? {} : _ref2$selectedField,
576
581
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
577
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
582
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
583
+ _ref2$required = _ref2.required,
584
+ required = _ref2$required === void 0 ? false : _ref2$required;
578
585
  var _useActiveField2 = useActiveField(name, {
579
586
  shouldAutoFocus: shouldAutoFocus
580
587
  }),
@@ -584,8 +591,8 @@ var LongTextField = function LongTextField(_ref2) {
584
591
  return /*#__PURE__*/jsxRuntime.jsx(Textarea, {
585
592
  name: name,
586
593
  ref: ref,
594
+ required: required,
587
595
  rows: rows,
588
- required: true,
589
596
  className: "w-full",
590
597
  onFocus: setFieldActive
591
598
  });
@@ -609,7 +616,13 @@ var EDITOR_CONFIG = {
609
616
  scrollBeyondLastLine: false,
610
617
  autoIndent: "full"
611
618
  };
612
- var API_REQUEST_FIELDS = ["endpoint", "body", "enableCustomHeaders", "customHeaders"];
619
+ var API_REQUEST_FIELDS = {
620
+ TEMPLATE_ID: "templateId",
621
+ ENDPOINT: "endpoint",
622
+ BODY: "body",
623
+ ENABLE_CUSTOM_HEADERS: "enableCustomHeaders",
624
+ CUSTOM_HEADERS: "customHeaders"
625
+ };
613
626
 
614
627
  var addOption = function addOption(arrayHelpers) {
615
628
  return arrayHelpers.push(CUSTOM_HEADERS_INITIAL_VALUE);
@@ -630,9 +643,72 @@ var hasKeyOrValue = ramda.whereAny({
630
643
  var formatCustomFields = function formatCustomFields(customFields) {
631
644
  return neetoCist.isPresent(customFields) ? customFields : [CUSTOM_HEADERS_INITIAL_VALUE];
632
645
  };
646
+ var rejectEmptyKeyValuePairs = ramda.reject(ramda.whereAny({
647
+ key: ramda.isEmpty,
648
+ value: ramda.isEmpty
649
+ }));
650
+ var areHeadersSame = function areHeadersSame(enableCustomHeaders, customHeaders) {
651
+ var template = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
652
+ var templateHasCustomHeaders = template.enableCustomHeaders,
653
+ templateHeaders = template.customHeaders;
654
+ if (!enableCustomHeaders && !templateHasCustomHeaders) return true;
655
+ if (enableCustomHeaders !== templateHasCustomHeaders) return false;
656
+ return ramda.equals(customHeaders, templateHeaders);
657
+ };
658
+ var isBodyAvailable = function isBodyAvailable(body) {
659
+ try {
660
+ var data = JSON.parse(body);
661
+ return neetoCist.isPresent(data);
662
+ } catch (_unused) {
663
+ return false;
664
+ }
665
+ };
666
+ var formatTemplateValues = function formatTemplateValues(key, template) {
667
+ switch (key) {
668
+ case API_REQUEST_FIELDS.CUSTOM_HEADERS:
669
+ return formatCustomFields(template[key]);
670
+ case API_REQUEST_FIELDS.TEMPLATE_ID:
671
+ return template.id;
672
+ default:
673
+ return template[key];
674
+ }
675
+ };
676
+
677
+ var sanitizeHelpPopoverProps = ramda.unless(ramda.path(["helpLinkProps", "href"]), ramda.omit(["helpLinkProps"]));
678
+ var setEditorContent = function setEditorContent(ref, content) {
679
+ if (!ref.current) return;
680
+ ref.current.editor.commands.setContent(content);
681
+ };
682
+ var mergeRefs = function mergeRefs() {
683
+ for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
684
+ refs[_key] = arguments[_key];
685
+ }
686
+ return function (node) {
687
+ refs.forEach(function (ref) {
688
+ if (typeof ref === "function") ref(node);else if (ref !== null) ref.current = node;
689
+ });
690
+ };
691
+ };
633
692
 
634
693
  // eslint-disable-next-line react-hooks/rules-of-hooks
635
694
  var dotPath = ramda.useWith(ramda.path, [ramda.split(".")]);
695
+ var areValuesEqual = function areValuesEqual(value1, value2) {
696
+ var normalize = ramda.when(ramda.is(String), ramda.trim);
697
+ return ramda.eqBy(normalize, value1, value2);
698
+ };
699
+ var buildHelpPopoverProps = function buildHelpPopoverProps(popoverProps) {
700
+ var combinedProps = ramda.mergeDeepLeft(popoverProps, DEFAULT_HELP_POPOVER_PROPS);
701
+ return sanitizeHelpPopoverProps(combinedProps);
702
+ };
703
+ var withHelpPopover = function withHelpPopover(helpPopoverProps) {
704
+ return neetoCist.isPresent(helpPopoverProps) ? {
705
+ labelProps: {
706
+ helpIconProps: {
707
+ popoverProps: buildHelpPopoverProps(helpPopoverProps)
708
+ }
709
+ }
710
+ } : {};
711
+ };
636
712
 
637
713
  var KeyValuePairsField = reactUtils.withT(function (_ref) {
638
714
  var t = _ref.t,
@@ -691,9 +767,13 @@ var KeyValuePairsField = reactUtils.withT(function (_ref) {
691
767
  });
692
768
  });
693
769
 
770
+ function ownKeys$t(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; }
771
+ function _objectSpread$t(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$t(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$t(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
694
772
  var CustomHeaders = function CustomHeaders(_ref) {
695
773
  var name = _ref.name,
696
- onFocus = _ref.onFocus;
774
+ onFocus = _ref.onFocus,
775
+ _ref$helpPopoverProps = _ref.helpPopoverProps,
776
+ helpPopoverProps = _ref$helpPopoverProps === void 0 ? {} : _ref$helpPopoverProps;
697
777
  var _useFormikContext = formik.useFormikContext(),
698
778
  values = _useFormikContext.values,
699
779
  setFieldValue = _useFormikContext.setFieldValue;
@@ -712,27 +792,31 @@ var CustomHeaders = function CustomHeaders(_ref) {
712
792
  var label = t("neetoRules.labels.includeHeaders");
713
793
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
714
794
  className: "flex flex-col space-y-4 mb-4",
715
- children: [/*#__PURE__*/jsxRuntime.jsx(Switch, {
795
+ children: [/*#__PURE__*/jsxRuntime.jsx(Switch, _objectSpread$t({
716
796
  label: label,
717
797
  onFocus: onFocus,
718
798
  "data-cy": "neeto-rules-api-fields-".concat(neetoCist.hyphenate(label), "-switch"),
719
799
  name: switchName,
720
800
  onChange: handleChange
721
- }), isCustomHeadersEnabled && /*#__PURE__*/jsxRuntime.jsx(KeyValuePairsField, {
801
+ }, withHelpPopover(helpPopoverProps))), isCustomHeadersEnabled && /*#__PURE__*/jsxRuntime.jsx(KeyValuePairsField, {
722
802
  onFocus: onFocus,
723
803
  entity: t("neetoRules.labels.headers"),
724
- name: "".concat(name, ".customHeaders")
804
+ name: keyValuePairsFieldName
725
805
  })]
726
806
  });
727
807
  };
728
808
 
809
+ function ownKeys$s(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; }
810
+ function _objectSpread$s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$s(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
729
811
  var JsonEditor = function JsonEditor(_ref) {
730
812
  var name = _ref.name,
731
813
  onFocus = _ref.onFocus,
732
814
  _ref$initialValue = _ref.initialValue,
733
815
  initialValue = _ref$initialValue === void 0 ? "{}" : _ref$initialValue,
734
816
  _ref$variables = _ref.variables,
735
- variables = _ref$variables === void 0 ? [] : _ref$variables;
817
+ variables = _ref$variables === void 0 ? [] : _ref$variables,
818
+ _ref$helpPopoverProps = _ref.helpPopoverProps,
819
+ helpPopoverProps = _ref$helpPopoverProps === void 0 ? {} : _ref$helpPopoverProps;
736
820
  var editorRef = react.useRef(null);
737
821
  var completionProviderRef = react.useRef(null);
738
822
  var _useField = formik.useField(name),
@@ -821,12 +905,18 @@ var JsonEditor = function JsonEditor(_ref) {
821
905
  };
822
906
  }, []);
823
907
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
824
- className: "space-y-2 mb-2",
825
- children: [/*#__PURE__*/jsxRuntime.jsx(Label, {
908
+ className: "space-y-2",
909
+ children: [/*#__PURE__*/jsxRuntime.jsx(Label, _objectSpread$s(_objectSpread$s({
826
910
  required: true,
827
- "data-cy": "api-field-body",
911
+ "data-cy": "api-field-body"
912
+ }, neetoCist.isPresent(helpPopoverProps) && {
913
+ helpIconProps: {
914
+ icon: Help,
915
+ popoverProps: buildHelpPopoverProps(helpPopoverProps)
916
+ }
917
+ }), {}, {
828
918
  children: t("neetoRules.labels.body")
829
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
919
+ })), /*#__PURE__*/jsxRuntime.jsxs("div", {
830
920
  className: "neeto-rules-json-editor__wrapper",
831
921
  children: [/*#__PURE__*/jsxRuntime.jsx("div", {
832
922
  className: "neeto-rules-json-editor__dynamic-variables",
@@ -852,6 +942,43 @@ var JsonEditor = function JsonEditor(_ref) {
852
942
  });
853
943
  };
854
944
 
945
+ var SaveAsTemplate = function SaveAsTemplate(_ref) {
946
+ var name = _ref.name,
947
+ _ref$className = _ref.className,
948
+ className = _ref$className === void 0 ? "" : _ref$className;
949
+ var _useFormikContext = formik.useFormikContext(),
950
+ values = _useFormikContext.values,
951
+ setFieldValue = _useFormikContext.setFieldValue;
952
+ var _useTranslation = reactI18next.useTranslation(),
953
+ t = _useTranslation.t;
954
+ var switchName = "".concat(name, ".shouldSaveAsTemplate");
955
+ var templateName = "".concat(name, ".templateName");
956
+ var shouldSaveAsTemplate = dotPath(switchName, values);
957
+ var handleChange = function handleChange(_ref2) {
958
+ var checked = _ref2.target.checked;
959
+ if (!checked) {
960
+ setFieldValue(templateName, "");
961
+ }
962
+ setFieldValue(switchName, checked);
963
+ };
964
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
965
+ className: classNames(["flex flex-col space-y-4", className]),
966
+ children: [/*#__PURE__*/jsxRuntime.jsx(Switch, {
967
+ "data-cy": "neeto-rules-save-as-template-switch",
968
+ label: t("neetoRules.labels.saveAsTemplate"),
969
+ name: switchName,
970
+ onChange: handleChange
971
+ }), shouldSaveAsTemplate && /*#__PURE__*/jsxRuntime.jsx(Input$1, {
972
+ autoFocus: true,
973
+ required: true,
974
+ label: t("neetoRules.labels.templateName"),
975
+ name: templateName
976
+ })]
977
+ });
978
+ };
979
+
980
+ function ownKeys$r(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; }
981
+ function _objectSpread$r(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$r(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$r(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
855
982
  var SelectTemplateField = function SelectTemplateField(_ref) {
856
983
  var selectedField = _ref.selectedField,
857
984
  templates = _ref.templates,
@@ -872,7 +999,9 @@ var SelectTemplateField = function SelectTemplateField(_ref) {
872
999
  }, templates);
873
1000
  onChange === null || onChange === void 0 || onChange(template);
874
1001
  };
875
- return /*#__PURE__*/jsxRuntime.jsx(Select, {
1002
+ var _ref2 = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.helpPopoverProps) || {},
1003
+ helpPopoverProps = _ref2.template;
1004
+ return /*#__PURE__*/jsxRuntime.jsx(Select, _objectSpread$r({
876
1005
  onFocus: onFocus,
877
1006
  isClearable: true,
878
1007
  isSearchable: true,
@@ -886,7 +1015,35 @@ var SelectTemplateField = function SelectTemplateField(_ref) {
886
1015
  placeholder: t("neetoRules.placeholders.selectTemplate"),
887
1016
  value: selectedTemplate,
888
1017
  onChange: handleTemplateChange
889
- });
1018
+ }, withHelpPopover(helpPopoverProps)));
1019
+ };
1020
+
1021
+ var useHasFieldChanged = function useHasFieldChanged(name) {
1022
+ var _useFormikContext = formik.useFormikContext(),
1023
+ values = _useFormikContext.values,
1024
+ initialValues = _useFormikContext.initialValues;
1025
+ var initialValue = dotPath(name, initialValues);
1026
+ var value = dotPath(name, values);
1027
+ return neetoCist.notEqualsDeep(initialValue, value);
1028
+ };
1029
+
1030
+ var useResetSaveAsTemplateOnHide = function useResetSaveAsTemplateOnHide(name, shouldShowSaveAsTemplate) {
1031
+ var _dotPath;
1032
+ var _useFormikContext = formik.useFormikContext(),
1033
+ values = _useFormikContext.values,
1034
+ setFieldValue = _useFormikContext.setFieldValue;
1035
+ var currentValue = (_dotPath = dotPath(name, values)) !== null && _dotPath !== void 0 ? _dotPath : {};
1036
+ var isVisible = shouldShowSaveAsTemplate(currentValue);
1037
+ var wasVisibleRef = react.useRef(isVisible);
1038
+ react.useEffect(function () {
1039
+ var wasVisible = wasVisibleRef.current;
1040
+ if (wasVisible && !isVisible) {
1041
+ setFieldValue("".concat(name, ".shouldSaveAsTemplate"), false);
1042
+ setFieldValue("".concat(name, ".templateName"), "");
1043
+ }
1044
+ wasVisibleRef.current = isVisible;
1045
+ }, [isVisible, name, setFieldValue]);
1046
+ return isVisible;
890
1047
  };
891
1048
 
892
1049
  var Target$i = function Target(_ref) {
@@ -939,20 +1096,46 @@ var ApiFields = function ApiFields(_ref2) {
939
1096
  t = _useTranslation2.t;
940
1097
  var _useFormikContext = formik.useFormikContext(),
941
1098
  setFieldValue = _useFormikContext.setFieldValue,
942
- values = _useFormikContext.values;
1099
+ formValues = _useFormikContext.values;
943
1100
  var _useActiveField2 = useActiveField(name, {
944
1101
  shouldAutoFocus: shouldAutoFocus
945
1102
  }),
946
1103
  ref = _useActiveField2.ref,
947
1104
  setFieldActive = _useActiveField2.setFieldActive;
948
- var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
1105
+ var _useUtilityStore = useUtilityStore.useUtilityStore(function (store) {
1106
+ return {
1107
+ isSaveAsTemplateEnabled: store["isSaveAsTemplateEnabled"]
1108
+ };
1109
+ }, shallow.shallow),
1110
+ isSaveAsTemplateEnabled = _useUtilityStore.isSaveAsTemplateEnabled;
1111
+ var hasFieldChanged = useHasFieldChanged(name);
1112
+ var templates = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates) || [];
1113
+ var shouldShowSaveAsTemplate = react.useCallback(function () {
1114
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1115
+ templateId = _ref3.templateId,
1116
+ endpoint = _ref3.endpoint,
1117
+ enableCustomHeaders = _ref3.enableCustomHeaders,
1118
+ _ref3$customHeaders = _ref3.customHeaders,
1119
+ customHeaders = _ref3$customHeaders === void 0 ? [CUSTOM_HEADERS_INITIAL_VALUE] : _ref3$customHeaders,
1120
+ body = _ref3.body;
1121
+ var template = neetoCist.findBy({
1122
+ id: templateId
1123
+ }, templates);
1124
+ var hasContent = neetoCist.isPresent(endpoint) || neetoCist.isPresent(rejectEmptyKeyValuePairs(customHeaders)) || isBodyAvailable(body);
1125
+ var isContentDifferentFromTemplate = !(areValuesEqual(template === null || template === void 0 ? void 0 : template.endpoint, endpoint) && areHeadersSame(enableCustomHeaders, customHeaders, template) && ramda.equals(template === null || template === void 0 ? void 0 : template.body, body));
1126
+ return hasContent && hasFieldChanged && isContentDifferentFromTemplate;
1127
+ }, [templates, hasFieldChanged]);
1128
+ var isSaveAsTemplateVisible = useResetSaveAsTemplateOnHide(name, isSaveAsTemplateEnabled ? shouldShowSaveAsTemplate : ramda.F);
949
1129
  var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
950
1130
  var handleTemplateChange = function handleTemplateChange(template) {
951
- API_REQUEST_FIELDS.forEach(function (key) {
952
- var value = key === "customHeaders" ? formatCustomFields(template[key]) : template[key];
1131
+ ramda.values(API_REQUEST_FIELDS).forEach(function (key) {
1132
+ var value = formatTemplateValues(key, template);
953
1133
  setFieldValue("".concat(name, ".").concat(key), value);
954
1134
  });
955
1135
  };
1136
+ var _ref4 = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.helpPopoverProps) || {},
1137
+ customHeadersHelpPopoverProps = _ref4.customHeaders,
1138
+ bodyHelpPopoverProps = _ref4.body;
956
1139
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
957
1140
  className: "w-full",
958
1141
  children: [isTemplateSelectionEnabled && /*#__PURE__*/jsxRuntime.jsx(SelectTemplateField, {
@@ -973,12 +1156,16 @@ var ApiFields = function ApiFields(_ref2) {
973
1156
  onFocus: setFieldActive
974
1157
  }), /*#__PURE__*/jsxRuntime.jsx(CustomHeaders, {
975
1158
  name: name,
1159
+ helpPopoverProps: customHeadersHelpPopoverProps,
976
1160
  onFocus: setFieldActive
977
1161
  }), /*#__PURE__*/jsxRuntime.jsx(JsonEditor, {
978
- initialValue: dotPath("".concat(name, ".body"), values),
1162
+ helpPopoverProps: bodyHelpPopoverProps,
1163
+ initialValue: dotPath("".concat(name, ".body"), formValues),
979
1164
  name: "".concat(name, ".body"),
980
1165
  variables: selectedField === null || selectedField === void 0 ? void 0 : selectedField.variables,
981
1166
  onFocus: setFieldActive
1167
+ }), isSaveAsTemplateVisible && /*#__PURE__*/jsxRuntime.jsx(SaveAsTemplate, {
1168
+ name: name
982
1169
  })]
983
1170
  });
984
1171
  };
@@ -1087,7 +1274,9 @@ var Target$g = function Target(_ref) {
1087
1274
  var DateField$1 = function DateField(_ref2) {
1088
1275
  var name = _ref2.name,
1089
1276
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
1090
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
1277
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
1278
+ _ref2$required = _ref2.required,
1279
+ required = _ref2$required === void 0 ? false : _ref2$required;
1091
1280
  var _useTranslation2 = reactI18next.useTranslation(),
1092
1281
  t = _useTranslation2.t;
1093
1282
  var _useField3 = formik.useField("".concat(name, ".value")),
@@ -1104,6 +1293,7 @@ var DateField$1 = function DateField(_ref2) {
1104
1293
  setFieldActive = _useActiveField2.setFieldActive;
1105
1294
  return /*#__PURE__*/jsxRuntime.jsx(DatePicker, {
1106
1295
  ref: ref,
1296
+ required: required,
1107
1297
  defaultValue: field.value,
1108
1298
  label: t("neetoRules.form.selectDate"),
1109
1299
  name: "".concat(name, ".value"),
@@ -1138,6 +1328,7 @@ var EmailIdFields = function EmailIdFields(_ref) {
1138
1328
  children: /*#__PURE__*/jsxRuntime.jsx(MultiEmailInput, {
1139
1329
  name: name,
1140
1330
  onFocus: onFocus,
1331
+ required: true,
1141
1332
  label: t("neetoRules.common.emailIds"),
1142
1333
  placeholder: t("neetoRules.placeholders.emailField"),
1143
1334
  ref: initialFocusRef,
@@ -1149,9 +1340,9 @@ var EmailIdFields = function EmailIdFields(_ref) {
1149
1340
  });
1150
1341
  };
1151
1342
 
1152
- var _excluded$d = ["autoFocus", "name", "value", "label", "variables", "addons", "editorRef", "defaults"];
1153
- function ownKeys$n(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; }
1154
- function _objectSpread$n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$n(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1343
+ var _excluded$e = ["autoFocus", "name", "value", "label", "variables", "addons", "editorRef", "defaults"];
1344
+ function ownKeys$q(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; }
1345
+ function _objectSpread$q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$q(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1155
1346
  var EditorAction = function EditorAction(_ref) {
1156
1347
  var _ref$autoFocus = _ref.autoFocus,
1157
1348
  autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus,
@@ -1166,7 +1357,7 @@ var EditorAction = function EditorAction(_ref) {
1166
1357
  _ref$editorRef = _ref.editorRef,
1167
1358
  editorRef = _ref$editorRef === void 0 ? null : _ref$editorRef,
1168
1359
  defaults = _ref.defaults,
1169
- otherProps = _objectWithoutProperties(_ref, _excluded$d);
1360
+ otherProps = _objectWithoutProperties(_ref, _excluded$e);
1170
1361
  var _useStateWithDependen = reactUtils.useStateWithDependency(value, [name]),
1171
1362
  _useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
1172
1363
  editorData = _useStateWithDependen2[0],
@@ -1177,7 +1368,7 @@ var EditorAction = function EditorAction(_ref) {
1177
1368
  react.useEffect(function () {
1178
1369
  setFieldValue(name, editorData);
1179
1370
  }, [debouncedValue]);
1180
- return /*#__PURE__*/react.createElement(FormikEditor, _objectSpread$n({
1371
+ return /*#__PURE__*/react.createElement(FormikEditor, _objectSpread$q({
1181
1372
  addons: addons,
1182
1373
  autoFocus: autoFocus,
1183
1374
  defaults: defaults,
@@ -1193,6 +1384,9 @@ var EditorAction = function EditorAction(_ref) {
1193
1384
  }, otherProps));
1194
1385
  };
1195
1386
 
1387
+ var _excluded$d = ["dropdownOptions", "name", "selectedField", "shouldAutoFocus", "className", "required"];
1388
+ function ownKeys$p(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; }
1389
+ function _objectSpread$p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$p(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1196
1390
  var Target$f = function Target(_ref) {
1197
1391
  var _selectedOption$label;
1198
1392
  var dropdownOptions = _ref.dropdownOptions,
@@ -1251,7 +1445,10 @@ var SelectField$2 = function SelectField(_ref2) {
1251
1445
  selectedField = _ref2.selectedField,
1252
1446
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
1253
1447
  shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
1254
- className = _ref2.className;
1448
+ className = _ref2.className,
1449
+ _ref2$required = _ref2.required,
1450
+ required = _ref2$required === void 0 ? false : _ref2$required,
1451
+ otherProps = _objectWithoutProperties(_ref2, _excluded$d);
1255
1452
  var _useTranslation2 = reactI18next.useTranslation(),
1256
1453
  t = _useTranslation2.t;
1257
1454
  var _useField3 = formik.useField(name),
@@ -1282,34 +1479,23 @@ var SelectField$2 = function SelectField(_ref2) {
1282
1479
  setValue((_option$value = option === null || option === void 0 ? void 0 : option.value) !== null && _option$value !== void 0 ? _option$value : null);
1283
1480
  setTouched(true);
1284
1481
  };
1285
- return /*#__PURE__*/jsxRuntime.jsx(Select$1, {
1482
+ return /*#__PURE__*/jsxRuntime.jsx(Select$1, _objectSpread$p(_objectSpread$p({}, _objectSpread$p({
1286
1483
  className: className,
1287
1484
  name: name,
1485
+ required: required
1486
+ }, otherProps)), {}, {
1288
1487
  innerRef: ref,
1289
1488
  label: defaultLabel,
1290
1489
  options: dropdownOptions,
1291
1490
  value: selectedOption,
1292
1491
  onChange: handleSelectOption,
1293
1492
  onFocus: setFieldActive
1294
- });
1493
+ }));
1295
1494
  };
1296
1495
  SelectField$2.Target = Target$f;
1297
1496
 
1298
- var setEditorContent = function setEditorContent(ref, content) {
1299
- if (!ref.current) return;
1300
- ref.current.editor.commands.setContent(content);
1301
- };
1302
- var mergeRefs = function mergeRefs() {
1303
- for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
1304
- refs[_key] = arguments[_key];
1305
- }
1306
- return function (node) {
1307
- refs.forEach(function (ref) {
1308
- if (typeof ref === "function") ref(node);else if (ref !== null) ref.current = node;
1309
- });
1310
- };
1311
- };
1312
-
1497
+ function ownKeys$o(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; }
1498
+ function _objectSpread$o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$o(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1313
1499
  var Target$e = function Target(_ref) {
1314
1500
  var selectedField = _ref.selectedField,
1315
1501
  _ref$separatorIndex = _ref.separatorIndex,
@@ -1382,8 +1568,28 @@ var EmailFields = function EmailFields(_ref2) {
1382
1568
  }),
1383
1569
  initialFocusRef = _useActiveField2.ref,
1384
1570
  setFieldActive = _useActiveField2.setFieldActive;
1571
+ var _useUtilityStore = useUtilityStore.useUtilityStore(function (store) {
1572
+ return {
1573
+ isSaveAsTemplateEnabled: store["isSaveAsTemplateEnabled"]
1574
+ };
1575
+ }, shallow.shallow),
1576
+ isSaveAsTemplateEnabled = _useUtilityStore.isSaveAsTemplateEnabled;
1577
+ var hasFieldChanged = useHasFieldChanged(name);
1385
1578
  var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
1386
1579
  var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
1580
+ var shouldShowSaveAsTemplate = react.useCallback(function () {
1581
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1582
+ templateId = _ref3.templateId,
1583
+ subject = _ref3.subject,
1584
+ body = _ref3.body;
1585
+ var template = neetoCist.findBy({
1586
+ id: templateId
1587
+ }, templates);
1588
+ var hasContent = neetoCist.isPresent(subject) || neetoCist.isPresent(body);
1589
+ var isContentDifferentFromTemplate = !(areValuesEqual(template === null || template === void 0 ? void 0 : template.subject, subject) && (template === null || template === void 0 ? void 0 : template.body) === body);
1590
+ return hasContent && hasFieldChanged && isContentDifferentFromTemplate;
1591
+ }, [templates, hasFieldChanged]);
1592
+ var isSaveAsTemplateVisible = useResetSaveAsTemplateOnHide(name, isSaveAsTemplateEnabled ? shouldShowSaveAsTemplate : ramda.F);
1387
1593
  var isFirstFieldInForm = function isFirstFieldInForm(field) {
1388
1594
  if (isTemplateSelectionEnabled) return false;
1389
1595
  if (field === "emails") return true;
@@ -1391,22 +1597,26 @@ var EmailFields = function EmailFields(_ref2) {
1391
1597
  return !isEmailIdField && selectedField.hideSubject;
1392
1598
  };
1393
1599
  var handleTemplateChange = function handleTemplateChange(template) {
1600
+ setFieldValue("".concat(name, ".templateId"), template.id);
1394
1601
  setFieldValue("".concat(name, ".body"), template.body);
1395
1602
  setEditorContent(editorRef, template.body);
1396
1603
  if (selectedField.hideSubject) return;
1397
1604
  setFieldValue("".concat(name, ".subject"), template.subject);
1398
1605
  };
1606
+ var _ref4 = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.helpPopoverProps) || {},
1607
+ recipientFieldHelpPopoverProps = _ref4.recipientField;
1399
1608
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
1400
1609
  className: "w-full",
1401
- children: [showFieldSelection && /*#__PURE__*/react.createElement(SelectField$2, {
1610
+ children: [showFieldSelection && /*#__PURE__*/react.createElement(SelectField$2, _objectSpread$o({
1402
1611
  index: index,
1403
1612
  selectedField: selectedField,
1613
+ required: true,
1404
1614
  shouldAutoFocus: true,
1405
1615
  className: "mb-6",
1406
1616
  dropdownOptions: fieldOptions,
1407
1617
  key: "".concat(name, ".value"),
1408
1618
  name: "".concat(name, ".value")
1409
- }), isTemplateSelectionEnabled && /*#__PURE__*/jsxRuntime.jsx(SelectTemplateField, {
1619
+ }, withHelpPopover(recipientFieldHelpPopoverProps))), isTemplateSelectionEnabled && /*#__PURE__*/jsxRuntime.jsx(SelectTemplateField, {
1410
1620
  initialFocusRef: initialFocusRef,
1411
1621
  selectedField: selectedField,
1412
1622
  templates: templates,
@@ -1418,6 +1628,7 @@ var EmailFields = function EmailFields(_ref2) {
1418
1628
  initialFocusRef: isFirstFieldInForm("emails") ? initialFocusRef : null,
1419
1629
  onFocus: setFieldActive
1420
1630
  }), !selectedField.hideSubject && /*#__PURE__*/jsxRuntime.jsx(Input$1, {
1631
+ required: true,
1421
1632
  className: "mb-4",
1422
1633
  "data-cy": "email-action-subject-text-field",
1423
1634
  label: t("neetoRules.labels.subject"),
@@ -1426,12 +1637,16 @@ var EmailFields = function EmailFields(_ref2) {
1426
1637
  type: "text",
1427
1638
  onFocus: setFieldActive
1428
1639
  }), /*#__PURE__*/jsxRuntime.jsx(EditorAction, {
1640
+ required: true,
1429
1641
  label: t("neetoRules.labels.body"),
1430
1642
  name: "".concat(name, ".body"),
1431
1643
  value: (_action$metadata = action.metadata) === null || _action$metadata === void 0 ? void 0 : _action$metadata.body,
1432
1644
  variables: selectedField === null || selectedField === void 0 ? void 0 : selectedField.variables,
1433
1645
  editorRef: isFirstFieldInForm("body") ? mergeRefs(editorRef, initialFocusRef) : editorRef,
1434
1646
  onFocus: setFieldActive
1647
+ }), isSaveAsTemplateVisible && /*#__PURE__*/jsxRuntime.jsx(SaveAsTemplate, {
1648
+ name: name,
1649
+ className: "mt-4"
1435
1650
  })]
1436
1651
  });
1437
1652
  };
@@ -1481,7 +1696,9 @@ var Target$d = function Target(_ref) {
1481
1696
  var Input = function Input(_ref2) {
1482
1697
  var name = _ref2.name,
1483
1698
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
1484
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
1699
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
1700
+ _ref2$required = _ref2.required,
1701
+ required = _ref2$required === void 0 ? false : _ref2$required;
1485
1702
  var _useTranslation2 = reactI18next.useTranslation(),
1486
1703
  t = _useTranslation2.t;
1487
1704
  var _useActiveField2 = useActiveField(name, {
@@ -1491,6 +1708,7 @@ var Input = function Input(_ref2) {
1491
1708
  setFieldActive = _useActiveField2.setFieldActive;
1492
1709
  return /*#__PURE__*/jsxRuntime.jsx(Input$1, {
1493
1710
  ref: ref,
1711
+ required: required,
1494
1712
  className: "my-auto",
1495
1713
  label: t("neetoRules.labels.value"),
1496
1714
  name: "".concat(name, ".value"),
@@ -1531,8 +1749,8 @@ var SHORTCUTS = {
1531
1749
  };
1532
1750
 
1533
1751
  var _excluded$c = ["value", "nullable", "className", "handleSubmit", "handleCancel"];
1534
- function ownKeys$m(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; }
1535
- function _objectSpread$m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$m(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$m(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1752
+ function ownKeys$n(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; }
1753
+ function _objectSpread$n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$n(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1536
1754
  var InlineInput = /*#__PURE__*/react.forwardRef(function (props, ref) {
1537
1755
  var _props$value = props.value,
1538
1756
  value = _props$value === void 0 ? "" : _props$value,
@@ -1570,8 +1788,9 @@ var InlineInput = /*#__PURE__*/react.forwardRef(function (props, ref) {
1570
1788
  return /*#__PURE__*/jsxRuntime.jsx("div", {
1571
1789
  className: classNames("flex flex-grow", _defineProperty({}, className, className)),
1572
1790
  ref: inputWrapperRef,
1573
- children: /*#__PURE__*/jsxRuntime.jsx(Input$2, _objectSpread$m(_objectSpread$m({
1791
+ children: /*#__PURE__*/jsxRuntime.jsx(Input$2, _objectSpread$n(_objectSpread$n({
1574
1792
  autoFocus: true,
1793
+ required: true,
1575
1794
  className: "neeto-planner-inline-input",
1576
1795
  "data-cy": "inline-input-field",
1577
1796
  value: inputValue,
@@ -1737,10 +1956,9 @@ var Target$b = function Target(_ref) {
1737
1956
  var _useTranslation = reactI18next.useTranslation(),
1738
1957
  t = _useTranslation.t;
1739
1958
  var _useField = formik.useField(name),
1740
- _useField2 = _slicedToArray(_useField, 3),
1741
- field = _useField2[0];
1742
- _useField2[1];
1743
- var meta = _useField2[2];
1959
+ _useField2 = _slicedToArray(_useField, 2),
1960
+ field = _useField2[0],
1961
+ meta = _useField2[1];
1744
1962
  var _useActiveField = useActiveField(name),
1745
1963
  isFieldActive = _useActiveField.isFieldActive,
1746
1964
  setFieldActive = _useActiveField.setFieldActive;
@@ -1811,7 +2029,9 @@ var MultiSelect$1 = function MultiSelect(_ref2) {
1811
2029
  name = _ref2.name,
1812
2030
  selectedField = _ref2.selectedField,
1813
2031
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
1814
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
2032
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
2033
+ _ref2$required = _ref2.required,
2034
+ required = _ref2$required === void 0 ? false : _ref2$required;
1815
2035
  var _useTranslation2 = reactI18next.useTranslation(),
1816
2036
  t = _useTranslation2.t;
1817
2037
  var _useActiveField2 = useActiveField(name, {
@@ -1841,6 +2061,7 @@ var MultiSelect$1 = function MultiSelect(_ref2) {
1841
2061
  className: "space-y-3",
1842
2062
  children: /*#__PURE__*/jsxRuntime.jsx(Select$1, {
1843
2063
  name: name,
2064
+ required: required,
1844
2065
  isMulti: true,
1845
2066
  innerRef: ref,
1846
2067
  label: defaultLabel,
@@ -1864,10 +2085,9 @@ var Target$a = function Target(_ref) {
1864
2085
  var _useTranslation = reactI18next.useTranslation(),
1865
2086
  t = _useTranslation.t;
1866
2087
  var _useField = formik.useField(name),
1867
- _useField2 = _slicedToArray(_useField, 3),
1868
- field = _useField2[0];
1869
- _useField2[1];
1870
- var meta = _useField2[2];
2088
+ _useField2 = _slicedToArray(_useField, 2),
2089
+ field = _useField2[0],
2090
+ meta = _useField2[1];
1871
2091
  var _useActiveField = useActiveField(name),
1872
2092
  isFieldActive = _useActiveField.isFieldActive,
1873
2093
  setFieldActive = _useActiveField.setFieldActive;
@@ -1938,7 +2158,9 @@ var MultiSelectCheckbox$1 = function MultiSelectCheckbox(_ref2) {
1938
2158
  dropdownOptions = _ref2$dropdownOptions === void 0 ? [] : _ref2$dropdownOptions,
1939
2159
  name = _ref2.name,
1940
2160
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
1941
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
2161
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
2162
+ _ref2$required = _ref2.required,
2163
+ required = _ref2$required === void 0 ? false : _ref2$required;
1942
2164
  var _useTranslation2 = reactI18next.useTranslation(),
1943
2165
  t = _useTranslation2.t;
1944
2166
  var _useActiveField2 = useActiveField(name, {
@@ -1962,6 +2184,7 @@ var MultiSelectCheckbox$1 = function MultiSelectCheckbox(_ref2) {
1962
2184
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
1963
2185
  className: "space-y-3",
1964
2186
  children: [/*#__PURE__*/jsxRuntime.jsx(Label, {
2187
+ required: required,
1965
2188
  children: defaultLabel
1966
2189
  }), neetoCist.isNotEmpty(dropdownOptions) ? dropdownOptions.map(function (option) {
1967
2190
  return /*#__PURE__*/react.createElement(Checkbox, {
@@ -2050,6 +2273,7 @@ var NoteField = function NoteField(_ref2) {
2050
2273
  ref: ref,
2051
2274
  value: value,
2052
2275
  variables: variables,
2276
+ required: true,
2053
2277
  label: defaultLabel,
2054
2278
  onFocus: setFieldActive
2055
2279
  });
@@ -2115,7 +2339,9 @@ var RadioField$2 = function RadioField(_ref2) {
2115
2339
  _ref2$className = _ref2.className,
2116
2340
  className = _ref2$className === void 0 ? "" : _ref2$className,
2117
2341
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
2118
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
2342
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
2343
+ _ref2$required = _ref2.required,
2344
+ required = _ref2$required === void 0 ? false : _ref2$required;
2119
2345
  var _useTranslation2 = reactI18next.useTranslation(),
2120
2346
  t = _useTranslation2.t;
2121
2347
  var _useField3 = formik.useField(name),
@@ -2149,6 +2375,7 @@ var RadioField$2 = function RadioField(_ref2) {
2149
2375
  return neetoCist.isNotEmpty(options) ? /*#__PURE__*/jsxRuntime.jsx(Radio, {
2150
2376
  className: className,
2151
2377
  name: name,
2378
+ required: required,
2152
2379
  stacked: true,
2153
2380
  label: defaultLabel,
2154
2381
  value: selectedOption.value,
@@ -2208,8 +2435,8 @@ var formatErrorMessage = function formatErrorMessage(error) {
2208
2435
  };
2209
2436
 
2210
2437
  var _excluded$b = ["children"];
2211
- function ownKeys$l(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; }
2212
- function _objectSpread$l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$l(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$l(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2438
+ function ownKeys$m(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; }
2439
+ function _objectSpread$m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$m(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$m(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2213
2440
  var STYLES = {
2214
2441
  border: {
2215
2442
  "default": "1px solid rgb(var(--neeto-ui-gray-400))",
@@ -2221,8 +2448,8 @@ var STYLES = {
2221
2448
  }
2222
2449
  };
2223
2450
  var MultiValueRemove = function MultiValueRemove(props) {
2224
- return /*#__PURE__*/jsxRuntime.jsx(reactSelect.components.MultiValueRemove, _objectSpread$l(_objectSpread$l({}, props), {}, {
2225
- innerProps: _objectSpread$l(_objectSpread$l({}, props.innerProps), {}, _defineProperty({}, "data-cy", "".concat(dasherize(props.data.label), "-remove-icon"))),
2451
+ return /*#__PURE__*/jsxRuntime.jsx(reactSelect.components.MultiValueRemove, _objectSpread$m(_objectSpread$m({}, props), {}, {
2452
+ innerProps: _objectSpread$m(_objectSpread$m({}, props.innerProps), {}, _defineProperty({}, "data-cy", "".concat(dasherize(props.data.label), "-remove-icon"))),
2226
2453
  children: /*#__PURE__*/jsxRuntime.jsx(Close, {
2227
2454
  size: 16
2228
2455
  })
@@ -2242,8 +2469,8 @@ var ValueContainer = function ValueContainer(_ref) {
2242
2469
  firstChild = _children[0],
2243
2470
  rest = _children.slice(1);
2244
2471
  var shouldCollapse = !isFocused && value.length > visiblePhoneNumbersCount;
2245
- return /*#__PURE__*/jsxRuntime.jsxs(reactSelect.components.ValueContainer, _objectSpread$l(_objectSpread$l({}, props), {}, {
2246
- innerProps: _objectSpread$l(_objectSpread$l({}, props.innerProps), {}, _defineProperty({}, "data-cy", "multi-phone-number-input-container")),
2472
+ return /*#__PURE__*/jsxRuntime.jsxs(reactSelect.components.ValueContainer, _objectSpread$m(_objectSpread$m({}, props), {}, {
2473
+ innerProps: _objectSpread$m(_objectSpread$m({}, props.innerProps), {}, _defineProperty({}, "data-cy", "multi-phone-number-input-container")),
2247
2474
  children: [shouldCollapse ? firstChild.slice(0, visiblePhoneNumbersCount) : firstChild, shouldCollapse && /*#__PURE__*/jsxRuntime.jsx(Tag, {
2248
2475
  style: "secondary",
2249
2476
  label: t("neetoRules.labels.remainingItemsCount", {
@@ -2253,8 +2480,8 @@ var ValueContainer = function ValueContainer(_ref) {
2253
2480
  }));
2254
2481
  };
2255
2482
  var ClearIndicator = function ClearIndicator(props) {
2256
- return /*#__PURE__*/jsxRuntime.jsx(reactSelect.components.ClearIndicator, _objectSpread$l(_objectSpread$l({}, props), {}, {
2257
- innerProps: _objectSpread$l(_objectSpread$l({}, props.innerProps), {}, _defineProperty({}, "data-cy", "clear-all-button")),
2483
+ return /*#__PURE__*/jsxRuntime.jsx(reactSelect.components.ClearIndicator, _objectSpread$m(_objectSpread$m({}, props), {}, {
2484
+ innerProps: _objectSpread$m(_objectSpread$m({}, props.innerProps), {}, _defineProperty({}, "data-cy", "clear-all-button")),
2258
2485
  children: /*#__PURE__*/jsxRuntime.jsx(Close, {
2259
2486
  className: "cursor-pointer",
2260
2487
  size: 16
@@ -2272,7 +2499,7 @@ var CUSTOM_STYLES = {
2272
2499
  input: ramda.assoc("overflow", "hidden"),
2273
2500
  multiValue: function multiValue(styles, _ref2) {
2274
2501
  var valid = _ref2.data.valid;
2275
- return _objectSpread$l(_objectSpread$l({}, styles), {}, {
2502
+ return _objectSpread$m(_objectSpread$m({}, styles), {}, {
2276
2503
  border: valid ? STYLES.border["default"] : STYLES.border.error,
2277
2504
  color: valid ? STYLES.color["default"] : STYLES.color.error
2278
2505
  });
@@ -2286,8 +2513,8 @@ var CUSTOM_COMPONENTS = {
2286
2513
  };
2287
2514
 
2288
2515
  var _excluded$a = ["value", "onChange", "error", "onBlur", "onFocus"];
2289
- function ownKeys$k(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; }
2290
- function _objectSpread$k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$k(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2516
+ function ownKeys$l(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; }
2517
+ function _objectSpread$l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$l(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$l(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2291
2518
  var MultiPhoneNumberInput = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
2292
2519
  var _ref$value = _ref.value,
2293
2520
  value = _ref$value === void 0 ? [] : _ref$value,
@@ -2348,7 +2575,7 @@ var MultiPhoneNumberInput = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
2348
2575
  "data-cy": "".concat(dasherize(label), "-input-label"),
2349
2576
  children: label
2350
2577
  })
2351
- }), /*#__PURE__*/jsxRuntime.jsx(CreatableSelect, _objectSpread$k({
2578
+ }), /*#__PURE__*/jsxRuntime.jsx(CreatableSelect, _objectSpread$l({
2352
2579
  isMulti: true,
2353
2580
  required: true,
2354
2581
  classNamePrefix: "neeto-ui-react-select",
@@ -2359,7 +2586,7 @@ var MultiPhoneNumberInput = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
2359
2586
  className: classNames("neeto-ui-react-select__container neeto-ui-react-select__container--medium neeto-ui-email-input__select", {
2360
2587
  "neeto-ui-react-select__container--error": !!error
2361
2588
  }),
2362
- styles: _objectSpread$k(_objectSpread$k({}, CUSTOM_STYLES), {}, {
2589
+ styles: _objectSpread$l(_objectSpread$l({}, CUSTOM_STYLES), {}, {
2363
2590
  control: ramda.mergeLeft({
2364
2591
  maxHeight: "200px",
2365
2592
  overflowY: "auto"
@@ -2372,7 +2599,7 @@ var MultiPhoneNumberInput = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
2372
2599
  setIsFocused(true);
2373
2600
  _onFocus();
2374
2601
  }
2375
- }, _objectSpread$k({
2602
+ }, _objectSpread$l({
2376
2603
  inputValue: inputValue,
2377
2604
  isFocused: isFocused,
2378
2605
  onChange: onChange,
@@ -2432,6 +2659,8 @@ var PhoneNumberField = function PhoneNumberField(_ref) {
2432
2659
  });
2433
2660
  };
2434
2661
 
2662
+ function ownKeys$k(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; }
2663
+ function _objectSpread$k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$k(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2435
2664
  var Target$7 = function Target(_ref) {
2436
2665
  var name = _ref.name,
2437
2666
  _ref$separatorIndex = _ref.separatorIndex,
@@ -2503,11 +2732,29 @@ var SmsFields = function SmsFields(_ref2) {
2503
2732
  }),
2504
2733
  initialFocusRef = _useActiveField2.ref,
2505
2734
  setFieldActive = _useActiveField2.setFieldActive;
2735
+ var _useUtilityStore = useUtilityStore.useUtilityStore(function (store) {
2736
+ return {
2737
+ isSaveAsTemplateEnabled: store["isSaveAsTemplateEnabled"]
2738
+ };
2739
+ }, shallow.shallow),
2740
+ isSaveAsTemplateEnabled = _useUtilityStore.isSaveAsTemplateEnabled;
2741
+ var hasFieldChanged = useHasFieldChanged(name);
2506
2742
  var _useFormikContext = formik.useFormikContext(),
2507
2743
  setFieldValue = _useFormikContext.setFieldValue;
2508
- var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
2744
+ var templates = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates) || [];
2509
2745
  var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
2746
+ var shouldShowSaveAsTemplate = react.useCallback(function () {
2747
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2748
+ templateId = _ref3.templateId,
2749
+ body = _ref3.body;
2750
+ var template = neetoCist.findBy({
2751
+ id: templateId
2752
+ }, templates);
2753
+ return neetoCist.isPresent(body) && hasFieldChanged && (template === null || template === void 0 ? void 0 : template.body) !== body;
2754
+ }, [templates, hasFieldChanged]);
2755
+ var isSaveAsTemplateVisible = useResetSaveAsTemplateOnHide(name, isSaveAsTemplateEnabled ? shouldShowSaveAsTemplate : ramda.F);
2510
2756
  var handleTemplateChange = function handleTemplateChange(template) {
2757
+ setFieldValue("".concat(name, ".templateId"), template.id);
2511
2758
  setFieldValue("".concat(name, ".body"), template.body);
2512
2759
  setEditorContent(editorRef, template.body);
2513
2760
  };
@@ -2515,9 +2762,11 @@ var SmsFields = function SmsFields(_ref2) {
2515
2762
  if (isTemplateSelectionEnabled) return false;
2516
2763
  return field === "phoneNumbers" ? true : !showPhoneNumberInput;
2517
2764
  };
2765
+ var _ref4 = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.helpPopoverProps) || {},
2766
+ recipientFieldHelpPopoverProps = _ref4.recipientField;
2518
2767
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
2519
2768
  className: "w-full",
2520
- children: [showFieldSelection && /*#__PURE__*/react.createElement(SelectField$2, {
2769
+ children: [showFieldSelection && /*#__PURE__*/react.createElement(SelectField$2, _objectSpread$k({
2521
2770
  index: index,
2522
2771
  selectedField: selectedField,
2523
2772
  shouldAutoFocus: true,
@@ -2525,7 +2774,7 @@ var SmsFields = function SmsFields(_ref2) {
2525
2774
  dropdownOptions: fieldOptions,
2526
2775
  key: "".concat(name, ".value"),
2527
2776
  name: "".concat(name, ".value")
2528
- }), isTemplateSelectionEnabled && /*#__PURE__*/jsxRuntime.jsx(SelectTemplateField, {
2777
+ }, withHelpPopover(recipientFieldHelpPopoverProps))), isTemplateSelectionEnabled && /*#__PURE__*/jsxRuntime.jsx(SelectTemplateField, {
2529
2778
  initialFocusRef: initialFocusRef,
2530
2779
  selectedField: selectedField,
2531
2780
  templates: templates,
@@ -2546,6 +2795,9 @@ var SmsFields = function SmsFields(_ref2) {
2546
2795
  variables: selectedField === null || selectedField === void 0 ? void 0 : selectedField.variables,
2547
2796
  editorRef: isFirstFieldInForm("body") ? mergeRefs(editorRef, initialFocusRef) : editorRef,
2548
2797
  onFocus: setFieldActive
2798
+ }), isSaveAsTemplateVisible && /*#__PURE__*/jsxRuntime.jsx(SaveAsTemplate, {
2799
+ name: name,
2800
+ className: "mt-4"
2549
2801
  })]
2550
2802
  });
2551
2803
  };
@@ -2740,6 +2992,7 @@ var ActionSubItem = function ActionSubItem(_ref) {
2740
2992
  }) : /*#__PURE__*/jsxRuntime.jsx(RadioField$2, {
2741
2993
  index: index,
2742
2994
  selectedField: selectedField,
2995
+ required: true,
2743
2996
  shouldAutoFocus: true,
2744
2997
  name: "".concat(name, ".value"),
2745
2998
  options: valueOptions
@@ -2758,6 +3011,7 @@ var ActionSubItem = function ActionSubItem(_ref) {
2758
3011
  }) : /*#__PURE__*/jsxRuntime.jsx(SelectField$2, {
2759
3012
  index: index,
2760
3013
  selectedField: selectedField,
3014
+ required: true,
2761
3015
  shouldAutoFocus: true,
2762
3016
  dropdownOptions: valueOptions,
2763
3017
  name: "".concat(name, ".value")
@@ -2811,6 +3065,7 @@ var ActionSubItem = function ActionSubItem(_ref) {
2811
3065
  }) : /*#__PURE__*/jsxRuntime.jsx(MultiSelect$1, {
2812
3066
  index: index,
2813
3067
  selectedField: selectedField,
3068
+ required: true,
2814
3069
  shouldAutoFocus: true,
2815
3070
  dropdownOptions: valueOptions,
2816
3071
  name: "".concat(name, ".value")
@@ -2829,6 +3084,7 @@ var ActionSubItem = function ActionSubItem(_ref) {
2829
3084
  }) : /*#__PURE__*/jsxRuntime.jsx(MultiSelectCheckbox$1, {
2830
3085
  index: index,
2831
3086
  selectedField: selectedField,
3087
+ required: true,
2832
3088
  shouldAutoFocus: true,
2833
3089
  dropdownOptions: valueOptions,
2834
3090
  name: "".concat(name, ".value")
@@ -2847,6 +3103,7 @@ var ActionSubItem = function ActionSubItem(_ref) {
2847
3103
  index: index,
2848
3104
  name: name,
2849
3105
  selectedField: selectedField,
3106
+ required: true,
2850
3107
  shouldAutoFocus: true
2851
3108
  });
2852
3109
  }
@@ -2863,6 +3120,7 @@ var ActionSubItem = function ActionSubItem(_ref) {
2863
3120
  index: index,
2864
3121
  name: name,
2865
3122
  selectedField: selectedField,
3123
+ required: true,
2866
3124
  shouldAutoFocus: true
2867
3125
  });
2868
3126
  }
@@ -2880,6 +3138,7 @@ var ActionSubItem = function ActionSubItem(_ref) {
2880
3138
  }) : /*#__PURE__*/jsxRuntime.jsx(LongTextField, {
2881
3139
  index: index,
2882
3140
  selectedField: selectedField,
3141
+ required: true,
2883
3142
  shouldAutoFocus: true,
2884
3143
  defaultLabel: t("neetoRules.labels.body"),
2885
3144
  defaultSeparator: t("neetoRules.common.as"),
@@ -3042,7 +3301,9 @@ var DateField = function DateField(_ref2) {
3042
3301
  var name = _ref2.name,
3043
3302
  selectedField = _ref2.selectedField,
3044
3303
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
3045
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
3304
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
3305
+ _ref2$required = _ref2.required,
3306
+ required = _ref2$required === void 0 ? false : _ref2$required;
3046
3307
  var _useTranslation2 = reactI18next.useTranslation(),
3047
3308
  t = _useTranslation2.t;
3048
3309
  var _useField3 = formik.useField(name),
@@ -3066,6 +3327,7 @@ var DateField = function DateField(_ref2) {
3066
3327
  };
3067
3328
  return /*#__PURE__*/jsxRuntime.jsx(DatePicker, {
3068
3329
  ref: ref,
3330
+ required: required,
3069
3331
  defaultValue: field.value,
3070
3332
  error: meta.touched && meta.error,
3071
3333
  label: t("neetoRules.form.selectDate"),
@@ -3116,7 +3378,9 @@ var InputField$1 = function InputField(_ref2) {
3116
3378
  var name = _ref2.name,
3117
3379
  placeholder = _ref2.placeholder,
3118
3380
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
3119
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
3381
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
3382
+ _ref2$required = _ref2.required,
3383
+ required = _ref2$required === void 0 ? false : _ref2$required;
3120
3384
  var _useField3 = formik.useField(name),
3121
3385
  _useField4 = _slicedToArray(_useField3, 3),
3122
3386
  field = _useField4[0];
@@ -3131,6 +3395,7 @@ var InputField$1 = function InputField(_ref2) {
3131
3395
  name: name,
3132
3396
  placeholder: placeholder,
3133
3397
  ref: ref,
3398
+ required: required,
3134
3399
  label: placeholder,
3135
3400
  value: field.value || "",
3136
3401
  onFocus: setFieldActive,
@@ -3141,7 +3406,7 @@ var InputField$1 = function InputField(_ref2) {
3141
3406
  };
3142
3407
  InputField$1.Target = Target$5;
3143
3408
 
3144
- var _excluded$9 = ["name", "dropdownOptions", "shouldAutoFocus"];
3409
+ var _excluded$9 = ["name", "dropdownOptions", "shouldAutoFocus", "required"];
3145
3410
  function ownKeys$j(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; }
3146
3411
  function _objectSpread$j(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$j(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$j(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3147
3412
  var Target$4 = function Target(_ref) {
@@ -3208,6 +3473,8 @@ var MultiSelect = function MultiSelect(_ref2) {
3208
3473
  dropdownOptions = _ref2.dropdownOptions,
3209
3474
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
3210
3475
  shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
3476
+ _ref2$required = _ref2.required,
3477
+ required = _ref2$required === void 0 ? false : _ref2$required,
3211
3478
  otherProps = _objectWithoutProperties(_ref2, _excluded$9);
3212
3479
  var _useTranslation2 = reactI18next.useTranslation(),
3213
3480
  t = _useTranslation2.t;
@@ -3234,6 +3501,7 @@ var MultiSelect = function MultiSelect(_ref2) {
3234
3501
  className: "space-y-3",
3235
3502
  children: /*#__PURE__*/jsxRuntime.jsx(Select$1, _objectSpread$j({
3236
3503
  name: name,
3504
+ required: required,
3237
3505
  isMulti: true,
3238
3506
  innerRef: ref,
3239
3507
  label: t("neetoRules.labels.selectValues"),
@@ -3246,7 +3514,7 @@ var MultiSelect = function MultiSelect(_ref2) {
3246
3514
  };
3247
3515
  MultiSelect.Target = Target$4;
3248
3516
 
3249
- var _excluded$8 = ["name", "dropdownOptions", "shouldAutoFocus"];
3517
+ var _excluded$8 = ["name", "dropdownOptions", "shouldAutoFocus", "required"];
3250
3518
  function ownKeys$i(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; }
3251
3519
  function _objectSpread$i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$i(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3252
3520
  var Target$3 = function Target(_ref) {
@@ -3313,6 +3581,8 @@ var MultiSelectCheckbox = function MultiSelectCheckbox(_ref2) {
3313
3581
  dropdownOptions = _ref2.dropdownOptions,
3314
3582
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
3315
3583
  shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
3584
+ _ref2$required = _ref2.required,
3585
+ required = _ref2$required === void 0 ? false : _ref2$required,
3316
3586
  otherProps = _objectWithoutProperties(_ref2, _excluded$8);
3317
3587
  var _useTranslation2 = reactI18next.useTranslation(),
3318
3588
  t = _useTranslation2.t;
@@ -3337,6 +3607,7 @@ var MultiSelectCheckbox = function MultiSelectCheckbox(_ref2) {
3337
3607
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
3338
3608
  className: "space-y-3",
3339
3609
  children: [/*#__PURE__*/jsxRuntime.jsx(Label, {
3610
+ required: required,
3340
3611
  children: defaultLabel
3341
3612
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
3342
3613
  className: "space-y-3",
@@ -3457,7 +3728,9 @@ var Target$2 = function Target(_ref) {
3457
3728
  var MultiSelectCreate = function MultiSelectCreate(_ref2) {
3458
3729
  var name = _ref2.name,
3459
3730
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
3460
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
3731
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
3732
+ _ref2$required = _ref2.required,
3733
+ required = _ref2$required === void 0 ? false : _ref2$required;
3461
3734
  var _useTranslation2 = reactI18next.useTranslation(),
3462
3735
  t = _useTranslation2.t;
3463
3736
  var _useField3 = formik.useField(name),
@@ -3479,6 +3752,7 @@ var MultiSelectCreate = function MultiSelectCreate(_ref2) {
3479
3752
  };
3480
3753
  return /*#__PURE__*/jsxRuntime.jsx(Select$1, {
3481
3754
  name: name,
3755
+ required: required,
3482
3756
  isCreateable: true,
3483
3757
  isMulti: true,
3484
3758
  className: "mt-4 w-full",
@@ -3494,7 +3768,7 @@ var MultiSelectCreate = function MultiSelectCreate(_ref2) {
3494
3768
  MultiSelectCreate.Target = Target$2;
3495
3769
 
3496
3770
  var _excluded$7 = ["name", "options", "placeholder", "onClick"],
3497
- _excluded2 = ["name", "options", "handleOnChange", "shouldAutoFocus", "showLabel"];
3771
+ _excluded2 = ["name", "options", "handleOnChange", "shouldAutoFocus", "showLabel", "required"];
3498
3772
  function ownKeys$h(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; }
3499
3773
  function _objectSpread$h(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$h(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$h(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3500
3774
  var Target$1 = function Target(_ref) {
@@ -3547,6 +3821,8 @@ var RadioField$1 = function RadioField(_ref2) {
3547
3821
  shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
3548
3822
  _ref2$showLabel = _ref2.showLabel,
3549
3823
  showLabel = _ref2$showLabel === void 0 ? true : _ref2$showLabel,
3824
+ _ref2$required = _ref2.required,
3825
+ required = _ref2$required === void 0 ? false : _ref2$required,
3550
3826
  otherProps = _objectWithoutProperties(_ref2, _excluded2);
3551
3827
  var _useTranslation2 = reactI18next.useTranslation(),
3552
3828
  t = _useTranslation2.t;
@@ -3574,6 +3850,7 @@ var RadioField$1 = function RadioField(_ref2) {
3574
3850
  };
3575
3851
  return /*#__PURE__*/jsxRuntime.jsx(Radio$1, _objectSpread$h(_objectSpread$h({
3576
3852
  ref: ref,
3853
+ required: required,
3577
3854
  stacked: true,
3578
3855
  label: showLabel && t("neetoRules.labels.selectValue"),
3579
3856
  value: selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value,
@@ -3640,7 +3917,9 @@ var SelectField$1 = function SelectField(_ref2) {
3640
3917
  placeholder = _ref2.placeholder,
3641
3918
  handleSelect = _ref2.handleSelect,
3642
3919
  _ref2$shouldAutoFocus = _ref2.shouldAutoFocus,
3643
- shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus;
3920
+ shouldAutoFocus = _ref2$shouldAutoFocus === void 0 ? false : _ref2$shouldAutoFocus,
3921
+ _ref2$required = _ref2.required,
3922
+ required = _ref2$required === void 0 ? false : _ref2$required;
3644
3923
  var _useTranslation2 = reactI18next.useTranslation(),
3645
3924
  t = _useTranslation2.t;
3646
3925
  var _useField3 = formik.useField(name),
@@ -3671,6 +3950,7 @@ var SelectField$1 = function SelectField(_ref2) {
3671
3950
  };
3672
3951
  return /*#__PURE__*/jsxRuntime.jsx(Select$1, {
3673
3952
  name: name,
3953
+ required: required,
3674
3954
  innerRef: ref,
3675
3955
  label: placeholder || t("neetoRules.labels.selectValue"),
3676
3956
  options: dropdownOptions,
@@ -3780,6 +4060,7 @@ var ValueField = function ValueField(_ref) {
3780
4060
  onClick: onClick,
3781
4061
  name: "".concat(name, ".value")
3782
4062
  }) : /*#__PURE__*/jsxRuntime.jsx(InputField$1, {
4063
+ required: true,
3783
4064
  name: "".concat(name, ".value"),
3784
4065
  placeholder: t("neetoRules.common.value")
3785
4066
  });
@@ -3792,6 +4073,7 @@ var ValueField = function ValueField(_ref) {
3792
4073
  name: "".concat(name, ".value")
3793
4074
  }) : /*#__PURE__*/jsxRuntime.jsx(LongTextField, {
3794
4075
  index: index,
4076
+ required: true,
3795
4077
  defaultLabel: t("neetoRules.labels.text"),
3796
4078
  name: "".concat(name, ".value")
3797
4079
  });
@@ -3804,6 +4086,7 @@ var ValueField = function ValueField(_ref) {
3804
4086
  }) : /*#__PURE__*/jsxRuntime.jsx(RadioField$1, {
3805
4087
  index: index,
3806
4088
  options: options,
4089
+ required: true,
3807
4090
  name: "".concat(name, ".value")
3808
4091
  });
3809
4092
  }
@@ -3814,6 +4097,7 @@ var ValueField = function ValueField(_ref) {
3814
4097
  name: "".concat(name, ".value")
3815
4098
  }) : /*#__PURE__*/jsxRuntime.jsx(SelectField$1, {
3816
4099
  index: index,
4100
+ required: true,
3817
4101
  dropdownOptions: options,
3818
4102
  name: "".concat(name, ".value")
3819
4103
  });
@@ -3824,6 +4108,7 @@ var ValueField = function ValueField(_ref) {
3824
4108
  dropdownOptions: options,
3825
4109
  name: "".concat(name, ".values")
3826
4110
  }) : /*#__PURE__*/jsxRuntime.jsx(MultiSelect, {
4111
+ required: true,
3827
4112
  dropdownOptions: options,
3828
4113
  name: "".concat(name, ".values")
3829
4114
  });
@@ -3834,6 +4119,7 @@ var ValueField = function ValueField(_ref) {
3834
4119
  dropdownOptions: options,
3835
4120
  name: "".concat(name, ".values")
3836
4121
  }) : /*#__PURE__*/jsxRuntime.jsx(MultiSelectCheckbox, {
4122
+ required: true,
3837
4123
  dropdownOptions: options,
3838
4124
  name: "".concat(name, ".values")
3839
4125
  });
@@ -3843,6 +4129,7 @@ var ValueField = function ValueField(_ref) {
3843
4129
  onClick: onClick,
3844
4130
  name: "".concat(name, ".values")
3845
4131
  }) : /*#__PURE__*/jsxRuntime.jsx(MultiSelectCreate, {
4132
+ required: true,
3846
4133
  name: "".concat(name, ".values")
3847
4134
  });
3848
4135
  }
@@ -3851,6 +4138,7 @@ var ValueField = function ValueField(_ref) {
3851
4138
  onClick: onClick,
3852
4139
  name: "".concat(name, ".value")
3853
4140
  }) : /*#__PURE__*/jsxRuntime.jsx(DateField, {
4141
+ required: true,
3854
4142
  name: "".concat(name, ".value"),
3855
4143
  selectedField: field
3856
4144
  });
@@ -3960,6 +4248,7 @@ var VerbAndValuePanel = function VerbAndValuePanel() {
3960
4248
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
3961
4249
  className: "flex flex-col space-y-4",
3962
4250
  children: [/*#__PURE__*/jsxRuntime.jsx(SelectField$1, {
4251
+ required: true,
3963
4252
  shouldAutoFocus: true,
3964
4253
  dropdownOptions: verbOptions,
3965
4254
  handleSelect: handleVerbChange,
@@ -4432,7 +4721,7 @@ var getConditionsSchema = function getConditionsSchema(element) {
4432
4721
  if (selectedCondition !== null && selectedCondition !== void 0 && (_selectedCondition$no = selectedCondition.noValueForVerbs) !== null && _selectedCondition$no !== void 0 && _selectedCondition$no.includes(verb)) {
4433
4722
  return yup__namespace.object();
4434
4723
  }
4435
- if ([constants.CONDITION_VALUE_TYPES.date, constants.CONDITION_VALUE_TYPES.radio, constants.CONDITION_VALUE_TYPES.select].includes(type)) {
4724
+ if ([constants.CONDITION_VALUE_TYPES.date, constants.CONDITION_VALUE_TYPES.radio, constants.CONDITION_VALUE_TYPES.dropdown, constants.CONDITION_VALUE_TYPES.select].includes(type)) {
4436
4725
  return yup__namespace.object().shape({
4437
4726
  value: yup__namespace.string().required(i18next.t("neetoRules.validations.required.value"))
4438
4727
  });
@@ -4527,7 +4816,8 @@ var getActionsSchema = function getActionsSchema(element, customData) {
4527
4816
  body: yup__namespace.string().test("body", i18next.t("neetoRules.validations.required.body"), function (value) {
4528
4817
  return !utils$1.isEditorEmpty(value);
4529
4818
  }),
4530
- value: selectedAction.type === ACTION_TYPES.emailTo ? yup__namespace.string().required(i18next.t("neetoRules.validations.required.value")) : schema
4819
+ value: selectedAction.type === ACTION_TYPES.emailTo ? yup__namespace.string().required(i18next.t("neetoRules.validations.required.value")) : schema,
4820
+ templateName: TEMPLATE_NAME_VALIDATION_SCHEMA
4531
4821
  });
4532
4822
  } else if ([ACTION_TYPES.sms, ACTION_TYPES.smsToNumbers, ACTION_TYPES.smsTo].includes(selectedAction === null || selectedAction === void 0 ? void 0 : selectedAction.type)) {
4533
4823
  return yup__namespace.object({
@@ -4539,7 +4829,8 @@ var getActionsSchema = function getActionsSchema(element, customData) {
4539
4829
  body: yup__namespace.string().test("body", i18next.t("neetoRules.validations.required.body"), function (value) {
4540
4830
  return !utils$1.isEditorEmpty(value);
4541
4831
  }),
4542
- value: selectedAction.type === ACTION_TYPES.smsTo ? yup__namespace.string().required(i18next.t("neetoRules.validations.required.value")) : schema
4832
+ value: selectedAction.type === ACTION_TYPES.smsTo ? yup__namespace.string().required(i18next.t("neetoRules.validations.required.value")) : schema,
4833
+ templateName: TEMPLATE_NAME_VALIDATION_SCHEMA
4543
4834
  });
4544
4835
  } else if (ACTION_TYPES.sendToApi === (selectedAction === null || selectedAction === void 0 ? void 0 : selectedAction.type)) {
4545
4836
  return yup__namespace.object({
@@ -4567,7 +4858,8 @@ var getActionsSchema = function getActionsSchema(element, customData) {
4567
4858
  message: i18next.t("neetoRules.validations.invalidJsonBody")
4568
4859
  });
4569
4860
  }
4570
- })
4861
+ }),
4862
+ templateName: TEMPLATE_NAME_VALIDATION_SCHEMA
4571
4863
  });
4572
4864
  } else if (ACTION_TYPES.multiSelect === (selectedAction === null || selectedAction === void 0 ? void 0 : selectedAction.type)) {
4573
4865
  return yup__namespace.object({
@@ -4743,6 +5035,12 @@ var PANEL_TYPE_CONFIG_MAP = _defineProperty(_defineProperty(_defineProperty(_def
4743
5035
  component: ActionSubItemPanel,
4744
5036
  data: {}
4745
5037
  });
5038
+ var TEMPLATE_NAME_VALIDATION_SCHEMA = yup__namespace.string().when("shouldSaveAsTemplate", {
5039
+ is: true,
5040
+ then: yup__namespace.string().trim().required(i18next.t("neetoRules.validations.required.entity", {
5041
+ entity: i18next.t("neetoRules.labels.templateName")
5042
+ }))
5043
+ });
4746
5044
 
4747
5045
  function ownKeys$d(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; }
4748
5046
  function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -4927,7 +5225,9 @@ var Actions = function Actions(_ref) {
4927
5225
  _ref$routeToSlackInte = _ref.routeToSlackIntegration,
4928
5226
  routeToSlackIntegration = _ref$routeToSlackInte === void 0 ? "" : _ref$routeToSlackInte,
4929
5227
  _ref$openPanel = _ref.openPanel,
4930
- openPanel = _ref$openPanel === void 0 ? false : _ref$openPanel;
5228
+ openPanel = _ref$openPanel === void 0 ? false : _ref$openPanel,
5229
+ _ref$isSaveAsTemplate = _ref.isSaveAsTemplateEnabled,
5230
+ isSaveAsTemplateEnabled = _ref$isSaveAsTemplate === void 0 ? false : _ref$isSaveAsTemplate;
4931
5231
  var _useFormikContext = formik.useFormikContext(),
4932
5232
  values = _useFormikContext.values,
4933
5233
  setFieldValue = _useFormikContext.setFieldValue;
@@ -4939,12 +5239,17 @@ var Actions = function Actions(_ref) {
4939
5239
  setShouldOpenPanel = _useState2[1];
4940
5240
  var _useUtilityStore = useUtilityStore.useUtilityStore(function (store) {
4941
5241
  return {
4942
- resetPanelState: store["resetPanelState"]
5242
+ resetPanelState: store["resetPanelState"],
5243
+ setIsSaveAsTemplateEnabled: store["setIsSaveAsTemplateEnabled"]
4943
5244
  };
4944
5245
  }, shallow.shallow),
4945
- resetPanelState = _useUtilityStore.resetPanelState;
5246
+ resetPanelState = _useUtilityStore.resetPanelState,
5247
+ setIsSaveAsTemplateEnabled = _useUtilityStore.setIsSaveAsTemplateEnabled;
4946
5248
  var elementProps = data[name] || {};
4947
5249
  var actions = values[name].value || [];
5250
+ react.useEffect(function () {
5251
+ setIsSaveAsTemplateEnabled(isSaveAsTemplateEnabled);
5252
+ }, [isSaveAsTemplateEnabled]);
4948
5253
  var showButton = react.useMemo(function () {
4949
5254
  var _actions;
4950
5255
  return !!((_actions = actions[(actions === null || actions === void 0 ? void 0 : actions.length) - 1]) !== null && _actions !== void 0 && _actions.name) && elementProps.actionOptions.length !== actions.length && showAddButton;
@@ -6092,10 +6397,6 @@ var Form = function Form(_ref) {
6092
6397
  data: initialValues,
6093
6398
  label: t("neetoRules.common.name"),
6094
6399
  name: "name"
6095
- }), /*#__PURE__*/jsxRuntime.jsx(TextareaField, {
6096
- data: initialValues,
6097
- label: t("neetoRules.common.description"),
6098
- name: "description"
6099
6400
  }), showStatusSwitch && /*#__PURE__*/jsxRuntime.jsx(Status, {}), typeof _children === "function" ? _children === null || _children === void 0 ? void 0 : _children(_objectSpread$1({
6100
6401
  values: values,
6101
6402
  formattedValues: buildPayload(data, values),