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.
- package/package.json +1 -1
- package/src/app/Messenger/components/ChatTabs/ChatTabs.less +1 -1
- package/src/app/Messenger/components/InputFile/inputFile.less +6 -6
- package/src/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.tsx +41 -38
- package/src/app/Messenger/components/SearchInput/SearchInput.less +3 -3
- package/src/app/Messenger/components/SenderMessages/SenderMessages.tsx +36 -18
- package/src/app/Messenger/icons/TimerIcon.tsx +13 -5
- package/src/app/Messenger/views/Messenger.less +13 -13
- package/src/app/Messenger/views/MessengerList.tsx +4 -1
- package/src/app/Messenger/views/MessengerListItem.tsx +67 -26
- package/src/styles/abstracts/variables.less +3 -0
- package/dist/agx-chat.js +0 -3
- package/dist/agx-chat.js.LICENSE.txt +0 -303
- package/dist/agx-chat.js.map +0 -1
- package/dist/agx-chat.min.js +0 -3
- package/dist/agx-chat.min.js.LICENSE.txt +0 -303
- package/dist/agx-chat.min.js.map +0 -1
- package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.d.ts +0 -1
- package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js +0 -46
- package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js.map +0 -1
- package/dist/esm/app/Messenger/classes/slaCalculations.d.ts +0 -30
- package/dist/esm/app/Messenger/classes/slaCalculations.js +0 -142
- package/dist/esm/app/Messenger/classes/slaCalculations.js.map +0 -1
- package/dist/esm/app/Messenger/components/ChatButton/ChatButton.d.ts +0 -14
- package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js +0 -31
- package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js.map +0 -1
- package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.d.ts +0 -9
- package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js +0 -15
- package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js.map +0 -1
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.d.ts +0 -3
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js +0 -24
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js.map +0 -1
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.d.ts +0 -3
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js +0 -33
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js.map +0 -1
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.d.ts +0 -11
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js +0 -37
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js.map +0 -1
- package/dist/esm/app/Messenger/components/InputFile/InputFile.d.ts +0 -8
- package/dist/esm/app/Messenger/components/InputFile/InputFile.js +0 -59
- package/dist/esm/app/Messenger/components/InputFile/InputFile.js.map +0 -1
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.d.ts +0 -8
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js +0 -32
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js.map +0 -1
- package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.d.ts +0 -3
- package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js +0 -13
- package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js.map +0 -1
- package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.d.ts +0 -40
- package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js +0 -39
- package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js.map +0 -1
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.d.ts +0 -10
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js +0 -32
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js.map +0 -1
- package/dist/esm/app/Messenger/components/Select/Select.d.ts +0 -13
- package/dist/esm/app/Messenger/components/Select/Select.js +0 -16
- package/dist/esm/app/Messenger/components/Select/Select.js.map +0 -1
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.d.ts +0 -3
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js +0 -32
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js.map +0 -1
- package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.d.ts +0 -3
- package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js +0 -14
- package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js.map +0 -1
- package/dist/esm/app/Messenger/components/TextArea/TextArea.d.ts +0 -8
- package/dist/esm/app/Messenger/components/TextArea/TextArea.js +0 -14
- package/dist/esm/app/Messenger/components/TextArea/TextArea.js.map +0 -1
- package/dist/esm/app/Messenger/hooks/useConversations.d.ts +0 -11
- package/dist/esm/app/Messenger/hooks/useConversations.js +0 -59
- package/dist/esm/app/Messenger/hooks/useConversations.js.map +0 -1
- package/dist/esm/app/Messenger/hooks/useThemes.d.ts +0 -31
- package/dist/esm/app/Messenger/hooks/useThemes.js +0 -11
- package/dist/esm/app/Messenger/hooks/useThemes.js.map +0 -1
- package/dist/esm/app/Messenger/icons/AttachFileIcon.d.ts +0 -3
- package/dist/esm/app/Messenger/icons/AttachFileIcon.js +0 -10
- package/dist/esm/app/Messenger/icons/AttachFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/CloseIcon.d.ts +0 -1
- package/dist/esm/app/Messenger/icons/CloseIcon.js +0 -9
- package/dist/esm/app/Messenger/icons/CloseIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/EmptyIcon.d.ts +0 -1
- package/dist/esm/app/Messenger/icons/EmptyIcon.js +0 -8
- package/dist/esm/app/Messenger/icons/EmptyIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/MessageIcon.d.ts +0 -5
- package/dist/esm/app/Messenger/icons/MessageIcon.js +0 -12
- package/dist/esm/app/Messenger/icons/MessageIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/ReadIcon.d.ts +0 -3
- package/dist/esm/app/Messenger/icons/ReadIcon.js +0 -7
- package/dist/esm/app/Messenger/icons/ReadIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/SearchIcon.d.ts +0 -1
- package/dist/esm/app/Messenger/icons/SearchIcon.js +0 -8
- package/dist/esm/app/Messenger/icons/SearchIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/TimerIcon.d.ts +0 -1
- package/dist/esm/app/Messenger/icons/TimerIcon.js +0 -6
- package/dist/esm/app/Messenger/icons/TimerIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/TrashIcon.d.ts +0 -5
- package/dist/esm/app/Messenger/icons/TrashIcon.js +0 -7
- package/dist/esm/app/Messenger/icons/TrashIcon.js.map +0 -1
- package/dist/esm/app/Messenger/views/MessengerList.d.ts +0 -39
- package/dist/esm/app/Messenger/views/MessengerList.js +0 -50
- package/dist/esm/app/Messenger/views/MessengerList.js.map +0 -1
- package/dist/esm/app/Messenger/views/MessengerListItem.d.ts +0 -11
- package/dist/esm/app/Messenger/views/MessengerListItem.js +0 -87
- package/dist/esm/app/Messenger/views/MessengerListItem.js.map +0 -1
- package/dist/esm/app/Messenger/views/MessengerMessages.d.ts +0 -23
- package/dist/esm/app/Messenger/views/MessengerMessages.js +0 -133
- package/dist/esm/app/Messenger/views/MessengerMessages.js.map +0 -1
- package/dist/esm/app/Messenger/views/NewFormChat.d.ts +0 -10
- package/dist/esm/app/Messenger/views/NewFormChat.js +0 -64
- package/dist/esm/app/Messenger/views/NewFormChat.js.map +0 -1
- package/dist/esm/index.d.ts +0 -8
- package/dist/esm/index.js +0 -9
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/setupTests.d.ts +0 -1
- package/dist/esm/setupTests.js +0 -6
- package/dist/esm/setupTests.js.map +0 -1
- package/dist/esm/types.d.ts +0 -134
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
package/package.json
CHANGED
|
@@ -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:
|
|
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:
|
|
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:
|
|
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
|
|
1
|
+
import React, { createContext, ReactNode } from "react";
|
|
2
2
|
|
|
3
3
|
const defaultThemeVariables = {
|
|
4
|
-
asideBg:
|
|
5
|
-
asideFontColor:
|
|
6
|
-
messengerMessagesBg:
|
|
7
|
-
headerAndSenderBg:
|
|
8
|
-
buttonPrimary:
|
|
9
|
-
buttonPrimaryText:
|
|
10
|
-
buttonsDisabled:
|
|
11
|
-
uploadFileIconColor:
|
|
12
|
-
messengerNotSelectedBg:
|
|
13
|
-
newChatFormBg:
|
|
14
|
-
newChatFormRadius:
|
|
15
|
-
newChatFormTexts:
|
|
16
|
-
newChatFormDeleteFileButton:
|
|
17
|
-
disclaimerPrimaryColor:
|
|
18
|
-
disclaimerSecondaryColor:
|
|
19
|
-
disclaimerTextColor:
|
|
20
|
-
messengerSenderColor:
|
|
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:
|
|
24
|
-
inputBg:
|
|
25
|
-
chatInputBorder:
|
|
26
|
-
listItemHover:
|
|
27
|
-
active:
|
|
28
|
-
activeTabBorter:
|
|
29
|
-
emptyMessagesFontColor:
|
|
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 = ({
|
|
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:
|
|
27
|
-
border:
|
|
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:
|
|
32
|
+
color: var(--secondary-color);
|
|
33
33
|
opacity: 60%;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
import useTheme from
|
|
2
|
-
import React, { useCallback, useState } from
|
|
3
|
-
import { IMessagesBalloon } from "types"
|
|
4
|
-
import ReadIcon from "../../icons/ReadIcon"
|
|
5
|
-
import ReactSimpleImageViewer from
|
|
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
|
-
|
|
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
|
|
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
|
|
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">
|
|
35
|
-
|
|
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
|
|
2
|
-
|
|
1
|
+
import React from "react";
|
|
3
2
|
|
|
4
3
|
export default function TimerIcon() {
|
|
5
4
|
return (
|
|
6
|
-
<svg
|
|
7
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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(
|
|
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
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
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(
|
|
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(),
|
|
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(
|
|
62
|
-
|
|
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: '
|
|
124
|
+
color: 'var(--secondary-color)',
|
|
90
125
|
}}
|
|
91
126
|
>
|
|
92
|
-
<TimerIcon
|
|
93
|
-
|
|
94
|
-
<b>
|
|
95
|
-
{SlaDates.secondsInHours(counter)}
|
|
96
|
-
</b>
|
|
127
|
+
<TimerIcon />
|
|
128
|
+
 
|
|
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={
|
|
114
|
-
{
|
|
146
|
+
<MessengerAvatar image={otherChatMember?.image}>
|
|
147
|
+
{otherChatMember && otherChatMember.username
|
|
148
|
+
? otherChatMember.username.slice(0, 1)
|
|
149
|
+
: ''}
|
|
115
150
|
</MessengerAvatar>
|
|
116
151
|
|
|
117
|
-
<div className=
|
|
118
|
-
<p className=
|
|
119
|
-
|
|
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=
|
|
163
|
+
<div className='messenger__aside-list-item--additional'>
|
|
123
164
|
{unreadMessages > 0 && (
|
|
124
|
-
<div className=
|
|
165
|
+
<div className='messenger__aside-list-item--unread'>
|
|
125
166
|
<span>{formatUnreadMessages(unreadMessages)}</span>
|
|
126
167
|
</div>
|
|
127
168
|
)}
|