@selfcommunity/react-ui 0.7.9-alpha.1 → 0.7.9-alpha.11

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 (234) hide show
  1. package/lib/cjs/components/BottomNavigation/BottomNavigation.js +3 -1
  2. package/lib/cjs/components/ChangeGroupCover/ChangeGroupCover.d.ts +55 -0
  3. package/lib/cjs/components/ChangeGroupCover/ChangeGroupCover.js +140 -0
  4. package/lib/cjs/components/ChangeGroupCover/constants.d.ts +1 -0
  5. package/lib/cjs/components/ChangeGroupCover/constants.js +4 -0
  6. package/lib/cjs/components/ChangeGroupCover/index.d.ts +3 -0
  7. package/lib/cjs/components/ChangeGroupCover/index.js +5 -0
  8. package/lib/cjs/components/ChangeGroupPicture/ChangeGroupPicture.d.ts +57 -0
  9. package/lib/cjs/components/ChangeGroupPicture/ChangeGroupPicture.js +135 -0
  10. package/lib/cjs/components/ChangeGroupPicture/constants.d.ts +1 -0
  11. package/lib/cjs/components/ChangeGroupPicture/constants.js +4 -0
  12. package/lib/cjs/components/ChangeGroupPicture/index.d.ts +3 -0
  13. package/lib/cjs/components/ChangeGroupPicture/index.js +5 -0
  14. package/lib/cjs/components/Composer/Attributes/Attributes.d.ts +1 -1
  15. package/lib/cjs/components/Composer/Attributes/Attributes.js +7 -0
  16. package/lib/cjs/components/Composer/Composer.d.ts +2 -1
  17. package/lib/cjs/components/Composer/Composer.js +39 -12
  18. package/lib/cjs/components/Composer/Content/ContentDiscussion/ContentDiscussion.js +7 -3
  19. package/lib/cjs/components/Composer/Content/ContentPost/ContentPost.js +4 -3
  20. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +7 -1
  21. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.js +46 -12
  22. package/lib/cjs/components/CreateGroupButton/CreateGroupButton.d.ts +38 -0
  23. package/lib/cjs/components/CreateGroupButton/CreateGroupButton.js +72 -0
  24. package/lib/cjs/components/CreateGroupButton/index.d.ts +3 -0
  25. package/lib/cjs/components/CreateGroupButton/index.js +5 -0
  26. package/lib/cjs/components/CustomAdv/CustomAdv.d.ts +4 -0
  27. package/lib/cjs/components/EditGroupButton/EditGroupButton.d.ts +43 -0
  28. package/lib/cjs/components/EditGroupButton/EditGroupButton.js +61 -0
  29. package/lib/cjs/components/EditGroupButton/index.d.ts +3 -0
  30. package/lib/cjs/components/EditGroupButton/index.js +5 -0
  31. package/lib/cjs/components/Group/Group.d.ts +68 -0
  32. package/lib/cjs/components/Group/Group.js +96 -0
  33. package/lib/cjs/components/Group/Skeleton.d.ts +22 -0
  34. package/lib/cjs/components/Group/Skeleton.js +42 -0
  35. package/lib/cjs/components/Group/constants.d.ts +1 -0
  36. package/lib/cjs/components/Group/constants.js +4 -0
  37. package/lib/cjs/components/Group/index.d.ts +4 -0
  38. package/lib/cjs/components/Group/index.js +8 -0
  39. package/lib/cjs/components/GroupAutocomplete/GroupAutocomplete.d.ts +49 -0
  40. package/lib/cjs/components/GroupAutocomplete/GroupAutocomplete.js +101 -0
  41. package/lib/cjs/components/GroupAutocomplete/index.d.ts +3 -0
  42. package/lib/cjs/components/GroupAutocomplete/index.js +5 -0
  43. package/lib/cjs/components/GroupForm/GroupForm.d.ts +70 -0
  44. package/lib/cjs/components/GroupForm/GroupForm.js +239 -0
  45. package/lib/cjs/components/GroupForm/constants.d.ts +1 -0
  46. package/lib/cjs/components/GroupForm/constants.js +4 -0
  47. package/lib/cjs/components/GroupForm/index.d.ts +3 -0
  48. package/lib/cjs/components/GroupForm/index.js +5 -0
  49. package/lib/cjs/components/GroupHeader/GroupHeader.d.ts +84 -0
  50. package/lib/cjs/components/GroupHeader/GroupHeader.js +147 -0
  51. package/lib/cjs/components/GroupHeader/Skeleton.d.ts +25 -0
  52. package/lib/cjs/components/GroupHeader/Skeleton.js +56 -0
  53. package/lib/cjs/components/GroupHeader/constants.d.ts +1 -0
  54. package/lib/cjs/components/GroupHeader/constants.js +4 -0
  55. package/lib/cjs/components/GroupHeader/index.d.ts +4 -0
  56. package/lib/cjs/components/GroupHeader/index.js +8 -0
  57. package/lib/cjs/components/GroupInfoWidget/GroupInfoWidget.d.ts +52 -0
  58. package/lib/cjs/components/GroupInfoWidget/GroupInfoWidget.js +100 -0
  59. package/lib/cjs/components/GroupInfoWidget/Skeleton.d.ts +21 -0
  60. package/lib/cjs/components/GroupInfoWidget/Skeleton.js +38 -0
  61. package/lib/cjs/components/GroupInfoWidget/constants.d.ts +1 -0
  62. package/lib/cjs/components/GroupInfoWidget/constants.js +4 -0
  63. package/lib/cjs/components/GroupInfoWidget/index.d.ts +4 -0
  64. package/lib/cjs/components/GroupInfoWidget/index.js +8 -0
  65. package/lib/cjs/components/GroupInviteButton/GroupInviteButton.d.ts +57 -0
  66. package/lib/cjs/components/GroupInviteButton/GroupInviteButton.js +262 -0
  67. package/lib/cjs/components/GroupInviteButton/index.d.ts +3 -0
  68. package/lib/cjs/components/GroupInviteButton/index.js +5 -0
  69. package/lib/cjs/components/GroupMembersButton/GroupMembersButton.d.ts +51 -0
  70. package/lib/cjs/components/GroupMembersButton/GroupMembersButton.js +136 -0
  71. package/lib/cjs/components/GroupMembersButton/index.d.ts +3 -0
  72. package/lib/cjs/components/GroupMembersButton/index.js +5 -0
  73. package/lib/cjs/components/GroupMembersWidget/GroupMembersWidget.d.ts +79 -0
  74. package/lib/cjs/components/GroupMembersWidget/GroupMembersWidget.js +205 -0
  75. package/lib/cjs/components/GroupMembersWidget/Skeleton.d.ts +22 -0
  76. package/lib/cjs/components/GroupMembersWidget/Skeleton.js +38 -0
  77. package/lib/cjs/components/GroupMembersWidget/constants.d.ts +1 -0
  78. package/lib/cjs/components/GroupMembersWidget/constants.js +4 -0
  79. package/lib/cjs/components/GroupMembersWidget/index.d.ts +4 -0
  80. package/lib/cjs/components/GroupMembersWidget/index.js +8 -0
  81. package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.d.ts +74 -0
  82. package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.js +204 -0
  83. package/lib/cjs/components/GroupRequestsWidget/Skeleton.d.ts +22 -0
  84. package/lib/cjs/components/GroupRequestsWidget/Skeleton.js +38 -0
  85. package/lib/cjs/components/GroupRequestsWidget/constants.d.ts +1 -0
  86. package/lib/cjs/components/GroupRequestsWidget/constants.js +4 -0
  87. package/lib/cjs/components/GroupRequestsWidget/index.d.ts +4 -0
  88. package/lib/cjs/components/GroupRequestsWidget/index.js +8 -0
  89. package/lib/cjs/components/GroupSettingsIconButton/GroupSettingsIconButton.d.ts +56 -0
  90. package/lib/cjs/components/GroupSettingsIconButton/GroupSettingsIconButton.js +137 -0
  91. package/lib/cjs/components/GroupSettingsIconButton/index.d.ts +3 -0
  92. package/lib/cjs/components/GroupSettingsIconButton/index.js +5 -0
  93. package/lib/cjs/components/GroupSubscribeButton/GroupSubscribeButton.d.ts +56 -0
  94. package/lib/cjs/components/GroupSubscribeButton/GroupSubscribeButton.js +132 -0
  95. package/lib/cjs/components/GroupSubscribeButton/index.d.ts +3 -0
  96. package/lib/cjs/components/GroupSubscribeButton/index.js +5 -0
  97. package/lib/cjs/components/Groups/Groups.d.ts +61 -0
  98. package/lib/cjs/components/Groups/Groups.js +133 -0
  99. package/lib/cjs/components/Groups/Skeleton.d.ts +34 -0
  100. package/lib/cjs/components/Groups/Skeleton.js +45 -0
  101. package/lib/cjs/components/Groups/constants.d.ts +1 -0
  102. package/lib/cjs/components/Groups/constants.js +4 -0
  103. package/lib/cjs/components/Groups/index.d.ts +4 -0
  104. package/lib/cjs/components/Groups/index.js +8 -0
  105. package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.d.ts +6 -1
  106. package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.js +2 -3
  107. package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.js +1 -1
  108. package/lib/cjs/components/NavigationToolbar/NavigationToolbar.js +5 -1
  109. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +4 -0
  110. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.js +2 -3
  111. package/lib/cjs/components/User/User.d.ts +12 -0
  112. package/lib/cjs/components/User/User.js +5 -3
  113. package/lib/cjs/constants/Group.d.ts +2 -0
  114. package/lib/cjs/constants/Group.js +5 -0
  115. package/lib/cjs/index.d.ts +17 -1
  116. package/lib/cjs/index.js +40 -2
  117. package/lib/esm/components/BottomNavigation/BottomNavigation.js +3 -1
  118. package/lib/esm/components/ChangeGroupCover/ChangeGroupCover.d.ts +55 -0
  119. package/lib/esm/components/ChangeGroupCover/ChangeGroupCover.js +137 -0
  120. package/lib/esm/components/ChangeGroupCover/constants.d.ts +1 -0
  121. package/lib/esm/components/ChangeGroupCover/constants.js +1 -0
  122. package/lib/esm/components/ChangeGroupCover/index.d.ts +3 -0
  123. package/lib/esm/components/ChangeGroupCover/index.js +2 -0
  124. package/lib/esm/components/ChangeGroupPicture/ChangeGroupPicture.d.ts +57 -0
  125. package/lib/esm/components/ChangeGroupPicture/ChangeGroupPicture.js +132 -0
  126. package/lib/esm/components/ChangeGroupPicture/constants.d.ts +1 -0
  127. package/lib/esm/components/ChangeGroupPicture/constants.js +1 -0
  128. package/lib/esm/components/ChangeGroupPicture/index.d.ts +3 -0
  129. package/lib/esm/components/ChangeGroupPicture/index.js +2 -0
  130. package/lib/esm/components/Composer/Attributes/Attributes.d.ts +1 -1
  131. package/lib/esm/components/Composer/Attributes/Attributes.js +7 -0
  132. package/lib/esm/components/Composer/Composer.d.ts +2 -1
  133. package/lib/esm/components/Composer/Composer.js +39 -12
  134. package/lib/esm/components/Composer/Content/ContentDiscussion/ContentDiscussion.js +7 -3
  135. package/lib/esm/components/Composer/Content/ContentPost/ContentPost.js +4 -3
  136. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +7 -1
  137. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.js +45 -12
  138. package/lib/esm/components/CreateGroupButton/CreateGroupButton.d.ts +38 -0
  139. package/lib/esm/components/CreateGroupButton/CreateGroupButton.js +69 -0
  140. package/lib/esm/components/CreateGroupButton/index.d.ts +3 -0
  141. package/lib/esm/components/CreateGroupButton/index.js +2 -0
  142. package/lib/esm/components/CustomAdv/CustomAdv.d.ts +4 -0
  143. package/lib/esm/components/EditGroupButton/EditGroupButton.d.ts +43 -0
  144. package/lib/esm/components/EditGroupButton/EditGroupButton.js +58 -0
  145. package/lib/esm/components/EditGroupButton/index.d.ts +3 -0
  146. package/lib/esm/components/EditGroupButton/index.js +2 -0
  147. package/lib/esm/components/Group/Group.d.ts +68 -0
  148. package/lib/esm/components/Group/Group.js +93 -0
  149. package/lib/esm/components/Group/Skeleton.d.ts +22 -0
  150. package/lib/esm/components/Group/Skeleton.js +38 -0
  151. package/lib/esm/components/Group/constants.d.ts +1 -0
  152. package/lib/esm/components/Group/constants.js +1 -0
  153. package/lib/esm/components/Group/index.d.ts +4 -0
  154. package/lib/esm/components/Group/index.js +4 -0
  155. package/lib/esm/components/GroupAutocomplete/GroupAutocomplete.d.ts +49 -0
  156. package/lib/esm/components/GroupAutocomplete/GroupAutocomplete.js +99 -0
  157. package/lib/esm/components/GroupAutocomplete/index.d.ts +3 -0
  158. package/lib/esm/components/GroupAutocomplete/index.js +2 -0
  159. package/lib/esm/components/GroupForm/GroupForm.d.ts +70 -0
  160. package/lib/esm/components/GroupForm/GroupForm.js +236 -0
  161. package/lib/esm/components/GroupForm/constants.d.ts +1 -0
  162. package/lib/esm/components/GroupForm/constants.js +1 -0
  163. package/lib/esm/components/GroupForm/index.d.ts +3 -0
  164. package/lib/esm/components/GroupForm/index.js +2 -0
  165. package/lib/esm/components/GroupHeader/GroupHeader.d.ts +84 -0
  166. package/lib/esm/components/GroupHeader/GroupHeader.js +144 -0
  167. package/lib/esm/components/GroupHeader/Skeleton.d.ts +25 -0
  168. package/lib/esm/components/GroupHeader/Skeleton.js +53 -0
  169. package/lib/esm/components/GroupHeader/constants.d.ts +1 -0
  170. package/lib/esm/components/GroupHeader/constants.js +1 -0
  171. package/lib/esm/components/GroupHeader/index.d.ts +4 -0
  172. package/lib/esm/components/GroupHeader/index.js +4 -0
  173. package/lib/esm/components/GroupInfoWidget/GroupInfoWidget.d.ts +52 -0
  174. package/lib/esm/components/GroupInfoWidget/GroupInfoWidget.js +97 -0
  175. package/lib/esm/components/GroupInfoWidget/Skeleton.d.ts +21 -0
  176. package/lib/esm/components/GroupInfoWidget/Skeleton.js +34 -0
  177. package/lib/esm/components/GroupInfoWidget/constants.d.ts +1 -0
  178. package/lib/esm/components/GroupInfoWidget/constants.js +1 -0
  179. package/lib/esm/components/GroupInfoWidget/index.d.ts +4 -0
  180. package/lib/esm/components/GroupInfoWidget/index.js +4 -0
  181. package/lib/esm/components/GroupInviteButton/GroupInviteButton.d.ts +57 -0
  182. package/lib/esm/components/GroupInviteButton/GroupInviteButton.js +259 -0
  183. package/lib/esm/components/GroupInviteButton/index.d.ts +3 -0
  184. package/lib/esm/components/GroupInviteButton/index.js +2 -0
  185. package/lib/esm/components/GroupMembersButton/GroupMembersButton.d.ts +51 -0
  186. package/lib/esm/components/GroupMembersButton/GroupMembersButton.js +133 -0
  187. package/lib/esm/components/GroupMembersButton/index.d.ts +3 -0
  188. package/lib/esm/components/GroupMembersButton/index.js +2 -0
  189. package/lib/esm/components/GroupMembersWidget/GroupMembersWidget.d.ts +79 -0
  190. package/lib/esm/components/GroupMembersWidget/GroupMembersWidget.js +202 -0
  191. package/lib/esm/components/GroupMembersWidget/Skeleton.d.ts +22 -0
  192. package/lib/esm/components/GroupMembersWidget/Skeleton.js +34 -0
  193. package/lib/esm/components/GroupMembersWidget/constants.d.ts +1 -0
  194. package/lib/esm/components/GroupMembersWidget/constants.js +1 -0
  195. package/lib/esm/components/GroupMembersWidget/index.d.ts +4 -0
  196. package/lib/esm/components/GroupMembersWidget/index.js +4 -0
  197. package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.d.ts +74 -0
  198. package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.js +201 -0
  199. package/lib/esm/components/GroupRequestsWidget/Skeleton.d.ts +22 -0
  200. package/lib/esm/components/GroupRequestsWidget/Skeleton.js +34 -0
  201. package/lib/esm/components/GroupRequestsWidget/constants.d.ts +1 -0
  202. package/lib/esm/components/GroupRequestsWidget/constants.js +1 -0
  203. package/lib/esm/components/GroupRequestsWidget/index.d.ts +4 -0
  204. package/lib/esm/components/GroupRequestsWidget/index.js +4 -0
  205. package/lib/esm/components/GroupSettingsIconButton/GroupSettingsIconButton.d.ts +56 -0
  206. package/lib/esm/components/GroupSettingsIconButton/GroupSettingsIconButton.js +134 -0
  207. package/lib/esm/components/GroupSettingsIconButton/index.d.ts +3 -0
  208. package/lib/esm/components/GroupSettingsIconButton/index.js +2 -0
  209. package/lib/esm/components/GroupSubscribeButton/GroupSubscribeButton.d.ts +56 -0
  210. package/lib/esm/components/GroupSubscribeButton/GroupSubscribeButton.js +129 -0
  211. package/lib/esm/components/GroupSubscribeButton/index.d.ts +3 -0
  212. package/lib/esm/components/GroupSubscribeButton/index.js +2 -0
  213. package/lib/esm/components/Groups/Groups.d.ts +61 -0
  214. package/lib/esm/components/Groups/Groups.js +130 -0
  215. package/lib/esm/components/Groups/Skeleton.d.ts +34 -0
  216. package/lib/esm/components/Groups/Skeleton.js +42 -0
  217. package/lib/esm/components/Groups/constants.d.ts +1 -0
  218. package/lib/esm/components/Groups/constants.js +1 -0
  219. package/lib/esm/components/Groups/index.d.ts +4 -0
  220. package/lib/esm/components/Groups/index.js +4 -0
  221. package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.d.ts +6 -1
  222. package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.js +3 -4
  223. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.js +1 -1
  224. package/lib/esm/components/NavigationToolbar/NavigationToolbar.js +5 -1
  225. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +4 -0
  226. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.js +2 -3
  227. package/lib/esm/components/User/User.d.ts +12 -0
  228. package/lib/esm/components/User/User.js +5 -3
  229. package/lib/esm/constants/Group.d.ts +2 -0
  230. package/lib/esm/constants/Group.js +2 -0
  231. package/lib/esm/index.d.ts +17 -1
  232. package/lib/esm/index.js +19 -3
  233. package/lib/umd/react-ui.js +1 -1
  234. package/package.json +6 -6
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importStar(require("react"));
5
+ const styles_1 = require("@mui/material/styles");
6
+ const List_1 = tslib_1.__importDefault(require("@mui/material/List"));
7
+ const material_1 = require("@mui/material");
8
+ const Widget_1 = tslib_1.__importDefault(require("../Widget"));
9
+ const api_services_1 = require("@selfcommunity/api-services");
10
+ const utils_1 = require("@selfcommunity/utils");
11
+ const react_core_1 = require("@selfcommunity/react-core");
12
+ const widget_1 = require("../../utils/widget");
13
+ const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
14
+ const react_intl_1 = require("react-intl");
15
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
16
+ const Errors_1 = require("../../constants/Errors");
17
+ const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
18
+ const InfiniteScroll_1 = tslib_1.__importDefault(require("../../shared/InfiniteScroll"));
19
+ const system_1 = require("@mui/system");
20
+ const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
21
+ const constants_1 = require("./constants");
22
+ const User_1 = tslib_1.__importStar(require("../User"));
23
+ const GroupInviteButton_1 = tslib_1.__importDefault(require("../GroupInviteButton"));
24
+ const GroupSettingsIconButton_1 = tslib_1.__importDefault(require("../GroupSettingsIconButton"));
25
+ const classes = {
26
+ root: `${constants_1.PREFIX}-root`,
27
+ title: `${constants_1.PREFIX}-title`,
28
+ actions: `${constants_1.PREFIX}-actions`,
29
+ noResults: `${constants_1.PREFIX}-no-results`,
30
+ showMore: `${constants_1.PREFIX}-show-more`,
31
+ dialogRoot: `${constants_1.PREFIX}-dialog-root`,
32
+ endMessage: `${constants_1.PREFIX}-end-message`
33
+ };
34
+ const Root = (0, styles_1.styled)(Widget_1.default, {
35
+ name: constants_1.PREFIX,
36
+ slot: 'Root'
37
+ })(() => ({}));
38
+ const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
39
+ name: constants_1.PREFIX,
40
+ slot: 'DialogRoot'
41
+ })(() => ({}));
42
+ /**
43
+ * > API documentation for the Community-JS Group Members Widget component. Learn about the available props and the CSS API.
44
+ *
45
+ *
46
+ * This component renders the list of the follows of the given group.
47
+ * Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/GroupMembers)
48
+
49
+ #### Import
50
+
51
+ ```jsx
52
+ import {GroupMembersWidget} from '@selfcommunity/react-ui';
53
+ ```
54
+
55
+ #### Component Name
56
+
57
+ The name `SCGroupMembersWidget` can be used when providing style overrides in the theme.
58
+
59
+
60
+ #### CSS
61
+
62
+ |Rule Name|Global class|Description|
63
+ |---|---|---|
64
+ |root|.SCGroupMembersWidget-root|Styles applied to the root element.|
65
+ |title|.SCGroupMembersWidget-title|Styles applied to the title element.|
66
+ |noResults|.SCGroupMembersWidget-no-results|Styles applied to no results section.|
67
+ |showMore|.SCGroupMembersWidget-show-more|Styles applied to show more button element.|
68
+ |dialogRoot|.SCGroupMembersWidget-dialog-root|Styles applied to the dialog root element.|
69
+ |endMessage|.SCGroupMembersWidget-end-message|Styles applied to the end message element.|
70
+
71
+ * @param inProps
72
+ */
73
+ function GroupMembersWidget(inProps) {
74
+ var _a;
75
+ // PROPS
76
+ const props = (0, system_1.useThemeProps)({
77
+ props: inProps,
78
+ name: constants_1.PREFIX
79
+ });
80
+ const { groupId, group, autoHide = false, limit = 5, className, cacheStrategy = utils_1.CacheStrategies.NETWORK_ONLY, onHeightChange, onStateChange, UserProps = {}, DialogProps = {} } = props, rest = tslib_1.__rest(props, ["groupId", "group", "autoHide", "limit", "className", "cacheStrategy", "onHeightChange", "onStateChange", "UserProps", "DialogProps"]);
81
+ // STATE
82
+ const [state, dispatch] = (0, react_1.useReducer)(widget_1.dataWidgetReducer, {
83
+ isLoadingNext: false,
84
+ next: null,
85
+ cacheKey: react_core_1.SCCache.getWidgetStateCacheKey(react_core_1.SCCache.GROUP_MEMBERS_TOOLS_STATE_CACHE_PREFIX_KEY, (0, utils_1.isInteger)(groupId) ? groupId : group.id),
86
+ cacheStrategy,
87
+ visibleItems: limit
88
+ }, widget_1.stateWidgetInitializer);
89
+ const [openDialog, setOpenDialog] = (0, react_1.useState)(false);
90
+ // CONTEXT
91
+ const scUserContext = (0, react_core_1.useSCUser)();
92
+ const scPreferencesContext = (0, react_core_1.useSCPreferences)();
93
+ const { scGroup } = (0, react_core_1.useSCFetchGroup)({ id: groupId, group });
94
+ // CONST
95
+ const isGroupAdmin = (0, react_1.useMemo)(() => { var _a; return scUserContext.user && ((_a = scGroup === null || scGroup === void 0 ? void 0 : scGroup.managed_by) === null || _a === void 0 ? void 0 : _a.id) === scUserContext.user.id; }, [scUserContext.user, (_a = scGroup === null || scGroup === void 0 ? void 0 : scGroup.managed_by) === null || _a === void 0 ? void 0 : _a.id]);
96
+ // MEMO
97
+ const contentAvailability = (0, react_1.useMemo)(() => react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY in scPreferencesContext.preferences &&
98
+ scPreferencesContext.preferences[react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value, [scPreferencesContext.preferences]);
99
+ // HOOKS
100
+ const theme = (0, material_1.useTheme)();
101
+ const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
102
+ /**
103
+ * Initialize component
104
+ * Fetch data only if the component is not initialized and it is not loading data
105
+ */
106
+ const _initComponent = (0, react_1.useMemo)(() => () => {
107
+ if (!state.initialized && !state.isLoadingNext) {
108
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
109
+ api_services_1.GroupService.getGroupMembers(scGroup.id, { limit })
110
+ .then((payload) => {
111
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
112
+ })
113
+ .catch((error) => {
114
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
115
+ utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
116
+ });
117
+ }
118
+ }, [state.isLoadingNext, state.initialized, scGroup, limit, dispatch]);
119
+ // EFFECTS
120
+ (0, react_1.useEffect)(() => {
121
+ var _a;
122
+ let _t;
123
+ if ((contentAvailability || (!contentAvailability && ((_a = scUserContext.user) === null || _a === void 0 ? void 0 : _a.id))) && scGroup && scUserContext.user !== undefined) {
124
+ _t = setTimeout(_initComponent);
125
+ return () => {
126
+ _t && clearTimeout(_t);
127
+ };
128
+ }
129
+ }, [scUserContext.user, contentAvailability, scGroup]);
130
+ (0, react_1.useEffect)(() => {
131
+ if (openDialog && state.next && state.results.length === limit && state.initialized) {
132
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
133
+ api_services_1.GroupService.getGroupMembers(scGroup.id, { offset: limit, limit: 10 })
134
+ .then((payload) => {
135
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: payload });
136
+ })
137
+ .catch((error) => {
138
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
139
+ utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
140
+ });
141
+ }
142
+ }, [openDialog, state.next, state.results.length, state.initialized, limit]);
143
+ /**
144
+ * Virtual feed update
145
+ */
146
+ (0, react_1.useEffect)(() => {
147
+ onHeightChange && onHeightChange();
148
+ }, [state.results]);
149
+ (0, react_1.useEffect)(() => {
150
+ if (!scGroup || (!contentAvailability && !scUserContext.user)) {
151
+ return;
152
+ }
153
+ else if (cacheStrategy === utils_1.CacheStrategies.NETWORK_ONLY) {
154
+ onStateChange && onStateChange({ cacheStrategy: utils_1.CacheStrategies.CACHE_FIRST });
155
+ }
156
+ }, [scUserContext.user, scGroup, contentAvailability]);
157
+ (0, react_1.useEffect)(() => {
158
+ if (!scGroup || !scUserContext.user || !state.initialized) {
159
+ return;
160
+ }
161
+ }, []);
162
+ // HANDLERS
163
+ const handleNext = (0, react_1.useMemo)(() => () => {
164
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
165
+ api_services_1.http
166
+ .request({
167
+ url: state.next,
168
+ method: api_services_1.Endpoints.GetGroupSubscribers.method
169
+ })
170
+ .then((res) => {
171
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
172
+ });
173
+ }, [dispatch, state.next, state.isLoadingNext, state.initialized]);
174
+ const handleToggleDialogOpen = () => {
175
+ setOpenDialog((prev) => !prev);
176
+ };
177
+ // RENDER
178
+ if ((autoHide && !state.count && state.initialized) || (!contentAvailability && !scUserContext.user) || !scGroup) {
179
+ return react_1.default.createElement(HiddenPlaceholder_1.default, null);
180
+ }
181
+ if (!state.initialized) {
182
+ return react_1.default.createElement(Skeleton_1.default, null);
183
+ }
184
+ const content = (react_1.default.createElement(react_1.default.Fragment, null,
185
+ react_1.default.createElement(material_1.CardContent, null,
186
+ react_1.default.createElement(material_1.Typography, { className: classes.title, variant: "h5" },
187
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupMembersWidget.title", defaultMessage: "ui.groupMembersWidget.title" })),
188
+ !state.count ? (react_1.default.createElement(material_1.Typography, { className: classes.noResults, variant: "body2" },
189
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupMembersWidget.subtitle.noResults", defaultMessage: "" }))) : (react_1.default.createElement(react_1.default.Fragment, null,
190
+ react_1.default.createElement(List_1.default, null, state.results.slice(0, state.visibleItems).map((user) => (react_1.default.createElement(material_1.ListItem, { key: user.id },
191
+ react_1.default.createElement(User_1.default, { elevation: 0, actions: isGroupAdmin ? (react_1.default.createElement(GroupSettingsIconButton_1.default, { group: scGroup, user: user })) : (react_1.default.createElement(material_1.Button, null,
192
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" }))), user: user, userId: user.id }))))),
193
+ state.count > state.visibleItems && (react_1.default.createElement(material_1.Button, { className: classes.showMore, onClick: handleToggleDialogOpen },
194
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupMembersWidget.button.showMore", defaultMessage: "ui.groupMembersWidget.button.showMore" }))))),
195
+ openDialog && (react_1.default.createElement(DialogRoot, Object.assign({ className: classes.dialogRoot, title: react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupMembersWidget.dialogTitle", id: "ui.groupMembersWidget.dialogTitle", values: { total: scGroup.subscribers_counter } }), onClose: handleToggleDialogOpen, open: openDialog }, DialogProps),
196
+ react_1.default.createElement(InfiniteScroll_1.default, { dataLength: state.results.length, next: handleNext, hasMoreNext: Boolean(state.next), loaderNext: react_1.default.createElement(User_1.UserSkeleton, Object.assign({ elevation: 0 }, UserProps)), height: isMobile ? '100%' : 400, endMessage: react_1.default.createElement(material_1.Typography, { className: classes.endMessage },
197
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupMembersWidget.noMoreResults", defaultMessage: "ui.groupMembersWidget.noMoreResults" })) },
198
+ react_1.default.createElement(List_1.default, null, state.results.map((user) => (react_1.default.createElement(material_1.ListItem, { key: user.id },
199
+ react_1.default.createElement(User_1.default, { elevation: 0, actions: isGroupAdmin ? (react_1.default.createElement(GroupSettingsIconButton_1.default, { group: scGroup, user: user })) : (react_1.default.createElement(material_1.Button, null,
200
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" }))), user: user, userId: user.id }))))))))),
201
+ react_1.default.createElement(material_1.CardActions, { className: classes.actions },
202
+ react_1.default.createElement(GroupInviteButton_1.default, { groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, group: scGroup }))));
203
+ return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest), content));
204
+ }
205
+ exports.default = GroupMembersWidget;
@@ -0,0 +1,22 @@
1
+ import { WidgetProps } from '../Widget';
2
+ /**
3
+ * > API documentation for the Community-JS Group Members Widget Skeleton component. Learn about the available props and the CSS API.
4
+
5
+ #### Import
6
+
7
+ ```jsx
8
+ import {GroupMembersWidgetSkeleton} from '@selfcommunity/react-ui';
9
+ ```
10
+
11
+ #### Component Name
12
+
13
+ The name `SCGroupMembersWidget-skeleton-root` can be used when providing style overrides in the theme.
14
+
15
+ #### CSS
16
+
17
+ |Rule Name|Global class|Description|
18
+ |---|---|---|
19
+ |root|.SCGroupMembersWidget-skeleton-root|Styles applied to the root element.|
20
+ *
21
+ */
22
+ export default function GroupMembersWidgetSkeleton(props: WidgetProps): JSX.Element;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importDefault(require("react"));
5
+ const CategoryTrendingUsersWidget_1 = require("../CategoryTrendingUsersWidget");
6
+ const styles_1 = require("@mui/material/styles");
7
+ const constants_1 = require("./constants");
8
+ const classes = {
9
+ root: `${constants_1.PREFIX}-skeleton-root`
10
+ };
11
+ const Root = (0, styles_1.styled)(CategoryTrendingUsersWidget_1.CategoryTrendingPeopleWidgetSkeleton, {
12
+ name: constants_1.PREFIX,
13
+ slot: 'SkeletonRoot'
14
+ })(() => ({}));
15
+ /**
16
+ * > API documentation for the Community-JS Group Members Widget Skeleton component. Learn about the available props and the CSS API.
17
+
18
+ #### Import
19
+
20
+ ```jsx
21
+ import {GroupMembersWidgetSkeleton} from '@selfcommunity/react-ui';
22
+ ```
23
+
24
+ #### Component Name
25
+
26
+ The name `SCGroupMembersWidget-skeleton-root` can be used when providing style overrides in the theme.
27
+
28
+ #### CSS
29
+
30
+ |Rule Name|Global class|Description|
31
+ |---|---|---|
32
+ |root|.SCGroupMembersWidget-skeleton-root|Styles applied to the root element.|
33
+ *
34
+ */
35
+ function GroupMembersWidgetSkeleton(props) {
36
+ return react_1.default.createElement(Root, Object.assign({ className: classes.root }, props));
37
+ }
38
+ exports.default = GroupMembersWidgetSkeleton;
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCGroupMembersWidget";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PREFIX = void 0;
4
+ exports.PREFIX = 'SCGroupMembersWidget';
@@ -0,0 +1,4 @@
1
+ import GroupMembersWidget, { GroupMembersWidgetProps } from './GroupMembersWidget';
2
+ import GroupMembersWidgetSkeleton from './Skeleton';
3
+ export default GroupMembersWidget;
4
+ export { GroupMembersWidgetProps, GroupMembersWidgetSkeleton };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupMembersWidgetSkeleton = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const GroupMembersWidget_1 = tslib_1.__importDefault(require("./GroupMembersWidget"));
6
+ const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
7
+ exports.GroupMembersWidgetSkeleton = Skeleton_1.default;
8
+ exports.default = GroupMembersWidget_1.default;
@@ -0,0 +1,74 @@
1
+ import { WidgetProps } from '../Widget';
2
+ import { SCGroupType } from '@selfcommunity/types';
3
+ import { CacheStrategies } from '@selfcommunity/utils';
4
+ import { BaseDialogProps } from '../../shared/BaseDialog';
5
+ import { VirtualScrollerItemProps } from '../../types/virtualScroller';
6
+ import { UserProps } from '../User';
7
+ export interface GroupRequestsWidgetProps extends VirtualScrollerItemProps, WidgetProps {
8
+ /**
9
+ * Group Object
10
+ * @default null
11
+ */
12
+ group?: SCGroupType;
13
+ /**
14
+ * Id of the group
15
+ * @default null
16
+ */
17
+ groupId?: number | string;
18
+ /**
19
+ * Limit the number of users to show
20
+ * @default false
21
+ */
22
+ limit?: number;
23
+ /**
24
+ * Caching strategies
25
+ * @default CacheStrategies.CACHE_FIRST
26
+ */
27
+ cacheStrategy?: CacheStrategies;
28
+ /**
29
+ * Props to spread to single user object
30
+ * @default empty object
31
+ */
32
+ UserProps?: UserProps;
33
+ /**
34
+ * Props to spread to followers users dialog
35
+ * @default {}
36
+ */
37
+ DialogProps?: BaseDialogProps;
38
+ /**
39
+ * Other props
40
+ */
41
+ [p: string]: any;
42
+ }
43
+ /**
44
+ * > API documentation for the Community-JS Group Requests Widget component. Learn about the available props and the CSS API.
45
+ *
46
+ *
47
+ * This component renders the list of the follows of the given group.
48
+ * Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/GroupRequests)
49
+
50
+ #### Import
51
+
52
+ ```jsx
53
+ import {GroupRequestsWidget} from '@selfcommunity/react-ui';
54
+ ```
55
+
56
+ #### Component Name
57
+
58
+ The name `SCGroupRequestsWidget` can be used when providing style overrides in the theme.
59
+
60
+
61
+ #### CSS
62
+
63
+ |Rule Name|Global class|Description|
64
+ |---|---|---|
65
+ |root|.SCGroupRequestsWidget-root|Styles applied to the root element.|
66
+ |title|.SCGroupRequestsWidget-title|Styles applied to the title element.|
67
+ |noResults|.SCGroupRequestsWidget-no-results|Styles applied to no results section.|
68
+ |showMore|.SCGroupRequestsWidget-show-more|Styles applied to show more button element.|
69
+ |dialogRoot|.SCGroupRequestsWidget-dialog-root|Styles applied to the dialog root element.|
70
+ |endMessage|.SCGroupRequestsWidget-end-message|Styles applied to the end message element.|
71
+
72
+ * @param inProps
73
+ */
74
+ export default function GroupRequestsWidget(inProps: GroupRequestsWidgetProps): JSX.Element;
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importStar(require("react"));
5
+ const styles_1 = require("@mui/material/styles");
6
+ const List_1 = tslib_1.__importDefault(require("@mui/material/List"));
7
+ const material_1 = require("@mui/material");
8
+ const Widget_1 = tslib_1.__importDefault(require("../Widget"));
9
+ const api_services_1 = require("@selfcommunity/api-services");
10
+ const utils_1 = require("@selfcommunity/utils");
11
+ const react_core_1 = require("@selfcommunity/react-core");
12
+ const widget_1 = require("../../utils/widget");
13
+ const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
14
+ const react_intl_1 = require("react-intl");
15
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
16
+ const Errors_1 = require("../../constants/Errors");
17
+ const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
18
+ const InfiniteScroll_1 = tslib_1.__importDefault(require("../../shared/InfiniteScroll"));
19
+ const system_1 = require("@mui/system");
20
+ const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
21
+ const constants_1 = require("./constants");
22
+ const User_1 = tslib_1.__importStar(require("../User"));
23
+ const GroupSubscribeButton_1 = tslib_1.__importDefault(require("../GroupSubscribeButton"));
24
+ const classes = {
25
+ root: `${constants_1.PREFIX}-root`,
26
+ title: `${constants_1.PREFIX}-title`,
27
+ noResults: `${constants_1.PREFIX}-no-results`,
28
+ showMore: `${constants_1.PREFIX}-show-more`,
29
+ dialogRoot: `${constants_1.PREFIX}-dialog-root`,
30
+ endMessage: `${constants_1.PREFIX}-end-message`
31
+ };
32
+ const Root = (0, styles_1.styled)(Widget_1.default, {
33
+ name: constants_1.PREFIX,
34
+ slot: 'Root'
35
+ })(() => ({}));
36
+ const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
37
+ name: constants_1.PREFIX,
38
+ slot: 'DialogRoot'
39
+ })(() => ({}));
40
+ /**
41
+ * > API documentation for the Community-JS Group Requests Widget component. Learn about the available props and the CSS API.
42
+ *
43
+ *
44
+ * This component renders the list of the follows of the given group.
45
+ * Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/GroupRequests)
46
+
47
+ #### Import
48
+
49
+ ```jsx
50
+ import {GroupRequestsWidget} from '@selfcommunity/react-ui';
51
+ ```
52
+
53
+ #### Component Name
54
+
55
+ The name `SCGroupRequestsWidget` can be used when providing style overrides in the theme.
56
+
57
+
58
+ #### CSS
59
+
60
+ |Rule Name|Global class|Description|
61
+ |---|---|---|
62
+ |root|.SCGroupRequestsWidget-root|Styles applied to the root element.|
63
+ |title|.SCGroupRequestsWidget-title|Styles applied to the title element.|
64
+ |noResults|.SCGroupRequestsWidget-no-results|Styles applied to no results section.|
65
+ |showMore|.SCGroupRequestsWidget-show-more|Styles applied to show more button element.|
66
+ |dialogRoot|.SCGroupRequestsWidget-dialog-root|Styles applied to the dialog root element.|
67
+ |endMessage|.SCGroupRequestsWidget-end-message|Styles applied to the end message element.|
68
+
69
+ * @param inProps
70
+ */
71
+ function GroupRequestsWidget(inProps) {
72
+ var _a;
73
+ // PROPS
74
+ const props = (0, system_1.useThemeProps)({
75
+ props: inProps,
76
+ name: constants_1.PREFIX
77
+ });
78
+ const { groupId, group, limit = 5, className, cacheStrategy = utils_1.CacheStrategies.NETWORK_ONLY, onHeightChange, onStateChange, UserProps = {}, DialogProps = {} } = props, rest = tslib_1.__rest(props, ["groupId", "group", "limit", "className", "cacheStrategy", "onHeightChange", "onStateChange", "UserProps", "DialogProps"]);
79
+ // STATE
80
+ const [state, dispatch] = (0, react_1.useReducer)(widget_1.dataWidgetReducer, {
81
+ isLoadingNext: false,
82
+ next: null,
83
+ cacheKey: react_core_1.SCCache.getWidgetStateCacheKey(react_core_1.SCCache.GROUP_REQUESTS_TOOLS_STATE_CACHE_PREFIX_KEY, (0, utils_1.isInteger)(groupId) ? groupId : group.id),
84
+ cacheStrategy,
85
+ visibleItems: limit
86
+ }, widget_1.stateWidgetInitializer);
87
+ const [openDialog, setOpenDialog] = (0, react_1.useState)(false);
88
+ // CONTEXT
89
+ const scUserContext = (0, react_core_1.useSCUser)();
90
+ const scPreferencesContext = (0, react_core_1.useSCPreferences)();
91
+ const { scGroup } = (0, react_core_1.useSCFetchGroup)({ id: groupId, group });
92
+ // MEMO
93
+ const contentAvailability = (0, react_1.useMemo)(() => react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY in scPreferencesContext.preferences &&
94
+ scPreferencesContext.preferences[react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value, [scPreferencesContext.preferences]);
95
+ // HOOKS
96
+ const theme = (0, material_1.useTheme)();
97
+ const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
98
+ const isGroupAdmin = (0, react_1.useMemo)(() => { var _a; return scUserContext.user && ((_a = scGroup === null || scGroup === void 0 ? void 0 : scGroup.managed_by) === null || _a === void 0 ? void 0 : _a.id) === scUserContext.user.id; }, [scUserContext.user, (_a = scGroup === null || scGroup === void 0 ? void 0 : scGroup.managed_by) === null || _a === void 0 ? void 0 : _a.id]);
99
+ /**
100
+ * Initialize component
101
+ * Fetch data only if the component is not initialized and it is not loading data
102
+ */
103
+ const _initComponent = (0, react_1.useMemo)(() => () => {
104
+ if (!state.initialized && !state.isLoadingNext) {
105
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
106
+ api_services_1.GroupService.getGroupWaitingApprovalSubscribers(scGroup.id, { limit })
107
+ .then((payload) => {
108
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
109
+ })
110
+ .catch((error) => {
111
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
112
+ utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
113
+ });
114
+ }
115
+ }, [state.isLoadingNext, state.initialized, scGroup, limit, dispatch]);
116
+ // EFFECTS
117
+ (0, react_1.useEffect)(() => {
118
+ var _a;
119
+ let _t;
120
+ if ((contentAvailability || (!contentAvailability && ((_a = scUserContext.user) === null || _a === void 0 ? void 0 : _a.id))) && scGroup && scUserContext.user !== undefined) {
121
+ _t = setTimeout(_initComponent);
122
+ return () => {
123
+ _t && clearTimeout(_t);
124
+ };
125
+ }
126
+ }, [scUserContext.user, contentAvailability, scGroup]);
127
+ (0, react_1.useEffect)(() => {
128
+ if (openDialog && state.next && state.results.length === limit && state.initialized) {
129
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
130
+ api_services_1.GroupService.getGroupWaitingApprovalSubscribers(scGroup.id, { offset: limit, limit: 10 })
131
+ .then((payload) => {
132
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: payload });
133
+ })
134
+ .catch((error) => {
135
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
136
+ utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
137
+ });
138
+ }
139
+ }, [openDialog, state.next, state.results.length, state.initialized, limit]);
140
+ /**
141
+ * Virtual feed update
142
+ */
143
+ (0, react_1.useEffect)(() => {
144
+ onHeightChange && onHeightChange();
145
+ }, [state.results]);
146
+ (0, react_1.useEffect)(() => {
147
+ if (!scGroup || (!contentAvailability && !scUserContext.user)) {
148
+ return;
149
+ }
150
+ else if (cacheStrategy === utils_1.CacheStrategies.NETWORK_ONLY) {
151
+ onStateChange && onStateChange({ cacheStrategy: utils_1.CacheStrategies.CACHE_FIRST });
152
+ }
153
+ }, [scUserContext.user, scGroup, contentAvailability]);
154
+ (0, react_1.useEffect)(() => {
155
+ if (!scGroup || !scUserContext.user || !state.initialized) {
156
+ return;
157
+ }
158
+ }, []);
159
+ // HANDLERS
160
+ const handleNext = (0, react_1.useMemo)(() => () => {
161
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
162
+ api_services_1.http
163
+ .request({
164
+ url: state.next,
165
+ method: api_services_1.Endpoints.GetGroupWaitingApprovalSubscribers.method
166
+ })
167
+ .then((res) => {
168
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
169
+ });
170
+ }, [dispatch, state.next, state.isLoadingNext, state.initialized]);
171
+ const handleToggleDialogOpen = () => {
172
+ setOpenDialog((prev) => !prev);
173
+ };
174
+ const handleSubscribeAction = (0, react_1.useMemo)(() => (userId) => {
175
+ const newRequests = [...state.results];
176
+ const _updated = newRequests.findIndex((u) => u.id !== userId);
177
+ dispatch({
178
+ type: widget_1.actionWidgetTypes.SET_RESULTS,
179
+ payload: { results: newRequests.length > 1 ? _updated : [] }
180
+ });
181
+ }, [dispatch, state.count, state.results]);
182
+ // RENDER
183
+ if ((!state.count && state.initialized) || (!contentAvailability && !isGroupAdmin) || !scGroup || !state.count || !state.results.length) {
184
+ return react_1.default.createElement(HiddenPlaceholder_1.default, null);
185
+ }
186
+ if (!state.initialized) {
187
+ return react_1.default.createElement(Skeleton_1.default, null);
188
+ }
189
+ const content = (react_1.default.createElement(material_1.CardContent, null,
190
+ react_1.default.createElement(material_1.Typography, { className: classes.title, variant: "h5" },
191
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupRequestsWidget.title", defaultMessage: "ui.groupRequestsWidget.title" })),
192
+ react_1.default.createElement(react_1.default.Fragment, null,
193
+ react_1.default.createElement(List_1.default, null, state.results.slice(0, state.visibleItems).map((user) => (react_1.default.createElement(material_1.ListItem, { key: user.id },
194
+ react_1.default.createElement(User_1.default, { elevation: 0, actions: react_1.default.createElement(GroupSubscribeButton_1.default, { group: scGroup, groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, userId: user.id, onSubscribe: () => handleSubscribeAction(user.id) }), user: user, userId: user.id }))))),
195
+ state.count > state.visibleItems && (react_1.default.createElement(material_1.Button, { className: classes.showMore, onClick: handleToggleDialogOpen },
196
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupRequestsWidget.button.showMore", defaultMessage: "ui.groupRequestsWidget.button.showMore" })))),
197
+ openDialog && (react_1.default.createElement(DialogRoot, Object.assign({ className: classes.dialogRoot, title: react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupRequestsWidget.dialogTitle", id: "ui.groupRequestsWidget.dialogTitle", values: { total: scGroup.subscribers_counter } }), onClose: handleToggleDialogOpen, open: openDialog }, DialogProps),
198
+ react_1.default.createElement(InfiniteScroll_1.default, { dataLength: state.results.length, next: handleNext, hasMoreNext: Boolean(state.next), loaderNext: react_1.default.createElement(User_1.UserSkeleton, Object.assign({ elevation: 0 }, UserProps)), height: isMobile ? '100%' : 400, endMessage: react_1.default.createElement(material_1.Typography, { className: classes.endMessage },
199
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupRequestsWidget.noMoreResults", defaultMessage: "ui.groupRequestsWidget.noMoreResults" })) },
200
+ react_1.default.createElement(List_1.default, null, state.results.map((user) => (react_1.default.createElement(material_1.ListItem, { key: user.id },
201
+ react_1.default.createElement(User_1.default, { elevation: 0, actions: react_1.default.createElement(GroupSubscribeButton_1.default, { group: scGroup, groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, userId: user.id }), user: user, userId: user.id }))))))))));
202
+ return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest), content));
203
+ }
204
+ exports.default = GroupRequestsWidget;
@@ -0,0 +1,22 @@
1
+ import { WidgetProps } from '../Widget';
2
+ /**
3
+ * > API documentation for the Community-JS Group Requests Widget Skeleton component. Learn about the available props and the CSS API.
4
+
5
+ #### Import
6
+
7
+ ```jsx
8
+ import {GroupRequestsWidgetSkeleton} from '@selfcommunity/react-ui';
9
+ ```
10
+
11
+ #### Component Name
12
+
13
+ The name `SCGroupRequestsWidget-skeleton-root` can be used when providing style overrides in the theme.
14
+
15
+ #### CSS
16
+
17
+ |Rule Name|Global class|Description|
18
+ |---|---|---|
19
+ |root|.SCGroupRequestsWidget-skeleton-root|Styles applied to the root element.|
20
+ *
21
+ */
22
+ export default function GroupRequestsWidgetSkeleton(props: WidgetProps): JSX.Element;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importDefault(require("react"));
5
+ const CategoryTrendingUsersWidget_1 = require("../CategoryTrendingUsersWidget");
6
+ const styles_1 = require("@mui/material/styles");
7
+ const constants_1 = require("./constants");
8
+ const classes = {
9
+ root: `${constants_1.PREFIX}-skeleton-root`
10
+ };
11
+ const Root = (0, styles_1.styled)(CategoryTrendingUsersWidget_1.CategoryTrendingPeopleWidgetSkeleton, {
12
+ name: constants_1.PREFIX,
13
+ slot: 'SkeletonRoot'
14
+ })(() => ({}));
15
+ /**
16
+ * > API documentation for the Community-JS Group Requests Widget Skeleton component. Learn about the available props and the CSS API.
17
+
18
+ #### Import
19
+
20
+ ```jsx
21
+ import {GroupRequestsWidgetSkeleton} from '@selfcommunity/react-ui';
22
+ ```
23
+
24
+ #### Component Name
25
+
26
+ The name `SCGroupRequestsWidget-skeleton-root` can be used when providing style overrides in the theme.
27
+
28
+ #### CSS
29
+
30
+ |Rule Name|Global class|Description|
31
+ |---|---|---|
32
+ |root|.SCGroupRequestsWidget-skeleton-root|Styles applied to the root element.|
33
+ *
34
+ */
35
+ function GroupRequestsWidgetSkeleton(props) {
36
+ return react_1.default.createElement(Root, Object.assign({ className: classes.root }, props));
37
+ }
38
+ exports.default = GroupRequestsWidgetSkeleton;
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCGroupRequestsWidget";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PREFIX = void 0;
4
+ exports.PREFIX = 'SCGroupRequestsWidget';
@@ -0,0 +1,4 @@
1
+ import GroupRequestsWidget, { GroupRequestsWidgetProps } from './GroupRequestsWidget';
2
+ import GroupRequestsWidgetSkeleton from './Skeleton';
3
+ export default GroupRequestsWidget;
4
+ export { GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupRequestsWidgetSkeleton = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const GroupRequestsWidget_1 = tslib_1.__importDefault(require("./GroupRequestsWidget"));
6
+ const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
7
+ exports.GroupRequestsWidgetSkeleton = Skeleton_1.default;
8
+ exports.default = GroupRequestsWidget_1.default;