@telia-ace/knowledge-widget-bot-provider 0.0.1-alpha.50 → 0.0.1-alpha.53
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/contact-method-list.js +111 -0
- package/dist/contact-method-list.js.map +1 -0
- package/dist/contact-method.js +119 -77
- package/dist/contact-method.js.map +1 -1
- package/dist/entry-handler.d.ts +2 -0
- package/dist/feedback-list.js +20 -55
- package/dist/feedback-list.js.map +1 -1
- package/dist/http-client.d.ts +42 -0
- package/dist/index.js +5 -1173
- package/dist/index.js.map +1 -1
- package/dist/index2.js +914 -0
- package/dist/index2.js.map +1 -0
- package/dist/no-good-alternative.js +20 -7
- package/dist/no-good-alternative.js.map +1 -1
- package/dist/notification-list.js +74 -0
- package/dist/notification-list.js.map +1 -0
- package/dist/provider.d.ts +25 -0
- package/dist/store.d.ts +15 -0
- package/dist/styles.js +13 -0
- package/dist/styles.js.map +1 -0
- package/dist/types.d.ts +78 -0
- package/dist/ui/contact-method-list.d.ts +10 -0
- package/dist/ui/contact-method.d.ts +9 -0
- package/dist/ui/feedback-list.d.ts +1 -1
- package/dist/ui/notification-list.d.ts +11 -0
- package/dist/ui/styles.d.ts +1 -0
- package/dist/utils.d.ts +26 -2
- package/package.json +10 -10
- package/dist/client/chat.client.d.ts +0 -13
- package/dist/client/contact-method.client.d.ts +0 -35
- package/dist/client/http.client.d.ts +0 -26
- package/dist/client/middleware.client.d.ts +0 -14
- package/dist/contract/custom-component/contact-method-item.d.ts +0 -11
- package/dist/contract/custom-component/contact-method-list.d.ts +0 -8
- package/dist/contract/custom-component/contact-method.d.ts +0 -3
- package/dist/contract/custom-component/entry-context.d.ts +0 -5
- package/dist/contract/enum/server-entry-type.enum.d.ts +0 -7
- package/dist/contract/model/conversation-api-model/list.model.d.ts +0 -5
- package/dist/contract/model/conversation-api-model/message.model.d.ts +0 -7
- package/dist/contract/model/http/action.model.d.ts +0 -3
- package/dist/contract/model/http/client-action.model.d.ts +0 -4
- package/dist/contract/model/http/client-envelope.model.d.ts +0 -9
- package/dist/contract/model/http/connect-options.model.d.ts +0 -5
- package/dist/contract/model/http/global-state.model.d.ts +0 -8
- package/dist/contract/model/http/http-client-options.model.d.ts +0 -5
- package/dist/contract/model/http/server-entry.model.d.ts +0 -11
- package/dist/contract/model/http/server-envelope.model.d.ts +0 -10
- package/dist/contract/model/middleware/aggregator-state.model.d.ts +0 -4
- package/dist/contract/model/shared/loose-object.model.d.ts +0 -3
- package/dist/helper/chat.helper.d.ts +0 -8
- package/dist/helper/http.helper.d.ts +0 -13
- package/dist/helper/middleware.helper.d.ts +0 -12
- package/dist/helper/store.helper.d.ts +0 -23
- package/dist/interface/entry.interface.d.ts +0 -23
- package/dist/interface/middleware/paging.interface.d.ts +0 -4
- package/dist/interface/middleware/processor.interface.d.ts +0 -10
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
import { ContactList, ContactMethod as ContactMethod$1 } from "@telia-ace/knowledge-widget-adapters";
|
|
21
|
+
import { useDispatch, useContainer } from "@telia-ace/knowledge-widget-ui";
|
|
22
|
+
import React, { useState, useMemo } from "react";
|
|
23
|
+
import styled from "styled-components";
|
|
24
|
+
import ContactMethod from "./contact-method.js";
|
|
25
|
+
import "@telia-ace/knowledge-widget-types-grid";
|
|
26
|
+
import "@telia-ace/widget-forms";
|
|
27
|
+
import "./index2.js";
|
|
28
|
+
import "@telia-ace/widget-conversation";
|
|
29
|
+
import "@telia-ace/widget-services";
|
|
30
|
+
import "@telia-ace/widget-utilities";
|
|
31
|
+
const ContactMethodList = ({ actions, entryId, groupId }) => {
|
|
32
|
+
const dispatch = useDispatch();
|
|
33
|
+
const container = useContainer();
|
|
34
|
+
const [expanded, setExpanded] = useState([]);
|
|
35
|
+
const items = useMemo(() => {
|
|
36
|
+
return actions.map((action) => {
|
|
37
|
+
return __spreadProps(__spreadValues({}, action.data), {
|
|
38
|
+
onClick: (_event, data) => {
|
|
39
|
+
if (data.inline && !data.expanded) {
|
|
40
|
+
setExpanded([...expanded, data.id]);
|
|
41
|
+
} else {
|
|
42
|
+
const { events } = container.get("$widget");
|
|
43
|
+
events.dispatch("provider:open-contact-method", {
|
|
44
|
+
entryId,
|
|
45
|
+
contactMethod: data,
|
|
46
|
+
actionKey: action.actionKey
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}, [actions, container, entryId, expanded]);
|
|
53
|
+
if (!items.length) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return /* @__PURE__ */ React.createElement(StyledContactList, {
|
|
57
|
+
contactMethods: items,
|
|
58
|
+
dispatch,
|
|
59
|
+
itemRenderer: (cm, props) => {
|
|
60
|
+
const isExpanded = expanded.includes(cm.id) || cm.expanded;
|
|
61
|
+
if (isExpanded && cm.inline) {
|
|
62
|
+
return /* @__PURE__ */ React.createElement(StyledContactMethod, {
|
|
63
|
+
contactMethodId: cm.id,
|
|
64
|
+
groupId,
|
|
65
|
+
guideId: cm.body.guideId
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return /* @__PURE__ */ React.createElement(StyledGenericContactMethod, __spreadValues(__spreadValues({}, cm), props));
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
const StyledContactList = styled(ContactList)`
|
|
73
|
+
> ul > li {
|
|
74
|
+
a {
|
|
75
|
+
display: flex;
|
|
76
|
+
align-items: center;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&:not(:last-child) {
|
|
80
|
+
${(p) => p.theme.border && `border-bottom: ${p.theme.border};`}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
`;
|
|
84
|
+
const StyledContactMethod = styled(ContactMethod)`
|
|
85
|
+
i {
|
|
86
|
+
margin: 0 ${(p) => {
|
|
87
|
+
var _a;
|
|
88
|
+
return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
|
|
89
|
+
}} 0 0;
|
|
90
|
+
display: flex;
|
|
91
|
+
justify-content: center;
|
|
92
|
+
align-items: center;
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
95
|
+
const StyledGenericContactMethod = styled(ContactMethod$1)`
|
|
96
|
+
padding: ${(p) => {
|
|
97
|
+
var _a;
|
|
98
|
+
return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
|
|
99
|
+
}};
|
|
100
|
+
i {
|
|
101
|
+
margin: 0 ${(p) => {
|
|
102
|
+
var _a;
|
|
103
|
+
return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
|
|
104
|
+
}} 0 0;
|
|
105
|
+
display: flex;
|
|
106
|
+
justify-content: center;
|
|
107
|
+
align-items: center;
|
|
108
|
+
}
|
|
109
|
+
`;
|
|
110
|
+
export { ContactMethodList as default };
|
|
111
|
+
//# sourceMappingURL=contact-method-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contact-method-list.js","sources":["../src/ui/contact-method-list.tsx"],"sourcesContent":["import {\r\n ContactList,\r\n ContactMethod as GenericContactMethod,\r\n} from '@telia-ace/knowledge-widget-adapters';\r\nimport { useContainer, useDispatch } from '@telia-ace/knowledge-widget-ui';\r\nimport React, { useMemo, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { ActionItem } from '../types';\r\nimport ContactMethod from './contact-method';\r\n\r\ntype Props = {\r\n actions: ActionItem[];\r\n contactMethodIds?: string[];\r\n entryId: string;\r\n groupId: string;\r\n};\r\nconst ContactMethodList: React.FC<Props> = ({ actions, entryId, groupId }) => {\r\n const dispatch = useDispatch();\r\n const container = useContainer();\r\n const [expanded, setExpanded] = useState<string[]>([]);\r\n\r\n const items = useMemo<any[]>(() => {\r\n return actions.map((action) => {\r\n return {\r\n ...action.data,\r\n onClick: (_event: any, data: any) => {\r\n if (data.inline && !data.expanded) {\r\n setExpanded([...expanded, data.id]);\r\n } else {\r\n const { events } = container.get('$widget');\r\n events.dispatch('provider:open-contact-method', {\r\n entryId,\r\n contactMethod: data,\r\n actionKey: action.actionKey,\r\n });\r\n }\r\n },\r\n };\r\n });\r\n }, [actions, container, entryId, expanded]);\r\n\r\n if (!items.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledContactList\r\n contactMethods={items}\r\n dispatch={dispatch}\r\n itemRenderer={(cm: any, props: any) => {\r\n const isExpanded = expanded.includes(cm.id) || cm.expanded;\r\n if (isExpanded && cm.inline) {\r\n return (\r\n <StyledContactMethod\r\n contactMethodId={cm.id}\r\n groupId={groupId}\r\n guideId={cm.body.guideId}\r\n />\r\n );\r\n }\r\n return <StyledGenericContactMethod {...cm} {...props} />;\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ContactMethodList;\r\n\r\nconst StyledContactList = styled(ContactList)`\r\n > ul > li {\r\n a {\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n &:not(:last-child) {\r\n ${(p) => p.theme.border && `border-bottom: ${p.theme.border};`}\r\n }\r\n }\r\n`;\r\n\r\nconst StyledContactMethod = styled(ContactMethod)`\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.medium} 0 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\nconst StyledGenericContactMethod = styled(GenericContactMethod)`\r\n padding: ${(p) => p.theme.sizes?.medium};\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.medium} 0 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\n"],"names":["GenericContactMethod"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,oBAAqC,CAAC,EAAE,SAAS,SAAS,cAAc;AAC1E,QAAM,WAAW;AACjB,QAAM,YAAY;AAClB,QAAM,CAAC,UAAU,eAAe,SAAmB,CAAE,CAAA;AAE/C,QAAA,QAAQ,QAAe,MAAM;AACxB,WAAA,QAAQ,IAAI,CAAC,WAAW;AACpB,aAAA,iCACA,OAAO,OADP;AAAA,QAEH,SAAS,CAAC,QAAa,SAAc;AACjC,cAAI,KAAK,UAAU,CAAC,KAAK,UAAU;AAC/B,wBAAY,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;AAAA,UAAA,OAC/B;AACH,kBAAM,EAAE,WAAW,UAAU,IAAI,SAAS;AAC1C,mBAAO,SAAS,gCAAgC;AAAA,cAC5C;AAAA,cACA,eAAe;AAAA,cACf,WAAW,OAAO;AAAA,YAAA,CACrB;AAAA,UACL;AAAA,QACJ;AAAA,MAAA;AAAA,IACJ,CACH;AAAA,KACF,CAAC,SAAS,WAAW,SAAS,QAAQ,CAAC;AAEtC,MAAA,CAAC,MAAM,QAAQ;AACR,WAAA;AAAA,EACX;AAEA,SACK,sBAAA,cAAA,mBAAA;AAAA,IACG,gBAAgB;AAAA,IAChB;AAAA,IACA,cAAc,CAAC,IAAS,UAAe;AACnC,YAAM,aAAa,SAAS,SAAS,GAAG,EAAE,KAAK,GAAG;AAC9C,UAAA,cAAc,GAAG,QAAQ;AACzB,eACK,sBAAA,cAAA,qBAAA;AAAA,UACG,iBAAiB,GAAG;AAAA,UACpB;AAAA,UACA,SAAS,GAAG,KAAK;AAAA,QAAA,CACrB;AAAA,MAER;AACA,aAAQ,sBAAA,cAAA,4BAAA,kCAA+B,KAAQ,MAAO;AAAA,IAC1D;AAAA,EAAA,CACJ;AAER;AAIA,MAAM,oBAAoB,OAAO,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQ9B,CAAC,MAAM,EAAE,MAAM,UAAU,kBAAkB,EAAE,MAAM;AAAA;AAAA;AAAA;AAKjE,MAAM,sBAAsB,OAAO,aAAa;AAAA;AAAA,oBAE5B,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1C,MAAM,6BAA6B,OAAOA,eAAoB;AAAA,eAC/C,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA,oBAEjB,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
|
package/dist/contact-method.js
CHANGED
|
@@ -17,94 +17,136 @@ var __spreadValues = (a, b) => {
|
|
|
17
17
|
return a;
|
|
18
18
|
};
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __async = (__this, __arguments, generator) => {
|
|
21
|
+
return new Promise((resolve, reject) => {
|
|
22
|
+
var fulfilled = (value) => {
|
|
23
|
+
try {
|
|
24
|
+
step(generator.next(value));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
reject(e);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var rejected = (value) => {
|
|
30
|
+
try {
|
|
31
|
+
step(generator.throw(value));
|
|
32
|
+
} catch (e) {
|
|
33
|
+
reject(e);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
import { ContactMethod as ContactMethod$1 } from "@telia-ace/knowledge-widget-adapters";
|
|
20
41
|
import { DataType } from "@telia-ace/knowledge-widget-types-grid";
|
|
21
|
-
import
|
|
42
|
+
import { useContainer, useDispatch } from "@telia-ace/knowledge-widget-ui";
|
|
43
|
+
import { FormBuilder } from "@telia-ace/widget-forms";
|
|
44
|
+
import React, { useState, useRef, useEffect, useCallback } from "react";
|
|
22
45
|
import styled from "styled-components";
|
|
23
|
-
import {
|
|
24
|
-
import
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
})
|
|
28
|
-
const
|
|
29
|
-
|
|
46
|
+
import { u as updateForm } from "./index2.js";
|
|
47
|
+
import "@telia-ace/widget-conversation";
|
|
48
|
+
import "@telia-ace/widget-services";
|
|
49
|
+
import "@telia-ace/widget-utilities";
|
|
50
|
+
const ContactMethod = ({ contactMethodId, guideId, groupId, className }) => {
|
|
51
|
+
const [contactMethod, setContactMethod] = useState();
|
|
52
|
+
const container = useContainer();
|
|
30
53
|
const dispatch = useDispatch();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
54
|
+
const mountedRef = useRef(true);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
const { events } = container.get("$widget");
|
|
57
|
+
const unsubscribe = events.subscribe("bot-provider:form-submitted", (_, data) => __async(this, null, function* () {
|
|
58
|
+
var _a;
|
|
59
|
+
if (((_a = data.form.meta) == null ? void 0 : _a.groupId) !== groupId) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const platform = yield container.getAsync("contactMethods");
|
|
63
|
+
const updatedMethod = __spreadProps(__spreadValues({}, contactMethod), {
|
|
64
|
+
body: __spreadProps(__spreadValues({}, contactMethod.body), {
|
|
65
|
+
form: data.form
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
const { errors, valid, errorTypes } = yield platform.validate(updatedMethod);
|
|
69
|
+
if (!valid) {
|
|
70
|
+
const builder = new FormBuilder(contactMethod.body.form);
|
|
71
|
+
setContactMethod(void 0);
|
|
72
|
+
builder.setValidationErrors(errors);
|
|
73
|
+
updatedMethod.body = __spreadProps(__spreadValues({}, updatedMethod.body), {
|
|
74
|
+
form: builder.get()
|
|
45
75
|
});
|
|
46
|
-
|
|
47
|
-
|
|
76
|
+
setContactMethod(__spreadValues({}, updatedMethod));
|
|
77
|
+
return;
|
|
48
78
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (!methodList.length) {
|
|
90
|
-
return /* @__PURE__ */ React.createElement(StyledContactMethodItem, {
|
|
91
|
-
embeded: !!props.guideId,
|
|
92
|
-
type,
|
|
93
|
-
contactMethod: methodList,
|
|
94
|
-
entry: props.entry
|
|
79
|
+
const result = yield platform.submit(updatedMethod);
|
|
80
|
+
updatedMethod.confirmation = result;
|
|
81
|
+
setContactMethod(updatedMethod);
|
|
82
|
+
}));
|
|
83
|
+
const unsubscribeEvaluate = events.subscribe("bot-provider:evaluate", (_, data) => __async(this, null, function* () {
|
|
84
|
+
if (data.id != contactMethodId) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const platform = yield container.getAsync("contactMethods");
|
|
88
|
+
const updatedForm = yield platform.evaluate(contactMethod);
|
|
89
|
+
let updatedMethod = __spreadProps(__spreadValues({}, contactMethod), {
|
|
90
|
+
body: __spreadProps(__spreadValues({}, contactMethod.body), {
|
|
91
|
+
form: updatedForm
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
const updatedBody = updateForm(updatedMethod, {
|
|
95
|
+
submit: "Submit",
|
|
96
|
+
errors: {},
|
|
97
|
+
meta: { groupId }
|
|
98
|
+
});
|
|
99
|
+
updatedMethod = __spreadProps(__spreadValues({}, updatedMethod), {
|
|
100
|
+
body: updatedBody
|
|
101
|
+
});
|
|
102
|
+
setContactMethod(updatedMethod);
|
|
103
|
+
}));
|
|
104
|
+
return () => {
|
|
105
|
+
unsubscribe();
|
|
106
|
+
unsubscribeEvaluate();
|
|
107
|
+
};
|
|
108
|
+
}, [container, contactMethod, setContactMethod]);
|
|
109
|
+
const fetchContactMethod = useCallback((id) => __async(this, null, function* () {
|
|
110
|
+
const dataClient = yield container.getAsync("dataClient");
|
|
111
|
+
const cm = yield dataClient.fetch(DataType.ContactMethod, {
|
|
112
|
+
contactMethodId: id,
|
|
113
|
+
guideId
|
|
114
|
+
});
|
|
115
|
+
const body = updateForm(cm, {
|
|
116
|
+
submit: "Submit",
|
|
117
|
+
errors: {},
|
|
118
|
+
meta: { groupId }
|
|
95
119
|
});
|
|
120
|
+
cm.body = body;
|
|
121
|
+
cm.body.guideId = guideId;
|
|
122
|
+
if (!mountedRef.current) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
setContactMethod(cm);
|
|
126
|
+
}), [mountedRef]);
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
fetchContactMethod(contactMethodId);
|
|
129
|
+
return () => {
|
|
130
|
+
mountedRef.current = false;
|
|
131
|
+
};
|
|
132
|
+
}, [contactMethodId, fetchContactMethod]);
|
|
133
|
+
if (!contactMethod) {
|
|
134
|
+
return null;
|
|
96
135
|
}
|
|
97
|
-
return /* @__PURE__ */ React.createElement(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
136
|
+
return /* @__PURE__ */ React.createElement(StyledGenericContactMethod, __spreadProps(__spreadValues({}, contactMethod), {
|
|
137
|
+
body: contactMethod.body,
|
|
138
|
+
inline: true,
|
|
139
|
+
expanded: true,
|
|
140
|
+
dispatch,
|
|
141
|
+
className
|
|
103
142
|
}));
|
|
104
143
|
};
|
|
105
|
-
const
|
|
144
|
+
const StyledGenericContactMethod = styled(ContactMethod$1)`
|
|
106
145
|
padding: ${(p) => {
|
|
107
146
|
var _a;
|
|
147
|
+
return (_a = p.theme.sizes) == null ? void 0 : _a.normal;
|
|
148
|
+
}} ${(p) => {
|
|
149
|
+
var _a;
|
|
108
150
|
return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
|
|
109
151
|
}};
|
|
110
152
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contact-method.js","sources":["../src/
|
|
1
|
+
{"version":3,"file":"contact-method.js","sources":["../src/ui/contact-method.tsx"],"sourcesContent":["import {\r\n ContactMethod as GenericContactMethod,\r\n ContactMethodPlatform,\r\n} from '@telia-ace/knowledge-widget-adapters';\r\nimport { DataType } from '@telia-ace/knowledge-widget-types-grid';\r\nimport { useContainer, useDispatch } from '@telia-ace/knowledge-widget-ui';\r\nimport { FormBuilder } from '@telia-ace/widget-forms';\r\nimport { Widget } from '@webprovisions/platform';\r\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { updateForm } from '../utils';\r\n\r\ntype Props = {\r\n contactMethodId: string;\r\n groupId: string;\r\n guideId?: string;\r\n className?: string;\r\n};\r\nconst ContactMethod: React.FC<Props> = ({ contactMethodId, guideId, groupId, className }) => {\r\n const [contactMethod, setContactMethod] = useState<any>();\r\n const container = useContainer();\r\n const dispatch = useDispatch();\r\n const mountedRef = useRef<boolean>(true);\r\n\r\n useEffect(() => {\r\n const { events } = container.get('$widget') as Widget;\r\n\r\n const unsubscribe = events.subscribe('bot-provider:form-submitted', async (_, data) => {\r\n // making sure that this is the form that is submitted\r\n if (data.form.meta?.groupId !== groupId) {\r\n return;\r\n }\r\n\r\n const platform = (await container.getAsync('contactMethods')) as ContactMethodPlatform;\r\n\r\n const updatedMethod = {\r\n ...contactMethod,\r\n body: {\r\n ...contactMethod.body,\r\n form: data.form,\r\n },\r\n };\r\n\r\n const { errors, valid, errorTypes } = await platform.validate(updatedMethod);\r\n\r\n if (!valid) {\r\n const builder = new FormBuilder(contactMethod.body.form);\r\n setContactMethod(undefined);\r\n\r\n builder.setValidationErrors(errors);\r\n\r\n updatedMethod.body = {\r\n ...updatedMethod.body,\r\n form: builder.get(),\r\n };\r\n\r\n setContactMethod({ ...updatedMethod });\r\n return;\r\n }\r\n\r\n const result = await platform.submit(updatedMethod);\r\n\r\n updatedMethod.confirmation = result;\r\n setContactMethod(updatedMethod);\r\n });\r\n\r\n const unsubscribeEvaluate = events.subscribe('bot-provider:evaluate', async (_, data) => {\r\n if (data.id != contactMethodId) {\r\n return;\r\n }\r\n\r\n const platform = (await container.getAsync('contactMethods')) as ContactMethodPlatform;\r\n\r\n const updatedForm = await platform.evaluate(contactMethod);\r\n\r\n let updatedMethod = {\r\n ...contactMethod,\r\n body: {\r\n ...contactMethod.body,\r\n form: updatedForm,\r\n },\r\n };\r\n\r\n const updatedBody = updateForm(updatedMethod, {\r\n submit: 'Submit',\r\n errors: {},\r\n meta: { groupId },\r\n });\r\n\r\n updatedMethod = {\r\n ...updatedMethod,\r\n body: updatedBody,\r\n };\r\n\r\n setContactMethod(updatedMethod);\r\n });\r\n\r\n return () => {\r\n unsubscribe();\r\n unsubscribeEvaluate();\r\n };\r\n }, [container, contactMethod, setContactMethod]);\r\n\r\n const fetchContactMethod = useCallback(\r\n async (id: string) => {\r\n const dataClient = await container.getAsync('dataClient');\r\n\r\n const cm = await dataClient.fetch(DataType.ContactMethod, {\r\n contactMethodId: id,\r\n guideId,\r\n });\r\n\r\n const body = updateForm(cm, {\r\n submit: 'Submit',\r\n errors: {},\r\n meta: { groupId },\r\n });\r\n cm.body = body;\r\n cm.body.guideId = guideId;\r\n\r\n if (!mountedRef.current) {\r\n return null;\r\n }\r\n setContactMethod(cm);\r\n },\r\n [mountedRef]\r\n );\r\n\r\n useEffect(() => {\r\n fetchContactMethod(contactMethodId);\r\n return () => {\r\n mountedRef.current = false; // clean up\r\n };\r\n }, [contactMethodId, fetchContactMethod]);\r\n\r\n if (!contactMethod) {\r\n return null;\r\n }\r\n return (\r\n <StyledGenericContactMethod\r\n {...contactMethod}\r\n body={contactMethod.body}\r\n inline={true}\r\n expanded={true}\r\n dispatch={dispatch}\r\n className={className}\r\n />\r\n );\r\n};\r\n\r\nexport default ContactMethod;\r\n\r\nconst StyledGenericContactMethod = styled(GenericContactMethod)`\r\n padding: ${(p) => p.theme.sizes?.normal} ${(p) => p.theme.sizes?.medium};\r\n`;\r\n"],"names":["GenericContactMethod"],"mappings":"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"}
|
package/dist/feedback-list.js
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
import { useDispatch, Icon, List, invertedHoverButton } from "@telia-ace/knowledge-widget-ui";
|
|
1
|
+
import { useDispatch, Icon, List, list, Button, buttonCss, invertedHoverButton } from "@telia-ace/knowledge-widget-ui";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import styled
|
|
3
|
+
import styled from "styled-components";
|
|
4
|
+
import { m as messageContentPadding } from "./styles.js";
|
|
4
5
|
const FeedbackList = ({ actions }) => {
|
|
5
6
|
const dispatch = useDispatch();
|
|
6
7
|
return /* @__PURE__ */ React.createElement(StyledButtonList, {
|
|
7
|
-
items:
|
|
8
|
-
|
|
9
|
-
label: actions[i],
|
|
10
|
-
actionKey: i
|
|
11
|
-
};
|
|
12
|
-
}),
|
|
8
|
+
items: actions,
|
|
9
|
+
"data-direction": "vertical",
|
|
13
10
|
renderItem: (item) => {
|
|
14
|
-
return /* @__PURE__ */ React.createElement(
|
|
11
|
+
return /* @__PURE__ */ React.createElement("li", {
|
|
15
12
|
key: item.actionKey
|
|
16
13
|
}, /* @__PURE__ */ React.createElement(FeedbackButton, {
|
|
17
14
|
className: "humany-feedback-button",
|
|
18
15
|
disabled: false,
|
|
19
16
|
"aria-pressed": true,
|
|
20
17
|
"data-selected": true,
|
|
21
|
-
"data-direction": "vertical",
|
|
22
18
|
onClick: () => {
|
|
23
19
|
dispatch("action", item.actionKey);
|
|
24
20
|
}
|
|
@@ -29,39 +25,21 @@ const FeedbackList = ({ actions }) => {
|
|
|
29
25
|
});
|
|
30
26
|
};
|
|
31
27
|
const StyledButtonList = styled(List)`
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
list-style: none;
|
|
37
|
-
> li {
|
|
38
|
-
margin: ${(p) => {
|
|
39
|
-
var _a;
|
|
40
|
-
return (_a = p.theme.sizes) == null ? void 0 : _a.small;
|
|
41
|
-
}} ${(p) => {
|
|
28
|
+
${list}
|
|
29
|
+
${messageContentPadding}
|
|
30
|
+
display: flex;
|
|
31
|
+
gap: ${(p) => {
|
|
42
32
|
var _a;
|
|
43
33
|
return (_a = p.theme.sizes) == null ? void 0 : _a.normal;
|
|
44
34
|
}};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const FeedbackItem = styled.li`
|
|
50
|
-
@media (min-width: 768px) {
|
|
51
|
-
display: list-item !important;
|
|
52
|
-
margin-right: 0 !important;
|
|
53
|
-
margin-top: ${(p) => {
|
|
54
|
-
var _a;
|
|
55
|
-
return (_a = p.theme.sizes) == null ? void 0 : _a.normal;
|
|
56
|
-
}} !important;
|
|
35
|
+
flex-direction: ${(p) => p["data-direction"] === "horizontal" ? "row" : "column"};
|
|
36
|
+
> li {
|
|
37
|
+
flex: 1;
|
|
38
|
+
margin: 0;
|
|
57
39
|
}
|
|
58
40
|
`;
|
|
59
|
-
const FeedbackButton = styled
|
|
60
|
-
|
|
61
|
-
min-width: 100%;
|
|
62
|
-
margin-right: 0;
|
|
63
|
-
}
|
|
64
|
-
display: inline-block;
|
|
41
|
+
const FeedbackButton = styled(Button)`
|
|
42
|
+
${buttonCss}
|
|
65
43
|
font-size: ${(p) => {
|
|
66
44
|
var _a;
|
|
67
45
|
return (_a = p.theme.fonts) == null ? void 0 : _a.normal;
|
|
@@ -69,25 +47,12 @@ const FeedbackButton = styled.button`
|
|
|
69
47
|
border-color: ${(p) => {
|
|
70
48
|
var _a;
|
|
71
49
|
return (_a = p.theme.colors) == null ? void 0 : _a.primary;
|
|
72
|
-
}} !important;
|
|
73
|
-
font-weight: 300;
|
|
74
|
-
&& {
|
|
75
|
-
margin-right: ${(p) => {
|
|
76
|
-
var _a;
|
|
77
|
-
return (_a = p.theme.sizes) == null ? void 0 : _a.small;
|
|
78
50
|
}};
|
|
79
|
-
|
|
51
|
+
font-weight: 300;
|
|
52
|
+
display: block;
|
|
53
|
+
width: 100%;
|
|
54
|
+
|
|
80
55
|
${(p) => {
|
|
81
|
-
var _a, _b;
|
|
82
|
-
return p["data-direction"] === "horizontal" && css`
|
|
83
|
-
width: 225px;
|
|
84
|
-
max-width: calc(50% - ${(_a = p.theme.sizes) == null ? void 0 : _a.large} - ${(_b = p.theme.sizes) == null ? void 0 : _b.small});
|
|
85
|
-
`;
|
|
86
|
-
}}
|
|
87
|
-
${(p) => p["data-direction"] === "vertical" && css`
|
|
88
|
-
min-width: 150px;
|
|
89
|
-
`}
|
|
90
|
-
${(p) => {
|
|
91
56
|
var _a;
|
|
92
57
|
return invertedHoverButton({
|
|
93
58
|
primaryColor: `${(_a = p.theme.colors) == null ? void 0 : _a.primary}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-list.js","sources":["../src/ui/feedback-list.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"feedback-list.js","sources":["../src/ui/feedback-list.tsx"],"sourcesContent":["import {\r\n Button,\r\n buttonCss,\r\n Icon,\r\n invertedHoverButton,\r\n list,\r\n List,\r\n useDispatch,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { messageContentPadding } from './styles';\r\n\r\ntype Props = {\r\n actions: { [key: string]: string }[];\r\n};\r\nconst FeedbackList: React.FC<Props> = ({ actions }) => {\r\n const dispatch = useDispatch();\r\n return (\r\n <StyledButtonList\r\n items={actions}\r\n data-direction={'vertical'}\r\n renderItem={(item: any) => {\r\n return (\r\n <li key={item.actionKey}>\r\n <FeedbackButton\r\n className=\"humany-feedback-button\"\r\n disabled={false}\r\n aria-pressed={true}\r\n data-selected={true}\r\n onClick={() => {\r\n dispatch('action', item.actionKey);\r\n }}\r\n >\r\n <Icon faIcon={item.actionKey == 'yes' ? 'smile-o' : 'frown-o'} />\r\n <span>{item.label}</span>\r\n </FeedbackButton>\r\n </li>\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default FeedbackList;\r\n\r\nconst StyledButtonList = styled(List)<{ 'data-direction': 'horizontal' | 'vertical' } & any>`\r\n ${list}\r\n ${messageContentPadding}\r\n display: flex;\r\n gap: ${(p) => p.theme.sizes?.normal};\r\n flex-direction: ${(p) => (p['data-direction'] === 'horizontal' ? 'row' : 'column')};\r\n > li {\r\n flex: 1;\r\n margin: 0;\r\n }\r\n`;\r\n\r\nconst FeedbackButton = styled(Button)<{\r\n 'data-selected': boolean;\r\n}>`\r\n ${buttonCss}\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n border-color: ${(p) => p.theme.colors?.primary};\r\n font-weight: 300;\r\n display: block;\r\n width: 100%;\r\n\r\n ${(p) =>\r\n invertedHoverButton({\r\n primaryColor: `${p.theme.colors?.primary}`,\r\n secondaryColor: '#FFFFFF',\r\n })}\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\r\n }\r\n span {\r\n }\r\n`;\r\n"],"names":[],"mappings":";;;;AAgBM,MAAA,eAAgC,CAAC,EAAE,cAAc;AACnD,QAAM,WAAW;AACjB,SACK,sBAAA,cAAA,kBAAA;AAAA,IACG,OAAO;AAAA,IACP,kBAAgB;AAAA,IAChB,YAAY,CAAC,SAAc;AACvB,aACK,sBAAA,cAAA,MAAA;AAAA,QAAG,KAAK,KAAK;AAAA,MAAA,GACT,sBAAA,cAAA,gBAAA;AAAA,QACG,WAAU;AAAA,QACV,UAAU;AAAA,QACV,gBAAc;AAAA,QACd,iBAAe;AAAA,QACf,SAAS,MAAM;AACF,mBAAA,UAAU,KAAK,SAAS;AAAA,QACrC;AAAA,MAAA,GAEC,sBAAA,cAAA,MAAA;AAAA,QAAK,QAAQ,KAAK,aAAa,QAAQ,YAAY;AAAA,MAAA,CAAW,GAC9D,sBAAA,cAAA,QAAA,MAAM,KAAK,KAAM,CACtB,CACJ;AAAA,IAER;AAAA,EAAA,CACJ;AAER;AAIA,MAAM,mBAAmB,OAAO,IAAI;AAAA,MAC9B;AAAA,MACA;AAAA;AAAA,WAEK,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA,sBACX,CAAC,MAAO,EAAE,sBAAsB,eAAe,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAO7E,MAAM,iBAAiB,OAAO,MAAM;AAAA,MAG9B;AAAA,iBACW,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA,oBACnB,CAAC,MAAM;;AAAA,iBAAE,MAAM,WAAR,mBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAKrC,CAAC;;AACC,6BAAoB;AAAA,IAChB,cAAc,GAAG,QAAE,MAAM,WAAR,mBAAgB;AAAA,IACjC,gBAAgB;AAAA,EACpB,CAAC;AAAA;AAAA;AAAA,oBAEW,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Container, EventManager } from '@webprovisions/platform';
|
|
2
|
+
import Store from './store';
|
|
3
|
+
import { MessageGroup } from './types';
|
|
4
|
+
declare class HttpClient {
|
|
5
|
+
private endpoint;
|
|
6
|
+
private events;
|
|
7
|
+
private store;
|
|
8
|
+
private container;
|
|
9
|
+
private globalState;
|
|
10
|
+
private clientId;
|
|
11
|
+
private entries;
|
|
12
|
+
constructor(endpoint: string, events: EventManager, store: Store, container: Container);
|
|
13
|
+
start(): Promise<MessageGroup[]>;
|
|
14
|
+
sendMessage(message: string): Promise<MessageGroup[]>;
|
|
15
|
+
helpAction(): Promise<MessageGroup[]>;
|
|
16
|
+
nextAction(group: MessageGroup): Promise<{
|
|
17
|
+
meta: {
|
|
18
|
+
[x: string]: any;
|
|
19
|
+
};
|
|
20
|
+
items: {
|
|
21
|
+
message: any[];
|
|
22
|
+
id: string;
|
|
23
|
+
groupId: string;
|
|
24
|
+
isUser: boolean;
|
|
25
|
+
}[];
|
|
26
|
+
id: string;
|
|
27
|
+
isUser: boolean;
|
|
28
|
+
writer?: any;
|
|
29
|
+
} | undefined>;
|
|
30
|
+
showContactMethodAction(data: {
|
|
31
|
+
contactMethod: any;
|
|
32
|
+
actionKey: string;
|
|
33
|
+
entryId: string;
|
|
34
|
+
}): Promise<MessageGroup[] | undefined>;
|
|
35
|
+
defaultAction(action: string): Promise<MessageGroup[] | undefined>;
|
|
36
|
+
private createInitialEnvelope;
|
|
37
|
+
private postEnvelope;
|
|
38
|
+
private handleResponse;
|
|
39
|
+
private getHttpOptions;
|
|
40
|
+
private getEntryOfAction;
|
|
41
|
+
}
|
|
42
|
+
export default HttpClient;
|