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