@bigbinary/neeto-rules-frontend 2.5.56 → 2.5.57

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 (62) hide show
  1. package/dist/.ready +1 -1
  2. package/dist/NeetoRulesForm.js +67 -162
  3. package/dist/NeetoRulesForm.js.map +1 -1
  4. package/dist/cjs/NeetoRulesForm.js +10 -105
  5. package/dist/cjs/NeetoRulesForm.js.map +1 -1
  6. package/dist/cjs/index.js +1 -0
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/v2/CannedResponsesPane.js +396 -0
  9. package/dist/cjs/v2/CannedResponsesPane.js.map +1 -0
  10. package/dist/cjs/v2/NeetoRules.js +486 -0
  11. package/dist/cjs/v2/NeetoRules.js.map +1 -0
  12. package/dist/cjs/v2/NeetoRulesForm.js +6818 -0
  13. package/dist/cjs/v2/NeetoRulesForm.js.map +1 -0
  14. package/dist/cjs/v2/RulePreview.js +513 -0
  15. package/dist/cjs/v2/RulePreview.js.map +1 -0
  16. package/dist/cjs/v2/RulesReorder.js +24 -0
  17. package/dist/cjs/v2/RulesReorder.js.map +1 -0
  18. package/dist/cjs/v2/constants.js +8 -0
  19. package/dist/cjs/v2/constants.js.map +1 -0
  20. package/dist/cjs/v2/hooks.js +15 -0
  21. package/dist/cjs/v2/hooks.js.map +1 -0
  22. package/dist/cjs/v2/index.js +86 -0
  23. package/dist/cjs/v2/index.js.map +1 -0
  24. package/dist/constants-CYdcft3h.js +53 -0
  25. package/dist/constants-CYdcft3h.js.map +1 -0
  26. package/dist/constants-dLBadaIU.js +60 -0
  27. package/dist/constants-dLBadaIU.js.map +1 -0
  28. package/dist/index-BBcadHIi.js +208 -0
  29. package/dist/index-BBcadHIi.js.map +1 -0
  30. package/dist/index-CSnQp41c.js +211 -0
  31. package/dist/index-CSnQp41c.js.map +1 -0
  32. package/dist/index.js +1 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/useCustomDataStore-D7hl6nev.js +74 -0
  35. package/dist/useCustomDataStore-D7hl6nev.js.map +1 -0
  36. package/dist/useCustomDataStore-DipT25Pg.js +77 -0
  37. package/dist/useCustomDataStore-DipT25Pg.js.map +1 -0
  38. package/dist/useDebouncedUpdate-6Ibug5MF.js +108 -0
  39. package/dist/useDebouncedUpdate-6Ibug5MF.js.map +1 -0
  40. package/dist/useDebouncedUpdate-BcPAGgg7.js +103 -0
  41. package/dist/useDebouncedUpdate-BcPAGgg7.js.map +1 -0
  42. package/dist/useUtilityStore-BBb39TOj.js +53 -0
  43. package/dist/useUtilityStore-BBb39TOj.js.map +1 -0
  44. package/dist/useUtilityStore-DkxAexDw.js +55 -0
  45. package/dist/useUtilityStore-DkxAexDw.js.map +1 -0
  46. package/dist/v2/CannedResponsesPane.js +394 -0
  47. package/dist/v2/CannedResponsesPane.js.map +1 -0
  48. package/dist/v2/NeetoRules.js +484 -0
  49. package/dist/v2/NeetoRules.js.map +1 -0
  50. package/dist/v2/NeetoRulesForm.js +6797 -0
  51. package/dist/v2/NeetoRulesForm.js.map +1 -0
  52. package/dist/v2/RulePreview.js +511 -0
  53. package/dist/v2/RulePreview.js.map +1 -0
  54. package/dist/v2/RulesReorder.js +18 -0
  55. package/dist/v2/RulesReorder.js.map +1 -0
  56. package/dist/v2/constants.js +2 -0
  57. package/dist/v2/constants.js.map +1 -0
  58. package/dist/v2/hooks.js +8 -0
  59. package/dist/v2/hooks.js.map +1 -0
  60. package/dist/v2/index.js +74 -0
  61. package/dist/v2/index.js.map +1 -0
  62. package/package.json +26 -14
package/dist/cjs/index.js CHANGED
@@ -54,6 +54,7 @@ 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('../useDebouncedUpdate-6Ibug5MF.js');
57
58
  require('@bigbinary/neeto-icons/Plus');
58
59
  require('@bigbinary/neeto-icons/Delete');
59
60
  require('classnames');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,396 @@
1
+ 'use strict';
2
+
3
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
4
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var _regeneratorRuntime = require('@babel/runtime/regenerator');
6
+ var react = require('react');
7
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
8
+ var formik$1 = require('@bigbinary/neeto-atoms/formik');
9
+ var formik = require('formik');
10
+ var neetoCist = require('@bigbinary/neeto-cist');
11
+ var constants = require('@bigbinary/neeto-commons-frontend/v2/constants');
12
+ var ramda = require('ramda');
13
+ var reactI18next = require('react-i18next');
14
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
15
+ var i18next = require('i18next');
16
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
17
+ var Editor = require('@bigbinary/neeto-editor/Editor');
18
+ var jsxRuntime = require('react/jsx-runtime');
19
+
20
+ function ownKeys$2(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; }
21
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
+ var CANNED_RESPONSE_INPUT_ACTION_NAMES = ["assign_agent", "assign_group", "remove_tags", "add_tags", "change_priority", "change_status"];
23
+ var CANNED_RESPONSE_RICH_TEXT_ACTION_NAME = ["add_note", "add_reply"];
24
+ var CANNED_RESPONSE_ACTION_LABELS = [].concat(CANNED_RESPONSE_INPUT_ACTION_NAMES, CANNED_RESPONSE_RICH_TEXT_ACTION_NAME).reduce(function (labelObject, actionName) {
25
+ return _objectSpread$2(_objectSpread$2({}, labelObject), {}, _defineProperty({}, actionName, "neetoRules.labels.".concat(actionName)));
26
+ }, {});
27
+ var ACTION_OPTIONS = {
28
+ assignTicketFieldValue: "assign_field_value"
29
+ };
30
+ var ACTION_TYPES_MAP = {
31
+ single_option: "dropdown",
32
+ multi_option: "multiSelect",
33
+ checkbox: "dropdown",
34
+ integer: "number"
35
+ };
36
+ var DEFAULT_CHECKBOX_OPTIONS = [{
37
+ label: i18next.t("neetoRules.labels.checked"),
38
+ value: true
39
+ }, {
40
+ label: i18next.t("neetoRules.labels.unchecked"),
41
+ value: false
42
+ }];
43
+
44
+ var Action = function Action(_ref) {
45
+ var id = _ref.id,
46
+ label = _ref.label,
47
+ setFieldValue = _ref.setFieldValue,
48
+ value = _ref.value,
49
+ _ref$richText = _ref.richText,
50
+ richText = _ref$richText === void 0 ? false : _ref$richText;
51
+ if (richText) {
52
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
53
+ className: "mb-4 space-y-2",
54
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Label, {
55
+ children: label
56
+ }), /*#__PURE__*/jsxRuntime.jsx(Editor, {
57
+ initialValue: value,
58
+ onChange: function onChange(newValue) {
59
+ return setFieldValue(id, newValue);
60
+ }
61
+ })]
62
+ }, id);
63
+ }
64
+ return /*#__PURE__*/react.createElement(neetoAtoms.Input, {
65
+ label: label,
66
+ disabled: true,
67
+ className: "mb-4",
68
+ key: id,
69
+ value: value.replace(/_/g, " ")
70
+ });
71
+ };
72
+
73
+ function ownKeys$1(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; }
74
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
75
+ var renderActionValue = function renderActionValue(_ref) {
76
+ var actionType = _ref.actionType,
77
+ displayValue = _ref.displayValue;
78
+ if (actionType === "multiSelect") {
79
+ return ramda.join(", ", displayValue);
80
+ }
81
+ return displayValue;
82
+ };
83
+ var renderDefaultAction = function renderDefaultAction(_ref2) {
84
+ var id = _ref2.id,
85
+ name = _ref2.name,
86
+ displayValue = _ref2.displayValue,
87
+ setFieldValue = _ref2.setFieldValue,
88
+ trixBody = _ref2.trixBody;
89
+ var label = i18next.t(CANNED_RESPONSE_ACTION_LABELS[name]);
90
+ if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(name)) {
91
+ return /*#__PURE__*/jsxRuntime.jsx(Action, {
92
+ id: id,
93
+ label: label,
94
+ setFieldValue: setFieldValue,
95
+ richText: true,
96
+ value: trixBody
97
+ });
98
+ }
99
+ return /*#__PURE__*/jsxRuntime.jsx(Action, {
100
+ id: id,
101
+ label: label,
102
+ value: displayValue
103
+ });
104
+ };
105
+ var renderCustomAction = function renderCustomAction(_ref3) {
106
+ var id = _ref3.id,
107
+ actionableId = _ref3.actionableId,
108
+ displayValue = _ref3.displayValue,
109
+ actionOptions = _ref3.actionOptions,
110
+ setFieldValue = _ref3.setFieldValue;
111
+ var actionName = "ticket_field_".concat(actionableId);
112
+ var actionOption = neetoCist.findBy({
113
+ value: actionName
114
+ }, actionOptions);
115
+ var label = actionOption === null || actionOption === void 0 ? void 0 : actionOption.label;
116
+ var actionType = actionOption === null || actionOption === void 0 ? void 0 : actionOption.type;
117
+ var actionValue = renderActionValue({
118
+ actionType: actionType,
119
+ displayValue: displayValue
120
+ });
121
+ var isRichText = actionType === "rich-text";
122
+ return /*#__PURE__*/jsxRuntime.jsx(Action, {
123
+ id: id,
124
+ label: label,
125
+ setFieldValue: setFieldValue,
126
+ richText: isRichText,
127
+ value: actionValue
128
+ });
129
+ };
130
+ var getActionDropdown = function getActionDropdown(_ref4) {
131
+ var status = _ref4.status,
132
+ teams = _ref4.teams,
133
+ members = _ref4.members,
134
+ tags = _ref4.tags;
135
+ return {
136
+ change_status: status || [],
137
+ assign_group: teams || [],
138
+ assign_agent: members || [],
139
+ add_tags: tags || [],
140
+ remove_tags: tags || []
141
+ };
142
+ };
143
+ var getActionType = function getActionType(kind) {
144
+ return ACTION_TYPES_MAP[kind] || kind;
145
+ };
146
+ var getDropdownOptions = function getDropdownOptions(kind, optionsAttribute) {
147
+ if (["single_option", "multi_option"].includes(kind)) {
148
+ return optionsAttribute.map(function (_ref5) {
149
+ var id = _ref5.id,
150
+ label = _ref5.label;
151
+ return {
152
+ label: label,
153
+ value: id
154
+ };
155
+ });
156
+ } else if (kind === "checkbox") {
157
+ return _toConsumableArray(DEFAULT_CHECKBOX_OPTIONS);
158
+ }
159
+ return [];
160
+ };
161
+ var renderAction = function renderAction(_ref6) {
162
+ var name = _ref6.name,
163
+ id = _ref6.id,
164
+ actionableId = _ref6.actionableId,
165
+ displayValue = _ref6.displayValue,
166
+ _ref6$actionOptions = _ref6.actionOptions,
167
+ actionOptions = _ref6$actionOptions === void 0 ? [] : _ref6$actionOptions,
168
+ setFieldValue = _ref6.setFieldValue,
169
+ _ref6$trixBody = _ref6.trixBody,
170
+ trixBody = _ref6$trixBody === void 0 ? "" : _ref6$trixBody;
171
+ var isCustomAction = name === ACTION_OPTIONS.assignTicketFieldValue;
172
+ return isCustomAction ? renderCustomAction({
173
+ id: id,
174
+ actionableId: actionableId,
175
+ displayValue: displayValue,
176
+ actionOptions: actionOptions,
177
+ setFieldValue: setFieldValue
178
+ }) : renderDefaultAction({
179
+ id: id,
180
+ name: name,
181
+ displayValue: displayValue,
182
+ setFieldValue: setFieldValue,
183
+ trixBody: trixBody
184
+ });
185
+ };
186
+ var buildActionOptions = function buildActionOptions(_ref7) {
187
+ var dropdownOptions = _ref7.dropdownOptions,
188
+ actionNameOptions = _ref7.actionNameOptions,
189
+ variables = _ref7.variables;
190
+ var actionDropdown = getActionDropdown(dropdownOptions);
191
+ var options = actionNameOptions.map(function (option) {
192
+ var dropdownOptions = actionDropdown[option.value];
193
+ return dropdownOptions ? _objectSpread$1(_objectSpread$1({}, option), {}, {
194
+ dropdownOptions: dropdownOptions
195
+ }) : option;
196
+ });
197
+ var fields = (dropdownOptions.fields || []).filter(function (field) {
198
+ return !field.kind.startsWith("system_");
199
+ }) || [];
200
+ var fieldOptions = fields.map(function (_ref8) {
201
+ var id = _ref8.id,
202
+ name = _ref8.name,
203
+ kind = _ref8.kind,
204
+ attributeOptions = _ref8.data;
205
+ return {
206
+ label: i18next.t("neetoRules.common.assign", {
207
+ what: name
208
+ }),
209
+ value: "ticket_field_".concat(id),
210
+ type: getActionType(kind),
211
+ variables: variables,
212
+ defaultData: {
213
+ actionable_id: id,
214
+ actionable_type: "Field"
215
+ },
216
+ dropdownOptions: getDropdownOptions(kind, attributeOptions)
217
+ };
218
+ });
219
+ return [].concat(_toConsumableArray(options), _toConsumableArray(fieldOptions));
220
+ };
221
+
222
+ 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; }
223
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).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; }
224
+ var Body = function Body(_ref) {
225
+ var actionNameOptions = _ref.actionNameOptions,
226
+ cannedResponse = _ref.cannedResponse,
227
+ dropdownList = _ref.dropdownList,
228
+ isLoading = _ref.isLoading,
229
+ setFieldValue = _ref.setFieldValue,
230
+ variables = _ref.variables;
231
+ var _useTranslation = reactI18next.useTranslation(),
232
+ t = _useTranslation.t;
233
+ var actionOptions = buildActionOptions({
234
+ dropdownOptions: dropdownList,
235
+ actionNameOptions: actionNameOptions,
236
+ variables: variables
237
+ });
238
+ if (isLoading) {
239
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
240
+ className: "flex h-full w-full items-center justify-center",
241
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Spinner, {})
242
+ });
243
+ }
244
+ var sortedActions = cannedResponse.actions.sort(function (a, b) {
245
+ if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(a.name)) {
246
+ return 1;
247
+ } else if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(b.name)) {
248
+ return -1;
249
+ }
250
+ return 0;
251
+ });
252
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
253
+ className: "overflow-y-auto",
254
+ children: ramda.not(cannedResponse) ? t("neetoRules.common.preview") : sortedActions === null || sortedActions === void 0 ? void 0 : sortedActions.map(function (action) {
255
+ return renderAction(_objectSpread(_objectSpread({}, action), {}, {
256
+ actionOptions: actionOptions,
257
+ setFieldValue: setFieldValue
258
+ }));
259
+ })
260
+ });
261
+ };
262
+
263
+ var CannedResponsesPane = function CannedResponsesPane(_ref) {
264
+ var actionNameOptions = _ref.actionNameOptions,
265
+ areDropdownListsLoading = _ref.areDropdownListsLoading,
266
+ dropdownList = _ref.dropdownList,
267
+ isCannedResponsePaneOpen = _ref.isCannedResponsePaneOpen,
268
+ isLoadingPreview = _ref.isLoadingPreview,
269
+ macros = _ref.macros,
270
+ onApply = _ref.onApply,
271
+ onCancel = _ref.onCancel,
272
+ previewCannedResponses = _ref.previewCannedResponses,
273
+ previewParams = _ref.previewParams,
274
+ _ref$variables = _ref.variables,
275
+ variables = _ref$variables === void 0 ? [] : _ref$variables;
276
+ var _useState = react.useState(null),
277
+ _useState2 = _slicedToArray(_useState, 2),
278
+ cannedResponse = _useState2[0],
279
+ setCannedResponse = _useState2[1];
280
+ var initialFocusRef = react.useRef();
281
+ var _useTranslation = reactI18next.useTranslation(),
282
+ t = _useTranslation.t;
283
+ var options = macros === null || macros === void 0 ? void 0 : macros.map(function (_ref2) {
284
+ var name = _ref2.name,
285
+ id = _ref2.id;
286
+ return {
287
+ label: name,
288
+ value: id
289
+ };
290
+ });
291
+ var handleSelect = /*#__PURE__*/function () {
292
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref3) {
293
+ var value;
294
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
295
+ while (1) switch (_context.prev = _context.next) {
296
+ case 0:
297
+ value = _ref3.value;
298
+ _context.next = 3;
299
+ return previewCannedResponses({
300
+ id: value,
301
+ payload: previewParams
302
+ }, {
303
+ onSuccess: function onSuccess(response) {
304
+ return setCannedResponse(ramda.values(response || {})[0]);
305
+ }
306
+ });
307
+ case 3:
308
+ case "end":
309
+ return _context.stop();
310
+ }
311
+ }, _callee);
312
+ }));
313
+ return function handleSelect(_x) {
314
+ return _ref4.apply(this, arguments);
315
+ };
316
+ }();
317
+ var handleSubmit = function handleSubmit(values) {
318
+ onApply({
319
+ cannedResponse: cannedResponse,
320
+ setCannedResponse: setCannedResponse,
321
+ onSettled: onCancel,
322
+ updatedValues: ramda.omit(["cannedResponse"], values)
323
+ });
324
+ };
325
+ var handleCancel = function handleCancel() {
326
+ onCancel();
327
+ setCannedResponse(null);
328
+ };
329
+ return /*#__PURE__*/jsxRuntime.jsxs(neetoAtoms.Sheet, {
330
+ initialFocusRef: initialFocusRef,
331
+ isOpen: isCannedResponsePaneOpen,
332
+ onClose: handleCancel,
333
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Header, {
334
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Title, {
335
+ children: t("neetoRules.cannedResponses.title", constants.PLURAL)
336
+ })
337
+ }), /*#__PURE__*/jsxRuntime.jsx(formik.Formik, {
338
+ initialValues: {
339
+ cannedResponse: neetoCist.toLabelAndValue(null)
340
+ },
341
+ onSubmit: handleSubmit,
342
+ children: function children(_ref5) {
343
+ var setFieldValue = _ref5.setFieldValue,
344
+ isSubmitting = _ref5.isSubmitting;
345
+ return /*#__PURE__*/jsxRuntime.jsxs(formik.Form, {
346
+ className: "flex flex-1 flex-col",
347
+ children: [/*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Body, {
348
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
349
+ className: "flex w-full grow flex-col space-y-4",
350
+ children: areDropdownListsLoading ? /*#__PURE__*/jsxRuntime.jsx("div", {
351
+ className: "flex h-full w-full items-center justify-center",
352
+ children: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Spinner, {})
353
+ }) : /*#__PURE__*/jsxRuntime.jsxs("div", {
354
+ className: "flex flex-col gap-y-4",
355
+ children: [/*#__PURE__*/jsxRuntime.jsx(formik$1.Select, {
356
+ options: options,
357
+ isSearchable: true,
358
+ label: t("neetoRules.labels.selectCannedResponse"),
359
+ name: "cannedResponse",
360
+ ref: initialFocusRef,
361
+ onChange: function onChange(value) {
362
+ setFieldValue("cannedResponse", value);
363
+ handleSelect(value);
364
+ }
365
+ }), neetoCist.isPresent(cannedResponse) && /*#__PURE__*/jsxRuntime.jsx("div", {
366
+ className: "flex flex-col",
367
+ children: /*#__PURE__*/jsxRuntime.jsx(Body, {
368
+ actionNameOptions: actionNameOptions,
369
+ cannedResponse: cannedResponse,
370
+ dropdownList: dropdownList,
371
+ setFieldValue: setFieldValue,
372
+ variables: variables,
373
+ isLoading: isLoadingPreview
374
+ })
375
+ })]
376
+ })
377
+ })
378
+ }), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Sheet.Footer, {
379
+ children: /*#__PURE__*/jsxRuntime.jsx(formik$1.ActionBlock, {
380
+ cancelButtonProps: {
381
+ onClick: handleCancel
382
+ },
383
+ isSubmitting: isSubmitting || isLoadingPreview,
384
+ submitButtonProps: {
385
+ label: t("neetoRules.common.apply")
386
+ }
387
+ })
388
+ })]
389
+ });
390
+ }
391
+ })]
392
+ });
393
+ };
394
+
395
+ module.exports = CannedResponsesPane;
396
+ //# sourceMappingURL=CannedResponsesPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CannedResponsesPane.js","sources":["../../../app/javascript/src/v2/components/CannedResponsesPane/constants.js","../../../app/javascript/src/v2/components/CannedResponsesPane/Action.jsx","../../../app/javascript/src/v2/components/CannedResponsesPane/utils.jsx","../../../app/javascript/src/v2/components/CannedResponsesPane/Body.jsx","../../../app/javascript/src/v2/components/CannedResponsesPane/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nconst CANNED_RESPONSE_INPUT_ACTION_NAMES = [\n \"assign_agent\",\n \"assign_group\",\n \"remove_tags\",\n \"add_tags\",\n \"change_priority\",\n \"change_status\",\n];\n\nexport const CANNED_RESPONSE_RICH_TEXT_ACTION_NAME = [\"add_note\", \"add_reply\"];\n\nexport const CANNED_RESPONSE_ACTION_LABELS = [\n ...CANNED_RESPONSE_INPUT_ACTION_NAMES,\n ...CANNED_RESPONSE_RICH_TEXT_ACTION_NAME,\n].reduce(\n (labelObject, actionName) => ({\n ...labelObject,\n [actionName]: `neetoRules.labels.${actionName}`,\n }),\n {}\n);\n\nexport const ACTION_OPTIONS = {\n addNote: \"add_note\",\n addCommentOrReply: \"add_reply\",\n addTags: \"add_tags\",\n removeTags: \"remove_tags\",\n changePriority: \"change_priority\",\n changeStatus: \"change_status\",\n assignAgent: \"assign_agent\",\n assignGroup: \"assign_group\",\n assignTicketFieldValue: \"assign_field_value\",\n};\n\nexport const ACTION_TYPES_MAP = {\n single_option: \"dropdown\",\n multi_option: \"multiSelect\",\n checkbox: \"dropdown\",\n integer: \"number\",\n};\n\nexport const DEFAULT_CHECKBOX_OPTIONS = [\n { label: t(\"neetoRules.labels.checked\"), value: true },\n { label: t(\"neetoRules.labels.unchecked\"), value: false },\n];\n","import { Input, Label } from \"@bigbinary/neeto-atoms\";\nimport { Editor } from \"neetoeditor\";\n\nconst Action = ({ id, label, setFieldValue, value, richText = false }) => {\n if (richText) {\n return (\n <div className=\"mb-4 space-y-2\" key={id}>\n <Label>{label}</Label>\n <Editor\n initialValue={value}\n onChange={newValue => setFieldValue(id, newValue)}\n />\n </div>\n );\n }\n\n return (\n <Input\n {...{ label }}\n disabled\n className=\"mb-4\"\n key={id}\n value={value.replace(/_/g, \" \")}\n />\n );\n};\n\nexport default Action;\n","import { t } from \"i18next\";\nimport { findBy } from \"neetocist\";\nimport { join } from \"ramda\";\n\nimport Action from \"./Action\";\nimport {\n ACTION_OPTIONS,\n ACTION_TYPES_MAP,\n CANNED_RESPONSE_ACTION_LABELS,\n CANNED_RESPONSE_RICH_TEXT_ACTION_NAME,\n DEFAULT_CHECKBOX_OPTIONS,\n} from \"./constants\";\n\nconst renderActionValue = ({ actionType, displayValue }) => {\n if (actionType === \"multiSelect\") {\n return join(\", \", displayValue);\n }\n\n return displayValue;\n};\n\nconst renderDefaultAction = ({\n id,\n name,\n displayValue,\n setFieldValue,\n trixBody,\n}) => {\n const label = t(CANNED_RESPONSE_ACTION_LABELS[name]);\n\n if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(name)) {\n return (\n <Action {...{ id, label, setFieldValue }} richText value={trixBody} />\n );\n }\n\n return <Action {...{ id, label }} value={displayValue} />;\n};\n\nconst renderCustomAction = ({\n id,\n actionableId,\n displayValue,\n actionOptions,\n setFieldValue,\n}) => {\n const actionName = `ticket_field_${actionableId}`;\n const actionOption = findBy({ value: actionName }, actionOptions);\n const label = actionOption?.label;\n const actionType = actionOption?.type;\n const actionValue = renderActionValue({ actionType, displayValue });\n const isRichText = actionType === \"rich-text\";\n\n return (\n <Action\n {...{ id, label, setFieldValue }}\n richText={isRichText}\n value={actionValue}\n />\n );\n};\n\nconst getActionDropdown = ({ status, teams, members, tags }) => ({\n change_status: status || [],\n assign_group: teams || [],\n assign_agent: members || [],\n add_tags: tags || [],\n remove_tags: tags || [],\n});\n\nconst getActionType = kind => ACTION_TYPES_MAP[kind] || kind;\n\nconst getDropdownOptions = (kind, optionsAttribute) => {\n if ([\"single_option\", \"multi_option\"].includes(kind)) {\n return optionsAttribute.map(({ id, label }) => ({\n label,\n value: id,\n }));\n } else if (kind === \"checkbox\") {\n return [...DEFAULT_CHECKBOX_OPTIONS];\n }\n\n return [];\n};\n\nexport const renderAction = ({\n name,\n id,\n actionableId,\n displayValue,\n actionOptions = [],\n setFieldValue,\n trixBody = \"\",\n}) => {\n const isCustomAction = name === ACTION_OPTIONS.assignTicketFieldValue;\n\n return isCustomAction\n ? renderCustomAction({\n id,\n actionableId,\n displayValue,\n actionOptions,\n setFieldValue,\n })\n : renderDefaultAction({ id, name, displayValue, setFieldValue, trixBody });\n};\n\nexport const buildActionOptions = ({\n dropdownOptions,\n actionNameOptions,\n variables,\n}) => {\n const actionDropdown = getActionDropdown(dropdownOptions);\n const options = actionNameOptions.map(option => {\n const dropdownOptions = actionDropdown[option.value];\n\n return dropdownOptions ? { ...option, dropdownOptions } : option;\n });\n\n const fields =\n (dropdownOptions.fields || []).filter(\n field => !field.kind.startsWith(\"system_\")\n ) || [];\n\n const fieldOptions = fields.map(\n ({ id, name, kind, data: attributeOptions }) => ({\n label: t(\"neetoRules.common.assign\", { what: name }),\n value: `ticket_field_${id}`,\n type: getActionType(kind),\n variables,\n defaultData: { actionable_id: id, actionable_type: \"Field\" },\n dropdownOptions: getDropdownOptions(kind, attributeOptions),\n })\n );\n\n return [...options, ...fieldOptions];\n};\n","import { Spinner } from \"@bigbinary/neeto-atoms\";\nimport { not } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { CANNED_RESPONSE_RICH_TEXT_ACTION_NAME } from \"./constants\";\nimport { buildActionOptions, renderAction } from \"./utils\";\n\nconst Body = ({\n actionNameOptions,\n cannedResponse,\n dropdownList,\n isLoading,\n setFieldValue,\n variables,\n}) => {\n const { t } = useTranslation();\n\n const actionOptions = buildActionOptions({\n dropdownOptions: dropdownList,\n actionNameOptions,\n variables,\n });\n\n if (isLoading) {\n return (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n );\n }\n\n const sortedActions = cannedResponse.actions.sort((a, b) => {\n if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(a.name)) {\n return 1;\n } else if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(b.name)) {\n return -1;\n }\n\n return 0;\n });\n\n return (\n <div className=\"overflow-y-auto\">\n {not(cannedResponse)\n ? t(\"neetoRules.common.preview\")\n : sortedActions?.map(action =>\n renderAction({ ...action, actionOptions, setFieldValue })\n )}\n </div>\n );\n};\nexport default Body;\n","import { useRef, useState } from \"react\";\n\nimport { Sheet, Spinner } from \"@bigbinary/neeto-atoms\";\nimport { ActionBlock, Select } from \"@bigbinary/neeto-atoms/formik\";\nimport { Form, Formik } from \"formik\";\nimport { isPresent, toLabelAndValue } from \"neetocist\";\nimport { PLURAL } from \"neetocommons/v2/constants\";\nimport { omit, values } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Body from \"./Body\";\n\nconst CannedResponsesPane = ({\n actionNameOptions,\n areDropdownListsLoading,\n dropdownList,\n isCannedResponsePaneOpen,\n isLoadingPreview,\n macros,\n onApply,\n onCancel,\n previewCannedResponses,\n previewParams,\n variables = [],\n}) => {\n const [cannedResponse, setCannedResponse] = useState(null);\n\n const initialFocusRef = useRef();\n\n const { t } = useTranslation();\n\n const options = macros?.map(({ name, id }) => ({ label: name, value: id }));\n\n const handleSelect = async ({ value }) => {\n await previewCannedResponses(\n { id: value, payload: previewParams },\n { onSuccess: response => setCannedResponse(values(response || {})[0]) }\n );\n };\n\n const handleSubmit = values => {\n onApply({\n cannedResponse,\n setCannedResponse,\n onSettled: onCancel,\n updatedValues: omit([\"cannedResponse\"], values),\n });\n };\n\n const handleCancel = () => {\n onCancel();\n setCannedResponse(null);\n };\n\n return (\n <Sheet\n {...{ initialFocusRef }}\n isOpen={isCannedResponsePaneOpen}\n onClose={handleCancel}\n >\n <Sheet.Header>\n <Sheet.Title>\n {t(\"neetoRules.cannedResponses.title\", PLURAL)}\n </Sheet.Title>\n </Sheet.Header>\n <Formik\n initialValues={{ cannedResponse: toLabelAndValue(null) }}\n onSubmit={handleSubmit}\n >\n {({ setFieldValue, isSubmitting }) => (\n <Form className=\"flex flex-1 flex-col\">\n <Sheet.Body>\n <div className=\"flex w-full grow flex-col space-y-4\">\n {areDropdownListsLoading ? (\n <div className=\"flex h-full w-full items-center justify-center\">\n <Spinner />\n </div>\n ) : (\n <div className=\"flex flex-col gap-y-4\">\n <Select\n {...{ options }}\n isSearchable\n label={t(\"neetoRules.labels.selectCannedResponse\")}\n name=\"cannedResponse\"\n ref={initialFocusRef}\n onChange={value => {\n setFieldValue(\"cannedResponse\", value);\n handleSelect(value);\n }}\n />\n {isPresent(cannedResponse) && (\n <div className=\"flex flex-col\">\n <Body\n {...{\n actionNameOptions,\n cannedResponse,\n dropdownList,\n setFieldValue,\n variables,\n }}\n isLoading={isLoadingPreview}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </Sheet.Body>\n <Sheet.Footer>\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isSubmitting || isLoadingPreview}\n submitButtonProps={{ label: t(\"neetoRules.common.apply\") }}\n />\n </Sheet.Footer>\n </Form>\n )}\n </Formik>\n </Sheet>\n );\n};\n\nexport default CannedResponsesPane;\n"],"names":["CANNED_RESPONSE_INPUT_ACTION_NAMES","CANNED_RESPONSE_RICH_TEXT_ACTION_NAME","CANNED_RESPONSE_ACTION_LABELS","concat","reduce","labelObject","actionName","_objectSpread","_defineProperty","ACTION_OPTIONS","addNote","assignTicketFieldValue","ACTION_TYPES_MAP","single_option","multi_option","checkbox","integer","DEFAULT_CHECKBOX_OPTIONS","label","t","value","Action","_ref","id","setFieldValue","_ref$richText","richText","_jsxs","className","children","_jsx","Label","Editor","initialValue","onChange","newValue","_createElement","Input","disabled","key","replace","renderActionValue","actionType","displayValue","join","renderDefaultAction","_ref2","name","trixBody","includes","renderCustomAction","_ref3","actionableId","actionOptions","actionOption","findBy","type","actionValue","isRichText","getActionDropdown","_ref4","status","teams","members","tags","change_status","assign_group","assign_agent","add_tags","remove_tags","getActionType","kind","getDropdownOptions","optionsAttribute","map","_ref5","_toConsumableArray","renderAction","_ref6","_ref6$actionOptions","_ref6$trixBody","isCustomAction","buildActionOptions","_ref7","dropdownOptions","actionNameOptions","variables","actionDropdown","options","option","fields","filter","field","startsWith","fieldOptions","_ref8","attributeOptions","data","what","defaultData","actionable_id","actionable_type","Body","cannedResponse","dropdownList","isLoading","_useTranslation","useTranslation","Spinner","sortedActions","actions","sort","a","b","not","action","CannedResponsesPane","areDropdownListsLoading","isCannedResponsePaneOpen","isLoadingPreview","macros","onApply","onCancel","previewCannedResponses","previewParams","_ref$variables","_useState","useState","_useState2","_slicedToArray","setCannedResponse","initialFocusRef","useRef","handleSelect","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","payload","onSuccess","response","values","stop","_x","apply","arguments","handleSubmit","onSettled","updatedValues","omit","handleCancel","Sheet","isOpen","onClose","Header","Title","PLURAL","Formik","initialValues","toLabelAndValue","onSubmit","isSubmitting","Form","Select","isSearchable","ref","isPresent","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps"],"mappings":"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"}