agx-chat-web 0.4.9 → 0.4.11

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 (116) hide show
  1. package/package.json +1 -1
  2. package/src/app/Messenger/components/ChatTabs/ChatTabs.less +1 -1
  3. package/src/app/Messenger/components/InputFile/inputFile.less +6 -6
  4. package/src/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.tsx +41 -38
  5. package/src/app/Messenger/components/SearchInput/SearchInput.less +3 -3
  6. package/src/app/Messenger/components/SenderMessages/SenderMessages.tsx +36 -18
  7. package/src/app/Messenger/icons/TimerIcon.tsx +13 -5
  8. package/src/app/Messenger/views/Messenger.less +13 -13
  9. package/src/app/Messenger/views/MessengerList.tsx +4 -1
  10. package/src/app/Messenger/views/MessengerListItem.tsx +67 -26
  11. package/src/styles/abstracts/variables.less +3 -0
  12. package/dist/agx-chat.js +0 -3
  13. package/dist/agx-chat.js.LICENSE.txt +0 -303
  14. package/dist/agx-chat.js.map +0 -1
  15. package/dist/agx-chat.min.js +0 -3
  16. package/dist/agx-chat.min.js.LICENSE.txt +0 -303
  17. package/dist/agx-chat.min.js.map +0 -1
  18. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.d.ts +0 -1
  19. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js +0 -46
  20. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js.map +0 -1
  21. package/dist/esm/app/Messenger/classes/slaCalculations.d.ts +0 -30
  22. package/dist/esm/app/Messenger/classes/slaCalculations.js +0 -142
  23. package/dist/esm/app/Messenger/classes/slaCalculations.js.map +0 -1
  24. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.d.ts +0 -14
  25. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js +0 -31
  26. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js.map +0 -1
  27. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.d.ts +0 -9
  28. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js +0 -15
  29. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js.map +0 -1
  30. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.d.ts +0 -3
  31. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js +0 -24
  32. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js.map +0 -1
  33. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.d.ts +0 -3
  34. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js +0 -33
  35. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js.map +0 -1
  36. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.d.ts +0 -11
  37. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js +0 -37
  38. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js.map +0 -1
  39. package/dist/esm/app/Messenger/components/InputFile/InputFile.d.ts +0 -8
  40. package/dist/esm/app/Messenger/components/InputFile/InputFile.js +0 -59
  41. package/dist/esm/app/Messenger/components/InputFile/InputFile.js.map +0 -1
  42. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.d.ts +0 -8
  43. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js +0 -32
  44. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js.map +0 -1
  45. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.d.ts +0 -3
  46. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js +0 -13
  47. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js.map +0 -1
  48. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.d.ts +0 -40
  49. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js +0 -39
  50. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js.map +0 -1
  51. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.d.ts +0 -10
  52. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js +0 -32
  53. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js.map +0 -1
  54. package/dist/esm/app/Messenger/components/Select/Select.d.ts +0 -13
  55. package/dist/esm/app/Messenger/components/Select/Select.js +0 -16
  56. package/dist/esm/app/Messenger/components/Select/Select.js.map +0 -1
  57. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.d.ts +0 -3
  58. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js +0 -32
  59. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js.map +0 -1
  60. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.d.ts +0 -3
  61. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js +0 -14
  62. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js.map +0 -1
  63. package/dist/esm/app/Messenger/components/TextArea/TextArea.d.ts +0 -8
  64. package/dist/esm/app/Messenger/components/TextArea/TextArea.js +0 -14
  65. package/dist/esm/app/Messenger/components/TextArea/TextArea.js.map +0 -1
  66. package/dist/esm/app/Messenger/hooks/useConversations.d.ts +0 -11
  67. package/dist/esm/app/Messenger/hooks/useConversations.js +0 -59
  68. package/dist/esm/app/Messenger/hooks/useConversations.js.map +0 -1
  69. package/dist/esm/app/Messenger/hooks/useThemes.d.ts +0 -31
  70. package/dist/esm/app/Messenger/hooks/useThemes.js +0 -11
  71. package/dist/esm/app/Messenger/hooks/useThemes.js.map +0 -1
  72. package/dist/esm/app/Messenger/icons/AttachFileIcon.d.ts +0 -3
  73. package/dist/esm/app/Messenger/icons/AttachFileIcon.js +0 -10
  74. package/dist/esm/app/Messenger/icons/AttachFileIcon.js.map +0 -1
  75. package/dist/esm/app/Messenger/icons/CloseIcon.d.ts +0 -1
  76. package/dist/esm/app/Messenger/icons/CloseIcon.js +0 -9
  77. package/dist/esm/app/Messenger/icons/CloseIcon.js.map +0 -1
  78. package/dist/esm/app/Messenger/icons/EmptyIcon.d.ts +0 -1
  79. package/dist/esm/app/Messenger/icons/EmptyIcon.js +0 -8
  80. package/dist/esm/app/Messenger/icons/EmptyIcon.js.map +0 -1
  81. package/dist/esm/app/Messenger/icons/MessageIcon.d.ts +0 -5
  82. package/dist/esm/app/Messenger/icons/MessageIcon.js +0 -12
  83. package/dist/esm/app/Messenger/icons/MessageIcon.js.map +0 -1
  84. package/dist/esm/app/Messenger/icons/ReadIcon.d.ts +0 -3
  85. package/dist/esm/app/Messenger/icons/ReadIcon.js +0 -7
  86. package/dist/esm/app/Messenger/icons/ReadIcon.js.map +0 -1
  87. package/dist/esm/app/Messenger/icons/SearchIcon.d.ts +0 -1
  88. package/dist/esm/app/Messenger/icons/SearchIcon.js +0 -8
  89. package/dist/esm/app/Messenger/icons/SearchIcon.js.map +0 -1
  90. package/dist/esm/app/Messenger/icons/TimerIcon.d.ts +0 -1
  91. package/dist/esm/app/Messenger/icons/TimerIcon.js +0 -6
  92. package/dist/esm/app/Messenger/icons/TimerIcon.js.map +0 -1
  93. package/dist/esm/app/Messenger/icons/TrashIcon.d.ts +0 -5
  94. package/dist/esm/app/Messenger/icons/TrashIcon.js +0 -7
  95. package/dist/esm/app/Messenger/icons/TrashIcon.js.map +0 -1
  96. package/dist/esm/app/Messenger/views/MessengerList.d.ts +0 -39
  97. package/dist/esm/app/Messenger/views/MessengerList.js +0 -50
  98. package/dist/esm/app/Messenger/views/MessengerList.js.map +0 -1
  99. package/dist/esm/app/Messenger/views/MessengerListItem.d.ts +0 -11
  100. package/dist/esm/app/Messenger/views/MessengerListItem.js +0 -87
  101. package/dist/esm/app/Messenger/views/MessengerListItem.js.map +0 -1
  102. package/dist/esm/app/Messenger/views/MessengerMessages.d.ts +0 -23
  103. package/dist/esm/app/Messenger/views/MessengerMessages.js +0 -133
  104. package/dist/esm/app/Messenger/views/MessengerMessages.js.map +0 -1
  105. package/dist/esm/app/Messenger/views/NewFormChat.d.ts +0 -10
  106. package/dist/esm/app/Messenger/views/NewFormChat.js +0 -64
  107. package/dist/esm/app/Messenger/views/NewFormChat.js.map +0 -1
  108. package/dist/esm/index.d.ts +0 -8
  109. package/dist/esm/index.js +0 -9
  110. package/dist/esm/index.js.map +0 -1
  111. package/dist/esm/setupTests.d.ts +0 -1
  112. package/dist/esm/setupTests.js +0 -6
  113. package/dist/esm/setupTests.js.map +0 -1
  114. package/dist/esm/types.d.ts +0 -134
  115. package/dist/esm/types.js +0 -2
  116. package/dist/esm/types.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agx-chat-web",
3
- "version": "0.4.9",
3
+ "version": "0.4.11",
4
4
  "description": "Chat application using React and less",
5
5
  "author": {
6
6
  "name": "Jeiel Alves",
@@ -11,7 +11,7 @@
11
11
  margin-bottom: 0.5rem;
12
12
 
13
13
  &--active {
14
- border-bottom: 1px solid white;
14
+ border-bottom: 1px solid var(--secondary-color);
15
15
  transition: 0.5s;
16
16
  }
17
17
  }
@@ -1,16 +1,16 @@
1
1
  .file-input {
2
2
  margin-bottom: 1rem;
3
3
  width: 100%;
4
-
4
+
5
5
  &__label {
6
6
  color: @title-form-color;
7
7
  font-weight: bold;
8
- margin: 0.5rem;
8
+ margin: 0.5rem;
9
9
  }
10
10
 
11
11
  &__container {
12
12
  align-items: center;
13
- background-color: white;
13
+ background-color: var(--secondary-color);
14
14
  border-radius: 10px;
15
15
  display: flex;
16
16
  flex-direction: column;
@@ -23,17 +23,17 @@
23
23
  &__button {
24
24
  border: none;
25
25
  border-radius: 30px;
26
- color: white;
26
+ color: var(--secondary-color);
27
27
  cursor: pointer;
28
28
  font-size: 1rem;
29
- font-weight: bold;
29
+ font-weight: bold;
30
30
  margin: 0.5rem 1rem;
31
31
  padding: 0.5rem;
32
32
  }
33
33
 
34
34
  &__list {
35
35
  align-items: center;
36
- background-color: white;
36
+ background-color: var(--secondary-color);
37
37
  border-radius: 10px;
38
38
  display: flex;
39
39
  justify-content: space-between;
@@ -1,58 +1,61 @@
1
- import React, { createContext, ReactNode } from 'react'
1
+ import React, { createContext, ReactNode } from "react";
2
2
 
3
3
  const defaultThemeVariables = {
4
- asideBg: '#eee',
5
- asideFontColor: 'white',
6
- messengerMessagesBg: '#eeeeee',
7
- headerAndSenderBg: '#232831',
8
- buttonPrimary: '#25D366',
9
- buttonPrimaryText: '#707070',
10
- buttonsDisabled: '#94989D',
11
- uploadFileIconColor: '#8696a0',
12
- messengerNotSelectedBg: '#DDDDDD',
13
- newChatFormBg: '',
14
- newChatFormRadius: '0 20px 20px 0' ,
15
- newChatFormTexts: '#000',
16
- newChatFormDeleteFileButton: '#DD4E4E',
17
- disclaimerPrimaryColor: '#4791FF',
18
- disclaimerSecondaryColor: '#4791FF',
19
- disclaimerTextColor: '#000',
20
- messengerSenderColor: '#00A73E',
4
+ asideBg: "#eee",
5
+ asideFontColor: "var(--secondary-color)",
6
+ messengerMessagesBg: "#eeeeee",
7
+ headerAndSenderBg: "#232831",
8
+ buttonPrimary: "#25D366",
9
+ buttonPrimaryText: "#707070",
10
+ buttonsDisabled: "#94989D",
11
+ uploadFileIconColor: "#8696a0",
12
+ messengerNotSelectedBg: "#DDDDDD",
13
+ newChatFormBg: "",
14
+ newChatFormRadius: "0 20px 20px 0",
15
+ newChatFormTexts: "#000",
16
+ newChatFormDeleteFileButton: "#DD4E4E",
17
+ disclaimerPrimaryColor: "#4791FF",
18
+ disclaimerSecondaryColor: "#4791FF",
19
+ disclaimerTextColor: "#000",
20
+ messengerSenderColor: "#00A73E",
21
21
  messengerIncomerColor: "#707070",
22
22
  messengerSystemColor: "#2A313A",
23
- borderColor: '#AAAAAA',
24
- inputBg:'white',
25
- chatInputBorder: '',
26
- listItemHover: '',
27
- active: '',
28
- activeTabBorter: '#25D366',
29
- emptyMessagesFontColor: '#000'
30
- }
23
+ borderColor: "#AAAAAA",
24
+ inputBg: "var(--secondary-color)",
25
+ chatInputBorder: "",
26
+ listItemHover: "",
27
+ active: "",
28
+ activeTabBorter: "#25D366",
29
+ emptyMessagesFontColor: "#000",
30
+ };
31
31
 
32
- type ThemeVariables = typeof defaultThemeVariables
32
+ type ThemeVariables = typeof defaultThemeVariables;
33
33
 
34
34
  type ThemeContextContent = {
35
- theme: Partial<ThemeVariables>
36
- }
35
+ theme: Partial<ThemeVariables>;
36
+ };
37
37
 
38
38
  export const MessageThemeContext = createContext<ThemeContextContent>(
39
39
  {} as unknown as ThemeContextContent
40
40
  );
41
41
 
42
42
  type Props = {
43
- children: ReactNode
44
- theme?: Partial<ThemeVariables>
45
- }
46
- const MessageThemeWrapper = ({ children, theme = defaultThemeVariables }: Props) => {
43
+ children: ReactNode;
44
+ theme?: Partial<ThemeVariables>;
45
+ };
46
+ const MessageThemeWrapper = ({
47
+ children,
48
+ theme = defaultThemeVariables,
49
+ }: Props) => {
47
50
  const config = {
48
- theme
49
- }
51
+ theme,
52
+ };
50
53
 
51
54
  return (
52
55
  <MessageThemeContext.Provider value={config}>
53
56
  {children}
54
57
  </MessageThemeContext.Provider>
55
- )
56
- }
58
+ );
59
+ };
57
60
 
58
- export default MessageThemeWrapper
61
+ export default MessageThemeWrapper;
@@ -23,13 +23,13 @@
23
23
  margin-right: 1rem;
24
24
  border-radius: 0 30px 30px 0;
25
25
  padding: 10px;
26
- color: white;
27
- border: white 1px solid;
26
+ color: var(--secondary-color);
27
+ border: var(--secondary-color) 1px solid;
28
28
  background: transparent;
29
29
  position: relative;
30
30
 
31
31
  &::placeholder {
32
- color: white;
32
+ color: var(--secondary-color);
33
33
  opacity: 60%;
34
34
  }
35
35
  }
@@ -1,14 +1,21 @@
1
- import useTheme from '../../hooks/useThemes'
2
- import React, { useCallback, useState } from 'react'
3
- import { IMessagesBalloon } from "types"
4
- import ReadIcon from "../../icons/ReadIcon"
5
- import ReactSimpleImageViewer from '../../../../../node_modules/react-simple-image-viewer'
1
+ import useTheme from "../../hooks/useThemes";
2
+ import React, { useCallback, useState } from "react";
3
+ import { IMessagesBalloon } from "types";
4
+ import ReadIcon from "../../icons/ReadIcon";
5
+ import ReactSimpleImageViewer from "../../../../../node_modules/react-simple-image-viewer";
6
6
 
7
-
8
- function SenderMessages({ date, message, read, hasFile, file, formatDate, id }: IMessagesBalloon) {
7
+ function SenderMessages({
8
+ date,
9
+ message,
10
+ read,
11
+ hasFile,
12
+ file,
13
+ formatDate,
14
+ id,
15
+ }: IMessagesBalloon) {
9
16
  const [currentImage, setCurrentImage] = useState(0);
10
17
  const [isViewerOpen, setIsViewerOpen] = useState(false);
11
- const { theme } = useTheme()
18
+ const { theme } = useTheme();
12
19
 
13
20
  const openImageViewer = useCallback((index) => {
14
21
  setCurrentImage(index);
@@ -19,24 +26,35 @@ function SenderMessages({ date, message, read, hasFile, file, formatDate, id }:
19
26
  setCurrentImage(0);
20
27
  setIsViewerOpen(false);
21
28
  };
22
-
29
+
23
30
  return (
24
- <div className="messenger__messages-row--sender" >
25
- <div className="messenger__messages-sender" id={id} style={{ background: theme?.messengerSenderColor }}>
31
+ <div className="messenger__messages-row--sender">
32
+ <div
33
+ className="messenger__messages-sender"
34
+ id={id}
35
+ style={{ background: theme?.messengerSenderColor }}
36
+ >
26
37
  <span>
27
38
  {hasFile && (
28
39
  <div className="messenger__message--file">
29
- <img src={file?.location} width={200} alt="imagem na mensagem" onClick={() => openImageViewer(currentImage)} />
40
+ <img
41
+ src={file?.location}
42
+ width={200}
43
+ alt="imagem na mensagem"
44
+ onClick={() => openImageViewer(currentImage)}
45
+ />
30
46
  </div>
31
47
  )}
32
48
  <p className="messenger__message">{message}</p>
33
49
  <div className="messenger__message--bottom">
34
- <p className="messenger__message--date">{formatDate(date) ?? new Date(date).toString()}</p>
35
- <ReadIcon fill={read ? '#00efff' : 'white'} />
50
+ <p className="messenger__message--date">
51
+ {formatDate(date) ?? new Date(date).toString()}
52
+ </p>
53
+ <ReadIcon fill={read ? "#00efff" : "var(--secondary-color)"} />
36
54
  </div>
37
55
  </span>
38
56
  </div>
39
- {file && isViewerOpen &&
57
+ {file && isViewerOpen && (
40
58
  <ReactSimpleImageViewer
41
59
  src={[file.location]}
42
60
  currentIndex={0}
@@ -44,9 +62,9 @@ function SenderMessages({ date, message, read, hasFile, file, formatDate, id }:
44
62
  closeOnClickOutside={true}
45
63
  onClose={closeImageViewer}
46
64
  />
47
- }
65
+ )}
48
66
  </div>
49
- )
67
+ );
50
68
  }
51
69
 
52
- export default SenderMessages
70
+ export default SenderMessages;
@@ -1,10 +1,18 @@
1
- import React from 'react'
2
-
1
+ import React from "react";
3
2
 
4
3
  export default function TimerIcon() {
5
4
  return (
6
- <svg width="10" height="10" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
7
- <path d="M9.42207 4.79883H8.57656C8.49922 4.79883 8.43594 4.86211 8.43594 4.93946V9.77871C8.43594 9.82442 8.45703 9.8666 8.49394 9.89297L11.3996 12.0147C11.4629 12.0604 11.5508 12.048 11.5965 11.9848L12.0992 11.2992C12.1467 11.2342 12.1326 11.1463 12.0693 11.1023L9.56269 9.29004V4.93946C9.56269 4.86211 9.49941 4.79883 9.42207 4.79883ZM13.2857 6.12071L16.042 6.79395C16.1299 6.81504 16.216 6.74824 16.216 6.6586L16.2301 3.81973C16.2301 3.70196 16.0947 3.63516 16.0033 3.70899L13.233 5.87285C13.2121 5.88905 13.1961 5.91083 13.187 5.93568C13.1779 5.96054 13.176 5.98746 13.1815 6.01335C13.187 6.03924 13.1997 6.06305 13.2182 6.08204C13.2366 6.10103 13.26 6.11444 13.2857 6.12071ZM16.2336 11.4135L15.2369 11.0707C15.2022 11.0588 15.1641 11.061 15.131 11.0767C15.0978 11.0925 15.0721 11.1206 15.0594 11.1551C15.026 11.2447 14.9908 11.3326 14.9539 11.4205C14.641 12.1605 14.1928 12.8268 13.6197 13.3981C13.053 13.9665 12.3815 14.4196 11.6422 14.7322C10.8764 15.056 10.0531 15.2222 9.22168 15.2209C8.38145 15.2209 7.56758 15.0574 6.80117 14.7322C6.06191 14.4196 5.39032 13.9665 4.82363 13.3981C4.25234 12.8268 3.8041 12.1605 3.48945 11.4205C3.16745 10.6542 3.00248 9.83117 3.0043 9C3.0043 8.15977 3.16777 7.34414 3.49297 6.57774C3.80586 5.8377 4.2541 5.17149 4.82715 4.6002C5.39383 4.03175 6.06542 3.57866 6.80469 3.26602C7.56758 2.94082 8.3832 2.77735 9.22344 2.77735C10.0637 2.77735 10.8775 2.94082 11.6439 3.26602C12.3832 3.57866 13.0548 4.03175 13.6215 4.6002C13.8008 4.78125 13.9695 4.96934 14.1242 5.16797L15.1754 4.34531C13.792 2.57696 11.6387 1.43965 9.21992 1.44141C5.0082 1.44317 1.62617 4.86387 1.66836 9.07735C1.71055 13.217 5.07676 16.5586 9.22344 16.5586C12.4842 16.5586 15.2615 14.4914 16.3197 11.5963C16.3461 11.5225 16.3074 11.4398 16.2336 11.4135Z" fill="white" />
5
+ <svg
6
+ width="10"
7
+ height="10"
8
+ viewBox="0 0 18 18"
9
+ fill="none"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ >
12
+ <path
13
+ d="M9.42207 4.79883H8.57656C8.49922 4.79883 8.43594 4.86211 8.43594 4.93946V9.77871C8.43594 9.82442 8.45703 9.8666 8.49394 9.89297L11.3996 12.0147C11.4629 12.0604 11.5508 12.048 11.5965 11.9848L12.0992 11.2992C12.1467 11.2342 12.1326 11.1463 12.0693 11.1023L9.56269 9.29004V4.93946C9.56269 4.86211 9.49941 4.79883 9.42207 4.79883ZM13.2857 6.12071L16.042 6.79395C16.1299 6.81504 16.216 6.74824 16.216 6.6586L16.2301 3.81973C16.2301 3.70196 16.0947 3.63516 16.0033 3.70899L13.233 5.87285C13.2121 5.88905 13.1961 5.91083 13.187 5.93568C13.1779 5.96054 13.176 5.98746 13.1815 6.01335C13.187 6.03924 13.1997 6.06305 13.2182 6.08204C13.2366 6.10103 13.26 6.11444 13.2857 6.12071ZM16.2336 11.4135L15.2369 11.0707C15.2022 11.0588 15.1641 11.061 15.131 11.0767C15.0978 11.0925 15.0721 11.1206 15.0594 11.1551C15.026 11.2447 14.9908 11.3326 14.9539 11.4205C14.641 12.1605 14.1928 12.8268 13.6197 13.3981C13.053 13.9665 12.3815 14.4196 11.6422 14.7322C10.8764 15.056 10.0531 15.2222 9.22168 15.2209C8.38145 15.2209 7.56758 15.0574 6.80117 14.7322C6.06191 14.4196 5.39032 13.9665 4.82363 13.3981C4.25234 12.8268 3.8041 12.1605 3.48945 11.4205C3.16745 10.6542 3.00248 9.83117 3.0043 9C3.0043 8.15977 3.16777 7.34414 3.49297 6.57774C3.80586 5.8377 4.2541 5.17149 4.82715 4.6002C5.39383 4.03175 6.06542 3.57866 6.80469 3.26602C7.56758 2.94082 8.3832 2.77735 9.22344 2.77735C10.0637 2.77735 10.8775 2.94082 11.6439 3.26602C12.3832 3.57866 13.0548 4.03175 13.6215 4.6002C13.8008 4.78125 13.9695 4.96934 14.1242 5.16797L15.1754 4.34531C13.792 2.57696 11.6387 1.43965 9.21992 1.44141C5.0082 1.44317 1.62617 4.86387 1.66836 9.07735C1.71055 13.217 5.07676 16.5586 9.22344 16.5586C12.4842 16.5586 15.2615 14.4914 16.3197 11.5963C16.3461 11.5225 16.3074 11.4398 16.2336 11.4135Z"
14
+ fill="var(--secondary-color)"
15
+ />
8
16
  </svg>
9
- )
17
+ );
10
18
  }
@@ -43,7 +43,7 @@
43
43
  align-items: center;
44
44
 
45
45
  & path {
46
- fill: white;
46
+ fill: var(--secondary-color);
47
47
  }
48
48
 
49
49
  & p {
@@ -98,7 +98,7 @@
98
98
  right: 0;
99
99
  top: 0;
100
100
  border-radius: 10px;
101
- background-color: white;
101
+ background-color: var(--secondary-color);
102
102
  padding: 0 0.5rem;
103
103
  font-size: 0.6rem;
104
104
  }
@@ -111,10 +111,10 @@
111
111
  bottom: 0;
112
112
  right: 0;
113
113
  border-radius: 10px;
114
- background-color: white;
114
+ background-color: var(--secondary-color);
115
115
  padding: 0.3rem 0.5rem;
116
116
  margin: 0.5rem;
117
- font-size: 0.5rem;
117
+ font-size: 0.5rem;
118
118
  }
119
119
 
120
120
  &__aside-list-item {
@@ -196,7 +196,7 @@
196
196
 
197
197
  &--title,
198
198
  &--description {
199
- white-space: nowrap;
199
+ var(--secondary-color)-space: nowrap;
200
200
  text-overflow: ellipsis;
201
201
  overflow: hidden;
202
202
  line-height: 1;
@@ -290,7 +290,7 @@
290
290
 
291
291
  & div {
292
292
  animation: spin 1s infinite linear;
293
- border-left: 2px solid white;
293
+ border-left: 2px solid var(--secondary-color);
294
294
  border-radius: 50%;
295
295
  height: 25px;
296
296
  margin-bottom: 10px;
@@ -328,7 +328,7 @@
328
328
  padding: 10px;
329
329
 
330
330
  &>span {
331
- color: white;
331
+ color: var(--secondary-color);
332
332
  overflow-wrap: break-word;
333
333
  word-break: break-word;
334
334
  width: 200px;
@@ -354,7 +354,7 @@
354
354
 
355
355
  &__message-title {
356
356
  max-width: 100%;
357
- white-space: nowrap;
357
+ var(--secondary-color)-space: nowrap;
358
358
  overflow: hidden;
359
359
  max-width: 100%;
360
360
  display: block;
@@ -364,7 +364,7 @@
364
364
  margin: 0 0 3px;
365
365
  justify-content: flex-end;
366
366
  font-size: 13px;
367
- color: white;
367
+ color: var(--secondary-color);
368
368
  font-weight: bold;
369
369
  filter: opacity(.7);
370
370
  font-weight: 700;
@@ -373,7 +373,7 @@
373
373
  &__message {
374
374
  padding: 0;
375
375
  margin: 0;
376
- white-space: pre-wrap;
376
+ var(--secondary-color)-space: pre-wrap;
377
377
  line-height: 1.2;
378
378
 
379
379
  &--file {
@@ -564,7 +564,7 @@
564
564
  &__chat-button {
565
565
  border: none;
566
566
  border-radius: 30px;
567
- color: white;
567
+ color: var(--secondary-color);
568
568
  cursor: pointer;
569
569
  font-size: 1rem;
570
570
  font-weight: bold;
@@ -579,7 +579,7 @@
579
579
  &__input-button {
580
580
  border: none;
581
581
  border-radius: 30px;
582
- color: white;
582
+ color: var(--secondary-color);
583
583
  font-size: 1rem;
584
584
  font-weight: bold;
585
585
  margin: 0.5rem 1rem;
@@ -587,7 +587,7 @@
587
587
  }
588
588
 
589
589
  &__input-button-label {
590
- color: white;
590
+ color: var(--secondary-color);
591
591
  font-weight: bold;
592
592
  margin: 0rem 1rem;
593
593
  }
@@ -36,6 +36,7 @@ interface IMessengerList {
36
36
  hasNext: boolean
37
37
  onIntersect: () => void
38
38
  sliceCount: number
39
+ currentViewerId: string
39
40
  }
40
41
 
41
42
  const ListLoading = () => {
@@ -90,7 +91,8 @@ function MessengerList({
90
91
  canSeeTimer,
91
92
  hasNext,
92
93
  onIntersect,
93
- sliceCount
94
+ sliceCount,
95
+ currentViewerId
94
96
  }: IMessengerList) {
95
97
  const { theme } = useTheme()
96
98
 
@@ -152,6 +154,7 @@ function MessengerList({
152
154
  currentId={currentId}
153
155
  item={item}
154
156
  onClick={onClick}
157
+ currentViewerId={currentViewerId}
155
158
  />
156
159
  </div>
157
160
  )
@@ -10,9 +10,14 @@ interface IListItem {
10
10
  item: IList
11
11
  currentId?: string
12
12
  canSeeTimer: boolean
13
+ currentViewerId: string
13
14
  }
14
15
 
15
- export function activeItem(e: React.MouseEvent<HTMLElement, MouseEvent>, defaultClass: string, activeClass: string,) {
16
+ export function activeItem(
17
+ e: React.MouseEvent<HTMLElement, MouseEvent>,
18
+ defaultClass: string,
19
+ activeClass: string
20
+ ) {
16
21
  const click = document.querySelectorAll(`.${defaultClass}`)
17
22
  click.forEach((item) => {
18
23
  item.classList.remove(activeClass)
@@ -21,29 +26,53 @@ export function activeItem(e: React.MouseEvent<HTMLElement, MouseEvent>, default
21
26
  e.currentTarget.className += ` ${activeClass} `
22
27
  }
23
28
 
24
- function MessengerListItem ({ item, onClick, canSeeTimer, currentId }: IListItem) {
25
- const [unreadMessages, setUnreadMessages] = useState<typeof item.totalUnreadMessages>(item.totalUnreadMessages)
26
- const closedChat = useMemo(() => item.status.current.state === 'final' ? 'messenger__aside-list-item--closed' : '', [item])
29
+ function MessengerListItem({
30
+ item,
31
+ onClick,
32
+ canSeeTimer,
33
+ currentId,
34
+ currentViewerId,
35
+ }: IListItem) {
36
+ const [unreadMessages, setUnreadMessages] = useState<
37
+ typeof item.totalUnreadMessages
38
+ >(item.totalUnreadMessages)
39
+ const closedChat = useMemo(
40
+ () =>
41
+ item.status.current.state === 'final'
42
+ ? 'messenger__aside-list-item--closed'
43
+ : '',
44
+ [item]
45
+ )
27
46
  const [background, setBackground] = useState<string | undefined>('')
28
- const [counter, setCounter] = useState<number | null>(null)
47
+ const [counter, setCounter] = useState<number | null>(null)
29
48
 
30
49
  const { theme } = useTheme()
31
50
  const isInprogress = item.status?.current?.systemicValue === 'inprogress'
32
51
 
33
- useEffect(() => {
52
+ const otherChatMember = useMemo(
53
+ () =>
54
+ item?.users.find((item) => item.uniqueCode !== currentViewerId) ||
55
+ item.creator,
56
+ [item?.users, currentViewerId]
57
+ )
58
+
59
+ useEffect(() => {
34
60
  let interval: NodeJS.Timer
35
61
  if (isInprogress && canSeeTimer) {
36
- const sla = new SlaDates(timeAsDayjs(item.currentTime).diff(item.createdAt, 'second'))
62
+ const sla = new SlaDates(
63
+ timeAsDayjs(item.currentTime).diff(item.createdAt, 'second')
64
+ )
37
65
  const diference = sla.calculateWorkingTime(
38
66
  timeAsDayjs(item.createdAt),
39
- timeAsDayjs(), { start: 9, end: 18 }
67
+ timeAsDayjs(),
68
+ { start: 9, end: 18 }
40
69
  )
41
70
 
42
71
  setCounter(diference)
43
72
  if (sla.canUpdateClock(timeAsDayjs())) {
44
73
  interval = setInterval(() => {
45
- setCounter(prev => prev !== null ? prev + 1 : null)
46
- }, 1000)
74
+ setCounter((prev) => (prev !== null ? prev + 1 : null))
75
+ }, 1000)
47
76
  }
48
77
  } else {
49
78
  setCounter(item.SLATimePassed ?? null)
@@ -58,8 +87,15 @@ function MessengerListItem ({ item, onClick, canSeeTimer, currentId }: IListItem
58
87
  setUnreadMessages(item.totalUnreadMessages)
59
88
  }, [item])
60
89
 
61
- function handleClick(e: React.MouseEvent<HTMLElement, MouseEvent>, item: IList) {
62
- activeItem(e, 'messenger__aside-list-item', 'messenger__aside-list-item--active')
90
+ function handleClick(
91
+ e: React.MouseEvent<HTMLElement, MouseEvent>,
92
+ item: IList
93
+ ) {
94
+ activeItem(
95
+ e,
96
+ 'messenger__aside-list-item',
97
+ 'messenger__aside-list-item--active'
98
+ )
63
99
  onClick(item)
64
100
  }
65
101
 
@@ -77,7 +113,6 @@ function MessengerListItem ({ item, onClick, canSeeTimer, currentId }: IListItem
77
113
  setBackground('')
78
114
  }
79
115
 
80
-
81
116
  const ShowTimer = () => {
82
117
  if (counter === null) return null
83
118
 
@@ -86,14 +121,12 @@ function MessengerListItem ({ item, onClick, canSeeTimer, currentId }: IListItem
86
121
  className='messenger__aside-timer'
87
122
  style={{
88
123
  background: SlaDates.getColorsByTime(counter),
89
- color: 'white'
124
+ color: 'var(--secondary-color)',
90
125
  }}
91
126
  >
92
- <TimerIcon />&nbsp;
93
-
94
- <b>
95
- {SlaDates.secondsInHours(counter)}
96
- </b>
127
+ <TimerIcon />
128
+ &nbsp
129
+ <b>{SlaDates.secondsInHours(counter)}</b>
97
130
  </span>
98
131
  )
99
132
  }
@@ -110,18 +143,26 @@ function MessengerListItem ({ item, onClick, canSeeTimer, currentId }: IListItem
110
143
  backgroundColor: currentId === item._id ? theme?.active : background,
111
144
  }}
112
145
  >
113
- <MessengerAvatar image={item?.creator?.image}>
114
- {(item?.creator && item?.creator.username) ? item?.creator.username.slice(0, 1) : ''}
146
+ <MessengerAvatar image={otherChatMember?.image}>
147
+ {otherChatMember && otherChatMember.username
148
+ ? otherChatMember.username.slice(0, 1)
149
+ : ''}
115
150
  </MessengerAvatar>
116
151
 
117
- <div className="messenger__aside-list-item--info">
118
- <p className="messenger__aside-list-item--title">{item?.creator?.username}</p>
119
- {item?.reason && (<p className="messenger__aside-list-item--description">{item.reason}</p>)}
152
+ <div className='messenger__aside-list-item--info'>
153
+ <p className='messenger__aside-list-item--title'>
154
+ {otherChatMember?.username}
155
+ </p>
156
+ {item?.reason && (
157
+ <p className='messenger__aside-list-item--description'>
158
+ {item.reason}
159
+ </p>
160
+ )}
120
161
  </div>
121
162
 
122
- <div className="messenger__aside-list-item--additional">
163
+ <div className='messenger__aside-list-item--additional'>
123
164
  {unreadMessages > 0 && (
124
- <div className="messenger__aside-list-item--unread">
165
+ <div className='messenger__aside-list-item--unread'>
125
166
  <span>{formatUnreadMessages(unreadMessages)}</span>
126
167
  </div>
127
168
  )}
@@ -23,3 +23,6 @@
23
23
  @title-form-color: #476077;
24
24
  @border-radius: 20px;
25
25
 
26
+ :root {
27
+ --secondary-color: var(--secondary-color);
28
+ }