@selfcommunity/react-ui 0.8.0-embeds.17 → 0.8.0-live.41

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 (317) hide show
  1. package/lib/cjs/components/BottomNavigation/BottomNavigation.d.ts +1 -1
  2. package/lib/cjs/components/Categories/Categories.js +22 -0
  3. package/lib/cjs/components/CategoriesPopularWidget/CategoriesPopularWidget.js +21 -0
  4. package/lib/cjs/components/CategoriesSuggestionWidget/CategoriesSuggestionWidget.js +21 -0
  5. package/lib/cjs/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.js +1 -1
  6. package/lib/cjs/components/CreateEventButton/CreateEventButton.d.ts +2 -2
  7. package/lib/cjs/components/CreateEventButton/CreateEventButton.js +4 -4
  8. package/lib/cjs/components/CreateLiveStreamButton/CreateLiveStreamButton.d.ts +49 -0
  9. package/lib/cjs/components/CreateLiveStreamButton/CreateLiveStreamButton.js +94 -0
  10. package/lib/cjs/components/CreateLiveStreamButton/index.d.ts +3 -0
  11. package/lib/cjs/components/CreateLiveStreamButton/index.js +5 -0
  12. package/lib/cjs/components/CreateLiveStreamDialog/CreateLiveStreamDialog.d.ts +51 -0
  13. package/lib/cjs/components/CreateLiveStreamDialog/CreateLiveStreamDialog.js +123 -0
  14. package/lib/cjs/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.d.ts +46 -0
  15. package/lib/cjs/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.js +166 -0
  16. package/lib/cjs/components/CreateLiveStreamDialog/constants.d.ts +1 -0
  17. package/lib/cjs/components/CreateLiveStreamDialog/constants.js +4 -0
  18. package/lib/cjs/components/CreateLiveStreamDialog/index.d.ts +3 -0
  19. package/lib/cjs/components/CreateLiveStreamDialog/index.js +5 -0
  20. package/lib/cjs/components/CreateLiveStreamDialog/types.d.ts +8 -0
  21. package/lib/cjs/components/CreateLiveStreamDialog/types.js +13 -0
  22. package/lib/cjs/components/EditEventButton/EditEventButton.js +1 -1
  23. package/lib/cjs/components/Editor/Editor.d.ts +1 -1
  24. package/lib/cjs/components/Editor/nodes/HashtagNode.d.ts +1 -1
  25. package/lib/cjs/components/Editor/nodes/HashtagNode.js +4 -4
  26. package/lib/cjs/components/Editor/nodes/ImageNode.d.ts +1 -1
  27. package/lib/cjs/components/Editor/nodes/ImageNode.js +6 -6
  28. package/lib/cjs/components/Editor/nodes/MentionNode.d.ts +1 -1
  29. package/lib/cjs/components/Editor/nodes/MentionNode.js +4 -4
  30. package/lib/cjs/components/Editor/plugins/ApiPlugin.d.ts +1 -1
  31. package/lib/cjs/components/Editor/plugins/MentionsPlugin.d.ts +2 -2
  32. package/lib/cjs/components/Editor/shared/useDecorators.d.ts +2 -2
  33. package/lib/cjs/components/Event/Event.js +1 -1
  34. package/lib/cjs/components/EventForm/EventForm.d.ts +7 -12
  35. package/lib/cjs/components/EventForm/EventForm.js +55 -55
  36. package/lib/cjs/components/EventForm/types.d.ts +5 -5
  37. package/lib/cjs/components/EventFormDialog/EventFormDialog.d.ts +48 -0
  38. package/lib/cjs/components/EventFormDialog/EventFormDialog.js +56 -0
  39. package/lib/cjs/components/EventFormDialog/constants.d.ts +1 -0
  40. package/lib/cjs/components/EventFormDialog/constants.js +4 -0
  41. package/lib/cjs/components/EventFormDialog/index.d.ts +3 -0
  42. package/lib/cjs/components/EventFormDialog/index.js +5 -0
  43. package/lib/cjs/components/EventHeader/EventHeader.js +3 -7
  44. package/lib/cjs/components/EventInfoWidget/EventInfoWidget.js +6 -4
  45. package/lib/cjs/components/EventMediaWidget/EventMediaWidget.d.ts +41 -0
  46. package/lib/cjs/components/EventMediaWidget/EventMediaWidget.js +253 -0
  47. package/lib/cjs/components/EventMediaWidget/Skeleton.d.ts +2 -0
  48. package/lib/cjs/components/EventMediaWidget/Skeleton.js +28 -0
  49. package/lib/cjs/components/EventMediaWidget/TriggerButton.d.ts +17 -0
  50. package/lib/cjs/components/EventMediaWidget/TriggerButton.js +66 -0
  51. package/lib/cjs/components/EventMediaWidget/asUploadButton.d.ts +7 -0
  52. package/lib/cjs/components/EventMediaWidget/asUploadButton.js +25 -0
  53. package/lib/cjs/components/EventMediaWidget/constants.d.ts +1 -0
  54. package/lib/cjs/components/EventMediaWidget/constants.js +4 -0
  55. package/lib/cjs/components/EventMediaWidget/index.d.ts +4 -0
  56. package/lib/cjs/components/EventMediaWidget/index.js +8 -0
  57. package/lib/cjs/components/EventMembersWidget/EventMembersWidget.d.ts +3 -0
  58. package/lib/cjs/components/EventMembersWidget/EventMembersWidget.js +18 -13
  59. package/lib/cjs/components/EventMembersWidget/types.d.ts +1 -1
  60. package/lib/cjs/components/Events/Events.js +15 -6
  61. package/lib/cjs/components/Events/LocationEventsFilter.d.ts +14 -0
  62. package/lib/cjs/components/Events/LocationEventsFilter.js +45 -0
  63. package/lib/cjs/components/Events/PastEventsFilter.js +1 -2
  64. package/lib/cjs/components/Feed/Feed.d.ts +2 -2
  65. package/lib/cjs/components/Feed/Feed.js +3 -2
  66. package/lib/cjs/components/Feed/Skeleton.d.ts +1 -1
  67. package/lib/cjs/components/GroupActionsMenu/index.d.ts +57 -0
  68. package/lib/cjs/components/GroupActionsMenu/index.js +157 -0
  69. package/lib/cjs/components/GroupHeader/GroupHeader.d.ts +6 -0
  70. package/lib/cjs/components/GroupHeader/GroupHeader.js +8 -4
  71. package/lib/cjs/components/Groups/Groups.js +26 -0
  72. package/lib/cjs/components/LiveStreamForm/LiveStreamForm.d.ts +55 -0
  73. package/lib/cjs/components/LiveStreamForm/LiveStreamForm.js +156 -0
  74. package/lib/cjs/components/LiveStreamForm/constants.d.ts +1 -0
  75. package/lib/cjs/components/LiveStreamForm/constants.js +4 -0
  76. package/lib/cjs/components/LiveStreamForm/index.d.ts +3 -0
  77. package/lib/cjs/components/LiveStreamForm/index.js +5 -0
  78. package/lib/cjs/components/LiveStreamForm/types.d.ts +10 -0
  79. package/lib/cjs/components/LiveStreamForm/types.js +2 -0
  80. package/lib/cjs/components/LiveStreamRoom/LiveStreamRoom.d.ts +48 -0
  81. package/lib/cjs/components/LiveStreamRoom/LiveStreamRoom.js +123 -0
  82. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.d.ts +69 -0
  83. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.js +186 -0
  84. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/RecordingIndicator.d.ts +4 -0
  85. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/RecordingIndicator.js +31 -0
  86. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/constants.d.ts +1 -0
  87. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/constants.js +4 -0
  88. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/index.d.ts +3 -0
  89. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/index.js +5 -0
  90. package/lib/cjs/components/LiveStreamRoom/constants.d.ts +5 -0
  91. package/lib/cjs/components/LiveStreamRoom/constants.js +8 -0
  92. package/lib/cjs/components/LiveStreamRoom/index.d.ts +3 -0
  93. package/lib/cjs/components/LiveStreamRoom/index.js +5 -0
  94. package/lib/cjs/components/LiveStreamRoom/types.d.ts +22 -0
  95. package/lib/cjs/components/LiveStreamRoom/types.js +8 -0
  96. package/lib/cjs/components/NavigationMenuIconButton/DefaultDrawerContent.js +1 -1
  97. package/lib/cjs/components/NavigationMenuIconButton/DefaultHeaderContent.d.ts +1 -1
  98. package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuDrawer.d.ts +47 -0
  99. package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuDrawer.js +39 -0
  100. package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.d.ts +9 -20
  101. package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.js +4 -20
  102. package/lib/cjs/components/NavigationMenuIconButton/index.d.ts +2 -1
  103. package/lib/cjs/components/NavigationMenuIconButton/index.js +3 -1
  104. package/lib/cjs/components/NavigationSettingsIconButton/NavigationSettingsIconButton.js +35 -2
  105. package/lib/cjs/components/NavigationToolbar/NavigationToolbar.d.ts +5 -0
  106. package/lib/cjs/components/NavigationToolbar/NavigationToolbar.js +3 -3
  107. package/lib/cjs/components/OnBoardingWidget/ActionsButton.d.ts +7 -0
  108. package/lib/cjs/components/OnBoardingWidget/ActionsButton.js +84 -0
  109. package/lib/cjs/components/OnBoardingWidget/OnBoardingWidget.d.ts +5 -1
  110. package/lib/cjs/components/OnBoardingWidget/OnBoardingWidget.js +96 -23
  111. package/lib/cjs/components/OnBoardingWidget/Steps/Appearance/Appearance.js +23 -16
  112. package/lib/cjs/components/OnBoardingWidget/Steps/Invite/Invite.js +56 -12
  113. package/lib/cjs/components/PlatformWidget/constants.d.ts +0 -4
  114. package/lib/cjs/components/PlatformWidget/constants.js +1 -5
  115. package/lib/cjs/components/PrivateMessageComponent/Skeleton.d.ts +1 -1
  116. package/lib/cjs/components/PrivateMessageThreadItem/PrivateMessageThreadItem.js +1 -3
  117. package/lib/cjs/constants/GroupActionsMenu.d.ts +5 -0
  118. package/lib/cjs/constants/GroupActionsMenu.js +8 -0
  119. package/lib/cjs/constants/LiveStream.d.ts +3 -0
  120. package/lib/cjs/constants/LiveStream.js +6 -0
  121. package/lib/cjs/constants/PubSub.d.ts +8 -1
  122. package/lib/cjs/constants/PubSub.js +9 -1
  123. package/lib/cjs/index.d.ts +15 -4
  124. package/lib/cjs/index.js +35 -9
  125. package/lib/cjs/shared/EventActionsMenu/index.d.ts +1 -1
  126. package/lib/cjs/shared/EventActionsMenu/index.js +11 -15
  127. package/lib/cjs/shared/EventInfoDetails/index.js +3 -3
  128. package/lib/cjs/shared/InfiniteScroll/index.d.ts +1 -1
  129. package/lib/cjs/shared/InfiniteScroll/index.js +4 -4
  130. package/lib/cjs/shared/Lightbox/BaseLightbox.d.ts +19 -0
  131. package/lib/cjs/shared/Lightbox/BaseLightbox.js +35 -0
  132. package/lib/cjs/shared/Lightbox/Lightbox.d.ts +31 -17
  133. package/lib/cjs/shared/Lightbox/Lightbox.js +16 -19
  134. package/lib/cjs/shared/Lightbox/constants.d.ts +1 -0
  135. package/lib/cjs/shared/Lightbox/constants.js +4 -0
  136. package/lib/cjs/shared/Lightbox/index.d.ts +4 -2
  137. package/lib/cjs/shared/Lightbox/index.js +4 -1
  138. package/lib/cjs/shared/Media/File/DisplayComponent.js +23 -6
  139. package/lib/cjs/shared/Media/File/asUploadButton.d.ts +1 -1
  140. package/lib/cjs/shared/Media/Link/DisplayComponent.js +5 -5
  141. package/lib/cjs/shared/Media/Link/UrlTextField/index.d.ts +1 -1
  142. package/lib/cjs/shared/MediaChunkUploader/index.js +13 -11
  143. package/lib/cjs/shared/MetadataField/MetadataField.d.ts +1 -1
  144. package/lib/cjs/shared/StickyBox/index.d.ts +4 -4
  145. package/lib/cjs/shared/UsernameTextField/index.d.ts +1 -1
  146. package/lib/cjs/types/composer.d.ts +1 -1
  147. package/lib/cjs/utils/events.d.ts +2 -0
  148. package/lib/cjs/utils/events.js +10 -0
  149. package/lib/cjs/utils/hash.d.ts +2 -1
  150. package/lib/cjs/utils/liveStream.d.ts +4 -0
  151. package/lib/cjs/utils/liveStream.js +25 -0
  152. package/lib/cjs/utils/widget.d.ts +1 -0
  153. package/lib/cjs/utils/widget.js +14 -0
  154. package/lib/esm/components/BottomNavigation/BottomNavigation.d.ts +1 -1
  155. package/lib/esm/components/Categories/Categories.js +23 -1
  156. package/lib/esm/components/CategoriesPopularWidget/CategoriesPopularWidget.js +22 -1
  157. package/lib/esm/components/CategoriesSuggestionWidget/CategoriesSuggestionWidget.js +22 -1
  158. package/lib/esm/components/Composer/TypeSwitchButtonGroup/TypeSwitchButtonGroup.js +2 -2
  159. package/lib/esm/components/CreateEventButton/CreateEventButton.d.ts +2 -2
  160. package/lib/esm/components/CreateEventButton/CreateEventButton.js +4 -4
  161. package/lib/esm/components/CreateLiveStreamButton/CreateLiveStreamButton.d.ts +49 -0
  162. package/lib/esm/components/CreateLiveStreamButton/CreateLiveStreamButton.js +91 -0
  163. package/lib/esm/components/CreateLiveStreamButton/index.d.ts +3 -0
  164. package/lib/esm/components/CreateLiveStreamButton/index.js +2 -0
  165. package/lib/esm/components/CreateLiveStreamDialog/CreateLiveStreamDialog.d.ts +51 -0
  166. package/lib/esm/components/CreateLiveStreamDialog/CreateLiveStreamDialog.js +120 -0
  167. package/lib/esm/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.d.ts +46 -0
  168. package/lib/esm/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.js +163 -0
  169. package/lib/esm/components/CreateLiveStreamDialog/constants.d.ts +1 -0
  170. package/lib/esm/components/CreateLiveStreamDialog/constants.js +1 -0
  171. package/lib/esm/components/CreateLiveStreamDialog/index.d.ts +3 -0
  172. package/lib/esm/components/CreateLiveStreamDialog/index.js +2 -0
  173. package/lib/esm/components/CreateLiveStreamDialog/types.d.ts +8 -0
  174. package/lib/esm/components/CreateLiveStreamDialog/types.js +10 -0
  175. package/lib/esm/components/EditEventButton/EditEventButton.js +1 -1
  176. package/lib/esm/components/Editor/Editor.d.ts +1 -1
  177. package/lib/esm/components/Editor/nodes/HashtagNode.d.ts +1 -1
  178. package/lib/esm/components/Editor/nodes/HashtagNode.js +4 -4
  179. package/lib/esm/components/Editor/nodes/ImageNode.d.ts +1 -1
  180. package/lib/esm/components/Editor/nodes/ImageNode.js +6 -6
  181. package/lib/esm/components/Editor/nodes/MentionNode.d.ts +1 -1
  182. package/lib/esm/components/Editor/nodes/MentionNode.js +4 -4
  183. package/lib/esm/components/Editor/plugins/ApiPlugin.d.ts +1 -1
  184. package/lib/esm/components/Editor/plugins/MentionsPlugin.d.ts +2 -2
  185. package/lib/esm/components/Editor/shared/useDecorators.d.ts +2 -2
  186. package/lib/esm/components/Event/Event.js +1 -1
  187. package/lib/esm/components/EventForm/EventForm.d.ts +7 -12
  188. package/lib/esm/components/EventForm/EventForm.js +56 -56
  189. package/lib/esm/components/EventForm/types.d.ts +5 -5
  190. package/lib/esm/components/EventFormDialog/EventFormDialog.d.ts +48 -0
  191. package/lib/esm/components/EventFormDialog/EventFormDialog.js +53 -0
  192. package/lib/esm/components/EventFormDialog/constants.d.ts +1 -0
  193. package/lib/esm/components/EventFormDialog/constants.js +1 -0
  194. package/lib/esm/components/EventFormDialog/index.d.ts +3 -0
  195. package/lib/esm/components/EventFormDialog/index.js +2 -0
  196. package/lib/esm/components/EventHeader/EventHeader.js +3 -7
  197. package/lib/esm/components/EventInfoWidget/EventInfoWidget.js +6 -4
  198. package/lib/esm/components/EventMediaWidget/EventMediaWidget.d.ts +41 -0
  199. package/lib/esm/components/EventMediaWidget/EventMediaWidget.js +250 -0
  200. package/lib/esm/components/EventMediaWidget/Skeleton.d.ts +2 -0
  201. package/lib/esm/components/EventMediaWidget/Skeleton.js +22 -0
  202. package/lib/esm/components/EventMediaWidget/TriggerButton.d.ts +17 -0
  203. package/lib/esm/components/EventMediaWidget/TriggerButton.js +64 -0
  204. package/lib/esm/components/EventMediaWidget/asUploadButton.d.ts +7 -0
  205. package/lib/esm/components/EventMediaWidget/asUploadButton.js +23 -0
  206. package/lib/esm/components/EventMediaWidget/constants.d.ts +1 -0
  207. package/lib/esm/components/EventMediaWidget/constants.js +1 -0
  208. package/lib/esm/components/EventMediaWidget/index.d.ts +4 -0
  209. package/lib/esm/components/EventMediaWidget/index.js +4 -0
  210. package/lib/esm/components/EventMembersWidget/EventMembersWidget.d.ts +3 -0
  211. package/lib/esm/components/EventMembersWidget/EventMembersWidget.js +18 -13
  212. package/lib/esm/components/EventMembersWidget/types.d.ts +1 -1
  213. package/lib/esm/components/Events/Events.js +16 -7
  214. package/lib/esm/components/Events/LocationEventsFilter.d.ts +14 -0
  215. package/lib/esm/components/Events/LocationEventsFilter.js +41 -0
  216. package/lib/esm/components/Events/PastEventsFilter.js +1 -2
  217. package/lib/esm/components/Feed/Feed.d.ts +2 -2
  218. package/lib/esm/components/Feed/Feed.js +4 -3
  219. package/lib/esm/components/Feed/Skeleton.d.ts +1 -1
  220. package/lib/esm/components/GroupActionsMenu/index.d.ts +57 -0
  221. package/lib/esm/components/GroupActionsMenu/index.js +154 -0
  222. package/lib/esm/components/GroupHeader/GroupHeader.d.ts +6 -0
  223. package/lib/esm/components/GroupHeader/GroupHeader.js +9 -5
  224. package/lib/esm/components/Groups/Groups.js +27 -1
  225. package/lib/esm/components/LiveStreamForm/LiveStreamForm.d.ts +55 -0
  226. package/lib/esm/components/LiveStreamForm/LiveStreamForm.js +153 -0
  227. package/lib/esm/components/LiveStreamForm/constants.d.ts +1 -0
  228. package/lib/esm/components/LiveStreamForm/constants.js +1 -0
  229. package/lib/esm/components/LiveStreamForm/index.d.ts +3 -0
  230. package/lib/esm/components/LiveStreamForm/index.js +2 -0
  231. package/lib/esm/components/LiveStreamForm/types.d.ts +10 -0
  232. package/lib/esm/components/LiveStreamForm/types.js +1 -0
  233. package/lib/esm/components/LiveStreamRoom/LiveStreamRoom.d.ts +48 -0
  234. package/lib/esm/components/LiveStreamRoom/LiveStreamRoom.js +120 -0
  235. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.d.ts +69 -0
  236. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.js +183 -0
  237. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/RecordingIndicator.d.ts +4 -0
  238. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/RecordingIndicator.js +28 -0
  239. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/constants.d.ts +1 -0
  240. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/constants.js +1 -0
  241. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/index.d.ts +3 -0
  242. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/index.js +2 -0
  243. package/lib/esm/components/LiveStreamRoom/constants.d.ts +5 -0
  244. package/lib/esm/components/LiveStreamRoom/constants.js +5 -0
  245. package/lib/esm/components/LiveStreamRoom/index.d.ts +3 -0
  246. package/lib/esm/components/LiveStreamRoom/index.js +2 -0
  247. package/lib/esm/components/LiveStreamRoom/types.d.ts +22 -0
  248. package/lib/esm/components/LiveStreamRoom/types.js +4 -0
  249. package/lib/esm/components/NavigationMenuIconButton/DefaultDrawerContent.js +2 -2
  250. package/lib/esm/components/NavigationMenuIconButton/DefaultHeaderContent.d.ts +1 -1
  251. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuDrawer.d.ts +47 -0
  252. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuDrawer.js +36 -0
  253. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.d.ts +9 -20
  254. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.js +6 -22
  255. package/lib/esm/components/NavigationMenuIconButton/index.d.ts +2 -1
  256. package/lib/esm/components/NavigationMenuIconButton/index.js +2 -1
  257. package/lib/esm/components/NavigationSettingsIconButton/NavigationSettingsIconButton.js +38 -5
  258. package/lib/esm/components/NavigationToolbar/NavigationToolbar.d.ts +5 -0
  259. package/lib/esm/components/NavigationToolbar/NavigationToolbar.js +3 -3
  260. package/lib/esm/components/OnBoardingWidget/ActionsButton.d.ts +7 -0
  261. package/lib/esm/components/OnBoardingWidget/ActionsButton.js +81 -0
  262. package/lib/esm/components/OnBoardingWidget/OnBoardingWidget.d.ts +5 -1
  263. package/lib/esm/components/OnBoardingWidget/OnBoardingWidget.js +99 -26
  264. package/lib/esm/components/OnBoardingWidget/Steps/Appearance/Appearance.js +24 -17
  265. package/lib/esm/components/OnBoardingWidget/Steps/Invite/Invite.js +59 -14
  266. package/lib/esm/components/PlatformWidget/constants.d.ts +0 -4
  267. package/lib/esm/components/PlatformWidget/constants.js +0 -4
  268. package/lib/esm/components/PrivateMessageComponent/Skeleton.d.ts +1 -1
  269. package/lib/esm/components/PrivateMessageThreadItem/PrivateMessageThreadItem.js +1 -3
  270. package/lib/esm/constants/GroupActionsMenu.d.ts +5 -0
  271. package/lib/esm/constants/GroupActionsMenu.js +5 -0
  272. package/lib/esm/constants/LiveStream.d.ts +3 -0
  273. package/lib/esm/constants/LiveStream.js +3 -0
  274. package/lib/esm/constants/PubSub.d.ts +8 -1
  275. package/lib/esm/constants/PubSub.js +8 -0
  276. package/lib/esm/index.d.ts +15 -4
  277. package/lib/esm/index.js +17 -7
  278. package/lib/esm/shared/EventActionsMenu/index.d.ts +1 -1
  279. package/lib/esm/shared/EventActionsMenu/index.js +11 -15
  280. package/lib/esm/shared/EventInfoDetails/index.js +3 -3
  281. package/lib/esm/shared/InfiniteScroll/index.d.ts +1 -1
  282. package/lib/esm/shared/InfiniteScroll/index.js +4 -4
  283. package/lib/esm/shared/Lightbox/BaseLightbox.d.ts +19 -0
  284. package/lib/esm/shared/Lightbox/BaseLightbox.js +33 -0
  285. package/lib/esm/shared/Lightbox/Lightbox.d.ts +31 -17
  286. package/lib/esm/shared/Lightbox/Lightbox.js +15 -19
  287. package/lib/esm/shared/Lightbox/constants.d.ts +1 -0
  288. package/lib/esm/shared/Lightbox/constants.js +1 -0
  289. package/lib/esm/shared/Lightbox/index.d.ts +4 -2
  290. package/lib/esm/shared/Lightbox/index.js +3 -1
  291. package/lib/esm/shared/Media/File/DisplayComponent.js +23 -6
  292. package/lib/esm/shared/Media/File/asUploadButton.d.ts +1 -1
  293. package/lib/esm/shared/Media/Link/DisplayComponent.js +5 -5
  294. package/lib/esm/shared/Media/Link/UrlTextField/index.d.ts +1 -1
  295. package/lib/esm/shared/MediaChunkUploader/index.js +14 -12
  296. package/lib/esm/shared/MetadataField/MetadataField.d.ts +1 -1
  297. package/lib/esm/shared/StickyBox/index.d.ts +4 -4
  298. package/lib/esm/shared/UsernameTextField/index.d.ts +1 -1
  299. package/lib/esm/types/composer.d.ts +1 -1
  300. package/lib/esm/utils/events.d.ts +2 -0
  301. package/lib/esm/utils/events.js +6 -0
  302. package/lib/esm/utils/hash.d.ts +2 -1
  303. package/lib/esm/utils/liveStream.d.ts +4 -0
  304. package/lib/esm/utils/liveStream.js +18 -0
  305. package/lib/esm/utils/widget.d.ts +1 -0
  306. package/lib/esm/utils/widget.js +14 -0
  307. package/lib/umd/245.js +1 -0
  308. package/lib/umd/43.js +2 -0
  309. package/lib/umd/react-ui.js +1 -1
  310. package/lib/umd/react-ui.js.LICENSE.txt +2 -0
  311. package/package.json +22 -10
  312. package/lib/cjs/shared/Media/File/Lightbox/index.d.ts +0 -28
  313. package/lib/cjs/shared/Media/File/Lightbox/index.js +0 -37
  314. package/lib/esm/shared/Media/File/Lightbox/index.d.ts +0 -28
  315. package/lib/esm/shared/Media/File/Lightbox/index.js +0 -34
  316. package/lib/umd/99.js +0 -2
  317. /package/lib/umd/{99.js.LICENSE.txt → 43.js.LICENSE.txt} +0 -0
@@ -0,0 +1,250 @@
1
+ import { __rest } from "tslib";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { LoadingButton } from '@mui/lab';
4
+ import { Button, CardActions, CardContent, CardHeader, Divider, Icon, Stack, Tooltip, Typography, useMediaQuery, useTheme } from '@mui/material';
5
+ import { styled } from '@mui/material/styles';
6
+ import { Box, useThemeProps } from '@mui/system';
7
+ import { Endpoints, EventService, http } from '@selfcommunity/api-services';
8
+ import { SCCache, useSCFetchEvent, useSCUser } from '@selfcommunity/react-core';
9
+ import { CacheStrategies, Logger } from '@selfcommunity/utils';
10
+ import { Fragment, useCallback, useEffect, useMemo, useReducer, useState } from 'react';
11
+ import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
12
+ import { SCOPE_SC_UI } from '../../constants/Errors';
13
+ import { DEFAULT_PAGINATION_LIMIT, DEFAULT_PAGINATION_OFFSET } from '../../constants/Pagination';
14
+ import BaseDialog from '../../shared/BaseDialog';
15
+ import ConfirmDialog from '../../shared/ConfirmDialog/ConfirmDialog';
16
+ import HiddenPlaceholder from '../../shared/HiddenPlaceholder';
17
+ import InfiniteScroll from '../../shared/InfiniteScroll';
18
+ import { Lightbox } from '../../shared/Lightbox';
19
+ import { actionWidgetTypes, dataWidgetReducer, stateWidgetInitializer } from '../../utils/widget';
20
+ import Widget from '../Widget';
21
+ import { PREFIX } from './constants';
22
+ import SkeletonComponent, { EventMediaSkeleton } from './Skeleton';
23
+ import TriggerButton from './TriggerButton';
24
+ const messages = defineMessages({
25
+ title: {
26
+ id: 'ui.eventMediaWidget.title',
27
+ defaultMessage: 'ui.eventMediaWidget.title'
28
+ }
29
+ });
30
+ const MEDIAS_TO_SHOW = 9;
31
+ const classes = {
32
+ root: `${PREFIX}-root`,
33
+ header: `${PREFIX}-header`,
34
+ grid: `${PREFIX}-grid`,
35
+ media: `${PREFIX}-media`,
36
+ mediaLayer: `${PREFIX}-media-layer`,
37
+ countHiddenMediaWrapper: `${PREFIX}-count-hidden-media-wrapper`,
38
+ countHiddenMedia: `${PREFIX}-count-hidden-media`,
39
+ content: `${PREFIX}-content`,
40
+ actions: `${PREFIX}-actions`,
41
+ dialogRoot: `${PREFIX}-dialog-root`,
42
+ dialogInfiniteScroll: `${PREFIX}-dialog-infinite-scroll`,
43
+ dialogMediaWrapper: `${PREFIX}-dialog-media-wrapper`,
44
+ dialogButtonWrapper: `${PREFIX}-dialog-button-wrapper`,
45
+ dialogLoadingButton: `${PREFIX}-dialog-loading-button`,
46
+ endMessage: `${PREFIX}-end-message`
47
+ };
48
+ const Root = styled(Widget, {
49
+ name: PREFIX,
50
+ slot: 'Root',
51
+ overridesResolver: (_props, styles) => styles.root,
52
+ shouldForwardProp: (prop) => prop !== 'showPadding'
53
+ })(() => ({}));
54
+ const DialogRoot = styled(BaseDialog, {
55
+ name: PREFIX,
56
+ slot: 'DialogRoot',
57
+ overridesResolver: (_props, styles) => styles.dialogRoot,
58
+ shouldForwardProp: (prop) => prop !== 'loading'
59
+ })(() => ({}));
60
+ export default function EventMediaWidget(inProps) {
61
+ // PROPS
62
+ const props = useThemeProps({
63
+ props: inProps,
64
+ name: PREFIX
65
+ });
66
+ // CONST
67
+ const { event, eventId, limit = DEFAULT_PAGINATION_LIMIT, endpointQueryParams = {
68
+ limit,
69
+ offset: DEFAULT_PAGINATION_OFFSET
70
+ }, cacheStrategy = CacheStrategies.CACHE_FIRST, dialogProps } = props, rest = __rest(props, ["event", "eventId", "limit", "endpointQueryParams", "cacheStrategy", "dialogProps"]);
71
+ // HOOKS
72
+ const { scEvent } = useSCFetchEvent({ id: eventId, event });
73
+ const intl = useIntl();
74
+ const theme = useTheme();
75
+ const isMobile = useMediaQuery(theme.breakpoints.down('md'));
76
+ // STATE
77
+ const [state, dispatch] = useReducer(dataWidgetReducer, {
78
+ isLoadingNext: false,
79
+ next: null,
80
+ cacheKey: SCCache.getWidgetStateCacheKey(SCCache.EVENT_MEDIA_STATE_CACHE_PREFIX_KEY, event ? event.id : eventId),
81
+ cacheStrategy,
82
+ visibleItems: limit
83
+ }, stateWidgetInitializer);
84
+ const [medias, setMedias] = useState(state.results);
85
+ const [mediasCount, setMediasCount] = useState(state.count);
86
+ const [openDialog, setOpenDialog] = useState(false);
87
+ const [openDialogConfirm, setOpenDialogConfirm] = useState(false);
88
+ const [mediaId, setMediaId] = useState(null);
89
+ const [preview, setPreview] = useState(-1);
90
+ const [loading, setLoading] = useState(false);
91
+ const [showSkeleton, setShowSkeleton] = useState(null);
92
+ // CONTEXT
93
+ const scUserContext = useSCUser();
94
+ // CONSTS
95
+ const hasAllow = useMemo(() => { var _a; return ((_a = scUserContext.user) === null || _a === void 0 ? void 0 : _a.id) === (scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by.id); }, [scUserContext, scEvent]);
96
+ const countHiddenMedia = useMemo(() => mediasCount - MEDIAS_TO_SHOW, [mediasCount]);
97
+ const _fetchNext = useCallback((index) => {
98
+ if (mediasCount > medias.length && index >= 6 && !state.isLoadingNext && state.next) {
99
+ setPreview(index);
100
+ dispatch({ type: actionWidgetTypes.LOADING_NEXT });
101
+ http
102
+ .request({
103
+ url: state.next,
104
+ method: Endpoints.GetEventPhotoGallery.method
105
+ })
106
+ .then((res) => {
107
+ dispatch({ type: actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
108
+ setMedias((prev) => [...prev, ...res.data.results]);
109
+ setMediasCount(res.data.count);
110
+ })
111
+ .catch((error) => {
112
+ dispatch({ type: actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
113
+ Logger.error(SCOPE_SC_UI, error);
114
+ });
115
+ }
116
+ }, [state.next, state.isLoadingNext, medias, mediasCount, dispatch, setPreview]);
117
+ const handleOpenLightbox = useCallback((index) => {
118
+ setPreview(index);
119
+ }, [setPreview]);
120
+ const handleCloseLightbox = useCallback(() => {
121
+ setPreview(-1);
122
+ }, [setPreview]);
123
+ const handleToggleDialogOpen = useCallback(() => {
124
+ setOpenDialog((prev) => !prev);
125
+ }, [setOpenDialog]);
126
+ const handleNext = useCallback(() => {
127
+ setShowSkeleton('dialog');
128
+ dispatch({ type: actionWidgetTypes.LOADING_NEXT });
129
+ http
130
+ .request({
131
+ url: state.next,
132
+ method: Endpoints.GetEventPhotoGallery.method
133
+ })
134
+ .then((res) => {
135
+ dispatch({ type: actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
136
+ setMedias((prev) => [...prev, ...res.data.results]);
137
+ setMediasCount(res.data.count);
138
+ setShowSkeleton(null);
139
+ })
140
+ .catch((error) => {
141
+ dispatch({ type: actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
142
+ Logger.error(SCOPE_SC_UI, error);
143
+ });
144
+ }, [state.next, state.isLoadingNext, state.initialized, dispatch, setMedias, setMediasCount, setShowSkeleton]);
145
+ const handleRemoveMedia = useCallback((id) => {
146
+ if (hasAllow) {
147
+ setMediaId(id);
148
+ setOpenDialogConfirm(true);
149
+ }
150
+ }, [setMediaId, setOpenDialogConfirm]);
151
+ const handleConfirmAction = useCallback(() => {
152
+ setLoading(true);
153
+ http
154
+ .request({
155
+ url: Endpoints.RemoveMediasFromEventPhotoGallery.url({ id: scEvent.id }),
156
+ method: Endpoints.RemoveMediasFromEventPhotoGallery.method,
157
+ data: { medias: [mediaId] }
158
+ })
159
+ .then(() => {
160
+ setMedias((prev) => prev.filter((media) => media.id !== mediaId));
161
+ setMediasCount((prev) => prev - 1);
162
+ setMediaId(null);
163
+ setLoading(false);
164
+ setOpenDialogConfirm(false);
165
+ })
166
+ .catch((error) => {
167
+ Logger.error(SCOPE_SC_UI, error);
168
+ });
169
+ }, [scEvent, mediaId, setMedias, setLoading, setOpenDialogConfirm, dispatch, setMediasCount]);
170
+ const handleCloseAction = useCallback(() => {
171
+ setMediaId(null);
172
+ setOpenDialogConfirm(false);
173
+ }, [setMediaId, setOpenDialogConfirm]);
174
+ const handleAddMedia = useCallback((media) => {
175
+ setShowSkeleton('widget');
176
+ http
177
+ .request({
178
+ url: Endpoints.AddMediaToEventPhotoGallery.url({ id: scEvent.id }),
179
+ method: Endpoints.AddMediaToEventPhotoGallery.method,
180
+ data: { media: media.id }
181
+ })
182
+ .then((res) => {
183
+ setMedias((prev) => [res.data, ...prev]);
184
+ setMediasCount((prev) => prev + 1);
185
+ setShowSkeleton(null);
186
+ })
187
+ .catch((error) => {
188
+ Logger.error(SCOPE_SC_UI, error);
189
+ });
190
+ }, [scEvent, setMedias, setMediasCount, setShowSkeleton]);
191
+ // EFFECTS
192
+ useEffect(() => {
193
+ let _t;
194
+ if (scUserContext.user &&
195
+ scEvent &&
196
+ !state.initialized &&
197
+ Boolean((eventId !== undefined && scEvent.id === eventId) || (event && scEvent.id === event.id))) {
198
+ _t = setTimeout(_initComponent);
199
+ return () => {
200
+ clearTimeout(_t);
201
+ };
202
+ }
203
+ }, [scUserContext.user, scEvent, state.initialized]);
204
+ useEffect(() => {
205
+ if (state.initialized && scEvent && Boolean((eventId !== undefined && scEvent.id !== eventId) || (event && scEvent.id !== event.id))) {
206
+ dispatch({ type: actionWidgetTypes.RESET, payload: {} });
207
+ }
208
+ }, [state.initialized, scEvent, eventId, event]);
209
+ /**
210
+ * Initialize component
211
+ * Fetch data only if the component is not initialized and it is not loading data
212
+ */
213
+ const _initComponent = useCallback(() => {
214
+ if (!state.isLoadingNext) {
215
+ dispatch({ type: actionWidgetTypes.LOADING_NEXT });
216
+ EventService.getEventPhotoGallery(scEvent.id, Object.assign({}, endpointQueryParams))
217
+ .then((payload) => {
218
+ dispatch({ type: actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
219
+ setMedias(payload.results);
220
+ setMediasCount(payload.count);
221
+ })
222
+ .catch((error) => {
223
+ dispatch({ type: actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
224
+ Logger.error(SCOPE_SC_UI, error);
225
+ });
226
+ }
227
+ }, [state.isLoadingNext, scEvent, eventId, dispatch, setMedias, setMediasCount]);
228
+ useEffect(() => {
229
+ if (isMobile && openDialog && state.next) {
230
+ handleNext();
231
+ }
232
+ }, [isMobile, openDialog, state.next]);
233
+ // RENDER
234
+ if (!scEvent ||
235
+ !state.initialized ||
236
+ (scEvent && ((eventId !== undefined && scEvent.id !== eventId) || (event && scEvent.id !== event.id))) ||
237
+ (state.isLoadingNext && !state.initialized)) {
238
+ return _jsx(SkeletonComponent, {});
239
+ }
240
+ if (state.initialized && state.count === 0 && !hasAllow) {
241
+ return _jsx(HiddenPlaceholder, {});
242
+ }
243
+ return (_jsxs(Root, Object.assign({ className: classes.root }, rest, { showPadding: hasAllow }, { children: [_jsx(CardHeader, { title: _jsxs(Stack, Object.assign({ direction: "row", justifyContent: "space-between", alignItems: "center" }, { children: [_jsx(Typography, Object.assign({ variant: "h5" }, { children: _jsx(FormattedMessage, { id: "ui.eventMediaWidget.title", defaultMessage: "ui.eventMediaWidget.title" }) })), hasAllow && mediasCount > 0 && _jsx(TriggerButton, { size: "small", onAdd: handleAddMedia })] })), className: classes.header }), _jsx(Divider, {}), _jsxs(CardContent, Object.assign({ className: classes.content }, { children: [_jsxs(Box, Object.assign({ className: classes.grid }, { children: [showSkeleton === 'widget' && _jsx(EventMediaSkeleton, {}), medias.slice(0, MEDIAS_TO_SHOW).map((media, i, array) => (_jsx(Box, Object.assign({ onClick: () => handleOpenLightbox(i), sx: {
244
+ background: `url(${media.image}) no-repeat center`
245
+ }, className: classes.media }, { children: medias.length > array.length && i === array.length - 1 && (_jsxs(Fragment, { children: [_jsx(Box, { className: classes.mediaLayer }), _jsx(Box, Object.assign({ className: classes.countHiddenMediaWrapper }, { children: _jsxs(Typography, Object.assign({ className: classes.countHiddenMedia }, { children: ["+", countHiddenMedia] })) }))] })) }), media.id))), hasAllow && mediasCount === 0 && (_jsx(Tooltip, Object.assign({ title: _jsx(FormattedMessage, { id: "ui.eventMediaWidget.add", defaultMessage: "ui.eventMediaWidget.add" }) }, { children: _jsx(TriggerButton, { size: "large", onAdd: handleAddMedia, isSquare: true }) })))] })), preview !== -1 && _jsx(Lightbox, { onClose: handleCloseLightbox, index: preview, medias: medias, onIndexChange: _fetchNext })] })), hasAllow && mediasCount > 0 && (_jsx(CardActions, Object.assign({ className: classes.actions }, { children: _jsx(Button, Object.assign({ onClick: handleToggleDialogOpen }, { children: _jsx(Typography, Object.assign({ variant: "caption" }, { children: _jsx(FormattedMessage, { id: "ui.eventMediaWidget.showAll", defaultMessage: "ui.eventMediaWidget.showAll" }) })) })) }))), openDialog && (_jsx(DialogRoot, Object.assign({ className: classes.dialogRoot, title: intl.formatMessage(messages.title, { user: scEvent.managed_by.username }), onClose: handleToggleDialogOpen, open: openDialog }, dialogProps, { children: _jsx(InfiniteScroll, Object.assign({ dataLength: medias.length, height: isMobile ? '100%' : '515px', next: handleNext, hasMoreNext: Boolean(state.next), className: classes.dialogInfiniteScroll, endMessage: _jsx(Typography, Object.assign({ className: classes.endMessage }, { children: _jsx(FormattedMessage, { id: "ui.eventMediaWidget.noMoreResults", defaultMessage: "ui.eventMediaWidget.noMoreResults" }) })) }, { children: _jsxs(Box, Object.assign({ className: classes.grid }, { children: [medias.map((media) => (_jsx(Box, Object.assign({ sx: {
246
+ background: `url(${media.image}) no-repeat center`
247
+ }, className: classes.dialogMediaWrapper }, { children: _jsx(Stack, Object.assign({ className: classes.dialogButtonWrapper }, { children: _jsx(LoadingButton, Object.assign({ className: classes.dialogLoadingButton, loading: mediaId === media.id, size: "large", onClick: () => handleRemoveMedia(media.id), sx: {
248
+ color: (theme) => (mediaId === media.id ? 'transparent' : theme.palette.common.white)
249
+ } }, { children: _jsx(Icon, Object.assign({ fontSize: "inherit" }, { children: "delete" })) })) })) }), media.id))), showSkeleton === 'dialog' && Array.from(Array(countHiddenMedia)).map((_, i) => _jsx(EventMediaSkeleton, {}, i))] })) })) }))), openDialogConfirm && (_jsx(ConfirmDialog, { open: openDialogConfirm, title: _jsx(FormattedMessage, { id: "ui.eventMediaWidget.dialog.title", defaultMessage: "ui.eventMediaWidget.dialog.title" }), content: _jsx(FormattedMessage, { id: "ui.eventMediaWidget.dialog.msg", defaultMessage: "ui.eventMediaWidget.dialog.msg" }), btnConfirm: _jsx(FormattedMessage, { id: "ui.eventMediaWidget.dialog.confirm", defaultMessage: "ui.eventMediaWidget.dialog.confirm" }), isUpdating: loading, onConfirm: handleConfirmAction, onClose: handleCloseAction }))] })));
250
+ }
@@ -0,0 +1,2 @@
1
+ export default function EventMediaWidgetSkeleton(): JSX.Element;
2
+ export declare function EventMediaSkeleton(): JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, CardContent, CardHeader, Divider } from '@mui/material';
3
+ import Skeleton from '@mui/material/Skeleton';
4
+ import { styled } from '@mui/material/styles';
5
+ import Widget from '../Widget';
6
+ import { PREFIX } from './constants';
7
+ const classes = {
8
+ root: `${PREFIX}-skeleton-root`,
9
+ grid: `${PREFIX}-grid`,
10
+ media: `${PREFIX}-media`
11
+ };
12
+ const Root = styled(Widget, {
13
+ name: PREFIX,
14
+ slot: 'SkeletonRoot',
15
+ overridesResolver: (_props, styles) => styles.skeletonRoot
16
+ })(() => ({}));
17
+ export default function EventMediaWidgetSkeleton() {
18
+ return (_jsxs(Root, Object.assign({ className: classes.root }, { children: [_jsx(CardHeader, { title: _jsx(Skeleton, { animation: "wave", width: "50px", height: "23px" }) }), _jsx(Divider, {}), _jsx(CardContent, { children: _jsx(Box, Object.assign({ className: classes.grid }, { children: Array.from(Array(9)).map((_, i) => (_jsx(EventMediaSkeleton, {}, i))) })) })] })));
19
+ }
20
+ export function EventMediaSkeleton() {
21
+ return _jsx(Skeleton, { variant: "rectangular", animation: "wave", width: "100%", className: classes.media });
22
+ }
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { LoadingButtonProps } from '@mui/lab';
3
+ import { SCMediaType } from '@selfcommunity/types';
4
+ export interface TriggerIconButtonProps extends LoadingButtonProps {
5
+ /**
6
+ * Callback triggered when a media is added
7
+ * @param media
8
+ */
9
+ onAdd?: (media: SCMediaType) => void | null;
10
+ /**
11
+ * Prop to change shape
12
+ * @default false
13
+ */
14
+ isSquare?: boolean;
15
+ }
16
+ declare const _default: import("react").ForwardRefExoticComponent<Pick<TriggerIconButtonProps, "id" | "role" | "className" | "style" | "classes" | "form" | "slot" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | "variant" | "name" | "type" | "href" | "autoFocus" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "value" | "action" | "loading" | "size" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableElevation" | "disableFocusRipple" | "endIcon" | "fullWidth" | "startIcon" | "loadingIndicator" | "loadingPosition" | "onAdd" | "isSquare"> & import("react").RefAttributes<HTMLButtonElement>>;
17
+ export default _default;
@@ -0,0 +1,64 @@
1
+ import { __rest } from "tslib";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { LoadingButton } from '@mui/lab';
4
+ import { Stack, Typography } from '@mui/material';
5
+ import Icon from '@mui/material/Icon';
6
+ import { styled } from '@mui/material/styles';
7
+ import ChunkedUploady from '@rpldy/chunked-uploady';
8
+ import { Endpoints } from '@selfcommunity/api-services';
9
+ import classNames from 'classnames';
10
+ import { useSnackbar } from 'notistack';
11
+ import { forwardRef, useCallback, useState } from 'react';
12
+ import { FormattedMessage } from 'react-intl';
13
+ import MediaChunkUploader from '../../shared/MediaChunkUploader';
14
+ import asUploadButton from './asUploadButton';
15
+ import { PREFIX } from './constants';
16
+ const classes = {
17
+ triggerRoot: `${PREFIX}-trigger-root`,
18
+ triggerContent: `${PREFIX}-trigger-content`,
19
+ triggerIcon: `${PREFIX}-trigger-icon`
20
+ };
21
+ const Root = styled(LoadingButton, {
22
+ name: PREFIX,
23
+ slot: 'TriggerRoot',
24
+ overridesResolver: (_props, styles) => styles.triggerRoot,
25
+ shouldForwardProp: (prop) => prop !== 'isSquare'
26
+ })(() => ({}));
27
+ const GalleryUploadStack = asUploadButton(forwardRef((props, ref) => _jsx(Stack, Object.assign({}, props, { "aria-label": "upload", ref: ref }))), { accept: 'image/*' });
28
+ function TriggerButton(props, ref) {
29
+ // PROPS
30
+ const { className, onAdd = null, isSquare = false } = props, rest = __rest(props, ["className", "onAdd", "isSquare"]);
31
+ // STATE
32
+ const [isUploading, setIsUploading] = useState(false);
33
+ // HOOKS
34
+ const { enqueueSnackbar, closeSnackbar } = useSnackbar();
35
+ const handleFilterByMime = useCallback((file) => {
36
+ return file.type.startsWith('image/');
37
+ }, []);
38
+ const handleSuccess = useCallback((media) => {
39
+ onAdd === null || onAdd === void 0 ? void 0 : onAdd(media);
40
+ }, []);
41
+ const handleProgress = useCallback((chunks) => {
42
+ setIsUploading(Object.keys(chunks).length > 0);
43
+ }, []);
44
+ const handleError = useCallback((chunk, error) => {
45
+ const _snackBar = enqueueSnackbar(`${chunk.name}: ${error}`, {
46
+ variant: 'error',
47
+ anchorOrigin: { horizontal: 'center', vertical: 'top' },
48
+ autoHideDuration: 2000,
49
+ SnackbarProps: {
50
+ onClick: () => {
51
+ closeSnackbar(_snackBar);
52
+ }
53
+ }
54
+ });
55
+ }, [enqueueSnackbar]);
56
+ return (_jsxs(ChunkedUploady, Object.assign({ destination: {
57
+ url: Endpoints.ComposerChunkUploadMedia.url(),
58
+ method: Endpoints.ComposerChunkUploadMedia.method
59
+ }, fileFilter: handleFilterByMime, chunkSize: 204800 }, { children: [_jsx(MediaChunkUploader, { onSuccess: handleSuccess, onProgress: handleProgress, onError: handleError, type: "image" }), _jsx(Root, Object.assign({ className: classNames(className, classes.triggerRoot), ref: ref }, rest, { "aria-label": "add media", loading: isUploading,
60
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
61
+ // @ts-ignore
62
+ isSquare: isSquare }, { children: _jsxs(GalleryUploadStack, Object.assign({ className: classes.triggerContent }, { children: [!isSquare && (_jsx(Typography, Object.assign({ variant: "caption", component: "p" }, { children: _jsx(FormattedMessage, { id: "ui.eventMediaWidget.add", defaultMessage: "ui.eventMediaWidget.add" }) }))), _jsx(Icon, Object.assign({ className: classes.triggerIcon }, { children: "add" }))] })) }))] })));
63
+ }
64
+ export default forwardRef(TriggerButton);
@@ -0,0 +1,7 @@
1
+ import { UploadButtonProps } from '@rpldy/upload-button';
2
+ import type { ComponentType } from 'react';
3
+ type FileInputProps = {
4
+ accept: string;
5
+ };
6
+ declare const asUploadButton: (Component: ComponentType<any>, inputProps: FileInputProps) => import("react").ForwardRefExoticComponent<Pick<UploadButtonProps<Element>, "id" | "className" | "text" | "children" | "onClick" | "method" | "headers" | "paramName" | "params" | "forceJsonResponse" | "withCredentials" | "formatGroupParamName" | "sendWithFormData" | "formDataAllowUndefined" | "formatServerResponse" | "isSuccessfulCall" | "destination" | "fileFilter" | "autoUpload" | "clearPendingOnAdd" | "grouped" | "maxGroupSize" | "inputFieldName" | "fastAbortThreshold" | "userData" | "extraProps"> & import("react").RefAttributes<any>>;
7
+ export default asUploadButton;
@@ -0,0 +1,23 @@
1
+ import { __rest } from "tslib";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { markAsUploadOptionsComponent, useUploadyContext } from '@rpldy/shared-ui';
4
+ import { forwardRef, useCallback, useRef } from 'react';
5
+ const asUploadButton = (Component, inputProps) => {
6
+ const AsUploadButton = (props, ref) => {
7
+ const { showFileUpload, getInternalFileInput } = useUploadyContext();
8
+ const { id, className, text, children, extraProps, onClick } = props, uploadOptions = __rest(props, ["id", "className", "text", "children", "extraProps", "onClick"]);
9
+ //using ref so onButtonClick can stay memoized
10
+ const uploadOptionsRef = useRef();
11
+ uploadOptionsRef.current = uploadOptions;
12
+ const onButtonClick = useCallback((e) => {
13
+ const input = getInternalFileInput();
14
+ input.current.accept = inputProps.accept;
15
+ showFileUpload(uploadOptionsRef.current);
16
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
17
+ }, [getInternalFileInput, showFileUpload, uploadOptionsRef, onClick]);
18
+ return _jsx(Component, Object.assign({ ref: ref, onClick: onButtonClick, id: id, className: className, children: children || text || 'Upload' }, extraProps));
19
+ };
20
+ markAsUploadOptionsComponent(AsUploadButton);
21
+ return forwardRef(AsUploadButton);
22
+ };
23
+ export default asUploadButton;
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCEventMediaWidget";
@@ -0,0 +1 @@
1
+ export const PREFIX = 'SCEventMediaWidget';
@@ -0,0 +1,4 @@
1
+ import EventMediaWidget, { EventMediaWidgetProps } from './EventMediaWidget';
2
+ import EventMediaWidgetSkeleton from './Skeleton';
3
+ export default EventMediaWidget;
4
+ export { EventMediaWidgetSkeleton, type EventMediaWidgetProps };
@@ -0,0 +1,4 @@
1
+ import EventMediaWidget from './EventMediaWidget';
2
+ import EventMediaWidgetSkeleton from './Skeleton';
3
+ export default EventMediaWidget;
4
+ export { EventMediaWidgetSkeleton };
@@ -35,6 +35,9 @@ export interface EventMembersWidgetProps extends WidgetProps {
35
35
  * @default {}
36
36
  */
37
37
  dialogProps?: BaseDialogProps;
38
+ /**
39
+ * Limit items
40
+ */
38
41
  limit?: number;
39
42
  /**
40
43
  * Other props
@@ -11,7 +11,6 @@ import { FormattedMessage } from 'react-intl';
11
11
  import 'swiper/css';
12
12
  import { SCOPE_SC_UI } from '../../constants/Errors';
13
13
  import { DEFAULT_PAGINATION_OFFSET } from '../../constants/Pagination';
14
- import HiddenPlaceholder from '../../shared/HiddenPlaceholder';
15
14
  import { actionWidgetTypes, dataWidgetReducer, stateWidgetInitializer } from '../../utils/widget';
16
15
  import Widget from '../Widget';
17
16
  import { PREFIX } from './constants';
@@ -60,10 +59,10 @@ export default function EventMembersWidget(inProps) {
60
59
  cacheStrategy,
61
60
  visibleItems: limit
62
61
  }, stateWidgetInitializer);
63
- const [participantsCount, setParticipantsCount] = useState(0);
64
- const [invitedCount, setInvitedCount] = useState(0);
65
- const [requestsCount, setRequestsCount] = useState(0);
66
- const [requestsUsers, setRequestsUsers] = useState([]);
62
+ const [participantsCount, setParticipantsCount] = useState(participants.count);
63
+ const [invitedCount, setInvitedCount] = useState(invited.count);
64
+ const [requestsCount, setRequestsCount] = useState(requests.count);
65
+ const [requestsUsers, setRequestsUsers] = useState(requests.results);
67
66
  const [tabValue, setTabValue] = useState(TabContentEnum.PARTICIPANTS);
68
67
  const [refresh, setRefresh] = useState(null);
69
68
  // CONTEXT
@@ -97,7 +96,7 @@ export default function EventMembersWidget(inProps) {
97
96
  Logger.error(SCOPE_SC_UI, error);
98
97
  });
99
98
  }
100
- }, [participants.isLoadingNext, participants.initialized, scEvent]);
99
+ }, [participants.isLoadingNext, participants.initialized, scEvent, dispatchParticipants, setParticipantsCount]);
101
100
  const _initInvited = useCallback(() => {
102
101
  if (!invited.initialized && !invited.isLoadingNext && hasAllow) {
103
102
  dispatchInvited({ type: actionWidgetTypes.LOADING_NEXT });
@@ -111,7 +110,7 @@ export default function EventMembersWidget(inProps) {
111
110
  Logger.error(SCOPE_SC_UI, error);
112
111
  });
113
112
  }
114
- }, [invited.isLoadingNext, invited.initialized, scUserContext.user, scEvent]);
113
+ }, [invited.isLoadingNext, invited.initialized, scEvent, dispatchInvited, setInvitedCount]);
115
114
  const _initRequests = useCallback(() => {
116
115
  if (!requests.initialized && !requests.isLoadingNext && hasAllow) {
117
116
  dispatchRequests({ type: actionWidgetTypes.LOADING_NEXT });
@@ -126,7 +125,7 @@ export default function EventMembersWidget(inProps) {
126
125
  Logger.error(SCOPE_SC_UI, error);
127
126
  });
128
127
  }
129
- }, [requests.isLoadingNext, requests.initialized, scUserContext.user, scEvent]);
128
+ }, [requests.isLoadingNext, requests.initialized, scEvent, dispatchRequests, setRequestsCount, setRequestsUsers]);
130
129
  // EFFECTS
131
130
  useEffect(() => {
132
131
  let _t;
@@ -151,6 +150,13 @@ export default function EventMembersWidget(inProps) {
151
150
  };
152
151
  }
153
152
  }, [scUserContext.user, scEvent, refresh]);
153
+ useEffect(() => {
154
+ if (participants.initialized && scEvent && Boolean((eventId !== undefined && scEvent.id !== eventId) || (event && scEvent.id !== event.id))) {
155
+ dispatchParticipants({ type: actionWidgetTypes.RESET, payload: {} });
156
+ dispatchRequests({ type: actionWidgetTypes.RESET, payload: {} });
157
+ dispatchInvited({ type: actionWidgetTypes.RESET, payload: {} });
158
+ }
159
+ }, [participants.initialized, scEvent, eventId, event]);
154
160
  // HANDLERS
155
161
  const handleTabChange = useCallback((_evt, newTabValue) => {
156
162
  setTabValue(newTabValue);
@@ -164,13 +170,12 @@ export default function EventMembersWidget(inProps) {
164
170
  }
165
171
  setRefresh(_tabValue);
166
172
  }, []);
167
- if (!scEvent && !participants.initialized) {
173
+ if (!scEvent ||
174
+ !participants.initialized ||
175
+ (scEvent && ((eventId !== undefined && scEvent.id !== eventId) || (event && scEvent.id !== event.id))) ||
176
+ (tabValue === TabContentEnum.PARTICIPANTS && participants.isLoadingNext && !participants.initialized)) {
168
177
  return _jsx(Skeleton, {});
169
178
  }
170
- // RENDER
171
- if (!scEvent) {
172
- return _jsx(HiddenPlaceholder, {});
173
- }
174
179
  return (_jsx(Root, Object.assign({ className: classes.root }, rest, { children: _jsxs(CardContent, Object.assign({ className: classes.content }, { children: [_jsx(Typography, Object.assign({ variant: "h5", className: classes.title }, { children: _jsx(FormattedMessage, { id: title, defaultMessage: title }) })), _jsxs(TabContext, Object.assign({ value: tabValue }, { children: [_jsxs(TabList, Object.assign({ className: classes.tabsWrapper, onChange: handleTabChange, textColor: "primary", indicatorColor: "primary", variant: "fullWidth" }, { children: [_jsx(Tab, { label: _jsxs(Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [_jsx(Typography, Object.assign({ variant: "h3" }, { children: participantsCount })), _jsx(Typography, Object.assign({ variant: "subtitle2" }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.participants", defaultMessage: "ui.eventMembersWidget.participants" }) }))] })), value: TabContentEnum.PARTICIPANTS }), hasAllow && (_jsx(Tab, { label: _jsxs(Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [_jsx(Typography, Object.assign({ variant: "h3" }, { children: invitedCount })), _jsx(Typography, Object.assign({ variant: "subtitle2" }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.invited", defaultMessage: "ui.eventMembersWidget.invited" }) }))] })), value: TabContentEnum.INVITED })), hasAllow && (_jsx(Tab, { label: _jsxs(Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [_jsx(Typography, Object.assign({ variant: "h3" }, { children: requestsCount })), _jsx(Typography, Object.assign({ variant: "subtitle2" }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.requests", defaultMessage: "ui.eventMembersWidget.requests" }) }))] })), value: TabContentEnum.REQUESTS }))] })), _jsx(TabPanel, Object.assign({ value: TabContentEnum.PARTICIPANTS, className: classes.tabPanel }, { children: _jsx(TabContentComponent, { tabValue: TabContentEnum.PARTICIPANTS, state: participants, dispatch: dispatchParticipants, userProps: userProps, dialogProps: dialogProps, handleRefresh: handleRefresh }) })), hasAllow && (_jsx(TabPanel, Object.assign({ value: TabContentEnum.INVITED, className: classes.tabPanel }, { children: _jsx(TabContentComponent, { tabValue: TabContentEnum.INVITED, state: invited, dispatch: dispatchInvited, userProps: userProps, dialogProps: dialogProps, actionProps: {
175
180
  scEvent,
176
181
  setCount: setInvitedCount
@@ -1,4 +1,4 @@
1
- export declare type TabContentType = '1' | '2' | '3';
1
+ export type TabContentType = '1' | '2' | '3';
2
2
  export declare enum TabContentEnum {
3
3
  PARTICIPANTS = "1",
4
4
  INVITED = "2",
@@ -5,7 +5,7 @@ import { styled } from '@mui/material/styles';
5
5
  import { useThemeProps } from '@mui/system';
6
6
  import { Endpoints, http } from '@selfcommunity/api-services';
7
7
  import { SCPreferences, SCPreferencesContext, SCUserContext, UserUtils } from '@selfcommunity/react-core';
8
- import { SCEventDateFilterType, SCEventSubscriptionStatusType } from '@selfcommunity/types';
8
+ import { SCEventDateFilterType, SCEventSubscriptionStatusType, SCEventLocationFilterType } from '@selfcommunity/types';
9
9
  import { Logger } from '@selfcommunity/utils';
10
10
  import classNames from 'classnames';
11
11
  import { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
@@ -19,6 +19,7 @@ import { PREFIX } from './constants';
19
19
  import PastEventsFilter from './PastEventsFilter';
20
20
  import PubSub from 'pubsub-js';
21
21
  import { SCGroupEventType, SCTopicType } from '../../constants/PubSub';
22
+ import LocationEventsFilter from './LocationEventsFilter';
22
23
  const classes = {
23
24
  root: `${PREFIX}-root`,
24
25
  filters: `${PREFIX}-filters`,
@@ -86,6 +87,7 @@ export default function Events(inProps) {
86
87
  const [next, setNext] = useState(null);
87
88
  const [query, setQuery] = useState('');
88
89
  const [dateSearch, setDateSearch] = useState(options[0].value);
90
+ const [location, setLocation] = useState(SCEventLocationFilterType.ANY);
89
91
  const [showFollowed, setShowFollowed] = useState(false);
90
92
  const [showPastEvents, setShowPastEvents] = useState(false);
91
93
  const [showMyEvents, setShowMyEvents] = useState(false);
@@ -125,7 +127,7 @@ export default function Events(inProps) {
125
127
  url: endpoint.url({}),
126
128
  method: endpoint.method,
127
129
  params: Object.assign(Object.assign({}, endpointQueryParams), (general
128
- ? Object.assign(Object.assign(Object.assign(Object.assign({}, (search && { search: query })), (dateSearch !== SCEventDateFilterType.ANY && { date_filter: dateSearch })), (showFollowed && { follows: showFollowed })), (showPastEvents && { date_filter: SCEventDateFilterType.PAST })) : Object.assign(Object.assign({ subscription_status: SCEventSubscriptionStatusType.GOING }, (showPastEvents && { past: showPastEvents })), (showMyEvents && { created_by: authUserId }))))
130
+ ? Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (search && { search: query })), (dateSearch !== SCEventDateFilterType.ANY && { date_filter: dateSearch })), (location !== SCEventLocationFilterType.ANY && { location })), (showFollowed && { follows: showFollowed })), (showPastEvents && { date_filter: SCEventDateFilterType.PAST })) : Object.assign(Object.assign(Object.assign({ subscription_status: SCEventSubscriptionStatusType.GOING }, (location !== SCEventLocationFilterType.ANY && { location })), (showPastEvents && { past: showPastEvents })), (showMyEvents && { created_by: authUserId }))))
129
131
  })
130
132
  .then((res) => {
131
133
  setEvents(res.data.results);
@@ -140,13 +142,13 @@ export default function Events(inProps) {
140
142
  * On mount, fetches events list
141
143
  */
142
144
  useEffect(() => {
143
- if (!contentAvailability) {
145
+ if (!contentAvailability && !authUserId) {
144
146
  return;
145
147
  }
146
148
  else {
147
149
  query === '' && fetchEvents();
148
150
  }
149
- }, [contentAvailability, dateSearch, showFollowed, showPastEvents, showMyEvents, query]);
151
+ }, [contentAvailability, authUserId, dateSearch, location, showFollowed, showPastEvents, showMyEvents, query]);
150
152
  /**
151
153
  * Subscriber for pubsub callback
152
154
  */
@@ -199,10 +201,17 @@ export default function Events(inProps) {
199
201
  const handleOnChangeTimeFrame = (event) => {
200
202
  setDateSearch(event.target.value);
201
203
  };
204
+ /**
205
+ * Handle change location
206
+ * @param event
207
+ */
208
+ const handleOnChangeLocation = (event) => {
209
+ setLocation(event.target.value);
210
+ };
202
211
  /**
203
212
  * Renders events list
204
213
  */
205
- const c = (_jsxs(_Fragment, { children: [showFilters && (_jsx(Grid, Object.assign({ container: true, className: classes.filters, gap: 2 }, { children: filters ? (filters) : !general ? (_jsxs(_Fragment, { children: [_jsx(Grid, Object.assign({ item: true }, { children: _jsx(PastEventsFilter, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick, autoHide: !events.length && !showPastEvents, disabled: loading }) })), (events.length !== 0 || (events.length === 0 && showMyEvents)) && (_jsx(Grid, Object.assign({ item: true }, { children: _jsx(EventsChipRoot
214
+ const c = (_jsxs(_Fragment, { children: [showFilters && (_jsx(Grid, Object.assign({ container: true, className: classes.filters, gap: 2 }, { children: filters ? (filters) : !general ? (_jsxs(_Fragment, { children: [(events.length !== 0 || (events.length === 0 && showMyEvents)) && (_jsx(Grid, Object.assign({ item: true }, { children: _jsx(EventsChipRoot
206
215
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
207
216
  // @ts-ignore
208
217
  , {
@@ -214,14 +223,14 @@ export default function Events(inProps) {
214
223
  variant: showMyEvents ? 'filled' : 'outlined', label: _jsx(FormattedMessage, { id: "ui.events.filterByCreatedByMe", defaultMessage: "ui.events.filterByCreatedByMe" }), onClick: () => setShowMyEvents(!showMyEvents),
215
224
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
216
225
  // @ts-ignore
217
- showFollowed: showMyEvents, deleteIcon: showMyEvents ? _jsx(Icon, { children: "close" }) : null, onDelete: showMyEvents ? handleDeleteClick : null, disabled: loading }) })))] })) : (_jsxs(_Fragment, { children: [_jsx(Grid, Object.assign({ item: true, xs: 12, md: 4 }, { children: _jsx(TextField, { className: classes.search, size: 'small', fullWidth: true, value: query, label: _jsx(FormattedMessage, { id: "ui.events.filterByName", defaultMessage: "ui.events.filterByName" }), variant: "outlined", onChange: handleOnChangeFilterName, disabled: loading || (!events.length && !query), onKeyUp: (e) => {
226
+ showFollowed: showMyEvents, deleteIcon: showMyEvents ? _jsx(Icon, { children: "close" }) : null, onDelete: showMyEvents ? handleDeleteClick : null, autoHide: !loading && !events.length, disabled: loading }) }))), _jsx(Grid, Object.assign({ item: true }, { children: _jsx(PastEventsFilter, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick, autoHide: !loading && !events.length && !showPastEvents, disabled: loading }) })), _jsx(Grid, Object.assign({ item: true, xs: 12, md: 2 }, { children: _jsx(LocationEventsFilter, { value: location, autoHide: !loading && !events.length, disabled: loading || (!events.length && !location), handleOnChange: handleOnChangeLocation }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(Grid, Object.assign({ item: true, xs: 12, md: 3 }, { children: _jsx(TextField, { className: classes.search, size: 'small', fullWidth: true, value: query, label: _jsx(FormattedMessage, { id: "ui.events.filterByName", defaultMessage: "ui.events.filterByName" }), variant: "outlined", onChange: handleOnChangeFilterName, disabled: loading || (!events.length && !query), onKeyUp: (e) => {
218
227
  e.preventDefault();
219
228
  if (e.key === 'Enter') {
220
229
  fetchEvents(true);
221
230
  }
222
231
  }, InputProps: {
223
232
  endAdornment: (_jsx(InputAdornment, Object.assign({ position: "end" }, { children: isMobile ? (_jsx(IconButton, Object.assign({ onClick: () => fetchEvents(true), disabled: loading || (!events.length && !query) }, { children: _jsx(Icon, { children: "search" }) }))) : (_jsx(Button, { size: "small", variant: "contained", color: "secondary", onClick: () => fetchEvents(true), endIcon: _jsx(Icon, { children: "search" }), disabled: loading || (!events.length && !query) })) })))
224
- } }) })), _jsx(Grid, Object.assign({ item: true, xs: 12, md: 2 }, { children: _jsxs(FormControl, Object.assign({ fullWidth: true }, { children: [_jsx(InputLabel, { children: _jsx(FormattedMessage, { id: "ui.events.filterByDate", defaultMessage: "ui.events.filterByDate" }) }), _jsx(Select, Object.assign({ disabled: showPastEvents || loading || (!events.length && dateSearch === SCEventDateFilterType.ANY), size: 'small', label: _jsx(FormattedMessage, { id: "ui.events.filterByDate", defaultMessage: "ui.events.filterByDate" }), value: dateSearch, onChange: handleOnChangeTimeFrame, renderValue: (selected) => options.find((option) => option.value === selected).label }, { children: options.map((option) => (_jsxs(MenuItem, Object.assign({ value: option.value }, { children: [_jsx(Radio, { checked: dateSearch === option.value, value: option.value, name: "radio-button-select", inputProps: { 'aria-label': option.label } }), option.label] }), option.value))) }))] })) })), authUserId && (_jsx(Grid, Object.assign({ item: true }, { children: _jsx(EventsChipRoot
233
+ } }) })), _jsx(Grid, Object.assign({ item: true, xs: 12, md: 2 }, { children: _jsxs(FormControl, Object.assign({ fullWidth: true }, { children: [_jsx(InputLabel, { children: _jsx(FormattedMessage, { id: "ui.events.filterByDate", defaultMessage: "ui.events.filterByDate" }) }), _jsx(Select, Object.assign({ disabled: showPastEvents || loading || (!events.length && dateSearch === SCEventDateFilterType.ANY), size: 'small', label: _jsx(FormattedMessage, { id: "ui.events.filterByDate", defaultMessage: "ui.events.filterByDate" }), value: dateSearch, onChange: handleOnChangeTimeFrame, renderValue: (selected) => options.find((option) => option.value === selected).label }, { children: options.map((option) => (_jsxs(MenuItem, Object.assign({ value: option.value }, { children: [_jsx(Radio, { checked: dateSearch === option.value, value: option.value, name: "radio-button-select", inputProps: { 'aria-label': option.label } }), option.label] }), option.value))) }))] })) })), _jsx(Grid, Object.assign({ item: true, xs: 12, md: 2 }, { children: _jsx(LocationEventsFilter, { value: location, disabled: loading || (!events.length && !location), handleOnChange: handleOnChangeLocation }) })), authUserId && (_jsx(Grid, Object.assign({ item: true }, { children: _jsx(EventsChipRoot
225
234
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
226
235
  // @ts-ignore
227
236
  , {