@microsoft/omnichannel-chat-widget 0.1.0-main.3d1c026 → 0.1.0-main.488d6f1
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/README.md +235 -0
- package/lib/cjs/assets/Audios.js +8 -0
- package/lib/cjs/assets/Icons.js +28 -0
- package/lib/cjs/common/Constants.js +2 -0
- package/lib/cjs/common/contextDataStore/DataStoreManager.js +14 -0
- package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
- package/lib/cjs/common/telemetry/TelemetryConstants.js +5 -1
- package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +26 -37
- package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
- package/lib/cjs/components/footerstateful/FooterStateful.js +3 -3
- package/lib/cjs/components/headerstateful/HeaderStateful.js +12 -3
- package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +11 -7
- package/lib/cjs/components/livechatwidget/common/endChat.js +65 -53
- package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
- package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +16 -13
- package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +20 -3
- package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +23 -22
- package/lib/cjs/components/livechatwidget/common/startChat.js +72 -26
- package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +29 -12
- package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
- package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
- package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +28 -11
- package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +10 -4
- package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
- package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
- package/lib/cjs/contexts/common/ConversationState.js +3 -2
- package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +2 -0
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +2 -1
- package/lib/cjs/contexts/createReducer.js +13 -0
- package/lib/cjs/controller/componentController.js +2 -2
- package/lib/esm/assets/Audios.js +1 -0
- package/lib/esm/assets/Icons.js +11 -0
- package/lib/esm/common/Constants.js +2 -0
- package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
- package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +5 -1
- package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +24 -36
- package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
- package/lib/esm/components/footerstateful/FooterStateful.js +3 -3
- package/lib/esm/components/headerstateful/HeaderStateful.js +13 -4
- package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +11 -9
- package/lib/esm/components/livechatwidget/common/endChat.js +63 -48
- package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
- package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +14 -12
- package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +18 -3
- package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +22 -22
- package/lib/esm/components/livechatwidget/common/startChat.js +67 -22
- package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +28 -12
- package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
- package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
- package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +26 -10
- package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +8 -4
- package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
- package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
- package/lib/esm/contexts/common/ConversationState.js +3 -2
- package/lib/esm/contexts/common/LiveChatWidgetActionType.js +2 -0
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +2 -1
- package/lib/esm/contexts/createReducer.js +13 -0
- package/lib/esm/controller/componentController.js +2 -2
- package/lib/types/assets/Audios.d.ts +1 -0
- package/lib/types/assets/Icons.d.ts +11 -0
- package/lib/types/common/Constants.d.ts +1 -0
- package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
- package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +4 -0
- package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +4 -1
- package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
- package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
- package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
- package/lib/types/components/livechatwidget/common/startChat.d.ts +1 -1
- package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
- package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +3 -1
- package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
- package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
- package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
- package/lib/types/contexts/common/ConversationState.d.ts +3 -2
- package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
- package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +3 -1
- package/package.json +2 -2
- package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
- package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
- package/lib/cjs/assets/icons/audioIcon.svg +0 -6
- package/lib/cjs/assets/icons/blankIcon.svg +0 -6
- package/lib/cjs/assets/icons/excelIcon.svg +0 -6
- package/lib/cjs/assets/icons/imageIcon.svg +0 -6
- package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
- package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
- package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
- package/lib/cjs/assets/icons/videoIcon.svg +0 -6
- package/lib/cjs/assets/icons/visioIcon.svg +0 -6
- package/lib/cjs/assets/icons/wordIcon.svg +0 -6
- package/lib/esm/assets/assets.d.js +0 -0
- package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
- package/lib/esm/assets/icons/archiveIcon.svg +0 -3
- package/lib/esm/assets/icons/audioIcon.svg +0 -6
- package/lib/esm/assets/icons/blankIcon.svg +0 -6
- package/lib/esm/assets/icons/excelIcon.svg +0 -6
- package/lib/esm/assets/icons/imageIcon.svg +0 -6
- package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
- package/lib/esm/assets/icons/pdfIcon.svg +0 -6
- package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
- package/lib/esm/assets/icons/videoIcon.svg +0 -6
- package/lib/esm/assets/icons/visioIcon.svg +0 -6
- package/lib/esm/assets/icons/wordIcon.svg +0 -6
package/README.md
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Omnichannel Live Chat Widget UI Components
|
|
2
|
+
|
|
3
|
+
 [](https://badge.fury.io/js/%40microsoft%2Fomnichannel-chat-components.svg) \
|
|
4
|
+
 [](https://badge.fury.io/js/%40microsoft%2Fomnichannel-chat-widget.svg) 
|
|
5
|
+
|
|
6
|
+
[@microsoft/omnichannel-chat-widget](https://www.npmjs.com/package/@microsoft/omnichannel-chat-widget) is a React-based UI component library which allows you to build your own live chat widget experience using [@microsoft/omnichannel-chat-sdk](https://www.npmjs.com/package/@microsoft/omnichannel-chat-sdk).
|
|
7
|
+
|
|
8
|
+
## Table of Contents
|
|
9
|
+
|
|
10
|
+
1. [Introduction](#introduction)
|
|
11
|
+
1. [Installation](#installation)
|
|
12
|
+
1. [Example Usage](#example-usage)
|
|
13
|
+
1. [Components](#components)
|
|
14
|
+
1. [Telemetry](#telemetry)
|
|
15
|
+
1. [Features](#features)
|
|
16
|
+
|
|
17
|
+
## Introduction
|
|
18
|
+
|
|
19
|
+
Omnichannel Live Chat Widget UI Components offers a re-usable component-based library to help create a custom chat widget that can be connected to the Dynamics 365 Customer Service experience.
|
|
20
|
+
|
|
21
|
+
For more information about Live Chat Widget, see [here](https://docs.microsoft.com/en-us/dynamics365/customer-service/set-up-chat-widget).
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
```powershell
|
|
26
|
+
npm i @microsoft/omnichannel-chat-sdk
|
|
27
|
+
npm i @microsoft/omnichannel-chat-widget
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
or
|
|
31
|
+
|
|
32
|
+
```powershell
|
|
33
|
+
yarn add @microsoft/omnichannel-chat-sdk
|
|
34
|
+
yarn add @microsoft/omnichannel-chat-widget
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The repo also contains the ```@microsoft/omnichannel-chat-components``` package, which is a collection of UI components. The ```@microsoft/omnichannel-chat-widget``` package is an integration of the Chat SDK and the UI components. To install the UI components separately, do
|
|
38
|
+
|
|
39
|
+
```powershell
|
|
40
|
+
npm i @microsoft/omnichannel-chat-components
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
or
|
|
44
|
+
|
|
45
|
+
```powershell
|
|
46
|
+
yarn add @microsoft/omnichannel-chat-components
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Example Usage
|
|
50
|
+
|
|
51
|
+
The basic example below takes in the ```<LiveChatWidget/>``` component along with the Chat SDK to create a customized Omnichannel chat widget.
|
|
52
|
+
> :warning: The Chat SDK has to be **_initialized_** before being passed in.
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
import * as React from "react";
|
|
56
|
+
|
|
57
|
+
import { LiveChatWidget } from "@microsoft/omnichannel-chat-widget";
|
|
58
|
+
import { OmnichannelChatSDK } from "@microsoft/omnichannel-chat-sdk";
|
|
59
|
+
import ReactDOM from "react-dom";
|
|
60
|
+
//Below version numbers will help us to troubleshoot issues with specific package
|
|
61
|
+
import { version as chatSdkVersion } from "@microsoft/omnichannel-chat-sdk/package.json";
|
|
62
|
+
import { version as chatWidgetVersion } from "../package.json";
|
|
63
|
+
import { version as chatComponentVersion } from "@microsoft/omnichannel-chat-components/package.json";
|
|
64
|
+
|
|
65
|
+
const render = async () => {
|
|
66
|
+
const omnichannelConfig = {
|
|
67
|
+
orgId: "00000000-0000-0000-0000-000000000000", // dummy config
|
|
68
|
+
orgUrl: "https://www.org-url.com", // dummy config
|
|
69
|
+
widgetId: "00000000-0000-0000-0000-000000000000" // dummy config
|
|
70
|
+
};
|
|
71
|
+
const chatSDK = new OmnichannelChatSDK(omnichannelConfig);
|
|
72
|
+
await chatSDK.initialize(); // mandatory
|
|
73
|
+
const chatConfig = await chatSDK.getLiveChatConfig();
|
|
74
|
+
const liveChatWidgetProps = {
|
|
75
|
+
styleProps: {
|
|
76
|
+
generalStyles: {
|
|
77
|
+
width: "700px",
|
|
78
|
+
height: "800px"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
headerProps: {
|
|
82
|
+
controlProps: {
|
|
83
|
+
hideMinimizeButton: true
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
chatSDK: chatSDK, // mandatory
|
|
87
|
+
chatConfig: chatConfig, // mandatory
|
|
88
|
+
telemetryConfig: { //mandatory
|
|
89
|
+
orgId: omnichannelConfig.orgId,
|
|
90
|
+
orgUrl: omnichannelConfig.orgUrl,
|
|
91
|
+
appId: omnichannelConfig.widgetId,
|
|
92
|
+
OCChatSDKVersion: chatSdkVersion,
|
|
93
|
+
chatComponentVersion: chatComponentVersion,
|
|
94
|
+
chatWidgetVersion: chatWidgetVersion
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
ReactDOM.render(
|
|
99
|
+
<LiveChatWidget {...liveChatWidgetProps}/>,
|
|
100
|
+
document.getElementById("my-container")
|
|
101
|
+
);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
render();
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
A sample widget can be found in this repo [here](https://github.com/microsoft/omnichannel-chat-widget/tree/main/chat-widget/sample). To build it, do ```yarn build-sample``` or ```yarn build-sample:dev``` from project root.
|
|
108
|
+
|
|
109
|
+
## Components
|
|
110
|
+
|
|
111
|
+
### Stateless UI Components
|
|
112
|
+
|
|
113
|
+
These are components that are included in the ```@microsoft/omnichannel-chat-components``` package.
|
|
114
|
+
|
|
115
|
+
| Component | Usage | Interface |
|
|
116
|
+
| ----- | -------- | ----- |
|
|
117
|
+
| CallingContainerPane | The container for voice and video feature in the chat widget | [ICallingContainerProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/callingcontainer/interfaces/ICallingContainerProps.ts) |
|
|
118
|
+
| ChatButton | The button that appears on the user's portal that is designed to be the entry point for the user to initate chat | [IChatButtonProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/chatbutton/interfaces/IChatButtonProps.ts) |
|
|
119
|
+
| CommandButton | A customizable button component that can be injected to the header and/or footer | [ICommandButtonProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/common/interfaces/ICommandButtonProps.ts)|
|
|
120
|
+
| ConfirmationPane | The default pane used when the Header close button is launched | [IConfirmationPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/confirmationpane/interfaces/IConfirmationPaneProps.ts) |
|
|
121
|
+
| Footer | The bottom container of the chat containing the download transcript, notification sound and email transcript buttons by default. | [IFooterProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/footer/interfaces/IFooterProps.ts) |
|
|
122
|
+
| Header | The top container of the chat containing the default minimize, close and title of the chat widget | [IHeaderProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/header/interfaces/IHeaderProps.ts) |
|
|
123
|
+
| InputValidationPane | A pop-up input pane with validation. In the default widget this is used as part of [EmailTranscriptPane](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/emailtranscriptpanestateful/interfaces/IEmailTranscriptPaneProps.ts) | [IInputValidationPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/inputvalidationpane/interfaces/IInputValidationPaneProps.ts) |
|
|
124
|
+
| LoadingPane | The default pane used after the chat button is clicked and before the chat loads completely | [ILoadingPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/loadingpane/interfaces/ILoadingPaneProps.ts) |
|
|
125
|
+
| OutOfOfficeHoursPane | The pane that is displayed when the chat is outside of operating hours set on admin side | [IOOOHPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/outofofficehourspane/interfaces/IOOOHPaneProps.ts) |
|
|
126
|
+
| PostChatSurveyPane | The pane that holds the [Customer Voice](https://dynamics.microsoft.com/en-us/customer-voice/overview/) survey which would be used by the customer to input their chat experience, provide user ratings etc. It uses an IFrame to render the survey URL fetched from `getPostChatSurveyContext` call from [OmniChannel ChatSDK](https://github.com/microsoft/omnichannel-chat-sdk#get-postchat-survey). | [IPostChatSurveyPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/postchatsurveypane/interfaces/IPostChatSurveyPaneProps.ts) |
|
|
127
|
+
| PreChatSurveyPane | The pane that holds the form which would be used by the customer to input helpful information for using the Support Chat before starting up the Chat Process. Makes use of [AdaptiveCards](https://adaptivecards.io/) | [IPreChatSurveyPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/prechatsurveypane/interfaces/IPreChatSurveyPaneProps.ts) |
|
|
128
|
+
| ProactiveChatSurveyPane | A pane that holds more information than a normal chat button and can be configured to proactively pop up | [IProactiveChatPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/proactivechatpane/interfaces/IProactiveChatPaneProps.ts) |
|
|
129
|
+
| ReconnectChatPane | The pane that shows up when the customer is re-connecting to the chat to add additional conversation | [IReconnectChatPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/reconnectchatpane/interfaces/IReconnectChatPaneProps.ts) |
|
|
130
|
+
|
|
131
|
+
> :warning: Because the components extend Microsoft's [Fluent UI](https://developer.microsoft.com/en-us/fluentui#/) components, the base interface for all the ```styleProps``` in the above table is [IStyle](https://github.com/microsoft/fluentui/blob/master/packages/merge-styles/src/IStyle.ts), which extends the [IRawStyleBase](https://docs.microsoft.com/en-us/javascript/api/merge-styles/irawstylebase?view=office-ui-fabric-react-latest) interface, which is the most useful reference.
|
|
132
|
+
|
|
133
|
+
### Stateful Components
|
|
134
|
+
|
|
135
|
+
| Component | Default Usage | Interface |
|
|
136
|
+
| ----- | -------- | ----- |
|
|
137
|
+
| LiveChatWidget | The default widget that stitches the UI components with Chat SDK | [ILiveChatWidgetProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/livechatwidget/interfaces/ILiveChatWidgetProps.ts) |
|
|
138
|
+
|
|
139
|
+
Some of the interfaces listed in the Stateless table have Stateful counterparts defined in the ```@microsoft/omnichannel-chat-widget``` package. For example, [IConfirmationPaneStatefulProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulProps.ts) extends [IConfirmationPaneProps](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-components/src/components/confirmationpane/interfaces/IConfirmationPaneProps.ts) with additional attributes that only makes sense in the stateful context.
|
|
140
|
+
|
|
141
|
+
### Default Props
|
|
142
|
+
|
|
143
|
+
For a list of all default props used in the default stateful widget, please see [here](https://github.com/microsoft/omnichannel-chat-widget/blob/main/chat-widget/src/components/livechatwidget/common/defaultProps/dummyDefaultProps.ts). If you want to change a default prop, you need to explicitly set it and parse the object as the argument to ```<LiveChatWidget/>```
|
|
144
|
+
|
|
145
|
+
### Custom Components
|
|
146
|
+
|
|
147
|
+
There are two ways to custom the components provided in the library - 1) Replacing components using ComponentOverrides, and 2) Adding custom components in header and footer.
|
|
148
|
+
|
|
149
|
+
#### ComponentOverrides
|
|
150
|
+
|
|
151
|
+
Most sub-components and the default panes provided can be overriden. Components have "componentOverrides" as part of props interface, which consists of ReactNodes or strings for each part of the component. For example, the "ProactiveChatPane" component has a close button, and the close button can be overriden by creating a custom react node and setting it to the "closeButton" attribute of "componentOverrides" interface that is part of the props.
|
|
152
|
+
|
|
153
|
+
```js
|
|
154
|
+
const customButton = (
|
|
155
|
+
<button style={{
|
|
156
|
+
background: "green",
|
|
157
|
+
height: "80px",
|
|
158
|
+
margin: "30px 15px 0 0",
|
|
159
|
+
padding: "10px",
|
|
160
|
+
width: "160px"
|
|
161
|
+
}}>
|
|
162
|
+
This is a custom button
|
|
163
|
+
</button>
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
const liveChatWidgetProps = {
|
|
167
|
+
proactiveChatPaneProps: {
|
|
168
|
+
componentOverrides: {
|
|
169
|
+
closeButton: customButton
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### Custom Components in Header and Footer
|
|
176
|
+
|
|
177
|
+
Header's and Footer's child components consist of three parts:
|
|
178
|
+
|
|
179
|
+
1. "leftGroup" - adding child components at the left of the Header/Footer
|
|
180
|
+
1. "middleGroup" - adding child components in the middle of the Header/Footer
|
|
181
|
+
1. "rightGroup" - adding child components at the right of the Header/Footer
|
|
182
|
+
|
|
183
|
+
By default Header has the header icon and title on the left and minimize and close buttons on the right, and Footer has Download Transcript and Email Transcript buttons on the left and audio notification button on the right. These components can be overriden with [ComponentOverrides](#ComponentOverrides). In addition, other custom child components can be added to both Header and Footer by creating custom react nodes and adding them to attributes "leftGroup", "middleGroup" or "rightGroup" of "controlProps".
|
|
184
|
+
|
|
185
|
+
```js
|
|
186
|
+
const buttonStyleProps: IButtonStyles = {
|
|
187
|
+
root: {
|
|
188
|
+
color: "blue",
|
|
189
|
+
height: 25,
|
|
190
|
+
width: 25,
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const calendarIcon: IIconProps = { iconName: "Calendar" };
|
|
195
|
+
const calendarIconButton = <IconButton
|
|
196
|
+
key="calendarIconButton"
|
|
197
|
+
iconProps={calendarIcon}
|
|
198
|
+
styles={buttonStyleProps}
|
|
199
|
+
title="Calendar">
|
|
200
|
+
</IconButton>;
|
|
201
|
+
|
|
202
|
+
const emojiIcon: IIconProps = { iconName: "Emoji2" };
|
|
203
|
+
const emojiIconButton = <IconButton
|
|
204
|
+
key="emojiIconButton"
|
|
205
|
+
iconProps={emojiIcon}
|
|
206
|
+
styles={buttonStyleProps}
|
|
207
|
+
title="Sentiment">
|
|
208
|
+
</IconButton>;
|
|
209
|
+
|
|
210
|
+
const uploadIcon: IIconProps = { iconName: "Upload" };
|
|
211
|
+
const uploadIconButton = <IconButton
|
|
212
|
+
key="uploadIconButton"
|
|
213
|
+
iconProps={uploadIcon}
|
|
214
|
+
styles={buttonStyleProps}
|
|
215
|
+
title="Upload">
|
|
216
|
+
</IconButton>;
|
|
217
|
+
|
|
218
|
+
const customizedFooterProp: IFooterProps = {
|
|
219
|
+
controlProps: {
|
|
220
|
+
leftGroup: { children: [uploadIconButton] },
|
|
221
|
+
middleGroup: { children: [calendarIconButton] },
|
|
222
|
+
rightGroup: { children: [emojiIconButton] }
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
> :pushpin: Note that [WebChat hooks](https://github.com/microsoft/BotFramework-WebChat/blob/main/docs/HOOKS.md) can also be used in any custom components.
|
|
228
|
+
|
|
229
|
+
## See Also
|
|
230
|
+
|
|
231
|
+
[Telemetry](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Telemetry.md)\
|
|
232
|
+
[Create LCW widget with Webpack5 and TypeScript](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/BuildingUsingWebpack5.md)\
|
|
233
|
+
[Omnichannel Features](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/Features.md)\
|
|
234
|
+
[How to Add Visual Regression Tests](https://github.com/microsoft/omnichannel-chat-widget/blob/main/docs/VisualRegressionTestingGuide.md)\
|
|
235
|
+
[Security](https://github.com/microsoft/omnichannel-chat-widget/blob/main/SECURITY.md)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.NewMessageNotificationSoundBase64 = void 0;
|
|
7
|
+
const NewMessageNotificationSoundBase64 = "data:audio/mpeg;base64,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0rlIUnJlGQpRBEtCcG6zF7JKWFk2UR4nALwGqXKtYouCKfOcxZdb9fN7v9kbuitnYwADd4/2tAAoy8zDRoQneMhEwy2AjKB6xlpUcdNxCu6ETljCEY10OdK5SFJyZRkKUQRLQnBusxeySlhZNlEeJwC8BqlyrWKLginznMWXW/Xze7/ZG7or2iIK3+1sgAD0p+KqlpFbwoDMvBAEYeenYGsCFzhe3JgqDoVYtsDhixLnXfEdFGhEzUwxBAHa6iF0LuT4W0tszkvwB6B6zNyJBPTrQY5lQX2or9G0RBW/2tkAAelPxVUtIreFAZl4IAjDz07A1gQucL25MFQdCrFtgcMWJc674joo0ImamGIIA7XUQuhdyfC2ltmcl+APQPWZuRIJ6daDHMqC+1FfoGh1ERN5n/60ADdOliyF5yshWlHYqWneWxIkiFcSW5M3M1jr9kXtq4oXDDg4NnSAJu//+5IAw4ACwBhTe1h6TlgDCm9rD0nKXF1Hre3pMUuLqPW9vSYzTSyNOJMxS1Ep2/O4IDFrapSwJOf3t+/1////+0OoiJvM//WgAbp0sWQvOVkK0o7FS07y2JEkQriS3Jm5msdfsi9tXFC4YcHBs6QBN3maaWRpxJmKWolO353BAYtbVKWBJz+9v3+vewkq/7WgAATSMoCBDCRFBICRMuIYuSmEBJ5IEi0XxA56mxJ5NP4QxJcvl3vxPpZKhXHO4sjg1l8TycewFQ8O1cAaq63HxBQutc2rewkq/7WgAATSMoCBDCRFBICRMuIYuSmEBJ5IEi0XxA56mxJ5NP4QxJcvl3vxPpZKhXHO4sjg1l8TycewFQ8O1cAaq63HxBQutc2o3rAD3+2oAAGCfSVgNCxBAe2IQlFNGND6kpgquVYxKhqRSFYdzwcp8CjjLtNxoUB6zJxGS31ErCAtFdHj0azBhSpL//////////////////////////////////////////////////////////////////////////////////////uSANeAAm0X1Hs4wkxKIvqPZxhJiWBjR63t6TEsDGj1vb0m///////////////////////////////////////////////////////////////////////////////3rAD3+2oAAGCfSVgNCxBAe2IQlFNGND6kpgquVYxKhqRSFYdzwcp8CjjLtNxoUB6zJxGS31ErCAtFdHj0azBhSpK+wkq/7WgAASwBygOhdwKivAdAqcHGACcKkzawRcdFR2M4nMZ4QYZ+6PWIc6FS2o+aWaDEa3GApbDuFhKYd0oovsJKv+1oAAEsAcoDoXcCorwHQKnBxgAnCpM2sEXHRUdjOJzGeEGGfuj1iHOhUtqPmlmgxGtxgKWw7hYSmHdKKL7CS9/tQAABvBYcsow9BRJcwBwEizwDX0IGnZz+5SnLOXTvf3jGoBVlsf3HKOXqki3XsvABktTfH//////////////////////////////////////////////////////////////////////////////////////////////////7kgD/gAXiGNJrGHpMQcMaTWMPSYgAWUen7ecxAAso9P285v///////////////////////////////////////////////////////////////////////////////////////////////////////////////77CS9/tQAABvBYcsow9BRJcwBwEizwDX0IGnZz+5SnLOXTvf3jGoBVlsf3HKOXqki3XsvABktTfGbwEG720AAAflahxWtTVMcKEEs5rjqxISAOjCL97vw5N1Pvc1XB0RRPCk5pspYKPVv0tgk1qHDSObwEG720AAAflahxWtTVMcKEEs5rjqxISAOjCL97vw5N1Pvc1XB0RRPCk5pspYKPVv0tgk1qHDSO/skrfbUAAAc4qRFcEADJh2wITwoFE7zfkoRwgxbHL/ztc3jyemuWVpHUDElKscnC5WHDSMdf/////////////////////////////////////////////////////////////////////////////////////////////////////+5IA/4AGqBdSa1hiTjiC6k1rDEnHCF1DrOWJOOELqHWcsSf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////f2SVvtqAAAOcVIiuCABkw7YEJ4UCid5vyUI4QYtjl/52ubx5PTXLK0jqBiSlWOThcrDhpGOpsgQrtJAAABl1nCY5dwwnawgLC3D2x/RGM+gi+FvDOV0lPg0qhm4yIhVKq8v93/pJ5UZmyBCu0kAAAGXWcJjl3DCdrCAsLcPbH9EYz6CL4W8M5XSU+DSqGbjIiFUqry/3f+knlRkv9CI29tAAAFHxlpwlZDA/QGQhIDxFQkBISBIe//2u1sfaioIgPA0hh7hV+/6kGiemv////////////////////////////////////////////////////////////////////////////////////////////////////////////uSAP+ABxUXUetZWk41ouo9aytJxlhbP6xhJzDLC2f1jCTm//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v9CI29tAAAFHxlpwlZDA/QGQhIDxFQkBISBIe//2u1sfaioIgPA0hh7hV+/6kGiemr/SlP9bQAABdoF1qAFywAQBQTMgVOB/XtIADaNjGdJnhDkv1cos1GpzWas8NPf9wkzV/pSn+toAAAu0C61AC5YAIAoJmQKnA/r2kABtGxjOkzwhyX6uUWajU5rNWeGnv+4SZom0KKusgAAAFplGchOwKjJy3AzyZ6qlw6ENtwfw/ftDKoJeJ9D6v53//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kAD/gAdEFlFp+UnOMQLKLT8pOcY0WUes5Mc4xoso9ZyY5/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////m0KKusgAAAFplGchOwKjJy3AzyZ6qlw6ENtwfw/ftDKoJeJ9D6v52/0pXbWgAAAc7ADtq2CEKYgFOiCV6tsn6BQq+qG5vvO6pQpGJ639lHv9KV21oAAAHOwA7atghCmIBToglerbJ+gUKvqhub7zuqUKRiet/ZR3awSrJ4AAd0/jX1MAaFiAJKIDjhGj7gkcsHX+d5Uz57V1bT36Ylf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kgD/gAg0DU/p+Rk+J4Gp/T8jJ8UAWUesZEcwoAso9YyI5v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3awSrJ4AAd0/jX1MAaFiAJKIDjhGj7gkcsHX+d5Uz57V1bT36YlZdSlaLIAAABva4xDJr7qELgHoTpIQioeVVYCmcjLuL0FrhQjLqUrRZAAAAN7XGIZNfdQhcA9CdJCEVDyqrAUzkZdxegtcKESbUpTWiAAAAfSvOQg4JhIcxEm3DZXsiwvKT8v8zrsdX/p/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+5IA/4AIghbOYxkRzCZC2cxjIjmEdCU/pecEsI6Ep/S84Jb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5tSlNaIAAAB9K85CDgmEhzESbcNleyLC8pPy/zOux1f+kIlgIocHFAAAA/fsh1j8dMLBDM4jPVMOCggkZrPrKtkOOCX6AiWAihwcUAAAD9+yHWPx0wsEMziM9Uw4KCCRms+sq2Q44JfoCskDN5gBwAAAP3jeSgDXYABRUdScti0IEw0XbxoI7P9P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////uSAP+ACKoJ0Gn5wSwhQToNPzglhHglMefnBKCPBKY8/" + "OCU//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////hWSBm8wA4AAAH7xvJQBrsAAoqOpOWxaECYaLt40Edn+lHhABJh3tAAAAp44rCHDmcsYd4yIYRK4zjpDNHYsu8T5ApaAhaJNTHOhd2iP5NRIeBYHI63gyPCACTDvaAAABTxxWEOHM5Yw7xkQwiVxnHSGaOxZd4nyBS0BC0SamOdC7tEfyaiQ8CwOR1vBjbtdYxXicOI0COLSEeEVIyiD5Kgv5kJdZZpUX/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7kgD/gAeNCE55+cEoIKEJzz84JQa8PS3s4ebo14elvZw83f////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////m3a6xivE4cRoEcWkI8IqRlEHyVBfzIS6yzSogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+5IA/4ALFQlIoY95KhshKRQx7yVAAAEuAAAAIAAAJcAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw=";
|
|
8
|
+
exports.NewMessageNotificationSoundBase64 = NewMessageNotificationSoundBase64;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.WordIcon = exports.VisioIcon = exports.VideoIcon = exports.PowerpointIcon = exports.PDFIcon = exports.OneNoteIcon = exports.ImageIcon = exports.ExcelIcon = exports.BlankIcon = exports.AudioIcon = exports.ArchiveIcon = void 0;
|
|
7
|
+
const ArchiveIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDQ4IDIwNDgiIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiPg0KPHBhdGggZD0iTTE3OTIgMHEyNyAwIDUwIDEwdDQwIDI3IDI4IDQxIDEwIDUwdjQ4MHEwIDQ1LTkgNzd0LTI0IDU4LTMxIDQ2LTMxIDQwLTIzIDQ0LTEwIDU1djk5MnEwIDI3LTEwIDUwdC0yNyA0MC00MSAyOC01MCAxMEgyNTZWMGgxNTM2ek02NDAgMTI4djM4NGgyNTZWMTI4SDY0MHptMTAyNCA4MDBxMC0zMS05LTU0dC0yNC00NC0zMS00MS0zMS00NS0yMy01OC0xMC03OFYxMjhoLTUxMnY1MTJINzY4djEyOEg2NDBWNjQwSDUxMlYxMjhIMzg0djE3OTJoMzg0di0xMjhoMTI4djEyOGg3NjhWOTI4em0xMjgtODAwaC0xMjh2NDgwcTAgMjQgNCA0MnQxMyAzMyAyMCAyOSAyNyAzMnExNS0xNyAyNi0zMXQyMC0zMCAxMy0zMyA1LTQyVjEyOHpNNjQwIDg5NmgxMjh2MTI4SDY0MFY4OTZ6bTAgMjU2aDEyOHYxMjhINjQwdi0xMjh6bTAgMjU2aDEyOHYxMjhINjQwdi0xMjh6bTEyOCAyNTZ2MTI4SDY0MHYtMTI4aDEyOHptMC03NjhWNzY4aDEyOHYxMjhINzY4em0wIDI1NnYtMTI4aDEyOHYxMjhINzY4em0wIDI1NnYtMTI4aDEyOHYxMjhINzY4em0wIDI1NnYtMTI4aDEyOHYxMjhINzY4eiIgLz4NCjwvc3ZnPg==";
|
|
8
|
+
exports.ArchiveIcon = ArchiveIcon;
|
|
9
|
+
const AudioIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0xNzkyIDE0MDhxMCA2Mi0yOSAxMDl0LTc2IDgwLTEwNCA1MC0xMTEgMTdxLTU0IDAtMTExLTE3dC0xMDMtNDktNzYtODAtMzAtMTEwcTAtNjEgMjktMTA5dDc2LTgwIDEwNC01MCAxMTEtMTdxNTEgMCAxMDAgMTJ0OTIgMzlWMjI2TDc2OCA0NTB2MTIxNHEwIDYyLTI5IDEwOXQtNzYgODAtMTA0IDUwLTExMSAxN3EtNTQgMC0xMTEtMTd0LTEwMy00OS03Ni04MC0zMC0xMTBxMC02MSAyOS0xMDl0NzYtODAgMTA0LTUwIDExMS0xN3E1MSAwIDEwMCAxMnQ5MiAzOVYzNTBMMTc5MiA2MnYxMzQ2eiIgLz4NCjwvc3ZnPg==";
|
|
10
|
+
exports.AudioIcon = AudioIcon;
|
|
11
|
+
const BlankIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik01NDkgMGgxMjQzdjE3NTVsLTI5MyAyOTNIMjU2VjI5M0w1NDkgMHptMTExNSAxNzAxVjEyOEg2MDNMMzg0IDM0N3YxNTczaDEwNjFsMjE5LTIxOXoiIC8+DQo8L3N2Zz4=";
|
|
12
|
+
exports.BlankIcon = BlankIcon;
|
|
13
|
+
const ExcelIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNMjYxIDE0MjRoMTg5cTItNCAxMi0yM3QyNS00NSAyOS01NSAyOS01MyAyMy00MSAxMC0xN3EyNyA1OSA2MCAxMTh0NjUgMTE2aDE4N2wtMjA5LTMzOSAyMDUtMzMzSDcwN3EtMzEgNTctNjAgMTE0dC02MyAxMTJxLTI5LTU3LTU3LTExM3QtNTctMTEzSDI3OWwxOTkgMzM1LTIxNyAzMzd6bTM3OSA0OTZoMTI4MFY1MTJoLTI1NnEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTBWMTI4SDY0MHYzODRoMzk3cTI0IDAgNDQgOXQzNyAyNSAyNSAzNiA5IDQ1djkyMnEwIDI0LTkgNDR0LTI1IDM3LTM2IDI1LTQ1IDlINjQwdjI1NnptNjQwLTEwMjRWNzY4aDUxMnYxMjhoLTUxMnptMCAyNTZ2LTEyOGg1MTJ2MTI4aC01MTJ6bTAgMjU2di0xMjhoNTEydjEyOGgtNTEyeiIgLz4NCjwvc3ZnPg==";
|
|
14
|
+
exports.ExcelIcon = ExcelIcon;
|
|
15
|
+
const ImageIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yNTYgMTkyMGgxNTM2djEyOEgxMjhWMGgxMTE1bDU0OSA1NDl2OTFoLTY0MFYxMjhIMjU2djE3OTJ6TTEyODAgNTEyaDI5M2wtMjkzLTI5M3YyOTN6bTc2OCAyNTZ2MTAyNEg2NDBWNzY4aDE0MDh6TTc2OCA4OTZ2NDIxbDMyMC0zMTkgNDE2IDQxNiAxNjAtMTYwIDI1NiAyNTZWODk2SDc2OHptOTg3IDc2OGgxMzlsLTIzMC0yMzAtNjkgNzAgMTYwIDE2MHptLTk4NyAwaDgwNWwtNDg1LTQ4Ni0zMjAgMzIxdjE2NXptOTYwLTUxMnEtMjYgMC00NS0xOXQtMTktNDVxMC0yNiAxOS00NXQ0NS0xOXEyNiAwIDQ1IDE5dDE5IDQ1cTAgMjYtMTkgNDV0LTQ1IDE5eiIgLz4NCjwvc3ZnPg==";
|
|
16
|
+
exports.ImageIcon = ImageIcon;
|
|
17
|
+
const OneNoteIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0xOTYzIDEyOHEzNSAwIDYwIDI1dDI1IDYwdjE2MjJxMCAzNS0yNSA2MHQtNjAgMjVINTk3cS0zNSAwLTYwLTI1dC0yNS02MHYtMjk5SDg1cS0zNSAwLTYwLTI1dC0yNS02MFY1OTdxMC0zNSAyNS02MHQ2MC0yNWg0MjdWMjEzcTAtMzUgMjUtNjB0NjAtMjVoMTM2NnpNMzg5IDkzOWwyNDIgNDIwaDE1MlY2ODlINjM1djQyOUw0MDIgNjg5SDI0MXY2NzBoMTQ4VjkzOXptMTUzMSA4NTN2LTI1NmgtMjU2djI1NmgyNTZ6bTAtMzg0di0yNTZoLTI1NnYyNTZoMjU2em0wLTM4NFY3NjhoLTI1NnYyNTZoMjU2em0wLTM4NFYyNTZINjQwdjI1NmgyOTlxMzUgMCA2MCAyNXQyNSA2MHY4NTRxMCAzNS0yNSA2MHQtNjAgMjVINjQwdjI1Nmg4OTZWNjQwaDM4NHoiIC8+DQo8L3N2Zz4=";
|
|
18
|
+
exports.OneNoteIcon = OneNoteIcon;
|
|
19
|
+
const PDFIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0xOTIwIDE2NjRoLTEyOHYzODRIMTI4di0zODRIMFY2NDBoMTI4VjBoMTI0M2w0MjEgNDIxdjIxOWgxMjh2MTAyNHpNMTQwOCAzODRoMTY1bC0xNjUtMTY1djE2NXpNMjU2IDY0MGgxNDA4VjUxMmgtMzg0VjEyOEgyNTZ2NTEyem0xNDA4IDEwMjRIMjU2djI1NmgxNDA4di0yNTZ6bTEyOC04OTZIMTI4djc2OGgxNjY0Vjc2OHpNNDQ4IDg5NnE0MCAwIDc1IDE1dDYxIDQxIDQxIDYxIDE1IDc1cTAgNDAtMTUgNzV0LTQxIDYxLTYxIDQxLTc1IDE1aC02NHYxMjhIMjU2Vjg5NmgxOTJ6bTAgMjU2cTI2IDAgNDUtMTl0MTktNDVxMC0yNi0xOS00NXQtNDUtMTloLTY0djEyOGg2NHptNDQ4LTI1NnE1MyAwIDk5IDIwdDgyIDU1IDU1IDgxIDIwIDEwMHEwIDUzLTIwIDk5dC01NSA4Mi04MSA1NS0xMDAgMjBINzY4Vjg5NmgxMjh6bTAgMzg0cTI3IDAgNTAtMTB0NDAtMjcgMjgtNDEgMTAtNTBxMC0yNy0xMC01MHQtMjctNDAtNDEtMjgtNTAtMTB2MjU2em0zODQtMzg0aDMyMHYxMjhoLTE5MnYxMjhoMTkydjEyOGgtMTkydjEyOGgtMTI4Vjg5NnoiIC8+DQo8L3N2Zz4=";
|
|
20
|
+
exports.PDFIcon = PDFIcon;
|
|
21
|
+
const PowerpointIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNMzY4IDc1MnY2NzJoMTUwdi0yMjZoMTAwcTUyIDAgOTctMTV0NzgtNDYgNTMtNzIgMjAtOTdxMC01Ni0xNy05N3QtNTAtNjctNzYtMzktOTctMTNIMzY4em0xNTUyIDExNjhWNTEyaC0yNTZxLTI3IDAtNTAtMTB0LTQwLTI3LTI4LTQxLTEwLTUwVjEyOEg2NDB2Mzg0aDM5N3EyNCAwIDQ0IDl0MzcgMjUgMjUgMzYgOSA0NXY5MjJxMCAyNC05IDQ0dC0yNSAzNy0zNiAyNS00NSA5SDY0MHYyNTZoMTI4MHpNMTUzNiA2NDBxNzkgMCAxNDkgMzB0MTIyIDgyIDgzIDEyMyAzMCAxNDloLTM4NFY2NDB6bS0xMjggMTI4djM4NGgzODRxMCA4MC0zMCAxNDl0LTgyIDEyMi0xMjMgODMtMTQ5IDMwcS0zMyAwLTY1LTZ0LTYzLTE4Vjc5MnEzMS0xMSA2My0xN3Q2NS03em0tODA0IDMwMGgtODZWODgzaDkwcTQ3IDAgNzQgMjB0MjcgNzBxMCA1Mi0yOCA3M3QtNzcgMjJ6IiAvPg0KPC9zdmc+";
|
|
22
|
+
exports.PowerpointIcon = PowerpointIcon;
|
|
23
|
+
const VideoIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0wIDI1NmgyMDQ4djE0MDhIMFYyNTZ6bTI1NiAxMjgwdi0xMjhIMTI4djEyOGgxMjh6bTAtMjU2di0xMjhIMTI4djEyOGgxMjh6bTAtMjU2Vjg5NkgxMjh2MTI4aDEyOHptMC0yNTZWNjQwSDEyOHYxMjhoMTI4em0wLTI1NlYzODRIMTI4djEyOGgxMjh6bTE0MDggNzg2VjM4NEgzODR2ODIzbDQxMS01NDkgNzQxIDg3OC0zMjktNTU4IDEzNy0xMzcgMzIwIDQ1N3ptMjU2IDIzOHYtMTI4aC0xMjh2MTI4aDEyOHptMC0yNTZ2LTEyOGgtMTI4djEyOGgxMjh6bTAtMjU2Vjg5NmgtMTI4djEyOGgxMjh6bTAtMjU2VjY0MGgtMTI4djEyOGgxMjh6bTAtMjU2VjM4NGgtMTI4djEyOGgxMjh6IiAvPg0KPC9zdmc+";
|
|
24
|
+
exports.VideoIcon = VideoIcon;
|
|
25
|
+
const VisioIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNNDkzIDE0MjRoMTYzbDI1NS02NzJINzQ1bC0xNDcgNDI3cS01IDE2LTEwIDMxdC0xMSAzMXEtNDEtMTIzLTgyLTI0NHQtODQtMjQ1SDI0MWwyNDggNjYyIDQgMTB6bTE0NyA0OTZoMTI4MFY1MTJoLTI1NnEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTBWMTI4SDY0MHYzODRoMzk3cTI0IDAgNDQgOXQzNyAyNSAyNSAzNiA5IDQ1djkyMnEwIDI0LTkgNDR0LTI1IDM3LTM2IDI1LTQ1IDlINjQwdjI1NnptOTYwLTEyODBsMTkyIDE5Mi0xMjggMTI4djQ0OGgtMjU2djEyOGgtMTI4di0zODRoMTI4djEyOGgxMjhWOTYwbC0xMjgtMTI4IDE5Mi0xOTJ6IiAvPg0KPC9zdmc+";
|
|
26
|
+
exports.VisioIcon = VisioIcon;
|
|
27
|
+
const WordIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICAgdmlld0JveD0iMCAwIDIwNDggMjA0OCINCiAgICB3aWR0aD0iMTJweCINCiAgICBoZWlnaHQ9IjEycHgiPg0KICAgIDxwYXRoIGQ9Ik0yMDQ4IDQ3NXYxNDQ1cTAgMjctMTAgNTB0LTI3IDQwLTQxIDI4LTUwIDEwSDY0MHEtMjcgMC01MC0xMHQtNDAtMjctMjgtNDEtMTAtNTB2LTI1NkgxMTVxLTI0IDAtNDQtOXQtMzctMjUtMjUtMzYtOS00NVY2MjdxMC0yNCA5LTQ0dDI1LTM3IDM2LTI1IDQ1LTloMzk3VjEyOHEwLTI3IDEwLTUwdDI3LTQwIDQxLTI4IDUwLTEwaDkzM3EyNiAwIDQ5IDl0NDIgMjhsMzQ3IDM0N3ExOCAxOCAyNyA0MXQxMCA1MHptLTM4NC0yNTZ2MTY1aDE2NWwtMTY1LTE2NXpNMzIwIDE0MjRoMTYxcTItOCA5LTQzdDE4LTgzIDIxLTEwMyAyMi0xMDEgMTYtNzYgOC0zMWw3IDMwcTcgMzAgMTcgNzd0MjMgMTAwIDIzIDEwMyAxOSA4NCAxMCA0M2gxNjBsMTQ4LTY3Mkg4MzRsLTgwIDQzOC0xMDAtNDM4SDUwMmwtOTYgNDQwLTg2LTQ0MEgxNzBsMTUwIDY3MnptMzIwIDQ5NmgxMjgwVjUxMmgtMjU2cS0yNyAwLTUwLTEwdC00MC0yNy0yOC00MS0xMC01MFYxMjhINjQwdjM4NGgzOTdxMjQgMCA0NCA5dDM3IDI1IDI1IDM2IDkgNDV2OTIycTAgMjQtOSA0NHQtMjUgMzctMzYgMjUtNDUgOUg2NDB2MjU2em02NDAtMTAyNFY3NjhoNTEydjEyOGgtNTEyem0wIDI1NnYtMTI4aDUxMnYxMjhoLTUxMnptMCAyNTZ2LTEyOGg1MTJ2MTI4aC01MTJ6IiAvPg0KPC9zdmc+";
|
|
28
|
+
exports.WordIcon = WordIcon;
|
|
@@ -41,6 +41,8 @@ _defineProperty(Constants, "false", "false");
|
|
|
41
41
|
|
|
42
42
|
_defineProperty(Constants, "maximumUnreadMessageCount", 99);
|
|
43
43
|
|
|
44
|
+
_defineProperty(Constants, "widgetStateDataKey", "LcwChatWidgetState");
|
|
45
|
+
|
|
44
46
|
_defineProperty(Constants, "channelIdKey", "ChannelId-");
|
|
45
47
|
|
|
46
48
|
_defineProperty(Constants, "ChannelId", "lcw");
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DataStoreManager = void 0;
|
|
7
|
+
|
|
8
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
+
|
|
10
|
+
class DataStoreManager {}
|
|
11
|
+
|
|
12
|
+
exports.DataStoreManager = DataStoreManager;
|
|
13
|
+
|
|
14
|
+
_defineProperty(DataStoreManager, "clientDataStore", void 0);
|
|
File without changes
|
|
@@ -115,11 +115,15 @@ exports.TelemetryEvent = TelemetryEvent;
|
|
|
115
115
|
TelemetryEvent["SendTypingIndicatorSucceeded"] = "SendTypingIndicatorSucceeded";
|
|
116
116
|
TelemetryEvent["SendTypingIndicatorFailed"] = "SendTypingIndicatorFailed";
|
|
117
117
|
TelemetryEvent["PreChatSurveyStartChatMethodFailed"] = "PreChatSurveyStartChatMethodFailed";
|
|
118
|
+
TelemetryEvent["ChatAlreadyTriggered"] = "ChatAlreadyTriggered";
|
|
119
|
+
TelemetryEvent["StartProactiveChatEventReceived"] = "StartProactiveChatEventReceived";
|
|
118
120
|
TelemetryEvent["StartProactiveChatMethodFailed"] = "StartProactiveChatMethodFailed";
|
|
119
121
|
TelemetryEvent["ProactiveChatAccepted"] = "ProactiveChatAccepted";
|
|
120
122
|
TelemetryEvent["ProactiveChatRejected"] = "ProactiveChatRejected";
|
|
121
123
|
TelemetryEvent["IncomingProactiveChatScreenLoaded"] = "IncomingProactiveChatScreenLoaded";
|
|
122
124
|
TelemetryEvent["ProactiveChatClosed"] = "ProactiveChatClosed";
|
|
125
|
+
TelemetryEvent["ProactiveChatStartChat"] = "ProactiveChatStartChat";
|
|
126
|
+
TelemetryEvent["ProactiveChatStartPopoutChat"] = "ProactiveChatStartPopoutChat";
|
|
123
127
|
TelemetryEvent["ReconnectChatContinueConversation"] = "ReconnectChatContinueConversation";
|
|
124
128
|
TelemetryEvent["ReconnectChatStartNewConversation"] = "ReconnectChatStartNewConversation";
|
|
125
129
|
TelemetryEvent["ReconnectChatMinimize"] = "ReconnectChatMinimize";
|
|
@@ -129,7 +133,6 @@ exports.TelemetryEvent = TelemetryEvent;
|
|
|
129
133
|
class TelemetryConstants {
|
|
130
134
|
static map(eventTypeOrScenarioType) {
|
|
131
135
|
switch (eventTypeOrScenarioType) {
|
|
132
|
-
case TelemetryEvent.StartChatSDKCall:
|
|
133
136
|
case TelemetryEvent.ParseAdaptiveCardFailed:
|
|
134
137
|
return ScenarioType.CONFIG_VALIDATION;
|
|
135
138
|
|
|
@@ -168,6 +171,7 @@ class TelemetryConstants {
|
|
|
168
171
|
case TelemetryEvent.HeaderMinimizeButtonClicked:
|
|
169
172
|
return ScenarioType.ACTIONS;
|
|
170
173
|
|
|
174
|
+
case TelemetryEvent.StartChatSDKCall:
|
|
171
175
|
case TelemetryEvent.StartChatMethodException:
|
|
172
176
|
case TelemetryEvent.CloseChatMethodException:
|
|
173
177
|
case TelemetryEvent.StartProactiveChatMethodFailed:
|
|
@@ -13,10 +13,6 @@ var _utils = require("../../common/utils");
|
|
|
13
13
|
|
|
14
14
|
var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
|
|
15
15
|
|
|
16
|
-
var _Constants = require("../../common/Constants");
|
|
17
|
-
|
|
18
|
-
var _ConversationState = require("../../contexts/common/ConversationState");
|
|
19
|
-
|
|
20
16
|
var _DimLayer = require("../dimlayer/DimLayer");
|
|
21
17
|
|
|
22
18
|
var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
|
|
@@ -35,6 +31,10 @@ var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatCo
|
|
|
35
31
|
|
|
36
32
|
var _useChatSDKStore = _interopRequireDefault(require("../../hooks/useChatSDKStore"));
|
|
37
33
|
|
|
34
|
+
var _Constants = require("../../common/Constants");
|
|
35
|
+
|
|
36
|
+
var _ConversationState = require("../../contexts/common/ConversationState");
|
|
37
|
+
|
|
38
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
39
|
|
|
40
40
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -46,14 +46,14 @@ const ConfirmationPaneStateful = props => {
|
|
|
46
46
|
var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
|
|
47
47
|
|
|
48
48
|
const initialTabIndexMap = new Map();
|
|
49
|
-
let elements = [];
|
|
49
|
+
let elements = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
+
|
|
51
|
+
const chatSDK = (0, _useChatSDKStore.default)();
|
|
50
52
|
const [state, dispatch] = (0, _useChatContextStore.default)();
|
|
51
53
|
const {
|
|
52
|
-
setPostChatContext,
|
|
53
54
|
endChat
|
|
54
55
|
} = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
-
|
|
56
|
-
const chatSDK = (0, _useChatSDKStore.default)(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
57
|
|
|
58
58
|
const [adapter] = (0, _useChatAdapterStore.default)();
|
|
59
59
|
const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
|
|
@@ -62,7 +62,7 @@ const ConfirmationPaneStateful = props => {
|
|
|
62
62
|
id: "oc-lcw-confirmation-pane",
|
|
63
63
|
dir: state.domainStates.globalDir,
|
|
64
64
|
onConfirm: async () => {
|
|
65
|
-
_TelemetryHelper.TelemetryHelper.
|
|
65
|
+
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
66
66
|
Event: _TelemetryConstants.TelemetryEvent.ConfirmationConfirmButtonClicked,
|
|
67
67
|
Description: "Confirmation pane Confirm button clicked"
|
|
68
68
|
});
|
|
@@ -73,39 +73,28 @@ const ConfirmationPaneStateful = props => {
|
|
|
73
73
|
});
|
|
74
74
|
|
|
75
75
|
try {
|
|
76
|
-
//
|
|
77
|
-
const conversationDetails = await chatSDK.getConversationDetails();
|
|
78
|
-
|
|
79
|
-
if (isPostChatEnabled === "true" &&
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (state.domainStates.postChatContext) {
|
|
76
|
+
// check agent has joined conversation
|
|
77
|
+
const conversationDetails = await chatSDK.getConversationDetails();
|
|
78
|
+
|
|
79
|
+
if (isPostChatEnabled === "true" && conversationDetails.canRenderPostChat === _Constants.Constants.truePascal) {
|
|
80
|
+
if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Embed) {
|
|
81
|
+
const loadPostChatEvent = {
|
|
82
|
+
eventName: "LoadPostChatSurvey"
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
_omnichannelChatComponents.BroadcastService.postMessage(loadPostChatEvent);
|
|
86
|
+
} else if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Link) {
|
|
87
|
+
const skipEndChatSDK = false;
|
|
88
|
+
const skipCloseChat = true;
|
|
89
|
+
await endChat(adapter, skipEndChatSDK, skipCloseChat);
|
|
91
90
|
dispatch({
|
|
92
91
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
|
|
93
|
-
payload: _ConversationState.ConversationState.
|
|
92
|
+
payload: _ConversationState.ConversationState.InActive
|
|
94
93
|
});
|
|
95
94
|
}
|
|
96
95
|
} else {
|
|
97
96
|
(0, _utils.setTabIndices)(elements, initialTabIndexMap, true);
|
|
98
|
-
|
|
99
|
-
try {
|
|
100
|
-
await endChat(adapter);
|
|
101
|
-
} catch (error) {
|
|
102
|
-
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
103
|
-
Event: _TelemetryConstants.TelemetryEvent.CloseChatMethodException,
|
|
104
|
-
ExceptionDetails: {
|
|
105
|
-
exception: `Failed to endChat: ${error}`
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}
|
|
97
|
+
await endChat(adapter);
|
|
109
98
|
}
|
|
110
99
|
} catch (ex) {
|
|
111
100
|
_TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
@@ -119,7 +108,7 @@ const ConfirmationPaneStateful = props => {
|
|
|
119
108
|
}
|
|
120
109
|
},
|
|
121
110
|
onCancel: () => {
|
|
122
|
-
_TelemetryHelper.TelemetryHelper.
|
|
111
|
+
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
123
112
|
Event: _TelemetryConstants.TelemetryEvent.ConfirmationCancelButtonClicked,
|
|
124
113
|
Description: "Confirmation pane Cancel button clicked."
|
|
125
114
|
});
|
|
@@ -95,8 +95,8 @@ const EmailTranscriptPaneStateful = props => {
|
|
|
95
95
|
},
|
|
96
96
|
onCancel: () => {
|
|
97
97
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
98
|
-
Event: _TelemetryConstants.TelemetryEvent.
|
|
99
|
-
Description: "Email Transcript button clicked."
|
|
98
|
+
Event: _TelemetryConstants.TelemetryEvent.EmailTranscriptCancelButtonClicked,
|
|
99
|
+
Description: "Email Transcript cancel button clicked."
|
|
100
100
|
});
|
|
101
101
|
|
|
102
102
|
closeEmailTranscriptPane();
|
|
@@ -17,6 +17,8 @@ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components
|
|
|
17
17
|
|
|
18
18
|
var _LiveChatWidgetActionType = require("../../contexts/common/LiveChatWidgetActionType");
|
|
19
19
|
|
|
20
|
+
var _Audios = require("../../assets/Audios");
|
|
21
|
+
|
|
20
22
|
var _NotificationHandler = require("../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
|
|
21
23
|
|
|
22
24
|
var _NotificationScenarios = require("../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios");
|
|
@@ -29,8 +31,6 @@ var _useChatContextStore = _interopRequireDefault(require("../../hooks/useChatCo
|
|
|
29
31
|
|
|
30
32
|
var _useChatSDKStore = _interopRequireDefault(require("../../hooks/useChatSDKStore"));
|
|
31
33
|
|
|
32
|
-
var _newMessageNotification = _interopRequireDefault(require("../../assets/audios/newMessageNotification.mp3"));
|
|
33
|
-
|
|
34
34
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
35
|
|
|
36
36
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -122,7 +122,7 @@ const FooterStateful = props => {
|
|
|
122
122
|
controlProps: controlProps,
|
|
123
123
|
styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
|
|
124
124
|
}), /*#__PURE__*/_react.default.createElement(_AudioNotificationStateful.default, {
|
|
125
|
-
audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ??
|
|
125
|
+
audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? _Audios.NewMessageNotificationSoundBase64,
|
|
126
126
|
hideAudioNotificationButton: (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : _footerProps$controlP4.hideAudioNotificationButton) ?? false,
|
|
127
127
|
isAudioMuted: state.appStates.isAudioMuted ?? false
|
|
128
128
|
}));
|
|
@@ -43,6 +43,7 @@ const HeaderStateful = props => {
|
|
|
43
43
|
|
|
44
44
|
const [outOfOperatingHours, setOutOfOperatingHours] = (0, _react.useState)(((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.OutOfOperatingHours) === "True");
|
|
45
45
|
const outOfOfficeStyleProps = Object.assign({}, _defaultOutOfOfficeHeaderStyleProps.defaultOutOfOfficeHeaderStyleProps, outOfOfficeHeaderProps === null || outOfOfficeHeaderProps === void 0 ? void 0 : outOfOfficeHeaderProps.styleProps);
|
|
46
|
+
const conversationState = (0, _react.useRef)(state.appStates.conversationState);
|
|
46
47
|
const controlProps = {
|
|
47
48
|
id: "oc-lcw-header",
|
|
48
49
|
dir: state.domainStates.globalDir,
|
|
@@ -63,17 +64,21 @@ const HeaderStateful = props => {
|
|
|
63
64
|
Description: "Header Close button clicked."
|
|
64
65
|
});
|
|
65
66
|
|
|
66
|
-
if (
|
|
67
|
+
if (conversationState.current === _ConversationState.ConversationState.Active) {
|
|
67
68
|
dispatch({
|
|
68
69
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
|
|
69
70
|
payload: true
|
|
70
71
|
});
|
|
71
|
-
} else if (
|
|
72
|
+
} else if (conversationState.current === _ConversationState.ConversationState.Postchat) {
|
|
72
73
|
dispatch({
|
|
73
74
|
type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
|
|
74
75
|
payload: false
|
|
75
76
|
});
|
|
76
77
|
await endChat(adapter);
|
|
78
|
+
} else if (conversationState.current === _ConversationState.ConversationState.InActive) {
|
|
79
|
+
const skipEndChatSDK = true;
|
|
80
|
+
const skipCloseChat = false;
|
|
81
|
+
await endChat(adapter, skipEndChatSDK, skipCloseChat);
|
|
77
82
|
}
|
|
78
83
|
|
|
79
84
|
dispatch({
|
|
@@ -105,7 +110,11 @@ const HeaderStateful = props => {
|
|
|
105
110
|
if (state.appStates.outsideOperatingHours) {
|
|
106
111
|
setOutOfOperatingHours(true);
|
|
107
112
|
}
|
|
108
|
-
|
|
113
|
+
|
|
114
|
+
if (state.appStates.conversationState) {
|
|
115
|
+
conversationState.current = state.appStates.conversationState;
|
|
116
|
+
}
|
|
117
|
+
}, [state.appStates]);
|
|
109
118
|
return /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Header, {
|
|
110
119
|
componentOverrides: headerProps === null || headerProps === void 0 ? void 0 : headerProps.componentOverrides,
|
|
111
120
|
controlProps: outOfOperatingHours || state.appStates.conversationState === _ConversationState.ConversationState.OutOfOffice ? outOfOfficeControlProps : controlProps,
|
|
@@ -7,8 +7,6 @@ exports.createMarkdown = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _markdownIt = _interopRequireDefault(require("markdown-it"));
|
|
9
9
|
|
|
10
|
-
var _slackMarkdownIt = _interopRequireDefault(require("slack-markdown-it"));
|
|
11
|
-
|
|
12
10
|
var _markdownItForInline = _interopRequireDefault(require("markdown-it-for-inline"));
|
|
13
11
|
|
|
14
12
|
var _defaultMarkdownLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMarkdownLocalizedTexts");
|
|
@@ -26,8 +24,9 @@ const createMarkdown = (disableMarkdownMessageFormatting, disableNewLineMarkdown
|
|
|
26
24
|
html: true,
|
|
27
25
|
linkify: true,
|
|
28
26
|
breaks: !disableNewLineMarkdownSupport
|
|
29
|
-
});
|
|
30
|
-
markdown.use(
|
|
27
|
+
}); // ToDo: Commenting below usage of plugin until deferred bug is resolved: https://github.com/mayashavin/markdown-it-slack/issues/1
|
|
28
|
+
// markdown.use(MarkdownSlack);
|
|
29
|
+
// Markdown override for open link in new tab
|
|
31
30
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any, quotes
|
|
32
31
|
|
|
33
32
|
markdown.use(_markdownItForInline.default, "url_new_win", "link_open", function (tokens, idx, env) {
|