@servicetitan/titan-chat-ui 1.1.2 → 2.0.0

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 (90) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/chat/__tests-cy__/chat-messages.test.js +69 -1
  3. package/dist/components/chat/__tests-cy__/chat-messages.test.js.map +1 -1
  4. package/dist/components/chat/chat-input.js +2 -2
  5. package/dist/components/chat/chat-input.js.map +1 -1
  6. package/dist/components/chat/chat-log.d.ts +8 -0
  7. package/dist/components/chat/chat-log.d.ts.map +1 -0
  8. package/dist/components/chat/chat-log.js +15 -0
  9. package/dist/components/chat/chat-log.js.map +1 -0
  10. package/dist/components/chat/chat-message-template-agent.d.ts.map +1 -1
  11. package/dist/components/chat/chat-message-template-agent.js +2 -2
  12. package/dist/components/chat/chat-message-template-agent.js.map +1 -1
  13. package/dist/components/chat/chat-message-template-user.js +2 -2
  14. package/dist/components/chat/chat-message-template-user.js.map +1 -1
  15. package/dist/components/chat/chat-message.d.ts +1 -5
  16. package/dist/components/chat/chat-message.d.ts.map +1 -1
  17. package/dist/components/chat/chat-message.js +4 -4
  18. package/dist/components/chat/chat-message.js.map +1 -1
  19. package/dist/components/chat/chat-messages.d.ts +3 -0
  20. package/dist/components/chat/chat-messages.d.ts.map +1 -1
  21. package/dist/components/chat/chat-messages.js +35 -7
  22. package/dist/components/chat/chat-messages.js.map +1 -1
  23. package/dist/components/chat/chat.d.ts.map +1 -1
  24. package/dist/components/chat/chat.js +3 -1
  25. package/dist/components/chat/chat.js.map +1 -1
  26. package/dist/components/messages/__tests-cy__/message-agent.test.js +1 -1
  27. package/dist/components/messages/__tests-cy__/message-agent.test.js.map +1 -1
  28. package/dist/components/messages/message-agent.d.ts +1 -0
  29. package/dist/components/messages/message-agent.d.ts.map +1 -1
  30. package/dist/components/messages/message-agent.js +2 -4
  31. package/dist/components/messages/message-agent.js.map +1 -1
  32. package/dist/components/messages/message-agent.module.less +29 -37
  33. package/dist/components/messages/message-footer.d.ts +1 -1
  34. package/dist/components/messages/message-footer.d.ts.map +1 -1
  35. package/dist/components/messages/message-footer.js +1 -1
  36. package/dist/components/messages/message-footer.js.map +1 -1
  37. package/dist/components/messages/message-user.js +2 -2
  38. package/dist/components/messages/message-user.js.map +1 -1
  39. package/dist/components/messages/message-user.module.less +3 -6
  40. package/dist/index.d.ts +3 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +3 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/models/chat-customizations.d.ts +14 -6
  45. package/dist/models/chat-customizations.d.ts.map +1 -1
  46. package/dist/models/support-chat.d.ts +4 -4
  47. package/dist/models/support-chat.d.ts.map +1 -1
  48. package/dist/models/support-chat.js +18 -0
  49. package/dist/models/support-chat.js.map +1 -1
  50. package/dist/stores/__mocks-cy__/chat-ui.store.mock.d.ts +6 -1
  51. package/dist/stores/__mocks-cy__/chat-ui.store.mock.d.ts.map +1 -1
  52. package/dist/stores/__mocks-cy__/chat-ui.store.mock.js +30 -0
  53. package/dist/stores/__mocks-cy__/chat-ui.store.mock.js.map +1 -1
  54. package/dist/stores/__tests__/chat-input.store.test.d.ts +2 -0
  55. package/dist/stores/__tests__/chat-input.store.test.d.ts.map +1 -0
  56. package/dist/stores/__tests__/chat-input.store.test.js +32 -0
  57. package/dist/stores/__tests__/chat-input.store.test.js.map +1 -0
  58. package/dist/stores/chat-ui.store.d.ts +19 -10
  59. package/dist/stores/chat-ui.store.d.ts.map +1 -1
  60. package/dist/stores/chat-ui.store.js +47 -48
  61. package/dist/stores/chat-ui.store.js.map +1 -1
  62. package/dist/utils/test-utils.d.ts +5 -0
  63. package/dist/utils/test-utils.d.ts.map +1 -0
  64. package/dist/utils/test-utils.js +17 -0
  65. package/dist/utils/test-utils.js.map +1 -0
  66. package/package.json +2 -2
  67. package/src/components/chat/__tests-cy__/chat-messages.test.tsx +78 -1
  68. package/src/components/chat/chat-input.tsx +4 -4
  69. package/src/components/chat/chat-log.tsx +29 -0
  70. package/src/components/chat/chat-message-template-agent.tsx +7 -3
  71. package/src/components/chat/chat-message-template-user.tsx +3 -3
  72. package/src/components/chat/chat-message.tsx +58 -52
  73. package/src/components/chat/chat-messages.tsx +55 -11
  74. package/src/components/chat/chat.tsx +14 -8
  75. package/src/components/messages/__tests-cy__/message-agent.test.tsx +1 -1
  76. package/src/components/messages/message-agent.module.less +29 -37
  77. package/src/components/messages/message-agent.module.less.d.ts +0 -1
  78. package/src/components/messages/message-agent.tsx +4 -4
  79. package/src/components/messages/message-footer.tsx +4 -3
  80. package/src/components/messages/message-user.module.less +3 -6
  81. package/src/components/messages/message-user.tsx +5 -5
  82. package/src/index.ts +3 -0
  83. package/src/models/chat-customizations.ts +17 -6
  84. package/src/models/support-chat.ts +22 -10
  85. package/src/stores/__mocks-cy__/chat-ui.store.mock.ts +6 -0
  86. package/src/stores/__tests__/chat-input.store.test.ts +39 -0
  87. package/src/stores/chat-ui.store.ts +54 -55
  88. package/src/utils/test-utils.ts +22 -0
  89. package/tsconfig.json +1 -2
  90. package/tsconfig.tsbuildinfo +1 -1
@@ -19,12 +19,15 @@ export var ChatUiEvent;
19
19
  ChatUiEvent["eventRun"] = "eventRun";
20
20
  ChatUiEvent["eventDestroy"] = "eventDestroy";
21
21
  ChatUiEvent["eventRestart"] = "eventRestart";
22
+ ChatUiEvent["eventCancel"] = "eventCancel";
23
+ ChatUiEvent["eventEndChat"] = "eventEndChat";
22
24
  ChatUiEvent["eventRecover"] = "eventRecover";
23
25
  ChatUiEvent["eventChasitorTyping"] = "eventChasitorTyping";
24
26
  ChatUiEvent["eventTimerRestart"] = "eventTimerRestart";
25
27
  ChatUiEvent["eventMessageSend"] = "eventMessageSend";
26
- ChatUiEvent["eventMessageSendFile"] = "eventMessageSendFile";
27
28
  ChatUiEvent["eventMessageSendRetry"] = "eventMessageSendRetry";
29
+ ChatUiEvent["eventMessageSendFile"] = "eventMessageSendFile";
30
+ ChatUiEvent["eventMessageSendFileRetry"] = "eventMessageSendFileRetry";
28
31
  })(ChatUiEvent || (ChatUiEvent = {}));
29
32
  export const CHAT_UI_STORE_TOKEN = symbolToken('CHAT_UI_STORE_TOKEN');
30
33
  let ChatUiStore = class ChatUiStore {
@@ -257,18 +260,18 @@ let ChatUiStore = class ChatUiStore {
257
260
  this.reset();
258
261
  await this.emitAsync(ChatUiEvent.eventDestroy);
259
262
  }
260
- restart() {
263
+ async restart() {
261
264
  this.reset();
262
- this.eventEmitter.emit('restart');
265
+ await this.emitAsync(ChatUiEvent.eventRestart);
263
266
  }
264
- cancelChat() {
265
- this.eventEmitter.emit('cancelChat');
267
+ async cancelChat() {
268
+ await this.emitAsync(ChatUiEvent.eventCancel);
266
269
  }
267
- endChat() {
268
- this.eventEmitter.emit('endChat');
270
+ async endChat(endReason) {
271
+ await this.emitAsync(ChatUiEvent.eventEndChat, endReason);
269
272
  }
270
273
  async chasitorTyping(isTyping) {
271
- await this.emitAsync(ChatUiEvent.eventChasitorTyping, isTyping ? 'chasitorTyping' : 'chasitorNotTyping');
274
+ await this.emitAsync(ChatUiEvent.eventChasitorTyping, isTyping);
272
275
  }
273
276
  async sendMessageText(message) {
274
277
  await this.restartTimers();
@@ -293,10 +296,10 @@ let ChatUiStore = class ChatUiStore {
293
296
  this.setMessageState(messageModel, ChatMessageState.Delivering);
294
297
  await this.emitAsync(ChatUiEvent.eventMessageSendRetry, messageModel);
295
298
  }
296
- sendMessageFileRetry(messageModel) {
299
+ async sendMessageFileRetry(messageModel) {
297
300
  this.resetError(ChatRunState.Started);
298
301
  this.setMessageState(messageModel, ChatMessageState.Delivering);
299
- this.eventEmitter.emit('sendMessageFileRetry', messageModel);
302
+ await this.emitAsync(ChatUiEvent.eventMessageSendFileRetry, messageModel);
300
303
  }
301
304
  getParticipant(participantKey) {
302
305
  const participant = this.participants[participantKey];
@@ -352,6 +355,22 @@ let ChatUiStore = class ChatUiStore {
352
355
  }
353
356
  }
354
357
  }
358
+ resetFile() {
359
+ this.currentFileMessage = undefined;
360
+ this.file = undefined;
361
+ this.isFilePickerEnabled = false;
362
+ this.triggerScroll();
363
+ }
364
+ reset(resetStatus = true) {
365
+ this.setMessages([]);
366
+ if (resetStatus) {
367
+ this.status = ChatRunState.Offline;
368
+ }
369
+ this.error = undefined;
370
+ this.isAgentTyping = false;
371
+ this.endReason = undefined;
372
+ this.resetFile();
373
+ }
355
374
  getLastFailedMessages() {
356
375
  const result = [];
357
376
  for (let i = this.messages.length - 1; i >= 0; i--) {
@@ -372,22 +391,6 @@ let ChatUiStore = class ChatUiStore {
372
391
  });
373
392
  }, 0);
374
393
  }
375
- reset(resetStatus = true) {
376
- this.setMessages([]);
377
- if (resetStatus) {
378
- this.status = ChatRunState.Offline;
379
- }
380
- this.error = undefined;
381
- this.isAgentTyping = false;
382
- this.endReason = undefined;
383
- this.resetFile();
384
- }
385
- resetFile() {
386
- this.currentFileMessage = undefined;
387
- this.file = undefined;
388
- this.isFilePickerEnabled = false;
389
- this.triggerScroll();
390
- }
391
394
  async emitAsync(event, ...args) {
392
395
  if (!this.eventEmitter.listenerCount(event)) {
393
396
  return Promise.resolve();
@@ -396,21 +399,13 @@ let ChatUiStore = class ChatUiStore {
396
399
  this.eventEmitter.emit(event, resolve, reject, ...args);
397
400
  });
398
401
  }
399
- async sendMessageTextInternal(message) {
400
- if (message.trim() === '') {
401
- return;
402
- }
403
- const messageModel = this.addMessage(false, message);
404
- await this.emitAsync(ChatUiEvent.eventMessageSend, messageModel);
405
- }
406
402
  addMessageInternal(message) {
407
403
  if (message.type === 'timeout') {
408
404
  this.removeMessageByType('timeout'); // Remove previous timeout messages
409
405
  }
410
406
  else {
411
- this.restartTimers();
407
+ this.restartTimers().then(() => { });
412
408
  }
413
- this.removeAskSupportButtons();
414
409
  const newMessage = this.createMessage(message);
415
410
  this.setMessages([...this.messages, newMessage]);
416
411
  if (message.participant.isAgent) {
@@ -418,6 +413,18 @@ let ChatUiStore = class ChatUiStore {
418
413
  }
419
414
  return newMessage;
420
415
  }
416
+ removeMessageByType(type) {
417
+ if (this.messages.some(m => m.type === type)) {
418
+ this.setMessages(this.messages.filter(m => m.type !== type));
419
+ }
420
+ }
421
+ async sendMessageTextInternal(message) {
422
+ if (message.trim() === '') {
423
+ return;
424
+ }
425
+ const messageModel = this.addMessage(false, message);
426
+ await this.emitAsync(ChatUiEvent.eventMessageSend, messageModel);
427
+ }
421
428
  createMessage(rest) {
422
429
  return {
423
430
  id: nanoid(),
@@ -439,14 +446,6 @@ let ChatUiStore = class ChatUiStore {
439
446
  this.incomingMessageSoundPromise = undefined;
440
447
  }
441
448
  }
442
- removeMessageByType(type) {
443
- if (this.messages.some(m => m.type === type)) {
444
- this.setMessages(this.messages.filter(m => m.type !== type));
445
- }
446
- }
447
- removeAskSupportButtons() {
448
- this.removeMessageByType('askSupportButtons');
449
- }
450
449
  };
451
450
  __decorate([
452
451
  observable,
@@ -627,7 +626,7 @@ __decorate([
627
626
  action,
628
627
  __metadata("design:type", Function),
629
628
  __metadata("design:paramtypes", [Object]),
630
- __metadata("design:returntype", void 0)
629
+ __metadata("design:returntype", Promise)
631
630
  ], ChatUiStore.prototype, "sendMessageFileRetry", null);
632
631
  __decorate([
633
632
  action,
@@ -668,15 +667,15 @@ __decorate([
668
667
  __decorate([
669
668
  action,
670
669
  __metadata("design:type", Function),
671
- __metadata("design:paramtypes", [Object]),
670
+ __metadata("design:paramtypes", []),
672
671
  __metadata("design:returntype", void 0)
673
- ], ChatUiStore.prototype, "reset", null);
672
+ ], ChatUiStore.prototype, "resetFile", null);
674
673
  __decorate([
675
674
  action,
676
675
  __metadata("design:type", Function),
677
- __metadata("design:paramtypes", []),
676
+ __metadata("design:paramtypes", [Object]),
678
677
  __metadata("design:returntype", void 0)
679
- ], ChatUiStore.prototype, "resetFile", null);
678
+ ], ChatUiStore.prototype, "reset", null);
680
679
  ChatUiStore = __decorate([
681
680
  injectable(),
682
681
  __metadata("design:paramtypes", [])
@@ -1 +1 @@
1
- {"version":3,"file":"chat-ui.store.js","sourceRoot":"","sources":["../../src/stores/chat-ui.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-ui.store.js","sourceRoot":"","sources":["../../src/stores/chat-ui.store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Container } from '@servicetitan/react-ioc';
2
+ type Newable<T> = new (...args: never[]) => T;
3
+ export declare const initTestContainer: (serviceIdentifier: Newable<unknown> | Newable<unknown>[], initDependenciesFn: (container: Container) => void) => () => Container;
4
+ export {};
5
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/utils/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,KAAK,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAE9C,eAAO,MAAM,iBAAiB,GAC1B,mBAAmB,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EACxD,oBAAoB,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,oBAerD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Container } from '@servicetitan/react-ioc';
2
+ export const initTestContainer = (serviceIdentifier, initDependenciesFn) => {
3
+ const rootContainer = new Container();
4
+ if (Array.isArray(serviceIdentifier)) {
5
+ serviceIdentifier.forEach(identifier => rootContainer.bind(identifier).toSelf());
6
+ }
7
+ else {
8
+ rootContainer.bind(serviceIdentifier).toSelf();
9
+ }
10
+ return () => {
11
+ const container = new Container();
12
+ container.parent = rootContainer;
13
+ initDependenciesFn(container);
14
+ return container;
15
+ };
16
+ };
17
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/utils/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,iBAAwD,EACxD,kBAAkD,EACpD,EAAE;IACA,MAAM,aAAa,GAAG,IAAI,SAAS,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACnC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC;SAAM,CAAC;QACJ,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,GAAG,EAAE;QACR,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC;QACjC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC9B,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;AACN,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/titan-chat-ui",
3
- "version": "1.1.2",
3
+ "version": "2.0.0",
4
4
  "description": "Chat experience UI package",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,5 +48,5 @@
48
48
  "cli": {
49
49
  "webpack": false
50
50
  },
51
- "gitHead": "9cd3842d57775d035cc818521f88af23d9919f56"
51
+ "gitHead": "8d2294bfd41ba7e359158d45136505e4e596b72c"
52
52
  }
@@ -1,5 +1,6 @@
1
1
  import { Provider } from '@servicetitan/react-ioc';
2
2
  import { mount } from 'cypress/react';
3
+ import { mockChatMessageModelText } from '../../../models';
3
4
  import { CHAT_UI_STORE_TOKEN } from '../../../stores';
4
5
  import { ChatUiStoreMock } from '../../../stores/__mocks-cy__/chat-ui.store.mock';
5
6
  import { ChatMessages } from '../chat-messages';
@@ -23,7 +24,7 @@ describe('[ChatMessages]', () => {
23
24
  },
24
25
  ]}
25
26
  >
26
- <ChatMessages />
27
+ <ChatMessages messages={storeMock.messages} />
27
28
  </Provider>
28
29
  );
29
30
  };
@@ -33,4 +34,80 @@ describe('[ChatMessages]', () => {
33
34
  cy.getCy('titan-chat-messages').should('be.visible');
34
35
  cy.getCy2('chat-message-normal').should('have.length', 2);
35
36
  });
37
+
38
+ it('should render several consecutive agent messages without extra avatars', () => {
39
+ storeMock.messages = [
40
+ mockChatMessageModelText(true, {
41
+ id: 'id1',
42
+ timestamp: new Date('2023-01-01T10:10:00Z'),
43
+ message: 'Hello, this is the first message',
44
+ }),
45
+ mockChatMessageModelText(true, {
46
+ id: 'id2',
47
+ message: 'Hello, this is the second message. '.repeat(5).trim(),
48
+ timestamp: new Date('2023-01-01T10:10:59.999Z'),
49
+ }),
50
+ mockChatMessageModelText(true, {
51
+ id: 'id3',
52
+ message: 'Hello, this is the third message',
53
+ timestamp: new Date('2023-01-01T10:11:00Z'),
54
+ }),
55
+ mockChatMessageModelText(true, {
56
+ id: 'id4',
57
+ message: 'Hello, this is the forth message',
58
+ timestamp: new Date('2023-01-01T10:11:01Z'),
59
+ }),
60
+ mockChatMessageModelText(false, {
61
+ id: 'id11',
62
+ timestamp: new Date('2023-01-01T11:10:00Z'),
63
+ message: 'Hello, this is the first message',
64
+ }),
65
+ mockChatMessageModelText(false, {
66
+ id: 'id22',
67
+ message: 'Hello, this is the second message',
68
+ timestamp: new Date('2023-01-01T11:11:00Z'),
69
+ }),
70
+ mockChatMessageModelText(false, {
71
+ id: 'id33',
72
+ message: 'Hello, this is the third message',
73
+ timestamp: new Date('2023-01-01T11:12:00Z'),
74
+ }),
75
+ mockChatMessageModelText(false, {
76
+ id: 'id44',
77
+ message: 'Hello, this is the forth message',
78
+ timestamp: new Date('2023-01-01T11:12:01Z'),
79
+ }),
80
+ ];
81
+ render();
82
+
83
+ const getAgentMessages = () =>
84
+ cy.getCy2('chat-message-normal').filter('[data-cy="chat-message-agent"]');
85
+ const getUserMessages = () =>
86
+ cy.getCy2('chat-message-normal').filter('[data-cy="chat-message-user"]');
87
+ const getAvatar = (i: number) =>
88
+ getAgentMessages().eq(i).find('[data-cy="chat-avatar-bot"]');
89
+ const getTimestamp = (i: number, isUser = false) =>
90
+ (isUser ? getUserMessages() : getAgentMessages())
91
+ .eq(i)
92
+ .find(`[data-cy="chat-message-${isUser ? 'user' : 'agent'}-footer"]`);
93
+
94
+ getAgentMessages().should('have.length', 4);
95
+ getUserMessages().should('have.length', 4);
96
+
97
+ // Agent avatar should be visible only for the first message in group
98
+ getAvatar(0).should('be.visible');
99
+ getAvatar(1).should('not.exist');
100
+ getAvatar(2).should('not.exist');
101
+ getAvatar(3).should('not.exist');
102
+
103
+ // Footer with date should be visible only for the different formatted timestamps
104
+ getTimestamp(0).should('not.exist');
105
+ getTimestamp(1).should('be.visible').should('contain.text', 'agent • 10:10 AM');
106
+ getTimestamp(2).should('not.exist');
107
+ getTimestamp(3).should('be.visible').should('contain.text', 'agent • 10:11 AM');
108
+ getTimestamp(0, true).should('be.visible').should('contain.text', '11:10 AM');
109
+ getTimestamp(1, true).should('be.visible').should('contain.text', '11:11 AM');
110
+ getTimestamp(2, true).should('not.exist');
111
+ getTimestamp(3, true).should('be.visible').should('contain.text', '11:12 AM');
112
+ });
36
113
  });
@@ -1,4 +1,4 @@
1
- import { Button, Form, FormTextArea, Stack } from '@servicetitan/design-system';
1
+ import { Button, Form, FormTextArea } from '@servicetitan/design-system';
2
2
  import { provide, useDependencies } from '@servicetitan/react-ioc';
3
3
  import classNames from 'classnames';
4
4
  import { observer } from 'mobx-react';
@@ -96,8 +96,8 @@ export const ChatInput: FC<{ className?: string }> = provide({
96
96
  }, []);
97
97
 
98
98
  return (
99
- <Form className={className} onSubmit={handleSendMessage}>
100
- <Stack direction="row" spacing="2">
99
+ <Form className={classNames(className)} onSubmit={handleSendMessage}>
100
+ <div className={classNames('d-f flex-row gap-2')}>
101
101
  <FormTextArea
102
102
  ref={textareaRef}
103
103
  name="question"
@@ -136,7 +136,7 @@ export const ChatInput: FC<{ className?: string }> = provide({
136
136
  supportChatInputStore.isEmpty
137
137
  }
138
138
  />
139
- </Stack>
139
+ </div>
140
140
  </Form>
141
141
  );
142
142
  })
@@ -0,0 +1,29 @@
1
+ import { Stack } from '@servicetitan/design-system';
2
+ import { useDependencies } from '@servicetitan/react-ioc';
3
+ import { observer } from 'mobx-react';
4
+ import { FC, useEffect } from 'react';
5
+ import { ChatCustomizations } from '../../models';
6
+ import { CHAT_UI_STORE_TOKEN } from '../../stores';
7
+ import { ChatMessages } from './chat-messages';
8
+
9
+ export interface IChatProps {
10
+ className?: string;
11
+ customizations?: ChatCustomizations;
12
+ }
13
+
14
+ export const ChatLog: FC<IChatProps> = observer(({ className, customizations }) => {
15
+ const [chatUiStore] = useDependencies(CHAT_UI_STORE_TOKEN);
16
+
17
+ useEffect(() => {
18
+ chatUiStore.setCustomizationContext(customizations);
19
+ }, [chatUiStore, customizations]);
20
+
21
+ return (
22
+ <Stack direction="column" className={className} data-cy="titan-chat">
23
+ <ChatMessages
24
+ messages={chatUiStore.messages}
25
+ showTypingIndicator={chatUiStore.isAgentTyping}
26
+ />
27
+ </Stack>
28
+ );
29
+ });
@@ -7,17 +7,21 @@ import { MessageFooter } from '../messages/message-footer';
7
7
  import { useAvatarProps } from '../messages/use-avatar-props';
8
8
 
9
9
  export const ChatMessageTemplateAgent: FC<PropsWithChildren<IChatMessageProps>> = observer(
10
- ({ children, message }) => {
10
+ ({ children, message, omitAvatar, omitTimestamp }) => {
11
11
  const {
12
12
  participant: { icon, name },
13
13
  } = message;
14
14
  const firstName = useMemo(() => getFirstName(name), [name]);
15
15
  const avatarProps = useAvatarProps(name, icon);
16
-
17
16
  return (
18
17
  <MessageAgent
19
18
  avatar={avatarProps}
20
- messageFooter={<MessageFooter name={firstName} timestamp={message.timestamp} />}
19
+ omitAvatar={omitAvatar}
20
+ messageFooter={
21
+ !omitTimestamp ? (
22
+ <MessageFooter name={firstName} timestamp={message.timestamp} />
23
+ ) : undefined
24
+ }
21
25
  >
22
26
  {children}
23
27
  </MessageAgent>
@@ -8,7 +8,7 @@ import { MessageFooter } from '../messages/message-footer';
8
8
  import { MessageUser } from '../messages/message-user';
9
9
 
10
10
  export const ChatMessageTemplateUser: FC<PropsWithChildren<IChatMessageProps>> = observer(
11
- ({ children, message }) => {
11
+ ({ children, message, omitTimestamp }) => {
12
12
  const [chatUiStore] = useDependencies(CHAT_UI_STORE_TOKEN);
13
13
  const isError = message.state === ChatMessageState.Failed;
14
14
 
@@ -34,9 +34,9 @@ export const ChatMessageTemplateUser: FC<PropsWithChildren<IChatMessageProps>> =
34
34
  data-cy="titan-chat-message-user-retry"
35
35
  />
36
36
  </Eyebrow>
37
- ) : (
37
+ ) : !omitTimestamp ? (
38
38
  <MessageFooter timestamp={message.timestamp} />
39
- )
39
+ ) : null
40
40
  }
41
41
  >
42
42
  {children}
@@ -2,8 +2,8 @@ import { BodyText } from '@servicetitan/design-system';
2
2
  import { useDependencies } from '@servicetitan/react-ioc';
3
3
  import { observer } from 'mobx-react';
4
4
  import { FC, PropsWithChildren, ReactNode } from 'react';
5
+ import { IChatMessageProps } from '../../models';
5
6
  import {
6
- ChatMessageModelBase,
7
7
  ChatMessageModelFile,
8
8
  ChatMessageModelText,
9
9
  ChatMessageModelWelcome,
@@ -14,65 +14,71 @@ import { MessageContentText } from '../message-content/message-content-text';
14
14
  import { ChatMessageTemplateAgent } from './chat-message-template-agent';
15
15
  import { ChatMessageTemplateUser } from './chat-message-template-user';
16
16
 
17
- interface IChatMessageProps {
18
- message: ChatMessageModelBase;
19
- }
20
-
21
17
  /**
22
18
  * ChatMessage component provides a default way to render chat messages in the chat UI and contains only most generic
23
19
  * components and templates/customizations rendering
24
20
  */
25
- export const ChatMessage: FC<IChatMessageProps> = observer(({ message }) => {
26
- const [chatUiStore] = useDependencies(CHAT_UI_STORE_TOKEN);
27
- const isAgent = message.participant.isAgent;
28
- const { messageTemplates, messages } = chatUiStore.customizations;
29
- const messageCustomization = messages?.find(c => c.predicate(message));
30
- const isSystem = Boolean(messageCustomization?.isSystem);
21
+ export const ChatMessage: FC<IChatMessageProps> = observer(
22
+ ({ message, omitAvatar, omitTimestamp }) => {
23
+ const [chatUiStore] = useDependencies(CHAT_UI_STORE_TOKEN);
24
+ const isAgent = message.participant.isAgent;
25
+ const { messageTemplates, messages } = chatUiStore.customizations;
26
+ const messageCustomization = messages?.find(c => c.predicate(message));
27
+ const isSystem = Boolean(messageCustomization?.isSystem);
31
28
 
32
- let messageContentNode: ReactNode | undefined;
33
- if (messageCustomization) {
34
- messageContentNode = <messageCustomization.component message={message} />;
35
- } else {
36
- // Default message content rendering
37
- switch (message.type) {
38
- case 'message':
39
- case 'welcome':
40
- messageContentNode = (
41
- <MessageContentText
42
- message={message as ChatMessageModelText | ChatMessageModelWelcome}
43
- />
44
- );
45
- break;
46
- case 'file':
47
- messageContentNode = (
48
- <MessageContentFile message={message as ChatMessageModelFile} />
49
- );
50
- break;
51
- default: {
52
- messageContentNode = <BodyText>Unknown message type: {message.type}</BodyText>;
29
+ let messageContentNode: ReactNode | undefined;
30
+ if (messageCustomization?.component) {
31
+ messageContentNode = <messageCustomization.component message={message} />;
32
+ } else {
33
+ // Default message content rendering
34
+ switch (message.type) {
35
+ case 'message':
36
+ case 'welcome':
37
+ messageContentNode = (
38
+ <MessageContentText
39
+ message={message as ChatMessageModelText | ChatMessageModelWelcome}
40
+ />
41
+ );
42
+ break;
43
+ case 'file':
44
+ messageContentNode = (
45
+ <MessageContentFile message={message as ChatMessageModelFile} />
46
+ );
47
+ break;
48
+ default: {
49
+ messageContentNode = <BodyText>Unknown message type: {message.type}</BodyText>;
50
+ }
53
51
  }
54
52
  }
55
- }
56
53
 
57
- if (!messageContentNode) {
58
- return null;
59
- }
54
+ if (!messageContentNode || messageCustomization?.isIgnored) {
55
+ return null;
56
+ }
60
57
 
61
- if (isSystem) {
62
- return messageContentNode;
63
- }
58
+ if (isSystem) {
59
+ return messageContentNode;
60
+ }
64
61
 
65
- let ComponentTemplate: FC<PropsWithChildren<IChatMessageProps>>;
66
- if (isAgent) {
67
- const template = messageTemplates?.agent;
68
- ComponentTemplate = template?.predicate(message)
69
- ? template.component
70
- : ChatMessageTemplateAgent;
71
- } else {
72
- const template = messageTemplates?.user;
73
- ComponentTemplate = template?.predicate(message)
74
- ? template.component
75
- : ChatMessageTemplateUser;
62
+ let ComponentTemplate: FC<PropsWithChildren<IChatMessageProps>>;
63
+ if (isAgent) {
64
+ const template = messageTemplates?.agent;
65
+ ComponentTemplate = template?.predicate(message)
66
+ ? template.component
67
+ : ChatMessageTemplateAgent;
68
+ } else {
69
+ const template = messageTemplates?.user;
70
+ ComponentTemplate = template?.predicate(message)
71
+ ? template.component
72
+ : ChatMessageTemplateUser;
73
+ }
74
+ return (
75
+ <ComponentTemplate
76
+ message={message}
77
+ omitAvatar={omitAvatar}
78
+ omitTimestamp={omitTimestamp}
79
+ >
80
+ {messageContentNode}
81
+ </ComponentTemplate>
82
+ );
76
83
  }
77
- return <ComponentTemplate message={message}>{messageContentNode}</ComponentTemplate>;
78
- });
84
+ );