@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.
@@ -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
- // INTL
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 || Object.keys(error).length !== 0, 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),
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" }, ((_a = field.description) === null || _a === void 0 ? void 0 : _a.length) ? Group_1.GROUP_DESCRIPTION_MAX_LENGTH - field.description.length : Group_1.GROUP_DESCRIPTION_MAX_LENGTH))
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 = 50;
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 = 50;
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
- // INTL
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 || Object.keys(error).length !== 0, 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),
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" }, ((_a = field.description) === null || _a === void 0 ? void 0 : _a.length) ? GROUP_DESCRIPTION_MAX_LENGTH - field.description.length : GROUP_DESCRIPTION_MAX_LENGTH))
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 = 50;
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 = 50;
1
+ export const GROUP_TITLE_MAX_LENGTH = 40;
2
2
  export const GROUP_DESCRIPTION_MAX_LENGTH = 500;