@selfcommunity/react-ui 0.7.9-alpha.0 → 0.7.9-alpha.2
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/ChangeGroupCover/ChangeGroupCover.d.ts +55 -0
- package/lib/cjs/components/ChangeGroupCover/ChangeGroupCover.js +117 -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 +117 -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/CreateGroup/CreateGroup.d.ts +48 -0
- package/lib/cjs/components/CreateGroup/CreateGroup.js +187 -0
- package/lib/cjs/components/CreateGroup/constants.d.ts +1 -0
- package/lib/cjs/components/CreateGroup/constants.js +4 -0
- package/lib/cjs/components/CreateGroup/index.d.ts +3 -0
- package/lib/cjs/components/CreateGroup/index.js +5 -0
- package/lib/cjs/components/CreateGroupButton/CreateGroupButton.d.ts +38 -0
- package/lib/cjs/components/CreateGroupButton/CreateGroupButton.js +73 -0
- package/lib/cjs/components/CreateGroupButton/index.d.ts +3 -0
- package/lib/cjs/components/CreateGroupButton/index.js +5 -0
- package/lib/cjs/components/Group/Group.d.ts +67 -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/GroupHeader/GroupHeader.d.ts +83 -0
- package/lib/cjs/components/GroupHeader/GroupHeader.js +137 -0
- package/lib/cjs/components/GroupHeader/Skeleton.d.ts +27 -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 +259 -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 +46 -0
- package/lib/cjs/components/GroupMembersButton/GroupMembersButton.js +135 -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 +194 -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 +79 -0
- package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.js +194 -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/GroupSubscribeButton/GroupSubscribeButton.d.ts +51 -0
- package/lib/cjs/components/GroupSubscribeButton/GroupSubscribeButton.js +117 -0
- package/lib/cjs/components/GroupSubscribeButton/index.d.ts +3 -0
- package/lib/cjs/components/GroupSubscribeButton/index.js +5 -0
- package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.d.ts +4 -0
- package/lib/cjs/components/InlineComposerWidget/InlineComposerWidget.js +2 -3
- package/lib/cjs/components/NavigationMenuIconButton/index.d.ts +2 -1
- package/lib/cjs/components/NavigationMenuIconButton/index.js +3 -0
- package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +5 -0
- package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.js +2 -2
- 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 +14 -2
- package/lib/cjs/index.js +34 -5
- package/lib/esm/components/ChangeGroupCover/ChangeGroupCover.d.ts +55 -0
- package/lib/esm/components/ChangeGroupCover/ChangeGroupCover.js +114 -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 +114 -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/CreateGroup/CreateGroup.d.ts +48 -0
- package/lib/esm/components/CreateGroup/CreateGroup.js +184 -0
- package/lib/esm/components/CreateGroup/constants.d.ts +1 -0
- package/lib/esm/components/CreateGroup/constants.js +1 -0
- package/lib/esm/components/CreateGroup/index.d.ts +3 -0
- package/lib/esm/components/CreateGroup/index.js +2 -0
- package/lib/esm/components/CreateGroupButton/CreateGroupButton.d.ts +38 -0
- package/lib/esm/components/CreateGroupButton/CreateGroupButton.js +70 -0
- package/lib/esm/components/CreateGroupButton/index.d.ts +3 -0
- package/lib/esm/components/CreateGroupButton/index.js +2 -0
- package/lib/esm/components/Group/Group.d.ts +67 -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/GroupHeader/GroupHeader.d.ts +83 -0
- package/lib/esm/components/GroupHeader/GroupHeader.js +134 -0
- package/lib/esm/components/GroupHeader/Skeleton.d.ts +27 -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 +256 -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 +46 -0
- package/lib/esm/components/GroupMembersButton/GroupMembersButton.js +132 -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 +191 -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 +79 -0
- package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.js +191 -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/GroupSubscribeButton/GroupSubscribeButton.d.ts +51 -0
- package/lib/esm/components/GroupSubscribeButton/GroupSubscribeButton.js +114 -0
- package/lib/esm/components/GroupSubscribeButton/index.d.ts +3 -0
- package/lib/esm/components/GroupSubscribeButton/index.js +2 -0
- package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.d.ts +4 -0
- package/lib/esm/components/InlineComposerWidget/InlineComposerWidget.js +3 -4
- package/lib/esm/components/NavigationMenuIconButton/index.d.ts +2 -1
- package/lib/esm/components/NavigationMenuIconButton/index.js +2 -0
- package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +5 -0
- package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.js +3 -3
- 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 +14 -2
- package/lib/esm/index.js +41 -29
- package/lib/umd/react-ui.js +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface ChangeGroupCoverProps {
|
|
2
|
+
/**
|
|
3
|
+
* Id of the group. It is optional only for group creation modal.
|
|
4
|
+
* @default null
|
|
5
|
+
*/
|
|
6
|
+
groupId?: number;
|
|
7
|
+
/**
|
|
8
|
+
* On change function.
|
|
9
|
+
* @default null
|
|
10
|
+
*/
|
|
11
|
+
onChange?: (cover: any) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Hides this component
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
autoHide?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Overrides or extends the styles applied to the component.
|
|
19
|
+
* @default null
|
|
20
|
+
*/
|
|
21
|
+
className?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Prop to handle cover loading in the create group modal.
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
isCreationMode?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Any other properties
|
|
29
|
+
*/
|
|
30
|
+
[p: string]: any;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* > API documentation for the Community-JS Change Group Cover component. Learn about the available props and the CSS API.
|
|
34
|
+
*
|
|
35
|
+
*
|
|
36
|
+
* This component renders a button that allows admins to edit the group cover and a popover that specifies format and sizes allowed.
|
|
37
|
+
* Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/ChangeGroupCover)
|
|
38
|
+
|
|
39
|
+
#### Import
|
|
40
|
+
```jsx
|
|
41
|
+
import {ChangeGroupCover} from '@selfcommunity/react-ui';
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Component Name
|
|
45
|
+
The name `SCChangeGroupCoverButton` can be used when providing style overrides in the theme.
|
|
46
|
+
|
|
47
|
+
#### CSS
|
|
48
|
+
|
|
49
|
+
|Rule Name|Global class|Description|
|
|
50
|
+
|---|---|---|
|
|
51
|
+
|root|.SCChangeGroupCoverButton-root|Styles applied to the root element.|
|
|
52
|
+
|
|
53
|
+
* @param inProps
|
|
54
|
+
*/
|
|
55
|
+
export default function ChangeGroupCover(inProps: ChangeGroupCoverProps): JSX.Element;
|
|
@@ -0,0 +1,117 @@
|
|
|
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_core_1 = require("@selfcommunity/react-core");
|
|
8
|
+
const Icon_1 = tslib_1.__importDefault(require("@mui/material/Icon"));
|
|
9
|
+
const react_intl_1 = require("react-intl");
|
|
10
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
11
|
+
const system_1 = require("@mui/system");
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
const lab_1 = require("@mui/lab");
|
|
14
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
15
|
+
const Errors_1 = require("../../constants/Errors");
|
|
16
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
17
|
+
const classes = {
|
|
18
|
+
root: `${constants_1.PREFIX}-root`
|
|
19
|
+
};
|
|
20
|
+
const Root = (0, styles_1.styled)(lab_1.LoadingButton, {
|
|
21
|
+
name: constants_1.PREFIX,
|
|
22
|
+
slot: 'Root'
|
|
23
|
+
})(() => ({}));
|
|
24
|
+
const messages = (0, react_intl_1.defineMessages)({
|
|
25
|
+
errorLoadImage: {
|
|
26
|
+
id: 'ui.changeGroupCover.button.change.alertErrorImage',
|
|
27
|
+
defaultMessage: 'ui.changeGroupCover.button.change.alertErrorImage'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* > API documentation for the Community-JS Change Group Cover component. Learn about the available props and the CSS API.
|
|
32
|
+
*
|
|
33
|
+
*
|
|
34
|
+
* This component renders a button that allows admins to edit the group cover and a popover that specifies format and sizes allowed.
|
|
35
|
+
* Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/ChangeGroupCover)
|
|
36
|
+
|
|
37
|
+
#### Import
|
|
38
|
+
```jsx
|
|
39
|
+
import {ChangeGroupCover} from '@selfcommunity/react-ui';
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
#### Component Name
|
|
43
|
+
The name `SCChangeGroupCoverButton` can be used when providing style overrides in the theme.
|
|
44
|
+
|
|
45
|
+
#### CSS
|
|
46
|
+
|
|
47
|
+
|Rule Name|Global class|Description|
|
|
48
|
+
|---|---|---|
|
|
49
|
+
|root|.SCChangeGroupCoverButton-root|Styles applied to the root element.|
|
|
50
|
+
|
|
51
|
+
* @param inProps
|
|
52
|
+
*/
|
|
53
|
+
function ChangeGroupCover(inProps) {
|
|
54
|
+
//PROPS
|
|
55
|
+
const props = (0, system_1.useThemeProps)({
|
|
56
|
+
props: inProps,
|
|
57
|
+
name: constants_1.PREFIX
|
|
58
|
+
});
|
|
59
|
+
const { groupId, onChange, autoHide, className, isCreationMode = false } = props, rest = tslib_1.__rest(props, ["groupId", "onChange", "autoHide", "className", "isCreationMode"]);
|
|
60
|
+
//CONTEXT
|
|
61
|
+
const scUserContext = (0, react_1.useContext)(react_core_1.SCUserContext);
|
|
62
|
+
//STATE
|
|
63
|
+
let fileInput = (0, react_1.useRef)(null);
|
|
64
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
65
|
+
const [alert, setAlert] = (0, react_1.useState)(null);
|
|
66
|
+
// INTL
|
|
67
|
+
const intl = (0, react_intl_1.useIntl)();
|
|
68
|
+
// Anonymous
|
|
69
|
+
if (!scUserContext.user) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Handles file upload
|
|
74
|
+
* @param event
|
|
75
|
+
*/
|
|
76
|
+
const handleUpload = (event) => {
|
|
77
|
+
fileInput = event.target.files[0];
|
|
78
|
+
isCreationMode ? onChange && onChange(fileInput) : handleSave();
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Handles cover saving after upload action
|
|
82
|
+
*/
|
|
83
|
+
function handleSave() {
|
|
84
|
+
setLoading(true);
|
|
85
|
+
const formData = new FormData();
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
|
|
87
|
+
// @ts-ignore
|
|
88
|
+
formData.append('emotional_image_original', fileInput);
|
|
89
|
+
api_services_1.GroupService.changeGroupAvatarOrCover(groupId, formData, { headers: { 'Content-Type': 'multipart/form-data' } })
|
|
90
|
+
.then((data) => {
|
|
91
|
+
onChange && onChange(data.emotional_image);
|
|
92
|
+
setLoading(false);
|
|
93
|
+
})
|
|
94
|
+
.catch((error) => {
|
|
95
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
96
|
+
setLoading(false);
|
|
97
|
+
setAlert(intl.formatMessage(messages.errorLoadImage));
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* If there is an error
|
|
102
|
+
*/
|
|
103
|
+
if (alert) {
|
|
104
|
+
return (react_1.default.createElement(material_1.Alert, { color: "error", onClose: () => setAlert(null) }, alert));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Renders root object (if not hidden by autoHide prop)
|
|
108
|
+
*/
|
|
109
|
+
if (!autoHide) {
|
|
110
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
111
|
+
react_1.default.createElement("input", { type: "file", onChange: handleUpload, ref: fileInput, hidden: true, accept: ".gif,.png,.jpg,.jpeg" }),
|
|
112
|
+
react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className), size: "medium", variant: "contained", disabled: loading, onClick: () => fileInput.current.click(), loading: loading }, rest),
|
|
113
|
+
react_1.default.createElement(Icon_1.default, null, "image"))));
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
exports.default = ChangeGroupCover;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PREFIX = "SCChangeGroupCoverButton";
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export interface ChangeGroupPictureProps {
|
|
2
|
+
/**
|
|
3
|
+
* Id of the group. It is optional only for group creation modal.
|
|
4
|
+
* @default null
|
|
5
|
+
*/
|
|
6
|
+
groupId?: number;
|
|
7
|
+
/**
|
|
8
|
+
* On change function.
|
|
9
|
+
* @default null
|
|
10
|
+
*/
|
|
11
|
+
onChange?: (cover: any) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Hides this component
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
autoHide?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Overrides or extends the styles applied to the component.
|
|
19
|
+
* @default null
|
|
20
|
+
*/
|
|
21
|
+
className?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Prop to handle avatar loading in the create group modal.
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
isCreationMode?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Any other properties
|
|
29
|
+
*/
|
|
30
|
+
[p: string]: any;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* > API documentation for the Community-JS Change Group Picture component. Learn about the available props and the CSS API.
|
|
34
|
+
*
|
|
35
|
+
*
|
|
36
|
+
* This component renders a button that allows admins to manage their group pictures.
|
|
37
|
+
* Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/ChangeGroupPicture)
|
|
38
|
+
|
|
39
|
+
#### Import
|
|
40
|
+
|
|
41
|
+
```jsx
|
|
42
|
+
import {ChangeGroupPicture} from '@selfcommunity/react-ui';
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### Component Name
|
|
46
|
+
|
|
47
|
+
The name `SCChangeGroupPictureButton` can be used when providing style overrides in the theme.
|
|
48
|
+
|
|
49
|
+
#### CSS
|
|
50
|
+
|
|
51
|
+
|Rule Name|Global class|Description|
|
|
52
|
+
|---|---|---|
|
|
53
|
+
|root|.SCChangeGroupPictureButton-root|Styles applied to the root element.|
|
|
54
|
+
|
|
55
|
+
* @param inProps
|
|
56
|
+
*/
|
|
57
|
+
export default function ChangeGroupPicture(inProps: ChangeGroupPictureProps): JSX.Element;
|
|
@@ -0,0 +1,117 @@
|
|
|
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 Icon_1 = tslib_1.__importDefault(require("@mui/material/Icon"));
|
|
8
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
9
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
10
|
+
const system_1 = require("@mui/system");
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const Errors_1 = require("../../constants/Errors");
|
|
13
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
14
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
15
|
+
const react_intl_1 = require("react-intl");
|
|
16
|
+
const lab_1 = require("@mui/lab");
|
|
17
|
+
const messages = (0, react_intl_1.defineMessages)({
|
|
18
|
+
errorLoadImage: {
|
|
19
|
+
id: 'ui.changeGroupCover.button.change.alertErrorImage',
|
|
20
|
+
defaultMessage: 'ui.changeGroupCover.button.change.alertErrorImage'
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const classes = {
|
|
24
|
+
root: `${constants_1.PREFIX}-root`
|
|
25
|
+
};
|
|
26
|
+
const Root = (0, styles_1.styled)(lab_1.LoadingButton, {
|
|
27
|
+
name: constants_1.PREFIX,
|
|
28
|
+
slot: 'Root'
|
|
29
|
+
})(() => ({}));
|
|
30
|
+
/**
|
|
31
|
+
* > API documentation for the Community-JS Change Group Picture component. Learn about the available props and the CSS API.
|
|
32
|
+
*
|
|
33
|
+
*
|
|
34
|
+
* This component renders a button that allows admins to manage their group pictures.
|
|
35
|
+
* Take a look at our <strong>demo</strong> component [here](/docs/sdk/community-js/react-ui/Components/ChangeGroupPicture)
|
|
36
|
+
|
|
37
|
+
#### Import
|
|
38
|
+
|
|
39
|
+
```jsx
|
|
40
|
+
import {ChangeGroupPicture} from '@selfcommunity/react-ui';
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
#### Component Name
|
|
44
|
+
|
|
45
|
+
The name `SCChangeGroupPictureButton` can be used when providing style overrides in the theme.
|
|
46
|
+
|
|
47
|
+
#### CSS
|
|
48
|
+
|
|
49
|
+
|Rule Name|Global class|Description|
|
|
50
|
+
|---|---|---|
|
|
51
|
+
|root|.SCChangeGroupPictureButton-root|Styles applied to the root element.|
|
|
52
|
+
|
|
53
|
+
* @param inProps
|
|
54
|
+
*/
|
|
55
|
+
function ChangeGroupPicture(inProps) {
|
|
56
|
+
//PROPS
|
|
57
|
+
const props = (0, system_1.useThemeProps)({
|
|
58
|
+
props: inProps,
|
|
59
|
+
name: constants_1.PREFIX
|
|
60
|
+
});
|
|
61
|
+
const { groupId, onChange, autoHide, className, isCreationMode = false } = props, rest = tslib_1.__rest(props, ["groupId", "onChange", "autoHide", "className", "isCreationMode"]);
|
|
62
|
+
//STATE
|
|
63
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
64
|
+
const [alert, setAlert] = (0, react_1.useState)(null);
|
|
65
|
+
let fileInput = (0, react_1.useRef)(null);
|
|
66
|
+
//CONTEXT
|
|
67
|
+
const scUserContext = (0, react_1.useContext)(react_core_1.SCUserContext);
|
|
68
|
+
// INTL
|
|
69
|
+
const intl = (0, react_intl_1.useIntl)();
|
|
70
|
+
// Anonymous
|
|
71
|
+
if (!scUserContext.user) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Handles avatar upload
|
|
76
|
+
* @param event
|
|
77
|
+
*/
|
|
78
|
+
function handleUpload(event) {
|
|
79
|
+
fileInput = event.target.files[0];
|
|
80
|
+
isCreationMode ? onChange && onChange(fileInput) : handleSave();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Performs save avatar after upload
|
|
84
|
+
*/
|
|
85
|
+
function handleSave() {
|
|
86
|
+
setLoading(true);
|
|
87
|
+
const formData = new FormData();
|
|
88
|
+
formData.append('image_original', fileInput);
|
|
89
|
+
api_services_1.GroupService.changeGroupAvatarOrCover(groupId, formData, { headers: { 'Content-Type': 'multipart/form-data' } })
|
|
90
|
+
.then((data) => {
|
|
91
|
+
setLoading(false);
|
|
92
|
+
onChange && onChange(data.image_bigger);
|
|
93
|
+
})
|
|
94
|
+
.catch((error) => {
|
|
95
|
+
setAlert(intl.formatMessage(messages.errorLoadImage));
|
|
96
|
+
setLoading(false);
|
|
97
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* If there is an error
|
|
102
|
+
*/
|
|
103
|
+
if (alert) {
|
|
104
|
+
return (react_1.default.createElement(material_1.Alert, { color: "error", onClose: () => setAlert(null) }, alert));
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Renders the component (if not hidden by autoHide prop)
|
|
108
|
+
*/
|
|
109
|
+
if (!autoHide) {
|
|
110
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
111
|
+
react_1.default.createElement("input", { type: "file", onChange: handleUpload, ref: fileInput, hidden: true, accept: ".gif,.png,.jpg,.jpeg" }),
|
|
112
|
+
react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className), size: "small", variant: "contained", disabled: loading, onClick: () => fileInput.current.click(), loading: loading }, rest),
|
|
113
|
+
react_1.default.createElement(Icon_1.default, null, "photo_camera"))));
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
exports.default = ChangeGroupPicture;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PREFIX = "SCChangeGroupPictureButton";
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { BaseDialogProps } from '../../shared/BaseDialog';
|
|
2
|
+
import { SCGroupType } from '@selfcommunity/types';
|
|
3
|
+
export interface CreateGroupProps extends BaseDialogProps {
|
|
4
|
+
/**
|
|
5
|
+
* Overrides or extends the styles applied to the component.
|
|
6
|
+
* @default null
|
|
7
|
+
*/
|
|
8
|
+
className?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Open dialog
|
|
11
|
+
* @default true
|
|
12
|
+
*/
|
|
13
|
+
open?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* On dialog close callback function
|
|
16
|
+
* @default null
|
|
17
|
+
*/
|
|
18
|
+
onClose?: () => void;
|
|
19
|
+
/**
|
|
20
|
+
* Group Object
|
|
21
|
+
* @default null
|
|
22
|
+
*/
|
|
23
|
+
group?: SCGroupType;
|
|
24
|
+
/**
|
|
25
|
+
* Any other properties
|
|
26
|
+
*/
|
|
27
|
+
[p: string]: any;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
*> API documentation for the Community-JS Create Group Button component. Learn about the available props and the CSS API.
|
|
31
|
+
*
|
|
32
|
+
#### Import
|
|
33
|
+
```jsx
|
|
34
|
+
import {CreateGroupButton} from '@selfcommunity/react-ui';
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
#### Component Name
|
|
38
|
+
The name `SCCreateGroup` can be used when providing style overrides in the theme.
|
|
39
|
+
|
|
40
|
+
#### CSS
|
|
41
|
+
|
|
42
|
+
|Rule Name|Global class|Description|
|
|
43
|
+
|---|---|---|
|
|
44
|
+
|root|.SCCreateGroup-root|Styles applied to the root element.|
|
|
45
|
+
|
|
46
|
+
* @param inProps
|
|
47
|
+
*/
|
|
48
|
+
export default function CreateGroup(inProps: CreateGroupProps): JSX.Element;
|
|
@@ -0,0 +1,187 @@
|
|
|
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 system_1 = require("@mui/system");
|
|
6
|
+
const styles_1 = require("@mui/material/styles");
|
|
7
|
+
const material_1 = require("@mui/material");
|
|
8
|
+
const react_intl_1 = require("react-intl");
|
|
9
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
10
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
|
|
13
|
+
const lab_1 = require("@mui/lab");
|
|
14
|
+
const ChangeGroupPicture_1 = tslib_1.__importDefault(require("../ChangeGroupPicture"));
|
|
15
|
+
const ChangeGroupCover_1 = tslib_1.__importDefault(require("../ChangeGroupCover"));
|
|
16
|
+
const Group_1 = require("../../constants/Group");
|
|
17
|
+
const GroupInviteButton_1 = tslib_1.__importDefault(require("../GroupInviteButton"));
|
|
18
|
+
const types_1 = require("@selfcommunity/types");
|
|
19
|
+
const Errors_1 = require("../../constants/Errors");
|
|
20
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
21
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
22
|
+
const messages = (0, react_intl_1.defineMessages)({
|
|
23
|
+
name: {
|
|
24
|
+
id: 'ui.createGroup.name.placeholder',
|
|
25
|
+
defaultMessage: 'ui.createGroup.name.placeholder'
|
|
26
|
+
},
|
|
27
|
+
description: {
|
|
28
|
+
id: 'ui.createGroup.description.placeholder',
|
|
29
|
+
defaultMessage: 'ui.createGroup.description.placeholder'
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const classes = {
|
|
33
|
+
root: `${constants_1.PREFIX}-root`,
|
|
34
|
+
active: `${constants_1.PREFIX}-active`,
|
|
35
|
+
title: `${constants_1.PREFIX}-title`,
|
|
36
|
+
header: `${constants_1.PREFIX}-header`,
|
|
37
|
+
cover: `${constants_1.PREFIX}-cover`,
|
|
38
|
+
avatar: `${constants_1.PREFIX}-avatar`,
|
|
39
|
+
form: `${constants_1.PREFIX}-form`,
|
|
40
|
+
switch: `${constants_1.PREFIX}-switch`,
|
|
41
|
+
switchLabel: `${constants_1.PREFIX}-switch-label`,
|
|
42
|
+
name: `${constants_1.PREFIX}-name`,
|
|
43
|
+
description: `${constants_1.PREFIX}-description`,
|
|
44
|
+
content: `${constants_1.PREFIX}-content`,
|
|
45
|
+
privacySection: `${constants_1.PREFIX}-privacy-section`,
|
|
46
|
+
privacySectionInfo: `${constants_1.PREFIX}-privacy-section-info`,
|
|
47
|
+
visibilitySection: `${constants_1.PREFIX}-visibility-section`,
|
|
48
|
+
visibilitySectionInfo: `${constants_1.PREFIX}-visibility-section-info`,
|
|
49
|
+
inviteSection: `${constants_1.PREFIX}-invite-section`
|
|
50
|
+
};
|
|
51
|
+
const Root = (0, styles_1.styled)(BaseDialog_1.default, {
|
|
52
|
+
name: constants_1.PREFIX,
|
|
53
|
+
slot: 'Root'
|
|
54
|
+
})(() => ({}));
|
|
55
|
+
/**
|
|
56
|
+
*> API documentation for the Community-JS Create Group Button component. Learn about the available props and the CSS API.
|
|
57
|
+
*
|
|
58
|
+
#### Import
|
|
59
|
+
```jsx
|
|
60
|
+
import {CreateGroupButton} from '@selfcommunity/react-ui';
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
#### Component Name
|
|
64
|
+
The name `SCCreateGroup` can be used when providing style overrides in the theme.
|
|
65
|
+
|
|
66
|
+
#### CSS
|
|
67
|
+
|
|
68
|
+
|Rule Name|Global class|Description|
|
|
69
|
+
|---|---|---|
|
|
70
|
+
|root|.SCCreateGroup-root|Styles applied to the root element.|
|
|
71
|
+
|
|
72
|
+
* @param inProps
|
|
73
|
+
*/
|
|
74
|
+
function CreateGroup(inProps) {
|
|
75
|
+
//PROPS
|
|
76
|
+
const props = (0, system_1.useThemeProps)({
|
|
77
|
+
props: inProps,
|
|
78
|
+
name: constants_1.PREFIX
|
|
79
|
+
});
|
|
80
|
+
const { className, open = true, onClose, group } = props, rest = tslib_1.__rest(props, ["className", "open", "onClose", "group"]);
|
|
81
|
+
// TODO: fare initial state con tutti i fields per la gestione dell'edit
|
|
82
|
+
// STATE
|
|
83
|
+
const [avatar, setAvatar] = (0, react_1.useState)('');
|
|
84
|
+
const [cover, setCover] = (0, react_1.useState)('');
|
|
85
|
+
const [name, setName] = (0, react_1.useState)('');
|
|
86
|
+
const [invitedUsers, setInvitedUsers] = (0, react_1.useState)(null);
|
|
87
|
+
const [description, setDescription] = (0, react_1.useState)('');
|
|
88
|
+
const [isPublic, setIsPublic] = (0, react_1.useState)(true);
|
|
89
|
+
const [isVisible, setIsVisible] = (0, react_1.useState)(true);
|
|
90
|
+
const [isSubmitting, setIsSubmitting] = (0, react_1.useState)(false);
|
|
91
|
+
// INTL
|
|
92
|
+
const intl = (0, react_intl_1.useIntl)();
|
|
93
|
+
// CONTEXT
|
|
94
|
+
// PREFERENCES
|
|
95
|
+
const scPreferences = (0, react_core_1.useSCPreferences)();
|
|
96
|
+
const _backgroundCover = Object.assign({}, (cover
|
|
97
|
+
? { background: `url('${cover}') center / cover` }
|
|
98
|
+
: { background: `url('${scPreferences.preferences[react_core_1.SCPreferences.IMAGES_USER_DEFAULT_COVER].value}') center / cover` }));
|
|
99
|
+
function handleChangeAvatar(avatar) {
|
|
100
|
+
const reader = new FileReader();
|
|
101
|
+
reader.onloadend = () => {
|
|
102
|
+
setAvatar(reader.result);
|
|
103
|
+
};
|
|
104
|
+
reader.readAsDataURL(avatar);
|
|
105
|
+
}
|
|
106
|
+
function handleChangeCover(cover) {
|
|
107
|
+
const reader = new FileReader();
|
|
108
|
+
reader.onloadend = () => {
|
|
109
|
+
setCover(reader.result);
|
|
110
|
+
};
|
|
111
|
+
reader.readAsDataURL(cover);
|
|
112
|
+
}
|
|
113
|
+
const handleSubmit = () => {
|
|
114
|
+
setIsSubmitting(true);
|
|
115
|
+
const formData = new FormData();
|
|
116
|
+
formData.append('name', name);
|
|
117
|
+
formData.append('description', description);
|
|
118
|
+
formData.append('privacy', isPublic ? types_1.SCGroupPrivacyType.PUBLIC : types_1.SCGroupPrivacyType.PRIVATE);
|
|
119
|
+
formData.append('image_original', avatar);
|
|
120
|
+
formData.append('emotional_image_original', cover);
|
|
121
|
+
formData.append('visible', isVisible);
|
|
122
|
+
for (const key in invitedUsers) {
|
|
123
|
+
formData.append(key, invitedUsers[key]);
|
|
124
|
+
}
|
|
125
|
+
api_services_1.GroupService.createGroup(formData, { headers: { 'Content-Type': 'multipart/form-data' } })
|
|
126
|
+
.then((data) => {
|
|
127
|
+
console.log(data);
|
|
128
|
+
setIsSubmitting(false);
|
|
129
|
+
})
|
|
130
|
+
.catch((error) => {
|
|
131
|
+
setIsSubmitting(false);
|
|
132
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
const handleInviteSection = (data) => {
|
|
136
|
+
setInvitedUsers(data);
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Renders root object
|
|
140
|
+
*/
|
|
141
|
+
return (react_1.default.createElement(Root, Object.assign({ DialogContentProps: { dividers: false }, title: group ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.title.edit", defaultMessage: "ui.createGroup.title.edit" })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.title", defaultMessage: "ui.createGroup.title" })), open: open, onClose: onClose, className: (0, classnames_1.default)(classes.root, className), actions: react_1.default.createElement(lab_1.LoadingButton, { loading: isSubmitting, disabled: !name, variant: "contained", onClick: handleSubmit, color: "secondary" }, group ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.button.edit", defaultMessage: "ui.createGroup.button.edit" })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.button.create", defaultMessage: "ui.createGroup.button.create" }))) }, rest),
|
|
142
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
|
143
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
|
144
|
+
react_1.default.createElement(material_1.Paper, { style: _backgroundCover, classes: { root: classes.cover } },
|
|
145
|
+
react_1.default.createElement(material_1.Box, { className: classes.avatar },
|
|
146
|
+
react_1.default.createElement(material_1.Avatar, null, avatar ? react_1.default.createElement("img", { src: avatar, alt: "avatar" }) : react_1.default.createElement(material_1.Icon, null, "icon_image"))),
|
|
147
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
|
148
|
+
react_1.default.createElement(ChangeGroupPicture_1.default, { isCreationMode: true, onChange: handleChangeAvatar }),
|
|
149
|
+
react_1.default.createElement(ChangeGroupCover_1.default, { isCreationMode: true, onChange: handleChangeCover }))),
|
|
150
|
+
react_1.default.createElement(material_1.Typography, { className: classes.header, align: "center" },
|
|
151
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.header", defaultMessage: "ui.createGroup.header" }))),
|
|
152
|
+
react_1.default.createElement(material_1.FormGroup, { className: classes.form },
|
|
153
|
+
react_1.default.createElement(material_1.TextField, { required: true, className: classes.name, placeholder: `${intl.formatMessage(messages.name)}`, margin: "normal", value: name, onChange: (event) => setName(event.target.value), InputProps: {
|
|
154
|
+
endAdornment: react_1.default.createElement(material_1.Typography, { variant: "body2" }, Group_1.GROUP_TITLE_MAX_LENGTH - name.length)
|
|
155
|
+
} }),
|
|
156
|
+
react_1.default.createElement(material_1.TextField, { multiline: true, className: classes.description, placeholder: `${intl.formatMessage(messages.description)}`, margin: "normal", value: description, onChange: (event) => setDescription(event.target.value), InputProps: {
|
|
157
|
+
endAdornment: react_1.default.createElement(material_1.Typography, { variant: "body2" }, Group_1.GROUP_DESCRIPTION_MAX_LENGTH - description.length)
|
|
158
|
+
} }),
|
|
159
|
+
react_1.default.createElement(material_1.Box, { className: classes.privacySection },
|
|
160
|
+
react_1.default.createElement(material_1.Typography, { variant: "h4" },
|
|
161
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.privacy.title", defaultMessage: "ui.createGroup.privacy.title", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })),
|
|
162
|
+
react_1.default.createElement(material_1.Stack, { direction: "row", spacing: 1, alignItems: "center" },
|
|
163
|
+
react_1.default.createElement(material_1.Typography, { className: (0, classnames_1.default)(classes.switchLabel, { [classes.active]: !isPublic }) },
|
|
164
|
+
react_1.default.createElement(material_1.Icon, null, "private"),
|
|
165
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.privacy.private", defaultMessage: "ui.createGroup.privacy.private" })),
|
|
166
|
+
react_1.default.createElement(material_1.Switch, { className: classes.switch, checked: isPublic, onClick: () => setIsPublic(!isPublic) }),
|
|
167
|
+
react_1.default.createElement(material_1.Typography, { className: (0, classnames_1.default)(classes.switchLabel, { [classes.active]: isPublic }) },
|
|
168
|
+
react_1.default.createElement(material_1.Icon, null, "public"),
|
|
169
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.privacy.public", defaultMessage: "ui.createGroup.privacy.public" }))),
|
|
170
|
+
react_1.default.createElement(material_1.Typography, { variant: "body2", className: classes.privacySectionInfo }, isPublic ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.privacy.public.info", defaultMessage: "ui.createGroup.privacy.public.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.privacy.private.info", defaultMessage: "ui.createGroup.private.public.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })))),
|
|
171
|
+
react_1.default.createElement(material_1.Box, { className: classes.visibilitySection }, !isPublic && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
172
|
+
react_1.default.createElement(material_1.Typography, { variant: "h4" },
|
|
173
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.visibility.title", defaultMessage: "ui.createGroup.visibility.title", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })),
|
|
174
|
+
react_1.default.createElement(material_1.Stack, { direction: "row", spacing: 1, alignItems: "center" },
|
|
175
|
+
react_1.default.createElement(material_1.Typography, { className: (0, classnames_1.default)(classes.switchLabel, { [classes.active]: !isVisible }) },
|
|
176
|
+
react_1.default.createElement(material_1.Icon, null, "visibility_off"),
|
|
177
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.visibility.hidden", defaultMessage: "ui.createGroup.visibility.hidden" })),
|
|
178
|
+
react_1.default.createElement(material_1.Switch, { className: classes.switch, checked: isVisible, onClick: () => setIsVisible(!isVisible) }),
|
|
179
|
+
react_1.default.createElement(material_1.Typography, { className: (0, classnames_1.default)(classes.switchLabel, { [classes.active]: isVisible }) },
|
|
180
|
+
react_1.default.createElement(material_1.Icon, null, "visibility"),
|
|
181
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.visibility.visible", defaultMessage: "ui.createGroup.visibility.visible" }))),
|
|
182
|
+
react_1.default.createElement(material_1.Typography, { variant: "body2", className: classes.visibilitySectionInfo }, !isVisible ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.visibility.hidden.info", defaultMessage: "ui.createGroup.visibility.hidden.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.createGroup.visibility.visible.info", defaultMessage: "ui.createGroup.visibility.visible.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } }))))))),
|
|
183
|
+
react_1.default.createElement(material_1.Divider, null),
|
|
184
|
+
react_1.default.createElement(material_1.Box, { className: classes.inviteSection },
|
|
185
|
+
react_1.default.createElement(GroupInviteButton_1.default, { handleInvitations: handleInviteSection })))));
|
|
186
|
+
}
|
|
187
|
+
exports.default = CreateGroup;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PREFIX = "SCCreateGroup";
|