@kindly/react-chat 2.48.3 → 2.48.4

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.
@@ -1,99 +0,0 @@
1
- import React from 'react';
2
-
3
- import { chromaticViewports } from '../../.storybook/preview';
4
- import KindlyChat from '../../src/KindlyChat';
5
- import settings from '../assets/settingsJson';
6
-
7
- const mockSettings = (response = settings) => ({
8
- mockData: [
9
- {
10
- url: 'https://example.com/mockme/settings/1234.json?version=:version&kindly-chat-browser-id=:browserId',
11
- method: 'GET',
12
- status: 200,
13
- response,
14
- },
15
- ],
16
- });
17
-
18
- function Template({ options, ...args }) {
19
- return <KindlyChat botKey="1234" options={options || {}} {...args} />;
20
- }
21
-
22
- export default {
23
- title: 'Screen/Button',
24
- component: KindlyChat,
25
- decorators: [],
26
- argTypes: {
27
- options: {
28
- table: {
29
- disable: true,
30
- },
31
- },
32
- setKindlyChatRef: {
33
- table: {
34
- disable: true,
35
- },
36
- },
37
- },
38
- };
39
-
40
- export const Regular = Template.bind({});
41
- Regular.parameters = {
42
- ...mockSettings(),
43
- chromatic: { viewports: chromaticViewports },
44
- };
45
-
46
- export const Christmas = Template.bind({});
47
- Christmas.parameters = mockSettings({
48
- ...settings,
49
- settings: {
50
- ...settings.settings,
51
- seasonal_appearance: 'CHRISTMAS',
52
- },
53
- });
54
-
55
- export const Pride = Template.bind({});
56
- Pride.parameters = mockSettings({
57
- ...settings,
58
- settings: {
59
- ...settings.settings,
60
- seasonal_appearance: 'PRIDE',
61
- },
62
- });
63
-
64
- export const Easter = Template.bind({});
65
- Easter.parameters = mockSettings({
66
- ...settings,
67
- settings: {
68
- ...settings.settings,
69
- seasonal_appearance: 'EASTER',
70
- },
71
- });
72
-
73
- export const SmallerOnTablet = Template.bind({});
74
- SmallerOnTablet.parameters = mockSettings({
75
- ...settings,
76
- settings: {
77
- ...settings.settings,
78
- bubble_size: 'SMALL',
79
- },
80
- });
81
-
82
- export const WithOutline = Template.bind({});
83
- WithOutline.parameters = mockSettings({
84
- ...settings,
85
- settings: {
86
- ...settings.settings,
87
- use_bubble_outline: true,
88
- },
89
- });
90
-
91
- export const WithBubbleAvatar = Template.bind({});
92
- WithBubbleAvatar.parameters = mockSettings({
93
- ...settings,
94
- settings: {
95
- ...settings.settings,
96
- bubbleAvatar: 'https://static.kindlycdn.com/v10.26.2/static/1753a14f761e7a21771e9d3b340c8cc1.svg',
97
- bubble_size: 'SMALL',
98
- },
99
- });
@@ -1,108 +0,0 @@
1
- import React from 'react';
2
-
3
- import { feedbackFormTypes } from 'app/constants';
4
-
5
- import { chromaticViewports } from '../../.storybook/preview';
6
- import KindlyChatButton from '../../src/features/KindlyChatButton/KindlyChatButton';
7
- import settingsJSON from '../assets/settingsJson';
8
- import withContainer from '../decorators/withContainer';
9
- import withMockProvider from '../decorators/withProvider';
10
-
11
- const defaultBotSettings = {
12
- welcomePage: settingsJSON.welcome_page,
13
- feedbackForm: settingsJSON.feedback_form,
14
- maintenanceAlert: settingsJSON.maintenance_alert,
15
- ...settingsJSON.settings,
16
- ...settingsJSON,
17
- };
18
-
19
- function Template(args, context) {
20
- return <KindlyChatButton {...args} {...context} />;
21
- }
22
-
23
- export default {
24
- title: 'Screen/Feedback',
25
- component: KindlyChatButton,
26
- decorators: [withContainer, withMockProvider],
27
- };
28
-
29
- export const Emojis = Template.bind({});
30
- Emojis.parameters = {
31
- botSettings: {
32
- ...defaultBotSettings,
33
- feedbackForm: {
34
- ...defaultBotSettings.feedbackForm,
35
- type: feedbackFormTypes.EMOJIS,
36
- },
37
- },
38
- initialStateModifier: {
39
- chatbubble: {
40
- active: false,
41
- currentLanguage: 'en',
42
- },
43
- feedback: {
44
- feedbackFormOpen: true,
45
- },
46
- },
47
- chromatic: { viewports: chromaticViewports },
48
- };
49
-
50
- export const Binary = Template.bind({});
51
- Binary.parameters = {
52
- botSettings: {
53
- ...defaultBotSettings,
54
- feedbackForm: {
55
- ...defaultBotSettings.feedbackForm,
56
- type: feedbackFormTypes.BINARY,
57
- },
58
- },
59
- initialStateModifier: {
60
- chatbubble: {
61
- active: false,
62
- currentLanguage: 'en',
63
- },
64
- feedback: {
65
- feedbackFormOpen: true,
66
- },
67
- },
68
- };
69
-
70
- export const HappyOrNot = Template.bind({});
71
- HappyOrNot.parameters = {
72
- botSettings: {
73
- ...defaultBotSettings,
74
- feedbackForm: {
75
- ...defaultBotSettings.feedbackForm,
76
- type: feedbackFormTypes.HAPPY_OR_NOT,
77
- },
78
- },
79
- initialStateModifier: {
80
- chatbubble: {
81
- active: false,
82
- currentLanguage: 'en',
83
- },
84
- feedback: {
85
- feedbackFormOpen: true,
86
- },
87
- },
88
- };
89
-
90
- export const ExternalLink = Template.bind({});
91
- ExternalLink.parameters = {
92
- botSettings: {
93
- ...defaultBotSettings,
94
- feedbackForm: {
95
- ...defaultBotSettings.feedbackForm,
96
- type: feedbackFormTypes.EXTERNAL_LINK,
97
- },
98
- },
99
- initialStateModifier: {
100
- chatbubble: {
101
- active: false,
102
- currentLanguage: 'en',
103
- },
104
- feedback: {
105
- feedbackFormOpen: true,
106
- },
107
- },
108
- };
@@ -1,123 +0,0 @@
1
- import React from 'react';
2
-
3
- import { chromaticViewports } from '../../.storybook/preview';
4
- import KindlyChat from '../../src/KindlyChat';
5
- import settings from '../assets/settingsJson';
6
-
7
- const mockSettings = (response = settings) => ({
8
- mockData: [
9
- {
10
- url: 'https://example.com/mockme/settings/1234.json?version=:version&kindly-chat-browser-id=:browserId',
11
- method: 'GET',
12
- status: 200,
13
- response,
14
- },
15
- ],
16
- });
17
-
18
- function Template({ slug, nudgeLayout, trackEvent, options, ...args }) {
19
- return (
20
- <KindlyChat
21
- botKey="1234"
22
- options={options || {}}
23
- {...args}
24
- setKindlyChatRef={(api) => {
25
- api?.showNudge({
26
- slug,
27
- nudgeLayout,
28
- trackEvent,
29
- });
30
- }}
31
- />
32
- );
33
- }
34
-
35
- export default {
36
- title: 'Screen/Nudges',
37
- component: KindlyChat,
38
- };
39
-
40
- export const Product = Template.bind({});
41
- Product.parameters = { ...mockSettings(), chromatic: { viewports: chromaticViewports } };
42
- Product.args = {
43
- slug: settings.nudges.product_nudges[0].slug,
44
- };
45
-
46
- export const Form = Template.bind({});
47
- Form.parameters = mockSettings();
48
- Form.args = {
49
- slug: settings.nudges.form_nudges[0].slug,
50
- };
51
-
52
- export const MultipleChoice = Template.bind({});
53
- MultipleChoice.parameters = mockSettings();
54
- MultipleChoice.args = {
55
- slug: settings.nudges.multiple_choice_nudges[0].slug,
56
- };
57
-
58
- export const TextNudge = Template.bind({});
59
- TextNudge.parameters = mockSettings();
60
- TextNudge.args = {
61
- slug: settings.nudges.text_nudges[0].slug,
62
- };
63
-
64
- export const FullCustom = Template.bind({});
65
- FullCustom.parameters = mockSettings();
66
- FullCustom.args = {
67
- nudgeLayout: {
68
- sections: [
69
- {
70
- html: () => `
71
- <style>
72
- .nudge-text {
73
- width: 50%;
74
- font-weight: bold;
75
- }
76
-
77
- p {
78
- color: #333;
79
- font-size: 14px;
80
- }
81
- </style>
82
- <div class="nudge-wrapper">
83
- <div class="nudge-text">
84
- <p>Full Custom</p>
85
- </div>
86
- </div>
87
- `,
88
- },
89
- ],
90
- },
91
- };
92
-
93
- export const Custom = Template.bind({});
94
- Custom.parameters = mockSettings();
95
- Custom.args = {
96
- slug: settings.nudges.custom_nudges[0].slug,
97
- nudgeLayout: {
98
- sections: [
99
- {
100
- html: (textContent) => `
101
- <style>
102
- .nudge-text {
103
- width: 50%;
104
- font-weight: bold;
105
- }
106
-
107
- p {
108
- color: #333;
109
- font-size: 14px;
110
- }
111
- </style>
112
- <div class="nudge-wrapper">
113
- <div class="nudge-text">
114
- <p>${textContent.text}</p>
115
- <p>${textContent.text2}</p>
116
- <p>${textContent.text3}</p>
117
- </div>
118
- </div>
119
- `,
120
- },
121
- ],
122
- },
123
- };
@@ -1,220 +0,0 @@
1
- import { userEvent, within } from '@storybook/testing-library';
2
- import React from 'react';
3
-
4
- import { chromaticViewports } from '../../.storybook/preview';
5
- import KindlyChatButton from '../../src/features/KindlyChatButton/KindlyChatButton';
6
- import { OPTION_VIEW } from '../../src/features/OptionsScreen/constants';
7
- import settingsJSON from '../assets/settingsJson';
8
- import withContainer from '../decorators/withContainer';
9
- import withMockProvider from '../decorators/withProvider';
10
- import wait from '../utils/wait';
11
-
12
- const defaultBotSettings = {
13
- welcomePage: settingsJSON.welcome_page,
14
- feedbackForm: settingsJSON.feedback_form,
15
- maintenanceAlert: settingsJSON.maintenance_alert,
16
- ...settingsJSON.settings,
17
- ...settingsJSON,
18
- };
19
-
20
- function Template(args, context) {
21
- return <KindlyChatButton {...args} {...context} />;
22
- }
23
-
24
- export default {
25
- title: 'Screen/Options',
26
- component: KindlyChatButton,
27
- decorators: [withContainer, withMockProvider],
28
- };
29
-
30
- const defaultParameters = {
31
- botSettings: defaultBotSettings,
32
- initialStateModifier: {
33
- chatbubble: {
34
- active: true,
35
- chatHasStarted: true,
36
- currentLanguage: 'en',
37
- optionsScreenView: OPTION_VIEW.GENERIC,
38
- },
39
- },
40
- };
41
-
42
- export const Regular = Template.bind({});
43
- Regular.parameters = {
44
- ...defaultParameters,
45
- chromatic: { viewports: chromaticViewports },
46
- };
47
-
48
- export const WithLanguageChoice = Template.bind({});
49
- WithLanguageChoice.parameters = {
50
- botSettings: {
51
- ...defaultBotSettings,
52
- languages: [
53
- {
54
- code: 'en',
55
- name: 'English',
56
- active: true,
57
- },
58
- {
59
- code: 'nb',
60
- name: 'Norsk (bokmål)',
61
- active: true,
62
- },
63
- ],
64
- text: {
65
- ...defaultBotSettings.text,
66
- change_language_button: {
67
- en: 'Change language, in a very long icon-text version, that will probably not fit in the button',
68
- nb: 'Endre språk, in a very long icon-text version, that will probably not fit in the button',
69
- nn: 'Endre språk, in a very long icon-text version, that will probably not fit in the button',
70
- sv: 'Ändra språk, in a very long icon-text version, that will probably not fit in the button',
71
- },
72
- },
73
- },
74
- initialStateModifier: {
75
- chatbubble: {
76
- active: true,
77
- chatHasStarted: true,
78
- currentLanguage: 'en',
79
- optionsScreenView: OPTION_VIEW.GENERIC,
80
- },
81
- },
82
- };
83
-
84
- const availableLanguages = [
85
- {
86
- code: 'en',
87
- name: 'English',
88
- active: true,
89
- },
90
- {
91
- code: 'nb',
92
- name: 'Norsk (bokmål)',
93
- active: true,
94
- },
95
- {
96
- code: 'aa',
97
- name: 'Afar',
98
- active: true,
99
- },
100
- {
101
- code: 'af',
102
- name: 'Afrikaans',
103
- active: true,
104
- },
105
- {
106
- code: 'ak',
107
- name: 'Akana',
108
- active: true,
109
- },
110
- {
111
- code: 'an',
112
- name: 'Aragonés',
113
- active: true,
114
- },
115
- {
116
- code: 'ar',
117
- name: 'العربية',
118
- active: true,
119
- },
120
- {
121
- code: 'yi',
122
- name: 'ייִדיש',
123
- active: true,
124
- },
125
- {
126
- code: 'yo',
127
- name: 'Yorùbá',
128
- active: true,
129
- },
130
- {
131
- code: 'za',
132
- name: 'Cuengh / Tôô / 壮语',
133
- active: true,
134
- },
135
- {
136
- code: 'zu',
137
- name: 'isiZulu',
138
- active: true,
139
- },
140
- ];
141
-
142
- export const LanguageChoice = Template.bind({});
143
- LanguageChoice.args = {
144
- languageQuantity: 10,
145
- initialStateModifierFromArgs: ({ languageQuantity }) => ({
146
- chatbubble: {
147
- active: true,
148
- chatHasStarted: true,
149
- currentLanguage: 'en',
150
- optionsScreenView: OPTION_VIEW.LANGUAGE_SELECT,
151
- },
152
- bot: {
153
- languages: availableLanguages.slice(0, languageQuantity),
154
- },
155
- }),
156
- };
157
- LanguageChoice.argTypes = {
158
- languageQuantity: {
159
- control: { type: 'range', min: 2, max: availableLanguages.length - 1, step: 1 },
160
- },
161
- };
162
- LanguageChoice.parameters = {
163
- botSettings: {
164
- ...defaultBotSettings,
165
- },
166
- };
167
-
168
- export const LanguageChoiceConfirm = Template.bind({});
169
- LanguageChoiceConfirm.args = {
170
- ...LanguageChoice.args,
171
- languageQuantity: 2,
172
- };
173
- LanguageChoiceConfirm.argTypes = LanguageChoice.argTypes;
174
- LanguageChoiceConfirm.parameters = LanguageChoice.parameters;
175
- LanguageChoiceConfirm.play = async ({ canvasElement }) => {
176
- const norskButton = await within(canvasElement).findByText(availableLanguages[1].name);
177
- await wait(10); // This fixes inconsistent test results due to composer autofocus
178
- await userEvent.click(norskButton);
179
- };
180
-
181
- export const DeleteConfirmation = Template.bind({});
182
- DeleteConfirmation.parameters = defaultParameters;
183
- DeleteConfirmation.play = async ({ canvasElement }) => {
184
- const deleteButton = await within(canvasElement).findByText(defaultBotSettings.text.delete_button.en);
185
- await userEvent.click(deleteButton);
186
- };
187
-
188
- export const DeleteSuccess = Template.bind({});
189
- DeleteSuccess.parameters = {
190
- ...defaultParameters,
191
- initialStateModifier: {
192
- ...defaultParameters.initialStateModifier,
193
- privacy: {
194
- chatDeleted: true,
195
- },
196
- },
197
- };
198
-
199
- export const DownloadChat = Template.bind({});
200
- DownloadChat.parameters = defaultParameters;
201
- DownloadChat.play = async ({ canvasElement }) => {
202
- const downloadButton = await within(canvasElement).findByText(defaultBotSettings.text.download_button.en);
203
- await userEvent.click(downloadButton);
204
- };
205
-
206
- export const QuitChat = Template.bind({});
207
- QuitChat.parameters = {
208
- ...defaultParameters,
209
- initialStateModifier: {
210
- chatbubble: {
211
- active: true,
212
- chatHasStarted: true,
213
- currentLanguage: 'en',
214
- },
215
- },
216
- };
217
- QuitChat.play = async ({ canvasElement }) => {
218
- const deleteButton = await within(canvasElement).findByTestId('end-chat-button');
219
- await userEvent.click(deleteButton);
220
- };
@@ -1,81 +0,0 @@
1
- import React from 'react';
2
-
3
- import { chromaticViewports } from '../../.storybook/preview';
4
- import KindlyChatButton from '../../src/features/KindlyChatButton/KindlyChatButton';
5
- import settingsJSON from '../assets/settingsJson';
6
- import withContainer from '../decorators/withContainer';
7
- import withMockProvider from '../decorators/withProvider';
8
-
9
- const defaultBotSettings = {
10
- welcomePage: settingsJSON.welcome_page,
11
- feedbackForm: settingsJSON.feedback_form,
12
- maintenanceAlert: settingsJSON.maintenance_alert,
13
- ...settingsJSON.settings,
14
- ...settingsJSON,
15
- };
16
-
17
- function Template(args, context) {
18
- return <KindlyChatButton {...args} {...context} />;
19
- }
20
-
21
- export default {
22
- title: 'Screen/PushGreeting',
23
- component: KindlyChatButton,
24
- decorators: [withContainer, withMockProvider],
25
- };
26
-
27
- export const Default = Template.bind({});
28
- Default.parameters = {
29
- botSettings: {
30
- ...defaultBotSettings,
31
- },
32
- initialStateModifier: {
33
- pushMessages: {
34
- dismissedMessages: [],
35
- show: true,
36
- type: 'message',
37
- text: 'This is a push greeting',
38
- },
39
- },
40
- chromatic: { viewports: chromaticViewports },
41
- };
42
-
43
- export const NewMessage = Template.bind({});
44
- NewMessage.args = {
45
- agentName: 'John Doe',
46
- avatar: null,
47
- text: 'has sent a new message',
48
- initialStateModifierFromArgs: ({ agentName, avatar, text }) => ({
49
- botSettings: {
50
- ...defaultBotSettings,
51
- },
52
- pushMessages: {
53
- dismissedMessages: [],
54
- show: true,
55
- type: 'takeover',
56
- agent: {
57
- name: agentName,
58
- avatar,
59
- },
60
- text,
61
- },
62
- }),
63
- };
64
-
65
- const avatars = {
66
- undefined: 'undefined',
67
- 'https://i.imgur.com/Iz1nJrw.jpg': 'Arash',
68
- };
69
-
70
- NewMessage.argTypes = {
71
- avatar: {
72
- options: Object.keys(avatars),
73
- control: {
74
- type: 'select',
75
- labels: avatars,
76
- },
77
- },
78
- };
79
- NewMessage.parameters = {
80
- botSettings: defaultBotSettings,
81
- };