@selfcommunity/react-ui 0.7.9-alpha.8 → 0.7.9-alpha.9
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.
- package/lib/cjs/components/GroupHeader/GroupHeader.d.ts +6 -5
- package/lib/cjs/components/GroupHeader/GroupHeader.js +17 -9
- package/lib/cjs/components/GroupInviteButton/GroupInviteButton.js +2 -2
- package/lib/cjs/components/GroupMembersButton/GroupMembersButton.d.ts +5 -0
- package/lib/cjs/components/GroupMembersButton/GroupMembersButton.js +3 -2
- package/lib/cjs/components/GroupMembersWidget/GroupMembersWidget.js +8 -2
- package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.d.ts +0 -5
- package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.js +16 -7
- package/lib/cjs/components/GroupSettingsIconButton/GroupSettingsIconButton.d.ts +56 -0
- package/lib/cjs/components/GroupSettingsIconButton/GroupSettingsIconButton.js +137 -0
- package/lib/cjs/components/GroupSettingsIconButton/index.d.ts +3 -0
- package/lib/cjs/components/GroupSettingsIconButton/index.js +5 -0
- package/lib/cjs/components/GroupSubscribeButton/GroupSubscribeButton.d.ts +7 -2
- package/lib/cjs/components/GroupSubscribeButton/GroupSubscribeButton.js +14 -11
- package/lib/cjs/index.d.ts +2 -1
- package/lib/cjs/index.js +3 -1
- package/lib/esm/components/GroupHeader/GroupHeader.d.ts +6 -5
- package/lib/esm/components/GroupHeader/GroupHeader.js +17 -9
- package/lib/esm/components/GroupInviteButton/GroupInviteButton.js +2 -2
- package/lib/esm/components/GroupMembersButton/GroupMembersButton.d.ts +5 -0
- package/lib/esm/components/GroupMembersButton/GroupMembersButton.js +4 -3
- package/lib/esm/components/GroupMembersWidget/GroupMembersWidget.js +8 -2
- package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.d.ts +0 -5
- package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.js +16 -7
- package/lib/esm/components/GroupSettingsIconButton/GroupSettingsIconButton.d.ts +56 -0
- package/lib/esm/components/GroupSettingsIconButton/GroupSettingsIconButton.js +134 -0
- package/lib/esm/components/GroupSettingsIconButton/index.d.ts +3 -0
- package/lib/esm/components/GroupSettingsIconButton/index.js +2 -0
- package/lib/esm/components/GroupSubscribeButton/GroupSubscribeButton.d.ts +7 -2
- package/lib/esm/components/GroupSubscribeButton/GroupSubscribeButton.js +14 -11
- package/lib/esm/index.d.ts +2 -1
- package/lib/esm/index.js +2 -1
- package/lib/umd/react-ui.js +1 -1
- package/package.json +5 -5
package/lib/cjs/index.d.ts
CHANGED
|
@@ -119,6 +119,7 @@ import GroupMembersWidget, { GroupMembersWidgetProps, GroupMembersWidgetSkeleton
|
|
|
119
119
|
import GroupRequestsWidget, { GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton } from './components/GroupRequestsWidget';
|
|
120
120
|
import Groups, { GroupsProps, GroupsSkeleton } from './components/Groups';
|
|
121
121
|
import GroupForm, { GroupFormProps } from './components/GroupForm';
|
|
122
|
+
import GroupSettingsIconButton, { GroupSettingsIconButtonProps } from './components/GroupSettingsIconButton';
|
|
122
123
|
/**
|
|
123
124
|
* Constants
|
|
124
125
|
*/
|
|
@@ -143,4 +144,4 @@ import FeedObjectMediaPreview, { FeedObjectMediaPreviewProps } from './component
|
|
|
143
144
|
/**
|
|
144
145
|
* List all exports
|
|
145
146
|
*/
|
|
146
|
-
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, 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 };
|
|
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, 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 };
|
package/lib/cjs/index.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.GenericSkeleton = exports.FeedUpdatesWidgetSkeleton = exports.FeedUpdate
|
|
|
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.GroupsSkeleton = exports.Groups = exports.GroupRequestsWidgetSkeleton = exports.GroupRequestsWidget = exports.GroupMembersWidgetSkeleton = exports.GroupMembersWidget = exports.GroupSubscribeButton = 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
6
|
exports.getRelativeTime = 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 = void 0;
|
|
7
|
-
exports.BaseDialog = exports.BaseItem = exports.FooterSkeleton = exports.Footer = void 0;
|
|
7
|
+
exports.GroupSettingsIconButton = exports.BaseDialog = exports.BaseItem = exports.FooterSkeleton = exports.Footer = void 0;
|
|
8
8
|
const tslib_1 = require("tslib");
|
|
9
9
|
/**
|
|
10
10
|
* Components
|
|
@@ -309,6 +309,8 @@ exports.Groups = Groups_1.default;
|
|
|
309
309
|
Object.defineProperty(exports, "GroupsSkeleton", { enumerable: true, get: function () { return Groups_1.GroupsSkeleton; } });
|
|
310
310
|
const GroupForm_1 = tslib_1.__importDefault(require("./components/GroupForm"));
|
|
311
311
|
exports.GroupForm = GroupForm_1.default;
|
|
312
|
+
const GroupSettingsIconButton_1 = tslib_1.__importDefault(require("./components/GroupSettingsIconButton"));
|
|
313
|
+
exports.GroupSettingsIconButton = GroupSettingsIconButton_1.default;
|
|
312
314
|
/**
|
|
313
315
|
* Constants
|
|
314
316
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { SCGroupType } from '@selfcommunity/types';
|
|
3
2
|
import { ChangeGroupCoverProps } from '../ChangeGroupCover';
|
|
4
3
|
import { ChangeGroupPictureProps } from '../ChangeGroupPicture';
|
|
5
4
|
import { GroupMembersButtonProps } from '../GroupMembersButton';
|
|
5
|
+
import { GroupSubscribeButtonProps } from '../GroupSubscribeButton';
|
|
6
6
|
export interface GroupHeaderProps {
|
|
7
7
|
/**
|
|
8
8
|
* Id of group object
|
|
@@ -35,14 +35,15 @@ export interface GroupHeaderProps {
|
|
|
35
35
|
*/
|
|
36
36
|
ChangeCoverProps?: ChangeGroupCoverProps;
|
|
37
37
|
/**
|
|
38
|
-
* Props to spread
|
|
38
|
+
* Props to spread category button followed
|
|
39
39
|
* @default {}
|
|
40
40
|
*/
|
|
41
|
-
|
|
41
|
+
GroupSubscribeButtonProps?: Pick<GroupSubscribeButtonProps, Exclude<keyof GroupSubscribeButtonProps, 'group' | 'onSubscribe'>>;
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
43
|
+
* Props to spread to the group memebers button
|
|
44
|
+
* @default {}
|
|
44
45
|
*/
|
|
45
|
-
|
|
46
|
+
GroupMembersButtonProps?: GroupMembersButtonProps;
|
|
46
47
|
/**
|
|
47
48
|
* Any other properties
|
|
48
49
|
*/
|
|
@@ -14,6 +14,8 @@ import Bullet from '../../shared/Bullet';
|
|
|
14
14
|
import ChangeGroupPicture from '../ChangeGroupPicture';
|
|
15
15
|
import GroupMembersButton from '../GroupMembersButton';
|
|
16
16
|
import EditGroupButton from '../EditGroupButton';
|
|
17
|
+
import GroupSubscribeButton from '../GroupSubscribeButton';
|
|
18
|
+
import GroupInviteButton from '../GroupInviteButton';
|
|
17
19
|
const classes = {
|
|
18
20
|
root: `${PREFIX}-root`,
|
|
19
21
|
cover: `${PREFIX}-cover`,
|
|
@@ -70,7 +72,7 @@ export default function GroupHeader(inProps) {
|
|
|
70
72
|
props: inProps,
|
|
71
73
|
name: PREFIX
|
|
72
74
|
});
|
|
73
|
-
const { id = null, className = null, group, groupId = null, ChangePictureProps = {}, ChangeCoverProps = {},
|
|
75
|
+
const { id = null, className = null, group, groupId = null, ChangePictureProps = {}, ChangeCoverProps = {}, GroupSubscribeButtonProps = {}, GroupMembersButtonProps = {} } = props, rest = __rest(props, ["id", "className", "group", "groupId", "ChangePictureProps", "ChangeCoverProps", "GroupSubscribeButtonProps", "GroupMembersButtonProps"]);
|
|
74
76
|
// PREFERENCES
|
|
75
77
|
const scPreferences = useSCPreferences();
|
|
76
78
|
// CONTEXT
|
|
@@ -78,13 +80,13 @@ export default function GroupHeader(inProps) {
|
|
|
78
80
|
// HOOKS
|
|
79
81
|
const { scGroup, setSCGroup } = useSCFetchGroup({ id: groupId, group });
|
|
80
82
|
// CONST
|
|
81
|
-
const
|
|
83
|
+
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]);
|
|
82
84
|
/**
|
|
83
85
|
* Handles Change Avatar
|
|
84
86
|
* @param avatar
|
|
85
87
|
*/
|
|
86
88
|
function handleChangeAvatar(avatar) {
|
|
87
|
-
if (
|
|
89
|
+
if (isGroupAdmin) {
|
|
88
90
|
setSCGroup(Object.assign({}, scGroup, { image_bigger: avatar }));
|
|
89
91
|
}
|
|
90
92
|
}
|
|
@@ -93,10 +95,16 @@ export default function GroupHeader(inProps) {
|
|
|
93
95
|
* @param cover
|
|
94
96
|
*/
|
|
95
97
|
function handleChangeCover(cover) {
|
|
96
|
-
if (
|
|
98
|
+
if (isGroupAdmin) {
|
|
97
99
|
setSCGroup(Object.assign({}, scGroup, { emotional_image: cover }));
|
|
98
100
|
}
|
|
99
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Handles callback subscribe/unsubscribe group
|
|
104
|
+
*/
|
|
105
|
+
const handleSubscribe = (group, status) => {
|
|
106
|
+
setSCGroup(Object.assign(Object.assign({}, group), { subscribers_counter: group.subscribers_counter + (status ? 1 : -1) }));
|
|
107
|
+
};
|
|
100
108
|
// RENDER
|
|
101
109
|
if (!scGroup) {
|
|
102
110
|
return React.createElement(GroupHeaderSkeleton, null);
|
|
@@ -109,12 +117,12 @@ export default function GroupHeader(inProps) {
|
|
|
109
117
|
React.createElement(Box, { className: classes.avatar },
|
|
110
118
|
React.createElement(Avatar, null,
|
|
111
119
|
React.createElement("img", { alt: "group", src: scGroup.image_bigger ? scGroup.image_bigger : '' }))),
|
|
112
|
-
|
|
120
|
+
isGroupAdmin && (React.createElement(React.Fragment, null,
|
|
113
121
|
React.createElement(ChangeGroupPicture, Object.assign({ groupId: scGroup.id, onChange: handleChangeAvatar, className: classes.changePicture }, ChangePictureProps)),
|
|
114
122
|
React.createElement("div", { className: classes.changeCover },
|
|
115
123
|
React.createElement(ChangeGroupCover, Object.assign({ groupId: scGroup.id, onChange: handleChangeCover }, ChangeCoverProps)))))),
|
|
116
124
|
React.createElement(Box, { className: classes.info },
|
|
117
|
-
|
|
125
|
+
isGroupAdmin && React.createElement(EditGroupButton, { group: scGroup, groupId: scGroup.id, onEditSuccess: (data) => setSCGroup(data) }),
|
|
118
126
|
React.createElement(Typography, { variant: "h5", className: classes.name }, scGroup.name),
|
|
119
127
|
React.createElement(Box, { className: classes.visibility },
|
|
120
128
|
scGroup.privacy === SCGroupPrivacyType.PUBLIC ? (React.createElement(Typography, { className: classes.visibilityItem },
|
|
@@ -128,9 +136,9 @@ export default function GroupHeader(inProps) {
|
|
|
128
136
|
React.createElement(FormattedMessage, { id: "ui.groupHeader.visibility.visible", defaultMessage: "ui.groupHeader.visibility.visible" }))) : (React.createElement(Typography, { className: classes.visibilityItem },
|
|
129
137
|
React.createElement(Icon, null, "visibility_off"),
|
|
130
138
|
React.createElement(FormattedMessage, { id: "ui.groupHeader.visibility.hidden", defaultMessage: "ui.groupHeader.visibility.hidden" })))),
|
|
131
|
-
React.createElement(Box, { className: classes.members },
|
|
139
|
+
React.createElement(React.Fragment, null, ((scGroup && scGroup.privacy === SCGroupPrivacyType.PUBLIC) || isGroupAdmin) && (React.createElement(Box, { className: classes.members },
|
|
132
140
|
React.createElement(Typography, { className: classes.membersCounter, component: "div" },
|
|
133
141
|
React.createElement(FormattedMessage, { id: "ui.groupHeader.members", defaultMessage: "ui.groupHeader.members", values: { total: scGroup.subscribers_counter } })),
|
|
134
|
-
React.createElement(GroupMembersButton, Object.assign({ groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, group: scGroup }, GroupMembersButtonProps))),
|
|
135
|
-
|
|
142
|
+
React.createElement(GroupMembersButton, Object.assign({ groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, group: scGroup, autoHide: !isGroupAdmin }, GroupMembersButtonProps))))),
|
|
143
|
+
isGroupAdmin ? (React.createElement(GroupInviteButton, { group: scGroup, groupId: scGroup.id })) : (React.createElement(GroupSubscribeButton, Object.assign({ group: scGroup, onSubscribe: handleSubscribe }, GroupSubscribeButtonProps))))));
|
|
136
144
|
}
|
|
@@ -108,7 +108,7 @@ export default function GroupInviteButton(inProps) {
|
|
|
108
108
|
}, [invited]);
|
|
109
109
|
// HOOKS
|
|
110
110
|
const { scGroup } = useSCFetchGroup({ id: groupId, group });
|
|
111
|
-
const
|
|
111
|
+
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]);
|
|
112
112
|
// INTL
|
|
113
113
|
const intl = useIntl();
|
|
114
114
|
function fetchResults() {
|
|
@@ -226,7 +226,7 @@ export default function GroupInviteButton(inProps) {
|
|
|
226
226
|
/**
|
|
227
227
|
* If in group edit mode and logged-in user is not also the group manager, the component is hidden.
|
|
228
228
|
// */
|
|
229
|
-
if (group && !
|
|
229
|
+
if (group && !isGroupAdmin) {
|
|
230
230
|
return null;
|
|
231
231
|
}
|
|
232
232
|
/**
|
|
@@ -17,6 +17,11 @@ export interface GroupMembersButtonProps extends Pick<ButtonProps, Exclude<keyof
|
|
|
17
17
|
* @default {}
|
|
18
18
|
*/
|
|
19
19
|
DialogProps?: BaseDialogProps;
|
|
20
|
+
/**
|
|
21
|
+
* Hides this component
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
autoHide?: boolean;
|
|
20
25
|
/**
|
|
21
26
|
* Any other properties
|
|
22
27
|
*/
|
|
@@ -6,8 +6,9 @@ import BaseDialog from '../../shared/BaseDialog';
|
|
|
6
6
|
import { FormattedMessage } from 'react-intl';
|
|
7
7
|
import InfiniteScroll from '../../shared/InfiniteScroll';
|
|
8
8
|
import User, { UserSkeleton } from '../User';
|
|
9
|
-
import {
|
|
9
|
+
import { Endpoints, GroupService, http } from '@selfcommunity/api-services';
|
|
10
10
|
import { useSCFetchGroup } from '@selfcommunity/react-core';
|
|
11
|
+
import { SCGroupPrivacyType } from '@selfcommunity/types';
|
|
11
12
|
import AvatarGroupSkeleton from '../Skeleton/AvatarGroupSkeleton';
|
|
12
13
|
import classNames from 'classnames';
|
|
13
14
|
import { useThemeProps } from '@mui/system';
|
|
@@ -58,7 +59,7 @@ export default function GroupMembersButton(inProps) {
|
|
|
58
59
|
props: inProps,
|
|
59
60
|
name: PREFIX
|
|
60
61
|
});
|
|
61
|
-
const { className, groupId, group, DialogProps = {} } = props, rest = __rest(props, ["className", "groupId", "group", "DialogProps"]);
|
|
62
|
+
const { className, groupId, group, DialogProps = {}, autoHide = false } = props, rest = __rest(props, ["className", "groupId", "group", "DialogProps", "autoHide"]);
|
|
62
63
|
// STATE
|
|
63
64
|
const [loading, setLoading] = useState(true);
|
|
64
65
|
const [next, setNext] = useState(null);
|
|
@@ -69,7 +70,7 @@ export default function GroupMembersButton(inProps) {
|
|
|
69
70
|
const { scGroup } = useSCFetchGroup({ id: groupId, group });
|
|
70
71
|
// FETCH FIRST FOLLOWERS
|
|
71
72
|
useDeepCompareEffectNoCheck(() => {
|
|
72
|
-
if (!scGroup) {
|
|
73
|
+
if (!scGroup || (scGroup && scGroup.privacy !== SCGroupPrivacyType.PUBLIC && autoHide)) {
|
|
73
74
|
return;
|
|
74
75
|
}
|
|
75
76
|
if (members.length === 0) {
|
|
@@ -19,6 +19,7 @@ import HiddenPlaceholder from '../../shared/HiddenPlaceholder';
|
|
|
19
19
|
import { PREFIX } from './constants';
|
|
20
20
|
import User, { UserSkeleton } from '../User';
|
|
21
21
|
import GroupInviteButton from '../GroupInviteButton';
|
|
22
|
+
import GroupSettingsIconButton from '../GroupSettingsIconButton';
|
|
22
23
|
const classes = {
|
|
23
24
|
root: `${PREFIX}-root`,
|
|
24
25
|
title: `${PREFIX}-title`,
|
|
@@ -68,6 +69,7 @@ const DialogRoot = styled(BaseDialog, {
|
|
|
68
69
|
* @param inProps
|
|
69
70
|
*/
|
|
70
71
|
export default function GroupMembersWidget(inProps) {
|
|
72
|
+
var _a;
|
|
71
73
|
// PROPS
|
|
72
74
|
const props = useThemeProps({
|
|
73
75
|
props: inProps,
|
|
@@ -87,6 +89,8 @@ export default function GroupMembersWidget(inProps) {
|
|
|
87
89
|
const scUserContext = useSCUser();
|
|
88
90
|
const scPreferencesContext = useSCPreferences();
|
|
89
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]);
|
|
90
94
|
// MEMO
|
|
91
95
|
const contentAvailability = useMemo(() => SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY in scPreferencesContext.preferences &&
|
|
92
96
|
scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value, [scPreferencesContext.preferences]);
|
|
@@ -182,14 +186,16 @@ export default function GroupMembersWidget(inProps) {
|
|
|
182
186
|
!state.count ? (React.createElement(Typography, { className: classes.noResults, variant: "body2" },
|
|
183
187
|
React.createElement(FormattedMessage, { id: "ui.groupMembersWidget.subtitle.noResults", defaultMessage: "" }))) : (React.createElement(React.Fragment, null,
|
|
184
188
|
React.createElement(List, null, state.results.slice(0, state.visibleItems).map((user) => (React.createElement(ListItem, { key: user.id },
|
|
185
|
-
React.createElement(User, { elevation: 0, actions: React.createElement(
|
|
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 }))))),
|
|
186
191
|
state.count > state.visibleItems && (React.createElement(Button, { className: classes.showMore, onClick: handleToggleDialogOpen },
|
|
187
192
|
React.createElement(FormattedMessage, { id: "ui.groupMembersWidget.button.showMore", defaultMessage: "ui.groupMembersWidget.button.showMore" }))))),
|
|
188
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),
|
|
189
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 },
|
|
190
195
|
React.createElement(FormattedMessage, { id: "ui.groupMembersWidget.noMoreResults", defaultMessage: "ui.groupMembersWidget.noMoreResults" })) },
|
|
191
196
|
React.createElement(List, null, state.results.map((user) => (React.createElement(ListItem, { key: user.id },
|
|
192
|
-
React.createElement(User, { elevation: 0, actions: React.createElement(
|
|
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 }))))))))),
|
|
193
199
|
React.createElement(CardActions, { className: classes.actions },
|
|
194
200
|
React.createElement(GroupInviteButton, { groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, group: scGroup }))));
|
|
195
201
|
return (React.createElement(Root, Object.assign({ className: classNames(classes.root, className) }, rest), content));
|
|
@@ -15,11 +15,6 @@ export interface GroupRequestsWidgetProps extends VirtualScrollerItemProps, Widg
|
|
|
15
15
|
* @default null
|
|
16
16
|
*/
|
|
17
17
|
groupId?: number | string;
|
|
18
|
-
/**
|
|
19
|
-
* Hides this component
|
|
20
|
-
* @default false
|
|
21
|
-
*/
|
|
22
|
-
autoHide?: boolean;
|
|
23
18
|
/**
|
|
24
19
|
* Limit the number of users to show
|
|
25
20
|
* @default false
|
|
@@ -18,6 +18,7 @@ import { useThemeProps } from '@mui/system';
|
|
|
18
18
|
import HiddenPlaceholder from '../../shared/HiddenPlaceholder';
|
|
19
19
|
import { PREFIX } from './constants';
|
|
20
20
|
import User, { UserSkeleton } from '../User';
|
|
21
|
+
import GroupSubscribeButton from '../GroupSubscribeButton';
|
|
21
22
|
const classes = {
|
|
22
23
|
root: `${PREFIX}-root`,
|
|
23
24
|
title: `${PREFIX}-title`,
|
|
@@ -66,12 +67,13 @@ const DialogRoot = styled(BaseDialog, {
|
|
|
66
67
|
* @param inProps
|
|
67
68
|
*/
|
|
68
69
|
export default function GroupRequestsWidget(inProps) {
|
|
70
|
+
var _a;
|
|
69
71
|
// PROPS
|
|
70
72
|
const props = useThemeProps({
|
|
71
73
|
props: inProps,
|
|
72
74
|
name: PREFIX
|
|
73
75
|
});
|
|
74
|
-
const { groupId, group,
|
|
76
|
+
const { groupId, group, limit = 5, className, cacheStrategy = CacheStrategies.NETWORK_ONLY, onHeightChange, onStateChange, UserProps = {}, DialogProps = {} } = props, rest = __rest(props, ["groupId", "group", "limit", "className", "cacheStrategy", "onHeightChange", "onStateChange", "UserProps", "DialogProps"]);
|
|
75
77
|
// STATE
|
|
76
78
|
const [state, dispatch] = useReducer(dataWidgetReducer, {
|
|
77
79
|
isLoadingNext: false,
|
|
@@ -91,6 +93,7 @@ export default function GroupRequestsWidget(inProps) {
|
|
|
91
93
|
// HOOKS
|
|
92
94
|
const theme = useTheme();
|
|
93
95
|
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
|
|
96
|
+
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
97
|
/**
|
|
95
98
|
* Initialize component
|
|
96
99
|
* Fetch data only if the component is not initialized and it is not loading data
|
|
@@ -166,8 +169,15 @@ export default function GroupRequestsWidget(inProps) {
|
|
|
166
169
|
const handleToggleDialogOpen = () => {
|
|
167
170
|
setOpenDialog((prev) => !prev);
|
|
168
171
|
};
|
|
172
|
+
const handleSubscribeAction = useMemo(() => (userId) => {
|
|
173
|
+
const newRequests = [...state.results];
|
|
174
|
+
const index = newRequests.findIndex((u) => u.id === userId);
|
|
175
|
+
if (index !== -1) {
|
|
176
|
+
dispatch({ type: actionWidgetTypes.SET_RESULTS, payload: { results: newRequests } });
|
|
177
|
+
}
|
|
178
|
+
}, [dispatch, state.count, state.results]);
|
|
169
179
|
// RENDER
|
|
170
|
-
if ((
|
|
180
|
+
if ((!state.count && state.initialized) || (!contentAvailability && !isGroupAdmin) || !scGroup || !state.count) {
|
|
171
181
|
return React.createElement(HiddenPlaceholder, null);
|
|
172
182
|
}
|
|
173
183
|
if (!state.initialized) {
|
|
@@ -176,16 +186,15 @@ export default function GroupRequestsWidget(inProps) {
|
|
|
176
186
|
const content = (React.createElement(CardContent, null,
|
|
177
187
|
React.createElement(Typography, { className: classes.title, variant: "h5" },
|
|
178
188
|
React.createElement(FormattedMessage, { id: "ui.groupRequestsWidget.title", defaultMessage: "ui.groupRequestsWidget.title" })),
|
|
179
|
-
|
|
180
|
-
React.createElement(FormattedMessage, { id: "ui.groupRequestsWidget.subtitle.noResults", defaultMessage: "" }))) : (React.createElement(React.Fragment, null,
|
|
189
|
+
React.createElement(React.Fragment, null,
|
|
181
190
|
React.createElement(List, null, state.results.slice(0, state.visibleItems).map((user) => (React.createElement(ListItem, { key: user.id },
|
|
182
|
-
React.createElement(User, { elevation: 0, actions: React.createElement(
|
|
191
|
+
React.createElement(User, { elevation: 0, actions: React.createElement(GroupSubscribeButton, { group: scGroup, groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, userId: user.id, onSubscribe: () => handleSubscribeAction(user.id) }), user: user, userId: user.id }))))),
|
|
183
192
|
state.count > state.visibleItems && (React.createElement(Button, { className: classes.showMore, onClick: handleToggleDialogOpen },
|
|
184
|
-
React.createElement(FormattedMessage, { id: "ui.groupRequestsWidget.button.showMore", defaultMessage: "ui.groupRequestsWidget.button.showMore" }))))
|
|
193
|
+
React.createElement(FormattedMessage, { id: "ui.groupRequestsWidget.button.showMore", defaultMessage: "ui.groupRequestsWidget.button.showMore" })))),
|
|
185
194
|
openDialog && (React.createElement(DialogRoot, Object.assign({ className: classes.dialogRoot, title: React.createElement(FormattedMessage, { defaultMessage: "ui.groupRequestsWidget.dialogTitle", id: "ui.groupRequestsWidget.dialogTitle", values: { total: scGroup.subscribers_counter } }), onClose: handleToggleDialogOpen, open: openDialog }, DialogProps),
|
|
186
195
|
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 },
|
|
187
196
|
React.createElement(FormattedMessage, { id: "ui.groupRequestsWidget.noMoreResults", defaultMessage: "ui.groupRequestsWidget.noMoreResults" })) },
|
|
188
197
|
React.createElement(List, null, state.results.map((user) => (React.createElement(ListItem, { key: user.id },
|
|
189
|
-
React.createElement(User, { elevation: 0, actions: React.createElement(
|
|
198
|
+
React.createElement(User, { elevation: 0, actions: React.createElement(GroupSubscribeButton, { group: scGroup, groupId: scGroup === null || scGroup === void 0 ? void 0 : scGroup.id, userId: user.id }), user: user, userId: user.id }))))))))));
|
|
190
199
|
return (React.createElement(Root, Object.assign({ className: classNames(classes.root, className) }, rest), content));
|
|
191
200
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { IconButtonProps } from '@mui/material';
|
|
2
|
+
import { SCGroupType, SCUserType } from '@selfcommunity/types';
|
|
3
|
+
export interface GroupSettingsIconButtonProps extends IconButtonProps {
|
|
4
|
+
/**
|
|
5
|
+
* Overrides or extends the styles applied to the component.
|
|
6
|
+
* @default null
|
|
7
|
+
*/
|
|
8
|
+
className?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Handles callback on menu item delete click
|
|
11
|
+
*/
|
|
12
|
+
onMenuItemRemoveClick?: () => void;
|
|
13
|
+
/**
|
|
14
|
+
* Handles callback on delete confirm
|
|
15
|
+
*/
|
|
16
|
+
onItemRemoveConfirm?: () => void;
|
|
17
|
+
/**
|
|
18
|
+
* The deleting thread id
|
|
19
|
+
*/
|
|
20
|
+
userToRemove?: any;
|
|
21
|
+
/**
|
|
22
|
+
* The user
|
|
23
|
+
*/
|
|
24
|
+
user?: SCUserType;
|
|
25
|
+
/**
|
|
26
|
+
* The group obj
|
|
27
|
+
*/
|
|
28
|
+
group?: SCGroupType;
|
|
29
|
+
/**
|
|
30
|
+
* Any other properties
|
|
31
|
+
*/
|
|
32
|
+
[p: string]: any;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* > API documentation for the Community-JS PrivateMessageSettingsIconButton component. Learn about the available props and the CSS API.
|
|
36
|
+
|
|
37
|
+
#### Import
|
|
38
|
+
|
|
39
|
+
```jsx
|
|
40
|
+
import {PrivateMessageSettingsIconButton} from '@selfcommunity/react-ui';
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Component Name
|
|
44
|
+
|
|
45
|
+
The name `SCGroupSettingsIconButton` can be used when providing style overrides in the theme.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
#### CSS
|
|
49
|
+
|
|
50
|
+
|Rule Name|Global class|Description|
|
|
51
|
+
|---|---|---|
|
|
52
|
+
|root|.SCGroupSettingsIconButton-root|Styles applied to the root element.|
|
|
53
|
+
|
|
54
|
+
* @param inProps
|
|
55
|
+
*/
|
|
56
|
+
export default function GroupSettingsIconButton(inProps: GroupSettingsIconButtonProps): JSX.Element;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { __rest } from "tslib";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { styled } from '@mui/material/styles';
|
|
4
|
+
import { SwipeableDrawer, MenuItem, IconButton, Menu, useTheme, useMediaQuery, List, ListItem } from '@mui/material';
|
|
5
|
+
import { FormattedMessage } from 'react-intl';
|
|
6
|
+
import Icon from '@mui/material/Icon';
|
|
7
|
+
import classNames from 'classnames';
|
|
8
|
+
import { useThemeProps } from '@mui/system';
|
|
9
|
+
import { Link, SCRoutes, useSCRouting, useSCUser } from '@selfcommunity/react-core';
|
|
10
|
+
import ConfirmDialog from '../../shared/ConfirmDialog/ConfirmDialog';
|
|
11
|
+
const PREFIX = 'SCGroupSettingsIconButton';
|
|
12
|
+
const classes = {
|
|
13
|
+
root: `${PREFIX}-root`,
|
|
14
|
+
drawerRoot: `${PREFIX}-drawer-root`,
|
|
15
|
+
menuRoot: `${PREFIX}-menu-root`,
|
|
16
|
+
paper: `${PREFIX}-paper`,
|
|
17
|
+
item: `${PREFIX}-item`
|
|
18
|
+
};
|
|
19
|
+
const Root = styled(IconButton, {
|
|
20
|
+
name: PREFIX,
|
|
21
|
+
slot: 'Root'
|
|
22
|
+
})(() => ({}));
|
|
23
|
+
const SwipeableDrawerRoot = styled(SwipeableDrawer, {
|
|
24
|
+
name: PREFIX,
|
|
25
|
+
slot: 'DrawerRoot'
|
|
26
|
+
})(() => ({}));
|
|
27
|
+
const MenuRoot = styled(Menu, {
|
|
28
|
+
name: PREFIX,
|
|
29
|
+
slot: 'MenuRoot'
|
|
30
|
+
})(() => ({}));
|
|
31
|
+
/**
|
|
32
|
+
* > API documentation for the Community-JS PrivateMessageSettingsIconButton component. Learn about the available props and the CSS API.
|
|
33
|
+
|
|
34
|
+
#### Import
|
|
35
|
+
|
|
36
|
+
```jsx
|
|
37
|
+
import {PrivateMessageSettingsIconButton} from '@selfcommunity/react-ui';
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
#### Component Name
|
|
41
|
+
|
|
42
|
+
The name `SCGroupSettingsIconButton` can be used when providing style overrides in the theme.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
#### CSS
|
|
46
|
+
|
|
47
|
+
|Rule Name|Global class|Description|
|
|
48
|
+
|---|---|---|
|
|
49
|
+
|root|.SCGroupSettingsIconButton-root|Styles applied to the root element.|
|
|
50
|
+
|
|
51
|
+
* @param inProps
|
|
52
|
+
*/
|
|
53
|
+
export default function GroupSettingsIconButton(inProps) {
|
|
54
|
+
// PROPS
|
|
55
|
+
const props = useThemeProps({
|
|
56
|
+
props: inProps,
|
|
57
|
+
name: PREFIX
|
|
58
|
+
});
|
|
59
|
+
const { className = null, onMenuItemRemoveClick, group, user, onItemRemoveConfirm, userToRemove } = props, rest = __rest(props, ["className", "onMenuItemRemoveClick", "group", "user", "onItemRemoveConfirm", "userToRemove"]);
|
|
60
|
+
// STATE
|
|
61
|
+
const [anchorEl, setAnchorEl] = useState(null);
|
|
62
|
+
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
|
63
|
+
// HOOKS
|
|
64
|
+
const theme = useTheme();
|
|
65
|
+
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
|
|
66
|
+
const scRoutingContext = useSCRouting();
|
|
67
|
+
// CONTEXT
|
|
68
|
+
const scUserContext = useSCUser();
|
|
69
|
+
// HANDLERS
|
|
70
|
+
const handleOpen = (event) => {
|
|
71
|
+
setAnchorEl(event.currentTarget);
|
|
72
|
+
};
|
|
73
|
+
const handleClose = () => {
|
|
74
|
+
setAnchorEl(null);
|
|
75
|
+
};
|
|
76
|
+
const handleOpenDialog = () => {
|
|
77
|
+
setOpenConfirmDialog(true);
|
|
78
|
+
setAnchorEl(null);
|
|
79
|
+
};
|
|
80
|
+
const handleCloseDialog = () => {
|
|
81
|
+
setOpenConfirmDialog(false);
|
|
82
|
+
setAnchorEl(null);
|
|
83
|
+
onItemRemoveConfirm && onItemRemoveConfirm();
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Handles thread deletion
|
|
87
|
+
*/
|
|
88
|
+
function handleRemoveUser() {
|
|
89
|
+
console.log(userToRemove);
|
|
90
|
+
// GroupService.removeUserFromGroup(group.id, userToRemove)
|
|
91
|
+
// .then(() => {
|
|
92
|
+
// PubSub.publish('snippetsChannelDelete', userToRemove);
|
|
93
|
+
// handleCloseDialog();
|
|
94
|
+
// })
|
|
95
|
+
// .catch((error) => {
|
|
96
|
+
// setOpenConfirmDialog(false);
|
|
97
|
+
// console.log(error);
|
|
98
|
+
// });
|
|
99
|
+
}
|
|
100
|
+
if (scUserContext.user.id === user.id) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
*
|
|
105
|
+
*/
|
|
106
|
+
const renderList = () => {
|
|
107
|
+
if (isMobile) {
|
|
108
|
+
return [
|
|
109
|
+
React.createElement(ListItem, { className: classes.item, key: "message", component: Link, to: scRoutingContext.url(SCRoutes.USER_PRIVATE_MESSAGES_ROUTE_NAME, user) },
|
|
110
|
+
React.createElement(FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" })),
|
|
111
|
+
React.createElement(ListItem, { className: classes.item, key: "report", onClick: () => console.log('report') },
|
|
112
|
+
React.createElement(FormattedMessage, { id: "ui.groupSettingsIconButton.item.report", defaultMessage: "ui.groupSettingsIconButton.item.report" })),
|
|
113
|
+
React.createElement(ListItem, { className: classes.item, key: "delete", onClick: userToRemove ? handleOpenDialog : onMenuItemRemoveClick },
|
|
114
|
+
React.createElement(FormattedMessage, { id: "ui.groupSettingsIconButton.item.remove", defaultMessage: "ui.groupSettingsIconButton.item.remove" }))
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return [
|
|
119
|
+
React.createElement(MenuItem, { className: classes.item, component: Link, to: scRoutingContext.url(SCRoutes.USER_PRIVATE_MESSAGES_ROUTE_NAME, user), key: "message" },
|
|
120
|
+
React.createElement(FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" })),
|
|
121
|
+
React.createElement(MenuItem, { className: classes.item, onClick: () => console.log('report'), key: "report" },
|
|
122
|
+
React.createElement(FormattedMessage, { id: "ui.groupSettingsIconButton.item.report", defaultMessage: "ui.groupSettingsIconButton.item.report" })),
|
|
123
|
+
React.createElement(MenuItem, { className: classes.item, onClick: userToRemove ? handleOpenDialog : onMenuItemRemoveClick, key: "delete" },
|
|
124
|
+
React.createElement(FormattedMessage, { id: "ui.groupSettingsIconButton.item.remove", defaultMessage: "ui.groupSettingsIconButton.item.remove" }))
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
return (React.createElement(React.Fragment, null,
|
|
129
|
+
React.createElement(Root, Object.assign({ className: classNames(classes.root, className) }, rest, { onClick: handleOpen }),
|
|
130
|
+
React.createElement(Icon, null, "more_vert")),
|
|
131
|
+
isMobile ? (React.createElement(SwipeableDrawerRoot, { className: classes.drawerRoot, anchor: "bottom", open: Boolean(anchorEl), onClose: handleClose, onOpen: handleOpen, PaperProps: { className: classes.paper }, disableSwipeToOpen: true },
|
|
132
|
+
React.createElement(List, null, renderList()))) : (React.createElement(MenuRoot, { className: classes.menuRoot, anchorEl: anchorEl, open: Boolean(anchorEl), onClose: handleClose, PaperProps: { className: classes.paper } }, renderList())),
|
|
133
|
+
openConfirmDialog && (React.createElement(ConfirmDialog, { open: openConfirmDialog, title: React.createElement(FormattedMessage, { id: "ui.groupSettingsIconButton.dialog.msg", defaultMessage: "ui.groupSettingsIconButton.dialog.msg" }), btnConfirm: React.createElement(FormattedMessage, { id: "ui.groupSettingsIconButton.dialog.confirm", defaultMessage: "ui.groupSettingsIconButton.dialog.confirm" }), onConfirm: handleRemoveUser, onClose: handleCloseDialog }))));
|
|
134
|
+
}
|
|
@@ -16,11 +16,16 @@ export interface GroupSubscribeButtonProps {
|
|
|
16
16
|
*/
|
|
17
17
|
groupId?: number;
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* id of the user to be accepted into the group
|
|
20
|
+
* @default null
|
|
21
|
+
*/
|
|
22
|
+
userId?: number;
|
|
23
|
+
/**
|
|
24
|
+
* onSubscribe callback
|
|
20
25
|
* @param user
|
|
21
26
|
* @param joined
|
|
22
27
|
*/
|
|
23
|
-
|
|
28
|
+
onSubscribe?: (group: SCGroupType, status: string | null) => any;
|
|
24
29
|
/**
|
|
25
30
|
* Others properties
|
|
26
31
|
*/
|