@telia-ace/knowledge-widget-adapters 1.0.18 → 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.
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 {
|
package/dist/index2.js.map
CHANGED
|
@@ -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 {\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 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 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={(cm: any) => (\r\n <li key={cm.id} data-contact-method={cm.id}>\r\n <ContactMethod {...cm} action={action} dispatch={dispatch} guideId={guideId} />\r\n </li>\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 } = 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 };\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
|
+
{"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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telia-ace/knowledge-widget-adapters",
|
|
3
|
-
"version": "1.0.
|
|
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.
|
|
28
|
-
"@telia-ace/knowledge-widget-core": "^1.0.
|
|
29
|
-
"@telia-ace/knowledge-widget-ui": "^1.0.
|
|
30
|
-
"@telia-ace/widget-forms": "^1.0.
|
|
31
|
-
"@telia-ace/widget-routing": "^1.0.
|
|
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": "
|
|
43
|
+
"gitHead": "1ebcbf462e3e5d7ba00dfce49f11b5936c7da555"
|
|
44
44
|
}
|