@telia-ace/knowledge-widget-bot-provider 0.0.1-alpha.51 → 0.0.1-alpha.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/contact-method-list.js +111 -0
  2. package/dist/contact-method-list.js.map +1 -0
  3. package/dist/contact-method.js +119 -77
  4. package/dist/contact-method.js.map +1 -1
  5. package/dist/entry-handler.d.ts +2 -0
  6. package/dist/feedback-list.js +20 -55
  7. package/dist/feedback-list.js.map +1 -1
  8. package/dist/http-client.d.ts +42 -0
  9. package/dist/index.js +5 -1173
  10. package/dist/index.js.map +1 -1
  11. package/dist/index2.js +914 -0
  12. package/dist/index2.js.map +1 -0
  13. package/dist/no-good-alternative.js +20 -7
  14. package/dist/no-good-alternative.js.map +1 -1
  15. package/dist/notification-list.js +74 -0
  16. package/dist/notification-list.js.map +1 -0
  17. package/dist/provider.d.ts +25 -0
  18. package/dist/store.d.ts +15 -0
  19. package/dist/styles.js +13 -0
  20. package/dist/styles.js.map +1 -0
  21. package/dist/types.d.ts +78 -0
  22. package/dist/ui/contact-method-list.d.ts +10 -0
  23. package/dist/ui/contact-method.d.ts +9 -0
  24. package/dist/ui/feedback-list.d.ts +1 -1
  25. package/dist/ui/notification-list.d.ts +11 -0
  26. package/dist/ui/styles.d.ts +1 -0
  27. package/dist/utils.d.ts +26 -2
  28. package/package.json +10 -10
  29. package/dist/client/chat.client.d.ts +0 -13
  30. package/dist/client/contact-method.client.d.ts +0 -35
  31. package/dist/client/http.client.d.ts +0 -26
  32. package/dist/client/middleware.client.d.ts +0 -14
  33. package/dist/contract/custom-component/contact-method-item.d.ts +0 -11
  34. package/dist/contract/custom-component/contact-method-list.d.ts +0 -8
  35. package/dist/contract/custom-component/contact-method.d.ts +0 -3
  36. package/dist/contract/custom-component/entry-context.d.ts +0 -5
  37. package/dist/contract/enum/server-entry-type.enum.d.ts +0 -7
  38. package/dist/contract/model/conversation-api-model/list.model.d.ts +0 -5
  39. package/dist/contract/model/conversation-api-model/message.model.d.ts +0 -7
  40. package/dist/contract/model/http/action.model.d.ts +0 -3
  41. package/dist/contract/model/http/client-action.model.d.ts +0 -4
  42. package/dist/contract/model/http/client-envelope.model.d.ts +0 -9
  43. package/dist/contract/model/http/connect-options.model.d.ts +0 -5
  44. package/dist/contract/model/http/global-state.model.d.ts +0 -8
  45. package/dist/contract/model/http/http-client-options.model.d.ts +0 -5
  46. package/dist/contract/model/http/server-entry.model.d.ts +0 -11
  47. package/dist/contract/model/http/server-envelope.model.d.ts +0 -10
  48. package/dist/contract/model/middleware/aggregator-state.model.d.ts +0 -4
  49. package/dist/contract/model/shared/loose-object.model.d.ts +0 -3
  50. package/dist/helper/chat.helper.d.ts +0 -8
  51. package/dist/helper/http.helper.d.ts +0 -13
  52. package/dist/helper/middleware.helper.d.ts +0 -12
  53. package/dist/helper/store.helper.d.ts +0 -23
  54. package/dist/interface/entry.interface.d.ts +0 -23
  55. package/dist/interface/middleware/paging.interface.d.ts +0 -4
  56. 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;;"}
@@ -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 React, { createContext, useContext, Fragment } from "react";
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 { ContactMethod as ContactMethod$1 } from "@telia-ace/knowledge-widget-adapters";
24
- import { useDispatch } from "@telia-ace/knowledge-widget-ui";
25
- const EntryContext = createContext({
26
- entryId: null
27
- });
28
- const ContactMethodItem = ({ contactMethod, className, entry, embeded }) => {
29
- console.log(embeded, !embeded && contactMethod.inline);
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
- let entryId;
32
- if (!!entry) {
33
- entryId = entry.entryId;
34
- } else {
35
- entryId = useContext(EntryContext).entryId;
36
- }
37
- return /* @__PURE__ */ React.createElement(ContactMethod$1, __spreadProps(__spreadValues({
38
- className,
39
- onClick: (event) => {
40
- if (embeded || contactMethod.inline) {
41
- event.preventDefault();
42
- dispatch("expand", {
43
- entryId,
44
- contactMethodId: contactMethod.id
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
- } else {
47
- dispatch("action", `${contactMethod.id}/contact-methods/${contactMethod.title}`);
76
+ setContactMethod(__spreadValues({}, updatedMethod));
77
+ return;
48
78
  }
49
- },
50
- dispatch
51
- }, contactMethod), {
52
- inline: true
53
- }));
54
- };
55
- const ContactMethodList = (props) => {
56
- return /* @__PURE__ */ React.createElement(Fragment, null, props.contactMethodList.map((contactMethod) => /* @__PURE__ */ React.createElement(StyledContactMethod, {
57
- embeded: props.embeded,
58
- key: contactMethod.id,
59
- type: props.type,
60
- contactMethod,
61
- expanded: !!contactMethod.executeImmediately || void 0
62
- })));
63
- };
64
- const StyledContactMethod = styled(ContactMethodItem)`
65
- border-bottom: 1px solid rgb(239, 239, 239);
66
- padding: ${(p) => {
67
- var _a;
68
- return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
69
- }};
70
-
71
- &:last-child {
72
- border-bottom: none;
73
- }
74
- `;
75
- const ContactMethod = (props) => {
76
- var _a, _b;
77
- let type;
78
- let methodList;
79
- if (props.contactMethods && ((_a = props.contactMethods.contactMethods) == null ? void 0 : _a.length) > 0) {
80
- type = DataType.ContactMethods;
81
- methodList = props.contactMethods.contactMethods;
82
- } else if (props.contactMethods.categories && ((_b = props.contactMethods.categories) == null ? void 0 : _b.length) > 0) {
83
- type = DataType.ContactMethodCategories;
84
- methodList = props.contactMethods.categories.filter((o) => o.matches > 0);
85
- } else {
86
- type = DataType.ContactMethod;
87
- methodList = props.contactMethods;
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(EntryContext.Provider, {
98
- value: props.entry
99
- }, /* @__PURE__ */ React.createElement(ContactMethodList, {
100
- embeded: !!props.guideId,
101
- type,
102
- contactMethodList: methodList
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 StyledContactMethodItem = styled(ContactMethodItem)`
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/contract/custom-component/entry-context.tsx","../src/contract/custom-component/contact-method-item.tsx","../src/contract/custom-component/contact-method-list.tsx","../src/contract/custom-component/contact-method.tsx"],"sourcesContent":["import { createContext } from 'react';\r\n\r\nexport type IEntryContext = {\r\n entryId: string | null;\r\n};\r\n\r\nexport const EntryContext = createContext<IEntryContext>({\r\n entryId: null,\r\n});\r\n","import { ContactMethod as GenericContactMethod } from '@telia-ace/knowledge-widget-adapters';\r\nimport { useDispatch } from '@telia-ace/knowledge-widget-ui';\r\nimport React, { useContext } from 'react';\r\nimport { EntryContext } from './entry-context';\r\n\r\ninterface PropsType {\r\n contactMethod: any;\r\n type: any;\r\n expanded?: boolean;\r\n className?: any;\r\n entry?: any;\r\n embeded: boolean;\r\n}\r\n\r\nconst ContactMethodItem: React.FC<PropsType> = ({ contactMethod, className, entry, embeded }) => {\r\n console.log(embeded, !embeded && contactMethod.inline);\r\n const dispatch = useDispatch();\r\n let entryId: string | null;\r\n if (!!entry) {\r\n entryId = entry.entryId;\r\n } else {\r\n entryId = useContext(EntryContext).entryId;\r\n }\r\n\r\n return (\r\n <GenericContactMethod\r\n className={className}\r\n onClick={(event: React.MouseEvent) => {\r\n if (embeded || contactMethod.inline) {\r\n // preventing default to use a custom expand action\r\n event.preventDefault();\r\n dispatch('expand', {\r\n entryId,\r\n contactMethodId: contactMethod.id,\r\n });\r\n } else {\r\n dispatch(\r\n 'action',\r\n `${contactMethod.id}/contact-methods/${contactMethod.title}`\r\n );\r\n }\r\n }}\r\n dispatch={dispatch}\r\n {...contactMethod}\r\n inline={true}\r\n />\r\n );\r\n};\r\n\r\nexport default ContactMethodItem;\r\n","import React, { Fragment } from 'react';\r\nimport styled from 'styled-components';\r\nimport ContactMethodItem from './contact-method-item';\r\n\r\ninterface PropsType {\r\n embeded: boolean;\r\n contactMethodList: any;\r\n type: any;\r\n}\r\n\r\nconst ContactMethodList: React.FC<PropsType> = (props: PropsType) => {\r\n return (\r\n <Fragment>\r\n {props.contactMethodList.map((contactMethod: any) => (\r\n <StyledContactMethod\r\n embeded={props.embeded}\r\n key={contactMethod.id}\r\n type={props.type}\r\n contactMethod={contactMethod}\r\n expanded={!!contactMethod.executeImmediately || undefined}\r\n />\r\n ))}\r\n </Fragment>\r\n );\r\n};\r\n\r\nconst StyledContactMethod = styled(ContactMethodItem)`\r\n border-bottom: 1px solid rgb(239, 239, 239);\r\n padding: ${(p) => p.theme.sizes?.medium};\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n`;\r\n\r\nexport default ContactMethodList;\r\n","import { DataType } from '@telia-ace/knowledge-widget-types-grid';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport ContactMethodItem from './contact-method-item';\r\nimport ContactMethodList from './contact-method-list';\r\nimport { EntryContext } from './entry-context';\r\nconst ContactMethod: React.FC = (props: any) => {\r\n let type;\r\n let methodList;\r\n\r\n if (props.contactMethods && props.contactMethods.contactMethods?.length > 0) {\r\n type = DataType.ContactMethods;\r\n methodList = props.contactMethods.contactMethods;\r\n } else if (props.contactMethods.categories && props.contactMethods.categories?.length > 0) {\r\n type = DataType.ContactMethodCategories;\r\n methodList = props.contactMethods.categories.filter((o: any) => o.matches > 0);\r\n } else {\r\n type = DataType.ContactMethod;\r\n methodList = props.contactMethods;\r\n }\r\n\r\n if (!methodList.length) {\r\n return (\r\n <StyledContactMethodItem\r\n embeded={!!props.guideId}\r\n type={type}\r\n contactMethod={methodList}\r\n entry={props.entry}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <EntryContext.Provider value={props.entry}>\r\n <ContactMethodList\r\n embeded={!!props.guideId}\r\n type={type}\r\n contactMethodList={methodList}\r\n />\r\n </EntryContext.Provider>\r\n );\r\n};\r\n\r\nconst StyledContactMethodItem = styled(ContactMethodItem)`\r\n padding: ${(p) => p.theme.sizes?.medium};\r\n`;\r\n\r\nexport default ContactMethod;\r\n"],"names":["GenericContactMethod"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,eAAe,cAA6B;AAAA,EACrD,SAAS;AACb,CAAC;ACMD,MAAM,oBAAyC,CAAC,EAAE,eAAe,WAAW,OAAO,cAAc;AAC7F,UAAQ,IAAI,SAAS,CAAC,WAAW,cAAc,MAAM;AACrD,QAAM,WAAW;AACb,MAAA;AACA,MAAA,CAAC,CAAC,OAAO;AACT,cAAU,MAAM;AAAA,EAAA,OACb;AACO,cAAA,WAAW,YAAY,EAAE;AAAA,EACvC;AAEA,SACK,sBAAA,cAAAA,iBAAA;AAAA,IACG;AAAA,IACA,SAAS,CAAC,UAA4B;AAC9B,UAAA,WAAW,cAAc,QAAQ;AAEjC,cAAM,eAAe;AACrB,iBAAS,UAAU;AAAA,UACf;AAAA,UACA,iBAAiB,cAAc;AAAA,QAAA,CAClC;AAAA,MAAA,OACE;AACH,iBACI,UACA,GAAG,cAAc,sBAAsB,cAAc,OACzD;AAAA,MACJ;AAAA,IACJ;AAAA,IACA;AAAA,KACI,gBAlBP;AAAA,IAmBG,QAAQ;AAAA,EAAA,EACZ;AAER;ACrCA,MAAM,oBAAyC,CAAC,UAAqB;AACjE,6CACK,UACI,MAAA,MAAM,kBAAkB,IAAI,CAAC,kBACzB,sBAAA,cAAA,qBAAA;AAAA,IACG,SAAS,MAAM;AAAA,IACf,KAAK,cAAc;AAAA,IACnB,MAAM,MAAM;AAAA,IACZ;AAAA,IACA,UAAU,CAAC,CAAC,cAAc,sBAAsB;AAAA,EACpD,CAAA,CACH,CACL;AAER;AAEA,MAAM,sBAAsB,OAAO,iBAAiB;AAAA;AAAA,eAErC,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACtB/B,MAAA,gBAA0B,CAAC,UAAe;;AACxC,MAAA;AACA,MAAA;AAEJ,MAAI,MAAM,kBAAkB,aAAM,eAAe,mBAArB,mBAAqC,UAAS,GAAG;AACzE,WAAO,SAAS;AAChB,iBAAa,MAAM,eAAe;AAAA,EAAA,WAC3B,MAAM,eAAe,cAAc,aAAM,eAAe,eAArB,mBAAiC,UAAS,GAAG;AACvF,WAAO,SAAS;AACH,iBAAA,MAAM,eAAe,WAAW,OAAO,CAAC,MAAW,EAAE,UAAU,CAAC;AAAA,EAAA,OAC1E;AACH,WAAO,SAAS;AAChB,iBAAa,MAAM;AAAA,EACvB;AAEI,MAAA,CAAC,WAAW,QAAQ;AACpB,WACK,sBAAA,cAAA,yBAAA;AAAA,MACG,SAAS,CAAC,CAAC,MAAM;AAAA,MACjB;AAAA,MACA,eAAe;AAAA,MACf,OAAO,MAAM;AAAA,IAAA,CACjB;AAAA,EAER;AAGI,SAAA,sBAAA,cAAC,aAAa,UAAb;AAAA,IAAsB,OAAO,MAAM;AAAA,EAAA,GAC/B,sBAAA,cAAA,mBAAA;AAAA,IACG,SAAS,CAAC,CAAC,MAAM;AAAA,IACjB;AAAA,IACA,mBAAmB;AAAA,EACvB,CAAA,CACJ;AAER;AAEA,MAAM,0BAA0B,OAAO,iBAAiB;AAAA,eACzC,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;;"}
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAM,gBAAiC,CAAC,EAAE,iBAAiB,SAAS,SAAS,gBAAgB;AACnF,QAAA,CAAC,eAAe,oBAAoB,SAAc;AACxD,QAAM,YAAY;AAClB,QAAM,WAAW;AACX,QAAA,aAAa,OAAgB,IAAI;AAEvC,YAAU,MAAM;AACZ,UAAM,EAAE,WAAW,UAAU,IAAI,SAAS;AAE1C,UAAM,cAAc,OAAO,UAAU,+BAA+B,CAAO,GAAG,SAAS;;AAEnF,UAAI,YAAK,KAAK,SAAV,mBAAgB,aAAY,SAAS;AACrC;AAAA,MACJ;AAEA,YAAM,WAAY,MAAM,UAAU,SAAS,gBAAgB;AAE3D,YAAM,gBAAgB,iCACf,gBADe;AAAA,QAElB,MAAM,iCACC,cAAc,OADf;AAAA,UAEF,MAAM,KAAK;AAAA,QACf;AAAA,MAAA;AAGJ,YAAM,EAAE,QAAQ,OAAO,eAAe,MAAM,SAAS,SAAS,aAAa;AAE3E,UAAI,CAAC,OAAO;AACR,cAAM,UAAU,IAAI,YAAY,cAAc,KAAK,IAAI;AACvD,yBAAiB,MAAS;AAE1B,gBAAQ,oBAAoB,MAAM;AAElC,sBAAc,OAAO,iCACd,cAAc,OADA;AAAA,UAEjB,MAAM,QAAQ,IAAI;AAAA,QAAA;AAGL,yBAAA,mBAAK,cAAe;AACrC;AAAA,MACJ;AAEA,YAAM,SAAS,MAAM,SAAS,OAAO,aAAa;AAElD,oBAAc,eAAe;AAC7B,uBAAiB,aAAa;AAAA,IAAA,EACjC;AAED,UAAM,sBAAsB,OAAO,UAAU,yBAAyB,CAAO,GAAG,SAAS;AACjF,UAAA,KAAK,MAAM,iBAAiB;AAC5B;AAAA,MACJ;AAEA,YAAM,WAAY,MAAM,UAAU,SAAS,gBAAgB;AAE3D,YAAM,cAAc,MAAM,SAAS,SAAS,aAAa;AAEzD,UAAI,gBAAgB,iCACb,gBADa;AAAA,QAEhB,MAAM,iCACC,cAAc,OADf;AAAA,UAEF,MAAM;AAAA,QACV;AAAA,MAAA;AAGE,YAAA,cAAc,WAAW,eAAe;AAAA,QAC1C,QAAQ;AAAA,QACR,QAAQ,CAAC;AAAA,QACT,MAAM,EAAE,QAAQ;AAAA,MAAA,CACnB;AAEe,sBAAA,iCACT,gBADS;AAAA,QAEZ,MAAM;AAAA,MAAA;AAGV,uBAAiB,aAAa;AAAA,IAAA,EACjC;AAED,WAAO,MAAM;AACG;AACQ;IAAA;AAAA,EAEzB,GAAA,CAAC,WAAW,eAAe,gBAAgB,CAAC;AAEzC,QAAA,qBAAqB,YACvB,CAAO,OAAe;AAClB,UAAM,aAAa,MAAM,UAAU,SAAS,YAAY;AAExD,UAAM,KAAK,MAAM,WAAW,MAAM,SAAS,eAAe;AAAA,MACtD,iBAAiB;AAAA,MACjB;AAAA,IAAA,CACH;AAEK,UAAA,OAAO,WAAW,IAAI;AAAA,MACxB,QAAQ;AAAA,MACR,QAAQ,CAAC;AAAA,MACT,MAAM,EAAE,QAAQ;AAAA,IAAA,CACnB;AACD,OAAG,OAAO;AACV,OAAG,KAAK,UAAU;AAEd,QAAA,CAAC,WAAW,SAAS;AACd,aAAA;AAAA,IACX;AACA,qBAAiB,EAAE;AAAA,EAAA,IAEvB,CAAC,UAAU,CACf;AAEA,YAAU,MAAM;AACZ,uBAAmB,eAAe;AAClC,WAAO,MAAM;AACT,iBAAW,UAAU;AAAA,IAAA;AAAA,EACzB,GACD,CAAC,iBAAiB,kBAAkB,CAAC;AAExC,MAAI,CAAC,eAAe;AACT,WAAA;AAAA,EACX;AACA,SACK,sBAAA,cAAA,4BAAA,iCACO,gBADP;AAAA,IAEG,MAAM,cAAc;AAAA,IACpB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,EAAA,EACJ;AAER;AAIA,MAAM,6BAA6B,OAAOA,eAAoB;AAAA,eAC/C,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA,KAAU,CAAC,MAAA;;AAAM,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;;"}
@@ -0,0 +1,2 @@
1
+ import { MessageGroup, ServerEntry } from './types';
2
+ export declare const processEntries: (entries: ServerEntry[], prevGroup?: MessageGroup | undefined) => Promise<MessageGroup[]>;
@@ -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, { css } from "styled-components";
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: Object.keys(actions).map((i) => {
8
- return {
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(FeedbackItem, {
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
- padding: 0 ${(p) => {
33
- var _a;
34
- return (_a = p.theme.sizes) == null ? void 0 : _a.medium;
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
- margin-left: 0;
46
- display: inline-block;
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.button`
60
- @media (min-width: 768px) {
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 { Icon, invertedHoverButton, List, useDispatch } from '@telia-ace/knowledge-widget-ui';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\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={Object.keys(actions).map((i: any) => {\r\n return {\r\n label: actions[i],\r\n actionKey: i,\r\n };\r\n })}\r\n renderItem={(item: any) => {\r\n return (\r\n <FeedbackItem 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 data-direction={'vertical'}\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 </FeedbackItem>\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default FeedbackList;\r\n\r\nconst StyledButtonList = styled(List as any)`\r\n padding: 0 ${(p) => p.theme.sizes?.medium};\r\n list-style: none;\r\n > li {\r\n margin: ${(p) => p.theme.sizes?.small} ${(p) => p.theme.sizes?.normal};\r\n margin-left: 0;\r\n display: inline-block;\r\n }\r\n`;\r\n\r\nconst FeedbackItem = styled.li`\r\n @media (min-width: 768px) {\r\n display: list-item !important;\r\n margin-right: 0 !important;\r\n margin-top: ${(p) => p.theme.sizes?.normal} !important;\r\n }\r\n`;\r\n\r\nconst FeedbackButton = styled.button<{\r\n 'data-selected': boolean;\r\n 'data-direction': 'horizontal' | 'vertical';\r\n}>`\r\n @media (min-width: 768px) {\r\n min-width: 100%;\r\n margin-right: 0;\r\n }\r\n display: inline-block;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n border-color: ${(p) => p.theme.colors?.primary} !important;\r\n font-weight: 300;\r\n && {\r\n margin-right: ${(p) => p.theme.sizes?.small};\r\n }\r\n ${(p) =>\r\n p['data-direction'] === 'horizontal' &&\r\n css`\r\n width: 225px;\r\n max-width: calc(50% - ${p.theme.sizes?.large} - ${p.theme.sizes?.small});\r\n `}\r\n ${(p) =>\r\n p['data-direction'] === 'vertical' &&\r\n css`\r\n min-width: 150px;\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":";;;AAOM,MAAA,eAAgC,CAAC,EAAE,cAAc;AACnD,QAAM,WAAW;AACjB,SACK,sBAAA,cAAA,kBAAA;AAAA,IACG,OAAO,OAAO,KAAK,OAAO,EAAE,IAAI,CAAC,MAAW;AACjC,aAAA;AAAA,QACH,OAAO,QAAQ;AAAA,QACf,WAAW;AAAA,MAAA;AAAA,IACf,CACH;AAAA,IACD,YAAY,CAAC,SAAc;AACvB,aACK,sBAAA,cAAA,cAAA;AAAA,QAAa,KAAK,KAAK;AAAA,MAAA,GACnB,sBAAA,cAAA,gBAAA;AAAA,QACG,WAAU;AAAA,QACV,UAAU;AAAA,QACV,gBAAc;AAAA,QACd,iBAAe;AAAA,QACf,kBAAgB;AAAA,QAChB,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,IAAW;AAAA,iBAC1B,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAAA,kBAGrB,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA,KAAS,CAAC,MAAA;;AAAM,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAMvE,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA,sBAIN,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA;AAI5C,MAAM,iBAAiB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBASb,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA,oBACnB,CAAC,MAAM;;AAAA,iBAAE,MAAM,WAAR,mBAAgB;AAAA;AAAA;AAAA;AAAA,wBAGnB,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA,MAExC,CAAC,MAAA;;AACC,WAAE,sBAAsB,gBACxB;AAAA;AAAA,oCAE4B,QAAE,MAAM,UAAR,mBAAe,WAAW,QAAE,MAAM,UAAR,mBAAe;AAAA;AAAA;AAAA,MAEvE,CAAC,MACC,EAAE,sBAAsB,cACxB;AAAA;AAAA;AAAA,IAGJ,CAAC;;AACG,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;;"}
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;