@bigbinary/neeto-rules-frontend 2.0.5 → 2.2.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.
Files changed (50) hide show
  1. package/dist/NeetoRules.js +9837 -0
  2. package/dist/NeetoRules.js.map +1 -0
  3. package/dist/NeetoRulesForm.js +5193 -0
  4. package/dist/NeetoRulesForm.js.map +1 -0
  5. package/dist/RulePreview.js +483 -0
  6. package/dist/RulePreview.js.map +1 -0
  7. package/dist/{index.cjs.js → cjs/NeetoRules.js} +182 -6073
  8. package/dist/cjs/NeetoRules.js.map +1 -0
  9. package/dist/cjs/NeetoRulesForm.js +5248 -0
  10. package/dist/cjs/NeetoRulesForm.js.map +1 -0
  11. package/dist/cjs/RulePreview.js +495 -0
  12. package/dist/cjs/RulePreview.js.map +1 -0
  13. package/dist/cjs/constants.js +10 -0
  14. package/dist/cjs/constants.js.map +1 -0
  15. package/dist/cjs/hooks.js +12 -0
  16. package/dist/cjs/hooks.js.map +1 -0
  17. package/dist/cjs/index.js +86 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/constants-12c6ac46.js +5 -0
  20. package/dist/constants-12c6ac46.js.map +1 -0
  21. package/dist/constants-2f1113f8.js +8 -0
  22. package/dist/constants-2f1113f8.js.map +1 -0
  23. package/dist/constants-67118957.js +55 -0
  24. package/dist/constants-67118957.js.map +1 -0
  25. package/dist/constants-7347bfc4.js +48 -0
  26. package/dist/constants-7347bfc4.js.map +1 -0
  27. package/dist/constants.js +2 -0
  28. package/dist/constants.js.map +1 -0
  29. package/dist/hooks.js +4 -0
  30. package/dist/hooks.js.map +1 -0
  31. package/dist/index.js +73 -15692
  32. package/dist/index.js.map +1 -1
  33. package/dist/slicedToArray-2af6bc03.js +98 -0
  34. package/dist/slicedToArray-2af6bc03.js.map +1 -0
  35. package/dist/slicedToArray-cc928132.js +106 -0
  36. package/dist/slicedToArray-cc928132.js.map +1 -0
  37. package/dist/toConsumableArray-1215bc07.js +53 -0
  38. package/dist/toConsumableArray-1215bc07.js.map +1 -0
  39. package/dist/toConsumableArray-9f1f441a.js +58 -0
  40. package/dist/toConsumableArray-9f1f441a.js.map +1 -0
  41. package/dist/useCustomDataStore-51ceac06.js +13 -0
  42. package/dist/useCustomDataStore-51ceac06.js.map +1 -0
  43. package/dist/useCustomDataStore-c57f5581.js +15 -0
  44. package/dist/useCustomDataStore-c57f5581.js.map +1 -0
  45. package/dist/useUtilityStore-e4b36ba2.js +27 -0
  46. package/dist/useUtilityStore-e4b36ba2.js.map +1 -0
  47. package/dist/useUtilityStore-ee4f96f8.js +25 -0
  48. package/dist/useUtilityStore-ee4f96f8.js.map +1 -0
  49. package/package.json +23 -11
  50. package/dist/index.cjs.js.map +0 -1
@@ -0,0 +1,483 @@
1
+ import { shallow } from 'zustand/shallow';
2
+ import { findBy, isNotEmpty } from '@bigbinary/neeto-cist';
3
+ import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
4
+ import PageLoader from '@bigbinary/neeto-molecules/PageLoader';
5
+ import Pane from '@bigbinary/neetoui/Pane';
6
+ import Typography from '@bigbinary/neetoui/Typography';
7
+ import { useTranslation } from 'react-i18next';
8
+ import { u as useUtilityStore } from './useUtilityStore-ee4f96f8.js';
9
+ import { a as _slicedToArray, _ as _defineProperty } from './slicedToArray-2af6bc03.js';
10
+ import { Fragment as Fragment$1, useState } from 'react';
11
+ import Down from '@bigbinary/neeto-icons/Down';
12
+ import Up from '@bigbinary/neeto-icons/Up';
13
+ import Button from '@bigbinary/neetoui/Button';
14
+ import { pluck } from 'ramda';
15
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
16
+ import { V as VERB_LABELS } from './constants-7347bfc4.js';
17
+ import '@bigbinary/neeto-commons-frontend/react-utils';
18
+ import 'zustand';
19
+ import 'i18next';
20
+
21
+ var Title = function Title(_ref) {
22
+ var title = _ref.title,
23
+ children = _ref.children;
24
+ return /*#__PURE__*/jsxs(Fragment, {
25
+ children: [/*#__PURE__*/jsx(Typography, {
26
+ className: "neeto-ui-text-gray-800",
27
+ style: "h5",
28
+ weight: "semibold",
29
+ children: title
30
+ }), /*#__PURE__*/jsx("div", {
31
+ className: "neeto-ui-bg-gray-100 neeto-ui-rounded-sm my-3 p-4",
32
+ children: children
33
+ })]
34
+ });
35
+ };
36
+
37
+ var PREVIEW_CONDITION_LIMIT = 3;
38
+ var ACTION_TYPE = {
39
+ TEXT: "text",
40
+ NUMBER: "number",
41
+ DECIMAL: "decimal",
42
+ REGEX: "regex",
43
+ DATE: "date",
44
+ EMAIL: "email",
45
+ EMAIL_TO: "emailTo",
46
+ EMAIL_TO_IDS: "emailToIds",
47
+ SMS_TO_NUMBERS: "smsToNumbers",
48
+ MULTI_SELECT: "multiSelect",
49
+ SEND_TO_API: "sendToApi",
50
+ DROPDOWN: "dropdown",
51
+ MULTISELECT: "multiSelect"
52
+ };
53
+ var TEXT_FIELDS = [ACTION_TYPE.TEXT, ACTION_TYPE.NUMBER, ACTION_TYPE.DECIMAL, ACTION_TYPE.REGEX, ACTION_TYPE.DATE];
54
+
55
+ var MultiSelectValues = function MultiSelectValues(_ref) {
56
+ var separator = _ref.separator,
57
+ values = _ref.values;
58
+ return /*#__PURE__*/jsx(Fragment, {
59
+ children: values === null || values === void 0 ? void 0 : values.map(function (value, idx) {
60
+ return /*#__PURE__*/jsxs(Fragment$1, {
61
+ children: [!!idx && /*#__PURE__*/jsx(Typography, {
62
+ className: "neeto-ui-text-gray-700",
63
+ style: "h5",
64
+ weight: "normal",
65
+ children: separator
66
+ }), /*#__PURE__*/jsx(Typography, {
67
+ className: "neeto-ui-text-gray-800",
68
+ style: "h5",
69
+ weight: "semibold",
70
+ children: value.toLowerCase()
71
+ })]
72
+ }, idx);
73
+ })
74
+ });
75
+ };
76
+
77
+ var getEntityDisplayValue = function getEntityDisplayValue(entitiy, entitiyOption) {
78
+ var _findBy;
79
+ return (_findBy = findBy({
80
+ value: entitiy.metadata.value
81
+ }, entitiyOption.dropdownOptions)) === null || _findBy === void 0 || (_findBy = _findBy.label) === null || _findBy === void 0 ? void 0 : _findBy.toLowerCase();
82
+ };
83
+ var getActionDisplayValue = function getActionDisplayValue(action, actionOption) {
84
+ var displayValueData = {
85
+ displayValue: null,
86
+ isBulk: false
87
+ };
88
+ if (TEXT_FIELDS.includes(actionOption.type)) {
89
+ var _action$metadata$valu;
90
+ displayValueData.displayValue = (_action$metadata$valu = action.metadata.value) === null || _action$metadata$valu === void 0 ? void 0 : _action$metadata$valu.toLowerCase();
91
+ return displayValueData;
92
+ }
93
+ switch (actionOption.type) {
94
+ case ACTION_TYPE.DROPDOWN:
95
+ {
96
+ displayValueData.displayValue = getEntityDisplayValue(action, actionOption);
97
+ return displayValueData;
98
+ }
99
+ case ACTION_TYPE.EMAIL_TO_IDS:
100
+ {
101
+ displayValueData.isBulk = true;
102
+ displayValueData.displayValue = action.metadata.emails;
103
+ return displayValueData;
104
+ }
105
+ case ACTION_TYPE.EMAIL_TO:
106
+ {
107
+ displayValueData.displayValue = action.displayValue;
108
+ return displayValueData;
109
+ }
110
+ case ACTION_TYPE.SMS_TO_NUMBERS:
111
+ {
112
+ displayValueData.isBulk = true;
113
+ displayValueData.displayValue = action.metadata.phoneNumbers;
114
+ return displayValueData;
115
+ }
116
+ case ACTION_TYPE.SEND_TO_API:
117
+ {
118
+ displayValueData.displayValue = action.metadata.endpoint;
119
+ return displayValueData;
120
+ }
121
+ default:
122
+ return null;
123
+ }
124
+ };
125
+
126
+ var ActionsDetail = function ActionsDetail(_ref) {
127
+ var actions = _ref.actions;
128
+ var _useState = useState(false),
129
+ _useState2 = _slicedToArray(_useState, 2),
130
+ viewMore = _useState2[0],
131
+ setViewMore = _useState2[1];
132
+ var _useTranslation = useTranslation(),
133
+ t = _useTranslation.t;
134
+ var actionsList = actions.value;
135
+ var allActions = viewMore && actionsList.length > 4 ? actionsList : actionsList.slice(0, 4);
136
+ var getLabel = function getLabel(index) {
137
+ return index ? t("neetoRules.common.and", {
138
+ what: t("neetoRules.common.then")
139
+ }) : t("neetoRules.common.then");
140
+ };
141
+ var renderActionValues = function renderActionValues(action, actionOption) {
142
+ var _actionOption$separat, _getActionDisplayValu;
143
+ var commonSeperator = actionOption.type === ACTION_TYPE.SEND_TO_API ? t("neetoRules.common.at") : t("neetoRules.common.to");
144
+ var separator = (actionOption === null || actionOption === void 0 || (_actionOption$separat = actionOption.separator) === null || _actionOption$separat === void 0 ? void 0 : _actionOption$separat.toLowerCase()) || commonSeperator;
145
+ var _ref2 = (_getActionDisplayValu = getActionDisplayValue(action, actionOption)) !== null && _getActionDisplayValu !== void 0 ? _getActionDisplayValu : {},
146
+ displayValue = _ref2.displayValue,
147
+ isBulk = _ref2.isBulk;
148
+ if (actionOption.type === ACTION_TYPE.MULTISELECT) {
149
+ var values = pluck("label", actionOption.dropdownOptions.filter(function (_ref3) {
150
+ var value = _ref3.value;
151
+ return action.metadata.value.includes(value);
152
+ }));
153
+ return /*#__PURE__*/jsx(MultiSelectValues, {
154
+ values: values,
155
+ separator: t("neetoRules.common.and", {
156
+ what: ""
157
+ })
158
+ });
159
+ }
160
+ if (!displayValue) return null;
161
+ if (!isBulk) {
162
+ return /*#__PURE__*/jsxs(Fragment, {
163
+ children: [/*#__PURE__*/jsx(Typography, {
164
+ className: "neeto-ui-text-gray-700",
165
+ style: "h5",
166
+ weight: "normal",
167
+ children: separator
168
+ }), /*#__PURE__*/jsx(Typography, {
169
+ className: "neeto-ui-text-gray-800",
170
+ style: "h5",
171
+ weight: "semibold",
172
+ children: displayValue === null || displayValue === void 0 ? void 0 : displayValue.toLowerCase()
173
+ })]
174
+ });
175
+ }
176
+ return displayValue.map(function (value, index) {
177
+ return /*#__PURE__*/jsxs("div", {
178
+ className: "mr-1 flex",
179
+ children: [/*#__PURE__*/jsx(Typography, {
180
+ style: "h5",
181
+ weight: "semibold",
182
+ children: value
183
+ }, index), index !== displayValue.length - 1 && ", "]
184
+ }, index);
185
+ });
186
+ };
187
+ var renderAction = function renderAction(action) {
188
+ var actionOption = findBy({
189
+ value: action.name
190
+ }, actions.actionOptions);
191
+ if (!actionOption) return null;
192
+ return /*#__PURE__*/jsxs(Fragment, {
193
+ children: [/*#__PURE__*/jsx(Typography, {
194
+ className: "neeto-ui-text-gray-800",
195
+ style: "h5",
196
+ weight: "semibold",
197
+ children: actionOption === null || actionOption === void 0 ? void 0 : actionOption.label.toLowerCase()
198
+ }), renderActionValues(action, actionOption)]
199
+ });
200
+ };
201
+ return /*#__PURE__*/jsxs(Title, {
202
+ title: t("neetoRules.common.then"),
203
+ children: [allActions.map(function (action, index) {
204
+ return /*#__PURE__*/jsxs("div", {
205
+ className: "mb-2 flex flex-wrap gap-x-1 gap-y-2",
206
+ "data-cy": "then-action-events",
207
+ children: [/*#__PURE__*/jsx(Typography, {
208
+ className: "neeto-ui-text-gray-700",
209
+ style: "h5",
210
+ weight: "normal",
211
+ children: getLabel(index)
212
+ }), renderAction(action)]
213
+ }, action.name);
214
+ }), actionsList.length > 4 && /*#__PURE__*/jsx("div", {
215
+ className: "mt-3 w-full",
216
+ children: /*#__PURE__*/jsx(Button, {
217
+ icon: !viewMore ? Down : Up,
218
+ size: "small",
219
+ style: "link",
220
+ label: !viewMore ? t("neetoRules.common.viewMore") : t("neetoRules.common.viewLess"),
221
+ onClick: function onClick() {
222
+ return setViewMore(function (prevState) {
223
+ return !prevState;
224
+ });
225
+ }
226
+ })
227
+ })]
228
+ });
229
+ };
230
+
231
+ function ownKeys(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; }
232
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
233
+ var ConditionsDetail = function ConditionsDetail(_ref) {
234
+ var conditions = _ref.conditions,
235
+ conditionOptions = _ref.conditionOptions,
236
+ _ref$conditionVerbs = _ref.conditionVerbs,
237
+ conditionVerbs = _ref$conditionVerbs === void 0 ? {} : _ref$conditionVerbs,
238
+ _ref$hasEvent = _ref.hasEvent,
239
+ hasEvent = _ref$hasEvent === void 0 ? true : _ref$hasEvent;
240
+ var _useState = useState(false),
241
+ _useState2 = _slicedToArray(_useState, 2),
242
+ viewMore = _useState2[0],
243
+ setViewMore = _useState2[1];
244
+ var _useTranslation = useTranslation(),
245
+ t = _useTranslation.t;
246
+ var conditionsList = conditions.value;
247
+ var allConditions = viewMore && conditionsList.length > PREVIEW_CONDITION_LIMIT ? conditionsList : conditionsList.slice(0, PREVIEW_CONDITION_LIMIT);
248
+ var allConditionVerbs = _objectSpread(_objectSpread({}, VERB_LABELS), conditionVerbs);
249
+ var getLogicOperator = function getLogicOperator(joinType) {
250
+ return joinType === "or_operator" ? "or" : "and";
251
+ };
252
+ var renderConditionValues = function renderConditionValues(condition, conditionOption) {
253
+ if (["email", "text", "number"].includes(conditionOption.type)) {
254
+ var _condition$metadata$v;
255
+ return /*#__PURE__*/jsx(Typography, {
256
+ className: "neeto-ui-text-gray-800",
257
+ style: "h5",
258
+ weight: "semibold",
259
+ children: (_condition$metadata$v = condition.metadata.value) === null || _condition$metadata$v === void 0 ? void 0 : _condition$metadata$v.toLowerCase()
260
+ });
261
+ }
262
+ if (conditionOption.type === "multi-select") {
263
+ var values = pluck("label", conditionOption.dropdownOptions.filter(function (_ref2) {
264
+ var value = _ref2.value;
265
+ return condition.metadata.values.includes(value);
266
+ }));
267
+ return /*#__PURE__*/jsx(MultiSelectValues, {
268
+ values: values,
269
+ separator: t("neetoRules.common.or")
270
+ });
271
+ }
272
+ if (conditionOption.type === "dropdown") {
273
+ return /*#__PURE__*/jsx(Typography, {
274
+ className: "neeto-ui-text-gray-800",
275
+ style: "h5",
276
+ weight: "semibold",
277
+ children: getEntityDisplayValue(condition, conditionOption)
278
+ });
279
+ }
280
+ return null;
281
+ };
282
+ var renderCondition = function renderCondition(condition) {
283
+ var _allConditionVerbs$co;
284
+ var conditionOption = findBy({
285
+ value: condition.field
286
+ }, conditionOptions);
287
+ if (!conditionOption) return null;
288
+ var conditionVerb = (_allConditionVerbs$co = allConditionVerbs[condition.verb]) === null || _allConditionVerbs$co === void 0 ? void 0 : _allConditionVerbs$co.toLowerCase();
289
+ return /*#__PURE__*/jsxs(Fragment, {
290
+ children: [/*#__PURE__*/jsx(Typography, {
291
+ className: "neeto-ui-text-gray-800",
292
+ style: "h5",
293
+ weight: "semibold",
294
+ children: conditionOption === null || conditionOption === void 0 ? void 0 : conditionOption.label.toLowerCase()
295
+ }), /*#__PURE__*/jsx(Typography, {
296
+ className: "neeto-ui-text-gray-800",
297
+ style: "h5",
298
+ weight: "semibold",
299
+ children: conditionVerb
300
+ }), renderConditionValues(condition, conditionOption)]
301
+ });
302
+ };
303
+ return /*#__PURE__*/jsxs(Fragment, {
304
+ children: [/*#__PURE__*/jsx("div", {
305
+ className: "mt-2",
306
+ children: allConditions.map(function (condition, index) {
307
+ return /*#__PURE__*/jsxs("div", {
308
+ className: "mb-2 flex flex-wrap gap-x-2 gap-y-2",
309
+ children: [!index && hasEvent && /*#__PURE__*/jsx(Typography, {
310
+ className: "neeto-ui-text-gray-700",
311
+ style: "h5",
312
+ weight: "normal",
313
+ children: t("neetoRules.common.and", {
314
+ what: ""
315
+ })
316
+ }), !!index && /*#__PURE__*/jsx(Typography, {
317
+ className: "neeto-ui-text-gray-800",
318
+ style: "h5",
319
+ weight: "semibold",
320
+ children: getLogicOperator(condition.joinType)
321
+ }), /*#__PURE__*/jsx(Typography, {
322
+ className: "neeto-ui-text-gray-700",
323
+ style: "h5",
324
+ weight: "normal",
325
+ children: t("neetoRules.common.when")
326
+ }), renderCondition(condition)]
327
+ }, condition.id);
328
+ })
329
+ }), conditionsList.length > 3 && /*#__PURE__*/jsx("div", {
330
+ className: "mt-3 w-full",
331
+ children: /*#__PURE__*/jsx(Button, {
332
+ icon: !viewMore ? Down : Up,
333
+ size: "small",
334
+ style: "link",
335
+ label: !viewMore ? t("neetoRules.common.viewMore") : t("neetoRules.common.viewLess"),
336
+ onClick: function onClick() {
337
+ return setViewMore(function (prevState) {
338
+ return !prevState;
339
+ });
340
+ }
341
+ })
342
+ })]
343
+ });
344
+ };
345
+
346
+ var EventsDetail = function EventsDetail(_ref) {
347
+ var _currentPerformer$lab;
348
+ var events = _ref.events,
349
+ performer = _ref.performer,
350
+ conditions = _ref.conditions;
351
+ var _useTranslation = useTranslation(),
352
+ t = _useTranslation.t;
353
+ var eventNames = pluck("name", events.value);
354
+ var allEvents = events.eventOptions.filter(function (event) {
355
+ return eventNames === null || eventNames === void 0 ? void 0 : eventNames.includes(event.value);
356
+ });
357
+ var currentPerformer = findBy({
358
+ value: performer.value
359
+ }, performer.options);
360
+ return /*#__PURE__*/jsxs(Title, {
361
+ title: t("neetoRules.common.when"),
362
+ children: [/*#__PURE__*/jsxs("div", {
363
+ className: "flex flex-wrap gap-x-2 gap-y-2",
364
+ "data-cy": "when-condition-events",
365
+ children: [allEvents.map(function (event, index) {
366
+ return /*#__PURE__*/jsxs("div", {
367
+ className: "flex gap-x-2",
368
+ children: [!index && /*#__PURE__*/jsx(Typography, {
369
+ className: "neeto-ui-text-gray-700 my-auto",
370
+ style: "h5",
371
+ weight: "normal",
372
+ children: t("neetoRules.common.when")
373
+ }), !!index && /*#__PURE__*/jsx(Typography, {
374
+ className: "neeto-ui-text-gray-700 my-auto",
375
+ style: "h5",
376
+ weight: "normal",
377
+ children: t("neetoRules.common.or")
378
+ }), /*#__PURE__*/jsx(Typography, {
379
+ className: "neeto-ui-text-gray-800",
380
+ style: "h5",
381
+ weight: "semibold",
382
+ children: event.label.toLowerCase()
383
+ })]
384
+ }, index);
385
+ }), /*#__PURE__*/jsx(Typography, {
386
+ className: "neeto-ui-text-gray-700",
387
+ style: "h5",
388
+ weight: "normal",
389
+ children: t("neetoRules.common.by")
390
+ }), /*#__PURE__*/jsx(Typography, {
391
+ className: "neeto-ui-text-gray-800",
392
+ style: "h5",
393
+ weight: "semibold",
394
+ children: currentPerformer === null || currentPerformer === void 0 || (_currentPerformer$lab = currentPerformer.label) === null || _currentPerformer$lab === void 0 ? void 0 : _currentPerformer$lab.toLowerCase()
395
+ })]
396
+ }), /*#__PURE__*/jsx(ConditionsDetail, {
397
+ conditions: conditions,
398
+ conditionOptions: conditions.conditionOptions,
399
+ conditionVerbs: conditions.verbs
400
+ })]
401
+ });
402
+ };
403
+
404
+ var RulePreview = function RulePreview(_ref) {
405
+ var isLoading = _ref.isLoading,
406
+ ruleDetails = _ref.ruleDetails,
407
+ isOpen = _ref.isOpen,
408
+ onClose = _ref.onClose;
409
+ var _useTranslation = useTranslation(),
410
+ t = _useTranslation.t;
411
+ var _useUtilityStore = useUtilityStore(function (store) {
412
+ return {
413
+ moreActionDropdownItems: store["moreActionDropdownItems"],
414
+ showPreviewPane: store["showPreviewPane"]
415
+ };
416
+ }, shallow),
417
+ moreActionDropdownItems = _useUtilityStore.moreActionDropdownItems,
418
+ showPreviewPane = _useUtilityStore.showPreviewPane;
419
+ return /*#__PURE__*/jsx(Pane, {
420
+ onClose: onClose,
421
+ isOpen: isOpen && showPreviewPane,
422
+ children: isLoading ? /*#__PURE__*/jsx(PageLoader, {}) : /*#__PURE__*/jsxs(Fragment, {
423
+ children: [/*#__PURE__*/jsx(Pane.Header, {
424
+ children: /*#__PURE__*/jsxs("div", {
425
+ className: "flex items-center justify-between gap-x-3",
426
+ children: [/*#__PURE__*/jsx(Typography, {
427
+ className: "line-clamp-2",
428
+ style: "h4",
429
+ weight: "semibold",
430
+ children: ruleDetails.name.value
431
+ }), /*#__PURE__*/jsx(MoreDropdown, {
432
+ dropdownProps: {
433
+ strategy: "fixed"
434
+ },
435
+ menuItems: moreActionDropdownItems
436
+ })]
437
+ })
438
+ }), /*#__PURE__*/jsx(Pane.Body, {
439
+ children: /*#__PURE__*/jsxs("div", {
440
+ className: "mt-2 w-full",
441
+ children: [/*#__PURE__*/jsxs("div", {
442
+ className: "mb-6",
443
+ children: [ruleDetails.description && /*#__PURE__*/jsx(Typography, {
444
+ className: "my-auto mb-4",
445
+ style: "body2",
446
+ children: ruleDetails.description.value
447
+ }), ruleDetails.entity && /*#__PURE__*/jsxs("div", {
448
+ className: "flex space-x-8",
449
+ children: [/*#__PURE__*/jsx(Typography, {
450
+ className: "neeto-ui-text-gray-800 col-span-1",
451
+ style: "h5",
452
+ weight: "semibold",
453
+ children: ruleDetails.entity.label
454
+ }), /*#__PURE__*/jsx(Typography, {
455
+ className: "neeto-ui-text-gray-800 col-span-2",
456
+ style: "h5",
457
+ weight: "normal",
458
+ children: ruleDetails.entity.value
459
+ })]
460
+ })]
461
+ }), ruleDetails.events && isNotEmpty(ruleDetails.events) ? /*#__PURE__*/jsx(EventsDetail, {
462
+ conditions: ruleDetails.conditions,
463
+ events: ruleDetails.events,
464
+ performer: ruleDetails.performer
465
+ }) : /*#__PURE__*/jsx(Title, {
466
+ title: t("neetoRules.common.when"),
467
+ children: /*#__PURE__*/jsx(ConditionsDetail, {
468
+ conditionOptions: ruleDetails.conditions.conditionOptions,
469
+ conditionVerbs: ruleDetails.conditions.verbs,
470
+ conditions: ruleDetails.conditions,
471
+ hasEvent: false
472
+ })
473
+ }), /*#__PURE__*/jsx(ActionsDetail, {
474
+ actions: ruleDetails.actions
475
+ })]
476
+ })
477
+ })]
478
+ })
479
+ });
480
+ };
481
+
482
+ export { RulePreview as default };
483
+ //# sourceMappingURL=RulePreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RulePreview.js","sources":["../app/javascript/src/components/RulePreview/Card.jsx","../app/javascript/src/components/RulePreview/constants.js","../app/javascript/src/components/RulePreview/MultiSelectValues.jsx","../app/javascript/src/components/RulePreview/utils.js","../app/javascript/src/components/RulePreview/ActionsDetail.jsx","../app/javascript/src/components/RulePreview/ConditionsDetail.jsx","../app/javascript/src/components/RulePreview/EventsDetail.jsx","../app/javascript/src/components/RulePreview/index.jsx"],"sourcesContent":["import { Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\n\nconst Title = ({ title, children }) => (\n <>\n <Typography className=\"neeto-ui-text-gray-800\" style=\"h5\" weight=\"semibold\">\n {title}\n </Typography>\n <div className=\"neeto-ui-bg-gray-100 neeto-ui-rounded-sm my-3 p-4\">\n {children}\n </div>\n </>\n);\n\nTitle.propTypes = {\n title: PropTypes.string,\n children: PropTypes.node,\n};\nexport default Title;\n","export const PREVIEW_CONDITION_LIMIT = 3;\n\nexport const ACTION_TYPE = {\n TEXT: \"text\",\n NUMBER: \"number\",\n DECIMAL: \"decimal\",\n REGEX: \"regex\",\n DATE: \"date\",\n EMAIL: \"email\",\n EMAIL_TO: \"emailTo\",\n EMAIL_TO_IDS: \"emailToIds\",\n SMS_TO_NUMBERS: \"smsToNumbers\",\n MULTI_SELECT: \"multiSelect\",\n SEND_TO_API: \"sendToApi\",\n DROPDOWN: \"dropdown\",\n MULTISELECT: \"multiSelect\",\n};\n\nexport const TEXT_FIELDS = [\n ACTION_TYPE.TEXT,\n ACTION_TYPE.NUMBER,\n ACTION_TYPE.DECIMAL,\n ACTION_TYPE.REGEX,\n ACTION_TYPE.DATE,\n];\n","import { Fragment } from \"react\";\n\nimport { Typography } from \"neetoui\";\n\nconst MultiSelectValues = ({ separator, values }) => (\n <>\n {values?.map((value, idx) => (\n <Fragment key={idx}>\n {!!idx && (\n <Typography\n className=\"neeto-ui-text-gray-700\"\n style=\"h5\"\n weight=\"normal\"\n >\n {separator}\n </Typography>\n )}\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {value.toLowerCase()}\n </Typography>\n </Fragment>\n ))}\n </>\n);\n\nexport default MultiSelectValues;\n","import { findBy } from \"neetocist\";\n\nimport { ACTION_TYPE, TEXT_FIELDS } from \"./constants\";\n\nexport const getEntityDisplayValue = (entitiy, entitiyOption) =>\n findBy(\n { value: entitiy.metadata.value },\n entitiyOption.dropdownOptions\n )?.label?.toLowerCase();\n\nexport const getActionDisplayValue = (action, actionOption) => {\n const displayValueData = { displayValue: null, isBulk: false };\n\n if (TEXT_FIELDS.includes(actionOption.type)) {\n displayValueData.displayValue = action.metadata.value?.toLowerCase();\n\n return displayValueData;\n }\n switch (actionOption.type) {\n case ACTION_TYPE.DROPDOWN: {\n displayValueData.displayValue = getEntityDisplayValue(\n action,\n actionOption\n );\n\n return displayValueData;\n }\n case ACTION_TYPE.EMAIL_TO_IDS: {\n displayValueData.isBulk = true;\n displayValueData.displayValue = action.metadata.emails;\n\n return displayValueData;\n }\n\n case ACTION_TYPE.EMAIL_TO: {\n displayValueData.displayValue = action.displayValue;\n\n return displayValueData;\n }\n\n case ACTION_TYPE.SMS_TO_NUMBERS: {\n displayValueData.isBulk = true;\n displayValueData.displayValue = action.metadata.phoneNumbers;\n\n return displayValueData;\n }\n case ACTION_TYPE.SEND_TO_API: {\n displayValueData.displayValue = action.metadata.endpoint;\n\n return displayValueData;\n }\n default:\n return null;\n }\n};\n","import { useState } from \"react\";\n\nimport { findBy } from \"neetocist\";\nimport { Down, Up } from \"neetoicons\";\nimport { Typography, Button } from \"neetoui\";\nimport { pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Card from \"./Card\";\nimport { ACTION_TYPE } from \"./constants\";\nimport MultiSelectValues from \"./MultiSelectValues\";\nimport { getActionDisplayValue } from \"./utils\";\n\nconst ActionsDetail = ({ actions }) => {\n const [viewMore, setViewMore] = useState(false);\n const { t } = useTranslation();\n\n const actionsList = actions.value;\n const allActions =\n viewMore && actionsList.length > 4 ? actionsList : actionsList.slice(0, 4);\n\n const getLabel = index =>\n index\n ? t(\"neetoRules.common.and\", {\n what: t(\"neetoRules.common.then\"),\n })\n : t(\"neetoRules.common.then\");\n\n const renderActionValues = (action, actionOption) => {\n const commonSeperator =\n actionOption.type === ACTION_TYPE.SEND_TO_API\n ? t(\"neetoRules.common.at\")\n : t(\"neetoRules.common.to\");\n const separator = actionOption?.separator?.toLowerCase() || commonSeperator;\n\n const { displayValue, isBulk } =\n getActionDisplayValue(action, actionOption) ?? {};\n\n if (actionOption.type === ACTION_TYPE.MULTISELECT) {\n const values = pluck(\n \"label\",\n actionOption.dropdownOptions.filter(({ value }) =>\n action.metadata.value.includes(value)\n )\n );\n\n return (\n <MultiSelectValues\n {...{ values }}\n separator={t(\"neetoRules.common.and\", { what: \"\" })}\n />\n );\n }\n\n if (!displayValue) return null;\n\n if (!isBulk) {\n return (\n <>\n <Typography\n className=\"neeto-ui-text-gray-700\"\n style=\"h5\"\n weight=\"normal\"\n >\n {separator}\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {displayValue?.toLowerCase()}\n </Typography>\n </>\n );\n }\n\n return displayValue.map((value, index) => (\n <div className=\"mr-1 flex\" key={index}>\n <Typography key={index} style=\"h5\" weight=\"semibold\">\n {value}\n </Typography>\n {index !== displayValue.length - 1 && \", \"}\n </div>\n ));\n };\n\n const renderAction = action => {\n const actionOption = findBy({ value: action.name }, actions.actionOptions);\n if (!actionOption) return null;\n\n return (\n <>\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {actionOption?.label.toLowerCase()}\n </Typography>\n {renderActionValues(action, actionOption)}\n </>\n );\n };\n\n return (\n <Card title={t(\"neetoRules.common.then\")}>\n {allActions.map((action, index) => (\n <div\n className=\"mb-2 flex flex-wrap gap-x-1 gap-y-2\"\n data-cy=\"then-action-events\"\n key={action.name}\n >\n <Typography\n className=\"neeto-ui-text-gray-700\"\n style=\"h5\"\n weight=\"normal\"\n >\n {getLabel(index)}\n </Typography>\n {renderAction(action)}\n </div>\n ))}\n {actionsList.length > 4 && (\n <div className=\"mt-3 w-full\">\n <Button\n icon={!viewMore ? Down : Up}\n size=\"small\"\n style=\"link\"\n label={\n !viewMore\n ? t(\"neetoRules.common.viewMore\")\n : t(\"neetoRules.common.viewLess\")\n }\n onClick={() => setViewMore(prevState => !prevState)}\n />\n </div>\n )}\n </Card>\n );\n};\n\nexport default ActionsDetail;\n","import { useState } from \"react\";\n\nimport { findBy } from \"neetocist\";\nimport { Down, Up } from \"neetoicons\";\nimport { Button, Typography } from \"neetoui\";\nimport { pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { VERB_LABELS } from \"components/NeetoRulesForm/Element/Conditions/constants\";\n\nimport { PREVIEW_CONDITION_LIMIT } from \"./constants\";\nimport MultiSelectValues from \"./MultiSelectValues\";\nimport { getEntityDisplayValue } from \"./utils\";\n\nconst ConditionsDetail = ({\n conditions,\n conditionOptions,\n conditionVerbs = {},\n hasEvent = true,\n}) => {\n const [viewMore, setViewMore] = useState(false);\n\n const { t } = useTranslation();\n\n const conditionsList = conditions.value;\n const allConditions =\n viewMore && conditionsList.length > PREVIEW_CONDITION_LIMIT\n ? conditionsList\n : conditionsList.slice(0, PREVIEW_CONDITION_LIMIT);\n\n const allConditionVerbs = { ...VERB_LABELS, ...conditionVerbs };\n\n const getLogicOperator = joinType =>\n joinType === \"or_operator\" ? \"or\" : \"and\";\n\n const renderConditionValues = (condition, conditionOption) => {\n if ([\"email\", \"text\", \"number\"].includes(conditionOption.type)) {\n return (\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {condition.metadata.value?.toLowerCase()}\n </Typography>\n );\n }\n\n if (conditionOption.type === \"multi-select\") {\n const values = pluck(\n \"label\",\n conditionOption.dropdownOptions.filter(({ value }) =>\n condition.metadata.values.includes(value)\n )\n );\n\n return (\n <MultiSelectValues\n {...{ values }}\n separator={t(\"neetoRules.common.or\")}\n />\n );\n }\n\n if (conditionOption.type === \"dropdown\") {\n return (\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {getEntityDisplayValue(condition, conditionOption)}\n </Typography>\n );\n }\n\n return null;\n };\n\n const renderCondition = condition => {\n const conditionOption = findBy(\n { value: condition.field },\n conditionOptions\n );\n if (!conditionOption) return null;\n\n const conditionVerb = allConditionVerbs[condition.verb]?.toLowerCase();\n\n return (\n <>\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {conditionOption?.label.toLowerCase()}\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {conditionVerb}\n </Typography>\n {renderConditionValues(condition, conditionOption)}\n </>\n );\n };\n\n return (\n <>\n <div className=\"mt-2\">\n {allConditions.map((condition, index) => (\n <div\n className=\"mb-2 flex flex-wrap gap-x-2 gap-y-2\"\n key={condition.id}\n >\n {!index && hasEvent && (\n <Typography\n className=\"neeto-ui-text-gray-700\"\n style=\"h5\"\n weight=\"normal\"\n >\n {t(\"neetoRules.common.and\", { what: \"\" })}\n </Typography>\n )}\n {!!index && (\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {getLogicOperator(condition.joinType)}\n </Typography>\n )}\n <Typography\n className=\"neeto-ui-text-gray-700\"\n style=\"h5\"\n weight=\"normal\"\n >\n {t(\"neetoRules.common.when\")}\n </Typography>\n {renderCondition(condition)}\n </div>\n ))}\n </div>\n {conditionsList.length > 3 && (\n <div className=\"mt-3 w-full\">\n <Button\n icon={!viewMore ? Down : Up}\n size=\"small\"\n style=\"link\"\n label={\n !viewMore\n ? t(\"neetoRules.common.viewMore\")\n : t(\"neetoRules.common.viewLess\")\n }\n onClick={() => setViewMore(prevState => !prevState)}\n />\n </div>\n )}\n </>\n );\n};\n\nexport default ConditionsDetail;\n","import { findBy } from \"neetocist\";\nimport { Typography } from \"neetoui\";\nimport { pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Card from \"./Card\";\nimport ConditionsDetail from \"./ConditionsDetail\";\n\nconst EventsDetail = ({ events, performer, conditions }) => {\n const { t } = useTranslation();\n\n const eventNames = pluck(\"name\", events.value);\n const allEvents = events.eventOptions.filter(event =>\n eventNames?.includes(event.value)\n );\n\n const currentPerformer = findBy(\n { value: performer.value },\n performer.options\n );\n\n return (\n <Card title={t(\"neetoRules.common.when\")}>\n <div\n className=\"flex flex-wrap gap-x-2 gap-y-2\"\n data-cy=\"when-condition-events\"\n >\n {allEvents.map((event, index) => (\n <div className=\"flex gap-x-2\" key={index}>\n {!index && (\n <Typography\n className=\"neeto-ui-text-gray-700 my-auto\"\n style=\"h5\"\n weight=\"normal\"\n >\n {t(\"neetoRules.common.when\")}\n </Typography>\n )}\n {!!index && (\n <Typography\n className=\"neeto-ui-text-gray-700 my-auto\"\n style=\"h5\"\n weight=\"normal\"\n >\n {t(\"neetoRules.common.or\")}\n </Typography>\n )}\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {event.label.toLowerCase()}\n </Typography>\n </div>\n ))}\n <Typography\n className=\"neeto-ui-text-gray-700\"\n style=\"h5\"\n weight=\"normal\"\n >\n {t(\"neetoRules.common.by\")}\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-800\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {currentPerformer?.label?.toLowerCase()}\n </Typography>\n </div>\n <ConditionsDetail\n {...{ conditions }}\n conditionOptions={conditions.conditionOptions}\n conditionVerbs={conditions.verbs}\n />\n </Card>\n );\n};\n\nexport default EventsDetail;\n","import { isNotEmpty } from \"neetocist\";\nimport MoreDropdown from \"neetomolecules/MoreDropdown\";\nimport PageLoader from \"neetomolecules/PageLoader\";\nimport { Pane, Typography } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport useUtilityStore from \"components/stores/useUtilityStore\";\n\nimport ActionsDetail from \"./ActionsDetail\";\nimport Card from \"./Card\";\nimport ConditionsDetail from \"./ConditionsDetail\";\nimport EventsDetail from \"./EventsDetail\";\n\nconst RulePreview = ({ isLoading, ruleDetails, isOpen, onClose }) => {\n const { t } = useTranslation();\n\n const { moreActionDropdownItems, showPreviewPane } = useUtilityStore.pick();\n\n return (\n <Pane {...{ onClose }} isOpen={isOpen && showPreviewPane}>\n {isLoading ? (\n <PageLoader />\n ) : (\n <>\n <Pane.Header>\n <div className=\"flex items-center justify-between gap-x-3\">\n <Typography className=\"line-clamp-2\" style=\"h4\" weight=\"semibold\">\n {ruleDetails.name.value}\n </Typography>\n <MoreDropdown\n dropdownProps={{ strategy: \"fixed\" }}\n menuItems={moreActionDropdownItems}\n />\n </div>\n </Pane.Header>\n <Pane.Body>\n <div className=\"mt-2 w-full\">\n <div className=\"mb-6\">\n {ruleDetails.description && (\n <Typography className=\"my-auto mb-4\" style=\"body2\">\n {ruleDetails.description.value}\n </Typography>\n )}\n {ruleDetails.entity && (\n <div className=\"flex space-x-8\">\n <Typography\n className=\"neeto-ui-text-gray-800 col-span-1\"\n style=\"h5\"\n weight=\"semibold\"\n >\n {ruleDetails.entity.label}\n </Typography>\n <Typography\n className=\"neeto-ui-text-gray-800 col-span-2\"\n style=\"h5\"\n weight=\"normal\"\n >\n {ruleDetails.entity.value}\n </Typography>\n </div>\n )}\n </div>\n {ruleDetails.events && isNotEmpty(ruleDetails.events) ? (\n <EventsDetail\n conditions={ruleDetails.conditions}\n events={ruleDetails.events}\n performer={ruleDetails.performer}\n />\n ) : (\n <Card title={t(\"neetoRules.common.when\")}>\n <ConditionsDetail\n conditionOptions={ruleDetails.conditions.conditionOptions}\n conditionVerbs={ruleDetails.conditions.verbs}\n conditions={ruleDetails.conditions}\n hasEvent={false}\n />\n </Card>\n )}\n <ActionsDetail actions={ruleDetails.actions} />\n </div>\n </Pane.Body>\n </>\n )}\n </Pane>\n );\n};\n\nexport default RulePreview;\n"],"names":["Title","_ref","title","children","_jsxs","_Fragment","_jsx","Typography","className","style","weight","PREVIEW_CONDITION_LIMIT","ACTION_TYPE","TEXT","NUMBER","DECIMAL","REGEX","DATE","EMAIL","EMAIL_TO","EMAIL_TO_IDS","SMS_TO_NUMBERS","MULTI_SELECT","SEND_TO_API","DROPDOWN","MULTISELECT","TEXT_FIELDS","MultiSelectValues","separator","values","map","value","idx","Fragment","toLowerCase","getEntityDisplayValue","entitiy","entitiyOption","_findBy","findBy","metadata","dropdownOptions","label","getActionDisplayValue","action","actionOption","displayValueData","displayValue","isBulk","includes","type","_action$metadata$valu","emails","phoneNumbers","endpoint","ActionsDetail","actions","_useState","useState","_useState2","_slicedToArray","viewMore","setViewMore","_useTranslation","useTranslation","t","actionsList","allActions","length","slice","getLabel","index","what","renderActionValues","_actionOption$separat","_getActionDisplayValu","commonSeperator","_ref2","pluck","filter","_ref3","renderAction","name","actionOptions","Card","Button","icon","Down","Up","size","onClick","prevState","ConditionsDetail","conditions","conditionOptions","_ref$conditionVerbs","conditionVerbs","_ref$hasEvent","hasEvent","conditionsList","allConditions","allConditionVerbs","_objectSpread","VERB_LABELS","getLogicOperator","joinType","renderConditionValues","condition","conditionOption","_condition$metadata$v","renderCondition","_allConditionVerbs$co","field","conditionVerb","verb","id","EventsDetail","_currentPerformer$lab","events","performer","eventNames","allEvents","eventOptions","event","currentPerformer","options","verbs","RulePreview","isLoading","ruleDetails","isOpen","onClose","_useUtilityStore","useUtilityStore","store","moreActionDropdownItems","showPreviewPane","shallow","Pane","PageLoader","Header","MoreDropdown","dropdownProps","strategy","menuItems","Body","description","entity","isNotEmpty"],"mappings":"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"}