@selfcommunity/react-ui 0.7.35-alpha.1 → 0.7.36-alpha.0
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/Group/Group.js +12 -3
- package/lib/cjs/components/GroupForm/GroupForm.js +8 -5
- package/lib/cjs/constants/Group.d.ts +1 -1
- package/lib/cjs/constants/Group.js +1 -1
- package/lib/esm/components/Group/Group.js +13 -4
- package/lib/esm/components/GroupForm/GroupForm.js +8 -5
- package/lib/esm/constants/Group.d.ts +1 -1
- package/lib/esm/constants/Group.js +1 -1
- package/lib/umd/react-ui.js +1 -1
- package/package.json +7 -7
|
@@ -78,8 +78,17 @@ function Group(inProps) {
|
|
|
78
78
|
// CONST
|
|
79
79
|
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]);
|
|
80
80
|
const [openAlert, setOpenAlert] = (0, react_1.useState)(false);
|
|
81
|
-
//
|
|
81
|
+
// HOOKS
|
|
82
82
|
const intl = (0, react_intl_1.useIntl)();
|
|
83
|
+
const theme = (0, material_1.useTheme)();
|
|
84
|
+
const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
|
|
85
|
+
// HELPERS
|
|
86
|
+
const formatGroupName = (name, maxLength) => {
|
|
87
|
+
if (name.length <= maxLength) {
|
|
88
|
+
return name;
|
|
89
|
+
}
|
|
90
|
+
return name.substring(0, maxLength) + '...';
|
|
91
|
+
};
|
|
83
92
|
/**
|
|
84
93
|
* Render authenticated actions
|
|
85
94
|
* @return {JSX.Element}
|
|
@@ -100,8 +109,8 @@ function Group(inProps) {
|
|
|
100
109
|
*/
|
|
101
110
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
102
111
|
react_1.default.createElement(Root, Object.assign({ elevation: elevation }, rest, { className: (0, classnames_1.default)(classes.root, className), ButtonBaseProps: { component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.GROUP_ROUTE_NAME, scGroup) }, image: react_1.default.createElement(material_1.Avatar, { alt: scGroup.name, src: scGroup.image_medium, className: classes.avatar }), primary: react_1.default.createElement(react_1.default.Fragment, null,
|
|
103
|
-
scGroup.name,
|
|
104
|
-
|
|
112
|
+
isMobile ? formatGroupName(scGroup.name, 15) : formatGroupName(scGroup.name, 20),
|
|
113
|
+
' ',
|
|
105
114
|
react_1.default.createElement(material_1.Icon, { className: classes.icon }, (group === null || group === void 0 ? void 0 : group.privacy) === types_1.SCGroupPrivacyType.PRIVATE ? 'private' : 'public')), secondary: `${intl.formatMessage(messages.groupMembers, { total: scGroup.subscribers_counter })}`, actions: hideActions ? null : renderAuthenticatedActions() })),
|
|
106
115
|
openAlert && react_1.default.createElement(UserDeletedSnackBar_1.default, { open: openAlert, handleClose: () => setOpenAlert(false) })));
|
|
107
116
|
}
|
|
@@ -92,7 +92,7 @@ const Root = (0, styles_1.styled)(BaseDialog_1.default, {
|
|
|
92
92
|
* @param inProps
|
|
93
93
|
*/
|
|
94
94
|
function GroupForm(inProps) {
|
|
95
|
-
var _a;
|
|
95
|
+
var _a, _b, _c, _d, _e;
|
|
96
96
|
//PROPS
|
|
97
97
|
const props = (0, system_1.useThemeProps)({
|
|
98
98
|
props: inProps,
|
|
@@ -213,7 +213,10 @@ function GroupForm(inProps) {
|
|
|
213
213
|
/**
|
|
214
214
|
* Renders root object
|
|
215
215
|
*/
|
|
216
|
-
return (react_1.default.createElement(Root, Object.assign({ DialogContentProps: { dividers: false }, title: group ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.title.edit", defaultMessage: "ui.groupForm.title.edit" })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.title", defaultMessage: "ui.groupForm.title" })), open: open, onClose: onClose, className: (0, classnames_1.default)(classes.root, className), actions: react_1.default.createElement(lab_1.LoadingButton, { loading: field.isSubmitting, disabled: !field.name ||
|
|
216
|
+
return (react_1.default.createElement(Root, Object.assign({ DialogContentProps: { dividers: false }, title: group ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.title.edit", defaultMessage: "ui.groupForm.title.edit" })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.title", defaultMessage: "ui.groupForm.title" })), open: open, onClose: onClose, className: (0, classnames_1.default)(classes.root, className), actions: react_1.default.createElement(lab_1.LoadingButton, { loading: field.isSubmitting, disabled: !field.name ||
|
|
217
|
+
Object.keys(error).length !== 0 ||
|
|
218
|
+
field.name.length > Group_1.GROUP_TITLE_MAX_LENGTH ||
|
|
219
|
+
field.name.description > Group_1.GROUP_DESCRIPTION_MAX_LENGTH, variant: "contained", onClick: handleSubmit, color: "secondary" }, group ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.button.edit", defaultMessage: "ui.groupForm.button.edit" })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.button.create", defaultMessage: "ui.groupForm.button.create" }))) }, rest),
|
|
217
220
|
react_1.default.createElement(react_1.default.Fragment, null,
|
|
218
221
|
react_1.default.createElement(react_1.default.Fragment, null,
|
|
219
222
|
react_1.default.createElement(material_1.Paper, { style: _backgroundCover, classes: { root: classes.cover } },
|
|
@@ -226,10 +229,10 @@ function GroupForm(inProps) {
|
|
|
226
229
|
react_1.default.createElement(material_1.FormGroup, { className: classes.form },
|
|
227
230
|
react_1.default.createElement(material_1.TextField, { required: true, className: classes.name, placeholder: `${intl.formatMessage(messages.name)}`, margin: "normal", value: field.name, name: "name", onChange: handleChange, InputProps: {
|
|
228
231
|
endAdornment: react_1.default.createElement(material_1.Typography, { variant: "body2" }, Group_1.GROUP_TITLE_MAX_LENGTH - field.name.length)
|
|
229
|
-
} }),
|
|
232
|
+
}, error: Boolean(((_a = field === null || field === void 0 ? void 0 : field.name) === null || _a === void 0 ? void 0 : _a.length) > Group_1.GROUP_TITLE_MAX_LENGTH), helperText: ((_b = field === null || field === void 0 ? void 0 : field.name) === null || _b === void 0 ? void 0 : _b.length) > Group_1.GROUP_TITLE_MAX_LENGTH ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.name.error.maxLength", defaultMessage: "ui.groupForm.name.error.maxLength" })) : null }),
|
|
230
233
|
react_1.default.createElement(material_1.TextField, { multiline: true, className: classes.description, placeholder: `${intl.formatMessage(messages.description)}`, margin: "normal", value: field.description, name: "description", onChange: handleChange, InputProps: {
|
|
231
|
-
endAdornment: (react_1.default.createElement(material_1.Typography, { variant: "body2" }, ((
|
|
232
|
-
} }),
|
|
234
|
+
endAdornment: (react_1.default.createElement(material_1.Typography, { variant: "body2" }, ((_c = field.description) === null || _c === void 0 ? void 0 : _c.length) ? Group_1.GROUP_DESCRIPTION_MAX_LENGTH - field.description.length : Group_1.GROUP_DESCRIPTION_MAX_LENGTH))
|
|
235
|
+
}, error: Boolean(((_d = field.description) === null || _d === void 0 ? void 0 : _d.length) > Group_1.GROUP_DESCRIPTION_MAX_LENGTH), helperText: ((_e = field.description) === null || _e === void 0 ? void 0 : _e.length) > Group_1.GROUP_DESCRIPTION_MAX_LENGTH ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.description.error.maxLength", defaultMessage: "ui.groupForm.description.error.maxLength" })) : null }),
|
|
233
236
|
react_1.default.createElement(material_1.Box, { className: classes.privacySection },
|
|
234
237
|
react_1.default.createElement(material_1.Typography, { variant: "h4" },
|
|
235
238
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.privacy.title", defaultMessage: "ui.groupForm.privacy.title", values: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const GROUP_TITLE_MAX_LENGTH =
|
|
1
|
+
export declare const GROUP_TITLE_MAX_LENGTH = 40;
|
|
2
2
|
export declare const GROUP_DESCRIPTION_MAX_LENGTH = 500;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GROUP_DESCRIPTION_MAX_LENGTH = exports.GROUP_TITLE_MAX_LENGTH = void 0;
|
|
4
|
-
exports.GROUP_TITLE_MAX_LENGTH =
|
|
4
|
+
exports.GROUP_TITLE_MAX_LENGTH = 40;
|
|
5
5
|
exports.GROUP_DESCRIPTION_MAX_LENGTH = 500;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __rest } from "tslib";
|
|
2
2
|
import React, { useMemo, useState } from 'react';
|
|
3
3
|
import { styled } from '@mui/material/styles';
|
|
4
|
-
import { Avatar, Button, Icon, Stack } from '@mui/material';
|
|
4
|
+
import { Avatar, Button, Icon, Stack, useMediaQuery, useTheme } from '@mui/material';
|
|
5
5
|
import { SCGroupPrivacyType, SCGroupSubscriptionStatusType } from '@selfcommunity/types';
|
|
6
6
|
import { Link, SCRoutes, useSCFetchGroup, useSCRouting, useSCUser } from '@selfcommunity/react-core';
|
|
7
7
|
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
|
@@ -76,8 +76,17 @@ export default function Group(inProps) {
|
|
|
76
76
|
// CONST
|
|
77
77
|
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]);
|
|
78
78
|
const [openAlert, setOpenAlert] = useState(false);
|
|
79
|
-
//
|
|
79
|
+
// HOOKS
|
|
80
80
|
const intl = useIntl();
|
|
81
|
+
const theme = useTheme();
|
|
82
|
+
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
|
|
83
|
+
// HELPERS
|
|
84
|
+
const formatGroupName = (name, maxLength) => {
|
|
85
|
+
if (name.length <= maxLength) {
|
|
86
|
+
return name;
|
|
87
|
+
}
|
|
88
|
+
return name.substring(0, maxLength) + '...';
|
|
89
|
+
};
|
|
81
90
|
/**
|
|
82
91
|
* Render authenticated actions
|
|
83
92
|
* @return {JSX.Element}
|
|
@@ -98,8 +107,8 @@ export default function Group(inProps) {
|
|
|
98
107
|
*/
|
|
99
108
|
return (React.createElement(React.Fragment, null,
|
|
100
109
|
React.createElement(Root, Object.assign({ elevation: elevation }, rest, { className: classNames(classes.root, className), ButtonBaseProps: { component: Link, to: scRoutingContext.url(SCRoutes.GROUP_ROUTE_NAME, scGroup) }, image: React.createElement(Avatar, { alt: scGroup.name, src: scGroup.image_medium, className: classes.avatar }), primary: React.createElement(React.Fragment, null,
|
|
101
|
-
scGroup.name,
|
|
102
|
-
|
|
110
|
+
isMobile ? formatGroupName(scGroup.name, 15) : formatGroupName(scGroup.name, 20),
|
|
111
|
+
' ',
|
|
103
112
|
React.createElement(Icon, { className: classes.icon }, (group === null || group === void 0 ? void 0 : group.privacy) === SCGroupPrivacyType.PRIVATE ? 'private' : 'public')), secondary: `${intl.formatMessage(messages.groupMembers, { total: scGroup.subscribers_counter })}`, actions: hideActions ? null : renderAuthenticatedActions() })),
|
|
104
113
|
openAlert && React.createElement(UserDeletedSnackBar, { open: openAlert, handleClose: () => setOpenAlert(false) })));
|
|
105
114
|
}
|
|
@@ -90,7 +90,7 @@ const Root = styled(BaseDialog, {
|
|
|
90
90
|
* @param inProps
|
|
91
91
|
*/
|
|
92
92
|
export default function GroupForm(inProps) {
|
|
93
|
-
var _a;
|
|
93
|
+
var _a, _b, _c, _d, _e;
|
|
94
94
|
//PROPS
|
|
95
95
|
const props = useThemeProps({
|
|
96
96
|
props: inProps,
|
|
@@ -211,7 +211,10 @@ export default function GroupForm(inProps) {
|
|
|
211
211
|
/**
|
|
212
212
|
* Renders root object
|
|
213
213
|
*/
|
|
214
|
-
return (React.createElement(Root, Object.assign({ DialogContentProps: { dividers: false }, title: group ? (React.createElement(FormattedMessage, { id: "ui.groupForm.title.edit", defaultMessage: "ui.groupForm.title.edit" })) : (React.createElement(FormattedMessage, { id: "ui.groupForm.title", defaultMessage: "ui.groupForm.title" })), open: open, onClose: onClose, className: classNames(classes.root, className), actions: React.createElement(LoadingButton, { loading: field.isSubmitting, disabled: !field.name ||
|
|
214
|
+
return (React.createElement(Root, Object.assign({ DialogContentProps: { dividers: false }, title: group ? (React.createElement(FormattedMessage, { id: "ui.groupForm.title.edit", defaultMessage: "ui.groupForm.title.edit" })) : (React.createElement(FormattedMessage, { id: "ui.groupForm.title", defaultMessage: "ui.groupForm.title" })), open: open, onClose: onClose, className: classNames(classes.root, className), actions: React.createElement(LoadingButton, { loading: field.isSubmitting, disabled: !field.name ||
|
|
215
|
+
Object.keys(error).length !== 0 ||
|
|
216
|
+
field.name.length > GROUP_TITLE_MAX_LENGTH ||
|
|
217
|
+
field.name.description > GROUP_DESCRIPTION_MAX_LENGTH, variant: "contained", onClick: handleSubmit, color: "secondary" }, group ? (React.createElement(FormattedMessage, { id: "ui.groupForm.button.edit", defaultMessage: "ui.groupForm.button.edit" })) : (React.createElement(FormattedMessage, { id: "ui.groupForm.button.create", defaultMessage: "ui.groupForm.button.create" }))) }, rest),
|
|
215
218
|
React.createElement(React.Fragment, null,
|
|
216
219
|
React.createElement(React.Fragment, null,
|
|
217
220
|
React.createElement(Paper, { style: _backgroundCover, classes: { root: classes.cover } },
|
|
@@ -224,10 +227,10 @@ export default function GroupForm(inProps) {
|
|
|
224
227
|
React.createElement(FormGroup, { className: classes.form },
|
|
225
228
|
React.createElement(TextField, { required: true, className: classes.name, placeholder: `${intl.formatMessage(messages.name)}`, margin: "normal", value: field.name, name: "name", onChange: handleChange, InputProps: {
|
|
226
229
|
endAdornment: React.createElement(Typography, { variant: "body2" }, GROUP_TITLE_MAX_LENGTH - field.name.length)
|
|
227
|
-
} }),
|
|
230
|
+
}, error: Boolean(((_a = field === null || field === void 0 ? void 0 : field.name) === null || _a === void 0 ? void 0 : _a.length) > GROUP_TITLE_MAX_LENGTH), helperText: ((_b = field === null || field === void 0 ? void 0 : field.name) === null || _b === void 0 ? void 0 : _b.length) > GROUP_TITLE_MAX_LENGTH ? (React.createElement(FormattedMessage, { id: "ui.groupForm.name.error.maxLength", defaultMessage: "ui.groupForm.name.error.maxLength" })) : null }),
|
|
228
231
|
React.createElement(TextField, { multiline: true, className: classes.description, placeholder: `${intl.formatMessage(messages.description)}`, margin: "normal", value: field.description, name: "description", onChange: handleChange, InputProps: {
|
|
229
|
-
endAdornment: (React.createElement(Typography, { variant: "body2" }, ((
|
|
230
|
-
} }),
|
|
232
|
+
endAdornment: (React.createElement(Typography, { variant: "body2" }, ((_c = field.description) === null || _c === void 0 ? void 0 : _c.length) ? GROUP_DESCRIPTION_MAX_LENGTH - field.description.length : GROUP_DESCRIPTION_MAX_LENGTH))
|
|
233
|
+
}, error: Boolean(((_d = field.description) === null || _d === void 0 ? void 0 : _d.length) > GROUP_DESCRIPTION_MAX_LENGTH), helperText: ((_e = field.description) === null || _e === void 0 ? void 0 : _e.length) > GROUP_DESCRIPTION_MAX_LENGTH ? (React.createElement(FormattedMessage, { id: "ui.groupForm.description.error.maxLength", defaultMessage: "ui.groupForm.description.error.maxLength" })) : null }),
|
|
231
234
|
React.createElement(Box, { className: classes.privacySection },
|
|
232
235
|
React.createElement(Typography, { variant: "h4" },
|
|
233
236
|
React.createElement(FormattedMessage, { id: "ui.groupForm.privacy.title", defaultMessage: "ui.groupForm.privacy.title", values: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const GROUP_TITLE_MAX_LENGTH =
|
|
1
|
+
export declare const GROUP_TITLE_MAX_LENGTH = 40;
|
|
2
2
|
export declare const GROUP_DESCRIPTION_MAX_LENGTH = 500;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const GROUP_TITLE_MAX_LENGTH =
|
|
1
|
+
export const GROUP_TITLE_MAX_LENGTH = 40;
|
|
2
2
|
export const GROUP_DESCRIPTION_MAX_LENGTH = 500;
|