@tencentcloud/roomkit-electron-vue3 2.4.2 → 2.5.0

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 (430) hide show
  1. package/es/components/Chat/ChatEditor/useChatEditor.mjs +1 -1
  2. package/es/components/Chat/MessageList/index.vue.mjs +1 -1
  3. package/es/components/Chat/MessageList/index.vue2.mjs +5 -1
  4. package/es/components/Chat/MessageList/useMessageListHook.mjs +4 -3
  5. package/es/components/ManageMember/MemberControl/index.vue.mjs +1 -1
  6. package/es/components/ManageMember/MemberControl/index.vue2.mjs +36 -19
  7. package/es/components/ManageMember/MemberControl/useMemberControlHooks.d.ts +6 -1
  8. package/es/components/ManageMember/MemberControl/useMemberControlHooks.mjs +113 -17
  9. package/es/components/ManageMember/MemberItem/useMemberItemHooks.d.ts +1 -0
  10. package/es/components/ManageMember/MemberItem/useMemberItemHooks.mjs +8 -6
  11. package/es/components/ManageMember/MemberItemCommon/MemberInfo.vue.mjs +1 -1
  12. package/es/components/ManageMember/MemberItemCommon/MemberInfo.vue2.mjs +7 -3
  13. package/es/components/ManageMember/index.vue.mjs +1 -1
  14. package/es/components/ManageMember/index.vue2.mjs +58 -7
  15. package/es/components/ManageMember/useIndexHooks.mjs +63 -14
  16. package/es/components/RoomContent/StreamContainer/index.vue.mjs +1 -1
  17. package/es/components/RoomContent/StreamContainer/index.vue2.mjs +10 -9
  18. package/es/components/RoomContent/StreamContainer/useStreamContainerHooks.d.ts +8 -0
  19. package/es/components/RoomContent/StreamContainer/useStreamContainerHooks.mjs +73 -29
  20. package/es/components/RoomContent/StreamRegion/index.vue.d.ts +5 -1
  21. package/es/components/RoomContent/StreamRegion/index.vue.mjs +1 -1
  22. package/es/components/RoomContent/StreamRegion/index.vue2.mjs +29 -5
  23. package/es/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue.mjs +1 -1
  24. package/es/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue2.mjs +10 -4
  25. package/es/components/RoomFooter/ApplyControl/MemberApplyControl.vue2.mjs +2 -2
  26. package/es/components/RoomFooter/AudioControl.vue2.mjs +2 -2
  27. package/es/components/RoomFooter/EndControl/index.vue.mjs +1 -1
  28. package/es/components/RoomFooter/EndControl/index.vue2.mjs +1 -1
  29. package/es/components/RoomFooter/EndControl/useEndControlHooks.mjs +16 -4
  30. package/es/components/RoomFooter/ScreenShareControl/Index.vue.mjs +1 -1
  31. package/es/components/RoomFooter/ScreenShareControl/Index.vue2.mjs +11 -3
  32. package/es/components/RoomFooter/VideoControl.vue.mjs +1 -1
  33. package/es/components/RoomFooter/VideoControl.vue2.mjs +8 -14
  34. package/es/components/RoomHeader/RoomInfo/index.vue2.mjs +2 -2
  35. package/es/components/RoomHeader/UserInfo/index.vue.d.ts +3 -11
  36. package/es/components/RoomHeader/UserInfo/index.vue.mjs +1 -1
  37. package/es/components/RoomHeader/UserInfo/index.vue2.mjs +9 -92
  38. package/es/components/RoomHeader/UserInfo/useUserInfoHooks.d.ts +2 -8
  39. package/es/components/RoomHeader/UserInfo/useUserInfoHooks.mjs +1 -18
  40. package/es/components/RoomHeader/index/NetworkInfo.vue2.mjs +2 -2
  41. package/es/components/RoomHome/RoomControl/index.vue.d.ts +10 -0
  42. package/es/components/RoomHome/RoomControl/index.vue.mjs +1 -1
  43. package/es/components/RoomHome/RoomControl/index.vue2.mjs +153 -120
  44. package/es/components/RoomInvite/index.vue2.mjs +2 -2
  45. package/es/components/RoomMore/index.vue2.mjs +2 -2
  46. package/es/components/RoomSidebar/useSideBarHooks.mjs +3 -2
  47. package/es/components/ScheduleConference/Contacts.vue.d.ts +22 -0
  48. package/es/components/ScheduleConference/Contacts.vue.mjs +7 -0
  49. package/es/components/ScheduleConference/Contacts.vue2.mjs +212 -0
  50. package/es/components/ScheduleConference/DurationTimePicker.vue.d.ts +18 -0
  51. package/es/components/ScheduleConference/DurationTimePicker.vue.mjs +67 -0
  52. package/es/components/ScheduleConference/DurationTimePicker.vue2.mjs +4 -0
  53. package/es/components/ScheduleConference/ScheduleConferencePanel.vue.d.ts +22 -0
  54. package/es/components/ScheduleConference/ScheduleConferencePanel.vue.mjs +7 -0
  55. package/es/components/ScheduleConference/ScheduleConferencePanel.vue2.mjs +613 -0
  56. package/es/components/ScheduleConference/ScheduleConferencePanel.vue3.mjs +1 -0
  57. package/es/components/ScheduleConference/ScheduleRoomControl.vue.d.ts +29 -0
  58. package/es/components/ScheduleConference/ScheduleRoomControl.vue.mjs +7 -0
  59. package/es/components/ScheduleConference/ScheduleRoomControl.vue2.mjs +464 -0
  60. package/es/components/ScheduleConference/ScheduleRoomControl.vue3.mjs +1 -0
  61. package/es/components/{common/base/Input.vue.d.ts → ScheduleConference/ScheduleRoomList.vue.d.ts} +11 -22
  62. package/es/components/ScheduleConference/ScheduleRoomList.vue.mjs +7 -0
  63. package/es/components/ScheduleConference/ScheduleRoomList.vue2.mjs +219 -0
  64. package/es/components/ScheduleConference/ScheduleRoomList.vue3.mjs +1 -0
  65. package/es/components/ScheduleConference/ShareLink.vue.d.ts +24 -0
  66. package/es/components/ScheduleConference/ShareLink.vue.mjs +7 -0
  67. package/es/components/ScheduleConference/ShareLink.vue2.mjs +113 -0
  68. package/es/components/ScheduleConference/ShareLink.vue3.mjs +1 -0
  69. package/es/components/ScheduleConference/TimezonePicker.vue.d.ts +18 -0
  70. package/es/components/ScheduleConference/TimezonePicker.vue.mjs +84 -0
  71. package/es/components/ScheduleConference/TimezonePicker.vue2.mjs +4 -0
  72. package/es/components/common/Avatar.vue.mjs +2 -2
  73. package/es/components/common/DeviceSelect.vue.mjs +1 -1
  74. package/es/components/common/DeviceSelect.vue2.mjs +58 -19
  75. package/es/components/common/Logo.vue.mjs +1 -1
  76. package/es/components/common/Logo.vue2.mjs +3 -3
  77. package/es/components/common/VideoProfile.vue2.mjs +2 -2
  78. package/es/components/common/base/Badge.vue.d.ts +1 -1
  79. package/es/components/common/base/Button.vue.d.ts +2 -2
  80. package/es/components/common/base/Checkbox.vue.d.ts +4 -2
  81. package/es/components/common/base/Checkbox.vue.mjs +2 -2
  82. package/es/components/common/base/Checkbox.vue2.mjs +12 -5
  83. package/es/components/common/base/Datepicker/Datepicker.vue.d.ts +18 -0
  84. package/es/components/common/base/Datepicker/Datepicker.vue.mjs +7 -0
  85. package/es/components/common/base/Datepicker/Datepicker.vue2.mjs +167 -0
  86. package/es/components/common/base/Datepicker/Datepicker.vue3.mjs +1 -0
  87. package/es/components/common/base/Datepicker/Timepicker.vue.d.ts +18 -0
  88. package/es/components/common/base/Datepicker/Timepicker.vue.mjs +66 -0
  89. package/es/components/common/base/Datepicker/Timepicker.vue2.mjs +4 -0
  90. package/es/components/common/base/Dialog/index.vue.d.ts +8 -4
  91. package/es/components/common/base/Dialog/index.vue.mjs +1 -1
  92. package/es/components/common/base/Dialog/index.vue2.mjs +17 -9
  93. package/es/components/common/base/Drawer.vue.d.ts +1 -1
  94. package/es/components/common/base/IconButton.vue.d.ts +2 -2
  95. package/es/components/common/base/Input/index.vue.d.ts +77 -0
  96. package/es/components/common/base/Input/index.vue.mjs +7 -0
  97. package/es/components/common/base/Input/index.vue2.mjs +140 -0
  98. package/es/components/common/base/Input/index.vue3.mjs +1 -0
  99. package/es/components/common/base/Message/Instance.mjs +1 -1
  100. package/es/components/common/base/Message/Message.vue.d.ts +4 -4
  101. package/es/components/common/base/MessageBox/index.d.ts +3 -2
  102. package/es/components/common/base/MessageBox/index.mjs +2 -1
  103. package/es/components/common/base/MessageBox/index.vue.d.ts +6 -1
  104. package/es/components/common/base/MessageBox/index.vue.mjs +1 -1
  105. package/es/components/common/base/MessageBox/index.vue2.mjs +60 -10
  106. package/es/components/common/base/Notification/index.vue.d.ts +2 -2
  107. package/es/components/common/base/Option.vue.d.ts +11 -1
  108. package/es/components/common/base/Option.vue.mjs +1 -1
  109. package/es/components/common/base/Option.vue2.mjs +16 -6
  110. package/es/components/common/base/Select.vue.d.ts +5 -1
  111. package/es/components/common/base/Select.vue.mjs +1 -1
  112. package/es/components/common/base/Select.vue2.mjs +12 -11
  113. package/es/components/common/base/index.d.ts +1 -1
  114. package/es/components/common/icons/AllMembersShareScreenIcon.vue.d.ts +2 -0
  115. package/es/components/common/icons/AllMembersShareScreenIcon.vue.mjs +22 -0
  116. package/es/components/common/icons/CalendarIcon.vue.d.ts +2 -0
  117. package/es/components/common/icons/CalendarIcon.vue.mjs +24 -0
  118. package/es/components/common/icons/CopyIcon.vue.mjs +2 -2
  119. package/es/components/common/icons/EditNameCardIcon.vue.d.ts +2 -0
  120. package/es/components/common/icons/EditNameCardIcon.vue.mjs +21 -0
  121. package/es/components/common/icons/EllipsisIcon.vue.d.ts +2 -0
  122. package/es/components/common/icons/EllipsisIcon.vue.mjs +34 -0
  123. package/es/components/common/icons/HostShareScreenIcon.vue.d.ts +2 -0
  124. package/es/components/common/icons/HostShareScreenIcon.vue.mjs +22 -0
  125. package/es/components/common/icons/LinkIcon.vue.d.ts +2 -0
  126. package/es/components/common/icons/LinkIcon.vue.mjs +36 -0
  127. package/es/components/common/icons/LoadingScheduleIcon.vue.d.ts +2 -0
  128. package/es/components/common/icons/LoadingScheduleIcon.vue.mjs +24 -0
  129. package/es/components/common/icons/ScheduleAttendees.vue.d.ts +6 -0
  130. package/es/components/common/icons/ScheduleAttendees.vue.mjs +25 -0
  131. package/es/components/common/icons/ScheduleAttendees.vue2.mjs +4 -0
  132. package/es/components/common/icons/ScheduleRoomIcon.vue.d.ts +2 -0
  133. package/es/components/common/icons/ScheduleRoomIcon.vue.mjs +24 -0
  134. package/es/components/common/icons/SuccessIcon.vue.d.ts +2 -0
  135. package/es/components/common/icons/SuccessIcon.vue.mjs +32 -0
  136. package/es/components/common/icons/WarningIcon.vue.d.ts +2 -0
  137. package/es/components/common/icons/WarningIcon.vue.mjs +29 -0
  138. package/es/conference.d.ts +2 -0
  139. package/es/conference.mjs +3 -0
  140. package/es/conference.vue.mjs +1 -1
  141. package/es/conference.vue2.mjs +9 -4
  142. package/es/directives/vDblTouch.d.ts +10 -0
  143. package/es/directives/vTap.d.ts +1 -0
  144. package/es/directives/vTap.mjs +30 -3
  145. package/es/extension/chatExtension.mjs +3 -3
  146. package/es/hooks/useDeviceManager.mjs +3 -3
  147. package/es/hooks/useMasterApplyControl.mjs +5 -5
  148. package/es/hooks/useRoomEngine.mjs +4 -4
  149. package/es/index.d.ts +1 -0
  150. package/es/index.mjs +2383 -1545
  151. package/es/locales/en-US.d.ts +75 -0
  152. package/es/locales/en-US.mjs +78 -1
  153. package/es/locales/zh-CN.d.ts +79 -0
  154. package/es/locales/zh-CN.mjs +83 -2
  155. package/es/preConference.vue.d.ts +10 -0
  156. package/es/preConference.vue.mjs +1 -1
  157. package/es/preConference.vue2.mjs +89 -13
  158. package/es/services/function/errorHandler.d.ts +10 -0
  159. package/es/services/function/errorHandler.mjs +158 -0
  160. package/es/services/function/virtualBackground.mjs +4 -3
  161. package/es/services/index.d.ts +1 -0
  162. package/es/services/manager/roomActionManager.d.ts +1 -0
  163. package/es/services/manager/roomActionManager.mjs +10 -18
  164. package/es/services/manager/scheduleConferenceManager.d.ts +113 -0
  165. package/es/services/manager/scheduleConferenceManager.mjs +141 -0
  166. package/es/services/manager/userManager.d.ts +2 -0
  167. package/es/services/manager/userManager.mjs +7 -3
  168. package/es/services/roomService.d.ts +8 -0
  169. package/es/services/roomService.mjs +42 -16
  170. package/es/services/types.d.ts +8 -0
  171. package/es/services/types.mjs +2 -0
  172. package/es/stores/basic.mjs +9 -3
  173. package/es/stores/room.d.ts +2 -0
  174. package/es/stores/room.mjs +55 -24
  175. package/es/utils/adapter.mjs +39 -3
  176. package/es/utils/utils.d.ts +3 -0
  177. package/es/utils/utils.mjs +64 -0
  178. package/lib/components/Chat/ChatEditor/useChatEditor.js +1 -1
  179. package/lib/components/Chat/MessageList/index.vue.js +1 -1
  180. package/lib/components/Chat/MessageList/index.vue2.js +5 -1
  181. package/lib/components/Chat/MessageList/useMessageListHook.js +2 -1
  182. package/lib/components/ManageMember/MemberControl/index.vue.js +1 -1
  183. package/lib/components/ManageMember/MemberControl/index.vue2.js +35 -18
  184. package/lib/components/ManageMember/MemberControl/useMemberControlHooks.d.ts +6 -1
  185. package/lib/components/ManageMember/MemberControl/useMemberControlHooks.js +113 -17
  186. package/lib/components/ManageMember/MemberItem/useMemberItemHooks.d.ts +1 -0
  187. package/lib/components/ManageMember/MemberItem/useMemberItemHooks.js +8 -6
  188. package/lib/components/ManageMember/MemberItemCommon/MemberInfo.vue.js +1 -1
  189. package/lib/components/ManageMember/MemberItemCommon/MemberInfo.vue2.js +5 -1
  190. package/lib/components/ManageMember/index.vue.js +1 -1
  191. package/lib/components/ManageMember/index.vue2.js +57 -6
  192. package/lib/components/ManageMember/useIndexHooks.js +63 -14
  193. package/lib/components/RoomContent/StreamContainer/index.vue.js +1 -1
  194. package/lib/components/RoomContent/StreamContainer/index.vue2.js +10 -9
  195. package/lib/components/RoomContent/StreamContainer/useStreamContainerHooks.d.ts +8 -0
  196. package/lib/components/RoomContent/StreamContainer/useStreamContainerHooks.js +72 -28
  197. package/lib/components/RoomContent/StreamRegion/index.vue.d.ts +5 -1
  198. package/lib/components/RoomContent/StreamRegion/index.vue.js +1 -1
  199. package/lib/components/RoomContent/StreamRegion/index.vue2.js +27 -3
  200. package/lib/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue.js +1 -1
  201. package/lib/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue2.js +8 -2
  202. package/lib/components/RoomFooter/EndControl/index.vue.js +1 -1
  203. package/lib/components/RoomFooter/EndControl/index.vue2.js +1 -1
  204. package/lib/components/RoomFooter/EndControl/useEndControlHooks.js +14 -2
  205. package/lib/components/RoomFooter/ScreenShareControl/Index.vue.js +1 -1
  206. package/lib/components/RoomFooter/ScreenShareControl/Index.vue2.js +9 -1
  207. package/lib/components/RoomFooter/VideoControl.vue.js +1 -1
  208. package/lib/components/RoomFooter/VideoControl.vue2.js +6 -12
  209. package/lib/components/RoomHeader/UserInfo/index.vue.d.ts +3 -11
  210. package/lib/components/RoomHeader/UserInfo/index.vue.js +1 -1
  211. package/lib/components/RoomHeader/UserInfo/index.vue2.js +6 -89
  212. package/lib/components/RoomHeader/UserInfo/useUserInfoHooks.d.ts +2 -8
  213. package/lib/components/RoomHeader/UserInfo/useUserInfoHooks.js +1 -18
  214. package/lib/components/RoomHome/RoomControl/index.vue.d.ts +10 -0
  215. package/lib/components/RoomHome/RoomControl/index.vue.js +1 -1
  216. package/lib/components/RoomHome/RoomControl/index.vue2.js +150 -117
  217. package/lib/components/RoomSidebar/useSideBarHooks.js +3 -2
  218. package/lib/components/ScheduleConference/Contacts.vue.d.ts +22 -0
  219. package/lib/components/ScheduleConference/Contacts.vue.js +7 -0
  220. package/lib/components/ScheduleConference/Contacts.vue2.js +212 -0
  221. package/lib/components/ScheduleConference/DurationTimePicker.vue.d.ts +18 -0
  222. package/lib/components/ScheduleConference/DurationTimePicker.vue.js +67 -0
  223. package/lib/components/ScheduleConference/DurationTimePicker.vue2.js +4 -0
  224. package/lib/components/ScheduleConference/ScheduleConferencePanel.vue.d.ts +22 -0
  225. package/lib/components/ScheduleConference/ScheduleConferencePanel.vue.js +7 -0
  226. package/lib/components/ScheduleConference/ScheduleConferencePanel.vue2.js +613 -0
  227. package/lib/components/ScheduleConference/ScheduleConferencePanel.vue3.js +1 -0
  228. package/lib/components/ScheduleConference/ScheduleRoomControl.vue.d.ts +29 -0
  229. package/lib/components/ScheduleConference/ScheduleRoomControl.vue.js +7 -0
  230. package/lib/components/ScheduleConference/ScheduleRoomControl.vue2.js +464 -0
  231. package/lib/components/ScheduleConference/ScheduleRoomControl.vue3.js +1 -0
  232. package/lib/components/{common/base/Input.vue.d.ts → ScheduleConference/ScheduleRoomList.vue.d.ts} +11 -22
  233. package/lib/components/ScheduleConference/ScheduleRoomList.vue.js +7 -0
  234. package/lib/components/ScheduleConference/ScheduleRoomList.vue2.js +219 -0
  235. package/lib/components/ScheduleConference/ScheduleRoomList.vue3.js +1 -0
  236. package/lib/components/ScheduleConference/ShareLink.vue.d.ts +24 -0
  237. package/lib/components/ScheduleConference/ShareLink.vue.js +7 -0
  238. package/lib/components/ScheduleConference/ShareLink.vue2.js +113 -0
  239. package/lib/components/ScheduleConference/ShareLink.vue3.js +1 -0
  240. package/lib/components/ScheduleConference/TimezonePicker.vue.d.ts +18 -0
  241. package/lib/components/ScheduleConference/TimezonePicker.vue.js +84 -0
  242. package/lib/components/ScheduleConference/TimezonePicker.vue2.js +4 -0
  243. package/lib/components/common/Avatar.vue.js +2 -2
  244. package/lib/components/common/DeviceSelect.vue.js +1 -1
  245. package/lib/components/common/DeviceSelect.vue2.js +57 -18
  246. package/lib/components/common/Logo.vue.js +1 -1
  247. package/lib/components/common/Logo.vue2.js +2 -2
  248. package/lib/components/common/base/Badge.vue.d.ts +1 -1
  249. package/lib/components/common/base/Button.vue.d.ts +2 -2
  250. package/lib/components/common/base/Checkbox.vue.d.ts +4 -2
  251. package/lib/components/common/base/Checkbox.vue.js +2 -2
  252. package/lib/components/common/base/Checkbox.vue2.js +11 -4
  253. package/lib/components/common/base/Datepicker/Datepicker.vue.d.ts +18 -0
  254. package/lib/components/common/base/Datepicker/Datepicker.vue.js +7 -0
  255. package/lib/components/common/base/Datepicker/Datepicker.vue2.js +167 -0
  256. package/lib/components/common/base/Datepicker/Datepicker.vue3.js +1 -0
  257. package/lib/components/common/base/Datepicker/Timepicker.vue.d.ts +18 -0
  258. package/lib/components/common/base/Datepicker/Timepicker.vue.js +66 -0
  259. package/lib/components/common/base/Datepicker/Timepicker.vue2.js +4 -0
  260. package/lib/components/common/base/Dialog/index.vue.d.ts +8 -4
  261. package/lib/components/common/base/Dialog/index.vue.js +1 -1
  262. package/lib/components/common/base/Dialog/index.vue2.js +16 -8
  263. package/lib/components/common/base/Drawer.vue.d.ts +1 -1
  264. package/lib/components/common/base/IconButton.vue.d.ts +2 -2
  265. package/lib/components/common/base/Input/index.vue.d.ts +77 -0
  266. package/lib/components/common/base/Input/index.vue.js +7 -0
  267. package/lib/components/common/base/Input/index.vue2.js +140 -0
  268. package/lib/components/common/base/Input/index.vue3.js +1 -0
  269. package/lib/components/common/base/Message/Instance.js +1 -1
  270. package/lib/components/common/base/Message/Message.vue.d.ts +4 -4
  271. package/lib/components/common/base/MessageBox/index.d.ts +3 -2
  272. package/lib/components/common/base/MessageBox/index.js +2 -1
  273. package/lib/components/common/base/MessageBox/index.vue.d.ts +6 -1
  274. package/lib/components/common/base/MessageBox/index.vue.js +1 -1
  275. package/lib/components/common/base/MessageBox/index.vue2.js +59 -9
  276. package/lib/components/common/base/Notification/index.vue.d.ts +2 -2
  277. package/lib/components/common/base/Option.vue.d.ts +11 -1
  278. package/lib/components/common/base/Option.vue.js +1 -1
  279. package/lib/components/common/base/Option.vue2.js +15 -5
  280. package/lib/components/common/base/Select.vue.d.ts +5 -1
  281. package/lib/components/common/base/Select.vue.js +1 -1
  282. package/lib/components/common/base/Select.vue2.js +11 -10
  283. package/lib/components/common/base/index.d.ts +1 -1
  284. package/lib/components/common/icons/AllMembersShareScreenIcon.vue.d.ts +2 -0
  285. package/lib/components/common/icons/AllMembersShareScreenIcon.vue.js +22 -0
  286. package/lib/components/common/icons/CalendarIcon.vue.d.ts +2 -0
  287. package/lib/components/common/icons/CalendarIcon.vue.js +24 -0
  288. package/lib/components/common/icons/CopyIcon.vue.js +2 -2
  289. package/lib/components/common/icons/EditNameCardIcon.vue.d.ts +2 -0
  290. package/lib/components/common/icons/EditNameCardIcon.vue.js +21 -0
  291. package/lib/components/common/icons/EllipsisIcon.vue.d.ts +2 -0
  292. package/lib/components/common/icons/EllipsisIcon.vue.js +34 -0
  293. package/lib/components/common/icons/HostShareScreenIcon.vue.d.ts +2 -0
  294. package/lib/components/common/icons/HostShareScreenIcon.vue.js +22 -0
  295. package/lib/components/common/icons/LinkIcon.vue.d.ts +2 -0
  296. package/lib/components/common/icons/LinkIcon.vue.js +36 -0
  297. package/lib/components/common/icons/LoadingScheduleIcon.vue.d.ts +2 -0
  298. package/lib/components/common/icons/LoadingScheduleIcon.vue.js +24 -0
  299. package/lib/components/common/icons/ScheduleAttendees.vue.d.ts +6 -0
  300. package/lib/components/common/icons/ScheduleAttendees.vue.js +25 -0
  301. package/lib/components/common/icons/ScheduleAttendees.vue2.js +4 -0
  302. package/lib/components/common/icons/ScheduleRoomIcon.vue.d.ts +2 -0
  303. package/lib/components/common/icons/ScheduleRoomIcon.vue.js +24 -0
  304. package/lib/components/common/icons/SuccessIcon.vue.d.ts +2 -0
  305. package/lib/components/common/icons/SuccessIcon.vue.js +32 -0
  306. package/lib/components/common/icons/WarningIcon.vue.d.ts +2 -0
  307. package/lib/components/common/icons/WarningIcon.vue.js +29 -0
  308. package/lib/conference.d.ts +2 -0
  309. package/lib/conference.js +3 -0
  310. package/lib/conference.vue.js +1 -1
  311. package/lib/conference.vue2.js +9 -4
  312. package/lib/directives/vDblTouch.d.ts +10 -0
  313. package/lib/directives/vTap.d.ts +1 -0
  314. package/lib/directives/vTap.js +30 -3
  315. package/lib/extension/chatExtension.js +1 -1
  316. package/lib/hooks/useMasterApplyControl.js +3 -3
  317. package/lib/index.d.ts +1 -0
  318. package/lib/index.js +2390 -1546
  319. package/lib/locales/en-US.d.ts +75 -0
  320. package/lib/locales/en-US.js +78 -1
  321. package/lib/locales/zh-CN.d.ts +79 -0
  322. package/lib/locales/zh-CN.js +83 -2
  323. package/lib/preConference.vue.d.ts +10 -0
  324. package/lib/preConference.vue.js +1 -1
  325. package/lib/preConference.vue2.js +88 -12
  326. package/lib/services/function/errorHandler.d.ts +10 -0
  327. package/lib/services/function/errorHandler.js +158 -0
  328. package/lib/services/function/virtualBackground.js +3 -2
  329. package/lib/services/index.d.ts +1 -0
  330. package/lib/services/manager/roomActionManager.d.ts +1 -0
  331. package/lib/services/manager/roomActionManager.js +10 -18
  332. package/lib/services/manager/scheduleConferenceManager.d.ts +113 -0
  333. package/lib/services/manager/scheduleConferenceManager.js +147 -0
  334. package/lib/services/manager/userManager.d.ts +2 -0
  335. package/lib/services/manager/userManager.js +4 -0
  336. package/lib/services/roomService.d.ts +8 -0
  337. package/lib/services/roomService.js +38 -12
  338. package/lib/services/types.d.ts +8 -0
  339. package/lib/services/types.js +2 -0
  340. package/lib/stores/basic.js +8 -2
  341. package/lib/stores/room.d.ts +2 -0
  342. package/lib/stores/room.js +55 -24
  343. package/lib/utils/adapter.js +39 -3
  344. package/lib/utils/utils.d.ts +3 -0
  345. package/lib/utils/utils.js +64 -0
  346. package/package.json +2 -2
  347. package/src/TUIRoom/assets/style/black-theme.scss +3 -1
  348. package/src/TUIRoom/assets/style/white-theme.scss +3 -1
  349. package/src/TUIRoom/components/Chat/ChatEditor/useChatEditor.ts +1 -1
  350. package/src/TUIRoom/components/Chat/MessageList/index.vue +5 -1
  351. package/src/TUIRoom/components/Chat/MessageList/useMessageListHook.ts +2 -1
  352. package/src/TUIRoom/components/ManageMember/MemberControl/index.vue +23 -7
  353. package/src/TUIRoom/components/ManageMember/MemberControl/useMemberControlHooks.ts +110 -14
  354. package/src/TUIRoom/components/ManageMember/MemberItem/useMemberItemHooks.ts +9 -4
  355. package/src/TUIRoom/components/ManageMember/MemberItemCommon/MemberInfo.vue +2 -1
  356. package/src/TUIRoom/components/ManageMember/index.vue +85 -5
  357. package/src/TUIRoom/components/ManageMember/useIndexHooks.ts +58 -9
  358. package/src/TUIRoom/components/RoomContent/StreamContainer/index.vue +7 -6
  359. package/src/TUIRoom/components/RoomContent/StreamContainer/useStreamContainerHooks.ts +90 -26
  360. package/src/TUIRoom/components/RoomContent/StreamRegion/index.vue +27 -3
  361. package/src/TUIRoom/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue +2 -1
  362. package/src/TUIRoom/components/RoomFooter/EndControl/index.vue +1 -1
  363. package/src/TUIRoom/components/RoomFooter/EndControl/useEndControlHooks.ts +10 -3
  364. package/src/TUIRoom/components/RoomFooter/ScreenShareControl/Index.vue +11 -1
  365. package/src/TUIRoom/components/RoomFooter/VideoControl.vue +0 -7
  366. package/src/TUIRoom/components/RoomHeader/UserInfo/index.vue +19 -50
  367. package/src/TUIRoom/components/RoomHeader/UserInfo/useUserInfoHooks.ts +1 -28
  368. package/src/TUIRoom/components/RoomHome/RoomControl/index.vue +91 -73
  369. package/src/TUIRoom/components/RoomSidebar/useSideBarHooks.ts +3 -2
  370. package/src/TUIRoom/components/ScheduleConference/Contacts.vue +265 -0
  371. package/src/TUIRoom/components/ScheduleConference/DurationTimePicker.vue +54 -0
  372. package/src/TUIRoom/components/ScheduleConference/ScheduleConferencePanel.vue +731 -0
  373. package/src/TUIRoom/components/ScheduleConference/ScheduleRoomControl.vue +577 -0
  374. package/src/TUIRoom/components/ScheduleConference/ScheduleRoomList.vue +295 -0
  375. package/src/TUIRoom/components/ScheduleConference/ShareLink.vue +122 -0
  376. package/src/TUIRoom/components/ScheduleConference/TimezonePicker.vue +70 -0
  377. package/src/TUIRoom/components/common/DeviceSelect.vue +62 -20
  378. package/src/TUIRoom/components/common/Logo.vue +3 -3
  379. package/src/TUIRoom/components/common/base/Checkbox.vue +19 -11
  380. package/src/TUIRoom/components/common/base/Datepicker/Datepicker.vue +252 -0
  381. package/src/TUIRoom/components/common/base/Datepicker/Timepicker.vue +54 -0
  382. package/src/TUIRoom/components/common/base/Dialog/index.vue +17 -7
  383. package/src/TUIRoom/components/common/base/Input/index.vue +187 -0
  384. package/src/TUIRoom/components/common/base/Message/Instance.ts +2 -1
  385. package/src/TUIRoom/components/common/base/MessageBox/index.ts +4 -2
  386. package/src/TUIRoom/components/common/base/MessageBox/index.vue +57 -26
  387. package/src/TUIRoom/components/common/base/Option.vue +14 -4
  388. package/src/TUIRoom/components/common/base/Select.vue +18 -13
  389. package/src/TUIRoom/components/common/base/index.ts +1 -1
  390. package/src/TUIRoom/components/common/icons/AllMembersShareScreenIcon.vue +15 -0
  391. package/src/TUIRoom/components/common/icons/ArrowStrokeRightIcon.vue +8 -0
  392. package/src/TUIRoom/components/common/icons/CalendarIcon.vue +6 -0
  393. package/src/TUIRoom/components/common/icons/EditNameCardIcon.vue +13 -0
  394. package/src/TUIRoom/components/common/icons/EllipsisIcon.vue +8 -0
  395. package/src/TUIRoom/components/common/icons/HostShareScreenIcon.vue +13 -0
  396. package/src/TUIRoom/components/common/icons/LinkIcon.vue +10 -0
  397. package/src/TUIRoom/components/common/icons/LoadingScheduleIcon.vue +6 -0
  398. package/src/TUIRoom/components/common/icons/ScheduleAttendees.vue +13 -0
  399. package/src/TUIRoom/components/common/icons/ScheduleRoomIcon.vue +6 -0
  400. package/src/TUIRoom/components/common/icons/SuccessIcon.vue +8 -0
  401. package/src/TUIRoom/components/common/icons/WarningIcon.vue +13 -0
  402. package/src/TUIRoom/conference.ts +6 -0
  403. package/src/TUIRoom/conference.vue +16 -5
  404. package/src/TUIRoom/directives/vDblTouch.ts +41 -0
  405. package/src/TUIRoom/directives/vTap.ts +32 -3
  406. package/src/TUIRoom/extension/chatExtension.ts +1 -1
  407. package/src/TUIRoom/hooks/useMasterApplyControl.ts +2 -2
  408. package/src/TUIRoom/index.ts +1 -0
  409. package/src/TUIRoom/locales/en-US.ts +77 -0
  410. package/src/TUIRoom/locales/zh-CN.ts +82 -1
  411. package/src/TUIRoom/preConference.vue +97 -2
  412. package/src/TUIRoom/services/function/errorHandler.ts +169 -0
  413. package/src/TUIRoom/services/function/virtualBackground.ts +3 -3
  414. package/src/TUIRoom/services/index.ts +1 -0
  415. package/src/TUIRoom/services/manager/roomActionManager.ts +10 -18
  416. package/src/TUIRoom/services/manager/scheduleConferenceManager.ts +263 -0
  417. package/src/TUIRoom/services/manager/userManager.ts +6 -0
  418. package/src/TUIRoom/services/roomService.ts +41 -13
  419. package/src/TUIRoom/services/types.ts +8 -1
  420. package/src/TUIRoom/stores/basic.ts +9 -2
  421. package/src/TUIRoom/stores/room.ts +60 -19
  422. package/src/TUIRoom/utils/adapter.ts +44 -4
  423. package/src/TUIRoom/utils/utils.ts +42 -0
  424. package/es/components/common/base/Input.vue.mjs +0 -7
  425. package/es/components/common/base/Input.vue2.mjs +0 -34
  426. package/lib/components/common/base/Input.vue.js +0 -7
  427. package/lib/components/common/base/Input.vue2.js +0 -34
  428. package/src/TUIRoom/components/common/base/Input.vue +0 -61
  429. /package/es/components/{common/base/Input.vue3.mjs → ScheduleConference/Contacts.vue3.mjs} +0 -0
  430. /package/lib/components/{common/base/Input.vue3.js → ScheduleConference/Contacts.vue3.js} +0 -0
@@ -1,17 +1,11 @@
1
- import { ref, onMounted, onUnmounted, Ref } from 'vue';
1
+ import { ref, onMounted, onUnmounted } from 'vue';
2
2
  import { useI18n } from '../../../locales';
3
- import { useBasicStore } from '../../../stores/basic';
4
- import { storeToRefs } from 'pinia';
5
3
  export default function useUserInfo() {
6
4
  const { t } = useI18n();
7
- const basicStore = useBasicStore();
8
- const { userName } = storeToRefs(basicStore);
9
5
 
10
6
  const userInfoRef = ref();
11
7
  const showUserControl = ref(false);
12
- const showUserNameEdit: Ref<boolean> = ref(false);
13
8
 
14
- const tempUserName = ref('');
15
9
  /**
16
10
  * Whether to display the user information operation box
17
11
  *
@@ -30,23 +24,6 @@ export default function useUserInfo() {
30
24
  }
31
25
  }
32
26
 
33
- /**
34
- * Show change name dialog
35
- *
36
- **/
37
- function showEditUserNameDialog() {
38
- showUserNameEdit.value = true;
39
- tempUserName.value = userName.value;
40
- }
41
-
42
- /**
43
- * Close the modify name dialog
44
- *
45
- **/
46
- function closeEditUserNameDialog() {
47
- showUserNameEdit.value = false;
48
- }
49
-
50
27
  onMounted(() => {
51
28
  window.addEventListener('click', hideUserControl);
52
29
  });
@@ -57,11 +34,7 @@ export default function useUserInfo() {
57
34
  return {
58
35
  t,
59
36
  showUserControl,
60
- showUserNameEdit,
61
37
  userInfoRef,
62
- tempUserName,
63
38
  handleUserControl,
64
- showEditUserNameDialog,
65
- closeEditUserNameDialog,
66
39
  };
67
40
  }
@@ -1,70 +1,83 @@
1
1
  <template>
2
2
  <div class="room-control-container">
3
- <Logo v-show="showLogo" class="logo" />
4
- <div class="control-container">
5
- <!-- Video preview area -->
6
- <div class="stream-preview-container">
7
- <div id="stream-preview" class="stream-preview"></div>
8
- <div class="attention-info">
9
- <span v-if="isCameraMuted" class="off-camera-info">{{ t('Off Camera') }}</span>
10
- <svg-icon v-if="isCameraLoading" :icon="LoadingIcon" class="loading"></svg-icon>
11
- </div>
12
- </div>
13
- <div class="control-region">
14
- <!-- Microphone, Camera operating area -->
15
- <div class="media-control-region">
16
- <audio-media-control
17
- class="media-control-item"
18
- :has-more="true"
19
- :is-muted="isMicMuted"
20
- :audio-volume="audioVolume"
21
- @click="toggleMuteAudio"
22
- ></audio-media-control>
23
- <video-media-control
24
- class="media-control-item"
25
- :has-more="true"
26
- :is-muted="isCameraMuted"
27
- @click="toggleMuteVideo"
28
- ></video-media-control>
3
+ <div class="room-control-main">
4
+ <div class="control-container">
5
+ <!-- Video preview area -->
6
+ <div class="stream-preview-container">
7
+ <div id="stream-preview" class="stream-preview"></div>
8
+ <div class="attention-info">
9
+ <span v-if="isCameraMuted" class="off-camera-info">{{ t('Off Camera') }}</span>
10
+ <svg-icon v-if="isCameraLoading" :icon="LoadingIcon" class="loading"></svg-icon>
11
+ </div>
29
12
  </div>
30
- <div class="room-control-region">
31
- <!-- Create room logic -->
32
- <div class="create-room-region">
33
- <tui-button class="button-item" @click.stop="handleCreateRoom">
34
- <svg-icon :icon="CreateRoomIcon" />
35
- <span class="button-text">{{ t('New Room') }}</span>
36
- </tui-button>
37
- <div
38
- v-if="showCreateRoomItems"
39
- v-click-outside="handleClickOutsideCreateRoomItems"
40
- class="create-room-items"
41
- >
42
- <div class="create-room-item" @click="createRoom('SpeakAfterTakingSeat')">
43
- <span :title="t('On-stage Speaking Room')" class="create-room-option">{{ t('On-stage Speaking Room') }}</span>
44
- <svg-icon class="create-room-icon" :icon="NextIcon"></svg-icon>
45
- </div>
46
- <div class="create-room-item" @click="createRoom('FreeToSpeak')">
47
- <span :title="t('Free Speech Room')" class="create-room-option">{{ t('Free Speech Room') }}</span>
48
- <svg-icon class="create-room-icon" :icon="NextIcon"></svg-icon>
13
+ <div class="control-region">
14
+ <!-- Microphone, Camera operating area -->
15
+ <div class="media-control-region">
16
+ <audio-media-control
17
+ class="media-control-item"
18
+ :has-more="true"
19
+ :is-muted="isMicMuted"
20
+ :audio-volume="audioVolume"
21
+ @click="toggleMuteAudio"
22
+ ></audio-media-control>
23
+ <video-media-control
24
+ class="media-control-item"
25
+ :has-more="true"
26
+ :is-muted="isCameraMuted"
27
+ @click="toggleMuteVideo"
28
+ ></video-media-control>
29
+ </div>
30
+ <div class="room-control-region">
31
+ <!-- Create room logic -->
32
+ <div class="create-room-region">
33
+ <tui-button class="button-item" style="width: 170px;" @click.stop="handleCreateRoom">
34
+ <svg-icon :icon="CreateRoomIcon" />
35
+ <span class="button-text">{{ t('New Room') }}</span>
36
+ </tui-button>
37
+ <div
38
+ v-if="showCreateRoomItems"
39
+ v-click-outside="handleClickOutsideCreateRoomItems"
40
+ class="create-room-items"
41
+ >
42
+ <div class="create-room-item" @click="createRoom('SpeakAfterTakingSeat')">
43
+ <span :title="t('On-stage Speaking Room')" class="create-room-option">{{ t('On-stage Speaking Room') }}</span>
44
+ <svg-icon class="create-room-icon" :icon="NextIcon"></svg-icon>
45
+ </div>
46
+ <div class="create-room-item" @click="createRoom('FreeToSpeak')">
47
+ <span :title="t('Free Speech Room')" class="create-room-option">{{ t('Free Speech Room') }}</span>
48
+ <svg-icon class="create-room-icon" :icon="NextIcon"></svg-icon>
49
+ </div>
49
50
  </div>
50
51
  </div>
51
- </div>
52
- <!-- Enter room logic -->
53
- <div class="enter-room-region">
54
- <tui-button v-if="!showEnterRoomAction" class="button-item" @click="handleEnterRoom">
55
- <svg-icon :icon="EnterRoomIcon" />
56
- <span class="button-text">{{ t('Join Room') }}</span>
57
- </tui-button>
58
- <div v-if="showEnterRoomAction" class="enter-room-action">
59
- <input v-model="roomId" class="input" :placeholder="t('Enter room ID')" @keyup.enter="enterRoom">
60
- <div :class="['enter-button', {'active': roomId.length > 0 }]" @click="enterRoom">
52
+ <!-- Enter room logic -->
53
+ <div class="enter-room-region">
54
+ <tui-button v-if="!showEnterRoomAction" class="button-item" style="width: 170px;" @click="handleEnterRoom">
61
55
  <svg-icon :icon="EnterRoomIcon" />
56
+ <span class="button-text">{{ t('Join Room') }}</span>
57
+ </tui-button>
58
+ <div v-if="showEnterRoomAction" class="enter-room-action">
59
+ <input v-model="roomId" class="input" :placeholder="t('Enter room ID')" @keyup.enter="enterRoom">
60
+ <div :class="['enter-button', {'active': roomId.length > 0 }]" @click="enterRoom">
61
+ <svg-icon :icon="EnterRoomIcon" />
62
+ </div>
62
63
  </div>
63
64
  </div>
65
+ <!-- Schedule room logic -->
66
+ <div class="schedule-room-region" v-if="props.enableScheduledConference">
67
+ <tui-button class="button-item" style="width: 170px;" @click="scheduleConference">
68
+ <svg-icon :icon="ScheduleRoomIcon" />
69
+ <span class="button-text">{{ t('Schedule') }}</span>
70
+ </tui-button>
71
+ </div>
64
72
  </div>
65
73
  </div>
66
74
  </div>
67
75
  </div>
76
+ <ScheduleConferencePanel
77
+ :visible="scheduleConferenceDialogVisible"
78
+ :user-name="props.userName"
79
+ @input="scheduleConferenceDialogVisible = $event"
80
+ ></ScheduleConferencePanel>
68
81
  </div>
69
82
  </template>
70
83
 
@@ -74,15 +87,16 @@ import SvgIcon from '../../common/base/SvgIcon.vue';
74
87
  import LoadingIcon from '../../common/icons/LoadingIcon.vue';
75
88
  import NextIcon from '../../common/icons/NextIcon.vue';
76
89
  import TuiButton from '../../common/base/Button.vue';
77
- import Logo from '../../common/Logo.vue';
78
90
  import useRoomControl from './useRoomControlHooks';
79
91
  import CreateRoomIcon from '../../common/icons/CreateRoomIcon.vue';
80
92
  import EnterRoomIcon from '../../common/icons/EnterRoomIcon.vue';
93
+ import ScheduleRoomIcon from '../../common/icons/ScheduleRoomIcon.vue';
81
94
  import useGetRoomEngine from '../../../hooks/useRoomEngine';
82
95
  import { useBasicStore } from '../../../stores/basic';
83
96
  import { useRoomStore } from '../../../stores/room';
84
97
  import AudioMediaControl from '../../common/AudioMediaControl.vue';
85
98
  import VideoMediaControl from '../../common/VideoMediaControl.vue';
99
+ import ScheduleConferencePanel from '../../ScheduleConference/ScheduleConferencePanel.vue';
86
100
  import TUIRoomEngine, { TRTCVideoMirrorType, TRTCVideoRotation, TRTCVideoFillMode, TUIRoomDeviceMangerEvents } from '@tencentcloud/tuiroom-engine-electron';
87
101
  import vClickOutside from '../../../directives/vClickOutside';
88
102
  import { isEnumerateDevicesSupported, isGetUserMediaSupported } from '../../../utils/mediaAbility';
@@ -96,12 +110,15 @@ const {
96
110
  const { deviceManager, initMediaDeviceList } = useDeviceManager({ listenForDeviceChange: true });
97
111
 
98
112
  const props = withDefaults(defineProps<{
113
+ userName?: string,
99
114
  showLogo?: boolean,
100
115
  givenRoomId: string | null,
116
+ enableScheduledConference?: boolean,
101
117
  }>(), {
102
118
  showLogo: true,
119
+ userName: '',
120
+ enableScheduledConference: true,
103
121
  });
104
-
105
122
  defineExpose({
106
123
  getRoomParam,
107
124
  startStreamPreview,
@@ -117,6 +134,12 @@ const isCameraMuted = ref(false);
117
134
  const showCreateRoomItems = ref(false);
118
135
  const showEnterRoomAction = ref(Boolean(props.givenRoomId));
119
136
 
137
+ const scheduleConferenceDialogVisible = ref(false);
138
+
139
+ const scheduleConference = () => {
140
+ scheduleConferenceDialogVisible.value = true;
141
+ };
142
+
120
143
  const tuiRoomParam = {
121
144
  isOpenCamera: true,
122
145
  isOpenMicrophone: true,
@@ -166,6 +189,7 @@ async function toggleMuteVideo() {
166
189
  tuiRoomParam.isOpenCamera = !isCameraMuted.value;
167
190
  if (isCameraMuted.value) {
168
191
  await closeCamera();
192
+ isCameraLoading.value = false;
169
193
  } else {
170
194
  isCameraLoading.value = true;
171
195
  await openCamera();
@@ -281,17 +305,8 @@ onBeforeUnmount(async () => {
281
305
  }
282
306
  }
283
307
 
284
- .room-control-container {
285
- position: absolute;
286
- left: 50%;
287
- transform: translateX(-50%);
308
+ .room-control-main {
288
309
  display: flex;
289
- align-items: center;
290
- flex-direction: column;
291
- }
292
-
293
- .logo {
294
- margin-bottom: 56px;
295
310
  }
296
311
 
297
312
  .control-container {
@@ -422,12 +437,12 @@ onBeforeUnmount(async () => {
422
437
  .enter-room-region {
423
438
  margin-left: 20px;
424
439
  .enter-room-action {
425
- width: 260px;
440
+ width: 170px;
426
441
  height: 60px;
427
442
  border-radius: 30px;
428
443
  background-color: var(--background-color);
429
444
  border: 2px solid var(--active-color-1);
430
- padding: 0px 24px;
445
+ padding: 0px 14px;
431
446
  position: relative;
432
447
  line-height: 60px;
433
448
  .input {
@@ -462,16 +477,16 @@ onBeforeUnmount(async () => {
462
477
  }
463
478
  }
464
479
  .enter-button {
465
- width: 72px;
466
- height: 52px;
480
+ width: 40px;
481
+ height: 40px;
467
482
  background-color: #90B3F0;
468
483
  border-radius: 26px;
469
484
  display: flex;
470
485
  justify-content: center;
471
486
  align-items: center;
472
487
  position: absolute;
473
- right: 2px;
474
- top: 2px;
488
+ right: 8px;
489
+ top: 8px;
475
490
  &.active {
476
491
  cursor: pointer;
477
492
  background-color: var(--active-color-1);
@@ -479,6 +494,9 @@ onBeforeUnmount(async () => {
479
494
  }
480
495
  }
481
496
  }
497
+ .schedule-room-region {
498
+ margin-left: 20px;
499
+ }
482
500
  }
483
501
  }
484
502
  }
@@ -13,7 +13,7 @@ export default function useSideBar() {
13
13
 
14
14
  const chatStore = useChatStore();
15
15
  const basicStore = useBasicStore();
16
- const { sdkAppId, isSidebarOpen, sidebarName } = storeToRefs(basicStore);
16
+ const { sdkAppId, isSidebarOpen, sidebarName, roomId } = storeToRefs(basicStore);
17
17
  const roomStore = useRoomStore();
18
18
  const { userNumber } = storeToRefs(roomStore);
19
19
 
@@ -53,8 +53,9 @@ export default function useSideBar() {
53
53
  if (!options || !options.data) {
54
54
  return;
55
55
  }
56
+ const currentConversationId = `GROUP${roomId.value}`
56
57
  options.data.forEach((message: any) => {
57
- if (message.type === TencentCloudChat.TYPES.MSG_TEXT) {
58
+ if (message.conversationID === currentConversationId && message.type === TencentCloudChat.TYPES.MSG_TEXT) {
58
59
  if (!basicStore.isSidebarOpen || basicStore.sidebarName !== 'chat') {
59
60
  // eslint-disable-next-line no-plusplus
60
61
  chatStore.updateUnReadCount(++chatStore.unReadCount);
@@ -0,0 +1,265 @@
1
+ <template>
2
+ <TuiDialog
3
+ v-model="isDialogVisible"
4
+ :title="t('Contacts')"
5
+ :modal="true"
6
+ :append-to-body="true"
7
+ :close-on-click-modal="false"
8
+ >
9
+ <div class="contacts-container">
10
+ <div class="contact">
11
+ <div class="contact-search">
12
+ <TuiInput
13
+ v-model="searchValue" class="contact-search-input" :search="searchContact"
14
+ @focus="(element) => { element.classList.add('focus') }"
15
+ @blur="(element) => { element.classList.remove('focus') }"
16
+ >
17
+ <template #suffixIcon>
18
+ <SearchIcon class="search-icon" @mousedown.prevent />
19
+ </template>
20
+ </TuiInput>
21
+ </div>
22
+ <div class="contact-list">
23
+ <div v-if="showList.length === 0 && searchValue" class="no-result">{{ t('No relevant members found') }}</div>
24
+ <template v-else>
25
+ <div v-for="item in showList" :key="item.userInfo.userID" class="contact-list-item">
26
+ <TuiCheckbox
27
+ :model-value="item.selected"
28
+ class="contact-list-item-checkbox"
29
+ @input="item.selected = $event"
30
+ >
31
+ <span class="contact-list-item-checkbox-container">
32
+ <TuiAvatar class="contact-list-item-avatar" :img-src="item.userInfo.profile.avatar"></TuiAvatar>
33
+ <p class="contact-list-item-name" :title="item.userInfo.profile.nick">
34
+ {{ item.userInfo.profile.nick || item.userInfo.profile.userID }}
35
+ </p>
36
+ </span>
37
+ </TuiCheckbox>
38
+ </div>
39
+ </template>
40
+ </div>
41
+ </div>
42
+ <div class="chosen">
43
+ <div class="chosen-title">{{ t(`Selected Contact`) + `(${selectedContacts.length})` }}</div>
44
+ <div class="chosen-list">
45
+ <div v-for="item in selectedContacts" :key="item.userInfo.userID" class="chosen-list-item">
46
+ <TuiAvatar class="chosen-list-item-avatar" :img-src="item.userInfo.profile.avatar"></TuiAvatar>
47
+ <p class="chosen-list-item-name" :title="item.userInfo.profile.nick">
48
+ {{ item.userInfo.profile.nick || item.userInfo.profile.userID }}
49
+ </p>
50
+ <CloseIcon class="chosen-list-item-remove" @click="removeSelectUser(item)"></CloseIcon>
51
+ </div>
52
+ </div>
53
+ <div class="chosen-footer">
54
+ <TuiButton class="chosen-footer-button" type="primary" @click="cancel">{{ t('Cancel') }}</TuiButton>
55
+ <TuiButton class="chosen-footer-button" @click="confirm">{{ t('Confirm') }}</TuiButton>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </TuiDialog>
60
+ </template>
61
+
62
+ <script setup lang="ts">
63
+ import { ref, defineProps, defineEmits, watch, computed } from 'vue';
64
+ import TuiDialog from '../common/base/Dialog/index.vue';
65
+ import TuiInput from '../common/base/Input/index.vue';
66
+ import TuiCheckbox from '../common/base/Checkbox.vue';
67
+ import TuiButton from '../common/base/Button.vue';
68
+ import TuiAvatar from '../common/Avatar.vue';
69
+ import SearchIcon from '../common/icons/SearchIcon.vue';
70
+ import CloseIcon from '../common/icons/CloseIcon.vue';
71
+
72
+ import { useI18n } from '../../locales';
73
+
74
+ const { t } = useI18n();
75
+
76
+ interface Props {
77
+ visible: boolean,
78
+ contacts: any[],
79
+ selectedList?: any[],
80
+ }
81
+ const props = defineProps<Props>();
82
+ const emit = defineEmits(['input', 'confirm']);
83
+ const isDialogVisible = ref(false);
84
+ const searchValue = ref('');
85
+ const updateContacts = () => {
86
+ contacts.value = props.contacts.map((user) => {
87
+ const index = props.selectedList?.findIndex(selectedUser => selectedUser.userId === user.userID);
88
+ return { selected: index !== undefined && index !== -1, userInfo: user };
89
+ });
90
+ };
91
+ const updateVisible = (val: boolean) => {
92
+ updateContacts();
93
+ emit('input', val);
94
+ };
95
+
96
+ const contacts = ref(props.contacts.map((user) => {
97
+ const index = props.selectedList?.findIndex(selectedUser => selectedUser.userId === user.userID);
98
+ return { selected: !!index && index !== -1, userInfo: user };
99
+ }));
100
+ const selectedContacts = computed(() => contacts.value.filter(user => user.selected));
101
+ const searchResult = ref<any>([]);
102
+ const showList = computed(() => (searchValue.value ? searchResult.value : contacts.value));
103
+ const searchContact = (v: any) => {
104
+ if (!v) return [];
105
+ searchResult.value = contacts.value
106
+ .filter(item => item.userInfo.profile.nick.includes(v) || item.userInfo.userID.includes(v));
107
+ };
108
+ const removeSelectUser = (user: { selected: boolean; userInfo: any }) => {
109
+ const index = contacts.value.findIndex(item => user.userInfo.userID === item.userInfo.userID);
110
+ contacts.value[index].selected = false;
111
+ };
112
+ const confirm = () => {
113
+ emit('confirm', selectedContacts.value.map((item) => {
114
+ const { userID, profile } = item.userInfo;
115
+ return {
116
+ userId: userID,
117
+ userName: profile.nick,
118
+ avatarUrl: profile.avatar,
119
+ };
120
+ }));
121
+ updateVisible(false);
122
+ };
123
+
124
+ const cancel = () => {
125
+ updateVisible(false);
126
+ };
127
+
128
+ watch(
129
+ () => props.visible,
130
+ (val) => {
131
+ isDialogVisible.value = val;
132
+ },
133
+ {
134
+ immediate: true,
135
+ },
136
+ );
137
+
138
+ watch(isDialogVisible, (val) => {
139
+ searchValue.value = '';
140
+ updateVisible(val);
141
+ }, { immediate: true });
142
+ </script>
143
+ <style lang="scss" scoped>
144
+ .contacts-container {
145
+ display: flex;
146
+ max-height: 400px;
147
+
148
+ .contact,
149
+ .chosen {
150
+ height: 400px;
151
+ }
152
+
153
+ .contact {
154
+ width: 50%;
155
+ border-right: 1px solid #e5e5e5;
156
+ padding-right: 1rem;
157
+
158
+ .contact-search {
159
+ &-input.focus {
160
+ .search-icon {
161
+ color: var(--active-color-1);
162
+ }
163
+ }
164
+ }
165
+
166
+ .contact-list {
167
+ height: 80%;
168
+
169
+ .no-result {
170
+ font-size: 12px;
171
+ text-align: center;
172
+ height: 100%;
173
+ display: flex;
174
+ justify-content: center;
175
+ align-items: center;
176
+ }
177
+ }
178
+ }
179
+
180
+ .chosen {
181
+ width: 50%;
182
+ padding-left: 1rem;
183
+ overflow: hidden;
184
+
185
+ .chosen-title {
186
+ font-size: 14px;
187
+ font-weight: 600;
188
+ }
189
+
190
+ .chosen-list {}
191
+
192
+ .chosen-footer {
193
+ display: flex;
194
+ justify-content: center;
195
+ gap: 10px;
196
+
197
+ .chosen-footer-button {
198
+ width: 76px;
199
+ height: 26px;
200
+ }
201
+ }
202
+
203
+ }
204
+
205
+ .contact-list,
206
+ .chosen-list {
207
+ margin: 10px 0;
208
+ height: 80%;
209
+ max-height: calc(100% - 68px);
210
+ overflow: auto;
211
+ box-sizing: border-box;
212
+
213
+ &-item {
214
+ display: flex;
215
+ align-items: center;
216
+ height: 34px;
217
+ line-height: 34px;
218
+ cursor: pointer;
219
+
220
+ &-checkbox {
221
+ display: flex;
222
+ width: 100%;
223
+ height: 100%;
224
+
225
+ &-container {
226
+ display: flex;
227
+ align-items: center;
228
+ }
229
+ }
230
+
231
+
232
+ &-avatar {
233
+ min-width: 20px;
234
+ min-height: 20px;
235
+ width: 20px;
236
+ height: 20px;
237
+ margin-right: 6px;
238
+ margin-left: 8px;
239
+ }
240
+
241
+ &-name {
242
+ box-sizing: border-box;
243
+ margin: initial;
244
+ white-space: nowrap;
245
+ text-overflow: ellipsis;
246
+ overflow: hidden;
247
+ max-width: 70%;
248
+ }
249
+
250
+ &-remove {
251
+ cursor: pointer;
252
+ margin-left: auto;
253
+ color: #6B758A;
254
+ min-width: 10px;
255
+ width: 10px;
256
+ margin-right: 10px;
257
+ }
258
+ }
259
+
260
+ &-item:hover {
261
+ background-color: #ecf5ff;
262
+ }
263
+ }
264
+ }
265
+ </style>
@@ -0,0 +1,54 @@
1
+ <template>
2
+ <div class="container">
3
+ <TuiSelect
4
+ v-model="selectedTime" theme="white" class="timepicker-select" :teleported="false"
5
+ :custom-select-content-style="{ 'font-weight': 400 }"
6
+ >
7
+ <TuiOption
8
+ v-for="time in timeOptions" :key="time.value" theme="white" :value="time.value" :label="time.label"
9
+ :custom-option-content-style="{ 'font-weight': 400 }"
10
+ ></TuiOption>
11
+ </TuiSelect>
12
+ </div>
13
+ </template>
14
+
15
+ <script setup lang="ts">
16
+ import { ref, computed, defineProps, defineEmits, watch } from 'vue';
17
+ import TuiSelect from '../common/base/Select.vue';
18
+ import TuiOption from '../common/base/Option.vue';
19
+ import { useI18n } from '../../locales';
20
+
21
+ const { t } = useI18n();
22
+ interface Props {
23
+ modelValue: number;
24
+ }
25
+ const props = defineProps<Props>();
26
+ const emit = defineEmits(['input']);
27
+ const selectedTime = ref(props.modelValue);
28
+
29
+ const timeOptions = computed(() => {
30
+ const options = [];
31
+ // Add options for 15, 30, and 45 minutes
32
+ for (let i = 15; i < 60; i += 15) {
33
+ options.push({ value: i * 60, label: `${i} ${t('minutes')}` });
34
+ }
35
+ // Add options for 1 to 24 hours
36
+ for (let i = 1; i < 24; i++) {
37
+ options.push({ value: i * 60 * 60, label: `${i} ${t('hours')}` });
38
+ }
39
+ return options;
40
+ });
41
+
42
+ const updateTime = () => {
43
+ emit('input', selectedTime.value);
44
+ };
45
+
46
+ watch(selectedTime, () => {
47
+ updateTime();
48
+ }, {
49
+ immediate: true,
50
+ });
51
+ watch(() => props.modelValue, (newValue) => {
52
+ selectedTime.value = newValue;
53
+ }, { immediate: true });
54
+ </script>