@selfcommunity/react-ui 0.7.9-alpha.0 → 0.7.9-alpha.10

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