@selfcommunity/react-ui 0.7.9-alpha.0 → 0.7.9-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/BottomNavigation/BottomNavigation.js +3 -1
- package/lib/cjs/components/ChangeGroupCover/ChangeGroupCover.d.ts +55 -0
- package/lib/cjs/components/ChangeGroupCover/ChangeGroupCover.js +140 -0
- package/lib/cjs/components/ChangeGroupCover/constants.d.ts +1 -0
- package/lib/cjs/components/ChangeGroupCover/constants.js +4 -0
- package/lib/cjs/components/ChangeGroupCover/index.d.ts +3 -0
- package/lib/cjs/components/ChangeGroupCover/index.js +5 -0
- package/lib/cjs/components/ChangeGroupPicture/ChangeGroupPicture.d.ts +57 -0
- package/lib/cjs/components/ChangeGroupPicture/ChangeGroupPicture.js +135 -0
- package/lib/cjs/components/ChangeGroupPicture/constants.d.ts +1 -0
- package/lib/cjs/components/ChangeGroupPicture/constants.js +4 -0
- package/lib/cjs/components/ChangeGroupPicture/index.d.ts +3 -0
- package/lib/cjs/components/ChangeGroupPicture/index.js +5 -0
- package/lib/cjs/components/Composer/Attributes/Attributes.d.ts +1 -1
- package/lib/cjs/components/Composer/Attributes/Attributes.js +7 -0
- package/lib/cjs/components/Composer/Composer.d.ts +2 -1
- package/lib/cjs/components/Composer/Composer.js +39 -12
- package/lib/cjs/components/Composer/Content/ContentDiscussion/ContentDiscussion.js +7 -3
- package/lib/cjs/components/Composer/Content/ContentPost/ContentPost.js +4 -3
- package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +7 -1
- package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.js +46 -12
- package/lib/cjs/components/CreateGroupButton/CreateGroupButton.d.ts +38 -0
- package/lib/cjs/components/CreateGroupButton/CreateGroupButton.js +72 -0
- package/lib/cjs/components/CreateGroupButton/index.d.ts +3 -0
- package/lib/cjs/components/CreateGroupButton/index.js +5 -0
- package/lib/cjs/components/CustomAdv/CustomAdv.d.ts +4 -0
- package/lib/cjs/components/EditGroupButton/EditGroupButton.d.ts +43 -0
- package/lib/cjs/components/EditGroupButton/EditGroupButton.js +61 -0
- package/lib/cjs/components/EditGroupButton/index.d.ts +3 -0
- package/lib/cjs/components/EditGroupButton/index.js +5 -0
- package/lib/cjs/components/Group/Group.d.ts +68 -0
- package/lib/cjs/components/Group/Group.js +96 -0
- package/lib/cjs/components/Group/Skeleton.d.ts +22 -0
- package/lib/cjs/components/Group/Skeleton.js +42 -0
- package/lib/cjs/components/Group/constants.d.ts +1 -0
- package/lib/cjs/components/Group/constants.js +4 -0
- package/lib/cjs/components/Group/index.d.ts +4 -0
- package/lib/cjs/components/Group/index.js +8 -0
- package/lib/cjs/components/GroupAutocomplete/GroupAutocomplete.d.ts +49 -0
- package/lib/cjs/components/GroupAutocomplete/GroupAutocomplete.js +101 -0
- package/lib/cjs/components/GroupAutocomplete/index.d.ts +3 -0
- package/lib/cjs/components/GroupAutocomplete/index.js +5 -0
- package/lib/cjs/components/GroupForm/GroupForm.d.ts +70 -0
- package/lib/cjs/components/GroupForm/GroupForm.js +239 -0
- package/lib/cjs/components/GroupForm/constants.d.ts +1 -0
- package/lib/cjs/components/GroupForm/constants.js +4 -0
- package/lib/cjs/components/GroupForm/index.d.ts +3 -0
- package/lib/cjs/components/GroupForm/index.js +5 -0
- package/lib/cjs/components/GroupHeader/GroupHeader.d.ts +84 -0
- package/lib/cjs/components/GroupHeader/GroupHeader.js +147 -0
- package/lib/cjs/components/GroupHeader/Skeleton.d.ts +25 -0
- package/lib/cjs/components/GroupHeader/Skeleton.js +56 -0
- package/lib/cjs/components/GroupHeader/constants.d.ts +1 -0
- package/lib/cjs/components/GroupHeader/constants.js +4 -0
- package/lib/cjs/components/GroupHeader/index.d.ts +4 -0
- package/lib/cjs/components/GroupHeader/index.js +8 -0
- package/lib/cjs/components/GroupInfoWidget/GroupInfoWidget.d.ts +52 -0
- package/lib/cjs/components/GroupInfoWidget/GroupInfoWidget.js +100 -0
- package/lib/cjs/components/GroupInfoWidget/Skeleton.d.ts +21 -0
- package/lib/cjs/components/GroupInfoWidget/Skeleton.js +38 -0
- package/lib/cjs/components/GroupInfoWidget/constants.d.ts +1 -0
- package/lib/cjs/components/GroupInfoWidget/constants.js +4 -0
- package/lib/cjs/components/GroupInfoWidget/index.d.ts +4 -0
- package/lib/cjs/components/GroupInfoWidget/index.js +8 -0
- package/lib/cjs/components/GroupInviteButton/GroupInviteButton.d.ts +57 -0
- package/lib/cjs/components/GroupInviteButton/GroupInviteButton.js +262 -0
- package/lib/cjs/components/GroupInviteButton/index.d.ts +3 -0
- package/lib/cjs/components/GroupInviteButton/index.js +5 -0
- package/lib/cjs/components/GroupMembersButton/GroupMembersButton.d.ts +51 -0
- package/lib/cjs/components/GroupMembersButton/GroupMembersButton.js +136 -0
- package/lib/cjs/components/GroupMembersButton/index.d.ts +3 -0
- package/lib/cjs/components/GroupMembersButton/index.js +5 -0
- package/lib/cjs/components/GroupMembersWidget/GroupMembersWidget.d.ts +79 -0
- package/lib/cjs/components/GroupMembersWidget/GroupMembersWidget.js +205 -0
- package/lib/cjs/components/GroupMembersWidget/Skeleton.d.ts +22 -0
- package/lib/cjs/components/GroupMembersWidget/Skeleton.js +38 -0
- package/lib/cjs/components/GroupMembersWidget/constants.d.ts +1 -0
- package/lib/cjs/components/GroupMembersWidget/constants.js +4 -0
- package/lib/cjs/components/GroupMembersWidget/index.d.ts +4 -0
- package/lib/cjs/components/GroupMembersWidget/index.js +8 -0
- package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.d.ts +74 -0
- package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.js +203 -0
- package/lib/cjs/components/GroupRequestsWidget/Skeleton.d.ts +22 -0
- package/lib/cjs/components/GroupRequestsWidget/Skeleton.js +38 -0
- package/lib/cjs/components/GroupRequestsWidget/constants.d.ts +1 -0
- package/lib/cjs/components/GroupRequestsWidget/constants.js +4 -0
- package/lib/cjs/components/GroupRequestsWidget/index.d.ts +4 -0
- package/lib/cjs/components/GroupRequestsWidget/index.js +8 -0
- 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 +56 -0
- package/lib/cjs/components/GroupSubscribeButton/GroupSubscribeButton.js +132 -0
- package/lib/cjs/components/GroupSubscribeButton/index.d.ts +3 -0
- package/lib/cjs/components/GroupSubscribeButton/index.js +5 -0
- package/lib/cjs/components/Groups/Groups.d.ts +61 -0
- package/lib/cjs/components/Groups/Groups.js +128 -0
- package/lib/cjs/components/Groups/Skeleton.d.ts +34 -0
- package/lib/cjs/components/Groups/Skeleton.js +45 -0
- package/lib/cjs/components/Groups/constants.d.ts +1 -0
- package/lib/cjs/components/Groups/constants.js +4 -0
- package/lib/cjs/components/Groups/index.d.ts +4 -0
- package/lib/cjs/components/Groups/index.js +8 -0
- package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.d.ts +6 -1
- package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.js +2 -3
- package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.js +1 -1
- package/lib/cjs/components/NavigationMenuIconButton/index.d.ts +2 -1
- package/lib/cjs/components/NavigationMenuIconButton/index.js +3 -0
- package/lib/cjs/components/NavigationToolbar/NavigationToolbar.js +5 -1
- package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +9 -0
- package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.js +3 -4
- package/lib/cjs/components/User/User.d.ts +12 -0
- package/lib/cjs/components/User/User.js +5 -3
- package/lib/cjs/constants/Group.d.ts +2 -0
- package/lib/cjs/constants/Group.js +5 -0
- package/lib/cjs/index.d.ts +18 -2
- package/lib/cjs/index.js +44 -5
- package/lib/esm/components/BottomNavigation/BottomNavigation.js +3 -1
- package/lib/esm/components/ChangeGroupCover/ChangeGroupCover.d.ts +55 -0
- package/lib/esm/components/ChangeGroupCover/ChangeGroupCover.js +137 -0
- package/lib/esm/components/ChangeGroupCover/constants.d.ts +1 -0
- package/lib/esm/components/ChangeGroupCover/constants.js +1 -0
- package/lib/esm/components/ChangeGroupCover/index.d.ts +3 -0
- package/lib/esm/components/ChangeGroupCover/index.js +2 -0
- package/lib/esm/components/ChangeGroupPicture/ChangeGroupPicture.d.ts +57 -0
- package/lib/esm/components/ChangeGroupPicture/ChangeGroupPicture.js +132 -0
- package/lib/esm/components/ChangeGroupPicture/constants.d.ts +1 -0
- package/lib/esm/components/ChangeGroupPicture/constants.js +1 -0
- package/lib/esm/components/ChangeGroupPicture/index.d.ts +3 -0
- package/lib/esm/components/ChangeGroupPicture/index.js +2 -0
- package/lib/esm/components/Composer/Attributes/Attributes.d.ts +1 -1
- package/lib/esm/components/Composer/Attributes/Attributes.js +7 -0
- package/lib/esm/components/Composer/Composer.d.ts +2 -1
- package/lib/esm/components/Composer/Composer.js +39 -12
- package/lib/esm/components/Composer/Content/ContentDiscussion/ContentDiscussion.js +7 -3
- package/lib/esm/components/Composer/Content/ContentPost/ContentPost.js +4 -3
- package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +7 -1
- package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.js +45 -12
- package/lib/esm/components/CreateGroupButton/CreateGroupButton.d.ts +38 -0
- package/lib/esm/components/CreateGroupButton/CreateGroupButton.js +69 -0
- package/lib/esm/components/CreateGroupButton/index.d.ts +3 -0
- package/lib/esm/components/CreateGroupButton/index.js +2 -0
- package/lib/esm/components/CustomAdv/CustomAdv.d.ts +4 -0
- package/lib/esm/components/EditGroupButton/EditGroupButton.d.ts +43 -0
- package/lib/esm/components/EditGroupButton/EditGroupButton.js +58 -0
- package/lib/esm/components/EditGroupButton/index.d.ts +3 -0
- package/lib/esm/components/EditGroupButton/index.js +2 -0
- package/lib/esm/components/Group/Group.d.ts +68 -0
- package/lib/esm/components/Group/Group.js +93 -0
- package/lib/esm/components/Group/Skeleton.d.ts +22 -0
- package/lib/esm/components/Group/Skeleton.js +38 -0
- package/lib/esm/components/Group/constants.d.ts +1 -0
- package/lib/esm/components/Group/constants.js +1 -0
- package/lib/esm/components/Group/index.d.ts +4 -0
- package/lib/esm/components/Group/index.js +4 -0
- package/lib/esm/components/GroupAutocomplete/GroupAutocomplete.d.ts +49 -0
- package/lib/esm/components/GroupAutocomplete/GroupAutocomplete.js +99 -0
- package/lib/esm/components/GroupAutocomplete/index.d.ts +3 -0
- package/lib/esm/components/GroupAutocomplete/index.js +2 -0
- package/lib/esm/components/GroupForm/GroupForm.d.ts +70 -0
- package/lib/esm/components/GroupForm/GroupForm.js +236 -0
- package/lib/esm/components/GroupForm/constants.d.ts +1 -0
- package/lib/esm/components/GroupForm/constants.js +1 -0
- package/lib/esm/components/GroupForm/index.d.ts +3 -0
- package/lib/esm/components/GroupForm/index.js +2 -0
- package/lib/esm/components/GroupHeader/GroupHeader.d.ts +84 -0
- package/lib/esm/components/GroupHeader/GroupHeader.js +144 -0
- package/lib/esm/components/GroupHeader/Skeleton.d.ts +25 -0
- package/lib/esm/components/GroupHeader/Skeleton.js +53 -0
- package/lib/esm/components/GroupHeader/constants.d.ts +1 -0
- package/lib/esm/components/GroupHeader/constants.js +1 -0
- package/lib/esm/components/GroupHeader/index.d.ts +4 -0
- package/lib/esm/components/GroupHeader/index.js +4 -0
- package/lib/esm/components/GroupInfoWidget/GroupInfoWidget.d.ts +52 -0
- package/lib/esm/components/GroupInfoWidget/GroupInfoWidget.js +97 -0
- package/lib/esm/components/GroupInfoWidget/Skeleton.d.ts +21 -0
- package/lib/esm/components/GroupInfoWidget/Skeleton.js +34 -0
- package/lib/esm/components/GroupInfoWidget/constants.d.ts +1 -0
- package/lib/esm/components/GroupInfoWidget/constants.js +1 -0
- package/lib/esm/components/GroupInfoWidget/index.d.ts +4 -0
- package/lib/esm/components/GroupInfoWidget/index.js +4 -0
- package/lib/esm/components/GroupInviteButton/GroupInviteButton.d.ts +57 -0
- package/lib/esm/components/GroupInviteButton/GroupInviteButton.js +259 -0
- package/lib/esm/components/GroupInviteButton/index.d.ts +3 -0
- package/lib/esm/components/GroupInviteButton/index.js +2 -0
- package/lib/esm/components/GroupMembersButton/GroupMembersButton.d.ts +51 -0
- package/lib/esm/components/GroupMembersButton/GroupMembersButton.js +133 -0
- package/lib/esm/components/GroupMembersButton/index.d.ts +3 -0
- package/lib/esm/components/GroupMembersButton/index.js +2 -0
- package/lib/esm/components/GroupMembersWidget/GroupMembersWidget.d.ts +79 -0
- package/lib/esm/components/GroupMembersWidget/GroupMembersWidget.js +202 -0
- package/lib/esm/components/GroupMembersWidget/Skeleton.d.ts +22 -0
- package/lib/esm/components/GroupMembersWidget/Skeleton.js +34 -0
- package/lib/esm/components/GroupMembersWidget/constants.d.ts +1 -0
- package/lib/esm/components/GroupMembersWidget/constants.js +1 -0
- package/lib/esm/components/GroupMembersWidget/index.d.ts +4 -0
- package/lib/esm/components/GroupMembersWidget/index.js +4 -0
- package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.d.ts +74 -0
- package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.js +200 -0
- package/lib/esm/components/GroupRequestsWidget/Skeleton.d.ts +22 -0
- package/lib/esm/components/GroupRequestsWidget/Skeleton.js +34 -0
- package/lib/esm/components/GroupRequestsWidget/constants.d.ts +1 -0
- package/lib/esm/components/GroupRequestsWidget/constants.js +1 -0
- package/lib/esm/components/GroupRequestsWidget/index.d.ts +4 -0
- package/lib/esm/components/GroupRequestsWidget/index.js +4 -0
- 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 +56 -0
- package/lib/esm/components/GroupSubscribeButton/GroupSubscribeButton.js +129 -0
- package/lib/esm/components/GroupSubscribeButton/index.d.ts +3 -0
- package/lib/esm/components/GroupSubscribeButton/index.js +2 -0
- package/lib/esm/components/Groups/Groups.d.ts +61 -0
- package/lib/esm/components/Groups/Groups.js +125 -0
- package/lib/esm/components/Groups/Skeleton.d.ts +34 -0
- package/lib/esm/components/Groups/Skeleton.js +42 -0
- package/lib/esm/components/Groups/constants.d.ts +1 -0
- package/lib/esm/components/Groups/constants.js +1 -0
- package/lib/esm/components/Groups/index.d.ts +4 -0
- package/lib/esm/components/Groups/index.js +4 -0
- package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.d.ts +6 -1
- package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.js +3 -4
- package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.js +1 -1
- package/lib/esm/components/NavigationMenuIconButton/index.d.ts +2 -1
- package/lib/esm/components/NavigationMenuIconButton/index.js +2 -0
- package/lib/esm/components/NavigationToolbar/NavigationToolbar.js +5 -1
- package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +9 -0
- package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.js +4 -5
- package/lib/esm/components/User/User.d.ts +12 -0
- package/lib/esm/components/User/User.js +5 -3
- package/lib/esm/constants/Group.d.ts +2 -0
- package/lib/esm/constants/Group.js +2 -0
- package/lib/esm/index.d.ts +18 -2
- package/lib/esm/index.js +47 -31
- package/lib/umd/react-ui.js +1 -1
- package/package.json +6 -6
|
@@ -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,137 @@
|
|
|
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 material_1 = require("@mui/material");
|
|
7
|
+
const react_intl_1 = require("react-intl");
|
|
8
|
+
const Icon_1 = tslib_1.__importDefault(require("@mui/material/Icon"));
|
|
9
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
10
|
+
const system_1 = require("@mui/system");
|
|
11
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
12
|
+
const ConfirmDialog_1 = tslib_1.__importDefault(require("../../shared/ConfirmDialog/ConfirmDialog"));
|
|
13
|
+
const PREFIX = 'SCGroupSettingsIconButton';
|
|
14
|
+
const classes = {
|
|
15
|
+
root: `${PREFIX}-root`,
|
|
16
|
+
drawerRoot: `${PREFIX}-drawer-root`,
|
|
17
|
+
menuRoot: `${PREFIX}-menu-root`,
|
|
18
|
+
paper: `${PREFIX}-paper`,
|
|
19
|
+
item: `${PREFIX}-item`
|
|
20
|
+
};
|
|
21
|
+
const Root = (0, styles_1.styled)(material_1.IconButton, {
|
|
22
|
+
name: PREFIX,
|
|
23
|
+
slot: 'Root'
|
|
24
|
+
})(() => ({}));
|
|
25
|
+
const SwipeableDrawerRoot = (0, styles_1.styled)(material_1.SwipeableDrawer, {
|
|
26
|
+
name: PREFIX,
|
|
27
|
+
slot: 'DrawerRoot'
|
|
28
|
+
})(() => ({}));
|
|
29
|
+
const MenuRoot = (0, styles_1.styled)(material_1.Menu, {
|
|
30
|
+
name: PREFIX,
|
|
31
|
+
slot: 'MenuRoot'
|
|
32
|
+
})(() => ({}));
|
|
33
|
+
/**
|
|
34
|
+
* > API documentation for the Community-JS PrivateMessageSettingsIconButton component. Learn about the available props and the CSS API.
|
|
35
|
+
|
|
36
|
+
#### Import
|
|
37
|
+
|
|
38
|
+
```jsx
|
|
39
|
+
import {PrivateMessageSettingsIconButton} from '@selfcommunity/react-ui';
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
#### Component Name
|
|
43
|
+
|
|
44
|
+
The name `SCGroupSettingsIconButton` can be used when providing style overrides in the theme.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
#### CSS
|
|
48
|
+
|
|
49
|
+
|Rule Name|Global class|Description|
|
|
50
|
+
|---|---|---|
|
|
51
|
+
|root|.SCGroupSettingsIconButton-root|Styles applied to the root element.|
|
|
52
|
+
|
|
53
|
+
* @param inProps
|
|
54
|
+
*/
|
|
55
|
+
function GroupSettingsIconButton(inProps) {
|
|
56
|
+
// PROPS
|
|
57
|
+
const props = (0, system_1.useThemeProps)({
|
|
58
|
+
props: inProps,
|
|
59
|
+
name: PREFIX
|
|
60
|
+
});
|
|
61
|
+
const { className = null, onMenuItemRemoveClick, group, user, onItemRemoveConfirm, userToRemove } = props, rest = tslib_1.__rest(props, ["className", "onMenuItemRemoveClick", "group", "user", "onItemRemoveConfirm", "userToRemove"]);
|
|
62
|
+
// STATE
|
|
63
|
+
const [anchorEl, setAnchorEl] = (0, react_1.useState)(null);
|
|
64
|
+
const [openConfirmDialog, setOpenConfirmDialog] = (0, react_1.useState)(false);
|
|
65
|
+
// HOOKS
|
|
66
|
+
const theme = (0, material_1.useTheme)();
|
|
67
|
+
const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
|
|
68
|
+
const scRoutingContext = (0, react_core_1.useSCRouting)();
|
|
69
|
+
// CONTEXT
|
|
70
|
+
const scUserContext = (0, react_core_1.useSCUser)();
|
|
71
|
+
// HANDLERS
|
|
72
|
+
const handleOpen = (event) => {
|
|
73
|
+
setAnchorEl(event.currentTarget);
|
|
74
|
+
};
|
|
75
|
+
const handleClose = () => {
|
|
76
|
+
setAnchorEl(null);
|
|
77
|
+
};
|
|
78
|
+
const handleOpenDialog = () => {
|
|
79
|
+
setOpenConfirmDialog(true);
|
|
80
|
+
setAnchorEl(null);
|
|
81
|
+
};
|
|
82
|
+
const handleCloseDialog = () => {
|
|
83
|
+
setOpenConfirmDialog(false);
|
|
84
|
+
setAnchorEl(null);
|
|
85
|
+
onItemRemoveConfirm && onItemRemoveConfirm();
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Handles thread deletion
|
|
89
|
+
*/
|
|
90
|
+
function handleRemoveUser() {
|
|
91
|
+
console.log(userToRemove);
|
|
92
|
+
// GroupService.removeUserFromGroup(group.id, userToRemove)
|
|
93
|
+
// .then(() => {
|
|
94
|
+
// PubSub.publish('snippetsChannelDelete', userToRemove);
|
|
95
|
+
// handleCloseDialog();
|
|
96
|
+
// })
|
|
97
|
+
// .catch((error) => {
|
|
98
|
+
// setOpenConfirmDialog(false);
|
|
99
|
+
// console.log(error);
|
|
100
|
+
// });
|
|
101
|
+
}
|
|
102
|
+
if (scUserContext.user.id === user.id) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
*
|
|
107
|
+
*/
|
|
108
|
+
const renderList = () => {
|
|
109
|
+
if (isMobile) {
|
|
110
|
+
return [
|
|
111
|
+
react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "message", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PRIVATE_MESSAGES_ROUTE_NAME, user) },
|
|
112
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" })),
|
|
113
|
+
react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "report", onClick: () => console.log('report') },
|
|
114
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.report", defaultMessage: "ui.groupSettingsIconButton.item.report" })),
|
|
115
|
+
react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "delete", onClick: userToRemove ? handleOpenDialog : onMenuItemRemoveClick },
|
|
116
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.remove", defaultMessage: "ui.groupSettingsIconButton.item.remove" }))
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
return [
|
|
121
|
+
react_1.default.createElement(material_1.MenuItem, { className: classes.item, component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PRIVATE_MESSAGES_ROUTE_NAME, user), key: "message" },
|
|
122
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.message", defaultMessage: "ui.groupSettingsIconButton.item.message" })),
|
|
123
|
+
react_1.default.createElement(material_1.MenuItem, { className: classes.item, onClick: () => console.log('report'), key: "report" },
|
|
124
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.report", defaultMessage: "ui.groupSettingsIconButton.item.report" })),
|
|
125
|
+
react_1.default.createElement(material_1.MenuItem, { className: classes.item, onClick: userToRemove ? handleOpenDialog : onMenuItemRemoveClick, key: "delete" },
|
|
126
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.item.remove", defaultMessage: "ui.groupSettingsIconButton.item.remove" }))
|
|
127
|
+
];
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
131
|
+
react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { onClick: handleOpen }),
|
|
132
|
+
react_1.default.createElement(Icon_1.default, null, "more_vert")),
|
|
133
|
+
isMobile ? (react_1.default.createElement(SwipeableDrawerRoot, { className: classes.drawerRoot, anchor: "bottom", open: Boolean(anchorEl), onClose: handleClose, onOpen: handleOpen, PaperProps: { className: classes.paper }, disableSwipeToOpen: true },
|
|
134
|
+
react_1.default.createElement(material_1.List, null, renderList()))) : (react_1.default.createElement(MenuRoot, { className: classes.menuRoot, anchorEl: anchorEl, open: Boolean(anchorEl), onClose: handleClose, PaperProps: { className: classes.paper } }, renderList())),
|
|
135
|
+
openConfirmDialog && (react_1.default.createElement(ConfirmDialog_1.default, { open: openConfirmDialog, title: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.dialog.msg", defaultMessage: "ui.groupSettingsIconButton.dialog.msg" }), btnConfirm: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupSettingsIconButton.dialog.confirm", defaultMessage: "ui.groupSettingsIconButton.dialog.confirm" }), onConfirm: handleRemoveUser, onClose: handleCloseDialog }))));
|
|
136
|
+
}
|
|
137
|
+
exports.default = GroupSettingsIconButton;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { SCGroupType } from '@selfcommunity/types';
|
|
2
|
+
export interface GroupSubscribeButtonProps {
|
|
3
|
+
/**
|
|
4
|
+
* Overrides or extends the styles applied to the component.
|
|
5
|
+
* @default null
|
|
6
|
+
*/
|
|
7
|
+
className?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Group Object
|
|
10
|
+
* @default null
|
|
11
|
+
*/
|
|
12
|
+
group?: SCGroupType;
|
|
13
|
+
/**
|
|
14
|
+
* Id of the group
|
|
15
|
+
* @default null
|
|
16
|
+
*/
|
|
17
|
+
groupId?: number;
|
|
18
|
+
/**
|
|
19
|
+
* id of the user to be accepted into the group
|
|
20
|
+
* @default null
|
|
21
|
+
*/
|
|
22
|
+
userId?: number;
|
|
23
|
+
/**
|
|
24
|
+
* onSubscribe callback
|
|
25
|
+
* @param user
|
|
26
|
+
* @param joined
|
|
27
|
+
*/
|
|
28
|
+
onSubscribe?: (group: SCGroupType, status: string | null) => any;
|
|
29
|
+
/**
|
|
30
|
+
* Others properties
|
|
31
|
+
*/
|
|
32
|
+
[p: string]: any;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* > API documentation for the Community-JS Group Subscribe Button component. Learn about the available props and the CSS API.
|
|
36
|
+
|
|
37
|
+
#### Import
|
|
38
|
+
|
|
39
|
+
```jsx
|
|
40
|
+
import {GroupSubscribeButton} from '@selfcommunity/react-ui';
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Component Name
|
|
44
|
+
|
|
45
|
+
The name `SCGroupSubscribeButton` can be used when providing style overrides in the theme.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
#### CSS
|
|
49
|
+
|
|
50
|
+
|Rule Name|Global class|Description|
|
|
51
|
+
|---|---|---|
|
|
52
|
+
|root|.SCGroupSubscribeButton-root|Styles applied to the root element.|
|
|
53
|
+
|
|
54
|
+
* @param inProps
|
|
55
|
+
*/
|
|
56
|
+
export default function GroupSubscribeButton(inProps: GroupSubscribeButtonProps): JSX.Element;
|
|
@@ -0,0 +1,132 @@
|
|
|
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 utils_1 = require("@selfcommunity/utils");
|
|
7
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
8
|
+
const types_1 = require("@selfcommunity/types");
|
|
9
|
+
const lab_1 = require("@mui/lab");
|
|
10
|
+
const react_intl_1 = require("react-intl");
|
|
11
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
12
|
+
const system_1 = require("@mui/system");
|
|
13
|
+
const Errors_1 = require("../../constants/Errors");
|
|
14
|
+
const PREFIX = 'SCGroupSubscribeButton';
|
|
15
|
+
const classes = {
|
|
16
|
+
root: `${PREFIX}-root`
|
|
17
|
+
};
|
|
18
|
+
const Root = (0, styles_1.styled)(lab_1.LoadingButton, {
|
|
19
|
+
name: PREFIX,
|
|
20
|
+
slot: 'Root',
|
|
21
|
+
overridesResolver: (props, styles) => styles.root
|
|
22
|
+
})(({ theme }) => ({}));
|
|
23
|
+
/**
|
|
24
|
+
* > API documentation for the Community-JS Group Subscribe Button component. Learn about the available props and the CSS API.
|
|
25
|
+
|
|
26
|
+
#### Import
|
|
27
|
+
|
|
28
|
+
```jsx
|
|
29
|
+
import {GroupSubscribeButton} from '@selfcommunity/react-ui';
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
#### Component Name
|
|
33
|
+
|
|
34
|
+
The name `SCGroupSubscribeButton` can be used when providing style overrides in the theme.
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
#### CSS
|
|
38
|
+
|
|
39
|
+
|Rule Name|Global class|Description|
|
|
40
|
+
|---|---|---|
|
|
41
|
+
|root|.SCGroupSubscribeButton-root|Styles applied to the root element.|
|
|
42
|
+
|
|
43
|
+
* @param inProps
|
|
44
|
+
*/
|
|
45
|
+
function GroupSubscribeButton(inProps) {
|
|
46
|
+
var _a;
|
|
47
|
+
// PROPS
|
|
48
|
+
const props = (0, system_1.useThemeProps)({
|
|
49
|
+
props: inProps,
|
|
50
|
+
name: PREFIX
|
|
51
|
+
});
|
|
52
|
+
const { className, groupId, group, userId, onSubscribe } = props, rest = tslib_1.__rest(props, ["className", "groupId", "group", "userId", "onSubscribe"]);
|
|
53
|
+
// STATE
|
|
54
|
+
const [status, setStatus] = (0, react_1.useState)(null);
|
|
55
|
+
// CONTEXT
|
|
56
|
+
const scContext = (0, react_core_1.useSCContext)();
|
|
57
|
+
const scUserContext = (0, react_core_1.useSCUser)();
|
|
58
|
+
const scGroupsManager = scUserContext.managers.groups;
|
|
59
|
+
// CONST
|
|
60
|
+
const authUserId = scUserContext.user ? scUserContext.user.id : null;
|
|
61
|
+
const { scGroup } = (0, react_core_1.useSCFetchGroup)({
|
|
62
|
+
id: groupId,
|
|
63
|
+
group,
|
|
64
|
+
cacheStrategy: authUserId ? utils_1.CacheStrategies.CACHE_FIRST : utils_1.CacheStrategies.STALE_WHILE_REVALIDATE
|
|
65
|
+
});
|
|
66
|
+
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]);
|
|
67
|
+
(0, react_1.useEffect)(() => {
|
|
68
|
+
/**
|
|
69
|
+
* Call scGroupsManager.subscriptionStatus inside an effect
|
|
70
|
+
* to avoid warning rendering child during update parent state
|
|
71
|
+
*/
|
|
72
|
+
if (authUserId) {
|
|
73
|
+
setStatus(scGroupsManager.subscriptionStatus(scGroup));
|
|
74
|
+
}
|
|
75
|
+
}, [authUserId, scGroupsManager.subscriptionStatus]);
|
|
76
|
+
const subscribe = (userId) => {
|
|
77
|
+
scGroupsManager
|
|
78
|
+
.subscribe(scGroup, userId)
|
|
79
|
+
.then(() => {
|
|
80
|
+
onSubscribe && onSubscribe(scGroup, types_1.SCGroupSubscriptionStatusType.SUBSCRIBED);
|
|
81
|
+
})
|
|
82
|
+
.catch((e) => {
|
|
83
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, e);
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
const unsubscribe = () => {
|
|
87
|
+
scGroupsManager
|
|
88
|
+
.unsubscribe(scGroup)
|
|
89
|
+
.then(() => {
|
|
90
|
+
onSubscribe && onSubscribe(scGroup, null);
|
|
91
|
+
})
|
|
92
|
+
.catch((e) => {
|
|
93
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, e);
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
const handleSubscribeAction = () => {
|
|
97
|
+
if (!scUserContext.user) {
|
|
98
|
+
scContext.settings.handleAnonymousAction();
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
status === types_1.SCGroupSubscriptionStatusType.SUBSCRIBED && !userId ? unsubscribe() : userId ? subscribe(userId) : subscribe();
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Get current translated status
|
|
106
|
+
*/
|
|
107
|
+
const getStatus = () => {
|
|
108
|
+
let _status;
|
|
109
|
+
switch (status) {
|
|
110
|
+
case types_1.SCGroupSubscriptionStatusType.REQUESTED:
|
|
111
|
+
_status = react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupSubscribeButton.waitingApproval", id: "ui.groupSubscribeButton.waitingApproval" });
|
|
112
|
+
break;
|
|
113
|
+
case types_1.SCGroupSubscriptionStatusType.SUBSCRIBED:
|
|
114
|
+
_status = react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupSubscribeButton.exit", id: "ui.groupSubscribeButton.exit" });
|
|
115
|
+
break;
|
|
116
|
+
case types_1.SCGroupSubscriptionStatusType.INVITED:
|
|
117
|
+
_status = react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupSubscribeButton.accept", id: "ui.groupSubscribeButton.accept" });
|
|
118
|
+
break;
|
|
119
|
+
default:
|
|
120
|
+
scGroup.privacy === types_1.SCGroupPrivacyType.PUBLIC
|
|
121
|
+
? (_status = react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupSubscribeButton.enter", id: "ui.groupSubscribeButton.enter" }))
|
|
122
|
+
: (_status = react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupSubscribeButton.requestAccess", id: "ui.groupSubscribeButton.requestAccess" }));
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
return _status;
|
|
126
|
+
};
|
|
127
|
+
if (!scGroup || (isGroupAdmin && userId === scUserContext.user.id) || (isGroupAdmin && !userId)) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
return (react_1.default.createElement(Root, Object.assign({ size: "small", variant: "outlined", onClick: handleSubscribeAction, loading: scUserContext.user ? scGroupsManager.isLoading(scGroup) : null, disabled: status === types_1.SCGroupSubscriptionStatusType.REQUESTED, className: (0, classnames_1.default)(classes.root, className) }, rest), isGroupAdmin ? react_1.default.createElement(react_intl_1.FormattedMessage, { defaultMessage: "ui.groupSubscribeButton.accept", id: "ui.groupSubscribeButton.accept" }) : getStatus()));
|
|
131
|
+
}
|
|
132
|
+
exports.default = GroupSubscribeButton;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { SCGroupType } from '@selfcommunity/types';
|
|
2
|
+
import { EndpointType } from '@selfcommunity/api-services';
|
|
3
|
+
import { GroupProps } from '../Group';
|
|
4
|
+
export interface GroupsProps {
|
|
5
|
+
/**
|
|
6
|
+
* Overrides or extends the styles applied to the component.
|
|
7
|
+
* @default null
|
|
8
|
+
*/
|
|
9
|
+
className?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Endpoint to call
|
|
12
|
+
*/
|
|
13
|
+
endpoint: EndpointType;
|
|
14
|
+
/**
|
|
15
|
+
* Props to spread to single group object
|
|
16
|
+
* @default {variant: 'outlined', ButtonBaseProps: {disableRipple: 'true'}}
|
|
17
|
+
*/
|
|
18
|
+
GroupComponentProps?: GroupProps;
|
|
19
|
+
/**
|
|
20
|
+
* Prefetch groups. Useful for SSR.
|
|
21
|
+
* Use this to init the component with groups
|
|
22
|
+
* @default null
|
|
23
|
+
*/
|
|
24
|
+
prefetchedGroups?: SCGroupType[];
|
|
25
|
+
/**
|
|
26
|
+
* Other props
|
|
27
|
+
*/
|
|
28
|
+
[p: string]: any;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* > API documentation for the Community-JS Groups component. Learn about the available props and the CSS API.
|
|
32
|
+
*
|
|
33
|
+
*
|
|
34
|
+
* This component renders the list of the follows of the given group.
|
|
35
|
+
* Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/Groups)
|
|
36
|
+
|
|
37
|
+
#### Import
|
|
38
|
+
|
|
39
|
+
```jsx
|
|
40
|
+
import {Groups} from '@selfcommunity/react-ui';
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Component Name
|
|
44
|
+
|
|
45
|
+
The name `SCGroups` can be used when providing style overrides in the theme.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
#### CSS
|
|
49
|
+
|
|
50
|
+
|Rule Name|Global class|Description|
|
|
51
|
+
|---|---|---|
|
|
52
|
+
|root|.SCGroups-root|Styles applied to the root element.|
|
|
53
|
+
|title|.SCGroups-title|Styles applied to the title element.|
|
|
54
|
+
|noResults|.SCGroups-no-results|Styles applied to no results section.|
|
|
55
|
+
|showMore|.SCGroups-show-more|Styles applied to show more button element.|
|
|
56
|
+
|dialogRoot|.SCGroups-dialog-root|Styles applied to the dialog root element.|
|
|
57
|
+
|endMessage|.SCGroups-end-message|Styles applied to the end message element.|
|
|
58
|
+
|
|
59
|
+
* @param inProps
|
|
60
|
+
*/
|
|
61
|
+
export default function Groups(inProps: GroupsProps): JSX.Element;
|
|
@@ -0,0 +1,128 @@
|
|
|
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 material_1 = require("@mui/material");
|
|
7
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
8
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
9
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
10
|
+
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
11
|
+
const react_intl_1 = require("react-intl");
|
|
12
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
13
|
+
const Errors_1 = require("../../constants/Errors");
|
|
14
|
+
const system_1 = require("@mui/system");
|
|
15
|
+
const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
|
|
16
|
+
const constants_1 = require("./constants");
|
|
17
|
+
const Group_1 = tslib_1.__importDefault(require("../Group"));
|
|
18
|
+
const classes = {
|
|
19
|
+
root: `${constants_1.PREFIX}-root`,
|
|
20
|
+
groups: `${constants_1.PREFIX}-groups`,
|
|
21
|
+
item: `${constants_1.PREFIX}-item`,
|
|
22
|
+
noResults: `${constants_1.PREFIX}-no-results`,
|
|
23
|
+
showMore: `${constants_1.PREFIX}-show-more`,
|
|
24
|
+
endMessage: `${constants_1.PREFIX}-end-message`
|
|
25
|
+
};
|
|
26
|
+
const Root = (0, styles_1.styled)(material_1.Box, {
|
|
27
|
+
name: constants_1.PREFIX,
|
|
28
|
+
slot: 'Root'
|
|
29
|
+
})(() => ({}));
|
|
30
|
+
/**
|
|
31
|
+
* > API documentation for the Community-JS Groups component. Learn about the available props and the CSS API.
|
|
32
|
+
*
|
|
33
|
+
*
|
|
34
|
+
* This component renders the list of the follows of the given group.
|
|
35
|
+
* Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/Groups)
|
|
36
|
+
|
|
37
|
+
#### Import
|
|
38
|
+
|
|
39
|
+
```jsx
|
|
40
|
+
import {Groups} from '@selfcommunity/react-ui';
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Component Name
|
|
44
|
+
|
|
45
|
+
The name `SCGroups` can be used when providing style overrides in the theme.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
#### CSS
|
|
49
|
+
|
|
50
|
+
|Rule Name|Global class|Description|
|
|
51
|
+
|---|---|---|
|
|
52
|
+
|root|.SCGroups-root|Styles applied to the root element.|
|
|
53
|
+
|title|.SCGroups-title|Styles applied to the title element.|
|
|
54
|
+
|noResults|.SCGroups-no-results|Styles applied to no results section.|
|
|
55
|
+
|showMore|.SCGroups-show-more|Styles applied to show more button element.|
|
|
56
|
+
|dialogRoot|.SCGroups-dialog-root|Styles applied to the dialog root element.|
|
|
57
|
+
|endMessage|.SCGroups-end-message|Styles applied to the end message element.|
|
|
58
|
+
|
|
59
|
+
* @param inProps
|
|
60
|
+
*/
|
|
61
|
+
function Groups(inProps) {
|
|
62
|
+
// PROPS
|
|
63
|
+
const props = (0, system_1.useThemeProps)({
|
|
64
|
+
props: inProps,
|
|
65
|
+
name: constants_1.PREFIX
|
|
66
|
+
});
|
|
67
|
+
const { endpoint, className, GroupComponentProps = { variant: 'outlined', ButtonBaseProps: { disableRipple: true, component: material_1.Box } }, prefetchedGroups = [] } = props, rest = tslib_1.__rest(props, ["endpoint", "className", "GroupComponentProps", "prefetchedGroups"]);
|
|
68
|
+
// STATE
|
|
69
|
+
const [groups, setGroups] = (0, react_1.useState)([]);
|
|
70
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
71
|
+
// CONTEXT
|
|
72
|
+
const scUserContext = (0, react_core_1.useSCUser)();
|
|
73
|
+
const scPreferencesContext = (0, react_core_1.useSCPreferences)();
|
|
74
|
+
// MEMO
|
|
75
|
+
const contentAvailability = (0, react_1.useMemo)(() => react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY in scPreferencesContext.preferences &&
|
|
76
|
+
scPreferencesContext.preferences[react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value, [scPreferencesContext.preferences]);
|
|
77
|
+
// CONST
|
|
78
|
+
const authUserId = scUserContext.user ? scUserContext.user.id : null;
|
|
79
|
+
// REFS
|
|
80
|
+
const isMountedRef = (0, react_core_1.useIsComponentMountedRef)();
|
|
81
|
+
/**
|
|
82
|
+
* Fetches groups list
|
|
83
|
+
*/
|
|
84
|
+
const fetchGroups = (next = endpoint.url({})) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
const response = yield api_services_1.http.request({
|
|
86
|
+
url: next,
|
|
87
|
+
method: endpoint.method
|
|
88
|
+
});
|
|
89
|
+
const data = response.data;
|
|
90
|
+
return data.next ? data.results.concat(yield fetchGroups(data.next)) : data.results;
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* On mount, fetches groups list
|
|
94
|
+
*/
|
|
95
|
+
(0, react_1.useEffect)(() => {
|
|
96
|
+
if (!contentAvailability && !authUserId) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
else if (prefetchedGroups.length) {
|
|
100
|
+
setGroups(prefetchedGroups);
|
|
101
|
+
setLoading(false);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
fetchGroups()
|
|
105
|
+
.then((data) => {
|
|
106
|
+
if (isMountedRef.current) {
|
|
107
|
+
setGroups(data);
|
|
108
|
+
setLoading(false);
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
.catch((error) => {
|
|
112
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}, [contentAvailability, authUserId, prefetchedGroups.length]);
|
|
116
|
+
// RENDER
|
|
117
|
+
if (!contentAvailability && !scUserContext.user) {
|
|
118
|
+
return react_1.default.createElement(HiddenPlaceholder_1.default, null);
|
|
119
|
+
}
|
|
120
|
+
const content = (react_1.default.createElement(react_1.default.Fragment, null, loading ? (react_1.default.createElement(Skeleton_1.default, null)) : (react_1.default.createElement(material_1.Grid, { container: true, spacing: { xs: 3 }, className: classes.groups }, !groups.length ? (react_1.default.createElement(material_1.Box, { className: classes.noResults },
|
|
121
|
+
react_1.default.createElement(material_1.Typography, { variant: "h4" },
|
|
122
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groups.noGroups.title", defaultMessage: "ui.groups.noGroups.title" })),
|
|
123
|
+
react_1.default.createElement(material_1.Typography, { variant: "body1" },
|
|
124
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groups.noGroups.subtitle", defaultMessage: "ui.groups.noGroups.subtitle" })))) : (react_1.default.createElement(react_1.default.Fragment, null, groups.map((group) => (react_1.default.createElement(material_1.Grid, { item: true, xs: 12, sm: 8, md: 6, key: group.id, className: classes.item },
|
|
125
|
+
react_1.default.createElement(Group_1.default, Object.assign({ group: group, groupId: group.id }, GroupComponentProps)))))))))));
|
|
126
|
+
return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest), content));
|
|
127
|
+
}
|
|
128
|
+
exports.default = Groups;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface GroupsSkeletonProps {
|
|
2
|
+
/**
|
|
3
|
+
* Overrides or extends the styles applied to the component.
|
|
4
|
+
* @default null
|
|
5
|
+
*/
|
|
6
|
+
className?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Overrides or extends the styles applied to the component.
|
|
9
|
+
* @default null
|
|
10
|
+
*/
|
|
11
|
+
GroupSkeletonProps?: any;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* > API documentation for the Community-JS Groups Skeleton component. Learn about the available props and the CSS API.
|
|
15
|
+
|
|
16
|
+
#### Import
|
|
17
|
+
|
|
18
|
+
```jsx
|
|
19
|
+
import {GroupsSkeleton} from '@selfcommunity/react-ui';
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
#### Component Name
|
|
23
|
+
|
|
24
|
+
The name `SCGroups-skeleton-root` can be used when providing style overrides in the theme.
|
|
25
|
+
|
|
26
|
+
#### CSS
|
|
27
|
+
|
|
28
|
+
|Rule Name|Global class|Description|
|
|
29
|
+
|---|---|---|
|
|
30
|
+
|root|.SCGroups-skeleton-root|Styles applied to the root element.|
|
|
31
|
+
|groups|.SCGroups-skeleton-groups|Styles applied to the group elements.|
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
export default function GroupsSkeleton(inProps: GroupsSkeletonProps): JSX.Element;
|
|
@@ -0,0 +1,45 @@
|
|
|
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 styles_1 = require("@mui/material/styles");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const material_1 = require("@mui/material");
|
|
8
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
9
|
+
const Group_1 = require("../Group");
|
|
10
|
+
const classes = {
|
|
11
|
+
root: `${constants_1.PREFIX}-skeleton-root`,
|
|
12
|
+
groups: `${constants_1.PREFIX}-groups`
|
|
13
|
+
};
|
|
14
|
+
const Root = (0, styles_1.styled)(material_1.Box, {
|
|
15
|
+
name: constants_1.PREFIX,
|
|
16
|
+
slot: 'SkeletonRoot'
|
|
17
|
+
})(() => ({}));
|
|
18
|
+
/**
|
|
19
|
+
* > API documentation for the Community-JS Groups Skeleton component. Learn about the available props and the CSS API.
|
|
20
|
+
|
|
21
|
+
#### Import
|
|
22
|
+
|
|
23
|
+
```jsx
|
|
24
|
+
import {GroupsSkeleton} from '@selfcommunity/react-ui';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
#### Component Name
|
|
28
|
+
|
|
29
|
+
The name `SCGroups-skeleton-root` can be used when providing style overrides in the theme.
|
|
30
|
+
|
|
31
|
+
#### CSS
|
|
32
|
+
|
|
33
|
+
|Rule Name|Global class|Description|
|
|
34
|
+
|---|---|---|
|
|
35
|
+
|root|.SCGroups-skeleton-root|Styles applied to the root element.|
|
|
36
|
+
|groups|.SCGroups-skeleton-groups|Styles applied to the group elements.|
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
function GroupsSkeleton(inProps) {
|
|
40
|
+
const { className, GroupSkeletonProps = {} } = inProps, rest = tslib_1.__rest(inProps, ["className", "GroupSkeletonProps"]);
|
|
41
|
+
return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest),
|
|
42
|
+
react_1.default.createElement(material_1.Grid, { container: true, spacing: { xs: 3 }, className: classes.groups }, [...Array(15)].map((category, index) => (react_1.default.createElement(material_1.Grid, { item: true, xs: 12, sm: 8, md: 6, key: index },
|
|
43
|
+
react_1.default.createElement(Group_1.GroupSkeleton, Object.assign({ elevation: 0, variant: 'outlined' }, GroupSkeletonProps))))))));
|
|
44
|
+
}
|
|
45
|
+
exports.default = GroupsSkeleton;
|