@bigbinary/neeto-rules-frontend 2.7.18 → 2.7.20

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.
Files changed (64) hide show
  1. package/app/javascript/src/translations/ar.json +1 -1
  2. package/app/javascript/src/translations/bg.json +1 -1
  3. package/app/javascript/src/translations/ca.json +1 -1
  4. package/app/javascript/src/translations/cs.json +1 -1
  5. package/app/javascript/src/translations/da.json +1 -1
  6. package/app/javascript/src/translations/en.json +2 -1
  7. package/app/javascript/src/translations/es-MX.json +1 -1
  8. package/app/javascript/src/translations/et.json +1 -1
  9. package/app/javascript/src/translations/fi.json +1 -1
  10. package/app/javascript/src/translations/fil.json +1 -1
  11. package/app/javascript/src/translations/fr.json +1 -1
  12. package/app/javascript/src/translations/he.json +1 -1
  13. package/app/javascript/src/translations/hi.json +1 -1
  14. package/app/javascript/src/translations/hr.json +1 -1
  15. package/app/javascript/src/translations/hu.json +1 -1
  16. package/app/javascript/src/translations/id.json +1 -1
  17. package/app/javascript/src/translations/it.json +1 -1
  18. package/app/javascript/src/translations/ja.json +1 -1
  19. package/app/javascript/src/translations/ko.json +1 -1
  20. package/app/javascript/src/translations/nl.json +1 -1
  21. package/app/javascript/src/translations/pl.json +1 -1
  22. package/app/javascript/src/translations/pt.json +1 -1
  23. package/app/javascript/src/translations/ro.json +1 -1
  24. package/app/javascript/src/translations/ru.json +1 -1
  25. package/app/javascript/src/translations/sk.json +1 -1
  26. package/app/javascript/src/translations/sl.json +1 -1
  27. package/app/javascript/src/translations/sv.json +1 -1
  28. package/app/javascript/src/translations/tr.json +1 -1
  29. package/app/javascript/src/translations/uk.json +1 -1
  30. package/app/javascript/src/translations/vi.json +1 -1
  31. package/app/javascript/src/translations/zh-CN.json +1 -1
  32. package/app/javascript/src/translations/zh-TW.json +1 -1
  33. package/dist/.ready +1 -1
  34. package/dist/NeetoRulesBuilder.js +51 -17
  35. package/dist/NeetoRulesBuilder.js.map +1 -1
  36. package/dist/NeetoRulesForm.js +2 -2
  37. package/dist/cjs/NeetoRulesBuilder.js +50 -16
  38. package/dist/cjs/NeetoRulesBuilder.js.map +1 -1
  39. package/dist/cjs/NeetoRulesForm.js +2 -2
  40. package/dist/cjs/index.js +2 -2
  41. package/dist/cjs/v2/NeetoRulesBuilder.js +50 -16
  42. package/dist/cjs/v2/NeetoRulesBuilder.js.map +1 -1
  43. package/dist/cjs/v2/NeetoRulesForm.js +2 -2
  44. package/dist/cjs/v2/index.js +2 -2
  45. package/dist/{index-k-eGkX-R.js → index-BXLCiV70.js} +2 -2
  46. package/dist/{index-k-eGkX-R.js.map → index-BXLCiV70.js.map} +1 -1
  47. package/dist/{index-DwGEK-_1.js → index-DMCgC01M.js} +2 -2
  48. package/dist/{index-DwGEK-_1.js.map → index-DMCgC01M.js.map} +1 -1
  49. package/dist/{index-ogJeZ752.js → index-D_dEe2Gg.js} +2 -2
  50. package/dist/{index-ogJeZ752.js.map → index-D_dEe2Gg.js.map} +1 -1
  51. package/dist/{index-Vt6GY_o0.js → index-hvuc6OIP.js} +2 -2
  52. package/dist/{index-Vt6GY_o0.js.map → index-hvuc6OIP.js.map} +1 -1
  53. package/dist/index.js +2 -2
  54. package/dist/keyboardShortcuts-DXP5YgeG.js +92 -0
  55. package/dist/{keyboardShortcuts-SAk712q8.js.map → keyboardShortcuts-DXP5YgeG.js.map} +1 -1
  56. package/dist/keyboardShortcuts-lX0oq49M.js +96 -0
  57. package/dist/{keyboardShortcuts-DNOhEY8h.js.map → keyboardShortcuts-lX0oq49M.js.map} +1 -1
  58. package/dist/v2/NeetoRulesBuilder.js +51 -17
  59. package/dist/v2/NeetoRulesBuilder.js.map +1 -1
  60. package/dist/v2/NeetoRulesForm.js +2 -2
  61. package/dist/v2/index.js +2 -2
  62. package/package.json +1 -1
  63. package/dist/keyboardShortcuts-DNOhEY8h.js +0 -88
  64. package/dist/keyboardShortcuts-SAk712q8.js +0 -92
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _objectDestructuringEmpty = require('@babel/runtime/helpers/objectDestructuringEmpty');
5
- require('../keyboardShortcuts-SAk712q8.js');
5
+ require('../keyboardShortcuts-lX0oq49M.js');
6
6
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
7
7
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
8
8
  var shallow = require('zustand/shallow');
@@ -17,7 +17,7 @@ var useUtilityStore = require('../useUtilityStore-C_U20IMX.js');
17
17
  var classNames = require('classnames');
18
18
  var Typography = require('@bigbinary/neetoui/Typography');
19
19
  var ramda = require('ramda');
20
- var index = require('../index-DwGEK-_1.js');
20
+ var index = require('../index-DMCgC01M.js');
21
21
  var useCustomDataStore = require('../useCustomDataStore-DxFx8aCf.js');
22
22
  var jsxRuntime = require('react/jsx-runtime');
23
23
  var utils = require('@bigbinary/neeto-commons-frontend/utils');
package/dist/cjs/index.js CHANGED
@@ -54,9 +54,9 @@ require('@hello-pangea/dnd');
54
54
  require('@bigbinary/neeto-icons/Drag');
55
55
  require('react-router-dom');
56
56
  require('@babel/runtime/helpers/objectDestructuringEmpty');
57
- require('../keyboardShortcuts-SAk712q8.js');
57
+ require('../keyboardShortcuts-lX0oq49M.js');
58
58
  require('classnames');
59
- require('../index-DwGEK-_1.js');
59
+ require('../index-DMCgC01M.js');
60
60
  require('@babel/runtime/helpers/typeof');
61
61
  require('yup');
62
62
  require('@bigbinary/neeto-icons/Search');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _objectDestructuringEmpty = require('@babel/runtime/helpers/objectDestructuringEmpty');
5
- var keyboardShortcuts = require('../../keyboardShortcuts-SAk712q8.js');
5
+ var keyboardShortcuts = require('../../keyboardShortcuts-lX0oq49M.js');
6
6
  var shallow = require('zustand/shallow');
7
7
  var react = require('react');
8
8
  var neetoAtoms = require('@bigbinary/neeto-atoms');
@@ -13,7 +13,7 @@ var neetoCist = require('@bigbinary/neeto-cist');
13
13
  var Container = require('@bigbinary/neeto-molecules/v2/Container');
14
14
  var Header = require('@bigbinary/neeto-molecules/v2/Header');
15
15
  var reactI18next = require('react-i18next');
16
- var index = require('../../index-Vt6GY_o0.js');
16
+ var index = require('../../index-hvuc6OIP.js');
17
17
  var useCustomDataStore = require('../../useCustomDataStore-D9k8F5g-.js');
18
18
  var useUtilityStore = require('../../useUtilityStore-DkxAexDw.js');
19
19
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
@@ -24,8 +24,8 @@ var Delete = require('@bigbinary/neeto-icons/Delete');
24
24
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
25
25
  var jsxRuntime = require('react/jsx-runtime');
26
26
  var i18next = require('i18next');
27
- var reactUtils = require('@bigbinary/neeto-commons-frontend/v2/react-utils');
28
27
  var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
28
+ var useHotkeys = require('@bigbinary/neeto-hotkeys');
29
29
  var Search = require('@bigbinary/neeto-icons/Search');
30
30
  var utils = require('@bigbinary/neeto-commons-frontend/v2/utils');
31
31
  var utils$1 = require('../../utils-B3roKiff.js');
@@ -39,10 +39,10 @@ require('axios');
39
39
  require('../../index-DFwPrb81.js');
40
40
  require('yup');
41
41
  require('lucide-react');
42
+ require('@bigbinary/neeto-commons-frontend/v2/react-utils');
42
43
  require('@monaco-editor/react');
43
44
  require('@bigbinary/neeto-molecules/v2/DynamicVariables');
44
45
  require('@bigbinary/neeto-editor/v2/FormikEditor');
45
- require('@bigbinary/neeto-hotkeys');
46
46
  require('react-select/creatable');
47
47
  require('@babel/runtime/helpers/toArray');
48
48
  require('@bigbinary/neeto-molecules/v2/PhoneNumber');
@@ -214,6 +214,21 @@ var TOKEN_STATE = {
214
214
  };
215
215
  var STATE_CLASS = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, TOKEN_STATE.PLACEHOLDER, "mb-placeholder"), TOKEN_STATE.PLACEHOLDER_NEXT, "mb-placeholder mb-placeholder-next"), TOKEN_STATE.DISABLED, "mb-placeholder mb-placeholder-disabled"), TOKEN_STATE.FILLED, "mb-tok"), TOKEN_STATE.MUTED, "mb-tok mb-tok-muted");
216
216
 
217
+ // The flash is a run-once CSS animation, so a repeat submit while it is still
218
+ // applied would not replay it on its own.
219
+ var useReplayFlash = function useReplayFlash(flashSeq) {
220
+ var ref = react.useRef(null);
221
+ react.useEffect(function () {
222
+ var _ref$current, _ref$current$getAnima;
223
+ if (!flashSeq) return;
224
+ (_ref$current = ref.current) === null || _ref$current === void 0 || (_ref$current$getAnima = _ref$current.getAnimations) === null || _ref$current$getAnima === void 0 || _ref$current$getAnima.call(_ref$current).forEach(function (animation) {
225
+ animation.cancel();
226
+ animation.play();
227
+ });
228
+ }, [flashSeq]);
229
+ return ref;
230
+ };
231
+
217
232
  var _excluded = ["children", "state", "active", "invalid", "onClick", "className", "dataTestid"];
218
233
  function ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
219
234
  function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -230,8 +245,10 @@ var Token = function Token(_ref) {
230
245
  dataTestid = _ref.dataTestid,
231
246
  rest = _objectWithoutProperties(_ref, _excluded);
232
247
  var isInteractive = typeof onClick === "function" && state !== TOKEN_STATE.DISABLED;
248
+ var tokenRef = useReplayFlash(invalid);
233
249
  return /*#__PURE__*/jsxRuntime.jsx("span", _objectSpread$c(_objectSpread$c({
234
250
  "data-testid": dataTestid,
251
+ ref: tokenRef,
235
252
  role: isInteractive ? "button" : undefined,
236
253
  tabIndex: isInteractive ? 0 : undefined,
237
254
  className: classNames(
@@ -994,15 +1011,17 @@ var DelayRow = function DelayRow(_ref) {
994
1011
  });
995
1012
  };
996
1013
 
997
- var MetaBlock = reactUtils.withT(function (_ref) {
998
- var t = _ref.t,
999
- rule = _ref.rule,
1014
+ var MetaBlock = function MetaBlock(_ref) {
1015
+ var rule = _ref.rule,
1000
1016
  _ref$showName = _ref.showName,
1001
1017
  showName = _ref$showName === void 0 ? true : _ref$showName,
1002
1018
  _ref$isInvalid = _ref.isInvalid,
1003
1019
  isInvalid = _ref$isInvalid === void 0 ? false : _ref$isInvalid,
1004
1020
  handleEditName = _ref.onEditName,
1005
1021
  handleToggleActive = _ref.onToggleActive;
1022
+ var _useTranslation = reactI18next.useTranslation(),
1023
+ t = _useTranslation.t;
1024
+ var nameRef = useReplayFlash(isInvalid);
1006
1025
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
1007
1026
  className: "mb-meta",
1008
1027
  children: [showName && /*#__PURE__*/jsxRuntime.jsxs("div", {
@@ -1011,6 +1030,7 @@ var MetaBlock = reactUtils.withT(function (_ref) {
1011
1030
  className: "mb-meta-label",
1012
1031
  children: t("neetoRules.builder.automationName")
1013
1032
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
1033
+ ref: nameRef,
1014
1034
  role: handleEditName ? "button" : undefined,
1015
1035
  tabIndex: handleEditName ? 0 : undefined,
1016
1036
  className: classNames("mb-meta-input-wrap", {
@@ -1060,7 +1080,7 @@ var MetaBlock = reactUtils.withT(function (_ref) {
1060
1080
  }), t("neetoRules.builder.activateThisAutomation")]
1061
1081
  })]
1062
1082
  });
1063
- });
1083
+ };
1064
1084
 
1065
1085
  function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1066
1086
  function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -2699,10 +2719,10 @@ var Canvas = function Canvas(_ref) {
2699
2719
  var flatErrors = react.useMemo(function () {
2700
2720
  return keyboardShortcuts.flatten(errors || {});
2701
2721
  }, [errors]);
2702
- var _useState = react.useState(false),
2722
+ var _useState = react.useState(0),
2703
2723
  _useState2 = _slicedToArray(_useState, 2),
2704
- flashing = _useState2[0],
2705
- setFlashing = _useState2[1];
2724
+ flashSeq = _useState2[0],
2725
+ setFlashSeq = _useState2[1];
2706
2726
  var lastSubmitCount = react.useRef(submitCount);
2707
2727
  react.useEffect(function () {
2708
2728
  if (submitCount <= lastSubmitCount.current) return undefined;
@@ -2716,9 +2736,9 @@ var Canvas = function Canvas(_ref) {
2716
2736
  }))) {
2717
2737
  return undefined;
2718
2738
  }
2719
- setFlashing(true);
2739
+ setFlashSeq(submitCount);
2720
2740
  var timer = setTimeout(function () {
2721
- return setFlashing(false);
2741
+ return setFlashSeq(0);
2722
2742
  }, 2200);
2723
2743
  return function () {
2724
2744
  return clearTimeout(timer);
@@ -2735,11 +2755,10 @@ var Canvas = function Canvas(_ref) {
2735
2755
  });
2736
2756
  });
2737
2757
  };
2738
- var isInvalid = function isInvalid(_ref4) {
2758
+ var matchesInvalid = function matchesInvalid(_ref4) {
2739
2759
  var _schema$actions, _schema$actions$actio, _schema$actions2, _schema$actions2$rend, _schema$actions3, _schema$actions3$rend, _schema$actions4, _schema$actions4$opti, _schema$actions5, _schema$actions5$opti;
2740
2760
  var type = _ref4.type,
2741
2761
  index = _ref4.index;
2742
- if (!flashing) return false;
2743
2762
  var conditionMeta = "".concat(fieldKeys.conditions, ".value.").concat(index, ".metadata");
2744
2763
  var actionMeta = "".concat(fieldKeys.actions, ".value.").concat(index, ".metadata");
2745
2764
  // eslint-disable-next-line security/detect-object-injection
@@ -2818,6 +2837,12 @@ var Canvas = function Canvas(_ref) {
2818
2837
  return false;
2819
2838
  }
2820
2839
  };
2840
+
2841
+ // Returns the submit generation, not a boolean, so consumers can replay the
2842
+ // flash animation when the same token is still invalid on a repeat submit.
2843
+ var isInvalid = function isInvalid(args) {
2844
+ return flashSeq && matchesInvalid(args) ? flashSeq : 0;
2845
+ };
2821
2846
  var closePaneIfTargeting = function closePaneIfTargeting(_ref5) {
2822
2847
  var anchors = _ref5.anchors,
2823
2848
  index = _ref5.index;
@@ -3439,6 +3464,10 @@ var ConfigPane = function ConfigPane(_ref) {
3439
3464
  return _ref2.apply(this, arguments);
3440
3465
  };
3441
3466
  }();
3467
+ useHotkeys(keyboardShortcuts.SHORTCUTS["continue"].sequence, handleContinue, {
3468
+ enabled: shouldAdvanceToRecipient,
3469
+ mode: "global"
3470
+ });
3442
3471
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
3443
3472
  children: [/*#__PURE__*/jsxRuntime.jsx(index.Panel.Header, {
3444
3473
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
@@ -3900,6 +3929,11 @@ var OptionsPane = function OptionsPane(_ref) {
3900
3929
  data: target.data
3901
3930
  });else closePane();
3902
3931
  };
3932
+ var canContinue = cascade && selectedValues.some(Boolean);
3933
+ useHotkeys(keyboardShortcuts.SHORTCUTS["continue"].sequence, handleContinue, {
3934
+ enabled: canContinue,
3935
+ mode: "global"
3936
+ });
3903
3937
  var optionLabel = function optionLabel(option) {
3904
3938
  var Icon = option.icon;
3905
3939
  if (!Icon && !option.disabledReason) return option.label;
@@ -4012,7 +4046,7 @@ var OptionsPane = function OptionsPane(_ref) {
4012
4046
  children: [renderBody(), belowContent]
4013
4047
  }), cascade && /*#__PURE__*/jsxRuntime.jsx(index.Panel.Footer, {
4014
4048
  children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
4015
- disabled: !selectedValues.some(Boolean),
4049
+ disabled: !canContinue,
4016
4050
  label: t("neetoRules.buttons.continue"),
4017
4051
  size: "lg",
4018
4052
  onClick: handleContinue