@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/dist/index.js
CHANGED
|
@@ -4,19 +4,19 @@ import { BrowserRouter } from 'react-router-dom';
|
|
|
4
4
|
import { shallow } from 'zustand/shallow';
|
|
5
5
|
import classNames$1 from 'classnames';
|
|
6
6
|
import { useFormikContext, Formik, Form, useField, FieldArray, ErrorMessage } from 'formik';
|
|
7
|
-
import { findBy, noop as noop$1,
|
|
7
|
+
import { findBy, noop as noop$1, isNotEmpty, renameKeys, isPresent, nullSafe, toLabelAndValue, removeBy } from '@bigbinary/neeto-cist';
|
|
8
8
|
import { ActionBlock, Textarea, MultiEmailInput, Input as Input$3, Select as Select$2, Radio } from '@bigbinary/neetoui/formik';
|
|
9
9
|
import { t as t$2 } from 'i18next';
|
|
10
10
|
import { isPhoneNumberValid } from '@bigbinary/neeto-molecules/PhoneNumber';
|
|
11
11
|
import * as yup from 'yup';
|
|
12
12
|
import { isEditorEmpty, FormikEditor } from '@bigbinary/neeto-editor';
|
|
13
|
-
import { withImmutableActions,
|
|
13
|
+
import { withImmutableActions, withT, useStateWithDependency, useDebounce } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
14
14
|
import { create } from 'zustand';
|
|
15
15
|
import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
|
|
16
|
-
import { Typography, Button, Pane,
|
|
16
|
+
import { Typography, Button, Pane, Input as Input$2, Label, Select as Select$1, DatePicker, Dropdown as Dropdown$1, Checkbox, Tag, Tooltip } from '@bigbinary/neetoui';
|
|
17
17
|
import { useTranslation } from 'react-i18next';
|
|
18
|
-
import { Down, Up, Check, Search, Close,
|
|
19
|
-
import { pluck, isNil, isNotNil, assocPath, toLower, isEmpty, without, append as append$1, pipe, filter, uniq, join, map, assoc, mergeLeft, includes, test, partition } from 'ramda';
|
|
18
|
+
import { Down, Up, Delete, Check, Search, Close, Plus, Refresh, Eye } from '@bigbinary/neeto-icons';
|
|
19
|
+
import { pluck, isNil, isNotNil, whereAny, useWith, path, split, assocPath, toLower, isEmpty, without, append as append$1, pipe, filter, uniq, join, map, assoc, mergeLeft, includes, test, partition } from 'ramda';
|
|
20
20
|
import { joinHyphenCase, hyphenize } from '@bigbinary/neeto-commons-frontend/utils';
|
|
21
21
|
import useHotkeys from '@bigbinary/neeto-hotkeys';
|
|
22
22
|
import { createPortal } from 'react-dom';
|
|
@@ -240,7 +240,8 @@ var ACTION_TYPES = {
|
|
|
240
240
|
longText: "longText",
|
|
241
241
|
sms: "sms",
|
|
242
242
|
smsToNumbers: "smsToNumbers",
|
|
243
|
-
smsTo: "smsTo"
|
|
243
|
+
smsTo: "smsTo",
|
|
244
|
+
sendToApi: "sendToApi"
|
|
244
245
|
};
|
|
245
246
|
var LIST_FIELD_TOOLTIP_PROPS = {
|
|
246
247
|
save: {
|
|
@@ -453,7 +454,7 @@ var getActionsSchema = function getActionsSchema(element, customData) {
|
|
|
453
454
|
return yup.object({
|
|
454
455
|
phoneNumbers: selectedAction.type === ACTION_TYPES.smsToNumbers ? yup.array().required(t$2("neetoRules.validations.required.entity", {
|
|
455
456
|
entity: t$2("neetoRules.common.phoneNumber")
|
|
456
|
-
})).of(yup.string().test("testPhoneNumber", t$2("neetoRules.validations.
|
|
457
|
+
})).of(yup.string().test("testPhoneNumber", t$2("neetoRules.validations.invalidPhoneNumber"), function (value) {
|
|
457
458
|
return isPhoneNumberValid(value);
|
|
458
459
|
})) : schema,
|
|
459
460
|
body: yup.string().test("body", t$2("neetoRules.validations.required.body"), function (value) {
|
|
@@ -461,6 +462,14 @@ var getActionsSchema = function getActionsSchema(element, customData) {
|
|
|
461
462
|
}),
|
|
462
463
|
value: selectedAction.type === ACTION_TYPES.smsTo ? yup.string().required(t$2("neetoRules.validations.required.value")) : schema
|
|
463
464
|
});
|
|
465
|
+
} else if (ACTION_TYPES.sendToApi === (selectedAction === null || selectedAction === void 0 ? void 0 : selectedAction.type)) {
|
|
466
|
+
return yup.object({
|
|
467
|
+
endpoint: yup.string().url(t$2("neetoRules.validations.invalidUrlEntity", {
|
|
468
|
+
entity: t$2("neetoRules.labels.endpoint")
|
|
469
|
+
})).required(t$2("neetoRules.validations.required.entity", {
|
|
470
|
+
entity: t$2("neetoRules.labels.endpoint")
|
|
471
|
+
}))
|
|
472
|
+
});
|
|
464
473
|
} else if (ACTION_TYPES.multiSelect === (selectedAction === null || selectedAction === void 0 ? void 0 : selectedAction.type)) {
|
|
465
474
|
return yup.object({
|
|
466
475
|
value: yup.array().min(1, t$2("neetoRules.validations.atLeastOneValue")).required(t$2("neetoRules.validations.atLeastOneValue"))
|
|
@@ -701,7 +710,8 @@ var NeetoRules$2 = function NeetoRules(_ref) {
|
|
|
701
710
|
className: "mr-2",
|
|
702
711
|
htmlType: "submit",
|
|
703
712
|
disabled: isSubmitting || !dirty,
|
|
704
|
-
onClick: function onClick() {}
|
|
713
|
+
onClick: function onClick() {},
|
|
714
|
+
"data-cy": "form-submit-button"
|
|
705
715
|
}
|
|
706
716
|
})));
|
|
707
717
|
});
|
|
@@ -1188,6 +1198,247 @@ var LongTextField = function LongTextField(_ref) {
|
|
|
1188
1198
|
}))));
|
|
1189
1199
|
};
|
|
1190
1200
|
|
|
1201
|
+
function _extends$1() {
|
|
1202
|
+
_extends$1 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1203
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
1204
|
+
var source = arguments[i];
|
|
1205
|
+
for (var key in source) {
|
|
1206
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1207
|
+
target[key] = source[key];
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
return target;
|
|
1212
|
+
};
|
|
1213
|
+
return _extends$1.apply(this, arguments);
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
var _excluded$f = ["initialFocusRef", "name", "label"];
|
|
1217
|
+
var InputField$2 = function InputField(_ref) {
|
|
1218
|
+
var initialFocusRef = _ref.initialFocusRef,
|
|
1219
|
+
name = _ref.name,
|
|
1220
|
+
label = _ref.label,
|
|
1221
|
+
otherProps = _objectWithoutProperties$1(_ref, _excluded$f);
|
|
1222
|
+
var _useField = useField(name),
|
|
1223
|
+
_useField2 = _slicedToArray$1(_useField, 2),
|
|
1224
|
+
field = _useField2[0],
|
|
1225
|
+
meta = _useField2[1];
|
|
1226
|
+
return /*#__PURE__*/React__default.createElement(Input$2, _extends$1({
|
|
1227
|
+
label: label,
|
|
1228
|
+
type: "text"
|
|
1229
|
+
}, field, {
|
|
1230
|
+
error: meta.touched ? meta.error : "",
|
|
1231
|
+
ref: initialFocusRef
|
|
1232
|
+
}, otherProps));
|
|
1233
|
+
};
|
|
1234
|
+
|
|
1235
|
+
var ADDITIONAL_DATA_INITIAL_VALUE = {
|
|
1236
|
+
key: "",
|
|
1237
|
+
value: ""
|
|
1238
|
+
};
|
|
1239
|
+
var SAMPLE_ENDPOINT = "https://example.com";
|
|
1240
|
+
|
|
1241
|
+
var addOption = function addOption(arrayHelpers) {
|
|
1242
|
+
return arrayHelpers.push(ADDITIONAL_DATA_INITIAL_VALUE);
|
|
1243
|
+
};
|
|
1244
|
+
var removeOption = function removeOption(_ref) {
|
|
1245
|
+
var arrayHelpers = _ref.arrayHelpers,
|
|
1246
|
+
index = _ref.index,
|
|
1247
|
+
data = _ref.data;
|
|
1248
|
+
arrayHelpers.remove(index);
|
|
1249
|
+
if (data.length === 1) {
|
|
1250
|
+
addOption(arrayHelpers);
|
|
1251
|
+
}
|
|
1252
|
+
};
|
|
1253
|
+
var hasKeyOrValue = whereAny({
|
|
1254
|
+
key: isNotEmpty,
|
|
1255
|
+
value: isNotEmpty
|
|
1256
|
+
});
|
|
1257
|
+
|
|
1258
|
+
var setEditorContent = function setEditorContent(ref, content) {
|
|
1259
|
+
if (!ref.current) return;
|
|
1260
|
+
ref.current.editor.commands.setContent(content);
|
|
1261
|
+
};
|
|
1262
|
+
|
|
1263
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
1264
|
+
var dotPath = useWith(path, [split(".")]);
|
|
1265
|
+
|
|
1266
|
+
var KeyValuePairsField = withT(function (_ref) {
|
|
1267
|
+
var t = _ref.t,
|
|
1268
|
+
name = _ref.name,
|
|
1269
|
+
_ref$label = _ref.label,
|
|
1270
|
+
label = _ref$label === void 0 ? "" : _ref$label;
|
|
1271
|
+
return /*#__PURE__*/React__default.createElement(FieldArray, {
|
|
1272
|
+
name: name
|
|
1273
|
+
}, function (arrayHelpers) {
|
|
1274
|
+
var data = dotPath(name, arrayHelpers.form.values);
|
|
1275
|
+
var showDeleteButton = data.length > 1 || hasKeyOrValue(data[0]);
|
|
1276
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
1277
|
+
className: "space-y-3"
|
|
1278
|
+
}, /*#__PURE__*/React__default.createElement(Label, null, label), data.map(function (_, index) {
|
|
1279
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
1280
|
+
className: "flex h-8 space-x-3",
|
|
1281
|
+
key: index
|
|
1282
|
+
}, /*#__PURE__*/React__default.createElement(InputField$2, {
|
|
1283
|
+
className: "w-2/5",
|
|
1284
|
+
name: "".concat(name, ".").concat(index, ".key"),
|
|
1285
|
+
placeholder: t("neetoRules.labels.key")
|
|
1286
|
+
}), /*#__PURE__*/React__default.createElement(InputField$2, {
|
|
1287
|
+
className: "w-3/5",
|
|
1288
|
+
name: "".concat(name, ".").concat(index, ".value"),
|
|
1289
|
+
placeholder: t("neetoRules.labels.value"),
|
|
1290
|
+
suffix: showDeleteButton && /*#__PURE__*/React__default.createElement(Button, {
|
|
1291
|
+
icon: Delete,
|
|
1292
|
+
size: "small",
|
|
1293
|
+
style: "text",
|
|
1294
|
+
onClick: function onClick() {
|
|
1295
|
+
return removeOption({
|
|
1296
|
+
arrayHelpers: arrayHelpers,
|
|
1297
|
+
index: index,
|
|
1298
|
+
data: data
|
|
1299
|
+
});
|
|
1300
|
+
}
|
|
1301
|
+
})
|
|
1302
|
+
}));
|
|
1303
|
+
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
1304
|
+
label: t("neetoRules.labels.addKeyValuePair"),
|
|
1305
|
+
style: "secondary",
|
|
1306
|
+
onClick: function onClick() {
|
|
1307
|
+
return addOption(arrayHelpers);
|
|
1308
|
+
}
|
|
1309
|
+
}));
|
|
1310
|
+
});
|
|
1311
|
+
});
|
|
1312
|
+
|
|
1313
|
+
var SelectTemplateField = function SelectTemplateField(_ref) {
|
|
1314
|
+
var selectedField = _ref.selectedField,
|
|
1315
|
+
templates = _ref.templates,
|
|
1316
|
+
onChange = _ref.onChange,
|
|
1317
|
+
initialFocusRef = _ref.initialFocusRef;
|
|
1318
|
+
var _useStateWithDependen = useStateWithDependency(null, [selectedField]),
|
|
1319
|
+
_useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
|
|
1320
|
+
selectedTemplate = _useStateWithDependen2[0],
|
|
1321
|
+
setSelectedTemplate = _useStateWithDependen2[1];
|
|
1322
|
+
var _useTranslation = useTranslation(),
|
|
1323
|
+
t = _useTranslation.t;
|
|
1324
|
+
var handleTemplateChange = function handleTemplateChange(option) {
|
|
1325
|
+
setSelectedTemplate(option);
|
|
1326
|
+
if (!option) return;
|
|
1327
|
+
var template = findBy({
|
|
1328
|
+
id: option.value
|
|
1329
|
+
}, templates);
|
|
1330
|
+
onChange === null || onChange === void 0 || onChange(template);
|
|
1331
|
+
};
|
|
1332
|
+
return /*#__PURE__*/React__default.createElement(Select$1, {
|
|
1333
|
+
isClearable: true,
|
|
1334
|
+
isSearchable: true,
|
|
1335
|
+
className: "mb-4",
|
|
1336
|
+
innerRef: initialFocusRef,
|
|
1337
|
+
label: t("neetoRules.labels.template"),
|
|
1338
|
+
options: renameKeys({
|
|
1339
|
+
name: "label",
|
|
1340
|
+
id: "value"
|
|
1341
|
+
}, templates),
|
|
1342
|
+
placeholder: t("neetoRules.placeholders.selectTemplate"),
|
|
1343
|
+
value: selectedTemplate,
|
|
1344
|
+
onChange: handleTemplateChange
|
|
1345
|
+
});
|
|
1346
|
+
};
|
|
1347
|
+
|
|
1348
|
+
var ApiFields = function ApiFields(_ref) {
|
|
1349
|
+
var _errors$actions, _touched$actions, _selectedField$separa;
|
|
1350
|
+
var name = _ref.name,
|
|
1351
|
+
selectedField = _ref.selectedField,
|
|
1352
|
+
index = _ref.index;
|
|
1353
|
+
var _useFormikContext = useFormikContext(),
|
|
1354
|
+
errors = _useFormikContext.errors,
|
|
1355
|
+
touched = _useFormikContext.touched,
|
|
1356
|
+
setFieldValue = _useFormikContext.setFieldValue;
|
|
1357
|
+
var _useState = useState(false),
|
|
1358
|
+
_useState2 = _slicedToArray$1(_useState, 2),
|
|
1359
|
+
showPane = _useState2[0],
|
|
1360
|
+
setShowPane = _useState2[1];
|
|
1361
|
+
var initialFocusRef = useRef(null);
|
|
1362
|
+
var _useTranslation = useTranslation(),
|
|
1363
|
+
t = _useTranslation.t;
|
|
1364
|
+
useOnButtonPressed(initialFocusRef, function () {
|
|
1365
|
+
return setShowPane(false);
|
|
1366
|
+
});
|
|
1367
|
+
var isValid = errors.actions && 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]) && 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]);
|
|
1368
|
+
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");
|
|
1369
|
+
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.dataPlaceholder) || t("neetoRules.common.data");
|
|
1370
|
+
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
1371
|
+
var isTemplateSelectionEnabled = isPresent(templates);
|
|
1372
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
1373
|
+
setFieldValue("".concat(name, ".endpoint"), template.endpoint);
|
|
1374
|
+
setFieldValue("".concat(name, ".additionalData"), template.additionalData);
|
|
1375
|
+
};
|
|
1376
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
|
|
1377
|
+
className: "neeto-ui-text-gray-700 mt-1",
|
|
1378
|
+
"data-cy": "api-action-separator-text",
|
|
1379
|
+
style: "h5",
|
|
1380
|
+
weight: "normal"
|
|
1381
|
+
}, separator), /*#__PURE__*/React__default.createElement(Typography, {
|
|
1382
|
+
"data-cy": "api-action-button",
|
|
1383
|
+
style: "h5",
|
|
1384
|
+
weight: "semibold",
|
|
1385
|
+
className: classNames$1("hover:neeto-ui-text-primary-800 neeto-ui-text-gray-800 mt-1 cursor-pointer underline", {
|
|
1386
|
+
"neeto-ui-text-primary-800": showPane,
|
|
1387
|
+
"neeto-ui-text-error-500": isValid
|
|
1388
|
+
}),
|
|
1389
|
+
onClick: function onClick() {
|
|
1390
|
+
return setShowPane(function (prevState) {
|
|
1391
|
+
return !prevState;
|
|
1392
|
+
});
|
|
1393
|
+
}
|
|
1394
|
+
}, defaultLabel.toLowerCase()), /*#__PURE__*/React__default.createElement(Pane, {
|
|
1395
|
+
initialFocusRef: initialFocusRef,
|
|
1396
|
+
isOpen: showPane,
|
|
1397
|
+
size: "large",
|
|
1398
|
+
onClose: function onClose() {
|
|
1399
|
+
return setShowPane(false);
|
|
1400
|
+
}
|
|
1401
|
+
}, /*#__PURE__*/React__default.createElement(Pane.Header, null, /*#__PURE__*/React__default.createElement(Typography, {
|
|
1402
|
+
className: "neeto-ui-text-gray-800 cursor-pointer",
|
|
1403
|
+
"data-cy": "api-action-pane-header-title",
|
|
1404
|
+
style: "h3",
|
|
1405
|
+
weight: "semibold"
|
|
1406
|
+
}, defaultLabel)), /*#__PURE__*/React__default.createElement(Pane.Body, null, /*#__PURE__*/React__default.createElement("div", {
|
|
1407
|
+
className: "w-full"
|
|
1408
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default.createElement(SelectTemplateField, {
|
|
1409
|
+
initialFocusRef: initialFocusRef,
|
|
1410
|
+
selectedField: selectedField,
|
|
1411
|
+
templates: templates,
|
|
1412
|
+
onChange: handleTemplateChange
|
|
1413
|
+
}), /*#__PURE__*/React__default.createElement(InputField$2, {
|
|
1414
|
+
required: true,
|
|
1415
|
+
className: "mb-4",
|
|
1416
|
+
"data-cy": "api-action-endpoint-text-field",
|
|
1417
|
+
label: t("neetoRules.labels.endpoint"),
|
|
1418
|
+
name: "".concat(name, ".endpoint"),
|
|
1419
|
+
placeholder: SAMPLE_ENDPOINT,
|
|
1420
|
+
initialFocusRef: isTemplateSelectionEnabled ? null : initialFocusRef
|
|
1421
|
+
}), /*#__PURE__*/React__default.createElement(KeyValuePairsField, {
|
|
1422
|
+
label: t("neetoRules.labels.additionalData"),
|
|
1423
|
+
name: "".concat(name, ".additionalData")
|
|
1424
|
+
}))), /*#__PURE__*/React__default.createElement(Pane.Footer, {
|
|
1425
|
+
className: "flex items-center space-x-2"
|
|
1426
|
+
}, /*#__PURE__*/React__default.createElement(Button, {
|
|
1427
|
+
"data-cy": "save-changes-button",
|
|
1428
|
+
label: t("neetoRules.common.saveChange"),
|
|
1429
|
+
onClick: function onClick() {
|
|
1430
|
+
return setShowPane(false);
|
|
1431
|
+
}
|
|
1432
|
+
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
1433
|
+
"data-cy": "cancel-button",
|
|
1434
|
+
label: t("neetoRules.buttons.cancel"),
|
|
1435
|
+
style: "text",
|
|
1436
|
+
onClick: function onClick() {
|
|
1437
|
+
return setShowPane(false);
|
|
1438
|
+
}
|
|
1439
|
+
}))));
|
|
1440
|
+
};
|
|
1441
|
+
|
|
1191
1442
|
var CustomAction = function CustomAction(_ref) {
|
|
1192
1443
|
var _errors$actions, _touched$actions, _selectedField$separa;
|
|
1193
1444
|
var ActionComponent = _ref.ActionComponent,
|
|
@@ -1511,22 +1762,7 @@ var DropdownField$1 = function DropdownField(_ref) {
|
|
|
1511
1762
|
}, t$2("neetoRules.common.noOptions")))));
|
|
1512
1763
|
};
|
|
1513
1764
|
|
|
1514
|
-
|
|
1515
|
-
_extends$1 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1516
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
1517
|
-
var source = arguments[i];
|
|
1518
|
-
for (var key in source) {
|
|
1519
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1520
|
-
target[key] = source[key];
|
|
1521
|
-
}
|
|
1522
|
-
}
|
|
1523
|
-
}
|
|
1524
|
-
return target;
|
|
1525
|
-
};
|
|
1526
|
-
return _extends$1.apply(this, arguments);
|
|
1527
|
-
}
|
|
1528
|
-
|
|
1529
|
-
var _excluded$f = ["autoFocus", "name", "value", "label", "variables", "addons", "editorRef", "defaults"];
|
|
1765
|
+
var _excluded$e = ["autoFocus", "name", "value", "label", "variables", "addons", "editorRef", "defaults"];
|
|
1530
1766
|
var EditorAction = function EditorAction(_ref) {
|
|
1531
1767
|
var autoFocus = _ref.autoFocus,
|
|
1532
1768
|
name = _ref.name,
|
|
@@ -1540,7 +1776,7 @@ var EditorAction = function EditorAction(_ref) {
|
|
|
1540
1776
|
_ref$editorRef = _ref.editorRef,
|
|
1541
1777
|
editorRef = _ref$editorRef === void 0 ? null : _ref$editorRef,
|
|
1542
1778
|
defaults = _ref.defaults,
|
|
1543
|
-
otherProps = _objectWithoutProperties$1(_ref, _excluded$
|
|
1779
|
+
otherProps = _objectWithoutProperties$1(_ref, _excluded$e);
|
|
1544
1780
|
var _useFormikContext = useFormikContext(),
|
|
1545
1781
|
setFieldValue = _useFormikContext.setFieldValue;
|
|
1546
1782
|
var _useState = useState(value),
|
|
@@ -1591,30 +1827,6 @@ var EmailIdFields = function EmailIdFields(_ref) {
|
|
|
1591
1827
|
}));
|
|
1592
1828
|
};
|
|
1593
1829
|
|
|
1594
|
-
var _excluded$e = ["initialFocusRef", "name", "label"];
|
|
1595
|
-
var InputField$2 = function InputField(_ref) {
|
|
1596
|
-
var initialFocusRef = _ref.initialFocusRef,
|
|
1597
|
-
name = _ref.name,
|
|
1598
|
-
label = _ref.label,
|
|
1599
|
-
otherProps = _objectWithoutProperties$1(_ref, _excluded$e);
|
|
1600
|
-
var _useField = useField(name),
|
|
1601
|
-
_useField2 = _slicedToArray$1(_useField, 2),
|
|
1602
|
-
field = _useField2[0],
|
|
1603
|
-
meta = _useField2[1];
|
|
1604
|
-
return /*#__PURE__*/React__default.createElement(Input$2, _extends$1({
|
|
1605
|
-
label: label,
|
|
1606
|
-
type: "text"
|
|
1607
|
-
}, field, {
|
|
1608
|
-
error: meta.touched ? meta.error : "",
|
|
1609
|
-
ref: initialFocusRef
|
|
1610
|
-
}, otherProps));
|
|
1611
|
-
};
|
|
1612
|
-
|
|
1613
|
-
var setEditorContent = function setEditorContent(ref, content) {
|
|
1614
|
-
if (!ref.current) return;
|
|
1615
|
-
ref.current.editor.commands.setContent(content);
|
|
1616
|
-
};
|
|
1617
|
-
|
|
1618
1830
|
var EmailFields = function EmailFields(_ref) {
|
|
1619
1831
|
var _errors$actions, _touched$actions, _selectedField$separa, _action$metadata;
|
|
1620
1832
|
var _ref$isEmailIdField = _ref.isEmailIdField,
|
|
@@ -1633,10 +1845,6 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1633
1845
|
_useState2 = _slicedToArray$1(_useState, 2),
|
|
1634
1846
|
showPane = _useState2[0],
|
|
1635
1847
|
setShowPane = _useState2[1];
|
|
1636
|
-
var _useStateWithDependen = useStateWithDependency(null, [selectedField]),
|
|
1637
|
-
_useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
|
|
1638
|
-
selectedTemplate = _useStateWithDependen2[0],
|
|
1639
|
-
setSelectedTemplate = _useStateWithDependen2[1];
|
|
1640
1848
|
var initialFocusRef = useRef(null);
|
|
1641
1849
|
var editorRef = useRef(null);
|
|
1642
1850
|
var _useTranslation = useTranslation(),
|
|
@@ -1649,12 +1857,7 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1649
1857
|
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.emailPlaceholder) || t("neetoRules.common.email");
|
|
1650
1858
|
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
1651
1859
|
var isTemplateSelectionEnabled = isPresent(templates);
|
|
1652
|
-
var handleTemplateChange = function handleTemplateChange(
|
|
1653
|
-
setSelectedTemplate(option);
|
|
1654
|
-
if (!option) return;
|
|
1655
|
-
var template = findBy({
|
|
1656
|
-
id: option.value
|
|
1657
|
-
}, templates);
|
|
1860
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
1658
1861
|
setFieldValue("".concat(name, ".body"), template.body);
|
|
1659
1862
|
setEditorContent(editorRef, template.body);
|
|
1660
1863
|
if (selectedField.hideSubject) return;
|
|
@@ -1705,18 +1908,10 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1705
1908
|
weight: "semibold"
|
|
1706
1909
|
}, defaultLabel)), /*#__PURE__*/React__default.createElement(Pane.Body, null, /*#__PURE__*/React__default.createElement("div", {
|
|
1707
1910
|
className: "w-full"
|
|
1708
|
-
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default.createElement(
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
innerRef: initialFocusRef,
|
|
1713
|
-
label: t("neetoRules.labels.template"),
|
|
1714
|
-
options: renameKeys({
|
|
1715
|
-
name: "label",
|
|
1716
|
-
id: "value"
|
|
1717
|
-
}, templates),
|
|
1718
|
-
placeholder: t("neetoRules.placeholders.selectTemplate"),
|
|
1719
|
-
value: selectedTemplate,
|
|
1911
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default.createElement(SelectTemplateField, {
|
|
1912
|
+
initialFocusRef: initialFocusRef,
|
|
1913
|
+
selectedField: selectedField,
|
|
1914
|
+
templates: templates,
|
|
1720
1915
|
onChange: handleTemplateChange
|
|
1721
1916
|
}), isEmailIdField && /*#__PURE__*/React__default.createElement(EmailIdFields, {
|
|
1722
1917
|
emails: emails,
|
|
@@ -1738,7 +1933,7 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1738
1933
|
}))), /*#__PURE__*/React__default.createElement(Pane.Footer, {
|
|
1739
1934
|
className: "flex items-center space-x-2"
|
|
1740
1935
|
}, /*#__PURE__*/React__default.createElement(Button, {
|
|
1741
|
-
"data-cy": "save-changes-button",
|
|
1936
|
+
"data-cy": "email-action-save-changes-button",
|
|
1742
1937
|
label: t("neetoRules.common.saveChange"),
|
|
1743
1938
|
onClick: function onClick() {
|
|
1744
1939
|
return setShowPane(false);
|
|
@@ -10095,7 +10290,7 @@ var PHONE_NUMBER_SEPARATION_REGEX = /[^\s,]+/g;
|
|
|
10095
10290
|
var FLEXIBLE_PHONE_NUMBER_REGEX = /[0-9+, ]+/g;
|
|
10096
10291
|
var PHONE_NUMBER_VALIDATION_SCHEMA = yup.string().required(t$2("neetoRules.validations.required.entity", {
|
|
10097
10292
|
entity: t$2("neetoRules.common.phoneNumber")
|
|
10098
|
-
})).test("testPhoneNumber", t$2("neetoRules.validations.
|
|
10293
|
+
})).test("testPhoneNumber", t$2("neetoRules.validations.invalidPhoneNumber"), isPhoneNumberValid);
|
|
10099
10294
|
var CUSTOM_STYLES = {
|
|
10100
10295
|
input: assoc("overflow", "hidden"),
|
|
10101
10296
|
multiValue: function multiValue(styles, _ref2) {
|
|
@@ -10266,10 +10461,6 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10266
10461
|
_useState2 = _slicedToArray$1(_useState, 2),
|
|
10267
10462
|
showPane = _useState2[0],
|
|
10268
10463
|
setShowPane = _useState2[1];
|
|
10269
|
-
var _useStateWithDependen = useStateWithDependency(null, [selectedField]),
|
|
10270
|
-
_useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
|
|
10271
|
-
selectedTemplate = _useStateWithDependen2[0],
|
|
10272
|
-
setSelectedTemplate = _useStateWithDependen2[1];
|
|
10273
10464
|
var initialFocusRef = useRef(null);
|
|
10274
10465
|
var editorRef = useRef(null);
|
|
10275
10466
|
var _useTranslation = useTranslation(),
|
|
@@ -10282,12 +10473,7 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10282
10473
|
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.smsPlaceholder) || t("neetoRules.common.sms");
|
|
10283
10474
|
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
10284
10475
|
var isTemplateSelectionEnabled = isPresent(templates);
|
|
10285
|
-
var handleTemplateChange = function handleTemplateChange(
|
|
10286
|
-
setSelectedTemplate(option);
|
|
10287
|
-
if (!option) return;
|
|
10288
|
-
var template = findBy({
|
|
10289
|
-
id: option.value
|
|
10290
|
-
}, templates);
|
|
10476
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
10291
10477
|
setFieldValue("".concat(name, ".body"), template.body);
|
|
10292
10478
|
setEditorContent(editorRef, template.body);
|
|
10293
10479
|
};
|
|
@@ -10329,18 +10515,10 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10329
10515
|
weight: "semibold"
|
|
10330
10516
|
}, defaultLabel)), /*#__PURE__*/React__default.createElement(Pane.Body, null, /*#__PURE__*/React__default.createElement("div", {
|
|
10331
10517
|
className: "w-full"
|
|
10332
|
-
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default.createElement(
|
|
10333
|
-
|
|
10334
|
-
|
|
10335
|
-
|
|
10336
|
-
innerRef: initialFocusRef,
|
|
10337
|
-
label: t("neetoRules.labels.template"),
|
|
10338
|
-
options: renameKeys({
|
|
10339
|
-
name: "label",
|
|
10340
|
-
id: "value"
|
|
10341
|
-
}, templates),
|
|
10342
|
-
placeholder: t("neetoRules.placeholders.selectTemplate"),
|
|
10343
|
-
value: selectedTemplate,
|
|
10518
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default.createElement(SelectTemplateField, {
|
|
10519
|
+
initialFocusRef: initialFocusRef,
|
|
10520
|
+
selectedField: selectedField,
|
|
10521
|
+
templates: templates,
|
|
10344
10522
|
onChange: handleTemplateChange
|
|
10345
10523
|
}), showPhoneNumberInput && /*#__PURE__*/React__default.createElement(PhoneNumberField, {
|
|
10346
10524
|
phoneNumbers: phoneNumbers,
|
|
@@ -10454,6 +10632,14 @@ var ActionSubItems = function ActionSubItems(_ref) {
|
|
|
10454
10632
|
key: name
|
|
10455
10633
|
}));
|
|
10456
10634
|
}
|
|
10635
|
+
if ((selectedField === null || selectedField === void 0 ? void 0 : selectedField.type) === ACTION_TYPES.sendToApi) {
|
|
10636
|
+
return /*#__PURE__*/React__default.createElement(ApiFields, {
|
|
10637
|
+
index: index,
|
|
10638
|
+
name: name,
|
|
10639
|
+
selectedField: selectedField,
|
|
10640
|
+
key: name
|
|
10641
|
+
});
|
|
10642
|
+
}
|
|
10457
10643
|
if ((selectedField === null || selectedField === void 0 ? void 0 : selectedField.type) === ACTION_TYPES.dropdown) {
|
|
10458
10644
|
return /*#__PURE__*/React__default.createElement(DropdownField$1, {
|
|
10459
10645
|
index: index,
|
|
@@ -10785,7 +10971,7 @@ var Actions = function Actions(_ref) {
|
|
|
10785
10971
|
return arrayHelpers.push(DEFAULT_RULE_ACTION);
|
|
10786
10972
|
}
|
|
10787
10973
|
}), actions.length > 1 && /*#__PURE__*/React__default.createElement(Button, {
|
|
10788
|
-
"data-cy": "delete-action-button",
|
|
10974
|
+
"data-cy": "delete-action-button-".concat(index),
|
|
10789
10975
|
icon: Delete,
|
|
10790
10976
|
size: 24,
|
|
10791
10977
|
style: "icon",
|
|
@@ -11933,6 +12119,8 @@ var Conditions = function Conditions(_ref) {
|
|
|
11933
12119
|
setValue = _useField2[2].setValue;
|
|
11934
12120
|
var _useFormikContext = useFormikContext(),
|
|
11935
12121
|
setFieldValue = _useFormikContext.setFieldValue;
|
|
12122
|
+
var _useTranslation = useTranslation(),
|
|
12123
|
+
t = _useTranslation.t;
|
|
11936
12124
|
var elementProps = data[name] || {};
|
|
11937
12125
|
var conditions = ((_field$value = field.value) === null || _field$value === void 0 ? void 0 : _field$value.value) || [];
|
|
11938
12126
|
var handleAddCondition = function handleAddCondition(arrayHelpers, logicOperation) {
|
|
@@ -11992,19 +12180,19 @@ var Conditions = function Conditions(_ref) {
|
|
|
11992
12180
|
size: 24,
|
|
11993
12181
|
style: "icon",
|
|
11994
12182
|
tooltipProps: {
|
|
11995
|
-
content: t
|
|
12183
|
+
content: t("neetoRules.form.addCondition"),
|
|
11996
12184
|
position: "top"
|
|
11997
12185
|
},
|
|
11998
12186
|
onClick: function onClick() {
|
|
11999
12187
|
return handleAddCondition(arrayHelpers, condition.joinType);
|
|
12000
12188
|
}
|
|
12001
12189
|
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
12002
|
-
"data-cy": "delete-condition-button",
|
|
12190
|
+
"data-cy": "delete-condition-button-".concat(index),
|
|
12003
12191
|
icon: Delete,
|
|
12004
12192
|
size: 24,
|
|
12005
12193
|
style: "icon",
|
|
12006
12194
|
tooltipProps: {
|
|
12007
|
-
content: t
|
|
12195
|
+
content: t("neetoRules.common.delete"),
|
|
12008
12196
|
position: "top"
|
|
12009
12197
|
},
|
|
12010
12198
|
onClick: function onClick() {
|
|
@@ -12014,7 +12202,7 @@ var Conditions = function Conditions(_ref) {
|
|
|
12014
12202
|
}), isEmpty(conditions) && /*#__PURE__*/React__default.createElement(Button, {
|
|
12015
12203
|
className: "neeto-ui-text-gray-600 mr-auto",
|
|
12016
12204
|
"data-cy": "add-condition-button",
|
|
12017
|
-
label: t
|
|
12205
|
+
label: t("neetoRules.form.addCondition"),
|
|
12018
12206
|
style: "text",
|
|
12019
12207
|
onClick: function onClick() {
|
|
12020
12208
|
return handleAddCondition(arrayHelpers, OPERATORS$1.or);
|
|
@@ -12023,7 +12211,7 @@ var Conditions = function Conditions(_ref) {
|
|
|
12023
12211
|
className: "mt-2",
|
|
12024
12212
|
"data-cy": "preview-callback-button",
|
|
12025
12213
|
icon: Eye,
|
|
12026
|
-
label: t
|
|
12214
|
+
label: t("neetoRules.common.preview"),
|
|
12027
12215
|
style: "secondary",
|
|
12028
12216
|
onClick: function onClick() {
|
|
12029
12217
|
return previewCallback(conditions);
|