@webinex/chatify 1.0.0-rc2 → 1.0.1-rc3

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 (273) hide show
  1. package/dist/css/chatify.css +183 -141
  2. package/dist/esm/index.js +1 -1
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/types/core/action.d.ts +110 -42
  5. package/dist/esm/types/core/client.d.ts +2 -1
  6. package/dist/esm/types/core/index.d.ts +11 -8
  7. package/dist/esm/types/core/models.d.ts +10 -4
  8. package/dist/esm/types/core/state.d.ts +36 -7
  9. package/dist/esm/types/core/useAddChatMutation.d.ts +2 -0
  10. package/dist/esm/types/core/useAddMemberMutation.d.ts +2 -0
  11. package/dist/esm/types/core/useFetchNextMutation.d.ts +3 -0
  12. package/dist/esm/types/core/useGetAccountsQuery.d.ts +1 -0
  13. package/dist/esm/types/core/useGetChatListQuery.d.ts +1 -0
  14. package/dist/{cjs/types/core/useChat.d.ts → esm/types/core/useGetChatQuery.d.ts} +1 -1
  15. package/dist/esm/types/core/useGetMessagesQuery.d.ts +4 -0
  16. package/dist/esm/types/core/useRemoveMemberMutation.d.ts +2 -0
  17. package/dist/esm/types/core/useSendMutation.d.ts +2 -0
  18. package/dist/esm/types/core/useUpdateChatNameMutation.d.ts +2 -0
  19. package/dist/esm/types/ui/AddChatButton.d.ts +2 -2
  20. package/dist/esm/types/ui/Avatar.d.ts +2 -2
  21. package/dist/esm/types/ui/ChatList/ChatList.d.ts +2 -0
  22. package/dist/esm/types/ui/ChatList/ChatListItemBox.d.ts +6 -0
  23. package/dist/esm/types/ui/ChatList/ChatListItemLastMessage.d.ts +3 -0
  24. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageAuthor.d.ts +3 -0
  25. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageContent.d.ts +3 -0
  26. package/dist/esm/types/ui/ChatList/ChatListItemName.d.ts +3 -0
  27. package/dist/esm/types/ui/ChatList/ChatListItemUnreadCount.d.ts +3 -0
  28. package/dist/esm/types/ui/ChatList/index.d.ts +7 -0
  29. package/dist/esm/types/ui/ChatName.d.ts +2 -2
  30. package/dist/esm/types/ui/ChatPanel/ChatBody.d.ts +5 -0
  31. package/dist/esm/types/ui/ChatPanel/ChatHeader.d.ts +5 -0
  32. package/dist/esm/types/ui/ChatPanel/ChatHeaderMembers.d.ts +5 -0
  33. package/dist/esm/types/ui/ChatPanel/ChatHeaderName.d.ts +5 -0
  34. package/dist/esm/types/ui/ChatPanel/ChatMembersButton.d.ts +5 -0
  35. package/dist/esm/types/ui/ChatPanel/ChatMembersPanel.d.ts +5 -0
  36. package/dist/esm/types/ui/ChatPanel/ChatPanel.d.ts +5 -0
  37. package/dist/esm/types/ui/ChatPanel/index.d.ts +6 -0
  38. package/dist/esm/types/ui/Chatify.d.ts +45 -23
  39. package/dist/esm/types/ui/CreateChatPanel/CreateChatForm.d.ts +11 -0
  40. package/dist/esm/types/ui/CreateChatPanel/CreateChatMemberInput.d.ts +5 -0
  41. package/dist/esm/types/ui/CreateChatPanel/CreateChatNameInput.d.ts +5 -0
  42. package/dist/esm/types/ui/CreateChatPanel/CreateChatPanel.d.ts +2 -0
  43. package/dist/esm/types/ui/CreateChatPanel/index.d.ts +4 -0
  44. package/dist/esm/types/ui/Icon.d.ts +13 -4
  45. package/dist/esm/types/ui/InputBox/InputBox.d.ts +2 -0
  46. package/dist/esm/types/ui/InputBox/InputFilesBox.d.ts +2 -0
  47. package/dist/esm/types/ui/InputBox/InputSubmitButtonBox.d.ts +5 -0
  48. package/dist/esm/types/ui/InputBox/InputTextBox.d.ts +7 -0
  49. package/dist/esm/types/ui/InputBox/index.d.ts +4 -0
  50. package/dist/esm/types/ui/Layout/Aside.d.ts +2 -0
  51. package/dist/esm/types/ui/Layout/Body.d.ts +2 -0
  52. package/dist/esm/types/ui/Layout/Footer.d.ts +2 -0
  53. package/dist/esm/types/ui/Layout/Header.d.ts +2 -0
  54. package/dist/esm/types/ui/Layout/Main.d.ts +2 -0
  55. package/dist/esm/types/ui/Layout/index.d.ts +5 -0
  56. package/dist/esm/types/ui/Message/MessageAuthor.d.ts +3 -0
  57. package/dist/esm/types/ui/Message/MessageBox.d.ts +6 -0
  58. package/dist/esm/types/ui/Message/MessageContent.d.ts +3 -0
  59. package/dist/esm/types/ui/Message/MessageInfoBox.d.ts +3 -0
  60. package/dist/esm/types/ui/Message/MessageRow.d.ts +6 -0
  61. package/dist/esm/types/ui/Message/MessageText.d.ts +3 -0
  62. package/dist/esm/types/ui/Message/index.d.ts +6 -0
  63. package/dist/esm/types/ui/MessageReadObserver.d.ts +6 -0
  64. package/dist/esm/types/ui/Next.d.ts +4 -0
  65. package/dist/esm/types/ui/SendingMessage/SendingMessageBox.d.ts +7 -0
  66. package/dist/esm/types/ui/SendingMessage/SendingMessageContent.d.ts +3 -0
  67. package/dist/esm/types/ui/SendingMessage/SendingMessageInfoBox.d.ts +3 -0
  68. package/dist/esm/types/ui/SendingMessage/SendingMessageText.d.ts +3 -0
  69. package/dist/esm/types/ui/SendingMessage/index.d.ts +4 -0
  70. package/dist/esm/types/ui/SystemMessage/SystemMessageBox.d.ts +6 -0
  71. package/dist/esm/types/ui/SystemMessage/SystemMessageRow.d.ts +9 -0
  72. package/dist/esm/types/ui/SystemMessage/index.d.ts +2 -0
  73. package/dist/esm/types/{util → ui}/customize.d.ts +2 -3
  74. package/dist/esm/types/ui/index.d.ts +6 -6
  75. package/dist/esm/types/ui/localizer.d.ts +5 -0
  76. package/dist/esm/types/util/index.d.ts +0 -1
  77. package/dist/index.d.ts +353 -142
  78. package/package.json +92 -90
  79. package/src/ChatifyContext.tsx +41 -41
  80. package/src/core/action.tsx +405 -319
  81. package/src/core/client.ts +143 -137
  82. package/src/core/index.ts +17 -14
  83. package/src/core/models.tsx +82 -75
  84. package/src/core/reducer.tsx +87 -86
  85. package/src/core/state.ts +92 -38
  86. package/src/core/useAddChatMutation.tsx +22 -0
  87. package/src/core/useAddMemberMutation.tsx +25 -0
  88. package/src/core/useFetchNextMutation.tsx +28 -0
  89. package/src/core/useGetAccountsQuery.tsx +33 -0
  90. package/src/core/useGetChatListQuery.tsx +33 -0
  91. package/src/core/useGetChatQuery.tsx +34 -0
  92. package/src/core/useGetMessagesQuery.tsx +35 -0
  93. package/src/core/useReadMonitor.tsx +32 -31
  94. package/src/core/useRemoveMemberMutation.tsx +23 -0
  95. package/src/core/useSendMutation.tsx +24 -0
  96. package/src/core/useSignalRMonitor.tsx +66 -52
  97. package/src/core/useUpdateChatNameMutation.tsx +23 -0
  98. package/src/index.ts +3 -3
  99. package/src/{ui/styles → styles}/aside.scss +94 -94
  100. package/src/styles/chat.scss +222 -0
  101. package/src/styles/index.scss +79 -0
  102. package/src/{ui/styles → styles}/keyframes.scss +14 -14
  103. package/src/{ui/styles → styles}/mixins.scss +20 -20
  104. package/src/styles/settings.scss +5 -0
  105. package/src/{ui/styles → styles}/variables.scss +10 -10
  106. package/src/ui/AddChatButton.tsx +15 -19
  107. package/src/ui/Avatar.tsx +18 -18
  108. package/src/ui/ChatList/ChatList.tsx +42 -0
  109. package/src/ui/ChatList/ChatListItemBox.tsx +22 -0
  110. package/src/ui/ChatList/ChatListItemLastMessage.tsx +13 -0
  111. package/src/ui/ChatList/ChatListItemLastMessageAuthor.tsx +20 -0
  112. package/src/ui/ChatList/ChatListItemLastMessageContent.tsx +21 -0
  113. package/src/ui/ChatList/ChatListItemName.tsx +13 -0
  114. package/src/ui/ChatList/ChatListItemUnreadCount.tsx +12 -0
  115. package/src/ui/ChatList/index.ts +7 -0
  116. package/src/ui/ChatName.tsx +10 -15
  117. package/src/ui/ChatPanel/ChatBody.tsx +44 -0
  118. package/src/ui/ChatPanel/ChatHeader.tsx +33 -0
  119. package/src/ui/{ChatHeaderMembers.tsx → ChatPanel/ChatHeaderMembers.tsx} +26 -30
  120. package/src/ui/ChatPanel/ChatHeaderName.tsx +67 -0
  121. package/src/ui/ChatPanel/ChatMembersButton.tsx +21 -0
  122. package/src/ui/ChatPanel/ChatMembersPanel.tsx +117 -0
  123. package/src/ui/ChatPanel/ChatPanel.tsx +27 -0
  124. package/src/ui/ChatPanel/index.ts +6 -0
  125. package/src/ui/Chatify.tsx +148 -106
  126. package/src/ui/CreateChatPanel/CreateChatForm.tsx +36 -0
  127. package/src/ui/CreateChatPanel/CreateChatMemberInput.tsx +66 -0
  128. package/src/ui/CreateChatPanel/CreateChatNameInput.tsx +25 -0
  129. package/src/ui/CreateChatPanel/CreateChatPanel.tsx +33 -0
  130. package/src/ui/CreateChatPanel/index.ts +4 -0
  131. package/src/ui/Icon.tsx +33 -21
  132. package/src/ui/InputBox/InputBox.tsx +38 -0
  133. package/src/ui/InputBox/InputFilesBox.tsx +9 -0
  134. package/src/ui/InputBox/InputSubmitButtonBox.tsx +17 -0
  135. package/src/ui/InputBox/InputTextBox.tsx +50 -0
  136. package/src/ui/InputBox/index.ts +4 -0
  137. package/src/ui/Layout/Aside.tsx +10 -0
  138. package/src/ui/Layout/Body.tsx +10 -0
  139. package/src/ui/Layout/Footer.tsx +3 -0
  140. package/src/ui/Layout/Header.tsx +10 -0
  141. package/src/ui/Layout/Main.tsx +15 -0
  142. package/src/ui/Layout/index.ts +5 -0
  143. package/src/ui/Message/MessageAuthor.tsx +13 -0
  144. package/src/ui/Message/MessageBox.tsx +20 -0
  145. package/src/ui/Message/MessageContent.tsx +13 -0
  146. package/src/ui/Message/MessageInfoBox.tsx +25 -0
  147. package/src/ui/Message/MessageRow.tsx +24 -0
  148. package/src/ui/Message/MessageText.tsx +7 -0
  149. package/src/ui/Message/index.ts +6 -0
  150. package/src/ui/MessageReadObserver.tsx +45 -0
  151. package/src/ui/MessageSkeleton.tsx +19 -19
  152. package/src/ui/Next.tsx +48 -0
  153. package/src/ui/SendingMessage/SendingMessageBox.tsx +16 -0
  154. package/src/ui/SendingMessage/SendingMessageContent.tsx +13 -0
  155. package/src/ui/SendingMessage/SendingMessageInfoBox.tsx +13 -0
  156. package/src/ui/SendingMessage/SendingMessageText.tsx +7 -0
  157. package/src/ui/SendingMessage/index.ts +4 -0
  158. package/src/ui/SystemMessage/SystemMessageBox.tsx +20 -0
  159. package/src/ui/SystemMessage/SystemMessageRow.tsx +43 -0
  160. package/src/ui/SystemMessage/index.ts +2 -0
  161. package/src/{util → ui}/customize.tsx +45 -45
  162. package/src/ui/index.ts +11 -11
  163. package/src/ui/localizer.tsx +80 -68
  164. package/src/util/index.ts +2 -3
  165. package/src/util/uniqBy.tsx +17 -17
  166. package/src/util/uniqId.tsx +3 -3
  167. package/dist/cjs/index.js +0 -2
  168. package/dist/cjs/index.js.map +0 -1
  169. package/dist/cjs/types/ChatifyContext.d.ts +0 -11
  170. package/dist/cjs/types/core/action.d.ts +0 -76
  171. package/dist/cjs/types/core/client.d.ts +0 -35
  172. package/dist/cjs/types/core/index.d.ts +0 -14
  173. package/dist/cjs/types/core/models.d.ts +0 -64
  174. package/dist/cjs/types/core/reducer.d.ts +0 -11
  175. package/dist/cjs/types/core/state.d.ts +0 -25
  176. package/dist/cjs/types/core/useAccounts.d.ts +0 -1
  177. package/dist/cjs/types/core/useAddChat.d.ts +0 -2
  178. package/dist/cjs/types/core/useAddMember.d.ts +0 -2
  179. package/dist/cjs/types/core/useAddMessage.d.ts +0 -5
  180. package/dist/cjs/types/core/useChatList.d.ts +0 -1
  181. package/dist/cjs/types/core/useLoadMore.d.ts +0 -3
  182. package/dist/cjs/types/core/useMessages.d.ts +0 -15
  183. package/dist/cjs/types/core/useMutation.d.ts +0 -12
  184. package/dist/cjs/types/core/useQuery.d.ts +0 -7
  185. package/dist/cjs/types/core/useReadMonitor.d.ts +0 -1
  186. package/dist/cjs/types/core/useRemoveMember.d.ts +0 -2
  187. package/dist/cjs/types/core/useSignalRMonitor.d.ts +0 -2
  188. package/dist/cjs/types/index.d.ts +0 -3
  189. package/dist/cjs/types/ui/AddChat.d.ts +0 -1
  190. package/dist/cjs/types/ui/AddChatButton.d.ts +0 -2
  191. package/dist/cjs/types/ui/Aside.d.ts +0 -1
  192. package/dist/cjs/types/ui/Avatar.d.ts +0 -6
  193. package/dist/cjs/types/ui/Chat.d.ts +0 -4
  194. package/dist/cjs/types/ui/ChatBody.d.ts +0 -4
  195. package/dist/cjs/types/ui/ChatHeader.d.ts +0 -4
  196. package/dist/cjs/types/ui/ChatHeaderMembers.d.ts +0 -5
  197. package/dist/cjs/types/ui/ChatHeaderSettingsButton.d.ts +0 -5
  198. package/dist/cjs/types/ui/ChatListItem.d.ts +0 -11
  199. package/dist/cjs/types/ui/ChatName.d.ts +0 -5
  200. package/dist/cjs/types/ui/ChatSettings.d.ts +0 -1
  201. package/dist/cjs/types/ui/Chatify.d.ts +0 -49
  202. package/dist/cjs/types/ui/Footer.d.ts +0 -2
  203. package/dist/cjs/types/ui/Header.d.ts +0 -2
  204. package/dist/cjs/types/ui/Icon.d.ts +0 -7
  205. package/dist/cjs/types/ui/InputForm.d.ts +0 -1
  206. package/dist/cjs/types/ui/LoadMore.d.ts +0 -4
  207. package/dist/cjs/types/ui/Main.d.ts +0 -1
  208. package/dist/cjs/types/ui/Message.d.ts +0 -18
  209. package/dist/cjs/types/ui/MessageSkeleton.d.ts +0 -4
  210. package/dist/cjs/types/ui/SendingMessage.d.ts +0 -10
  211. package/dist/cjs/types/ui/SystemMessage.d.ts +0 -8
  212. package/dist/cjs/types/ui/index.d.ts +0 -11
  213. package/dist/cjs/types/ui/localizer.d.ts +0 -32
  214. package/dist/cjs/types/util/customize.d.ts +0 -12
  215. package/dist/cjs/types/util/index.d.ts +0 -3
  216. package/dist/cjs/types/util/uniqBy.d.ts +0 -1
  217. package/dist/cjs/types/util/uniqId.d.ts +0 -1
  218. package/dist/esm/types/core/useAccounts.d.ts +0 -1
  219. package/dist/esm/types/core/useAddChat.d.ts +0 -2
  220. package/dist/esm/types/core/useAddMember.d.ts +0 -2
  221. package/dist/esm/types/core/useAddMessage.d.ts +0 -5
  222. package/dist/esm/types/core/useChat.d.ts +0 -3
  223. package/dist/esm/types/core/useChatList.d.ts +0 -1
  224. package/dist/esm/types/core/useLoadMore.d.ts +0 -3
  225. package/dist/esm/types/core/useMessages.d.ts +0 -15
  226. package/dist/esm/types/core/useMutation.d.ts +0 -12
  227. package/dist/esm/types/core/useQuery.d.ts +0 -7
  228. package/dist/esm/types/core/useRemoveMember.d.ts +0 -2
  229. package/dist/esm/types/ui/AddChat.d.ts +0 -1
  230. package/dist/esm/types/ui/Aside.d.ts +0 -1
  231. package/dist/esm/types/ui/Chat.d.ts +0 -4
  232. package/dist/esm/types/ui/ChatBody.d.ts +0 -4
  233. package/dist/esm/types/ui/ChatHeader.d.ts +0 -4
  234. package/dist/esm/types/ui/ChatHeaderMembers.d.ts +0 -5
  235. package/dist/esm/types/ui/ChatHeaderSettingsButton.d.ts +0 -5
  236. package/dist/esm/types/ui/ChatListItem.d.ts +0 -11
  237. package/dist/esm/types/ui/ChatSettings.d.ts +0 -1
  238. package/dist/esm/types/ui/Footer.d.ts +0 -2
  239. package/dist/esm/types/ui/Header.d.ts +0 -2
  240. package/dist/esm/types/ui/InputForm.d.ts +0 -1
  241. package/dist/esm/types/ui/LoadMore.d.ts +0 -4
  242. package/dist/esm/types/ui/Main.d.ts +0 -1
  243. package/dist/esm/types/ui/Message.d.ts +0 -18
  244. package/dist/esm/types/ui/SendingMessage.d.ts +0 -10
  245. package/dist/esm/types/ui/SystemMessage.d.ts +0 -8
  246. package/src/core/useAccounts.tsx +0 -11
  247. package/src/core/useAddChat.tsx +0 -12
  248. package/src/core/useAddMember.tsx +0 -12
  249. package/src/core/useAddMessage.tsx +0 -40
  250. package/src/core/useChat.tsx +0 -12
  251. package/src/core/useChatList.tsx +0 -10
  252. package/src/core/useLoadMore.tsx +0 -42
  253. package/src/core/useMessages.tsx +0 -23
  254. package/src/core/useMutation.tsx +0 -48
  255. package/src/core/useQuery.tsx +0 -45
  256. package/src/core/useRemoveMember.tsx +0 -12
  257. package/src/ui/AddChat.tsx +0 -55
  258. package/src/ui/Aside.tsx +0 -41
  259. package/src/ui/Chat.tsx +0 -26
  260. package/src/ui/ChatBody.tsx +0 -43
  261. package/src/ui/ChatHeader.tsx +0 -33
  262. package/src/ui/ChatHeaderSettingsButton.tsx +0 -26
  263. package/src/ui/ChatListItem.tsx +0 -101
  264. package/src/ui/ChatSettings.tsx +0 -59
  265. package/src/ui/Footer.tsx +0 -7
  266. package/src/ui/Header.tsx +0 -14
  267. package/src/ui/InputForm.tsx +0 -51
  268. package/src/ui/LoadMore.tsx +0 -40
  269. package/src/ui/Main.tsx +0 -16
  270. package/src/ui/Message.tsx +0 -118
  271. package/src/ui/SendingMessage.tsx +0 -50
  272. package/src/ui/SystemMessage.tsx +0 -32
  273. package/src/ui/styles/index.scss +0 -248
@@ -1,94 +1,94 @@
1
- .wxchtf-aside {
2
- flex: none;
3
- width: 300px;
4
- border-right: $border;
5
- display: flex;
6
- flex-flow: column nowrap;
7
-
8
- .wxchtf-chats.ant-menu {
9
- flex: 1 1 auto;
10
- height: 100px;
11
- overflow-y: auto;
12
-
13
- @include scrollbar();
14
-
15
- .ant-menu-item {
16
- padding: 0;
17
- height: unset;
18
- margin: 0;
19
- width: 100%;
20
- border-radius: 0;
21
- line-height: 1.5;
22
- border-top: $border;
23
-
24
- &:first-child {
25
- border-top: none;
26
- }
27
-
28
- &.ant-menu-item-selected .wxchtf-chat-name {
29
- font-weight: 600;
30
- }
31
-
32
- .wxchtf-chat {
33
- padding: 0.5rem 1rem;
34
- position: relative;
35
-
36
- &.--unread {
37
- .wxchtf-chat-last {
38
- font-weight: bold;
39
- }
40
- }
41
-
42
- .wxchtf-chat-name {
43
- font-weight: bold;
44
- display: inline-block;
45
- }
46
-
47
- .wxchtf-unread-count {
48
- display: inline-block;
49
- padding: 0.2rem;
50
- min-width: 1rem;
51
- height: 1.2rem;
52
- line-height: 0.7rem;
53
- margin-left: 0.5rem;
54
- border-radius: 50%;
55
- text-align: center;
56
- font-size: 0.7rem;
57
- background: $unreadCountBackground;
58
- }
59
-
60
- .wxchtf-chat-last {
61
- $size: 25px;
62
-
63
- font-style: italic;
64
- opacity: 0.75;
65
- overflow: hidden;
66
- text-overflow: ellipsis;
67
- white-space: nowrap;
68
- line-height: $size;
69
-
70
- .wxchtf-chat-last-author {
71
- display: inline-block;
72
- margin-right: 0.5rem;
73
-
74
- .ant-avatar {
75
- display: inline-block;
76
- border: none;
77
- margin-right: 5px;
78
-
79
- @include avatarSize($size);
80
- }
81
-
82
- &::after {
83
- content: ':';
84
- }
85
- }
86
-
87
- .wxchtf-chat-last-message {
88
- display: inline;
89
- }
90
- }
91
- }
92
- }
93
- }
94
- }
1
+ .wxchtf-aside {
2
+ flex: none;
3
+ width: 300px;
4
+ border-right: $border;
5
+ display: flex;
6
+ flex-flow: column nowrap;
7
+
8
+ .wxchtf-chat-list.ant-menu {
9
+ flex: 1 1 auto;
10
+ height: 100px;
11
+ overflow-y: auto;
12
+
13
+ @include scrollbar();
14
+
15
+ .ant-menu-item {
16
+ padding: 0;
17
+ height: unset;
18
+ margin: 0;
19
+ width: 100%;
20
+ border-radius: 0;
21
+ line-height: 1.5;
22
+ border-top: $border;
23
+
24
+ &:first-child {
25
+ border-top: none;
26
+ }
27
+
28
+ &.ant-menu-item-selected .wxchtf-chat-name {
29
+ font-weight: 600;
30
+ }
31
+
32
+ .wxchtf-chat {
33
+ padding: 0.5rem 1rem;
34
+ position: relative;
35
+
36
+ &.--unread {
37
+ .wxchtf-chat-last {
38
+ font-weight: bold;
39
+ }
40
+ }
41
+
42
+ .wxchtf-chat-name {
43
+ font-weight: bold;
44
+ display: inline-block;
45
+ }
46
+
47
+ .wxchtf-unread-count {
48
+ display: inline-block;
49
+ padding: 0.2rem;
50
+ min-width: 1rem;
51
+ height: 1.2rem;
52
+ line-height: 0.7rem;
53
+ margin-left: 0.5rem;
54
+ border-radius: 50%;
55
+ text-align: center;
56
+ font-size: 0.7rem;
57
+ background: $unreadCountBackground;
58
+ }
59
+
60
+ .wxchtf-chat-last {
61
+ $size: 25px;
62
+
63
+ font-style: italic;
64
+ opacity: 0.75;
65
+ overflow: hidden;
66
+ text-overflow: ellipsis;
67
+ white-space: nowrap;
68
+ line-height: $size;
69
+
70
+ .wxchtf-chat-last-author {
71
+ display: inline-block;
72
+ margin-right: 0.5rem;
73
+
74
+ .ant-avatar {
75
+ display: inline-block;
76
+ border: none;
77
+ margin-right: 5px;
78
+
79
+ @include avatarSize($size);
80
+ }
81
+
82
+ &::after {
83
+ content: ':';
84
+ }
85
+ }
86
+
87
+ .wxchtf-chat-last-message {
88
+ display: inline;
89
+ }
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
@@ -0,0 +1,222 @@
1
+ .wxchtf-chatify {
2
+ .wxchtf-chat-panel {
3
+ flex: auto;
4
+ display: flex;
5
+ flex-flow: row nowrap;
6
+
7
+ .wxchtf-chat-main {
8
+ flex: 1;
9
+ display: flex;
10
+ flex-flow: column nowrap;
11
+
12
+ .wxchtf-chat-header {
13
+ border-bottom: $border;
14
+ padding: 0.5rem 1rem;
15
+
16
+ .wxchtf-chat-name {
17
+ font-weight: 600;
18
+ flex: none;
19
+
20
+ &.--editable {
21
+ cursor: pointer;
22
+ }
23
+ }
24
+ }
25
+
26
+ .wxchtf-chat-body {
27
+ flex: 1 1 auto;
28
+ height: 100px;
29
+ overflow-y: auto;
30
+ background: $chatBodyBackground;
31
+ padding: 2rem 1rem;
32
+ display: flex;
33
+ flex-flow: column-reverse nowrap;
34
+
35
+ @include scrollbar();
36
+
37
+ @media only screen and (min-width: 1120px) {
38
+ padding-right: 30%;
39
+ }
40
+
41
+ .wxchtf-message,
42
+ .wxchtf-sending-message {
43
+ display: flex;
44
+ flex-flow: row nowrap;
45
+ width: 100%;
46
+ align-items: flex-end;
47
+
48
+ &.--my {
49
+ direction: rtl;
50
+ justify-content: flex-start;
51
+
52
+ .wxchtf-message-author {
53
+ margin-right: 0;
54
+ margin-left: 15px;
55
+ }
56
+
57
+ .wxchtf-message-content,
58
+ .wxchtf-sending-message-content {
59
+ direction: ltr;
60
+ border-bottom-left-radius: 10px;
61
+ border-bottom-right-radius: 0;
62
+ background-color: $myMessageBackground;
63
+ }
64
+ }
65
+
66
+ .wxchtf-message-author {
67
+ margin-right: 15px;
68
+
69
+ .ant-avatar {
70
+ @include avatarSize($avatarSize);
71
+ box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;
72
+ }
73
+ }
74
+
75
+ .wxchtf-message-content,
76
+ .wxchtf-sending-message-content {
77
+ min-width: 300px;
78
+ max-width: 70%;
79
+ border-radius: $messageBorderRadius;
80
+ padding: 0.75rem 1rem;
81
+ background: white;
82
+ border-bottom-left-radius: 0;
83
+ background-color: $messageBackground;
84
+ box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;
85
+ display: block;
86
+ white-space: pre-wrap;
87
+ overflow-wrap: break-word;
88
+
89
+ .wxchtf-message-info-box,
90
+ .wxchtf-sending-message-info-box {
91
+ text-align: right;
92
+
93
+ .wxchtf-message-sent-at,
94
+ .wxchtf-message-read-box,
95
+ .wxchtf-sending-message-sending-box {
96
+ display: inline-block;
97
+ font-style: italic;
98
+ font-size: 0.75em;
99
+ margin-top: 0.5rem;
100
+ opacity: 0.5;
101
+ }
102
+
103
+ .wxchtf-message-read-box,
104
+ .wxchtf-sending-message-sending-box {
105
+ margin-left: 5px;
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ .wxchtf-system-message {
112
+ font-style: italic;
113
+ position: relative;
114
+ text-align: center;
115
+
116
+ .wxchtf-text,
117
+ .wxchtf-timestamp {
118
+ display: inline-block;
119
+ opacity: 0.9;
120
+ font-size: 0.85em;
121
+ }
122
+
123
+ .wxchtf-timestamp {
124
+ margin-left: 1rem;
125
+ }
126
+ }
127
+
128
+ .wxchtf-message,
129
+ .wxchtf-sending-message,
130
+ .wxchtf-system-message,
131
+ .wxchtf-message-skeleton {
132
+ margin-bottom: 2rem;
133
+
134
+ &:first-child {
135
+ margin-bottom: 0;
136
+ }
137
+ }
138
+
139
+ .wxchtf-message-skeleton {
140
+ display: flex;
141
+ flex-flow: row nowrap;
142
+ align-items: flex-end;
143
+
144
+ .wxchtf-avatar {
145
+ margin-right: 15px;
146
+ }
147
+
148
+ .wxchtf-avatar .ant-skeleton-avatar {
149
+ width: $avatarSize;
150
+ height: $avatarSize;
151
+ line-height: $avatarSize;
152
+ }
153
+
154
+ .wxchtf-content {
155
+ width: 300px;
156
+ height: 100px;
157
+ border-radius: $messageBorderRadius;
158
+ border-bottom-left-radius: 0;
159
+ }
160
+ }
161
+ }
162
+
163
+ .wxchtf-input-form {
164
+ flex: none;
165
+ max-height: 300px;
166
+ display: flex;
167
+ flex-flow: column nowrap;
168
+
169
+ .wxchtf-input-box {
170
+ flex: none;
171
+ display: flex;
172
+ flex-flow: row nowrap;
173
+ padding: 1rem 0;
174
+ border-top: $border;
175
+
176
+ @mixin iconBtn {
177
+ flex: none;
178
+ display: flex;
179
+ padding: 0 1rem;
180
+ align-items: flex-end;
181
+
182
+ .ant-btn.ant-btn-icon-only .anticon {
183
+ font-size: 1.5rem;
184
+ }
185
+ }
186
+
187
+ .wxchtf-add-files-box {
188
+ @include iconBtn();
189
+ }
190
+
191
+ .wxchtf-text-input-box {
192
+ flex: auto;
193
+
194
+ textarea {
195
+ resize: none;
196
+ border: none;
197
+ outline: none;
198
+ box-shadow: none;
199
+
200
+ @include scrollbar();
201
+ }
202
+ }
203
+
204
+ .wxchtf-submit-btn-box {
205
+ @include iconBtn();
206
+ }
207
+ }
208
+ }
209
+ }
210
+
211
+ .wxchtf-chat-members-panel {
212
+ min-width: 300px;
213
+ border-left: $border;
214
+
215
+ .wxchtf-chat-members-list {
216
+ .wxchtf-chat-members-list-item {
217
+ padding-inline: 1rem;
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
@@ -0,0 +1,79 @@
1
+ @import './variables.scss';
2
+ @import './mixins.scss';
3
+ @import './keyframes.scss';
4
+ @import './aside.scss';
5
+ @import './settings.scss';
6
+ @import './chat.scss';
7
+
8
+ .wxchtf-chatify {
9
+ border: $border;
10
+ display: flex;
11
+ flex-flow: column nowrap;
12
+ background: $background;
13
+ border-radius: $radius;
14
+
15
+ .wxchtf-header {
16
+ min-height: 2rem;
17
+ border-bottom: $border;
18
+ }
19
+
20
+ .wxchtf-body {
21
+ flex: 1 0;
22
+ display: flex;
23
+ flex-flow: row nowrap;
24
+ }
25
+
26
+ .wxchtf-footer {
27
+ min-height: 2rem;
28
+ border-top: $border;
29
+ }
30
+ }
31
+
32
+ .wxchtf-main {
33
+ flex: auto;
34
+ display: flex;
35
+ flex-flow: column nowrap;
36
+
37
+ .wxchtf-create-chat {
38
+ display: flex;
39
+ flex-flow: column nowrap;
40
+ justify-content: center;
41
+ align-items: center;
42
+ height: 100%;
43
+
44
+ form {
45
+ padding: 2rem;
46
+ max-width: 700px;
47
+ width: 100%;
48
+
49
+ .wxchtf-create-chat-member-input-list {
50
+ max-height: 15rem;
51
+ overflow-y: auto;
52
+
53
+ .ant-list-item {
54
+ padding-inline: 0.5rem;
55
+
56
+ &.--selected {
57
+ background-color: #e6f4ff;
58
+ }
59
+
60
+ .ant-checkbox-wrapper {
61
+ width: 100%;
62
+
63
+ & > span:last-child {
64
+ flex: 1;
65
+
66
+ .ant-list-item-meta {
67
+ align-items: center;
68
+
69
+ .ant-list-item-meta-content h4 {
70
+ margin-bottom: 0;
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
@@ -1,14 +1,14 @@
1
- @keyframes fadeInFromNone {
2
- 0% {
3
- display: none;
4
- opacity: 0;
5
- }
6
-
7
- 1% {
8
- opacity: 0;
9
- }
10
-
11
- 100% {
12
- opacity: 1;
13
- }
14
- }
1
+ @keyframes fadeInFromNone {
2
+ 0% {
3
+ display: none;
4
+ opacity: 0;
5
+ }
6
+
7
+ 1% {
8
+ opacity: 0;
9
+ }
10
+
11
+ 100% {
12
+ opacity: 1;
13
+ }
14
+ }
@@ -1,20 +1,20 @@
1
- @mixin scrollbar() {
2
- &::-webkit-scrollbar {
3
- width: 8px;
4
- height: 8px;
5
- }
6
-
7
- &::-webkit-scrollbar-track {
8
- background-color: #f1f1f1;
9
- }
10
-
11
- &::-webkit-scrollbar-thumb {
12
- background-color: #dfdfdf;
13
- }
14
- }
15
-
16
- @mixin avatarSize($size) {
17
- width: $size;
18
- height: $size;
19
- line-height: $size - 2px;
20
- }
1
+ @mixin scrollbar() {
2
+ &::-webkit-scrollbar {
3
+ width: 8px;
4
+ height: 8px;
5
+ }
6
+
7
+ &::-webkit-scrollbar-track {
8
+ background-color: #f1f1f1;
9
+ }
10
+
11
+ &::-webkit-scrollbar-thumb {
12
+ background-color: #dfdfdf;
13
+ }
14
+ }
15
+
16
+ @mixin avatarSize($size) {
17
+ width: $size;
18
+ height: $size;
19
+ line-height: $size - 2px;
20
+ }
@@ -0,0 +1,5 @@
1
+ .wxchtf-chatify {
2
+ .wxchtf-chat-settings {
3
+ padding-inline: 1rem;
4
+ }
5
+ }
@@ -1,10 +1,10 @@
1
- $borderColor: #ddd;
2
- $border: 1px solid #ddd;
3
- $background: white;
4
- $radius: 4px;
5
- $chatBodyBackground: #f5f5f5;
6
- $messageBackground: #e1f5fe;
7
- $myMessageBackground: #b9f6ca;
8
- $unreadCountBackground: #ffa726;
9
- $avatarSize: 40px;
10
- $messageBorderRadius: 10px;
1
+ $borderColor: #ddd;
2
+ $border: 1px solid #ddd;
3
+ $background: white;
4
+ $radius: 4px;
5
+ $chatBodyBackground: #f5f5f5;
6
+ $messageBackground: #e1f5fe;
7
+ $myMessageBackground: #b9f6ca;
8
+ $unreadCountBackground: #ffa726;
9
+ $avatarSize: 40px;
10
+ $messageBorderRadius: 10px;
@@ -1,19 +1,15 @@
1
- import { Button } from 'antd';
2
- import { useDispatch } from '../core';
3
- import { FC, useCallback } from 'react';
4
- import { customize } from '../util';
5
-
6
- const _AddChatButton: FC = () => {
7
- const dispatch = useDispatch();
8
- const onAddChat = useCallback(() => dispatch({ type: 'new_chat_open', data: undefined }), [dispatch]);
9
-
10
- return (
11
- <Button onClick={onAddChat} icon={'+'} type="link">
12
- Add chat
13
- </Button>
14
- );
15
- };
16
-
17
- _AddChatButton.displayName = 'AddChatButton';
18
-
19
- export const AddChatButton = customize('AddChatButton', _AddChatButton);
1
+ import { Button } from 'antd';
2
+ import { useDispatch } from '../core';
3
+ import { useCallback } from 'react';
4
+ import { customize } from './customize';
5
+
6
+ export const AddChatButton = customize('AddChatButton', () => {
7
+ const dispatch = useDispatch();
8
+ const onAddChat = useCallback(() => dispatch({ type: 'new_chat_open', data: undefined }), [dispatch]);
9
+
10
+ return (
11
+ <Button onClick={onAddChat} icon={'+'} type="link">
12
+ Add chat
13
+ </Button>
14
+ );
15
+ });
package/src/ui/Avatar.tsx CHANGED
@@ -1,18 +1,18 @@
1
- import { FC } from 'react';
2
- import { Account } from '../core';
3
- import { Avatar as AntdAvatar } from 'antd';
4
- import { customize } from '../util';
5
-
6
- export interface AvatarProps {
7
- account: Account;
8
- }
9
-
10
- const _Avatar: FC<AvatarProps> = (props: AvatarProps) => {
11
- const { account } = props;
12
-
13
- return <AntdAvatar src={account.avatar} />;
14
- };
15
-
16
- _Avatar.displayName = 'Avatar';
17
-
18
- export const Avatar = customize('Avatar', _Avatar);
1
+ import { FC } from 'react';
2
+ import { Account } from '../core';
3
+ import { Avatar as AntdAvatar } from 'antd';
4
+ import { customize } from './customize';
5
+
6
+ export interface AvatarProps {
7
+ account: Account;
8
+ }
9
+
10
+ const _Avatar: FC<AvatarProps> = (props: AvatarProps) => {
11
+ const { account } = props;
12
+
13
+ return <AntdAvatar src={account.avatar} />;
14
+ };
15
+
16
+ _Avatar.displayName = 'Avatar';
17
+
18
+ export const Avatar = customize('Avatar', _Avatar);
@@ -0,0 +1,42 @@
1
+ import { Menu, MenuProps } from 'antd';
2
+ import { useCallback, useMemo } from 'react';
3
+ import type { MenuItemType } from 'antd/es/menu/hooks/useItems';
4
+ import { useGetChatListQuery, useDispatch, useSelect } from '../../core';
5
+ import { ChatListItemBox } from './ChatListItemBox';
6
+ import { customize } from '../customize';
7
+
8
+ function useOnSelect() {
9
+ const dispatch = useDispatch();
10
+
11
+ return useCallback(
12
+ (info: Parameters<NonNullable<MenuProps['onSelect']>>[0]) =>
13
+ dispatch({ type: 'chat_open', data: { chatId: info.selectedKeys[0] } }),
14
+ [dispatch],
15
+ );
16
+ }
17
+
18
+ function useMenuItems() {
19
+ const { data: chats } = useGetChatListQuery();
20
+
21
+ return useMemo<MenuItemType[] | undefined>(() => {
22
+ return chats
23
+ ?.slice()
24
+ .sort((a, b) => -a.message.id.substring(47).localeCompare(b.message.id.substring(47)))
25
+ .map((x) => ({ key: x.id, label: <ChatListItemBox chat={x} /> }));
26
+ }, [chats]);
27
+ }
28
+
29
+ export const ChatList = customize('ChatList', () => {
30
+ const activeChatId = useSelect((x) => x.ui.chatId, []);
31
+ const selected = useMemo(() => (activeChatId ? [activeChatId] : []), [activeChatId]);
32
+ const onSelect = useOnSelect();
33
+ const items = useMenuItems();
34
+
35
+ return (
36
+ <>
37
+ {items && (
38
+ <Menu className="wxchtf-chat-list" selectedKeys={selected} onSelect={onSelect} items={items} />
39
+ )}
40
+ </>
41
+ );
42
+ });