agx-chat-web 1.2.0 → 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.
Files changed (198) hide show
  1. package/README.md +49 -49
  2. package/package.json +91 -91
  3. package/src/__tests__/app/Messenger/classes/slaCalculations.spec.ts +122 -122
  4. package/src/app/ChatProvider/ChatProvider.tsx +20 -20
  5. package/src/app/Messenger/classes/slaCalculations.ts +197 -197
  6. package/src/app/Messenger/components/ChatButton/ChatButton.tsx +64 -64
  7. package/src/app/Messenger/components/ChatTabs/ChatTabs.less +18 -18
  8. package/src/app/Messenger/components/ChatTabs/ChatTabs.tsx +32 -32
  9. package/src/app/Messenger/components/DocMessage/DocMessage.less +71 -71
  10. package/src/app/Messenger/components/DocMessage/DocMessage.tsx +50 -50
  11. package/src/app/Messenger/components/ImagesContainer/ImagesContainer.less +79 -79
  12. package/src/app/Messenger/components/ImagesContainer/ImagesContainer.tsx +51 -51
  13. package/src/app/Messenger/components/IncomingMessage/IncomingMessage.tsx +170 -170
  14. package/src/app/Messenger/components/InfiniteScroll/InfiniteScroll.tsx +80 -80
  15. package/src/app/Messenger/components/InputFile/InputFile.tsx +147 -147
  16. package/src/app/Messenger/components/InputFile/inputFile.less +59 -59
  17. package/src/app/Messenger/components/MessageBallon/MessageBalloon.tsx +100 -100
  18. package/src/app/Messenger/components/MessengerAvatar/MessengerAvatar.tsx +29 -29
  19. package/src/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.tsx +62 -62
  20. package/src/app/Messenger/components/RenderFileIcon/RenderFileIcon.tsx +40 -40
  21. package/src/app/Messenger/components/SearchInput/SearchInput.less +45 -45
  22. package/src/app/Messenger/components/SearchInput/SearchInput.tsx +77 -77
  23. package/src/app/Messenger/components/Select/Select.less +22 -22
  24. package/src/app/Messenger/components/Select/Select.tsx +56 -56
  25. package/src/app/Messenger/components/SendMessageForm/SendMessageForm.tsx +254 -254
  26. package/src/app/Messenger/components/SenderMessages/SenderMessages.tsx +91 -91
  27. package/src/app/Messenger/components/SystemMessage/SystemMessage.tsx +25 -25
  28. package/src/app/Messenger/components/TextArea/TextArea.tsx +35 -35
  29. package/src/app/Messenger/components/TextArea/Textarea.less +22 -22
  30. package/src/app/Messenger/components/Tooltip/Tooltip.less +27 -27
  31. package/src/app/Messenger/components/Tooltip/Tooltip.tsx +17 -17
  32. package/src/app/Messenger/hooks/useConversations.tsx +143 -143
  33. package/src/app/Messenger/hooks/useMessages.tsx +49 -49
  34. package/src/app/Messenger/hooks/useThemes.tsx +14 -14
  35. package/src/app/Messenger/icons/AttachFileIcon.tsx +20 -20
  36. package/src/app/Messenger/icons/CSVFileIcon.tsx +26 -26
  37. package/src/app/Messenger/icons/CloseIcon.tsx +20 -20
  38. package/src/app/Messenger/icons/DOCFileIcon.tsx +54 -54
  39. package/src/app/Messenger/icons/DownloadMinimalistIcon.tsx +37 -37
  40. package/src/app/Messenger/icons/EmptyIcon.tsx +20 -20
  41. package/src/app/Messenger/icons/MP4FileIcon.tsx +26 -26
  42. package/src/app/Messenger/icons/MessageIcon.tsx +27 -27
  43. package/src/app/Messenger/icons/PDFFileIcon.tsx +54 -54
  44. package/src/app/Messenger/icons/ReadIcon.tsx +18 -18
  45. package/src/app/Messenger/icons/SearchIcon.tsx +20 -20
  46. package/src/app/Messenger/icons/TimerIcon.tsx +18 -18
  47. package/src/app/Messenger/icons/TrashIcon.tsx +21 -21
  48. package/src/app/Messenger/views/Messenger.less +623 -623
  49. package/src/app/Messenger/views/MessengerList.tsx +170 -170
  50. package/src/app/Messenger/views/MessengerListItem.tsx +178 -178
  51. package/src/app/Messenger/views/MessengerMessages.tsx +414 -414
  52. package/src/app/Messenger/views/NewFormChat.tsx +145 -145
  53. package/src/app/i18n/index.ts +36 -36
  54. package/src/app/i18n/locales/en.json +64 -64
  55. package/src/app/i18n/locales/pt.json +64 -64
  56. package/src/assets/right-arrow.svg +9 -9
  57. package/src/index.ts +23 -23
  58. package/src/react-app-env.d.ts +19 -19
  59. package/src/setupTests.ts +5 -5
  60. package/src/styles/abstracts/animations.less +8 -8
  61. package/src/styles/abstracts/mixins.less +5 -5
  62. package/src/styles/abstracts/variables.less +31 -31
  63. package/src/styles/base/base.less +6 -6
  64. package/src/styles/index.less +5 -5
  65. package/src/types.ts +174 -174
  66. package/dist/agx-chat.esm.js +0 -2
  67. package/dist/agx-chat.esm.js.map +0 -1
  68. package/dist/agx-chat.min.js +0 -2
  69. package/dist/agx-chat.min.js.map +0 -1
  70. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.d.ts +0 -1
  71. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js +0 -46
  72. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js.map +0 -1
  73. package/dist/esm/app/Messenger/classes/slaCalculations.d.ts +0 -30
  74. package/dist/esm/app/Messenger/classes/slaCalculations.js +0 -144
  75. package/dist/esm/app/Messenger/classes/slaCalculations.js.map +0 -1
  76. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.d.ts +0 -14
  77. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js +0 -31
  78. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js.map +0 -1
  79. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.d.ts +0 -10
  80. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js +0 -15
  81. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js.map +0 -1
  82. package/dist/esm/app/Messenger/components/DocMessage/DocMessage.d.ts +0 -5
  83. package/dist/esm/app/Messenger/components/DocMessage/DocMessage.js +0 -35
  84. package/dist/esm/app/Messenger/components/DocMessage/DocMessage.js.map +0 -1
  85. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.d.ts +0 -4
  86. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js +0 -39
  87. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js.map +0 -1
  88. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.d.ts +0 -7
  89. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js +0 -49
  90. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js.map +0 -1
  91. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.d.ts +0 -13
  92. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js +0 -43
  93. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js.map +0 -1
  94. package/dist/esm/app/Messenger/components/InputFile/InputFile.d.ts +0 -11
  95. package/dist/esm/app/Messenger/components/InputFile/InputFile.js +0 -72
  96. package/dist/esm/app/Messenger/components/InputFile/InputFile.js.map +0 -1
  97. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.d.ts +0 -9
  98. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js +0 -34
  99. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js.map +0 -1
  100. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.d.ts +0 -4
  101. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js +0 -13
  102. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js.map +0 -1
  103. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.d.ts +0 -41
  104. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js +0 -40
  105. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js.map +0 -1
  106. package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.d.ts +0 -6
  107. package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js +0 -21
  108. package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js.map +0 -1
  109. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.d.ts +0 -11
  110. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js +0 -33
  111. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js.map +0 -1
  112. package/dist/esm/app/Messenger/components/Select/Select.d.ts +0 -14
  113. package/dist/esm/app/Messenger/components/Select/Select.js +0 -16
  114. package/dist/esm/app/Messenger/components/Select/Select.js.map +0 -1
  115. package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.d.ts +0 -13
  116. package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js +0 -119
  117. package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js.map +0 -1
  118. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.d.ts +0 -4
  119. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js +0 -40
  120. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js.map +0 -1
  121. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.d.ts +0 -4
  122. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js +0 -14
  123. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js.map +0 -1
  124. package/dist/esm/app/Messenger/components/TextArea/TextArea.d.ts +0 -9
  125. package/dist/esm/app/Messenger/components/TextArea/TextArea.js +0 -14
  126. package/dist/esm/app/Messenger/components/TextArea/TextArea.js.map +0 -1
  127. package/dist/esm/app/Messenger/components/Tooltip/Tooltip.d.ts +0 -7
  128. package/dist/esm/app/Messenger/components/Tooltip/Tooltip.js +0 -9
  129. package/dist/esm/app/Messenger/components/Tooltip/Tooltip.js.map +0 -1
  130. package/dist/esm/app/Messenger/hooks/useConversations.d.ts +0 -21
  131. package/dist/esm/app/Messenger/hooks/useConversations.js +0 -105
  132. package/dist/esm/app/Messenger/hooks/useConversations.js.map +0 -1
  133. package/dist/esm/app/Messenger/hooks/useMessages.d.ts +0 -9
  134. package/dist/esm/app/Messenger/hooks/useMessages.js +0 -37
  135. package/dist/esm/app/Messenger/hooks/useMessages.js.map +0 -1
  136. package/dist/esm/app/Messenger/hooks/useThemes.d.ts +0 -32
  137. package/dist/esm/app/Messenger/hooks/useThemes.js +0 -11
  138. package/dist/esm/app/Messenger/hooks/useThemes.js.map +0 -1
  139. package/dist/esm/app/Messenger/icons/AttachFileIcon.d.ts +0 -4
  140. package/dist/esm/app/Messenger/icons/AttachFileIcon.js +0 -10
  141. package/dist/esm/app/Messenger/icons/AttachFileIcon.js.map +0 -1
  142. package/dist/esm/app/Messenger/icons/CloseIcon.d.ts +0 -2
  143. package/dist/esm/app/Messenger/icons/CloseIcon.js +0 -9
  144. package/dist/esm/app/Messenger/icons/CloseIcon.js.map +0 -1
  145. package/dist/esm/app/Messenger/icons/DOCFileIcon.d.ts +0 -4
  146. package/dist/esm/app/Messenger/icons/DOCFileIcon.js +0 -18
  147. package/dist/esm/app/Messenger/icons/DOCFileIcon.js.map +0 -1
  148. package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.d.ts +0 -7
  149. package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.js +0 -12
  150. package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.js.map +0 -1
  151. package/dist/esm/app/Messenger/icons/EmptyIcon.d.ts +0 -2
  152. package/dist/esm/app/Messenger/icons/EmptyIcon.js +0 -8
  153. package/dist/esm/app/Messenger/icons/EmptyIcon.js.map +0 -1
  154. package/dist/esm/app/Messenger/icons/MessageIcon.d.ts +0 -6
  155. package/dist/esm/app/Messenger/icons/MessageIcon.js +0 -12
  156. package/dist/esm/app/Messenger/icons/MessageIcon.js.map +0 -1
  157. package/dist/esm/app/Messenger/icons/PDFFileIcon.d.ts +0 -4
  158. package/dist/esm/app/Messenger/icons/PDFFileIcon.js +0 -18
  159. package/dist/esm/app/Messenger/icons/PDFFileIcon.js.map +0 -1
  160. package/dist/esm/app/Messenger/icons/ReadIcon.d.ts +0 -4
  161. package/dist/esm/app/Messenger/icons/ReadIcon.js +0 -7
  162. package/dist/esm/app/Messenger/icons/ReadIcon.js.map +0 -1
  163. package/dist/esm/app/Messenger/icons/SearchIcon.d.ts +0 -2
  164. package/dist/esm/app/Messenger/icons/SearchIcon.js +0 -8
  165. package/dist/esm/app/Messenger/icons/SearchIcon.js.map +0 -1
  166. package/dist/esm/app/Messenger/icons/TimerIcon.d.ts +0 -4
  167. package/dist/esm/app/Messenger/icons/TimerIcon.js +0 -7
  168. package/dist/esm/app/Messenger/icons/TimerIcon.js.map +0 -1
  169. package/dist/esm/app/Messenger/icons/TrashIcon.d.ts +0 -6
  170. package/dist/esm/app/Messenger/icons/TrashIcon.js +0 -7
  171. package/dist/esm/app/Messenger/icons/TrashIcon.js.map +0 -1
  172. package/dist/esm/app/Messenger/views/MessengerList.d.ts +0 -40
  173. package/dist/esm/app/Messenger/views/MessengerList.js +0 -46
  174. package/dist/esm/app/Messenger/views/MessengerList.js.map +0 -1
  175. package/dist/esm/app/Messenger/views/MessengerListItem.d.ts +0 -12
  176. package/dist/esm/app/Messenger/views/MessengerListItem.js +0 -99
  177. package/dist/esm/app/Messenger/views/MessengerListItem.js.map +0 -1
  178. package/dist/esm/app/Messenger/views/MessengerMessages.d.ts +0 -35
  179. package/dist/esm/app/Messenger/views/MessengerMessages.js +0 -181
  180. package/dist/esm/app/Messenger/views/MessengerMessages.js.map +0 -1
  181. package/dist/esm/app/Messenger/views/NewFormChat.d.ts +0 -13
  182. package/dist/esm/app/Messenger/views/NewFormChat.js +0 -68
  183. package/dist/esm/app/Messenger/views/NewFormChat.js.map +0 -1
  184. package/dist/esm/app/i18n/index.d.ts +0 -3
  185. package/dist/esm/app/i18n/index.js +0 -31
  186. package/dist/esm/app/i18n/index.js.map +0 -1
  187. package/dist/esm/app/i18n/locales/index.d.ts +0 -6
  188. package/dist/esm/app/i18n/locales/index.js +0 -7
  189. package/dist/esm/app/i18n/locales/index.js.map +0 -1
  190. package/dist/esm/index.d.ts +0 -10
  191. package/dist/esm/index.js +0 -11
  192. package/dist/esm/index.js.map +0 -1
  193. package/dist/esm/setupTests.d.ts +0 -1
  194. package/dist/esm/setupTests.js +0 -6
  195. package/dist/esm/setupTests.js.map +0 -1
  196. package/dist/esm/types.d.ts +0 -140
  197. package/dist/esm/types.js +0 -2
  198. package/dist/esm/types.js.map +0 -1
@@ -1,147 +1,147 @@
1
- import TrashIcon from '../../icons/TrashIcon'
2
- import React, { useMemo } from 'react'
3
- import useTheme from '../../hooks/useThemes'
4
- import { useTranslation } from 'react-i18next'
5
-
6
- interface IProps {
7
- fileList: File[]
8
- onUpdateFile: (files: File) => void
9
- label: string
10
- onRemoveFile: (files: File) => void
11
- maxSize: string
12
- loading: boolean
13
- }
14
-
15
- function InputFile ({
16
- fileList,
17
- onUpdateFile,
18
- label,
19
- onRemoveFile,
20
- maxSize,
21
- loading,
22
- }: IProps) {
23
- const { theme } = useTheme()
24
- const { t } = useTranslation('newFormChat')
25
-
26
- const validateFileType = useMemo(
27
- () => (allowedTypes: string[], file?: File) => {
28
- if (file?.type) {
29
- return allowedTypes.includes(file.type)
30
- }
31
- const extension = file?.name.split('.').pop()?.toLowerCase()
32
- return extension ? allowedTypes.includes(`.${extension}`) : false
33
- },
34
- []
35
- )
36
-
37
- const onUpload = () => {
38
- const input = document.querySelector('.file-input__input') as HTMLElement
39
- input?.click()
40
- }
41
-
42
- const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
43
- const file = e?.target?.files?.[0]
44
-
45
- const isAllowedType = validateFileType(
46
- [
47
- 'image/png',
48
- 'image/jpeg',
49
- 'application/pdf',
50
- 'application/msword',
51
- 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
52
- 'text/csv',
53
- 'video/mp4',
54
- ],
55
- file
56
- )
57
- if (!isAllowedType) {
58
- console.error(t('inputFile.documentSendError'))
59
- return false
60
- }
61
-
62
- if (file) onUpdateFile(file)
63
- return true
64
- }
65
-
66
- const removeItem = (file: File) => {
67
- if (fileList.some((item) => item === file)) {
68
- onRemoveFile(file)
69
- }
70
- }
71
-
72
- return (
73
- <>
74
- <div className='file-input'>
75
- <label
76
- style={{ color: theme.newChatFormTexts }}
77
- htmlFor=''
78
- className='file-input__label'
79
- >
80
- {label}
81
- </label>
82
- <div
83
- className='file-input__container'
84
- style={{
85
- backgroundColor: theme.inputBg,
86
- color: theme.newChatFormTexts,
87
- }}
88
- >
89
- <input
90
- className='file-input__input'
91
- type='file'
92
- id='docpicker'
93
- hidden
94
- accept='.jpg, .jpeg, .png, .pdf, .doc, .docx, .csv, .mp4'
95
- onChange={(event) => onChange(event)}
96
- />
97
-
98
- <h4>{t('inputFile.chooseFile')}</h4>
99
- <button
100
- className='file-input__button'
101
- type='button'
102
- onClick={onUpload}
103
- style={{
104
- background: theme?.buttonPrimary,
105
- color: theme?.buttonPrimaryText,
106
- }}
107
- >
108
- {t('inputFile.chooseFile')}
109
- </button>
110
-
111
- {loading ? (
112
- ''
113
- ) : (
114
- <p>
115
- {t('inputFile.allowDocuments')}(
116
- {t('inputFile.allowSizeDocument', { maxSize })})
117
- </p>
118
- )}
119
- </div>
120
- </div>
121
-
122
- <div>
123
- {fileList &&
124
- fileList.map((item) => (
125
- <div
126
- className='file-input__list'
127
- key={item.name}
128
- style={{
129
- backgroundColor: theme.inputBg,
130
- color: theme.newChatFormTexts,
131
- }}
132
- >
133
- <span className='file-input__list--file-name'>{item.name}</span>
134
- <button
135
- className='file-input__delete'
136
- onClick={() => removeItem(item)}
137
- >
138
- <TrashIcon color={theme.newChatFormDeleteFileButton || 'red'} />
139
- </button>
140
- </div>
141
- ))}
142
- </div>
143
- </>
144
- )
145
- }
146
-
147
- export default InputFile
1
+ import TrashIcon from '../../icons/TrashIcon'
2
+ import React, { useMemo } from 'react'
3
+ import useTheme from '../../hooks/useThemes'
4
+ import { useTranslation } from 'react-i18next'
5
+
6
+ interface IProps {
7
+ fileList: File[]
8
+ onUpdateFile: (files: File) => void
9
+ label: string
10
+ onRemoveFile: (files: File) => void
11
+ maxSize: string
12
+ loading: boolean
13
+ }
14
+
15
+ function InputFile ({
16
+ fileList,
17
+ onUpdateFile,
18
+ label,
19
+ onRemoveFile,
20
+ maxSize,
21
+ loading,
22
+ }: IProps) {
23
+ const { theme } = useTheme()
24
+ const { t } = useTranslation('newFormChat')
25
+
26
+ const validateFileType = useMemo(
27
+ () => (allowedTypes: string[], file?: File) => {
28
+ if (file?.type) {
29
+ return allowedTypes.includes(file.type)
30
+ }
31
+ const extension = file?.name.split('.').pop()?.toLowerCase()
32
+ return extension ? allowedTypes.includes(`.${extension}`) : false
33
+ },
34
+ []
35
+ )
36
+
37
+ const onUpload = () => {
38
+ const input = document.querySelector('.file-input__input') as HTMLElement
39
+ input?.click()
40
+ }
41
+
42
+ const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
43
+ const file = e?.target?.files?.[0]
44
+
45
+ const isAllowedType = validateFileType(
46
+ [
47
+ 'image/png',
48
+ 'image/jpeg',
49
+ 'application/pdf',
50
+ 'application/msword',
51
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
52
+ 'text/csv',
53
+ 'video/mp4',
54
+ ],
55
+ file
56
+ )
57
+ if (!isAllowedType) {
58
+ console.error(t('inputFile.documentSendError'))
59
+ return false
60
+ }
61
+
62
+ if (file) onUpdateFile(file)
63
+ return true
64
+ }
65
+
66
+ const removeItem = (file: File) => {
67
+ if (fileList.some((item) => item === file)) {
68
+ onRemoveFile(file)
69
+ }
70
+ }
71
+
72
+ return (
73
+ <>
74
+ <div className='file-input'>
75
+ <label
76
+ style={{ color: theme.newChatFormTexts }}
77
+ htmlFor=''
78
+ className='file-input__label'
79
+ >
80
+ {label}
81
+ </label>
82
+ <div
83
+ className='file-input__container'
84
+ style={{
85
+ backgroundColor: theme.inputBg,
86
+ color: theme.newChatFormTexts,
87
+ }}
88
+ >
89
+ <input
90
+ className='file-input__input'
91
+ type='file'
92
+ id='docpicker'
93
+ hidden
94
+ accept='.jpg, .jpeg, .png, .pdf, .doc, .docx, .csv, .mp4'
95
+ onChange={(event) => onChange(event)}
96
+ />
97
+
98
+ <h4>{t('inputFile.chooseFile')}</h4>
99
+ <button
100
+ className='file-input__button'
101
+ type='button'
102
+ onClick={onUpload}
103
+ style={{
104
+ background: theme?.buttonPrimary,
105
+ color: theme?.buttonPrimaryText,
106
+ }}
107
+ >
108
+ {t('inputFile.chooseFile')}
109
+ </button>
110
+
111
+ {loading ? (
112
+ ''
113
+ ) : (
114
+ <p>
115
+ {t('inputFile.allowDocuments')}(
116
+ {t('inputFile.allowSizeDocument', { maxSize })})
117
+ </p>
118
+ )}
119
+ </div>
120
+ </div>
121
+
122
+ <div>
123
+ {fileList &&
124
+ fileList.map((item) => (
125
+ <div
126
+ className='file-input__list'
127
+ key={item.name}
128
+ style={{
129
+ backgroundColor: theme.inputBg,
130
+ color: theme.newChatFormTexts,
131
+ }}
132
+ >
133
+ <span className='file-input__list--file-name'>{item.name}</span>
134
+ <button
135
+ className='file-input__delete'
136
+ onClick={() => removeItem(item)}
137
+ >
138
+ <TrashIcon color={theme.newChatFormDeleteFileButton || 'red'} />
139
+ </button>
140
+ </div>
141
+ ))}
142
+ </div>
143
+ </>
144
+ )
145
+ }
146
+
147
+ export default InputFile
@@ -1,59 +1,59 @@
1
- .file-input {
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
- &__container {
12
- align-items: center;
13
- background-color: var(--secondary-color);
14
- border-radius: 10px;
15
- display: flex;
16
- flex-direction: column;
17
- justify-content: center;
18
- margin-top: 0.5rem;
19
- padding: 1rem;
20
- width: 100%;
21
- }
22
-
23
- &__button {
24
- border: none;
25
- border-radius: 30px;
26
- color: var(--secondary-color);
27
- cursor: pointer;
28
- font-size: 1rem;
29
- font-weight: bold;
30
- margin: 0.5rem 1rem;
31
- padding: 0.5rem;
32
- }
33
-
34
- &__list {
35
- align-items: center;
36
- background-color: var(--secondary-color);
37
- border-radius: 10px;
38
- display: flex;
39
- justify-content: space-between;
40
- margin: 0.5rem 0;
41
- padding: 0.5rem;
42
-
43
- &--file-name {
44
- overflow: hidden;
45
- text-overflow: ellipsis;
46
- white-space: nowrap;
47
- max-width: 100%;
48
- }
49
- }
50
-
51
- &__delete {
52
- align-items: center;
53
- background: transparent;
54
- border: none;
55
- cursor: pointer;
56
- display: flex;
57
- justify-content: center;
58
- }
59
- }
1
+ .file-input {
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
+ &__container {
12
+ align-items: center;
13
+ background-color: var(--secondary-color);
14
+ border-radius: 10px;
15
+ display: flex;
16
+ flex-direction: column;
17
+ justify-content: center;
18
+ margin-top: 0.5rem;
19
+ padding: 1rem;
20
+ width: 100%;
21
+ }
22
+
23
+ &__button {
24
+ border: none;
25
+ border-radius: 30px;
26
+ color: var(--secondary-color);
27
+ cursor: pointer;
28
+ font-size: 1rem;
29
+ font-weight: bold;
30
+ margin: 0.5rem 1rem;
31
+ padding: 0.5rem;
32
+ }
33
+
34
+ &__list {
35
+ align-items: center;
36
+ background-color: var(--secondary-color);
37
+ border-radius: 10px;
38
+ display: flex;
39
+ justify-content: space-between;
40
+ margin: 0.5rem 0;
41
+ padding: 0.5rem;
42
+
43
+ &--file-name {
44
+ overflow: hidden;
45
+ text-overflow: ellipsis;
46
+ white-space: nowrap;
47
+ max-width: 100%;
48
+ }
49
+ }
50
+
51
+ &__delete {
52
+ align-items: center;
53
+ background: transparent;
54
+ border: none;
55
+ cursor: pointer;
56
+ display: flex;
57
+ justify-content: center;
58
+ }
59
+ }
@@ -1,100 +1,100 @@
1
- import React from 'react'
2
- import { Iimages, IMessages } from 'types'
3
- import IncomingMessage from '../IncomingMessage/IncomingMessage'
4
- import SenderMessages from '../SenderMessages/SenderMessages'
5
- import SystemMessage from '../SystemMessage/SystemMessage'
6
-
7
- function MessageBalloon ({
8
- item,
9
- creatorId,
10
- formatDate,
11
- id,
12
- }: {
13
- item: IMessages
14
- creatorId?: string
15
- formatDate: (date: string | Date) => string | undefined
16
- id: string
17
- }) {
18
- if (item.isSystemMessage) {
19
- return (
20
- <SystemMessage
21
- formatDate={formatDate}
22
- date={item.createdAt}
23
- message={item.content}
24
- id={item.senderId}
25
- user={{ name: 'System' }}
26
- />
27
- )
28
- }
29
-
30
- if (
31
- item.sender.uniqueCode &&
32
- !item.isSystemMessage &&
33
- item.sender.uniqueCode === creatorId
34
- ) {
35
- return (
36
- <>
37
- <SenderMessages
38
- id={id}
39
- formatDate={formatDate}
40
- message={item.content}
41
- date={item.createdAt}
42
- read={item.everybodyHasRead}
43
- hasFile={item.hasFile}
44
- file={item.file}
45
- />
46
-
47
- {item.images &&
48
- item.images.map((image: Iimages, index: number) => (
49
- <SenderMessages
50
- key={image.key}
51
- id={`${id}image-${index}`}
52
- formatDate={formatDate}
53
- date={item.createdAt}
54
- file={image}
55
- message=''
56
- hasFile={true}
57
- read={item.everybodyHasRead}
58
- />
59
- ))}
60
- </>
61
- )
62
- }
63
-
64
- return (
65
- <>
66
- <IncomingMessage
67
- id={id}
68
- formatDate={formatDate}
69
- date={item.createdAt}
70
- message={item.content}
71
- hasFile={item.hasFile}
72
- isSystemMessage={item.isSystemMessage}
73
- file={item.file}
74
- user={{
75
- avatar: item.sender?.image,
76
- name: item.sender.username,
77
- }}
78
- />
79
-
80
- {item.images &&
81
- item.images.map((image: Iimages, index: number) => (
82
- <IncomingMessage
83
- key={image.key}
84
- id={`${id}image-${index}`}
85
- formatDate={formatDate}
86
- date={item.createdAt}
87
- file={image}
88
- message=''
89
- hasFile={true}
90
- user={{
91
- avatar: item.sender?.image,
92
- name: item.sender.username,
93
- }}
94
- />
95
- ))}
96
- </>
97
- )
98
- }
99
-
100
- export default MessageBalloon
1
+ import React from 'react'
2
+ import { Iimages, IMessages } from 'types'
3
+ import IncomingMessage from '../IncomingMessage/IncomingMessage'
4
+ import SenderMessages from '../SenderMessages/SenderMessages'
5
+ import SystemMessage from '../SystemMessage/SystemMessage'
6
+
7
+ function MessageBalloon ({
8
+ item,
9
+ creatorId,
10
+ formatDate,
11
+ id,
12
+ }: {
13
+ item: IMessages
14
+ creatorId?: string
15
+ formatDate: (date: string | Date) => string | undefined
16
+ id: string
17
+ }) {
18
+ if (item.isSystemMessage) {
19
+ return (
20
+ <SystemMessage
21
+ formatDate={formatDate}
22
+ date={item.createdAt}
23
+ message={item.content}
24
+ id={item.senderId}
25
+ user={{ name: 'System' }}
26
+ />
27
+ )
28
+ }
29
+
30
+ if (
31
+ item.sender.uniqueCode &&
32
+ !item.isSystemMessage &&
33
+ item.sender.uniqueCode === creatorId
34
+ ) {
35
+ return (
36
+ <>
37
+ <SenderMessages
38
+ id={id}
39
+ formatDate={formatDate}
40
+ message={item.content}
41
+ date={item.createdAt}
42
+ read={item.everybodyHasRead}
43
+ hasFile={item.hasFile}
44
+ file={item.file}
45
+ />
46
+
47
+ {item.images &&
48
+ item.images.map((image: Iimages, index: number) => (
49
+ <SenderMessages
50
+ key={image.key}
51
+ id={`${id}image-${index}`}
52
+ formatDate={formatDate}
53
+ date={item.createdAt}
54
+ file={image}
55
+ message=''
56
+ hasFile={true}
57
+ read={item.everybodyHasRead}
58
+ />
59
+ ))}
60
+ </>
61
+ )
62
+ }
63
+
64
+ return (
65
+ <>
66
+ <IncomingMessage
67
+ id={id}
68
+ formatDate={formatDate}
69
+ date={item.createdAt}
70
+ message={item.content}
71
+ hasFile={item.hasFile}
72
+ isSystemMessage={item.isSystemMessage}
73
+ file={item.file}
74
+ user={{
75
+ avatar: item.sender?.image,
76
+ name: item.sender.username,
77
+ }}
78
+ />
79
+
80
+ {item.images &&
81
+ item.images.map((image: Iimages, index: number) => (
82
+ <IncomingMessage
83
+ key={image.key}
84
+ id={`${id}image-${index}`}
85
+ formatDate={formatDate}
86
+ date={item.createdAt}
87
+ file={image}
88
+ message=''
89
+ hasFile={true}
90
+ user={{
91
+ avatar: item.sender?.image,
92
+ name: item.sender.username,
93
+ }}
94
+ />
95
+ ))}
96
+ </>
97
+ )
98
+ }
99
+
100
+ export default MessageBalloon
@@ -1,29 +1,29 @@
1
- import useTheme from '../../hooks/useThemes'
2
- import React from 'react'
3
- import { useTranslation } from 'react-i18next'
4
- import { IMesssengerAvatar } from 'types'
5
-
6
- function MessengerAvatar ({
7
- image,
8
- children,
9
- className = '',
10
- }: IMesssengerAvatar) {
11
- const { t } = useTranslation('messengerList')
12
- const { theme } = useTheme()
13
- return (
14
- <figure
15
- className={`${className} messenger__aside-list-item--avatar`}
16
- style={{
17
- background: theme.messengerIncomerColor,
18
- }}
19
- >
20
- {image ? (
21
- <img loading='lazy' alt={t('messengerAvatar.alt')} src={image} />
22
- ) : (
23
- children
24
- )}
25
- </figure>
26
- )
27
- }
28
-
29
- export default MessengerAvatar
1
+ import useTheme from '../../hooks/useThemes'
2
+ import React from 'react'
3
+ import { useTranslation } from 'react-i18next'
4
+ import { IMesssengerAvatar } from 'types'
5
+
6
+ function MessengerAvatar ({
7
+ image,
8
+ children,
9
+ className = '',
10
+ }: IMesssengerAvatar) {
11
+ const { t } = useTranslation('messengerList')
12
+ const { theme } = useTheme()
13
+ return (
14
+ <figure
15
+ className={`${className} messenger__aside-list-item--avatar`}
16
+ style={{
17
+ background: theme.messengerIncomerColor,
18
+ }}
19
+ >
20
+ {image ? (
21
+ <img loading='lazy' alt={t('messengerAvatar.alt')} src={image} />
22
+ ) : (
23
+ children
24
+ )}
25
+ </figure>
26
+ )
27
+ }
28
+
29
+ export default MessengerAvatar