@bigbinary/neeto-rules-frontend 0.5.0 → 0.6.1
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 +2 -2
- package/app/javascript/src/translations/en.json +10 -3
- package/dist/index.cjs.js +284 -96
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +289 -101
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
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
|
|
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
|
-
"
|
|
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.
|
|
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"))
|
|
@@ -731,7 +740,8 @@ var NeetoRules$2 = function NeetoRules(_ref) {
|
|
|
731
740
|
className: "mr-2",
|
|
732
741
|
htmlType: "submit",
|
|
733
742
|
disabled: isSubmitting || !dirty,
|
|
734
|
-
onClick: function onClick() {}
|
|
743
|
+
onClick: function onClick() {},
|
|
744
|
+
"data-cy": "form-submit-button"
|
|
735
745
|
}
|
|
736
746
|
})));
|
|
737
747
|
});
|
|
@@ -1218,6 +1228,247 @@ var LongTextField = function LongTextField(_ref) {
|
|
|
1218
1228
|
}))));
|
|
1219
1229
|
};
|
|
1220
1230
|
|
|
1231
|
+
function _extends$1() {
|
|
1232
|
+
_extends$1 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1233
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
1234
|
+
var source = arguments[i];
|
|
1235
|
+
for (var key in source) {
|
|
1236
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1237
|
+
target[key] = source[key];
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
return target;
|
|
1242
|
+
};
|
|
1243
|
+
return _extends$1.apply(this, arguments);
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1246
|
+
var _excluded$f = ["initialFocusRef", "name", "label"];
|
|
1247
|
+
var InputField$2 = function InputField(_ref) {
|
|
1248
|
+
var initialFocusRef = _ref.initialFocusRef,
|
|
1249
|
+
name = _ref.name,
|
|
1250
|
+
label = _ref.label,
|
|
1251
|
+
otherProps = _objectWithoutProperties$1(_ref, _excluded$f);
|
|
1252
|
+
var _useField = formik.useField(name),
|
|
1253
|
+
_useField2 = _slicedToArray$1(_useField, 2),
|
|
1254
|
+
field = _useField2[0],
|
|
1255
|
+
meta = _useField2[1];
|
|
1256
|
+
return /*#__PURE__*/React__default["default"].createElement(neetoui.Input, _extends$1({
|
|
1257
|
+
label: label,
|
|
1258
|
+
type: "text"
|
|
1259
|
+
}, field, {
|
|
1260
|
+
error: meta.touched ? meta.error : "",
|
|
1261
|
+
ref: initialFocusRef
|
|
1262
|
+
}, otherProps));
|
|
1263
|
+
};
|
|
1264
|
+
|
|
1265
|
+
var ADDITIONAL_DATA_INITIAL_VALUE = {
|
|
1266
|
+
key: "",
|
|
1267
|
+
value: ""
|
|
1268
|
+
};
|
|
1269
|
+
var SAMPLE_ENDPOINT = "https://example.com";
|
|
1270
|
+
|
|
1271
|
+
var addOption = function addOption(arrayHelpers) {
|
|
1272
|
+
return arrayHelpers.push(ADDITIONAL_DATA_INITIAL_VALUE);
|
|
1273
|
+
};
|
|
1274
|
+
var removeOption = function removeOption(_ref) {
|
|
1275
|
+
var arrayHelpers = _ref.arrayHelpers,
|
|
1276
|
+
index = _ref.index,
|
|
1277
|
+
data = _ref.data;
|
|
1278
|
+
arrayHelpers.remove(index);
|
|
1279
|
+
if (data.length === 1) {
|
|
1280
|
+
addOption(arrayHelpers);
|
|
1281
|
+
}
|
|
1282
|
+
};
|
|
1283
|
+
var hasKeyOrValue = ramda.whereAny({
|
|
1284
|
+
key: neetoCist.isNotEmpty,
|
|
1285
|
+
value: neetoCist.isNotEmpty
|
|
1286
|
+
});
|
|
1287
|
+
|
|
1288
|
+
var setEditorContent = function setEditorContent(ref, content) {
|
|
1289
|
+
if (!ref.current) return;
|
|
1290
|
+
ref.current.editor.commands.setContent(content);
|
|
1291
|
+
};
|
|
1292
|
+
|
|
1293
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
1294
|
+
var dotPath = ramda.useWith(ramda.path, [ramda.split(".")]);
|
|
1295
|
+
|
|
1296
|
+
var KeyValuePairsField = reactUtils.withT(function (_ref) {
|
|
1297
|
+
var t = _ref.t,
|
|
1298
|
+
name = _ref.name,
|
|
1299
|
+
_ref$label = _ref.label,
|
|
1300
|
+
label = _ref$label === void 0 ? "" : _ref$label;
|
|
1301
|
+
return /*#__PURE__*/React__default["default"].createElement(formik.FieldArray, {
|
|
1302
|
+
name: name
|
|
1303
|
+
}, function (arrayHelpers) {
|
|
1304
|
+
var data = dotPath(name, arrayHelpers.form.values);
|
|
1305
|
+
var showDeleteButton = data.length > 1 || hasKeyOrValue(data[0]);
|
|
1306
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1307
|
+
className: "space-y-3"
|
|
1308
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Label, null, label), data.map(function (_, index) {
|
|
1309
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1310
|
+
className: "flex h-8 space-x-3",
|
|
1311
|
+
key: index
|
|
1312
|
+
}, /*#__PURE__*/React__default["default"].createElement(InputField$2, {
|
|
1313
|
+
className: "w-2/5",
|
|
1314
|
+
name: "".concat(name, ".").concat(index, ".key"),
|
|
1315
|
+
placeholder: t("neetoRules.labels.key")
|
|
1316
|
+
}), /*#__PURE__*/React__default["default"].createElement(InputField$2, {
|
|
1317
|
+
className: "w-3/5",
|
|
1318
|
+
name: "".concat(name, ".").concat(index, ".value"),
|
|
1319
|
+
placeholder: t("neetoRules.labels.value"),
|
|
1320
|
+
suffix: showDeleteButton && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
1321
|
+
icon: neetoIcons.Delete,
|
|
1322
|
+
size: "small",
|
|
1323
|
+
style: "text",
|
|
1324
|
+
onClick: function onClick() {
|
|
1325
|
+
return removeOption({
|
|
1326
|
+
arrayHelpers: arrayHelpers,
|
|
1327
|
+
index: index,
|
|
1328
|
+
data: data
|
|
1329
|
+
});
|
|
1330
|
+
}
|
|
1331
|
+
})
|
|
1332
|
+
}));
|
|
1333
|
+
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
1334
|
+
label: t("neetoRules.labels.addKeyValuePair"),
|
|
1335
|
+
style: "secondary",
|
|
1336
|
+
onClick: function onClick() {
|
|
1337
|
+
return addOption(arrayHelpers);
|
|
1338
|
+
}
|
|
1339
|
+
}));
|
|
1340
|
+
});
|
|
1341
|
+
});
|
|
1342
|
+
|
|
1343
|
+
var SelectTemplateField = function SelectTemplateField(_ref) {
|
|
1344
|
+
var selectedField = _ref.selectedField,
|
|
1345
|
+
templates = _ref.templates,
|
|
1346
|
+
onChange = _ref.onChange,
|
|
1347
|
+
initialFocusRef = _ref.initialFocusRef;
|
|
1348
|
+
var _useStateWithDependen = reactUtils.useStateWithDependency(null, [selectedField]),
|
|
1349
|
+
_useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
|
|
1350
|
+
selectedTemplate = _useStateWithDependen2[0],
|
|
1351
|
+
setSelectedTemplate = _useStateWithDependen2[1];
|
|
1352
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
1353
|
+
t = _useTranslation.t;
|
|
1354
|
+
var handleTemplateChange = function handleTemplateChange(option) {
|
|
1355
|
+
setSelectedTemplate(option);
|
|
1356
|
+
if (!option) return;
|
|
1357
|
+
var template = neetoCist.findBy({
|
|
1358
|
+
id: option.value
|
|
1359
|
+
}, templates);
|
|
1360
|
+
onChange === null || onChange === void 0 || onChange(template);
|
|
1361
|
+
};
|
|
1362
|
+
return /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
|
|
1363
|
+
isClearable: true,
|
|
1364
|
+
isSearchable: true,
|
|
1365
|
+
className: "mb-4",
|
|
1366
|
+
innerRef: initialFocusRef,
|
|
1367
|
+
label: t("neetoRules.labels.template"),
|
|
1368
|
+
options: neetoCist.renameKeys({
|
|
1369
|
+
name: "label",
|
|
1370
|
+
id: "value"
|
|
1371
|
+
}, templates),
|
|
1372
|
+
placeholder: t("neetoRules.placeholders.selectTemplate"),
|
|
1373
|
+
value: selectedTemplate,
|
|
1374
|
+
onChange: handleTemplateChange
|
|
1375
|
+
});
|
|
1376
|
+
};
|
|
1377
|
+
|
|
1378
|
+
var ApiFields = function ApiFields(_ref) {
|
|
1379
|
+
var _errors$actions, _touched$actions, _selectedField$separa;
|
|
1380
|
+
var name = _ref.name,
|
|
1381
|
+
selectedField = _ref.selectedField,
|
|
1382
|
+
index = _ref.index;
|
|
1383
|
+
var _useFormikContext = formik.useFormikContext(),
|
|
1384
|
+
errors = _useFormikContext.errors,
|
|
1385
|
+
touched = _useFormikContext.touched,
|
|
1386
|
+
setFieldValue = _useFormikContext.setFieldValue;
|
|
1387
|
+
var _useState = React.useState(false),
|
|
1388
|
+
_useState2 = _slicedToArray$1(_useState, 2),
|
|
1389
|
+
showPane = _useState2[0],
|
|
1390
|
+
setShowPane = _useState2[1];
|
|
1391
|
+
var initialFocusRef = React.useRef(null);
|
|
1392
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
1393
|
+
t = _useTranslation.t;
|
|
1394
|
+
useOnButtonPressed(initialFocusRef, function () {
|
|
1395
|
+
return setShowPane(false);
|
|
1396
|
+
});
|
|
1397
|
+
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]);
|
|
1398
|
+
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");
|
|
1399
|
+
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.dataPlaceholder) || t("neetoRules.common.data");
|
|
1400
|
+
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
1401
|
+
var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
|
|
1402
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
1403
|
+
setFieldValue("".concat(name, ".endpoint"), template.endpoint);
|
|
1404
|
+
setFieldValue("".concat(name, ".additionalData"), template.additionalData);
|
|
1405
|
+
};
|
|
1406
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
1407
|
+
className: "neeto-ui-text-gray-700 mt-1",
|
|
1408
|
+
"data-cy": "api-action-separator-text",
|
|
1409
|
+
style: "h5",
|
|
1410
|
+
weight: "normal"
|
|
1411
|
+
}, separator), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
1412
|
+
"data-cy": "api-action-button",
|
|
1413
|
+
style: "h5",
|
|
1414
|
+
weight: "semibold",
|
|
1415
|
+
className: classNames__default["default"]("hover:neeto-ui-text-primary-800 neeto-ui-text-gray-800 mt-1 cursor-pointer underline", {
|
|
1416
|
+
"neeto-ui-text-primary-800": showPane,
|
|
1417
|
+
"neeto-ui-text-error-500": isValid
|
|
1418
|
+
}),
|
|
1419
|
+
onClick: function onClick() {
|
|
1420
|
+
return setShowPane(function (prevState) {
|
|
1421
|
+
return !prevState;
|
|
1422
|
+
});
|
|
1423
|
+
}
|
|
1424
|
+
}, defaultLabel.toLowerCase()), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane, {
|
|
1425
|
+
initialFocusRef: initialFocusRef,
|
|
1426
|
+
isOpen: showPane,
|
|
1427
|
+
size: "large",
|
|
1428
|
+
onClose: function onClose() {
|
|
1429
|
+
return setShowPane(false);
|
|
1430
|
+
}
|
|
1431
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
|
|
1432
|
+
className: "neeto-ui-text-gray-800 cursor-pointer",
|
|
1433
|
+
"data-cy": "api-action-pane-header-title",
|
|
1434
|
+
style: "h3",
|
|
1435
|
+
weight: "semibold"
|
|
1436
|
+
}, defaultLabel)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1437
|
+
className: "w-full"
|
|
1438
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(SelectTemplateField, {
|
|
1439
|
+
initialFocusRef: initialFocusRef,
|
|
1440
|
+
selectedField: selectedField,
|
|
1441
|
+
templates: templates,
|
|
1442
|
+
onChange: handleTemplateChange
|
|
1443
|
+
}), /*#__PURE__*/React__default["default"].createElement(InputField$2, {
|
|
1444
|
+
required: true,
|
|
1445
|
+
className: "mb-4",
|
|
1446
|
+
"data-cy": "api-action-endpoint-text-field",
|
|
1447
|
+
label: t("neetoRules.labels.endpoint"),
|
|
1448
|
+
name: "".concat(name, ".endpoint"),
|
|
1449
|
+
placeholder: SAMPLE_ENDPOINT,
|
|
1450
|
+
initialFocusRef: isTemplateSelectionEnabled ? null : initialFocusRef
|
|
1451
|
+
}), /*#__PURE__*/React__default["default"].createElement(KeyValuePairsField, {
|
|
1452
|
+
label: t("neetoRules.labels.additionalData"),
|
|
1453
|
+
name: "".concat(name, ".additionalData")
|
|
1454
|
+
}))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
|
|
1455
|
+
className: "flex items-center space-x-2"
|
|
1456
|
+
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
1457
|
+
"data-cy": "save-changes-button",
|
|
1458
|
+
label: t("neetoRules.common.saveChange"),
|
|
1459
|
+
onClick: function onClick() {
|
|
1460
|
+
return setShowPane(false);
|
|
1461
|
+
}
|
|
1462
|
+
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
1463
|
+
"data-cy": "cancel-button",
|
|
1464
|
+
label: t("neetoRules.buttons.cancel"),
|
|
1465
|
+
style: "text",
|
|
1466
|
+
onClick: function onClick() {
|
|
1467
|
+
return setShowPane(false);
|
|
1468
|
+
}
|
|
1469
|
+
}))));
|
|
1470
|
+
};
|
|
1471
|
+
|
|
1221
1472
|
var CustomAction = function CustomAction(_ref) {
|
|
1222
1473
|
var _errors$actions, _touched$actions, _selectedField$separa;
|
|
1223
1474
|
var ActionComponent = _ref.ActionComponent,
|
|
@@ -1541,22 +1792,7 @@ var DropdownField$1 = function DropdownField(_ref) {
|
|
|
1541
1792
|
}, i18next.t("neetoRules.common.noOptions")))));
|
|
1542
1793
|
};
|
|
1543
1794
|
|
|
1544
|
-
|
|
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"];
|
|
1795
|
+
var _excluded$e = ["autoFocus", "name", "value", "label", "variables", "addons", "editorRef", "defaults"];
|
|
1560
1796
|
var EditorAction = function EditorAction(_ref) {
|
|
1561
1797
|
var autoFocus = _ref.autoFocus,
|
|
1562
1798
|
name = _ref.name,
|
|
@@ -1570,7 +1806,7 @@ var EditorAction = function EditorAction(_ref) {
|
|
|
1570
1806
|
_ref$editorRef = _ref.editorRef,
|
|
1571
1807
|
editorRef = _ref$editorRef === void 0 ? null : _ref$editorRef,
|
|
1572
1808
|
defaults = _ref.defaults,
|
|
1573
|
-
otherProps = _objectWithoutProperties$1(_ref, _excluded$
|
|
1809
|
+
otherProps = _objectWithoutProperties$1(_ref, _excluded$e);
|
|
1574
1810
|
var _useFormikContext = formik.useFormikContext(),
|
|
1575
1811
|
setFieldValue = _useFormikContext.setFieldValue;
|
|
1576
1812
|
var _useState = React.useState(value),
|
|
@@ -1621,30 +1857,6 @@ var EmailIdFields = function EmailIdFields(_ref) {
|
|
|
1621
1857
|
}));
|
|
1622
1858
|
};
|
|
1623
1859
|
|
|
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
1860
|
var EmailFields = function EmailFields(_ref) {
|
|
1649
1861
|
var _errors$actions, _touched$actions, _selectedField$separa, _action$metadata;
|
|
1650
1862
|
var _ref$isEmailIdField = _ref.isEmailIdField,
|
|
@@ -1663,10 +1875,6 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1663
1875
|
_useState2 = _slicedToArray$1(_useState, 2),
|
|
1664
1876
|
showPane = _useState2[0],
|
|
1665
1877
|
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
1878
|
var initialFocusRef = React.useRef(null);
|
|
1671
1879
|
var editorRef = React.useRef(null);
|
|
1672
1880
|
var _useTranslation = reactI18next.useTranslation(),
|
|
@@ -1679,12 +1887,7 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1679
1887
|
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.emailPlaceholder) || t("neetoRules.common.email");
|
|
1680
1888
|
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
1681
1889
|
var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
|
|
1682
|
-
var handleTemplateChange = function handleTemplateChange(
|
|
1683
|
-
setSelectedTemplate(option);
|
|
1684
|
-
if (!option) return;
|
|
1685
|
-
var template = neetoCist.findBy({
|
|
1686
|
-
id: option.value
|
|
1687
|
-
}, templates);
|
|
1890
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
1688
1891
|
setFieldValue("".concat(name, ".body"), template.body);
|
|
1689
1892
|
setEditorContent(editorRef, template.body);
|
|
1690
1893
|
if (selectedField.hideSubject) return;
|
|
@@ -1735,18 +1938,10 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1735
1938
|
weight: "semibold"
|
|
1736
1939
|
}, defaultLabel)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1737
1940
|
className: "w-full"
|
|
1738
|
-
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
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,
|
|
1941
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(SelectTemplateField, {
|
|
1942
|
+
initialFocusRef: initialFocusRef,
|
|
1943
|
+
selectedField: selectedField,
|
|
1944
|
+
templates: templates,
|
|
1750
1945
|
onChange: handleTemplateChange
|
|
1751
1946
|
}), isEmailIdField && /*#__PURE__*/React__default["default"].createElement(EmailIdFields, {
|
|
1752
1947
|
emails: emails,
|
|
@@ -1768,7 +1963,7 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1768
1963
|
}))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
|
|
1769
1964
|
className: "flex items-center space-x-2"
|
|
1770
1965
|
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
1771
|
-
"data-cy": "save-changes-button",
|
|
1966
|
+
"data-cy": "email-action-save-changes-button",
|
|
1772
1967
|
label: t("neetoRules.common.saveChange"),
|
|
1773
1968
|
onClick: function onClick() {
|
|
1774
1969
|
return setShowPane(false);
|
|
@@ -10125,7 +10320,7 @@ var PHONE_NUMBER_SEPARATION_REGEX = /[^\s,]+/g;
|
|
|
10125
10320
|
var FLEXIBLE_PHONE_NUMBER_REGEX = /[0-9+, ]+/g;
|
|
10126
10321
|
var PHONE_NUMBER_VALIDATION_SCHEMA = yup__namespace.string().required(i18next.t("neetoRules.validations.required.entity", {
|
|
10127
10322
|
entity: i18next.t("neetoRules.common.phoneNumber")
|
|
10128
|
-
})).test("testPhoneNumber", i18next.t("neetoRules.validations.
|
|
10323
|
+
})).test("testPhoneNumber", i18next.t("neetoRules.validations.invalidPhoneNumber"), PhoneNumber.isPhoneNumberValid);
|
|
10129
10324
|
var CUSTOM_STYLES = {
|
|
10130
10325
|
input: ramda.assoc("overflow", "hidden"),
|
|
10131
10326
|
multiValue: function multiValue(styles, _ref2) {
|
|
@@ -10296,10 +10491,6 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10296
10491
|
_useState2 = _slicedToArray$1(_useState, 2),
|
|
10297
10492
|
showPane = _useState2[0],
|
|
10298
10493
|
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
10494
|
var initialFocusRef = React.useRef(null);
|
|
10304
10495
|
var editorRef = React.useRef(null);
|
|
10305
10496
|
var _useTranslation = reactI18next.useTranslation(),
|
|
@@ -10312,12 +10503,7 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10312
10503
|
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.smsPlaceholder) || t("neetoRules.common.sms");
|
|
10313
10504
|
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
10314
10505
|
var isTemplateSelectionEnabled = neetoCist.isPresent(templates);
|
|
10315
|
-
var handleTemplateChange = function handleTemplateChange(
|
|
10316
|
-
setSelectedTemplate(option);
|
|
10317
|
-
if (!option) return;
|
|
10318
|
-
var template = neetoCist.findBy({
|
|
10319
|
-
id: option.value
|
|
10320
|
-
}, templates);
|
|
10506
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
10321
10507
|
setFieldValue("".concat(name, ".body"), template.body);
|
|
10322
10508
|
setEditorContent(editorRef, template.body);
|
|
10323
10509
|
};
|
|
@@ -10359,18 +10545,10 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10359
10545
|
weight: "semibold"
|
|
10360
10546
|
}, defaultLabel)), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
10361
10547
|
className: "w-full"
|
|
10362
|
-
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(
|
|
10363
|
-
|
|
10364
|
-
|
|
10365
|
-
|
|
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,
|
|
10548
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default["default"].createElement(SelectTemplateField, {
|
|
10549
|
+
initialFocusRef: initialFocusRef,
|
|
10550
|
+
selectedField: selectedField,
|
|
10551
|
+
templates: templates,
|
|
10374
10552
|
onChange: handleTemplateChange
|
|
10375
10553
|
}), showPhoneNumberInput && /*#__PURE__*/React__default["default"].createElement(PhoneNumberField, {
|
|
10376
10554
|
phoneNumbers: phoneNumbers,
|
|
@@ -10484,6 +10662,14 @@ var ActionSubItems = function ActionSubItems(_ref) {
|
|
|
10484
10662
|
key: name
|
|
10485
10663
|
}));
|
|
10486
10664
|
}
|
|
10665
|
+
if ((selectedField === null || selectedField === void 0 ? void 0 : selectedField.type) === ACTION_TYPES.sendToApi) {
|
|
10666
|
+
return /*#__PURE__*/React__default["default"].createElement(ApiFields, {
|
|
10667
|
+
index: index,
|
|
10668
|
+
name: name,
|
|
10669
|
+
selectedField: selectedField,
|
|
10670
|
+
key: name
|
|
10671
|
+
});
|
|
10672
|
+
}
|
|
10487
10673
|
if ((selectedField === null || selectedField === void 0 ? void 0 : selectedField.type) === ACTION_TYPES.dropdown) {
|
|
10488
10674
|
return /*#__PURE__*/React__default["default"].createElement(DropdownField$1, {
|
|
10489
10675
|
index: index,
|
|
@@ -10815,7 +11001,7 @@ var Actions = function Actions(_ref) {
|
|
|
10815
11001
|
return arrayHelpers.push(DEFAULT_RULE_ACTION);
|
|
10816
11002
|
}
|
|
10817
11003
|
}), actions.length > 1 && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
10818
|
-
"data-cy": "delete-action-button",
|
|
11004
|
+
"data-cy": "delete-action-button-".concat(index),
|
|
10819
11005
|
icon: neetoIcons.Delete,
|
|
10820
11006
|
size: 24,
|
|
10821
11007
|
style: "icon",
|
|
@@ -11963,6 +12149,8 @@ var Conditions = function Conditions(_ref) {
|
|
|
11963
12149
|
setValue = _useField2[2].setValue;
|
|
11964
12150
|
var _useFormikContext = formik.useFormikContext(),
|
|
11965
12151
|
setFieldValue = _useFormikContext.setFieldValue;
|
|
12152
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
12153
|
+
t = _useTranslation.t;
|
|
11966
12154
|
var elementProps = data[name] || {};
|
|
11967
12155
|
var conditions = ((_field$value = field.value) === null || _field$value === void 0 ? void 0 : _field$value.value) || [];
|
|
11968
12156
|
var handleAddCondition = function handleAddCondition(arrayHelpers, logicOperation) {
|
|
@@ -12022,19 +12210,19 @@ var Conditions = function Conditions(_ref) {
|
|
|
12022
12210
|
size: 24,
|
|
12023
12211
|
style: "icon",
|
|
12024
12212
|
tooltipProps: {
|
|
12025
|
-
content:
|
|
12213
|
+
content: t("neetoRules.form.addCondition"),
|
|
12026
12214
|
position: "top"
|
|
12027
12215
|
},
|
|
12028
12216
|
onClick: function onClick() {
|
|
12029
12217
|
return handleAddCondition(arrayHelpers, condition.joinType);
|
|
12030
12218
|
}
|
|
12031
12219
|
}), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
12032
|
-
"data-cy": "delete-condition-button",
|
|
12220
|
+
"data-cy": "delete-condition-button-".concat(index),
|
|
12033
12221
|
icon: neetoIcons.Delete,
|
|
12034
12222
|
size: 24,
|
|
12035
12223
|
style: "icon",
|
|
12036
12224
|
tooltipProps: {
|
|
12037
|
-
content:
|
|
12225
|
+
content: t("neetoRules.common.delete"),
|
|
12038
12226
|
position: "top"
|
|
12039
12227
|
},
|
|
12040
12228
|
onClick: function onClick() {
|
|
@@ -12044,7 +12232,7 @@ var Conditions = function Conditions(_ref) {
|
|
|
12044
12232
|
}), ramda.isEmpty(conditions) && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
12045
12233
|
className: "neeto-ui-text-gray-600 mr-auto",
|
|
12046
12234
|
"data-cy": "add-condition-button",
|
|
12047
|
-
label:
|
|
12235
|
+
label: t("neetoRules.form.addCondition"),
|
|
12048
12236
|
style: "text",
|
|
12049
12237
|
onClick: function onClick() {
|
|
12050
12238
|
return handleAddCondition(arrayHelpers, OPERATORS$1.or);
|
|
@@ -12053,7 +12241,7 @@ var Conditions = function Conditions(_ref) {
|
|
|
12053
12241
|
className: "mt-2",
|
|
12054
12242
|
"data-cy": "preview-callback-button",
|
|
12055
12243
|
icon: neetoIcons.Eye,
|
|
12056
|
-
label:
|
|
12244
|
+
label: t("neetoRules.common.preview"),
|
|
12057
12245
|
style: "secondary",
|
|
12058
12246
|
onClick: function onClick() {
|
|
12059
12247
|
return previewCallback(conditions);
|