@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.
- package/dist/.ready +1 -1
- package/dist/NeetoRulesForm.js +67 -162
- package/dist/NeetoRulesForm.js.map +1 -1
- package/dist/cjs/NeetoRulesForm.js +10 -105
- package/dist/cjs/NeetoRulesForm.js.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/v2/CannedResponsesPane.js +396 -0
- package/dist/cjs/v2/CannedResponsesPane.js.map +1 -0
- package/dist/cjs/v2/NeetoRules.js +486 -0
- package/dist/cjs/v2/NeetoRules.js.map +1 -0
- package/dist/cjs/v2/NeetoRulesForm.js +6818 -0
- package/dist/cjs/v2/NeetoRulesForm.js.map +1 -0
- package/dist/cjs/v2/RulePreview.js +513 -0
- package/dist/cjs/v2/RulePreview.js.map +1 -0
- package/dist/cjs/v2/RulesReorder.js +24 -0
- package/dist/cjs/v2/RulesReorder.js.map +1 -0
- package/dist/cjs/v2/constants.js +8 -0
- package/dist/cjs/v2/constants.js.map +1 -0
- package/dist/cjs/v2/hooks.js +15 -0
- package/dist/cjs/v2/hooks.js.map +1 -0
- package/dist/cjs/v2/index.js +86 -0
- package/dist/cjs/v2/index.js.map +1 -0
- package/dist/constants-CYdcft3h.js +53 -0
- package/dist/constants-CYdcft3h.js.map +1 -0
- package/dist/constants-dLBadaIU.js +60 -0
- package/dist/constants-dLBadaIU.js.map +1 -0
- package/dist/index-BBcadHIi.js +208 -0
- package/dist/index-BBcadHIi.js.map +1 -0
- package/dist/index-CSnQp41c.js +211 -0
- package/dist/index-CSnQp41c.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/useCustomDataStore-D7hl6nev.js +74 -0
- package/dist/useCustomDataStore-D7hl6nev.js.map +1 -0
- package/dist/useCustomDataStore-DipT25Pg.js +77 -0
- package/dist/useCustomDataStore-DipT25Pg.js.map +1 -0
- package/dist/useDebouncedUpdate-6Ibug5MF.js +108 -0
- package/dist/useDebouncedUpdate-6Ibug5MF.js.map +1 -0
- package/dist/useDebouncedUpdate-BcPAGgg7.js +103 -0
- package/dist/useDebouncedUpdate-BcPAGgg7.js.map +1 -0
- package/dist/useUtilityStore-BBb39TOj.js +53 -0
- package/dist/useUtilityStore-BBb39TOj.js.map +1 -0
- package/dist/useUtilityStore-DkxAexDw.js +55 -0
- package/dist/useUtilityStore-DkxAexDw.js.map +1 -0
- package/dist/v2/CannedResponsesPane.js +394 -0
- package/dist/v2/CannedResponsesPane.js.map +1 -0
- package/dist/v2/NeetoRules.js +484 -0
- package/dist/v2/NeetoRules.js.map +1 -0
- package/dist/v2/NeetoRulesForm.js +6797 -0
- package/dist/v2/NeetoRulesForm.js.map +1 -0
- package/dist/v2/RulePreview.js +511 -0
- package/dist/v2/RulePreview.js.map +1 -0
- package/dist/v2/RulesReorder.js +18 -0
- package/dist/v2/RulesReorder.js.map +1 -0
- package/dist/v2/constants.js +2 -0
- package/dist/v2/constants.js.map +1 -0
- package/dist/v2/hooks.js +8 -0
- package/dist/v2/hooks.js.map +1 -0
- package/dist/v2/index.js +74 -0
- package/dist/v2/index.js.map +1 -0
- package/package.json +26 -14
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { t as t$1 } from 'i18next';
|
|
3
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
4
|
+
import { useStateWithDependency, useDebounce } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
5
|
+
|
|
6
|
+
var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=true===r.prepend?"prepend":"append",d=true===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
|
|
7
|
+
|
|
8
|
+
var css = ".neeto-rules-main-content__container{height:100dvh!important}.neeto-rules-main-card .neeto-ui-btn.underline{text-align:start}.neeto-rules-side-panel{flex-grow:0;flex-shrink:0}.neeto-rules-side-panel--small{width:320px}.neeto-rules-side-panel--large{width:380px}@media (min-width:1024px){.neeto-rules-side-panel--small{width:380px}.neeto-rules-side-panel--large{width:480px}}.neeto-rules-json-editor__wrapper{height:35vh;padding-bottom:2rem;position:relative}.neeto-rules-json-editor__editor{height:100%}.neeto-rules-json-editor__dynamic-variables{inset-inline-end:1rem;position:absolute;top:1rem;z-index:10}[data-tippy-root]{z-index:99999!important}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL2xheW91dC5jc3MiLCJhcHAvamF2YXNjcmlwdC9zcmMvc3R5bGVzaGVldHMvY29tcG9uZW50cy9wYW5lLmNzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL2pzb24tZWRpdG9yLmNzcyIsImFwcC9qYXZhc2NyaXB0L3NyYy9zdHlsZXNoZWV0cy9jb21wb25lbnRzL2Ryb3Bkb3duLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FDRSx1QkFDRixDQUVBLCtDQUNFLGdCQUNGLENDTkEsd0JBRUUsV0FBWSxDQURaLGFBRUYsQ0FFQSwrQkFDRSxXQUNGLENBRUEsK0JBQ0UsV0FDRixDQUVBLDBCQUNFLCtCQUNFLFdBQ0YsQ0FDQSwrQkFDRSxXQUNGLENBQ0YsQ0NwQkEsa0NBRUUsV0FBWSxDQUNaLG1CQUFvQixDQUZwQixpQkFHRixDQUVBLGlDQUNFLFdBQ0YsQ0FFQSw0Q0FHRSxxQkFBc0IsQ0FGdEIsaUJBQWtCLENBQ2xCLFFBQVMsQ0FFVCxVQUNGLENDZkEsa0JBQ0UsdUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIubmVldG8tcnVsZXMtbWFpbi1jb250ZW50X19jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMGR2aCAhaW1wb3J0YW50O1xufVxuXG4ubmVldG8tcnVsZXMtbWFpbi1jYXJkIC5uZWV0by11aS1idG4udW5kZXJsaW5lIHtcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XG59XG4iLCIubmVldG8tcnVsZXMtc2lkZS1wYW5lbCB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG5cbi5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1zbWFsbCB7XG4gIHdpZHRoOiAzMjBweDtcbn1cblxuLm5lZXRvLXJ1bGVzLXNpZGUtcGFuZWwtLWxhcmdlIHtcbiAgd2lkdGg6IDM4MHB4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1zbWFsbCB7XG4gICAgd2lkdGg6IDM4MHB4O1xuICB9XG4gIC5uZWV0by1ydWxlcy1zaWRlLXBhbmVsLS1sYXJnZSB7XG4gICAgd2lkdGg6IDQ4MHB4O1xuICB9XG59XG4iLCIubmVldG8tcnVsZXMtanNvbi1lZGl0b3JfX3dyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMzV2aDtcbiAgcGFkZGluZy1ib3R0b206IDJyZW07XG59XG5cbi5uZWV0by1ydWxlcy1qc29uLWVkaXRvcl9fZWRpdG9yIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubmVldG8tcnVsZXMtanNvbi1lZGl0b3JfX2R5bmFtaWMtdmFyaWFibGVzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDFyZW07XG4gIGluc2V0LWlubGluZS1lbmQ6IDFyZW07XG4gIHotaW5kZXg6IDEwO1xufVxuIiwiW2RhdGEtdGlwcHktcm9vdF0ge1xuICB6LWluZGV4OiA5OTk5OSAhaW1wb3J0YW50O1xufVxuIl19 */";
|
|
9
|
+
n(css,{});
|
|
10
|
+
|
|
11
|
+
function isBuffer (obj) {
|
|
12
|
+
return obj &&
|
|
13
|
+
obj.constructor &&
|
|
14
|
+
(typeof obj.constructor.isBuffer === 'function') &&
|
|
15
|
+
obj.constructor.isBuffer(obj)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function keyIdentity (key) {
|
|
19
|
+
return key
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function flatten (target, opts) {
|
|
23
|
+
opts = opts || {};
|
|
24
|
+
|
|
25
|
+
const delimiter = opts.delimiter || '.';
|
|
26
|
+
const maxDepth = opts.maxDepth;
|
|
27
|
+
const transformKey = opts.transformKey || keyIdentity;
|
|
28
|
+
const output = {};
|
|
29
|
+
|
|
30
|
+
function step (object, prev, currentDepth) {
|
|
31
|
+
currentDepth = currentDepth || 1;
|
|
32
|
+
Object.keys(object).forEach(function (key) {
|
|
33
|
+
const value = object[key];
|
|
34
|
+
const isarray = opts.safe && Array.isArray(value);
|
|
35
|
+
const type = Object.prototype.toString.call(value);
|
|
36
|
+
const isbuffer = isBuffer(value);
|
|
37
|
+
const isobject = (
|
|
38
|
+
type === '[object Object]' ||
|
|
39
|
+
type === '[object Array]'
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
const newKey = prev
|
|
43
|
+
? prev + delimiter + transformKey(key)
|
|
44
|
+
: transformKey(key);
|
|
45
|
+
|
|
46
|
+
if (!isarray && !isbuffer && isobject && Object.keys(value).length &&
|
|
47
|
+
(!opts.maxDepth || currentDepth < maxDepth)) {
|
|
48
|
+
return step(value, newKey, currentDepth + 1)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
output[newKey] = value;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
step(target);
|
|
56
|
+
|
|
57
|
+
return output
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
var useOnClickOutside = function useOnClickOutside(ref, handler) {
|
|
61
|
+
useEffect(function () {
|
|
62
|
+
var listener = function listener(event) {
|
|
63
|
+
// Do nothing if clicking ref's element or descendent elements
|
|
64
|
+
if (!ref.current || ref.current.contains(event.target)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
handler(event);
|
|
68
|
+
};
|
|
69
|
+
document.addEventListener("mousedown", listener);
|
|
70
|
+
document.addEventListener("touchstart", listener);
|
|
71
|
+
return function () {
|
|
72
|
+
document.removeEventListener("mousedown", listener);
|
|
73
|
+
document.removeEventListener("touchstart", listener);
|
|
74
|
+
};
|
|
75
|
+
}, [handler]);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
var SHORTCUTS = {
|
|
79
|
+
cancel: {
|
|
80
|
+
sequence: "escape",
|
|
81
|
+
description: t$1("neetoRules.shortcuts.cancel")
|
|
82
|
+
},
|
|
83
|
+
submit: {
|
|
84
|
+
sequence: "enter",
|
|
85
|
+
description: t$1("neetoRules.shortcuts.submit")
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
var useDebouncedUpdate = function useDebouncedUpdate(value, setValue) {
|
|
90
|
+
var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;
|
|
91
|
+
var _useStateWithDependen = useStateWithDependency(value),
|
|
92
|
+
_useStateWithDependen2 = _slicedToArray(_useStateWithDependen, 2),
|
|
93
|
+
text = _useStateWithDependen2[0],
|
|
94
|
+
setText = _useStateWithDependen2[1];
|
|
95
|
+
var debouncedValue = useDebounce(text, duration);
|
|
96
|
+
useEffect(function () {
|
|
97
|
+
setValue(text);
|
|
98
|
+
}, [debouncedValue]);
|
|
99
|
+
return [text, setText];
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export { SHORTCUTS as S, useDebouncedUpdate as a, flatten as f, useOnClickOutside as u };
|
|
103
|
+
//# sourceMappingURL=useDebouncedUpdate-BcPAGgg7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDebouncedUpdate-BcPAGgg7.js","sources":["../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../node_modules/flat/index.js","../app/javascript/src/hooks/useOnClickOutside.js","../app/javascript/src/constants/keyboardShortcuts.js","../app/javascript/src/hooks/useDebouncedUpdate.js"],"sourcesContent":["var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","function isBuffer (obj) {\n return obj &&\n obj.constructor &&\n (typeof obj.constructor.isBuffer === 'function') &&\n obj.constructor.isBuffer(obj)\n}\n\nfunction keyIdentity (key) {\n return key\n}\n\nexport function flatten (target, opts) {\n opts = opts || {}\n\n const delimiter = opts.delimiter || '.'\n const maxDepth = opts.maxDepth\n const transformKey = opts.transformKey || keyIdentity\n const output = {}\n\n function step (object, prev, currentDepth) {\n currentDepth = currentDepth || 1\n Object.keys(object).forEach(function (key) {\n const value = object[key]\n const isarray = opts.safe && Array.isArray(value)\n const type = Object.prototype.toString.call(value)\n const isbuffer = isBuffer(value)\n const isobject = (\n type === '[object Object]' ||\n type === '[object Array]'\n )\n\n const newKey = prev\n ? prev + delimiter + transformKey(key)\n : transformKey(key)\n\n if (!isarray && !isbuffer && isobject && Object.keys(value).length &&\n (!opts.maxDepth || currentDepth < maxDepth)) {\n return step(value, newKey, currentDepth + 1)\n }\n\n output[newKey] = value\n })\n }\n\n step(target)\n\n return output\n}\n\nexport function unflatten (target, opts) {\n opts = opts || {}\n\n const delimiter = opts.delimiter || '.'\n const overwrite = opts.overwrite || false\n const transformKey = opts.transformKey || keyIdentity\n const result = {}\n\n const isbuffer = isBuffer(target)\n if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') {\n return target\n }\n\n // safely ensure that the key is\n // an integer.\n function getkey (key) {\n const parsedKey = Number(key)\n\n return (\n isNaN(parsedKey) ||\n key.indexOf('.') !== -1 ||\n opts.object\n )\n ? key\n : parsedKey\n }\n\n function addKeys (keyPrefix, recipient, target) {\n return Object.keys(target).reduce(function (result, key) {\n result[keyPrefix + delimiter + key] = target[key]\n\n return result\n }, recipient)\n }\n\n function isEmpty (val) {\n const type = Object.prototype.toString.call(val)\n const isArray = type === '[object Array]'\n const isObject = type === '[object Object]'\n\n if (!val) {\n return true\n } else if (isArray) {\n return !val.length\n } else if (isObject) {\n return !Object.keys(val).length\n }\n }\n\n target = Object.keys(target).reduce(function (result, key) {\n const type = Object.prototype.toString.call(target[key])\n const isObject = (type === '[object Object]' || type === '[object Array]')\n if (!isObject || isEmpty(target[key])) {\n result[key] = target[key]\n return result\n } else {\n return addKeys(\n key,\n result,\n flatten(target[key], opts)\n )\n }\n }, {})\n\n Object.keys(target).forEach(function (key) {\n const split = key.split(delimiter).map(transformKey)\n let key1 = getkey(split.shift())\n let key2 = getkey(split[0])\n let recipient = result\n\n while (key2 !== undefined) {\n if (key1 === '__proto__') {\n return\n }\n\n const type = Object.prototype.toString.call(recipient[key1])\n const isobject = (\n type === '[object Object]' ||\n type === '[object Array]'\n )\n\n // do not write over falsey, non-undefined values if overwrite is false\n if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') {\n return\n }\n\n if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) {\n recipient[key1] = (\n typeof key2 === 'number' &&\n !opts.object\n ? []\n : {}\n )\n }\n\n recipient = recipient[key1]\n if (split.length > 0) {\n key1 = getkey(split.shift())\n key2 = getkey(split[0])\n }\n }\n\n // unflatten again for 'messy objects'\n recipient[key1] = unflatten(target[key], opts)\n })\n\n return result\n}\n","import { useEffect } from \"react\";\n\nconst useOnClickOutside = (ref, handler) => {\n useEffect(() => {\n const listener = event => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n };\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n }, [handler]);\n};\n\nexport default useOnClickOutside;\n","import { t } from \"i18next\";\n\nexport const SHORTCUTS = {\n cancel: {\n sequence: \"escape\",\n description: t(\"neetoRules.shortcuts.cancel\"),\n },\n submit: {\n sequence: \"enter\",\n description: t(\"neetoRules.shortcuts.submit\"),\n },\n};\n","import { useEffect } from \"react\";\n\nimport { useDebounce, useStateWithDependency } from \"neetocommons/react-utils\";\n\nconst useDebouncedUpdate = (value, setValue, duration = 200) => {\n const [text, setText] = useStateWithDependency(value);\n\n const debouncedValue = useDebounce(text, duration);\n\n useEffect(() => {\n setValue(text);\n }, [debouncedValue]);\n\n return [text, setText];\n};\n\nexport default useDebouncedUpdate;\n"],"names":["useOnClickOutside","ref","handler","useEffect","listener","event","current","contains","target","document","addEventListener","removeEventListener","SHORTCUTS","cancel","sequence","description","t","submit","useDebouncedUpdate","value","setValue","duration","arguments","length","undefined","_useStateWithDependen","useStateWithDependency","_useStateWithDependen2","_slicedToArray","text","setText","debouncedValue","useDebounce"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { withImmutableActions } from '@bigbinary/neeto-commons-frontend/v2/react-utils';
|
|
2
|
+
import { modify, always } from 'ramda';
|
|
3
|
+
import { create } from 'zustand';
|
|
4
|
+
|
|
5
|
+
var applyStateOrUpdater = function applyStateOrUpdater(stateOrUpdater) {
|
|
6
|
+
return typeof stateOrUpdater === "function" ? stateOrUpdater : always(stateOrUpdater);
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
/** @type {import("neetocommons/react-utils").ZustandStoreHook} */
|
|
10
|
+
var useUtilityStore = create(withImmutableActions(function (set) {
|
|
11
|
+
return {
|
|
12
|
+
moreActionDropdownItems: [],
|
|
13
|
+
showPreviewPane: false,
|
|
14
|
+
panelState: {
|
|
15
|
+
data: {}
|
|
16
|
+
},
|
|
17
|
+
isSaveAsTemplateEnabled: false,
|
|
18
|
+
errorFields: [],
|
|
19
|
+
setMoreActionDropdownItems: function setMoreActionDropdownItems(items) {
|
|
20
|
+
return set({
|
|
21
|
+
moreActionDropdownItems: items,
|
|
22
|
+
showPreviewPane: true
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
hidePreviewPane: function hidePreviewPane() {
|
|
26
|
+
return set({
|
|
27
|
+
moreActionDropdownItems: [],
|
|
28
|
+
showPreviewPane: false
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
setPanelState: function setPanelState(stateOrUpdater) {
|
|
32
|
+
return set(modify("panelState", applyStateOrUpdater(stateOrUpdater)));
|
|
33
|
+
},
|
|
34
|
+
resetPanelState: function resetPanelState() {
|
|
35
|
+
return set({
|
|
36
|
+
panelState: {
|
|
37
|
+
data: {}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
setIsSaveAsTemplateEnabled: function setIsSaveAsTemplateEnabled(isSaveAsTemplateEnabled) {
|
|
42
|
+
return set({
|
|
43
|
+
isSaveAsTemplateEnabled: isSaveAsTemplateEnabled
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
setErrorFields: function setErrorFields(stateOrUpdater) {
|
|
47
|
+
return set(modify("errorFields", applyStateOrUpdater(stateOrUpdater)));
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}));
|
|
51
|
+
|
|
52
|
+
export { useUtilityStore as u };
|
|
53
|
+
//# sourceMappingURL=useUtilityStore-BBb39TOj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUtilityStore-BBb39TOj.js","sources":["../app/javascript/src/v2/components/stores/useUtilityStore.js"],"sourcesContent":["import { withImmutableActions } from \"neetocommons/v2/react-utils\";\nimport { always, modify } from \"ramda\";\nimport { create } from \"zustand\";\n\nconst applyStateOrUpdater = stateOrUpdater =>\n typeof stateOrUpdater === \"function\"\n ? stateOrUpdater\n : always(stateOrUpdater);\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useUtilityStore = create(\n withImmutableActions(set => ({\n moreActionDropdownItems: [],\n showPreviewPane: false,\n panelState: { data: {} },\n isSaveAsTemplateEnabled: false,\n errorFields: [],\n\n setMoreActionDropdownItems: items =>\n set({ moreActionDropdownItems: items, showPreviewPane: true }),\n hidePreviewPane: () =>\n set({ moreActionDropdownItems: [], showPreviewPane: false }),\n setPanelState: stateOrUpdater =>\n set(modify(\"panelState\", applyStateOrUpdater(stateOrUpdater))),\n resetPanelState: () => set({ panelState: { data: {} } }),\n setIsSaveAsTemplateEnabled: isSaveAsTemplateEnabled =>\n set({ isSaveAsTemplateEnabled }),\n setErrorFields: stateOrUpdater =>\n set(modify(\"errorFields\", applyStateOrUpdater(stateOrUpdater))),\n }))\n);\n\nexport default useUtilityStore;\n"],"names":["applyStateOrUpdater","stateOrUpdater","always","useUtilityStore","create","withImmutableActions","set","moreActionDropdownItems","showPreviewPane","panelState","data","isSaveAsTemplateEnabled","errorFields","setMoreActionDropdownItems","items","hidePreviewPane","setPanelState","modify","resetPanelState","setIsSaveAsTemplateEnabled","setErrorFields"],"mappings":";;;;AAIA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,cAAc,EAAA;EAAA,OACxC,OAAOA,cAAc,KAAK,UAAU,GAChCA,cAAc,GACdC,MAAM,CAACD,cAAc,CAAC;AAAA,CAAA;;AAE5B;AACA,IAAME,eAAe,GAAGC,MAAM,CAC5BC,oBAAoB,CAAC,UAAAC,GAAG,EAAA;EAAA,OAAK;AAC3BC,IAAAA,uBAAuB,EAAE,EAAE;AAC3BC,IAAAA,eAAe,EAAE,KAAK;AACtBC,IAAAA,UAAU,EAAE;AAAEC,MAAAA,IAAI,EAAE;KAAI;AACxBC,IAAAA,uBAAuB,EAAE,KAAK;AAC9BC,IAAAA,WAAW,EAAE,EAAE;AAEfC,IAAAA,0BAA0B,EAAE,SAA5BA,0BAA0BA,CAAEC,KAAK,EAAA;AAAA,MAAA,OAC/BR,GAAG,CAAC;AAAEC,QAAAA,uBAAuB,EAAEO,KAAK;AAAEN,QAAAA,eAAe,EAAE;AAAK,OAAC,CAAC;AAAA,IAAA,CAAA;IAChEO,eAAe,EAAE,SAAjBA,eAAeA,GAAA;AAAA,MAAA,OACbT,GAAG,CAAC;AAAEC,QAAAA,uBAAuB,EAAE,EAAE;AAAEC,QAAAA,eAAe,EAAE;AAAM,OAAC,CAAC;AAAA,IAAA,CAAA;AAC9DQ,IAAAA,aAAa,EAAE,SAAfA,aAAaA,CAAEf,cAAc,EAAA;MAAA,OAC3BK,GAAG,CAACW,MAAM,CAAC,YAAY,EAAEjB,mBAAmB,CAACC,cAAc,CAAC,CAAC,CAAC;AAAA,IAAA,CAAA;IAChEiB,eAAe,EAAE,SAAjBA,eAAeA,GAAA;AAAA,MAAA,OAAQZ,GAAG,CAAC;AAAEG,QAAAA,UAAU,EAAE;AAAEC,UAAAA,IAAI,EAAE;AAAG;AAAE,OAAC,CAAC;AAAA,IAAA,CAAA;AACxDS,IAAAA,0BAA0B,EAAE,SAA5BA,0BAA0BA,CAAER,uBAAuB,EAAA;AAAA,MAAA,OACjDL,GAAG,CAAC;AAAEK,QAAAA,uBAAuB,EAAvBA;AAAwB,OAAC,CAAC;AAAA,IAAA,CAAA;AAClCS,IAAAA,cAAc,EAAE,SAAhBA,cAAcA,CAAEnB,cAAc,EAAA;MAAA,OAC5BK,GAAG,CAACW,MAAM,CAAC,aAAa,EAAEjB,mBAAmB,CAACC,cAAc,CAAC,CAAC,CAAC;AAAA,IAAA;GAClE;AAAA,CAAC,CACJ;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var reactUtils = require('@bigbinary/neeto-commons-frontend/v2/react-utils');
|
|
4
|
+
var ramda = require('ramda');
|
|
5
|
+
var zustand = require('zustand');
|
|
6
|
+
|
|
7
|
+
var applyStateOrUpdater = function applyStateOrUpdater(stateOrUpdater) {
|
|
8
|
+
return typeof stateOrUpdater === "function" ? stateOrUpdater : ramda.always(stateOrUpdater);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
/** @type {import("neetocommons/react-utils").ZustandStoreHook} */
|
|
12
|
+
var useUtilityStore = zustand.create(reactUtils.withImmutableActions(function (set) {
|
|
13
|
+
return {
|
|
14
|
+
moreActionDropdownItems: [],
|
|
15
|
+
showPreviewPane: false,
|
|
16
|
+
panelState: {
|
|
17
|
+
data: {}
|
|
18
|
+
},
|
|
19
|
+
isSaveAsTemplateEnabled: false,
|
|
20
|
+
errorFields: [],
|
|
21
|
+
setMoreActionDropdownItems: function setMoreActionDropdownItems(items) {
|
|
22
|
+
return set({
|
|
23
|
+
moreActionDropdownItems: items,
|
|
24
|
+
showPreviewPane: true
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
hidePreviewPane: function hidePreviewPane() {
|
|
28
|
+
return set({
|
|
29
|
+
moreActionDropdownItems: [],
|
|
30
|
+
showPreviewPane: false
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
setPanelState: function setPanelState(stateOrUpdater) {
|
|
34
|
+
return set(ramda.modify("panelState", applyStateOrUpdater(stateOrUpdater)));
|
|
35
|
+
},
|
|
36
|
+
resetPanelState: function resetPanelState() {
|
|
37
|
+
return set({
|
|
38
|
+
panelState: {
|
|
39
|
+
data: {}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
setIsSaveAsTemplateEnabled: function setIsSaveAsTemplateEnabled(isSaveAsTemplateEnabled) {
|
|
44
|
+
return set({
|
|
45
|
+
isSaveAsTemplateEnabled: isSaveAsTemplateEnabled
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
setErrorFields: function setErrorFields(stateOrUpdater) {
|
|
49
|
+
return set(ramda.modify("errorFields", applyStateOrUpdater(stateOrUpdater)));
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}));
|
|
53
|
+
|
|
54
|
+
exports.useUtilityStore = useUtilityStore;
|
|
55
|
+
//# sourceMappingURL=useUtilityStore-DkxAexDw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUtilityStore-DkxAexDw.js","sources":["../app/javascript/src/v2/components/stores/useUtilityStore.js"],"sourcesContent":["import { withImmutableActions } from \"neetocommons/v2/react-utils\";\nimport { always, modify } from \"ramda\";\nimport { create } from \"zustand\";\n\nconst applyStateOrUpdater = stateOrUpdater =>\n typeof stateOrUpdater === \"function\"\n ? stateOrUpdater\n : always(stateOrUpdater);\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useUtilityStore = create(\n withImmutableActions(set => ({\n moreActionDropdownItems: [],\n showPreviewPane: false,\n panelState: { data: {} },\n isSaveAsTemplateEnabled: false,\n errorFields: [],\n\n setMoreActionDropdownItems: items =>\n set({ moreActionDropdownItems: items, showPreviewPane: true }),\n hidePreviewPane: () =>\n set({ moreActionDropdownItems: [], showPreviewPane: false }),\n setPanelState: stateOrUpdater =>\n set(modify(\"panelState\", applyStateOrUpdater(stateOrUpdater))),\n resetPanelState: () => set({ panelState: { data: {} } }),\n setIsSaveAsTemplateEnabled: isSaveAsTemplateEnabled =>\n set({ isSaveAsTemplateEnabled }),\n setErrorFields: stateOrUpdater =>\n set(modify(\"errorFields\", applyStateOrUpdater(stateOrUpdater))),\n }))\n);\n\nexport default useUtilityStore;\n"],"names":["applyStateOrUpdater","stateOrUpdater","always","useUtilityStore","create","withImmutableActions","set","moreActionDropdownItems","showPreviewPane","panelState","data","isSaveAsTemplateEnabled","errorFields","setMoreActionDropdownItems","items","hidePreviewPane","setPanelState","modify","resetPanelState","setIsSaveAsTemplateEnabled","setErrorFields"],"mappings":";;;;;;AAIA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,cAAc,EAAA;EAAA,OACxC,OAAOA,cAAc,KAAK,UAAU,GAChCA,cAAc,GACdC,YAAM,CAACD,cAAc,CAAC;AAAA,CAAA;;AAE5B;AACA,IAAME,eAAe,GAAGC,cAAM,CAC5BC,+BAAoB,CAAC,UAAAC,GAAG,EAAA;EAAA,OAAK;AAC3BC,IAAAA,uBAAuB,EAAE,EAAE;AAC3BC,IAAAA,eAAe,EAAE,KAAK;AACtBC,IAAAA,UAAU,EAAE;AAAEC,MAAAA,IAAI,EAAE;KAAI;AACxBC,IAAAA,uBAAuB,EAAE,KAAK;AAC9BC,IAAAA,WAAW,EAAE,EAAE;AAEfC,IAAAA,0BAA0B,EAAE,SAA5BA,0BAA0BA,CAAEC,KAAK,EAAA;AAAA,MAAA,OAC/BR,GAAG,CAAC;AAAEC,QAAAA,uBAAuB,EAAEO,KAAK;AAAEN,QAAAA,eAAe,EAAE;AAAK,OAAC,CAAC;AAAA,IAAA,CAAA;IAChEO,eAAe,EAAE,SAAjBA,eAAeA,GAAA;AAAA,MAAA,OACbT,GAAG,CAAC;AAAEC,QAAAA,uBAAuB,EAAE,EAAE;AAAEC,QAAAA,eAAe,EAAE;AAAM,OAAC,CAAC;AAAA,IAAA,CAAA;AAC9DQ,IAAAA,aAAa,EAAE,SAAfA,aAAaA,CAAEf,cAAc,EAAA;MAAA,OAC3BK,GAAG,CAACW,YAAM,CAAC,YAAY,EAAEjB,mBAAmB,CAACC,cAAc,CAAC,CAAC,CAAC;AAAA,IAAA,CAAA;IAChEiB,eAAe,EAAE,SAAjBA,eAAeA,GAAA;AAAA,MAAA,OAAQZ,GAAG,CAAC;AAAEG,QAAAA,UAAU,EAAE;AAAEC,UAAAA,IAAI,EAAE;AAAG;AAAE,OAAC,CAAC;AAAA,IAAA,CAAA;AACxDS,IAAAA,0BAA0B,EAAE,SAA5BA,0BAA0BA,CAAER,uBAAuB,EAAA;AAAA,MAAA,OACjDL,GAAG,CAAC;AAAEK,QAAAA,uBAAuB,EAAvBA;AAAwB,OAAC,CAAC;AAAA,IAAA,CAAA;AAClCS,IAAAA,cAAc,EAAE,SAAhBA,cAAcA,CAAEnB,cAAc,EAAA;MAAA,OAC5BK,GAAG,CAACW,YAAM,CAAC,aAAa,EAAEjB,mBAAmB,CAACC,cAAc,CAAC,CAAC,CAAC;AAAA,IAAA;GAClE;AAAA,CAAC,CACJ;;;;"}
|
|
@@ -0,0 +1,394 @@
|
|
|
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 { Label, Input, Spinner, Sheet } from '@bigbinary/neeto-atoms';
|
|
6
|
+
import { Select, ActionBlock } from '@bigbinary/neeto-atoms/formik';
|
|
7
|
+
import { Formik, Form } from 'formik';
|
|
8
|
+
import { findBy, isPresent, toLabelAndValue } from '@bigbinary/neeto-cist';
|
|
9
|
+
import { PLURAL } from '@bigbinary/neeto-commons-frontend/v2/constants';
|
|
10
|
+
import { join, not, omit, values } from 'ramda';
|
|
11
|
+
import { useTranslation } from 'react-i18next';
|
|
12
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
13
|
+
import { t } from 'i18next';
|
|
14
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
15
|
+
import Editor from '@bigbinary/neeto-editor/Editor';
|
|
16
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
17
|
+
|
|
18
|
+
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; }
|
|
19
|
+
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; }
|
|
20
|
+
var CANNED_RESPONSE_INPUT_ACTION_NAMES = ["assign_agent", "assign_group", "remove_tags", "add_tags", "change_priority", "change_status"];
|
|
21
|
+
var CANNED_RESPONSE_RICH_TEXT_ACTION_NAME = ["add_note", "add_reply"];
|
|
22
|
+
var CANNED_RESPONSE_ACTION_LABELS = [].concat(CANNED_RESPONSE_INPUT_ACTION_NAMES, CANNED_RESPONSE_RICH_TEXT_ACTION_NAME).reduce(function (labelObject, actionName) {
|
|
23
|
+
return _objectSpread$2(_objectSpread$2({}, labelObject), {}, _defineProperty({}, actionName, "neetoRules.labels.".concat(actionName)));
|
|
24
|
+
}, {});
|
|
25
|
+
var ACTION_OPTIONS = {
|
|
26
|
+
assignTicketFieldValue: "assign_field_value"
|
|
27
|
+
};
|
|
28
|
+
var ACTION_TYPES_MAP = {
|
|
29
|
+
single_option: "dropdown",
|
|
30
|
+
multi_option: "multiSelect",
|
|
31
|
+
checkbox: "dropdown",
|
|
32
|
+
integer: "number"
|
|
33
|
+
};
|
|
34
|
+
var DEFAULT_CHECKBOX_OPTIONS = [{
|
|
35
|
+
label: t("neetoRules.labels.checked"),
|
|
36
|
+
value: true
|
|
37
|
+
}, {
|
|
38
|
+
label: t("neetoRules.labels.unchecked"),
|
|
39
|
+
value: false
|
|
40
|
+
}];
|
|
41
|
+
|
|
42
|
+
var Action = function Action(_ref) {
|
|
43
|
+
var id = _ref.id,
|
|
44
|
+
label = _ref.label,
|
|
45
|
+
setFieldValue = _ref.setFieldValue,
|
|
46
|
+
value = _ref.value,
|
|
47
|
+
_ref$richText = _ref.richText,
|
|
48
|
+
richText = _ref$richText === void 0 ? false : _ref$richText;
|
|
49
|
+
if (richText) {
|
|
50
|
+
return /*#__PURE__*/jsxs("div", {
|
|
51
|
+
className: "mb-4 space-y-2",
|
|
52
|
+
children: [/*#__PURE__*/jsx(Label, {
|
|
53
|
+
children: label
|
|
54
|
+
}), /*#__PURE__*/jsx(Editor, {
|
|
55
|
+
initialValue: value,
|
|
56
|
+
onChange: function onChange(newValue) {
|
|
57
|
+
return setFieldValue(id, newValue);
|
|
58
|
+
}
|
|
59
|
+
})]
|
|
60
|
+
}, id);
|
|
61
|
+
}
|
|
62
|
+
return /*#__PURE__*/createElement(Input, {
|
|
63
|
+
label: label,
|
|
64
|
+
disabled: true,
|
|
65
|
+
className: "mb-4",
|
|
66
|
+
key: id,
|
|
67
|
+
value: value.replace(/_/g, " ")
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
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; }
|
|
72
|
+
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; }
|
|
73
|
+
var renderActionValue = function renderActionValue(_ref) {
|
|
74
|
+
var actionType = _ref.actionType,
|
|
75
|
+
displayValue = _ref.displayValue;
|
|
76
|
+
if (actionType === "multiSelect") {
|
|
77
|
+
return join(", ", displayValue);
|
|
78
|
+
}
|
|
79
|
+
return displayValue;
|
|
80
|
+
};
|
|
81
|
+
var renderDefaultAction = function renderDefaultAction(_ref2) {
|
|
82
|
+
var id = _ref2.id,
|
|
83
|
+
name = _ref2.name,
|
|
84
|
+
displayValue = _ref2.displayValue,
|
|
85
|
+
setFieldValue = _ref2.setFieldValue,
|
|
86
|
+
trixBody = _ref2.trixBody;
|
|
87
|
+
var label = t(CANNED_RESPONSE_ACTION_LABELS[name]);
|
|
88
|
+
if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(name)) {
|
|
89
|
+
return /*#__PURE__*/jsx(Action, {
|
|
90
|
+
id: id,
|
|
91
|
+
label: label,
|
|
92
|
+
setFieldValue: setFieldValue,
|
|
93
|
+
richText: true,
|
|
94
|
+
value: trixBody
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return /*#__PURE__*/jsx(Action, {
|
|
98
|
+
id: id,
|
|
99
|
+
label: label,
|
|
100
|
+
value: displayValue
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
var renderCustomAction = function renderCustomAction(_ref3) {
|
|
104
|
+
var id = _ref3.id,
|
|
105
|
+
actionableId = _ref3.actionableId,
|
|
106
|
+
displayValue = _ref3.displayValue,
|
|
107
|
+
actionOptions = _ref3.actionOptions,
|
|
108
|
+
setFieldValue = _ref3.setFieldValue;
|
|
109
|
+
var actionName = "ticket_field_".concat(actionableId);
|
|
110
|
+
var actionOption = findBy({
|
|
111
|
+
value: actionName
|
|
112
|
+
}, actionOptions);
|
|
113
|
+
var label = actionOption === null || actionOption === void 0 ? void 0 : actionOption.label;
|
|
114
|
+
var actionType = actionOption === null || actionOption === void 0 ? void 0 : actionOption.type;
|
|
115
|
+
var actionValue = renderActionValue({
|
|
116
|
+
actionType: actionType,
|
|
117
|
+
displayValue: displayValue
|
|
118
|
+
});
|
|
119
|
+
var isRichText = actionType === "rich-text";
|
|
120
|
+
return /*#__PURE__*/jsx(Action, {
|
|
121
|
+
id: id,
|
|
122
|
+
label: label,
|
|
123
|
+
setFieldValue: setFieldValue,
|
|
124
|
+
richText: isRichText,
|
|
125
|
+
value: actionValue
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
var getActionDropdown = function getActionDropdown(_ref4) {
|
|
129
|
+
var status = _ref4.status,
|
|
130
|
+
teams = _ref4.teams,
|
|
131
|
+
members = _ref4.members,
|
|
132
|
+
tags = _ref4.tags;
|
|
133
|
+
return {
|
|
134
|
+
change_status: status || [],
|
|
135
|
+
assign_group: teams || [],
|
|
136
|
+
assign_agent: members || [],
|
|
137
|
+
add_tags: tags || [],
|
|
138
|
+
remove_tags: tags || []
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
var getActionType = function getActionType(kind) {
|
|
142
|
+
return ACTION_TYPES_MAP[kind] || kind;
|
|
143
|
+
};
|
|
144
|
+
var getDropdownOptions = function getDropdownOptions(kind, optionsAttribute) {
|
|
145
|
+
if (["single_option", "multi_option"].includes(kind)) {
|
|
146
|
+
return optionsAttribute.map(function (_ref5) {
|
|
147
|
+
var id = _ref5.id,
|
|
148
|
+
label = _ref5.label;
|
|
149
|
+
return {
|
|
150
|
+
label: label,
|
|
151
|
+
value: id
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
} else if (kind === "checkbox") {
|
|
155
|
+
return _toConsumableArray(DEFAULT_CHECKBOX_OPTIONS);
|
|
156
|
+
}
|
|
157
|
+
return [];
|
|
158
|
+
};
|
|
159
|
+
var renderAction = function renderAction(_ref6) {
|
|
160
|
+
var name = _ref6.name,
|
|
161
|
+
id = _ref6.id,
|
|
162
|
+
actionableId = _ref6.actionableId,
|
|
163
|
+
displayValue = _ref6.displayValue,
|
|
164
|
+
_ref6$actionOptions = _ref6.actionOptions,
|
|
165
|
+
actionOptions = _ref6$actionOptions === void 0 ? [] : _ref6$actionOptions,
|
|
166
|
+
setFieldValue = _ref6.setFieldValue,
|
|
167
|
+
_ref6$trixBody = _ref6.trixBody,
|
|
168
|
+
trixBody = _ref6$trixBody === void 0 ? "" : _ref6$trixBody;
|
|
169
|
+
var isCustomAction = name === ACTION_OPTIONS.assignTicketFieldValue;
|
|
170
|
+
return isCustomAction ? renderCustomAction({
|
|
171
|
+
id: id,
|
|
172
|
+
actionableId: actionableId,
|
|
173
|
+
displayValue: displayValue,
|
|
174
|
+
actionOptions: actionOptions,
|
|
175
|
+
setFieldValue: setFieldValue
|
|
176
|
+
}) : renderDefaultAction({
|
|
177
|
+
id: id,
|
|
178
|
+
name: name,
|
|
179
|
+
displayValue: displayValue,
|
|
180
|
+
setFieldValue: setFieldValue,
|
|
181
|
+
trixBody: trixBody
|
|
182
|
+
});
|
|
183
|
+
};
|
|
184
|
+
var buildActionOptions = function buildActionOptions(_ref7) {
|
|
185
|
+
var dropdownOptions = _ref7.dropdownOptions,
|
|
186
|
+
actionNameOptions = _ref7.actionNameOptions,
|
|
187
|
+
variables = _ref7.variables;
|
|
188
|
+
var actionDropdown = getActionDropdown(dropdownOptions);
|
|
189
|
+
var options = actionNameOptions.map(function (option) {
|
|
190
|
+
var dropdownOptions = actionDropdown[option.value];
|
|
191
|
+
return dropdownOptions ? _objectSpread$1(_objectSpread$1({}, option), {}, {
|
|
192
|
+
dropdownOptions: dropdownOptions
|
|
193
|
+
}) : option;
|
|
194
|
+
});
|
|
195
|
+
var fields = (dropdownOptions.fields || []).filter(function (field) {
|
|
196
|
+
return !field.kind.startsWith("system_");
|
|
197
|
+
}) || [];
|
|
198
|
+
var fieldOptions = fields.map(function (_ref8) {
|
|
199
|
+
var id = _ref8.id,
|
|
200
|
+
name = _ref8.name,
|
|
201
|
+
kind = _ref8.kind,
|
|
202
|
+
attributeOptions = _ref8.data;
|
|
203
|
+
return {
|
|
204
|
+
label: t("neetoRules.common.assign", {
|
|
205
|
+
what: name
|
|
206
|
+
}),
|
|
207
|
+
value: "ticket_field_".concat(id),
|
|
208
|
+
type: getActionType(kind),
|
|
209
|
+
variables: variables,
|
|
210
|
+
defaultData: {
|
|
211
|
+
actionable_id: id,
|
|
212
|
+
actionable_type: "Field"
|
|
213
|
+
},
|
|
214
|
+
dropdownOptions: getDropdownOptions(kind, attributeOptions)
|
|
215
|
+
};
|
|
216
|
+
});
|
|
217
|
+
return [].concat(_toConsumableArray(options), _toConsumableArray(fieldOptions));
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
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; }
|
|
221
|
+
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; }
|
|
222
|
+
var Body = function Body(_ref) {
|
|
223
|
+
var actionNameOptions = _ref.actionNameOptions,
|
|
224
|
+
cannedResponse = _ref.cannedResponse,
|
|
225
|
+
dropdownList = _ref.dropdownList,
|
|
226
|
+
isLoading = _ref.isLoading,
|
|
227
|
+
setFieldValue = _ref.setFieldValue,
|
|
228
|
+
variables = _ref.variables;
|
|
229
|
+
var _useTranslation = useTranslation(),
|
|
230
|
+
t = _useTranslation.t;
|
|
231
|
+
var actionOptions = buildActionOptions({
|
|
232
|
+
dropdownOptions: dropdownList,
|
|
233
|
+
actionNameOptions: actionNameOptions,
|
|
234
|
+
variables: variables
|
|
235
|
+
});
|
|
236
|
+
if (isLoading) {
|
|
237
|
+
return /*#__PURE__*/jsx("div", {
|
|
238
|
+
className: "flex h-full w-full items-center justify-center",
|
|
239
|
+
children: /*#__PURE__*/jsx(Spinner, {})
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
var sortedActions = cannedResponse.actions.sort(function (a, b) {
|
|
243
|
+
if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(a.name)) {
|
|
244
|
+
return 1;
|
|
245
|
+
} else if (CANNED_RESPONSE_RICH_TEXT_ACTION_NAME.includes(b.name)) {
|
|
246
|
+
return -1;
|
|
247
|
+
}
|
|
248
|
+
return 0;
|
|
249
|
+
});
|
|
250
|
+
return /*#__PURE__*/jsx("div", {
|
|
251
|
+
className: "overflow-y-auto",
|
|
252
|
+
children: not(cannedResponse) ? t("neetoRules.common.preview") : sortedActions === null || sortedActions === void 0 ? void 0 : sortedActions.map(function (action) {
|
|
253
|
+
return renderAction(_objectSpread(_objectSpread({}, action), {}, {
|
|
254
|
+
actionOptions: actionOptions,
|
|
255
|
+
setFieldValue: setFieldValue
|
|
256
|
+
}));
|
|
257
|
+
})
|
|
258
|
+
});
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
var CannedResponsesPane = function CannedResponsesPane(_ref) {
|
|
262
|
+
var actionNameOptions = _ref.actionNameOptions,
|
|
263
|
+
areDropdownListsLoading = _ref.areDropdownListsLoading,
|
|
264
|
+
dropdownList = _ref.dropdownList,
|
|
265
|
+
isCannedResponsePaneOpen = _ref.isCannedResponsePaneOpen,
|
|
266
|
+
isLoadingPreview = _ref.isLoadingPreview,
|
|
267
|
+
macros = _ref.macros,
|
|
268
|
+
onApply = _ref.onApply,
|
|
269
|
+
onCancel = _ref.onCancel,
|
|
270
|
+
previewCannedResponses = _ref.previewCannedResponses,
|
|
271
|
+
previewParams = _ref.previewParams,
|
|
272
|
+
_ref$variables = _ref.variables,
|
|
273
|
+
variables = _ref$variables === void 0 ? [] : _ref$variables;
|
|
274
|
+
var _useState = useState(null),
|
|
275
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
276
|
+
cannedResponse = _useState2[0],
|
|
277
|
+
setCannedResponse = _useState2[1];
|
|
278
|
+
var initialFocusRef = useRef();
|
|
279
|
+
var _useTranslation = useTranslation(),
|
|
280
|
+
t = _useTranslation.t;
|
|
281
|
+
var options = macros === null || macros === void 0 ? void 0 : macros.map(function (_ref2) {
|
|
282
|
+
var name = _ref2.name,
|
|
283
|
+
id = _ref2.id;
|
|
284
|
+
return {
|
|
285
|
+
label: name,
|
|
286
|
+
value: id
|
|
287
|
+
};
|
|
288
|
+
});
|
|
289
|
+
var handleSelect = /*#__PURE__*/function () {
|
|
290
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref3) {
|
|
291
|
+
var value;
|
|
292
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
293
|
+
while (1) switch (_context.prev = _context.next) {
|
|
294
|
+
case 0:
|
|
295
|
+
value = _ref3.value;
|
|
296
|
+
_context.next = 3;
|
|
297
|
+
return previewCannedResponses({
|
|
298
|
+
id: value,
|
|
299
|
+
payload: previewParams
|
|
300
|
+
}, {
|
|
301
|
+
onSuccess: function onSuccess(response) {
|
|
302
|
+
return setCannedResponse(values(response || {})[0]);
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
case 3:
|
|
306
|
+
case "end":
|
|
307
|
+
return _context.stop();
|
|
308
|
+
}
|
|
309
|
+
}, _callee);
|
|
310
|
+
}));
|
|
311
|
+
return function handleSelect(_x) {
|
|
312
|
+
return _ref4.apply(this, arguments);
|
|
313
|
+
};
|
|
314
|
+
}();
|
|
315
|
+
var handleSubmit = function handleSubmit(values) {
|
|
316
|
+
onApply({
|
|
317
|
+
cannedResponse: cannedResponse,
|
|
318
|
+
setCannedResponse: setCannedResponse,
|
|
319
|
+
onSettled: onCancel,
|
|
320
|
+
updatedValues: omit(["cannedResponse"], values)
|
|
321
|
+
});
|
|
322
|
+
};
|
|
323
|
+
var handleCancel = function handleCancel() {
|
|
324
|
+
onCancel();
|
|
325
|
+
setCannedResponse(null);
|
|
326
|
+
};
|
|
327
|
+
return /*#__PURE__*/jsxs(Sheet, {
|
|
328
|
+
initialFocusRef: initialFocusRef,
|
|
329
|
+
isOpen: isCannedResponsePaneOpen,
|
|
330
|
+
onClose: handleCancel,
|
|
331
|
+
children: [/*#__PURE__*/jsx(Sheet.Header, {
|
|
332
|
+
children: /*#__PURE__*/jsx(Sheet.Title, {
|
|
333
|
+
children: t("neetoRules.cannedResponses.title", PLURAL)
|
|
334
|
+
})
|
|
335
|
+
}), /*#__PURE__*/jsx(Formik, {
|
|
336
|
+
initialValues: {
|
|
337
|
+
cannedResponse: toLabelAndValue(null)
|
|
338
|
+
},
|
|
339
|
+
onSubmit: handleSubmit,
|
|
340
|
+
children: function children(_ref5) {
|
|
341
|
+
var setFieldValue = _ref5.setFieldValue,
|
|
342
|
+
isSubmitting = _ref5.isSubmitting;
|
|
343
|
+
return /*#__PURE__*/jsxs(Form, {
|
|
344
|
+
className: "flex flex-1 flex-col",
|
|
345
|
+
children: [/*#__PURE__*/jsx(Sheet.Body, {
|
|
346
|
+
children: /*#__PURE__*/jsx("div", {
|
|
347
|
+
className: "flex w-full grow flex-col space-y-4",
|
|
348
|
+
children: areDropdownListsLoading ? /*#__PURE__*/jsx("div", {
|
|
349
|
+
className: "flex h-full w-full items-center justify-center",
|
|
350
|
+
children: /*#__PURE__*/jsx(Spinner, {})
|
|
351
|
+
}) : /*#__PURE__*/jsxs("div", {
|
|
352
|
+
className: "flex flex-col gap-y-4",
|
|
353
|
+
children: [/*#__PURE__*/jsx(Select, {
|
|
354
|
+
options: options,
|
|
355
|
+
isSearchable: true,
|
|
356
|
+
label: t("neetoRules.labels.selectCannedResponse"),
|
|
357
|
+
name: "cannedResponse",
|
|
358
|
+
ref: initialFocusRef,
|
|
359
|
+
onChange: function onChange(value) {
|
|
360
|
+
setFieldValue("cannedResponse", value);
|
|
361
|
+
handleSelect(value);
|
|
362
|
+
}
|
|
363
|
+
}), isPresent(cannedResponse) && /*#__PURE__*/jsx("div", {
|
|
364
|
+
className: "flex flex-col",
|
|
365
|
+
children: /*#__PURE__*/jsx(Body, {
|
|
366
|
+
actionNameOptions: actionNameOptions,
|
|
367
|
+
cannedResponse: cannedResponse,
|
|
368
|
+
dropdownList: dropdownList,
|
|
369
|
+
setFieldValue: setFieldValue,
|
|
370
|
+
variables: variables,
|
|
371
|
+
isLoading: isLoadingPreview
|
|
372
|
+
})
|
|
373
|
+
})]
|
|
374
|
+
})
|
|
375
|
+
})
|
|
376
|
+
}), /*#__PURE__*/jsx(Sheet.Footer, {
|
|
377
|
+
children: /*#__PURE__*/jsx(ActionBlock, {
|
|
378
|
+
cancelButtonProps: {
|
|
379
|
+
onClick: handleCancel
|
|
380
|
+
},
|
|
381
|
+
isSubmitting: isSubmitting || isLoadingPreview,
|
|
382
|
+
submitButtonProps: {
|
|
383
|
+
label: t("neetoRules.common.apply")
|
|
384
|
+
}
|
|
385
|
+
})
|
|
386
|
+
})]
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
})]
|
|
390
|
+
});
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
export { CannedResponsesPane as default };
|
|
394
|
+
//# sourceMappingURL=CannedResponsesPane.js.map
|