@servicetitan/titan-chat-ui-anvil2 3.1.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/chat/__tests-cy__/chat-error.test.d.ts +2 -0
  3. package/dist/components/chat/__tests-cy__/chat-error.test.d.ts.map +1 -0
  4. package/dist/components/chat/__tests-cy__/chat-error.test.js +6 -0
  5. package/dist/components/chat/__tests-cy__/chat-error.test.js.map +1 -0
  6. package/dist/components/chat/__tests-cy__/chat-input-file.test.d.ts +2 -0
  7. package/dist/components/chat/__tests-cy__/chat-input-file.test.d.ts.map +1 -0
  8. package/dist/components/chat/__tests-cy__/chat-input-file.test.js +6 -0
  9. package/dist/components/chat/__tests-cy__/chat-input-file.test.js.map +1 -0
  10. package/dist/components/chat/__tests-cy__/chat-input.test.d.ts +2 -0
  11. package/dist/components/chat/__tests-cy__/chat-input.test.d.ts.map +1 -0
  12. package/dist/components/chat/__tests-cy__/chat-input.test.js +6 -0
  13. package/dist/components/chat/__tests-cy__/chat-input.test.js.map +1 -0
  14. package/dist/components/chat/__tests-cy__/chat-log.test.d.ts +2 -0
  15. package/dist/components/chat/__tests-cy__/chat-log.test.d.ts.map +1 -0
  16. package/dist/components/chat/__tests-cy__/chat-log.test.js +6 -0
  17. package/dist/components/chat/__tests-cy__/chat-log.test.js.map +1 -0
  18. package/dist/components/chat/__tests-cy__/chat-messages.test.js +2 -91
  19. package/dist/components/chat/__tests-cy__/chat-messages.test.js.map +1 -1
  20. package/dist/components/chat/__tests-cy__/chat-notifications.test.d.ts +2 -0
  21. package/dist/components/chat/__tests-cy__/chat-notifications.test.d.ts.map +1 -0
  22. package/dist/components/chat/__tests-cy__/chat-notifications.test.js +6 -0
  23. package/dist/components/chat/__tests-cy__/chat-notifications.test.js.map +1 -0
  24. package/dist/components/chat/__tests-cy__/chat-timer.test.d.ts +2 -0
  25. package/dist/components/chat/__tests-cy__/chat-timer.test.d.ts.map +1 -0
  26. package/dist/components/chat/__tests-cy__/chat-timer.test.js +6 -0
  27. package/dist/components/chat/__tests-cy__/chat-timer.test.js.map +1 -0
  28. package/dist/components/chat/__tests-cy__/chat.test.js +3 -127
  29. package/dist/components/chat/__tests-cy__/chat.test.js.map +1 -1
  30. package/dist/components/chat/chat-connecting.js +1 -1
  31. package/dist/components/chat/chat-connecting.js.map +1 -1
  32. package/dist/components/chat/chat-error.d.ts +3 -1
  33. package/dist/components/chat/chat-error.d.ts.map +1 -1
  34. package/dist/components/chat/chat-error.js +3 -4
  35. package/dist/components/chat/chat-error.js.map +1 -1
  36. package/dist/components/chat/chat-input-file.d.ts.map +1 -1
  37. package/dist/components/chat/chat-input-file.js +19 -15
  38. package/dist/components/chat/chat-input-file.js.map +1 -1
  39. package/dist/components/chat/chat-input.d.ts.map +1 -1
  40. package/dist/components/chat/chat-input.js +5 -6
  41. package/dist/components/chat/chat-input.js.map +1 -1
  42. package/dist/components/chat/chat-input.module.less +4 -0
  43. package/dist/components/chat/chat-message-template-user.d.ts.map +1 -1
  44. package/dist/components/chat/chat-message-template-user.js +2 -2
  45. package/dist/components/chat/chat-message-template-user.js.map +1 -1
  46. package/dist/components/chat/chat-timer.d.ts.map +1 -1
  47. package/dist/components/chat/chat-timer.js +2 -3
  48. package/dist/components/chat/chat-timer.js.map +1 -1
  49. package/dist/components/chat/chat.d.ts.map +1 -1
  50. package/dist/components/chat/chat.js +7 -2
  51. package/dist/components/chat/chat.js.map +1 -1
  52. package/dist/components/chat/chat.module.less +9 -0
  53. package/dist/components/message-content/__tests-cy__/message-content-file.test.d.ts +2 -0
  54. package/dist/components/message-content/__tests-cy__/message-content-file.test.d.ts.map +1 -0
  55. package/dist/components/message-content/__tests-cy__/message-content-file.test.js +6 -0
  56. package/dist/components/message-content/__tests-cy__/message-content-file.test.js.map +1 -0
  57. package/dist/components/messages/__tests-cy__/message-agent.test.js +11 -77
  58. package/dist/components/messages/__tests-cy__/message-agent.test.js.map +1 -1
  59. package/dist/components/messages/__tests-cy__/message-system.test.js +6 -15
  60. package/dist/components/messages/__tests-cy__/message-system.test.js.map +1 -1
  61. package/dist/components/messages/__tests-cy__/message-timeout.test.js +2 -21
  62. package/dist/components/messages/__tests-cy__/message-timeout.test.js.map +1 -1
  63. package/dist/components/messages/__tests-cy__/message-typing.test.js +3 -45
  64. package/dist/components/messages/__tests-cy__/message-typing.test.js.map +1 -1
  65. package/dist/components/messages/__tests-cy__/message-user.test.js +3 -23
  66. package/dist/components/messages/__tests-cy__/message-user.test.js.map +1 -1
  67. package/dist/components/messages/message-timeout.d.ts.map +1 -1
  68. package/dist/components/messages/message-timeout.js +2 -1
  69. package/dist/components/messages/message-timeout.js.map +1 -1
  70. package/dist/components/messages/message-timeout.module.less +3 -0
  71. package/dist/components/messages/message-typing.js +1 -1
  72. package/dist/components/messages/message-typing.js.map +1 -1
  73. package/dist/components/messages/message-typing.module.less +4 -0
  74. package/package.json +4 -4
  75. package/src/components/chat/__tests-cy__/chat-error.test.tsx +6 -0
  76. package/src/components/chat/__tests-cy__/chat-input-file.test.tsx +6 -0
  77. package/src/components/chat/__tests-cy__/chat-input.test.tsx +6 -0
  78. package/src/components/chat/__tests-cy__/chat-log.test.tsx +6 -0
  79. package/src/components/chat/__tests-cy__/chat-messages.test.tsx +2 -107
  80. package/src/components/chat/__tests-cy__/chat-notifications.test.tsx +6 -0
  81. package/src/components/chat/__tests-cy__/chat-timer.test.tsx +6 -0
  82. package/src/components/chat/__tests-cy__/chat.test.tsx +3 -161
  83. package/src/components/chat/chat-connecting.tsx +1 -1
  84. package/src/components/chat/chat-error.tsx +18 -21
  85. package/src/components/chat/chat-input-file.tsx +66 -31
  86. package/src/components/chat/chat-input.module.less +4 -0
  87. package/src/components/chat/chat-input.module.less.d.ts +1 -0
  88. package/src/components/chat/chat-input.tsx +31 -26
  89. package/src/components/chat/chat-message-template-user.tsx +11 -8
  90. package/src/components/chat/chat-timer.tsx +3 -9
  91. package/src/components/chat/chat.module.less +9 -0
  92. package/src/components/chat/chat.module.less.d.ts +4 -0
  93. package/src/components/chat/chat.tsx +33 -20
  94. package/src/components/message-content/__tests-cy__/message-content-file.test.tsx +6 -0
  95. package/src/components/messages/__tests-cy__/message-agent.test.tsx +15 -136
  96. package/src/components/messages/__tests-cy__/message-system.test.tsx +10 -28
  97. package/src/components/messages/__tests-cy__/message-timeout.test.tsx +2 -25
  98. package/src/components/messages/__tests-cy__/message-typing.test.tsx +3 -54
  99. package/src/components/messages/__tests-cy__/message-user.test.tsx +3 -37
  100. package/src/components/messages/message-timeout.module.less +3 -0
  101. package/src/components/messages/message-timeout.module.less.d.ts +3 -0
  102. package/src/components/messages/message-timeout.tsx +3 -2
  103. package/src/components/messages/message-typing.module.less +4 -0
  104. package/src/components/messages/message-typing.module.less.d.ts +1 -0
  105. package/src/components/messages/message-typing.tsx +1 -1
  106. package/tsconfig.tsbuildinfo +1 -1
  107. package/dist/components/chat/chat-error.module.less +0 -6
  108. package/dist/components/chat/chat-timer.module.less +0 -5
  109. package/src/components/chat/chat-error.module.less +0 -6
  110. package/src/components/chat/chat-error.module.less.d.ts +0 -3
  111. package/src/components/chat/chat-timer.module.less +0 -5
  112. package/src/components/chat/chat-timer.module.less.d.ts +0 -3
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # v3.1.1 (Thu Aug 14 2025)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - SPA-7016: [Chatbot] Add Anvil2 support for chatbot NPM packages [#41](https://github.com/servicetitan/titan-chatbot-client/pull/41) ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
6
+
7
+ #### Authors: 1
8
+
9
+ - Alexandr Yarmolchuk ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
10
+
11
+ ---
12
+
1
13
  # v3.0.0 (Tue Jul 15 2025)
2
14
 
3
15
  #### 💥 Breaking Change
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-error.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-error.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-error.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { runChatErrorSharedTests } from '@servicetitan/titan-chatbot-ui-cypress';
2
+ import { ChatError } from '../chat-error';
3
+ describe('ChatError', () => {
4
+ runChatErrorSharedTests(ChatError);
5
+ });
6
+ //# sourceMappingURL=chat-error.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-error.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-error.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,uBAAuB,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-input-file.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-input-file.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-input-file.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { runChatInputFileSharedTests } from '@servicetitan/titan-chatbot-ui-cypress';
2
+ import { ChatInputFile } from '../chat-input-file';
3
+ describe('ChatInputFile', () => {
4
+ runChatInputFileSharedTests(ChatInputFile, { isAnvil2: true });
5
+ });
6
+ //# sourceMappingURL=chat-input-file.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-input-file.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-input-file.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,2BAA2B,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-input.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-input.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-input.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { runChatInputSharedTests } from '@servicetitan/titan-chatbot-ui-cypress';
2
+ import { ChatInput } from '../chat-input';
3
+ describe('ChatInput', () => {
4
+ runChatInputSharedTests(ChatInput);
5
+ });
6
+ //# sourceMappingURL=chat-input.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-input.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-input.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,uBAAuB,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-log.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-log.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-log.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { runChatLogSharedTests } from '@servicetitan/titan-chatbot-ui-cypress';
2
+ import { ChatLog } from '../chat-log';
3
+ describe('[ChatLog]', () => {
4
+ runChatLogSharedTests(ChatLog);
5
+ });
6
+ //# sourceMappingURL=chat-log.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-log.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-log.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}
@@ -1,95 +1,6 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Provider } from '@servicetitan/react-ioc';
3
- import { CHAT_UI_STORE_TOKEN, mockChatMessageModelText } from '@servicetitan/titan-chat-ui-common';
4
- import { ChatUiSelectors, CypressMocks } from '@servicetitan/titan-chatbot-ui-cypress';
5
- import { mount } from 'cypress/react';
1
+ import { runChatMessagesSharedTests } from '@servicetitan/titan-chatbot-ui-cypress';
6
2
  import { ChatMessages } from '../chat-messages';
7
3
  describe('[ChatMessages]', () => {
8
- let storeMock;
9
- beforeEach(() => {
10
- cy.viewport(780, 600);
11
- cy.clock(new Date('2023-10-01T10:10:00Z').getTime());
12
- storeMock = new CypressMocks.ChatUiStoreMock();
13
- });
14
- const render = () => {
15
- return mount(_jsx(Provider, { singletons: [
16
- {
17
- provide: CHAT_UI_STORE_TOKEN,
18
- useValue: storeMock,
19
- },
20
- ], children: _jsx(ChatMessages, { messages: storeMock.messages }) }));
21
- };
22
- it('should render default chat', () => {
23
- render();
24
- ChatUiSelectors.chatMessages.should('be.visible');
25
- ChatUiSelectors.chatMessage.should('have.length', 2);
26
- });
27
- it('should render several consecutive agent messages without extra avatars', () => {
28
- storeMock.messages = [
29
- mockChatMessageModelText(true, {
30
- id: 'id1',
31
- timestamp: new Date('2023-01-01T10:10:00Z'),
32
- message: 'Hello, this is the first message',
33
- }),
34
- mockChatMessageModelText(true, {
35
- id: 'id2',
36
- message: 'Hello, this is the second message. '.repeat(5).trim(),
37
- timestamp: new Date('2023-01-01T10:10:59.999Z'),
38
- }),
39
- mockChatMessageModelText(true, {
40
- id: 'id3',
41
- message: 'Hello, this is the third message',
42
- timestamp: new Date('2023-01-01T10:11:00Z'),
43
- }),
44
- mockChatMessageModelText(true, {
45
- id: 'id4',
46
- message: 'Hello, this is the forth message',
47
- timestamp: new Date('2023-01-01T10:11:01Z'),
48
- }),
49
- mockChatMessageModelText(false, {
50
- id: 'id11',
51
- timestamp: new Date('2023-01-01T11:10:00Z'),
52
- message: 'Hello, this is the first message',
53
- }),
54
- mockChatMessageModelText(false, {
55
- id: 'id22',
56
- message: 'Hello, this is the second message',
57
- timestamp: new Date('2023-01-01T11:11:00Z'),
58
- }),
59
- mockChatMessageModelText(false, {
60
- id: 'id33',
61
- message: 'Hello, this is the third message',
62
- timestamp: new Date('2023-01-01T11:12:00Z'),
63
- }),
64
- mockChatMessageModelText(false, {
65
- id: 'id44',
66
- message: 'Hello, this is the forth message',
67
- timestamp: new Date('2023-01-01T11:12:01Z'),
68
- }),
69
- ];
70
- render();
71
- const getTimestamp = (i) => ChatUiSelectors.chatMessage
72
- .eq(i)
73
- .find(`[data-cy="${ChatUiSelectors.cy.chatMessageFooter}"]`);
74
- ChatUiSelectors.chatMessageAgent.should('have.length', 4);
75
- ChatUiSelectors.chatMessageUser.should('have.length', 4);
76
- // Agent avatar should be visible only for the first message in group
77
- const getAvatar = (i) => ChatUiSelectors.chatMessageAgent
78
- .find(`[data-cy="${ChatUiSelectors.cy.chatAvatar}"]`)
79
- .eq(i);
80
- getAvatar(0).should('be.visible');
81
- getAvatar(1).should('not.exist');
82
- getAvatar(2).should('not.exist');
83
- getAvatar(3).should('not.exist');
84
- // Footer with date should be visible only for the different formatted timestamps
85
- getTimestamp(0).should('not.exist');
86
- getTimestamp(1).should('be.visible').should('contain.text', 'agent • 10:10 AM');
87
- getTimestamp(2).should('not.exist');
88
- getTimestamp(3).should('be.visible').should('contain.text', 'agent • 10:11 AM');
89
- getTimestamp(4).should('be.visible').should('contain.text', '11:10 AM');
90
- getTimestamp(5).should('be.visible').should('contain.text', '11:11 AM');
91
- getTimestamp(6).should('not.exist');
92
- getTimestamp(7).should('be.visible').should('contain.text', '11:12 AM');
93
- });
4
+ runChatMessagesSharedTests(ChatMessages);
94
5
  });
95
6
  //# sourceMappingURL=chat-messages.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-messages.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-messages.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-messages.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-messages.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,0BAA0B,CAAC,YAAY,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-notifications.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-notifications.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-notifications.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { runChatNotificationsTests } from '@servicetitan/titan-chatbot-ui-cypress';
2
+ import { ChatNotifications } from '../chat-notifications';
3
+ describe('ChatNotifications', () => {
4
+ runChatNotificationsTests(ChatNotifications);
5
+ });
6
+ //# sourceMappingURL=chat-notifications.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-notifications.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-notifications.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-timer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-timer.test.d.ts","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-timer.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { runChatTimerTests } from '@servicetitan/titan-chatbot-ui-cypress';
2
+ import { ChatTimer } from '../chat-timer';
3
+ describe('ChatTimer', () => {
4
+ runChatTimerTests(ChatTimer);
5
+ });
6
+ //# sourceMappingURL=chat-timer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-timer.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat-timer.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC"}
@@ -1,130 +1,6 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { AnvilProvider } from '@servicetitan/anvil2';
3
- import { Container, provide, useDependencies } from '@servicetitan/react-ioc';
4
- import { CHAT_UI_BACKEND_STORE_TOKEN, CHAT_UI_STORE_TOKEN, ChatParticipantIcon, ChatUiBackendEchoStore, ChatUiStore, } from '@servicetitan/titan-chat-ui-common';
5
- import { ChatUiSelectors } from '@servicetitan/titan-chatbot-ui-cypress';
6
- import { mount as cyMount } from 'cypress/react';
7
- import { useEffect } from 'react';
1
+ import { runChatSharedTests } from '@servicetitan/titan-chatbot-ui-cypress';
8
2
  import { Chat } from '../chat';
9
- const mount = (children) => {
10
- return cyMount(_jsx(AnvilProvider, { children: children }));
11
- };
12
- const initContainer = () => {
13
- const rootContainer = new Container();
14
- const container = new Container();
15
- container.parent = rootContainer;
16
- container.bind(CHAT_UI_STORE_TOKEN).to(ChatUiStore).inSingletonScope();
17
- container
18
- .bind(CHAT_UI_BACKEND_STORE_TOKEN)
19
- .to(ChatUiBackendEchoStore)
20
- .inSingletonScope();
21
- return container;
22
- };
23
- describe('[Chat]', () => {
24
- let container;
25
- let chatUiStore;
26
- let chatUiBackendStore;
27
- beforeEach(() => {
28
- container = initContainer();
29
- chatUiStore = container.get(CHAT_UI_STORE_TOKEN);
30
- chatUiBackendStore = container.get(CHAT_UI_BACKEND_STORE_TOKEN);
31
- cy.viewport(780, 800);
32
- cy.clock(Date.parse('2023-10-01T00:00:00Z'));
33
- });
34
- const render = () => {
35
- const ChatWrapper = provide({
36
- singletons: [
37
- {
38
- provide: CHAT_UI_STORE_TOKEN,
39
- useValue: chatUiStore,
40
- },
41
- {
42
- provide: CHAT_UI_BACKEND_STORE_TOKEN,
43
- useValue: chatUiBackendStore,
44
- },
45
- ],
46
- })(() => {
47
- const [chatUiStore, chatUiBackendStore] = useDependencies(CHAT_UI_STORE_TOKEN, CHAT_UI_BACKEND_STORE_TOKEN);
48
- useEffect(() => {
49
- const init = async () => {
50
- chatUiBackendStore.subscribe();
51
- await chatUiStore.run({
52
- agentName: 'EchoBot',
53
- agentIcon: ChatParticipantIcon.Bot,
54
- });
55
- };
56
- init().then(() => { });
57
- return () => chatUiBackendStore.unsubscribe();
58
- }, [chatUiStore, chatUiBackendStore]);
59
- return _jsx(Chat, { className: "h-100vh max-h-100vh" });
60
- });
61
- cy.spy(chatUiStore, 'run').as('runSpy');
62
- mount(_jsx(ChatWrapper, {}));
63
- ChatUiSelectors.chatConnecting.should('be.visible');
64
- cy.tick(1000);
65
- return cy.wrap(new Promise(resolve => {
66
- cy.get('@runSpy')
67
- .should('have.been.calledOnce')
68
- .then((invocation) => {
69
- const initPromise = invocation.firstCall.returnValue;
70
- initPromise.then(resolve);
71
- });
72
- }));
73
- };
74
- const ask = (message) => {
75
- ChatUiSelectors.chatInput.type(`${message}{enter}`);
76
- };
77
- it('should render default chat', () => {
78
- render().then(() => {
79
- ChatUiSelectors.chatMessages.should('be.visible');
80
- ChatUiSelectors.chatMessageAgent.should('have.length', 1).should('be.visible');
81
- ChatUiSelectors.chatMessageContentAgent
82
- .should('be.visible')
83
- .should('contain.text', "Hello! I'm generic echo bot. I can echo your messages. Try it out!");
84
- ChatUiSelectors.chatNotifications.should('exist');
85
- ChatUiSelectors.chatSend.should('be.visible').should('be.disabled');
86
- ChatUiSelectors.chatInput.should('be.visible').should('not.be.disabled');
87
- ChatUiSelectors.chatInput.type('Hello');
88
- ChatUiSelectors.chatSend.click();
89
- ChatUiSelectors.chatMessageUser
90
- .should('be.visible')
91
- .should('have.length', 1)
92
- .should('contain.text', 'Hello');
93
- ChatUiSelectors.chatMessageTyping.should('be.visible');
94
- ChatUiSelectors.chatMessageAgent.should('have.length', 1);
95
- cy.tick(1000);
96
- ChatUiSelectors.chatMessageTyping.should('not.exist');
97
- ChatUiSelectors.chatMessageAgent.should('have.length', 2);
98
- });
99
- });
100
- it('should render chat error message', () => {
101
- render().then(() => {
102
- chatUiStore.setTimer({ secondsTotal: 100, secondsLeft: 10 });
103
- chatUiStore.setError('error message', {
104
- title: 'Custom Error',
105
- recoverStrategy: {
106
- recoverButtonTitle: 'Recover button title',
107
- },
108
- });
109
- ChatUiSelectors.chatTimer.should('not.exist');
110
- ChatUiSelectors.chatError.should('be.visible');
111
- });
112
- });
113
- it('should handle send message error and retry', () => {
114
- render().then(() => {
115
- ask('[Error]Custom error message');
116
- cy.tick(1000);
117
- // Check error message
118
- ChatUiSelectors.chatMessageError
119
- .should('be.visible')
120
- .should('contain.text', 'Message not delivered. Retry');
121
- ChatUiSelectors.chatError
122
- .should('be.visible')
123
- .should('contain.text', ['Custom Error Title', 'Custom error message'].join(''));
124
- // Retry message
125
- ChatUiSelectors.chatMessageErrorRetry.should('be.visible').click();
126
- cy.tick(1000);
127
- });
128
- });
3
+ describe('Chat', () => {
4
+ runChatSharedTests(Chat);
129
5
  });
130
6
  //# sourceMappingURL=chat.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACH,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,WAAW,GAGd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,KAAK,GAAG,CAAC,QAAmB,EAAE,EAAE;IAClC,OAAO,OAAO,CAAC,KAAC,aAAa,cAAE,QAAQ,GAAiB,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE;IACvB,MAAM,aAAa,GAAG,IAAI,SAAS,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAClC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC;IACjC,SAAS,CAAC,IAAI,CAAe,mBAAmB,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrF,SAAS;SACJ,IAAI,CAAsB,2BAA2B,CAAC;SACtD,EAAE,CAAC,sBAAsB,CAAC;SAC1B,gBAAgB,EAAE,CAAC;IACxB,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACpB,IAAI,SAAoB,CAAC;IACzB,IAAI,WAAyB,CAAC;IAC9B,IAAI,kBAA0C,CAAC;IAE/C,UAAU,CAAC,GAAG,EAAE;QACZ,SAAS,GAAG,aAAa,EAAE,CAAC;QAC5B,WAAW,GAAG,SAAS,CAAC,GAAG,CAAe,mBAAmB,CAAC,CAAC;QAC/D,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAyB,2BAA2B,CAAC,CAAC;QACxF,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,GAAG,EAAE;QAChB,MAAM,WAAW,GAAG,OAAO,CAAC;YACxB,UAAU,EAAE;gBACR;oBACI,OAAO,EAAE,mBAAmB;oBAC5B,QAAQ,EAAE,WAAW;iBACxB;gBACD;oBACI,OAAO,EAAE,2BAA2B;oBACpC,QAAQ,EAAE,kBAAkB;iBAC/B;aACJ;SACJ,CAAC,CAAC,GAAG,EAAE;YACJ,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,GAAG,eAAe,CACrD,mBAAmB,EACnB,2BAA2B,CAC9B,CAAC;YACF,SAAS,CAAC,GAAG,EAAE;gBACX,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;oBACpB,kBAAkB,CAAC,SAAS,EAAE,CAAC;oBAC/B,MAAM,WAAW,CAAC,GAAG,CAAC;wBAClB,SAAS,EAAE,SAAS;wBACpB,SAAS,EAAE,mBAAmB,CAAC,GAAG;qBACrC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACtB,OAAO,GAAG,EAAE,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;YAClD,CAAC,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;YACtC,OAAO,KAAC,IAAI,IAAC,SAAS,EAAC,qBAAqB,GAAG,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACxC,KAAK,CAAC,KAAC,WAAW,KAAG,CAAC,CAAC;QAEvB,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACpD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,EAAE,CAAC,IAAI,CACV,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAClB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;iBACZ,MAAM,CAAC,sBAAsB,CAAC;iBAC9B,IAAI,CAAC,CAAC,UAAe,EAAE,EAAE;gBACtB,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,WAExC,CAAC;gBACF,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CACL,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,EAAE;QAC5B,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAClD,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC/E,eAAe,CAAC,uBAAuB;iBAClC,MAAM,CAAC,YAAY,CAAC;iBACpB,MAAM,CACH,cAAc,EACd,oEAAoE,CACvE,CAAC;YACN,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClD,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACpE,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAEzE,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEjC,eAAe,CAAC,eAAe;iBAC1B,MAAM,CAAC,YAAY,CAAC;iBACpB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;iBACxB,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACrC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvD,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAE1D,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACtD,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,WAAW,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7D,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE;gBAClC,KAAK,EAAE,cAAc;gBACrB,eAAe,EAAE;oBACb,kBAAkB,EAAE,sBAAsB;iBAC7C;aACJ,CAAC,CAAC;YAEH,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC9C,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,GAAG,CAAC,6BAA6B,CAAC,CAAC;YACnC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,sBAAsB;YACtB,eAAe,CAAC,gBAAgB;iBAC3B,MAAM,CAAC,YAAY,CAAC;iBACpB,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;YAC5D,eAAe,CAAC,SAAS;iBACpB,MAAM,CAAC,YAAY,CAAC;iBACpB,MAAM,CAAC,cAAc,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAErF,gBAAgB;YAChB,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;YACnE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"chat.test.js","sourceRoot":"","sources":["../../../../src/components/chat/__tests-cy__/chat.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAClB,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Flex, Spinner, Text } from '@servicetitan/anvil2';
3
3
  export const ChatConnecting = ({ className }) => {
4
- return (_jsx(Flex, { direction: "column", gap: "4", alignItems: "center", className: className, "data-cy": "titan-chat-connecting", children: _jsxs(Flex, { direction: "row", gap: "4", alignItems: "center", children: [_jsx(Spinner, {}), _jsx(Text, { className: "c-neutral-100", children: "Starting..." })] }) }));
4
+ return (_jsx(Flex, { direction: "column", gap: "4", alignItems: "center", className: className, "data-cy": "titan-chat-connecting", children: _jsxs(Flex, { direction: "row", gap: "4", alignItems: "center", children: [_jsx(Spinner, {}), _jsx(Text, { className: "c-subdued", children: "Starting..." })] }) }));
5
5
  };
6
6
  //# sourceMappingURL=chat-connecting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-connecting.js","sourceRoot":"","sources":["../../../src/components/chat/chat-connecting.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAO3D,MAAM,CAAC,MAAM,cAAc,GAA6B,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IACtE,OAAO,CACH,KAAC,IAAI,IACD,SAAS,EAAC,QAAQ,EAClB,GAAG,EAAC,GAAG,EACP,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAE,SAAS,aACZ,uBAAuB,YAE/B,MAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAC,GAAG,EAAC,UAAU,EAAC,QAAQ,aAC7C,KAAC,OAAO,KAAG,EACX,KAAC,IAAI,IAAC,SAAS,EAAC,eAAe,4BAAmB,IAC/C,GACJ,CACV,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"chat-connecting.js","sourceRoot":"","sources":["../../../src/components/chat/chat-connecting.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAO3D,MAAM,CAAC,MAAM,cAAc,GAA6B,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IACtE,OAAO,CACH,KAAC,IAAI,IACD,SAAS,EAAC,QAAQ,EAClB,GAAG,EAAC,GAAG,EACP,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAE,SAAS,aACZ,uBAAuB,YAE/B,MAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAC,GAAG,EAAC,UAAU,EAAC,QAAQ,aAC7C,KAAC,OAAO,KAAG,EACX,KAAC,IAAI,IAAC,SAAS,EAAC,WAAW,4BAAmB,IAC3C,GACJ,CACV,CAAC;AACN,CAAC,CAAC"}
@@ -1,3 +1,5 @@
1
1
  import { FC } from 'react';
2
- export declare const ChatError: FC;
2
+ export declare const ChatError: FC<{
3
+ className?: string;
4
+ }>;
3
5
  //# sourceMappingURL=chat-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-error.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-error.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAe,MAAM,OAAO,CAAC;AAIxC,eAAO,MAAM,SAAS,EAAE,EA+BtB,CAAC"}
1
+ {"version":3,"file":"chat-error.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-error.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAe,MAAM,OAAO,CAAC;AAGxC,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA6B/C,CAAC"}
@@ -1,12 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Announcement, Button } from '@servicetitan/anvil2';
2
+ import { Alert, Button, Flex } from '@servicetitan/anvil2';
3
3
  import { useDependencies } from '@servicetitan/react-ioc';
4
4
  import { CHAT_UI_STORE_TOKEN } from '@servicetitan/titan-chat-ui-common';
5
5
  import { observer } from 'mobx-react';
6
6
  import { useCallback } from 'react';
7
7
  import { MultilineText } from '../common/multiline-text';
8
- import * as Styles from './chat-error.module.less';
9
- export const ChatError = observer(() => {
8
+ export const ChatError = observer(({ className }) => {
10
9
  const [chatUiStore] = useDependencies(CHAT_UI_STORE_TOKEN);
11
10
  const { error } = chatUiStore;
12
11
  const handleReconnect = useCallback(async () => {
@@ -15,6 +14,6 @@ export const ChatError = observer(() => {
15
14
  if (!error) {
16
15
  return null;
17
16
  }
18
- return (_jsxs(Announcement, { status: "danger", title: error.title, className: Styles.banner, "data-cy": "titan-chat-error", children: [_jsx(MultilineText, { text: error.message, "data-cy": "titan-chat-error-text" }), error.recoverStrategy && (_jsx(Button, { className: "m-t-2 bg-white-i", size: "small", onClick: handleReconnect, "data-cy": "titan-chat-error-recover", children: error.recoverStrategy.recoverButtonTitle }))] }));
17
+ return (_jsx(Alert, { status: "danger", title: error.title, className: className, "data-cy": "titan-chat-error", children: _jsxs(Flex, { direction: "column", gap: "4", children: [_jsx(MultilineText, { text: error.message, "data-cy": "titan-chat-error-text" }), error.recoverStrategy && (_jsx(Button, { type: "button", appearance: "danger", size: "small", onClick: handleReconnect, "data-cy": "titan-chat-error-recover", children: error.recoverStrategy.recoverButtonTitle }))] }) }));
19
18
  });
20
19
  //# sourceMappingURL=chat-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-error.js","sourceRoot":"","sources":["../../../src/components/chat/chat-error.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAM,WAAW,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAAO,QAAQ,CAAC,GAAG,EAAE;IACvC,MAAM,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IAE9B,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CACH,MAAC,YAAY,IACT,MAAM,EAAC,QAAQ,EACf,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,SAAS,EAAE,MAAM,CAAC,MAAM,aAChB,kBAAkB,aAE1B,KAAC,aAAa,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,aAAU,uBAAuB,GAAG,EACrE,KAAK,CAAC,eAAe,IAAI,CACtB,KAAC,MAAM,IACH,SAAS,EAAC,kBAAkB,EAC5B,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,eAAe,aAChB,0BAA0B,YAEjC,KAAK,CAAC,eAAe,CAAC,kBAAkB,GACpC,CACZ,IACU,CAClB,CAAC;AACN,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"chat-error.js","sourceRoot":"","sources":["../../../src/components/chat/chat-error.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAM,WAAW,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,CAAC,MAAM,SAAS,GAA+B,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IAC5E,MAAM,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IAE9B,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CACH,KAAC,KAAK,IAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,aAAU,kBAAkB,YACvF,MAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAC,GAAG,aAC5B,KAAC,aAAa,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,aAAU,uBAAuB,GAAG,EACrE,KAAK,CAAC,eAAe,IAAI,CACtB,KAAC,MAAM,IACH,IAAI,EAAC,QAAQ,EACb,UAAU,EAAC,QAAQ,EACnB,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,eAAe,aAChB,0BAA0B,YAEjC,KAAK,CAAC,eAAe,CAAC,kBAAkB,GACpC,CACZ,IACE,GACH,CACX,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-input-file.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-input-file.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAoC,MAAM,OAAO,CAAC;AAE7D,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA6DnD,CAAC"}
1
+ {"version":3,"file":"chat-input-file.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-input-file.tsx"],"names":[],"mappings":"AASA,OAAO,EAAe,EAAE,EAAsD,MAAM,OAAO,CAAC;AAE5F,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA6FnD,CAAC"}
@@ -1,29 +1,33 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /* eslint-disable @typescript-eslint/no-unused-vars */
3
- import { Flex, Text } from '@servicetitan/anvil2';
2
+ import { Button, Card, Flex, Icon, Text } from '@servicetitan/anvil2';
3
+ import IconAttachment from '@servicetitan/anvil2/assets/icons/material/round/attach_file.svg';
4
+ import IconDelete from '@servicetitan/anvil2/assets/icons/material/round/delete.svg';
5
+ import IconFile from '@servicetitan/anvil2/assets/icons/material/round/insert_drive_file.svg';
6
+ import IconEdit from '@servicetitan/anvil2/assets/icons/material/round/refresh.svg';
4
7
  import { useDependencies } from '@servicetitan/react-ioc';
5
8
  import { CHAT_UI_STORE_TOKEN } from '@servicetitan/titan-chat-ui-common';
6
9
  import { observer } from 'mobx-react';
7
- import { useCallback, useEffect, useState } from 'react';
10
+ import { Fragment, useCallback, useEffect, useRef, useState } from 'react';
8
11
  export const ChatInputFile = observer(({ className }) => {
12
+ const fileInputRef = useRef(null);
9
13
  const [chatUiStore] = useDependencies(CHAT_UI_STORE_TOKEN);
10
14
  const [fileDescriptor, setFileDescriptor] = useState(undefined);
11
- const handleSelected = useCallback((newAttachments) => {
12
- const fileDescriptor = {
13
- file: newAttachments[0],
14
- displayName: newAttachments[0].name,
15
- };
16
- setFileDescriptor(fileDescriptor);
17
- chatUiStore.setFile(fileDescriptor);
18
- }, [chatUiStore]);
19
- const handleReplace = useCallback(({ newFile }) => {
15
+ const handleSelected = useCallback((event) => {
16
+ const files = event.target.files;
17
+ if (!files || files.length === 0) {
18
+ return;
19
+ }
20
20
  const fileDescriptor = {
21
- file: newFile,
22
- displayName: newFile.name,
21
+ file: files[0],
22
+ displayName: files[0].name,
23
23
  };
24
24
  setFileDescriptor(fileDescriptor);
25
25
  chatUiStore.setFile(fileDescriptor);
26
26
  }, [chatUiStore]);
27
+ const handleUpload = () => {
28
+ var _a;
29
+ (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click();
30
+ };
27
31
  const handleDelete = useCallback(() => {
28
32
  setFileDescriptor(undefined);
29
33
  chatUiStore.setFile(undefined);
@@ -36,6 +40,6 @@ export const ChatInputFile = observer(({ className }) => {
36
40
  if (!chatUiStore.isFilePickerEnabled) {
37
41
  return null;
38
42
  }
39
- return (_jsxs(Flex, { className: className, gap: "6", direction: "column", children: [_jsx(Text, { variant: "eyebrow", children: "Upload file" }), "FILE PICKER PLACEHOLDER"] }));
43
+ return (_jsxs(Flex, { className: className, gap: "6", direction: "column", children: [_jsx(Text, { variant: "eyebrow", children: "Upload file" }), _jsx("input", { type: "file", ref: fileInputRef, onChange: handleSelected, style: { display: 'none' }, accept: "*/*", multiple: false }), _jsx(Flex, { direction: "column", gap: "2", "data-cy": "titan-chat-upload-file", children: fileDescriptor ? (_jsx(Card, { padding: "small", children: _jsxs(Flex, { style: { width: '100%' }, direction: "row", alignItems: "center", gap: "2", children: [_jsx(Icon, { svg: IconFile, className: "m-inline-start-4" }), _jsx(Text, { variant: "body", flexGrow: 1, "data-cy": "titan-chat-upload-file-name", children: fileDescriptor.displayName }), _jsx(Button, { icon: IconEdit, "aria-label": "Replace file", appearance: "ghost", onClick: handleUpload, "data-cy": "titan-chat-upload-file-edit" }), _jsx(Button, { icon: IconDelete, "aria-label": "Delete file", appearance: "ghost", onClick: handleDelete, "data-cy": "titan-chat-upload-file-delete" })] }) })) : (_jsxs(Fragment, { children: [_jsx(Button, { type: "button", appearance: "secondary", icon: IconAttachment, onClick: handleUpload, "data-cy": "titan-chat-upload-file-btn", children: "Upload File" }), _jsx(Text, { variant: "body", size: "small", subdued: true, children: "e.g. Screenshot of issue" })] })) })] }));
40
44
  });
41
45
  //# sourceMappingURL=chat-input-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-input-file.js","sourceRoot":"","sources":["../../../src/components/chat/chat-input-file.tsx"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAM,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAA+B,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IAChF,MAAM,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAC3D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAA6B,SAAS,CAAC,CAAC;IAE5F,MAAM,cAAc,GAAG,WAAW,CAC9B,CAAC,cAAwB,EAAE,EAAE;QACzB,MAAM,cAAc,GAAmB;YACnC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;YACvB,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;SACtC,CAAC;QACF,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAClC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,WAAW,CAAC,CAChB,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC7B,CAAC,EAAE,OAAO,EAA2C,EAAE,EAAE;QACrD,MAAM,cAAc,GAAmB;YACnC,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,OAAO,CAAC,IAAI;SAC5B,CAAC;QACF,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAClC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,EACD,CAAC,WAAW,CAAC,CAChB,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7B,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACpB,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvB,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CACH,MAAC,IAAI,IAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAC,GAAG,EAAC,SAAS,EAAC,QAAQ,aAClD,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,4BAAmB,+BAevC,CACV,CAAC;AACN,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"chat-input-file.js","sourceRoot":"","sources":["../../../src/components/chat/chat-input-file.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-input.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-input.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAA2D,MAAM,OAAO,CAAC;AAMpF,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAmIhD,CAAC"}
1
+ {"version":3,"file":"chat-input.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-input.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,EAAE,EAAsE,MAAM,OAAO,CAAC;AAM/F,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAwIhD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button, Textarea } from '@servicetitan/anvil2';
2
+ import { Button, Flex, Textarea } from '@servicetitan/anvil2';
3
3
  import IconSend from '@servicetitan/anvil2/assets/icons/material/round/send.svg';
4
4
  import { provide, useDependencies } from '@servicetitan/react-ioc';
5
5
  import { CHAT_UI_STORE_TOKEN } from '@servicetitan/titan-chat-ui-common';
@@ -16,7 +16,8 @@ export const ChatInput = provide({
16
16
  const [isSending, setIsSending] = useState(false);
17
17
  const textareaRef = useRef(null);
18
18
  const [chatUiStore, supportChatInputStore] = useDependencies(CHAT_UI_STORE_TOKEN, ChatInputStore);
19
- const handleSendMessage = useCallback(async () => {
19
+ const handleSendMessage = useCallback(async (event) => {
20
+ event === null || event === void 0 ? void 0 : event.preventDefault();
20
21
  const validateResult = await supportChatInputStore.formState.validate();
21
22
  if (validateResult.hasError) {
22
23
  return;
@@ -81,15 +82,13 @@ export const ChatInput = provide({
81
82
  textareaRef.current.focus();
82
83
  }
83
84
  }, []);
84
- return (_jsx("form", { className: classNames(className), onSubmit: handleSendMessage, children: _jsxs("div", { className: classNames('d-f flex-row gap-2'), children: [_jsx(Textarea, { ref: textareaRef, name: "question", placeholder: "Type your message", rows: 1,
85
- // maxRows={2}
86
- autoHeight: true, onKeyDown: handleTextKeyPress, value: supportChatInputStore.formState.$.message.value, error: supportChatInputStore.formState.$.message.error, onChange: supportChatInputStore.formState.$.message.onChangeHandler, onFocus: () => {
85
+ return (_jsx("form", { className: classNames(className), onSubmit: handleSendMessage, children: _jsxs(Flex, { direction: "row", gap: 4, className: Styles.formContainer, children: [_jsx(Textarea, { ref: textareaRef, name: "question", placeholder: "Type your message", rows: 1, maxRows: 2, autoHeight: true, flexGrow: 1, onKeyDown: handleTextKeyPress, value: supportChatInputStore.formState.$.message.value, error: supportChatInputStore.formState.$.message.error, onChange: supportChatInputStore.formState.$.message.onChangeHandler, onFocus: () => {
87
86
  setTimeout(() => {
88
87
  chatUiStore.triggerScroll();
89
88
  }, 0);
90
89
  }, onBlur: () => {
91
90
  supportChatInputStore.formState.$.message.enableAutoValidationAndValidate();
92
- }, className: classNames('flex-grow-1', Styles.formTextarea), disabled: !chatUiStore.isStarted || isSending, "data-cy": "titan-chat-input" }), _jsx(Button, { className: "align-self-baseline", icon: IconSend, "data-pendo": "titan-chat-send", "data-cy": "titan-chat-send", type: "submit", appearance: "primary", "aria-label": "submit", disabled: !chatUiStore.isStarted ||
91
+ }, className: classNames('flex-grow-1', Styles.formTextarea), disabled: !chatUiStore.isStarted || isSending, "data-cy": "titan-chat-input" }), _jsx(Button, { alignSelf: "baseline", icon: IconSend, "data-pendo": "titan-chat-send", "data-cy": "titan-chat-send", type: "submit", appearance: "primary", "aria-label": "submit", disabled: !chatUiStore.isStarted ||
93
92
  isSending ||
94
93
  supportChatInputStore.formState.hasError ||
95
94
  supportChatInputStore.isEmpty })] }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../../src/components/chat/chat-input.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../../src/components/chat/chat-input.tsx"],"names":[],"mappings":"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"}