@bigbinary/neeto-rules-frontend 0.5.0 → 0.6.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.
package/README.md CHANGED
@@ -496,7 +496,7 @@ const initialProps = {
496
496
  {
497
497
  value: "add_tags",
498
498
  label: "Add Tags",
499
- type: "multiSelect", // Types : emailToIds, emailTo, email, dropdown, list, multiSelect, note, date, text, textarea, decimal, number, regex, longText, sms, smsToNumbers, smsTo
499
+ type: "multiSelect", // Types : emailToIds, emailTo, email, dropdown, list, multiSelect, note, date, text, textarea, decimal, number, regex, longText, sms, smsToNumbers, smsTo, sendToApi
500
500
  hideSeparator: true,
501
501
  placeholder: "Select tags",
502
502
  dropdownOptions: [
@@ -562,7 +562,7 @@ neetoRulesFrontend allows to pass custom action components from host application
562
562
 
563
563
  #### 2.10 Custom message templates
564
564
 
565
- neetoRulesFrontend allows to pass predefined email and SMS templates from host application. This enables to use templates created using neeto-message-templates-nano. Below is an example for custom message template which is being sent by neeto-form in action options.
565
+ neetoRulesFrontend allows to pass predefined email, SMS and API templates from host application. This enables to use templates created using neeto-message-templates-nano. Below is an example for custom message template which is being sent by neeto-form in action options.
566
566
 
567
567
  ```jsx
568
568
  {
@@ -31,7 +31,8 @@
31
31
  "viewLess": "View less",
32
32
  "sms": "SMS",
33
33
  "phoneNumber": "Phone number",
34
- "phoneNumbers": "Phone numbers"
34
+ "phoneNumbers": "Phone numbers",
35
+ "data": "Data"
35
36
  },
36
37
  "form": {
37
38
  "noEvents": "A rule without events will run hourly.",
@@ -135,7 +136,12 @@
135
136
  "text": "Text",
136
137
  "ruleSummary": "Automation rule summary",
137
138
  "template": "Template",
138
- "remainingItemsCount": "{{count}} more"
139
+ "remainingItemsCount": "{{count}} more",
140
+ "endpoint": "Endpoint",
141
+ "key": "Key",
142
+ "value": "Value",
143
+ "addKeyValuePair": "Add new key value pair",
144
+ "additionalData": "Additional data"
139
145
  },
140
146
  "placeholders": {
141
147
  "if": "If",
@@ -189,7 +195,8 @@
189
195
  "invalidChannel": "Could not connect to the channel, please select other options.",
190
196
  "errorInIntegration": "Could not connect to Slack! Please check the integration or remove this action otherwise the automation rule will not be able to function as intended."
191
197
  },
192
- "inValidPhoneNumber": "Phone number is invalid"
198
+ "invalidPhoneNumber": "Phone number is invalid",
199
+ "invalidUrlEntity": "{{entity}} must be a valid URL"
193
200
  },
194
201
  "conditionVerbs": {
195
202
  "is": "Is",
package/dist/index.cjs.js CHANGED
@@ -270,7 +270,8 @@ var ACTION_TYPES = {
270
270
  longText: "longText",
271
271
  sms: "sms",
272
272
  smsToNumbers: "smsToNumbers",
273
- smsTo: "smsTo"
273
+ smsTo: "smsTo",
274
+ sendToApi: "sendToApi"
274
275
  };
275
276
  var LIST_FIELD_TOOLTIP_PROPS = {
276
277
  save: {
@@ -483,7 +484,7 @@ var getActionsSchema = function getActionsSchema(element, customData) {
483
484
  return yup__namespace.object({
484
485
  phoneNumbers: selectedAction.type === ACTION_TYPES.smsToNumbers ? yup__namespace.array().required(i18next.t("neetoRules.validations.required.entity", {
485
486
  entity: i18next.t("neetoRules.common.phoneNumber")
486
- })).of(yup__namespace.string().test("testPhoneNumber", i18next.t("neetoRules.validations.inValidPhoneNumber"), function (value) {
487
+ })).of(yup__namespace.string().test("testPhoneNumber", i18next.t("neetoRules.validations.invalidPhoneNumber"), function (value) {
487
488
  return PhoneNumber.isPhoneNumberValid(value);
488
489
  })) : schema,
489
490
  body: yup__namespace.string().test("body", i18next.t("neetoRules.validations.required.body"), function (value) {
@@ -491,6 +492,14 @@ var getActionsSchema = function getActionsSchema(element, customData) {
491
492
  }),
492
493
  value: selectedAction.type === ACTION_TYPES.smsTo ? yup__namespace.string().required(i18next.t("neetoRules.validations.required.value")) : schema
493
494
  });
495
+ } else if (ACTION_TYPES.sendToApi === (selectedAction === null || selectedAction === void 0 ? void 0 : selectedAction.type)) {
496
+ return yup__namespace.object({
497
+ endpoint: yup__namespace.string().url(i18next.t("neetoRules.validations.invalidUrlEntity", {
498
+ entity: i18next.t("neetoRules.labels.endpoint")
499
+ })).required(i18next.t("neetoRules.validations.required.entity", {
500
+ entity: i18next.t("neetoRules.labels.endpoint")
501
+ }))
502
+ });
494
503
  } else if (ACTION_TYPES.multiSelect === (selectedAction === null || selectedAction === void 0 ? void 0 : selectedAction.type)) {
495
504
  return yup__namespace.object({
496
505
  value: yup__namespace.array().min(1, i18next.t("neetoRules.validations.atLeastOneValue")).required(i18next.t("neetoRules.validations.atLeastOneValue"))
@@ -1218,6 +1227,247 @@ var LongTextField = function LongTextField(_ref) {
1218
1227
  }))));
1219
1228
  };
1220
1229
 
1230
+ function _extends$1() {
1231
+ _extends$1 = Object.assign ? Object.assign.bind() : function (target) {
1232
+ for (var i = 1; i < arguments.length; i++) {
1233
+ var source = arguments[i];
1234
+ for (var key in source) {
1235
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
1236
+ target[key] = source[key];
1237
+ }
1238
+ }
1239
+ }
1240
+ return target;
1241
+ };
1242
+ return _extends$1.apply(this, arguments);
1243
+ }
1244
+
1245
+ var _excluded$f = ["initialFocusRef", "name", "label"];
1246
+ var InputField$2 = function InputField(_ref) {
1247
+ var initialFocusRef = _ref.initialFocusRef,
1248
+ name = _ref.name,
1249
+ label = _ref.label,
1250
+ otherProps = _objectWithoutProperties$1(_ref, _excluded$f);
1251
+ var _useField = formik.useField(name),
1252
+ _useField2 = _slicedToArray$1(_useField, 2),
1253
+ field = _useField2[0],
1254
+ meta = _useField2[1];
1255
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Input, _extends$1({
1256
+ label: label,
1257
+ type: "text"
1258
+ }, field, {
1259
+ error: meta.touched ? meta.error : "",
1260
+ ref: initialFocusRef
1261
+ }, otherProps));
1262
+ };
1263
+
1264
+ var ADDITIONAL_DATA_INITIAL_VALUE = {
1265
+ key: "",
1266
+ value: ""
1267
+ };
1268
+ var SAMPLE_ENDPOINT = "https://example.com";
1269
+
1270
+ var addOption = function addOption(arrayHelpers) {
1271
+ return arrayHelpers.push(ADDITIONAL_DATA_INITIAL_VALUE);
1272
+ };
1273
+ var removeOption = function removeOption(_ref) {
1274
+ var arrayHelpers = _ref.arrayHelpers,
1275
+ index = _ref.index,
1276
+ data = _ref.data;
1277
+ arrayHelpers.remove(index);
1278
+ if (data.length === 1) {
1279
+ addOption(arrayHelpers);
1280
+ }
1281
+ };
1282
+ var hasKeyOrValue = ramda.whereAny({
1283
+ key: neetoCist.isNotEmpty,
1284
+ value: neetoCist.isNotEmpty
1285
+ });
1286
+
1287
+ var setEditorContent = function setEditorContent(ref, content) {
1288
+ if (!ref.current) return;
1289
+ ref.current.editor.commands.setContent(content);
1290
+ };
1291
+
1292
+ // eslint-disable-next-line react-hooks/rules-of-hooks
1293
+ var dotPath = ramda.useWith(ramda.path, [ramda.split(".")]);
1294
+
1295
+ var KeyValuePairsField = reactUtils.withT(function (_ref) {
1296
+ var t = _ref.t,
1297
+ name = _ref.name,
1298
+ _ref$label = _ref.label,
1299
+ label = _ref$label === void 0 ? "" : _ref$label;
1300
+ return /*#__PURE__*/React__default["default"].createElement(formik.FieldArray, {
1301
+ name: name
1302
+ }, function (arrayHelpers) {
1303
+ var data = dotPath(name, arrayHelpers.form.values);
1304
+ var showDeleteButton = data.length > 1 || hasKeyOrValue(data[0]);
1305
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1306
+ className: "space-y-3"
1307
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, label), data.map(function (_, index) {
1308
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1309
+ className: "flex h-8 space-x-3",
1310
+ key: index
1311
+ }, /*#__PURE__*/React__default["default"].createElement(InputField$2, {
1312
+ className: "w-2/5",
1313
+ name: "".concat(name, ".").concat(index, ".key"),
1314
+ placeholder: t("neetoRules.labels.key")
1315
+ }), /*#__PURE__*/React__default["default"].createElement(InputField$2, {
1316
+ className: "w-3/5",
1317
+ name: "".concat(name, ".").concat(index, ".value"),
1318
+ placeholder: t("neetoRules.labels.value"),
1319
+ suffix: showDeleteButton && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1320
+ icon: neetoIcons.Delete,
1321
+ size: "small",
1322
+ style: "text",
1323
+ onClick: function onClick() {
1324
+ return removeOption({
1325
+ arrayHelpers: arrayHelpers,
1326
+ index: index,
1327
+ data: data
1328
+ });
1329
+ }
1330
+ })
1331
+ }));
1332
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1333
+ label: t("neetoRules.labels.addKeyValuePair"),
1334
+ style: "secondary",
1335
+ onClick: function onClick() {
1336
+ return addOption(arrayHelpers);
1337
+ }
1338
+ }));
1339
+ });
1340
+ });
1341
+
1342
+ var SelectTemplateField = function SelectTemplateField(_ref) {
1343
+ var selectedField = _ref.selectedField,
1344
+ templates = _ref.templates,
1345
+ onChange = _ref.onChange,
1346
+ initialFocusRef = _ref.initialFocusRef;
1347
+ var _useStateWithDependen = reactUtils.useStateWithDependency(null, [selectedField]),
1348
+ _useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
1349
+ selectedTemplate = _useStateWithDependen2[0],
1350
+ setSelectedTemplate = _useStateWithDependen2[1];
1351
+ var _useTranslation = reactI18next.useTranslation(),
1352
+ t = _useTranslation.t;
1353
+ var handleTemplateChange = function handleTemplateChange(option) {
1354
+ setSelectedTemplate(option);
1355
+ if (!option) return;
1356
+ var template = neetoCist.findBy({
1357
+ id: option.value
1358
+ }, templates);
1359
+ onChange === null || onChange === void 0 || onChange(template);
1360
+ };
1361
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
1362
+ isClearable: true,
1363
+ isSearchable: true,
1364
+ className: "mb-4",
1365
+ innerRef: initialFocusRef,
1366
+ label: t("neetoRules.labels.template"),
1367
+ options: neetoCist.renameKeys({
1368
+ name: "label",
1369
+ id: "value"
1370
+ }, templates),
1371
+ placeholder: t("neetoRules.placeholders.selectTemplate"),
1372
+ value: selectedTemplate,
1373
+ onChange: handleTemplateChange
1374
+ });
1375
+ };
1376
+
1377
+ var ApiFields = function ApiFields(_ref) {
1378
+ var _errors$actions, _touched$actions, _selectedField$separa;
1379
+ var name = _ref.name,
1380
+ selectedField = _ref.selectedField,
1381
+ index = _ref.index;
1382
+ var _useFormikContext = formik.useFormikContext(),
1383
+ errors = _useFormikContext.errors,
1384
+ touched = _useFormikContext.touched,
1385
+ setFieldValue = _useFormikContext.setFieldValue;
1386
+ var _useState = React.useState(false),
1387
+ _useState2 = _slicedToArray$1(_useState, 2),
1388
+ showPane = _useState2[0],
1389
+ setShowPane = _useState2[1];
1390
+ var initialFocusRef = React.useRef(null);
1391
+ var _useTranslation = reactI18next.useTranslation(),
1392
+ t = _useTranslation.t;
1393
+ useOnButtonPressed(initialFocusRef, function () {
1394
+ return setShowPane(false);
1395
+ });
1396
+ var isValid = errors.actions && ramda.isNotNil((_errors$actions = errors.actions) === null || _errors$actions === void 0 || (_errors$actions = _errors$actions.value) === null || _errors$actions === void 0 ? void 0 : _errors$actions[index]) && ramda.isNotNil((_touched$actions = touched.actions) === null || _touched$actions === void 0 || (_touched$actions = _touched$actions.value) === null || _touched$actions === void 0 ? void 0 : _touched$actions[index]);
1397
+ var separator = (selectedField === null || selectedField === void 0 || (_selectedField$separa = selectedField.separator) === null || _selectedField$separa === void 0 ? void 0 : _selectedField$separa.toLowerCase()) || t("neetoRules.common.as");
1398
+ var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.dataPlaceholder) || t("neetoRules.common.data");
1399
+ var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
1400
+ var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
1401
+ var handleTemplateChange = function handleTemplateChange(template) {
1402
+ setFieldValue("".concat(name, ".endpoint"), template.endpoint);
1403
+ setFieldValue("".concat(name, ".additionalData"), template.additionalData);
1404
+ };
1405
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1406
+ className: "neeto-ui-text-gray-700 mt-1",
1407
+ "data-cy": "api-action-separator-text",
1408
+ style: "h5",
1409
+ weight: "normal"
1410
+ }, separator), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1411
+ "data-cy": "api-action-button",
1412
+ style: "h5",
1413
+ weight: "semibold",
1414
+ className: classNames__default["default"]("hover:neeto-ui-text-primary-800 neeto-ui-text-gray-800 mt-1 cursor-pointer underline", {
1415
+ "neeto-ui-text-primary-800": showPane,
1416
+ "neeto-ui-text-error-500": isValid
1417
+ }),
1418
+ onClick: function onClick() {
1419
+ return setShowPane(function (prevState) {
1420
+ return !prevState;
1421
+ });
1422
+ }
1423
+ }, defaultLabel.toLowerCase()), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
1424
+ initialFocusRef: initialFocusRef,
1425
+ isOpen: showPane,
1426
+ size: "large",
1427
+ onClose: function onClose() {
1428
+ return setShowPane(false);
1429
+ }
1430
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1431
+ className: "neeto-ui-text-gray-800 cursor-pointer",
1432
+ "data-cy": "api-action-pane-header-title",
1433
+ style: "h3",
1434
+ weight: "semibold"
1435
+ }, defaultLabel)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
1436
+ className: "w-full"
1437
+ }, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(SelectTemplateField, {
1438
+ initialFocusRef: initialFocusRef,
1439
+ selectedField: selectedField,
1440
+ templates: templates,
1441
+ onChange: handleTemplateChange
1442
+ }), /*#__PURE__*/React__default["default"].createElement(InputField$2, {
1443
+ required: true,
1444
+ className: "mb-4",
1445
+ "data-cy": "api-action-endpoint-text-field",
1446
+ label: t("neetoRules.labels.endpoint"),
1447
+ name: "".concat(name, ".endpoint"),
1448
+ placeholder: SAMPLE_ENDPOINT,
1449
+ initialFocusRef: isTemplateSelectionEnabled ? null : initialFocusRef
1450
+ }), /*#__PURE__*/React__default["default"].createElement(KeyValuePairsField, {
1451
+ label: t("neetoRules.labels.additionalData"),
1452
+ name: "".concat(name, ".additionalData")
1453
+ }))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
1454
+ className: "flex items-center space-x-2"
1455
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1456
+ "data-cy": "save-changes-button",
1457
+ label: t("neetoRules.common.saveChange"),
1458
+ onClick: function onClick() {
1459
+ return setShowPane(false);
1460
+ }
1461
+ }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1462
+ "data-cy": "cancel-button",
1463
+ label: t("neetoRules.buttons.cancel"),
1464
+ style: "text",
1465
+ onClick: function onClick() {
1466
+ return setShowPane(false);
1467
+ }
1468
+ }))));
1469
+ };
1470
+
1221
1471
  var CustomAction = function CustomAction(_ref) {
1222
1472
  var _errors$actions, _touched$actions, _selectedField$separa;
1223
1473
  var ActionComponent = _ref.ActionComponent,
@@ -1541,22 +1791,7 @@ var DropdownField$1 = function DropdownField(_ref) {
1541
1791
  }, i18next.t("neetoRules.common.noOptions")))));
1542
1792
  };
1543
1793
 
1544
- function _extends$1() {
1545
- _extends$1 = Object.assign ? Object.assign.bind() : function (target) {
1546
- for (var i = 1; i < arguments.length; i++) {
1547
- var source = arguments[i];
1548
- for (var key in source) {
1549
- if (Object.prototype.hasOwnProperty.call(source, key)) {
1550
- target[key] = source[key];
1551
- }
1552
- }
1553
- }
1554
- return target;
1555
- };
1556
- return _extends$1.apply(this, arguments);
1557
- }
1558
-
1559
- var _excluded$f = ["autoFocus", "name", "value", "label", "variables", "addons", "editorRef", "defaults"];
1794
+ var _excluded$e = ["autoFocus", "name", "value", "label", "variables", "addons", "editorRef", "defaults"];
1560
1795
  var EditorAction = function EditorAction(_ref) {
1561
1796
  var autoFocus = _ref.autoFocus,
1562
1797
  name = _ref.name,
@@ -1570,7 +1805,7 @@ var EditorAction = function EditorAction(_ref) {
1570
1805
  _ref$editorRef = _ref.editorRef,
1571
1806
  editorRef = _ref$editorRef === void 0 ? null : _ref$editorRef,
1572
1807
  defaults = _ref.defaults,
1573
- otherProps = _objectWithoutProperties$1(_ref, _excluded$f);
1808
+ otherProps = _objectWithoutProperties$1(_ref, _excluded$e);
1574
1809
  var _useFormikContext = formik.useFormikContext(),
1575
1810
  setFieldValue = _useFormikContext.setFieldValue;
1576
1811
  var _useState = React.useState(value),
@@ -1621,30 +1856,6 @@ var EmailIdFields = function EmailIdFields(_ref) {
1621
1856
  }));
1622
1857
  };
1623
1858
 
1624
- var _excluded$e = ["initialFocusRef", "name", "label"];
1625
- var InputField$2 = function InputField(_ref) {
1626
- var initialFocusRef = _ref.initialFocusRef,
1627
- name = _ref.name,
1628
- label = _ref.label,
1629
- otherProps = _objectWithoutProperties$1(_ref, _excluded$e);
1630
- var _useField = formik.useField(name),
1631
- _useField2 = _slicedToArray$1(_useField, 2),
1632
- field = _useField2[0],
1633
- meta = _useField2[1];
1634
- return /*#__PURE__*/React__default["default"].createElement(neetoui.Input, _extends$1({
1635
- label: label,
1636
- type: "text"
1637
- }, field, {
1638
- error: meta.touched ? meta.error : "",
1639
- ref: initialFocusRef
1640
- }, otherProps));
1641
- };
1642
-
1643
- var setEditorContent = function setEditorContent(ref, content) {
1644
- if (!ref.current) return;
1645
- ref.current.editor.commands.setContent(content);
1646
- };
1647
-
1648
1859
  var EmailFields = function EmailFields(_ref) {
1649
1860
  var _errors$actions, _touched$actions, _selectedField$separa, _action$metadata;
1650
1861
  var _ref$isEmailIdField = _ref.isEmailIdField,
@@ -1663,10 +1874,6 @@ var EmailFields = function EmailFields(_ref) {
1663
1874
  _useState2 = _slicedToArray$1(_useState, 2),
1664
1875
  showPane = _useState2[0],
1665
1876
  setShowPane = _useState2[1];
1666
- var _useStateWithDependen = reactUtils.useStateWithDependency(null, [selectedField]),
1667
- _useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
1668
- selectedTemplate = _useStateWithDependen2[0],
1669
- setSelectedTemplate = _useStateWithDependen2[1];
1670
1877
  var initialFocusRef = React.useRef(null);
1671
1878
  var editorRef = React.useRef(null);
1672
1879
  var _useTranslation = reactI18next.useTranslation(),
@@ -1679,12 +1886,7 @@ var EmailFields = function EmailFields(_ref) {
1679
1886
  var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.emailPlaceholder) || t("neetoRules.common.email");
1680
1887
  var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
1681
1888
  var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
1682
- var handleTemplateChange = function handleTemplateChange(option) {
1683
- setSelectedTemplate(option);
1684
- if (!option) return;
1685
- var template = neetoCist.findBy({
1686
- id: option.value
1687
- }, templates);
1889
+ var handleTemplateChange = function handleTemplateChange(template) {
1688
1890
  setFieldValue("".concat(name, ".body"), template.body);
1689
1891
  setEditorContent(editorRef, template.body);
1690
1892
  if (selectedField.hideSubject) return;
@@ -1735,18 +1937,10 @@ var EmailFields = function EmailFields(_ref) {
1735
1937
  weight: "semibold"
1736
1938
  }, defaultLabel)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
1737
1939
  className: "w-full"
1738
- }, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
1739
- isClearable: true,
1740
- isSearchable: true,
1741
- className: "mb-4",
1742
- innerRef: initialFocusRef,
1743
- label: t("neetoRules.labels.template"),
1744
- options: neetoCist.renameKeys({
1745
- name: "label",
1746
- id: "value"
1747
- }, templates),
1748
- placeholder: t("neetoRules.placeholders.selectTemplate"),
1749
- value: selectedTemplate,
1940
+ }, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(SelectTemplateField, {
1941
+ initialFocusRef: initialFocusRef,
1942
+ selectedField: selectedField,
1943
+ templates: templates,
1750
1944
  onChange: handleTemplateChange
1751
1945
  }), isEmailIdField && /*#__PURE__*/React__default["default"].createElement(EmailIdFields, {
1752
1946
  emails: emails,
@@ -10125,7 +10319,7 @@ var PHONE_NUMBER_SEPARATION_REGEX = /[^\s,]+/g;
10125
10319
  var FLEXIBLE_PHONE_NUMBER_REGEX = /[0-9+, ]+/g;
10126
10320
  var PHONE_NUMBER_VALIDATION_SCHEMA = yup__namespace.string().required(i18next.t("neetoRules.validations.required.entity", {
10127
10321
  entity: i18next.t("neetoRules.common.phoneNumber")
10128
- })).test("testPhoneNumber", i18next.t("neetoRules.validations.inValidPhoneNumber"), PhoneNumber.isPhoneNumberValid);
10322
+ })).test("testPhoneNumber", i18next.t("neetoRules.validations.invalidPhoneNumber"), PhoneNumber.isPhoneNumberValid);
10129
10323
  var CUSTOM_STYLES = {
10130
10324
  input: ramda.assoc("overflow", "hidden"),
10131
10325
  multiValue: function multiValue(styles, _ref2) {
@@ -10296,10 +10490,6 @@ var SmsFields = function SmsFields(_ref) {
10296
10490
  _useState2 = _slicedToArray$1(_useState, 2),
10297
10491
  showPane = _useState2[0],
10298
10492
  setShowPane = _useState2[1];
10299
- var _useStateWithDependen = reactUtils.useStateWithDependency(null, [selectedField]),
10300
- _useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
10301
- selectedTemplate = _useStateWithDependen2[0],
10302
- setSelectedTemplate = _useStateWithDependen2[1];
10303
10493
  var initialFocusRef = React.useRef(null);
10304
10494
  var editorRef = React.useRef(null);
10305
10495
  var _useTranslation = reactI18next.useTranslation(),
@@ -10312,12 +10502,7 @@ var SmsFields = function SmsFields(_ref) {
10312
10502
  var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.smsPlaceholder) || t("neetoRules.common.sms");
10313
10503
  var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
10314
10504
  var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
10315
- var handleTemplateChange = function handleTemplateChange(option) {
10316
- setSelectedTemplate(option);
10317
- if (!option) return;
10318
- var template = neetoCist.findBy({
10319
- id: option.value
10320
- }, templates);
10505
+ var handleTemplateChange = function handleTemplateChange(template) {
10321
10506
  setFieldValue("".concat(name, ".body"), template.body);
10322
10507
  setEditorContent(editorRef, template.body);
10323
10508
  };
@@ -10359,18 +10544,10 @@ var SmsFields = function SmsFields(_ref) {
10359
10544
  weight: "semibold"
10360
10545
  }, defaultLabel)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
10361
10546
  className: "w-full"
10362
- }, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
10363
- isClearable: true,
10364
- isSearchable: true,
10365
- className: "mb-4",
10366
- innerRef: initialFocusRef,
10367
- label: t("neetoRules.labels.template"),
10368
- options: neetoCist.renameKeys({
10369
- name: "label",
10370
- id: "value"
10371
- }, templates),
10372
- placeholder: t("neetoRules.placeholders.selectTemplate"),
10373
- value: selectedTemplate,
10547
+ }, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(SelectTemplateField, {
10548
+ initialFocusRef: initialFocusRef,
10549
+ selectedField: selectedField,
10550
+ templates: templates,
10374
10551
  onChange: handleTemplateChange
10375
10552
  }), showPhoneNumberInput && /*#__PURE__*/React__default["default"].createElement(PhoneNumberField, {
10376
10553
  phoneNumbers: phoneNumbers,
@@ -10484,6 +10661,14 @@ var ActionSubItems = function ActionSubItems(_ref) {
10484
10661
  key: name
10485
10662
  }));
10486
10663
  }
10664
+ if ((selectedField === null || selectedField === void 0 ? void 0 : selectedField.type) === ACTION_TYPES.sendToApi) {
10665
+ return /*#__PURE__*/React__default["default"].createElement(ApiFields, {
10666
+ index: index,
10667
+ name: name,
10668
+ selectedField: selectedField,
10669
+ key: name
10670
+ });
10671
+ }
10487
10672
  if ((selectedField === null || selectedField === void 0 ? void 0 : selectedField.type) === ACTION_TYPES.dropdown) {
10488
10673
  return /*#__PURE__*/React__default["default"].createElement(DropdownField$1, {
10489
10674
  index: index,