@telia-ace/knowledge-widget-adapters 1.0.16 → 1.0.19

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 (37) hide show
  1. package/LICENSE.txt +5 -5
  2. package/README.md +3 -3
  3. package/dist/contact-methods/chat-popup/chat-popup-plugin.d.ts +2 -2
  4. package/dist/contact-methods/chat-popup/index.d.ts +1 -1
  5. package/dist/contact-methods/email/email-form-component.d.ts +4 -4
  6. package/dist/contact-methods/email/email-plugin.d.ts +16 -16
  7. package/dist/contact-methods/email/index.d.ts +1 -1
  8. package/dist/contact-methods/free-text/free-text-component.d.ts +4 -4
  9. package/dist/contact-methods/free-text/free-text-plugin.d.ts +2 -2
  10. package/dist/contact-methods/free-text/index.d.ts +1 -1
  11. package/dist/contact-methods/index.d.ts +10 -10
  12. package/dist/contact-methods/link/index.d.ts +1 -1
  13. package/dist/contact-methods/link/link-component.d.ts +4 -4
  14. package/dist/contact-methods/link/link-plugin.d.ts +2 -2
  15. package/dist/contact-methods/phone/index.d.ts +1 -1
  16. package/dist/contact-methods/phone/phone-component.d.ts +4 -4
  17. package/dist/contact-methods/phone/phone-plugin.d.ts +2 -2
  18. package/dist/contact-methods/platform.d.ts +50 -50
  19. package/dist/contact-methods/ui/confirmation.d.ts +6 -6
  20. package/dist/contact-methods/ui/contact-list.d.ts +16 -15
  21. package/dist/contact-methods/ui/contact-method.d.ts +39 -39
  22. package/dist/contact-methods/ui/description.d.ts +2 -3
  23. package/dist/contact-methods/ui/form.d.ts +4 -4
  24. package/dist/contact-methods/ui/index.d.ts +7 -7
  25. package/dist/contact-methods/ui/use-contact-method.d.ts +2 -2
  26. package/dist/contact-methods/web-service/index.d.ts +1 -1
  27. package/dist/contact-methods/web-service/web-service-plugin.d.ts +2 -2
  28. package/dist/create-adapter.d.ts +7 -7
  29. package/dist/default-contact-methods-plugin.d.ts +8 -8
  30. package/dist/email-form-component.js.map +1 -1
  31. package/dist/free-text-component.js.map +1 -1
  32. package/dist/index.d.ts +5 -5
  33. package/dist/index2.js +7 -3
  34. package/dist/index2.js.map +1 -1
  35. package/dist/link-component.js.map +1 -1
  36. package/dist/phone-component.js.map +1 -1
  37. package/package.json +7 -7
package/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
- Copyright © 2021, Telia Company AB. All rights reserved.
2
-
3
- THIS PACKAGE AND CONTAINING SOFTWARE IS PART OF
4
- THE HUMANY SERVICE. BY USING THIS SOFTWARE YOU
5
- AGREE TO THE FOLLOWING TERMS AND CONDITIONS:
1
+ Copyright © 2021, Telia Company AB. All rights reserved.
2
+
3
+ THIS PACKAGE AND CONTAINING SOFTWARE IS PART OF
4
+ THE HUMANY SERVICE. BY USING THIS SOFTWARE YOU
5
+ AGREE TO THE FOLLOWING TERMS AND CONDITIONS:
6
6
  http://www.humany.com/legal
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
- # `@telia-ace/knowledge-widget-adapters`
2
-
3
- Adapters for ACE knowledge widgets.
1
+ # `@telia-ace/knowledge-widget-adapters`
2
+
3
+ Adapters for ACE knowledge widgets.
@@ -1,2 +1,2 @@
1
- import { Container } from '@webprovisions/platform';
2
- export default function chatPopupPlugin(container: Container): void;
1
+ import { Container } from '@webprovisions/platform';
2
+ export default function chatPopupPlugin(container: Container): void;
@@ -1 +1 @@
1
- export { default as ChatPopupPlugin } from './chat-popup-plugin';
1
+ export { default as ChatPopupPlugin } from './chat-popup-plugin';
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
2
- import { ContactMethodProps } from '../ui';
3
- declare const EmailFormComponent: React.FC<ContactMethodProps>;
4
- export default EmailFormComponent;
1
+ import * as React from 'react';
2
+ import { ContactMethodProps } from '../ui';
3
+ declare const EmailFormComponent: React.FC<ContactMethodProps>;
4
+ export default EmailFormComponent;
@@ -1,16 +1,16 @@
1
- import { SubmissionApiResult } from '@telia-ace/knowledge-serviceclient';
2
- import { Container } from '@webprovisions/platform';
3
- import { ContactMethodType } from '../ui';
4
- export declare const submit: (container: Container, contactMethod: ContactMethodType, transform?: ((response: any) => SubmissionApiResult) | undefined) => Promise<string>;
5
- export declare const validate: (container: Container, contactMethod: ContactMethodType) => Promise<{
6
- valid: boolean;
7
- errors: {
8
- [key: string]: string;
9
- };
10
- errorTypes: {
11
- [key: string]: string;
12
- };
13
- }>;
14
- export declare const evaluate: (container: Container, contactMethod: ContactMethodType) => Promise<import("@telia-ace/widget-forms").Form>;
15
- export declare const complete: (container: Container, contactMethod: ContactMethodType) => Promise<void>;
16
- export default function emailPlugin(container: Container): void;
1
+ import { SubmissionApiResult } from '@telia-ace/knowledge-serviceclient';
2
+ import { Container } from '@webprovisions/platform';
3
+ import { ContactMethodType } from '../ui';
4
+ export declare const submit: (container: Container, contactMethod: ContactMethodType, transform?: ((response: any) => SubmissionApiResult) | undefined) => Promise<string>;
5
+ export declare const validate: (container: Container, contactMethod: ContactMethodType) => Promise<{
6
+ valid: boolean;
7
+ errors: {
8
+ [key: string]: string;
9
+ };
10
+ errorTypes: {
11
+ [key: string]: string;
12
+ };
13
+ }>;
14
+ export declare const evaluate: (container: Container, contactMethod: ContactMethodType) => Promise<import("@telia-ace/widget-forms").Form>;
15
+ export declare const complete: (container: Container, contactMethod: ContactMethodType) => Promise<void>;
16
+ export default function emailPlugin(container: Container): void;
@@ -1 +1 @@
1
- export { complete as defaultComplete, default as EmailPlugin, evaluate as defaultEvaluate, submit as defaultSubmit, validate as defaultValidate, } from './email-plugin';
1
+ export { complete as defaultComplete, default as EmailPlugin, evaluate as defaultEvaluate, submit as defaultSubmit, validate as defaultValidate, } from './email-plugin';
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
2
- import { ContactMethodProps } from '../ui';
3
- declare const FreeTextComponent: React.SFC<ContactMethodProps>;
4
- export default FreeTextComponent;
1
+ import * as React from 'react';
2
+ import { ContactMethodProps } from '../ui';
3
+ declare const FreeTextComponent: React.SFC<ContactMethodProps>;
4
+ export default FreeTextComponent;
@@ -1,2 +1,2 @@
1
- import { Container } from '@webprovisions/platform';
2
- export default function freeTextPlugin(container: Container): void;
1
+ import { Container } from '@webprovisions/platform';
2
+ export default function freeTextPlugin(container: Container): void;
@@ -1 +1 @@
1
- export { default as FreeTextPlugin } from './free-text-plugin';
1
+ export { default as FreeTextPlugin } from './free-text-plugin';
@@ -1,10 +1,10 @@
1
- export { ChatPopupPlugin } from './chat-popup';
2
- export { defaultComplete, defaultEvaluate, defaultSubmit, defaultValidate, EmailPlugin, } from './email';
3
- export { FreeTextPlugin } from './free-text';
4
- export { LinkPlugin } from './link';
5
- export { PhonePlugin } from './phone';
6
- export { default as ContactMethodPlatform } from './platform';
7
- export type { Click as ContactMethodClick, ReactComponentImport } from './platform';
8
- export { contactItemList, contactLink, ContactList, ContactMethod, Form as DefaultForm, useContactMethod, } from './ui';
9
- export type { ContactMethodType } from './ui';
10
- export { WebServicePlugin } from './web-service';
1
+ export { ChatPopupPlugin } from './chat-popup';
2
+ export { defaultComplete, defaultEvaluate, defaultSubmit, defaultValidate, EmailPlugin, } from './email';
3
+ export { FreeTextPlugin } from './free-text';
4
+ export { LinkPlugin } from './link';
5
+ export { PhonePlugin } from './phone';
6
+ export { default as ContactMethodPlatform } from './platform';
7
+ export type { Click as ContactMethodClick, ReactComponentImport } from './platform';
8
+ export { contactItemList, contactLink, ContactList, ContactMethod, Form as DefaultForm, useContactMethod, } from './ui';
9
+ export type { ContactMethodType } from './ui';
10
+ export { WebServicePlugin } from './web-service';
@@ -1 +1 @@
1
- export { default as LinkPlugin } from './link-plugin';
1
+ export { default as LinkPlugin } from './link-plugin';
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
2
- import { ContactMethodProps } from '../ui';
3
- declare const LinkComponent: React.SFC<ContactMethodProps>;
4
- export default LinkComponent;
1
+ import * as React from 'react';
2
+ import { ContactMethodProps } from '../ui';
3
+ declare const LinkComponent: React.SFC<ContactMethodProps>;
4
+ export default LinkComponent;
@@ -1,2 +1,2 @@
1
- import { Container } from '@webprovisions/platform';
2
- export default function linkPlugin(container: Container): void;
1
+ import { Container } from '@webprovisions/platform';
2
+ export default function linkPlugin(container: Container): void;
@@ -1 +1 @@
1
- export { default as PhonePlugin } from './phone-plugin';
1
+ export { default as PhonePlugin } from './phone-plugin';
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
2
- import { ContactMethodProps } from '../ui';
3
- declare const PhoneComponent: React.SFC<ContactMethodProps>;
4
- export default PhoneComponent;
1
+ import * as React from 'react';
2
+ import { ContactMethodProps } from '../ui';
3
+ declare const PhoneComponent: React.SFC<ContactMethodProps>;
4
+ export default PhoneComponent;
@@ -1,2 +1,2 @@
1
- import { Container } from '@webprovisions/platform';
2
- export default function phonePlugin(container: Container): void;
1
+ import { Container } from '@webprovisions/platform';
2
+ export default function phonePlugin(container: Container): void;
@@ -1,50 +1,50 @@
1
- import { ComponentPlatform } from '@telia-ace/knowledge-widget-core';
2
- import { Form } from '@telia-ace/widget-forms';
3
- import { Container } from '@webprovisions/platform';
4
- import React from 'react';
5
- import { ContactMethodProps } from './ui';
6
- export declare type ReactComponentImport = Promise<{
7
- default: React.FunctionComponent<any>;
8
- }>;
9
- export declare type Click = (e: React.MouseEvent, cm: ContactMethodProps) => void;
10
- export declare type AdapterSettings = {
11
- clientName: string;
12
- render: string | ReactComponentImport;
13
- handleDescription?: (cm: ContactMethodProps) => Promise<string> | string;
14
- handleDisabled?: (cm: ContactMethodProps) => Promise<boolean> | boolean;
15
- handleClick?: (cm: ContactMethodProps) => Promise<Click> | Click;
16
- onEvaluate?: (cm: ContactMethodProps) => Promise<Form> | Form;
17
- onValidate?: (cm: ContactMethodProps) => Promise<ValidationResult> | ValidationResult;
18
- onSubmit?: (cm: ContactMethodProps) => Promise<string> | string;
19
- onComplete?: (cm: ContactMethodProps) => Promise<void> | void;
20
- };
21
- export declare type ValidationResult = {
22
- errors?: {
23
- [key: string]: string;
24
- };
25
- errorTypes?: {
26
- [key: string]: string;
27
- };
28
- valid: boolean;
29
- };
30
- export declare enum ContactMethodTrackTypes {
31
- ContactMethodValidate = "contact-method-validate",
32
- ContactMethodComplete = "contact-method-complete"
33
- }
34
- declare class ContactMethodPlatform {
35
- private container;
36
- private componentPlatform;
37
- private adapters;
38
- private subs;
39
- static create(container: Container): Promise<ContactMethodPlatform>;
40
- constructor(container: Container, componentPlatform: ComponentPlatform);
41
- static getInstance(container: Container, key?: string): Promise<ContactMethodPlatform>;
42
- private track;
43
- complete(contactMethod: ContactMethodProps): void | Promise<void>;
44
- evaluate(contactMethod: ContactMethodProps): Promise<Form>;
45
- validate(contactMethod: ContactMethodProps): Promise<ValidationResult>;
46
- submit(contactMethod: ContactMethodProps): Promise<string>;
47
- create(settings: AdapterSettings): Promise<void>;
48
- dispose(): void;
49
- }
50
- export default ContactMethodPlatform;
1
+ import { ComponentPlatform } from '@telia-ace/knowledge-widget-core';
2
+ import { Form } from '@telia-ace/widget-forms';
3
+ import { Container } from '@webprovisions/platform';
4
+ import React from 'react';
5
+ import { ContactMethodProps } from './ui';
6
+ export declare type ReactComponentImport = Promise<{
7
+ default: React.FunctionComponent<any>;
8
+ }>;
9
+ export declare type Click = (e: React.MouseEvent, cm: ContactMethodProps) => void;
10
+ export declare type AdapterSettings = {
11
+ clientName: string;
12
+ render: string | ReactComponentImport;
13
+ handleDescription?: (cm: ContactMethodProps) => Promise<string> | string;
14
+ handleDisabled?: (cm: ContactMethodProps) => Promise<boolean> | boolean;
15
+ handleClick?: (cm: ContactMethodProps) => Promise<Click> | Click;
16
+ onEvaluate?: (cm: ContactMethodProps) => Promise<Form> | Form;
17
+ onValidate?: (cm: ContactMethodProps) => Promise<ValidationResult> | ValidationResult;
18
+ onSubmit?: (cm: ContactMethodProps) => Promise<string> | string;
19
+ onComplete?: (cm: ContactMethodProps) => Promise<void> | void;
20
+ };
21
+ export declare type ValidationResult = {
22
+ errors?: {
23
+ [key: string]: string;
24
+ };
25
+ errorTypes?: {
26
+ [key: string]: string;
27
+ };
28
+ valid: boolean;
29
+ };
30
+ export declare enum ContactMethodTrackTypes {
31
+ ContactMethodValidate = "contact-method-validate",
32
+ ContactMethodComplete = "contact-method-complete"
33
+ }
34
+ declare class ContactMethodPlatform {
35
+ private container;
36
+ private componentPlatform;
37
+ private adapters;
38
+ private subs;
39
+ static create(container: Container): Promise<ContactMethodPlatform>;
40
+ constructor(container: Container, componentPlatform: ComponentPlatform);
41
+ static getInstance(container: Container, key?: string): Promise<ContactMethodPlatform>;
42
+ private track;
43
+ complete(contactMethod: ContactMethodProps): void | Promise<void>;
44
+ evaluate(contactMethod: ContactMethodProps): Promise<Form>;
45
+ validate(contactMethod: ContactMethodProps): Promise<ValidationResult>;
46
+ submit(contactMethod: ContactMethodProps): Promise<string>;
47
+ create(settings: AdapterSettings): Promise<void>;
48
+ dispose(): void;
49
+ }
50
+ export default ContactMethodPlatform;
@@ -1,6 +1,6 @@
1
- import * as React from 'react';
2
- export declare type Props = {
3
- html: string;
4
- };
5
- declare const Confirmation: React.SFC<Props>;
6
- export default Confirmation;
1
+ import * as React from 'react';
2
+ export declare type Props = {
3
+ html: string;
4
+ };
5
+ declare const Confirmation: React.SFC<Props>;
6
+ export default Confirmation;
@@ -1,15 +1,16 @@
1
- import { DispatchAction } from '@telia-ace/knowledge-widget-ui';
2
- import React, { ReactNode } from 'react';
3
- import { ContactMethodType } from './contact-method';
4
- export declare const contactItemList: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
5
- declare type Props = {
6
- contactMethods: ContactMethodType[];
7
- header?: string;
8
- className?: string;
9
- action?: (action: string, value?: any) => void;
10
- dispatch?: DispatchAction;
11
- children?: ReactNode;
12
- guideId?: string;
13
- };
14
- declare const ContactList: React.SFC<Props>;
15
- export default ContactList;
1
+ import { DispatchAction } from '@telia-ace/knowledge-widget-ui';
2
+ import React, { ReactNode } from 'react';
3
+ import { ContactMethodType } from './contact-method';
4
+ export declare const contactItemList: import("styled-components").FlattenInterpolation<import("styled-components").ThemeProps<any>>;
5
+ declare type Props = {
6
+ contactMethods: ContactMethodType[];
7
+ header?: string;
8
+ className?: string;
9
+ action?: (action: string, value?: any) => void;
10
+ dispatch?: DispatchAction;
11
+ children?: ReactNode;
12
+ itemRenderer?: (cm: any, props: any) => JSX.Element;
13
+ guideId?: string;
14
+ };
15
+ declare const ContactList: React.SFC<Props>;
16
+ export default ContactList;
@@ -1,39 +1,39 @@
1
- import { Symbol } from '@telia-ace/knowledge-widget-core';
2
- import { DispatchAction, HtmlParseInstruction } from '@telia-ace/knowledge-widget-ui';
3
- import React from 'react';
4
- export declare type ContactMethodType = {
5
- id: string;
6
- title: string;
7
- symbol?: Symbol;
8
- clientName: string;
9
- expanded: boolean;
10
- inline: boolean;
11
- body: {
12
- [key: string]: any;
13
- };
14
- description?: string;
15
- confirmation?: string;
16
- disabled?: boolean;
17
- guideId?: string;
18
- };
19
- export declare type Props = Merge<ContactMethodType, {
20
- className?: string;
21
- onClick?: (event: React.MouseEvent, properties: Props) => void;
22
- renderDefault?: (extraProps?: Partial<Props>) => any;
23
- htmlParseInstruction?: HtmlParseInstruction;
24
- href?: string;
25
- target?: string;
26
- disabled?: boolean;
27
- action?: (action: string, value: any) => void;
28
- dispatch?: DispatchAction;
29
- symbol?: Symbol;
30
- description?: string;
31
- confirmation?: string;
32
- guideId?: string;
33
- autoFocus?: boolean;
34
- }>;
35
- declare const ContactMethod: React.FC<Props>;
36
- export default ContactMethod;
37
- export declare const contactLink: import("styled-components").FlattenInterpolation<import("styled-components").ThemedStyledProps<{
38
- description?: string | undefined;
39
- }, any>>;
1
+ import { Symbol } from '@telia-ace/knowledge-widget-core';
2
+ import { DispatchAction, HtmlParseInstruction } from '@telia-ace/knowledge-widget-ui';
3
+ import React from 'react';
4
+ export declare type ContactMethodType = {
5
+ id: string;
6
+ title: string;
7
+ symbol?: Symbol;
8
+ clientName: string;
9
+ expanded: boolean;
10
+ inline: boolean;
11
+ body: {
12
+ [key: string]: any;
13
+ };
14
+ description?: string;
15
+ confirmation?: string;
16
+ disabled?: boolean;
17
+ guideId?: string;
18
+ };
19
+ export declare type Props = Merge<ContactMethodType, {
20
+ className?: string;
21
+ onClick?: (event: React.MouseEvent, properties: Props) => void;
22
+ renderDefault?: (extraProps?: Partial<Props>) => any;
23
+ htmlParseInstruction?: HtmlParseInstruction;
24
+ href?: string;
25
+ target?: string;
26
+ disabled?: boolean;
27
+ action?: (action: string, value: any) => void;
28
+ dispatch?: DispatchAction;
29
+ symbol?: Symbol;
30
+ description?: string;
31
+ confirmation?: string;
32
+ guideId?: string;
33
+ autoFocus?: boolean;
34
+ }>;
35
+ declare const ContactMethod: React.FC<Props>;
36
+ export default ContactMethod;
37
+ export declare const contactLink: import("styled-components").FlattenInterpolation<import("styled-components").ThemedStyledProps<{
38
+ description?: string | undefined;
39
+ }, any>>;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
- declare const _default: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<Pick<import("@telia-ace/knowledge-widget-ui").HtmlProps, "html" | "key" | keyof import("react").HTMLAttributes<HTMLDivElement> | "htmlParseInstruction"> & import("react").RefAttributes<HTMLDivElement>>, any, {}, never>;
3
- export default _default;
1
+ declare const _default: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<Pick<import("@telia-ace/knowledge-widget-ui").HtmlProps, "html" | "key" | keyof import("react").HTMLAttributes<HTMLDivElement> | "htmlParseInstruction"> & import("react").RefAttributes<HTMLDivElement>>, any, {}, never>;
2
+ export default _default;
@@ -1,4 +1,4 @@
1
- import React from 'react';
2
- import { ContactMethodProps } from '.';
3
- declare const Form: React.SFC<ContactMethodProps>;
4
- export default Form;
1
+ import React from 'react';
2
+ import { ContactMethodProps } from '.';
3
+ declare const Form: React.SFC<ContactMethodProps>;
4
+ export default Form;
@@ -1,7 +1,7 @@
1
- export { default as Confirmation } from './confirmation';
2
- export { contactItemList, default as ContactList } from './contact-list';
3
- export { contactLink, default as ContactMethod } from './contact-method';
4
- export type { ContactMethodType, Props as ContactMethodProps } from './contact-method';
5
- export { default as Description } from './description';
6
- export { default as Form } from './form';
7
- export { default as useContactMethod } from './use-contact-method';
1
+ export { default as Confirmation } from './confirmation';
2
+ export { contactItemList, default as ContactList } from './contact-list';
3
+ export { contactLink, default as ContactMethod } from './contact-method';
4
+ export type { ContactMethodType, Props as ContactMethodProps } from './contact-method';
5
+ export { default as Description } from './description';
6
+ export { default as Form } from './form';
7
+ export { default as useContactMethod } from './use-contact-method';
@@ -1,2 +1,2 @@
1
- declare const useContactMethod: (clientName: string) => any | null;
2
- export default useContactMethod;
1
+ declare const useContactMethod: (clientName: string) => any | null;
2
+ export default useContactMethod;
@@ -1 +1 @@
1
- export { default as WebServicePlugin } from './web-service-plugin';
1
+ export { default as WebServicePlugin } from './web-service-plugin';
@@ -1,2 +1,2 @@
1
- import { Container } from '@webprovisions/platform';
2
- export default function webServicePlugin(container: Container): void;
1
+ import { Container } from '@webprovisions/platform';
2
+ export default function webServicePlugin(container: Container): void;
@@ -1,7 +1,7 @@
1
- import { Container } from '@webprovisions/platform';
2
- export declare type Callback = (settings: {
3
- [key: string]: any;
4
- }, data?: {
5
- [key: string]: any;
6
- }) => Promise<string | void> | (string | void);
7
- export declare const createSubmitAdapter: (container: Container, clientName: string, fn: Callback) => Promise<void>;
1
+ import { Container } from '@webprovisions/platform';
2
+ export declare type Callback = (settings: {
3
+ [key: string]: any;
4
+ }, data?: {
5
+ [key: string]: any;
6
+ }) => Promise<string | void> | (string | void);
7
+ export declare const createSubmitAdapter: (container: Container, clientName: string, fn: Callback) => Promise<void>;
@@ -1,8 +1,8 @@
1
- import { Plugin } from '@telia-ace/knowledge-widget-core';
2
- import { Container } from '@webprovisions/platform';
3
- /**
4
- * Registers default Humany contact methods.
5
- */
6
- export declare class DefaultContactMethodsPlugin extends Plugin {
7
- constructor(container: Container, settings: any);
8
- }
1
+ import { Plugin } from '@telia-ace/knowledge-widget-core';
2
+ import { Container } from '@webprovisions/platform';
3
+ /**
4
+ * Registers default Humany contact methods.
5
+ */
6
+ export declare class DefaultContactMethodsPlugin extends Plugin {
7
+ constructor(container: Container, settings: any);
8
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"email-form-component.js","sources":["../src/contact-methods/email/email-form-component.tsx"],"sourcesContent":["import { genericHtml, headingElement, Html } from '@telia-ace/knowledge-widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport { ContactMethodProps, Form } from '../ui';\n\nconst StyledHtml = styled(Html)`\n ${genericHtml}\n\n ${headingElement(\n 'h1',\n css`\n font-weight: normal;\n font-size: ${(p) => p.theme.fonts?.medium};\n `\n )}\n`;\n\nconst EmailFormComponent: React.FC<ContactMethodProps> = (props) => {\n const {\n className,\n renderDefault = () => {},\n body: { form },\n confirmation,\n htmlParseInstruction,\n disabled,\n } = props;\n\n if (confirmation) {\n return (\n <StyledHtml\n className={appendClassNames(\n className,\n 'humany-contact-method-confirmation',\n 'humany-contact-method-email'\n )}\n html={confirmation}\n htmlParseInstruction={htmlParseInstruction}\n />\n );\n }\n\n if (form && !disabled) {\n return (\n <Form\n {...props}\n className={appendClassNames(className, 'humany-contact-method-email')}\n />\n );\n }\n\n return renderDefault();\n};\n\nexport default EmailFormComponent;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,aAAa,OAAO,IAAI;AAAA,MACxB;AAAA;AAAA,MAEA,eACE,MACA;AAAA;AAAA,yBAEiB,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA,SAE3C;AAAA;AAGE,MAAA,qBAAmD,CAAC,UAAU;AAC1D,QAAA;AAAA,IACF;AAAA,IACA,gBAAgB,MAAM;AAAA,IAAC;AAAA,IACvB,MAAM,EAAE;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,MACA;AAEJ,MAAI,cAAc;AACd,WACK,sBAAA,cAAA,YAAA;AAAA,MACG,WAAW,iBACP,WACA,sCACA,6BACJ;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IAAA,CACJ;AAAA,EAER;AAEI,MAAA,QAAQ,CAAC,UAAU;AACnB,WACK,sBAAA,cAAA,MAAA,iCACO,QADP;AAAA,MAEG,WAAW,iBAAiB,WAAW,6BAA6B;AAAA,IAAA,EACxE;AAAA,EAER;AAEA,SAAO,cAAc;AACzB;;"}
1
+ {"version":3,"file":"email-form-component.js","sources":["../src/contact-methods/email/email-form-component.tsx"],"sourcesContent":["import { genericHtml, headingElement, Html } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport * as React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { ContactMethodProps, Form } from '../ui';\r\n\r\nconst StyledHtml = styled(Html)`\r\n ${genericHtml}\r\n\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-weight: normal;\r\n font-size: ${(p) => p.theme.fonts?.medium};\r\n `\r\n )}\r\n`;\r\n\r\nconst EmailFormComponent: React.FC<ContactMethodProps> = (props) => {\r\n const {\r\n className,\r\n renderDefault = () => {},\r\n body: { form },\r\n confirmation,\r\n htmlParseInstruction,\r\n disabled,\r\n } = props;\r\n\r\n if (confirmation) {\r\n return (\r\n <StyledHtml\r\n className={appendClassNames(\r\n className,\r\n 'humany-contact-method-confirmation',\r\n 'humany-contact-method-email'\r\n )}\r\n html={confirmation}\r\n htmlParseInstruction={htmlParseInstruction}\r\n />\r\n );\r\n }\r\n\r\n if (form && !disabled) {\r\n return (\r\n <Form\r\n {...props}\r\n className={appendClassNames(className, 'humany-contact-method-email')}\r\n />\r\n );\r\n }\r\n\r\n return renderDefault();\r\n};\r\n\r\nexport default EmailFormComponent;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,aAAa,OAAO,IAAI;AAAA,MACxB;AAAA;AAAA,MAEA,eACE,MACA;AAAA;AAAA,yBAEiB,CAAC,MAAM;;AAAA,iBAAE,MAAM,UAAR,mBAAe;AAAA;AAAA,SAE3C;AAAA;AAGE,MAAA,qBAAmD,CAAC,UAAU;AAC1D,QAAA;AAAA,IACF;AAAA,IACA,gBAAgB,MAAM;AAAA,IAAC;AAAA,IACvB,MAAM,EAAE;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,MACA;AAEJ,MAAI,cAAc;AACd,WACK,sBAAA,cAAA,YAAA;AAAA,MACG,WAAW,iBACP,WACA,sCACA,6BACJ;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IAAA,CACJ;AAAA,EAER;AAEI,MAAA,QAAQ,CAAC,UAAU;AACnB,WACK,sBAAA,cAAA,MAAA,iCACO,QADP;AAAA,MAEG,WAAW,iBAAiB,WAAW,6BAA6B;AAAA,IAAA,EACxE;AAAA,EAER;AAEA,SAAO,cAAc;AACzB;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"free-text-component.js","sources":["../src/contact-methods/free-text/free-text-component.tsx"],"sourcesContent":["import { genericHtml, Html } from '@telia-ace/knowledge-widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport { ContactMethodProps, Description } from '../ui';\n\nconst FreeTextComponent: React.SFC<ContactMethodProps> = ({\n className,\n description,\n body: { freetext },\n htmlParseInstruction,\n}) => {\n if (!freetext) {\n return null;\n }\n return (\n <div className={appendClassNames(className, 'humany-contact-method-free-text')}>\n <StyledHtml html={freetext} htmlParseInstruction={htmlParseInstruction} />\n {description && (\n <Description html={description} htmlParseInstruction={htmlParseInstruction} />\n )}\n </div>\n );\n};\n\nexport default FreeTextComponent;\n\nconst StyledHtml = styled(Html)`\n ${genericHtml};\n`;\n"],"names":[],"mappings":";;;;;;;AAMA,MAAM,oBAAmD,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA,MAAM,EAAE;AAAA,EACR;AAAA,MACE;AACF,MAAI,CAAC,UAAU;AACJ,WAAA;AAAA,EACX;AACA,SACK,sBAAA,cAAA,OAAA;AAAA,IAAI,WAAW,iBAAiB,WAAW,iCAAiC;AAAA,EAAA,GACxE,sBAAA,cAAA,YAAA;AAAA,IAAW,MAAM;AAAA,IAAU;AAAA,EAA4C,CAAA,GACvE,eACI,sBAAA,cAAA,aAAA;AAAA,IAAY,MAAM;AAAA,IAAa;AAAA,EAA4C,CAAA,CAEpF;AAER;AAIA,MAAM,aAAa,OAAO,IAAI;AAAA,MACxB;AAAA;;"}
1
+ {"version":3,"file":"free-text-component.js","sources":["../src/contact-methods/free-text/free-text-component.tsx"],"sourcesContent":["import { genericHtml, Html } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { ContactMethodProps, Description } from '../ui';\r\n\r\nconst FreeTextComponent: React.SFC<ContactMethodProps> = ({\r\n className,\r\n description,\r\n body: { freetext },\r\n htmlParseInstruction,\r\n}) => {\r\n if (!freetext) {\r\n return null;\r\n }\r\n return (\r\n <div className={appendClassNames(className, 'humany-contact-method-free-text')}>\r\n <StyledHtml html={freetext} htmlParseInstruction={htmlParseInstruction} />\r\n {description && (\r\n <Description html={description} htmlParseInstruction={htmlParseInstruction} />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default FreeTextComponent;\r\n\r\nconst StyledHtml = styled(Html)`\r\n ${genericHtml};\r\n`;\r\n"],"names":[],"mappings":";;;;;;;AAMA,MAAM,oBAAmD,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA,MAAM,EAAE;AAAA,EACR;AAAA,MACE;AACF,MAAI,CAAC,UAAU;AACJ,WAAA;AAAA,EACX;AACA,SACK,sBAAA,cAAA,OAAA;AAAA,IAAI,WAAW,iBAAiB,WAAW,iCAAiC;AAAA,EAAA,GACxE,sBAAA,cAAA,YAAA;AAAA,IAAW,MAAM;AAAA,IAAU;AAAA,EAA4C,CAAA,GACvE,eACI,sBAAA,cAAA,aAAA;AAAA,IAAY,MAAM;AAAA,IAAa;AAAA,EAA4C,CAAA,CAEpF;AAER;AAIA,MAAM,aAAa,OAAO,IAAI;AAAA,MACxB;AAAA;;"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { ChatPopupPlugin, contactItemList, contactLink, ContactList, ContactMethod, ContactMethodPlatform, defaultComplete, defaultEvaluate, DefaultForm, defaultSubmit, defaultValidate, EmailPlugin as EmailFormPlugin, FreeTextPlugin, LinkPlugin, PhonePlugin, useContactMethod, WebServicePlugin, } from './contact-methods';
2
- export type { ContactMethodClick, ContactMethodType, ReactComponentImport, } from './contact-methods';
3
- export { createSubmitAdapter } from './create-adapter';
4
- export type { Callback } from './create-adapter';
5
- export { DefaultContactMethodsPlugin } from './default-contact-methods-plugin';
1
+ export { ChatPopupPlugin, contactItemList, contactLink, ContactList, ContactMethod, ContactMethodPlatform, defaultComplete, defaultEvaluate, DefaultForm, defaultSubmit, defaultValidate, EmailPlugin as EmailFormPlugin, FreeTextPlugin, LinkPlugin, PhonePlugin, useContactMethod, WebServicePlugin, } from './contact-methods';
2
+ export type { ContactMethodClick, ContactMethodType, ReactComponentImport, } from './contact-methods';
3
+ export { createSubmitAdapter } from './create-adapter';
4
+ export type { Callback } from './create-adapter';
5
+ export { DefaultContactMethodsPlugin } from './default-contact-methods-plugin';
package/dist/index2.js CHANGED
@@ -551,6 +551,7 @@ const ContactList = ({
551
551
  guideId,
552
552
  dispatch,
553
553
  className = "",
554
+ itemRenderer,
554
555
  action = () => {
555
556
  },
556
557
  header = ""
@@ -562,7 +563,10 @@ const ContactList = ({
562
563
  header,
563
564
  className: appendClassNames(className, "humany-contact-list"),
564
565
  items: contactMethods,
565
- renderItem: (cm) => /* @__PURE__ */ React__default.createElement("li", {
566
+ renderItem: itemRenderer ? (cm) => /* @__PURE__ */ React__default.createElement("li", {
567
+ key: cm.id,
568
+ "data-contact-method": cm.id
569
+ }, itemRenderer(cm, { action, dispatch, guideId })) : (cm) => /* @__PURE__ */ React__default.createElement("li", {
566
570
  key: cm.id,
567
571
  "data-contact-method": cm.id
568
572
  }, /* @__PURE__ */ React__default.createElement(ContactMethod, __spreadProps(__spreadValues({}, cm), {
@@ -599,7 +603,7 @@ const Form = ({
599
603
  autoFocus
600
604
  }) => {
601
605
  if (form && !disabled) {
602
- const { schema, layout, data } = form;
606
+ const { schema, layout, data, meta } = form;
603
607
  const trigger = dispatch || action || (() => {
604
608
  });
605
609
  return /* @__PURE__ */ React__default.createElement(FormComponent, {
@@ -609,7 +613,7 @@ const Form = ({
609
613
  data,
610
614
  autoFocus,
611
615
  onChange: (event, data2) => {
612
- const form2 = { schema, layout, data: data2 };
616
+ const form2 = { schema, layout, data: data2, meta };
613
617
  if (event.toString() === "submit") {
614
618
  trigger("submit", { id, form: form2 });
615
619
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"index2.js","sources":["../src/contact-methods/email/email-plugin.ts","../src/contact-methods/chat-popup/chat-popup-plugin.ts","../src/contact-methods/free-text/free-text-plugin.ts","../src/contact-methods/link/link-plugin.tsx","../src/contact-methods/phone/phone-plugin.ts","../src/contact-methods/platform.ts","../src/contact-methods/ui/confirmation.tsx","../src/contact-methods/ui/description.tsx","../src/contact-methods/ui/contact-method.tsx","../src/contact-methods/ui/contact-list.tsx","../src/contact-methods/ui/form.tsx","../src/contact-methods/ui/use-contact-method.ts","../src/contact-methods/web-service/web-service-plugin.ts","../src/create-adapter.ts","../src/default-contact-methods-plugin.ts"],"sourcesContent":["import {\n ContactMethodApiResponse,\n ServiceClient,\n SubmissionApiResult,\n} from '@telia-ace/knowledge-serviceclient';\nimport { FormBuilder, FormReader } from '@telia-ace/widget-forms';\nimport { RoutingService } from '@telia-ace/widget-routing';\nimport { Container } from '@webprovisions/platform';\nimport ContactMethodPlatform from '../platform';\nimport { ContactMethodType } from '../ui';\n\ntype Services = {\n matchingClient: ServiceClient;\n router: RoutingService;\n};\n\nconst post = (container: Container, contactMethod: ContactMethodType, validate = false) =>\n container.getManyAsync('matchingClient', 'router').then((services) => {\n const { formData } = new FormReader(contactMethod.body.form).export(validate);\n const { router, matchingClient } = services as Services;\n const { params } = router.getRouteData();\n\n return matchingClient.customRequest(\n `contactmethods/${contactMethod.id}${validate ? '/validatedwithpayload' : ''}`,\n 'POST',\n {\n body: formData,\n configuration: {\n guideId: contactMethod.body.guideId || params.guideId,\n },\n }\n );\n });\n\nexport const submit = (\n container: Container,\n contactMethod: ContactMethodType,\n transform?: (response: any) => SubmissionApiResult\n) =>\n post(container, contactMethod)\n .then((response) => (transform ? transform(response) : response))\n .then(({ ConfirmationText }: SubmissionApiResult) => ConfirmationText);\n\nexport const validate = (container: Container, contactMethod: ContactMethodType) =>\n post(container, contactMethod, true).then((result: ContactMethodApiResponse) => ({\n valid: result.Validation.IsValid,\n errors: result.Validation.Errors,\n errorTypes: result.Validation.ErrorTypes,\n }));\n\nexport const evaluate = (container: Container, contactMethod: ContactMethodType) =>\n post(container, contactMethod, true).then((result: ContactMethodApiResponse) =>\n FormBuilder.fromLegacyForm(contactMethod.id, result.ContactMethod.Form).get()\n );\n\nexport const complete = (container: Container, contactMethod: ContactMethodType) =>\n container.getAsync('matchingClient').then((matchingClient) => {\n matchingClient.completeContactMethod(contactMethod.id);\n });\n\nexport default function emailPlugin(container: Container) {\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\n platform.create({\n clientName: 'email.form',\n render: import('./email-form-component'),\n onEvaluate: (contactMethod) => evaluate(container, contactMethod),\n onValidate: (contactMethod) => validate(container, contactMethod),\n onSubmit: (contactMethod) => submit(container, contactMethod),\n onComplete: (contactMethod) => complete(container, contactMethod),\n });\n });\n}\n","import { FormReader } from '@telia-ace/widget-forms';\nimport { Container } from '@webprovisions/platform';\nimport { ContactMethodPlatform, defaultValidate } from '..';\nimport { defaultComplete } from '../email';\n\nconst popup = (\n title: string,\n settings: { [key: string]: any },\n formValues?: { [key: string]: any }\n) => {\n const { url, width, height } = settings;\n\n const queries: { [key: string]: any } = formValues ? formValues : {};\n\n const link = document.createElement('a');\n link.href = url;\n\n link.search\n .replace('?', '')\n .split('&')\n .forEach((part) => {\n const [key, value] = part.split('=');\n typeof value !== 'undefined' && (queries[key] = value);\n });\n\n link.search = Object.keys(queries)\n .map((key) => `${key}=${queries[key]}`)\n .join('&');\n\n window.open(link.href, title, `width=${width},height=${height}`);\n return '';\n};\n\nexport default function chatPopupPlugin(container: Container) {\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\n platform.create({\n clientName: 'chat.popup',\n render: 'email.form',\n handleClick: (contactMethod) => {\n const { title, body } = contactMethod;\n const { form, guideId, confirmationFallback, ...rest } = body;\n\n if (!form) {\n return (e) => {\n e.preventDefault();\n popup(title, rest);\n };\n }\n\n return () => {};\n },\n onValidate: (contactMethod) => defaultValidate(container, contactMethod),\n onComplete: (contactMethod) => defaultComplete(container, contactMethod),\n onSubmit: (contactMethod) => {\n const { title, body } = contactMethod;\n const { form, guideId, confirmationFallback, ...rest } = body;\n\n const formValues = new FormReader(form).export().values;\n\n popup(title, rest, formValues);\n\n return confirmationFallback;\n },\n });\n });\n}\n","import { Container } from '@webprovisions/platform';\nimport ContactMethodPlatform from '../platform';\n\nexport default function freeTextPlugin(container: Container) {\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\n platform.create({\n clientName: 'custom.freetext',\n render: import('./free-text-component'),\n });\n });\n}\n","import { Container } from '@webprovisions/platform';\nimport ContactMethodPlatform from '../platform';\n\nexport default function linkPlugin(container: Container) {\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\n platform.create({\n clientName: 'custom.link',\n render: import('./link-component'),\n });\n });\n}\n","import { Container } from '@webprovisions/platform';\nimport ContactMethodPlatform from '../platform';\n\nexport default function phonePlugin(container: Container) {\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\n platform.create({\n clientName: 'phone.text',\n render: import('./phone-component'),\n });\n });\n}\n","import { ComponentPlatform, ComponentResolver } from '@telia-ace/knowledge-widget-core';\nimport { Form } from '@telia-ace/widget-forms';\nimport { lock } from '@telia-ace/widget-utilities';\nimport { Container, EventSubscriptionCancellation, Widget } from '@webprovisions/platform';\nimport React, { lazy } from 'react';\nimport { defaultComplete, defaultEvaluate, defaultValidate } from './email';\nimport { ContactMethodProps } from './ui';\n\nexport type ReactComponentImport = Promise<{ default: React.FunctionComponent<any> }>;\n\nexport type Click = (e: React.MouseEvent, cm: ContactMethodProps) => void;\n\nexport type AdapterSettings = {\n clientName: string;\n render: string | ReactComponentImport;\n handleDescription?: (cm: ContactMethodProps) => Promise<string> | string;\n handleDisabled?: (cm: ContactMethodProps) => Promise<boolean> | boolean;\n handleClick?: (cm: ContactMethodProps) => Promise<Click> | Click;\n onEvaluate?: (cm: ContactMethodProps) => Promise<Form> | Form;\n onValidate?: (cm: ContactMethodProps) => Promise<ValidationResult> | ValidationResult;\n onSubmit?: (cm: ContactMethodProps) => Promise<string> | string;\n onComplete?: (cm: ContactMethodProps) => Promise<void> | void;\n};\n\nexport type ValidationResult = {\n errors?: { [key: string]: string };\n errorTypes?: { [key: string]: string };\n valid: boolean;\n};\n\nexport enum ContactMethodTrackTypes {\n ContactMethodValidate = 'contact-method-validate',\n ContactMethodComplete = 'contact-method-complete',\n}\n\nconst handleContactMethod = async (\n adapters: Map<string, AdapterSettings>,\n contactMethod: ContactMethodProps\n): Promise<ContactMethodProps> => {\n const adapter = adapters.get(contactMethod.clientName);\n let { description, disabled, onClick } = contactMethod;\n\n if (adapter) {\n const { handleClick, handleDescription, handleDisabled } = adapter;\n if (typeof handleClick === 'function') {\n onClick = await Promise.resolve(handleClick(contactMethod));\n }\n\n if (typeof handleDescription === 'function') {\n description = await Promise.resolve(handleDescription(contactMethod));\n }\n\n if (typeof handleDisabled === 'function') {\n disabled = await Promise.resolve(handleDisabled(contactMethod));\n }\n }\n\n return Promise.resolve({\n ...contactMethod,\n description,\n disabled,\n onClick,\n });\n};\n\nclass ContactMethodPlatform {\n private adapters: Map<string, AdapterSettings> = new Map();\n private subs: EventSubscriptionCancellation[] = [];\n\n static create(container: Container): Promise<ContactMethodPlatform> {\n return ComponentPlatform.getInstance(container).then((platform) => {\n return new ContactMethodPlatform(container, platform);\n });\n }\n\n constructor(private container: Container, private componentPlatform: ComponentPlatform) {\n if (componentPlatform) {\n const contactListComponent = componentPlatform\n .components()\n .ofType('contact-list')\n .select();\n contactListComponent.actions.watch('contact-list.fetched', async (input, next) => {\n const { contactMethods } = input;\n\n if (contactMethods) {\n const promises = Promise.all(\n contactMethods.map((cm: ContactMethodProps) =>\n handleContactMethod(this.adapters, cm)\n )\n );\n\n await Promise.resolve(promises).then((contactMethods) => {\n input.contactMethods = contactMethods;\n });\n }\n\n return next(input);\n });\n\n const guideComponent = componentPlatform.components().ofType('guide').select();\n guideComponent.actions.watch('guide.fetched', async (input, next) => {\n const { contactMethods } = input;\n\n if (contactMethods) {\n const promises = Promise.all(\n contactMethods.map((cm: ContactMethodProps) =>\n handleContactMethod(this.adapters, cm)\n )\n );\n\n await Promise.resolve(promises).then((contactMethods) => {\n input.contactMethods = contactMethods;\n });\n }\n\n return next(input);\n });\n guideComponent.actions.watch('guide.handover', async (input, next) => {\n const { handoverContactMethods } = input;\n\n if (handoverContactMethods) {\n const promises = Promise.all(\n handoverContactMethods.map((cm: ContactMethodProps) =>\n handleContactMethod(this.adapters, cm)\n )\n );\n\n await Promise.resolve(promises).then((handoverContactMethods) => {\n input.handoverContactMethods = handoverContactMethods;\n });\n }\n\n return next(input);\n });\n\n const contactMethodComponent = componentPlatform\n .components()\n .ofType('contact-method')\n .select();\n contactMethodComponent.actions.watch('contact-method.fetched', async (input, next) => {\n const { contactMethod } = input;\n\n if (contactMethod) {\n return handleContactMethod(this.adapters, contactMethod).then(\n (contactMethod) => {\n return next({ ...input, contactMethod });\n }\n );\n }\n\n return next(input);\n });\n }\n }\n\n static getInstance(\n container: Container,\n key: string = 'contactMethods'\n ): Promise<ContactMethodPlatform> {\n return lock(container)(() => {\n return container.getAsync(key).then((value: ContactMethodPlatform) => {\n let contactMethodPlatform = value;\n if (!contactMethodPlatform) {\n return ComponentPlatform.getInstance(container).then((components) => {\n contactMethodPlatform = new ContactMethodPlatform(container, components);\n container.registerAsync(key, () => contactMethodPlatform);\n return contactMethodPlatform;\n });\n }\n return contactMethodPlatform;\n });\n });\n }\n\n private track(data: any = {}, type: ContactMethodTrackTypes) {\n const { events } = this.container.get('$widget');\n events.dispatch('tracking:service-client-response', {\n type,\n data,\n });\n }\n\n complete(contactMethod: ContactMethodProps) {\n const { id, title, clientName, expanded, body } = contactMethod;\n this.track(\n { contactMethod: { id, title, expanded, type: clientName }, hasGuide: !!body.guideId },\n ContactMethodTrackTypes.ContactMethodComplete\n );\n\n const adapter = this.adapters.get(clientName);\n if (adapter && adapter.onComplete) {\n return adapter.onComplete(contactMethod);\n }\n }\n\n evaluate(contactMethod: ContactMethodProps): Promise<Form> {\n const { clientName } = contactMethod;\n const adapter = this.adapters.get(clientName);\n\n if (adapter && adapter.onEvaluate) {\n return Promise.resolve(adapter.onEvaluate(contactMethod));\n }\n\n return Promise.resolve(contactMethod.body.form);\n }\n\n validate(contactMethod: ContactMethodProps): Promise<ValidationResult> {\n const { id, title, clientName } = contactMethod;\n const adapter = this.adapters.get(clientName);\n\n if (adapter && adapter.onValidate) {\n return Promise.resolve(adapter.onValidate(contactMethod)).then((result) => {\n this.track(\n { contactMethod: { id, title, type: clientName }, isValid: result.valid },\n ContactMethodTrackTypes.ContactMethodValidate\n );\n const { events } = this.container.get('$widget') as Widget;\n events.dispatch('form:validated', { isValid: result.valid });\n return result;\n });\n }\n\n return Promise.resolve({ valid: true });\n }\n\n submit(contactMethod: ContactMethodProps): Promise<string> {\n const { clientName } = contactMethod;\n const adapter = this.adapters.get(clientName);\n\n if (adapter && adapter.onSubmit) {\n return Promise.resolve(adapter.onSubmit(contactMethod)).then((result) => {\n this.complete(contactMethod);\n return result;\n });\n }\n\n return Promise.resolve('');\n }\n\n create(settings: AdapterSettings) {\n const { clientName, render } = settings;\n this.adapters.set(clientName, {\n onValidate: (cm) => defaultValidate(this.container, cm),\n onEvaluate: (cm) => defaultEvaluate(this.container, cm),\n onComplete: (cm) => defaultComplete(this.container, cm),\n ...settings,\n });\n return this.container.getAsync('componentResolver').then((resolver: ComponentResolver) => {\n if (typeof render === 'string') {\n this.subs.push(resolver.registerAlias(clientName, render));\n } else {\n this.subs.push(\n resolver.registerComponent(\n clientName,\n lazy(() => render)\n )\n );\n }\n });\n }\n\n dispose() {\n this.subs.forEach((s) => s());\n }\n}\n\nexport default ContactMethodPlatform;\n","import { headingElement, Paragraph } from '@telia-ace/knowledge-widget-ui';\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nexport type Props = { html: string };\n\nconst Confirmation: React.SFC<Props> = (props: Props) => (\n <StyledParagraph {...props} className=\"humany-confirmation\" />\n);\n\nexport default Confirmation;\n\nconst StyledParagraph = styled(Paragraph)`\n ${headingElement(\n 'h1',\n css`\n font-weight: normal;\n font-size: ${(p) => p.theme.fonts?.medium};\n `\n )}\n`;\n","import { borderTabStyle, genericHtml, Html, linkTabStyle } from '@telia-ace/knowledge-widget-ui';\nimport styled from 'styled-components';\n\nexport default styled(Html)`\n ${genericHtml}\n font-weight: 300;\n line-height: 1.5em;\n button:focus {\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\n }\n\n a:focus {\n ${(p) => p.theme.accessibility?.isTabbing && linkTabStyle};\n }\n`;\n","import { Symbol } from '@telia-ace/knowledge-widget-core';\nimport {\n borderTabStyle,\n DispatchAction,\n HtmlParseInstruction,\n Link,\n StyledText,\n SymbolBadge,\n Typography,\n useComponent,\n useRouteData,\n} from '@telia-ace/knowledge-widget-ui';\nimport { createParams, formatUrl } from '@telia-ace/widget-utilities';\nimport React, { Suspense } from 'react';\nimport styled, { css } from 'styled-components';\nimport Description from './description';\n\nexport type ContactMethodType = {\n id: string;\n title: string;\n symbol?: Symbol;\n clientName: string;\n expanded: boolean;\n inline: boolean;\n body: { [key: string]: any };\n description?: string;\n confirmation?: string;\n disabled?: boolean;\n guideId?: string;\n};\n\nexport type Props = Merge<\n ContactMethodType,\n {\n className?: string;\n onClick?: (event: React.MouseEvent, properties: Props) => void;\n renderDefault?: (extraProps?: Partial<Props>) => any;\n htmlParseInstruction?: HtmlParseInstruction;\n href?: string;\n target?: string;\n disabled?: boolean;\n action?: (action: string, value: any) => void;\n dispatch?: DispatchAction;\n symbol?: Symbol;\n description?: string;\n confirmation?: string;\n guideId?: string;\n autoFocus?: boolean;\n }\n>;\n\nconst ContactMethod: React.FC<Props> = (props) => {\n const ResolvedComponent = useComponent(props.clientName);\n const {\n params: { contactCategory, guideCategory, phrase },\n } = useRouteData();\n\n if (typeof ResolvedComponent === 'undefined') {\n return null;\n }\n\n if (ResolvedComponent === null) {\n if (process.env.NODE_ENV !== 'production') {\n return (\n <NonResolvedContactMethodWrapper\n title={`client-name: ${props.clientName}, id: ${props.id}`}\n className=\"humany-non-resolved-contact-method\"\n >\n <Typography variant=\"h5\">Non resolved Contact Method type</Typography>\n </NonResolvedContactMethodWrapper>\n );\n }\n return null;\n }\n\n const renderLink = (extraProps: Partial<Props> = {}) => {\n const enhancedProps = { ...props, ...extraProps };\n const {\n id,\n title,\n clientName,\n symbol,\n inline,\n onClick = () => {},\n description,\n htmlParseInstruction,\n className,\n disabled,\n guideId,\n dispatch = () => {},\n expanded,\n } = enhancedProps;\n\n const linkProps = inline\n ? {\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key && event.key === 'Enter') {\n onClick(event as any, enhancedProps);\n if (!event.defaultPrevented) {\n !expanded && dispatch('expand', id);\n }\n }\n },\n onClick: (event: React.MouseEvent) => {\n onClick(event, enhancedProps);\n if (!event.defaultPrevented) {\n !expanded && dispatch('expand', id);\n }\n },\n }\n : {\n onClick: (event: React.MouseEvent) => onClick(event, enhancedProps),\n routeName: 'contact-method',\n params: createParams({\n contactCategory,\n guideId,\n guideCategory,\n phrase,\n contactMethod: id,\n uriName: formatUrl(title),\n }),\n };\n\n return (\n <StyledLink\n title={title}\n aria-label={title}\n className={className}\n disabled={disabled}\n description={description}\n data-client-name={clientName}\n {...extraProps}\n {...linkProps}\n >\n {symbol && <SymbolBadge symbol={symbol} />}\n {description ? (\n <div className=\"humany-contact-link-rich-content\">\n {<StyledTitle>{title}</StyledTitle>}\n {\n <Description\n html={description}\n htmlParseInstruction={htmlParseInstruction}\n />\n }\n </div>\n ) : (\n <StyledTitle>{title}</StyledTitle>\n )}\n </StyledLink>\n );\n };\n\n return props.expanded ? (\n <Suspense fallback={null}>\n <ResolvedComponent {...props} renderDefault={renderLink} />\n </Suspense>\n ) : (\n renderLink()\n );\n};\n\nexport default ContactMethod;\n\nexport const contactLink = css<{ description?: string }>`\n display: flex;\n padding: ${(p) => p.theme.sizes?.large};\n ${(p) => (!!p.description ? '' : 'align-items: center;')}\n text-decoration: none;\n span {\n display: inline-block;\n color: ${(p) => p.theme.colors?.text};\n }\n i {\n font-size: ${(p) => p.theme.fonts?.large};\n margin: 0 ${(p) => p.theme.sizes?.large} 0 0;\n min-height: ${(p) => p.theme.fonts?.large};\n min-width: ${(p) => p.theme.fonts?.large};\n line-height: ${(p) => p.theme.fonts?.large};\n display: inline-block;\n vertical-align: bottom;\n color: ${(p) => p.theme.colors?.text};\n }\n`;\n\nconst StyledTitle = styled(StyledText)`\n line-height: ${(p) => p.theme.fonts?.large};\n`;\n\nconst StyledLink = styled(Link)<any>`\n ${contactLink}\n\n &:focus {\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\n }\n`;\n\nconst NonResolvedContactMethodWrapper = styled.div`\n text-align: center;\n display: block;\n ${(p) => typeof p.theme.colors?.warning !== 'undefined' && `color: ${p.theme.colors?.warning};`}\n`;\n","import { DispatchAction, headingElement, ItemList, itemList } from '@telia-ace/knowledge-widget-ui';\nimport { appendClassNames } from '@telia-ace/widget-utilities';\nimport React, { ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\nimport ContactMethod, { ContactMethodType } from './contact-method';\n\nexport const contactItemList = css`\n ${itemList}\n\n > div {\n padding: ${(p) => p.theme.sizes?.large};\n\n ${headingElement(\n 'h1',\n css`\n margin: 0;\n `\n )}\n }\n > ul {\n &:not(:first-child) {\n border-top: ${(p) => p.theme.border};\n }\n\n > li {\n margin: 0;\n white-space: normal;\n\n > a {\n overflow: hidden;\n }\n\n &:first-child > a {\n border-radius: ${(p) => `${p.theme.borderRadius} ${p.theme.borderRadius} 0 0`};\n }\n\n &:last-child:not(:first-child) > a {\n border-radius: ${(p) => `0 0 ${p.theme.borderRadius} ${p.theme.borderRadius}`};\n }\n\n &:not(:last-child) {\n border-bottom: ${(p) => p.theme.border};\n }\n\n > div {\n padding: ${(p) => p.theme.sizes?.large};\n }\n }\n }\n\n @media (hover: hover) {\n a:hover {\n background-color: ${(p) => p.theme.colors?.accent};\n }\n }\n`;\n\nconst StyledItemList = styled(ItemList)<any>`\n ${contactItemList}\n`;\n\ntype Props = {\n contactMethods: ContactMethodType[];\n header?: string;\n className?: string;\n action?: (action: string, value?: any) => void;\n dispatch?: DispatchAction;\n children?: ReactNode;\n guideId?: string;\n};\n\nconst ContactList: React.SFC<Props> = ({\n contactMethods,\n children,\n guideId,\n dispatch,\n className = '',\n action = () => {},\n header = '',\n}) => {\n if (!contactMethods.length) {\n return null;\n }\n\n return (\n <StyledItemList\n header={header}\n className={appendClassNames(className, 'humany-contact-list')}\n items={contactMethods}\n renderItem={(cm: any) => (\n <li key={cm.id} data-contact-method={cm.id}>\n <ContactMethod {...cm} action={action} dispatch={dispatch} guideId={guideId} />\n </li>\n )}\n >\n {children}\n </StyledItemList>\n );\n};\n\nexport default ContactList;\n","import { FormComponent } from '@telia-ace/widget-forms';\nimport React from 'react';\nimport { ContactMethodProps } from '.';\n\n/**\n * Recursively find form component in schema\n * @param node Form schema\n * @param id actionKey of component to find\n */\nconst lookupComponent = (node: any, id: string): any => {\n if (node.actionKey === id) {\n return node;\n }\n\n if (!node.properties) {\n return null;\n }\n\n const keys = Object.keys(node.properties);\n\n let result;\n // tslint:disable-next-line:no-increment-decrement\n for (let i = 0; i < keys.length; i++) {\n result = lookupComponent(node.properties[keys[i]], id);\n\n if (result) {\n return result;\n }\n }\n\n return false;\n};\n\nconst Form: React.SFC<ContactMethodProps> = ({\n className,\n body: { form },\n id,\n action,\n dispatch,\n disabled,\n autoFocus,\n}) => {\n if (form && !disabled) {\n const { schema, layout, data } = form;\n const trigger = dispatch || action || (() => {});\n return (\n <FormComponent\n className={className}\n schema={schema}\n layout={layout}\n data={data}\n autoFocus={autoFocus}\n onChange={(event: any, data: any) => {\n const form = { schema, layout, data };\n if (event.toString() === 'submit') {\n trigger('submit', { id, form });\n } else {\n const formComponent = lookupComponent(schema, event);\n if (formComponent.evaluate) {\n trigger('evaluate', { id, form });\n } else {\n trigger('validate', { id, form });\n }\n }\n }}\n />\n );\n }\n\n return null;\n};\n\nexport default Form;\n","import { ComponentResolver } from '@telia-ace/knowledge-widget-core';\nimport { useContainer } from '@telia-ace/knowledge-widget-ui';\nimport { EventSubscriptionCancellation } from '@webprovisions/platform';\nimport { useEffect, useState } from 'react';\n\nconst useContactMethod = (clientName: string): any | null => {\n const [component, setComponent] = useState<any | null>(null);\n const container = useContainer();\n\n useEffect(() => {\n let unsubscribe: EventSubscriptionCancellation;\n container.getAsync('componentResolver').then((resolver: ComponentResolver) => {\n unsubscribe = resolver.registerResolver(clientName, (component) =>\n setComponent(component)\n );\n });\n\n return () => {\n if (unsubscribe) {\n unsubscribe();\n }\n };\n }, [clientName]);\n\n return component;\n};\n\nexport default useContactMethod;\n","import { Container } from '@webprovisions/platform';\nimport { ContactMethodPlatform, defaultComplete, defaultSubmit, defaultValidate } from '..';\n\nexport default function webServicePlugin(container: Container) {\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\n platform.create({\n clientName: 'custom.webservice',\n render: 'email.form',\n onValidate: (contactMethod) => defaultValidate(container, contactMethod),\n onComplete: (contactMethod) => defaultComplete(container, contactMethod),\n onSubmit: (contactMethod) =>\n defaultSubmit(container, contactMethod, (response) => {\n return {\n ...response,\n ConfirmationText: response.ResponseHtml,\n };\n }),\n });\n });\n}\n","import { FormReader } from '@telia-ace/widget-forms';\nimport { Container } from '@webprovisions/platform';\nimport { ContactMethodPlatform, defaultComplete, defaultValidate } from './contact-methods';\n\nexport type Callback = (\n settings: {\n [key: string]: any;\n },\n data?: {\n [key: string]: any;\n }\n) => Promise<string | void> | (string | void);\n\nexport const createSubmitAdapter = (\n container: Container,\n clientName: string,\n fn: Callback\n): Promise<void> => {\n return container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\n platform.create({\n clientName,\n render: 'email.form',\n handleClick: () => {\n return (e, cm) => {\n const {\n body: { form, guideId, confirmationFallback, ...rest },\n } = cm;\n if (!form) {\n e.preventDefault();\n fn(rest);\n }\n };\n },\n onValidate: (cm) => defaultValidate(container, cm),\n onComplete: (cm) => defaultComplete(container, cm),\n onSubmit: (cm) => {\n const {\n body: { form, guideId, confirmationFallback, ...rest },\n } = cm;\n const { values } = new FormReader(form).export();\n\n return Promise.resolve(fn(rest, values)).then((confirmation) => {\n return confirmation || confirmationFallback;\n });\n },\n });\n });\n};\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\nimport { Container } from '@webprovisions/platform';\nimport {\n ChatPopupPlugin,\n EmailFormPlugin,\n FreeTextPlugin,\n LinkPlugin,\n PhonePlugin,\n WebServicePlugin,\n} from '.';\n\n/**\n * Registers default Humany contact methods.\n */\nexport class DefaultContactMethodsPlugin extends Plugin {\n constructor(container: Container, settings: any) {\n super(container, settings);\n const implementation = this.widget.implementation;\n implementation.configure((config) => {\n config\n .plugin(EmailFormPlugin)\n .plugin(ChatPopupPlugin)\n .plugin(FreeTextPlugin)\n .plugin(PhonePlugin)\n .plugin(WebServicePlugin)\n .plugin(LinkPlugin);\n });\n }\n}\n"],"names":["defaultValidate","defaultComplete","defaultEvaluate","React","defaultSubmit","EmailFormPlugin","ChatPopupPlugin","FreeTextPlugin","PhonePlugin","WebServicePlugin","LinkPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"index2.js","sources":["../src/contact-methods/email/email-plugin.ts","../src/contact-methods/chat-popup/chat-popup-plugin.ts","../src/contact-methods/free-text/free-text-plugin.ts","../src/contact-methods/link/link-plugin.tsx","../src/contact-methods/phone/phone-plugin.ts","../src/contact-methods/platform.ts","../src/contact-methods/ui/confirmation.tsx","../src/contact-methods/ui/description.tsx","../src/contact-methods/ui/contact-method.tsx","../src/contact-methods/ui/contact-list.tsx","../src/contact-methods/ui/form.tsx","../src/contact-methods/ui/use-contact-method.ts","../src/contact-methods/web-service/web-service-plugin.ts","../src/create-adapter.ts","../src/default-contact-methods-plugin.ts"],"sourcesContent":["import {\r\n ContactMethodApiResponse,\r\n ServiceClient,\r\n SubmissionApiResult,\r\n} from '@telia-ace/knowledge-serviceclient';\r\nimport { FormBuilder, FormReader } from '@telia-ace/widget-forms';\r\nimport { RoutingService } from '@telia-ace/widget-routing';\r\nimport { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\nimport { ContactMethodType } from '../ui';\r\n\r\ntype Services = {\r\n matchingClient: ServiceClient;\r\n router: RoutingService;\r\n};\r\n\r\nconst post = (container: Container, contactMethod: ContactMethodType, validate = false) =>\r\n container.getManyAsync('matchingClient', 'router').then((services) => {\r\n const { formData } = new FormReader(contactMethod.body.form).export(validate);\r\n const { router, matchingClient } = services as Services;\r\n const { params } = router.getRouteData();\r\n\r\n return matchingClient.customRequest(\r\n `contactmethods/${contactMethod.id}${validate ? '/validatedwithpayload' : ''}`,\r\n 'POST',\r\n {\r\n body: formData,\r\n configuration: {\r\n guideId: contactMethod.body.guideId || params.guideId,\r\n },\r\n }\r\n );\r\n });\r\n\r\nexport const submit = (\r\n container: Container,\r\n contactMethod: ContactMethodType,\r\n transform?: (response: any) => SubmissionApiResult\r\n) =>\r\n post(container, contactMethod)\r\n .then((response) => (transform ? transform(response) : response))\r\n .then(({ ConfirmationText }: SubmissionApiResult) => ConfirmationText);\r\n\r\nexport const validate = (container: Container, contactMethod: ContactMethodType) =>\r\n post(container, contactMethod, true).then((result: ContactMethodApiResponse) => ({\r\n valid: result.Validation.IsValid,\r\n errors: result.Validation.Errors,\r\n errorTypes: result.Validation.ErrorTypes,\r\n }));\r\n\r\nexport const evaluate = (container: Container, contactMethod: ContactMethodType) =>\r\n post(container, contactMethod, true).then((result: ContactMethodApiResponse) =>\r\n FormBuilder.fromLegacyForm(contactMethod.id, result.ContactMethod.Form).get()\r\n );\r\n\r\nexport const complete = (container: Container, contactMethod: ContactMethodType) =>\r\n container.getAsync('matchingClient').then((matchingClient) => {\r\n matchingClient.completeContactMethod(contactMethod.id);\r\n });\r\n\r\nexport default function emailPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'email.form',\r\n render: import('./email-form-component'),\r\n onEvaluate: (contactMethod) => evaluate(container, contactMethod),\r\n onValidate: (contactMethod) => validate(container, contactMethod),\r\n onSubmit: (contactMethod) => submit(container, contactMethod),\r\n onComplete: (contactMethod) => complete(container, contactMethod),\r\n });\r\n });\r\n}\r\n","import { FormReader } from '@telia-ace/widget-forms';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultValidate } from '..';\r\nimport { defaultComplete } from '../email';\r\n\r\nconst popup = (\r\n title: string,\r\n settings: { [key: string]: any },\r\n formValues?: { [key: string]: any }\r\n) => {\r\n const { url, width, height } = settings;\r\n\r\n const queries: { [key: string]: any } = formValues ? formValues : {};\r\n\r\n const link = document.createElement('a');\r\n link.href = url;\r\n\r\n link.search\r\n .replace('?', '')\r\n .split('&')\r\n .forEach((part) => {\r\n const [key, value] = part.split('=');\r\n typeof value !== 'undefined' && (queries[key] = value);\r\n });\r\n\r\n link.search = Object.keys(queries)\r\n .map((key) => `${key}=${queries[key]}`)\r\n .join('&');\r\n\r\n window.open(link.href, title, `width=${width},height=${height}`);\r\n return '';\r\n};\r\n\r\nexport default function chatPopupPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'chat.popup',\r\n render: 'email.form',\r\n handleClick: (contactMethod) => {\r\n const { title, body } = contactMethod;\r\n const { form, guideId, confirmationFallback, ...rest } = body;\r\n\r\n if (!form) {\r\n return (e) => {\r\n e.preventDefault();\r\n popup(title, rest);\r\n };\r\n }\r\n\r\n return () => {};\r\n },\r\n onValidate: (contactMethod) => defaultValidate(container, contactMethod),\r\n onComplete: (contactMethod) => defaultComplete(container, contactMethod),\r\n onSubmit: (contactMethod) => {\r\n const { title, body } = contactMethod;\r\n const { form, guideId, confirmationFallback, ...rest } = body;\r\n\r\n const formValues = new FormReader(form).export().values;\r\n\r\n popup(title, rest, formValues);\r\n\r\n return confirmationFallback;\r\n },\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function freeTextPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.freetext',\r\n render: import('./free-text-component'),\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function linkPlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.link',\r\n render: import('./link-component'),\r\n });\r\n });\r\n}\r\n","import { Container } from '@webprovisions/platform';\r\nimport ContactMethodPlatform from '../platform';\r\n\r\nexport default function phonePlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'phone.text',\r\n render: import('./phone-component'),\r\n });\r\n });\r\n}\r\n","import { ComponentPlatform, ComponentResolver } from '@telia-ace/knowledge-widget-core';\r\nimport { Form } from '@telia-ace/widget-forms';\r\nimport { lock } from '@telia-ace/widget-utilities';\r\nimport { Container, EventSubscriptionCancellation, Widget } from '@webprovisions/platform';\r\nimport React, { lazy } from 'react';\r\nimport { defaultComplete, defaultEvaluate, defaultValidate } from './email';\r\nimport { ContactMethodProps } from './ui';\r\n\r\nexport type ReactComponentImport = Promise<{ default: React.FunctionComponent<any> }>;\r\n\r\nexport type Click = (e: React.MouseEvent, cm: ContactMethodProps) => void;\r\n\r\nexport type AdapterSettings = {\r\n clientName: string;\r\n render: string | ReactComponentImport;\r\n handleDescription?: (cm: ContactMethodProps) => Promise<string> | string;\r\n handleDisabled?: (cm: ContactMethodProps) => Promise<boolean> | boolean;\r\n handleClick?: (cm: ContactMethodProps) => Promise<Click> | Click;\r\n onEvaluate?: (cm: ContactMethodProps) => Promise<Form> | Form;\r\n onValidate?: (cm: ContactMethodProps) => Promise<ValidationResult> | ValidationResult;\r\n onSubmit?: (cm: ContactMethodProps) => Promise<string> | string;\r\n onComplete?: (cm: ContactMethodProps) => Promise<void> | void;\r\n};\r\n\r\nexport type ValidationResult = {\r\n errors?: { [key: string]: string };\r\n errorTypes?: { [key: string]: string };\r\n valid: boolean;\r\n};\r\n\r\nexport enum ContactMethodTrackTypes {\r\n ContactMethodValidate = 'contact-method-validate',\r\n ContactMethodComplete = 'contact-method-complete',\r\n}\r\n\r\nconst handleContactMethod = async (\r\n adapters: Map<string, AdapterSettings>,\r\n contactMethod: ContactMethodProps\r\n): Promise<ContactMethodProps> => {\r\n const adapter = adapters.get(contactMethod.clientName);\r\n let { description, disabled, onClick } = contactMethod;\r\n\r\n if (adapter) {\r\n const { handleClick, handleDescription, handleDisabled } = adapter;\r\n if (typeof handleClick === 'function') {\r\n onClick = await Promise.resolve(handleClick(contactMethod));\r\n }\r\n\r\n if (typeof handleDescription === 'function') {\r\n description = await Promise.resolve(handleDescription(contactMethod));\r\n }\r\n\r\n if (typeof handleDisabled === 'function') {\r\n disabled = await Promise.resolve(handleDisabled(contactMethod));\r\n }\r\n }\r\n\r\n return Promise.resolve({\r\n ...contactMethod,\r\n description,\r\n disabled,\r\n onClick,\r\n });\r\n};\r\n\r\nclass ContactMethodPlatform {\r\n private adapters: Map<string, AdapterSettings> = new Map();\r\n private subs: EventSubscriptionCancellation[] = [];\r\n\r\n static create(container: Container): Promise<ContactMethodPlatform> {\r\n return ComponentPlatform.getInstance(container).then((platform) => {\r\n return new ContactMethodPlatform(container, platform);\r\n });\r\n }\r\n\r\n constructor(private container: Container, private componentPlatform: ComponentPlatform) {\r\n if (componentPlatform) {\r\n const contactListComponent = componentPlatform\r\n .components()\r\n .ofType('contact-list')\r\n .select();\r\n contactListComponent.actions.watch('contact-list.fetched', async (input, next) => {\r\n const { contactMethods } = input;\r\n\r\n if (contactMethods) {\r\n const promises = Promise.all(\r\n contactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((contactMethods) => {\r\n input.contactMethods = contactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n\r\n const guideComponent = componentPlatform.components().ofType('guide').select();\r\n guideComponent.actions.watch('guide.fetched', async (input, next) => {\r\n const { contactMethods } = input;\r\n\r\n if (contactMethods) {\r\n const promises = Promise.all(\r\n contactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((contactMethods) => {\r\n input.contactMethods = contactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n guideComponent.actions.watch('guide.handover', async (input, next) => {\r\n const { handoverContactMethods } = input;\r\n\r\n if (handoverContactMethods) {\r\n const promises = Promise.all(\r\n handoverContactMethods.map((cm: ContactMethodProps) =>\r\n handleContactMethod(this.adapters, cm)\r\n )\r\n );\r\n\r\n await Promise.resolve(promises).then((handoverContactMethods) => {\r\n input.handoverContactMethods = handoverContactMethods;\r\n });\r\n }\r\n\r\n return next(input);\r\n });\r\n\r\n const contactMethodComponent = componentPlatform\r\n .components()\r\n .ofType('contact-method')\r\n .select();\r\n contactMethodComponent.actions.watch('contact-method.fetched', async (input, next) => {\r\n const { contactMethod } = input;\r\n\r\n if (contactMethod) {\r\n return handleContactMethod(this.adapters, contactMethod).then(\r\n (contactMethod) => {\r\n return next({ ...input, contactMethod });\r\n }\r\n );\r\n }\r\n\r\n return next(input);\r\n });\r\n }\r\n }\r\n\r\n static getInstance(\r\n container: Container,\r\n key: string = 'contactMethods'\r\n ): Promise<ContactMethodPlatform> {\r\n return lock(container)(() => {\r\n return container.getAsync(key).then((value: ContactMethodPlatform) => {\r\n let contactMethodPlatform = value;\r\n if (!contactMethodPlatform) {\r\n return ComponentPlatform.getInstance(container).then((components) => {\r\n contactMethodPlatform = new ContactMethodPlatform(container, components);\r\n container.registerAsync(key, () => contactMethodPlatform);\r\n return contactMethodPlatform;\r\n });\r\n }\r\n return contactMethodPlatform;\r\n });\r\n });\r\n }\r\n\r\n private track(data: any = {}, type: ContactMethodTrackTypes) {\r\n const { events } = this.container.get('$widget');\r\n events.dispatch('tracking:service-client-response', {\r\n type,\r\n data,\r\n });\r\n }\r\n\r\n complete(contactMethod: ContactMethodProps) {\r\n const { id, title, clientName, expanded, body } = contactMethod;\r\n this.track(\r\n { contactMethod: { id, title, expanded, type: clientName }, hasGuide: !!body.guideId },\r\n ContactMethodTrackTypes.ContactMethodComplete\r\n );\r\n\r\n const adapter = this.adapters.get(clientName);\r\n if (adapter && adapter.onComplete) {\r\n return adapter.onComplete(contactMethod);\r\n }\r\n }\r\n\r\n evaluate(contactMethod: ContactMethodProps): Promise<Form> {\r\n const { clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onEvaluate) {\r\n return Promise.resolve(adapter.onEvaluate(contactMethod));\r\n }\r\n\r\n return Promise.resolve(contactMethod.body.form);\r\n }\r\n\r\n validate(contactMethod: ContactMethodProps): Promise<ValidationResult> {\r\n const { id, title, clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onValidate) {\r\n return Promise.resolve(adapter.onValidate(contactMethod)).then((result) => {\r\n this.track(\r\n { contactMethod: { id, title, type: clientName }, isValid: result.valid },\r\n ContactMethodTrackTypes.ContactMethodValidate\r\n );\r\n const { events } = this.container.get('$widget') as Widget;\r\n events.dispatch('form:validated', { isValid: result.valid });\r\n return result;\r\n });\r\n }\r\n\r\n return Promise.resolve({ valid: true });\r\n }\r\n\r\n submit(contactMethod: ContactMethodProps): Promise<string> {\r\n const { clientName } = contactMethod;\r\n const adapter = this.adapters.get(clientName);\r\n\r\n if (adapter && adapter.onSubmit) {\r\n return Promise.resolve(adapter.onSubmit(contactMethod)).then((result) => {\r\n this.complete(contactMethod);\r\n return result;\r\n });\r\n }\r\n\r\n return Promise.resolve('');\r\n }\r\n\r\n create(settings: AdapterSettings) {\r\n const { clientName, render } = settings;\r\n this.adapters.set(clientName, {\r\n onValidate: (cm) => defaultValidate(this.container, cm),\r\n onEvaluate: (cm) => defaultEvaluate(this.container, cm),\r\n onComplete: (cm) => defaultComplete(this.container, cm),\r\n ...settings,\r\n });\r\n return this.container.getAsync('componentResolver').then((resolver: ComponentResolver) => {\r\n if (typeof render === 'string') {\r\n this.subs.push(resolver.registerAlias(clientName, render));\r\n } else {\r\n this.subs.push(\r\n resolver.registerComponent(\r\n clientName,\r\n lazy(() => render)\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n dispose() {\r\n this.subs.forEach((s) => s());\r\n }\r\n}\r\n\r\nexport default ContactMethodPlatform;\r\n","import { headingElement, Paragraph } from '@telia-ace/knowledge-widget-ui';\r\nimport * as React from 'react';\r\nimport styled, { css } from 'styled-components';\r\n\r\nexport type Props = { html: string };\r\n\r\nconst Confirmation: React.SFC<Props> = (props: Props) => (\r\n <StyledParagraph {...props} className=\"humany-confirmation\" />\r\n);\r\n\r\nexport default Confirmation;\r\n\r\nconst StyledParagraph = styled(Paragraph)`\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-weight: normal;\r\n font-size: ${(p) => p.theme.fonts?.medium};\r\n `\r\n )}\r\n`;\r\n","import { borderTabStyle, genericHtml, Html, linkTabStyle } from '@telia-ace/knowledge-widget-ui';\r\nimport styled from 'styled-components';\r\n\r\nexport default styled(Html)`\r\n ${genericHtml}\r\n font-weight: 300;\r\n line-height: 1.5em;\r\n button:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\r\n }\r\n\r\n a:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && linkTabStyle};\r\n }\r\n`;\r\n","import { Symbol } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n borderTabStyle,\r\n DispatchAction,\r\n HtmlParseInstruction,\r\n Link,\r\n StyledText,\r\n SymbolBadge,\r\n Typography,\r\n useComponent,\r\n useRouteData,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport { createParams, formatUrl } from '@telia-ace/widget-utilities';\r\nimport React, { Suspense } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport Description from './description';\r\n\r\nexport type ContactMethodType = {\r\n id: string;\r\n title: string;\r\n symbol?: Symbol;\r\n clientName: string;\r\n expanded: boolean;\r\n inline: boolean;\r\n body: { [key: string]: any };\r\n description?: string;\r\n confirmation?: string;\r\n disabled?: boolean;\r\n guideId?: string;\r\n};\r\n\r\nexport type Props = Merge<\r\n ContactMethodType,\r\n {\r\n className?: string;\r\n onClick?: (event: React.MouseEvent, properties: Props) => void;\r\n renderDefault?: (extraProps?: Partial<Props>) => any;\r\n htmlParseInstruction?: HtmlParseInstruction;\r\n href?: string;\r\n target?: string;\r\n disabled?: boolean;\r\n action?: (action: string, value: any) => void;\r\n dispatch?: DispatchAction;\r\n symbol?: Symbol;\r\n description?: string;\r\n confirmation?: string;\r\n guideId?: string;\r\n autoFocus?: boolean;\r\n }\r\n>;\r\n\r\nconst ContactMethod: React.FC<Props> = (props) => {\r\n const ResolvedComponent = useComponent(props.clientName);\r\n const {\r\n params: { contactCategory, guideCategory, phrase },\r\n } = useRouteData();\r\n\r\n if (typeof ResolvedComponent === 'undefined') {\r\n return null;\r\n }\r\n\r\n if (ResolvedComponent === null) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n return (\r\n <NonResolvedContactMethodWrapper\r\n title={`client-name: ${props.clientName}, id: ${props.id}`}\r\n className=\"humany-non-resolved-contact-method\"\r\n >\r\n <Typography variant=\"h5\">Non resolved Contact Method type</Typography>\r\n </NonResolvedContactMethodWrapper>\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n const renderLink = (extraProps: Partial<Props> = {}) => {\r\n const enhancedProps = { ...props, ...extraProps };\r\n const {\r\n id,\r\n title,\r\n clientName,\r\n symbol,\r\n inline,\r\n onClick = () => {},\r\n description,\r\n htmlParseInstruction,\r\n className,\r\n disabled,\r\n guideId,\r\n dispatch = () => {},\r\n expanded,\r\n } = enhancedProps;\r\n\r\n const linkProps = inline\r\n ? {\r\n onKeyDown: (event: React.KeyboardEvent) => {\r\n if (event.key && event.key === 'Enter') {\r\n onClick(event as any, enhancedProps);\r\n if (!event.defaultPrevented) {\r\n !expanded && dispatch('expand', id);\r\n }\r\n }\r\n },\r\n onClick: (event: React.MouseEvent) => {\r\n onClick(event, enhancedProps);\r\n if (!event.defaultPrevented) {\r\n !expanded && dispatch('expand', id);\r\n }\r\n },\r\n }\r\n : {\r\n onClick: (event: React.MouseEvent) => onClick(event, enhancedProps),\r\n routeName: 'contact-method',\r\n params: createParams({\r\n contactCategory,\r\n guideId,\r\n guideCategory,\r\n phrase,\r\n contactMethod: id,\r\n uriName: formatUrl(title),\r\n }),\r\n };\r\n\r\n return (\r\n <StyledLink\r\n title={title}\r\n aria-label={title}\r\n className={className}\r\n disabled={disabled}\r\n description={description}\r\n data-client-name={clientName}\r\n {...extraProps}\r\n {...linkProps}\r\n >\r\n {symbol && <SymbolBadge symbol={symbol} />}\r\n {description ? (\r\n <div className=\"humany-contact-link-rich-content\">\r\n {<StyledTitle>{title}</StyledTitle>}\r\n {\r\n <Description\r\n html={description}\r\n htmlParseInstruction={htmlParseInstruction}\r\n />\r\n }\r\n </div>\r\n ) : (\r\n <StyledTitle>{title}</StyledTitle>\r\n )}\r\n </StyledLink>\r\n );\r\n };\r\n\r\n return props.expanded ? (\r\n <Suspense fallback={null}>\r\n <ResolvedComponent {...props} renderDefault={renderLink} />\r\n </Suspense>\r\n ) : (\r\n renderLink()\r\n );\r\n};\r\n\r\nexport default ContactMethod;\r\n\r\nexport const contactLink = css<{ description?: string }>`\r\n display: flex;\r\n padding: ${(p) => p.theme.sizes?.large};\r\n ${(p) => (!!p.description ? '' : 'align-items: center;')}\r\n text-decoration: none;\r\n span {\r\n display: inline-block;\r\n color: ${(p) => p.theme.colors?.text};\r\n }\r\n i {\r\n font-size: ${(p) => p.theme.fonts?.large};\r\n margin: 0 ${(p) => p.theme.sizes?.large} 0 0;\r\n min-height: ${(p) => p.theme.fonts?.large};\r\n min-width: ${(p) => p.theme.fonts?.large};\r\n line-height: ${(p) => p.theme.fonts?.large};\r\n display: inline-block;\r\n vertical-align: bottom;\r\n color: ${(p) => p.theme.colors?.text};\r\n }\r\n`;\r\n\r\nconst StyledTitle = styled(StyledText)`\r\n line-height: ${(p) => p.theme.fonts?.large};\r\n`;\r\n\r\nconst StyledLink = styled(Link)<any>`\r\n ${contactLink}\r\n\r\n &:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && borderTabStyle};\r\n }\r\n`;\r\n\r\nconst NonResolvedContactMethodWrapper = styled.div`\r\n text-align: center;\r\n display: block;\r\n ${(p) => typeof p.theme.colors?.warning !== 'undefined' && `color: ${p.theme.colors?.warning};`}\r\n`;\r\n","import { DispatchAction, headingElement, ItemList, itemList } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { ReactNode } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport ContactMethod, { ContactMethodType } from './contact-method';\r\n\r\nexport const contactItemList = css`\r\n ${itemList}\r\n\r\n > div {\r\n padding: ${(p) => p.theme.sizes?.large};\r\n\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n margin: 0;\r\n `\r\n )}\r\n }\r\n > ul {\r\n &:not(:first-child) {\r\n border-top: ${(p) => p.theme.border};\r\n }\r\n\r\n > li {\r\n margin: 0;\r\n white-space: normal;\r\n\r\n > a {\r\n overflow: hidden;\r\n }\r\n\r\n &:first-child > a {\r\n border-radius: ${(p) => `${p.theme.borderRadius} ${p.theme.borderRadius} 0 0`};\r\n }\r\n\r\n &:last-child:not(:first-child) > a {\r\n border-radius: ${(p) => `0 0 ${p.theme.borderRadius} ${p.theme.borderRadius}`};\r\n }\r\n\r\n &:not(:last-child) {\r\n border-bottom: ${(p) => p.theme.border};\r\n }\r\n\r\n > div {\r\n padding: ${(p) => p.theme.sizes?.large};\r\n }\r\n }\r\n }\r\n\r\n @media (hover: hover) {\r\n a:hover {\r\n background-color: ${(p) => p.theme.colors?.accent};\r\n }\r\n }\r\n`;\r\n\r\nconst StyledItemList = styled(ItemList)<any>`\r\n ${contactItemList}\r\n`;\r\n\r\ntype Props = {\r\n contactMethods: ContactMethodType[];\r\n header?: string;\r\n className?: string;\r\n action?: (action: string, value?: any) => void;\r\n dispatch?: DispatchAction;\r\n children?: ReactNode;\r\n itemRenderer?: (cm: any, props: any) => JSX.Element;\r\n guideId?: string;\r\n};\r\n\r\nconst ContactList: React.SFC<Props> = ({\r\n contactMethods,\r\n children,\r\n guideId,\r\n dispatch,\r\n className = '',\r\n itemRenderer,\r\n action = () => {},\r\n header = '',\r\n}) => {\r\n if (!contactMethods.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledItemList\r\n header={header}\r\n className={appendClassNames(className, 'humany-contact-list')}\r\n items={contactMethods}\r\n renderItem={\r\n itemRenderer\r\n ? (cm: any) => (\r\n <li key={cm.id} data-contact-method={cm.id}>\r\n {itemRenderer(cm, { action, dispatch, guideId })}\r\n </li>\r\n )\r\n : (cm: any) => (\r\n <li key={cm.id} data-contact-method={cm.id}>\r\n <ContactMethod\r\n {...cm}\r\n action={action}\r\n dispatch={dispatch}\r\n guideId={guideId}\r\n />\r\n </li>\r\n )\r\n }\r\n >\r\n {children}\r\n </StyledItemList>\r\n );\r\n};\r\n\r\nexport default ContactList;\r\n","import { FormComponent } from '@telia-ace/widget-forms';\r\nimport React from 'react';\r\nimport { ContactMethodProps } from '.';\r\n\r\n/**\r\n * Recursively find form component in schema\r\n * @param node Form schema\r\n * @param id actionKey of component to find\r\n */\r\nconst lookupComponent = (node: any, id: string): any => {\r\n if (node.actionKey === id) {\r\n return node;\r\n }\r\n\r\n if (!node.properties) {\r\n return null;\r\n }\r\n\r\n const keys = Object.keys(node.properties);\r\n\r\n let result;\r\n // tslint:disable-next-line:no-increment-decrement\r\n for (let i = 0; i < keys.length; i++) {\r\n result = lookupComponent(node.properties[keys[i]], id);\r\n\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst Form: React.SFC<ContactMethodProps> = ({\r\n className,\r\n body: { form },\r\n id,\r\n action,\r\n dispatch,\r\n disabled,\r\n autoFocus,\r\n}) => {\r\n if (form && !disabled) {\r\n const { schema, layout, data, meta } = form;\r\n const trigger = dispatch || action || (() => {});\r\n return (\r\n <FormComponent\r\n className={className}\r\n schema={schema}\r\n layout={layout}\r\n data={data}\r\n autoFocus={autoFocus}\r\n onChange={(event: any, data: any) => {\r\n const form = { schema, layout, data, meta };\r\n if (event.toString() === 'submit') {\r\n trigger('submit', { id, form });\r\n } else {\r\n const formComponent = lookupComponent(schema, event);\r\n if (formComponent.evaluate) {\r\n trigger('evaluate', { id, form });\r\n } else {\r\n trigger('validate', { id, form });\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default Form;\r\n","import { ComponentResolver } from '@telia-ace/knowledge-widget-core';\r\nimport { useContainer } from '@telia-ace/knowledge-widget-ui';\r\nimport { EventSubscriptionCancellation } from '@webprovisions/platform';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst useContactMethod = (clientName: string): any | null => {\r\n const [component, setComponent] = useState<any | null>(null);\r\n const container = useContainer();\r\n\r\n useEffect(() => {\r\n let unsubscribe: EventSubscriptionCancellation;\r\n container.getAsync('componentResolver').then((resolver: ComponentResolver) => {\r\n unsubscribe = resolver.registerResolver(clientName, (component) =>\r\n setComponent(component)\r\n );\r\n });\r\n\r\n return () => {\r\n if (unsubscribe) {\r\n unsubscribe();\r\n }\r\n };\r\n }, [clientName]);\r\n\r\n return component;\r\n};\r\n\r\nexport default useContactMethod;\r\n","import { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultComplete, defaultSubmit, defaultValidate } from '..';\r\n\r\nexport default function webServicePlugin(container: Container) {\r\n container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName: 'custom.webservice',\r\n render: 'email.form',\r\n onValidate: (contactMethod) => defaultValidate(container, contactMethod),\r\n onComplete: (contactMethod) => defaultComplete(container, contactMethod),\r\n onSubmit: (contactMethod) =>\r\n defaultSubmit(container, contactMethod, (response) => {\r\n return {\r\n ...response,\r\n ConfirmationText: response.ResponseHtml,\r\n };\r\n }),\r\n });\r\n });\r\n}\r\n","import { FormReader } from '@telia-ace/widget-forms';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ContactMethodPlatform, defaultComplete, defaultValidate } from './contact-methods';\r\n\r\nexport type Callback = (\r\n settings: {\r\n [key: string]: any;\r\n },\r\n data?: {\r\n [key: string]: any;\r\n }\r\n) => Promise<string | void> | (string | void);\r\n\r\nexport const createSubmitAdapter = (\r\n container: Container,\r\n clientName: string,\r\n fn: Callback\r\n): Promise<void> => {\r\n return container.getAsync('contactMethods').then((platform: ContactMethodPlatform) => {\r\n platform.create({\r\n clientName,\r\n render: 'email.form',\r\n handleClick: () => {\r\n return (e, cm) => {\r\n const {\r\n body: { form, guideId, confirmationFallback, ...rest },\r\n } = cm;\r\n if (!form) {\r\n e.preventDefault();\r\n fn(rest);\r\n }\r\n };\r\n },\r\n onValidate: (cm) => defaultValidate(container, cm),\r\n onComplete: (cm) => defaultComplete(container, cm),\r\n onSubmit: (cm) => {\r\n const {\r\n body: { form, guideId, confirmationFallback, ...rest },\r\n } = cm;\r\n const { values } = new FormReader(form).export();\r\n\r\n return Promise.resolve(fn(rest, values)).then((confirmation) => {\r\n return confirmation || confirmationFallback;\r\n });\r\n },\r\n });\r\n });\r\n};\r\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport {\r\n ChatPopupPlugin,\r\n EmailFormPlugin,\r\n FreeTextPlugin,\r\n LinkPlugin,\r\n PhonePlugin,\r\n WebServicePlugin,\r\n} from '.';\r\n\r\n/**\r\n * Registers default Humany contact methods.\r\n */\r\nexport class DefaultContactMethodsPlugin extends Plugin {\r\n constructor(container: Container, settings: any) {\r\n super(container, settings);\r\n const implementation = this.widget.implementation;\r\n implementation.configure((config) => {\r\n config\r\n .plugin(EmailFormPlugin)\r\n .plugin(ChatPopupPlugin)\r\n .plugin(FreeTextPlugin)\r\n .plugin(PhonePlugin)\r\n .plugin(WebServicePlugin)\r\n .plugin(LinkPlugin);\r\n });\r\n }\r\n}\r\n"],"names":["defaultValidate","defaultComplete","defaultEvaluate","React","defaultSubmit","EmailFormPlugin","ChatPopupPlugin","FreeTextPlugin","PhonePlugin","WebServicePlugin","LinkPlugin"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"link-component.js","sources":["../src/contact-methods/link/link-component.tsx"],"sourcesContent":["import { appendClassNames } from '@telia-ace/widget-utilities';\nimport * as React from 'react';\nimport { ContactMethodProps } from '../ui';\n\nconst LinkComponent: React.SFC<ContactMethodProps> = ({\n className,\n body,\n renderDefault = () => {},\n}) => {\n const { uri, target, protocol } = body;\n\n return renderDefault({\n target,\n className: appendClassNames(className, 'humany-contact-method-link'),\n href: `${protocol}${uri}`,\n });\n};\n\nexport default LinkComponent;\n"],"names":[],"mappings":";AAIA,MAAM,gBAA+C,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA,gBAAgB,MAAM;AAAA,EAAC;AAAA,MACrB;AACI,QAAA,EAAE,KAAK,QAAQ,aAAa;AAElC,SAAO,cAAc;AAAA,IACjB;AAAA,IACA,WAAW,iBAAiB,WAAW,4BAA4B;AAAA,IACnE,MAAM,GAAG,WAAW;AAAA,EAAA,CACvB;AACL;;"}
1
+ {"version":3,"file":"link-component.js","sources":["../src/contact-methods/link/link-component.tsx"],"sourcesContent":["import { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport * as React from 'react';\r\nimport { ContactMethodProps } from '../ui';\r\n\r\nconst LinkComponent: React.SFC<ContactMethodProps> = ({\r\n className,\r\n body,\r\n renderDefault = () => {},\r\n}) => {\r\n const { uri, target, protocol } = body;\r\n\r\n return renderDefault({\r\n target,\r\n className: appendClassNames(className, 'humany-contact-method-link'),\r\n href: `${protocol}${uri}`,\r\n });\r\n};\r\n\r\nexport default LinkComponent;\r\n"],"names":[],"mappings":";AAIA,MAAM,gBAA+C,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA,gBAAgB,MAAM;AAAA,EAAC;AAAA,MACrB;AACI,QAAA,EAAE,KAAK,QAAQ,aAAa;AAElC,SAAO,cAAc;AAAA,IACjB;AAAA,IACA,WAAW,iBAAiB,WAAW,4BAA4B;AAAA,IACnE,MAAM,GAAG,WAAW;AAAA,EAAA,CACvB;AACL;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"phone-component.js","sources":["../src/contact-methods/phone/phone-component.tsx"],"sourcesContent":["import { appendClassNames } from '@telia-ace/widget-utilities';\nimport * as React from 'react';\nimport { ContactMethodProps } from '../ui';\n\nconst PhoneComponent: React.SFC<ContactMethodProps> = ({\n className,\n body: { phoneNumber },\n renderDefault = () => {},\n}) => {\n return renderDefault({\n title: phoneNumber,\n className: appendClassNames(className, 'humany-contact-method-phone'),\n href: `tel: ${phoneNumber}`,\n });\n};\n\nexport default PhoneComponent;\n"],"names":[],"mappings":";AAIA,MAAM,iBAAgD,CAAC;AAAA,EACnD;AAAA,EACA,MAAM,EAAE;AAAA,EACR,gBAAgB,MAAM;AAAA,EAAC;AAAA,MACrB;AACF,SAAO,cAAc;AAAA,IACjB,OAAO;AAAA,IACP,WAAW,iBAAiB,WAAW,6BAA6B;AAAA,IACpE,MAAM,QAAQ;AAAA,EAAA,CACjB;AACL;;"}
1
+ {"version":3,"file":"phone-component.js","sources":["../src/contact-methods/phone/phone-component.tsx"],"sourcesContent":["import { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport * as React from 'react';\r\nimport { ContactMethodProps } from '../ui';\r\n\r\nconst PhoneComponent: React.SFC<ContactMethodProps> = ({\r\n className,\r\n body: { phoneNumber },\r\n renderDefault = () => {},\r\n}) => {\r\n return renderDefault({\r\n title: phoneNumber,\r\n className: appendClassNames(className, 'humany-contact-method-phone'),\r\n href: `tel: ${phoneNumber}`,\r\n });\r\n};\r\n\r\nexport default PhoneComponent;\r\n"],"names":[],"mappings":";AAIA,MAAM,iBAAgD,CAAC;AAAA,EACnD;AAAA,EACA,MAAM,EAAE;AAAA,EACR,gBAAgB,MAAM;AAAA,EAAC;AAAA,MACrB;AACF,SAAO,cAAc;AAAA,IACjB,OAAO;AAAA,IACP,WAAW,iBAAiB,WAAW,6BAA6B;AAAA,IACpE,MAAM,QAAQ;AAAA,EAAA,CACjB;AACL;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/knowledge-widget-adapters",
3
- "version": "1.0.16",
3
+ "version": "1.0.19",
4
4
  "description": "ACE knowledge adapters for ACE widgets.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -24,11 +24,11 @@
24
24
  },
25
25
  "sideEffects": false,
26
26
  "dependencies": {
27
- "@telia-ace/knowledge-serviceclient": "^1.0.4",
28
- "@telia-ace/knowledge-widget-core": "^1.0.9",
29
- "@telia-ace/knowledge-widget-ui": "^1.0.13",
30
- "@telia-ace/widget-forms": "^1.0.11",
31
- "@telia-ace/widget-routing": "^1.0.8",
27
+ "@telia-ace/knowledge-serviceclient": "^1.0.5",
28
+ "@telia-ace/knowledge-widget-core": "^1.0.12",
29
+ "@telia-ace/knowledge-widget-ui": "^1.0.16",
30
+ "@telia-ace/widget-forms": "^1.0.13",
31
+ "@telia-ace/widget-routing": "^1.0.10",
32
32
  "@telia-ace/widget-utilities": "^1.0.2",
33
33
  "@webprovisions/platform": "^1.1.2"
34
34
  },
@@ -40,5 +40,5 @@
40
40
  "@types/react": "^16.8.0",
41
41
  "@types/styled-components": "^5.1.7"
42
42
  },
43
- "gitHead": "a8bf8e5c1ca56a4749cd8ec47f756b13431394b4"
43
+ "gitHead": "1ebcbf462e3e5d7ba00dfce49f11b5936c7da555"
44
44
  }