@selfcommunity/react-ui 0.7.35 → 0.7.36-alpha.1
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/Category/Category.js +8 -2
- package/lib/cjs/components/Group/Group.js +9 -3
- package/lib/cjs/components/GroupForm/GroupForm.js +8 -5
- package/lib/cjs/constants/Category.d.ts +2 -0
- package/lib/cjs/constants/Category.js +5 -0
- package/lib/cjs/constants/Group.d.ts +3 -1
- package/lib/cjs/constants/Group.js +4 -2
- package/lib/cjs/utils/string.d.ts +1 -0
- package/lib/cjs/utils/string.js +10 -0
- package/lib/esm/components/Category/Category.js +9 -3
- package/lib/esm/components/Group/Group.js +10 -4
- package/lib/esm/components/GroupForm/GroupForm.js +8 -5
- package/lib/esm/constants/Category.d.ts +2 -0
- package/lib/esm/constants/Category.js +2 -0
- package/lib/esm/constants/Group.d.ts +3 -1
- package/lib/esm/constants/Group.js +3 -1
- package/lib/esm/utils/string.d.ts +1 -0
- package/lib/esm/utils/string.js +6 -0
- package/lib/umd/react-ui.js +1 -1
- package/package.json +7 -7
|
@@ -12,6 +12,8 @@ const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
|
12
12
|
const system_1 = require("@mui/system");
|
|
13
13
|
const BaseItemButton_1 = tslib_1.__importDefault(require("../../shared/BaseItemButton"));
|
|
14
14
|
const constants_1 = require("./constants");
|
|
15
|
+
const string_1 = require("../../utils/string");
|
|
16
|
+
const Category_1 = require("../../constants/Category");
|
|
15
17
|
const messages = (0, react_intl_1.defineMessages)({
|
|
16
18
|
categoryFollowers: {
|
|
17
19
|
id: 'ui.category.categoryFollowers',
|
|
@@ -66,14 +68,18 @@ function Category(inProps) {
|
|
|
66
68
|
const { scCategory, setSCCategory } = (0, react_core_1.useSCFetchCategory)({ id: categoryId, category });
|
|
67
69
|
// MEMO
|
|
68
70
|
const _ButtonBaseProps = (0, react_1.useMemo)(() => (ButtonBaseProps ? ButtonBaseProps : { component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.CATEGORY_ROUTE_NAME, scCategory) }), [ButtonBaseProps, scRoutingContext, scCategory]);
|
|
69
|
-
//
|
|
71
|
+
// HOOKS
|
|
70
72
|
const intl = (0, react_intl_1.useIntl)();
|
|
73
|
+
const theme = (0, material_1.useTheme)();
|
|
74
|
+
const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
|
|
71
75
|
if (!scCategory) {
|
|
72
76
|
return react_1.default.createElement(Skeleton_1.default, { elevation: elevation });
|
|
73
77
|
}
|
|
74
78
|
// RENDER
|
|
75
79
|
if (!autoHide) {
|
|
76
|
-
return (react_1.default.createElement(Root, Object.assign({ elevation: elevation, className: (0, classnames_1.default)(classes.root, className), ButtonBaseProps: _ButtonBaseProps, image: react_1.default.createElement(material_1.Avatar, { alt: scCategory.name, src: scCategory.image_medium, variant: "square", className: classes.categoryImage }), primary:
|
|
80
|
+
return (react_1.default.createElement(Root, Object.assign({ elevation: elevation, className: (0, classnames_1.default)(classes.root, className), ButtonBaseProps: _ButtonBaseProps, image: react_1.default.createElement(material_1.Avatar, { alt: scCategory.name, src: scCategory.image_medium, variant: "square", className: classes.categoryImage }), primary: isMobile
|
|
81
|
+
? (0, string_1.formatCroppedName)(scCategory.name, Category_1.CATEGORY_NAME_MAX_LENGTH_MOBILE)
|
|
82
|
+
: (0, string_1.formatCroppedName)(scCategory.name, Category_1.CATEGORY_NAME_MAX_LENGTH_DESKTOP), secondary: showFollowers ? `${intl.formatMessage(messages.categoryFollowers, { total: scCategory.followers_counter })}` : scCategory.slogan, actions: react_1.default.createElement(CategoryFollowButton_1.default, Object.assign({ category: scCategory }, categoryFollowButtonProps)) }, rest)));
|
|
77
83
|
}
|
|
78
84
|
return null;
|
|
79
85
|
}
|
|
@@ -14,6 +14,8 @@ const UserDeletedSnackBar_1 = tslib_1.__importDefault(require("../../shared/User
|
|
|
14
14
|
const constants_1 = require("./constants");
|
|
15
15
|
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
16
16
|
const GroupSubscribeButton_1 = tslib_1.__importDefault(require("../GroupSubscribeButton"));
|
|
17
|
+
const string_1 = require("../../utils/string");
|
|
18
|
+
const Group_1 = require("../../constants/Group");
|
|
17
19
|
const messages = (0, react_intl_1.defineMessages)({
|
|
18
20
|
groupMembers: {
|
|
19
21
|
id: 'ui.group.members',
|
|
@@ -78,8 +80,10 @@ function Group(inProps) {
|
|
|
78
80
|
// CONST
|
|
79
81
|
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
82
|
const [openAlert, setOpenAlert] = (0, react_1.useState)(false);
|
|
81
|
-
//
|
|
83
|
+
// HOOKS
|
|
82
84
|
const intl = (0, react_intl_1.useIntl)();
|
|
85
|
+
const theme = (0, material_1.useTheme)();
|
|
86
|
+
const isMobile = (0, material_1.useMediaQuery)(theme.breakpoints.down('md'));
|
|
83
87
|
/**
|
|
84
88
|
* Render authenticated actions
|
|
85
89
|
* @return {JSX.Element}
|
|
@@ -100,8 +104,10 @@ function Group(inProps) {
|
|
|
100
104
|
*/
|
|
101
105
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
102
106
|
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
|
-
|
|
104
|
-
|
|
107
|
+
isMobile
|
|
108
|
+
? (0, string_1.formatCroppedName)(scGroup.name, Group_1.GROUP_NAME_MAX_LENGTH_MOBILE)
|
|
109
|
+
: (0, string_1.formatCroppedName)(scGroup.name, Group_1.GROUP_NAME_MAX_LENGTH_DESKTOP),
|
|
110
|
+
' ',
|
|
105
111
|
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
112
|
openAlert && react_1.default.createElement(UserDeletedSnackBar_1.default, { open: openAlert, handleClose: () => setOpenAlert(false) })));
|
|
107
113
|
}
|
|
@@ -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,4 @@
|
|
|
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;
|
|
3
|
+
export declare const GROUP_NAME_MAX_LENGTH_MOBILE = 15;
|
|
4
|
+
export declare const GROUP_NAME_MAX_LENGTH_DESKTOP = 20;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GROUP_DESCRIPTION_MAX_LENGTH = exports.GROUP_TITLE_MAX_LENGTH = void 0;
|
|
4
|
-
exports.GROUP_TITLE_MAX_LENGTH =
|
|
3
|
+
exports.GROUP_NAME_MAX_LENGTH_DESKTOP = exports.GROUP_NAME_MAX_LENGTH_MOBILE = exports.GROUP_DESCRIPTION_MAX_LENGTH = exports.GROUP_TITLE_MAX_LENGTH = void 0;
|
|
4
|
+
exports.GROUP_TITLE_MAX_LENGTH = 40;
|
|
5
5
|
exports.GROUP_DESCRIPTION_MAX_LENGTH = 500;
|
|
6
|
+
exports.GROUP_NAME_MAX_LENGTH_MOBILE = 15;
|
|
7
|
+
exports.GROUP_NAME_MAX_LENGTH_DESKTOP = 20;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatCroppedName: (name: any, maxLength: any) => any;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatCroppedName = void 0;
|
|
4
|
+
const formatCroppedName = (name, maxLength) => {
|
|
5
|
+
if (name.length <= maxLength) {
|
|
6
|
+
return name;
|
|
7
|
+
}
|
|
8
|
+
return name.substring(0, maxLength) + '...';
|
|
9
|
+
};
|
|
10
|
+
exports.formatCroppedName = formatCroppedName;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __rest } from "tslib";
|
|
2
2
|
import React, { useMemo } from 'react';
|
|
3
3
|
import { styled } from '@mui/material/styles';
|
|
4
|
-
import { Avatar } from '@mui/material';
|
|
4
|
+
import { Avatar, useMediaQuery, useTheme } from '@mui/material';
|
|
5
5
|
import { Link, SCRoutes, useSCFetchCategory, useSCRouting } from '@selfcommunity/react-core';
|
|
6
6
|
import CategorySkeleton from './Skeleton';
|
|
7
7
|
import CategoryFollowButton from '../CategoryFollowButton';
|
|
@@ -10,6 +10,8 @@ import classNames from 'classnames';
|
|
|
10
10
|
import { useThemeProps } from '@mui/system';
|
|
11
11
|
import BaseItemButton from '../../shared/BaseItemButton';
|
|
12
12
|
import { PREFIX } from './constants';
|
|
13
|
+
import { formatCroppedName } from '../../utils/string';
|
|
14
|
+
import { CATEGORY_NAME_MAX_LENGTH_DESKTOP, CATEGORY_NAME_MAX_LENGTH_MOBILE } from '../../constants/Category';
|
|
13
15
|
const messages = defineMessages({
|
|
14
16
|
categoryFollowers: {
|
|
15
17
|
id: 'ui.category.categoryFollowers',
|
|
@@ -64,14 +66,18 @@ export default function Category(inProps) {
|
|
|
64
66
|
const { scCategory, setSCCategory } = useSCFetchCategory({ id: categoryId, category });
|
|
65
67
|
// MEMO
|
|
66
68
|
const _ButtonBaseProps = useMemo(() => (ButtonBaseProps ? ButtonBaseProps : { component: Link, to: scRoutingContext.url(SCRoutes.CATEGORY_ROUTE_NAME, scCategory) }), [ButtonBaseProps, scRoutingContext, scCategory]);
|
|
67
|
-
//
|
|
69
|
+
// HOOKS
|
|
68
70
|
const intl = useIntl();
|
|
71
|
+
const theme = useTheme();
|
|
72
|
+
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
|
|
69
73
|
if (!scCategory) {
|
|
70
74
|
return React.createElement(CategorySkeleton, { elevation: elevation });
|
|
71
75
|
}
|
|
72
76
|
// RENDER
|
|
73
77
|
if (!autoHide) {
|
|
74
|
-
return (React.createElement(Root, Object.assign({ elevation: elevation, className: classNames(classes.root, className), ButtonBaseProps: _ButtonBaseProps, image: React.createElement(Avatar, { alt: scCategory.name, src: scCategory.image_medium, variant: "square", className: classes.categoryImage }), primary:
|
|
78
|
+
return (React.createElement(Root, Object.assign({ elevation: elevation, className: classNames(classes.root, className), ButtonBaseProps: _ButtonBaseProps, image: React.createElement(Avatar, { alt: scCategory.name, src: scCategory.image_medium, variant: "square", className: classes.categoryImage }), primary: isMobile
|
|
79
|
+
? formatCroppedName(scCategory.name, CATEGORY_NAME_MAX_LENGTH_MOBILE)
|
|
80
|
+
: formatCroppedName(scCategory.name, CATEGORY_NAME_MAX_LENGTH_DESKTOP), secondary: showFollowers ? `${intl.formatMessage(messages.categoryFollowers, { total: scCategory.followers_counter })}` : scCategory.slogan, actions: React.createElement(CategoryFollowButton, Object.assign({ category: scCategory }, categoryFollowButtonProps)) }, rest)));
|
|
75
81
|
}
|
|
76
82
|
return null;
|
|
77
83
|
}
|
|
@@ -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';
|
|
@@ -12,6 +12,8 @@ import UserDeletedSnackBar from '../../shared/UserDeletedSnackBar';
|
|
|
12
12
|
import { PREFIX } from './constants';
|
|
13
13
|
import GroupSkeleton from './Skeleton';
|
|
14
14
|
import GroupSubscribeButton from '../GroupSubscribeButton';
|
|
15
|
+
import { formatCroppedName } from '../../utils/string';
|
|
16
|
+
import { GROUP_NAME_MAX_LENGTH_DESKTOP, GROUP_NAME_MAX_LENGTH_MOBILE } from '../../constants/Group';
|
|
15
17
|
const messages = defineMessages({
|
|
16
18
|
groupMembers: {
|
|
17
19
|
id: 'ui.group.members',
|
|
@@ -76,8 +78,10 @@ export default function Group(inProps) {
|
|
|
76
78
|
// CONST
|
|
77
79
|
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
80
|
const [openAlert, setOpenAlert] = useState(false);
|
|
79
|
-
//
|
|
81
|
+
// HOOKS
|
|
80
82
|
const intl = useIntl();
|
|
83
|
+
const theme = useTheme();
|
|
84
|
+
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
|
|
81
85
|
/**
|
|
82
86
|
* Render authenticated actions
|
|
83
87
|
* @return {JSX.Element}
|
|
@@ -98,8 +102,10 @@ export default function Group(inProps) {
|
|
|
98
102
|
*/
|
|
99
103
|
return (React.createElement(React.Fragment, null,
|
|
100
104
|
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
|
-
|
|
102
|
-
|
|
105
|
+
isMobile
|
|
106
|
+
? formatCroppedName(scGroup.name, GROUP_NAME_MAX_LENGTH_MOBILE)
|
|
107
|
+
: formatCroppedName(scGroup.name, GROUP_NAME_MAX_LENGTH_DESKTOP),
|
|
108
|
+
' ',
|
|
103
109
|
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
110
|
openAlert && React.createElement(UserDeletedSnackBar, { open: openAlert, handleClose: () => setOpenAlert(false) })));
|
|
105
111
|
}
|
|
@@ -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,4 @@
|
|
|
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;
|
|
3
|
+
export declare const GROUP_NAME_MAX_LENGTH_MOBILE = 15;
|
|
4
|
+
export declare const GROUP_NAME_MAX_LENGTH_DESKTOP = 20;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatCroppedName: (name: any, maxLength: any) => any;
|