agx-chat-web 1.2.1 → 1.2.2
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/README.md +49 -49
- package/package.json +91 -91
- package/src/__tests__/app/Messenger/classes/slaCalculations.spec.ts +122 -122
- package/src/app/ChatProvider/ChatProvider.tsx +20 -20
- package/src/app/Messenger/classes/slaCalculations.ts +197 -197
- package/src/app/Messenger/components/ChatButton/ChatButton.tsx +64 -64
- package/src/app/Messenger/components/ChatTabs/ChatTabs.less +18 -18
- package/src/app/Messenger/components/ChatTabs/ChatTabs.tsx +32 -32
- package/src/app/Messenger/components/DocMessage/DocMessage.less +71 -71
- package/src/app/Messenger/components/DocMessage/DocMessage.tsx +50 -50
- package/src/app/Messenger/components/ImagesContainer/ImagesContainer.less +79 -79
- package/src/app/Messenger/components/ImagesContainer/ImagesContainer.tsx +51 -51
- package/src/app/Messenger/components/IncomingMessage/IncomingMessage.tsx +170 -170
- package/src/app/Messenger/components/InfiniteScroll/InfiniteScroll.tsx +80 -80
- package/src/app/Messenger/components/InputFile/InputFile.tsx +147 -147
- package/src/app/Messenger/components/InputFile/inputFile.less +59 -59
- package/src/app/Messenger/components/MessageBallon/MessageBalloon.tsx +100 -100
- package/src/app/Messenger/components/MessengerAvatar/MessengerAvatar.tsx +29 -29
- package/src/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.tsx +62 -62
- package/src/app/Messenger/components/RenderFileIcon/RenderFileIcon.tsx +40 -40
- package/src/app/Messenger/components/SearchInput/SearchInput.less +45 -45
- package/src/app/Messenger/components/SearchInput/SearchInput.tsx +77 -77
- package/src/app/Messenger/components/Select/Select.less +22 -22
- package/src/app/Messenger/components/Select/Select.tsx +56 -56
- package/src/app/Messenger/components/SendMessageForm/SendMessageForm.tsx +254 -254
- package/src/app/Messenger/components/SenderMessages/SenderMessages.tsx +91 -91
- package/src/app/Messenger/components/SystemMessage/SystemMessage.tsx +25 -25
- package/src/app/Messenger/components/TextArea/TextArea.tsx +35 -35
- package/src/app/Messenger/components/TextArea/Textarea.less +22 -22
- package/src/app/Messenger/components/Tooltip/Tooltip.less +27 -27
- package/src/app/Messenger/components/Tooltip/Tooltip.tsx +17 -17
- package/src/app/Messenger/hooks/useConversations.tsx +143 -143
- package/src/app/Messenger/hooks/useMessages.tsx +49 -49
- package/src/app/Messenger/hooks/useThemes.tsx +14 -14
- package/src/app/Messenger/icons/AttachFileIcon.tsx +20 -20
- package/src/app/Messenger/icons/CSVFileIcon.tsx +26 -26
- package/src/app/Messenger/icons/CloseIcon.tsx +20 -20
- package/src/app/Messenger/icons/DOCFileIcon.tsx +54 -54
- package/src/app/Messenger/icons/DownloadMinimalistIcon.tsx +37 -37
- package/src/app/Messenger/icons/EmptyIcon.tsx +20 -20
- package/src/app/Messenger/icons/MP4FileIcon.tsx +26 -26
- package/src/app/Messenger/icons/MessageIcon.tsx +27 -27
- package/src/app/Messenger/icons/PDFFileIcon.tsx +54 -54
- package/src/app/Messenger/icons/ReadIcon.tsx +18 -18
- package/src/app/Messenger/icons/SearchIcon.tsx +20 -20
- package/src/app/Messenger/icons/TimerIcon.tsx +18 -18
- package/src/app/Messenger/icons/TrashIcon.tsx +21 -21
- package/src/app/Messenger/views/Messenger.less +623 -623
- package/src/app/Messenger/views/MessengerList.tsx +170 -170
- package/src/app/Messenger/views/MessengerListItem.tsx +178 -178
- package/src/app/Messenger/views/MessengerMessages.tsx +414 -414
- package/src/app/Messenger/views/NewFormChat.tsx +145 -145
- package/src/app/i18n/index.ts +36 -36
- package/src/app/i18n/locales/en.json +64 -64
- package/src/app/i18n/locales/pt.json +64 -64
- package/src/assets/right-arrow.svg +9 -9
- package/src/index.ts +23 -23
- package/src/react-app-env.d.ts +19 -19
- package/src/setupTests.ts +5 -5
- package/src/styles/abstracts/animations.less +8 -8
- package/src/styles/abstracts/mixins.less +5 -5
- package/src/styles/abstracts/variables.less +31 -31
- package/src/styles/base/base.less +6 -6
- package/src/styles/index.less +5 -5
- package/src/types.ts +174 -174
- package/dist/agx-chat.esm.js +0 -2
- package/dist/agx-chat.esm.js.map +0 -1
- package/dist/agx-chat.umd.js +0 -2
- package/dist/agx-chat.umd.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/ChatProvider/ChatProvider.d.ts +0 -7
- package/dist/esm/app/ChatProvider/ChatProvider.js +0 -14
- package/dist/esm/app/ChatProvider/ChatProvider.js.map +0 -1
- package/dist/esm/app/Messenger/classes/slaCalculations.d.ts +0 -30
- package/dist/esm/app/Messenger/classes/slaCalculations.js +0 -144
- 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 -10
- 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/DocMessage/DocMessage.d.ts +0 -5
- package/dist/esm/app/Messenger/components/DocMessage/DocMessage.js +0 -35
- package/dist/esm/app/Messenger/components/DocMessage/DocMessage.js.map +0 -1
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.d.ts +0 -4
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js +0 -39
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js.map +0 -1
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.d.ts +0 -7
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js +0 -53
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js.map +0 -1
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.d.ts +0 -13
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js +0 -43
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js.map +0 -1
- package/dist/esm/app/Messenger/components/InputFile/InputFile.d.ts +0 -11
- package/dist/esm/app/Messenger/components/InputFile/InputFile.js +0 -74
- package/dist/esm/app/Messenger/components/InputFile/InputFile.js.map +0 -1
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.d.ts +0 -9
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js +0 -34
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js.map +0 -1
- package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.d.ts +0 -4
- 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 -41
- package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js +0 -40
- package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js.map +0 -1
- package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.d.ts +0 -6
- package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js +0 -29
- package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.d.ts +0 -11
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js +0 -33
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js.map +0 -1
- package/dist/esm/app/Messenger/components/Select/Select.d.ts +0 -14
- 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/SendMessageForm/SendMessageForm.d.ts +0 -13
- package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js +0 -143
- package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js.map +0 -1
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.d.ts +0 -4
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js +0 -43
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js.map +0 -1
- package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.d.ts +0 -4
- 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 -9
- 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/components/Tooltip/Tooltip.d.ts +0 -7
- package/dist/esm/app/Messenger/components/Tooltip/Tooltip.js +0 -9
- package/dist/esm/app/Messenger/components/Tooltip/Tooltip.js.map +0 -1
- package/dist/esm/app/Messenger/hooks/useConversations.d.ts +0 -21
- package/dist/esm/app/Messenger/hooks/useConversations.js +0 -105
- package/dist/esm/app/Messenger/hooks/useConversations.js.map +0 -1
- package/dist/esm/app/Messenger/hooks/useMessages.d.ts +0 -9
- package/dist/esm/app/Messenger/hooks/useMessages.js +0 -37
- package/dist/esm/app/Messenger/hooks/useMessages.js.map +0 -1
- package/dist/esm/app/Messenger/hooks/useThemes.d.ts +0 -32
- 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 -4
- 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/CSVFileIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/CSVFileIcon.js +0 -7
- package/dist/esm/app/Messenger/icons/CSVFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/CloseIcon.d.ts +0 -2
- 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/DOCFileIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/DOCFileIcon.js +0 -18
- package/dist/esm/app/Messenger/icons/DOCFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.d.ts +0 -7
- package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.js +0 -12
- package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/EmptyIcon.d.ts +0 -2
- 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/MP4FileIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/MP4FileIcon.js +0 -7
- package/dist/esm/app/Messenger/icons/MP4FileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/MessageIcon.d.ts +0 -6
- 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/PDFFileIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/PDFFileIcon.js +0 -18
- package/dist/esm/app/Messenger/icons/PDFFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/ReadIcon.d.ts +0 -4
- 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 -2
- 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 -4
- package/dist/esm/app/Messenger/icons/TimerIcon.js +0 -7
- package/dist/esm/app/Messenger/icons/TimerIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/TrashIcon.d.ts +0 -6
- 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 -40
- package/dist/esm/app/Messenger/views/MessengerList.js +0 -46
- package/dist/esm/app/Messenger/views/MessengerList.js.map +0 -1
- package/dist/esm/app/Messenger/views/MessengerListItem.d.ts +0 -12
- package/dist/esm/app/Messenger/views/MessengerListItem.js +0 -99
- package/dist/esm/app/Messenger/views/MessengerListItem.js.map +0 -1
- package/dist/esm/app/Messenger/views/MessengerMessages.d.ts +0 -35
- package/dist/esm/app/Messenger/views/MessengerMessages.js +0 -181
- package/dist/esm/app/Messenger/views/MessengerMessages.js.map +0 -1
- package/dist/esm/app/Messenger/views/NewFormChat.d.ts +0 -13
- package/dist/esm/app/Messenger/views/NewFormChat.js +0 -68
- package/dist/esm/app/Messenger/views/NewFormChat.js.map +0 -1
- package/dist/esm/app/i18n/index.d.ts +0 -3
- package/dist/esm/app/i18n/index.js +0 -32
- package/dist/esm/app/i18n/index.js.map +0 -1
- package/dist/esm/index.d.ts +0 -11
- package/dist/esm/index.js +0 -12
- 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 -140
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import React, { createContext, ReactNode } from 'react'
|
|
2
|
-
|
|
3
|
-
const defaultThemeVariables = {
|
|
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
|
-
messengerIncomerColor: '#707070',
|
|
22
|
-
messengerSystemColor: '#2A313A',
|
|
23
|
-
borderColor: '#AAAAAA',
|
|
24
|
-
inputBg: 'var(--secondary-color)',
|
|
25
|
-
chatInputBorder: '',
|
|
26
|
-
listItemHover: '',
|
|
27
|
-
active: '',
|
|
28
|
-
activeTabBorter: '#25D366',
|
|
29
|
-
emptyMessagesFontColor: '#000',
|
|
30
|
-
documentMessagesTextColor: '#fff',
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
type ThemeVariables = typeof defaultThemeVariables
|
|
34
|
-
|
|
35
|
-
type ThemeContextContent = {
|
|
36
|
-
theme: Partial<ThemeVariables>
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export const MessageThemeContext = createContext<ThemeContextContent>(
|
|
40
|
-
{} as unknown as ThemeContextContent
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
type Props = {
|
|
44
|
-
children: ReactNode
|
|
45
|
-
theme?: Partial<ThemeVariables>
|
|
46
|
-
}
|
|
47
|
-
const MessageThemeWrapper = ({
|
|
48
|
-
children,
|
|
49
|
-
theme = defaultThemeVariables,
|
|
50
|
-
}: Props) => {
|
|
51
|
-
const config = {
|
|
52
|
-
theme,
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<MessageThemeContext.Provider value={config}>
|
|
57
|
-
{children}
|
|
58
|
-
</MessageThemeContext.Provider>
|
|
59
|
-
)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export default MessageThemeWrapper
|
|
1
|
+
import React, { createContext, ReactNode } from 'react'
|
|
2
|
+
|
|
3
|
+
const defaultThemeVariables = {
|
|
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
|
+
messengerIncomerColor: '#707070',
|
|
22
|
+
messengerSystemColor: '#2A313A',
|
|
23
|
+
borderColor: '#AAAAAA',
|
|
24
|
+
inputBg: 'var(--secondary-color)',
|
|
25
|
+
chatInputBorder: '',
|
|
26
|
+
listItemHover: '',
|
|
27
|
+
active: '',
|
|
28
|
+
activeTabBorter: '#25D366',
|
|
29
|
+
emptyMessagesFontColor: '#000',
|
|
30
|
+
documentMessagesTextColor: '#fff',
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type ThemeVariables = typeof defaultThemeVariables
|
|
34
|
+
|
|
35
|
+
type ThemeContextContent = {
|
|
36
|
+
theme: Partial<ThemeVariables>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const MessageThemeContext = createContext<ThemeContextContent>(
|
|
40
|
+
{} as unknown as ThemeContextContent
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
type Props = {
|
|
44
|
+
children: ReactNode
|
|
45
|
+
theme?: Partial<ThemeVariables>
|
|
46
|
+
}
|
|
47
|
+
const MessageThemeWrapper = ({
|
|
48
|
+
children,
|
|
49
|
+
theme = defaultThemeVariables,
|
|
50
|
+
}: Props) => {
|
|
51
|
+
const config = {
|
|
52
|
+
theme,
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<MessageThemeContext.Provider value={config}>
|
|
57
|
+
{children}
|
|
58
|
+
</MessageThemeContext.Provider>
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export default MessageThemeWrapper
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import FileDoc from '../../icons/DOCFileIcon'
|
|
3
|
-
import FilePdf from '../../icons/PDFFileIcon'
|
|
4
|
-
import CSVFileIcon from '../../icons/CSVFileIcon'
|
|
5
|
-
import MP4FileIcon from '../../icons/MP4FileIcon'
|
|
6
|
-
import { useTranslation } from 'react-i18next'
|
|
7
|
-
|
|
8
|
-
const RenderFileIcon = ({
|
|
9
|
-
fileType,
|
|
10
|
-
b64,
|
|
11
|
-
}: {
|
|
12
|
-
fileType?: string
|
|
13
|
-
b64?: string
|
|
14
|
-
}) => {
|
|
15
|
-
const { t } = useTranslation('messengerMessages')
|
|
16
|
-
|
|
17
|
-
if (fileType === 'application/pdf') {
|
|
18
|
-
return <FilePdf width='40' height='40' />
|
|
19
|
-
} else if (
|
|
20
|
-
fileType === 'application/msword' ||
|
|
21
|
-
fileType ===
|
|
22
|
-
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
|
23
|
-
) {
|
|
24
|
-
return <FileDoc width='40' height='40' />
|
|
25
|
-
} else if (fileType === 'text/csv') {
|
|
26
|
-
return <CSVFileIcon width='40' height='40' />
|
|
27
|
-
} else if (fileType === 'video/mp4') {
|
|
28
|
-
return <MP4FileIcon width='40' height='40' />
|
|
29
|
-
} else {
|
|
30
|
-
return (
|
|
31
|
-
<img
|
|
32
|
-
alt={t('renderFileIcon.altImage')}
|
|
33
|
-
src={b64}
|
|
34
|
-
className='images-container__image'
|
|
35
|
-
/>
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export default RenderFileIcon
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import FileDoc from '../../icons/DOCFileIcon'
|
|
3
|
+
import FilePdf from '../../icons/PDFFileIcon'
|
|
4
|
+
import CSVFileIcon from '../../icons/CSVFileIcon'
|
|
5
|
+
import MP4FileIcon from '../../icons/MP4FileIcon'
|
|
6
|
+
import { useTranslation } from 'react-i18next'
|
|
7
|
+
|
|
8
|
+
const RenderFileIcon = ({
|
|
9
|
+
fileType,
|
|
10
|
+
b64,
|
|
11
|
+
}: {
|
|
12
|
+
fileType?: string
|
|
13
|
+
b64?: string
|
|
14
|
+
}) => {
|
|
15
|
+
const { t } = useTranslation('messengerMessages')
|
|
16
|
+
|
|
17
|
+
if (fileType === 'application/pdf') {
|
|
18
|
+
return <FilePdf width='40' height='40' />
|
|
19
|
+
} else if (
|
|
20
|
+
fileType === 'application/msword' ||
|
|
21
|
+
fileType ===
|
|
22
|
+
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
|
23
|
+
) {
|
|
24
|
+
return <FileDoc width='40' height='40' />
|
|
25
|
+
} else if (fileType === 'text/csv') {
|
|
26
|
+
return <CSVFileIcon width='40' height='40' />
|
|
27
|
+
} else if (fileType === 'video/mp4') {
|
|
28
|
+
return <MP4FileIcon width='40' height='40' />
|
|
29
|
+
} else {
|
|
30
|
+
return (
|
|
31
|
+
<img
|
|
32
|
+
alt={t('renderFileIcon.altImage')}
|
|
33
|
+
src={b64}
|
|
34
|
+
className='images-container__image'
|
|
35
|
+
/>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default RenderFileIcon
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
.input-search {
|
|
2
|
-
display: flex;
|
|
3
|
-
align-items: center;
|
|
4
|
-
justify-content: center;
|
|
5
|
-
width: 100%;
|
|
6
|
-
margin: 1rem 0;
|
|
7
|
-
position: relative;
|
|
8
|
-
|
|
9
|
-
&__select {
|
|
10
|
-
border-radius: 30px 0 0 30px;
|
|
11
|
-
padding: 10px;
|
|
12
|
-
background: transparent;
|
|
13
|
-
margin-left: 1rem;
|
|
14
|
-
width: 30%;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
&__option {
|
|
18
|
-
color: black;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
&__search {
|
|
22
|
-
width: 70%;
|
|
23
|
-
margin-right: 1rem;
|
|
24
|
-
border-radius: 0 30px 30px 0;
|
|
25
|
-
padding: 9px;
|
|
26
|
-
color: var(--secondary-color);
|
|
27
|
-
border: var(--secondary-color) 1px solid;
|
|
28
|
-
background: transparent;
|
|
29
|
-
position: relative;
|
|
30
|
-
|
|
31
|
-
&::placeholder {
|
|
32
|
-
color: var(--secondary-color);
|
|
33
|
-
opacity: 60%;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
&__icon {
|
|
38
|
-
border: none;
|
|
39
|
-
background: transparent;
|
|
40
|
-
position: absolute;
|
|
41
|
-
right: 2rem;
|
|
42
|
-
display: flex;
|
|
43
|
-
cursor: pointer;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
.input-search {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
justify-content: center;
|
|
5
|
+
width: 100%;
|
|
6
|
+
margin: 1rem 0;
|
|
7
|
+
position: relative;
|
|
8
|
+
|
|
9
|
+
&__select {
|
|
10
|
+
border-radius: 30px 0 0 30px;
|
|
11
|
+
padding: 10px;
|
|
12
|
+
background: transparent;
|
|
13
|
+
margin-left: 1rem;
|
|
14
|
+
width: 30%;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&__option {
|
|
18
|
+
color: black;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&__search {
|
|
22
|
+
width: 70%;
|
|
23
|
+
margin-right: 1rem;
|
|
24
|
+
border-radius: 0 30px 30px 0;
|
|
25
|
+
padding: 9px;
|
|
26
|
+
color: var(--secondary-color);
|
|
27
|
+
border: var(--secondary-color) 1px solid;
|
|
28
|
+
background: transparent;
|
|
29
|
+
position: relative;
|
|
30
|
+
|
|
31
|
+
&::placeholder {
|
|
32
|
+
color: var(--secondary-color);
|
|
33
|
+
opacity: 60%;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&__icon {
|
|
38
|
+
border: none;
|
|
39
|
+
background: transparent;
|
|
40
|
+
position: absolute;
|
|
41
|
+
right: 2rem;
|
|
42
|
+
display: flex;
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import SearchIcon from '../../icons/SearchIcon'
|
|
2
|
-
import React, { useState } from 'react'
|
|
3
|
-
import useTheme from '../../hooks/useThemes'
|
|
4
|
-
import { useTranslation } from 'react-i18next'
|
|
5
|
-
|
|
6
|
-
interface IProps {
|
|
7
|
-
searchChat: (value: string, key: string) => void
|
|
8
|
-
searchKeys: { label: string; value: string }[]
|
|
9
|
-
loadingSearch: boolean
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function SearchInput ({ searchChat, searchKeys, loadingSearch }: IProps) {
|
|
13
|
-
const { t } = useTranslation('messengerList')
|
|
14
|
-
const [searchKey, setSearchKey] = useState<string>(searchKeys[0].value)
|
|
15
|
-
const [searchValue, setSearchValue] = useState<string>('')
|
|
16
|
-
const { theme } = useTheme()
|
|
17
|
-
|
|
18
|
-
const onSearch = (event: React.ChangeEvent<HTMLInputElement>) => {
|
|
19
|
-
setSearchValue(event.target.value)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {
|
|
23
|
-
if (event.key === 'Enter') {
|
|
24
|
-
searchChat(searchValue, searchKey)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<div className='input-search'>
|
|
30
|
-
<select
|
|
31
|
-
className='input-search__select'
|
|
32
|
-
onChange={(e) => setSearchKey(e.target.value)}
|
|
33
|
-
style={{
|
|
34
|
-
color: theme.asideFontColor,
|
|
35
|
-
border: `${theme.asideFontColor} 1px solid`,
|
|
36
|
-
}}
|
|
37
|
-
>
|
|
38
|
-
{searchKeys.map((item, index) => (
|
|
39
|
-
<option
|
|
40
|
-
className='input-search__option'
|
|
41
|
-
key={index}
|
|
42
|
-
value={item.value}
|
|
43
|
-
>
|
|
44
|
-
{item.label}
|
|
45
|
-
</option>
|
|
46
|
-
))}
|
|
47
|
-
</select>
|
|
48
|
-
|
|
49
|
-
<input
|
|
50
|
-
className='input-search__search'
|
|
51
|
-
placeholder={t('searchInput.placeholder')}
|
|
52
|
-
onChange={onSearch}
|
|
53
|
-
onKeyDown={handleKeyPress}
|
|
54
|
-
style={{
|
|
55
|
-
color: theme.asideFontColor,
|
|
56
|
-
border: `${theme.asideFontColor} 1px solid`,
|
|
57
|
-
borderLeft: 0,
|
|
58
|
-
}}
|
|
59
|
-
/>
|
|
60
|
-
|
|
61
|
-
<button
|
|
62
|
-
className='input-search__icon'
|
|
63
|
-
onClick={() => searchChat(searchValue, searchKey)}
|
|
64
|
-
>
|
|
65
|
-
{loadingSearch ? (
|
|
66
|
-
<div className='messenger__messages-loading'>
|
|
67
|
-
<div className='messenger__messages-loading--loader' />
|
|
68
|
-
</div>
|
|
69
|
-
) : (
|
|
70
|
-
<SearchIcon />
|
|
71
|
-
)}
|
|
72
|
-
</button>
|
|
73
|
-
</div>
|
|
74
|
-
)
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export default SearchInput
|
|
1
|
+
import SearchIcon from '../../icons/SearchIcon'
|
|
2
|
+
import React, { useState } from 'react'
|
|
3
|
+
import useTheme from '../../hooks/useThemes'
|
|
4
|
+
import { useTranslation } from 'react-i18next'
|
|
5
|
+
|
|
6
|
+
interface IProps {
|
|
7
|
+
searchChat: (value: string, key: string) => void
|
|
8
|
+
searchKeys: { label: string; value: string }[]
|
|
9
|
+
loadingSearch: boolean
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function SearchInput ({ searchChat, searchKeys, loadingSearch }: IProps) {
|
|
13
|
+
const { t } = useTranslation('messengerList')
|
|
14
|
+
const [searchKey, setSearchKey] = useState<string>(searchKeys[0].value)
|
|
15
|
+
const [searchValue, setSearchValue] = useState<string>('')
|
|
16
|
+
const { theme } = useTheme()
|
|
17
|
+
|
|
18
|
+
const onSearch = (event: React.ChangeEvent<HTMLInputElement>) => {
|
|
19
|
+
setSearchValue(event.target.value)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {
|
|
23
|
+
if (event.key === 'Enter') {
|
|
24
|
+
searchChat(searchValue, searchKey)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<div className='input-search'>
|
|
30
|
+
<select
|
|
31
|
+
className='input-search__select'
|
|
32
|
+
onChange={(e) => setSearchKey(e.target.value)}
|
|
33
|
+
style={{
|
|
34
|
+
color: theme.asideFontColor,
|
|
35
|
+
border: `${theme.asideFontColor} 1px solid`,
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
{searchKeys.map((item, index) => (
|
|
39
|
+
<option
|
|
40
|
+
className='input-search__option'
|
|
41
|
+
key={index}
|
|
42
|
+
value={item.value}
|
|
43
|
+
>
|
|
44
|
+
{item.label}
|
|
45
|
+
</option>
|
|
46
|
+
))}
|
|
47
|
+
</select>
|
|
48
|
+
|
|
49
|
+
<input
|
|
50
|
+
className='input-search__search'
|
|
51
|
+
placeholder={t('searchInput.placeholder')}
|
|
52
|
+
onChange={onSearch}
|
|
53
|
+
onKeyDown={handleKeyPress}
|
|
54
|
+
style={{
|
|
55
|
+
color: theme.asideFontColor,
|
|
56
|
+
border: `${theme.asideFontColor} 1px solid`,
|
|
57
|
+
borderLeft: 0,
|
|
58
|
+
}}
|
|
59
|
+
/>
|
|
60
|
+
|
|
61
|
+
<button
|
|
62
|
+
className='input-search__icon'
|
|
63
|
+
onClick={() => searchChat(searchValue, searchKey)}
|
|
64
|
+
>
|
|
65
|
+
{loadingSearch ? (
|
|
66
|
+
<div className='messenger__messages-loading'>
|
|
67
|
+
<div className='messenger__messages-loading--loader' />
|
|
68
|
+
</div>
|
|
69
|
+
) : (
|
|
70
|
+
<SearchIcon />
|
|
71
|
+
)}
|
|
72
|
+
</button>
|
|
73
|
+
</div>
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export default SearchInput
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
.form-select {
|
|
2
|
-
margin-bottom: 1rem;
|
|
3
|
-
width: 100%;
|
|
4
|
-
|
|
5
|
-
&__label {
|
|
6
|
-
color: @title-form-color;
|
|
7
|
-
font-weight: bold;
|
|
8
|
-
margin: 0.5rem;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
&__input {
|
|
12
|
-
border: 1.5px solid hsl(0, 0%, 80%);
|
|
13
|
-
border-radius: 4px;
|
|
14
|
-
margin-top: 0.5rem;
|
|
15
|
-
padding: 8px 8px;
|
|
16
|
-
width: 100%;
|
|
17
|
-
|
|
18
|
-
&:focus {
|
|
19
|
-
outline: #2684ff 2px solid !important;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
1
|
+
.form-select {
|
|
2
|
+
margin-bottom: 1rem;
|
|
3
|
+
width: 100%;
|
|
4
|
+
|
|
5
|
+
&__label {
|
|
6
|
+
color: @title-form-color;
|
|
7
|
+
font-weight: bold;
|
|
8
|
+
margin: 0.5rem;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
&__input {
|
|
12
|
+
border: 1.5px solid hsl(0, 0%, 80%);
|
|
13
|
+
border-radius: 4px;
|
|
14
|
+
margin-top: 0.5rem;
|
|
15
|
+
padding: 8px 8px;
|
|
16
|
+
width: 100%;
|
|
17
|
+
|
|
18
|
+
&:focus {
|
|
19
|
+
outline: #2684ff 2px solid !important;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import useTheme from '../../hooks/useThemes'
|
|
3
|
-
interface IProps {
|
|
4
|
-
options: {
|
|
5
|
-
label: string
|
|
6
|
-
value: string
|
|
7
|
-
}[]
|
|
8
|
-
label: string
|
|
9
|
-
onChange: (value: string) => void
|
|
10
|
-
name: string
|
|
11
|
-
placeholder: string
|
|
12
|
-
value: string
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function SelectNew ({
|
|
16
|
-
options,
|
|
17
|
-
name,
|
|
18
|
-
placeholder,
|
|
19
|
-
label,
|
|
20
|
-
onChange,
|
|
21
|
-
value,
|
|
22
|
-
}: IProps) {
|
|
23
|
-
const { theme } = useTheme()
|
|
24
|
-
return (
|
|
25
|
-
<div className='form-select'>
|
|
26
|
-
<label
|
|
27
|
-
htmlFor={name}
|
|
28
|
-
className='form-select__label'
|
|
29
|
-
style={{ color: theme.newChatFormTexts }}
|
|
30
|
-
>
|
|
31
|
-
{label}
|
|
32
|
-
</label>
|
|
33
|
-
<select
|
|
34
|
-
name={name}
|
|
35
|
-
className='form-select__input'
|
|
36
|
-
onChange={(e) => onChange(e.target.value)}
|
|
37
|
-
value={value}
|
|
38
|
-
style={{
|
|
39
|
-
backgroundColor: theme.inputBg,
|
|
40
|
-
color: theme.newChatFormTexts,
|
|
41
|
-
}}
|
|
42
|
-
>
|
|
43
|
-
<option value='' disabled hidden>
|
|
44
|
-
{placeholder}
|
|
45
|
-
</option>
|
|
46
|
-
{options.map((motivo) => (
|
|
47
|
-
<option key={motivo.value} value={motivo.value}>
|
|
48
|
-
{motivo.label}
|
|
49
|
-
</option>
|
|
50
|
-
))}
|
|
51
|
-
</select>
|
|
52
|
-
</div>
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export default SelectNew
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import useTheme from '../../hooks/useThemes'
|
|
3
|
+
interface IProps {
|
|
4
|
+
options: {
|
|
5
|
+
label: string
|
|
6
|
+
value: string
|
|
7
|
+
}[]
|
|
8
|
+
label: string
|
|
9
|
+
onChange: (value: string) => void
|
|
10
|
+
name: string
|
|
11
|
+
placeholder: string
|
|
12
|
+
value: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function SelectNew ({
|
|
16
|
+
options,
|
|
17
|
+
name,
|
|
18
|
+
placeholder,
|
|
19
|
+
label,
|
|
20
|
+
onChange,
|
|
21
|
+
value,
|
|
22
|
+
}: IProps) {
|
|
23
|
+
const { theme } = useTheme()
|
|
24
|
+
return (
|
|
25
|
+
<div className='form-select'>
|
|
26
|
+
<label
|
|
27
|
+
htmlFor={name}
|
|
28
|
+
className='form-select__label'
|
|
29
|
+
style={{ color: theme.newChatFormTexts }}
|
|
30
|
+
>
|
|
31
|
+
{label}
|
|
32
|
+
</label>
|
|
33
|
+
<select
|
|
34
|
+
name={name}
|
|
35
|
+
className='form-select__input'
|
|
36
|
+
onChange={(e) => onChange(e.target.value)}
|
|
37
|
+
value={value}
|
|
38
|
+
style={{
|
|
39
|
+
backgroundColor: theme.inputBg,
|
|
40
|
+
color: theme.newChatFormTexts,
|
|
41
|
+
}}
|
|
42
|
+
>
|
|
43
|
+
<option value='' disabled hidden>
|
|
44
|
+
{placeholder}
|
|
45
|
+
</option>
|
|
46
|
+
{options.map((motivo) => (
|
|
47
|
+
<option key={motivo.value} value={motivo.value}>
|
|
48
|
+
{motivo.label}
|
|
49
|
+
</option>
|
|
50
|
+
))}
|
|
51
|
+
</select>
|
|
52
|
+
</div>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export default SelectNew
|