agx-chat-web 1.1.0 → 1.2.1

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 (86) hide show
  1. package/README.md +49 -49
  2. package/dist/agx-chat.esm.js +1 -1
  3. package/dist/agx-chat.esm.js.map +1 -1
  4. package/dist/{agx-chat.min.js → agx-chat.umd.js} +2 -2
  5. package/dist/agx-chat.umd.js.map +1 -0
  6. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js +7 -3
  7. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js.map +1 -1
  8. package/dist/esm/app/Messenger/components/InputFile/InputFile.js +3 -1
  9. package/dist/esm/app/Messenger/components/InputFile/InputFile.js.map +1 -1
  10. package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js +8 -0
  11. package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js.map +1 -1
  12. package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js +30 -8
  13. package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js.map +1 -1
  14. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js +11 -8
  15. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js.map +1 -1
  16. package/dist/esm/app/Messenger/icons/CSVFileIcon.d.ts +4 -0
  17. package/dist/esm/app/Messenger/icons/CSVFileIcon.js +7 -0
  18. package/dist/esm/app/Messenger/icons/CSVFileIcon.js.map +1 -0
  19. package/dist/esm/app/Messenger/icons/MP4FileIcon.d.ts +4 -0
  20. package/dist/esm/app/Messenger/icons/MP4FileIcon.js +7 -0
  21. package/dist/esm/app/Messenger/icons/MP4FileIcon.js.map +1 -0
  22. package/package.json +91 -91
  23. package/src/__tests__/app/Messenger/classes/slaCalculations.spec.ts +122 -122
  24. package/src/app/ChatProvider/ChatProvider.tsx +20 -20
  25. package/src/app/Messenger/classes/slaCalculations.ts +197 -197
  26. package/src/app/Messenger/components/ChatButton/ChatButton.tsx +64 -64
  27. package/src/app/Messenger/components/ChatTabs/ChatTabs.less +18 -18
  28. package/src/app/Messenger/components/ChatTabs/ChatTabs.tsx +32 -32
  29. package/src/app/Messenger/components/DocMessage/DocMessage.less +71 -71
  30. package/src/app/Messenger/components/DocMessage/DocMessage.tsx +50 -50
  31. package/src/app/Messenger/components/ImagesContainer/ImagesContainer.less +79 -79
  32. package/src/app/Messenger/components/ImagesContainer/ImagesContainer.tsx +51 -51
  33. package/src/app/Messenger/components/IncomingMessage/IncomingMessage.tsx +170 -166
  34. package/src/app/Messenger/components/InfiniteScroll/InfiniteScroll.tsx +80 -80
  35. package/src/app/Messenger/components/InputFile/InputFile.tsx +147 -145
  36. package/src/app/Messenger/components/InputFile/inputFile.less +59 -59
  37. package/src/app/Messenger/components/MessageBallon/MessageBalloon.tsx +100 -100
  38. package/src/app/Messenger/components/MessengerAvatar/MessengerAvatar.tsx +29 -29
  39. package/src/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.tsx +62 -62
  40. package/src/app/Messenger/components/RenderFileIcon/RenderFileIcon.tsx +40 -34
  41. package/src/app/Messenger/components/SearchInput/SearchInput.less +45 -45
  42. package/src/app/Messenger/components/SearchInput/SearchInput.tsx +77 -77
  43. package/src/app/Messenger/components/Select/Select.less +22 -22
  44. package/src/app/Messenger/components/Select/Select.tsx +56 -56
  45. package/src/app/Messenger/components/SendMessageForm/SendMessageForm.tsx +254 -234
  46. package/src/app/Messenger/components/SenderMessages/SenderMessages.tsx +91 -89
  47. package/src/app/Messenger/components/SystemMessage/SystemMessage.tsx +25 -25
  48. package/src/app/Messenger/components/TextArea/TextArea.tsx +35 -35
  49. package/src/app/Messenger/components/TextArea/Textarea.less +22 -22
  50. package/src/app/Messenger/components/Tooltip/Tooltip.less +27 -27
  51. package/src/app/Messenger/components/Tooltip/Tooltip.tsx +17 -17
  52. package/src/app/Messenger/hooks/useConversations.tsx +143 -143
  53. package/src/app/Messenger/hooks/useMessages.tsx +49 -49
  54. package/src/app/Messenger/hooks/useThemes.tsx +14 -14
  55. package/src/app/Messenger/icons/AttachFileIcon.tsx +20 -20
  56. package/src/app/Messenger/icons/CSVFileIcon.tsx +26 -0
  57. package/src/app/Messenger/icons/CloseIcon.tsx +20 -20
  58. package/src/app/Messenger/icons/DOCFileIcon.tsx +54 -54
  59. package/src/app/Messenger/icons/DownloadMinimalistIcon.tsx +37 -37
  60. package/src/app/Messenger/icons/EmptyIcon.tsx +20 -20
  61. package/src/app/Messenger/icons/MP4FileIcon.tsx +26 -0
  62. package/src/app/Messenger/icons/MessageIcon.tsx +27 -27
  63. package/src/app/Messenger/icons/PDFFileIcon.tsx +54 -54
  64. package/src/app/Messenger/icons/ReadIcon.tsx +18 -18
  65. package/src/app/Messenger/icons/SearchIcon.tsx +20 -20
  66. package/src/app/Messenger/icons/TimerIcon.tsx +18 -18
  67. package/src/app/Messenger/icons/TrashIcon.tsx +21 -21
  68. package/src/app/Messenger/views/Messenger.less +623 -623
  69. package/src/app/Messenger/views/MessengerList.tsx +170 -170
  70. package/src/app/Messenger/views/MessengerListItem.tsx +178 -178
  71. package/src/app/Messenger/views/MessengerMessages.tsx +414 -414
  72. package/src/app/Messenger/views/NewFormChat.tsx +145 -145
  73. package/src/app/i18n/index.ts +36 -36
  74. package/src/app/i18n/locales/en.json +64 -64
  75. package/src/app/i18n/locales/pt.json +64 -64
  76. package/src/assets/right-arrow.svg +9 -9
  77. package/src/index.ts +23 -23
  78. package/src/react-app-env.d.ts +19 -19
  79. package/src/setupTests.ts +5 -5
  80. package/src/styles/abstracts/animations.less +8 -8
  81. package/src/styles/abstracts/mixins.less +5 -5
  82. package/src/styles/abstracts/variables.less +31 -31
  83. package/src/styles/base/base.less +6 -6
  84. package/src/styles/index.less +5 -5
  85. package/src/types.ts +174 -174
  86. package/dist/agx-chat.min.js.map +0 -1
@@ -1,170 +1,170 @@
1
- import React, { Fragment } from 'react'
2
- import { IList } from 'types'
3
- import ChatTabs from '../components/ChatTabs/ChatTabs'
4
- import ChatButtons from '../components/ChatButton/ChatButton'
5
- import SearchInput from '../components/SearchInput/SearchInput'
6
- import MessengerListItem, { activeItem } from './MessengerListItem'
7
- import useTheme from '../hooks/useThemes'
8
- import EmptyIcon from '../icons/EmptyIcon'
9
- import InfiniteScroll from '../components/InfiniteScroll/InfiniteScroll'
10
- import { useTranslation } from 'react-i18next'
11
-
12
- interface IMessengerList {
13
- affix?: React.ReactElement
14
- loading: boolean
15
- conversations: IList[]
16
- currentId?: string
17
- failed?: boolean
18
- showBadge: boolean
19
- tab?: 'list' | 'messages'
20
- className?: string
21
- onClick: (item: IList) => void
22
- searchChat: (search: string, key: string) => void
23
- searchKeys: { label: string; value: string }[]
24
- messegerView: 'empty' | 'messages' | 'newChat'
25
- helpDesk: boolean
26
- handleChangeTickets: (tab: string) => void
27
- loadingSearch: boolean
28
- chatListTabs: { value: string; label: string }[]
29
- chatButtons: {
30
- label: string
31
- onClick: () => void
32
- type: string
33
- canSee: boolean
34
- disabled?: boolean
35
- }[]
36
- canSeeDetailsChat: boolean
37
- hasNext: boolean
38
- onIntersect: () => void
39
- sliceCount: number
40
- currentViewerId: string
41
- }
42
-
43
- const ListLoading = () => {
44
- const { theme } = useTheme()
45
- return (
46
- <Fragment>
47
- {new Array(5).fill('').map((_, idx) => (
48
- <button
49
- key={`asideSkeleton${idx}`}
50
- style={{
51
- background: theme.listItemHover,
52
- borderBottom: idx < 4 ? `1px solid ${theme.borderColor}` : '0',
53
- }}
54
- className='messenger__aside-skeleton'
55
- />
56
- ))}
57
- </Fragment>
58
- )
59
- }
60
-
61
- function MessengerList ({
62
- affix,
63
- conversations,
64
- tab,
65
- className = '',
66
- loading,
67
- failed,
68
- showBadge,
69
- currentId,
70
- onClick,
71
- searchChat,
72
- searchKeys,
73
- messegerView,
74
- helpDesk,
75
- handleChangeTickets,
76
- chatListTabs,
77
- chatButtons,
78
- loadingSearch,
79
- canSeeDetailsChat,
80
- hasNext,
81
- onIntersect,
82
- sliceCount,
83
- currentViewerId,
84
- }: IMessengerList) {
85
- const { t } = useTranslation('messengerList')
86
- const { theme } = useTheme()
87
-
88
- return (
89
- <aside
90
- className={`messenger__aside ${className} ${tab === 'messages' ? 'messenger__mobile-hide' : ''}`}
91
- style={{
92
- border: `1px solid ${theme.borderColor}`,
93
- borderRadius: '20px 0 0 20px',
94
- background: theme.asideBg,
95
- }}
96
- >
97
- <div className='messenger__buttons-container'>
98
- <ChatButtons
99
- chatButtons={chatButtons}
100
- messegerView={messegerView}
101
- removeActiveItem={(e: React.MouseEvent<HTMLElement, MouseEvent>) => {
102
- activeItem(
103
- e,
104
- 'messenger__aside-list-item',
105
- 'messenger__aside-list-item--active'
106
- )
107
- }}
108
- />
109
-
110
- {helpDesk && (
111
- <SearchInput
112
- searchKeys={searchKeys}
113
- searchChat={searchChat}
114
- loadingSearch={loadingSearch}
115
- />
116
- )}
117
- </div>
118
-
119
- {affix && (
120
- <div className='messenger__aside-header'>
121
- {React.cloneElement(affix)}
122
- </div>
123
- )}
124
-
125
- <ChatTabs
126
- chatListTabs={chatListTabs}
127
- handleChangeTickets={handleChangeTickets}
128
- />
129
-
130
- <div className='messenger__aside-list'>
131
- <InfiniteScroll
132
- root={document.querySelector('.messenger__aside-list')}
133
- loading={loading}
134
- loadingCover={<ListLoading />}
135
- more={hasNext}
136
- fetch={onIntersect}
137
- >
138
- {Array.isArray(conversations) &&
139
- conversations.length > 0 &&
140
- conversations.slice(0, sliceCount).map((item) => {
141
- return (
142
- <div
143
- key={item?._id}
144
- className={`messenger__aside-item-container ${showBadge ? 'messenger__active-badge' : ''}`}
145
- >
146
- <MessengerListItem
147
- canSeeDetailsChat={canSeeDetailsChat}
148
- currentId={currentId}
149
- item={item}
150
- onClick={onClick}
151
- currentViewerId={currentViewerId}
152
- />
153
- </div>
154
- )
155
- })}
156
- </InfiniteScroll>
157
-
158
- {failed ||
159
- (conversations?.length === 0 && !loading && (
160
- <div className='messenger__aside-empty'>
161
- <EmptyIcon />
162
- <p>{t('noChatFound')}</p>
163
- </div>
164
- ))}
165
- </div>
166
- </aside>
167
- )
168
- }
169
-
170
- export default MessengerList
1
+ import React, { Fragment } from 'react'
2
+ import { IList } from 'types'
3
+ import ChatTabs from '../components/ChatTabs/ChatTabs'
4
+ import ChatButtons from '../components/ChatButton/ChatButton'
5
+ import SearchInput from '../components/SearchInput/SearchInput'
6
+ import MessengerListItem, { activeItem } from './MessengerListItem'
7
+ import useTheme from '../hooks/useThemes'
8
+ import EmptyIcon from '../icons/EmptyIcon'
9
+ import InfiniteScroll from '../components/InfiniteScroll/InfiniteScroll'
10
+ import { useTranslation } from 'react-i18next'
11
+
12
+ interface IMessengerList {
13
+ affix?: React.ReactElement
14
+ loading: boolean
15
+ conversations: IList[]
16
+ currentId?: string
17
+ failed?: boolean
18
+ showBadge: boolean
19
+ tab?: 'list' | 'messages'
20
+ className?: string
21
+ onClick: (item: IList) => void
22
+ searchChat: (search: string, key: string) => void
23
+ searchKeys: { label: string; value: string }[]
24
+ messegerView: 'empty' | 'messages' | 'newChat'
25
+ helpDesk: boolean
26
+ handleChangeTickets: (tab: string) => void
27
+ loadingSearch: boolean
28
+ chatListTabs: { value: string; label: string }[]
29
+ chatButtons: {
30
+ label: string
31
+ onClick: () => void
32
+ type: string
33
+ canSee: boolean
34
+ disabled?: boolean
35
+ }[]
36
+ canSeeDetailsChat: boolean
37
+ hasNext: boolean
38
+ onIntersect: () => void
39
+ sliceCount: number
40
+ currentViewerId: string
41
+ }
42
+
43
+ const ListLoading = () => {
44
+ const { theme } = useTheme()
45
+ return (
46
+ <Fragment>
47
+ {new Array(5).fill('').map((_, idx) => (
48
+ <button
49
+ key={`asideSkeleton${idx}`}
50
+ style={{
51
+ background: theme.listItemHover,
52
+ borderBottom: idx < 4 ? `1px solid ${theme.borderColor}` : '0',
53
+ }}
54
+ className='messenger__aside-skeleton'
55
+ />
56
+ ))}
57
+ </Fragment>
58
+ )
59
+ }
60
+
61
+ function MessengerList ({
62
+ affix,
63
+ conversations,
64
+ tab,
65
+ className = '',
66
+ loading,
67
+ failed,
68
+ showBadge,
69
+ currentId,
70
+ onClick,
71
+ searchChat,
72
+ searchKeys,
73
+ messegerView,
74
+ helpDesk,
75
+ handleChangeTickets,
76
+ chatListTabs,
77
+ chatButtons,
78
+ loadingSearch,
79
+ canSeeDetailsChat,
80
+ hasNext,
81
+ onIntersect,
82
+ sliceCount,
83
+ currentViewerId,
84
+ }: IMessengerList) {
85
+ const { t } = useTranslation('messengerList')
86
+ const { theme } = useTheme()
87
+
88
+ return (
89
+ <aside
90
+ className={`messenger__aside ${className} ${tab === 'messages' ? 'messenger__mobile-hide' : ''}`}
91
+ style={{
92
+ border: `1px solid ${theme.borderColor}`,
93
+ borderRadius: '20px 0 0 20px',
94
+ background: theme.asideBg,
95
+ }}
96
+ >
97
+ <div className='messenger__buttons-container'>
98
+ <ChatButtons
99
+ chatButtons={chatButtons}
100
+ messegerView={messegerView}
101
+ removeActiveItem={(e: React.MouseEvent<HTMLElement, MouseEvent>) => {
102
+ activeItem(
103
+ e,
104
+ 'messenger__aside-list-item',
105
+ 'messenger__aside-list-item--active'
106
+ )
107
+ }}
108
+ />
109
+
110
+ {helpDesk && (
111
+ <SearchInput
112
+ searchKeys={searchKeys}
113
+ searchChat={searchChat}
114
+ loadingSearch={loadingSearch}
115
+ />
116
+ )}
117
+ </div>
118
+
119
+ {affix && (
120
+ <div className='messenger__aside-header'>
121
+ {React.cloneElement(affix)}
122
+ </div>
123
+ )}
124
+
125
+ <ChatTabs
126
+ chatListTabs={chatListTabs}
127
+ handleChangeTickets={handleChangeTickets}
128
+ />
129
+
130
+ <div className='messenger__aside-list'>
131
+ <InfiniteScroll
132
+ root={document.querySelector('.messenger__aside-list')}
133
+ loading={loading}
134
+ loadingCover={<ListLoading />}
135
+ more={hasNext}
136
+ fetch={onIntersect}
137
+ >
138
+ {Array.isArray(conversations) &&
139
+ conversations.length > 0 &&
140
+ conversations.slice(0, sliceCount).map((item) => {
141
+ return (
142
+ <div
143
+ key={item?._id}
144
+ className={`messenger__aside-item-container ${showBadge ? 'messenger__active-badge' : ''}`}
145
+ >
146
+ <MessengerListItem
147
+ canSeeDetailsChat={canSeeDetailsChat}
148
+ currentId={currentId}
149
+ item={item}
150
+ onClick={onClick}
151
+ currentViewerId={currentViewerId}
152
+ />
153
+ </div>
154
+ )
155
+ })}
156
+ </InfiniteScroll>
157
+
158
+ {failed ||
159
+ (conversations?.length === 0 && !loading && (
160
+ <div className='messenger__aside-empty'>
161
+ <EmptyIcon />
162
+ <p>{t('noChatFound')}</p>
163
+ </div>
164
+ ))}
165
+ </div>
166
+ </aside>
167
+ )
168
+ }
169
+
170
+ export default MessengerList