@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 +2 -2
- package/app/javascript/src/translations/en.json +10 -3
- package/dist/index.cjs.js +273 -88
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +278 -93
- 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"))
|
|
@@ -1188,6 +1197,247 @@ var LongTextField = function LongTextField(_ref) {
|
|
|
1188
1197
|
}))));
|
|
1189
1198
|
};
|
|
1190
1199
|
|
|
1200
|
+
function _extends$1() {
|
|
1201
|
+
_extends$1 = Object.assign ? Object.assign.bind() : function (target) {
|
|
1202
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
1203
|
+
var source = arguments[i];
|
|
1204
|
+
for (var key in source) {
|
|
1205
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1206
|
+
target[key] = source[key];
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
return target;
|
|
1211
|
+
};
|
|
1212
|
+
return _extends$1.apply(this, arguments);
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
var _excluded$f = ["initialFocusRef", "name", "label"];
|
|
1216
|
+
var InputField$2 = function InputField(_ref) {
|
|
1217
|
+
var initialFocusRef = _ref.initialFocusRef,
|
|
1218
|
+
name = _ref.name,
|
|
1219
|
+
label = _ref.label,
|
|
1220
|
+
otherProps = _objectWithoutProperties$1(_ref, _excluded$f);
|
|
1221
|
+
var _useField = useField(name),
|
|
1222
|
+
_useField2 = _slicedToArray$1(_useField, 2),
|
|
1223
|
+
field = _useField2[0],
|
|
1224
|
+
meta = _useField2[1];
|
|
1225
|
+
return /*#__PURE__*/React__default.createElement(Input$2, _extends$1({
|
|
1226
|
+
label: label,
|
|
1227
|
+
type: "text"
|
|
1228
|
+
}, field, {
|
|
1229
|
+
error: meta.touched ? meta.error : "",
|
|
1230
|
+
ref: initialFocusRef
|
|
1231
|
+
}, otherProps));
|
|
1232
|
+
};
|
|
1233
|
+
|
|
1234
|
+
var ADDITIONAL_DATA_INITIAL_VALUE = {
|
|
1235
|
+
key: "",
|
|
1236
|
+
value: ""
|
|
1237
|
+
};
|
|
1238
|
+
var SAMPLE_ENDPOINT = "https://example.com";
|
|
1239
|
+
|
|
1240
|
+
var addOption = function addOption(arrayHelpers) {
|
|
1241
|
+
return arrayHelpers.push(ADDITIONAL_DATA_INITIAL_VALUE);
|
|
1242
|
+
};
|
|
1243
|
+
var removeOption = function removeOption(_ref) {
|
|
1244
|
+
var arrayHelpers = _ref.arrayHelpers,
|
|
1245
|
+
index = _ref.index,
|
|
1246
|
+
data = _ref.data;
|
|
1247
|
+
arrayHelpers.remove(index);
|
|
1248
|
+
if (data.length === 1) {
|
|
1249
|
+
addOption(arrayHelpers);
|
|
1250
|
+
}
|
|
1251
|
+
};
|
|
1252
|
+
var hasKeyOrValue = whereAny({
|
|
1253
|
+
key: isNotEmpty,
|
|
1254
|
+
value: isNotEmpty
|
|
1255
|
+
});
|
|
1256
|
+
|
|
1257
|
+
var setEditorContent = function setEditorContent(ref, content) {
|
|
1258
|
+
if (!ref.current) return;
|
|
1259
|
+
ref.current.editor.commands.setContent(content);
|
|
1260
|
+
};
|
|
1261
|
+
|
|
1262
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
1263
|
+
var dotPath = useWith(path, [split(".")]);
|
|
1264
|
+
|
|
1265
|
+
var KeyValuePairsField = withT(function (_ref) {
|
|
1266
|
+
var t = _ref.t,
|
|
1267
|
+
name = _ref.name,
|
|
1268
|
+
_ref$label = _ref.label,
|
|
1269
|
+
label = _ref$label === void 0 ? "" : _ref$label;
|
|
1270
|
+
return /*#__PURE__*/React__default.createElement(FieldArray, {
|
|
1271
|
+
name: name
|
|
1272
|
+
}, function (arrayHelpers) {
|
|
1273
|
+
var data = dotPath(name, arrayHelpers.form.values);
|
|
1274
|
+
var showDeleteButton = data.length > 1 || hasKeyOrValue(data[0]);
|
|
1275
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
1276
|
+
className: "space-y-3"
|
|
1277
|
+
}, /*#__PURE__*/React__default.createElement(Label, null, label), data.map(function (_, index) {
|
|
1278
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
1279
|
+
className: "flex h-8 space-x-3",
|
|
1280
|
+
key: index
|
|
1281
|
+
}, /*#__PURE__*/React__default.createElement(InputField$2, {
|
|
1282
|
+
className: "w-2/5",
|
|
1283
|
+
name: "".concat(name, ".").concat(index, ".key"),
|
|
1284
|
+
placeholder: t("neetoRules.labels.key")
|
|
1285
|
+
}), /*#__PURE__*/React__default.createElement(InputField$2, {
|
|
1286
|
+
className: "w-3/5",
|
|
1287
|
+
name: "".concat(name, ".").concat(index, ".value"),
|
|
1288
|
+
placeholder: t("neetoRules.labels.value"),
|
|
1289
|
+
suffix: showDeleteButton && /*#__PURE__*/React__default.createElement(Button, {
|
|
1290
|
+
icon: Delete,
|
|
1291
|
+
size: "small",
|
|
1292
|
+
style: "text",
|
|
1293
|
+
onClick: function onClick() {
|
|
1294
|
+
return removeOption({
|
|
1295
|
+
arrayHelpers: arrayHelpers,
|
|
1296
|
+
index: index,
|
|
1297
|
+
data: data
|
|
1298
|
+
});
|
|
1299
|
+
}
|
|
1300
|
+
})
|
|
1301
|
+
}));
|
|
1302
|
+
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
1303
|
+
label: t("neetoRules.labels.addKeyValuePair"),
|
|
1304
|
+
style: "secondary",
|
|
1305
|
+
onClick: function onClick() {
|
|
1306
|
+
return addOption(arrayHelpers);
|
|
1307
|
+
}
|
|
1308
|
+
}));
|
|
1309
|
+
});
|
|
1310
|
+
});
|
|
1311
|
+
|
|
1312
|
+
var SelectTemplateField = function SelectTemplateField(_ref) {
|
|
1313
|
+
var selectedField = _ref.selectedField,
|
|
1314
|
+
templates = _ref.templates,
|
|
1315
|
+
onChange = _ref.onChange,
|
|
1316
|
+
initialFocusRef = _ref.initialFocusRef;
|
|
1317
|
+
var _useStateWithDependen = useStateWithDependency(null, [selectedField]),
|
|
1318
|
+
_useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
|
|
1319
|
+
selectedTemplate = _useStateWithDependen2[0],
|
|
1320
|
+
setSelectedTemplate = _useStateWithDependen2[1];
|
|
1321
|
+
var _useTranslation = useTranslation(),
|
|
1322
|
+
t = _useTranslation.t;
|
|
1323
|
+
var handleTemplateChange = function handleTemplateChange(option) {
|
|
1324
|
+
setSelectedTemplate(option);
|
|
1325
|
+
if (!option) return;
|
|
1326
|
+
var template = findBy({
|
|
1327
|
+
id: option.value
|
|
1328
|
+
}, templates);
|
|
1329
|
+
onChange === null || onChange === void 0 || onChange(template);
|
|
1330
|
+
};
|
|
1331
|
+
return /*#__PURE__*/React__default.createElement(Select$1, {
|
|
1332
|
+
isClearable: true,
|
|
1333
|
+
isSearchable: true,
|
|
1334
|
+
className: "mb-4",
|
|
1335
|
+
innerRef: initialFocusRef,
|
|
1336
|
+
label: t("neetoRules.labels.template"),
|
|
1337
|
+
options: renameKeys({
|
|
1338
|
+
name: "label",
|
|
1339
|
+
id: "value"
|
|
1340
|
+
}, templates),
|
|
1341
|
+
placeholder: t("neetoRules.placeholders.selectTemplate"),
|
|
1342
|
+
value: selectedTemplate,
|
|
1343
|
+
onChange: handleTemplateChange
|
|
1344
|
+
});
|
|
1345
|
+
};
|
|
1346
|
+
|
|
1347
|
+
var ApiFields = function ApiFields(_ref) {
|
|
1348
|
+
var _errors$actions, _touched$actions, _selectedField$separa;
|
|
1349
|
+
var name = _ref.name,
|
|
1350
|
+
selectedField = _ref.selectedField,
|
|
1351
|
+
index = _ref.index;
|
|
1352
|
+
var _useFormikContext = useFormikContext(),
|
|
1353
|
+
errors = _useFormikContext.errors,
|
|
1354
|
+
touched = _useFormikContext.touched,
|
|
1355
|
+
setFieldValue = _useFormikContext.setFieldValue;
|
|
1356
|
+
var _useState = useState(false),
|
|
1357
|
+
_useState2 = _slicedToArray$1(_useState, 2),
|
|
1358
|
+
showPane = _useState2[0],
|
|
1359
|
+
setShowPane = _useState2[1];
|
|
1360
|
+
var initialFocusRef = useRef(null);
|
|
1361
|
+
var _useTranslation = useTranslation(),
|
|
1362
|
+
t = _useTranslation.t;
|
|
1363
|
+
useOnButtonPressed(initialFocusRef, function () {
|
|
1364
|
+
return setShowPane(false);
|
|
1365
|
+
});
|
|
1366
|
+
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]);
|
|
1367
|
+
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");
|
|
1368
|
+
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.dataPlaceholder) || t("neetoRules.common.data");
|
|
1369
|
+
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
1370
|
+
var isTemplateSelectionEnabled = isPresent(templates);
|
|
1371
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
1372
|
+
setFieldValue("".concat(name, ".endpoint"), template.endpoint);
|
|
1373
|
+
setFieldValue("".concat(name, ".additionalData"), template.additionalData);
|
|
1374
|
+
};
|
|
1375
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Typography, {
|
|
1376
|
+
className: "neeto-ui-text-gray-700 mt-1",
|
|
1377
|
+
"data-cy": "api-action-separator-text",
|
|
1378
|
+
style: "h5",
|
|
1379
|
+
weight: "normal"
|
|
1380
|
+
}, separator), /*#__PURE__*/React__default.createElement(Typography, {
|
|
1381
|
+
"data-cy": "api-action-button",
|
|
1382
|
+
style: "h5",
|
|
1383
|
+
weight: "semibold",
|
|
1384
|
+
className: classNames$1("hover:neeto-ui-text-primary-800 neeto-ui-text-gray-800 mt-1 cursor-pointer underline", {
|
|
1385
|
+
"neeto-ui-text-primary-800": showPane,
|
|
1386
|
+
"neeto-ui-text-error-500": isValid
|
|
1387
|
+
}),
|
|
1388
|
+
onClick: function onClick() {
|
|
1389
|
+
return setShowPane(function (prevState) {
|
|
1390
|
+
return !prevState;
|
|
1391
|
+
});
|
|
1392
|
+
}
|
|
1393
|
+
}, defaultLabel.toLowerCase()), /*#__PURE__*/React__default.createElement(Pane, {
|
|
1394
|
+
initialFocusRef: initialFocusRef,
|
|
1395
|
+
isOpen: showPane,
|
|
1396
|
+
size: "large",
|
|
1397
|
+
onClose: function onClose() {
|
|
1398
|
+
return setShowPane(false);
|
|
1399
|
+
}
|
|
1400
|
+
}, /*#__PURE__*/React__default.createElement(Pane.Header, null, /*#__PURE__*/React__default.createElement(Typography, {
|
|
1401
|
+
className: "neeto-ui-text-gray-800 cursor-pointer",
|
|
1402
|
+
"data-cy": "api-action-pane-header-title",
|
|
1403
|
+
style: "h3",
|
|
1404
|
+
weight: "semibold"
|
|
1405
|
+
}, defaultLabel)), /*#__PURE__*/React__default.createElement(Pane.Body, null, /*#__PURE__*/React__default.createElement("div", {
|
|
1406
|
+
className: "w-full"
|
|
1407
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default.createElement(SelectTemplateField, {
|
|
1408
|
+
initialFocusRef: initialFocusRef,
|
|
1409
|
+
selectedField: selectedField,
|
|
1410
|
+
templates: templates,
|
|
1411
|
+
onChange: handleTemplateChange
|
|
1412
|
+
}), /*#__PURE__*/React__default.createElement(InputField$2, {
|
|
1413
|
+
required: true,
|
|
1414
|
+
className: "mb-4",
|
|
1415
|
+
"data-cy": "api-action-endpoint-text-field",
|
|
1416
|
+
label: t("neetoRules.labels.endpoint"),
|
|
1417
|
+
name: "".concat(name, ".endpoint"),
|
|
1418
|
+
placeholder: SAMPLE_ENDPOINT,
|
|
1419
|
+
initialFocusRef: isTemplateSelectionEnabled ? null : initialFocusRef
|
|
1420
|
+
}), /*#__PURE__*/React__default.createElement(KeyValuePairsField, {
|
|
1421
|
+
label: t("neetoRules.labels.additionalData"),
|
|
1422
|
+
name: "".concat(name, ".additionalData")
|
|
1423
|
+
}))), /*#__PURE__*/React__default.createElement(Pane.Footer, {
|
|
1424
|
+
className: "flex items-center space-x-2"
|
|
1425
|
+
}, /*#__PURE__*/React__default.createElement(Button, {
|
|
1426
|
+
"data-cy": "save-changes-button",
|
|
1427
|
+
label: t("neetoRules.common.saveChange"),
|
|
1428
|
+
onClick: function onClick() {
|
|
1429
|
+
return setShowPane(false);
|
|
1430
|
+
}
|
|
1431
|
+
}), /*#__PURE__*/React__default.createElement(Button, {
|
|
1432
|
+
"data-cy": "cancel-button",
|
|
1433
|
+
label: t("neetoRules.buttons.cancel"),
|
|
1434
|
+
style: "text",
|
|
1435
|
+
onClick: function onClick() {
|
|
1436
|
+
return setShowPane(false);
|
|
1437
|
+
}
|
|
1438
|
+
}))));
|
|
1439
|
+
};
|
|
1440
|
+
|
|
1191
1441
|
var CustomAction = function CustomAction(_ref) {
|
|
1192
1442
|
var _errors$actions, _touched$actions, _selectedField$separa;
|
|
1193
1443
|
var ActionComponent = _ref.ActionComponent,
|
|
@@ -1511,22 +1761,7 @@ var DropdownField$1 = function DropdownField(_ref) {
|
|
|
1511
1761
|
}, t$2("neetoRules.common.noOptions")))));
|
|
1512
1762
|
};
|
|
1513
1763
|
|
|
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"];
|
|
1764
|
+
var _excluded$e = ["autoFocus", "name", "value", "label", "variables", "addons", "editorRef", "defaults"];
|
|
1530
1765
|
var EditorAction = function EditorAction(_ref) {
|
|
1531
1766
|
var autoFocus = _ref.autoFocus,
|
|
1532
1767
|
name = _ref.name,
|
|
@@ -1540,7 +1775,7 @@ var EditorAction = function EditorAction(_ref) {
|
|
|
1540
1775
|
_ref$editorRef = _ref.editorRef,
|
|
1541
1776
|
editorRef = _ref$editorRef === void 0 ? null : _ref$editorRef,
|
|
1542
1777
|
defaults = _ref.defaults,
|
|
1543
|
-
otherProps = _objectWithoutProperties$1(_ref, _excluded$
|
|
1778
|
+
otherProps = _objectWithoutProperties$1(_ref, _excluded$e);
|
|
1544
1779
|
var _useFormikContext = useFormikContext(),
|
|
1545
1780
|
setFieldValue = _useFormikContext.setFieldValue;
|
|
1546
1781
|
var _useState = useState(value),
|
|
@@ -1591,30 +1826,6 @@ var EmailIdFields = function EmailIdFields(_ref) {
|
|
|
1591
1826
|
}));
|
|
1592
1827
|
};
|
|
1593
1828
|
|
|
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
1829
|
var EmailFields = function EmailFields(_ref) {
|
|
1619
1830
|
var _errors$actions, _touched$actions, _selectedField$separa, _action$metadata;
|
|
1620
1831
|
var _ref$isEmailIdField = _ref.isEmailIdField,
|
|
@@ -1633,10 +1844,6 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1633
1844
|
_useState2 = _slicedToArray$1(_useState, 2),
|
|
1634
1845
|
showPane = _useState2[0],
|
|
1635
1846
|
setShowPane = _useState2[1];
|
|
1636
|
-
var _useStateWithDependen = useStateWithDependency(null, [selectedField]),
|
|
1637
|
-
_useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
|
|
1638
|
-
selectedTemplate = _useStateWithDependen2[0],
|
|
1639
|
-
setSelectedTemplate = _useStateWithDependen2[1];
|
|
1640
1847
|
var initialFocusRef = useRef(null);
|
|
1641
1848
|
var editorRef = useRef(null);
|
|
1642
1849
|
var _useTranslation = useTranslation(),
|
|
@@ -1649,12 +1856,7 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1649
1856
|
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.emailPlaceholder) || t("neetoRules.common.email");
|
|
1650
1857
|
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
1651
1858
|
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);
|
|
1859
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
1658
1860
|
setFieldValue("".concat(name, ".body"), template.body);
|
|
1659
1861
|
setEditorContent(editorRef, template.body);
|
|
1660
1862
|
if (selectedField.hideSubject) return;
|
|
@@ -1705,18 +1907,10 @@ var EmailFields = function EmailFields(_ref) {
|
|
|
1705
1907
|
weight: "semibold"
|
|
1706
1908
|
}, defaultLabel)), /*#__PURE__*/React__default.createElement(Pane.Body, null, /*#__PURE__*/React__default.createElement("div", {
|
|
1707
1909
|
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,
|
|
1910
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default.createElement(SelectTemplateField, {
|
|
1911
|
+
initialFocusRef: initialFocusRef,
|
|
1912
|
+
selectedField: selectedField,
|
|
1913
|
+
templates: templates,
|
|
1720
1914
|
onChange: handleTemplateChange
|
|
1721
1915
|
}), isEmailIdField && /*#__PURE__*/React__default.createElement(EmailIdFields, {
|
|
1722
1916
|
emails: emails,
|
|
@@ -10095,7 +10289,7 @@ var PHONE_NUMBER_SEPARATION_REGEX = /[^\s,]+/g;
|
|
|
10095
10289
|
var FLEXIBLE_PHONE_NUMBER_REGEX = /[0-9+, ]+/g;
|
|
10096
10290
|
var PHONE_NUMBER_VALIDATION_SCHEMA = yup.string().required(t$2("neetoRules.validations.required.entity", {
|
|
10097
10291
|
entity: t$2("neetoRules.common.phoneNumber")
|
|
10098
|
-
})).test("testPhoneNumber", t$2("neetoRules.validations.
|
|
10292
|
+
})).test("testPhoneNumber", t$2("neetoRules.validations.invalidPhoneNumber"), isPhoneNumberValid);
|
|
10099
10293
|
var CUSTOM_STYLES = {
|
|
10100
10294
|
input: assoc("overflow", "hidden"),
|
|
10101
10295
|
multiValue: function multiValue(styles, _ref2) {
|
|
@@ -10266,10 +10460,6 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10266
10460
|
_useState2 = _slicedToArray$1(_useState, 2),
|
|
10267
10461
|
showPane = _useState2[0],
|
|
10268
10462
|
setShowPane = _useState2[1];
|
|
10269
|
-
var _useStateWithDependen = useStateWithDependency(null, [selectedField]),
|
|
10270
|
-
_useStateWithDependen2 = _slicedToArray$1(_useStateWithDependen, 2),
|
|
10271
|
-
selectedTemplate = _useStateWithDependen2[0],
|
|
10272
|
-
setSelectedTemplate = _useStateWithDependen2[1];
|
|
10273
10463
|
var initialFocusRef = useRef(null);
|
|
10274
10464
|
var editorRef = useRef(null);
|
|
10275
10465
|
var _useTranslation = useTranslation(),
|
|
@@ -10282,12 +10472,7 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10282
10472
|
var defaultLabel = (selectedField === null || selectedField === void 0 ? void 0 : selectedField.smsPlaceholder) || t("neetoRules.common.sms");
|
|
10283
10473
|
var templates = selectedField === null || selectedField === void 0 ? void 0 : selectedField.templates;
|
|
10284
10474
|
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);
|
|
10475
|
+
var handleTemplateChange = function handleTemplateChange(template) {
|
|
10291
10476
|
setFieldValue("".concat(name, ".body"), template.body);
|
|
10292
10477
|
setEditorContent(editorRef, template.body);
|
|
10293
10478
|
};
|
|
@@ -10329,18 +10514,10 @@ var SmsFields = function SmsFields(_ref) {
|
|
|
10329
10514
|
weight: "semibold"
|
|
10330
10515
|
}, defaultLabel)), /*#__PURE__*/React__default.createElement(Pane.Body, null, /*#__PURE__*/React__default.createElement("div", {
|
|
10331
10516
|
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,
|
|
10517
|
+
}, isTemplateSelectionEnabled && /*#__PURE__*/React__default.createElement(SelectTemplateField, {
|
|
10518
|
+
initialFocusRef: initialFocusRef,
|
|
10519
|
+
selectedField: selectedField,
|
|
10520
|
+
templates: templates,
|
|
10344
10521
|
onChange: handleTemplateChange
|
|
10345
10522
|
}), showPhoneNumberInput && /*#__PURE__*/React__default.createElement(PhoneNumberField, {
|
|
10346
10523
|
phoneNumbers: phoneNumbers,
|
|
@@ -10454,6 +10631,14 @@ var ActionSubItems = function ActionSubItems(_ref) {
|
|
|
10454
10631
|
key: name
|
|
10455
10632
|
}));
|
|
10456
10633
|
}
|
|
10634
|
+
if ((selectedField === null || selectedField === void 0 ? void 0 : selectedField.type) === ACTION_TYPES.sendToApi) {
|
|
10635
|
+
return /*#__PURE__*/React__default.createElement(ApiFields, {
|
|
10636
|
+
index: index,
|
|
10637
|
+
name: name,
|
|
10638
|
+
selectedField: selectedField,
|
|
10639
|
+
key: name
|
|
10640
|
+
});
|
|
10641
|
+
}
|
|
10457
10642
|
if ((selectedField === null || selectedField === void 0 ? void 0 : selectedField.type) === ACTION_TYPES.dropdown) {
|
|
10458
10643
|
return /*#__PURE__*/React__default.createElement(DropdownField$1, {
|
|
10459
10644
|
index: index,
|