@selfcommunity/react-ui 0.7.9-alpha.40 → 0.7.9-alpha.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/lib/cjs/components/GroupInvitedWidget/GroupInvitedWidget.d.ts +74 -0
  2. package/lib/cjs/components/GroupInvitedWidget/GroupInvitedWidget.js +197 -0
  3. package/lib/cjs/components/GroupInvitedWidget/Skeleton.d.ts +22 -0
  4. package/lib/cjs/components/GroupInvitedWidget/Skeleton.js +38 -0
  5. package/lib/cjs/components/GroupInvitedWidget/constants.d.ts +1 -0
  6. package/lib/cjs/components/GroupInvitedWidget/constants.js +4 -0
  7. package/lib/cjs/components/GroupInvitedWidget/index.d.ts +4 -0
  8. package/lib/cjs/components/GroupInvitedWidget/index.js +8 -0
  9. package/lib/cjs/components/GroupMembersWidget/GroupMembersWidget.js +2 -6
  10. package/lib/cjs/components/User/User.d.ts +5 -0
  11. package/lib/cjs/components/User/User.js +5 -4
  12. package/lib/cjs/index.d.ts +2 -1
  13. package/lib/cjs/index.js +5 -2
  14. package/lib/esm/components/GroupInvitedWidget/GroupInvitedWidget.d.ts +74 -0
  15. package/lib/esm/components/GroupInvitedWidget/GroupInvitedWidget.js +194 -0
  16. package/lib/esm/components/GroupInvitedWidget/Skeleton.d.ts +22 -0
  17. package/lib/esm/components/GroupInvitedWidget/Skeleton.js +34 -0
  18. package/lib/esm/components/GroupInvitedWidget/constants.d.ts +1 -0
  19. package/lib/esm/components/GroupInvitedWidget/constants.js +1 -0
  20. package/lib/esm/components/GroupInvitedWidget/index.d.ts +4 -0
  21. package/lib/esm/components/GroupInvitedWidget/index.js +4 -0
  22. package/lib/esm/components/GroupMembersWidget/GroupMembersWidget.js +3 -7
  23. package/lib/esm/components/User/User.d.ts +5 -0
  24. package/lib/esm/components/User/User.js +5 -4
  25. package/lib/esm/index.d.ts +2 -1
  26. package/lib/esm/index.js +2 -1
  27. package/lib/umd/react-ui.js +1 -1
  28. package/package.json +5 -5
@@ -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 GroupInvitedWidgetProps 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 Invited 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 {GroupInvitedWidget} from '@selfcommunity/react-ui';
54
+ ```
55
+
56
+ #### Component Name
57
+
58
+ The name `SCGroupInvitedWidget` can be used when providing style overrides in the theme.
59
+
60
+
61
+ #### CSS
62
+
63
+ |Rule Name|Global class|Description|
64
+ |---|---|---|
65
+ |root|.SCGroupInvitedWidget-root|Styles applied to the root element.|
66
+ |title|.SCGroupInvitedWidget-title|Styles applied to the title element.|
67
+ |noResults|.SCGroupInvitedWidget-no-results|Styles applied to no results section.|
68
+ |showMore|.SCGroupInvitedWidget-show-more|Styles applied to show more button element.|
69
+ |dialogRoot|.SCGroupInvitedWidget-dialog-root|Styles applied to the dialog root element.|
70
+ |endMessage|.SCGroupInvitedWidget-end-message|Styles applied to the end message element.|
71
+
72
+ * @param inProps
73
+ */
74
+ export default function GroupInvitedWidget(inProps: GroupInvitedWidgetProps): JSX.Element;
@@ -0,0 +1,197 @@
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 classes = {
24
+ root: `${constants_1.PREFIX}-root`,
25
+ title: `${constants_1.PREFIX}-title`,
26
+ noResults: `${constants_1.PREFIX}-no-results`,
27
+ showMore: `${constants_1.PREFIX}-show-more`,
28
+ dialogRoot: `${constants_1.PREFIX}-dialog-root`,
29
+ endMessage: `${constants_1.PREFIX}-end-message`
30
+ };
31
+ const Root = (0, styles_1.styled)(Widget_1.default, {
32
+ name: constants_1.PREFIX,
33
+ slot: 'Root'
34
+ })(() => ({}));
35
+ const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
36
+ name: constants_1.PREFIX,
37
+ slot: 'DialogRoot'
38
+ })(() => ({}));
39
+ /**
40
+ * > API documentation for the Community-JS Group Invited Widget component. Learn about the available props and the CSS API.
41
+ *
42
+ *
43
+ * This component renders the list of the follows of the given group.
44
+ * Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/GroupRequests)
45
+
46
+ #### Import
47
+
48
+ ```jsx
49
+ import {GroupInvitedWidget} from '@selfcommunity/react-ui';
50
+ ```
51
+
52
+ #### Component Name
53
+
54
+ The name `SCGroupInvitedWidget` can be used when providing style overrides in the theme.
55
+
56
+
57
+ #### CSS
58
+
59
+ |Rule Name|Global class|Description|
60
+ |---|---|---|
61
+ |root|.SCGroupInvitedWidget-root|Styles applied to the root element.|
62
+ |title|.SCGroupInvitedWidget-title|Styles applied to the title element.|
63
+ |noResults|.SCGroupInvitedWidget-no-results|Styles applied to no results section.|
64
+ |showMore|.SCGroupInvitedWidget-show-more|Styles applied to show more button element.|
65
+ |dialogRoot|.SCGroupInvitedWidget-dialog-root|Styles applied to the dialog root element.|
66
+ |endMessage|.SCGroupInvitedWidget-end-message|Styles applied to the end message element.|
67
+
68
+ * @param inProps
69
+ */
70
+ function GroupInvitedWidget(inProps) {
71
+ var _a;
72
+ // PROPS
73
+ const props = (0, system_1.useThemeProps)({
74
+ props: inProps,
75
+ name: constants_1.PREFIX
76
+ });
77
+ 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"]);
78
+ // STATE
79
+ const [state, dispatch] = (0, react_1.useReducer)(widget_1.dataWidgetReducer, {
80
+ isLoadingNext: false,
81
+ next: null,
82
+ 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),
83
+ cacheStrategy,
84
+ visibleItems: limit
85
+ }, widget_1.stateWidgetInitializer);
86
+ const [openDialog, setOpenDialog] = (0, react_1.useState)(false);
87
+ // CONTEXT
88
+ const scUserContext = (0, react_core_1.useSCUser)();
89
+ const scPreferencesContext = (0, react_core_1.useSCPreferences)();
90
+ const { scGroup } = (0, react_core_1.useSCFetchGroup)({ id: groupId, group });
91
+ // MEMO
92
+ const contentAvailability = (0, react_1.useMemo)(() => react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY in scPreferencesContext.preferences &&
93
+ scPreferencesContext.preferences[react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value, [scPreferencesContext.preferences]);
94
+ // HOOKS
95
+ const theme = (0, material_1.useTheme)();
96
+ const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
97
+ 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]);
98
+ /**
99
+ * Initialize component
100
+ * Fetch data only if the component is not initialized and it is not loading data
101
+ */
102
+ const _initComponent = (0, react_1.useMemo)(() => () => {
103
+ if (!state.initialized && !state.isLoadingNext) {
104
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
105
+ api_services_1.GroupService.getGroupInvitedUsers(scGroup.id, { limit })
106
+ .then((payload) => {
107
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
108
+ })
109
+ .catch((error) => {
110
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
111
+ utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
112
+ });
113
+ }
114
+ }, [state.isLoadingNext, state.initialized, scGroup, limit, dispatch]);
115
+ // EFFECTS
116
+ (0, react_1.useEffect)(() => {
117
+ var _a;
118
+ let _t;
119
+ if ((contentAvailability || (!contentAvailability && ((_a = scUserContext.user) === null || _a === void 0 ? void 0 : _a.id))) && scGroup && scUserContext.user !== undefined) {
120
+ _t = setTimeout(_initComponent);
121
+ return () => {
122
+ _t && clearTimeout(_t);
123
+ };
124
+ }
125
+ }, [scUserContext.user, contentAvailability, scGroup]);
126
+ (0, react_1.useEffect)(() => {
127
+ if (openDialog && state.next && state.results.length === limit && state.initialized) {
128
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
129
+ api_services_1.GroupService.getGroupInvitedUsers(scGroup.id, { offset: limit, limit: 10 })
130
+ .then((payload) => {
131
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: payload });
132
+ })
133
+ .catch((error) => {
134
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
135
+ utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
136
+ });
137
+ }
138
+ }, [openDialog, state.next, state.results.length, state.initialized, limit]);
139
+ /**
140
+ * Virtual feed update
141
+ */
142
+ (0, react_1.useEffect)(() => {
143
+ onHeightChange && onHeightChange();
144
+ }, [state.results]);
145
+ (0, react_1.useEffect)(() => {
146
+ if (!scGroup || (!contentAvailability && !scUserContext.user)) {
147
+ return;
148
+ }
149
+ else if (cacheStrategy === utils_1.CacheStrategies.NETWORK_ONLY) {
150
+ onStateChange && onStateChange({ cacheStrategy: utils_1.CacheStrategies.CACHE_FIRST });
151
+ }
152
+ }, [scUserContext.user, scGroup, contentAvailability]);
153
+ (0, react_1.useEffect)(() => {
154
+ if (!scGroup || !scUserContext.user || !state.initialized) {
155
+ return;
156
+ }
157
+ }, []);
158
+ // HANDLERS
159
+ const handleNext = (0, react_1.useMemo)(() => () => {
160
+ dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
161
+ api_services_1.http
162
+ .request({
163
+ url: state.next,
164
+ method: api_services_1.Endpoints.GetGroupWaitingApprovalSubscribers.method
165
+ })
166
+ .then((res) => {
167
+ dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
168
+ });
169
+ }, [dispatch, state.next, state.isLoadingNext, state.initialized]);
170
+ const handleToggleDialogOpen = () => {
171
+ setOpenDialog((prev) => !prev);
172
+ };
173
+ // RENDER
174
+ if ((!state.count && state.initialized) || !contentAvailability || !scGroup || !state.count || !state.results.length || !isGroupAdmin) {
175
+ return react_1.default.createElement(HiddenPlaceholder_1.default, null);
176
+ }
177
+ if (!state.initialized) {
178
+ return react_1.default.createElement(Skeleton_1.default, null);
179
+ }
180
+ const content = (react_1.default.createElement(material_1.CardContent, null,
181
+ react_1.default.createElement(material_1.Typography, { className: classes.title, variant: "h5" },
182
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupInvitedWidget.title", defaultMessage: "ui.groupInvitedWidget.title" })),
183
+ react_1.default.createElement(react_1.default.Fragment, null,
184
+ 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 },
185
+ react_1.default.createElement(User_1.default, { elevation: 0, actions: react_1.default.createElement(material_1.Button, { disabled: true, variant: "outlined", size: "small" },
186
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupInvitedWidget.status", defaultMessage: "ui.groupInvitedWidget.status" })), user: user, userId: user.id }))))),
187
+ state.count > state.visibleItems && (react_1.default.createElement(material_1.Button, { className: classes.showMore, onClick: handleToggleDialogOpen },
188
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupInvitedWidget.button.showMore", defaultMessage: "ui.groupInvitedWidget.button.showMore" })))),
189
+ openDialog && (react_1.default.createElement(DialogRoot, Object.assign({ className: classes.dialogRoot, title: react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupInvitedWidget.dialogTitle", id: "ui.groupInvitedWidget.dialogTitle", values: { total: scGroup.subscribers_counter } }), onClose: handleToggleDialogOpen, open: openDialog }, DialogProps),
190
+ 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 },
191
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupInvitedWidget.noMoreResults", defaultMessage: "ui.groupInvitedWidget.noMoreResults" })) },
192
+ react_1.default.createElement(List_1.default, null, state.results.map((user) => (react_1.default.createElement(material_1.ListItem, { key: user.id },
193
+ react_1.default.createElement(User_1.default, { elevation: 0, actions: react_1.default.createElement(material_1.Button, { disabled: true, variant: "outlined", size: "small" },
194
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupInvitedWidget.status", defaultMessage: "ui.groupInvitedWidget.status" })), user: user, userId: user.id }))))))))));
195
+ return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest), content));
196
+ }
197
+ exports.default = GroupInvitedWidget;
@@ -0,0 +1,22 @@
1
+ import { WidgetProps } from '../Widget';
2
+ /**
3
+ * > API documentation for the Community-JS Group Invited Widget Skeleton component. Learn about the available props and the CSS API.
4
+
5
+ #### Import
6
+
7
+ ```jsx
8
+ import {GroupInvitedWidgetSkeleton} from '@selfcommunity/react-ui';
9
+ ```
10
+
11
+ #### Component Name
12
+
13
+ The name `SCGroupInvitedWidget-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|.SCGroupInvitedWidget-skeleton-root|Styles applied to the root element.|
20
+ *
21
+ */
22
+ export default function GroupInvitedWidgetSkeleton(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 Invited Widget Skeleton component. Learn about the available props and the CSS API.
17
+
18
+ #### Import
19
+
20
+ ```jsx
21
+ import {GroupInvitedWidgetSkeleton} from '@selfcommunity/react-ui';
22
+ ```
23
+
24
+ #### Component Name
25
+
26
+ The name `SCGroupInvitedWidget-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|.SCGroupInvitedWidget-skeleton-root|Styles applied to the root element.|
33
+ *
34
+ */
35
+ function GroupInvitedWidgetSkeleton(props) {
36
+ return react_1.default.createElement(Root, Object.assign({ className: classes.root }, props));
37
+ }
38
+ exports.default = GroupInvitedWidgetSkeleton;
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCGroupInvitedWidget";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PREFIX = void 0;
4
+ exports.PREFIX = 'SCGroupInvitedWidget';
@@ -0,0 +1,4 @@
1
+ import GroupInvitedWidget, { GroupInvitedWidgetProps } from './GroupInvitedWidget';
2
+ import GroupInvitedWidgetSkeleton from './Skeleton';
3
+ export default GroupInvitedWidget;
4
+ export { GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GroupInvitedWidgetSkeleton = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const GroupInvitedWidget_1 = tslib_1.__importDefault(require("./GroupInvitedWidget"));
6
+ const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
7
+ exports.GroupInvitedWidgetSkeleton = Skeleton_1.default;
8
+ exports.default = GroupInvitedWidget_1.default;
@@ -22,12 +22,10 @@ const constants_1 = require("./constants");
22
22
  const User_1 = tslib_1.__importStar(require("../User"));
23
23
  const GroupInviteButton_1 = tslib_1.__importDefault(require("../GroupInviteButton"));
24
24
  const GroupSettingsIconButton_1 = tslib_1.__importDefault(require("../GroupSettingsIconButton"));
25
- const Icon_1 = tslib_1.__importDefault(require("@mui/material/Icon"));
26
25
  const classes = {
27
26
  root: `${constants_1.PREFIX}-root`,
28
27
  title: `${constants_1.PREFIX}-title`,
29
28
  actions: `${constants_1.PREFIX}-actions`,
30
- badge: `${constants_1.PREFIX}-badge`,
31
29
  noResults: `${constants_1.PREFIX}-no-results`,
32
30
  showMore: `${constants_1.PREFIX}-show-more`,
33
31
  dialogRoot: `${constants_1.PREFIX}-dialog-root`,
@@ -202,8 +200,7 @@ function GroupMembersWidget(inProps) {
202
200
  var _a, _b;
203
201
  return (react_1.default.createElement(material_1.ListItem, { key: user.id },
204
202
  react_1.default.createElement(User_1.default, { elevation: 0, actions: isGroupAdmin ? (react_1.default.createElement(GroupSettingsIconButton_1.default, { group: scGroup, user: user, onRemoveSuccess: () => handleRefresh(user.id) })) : ((_a = scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user) === null || _a === void 0 ? void 0 : _a.id) !== user.id ? (react_1.default.createElement(material_1.Button, { size: "small", variant: "outlined", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PRIVATE_MESSAGES_ROUTE_NAME, user) },
205
- react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" }))) : null, badgeContent: ((_b = scGroup === null || scGroup === void 0 ? void 0 : scGroup.managed_by) === null || _b === void 0 ? void 0 : _b.id) === user.id ? (react_1.default.createElement(material_1.Avatar, { className: classes.badge },
206
- react_1.default.createElement(Icon_1.default, null, "face"))) : null, user: user, userId: user.id })));
203
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" }))) : null, isGroupAdmin: ((_b = scGroup === null || scGroup === void 0 ? void 0 : scGroup.managed_by) === null || _b === void 0 ? void 0 : _b.id) === user.id, user: user, userId: user.id })));
207
204
  })),
208
205
  state.count > state.visibleItems && (react_1.default.createElement(material_1.Button, { className: classes.showMore, onClick: handleToggleDialogOpen },
209
206
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupMembersWidget.button.showMore", defaultMessage: "ui.groupMembersWidget.button.showMore" }))))),
@@ -214,8 +211,7 @@ function GroupMembersWidget(inProps) {
214
211
  var _a, _b;
215
212
  return (react_1.default.createElement(material_1.ListItem, { key: user.id },
216
213
  react_1.default.createElement(User_1.default, { elevation: 0, actions: isGroupAdmin ? (react_1.default.createElement(GroupSettingsIconButton_1.default, { group: scGroup, user: user, onRemoveSuccess: () => handleRefresh(user.id) })) : ((_a = scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user) === null || _a === void 0 ? void 0 : _a.id) !== user.id ? (react_1.default.createElement(material_1.Button, { size: "small", variant: "outlined", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PRIVATE_MESSAGES_ROUTE_NAME, user) },
217
- react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" }))) : null, badgeContent: ((_b = scGroup === null || scGroup === void 0 ? void 0 : scGroup.managed_by) === null || _b === void 0 ? void 0 : _b.id) === user.id ? (react_1.default.createElement(material_1.Avatar, { className: classes.badge },
218
- react_1.default.createElement(Icon_1.default, null, "face"))) : null, user: user, userId: user.id })));
214
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" }))) : null, isGroupAdmin: ((_b = scGroup === null || scGroup === void 0 ? void 0 : scGroup.managed_by) === null || _b === void 0 ? void 0 : _b.id) === user.id, user: user, userId: user.id })));
219
215
  })))))),
220
216
  react_1.default.createElement(material_1.CardActions, { className: classes.actions },
221
217
  react_1.default.createElement(GroupInviteButton_1.default, { groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, group: scGroup }))));
@@ -34,6 +34,11 @@ export interface UserProps extends WidgetProps {
34
34
  * Badge content to show as user avatar badge if show reaction is true.
35
35
  */
36
36
  badgeContent?: any;
37
+ /**
38
+ * If true, shows a custom label next to the user username
39
+ * @default false
40
+ */
41
+ isGroupAdmin?: boolean;
37
42
  /**
38
43
  * Prop to add actions
39
44
  * @default null
@@ -23,7 +23,8 @@ const messages = (0, react_intl_1.defineMessages)({
23
23
  const classes = {
24
24
  root: `${constants_1.PREFIX}-root`,
25
25
  avatar: `${constants_1.PREFIX}-avatar`,
26
- staffBadgeLabel: `${constants_1.PREFIX}-staff-badge-label`
26
+ staffBadgeLabel: `${constants_1.PREFIX}-staff-badge-label`,
27
+ groupAdminBadgeLabel: `${constants_1.PREFIX}-group-admin-badge-label`
27
28
  };
28
29
  const Root = (0, styles_1.styled)(BaseItemButton_1.default, {
29
30
  name: constants_1.PREFIX,
@@ -66,7 +67,7 @@ function User(inProps) {
66
67
  props: inProps,
67
68
  name: constants_1.PREFIX
68
69
  });
69
- const { userId = null, user = null, handleIgnoreAction, className = null, followConnectUserButtonProps = {}, showFollowers = false, elevation, badgeContent = null, actions = null, buttonProps = {} } = props, rest = tslib_1.__rest(props, ["userId", "user", "handleIgnoreAction", "className", "followConnectUserButtonProps", "showFollowers", "elevation", "badgeContent", "actions", "buttonProps"]);
70
+ const { userId = null, user = null, handleIgnoreAction, className = null, followConnectUserButtonProps = {}, showFollowers = false, elevation, badgeContent = null, actions = null, isGroupAdmin = false, buttonProps = {} } = props, rest = tslib_1.__rest(props, ["userId", "user", "handleIgnoreAction", "className", "followConnectUserButtonProps", "showFollowers", "elevation", "badgeContent", "actions", "isGroupAdmin", "buttonProps"]);
70
71
  // STATE
71
72
  const { scUser, setSCUser } = (0, react_core_1.useSCFetchUser)({ id: userId, user });
72
73
  // CONTEXT
@@ -106,9 +107,9 @@ function User(inProps) {
106
107
  ? { onClick: () => setOpenAlert(true) }
107
108
  : { component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_ROUTE_NAME, scUser) }), image: badgeContent ? (react_1.default.createElement(material_1.Badge, { overlap: "circular", anchorOrigin: { vertical: 'bottom', horizontal: 'right' }, badgeContent: badgeContent },
108
109
  react_1.default.createElement(material_1.Avatar, { alt: scUser.username, src: scUser.avatar, className: classes.avatar }))) : (react_1.default.createElement(UserAvatar_1.default, { hide: !hasBadge },
109
- react_1.default.createElement(material_1.Avatar, { alt: scUser.username, src: scUser.avatar, className: classes.avatar }))), primary: hasBadge && preferences ? (react_1.default.createElement(react_1.default.Fragment, null,
110
+ react_1.default.createElement(material_1.Avatar, { alt: scUser.username, src: scUser.avatar, className: classes.avatar }))), primary: (hasBadge && preferences) || isGroupAdmin ? (react_1.default.createElement(react_1.default.Fragment, null,
110
111
  scUser.username,
111
- react_1.default.createElement(material_1.Chip, { component: "span", className: classes.staffBadgeLabel, size: "small", label: preferences[react_core_1.SCPreferences.STAFF_STAFF_BADGE_LABEL] }))) : (scUser.username), secondary: showFollowers ? `${intl.formatMessage(messages.userFollowers, { total: scUser.followers_counter })}` : scUser.description, actions: actions !== null && actions !== void 0 ? actions : renderAuthenticatedActions() })),
112
+ react_1.default.createElement(material_1.Chip, { component: "span", className: isGroupAdmin ? classes.groupAdminBadgeLabel : classes.staffBadgeLabel, size: "small", label: isGroupAdmin ? (react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.user.group.admin", id: "ui.user.group.admin" })) : (preferences[react_core_1.SCPreferences.STAFF_STAFF_BADGE_LABEL]) }))) : (scUser.username), secondary: showFollowers ? `${intl.formatMessage(messages.userFollowers, { total: scUser.followers_counter })}` : scUser.description, actions: actions !== null && actions !== void 0 ? actions : renderAuthenticatedActions() })),
112
113
  openAlert && react_1.default.createElement(UserDeletedSnackBar_1.default, { open: openAlert, handleClose: () => setOpenAlert(false) })));
113
114
  }
114
115
  exports.default = User;
@@ -120,6 +120,7 @@ import GroupRequestsWidget, { GroupRequestsWidgetProps, GroupRequestsWidgetSkele
120
120
  import Groups, { GroupsProps, GroupsSkeleton } from './components/Groups';
121
121
  import GroupForm, { GroupFormProps } from './components/GroupForm';
122
122
  import GroupSettingsIconButton, { GroupSettingsIconButtonProps } from './components/GroupSettingsIconButton';
123
+ import GroupInvitedWidget, { GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton } from './components/GroupInvitedWidget';
123
124
  /**
124
125
  * Constants
125
126
  */
@@ -144,4 +145,4 @@ import FeedObjectMediaPreview, { FeedObjectMediaPreviewProps } from './component
144
145
  /**
145
146
  * List all exports
146
147
  */
147
- export { AccountDataPortability, AccountDataPortabilityProps, AccountDataPortabilityButton, AccountDataPortabilityButtonProps, AccountDelete, AccountDeleteProps, AccountDeleteButton, AccountDeleteButtonProps, AccountRecover, AccountRecoverProps, AccountReset, AccountResetProps, AccountVerify, AccountVerifyProps, AccountChangeMailValidation, AccountChangeMailValidationProps, NavigationSettingsIconButton, NavigationSettingsIconButtonProps, NavigationSettingsItem, NavigationToolbarMobile, NavigationToolbarMobileProps, NavigationToolbarMobileSkeleton, NavigationToolbar, NavigationToolbarProps, NavigationToolbarSkeleton, NavigationMenuIconButton, NavigationMenuContent, NavigationMenuIconButtonProps, BottomNavigation, BottomNavigationProps, BroadcastMessages, BroadcastMessagesProps, BroadcastMessagesSkeleton, Category, CategoryProps, CategorySkeleton, CategoryAutocomplete, CategoryAutocompleteProps, CategoryFollowersButton, CategoryFollowersButtonProps, CategoryHeader, CategoryHeaderProps, CategoryHeaderSkeleton, Categories, CategoriesProps, CategoriesSkeleton, CategoriesSkeletonProps, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton, CategoriesPopularWidget, CategoriesPopularWidgetSkeleton, CategoriesSuggestionWidget, CategoriesSuggestionWidgetProps, CategoriesSuggestionWidgetSkeleton, ChangeCover, ChangePicture, ChangePictureProps, ChangeCoverProps, Composer, ComposerProps, ComposerIconButton, ComposerIconButtonProps, Editor, EditorProps, EditorSkeleton, FriendshipUserButton, FriendshipButtonProps, Feed, FeedRef, FeedProps, FeedSidebarProps, FeedSkeleton, CategoryFollowButton, CategoryFollowButtonProps, FollowUserButton, FollowUserButtonProps, ConnectionUserButton, FeedObject, FeedObjectProps, FeedObjectSkeleton, FeedObjectMediaPreview, FeedObjectMediaPreviewProps, FeedUpdatesWidget, FeedUpdatesWidgetProps, FeedUpdatesWidgetSkeleton, GenericSkeleton, AvatarGroupSkeleton, CommentObject, CommentsObject, CommentsObjectProps, CommentObjectProps, CommentsObjectSkeleton, CommentObjectSkeleton, CommentObjectReply, CommentObjectReplyProps, CommentsFeedObject, CommentsFeedObjectProps, CommentsFeedObjectSkeleton, ReplyComment, InlineComposerWidget, InlineComposerWidgetProps, InlineComposerWidgetSkeleton, Notification, NotificationProps, NotificationSkeleton, UserSuggestionWidget, UserSuggestionWidgetProps, UserSuggestionWidgetSkeleton, PlatformWidget, PlatformWidgetProps, PlatformWidgetSkeleton, LocationAutocomplete, LocationAutocompleteProps, LoyaltyProgramWidget, LoyaltyProgramWidgetProps, LoyaltyProgramWidgetSkeleton, CategoryTrendingFeedWidget, CategoryTrendingFeedWidgetProps, CategoryTrendingFeedWidgetSkeleton, CategoryTrendingUsersWidget, CategoryTrendingUsersWidgetProps, CategoryTrendingPeopleWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectWidgetProps, RelatedFeedObjectsWidgetSkeleton, UserActionIconButton, UserActionIconButtonProps, UserCounters, UserCountersProps, UserProfileHeader, UserProfileHeaderProps, UserProfileHeaderSkeleton, UserInfoDialog, UserInfoDialogProps, UserInfo, UserInfoProps, UserInfoSkeleton, UserProfileBlocked, UserProfileBlockedProps, SCUserProfileFields, SCUserProfileSettings, UserProfileEdit, UserProfileEditProps, UserProfileEditSkeleton, UserProfileEditSectionPublicInfo, UserProfileEditSectionPublicInfoProps, UserProfileEditSectionSettings, UserProfileEditSectionSettingsProps, UserProfileEditSectionAccount, UserProfileEditSectionAccountProps, UserFollowedUsersWidget, UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetProps, UserFollowersWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetProps, UserConnectionsRequestsSentWidgetSkeleton, UserSocialAssociation, UserSocialAssociationProps, SCUserSocialAssociations, CustomAdv, CustomAdvProps, CustomAdvSkeleton, User, UserProps, UserSkeleton, PrivateMessageThread, PrivateMessageThreadProps, PrivateMessageThreadSkeleton, PrivateMessageThreadItem, PrivateMessageThreadItemProps, PrivateMessageThreadItemSkeleton, PrivateMessageSnippetItem, PrivateMessageSnippetItemProps, PrivateMessageSnippetItemSkeleton, PrivateMessageEditor, PrivateMessageEditorProps, PrivateMessageEditorSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsProps, PrivateMessageSnippetsSkeleton, PrivateMessageComponent, PrivateMessageComponentProps, PrivateMessageComponentSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSettingsIconButtonProps, ToastNotifications, ToastNotificationsProps, ToastNotificationsSkeleton, SnippetNotifications, SnippetNotificationsProps, SnippetNotificationsSkeleton, SearchAutocomplete, SearchAutocompleteProps, SearchDialog, SearchDialogProps, Widget, WidgetProps, SCFeedWidgetType, SCFeedObjectTemplateType, SCCommentsOrderBy, SCFeedObjectActivitiesType, SCMediaObjectType, SCMediaChunkType, SCNotificationObjectTemplateType, SCBroadcastMessageTemplateType, ChangeGroupCover, ChangeGroupCoverProps, ChangeGroupPicture, ChangeGroupPictureProps, GroupHeader, GroupHeaderProps, GroupHeaderSkeleton, GroupMembersButton, GroupMembersButtonProps, CreateGroupButton, CreateGroupButtonProps, EditGroupButton, EditGroupButtonProps, GroupInviteButton, GroupInviteButtonProps, GroupInfoWidget, GroupInfoWidgetProps, GroupInfoWidgetSkeleton, Group, GroupProps, GroupSkeleton, GroupSubscribeButton, GroupSubscribeButtonProps, GroupMembersWidget, GroupMembersWidgetProps, GroupMembersWidgetSkeleton, GroupRequestsWidget, GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton, Groups, GroupsProps, GroupsSkeleton, GroupForm, GroupFormProps, HiddenPlaceholder, UrlTextField, UsernameTextField, EmailTextField, PasswordTextField, PhoneTextField, MetadataField, InfiniteScroll, StickyBox, useStickyBox, StickyBoxProps, StickyBoxComponent, UseStickyBoxProps, TagChip, TagChipProps, UserDeletedSnackBar, UserDeletedSnackBarProps, UserAvatar, UserAvatarProps, Lightbox, CentralProgress, ConfirmDialog, LanguageSwitcher, MediaChunkUploader, MediaChunkUploaderProps, File, Link, Share, EditMediaProps, MEDIA_TYPE_EMBED, FACEBOOK_SHARE, TWITTER_SHARE, LINKEDIN_SHARE, DEFAULT_PRELOAD_OFFSET_VIEWPORT, MIN_PRELOAD_OFFSET_VIEWPORT, MAX_PRELOAD_OFFSET_VIEWPORT, ConsentSolution, ConsentSolutionProps, ConsentSolutionSkeleton, ConsentSolutionButton, ConsentSolutionButtonProps, LEGAL_POLICIES, DEFAULT_FIELDS, DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PAGINATION_OFFSET, DEFAULT_PAGINATION_LIMIT, DEFAULT_WIDGETS_NUMBER, PollSuggestionWidget, PollSuggestionWidgetProps, Incubator, IncubatorSubscribeButton, IncubatorSubscribeButtonProps, IncubatorProps, IncubatorListWidget, IncubatorListWidgetProps, IncubatorDetail, IncubatorDetailProps, IncubatorSuggestionWidget, IncubatorSuggestionWidgetProps, ContributionUtils, bytesToSize, getUnseenNotification, getUnseenNotificationCounter, MessageUploaderUtils, getRelativeTime, Footer, FooterProps, FooterSkeleton, BaseItem, BaseItemProps, BaseDialog, BaseDialogProps, GroupSettingsIconButton, GroupSettingsIconButtonProps };
148
+ export { AccountDataPortability, AccountDataPortabilityProps, AccountDataPortabilityButton, AccountDataPortabilityButtonProps, AccountDelete, AccountDeleteProps, AccountDeleteButton, AccountDeleteButtonProps, AccountRecover, AccountRecoverProps, AccountReset, AccountResetProps, AccountVerify, AccountVerifyProps, AccountChangeMailValidation, AccountChangeMailValidationProps, NavigationSettingsIconButton, NavigationSettingsIconButtonProps, NavigationSettingsItem, NavigationToolbarMobile, NavigationToolbarMobileProps, NavigationToolbarMobileSkeleton, NavigationToolbar, NavigationToolbarProps, NavigationToolbarSkeleton, NavigationMenuIconButton, NavigationMenuContent, NavigationMenuIconButtonProps, BottomNavigation, BottomNavigationProps, BroadcastMessages, BroadcastMessagesProps, BroadcastMessagesSkeleton, Category, CategoryProps, CategorySkeleton, CategoryAutocomplete, CategoryAutocompleteProps, CategoryFollowersButton, CategoryFollowersButtonProps, CategoryHeader, CategoryHeaderProps, CategoryHeaderSkeleton, Categories, CategoriesProps, CategoriesSkeleton, CategoriesSkeletonProps, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton, CategoriesPopularWidget, CategoriesPopularWidgetSkeleton, CategoriesSuggestionWidget, CategoriesSuggestionWidgetProps, CategoriesSuggestionWidgetSkeleton, ChangeCover, ChangePicture, ChangePictureProps, ChangeCoverProps, Composer, ComposerProps, ComposerIconButton, ComposerIconButtonProps, Editor, EditorProps, EditorSkeleton, FriendshipUserButton, FriendshipButtonProps, Feed, FeedRef, FeedProps, FeedSidebarProps, FeedSkeleton, CategoryFollowButton, CategoryFollowButtonProps, FollowUserButton, FollowUserButtonProps, ConnectionUserButton, FeedObject, FeedObjectProps, FeedObjectSkeleton, FeedObjectMediaPreview, FeedObjectMediaPreviewProps, FeedUpdatesWidget, FeedUpdatesWidgetProps, FeedUpdatesWidgetSkeleton, GenericSkeleton, AvatarGroupSkeleton, CommentObject, CommentsObject, CommentsObjectProps, CommentObjectProps, CommentsObjectSkeleton, CommentObjectSkeleton, CommentObjectReply, CommentObjectReplyProps, CommentsFeedObject, CommentsFeedObjectProps, CommentsFeedObjectSkeleton, ReplyComment, InlineComposerWidget, InlineComposerWidgetProps, InlineComposerWidgetSkeleton, Notification, NotificationProps, NotificationSkeleton, UserSuggestionWidget, UserSuggestionWidgetProps, UserSuggestionWidgetSkeleton, PlatformWidget, PlatformWidgetProps, PlatformWidgetSkeleton, LocationAutocomplete, LocationAutocompleteProps, LoyaltyProgramWidget, LoyaltyProgramWidgetProps, LoyaltyProgramWidgetSkeleton, CategoryTrendingFeedWidget, CategoryTrendingFeedWidgetProps, CategoryTrendingFeedWidgetSkeleton, CategoryTrendingUsersWidget, CategoryTrendingUsersWidgetProps, CategoryTrendingPeopleWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectWidgetProps, RelatedFeedObjectsWidgetSkeleton, UserActionIconButton, UserActionIconButtonProps, UserCounters, UserCountersProps, UserProfileHeader, UserProfileHeaderProps, UserProfileHeaderSkeleton, UserInfoDialog, UserInfoDialogProps, UserInfo, UserInfoProps, UserInfoSkeleton, UserProfileBlocked, UserProfileBlockedProps, SCUserProfileFields, SCUserProfileSettings, UserProfileEdit, UserProfileEditProps, UserProfileEditSkeleton, UserProfileEditSectionPublicInfo, UserProfileEditSectionPublicInfoProps, UserProfileEditSectionSettings, UserProfileEditSectionSettingsProps, UserProfileEditSectionAccount, UserProfileEditSectionAccountProps, UserFollowedUsersWidget, UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetProps, UserFollowersWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetProps, UserConnectionsRequestsSentWidgetSkeleton, UserSocialAssociation, UserSocialAssociationProps, SCUserSocialAssociations, CustomAdv, CustomAdvProps, CustomAdvSkeleton, User, UserProps, UserSkeleton, PrivateMessageThread, PrivateMessageThreadProps, PrivateMessageThreadSkeleton, PrivateMessageThreadItem, PrivateMessageThreadItemProps, PrivateMessageThreadItemSkeleton, PrivateMessageSnippetItem, PrivateMessageSnippetItemProps, PrivateMessageSnippetItemSkeleton, PrivateMessageEditor, PrivateMessageEditorProps, PrivateMessageEditorSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsProps, PrivateMessageSnippetsSkeleton, PrivateMessageComponent, PrivateMessageComponentProps, PrivateMessageComponentSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSettingsIconButtonProps, ToastNotifications, ToastNotificationsProps, ToastNotificationsSkeleton, SnippetNotifications, SnippetNotificationsProps, SnippetNotificationsSkeleton, SearchAutocomplete, SearchAutocompleteProps, SearchDialog, SearchDialogProps, Widget, WidgetProps, SCFeedWidgetType, SCFeedObjectTemplateType, SCCommentsOrderBy, SCFeedObjectActivitiesType, SCMediaObjectType, SCMediaChunkType, SCNotificationObjectTemplateType, SCBroadcastMessageTemplateType, ChangeGroupCover, ChangeGroupCoverProps, ChangeGroupPicture, ChangeGroupPictureProps, GroupHeader, GroupHeaderProps, GroupHeaderSkeleton, GroupMembersButton, GroupMembersButtonProps, CreateGroupButton, CreateGroupButtonProps, EditGroupButton, EditGroupButtonProps, GroupInviteButton, GroupInviteButtonProps, GroupInfoWidget, GroupInfoWidgetProps, GroupInfoWidgetSkeleton, Group, GroupProps, GroupSkeleton, GroupSubscribeButton, GroupSubscribeButtonProps, GroupMembersWidget, GroupMembersWidgetProps, GroupMembersWidgetSkeleton, GroupRequestsWidget, GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton, Groups, GroupsProps, GroupsSkeleton, GroupForm, GroupFormProps, GroupInvitedWidget, GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton, HiddenPlaceholder, UrlTextField, UsernameTextField, EmailTextField, PasswordTextField, PhoneTextField, MetadataField, InfiniteScroll, StickyBox, useStickyBox, StickyBoxProps, StickyBoxComponent, UseStickyBoxProps, TagChip, TagChipProps, UserDeletedSnackBar, UserDeletedSnackBarProps, UserAvatar, UserAvatarProps, Lightbox, CentralProgress, ConfirmDialog, LanguageSwitcher, MediaChunkUploader, MediaChunkUploaderProps, File, Link, Share, EditMediaProps, MEDIA_TYPE_EMBED, FACEBOOK_SHARE, TWITTER_SHARE, LINKEDIN_SHARE, DEFAULT_PRELOAD_OFFSET_VIEWPORT, MIN_PRELOAD_OFFSET_VIEWPORT, MAX_PRELOAD_OFFSET_VIEWPORT, ConsentSolution, ConsentSolutionProps, ConsentSolutionSkeleton, ConsentSolutionButton, ConsentSolutionButtonProps, LEGAL_POLICIES, DEFAULT_FIELDS, DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PAGINATION_OFFSET, DEFAULT_PAGINATION_LIMIT, DEFAULT_WIDGETS_NUMBER, PollSuggestionWidget, PollSuggestionWidgetProps, Incubator, IncubatorSubscribeButton, IncubatorSubscribeButtonProps, IncubatorProps, IncubatorListWidget, IncubatorListWidgetProps, IncubatorDetail, IncubatorDetailProps, IncubatorSuggestionWidget, IncubatorSuggestionWidgetProps, ContributionUtils, bytesToSize, getUnseenNotification, getUnseenNotificationCounter, MessageUploaderUtils, getRelativeTime, Footer, FooterProps, FooterSkeleton, BaseItem, BaseItemProps, BaseDialog, BaseDialogProps, GroupSettingsIconButton, GroupSettingsIconButtonProps };
package/lib/cjs/index.js CHANGED
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GenericSkeleton = exports.FeedUpdatesWidgetSkeleton = exports.FeedUpdatesWidget = exports.FeedObjectMediaPreview = exports.FeedObjectSkeleton = exports.FeedObject = exports.ConnectionUserButton = exports.FollowUserButton = exports.CategoryFollowButton = exports.FeedSkeleton = exports.Feed = exports.FriendshipUserButton = exports.EditorSkeleton = exports.Editor = exports.ComposerIconButton = exports.Composer = exports.ChangePicture = exports.ChangeCover = exports.CategoriesSuggestionWidgetSkeleton = exports.CategoriesSuggestionWidget = exports.CategoriesPopularWidgetSkeleton = exports.CategoriesPopularWidget = exports.UserFollowedCategoriesWidgetSkeleton = exports.UserFollowedCategoriesWidget = exports.CategoriesSkeleton = exports.Categories = exports.CategoryHeaderSkeleton = exports.CategoryHeader = exports.CategoryFollowersButton = exports.CategoryAutocomplete = exports.CategorySkeleton = exports.Category = exports.BroadcastMessagesSkeleton = exports.BroadcastMessages = exports.BottomNavigation = exports.NavigationMenuContent = exports.NavigationMenuIconButton = exports.NavigationToolbarSkeleton = exports.NavigationToolbar = exports.NavigationToolbarMobileSkeleton = exports.NavigationToolbarMobile = exports.NavigationSettingsIconButton = exports.AccountChangeMailValidation = exports.AccountVerify = exports.AccountReset = exports.AccountRecover = exports.AccountDeleteButton = exports.AccountDelete = exports.AccountDataPortabilityButton = exports.AccountDataPortability = void 0;
4
4
  exports.UserConnectionsRequestsSentWidget = exports.UserConnectionsRequestsWidgetSkeleton = exports.UserConnectionsRequestsWidget = exports.UserConnectionsWidgetSkeleton = exports.UserConnectionsWidget = exports.UserFollowersWidgetSkeleton = exports.UserFollowersWidget = exports.UserFollowedUsersWidgetSkeleton = exports.UserFollowedUsersWidget = exports.UserProfileEditSectionAccount = exports.UserProfileEditSectionSettings = exports.UserProfileEditSectionPublicInfo = exports.UserProfileEditSkeleton = exports.UserProfileEdit = exports.SCUserProfileSettings = exports.SCUserProfileFields = exports.UserProfileBlocked = exports.UserInfoSkeleton = exports.UserInfo = exports.UserInfoDialog = exports.UserProfileHeaderSkeleton = exports.UserProfileHeader = exports.UserCounters = exports.UserActionIconButton = exports.RelatedFeedObjectsWidgetSkeleton = exports.RelatedFeedObjectsWidget = exports.CategoryTrendingPeopleWidgetSkeleton = exports.CategoryTrendingUsersWidget = exports.CategoryTrendingFeedWidgetSkeleton = exports.CategoryTrendingFeedWidget = exports.LoyaltyProgramWidgetSkeleton = exports.LoyaltyProgramWidget = exports.LocationAutocomplete = exports.PlatformWidgetSkeleton = exports.PlatformWidget = exports.UserSuggestionWidgetSkeleton = exports.UserSuggestionWidget = exports.NotificationSkeleton = exports.Notification = exports.InlineComposerWidgetSkeleton = exports.InlineComposerWidget = exports.ReplyComment = exports.CommentsFeedObjectSkeleton = exports.CommentsFeedObject = exports.CommentObjectReply = exports.CommentObjectSkeleton = exports.CommentsObjectSkeleton = exports.CommentsObject = exports.CommentObject = exports.AvatarGroupSkeleton = void 0;
5
5
  exports.Groups = exports.GroupRequestsWidgetSkeleton = exports.GroupRequestsWidget = exports.GroupMembersWidgetSkeleton = exports.GroupMembersWidget = exports.GroupSubscribeButton = exports.GroupSkeleton = exports.Group = exports.GroupInfoWidgetSkeleton = exports.GroupInfoWidget = exports.GroupInviteButton = exports.EditGroupButton = exports.CreateGroupButton = exports.GroupMembersButton = exports.GroupHeaderSkeleton = exports.GroupHeader = exports.ChangeGroupPicture = exports.ChangeGroupCover = exports.SCBroadcastMessageTemplateType = exports.SCNotificationObjectTemplateType = exports.SCFeedObjectActivitiesType = exports.SCCommentsOrderBy = exports.SCFeedObjectTemplateType = exports.Widget = exports.SearchDialog = exports.SearchAutocomplete = exports.SnippetNotificationsSkeleton = exports.SnippetNotifications = exports.ToastNotificationsSkeleton = exports.ToastNotifications = exports.PrivateMessageSettingsIconButton = exports.PrivateMessageComponentSkeleton = exports.PrivateMessageComponent = exports.PrivateMessageSnippetsSkeleton = exports.PrivateMessageSnippets = exports.PrivateMessageEditorSkeleton = exports.PrivateMessageEditor = exports.PrivateMessageSnippetItemSkeleton = exports.PrivateMessageSnippetItem = exports.PrivateMessageThreadItemSkeleton = exports.PrivateMessageThreadItem = exports.PrivateMessageThreadSkeleton = exports.PrivateMessageThread = exports.UserSkeleton = exports.User = exports.CustomAdvSkeleton = exports.CustomAdv = exports.SCUserSocialAssociations = exports.UserSocialAssociation = exports.UserConnectionsRequestsSentWidgetSkeleton = void 0;
6
- exports.MessageUploaderUtils = exports.getUnseenNotificationCounter = exports.getUnseenNotification = exports.bytesToSize = exports.ContributionUtils = exports.IncubatorSuggestionWidget = exports.IncubatorDetail = exports.IncubatorListWidget = exports.IncubatorSubscribeButton = exports.Incubator = exports.PollSuggestionWidget = exports.DEFAULT_WIDGETS_NUMBER = exports.DEFAULT_PAGINATION_LIMIT = exports.DEFAULT_PAGINATION_OFFSET = exports.DEFAULT_PAGINATION_QUERY_PARAM_NAME = exports.DEFAULT_FIELDS = exports.LEGAL_POLICIES = exports.ConsentSolutionButton = exports.ConsentSolutionSkeleton = exports.ConsentSolution = exports.MAX_PRELOAD_OFFSET_VIEWPORT = exports.MIN_PRELOAD_OFFSET_VIEWPORT = exports.DEFAULT_PRELOAD_OFFSET_VIEWPORT = exports.LINKEDIN_SHARE = exports.TWITTER_SHARE = exports.FACEBOOK_SHARE = exports.MEDIA_TYPE_EMBED = exports.Share = exports.Link = exports.File = exports.MediaChunkUploader = exports.LanguageSwitcher = exports.ConfirmDialog = exports.CentralProgress = exports.Lightbox = exports.UserAvatar = exports.UserDeletedSnackBar = exports.TagChip = exports.useStickyBox = exports.StickyBox = exports.InfiniteScroll = exports.MetadataField = exports.PhoneTextField = exports.PasswordTextField = exports.EmailTextField = exports.UsernameTextField = exports.UrlTextField = exports.HiddenPlaceholder = exports.GroupForm = exports.GroupsSkeleton = void 0;
7
- exports.GroupSettingsIconButton = exports.BaseDialog = exports.BaseItem = exports.FooterSkeleton = exports.Footer = exports.getRelativeTime = void 0;
6
+ exports.getUnseenNotification = exports.bytesToSize = exports.ContributionUtils = exports.IncubatorSuggestionWidget = exports.IncubatorDetail = exports.IncubatorListWidget = exports.IncubatorSubscribeButton = exports.Incubator = exports.PollSuggestionWidget = exports.DEFAULT_WIDGETS_NUMBER = exports.DEFAULT_PAGINATION_LIMIT = exports.DEFAULT_PAGINATION_OFFSET = exports.DEFAULT_PAGINATION_QUERY_PARAM_NAME = exports.DEFAULT_FIELDS = exports.LEGAL_POLICIES = exports.ConsentSolutionButton = exports.ConsentSolutionSkeleton = exports.ConsentSolution = exports.MAX_PRELOAD_OFFSET_VIEWPORT = exports.MIN_PRELOAD_OFFSET_VIEWPORT = exports.DEFAULT_PRELOAD_OFFSET_VIEWPORT = exports.LINKEDIN_SHARE = exports.TWITTER_SHARE = exports.FACEBOOK_SHARE = exports.MEDIA_TYPE_EMBED = exports.Share = exports.Link = exports.File = exports.MediaChunkUploader = exports.LanguageSwitcher = exports.ConfirmDialog = exports.CentralProgress = exports.Lightbox = exports.UserAvatar = exports.UserDeletedSnackBar = exports.TagChip = exports.useStickyBox = exports.StickyBox = exports.InfiniteScroll = exports.MetadataField = exports.PhoneTextField = exports.PasswordTextField = exports.EmailTextField = exports.UsernameTextField = exports.UrlTextField = exports.HiddenPlaceholder = exports.GroupInvitedWidgetSkeleton = exports.GroupInvitedWidget = exports.GroupForm = exports.GroupsSkeleton = void 0;
7
+ exports.GroupSettingsIconButton = exports.BaseDialog = exports.BaseItem = exports.FooterSkeleton = exports.Footer = exports.getRelativeTime = exports.MessageUploaderUtils = exports.getUnseenNotificationCounter = void 0;
8
8
  const tslib_1 = require("tslib");
9
9
  /**
10
10
  * Components
@@ -312,6 +312,9 @@ const GroupForm_1 = tslib_1.__importDefault(require("./components/GroupForm"));
312
312
  exports.GroupForm = GroupForm_1.default;
313
313
  const GroupSettingsIconButton_1 = tslib_1.__importDefault(require("./components/GroupSettingsIconButton"));
314
314
  exports.GroupSettingsIconButton = GroupSettingsIconButton_1.default;
315
+ const GroupInvitedWidget_1 = tslib_1.__importStar(require("./components/GroupInvitedWidget"));
316
+ exports.GroupInvitedWidget = GroupInvitedWidget_1.default;
317
+ Object.defineProperty(exports, "GroupInvitedWidgetSkeleton", { enumerable: true, get: function () { return GroupInvitedWidget_1.GroupInvitedWidgetSkeleton; } });
315
318
  /**
316
319
  * Constants
317
320
  */
@@ -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 GroupInvitedWidgetProps 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 Invited 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 {GroupInvitedWidget} from '@selfcommunity/react-ui';
54
+ ```
55
+
56
+ #### Component Name
57
+
58
+ The name `SCGroupInvitedWidget` can be used when providing style overrides in the theme.
59
+
60
+
61
+ #### CSS
62
+
63
+ |Rule Name|Global class|Description|
64
+ |---|---|---|
65
+ |root|.SCGroupInvitedWidget-root|Styles applied to the root element.|
66
+ |title|.SCGroupInvitedWidget-title|Styles applied to the title element.|
67
+ |noResults|.SCGroupInvitedWidget-no-results|Styles applied to no results section.|
68
+ |showMore|.SCGroupInvitedWidget-show-more|Styles applied to show more button element.|
69
+ |dialogRoot|.SCGroupInvitedWidget-dialog-root|Styles applied to the dialog root element.|
70
+ |endMessage|.SCGroupInvitedWidget-end-message|Styles applied to the end message element.|
71
+
72
+ * @param inProps
73
+ */
74
+ export default function GroupInvitedWidget(inProps: GroupInvitedWidgetProps): JSX.Element;