@selfcommunity/react-ui 0.7.0-alpha.323 → 0.7.0-alpha.325
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/CommentObject/CommentObject.d.ts +6 -0
- package/lib/cjs/components/CommentObject/CommentObject.js +10 -6
- package/lib/cjs/components/CommentsObject/CommentsObject.d.ts +1 -1
- package/lib/cjs/components/CommentsObject/CommentsObject.js +4 -4
- package/lib/cjs/components/Editor/nodes/ImageNode.d.ts +2 -6
- package/lib/cjs/components/Editor/nodes/ImageNode.js +11 -19
- package/lib/cjs/components/Feed/Feed.js +1 -1
- package/lib/cjs/components/FeedObject/Activities/Activities.js +1 -1
- package/lib/cjs/components/FeedObject/Activities/RelevantActivities/CommentActivity/CommentActivity.js +13 -2
- package/lib/cjs/components/FeedObject/FeedObject.js +7 -4
- package/lib/esm/components/CommentObject/CommentObject.d.ts +6 -0
- package/lib/esm/components/CommentObject/CommentObject.js +10 -6
- package/lib/esm/components/CommentsObject/CommentsObject.d.ts +1 -1
- package/lib/esm/components/CommentsObject/CommentsObject.js +4 -4
- package/lib/esm/components/Editor/nodes/ImageNode.d.ts +2 -6
- package/lib/esm/components/Editor/nodes/ImageNode.js +11 -19
- package/lib/esm/components/Feed/Feed.js +1 -1
- package/lib/esm/components/FeedObject/Activities/Activities.js +1 -1
- package/lib/esm/components/FeedObject/Activities/RelevantActivities/CommentActivity/CommentActivity.js +14 -3
- package/lib/esm/components/FeedObject/FeedObject.js +7 -4
- package/lib/umd/react-ui.js +1 -1
- package/package.json +2 -2
|
@@ -3,12 +3,14 @@ import React, { useState } from 'react';
|
|
|
3
3
|
import { styled } from '@mui/material/styles';
|
|
4
4
|
import { Avatar } from '@mui/material';
|
|
5
5
|
import { Link, SCRoutes, useSCRouting } from '@selfcommunity/react-core';
|
|
6
|
-
import { defineMessages, useIntl } from 'react-intl';
|
|
6
|
+
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
|
7
7
|
import DateTimeAgo from '../../../../../shared/DateTimeAgo';
|
|
8
8
|
import classNames from 'classnames';
|
|
9
9
|
import { useThemeProps } from '@mui/system';
|
|
10
10
|
import BaseItem from '../../../../../shared/BaseItem';
|
|
11
11
|
import UserDeletedSnackBar from '../../../../../shared/UserDeletedSnackBar';
|
|
12
|
+
import { getContributionHtml, getRouteData } from '../../../../../utils/contribution';
|
|
13
|
+
import { MAX_SUMMARY_LENGTH } from '../../../../../constants/Feed';
|
|
12
14
|
const messages = defineMessages({
|
|
13
15
|
comment: {
|
|
14
16
|
id: 'ui.feedObject.relevantActivities.comment',
|
|
@@ -19,7 +21,8 @@ const PREFIX = 'SCCommentRelevantActivity';
|
|
|
19
21
|
const classes = {
|
|
20
22
|
root: `${PREFIX}-root`,
|
|
21
23
|
avatar: `${PREFIX}-avatar`,
|
|
22
|
-
username: `${PREFIX}-username
|
|
24
|
+
username: `${PREFIX}-username`,
|
|
25
|
+
showMoreContent: `${PREFIX}-show-more-content`
|
|
23
26
|
};
|
|
24
27
|
const Root = styled(BaseItem, {
|
|
25
28
|
name: PREFIX,
|
|
@@ -53,11 +56,19 @@ export default function CommentRelevantActivity(inProps) {
|
|
|
53
56
|
// INTL
|
|
54
57
|
const intl = useIntl();
|
|
55
58
|
// RENDER
|
|
59
|
+
const summaryHtmlTruncated = 'summary_truncated' in activityObject.comment
|
|
60
|
+
? activityObject.comment.summary_truncated
|
|
61
|
+
: activityObject.comment.html.length >= MAX_SUMMARY_LENGTH;
|
|
62
|
+
const commentHtml = 'summary_html' in activityObject.comment ? activityObject.comment.summary_html : activityObject.comment.summary;
|
|
63
|
+
const summaryHtml = getContributionHtml(commentHtml, scRoutingContext.url);
|
|
56
64
|
return (React.createElement(React.Fragment, null,
|
|
57
65
|
React.createElement(Root, Object.assign({}, rest, { className: classNames(classes.root, className), image: React.createElement(Link, Object.assign({}, (!activityObject.author.deleted && { to: scRoutingContext.url(SCRoutes.USER_PROFILE_ROUTE_NAME, activityObject.author) }), { onClick: activityObject.author.deleted ? () => setOpenAlert(true) : null }),
|
|
58
66
|
React.createElement(Avatar, { alt: activityObject.author.username, variant: "circular", src: activityObject.author.avatar, className: classes.avatar })), primary: React.createElement(React.Fragment, null, intl.formatMessage(messages.comment, {
|
|
59
67
|
username: (React.createElement(Link, Object.assign({}, (!activityObject.author.deleted && { to: scRoutingContext.url(SCRoutes.USER_PROFILE_ROUTE_NAME, activityObject.author) }), { onClick: activityObject.author.deleted ? () => setOpenAlert(true) : null, className: classes.username }), activityObject.author.username)),
|
|
60
|
-
comment:
|
|
68
|
+
comment: (React.createElement(React.Fragment, null,
|
|
69
|
+
summaryHtml,
|
|
70
|
+
React.createElement(Link, { to: scRoutingContext.url(SCRoutes.COMMENT_ROUTE_NAME, getRouteData(activityObject.comment)), className: classes.showMoreContent },
|
|
71
|
+
React.createElement(FormattedMessage, { id: "ui.commentObject.showMore", defaultMessage: "ui.commentObject.showMore" }))))
|
|
61
72
|
})), secondary: React.createElement(DateTimeAgo, { date: activityObject.active_at }) })),
|
|
62
73
|
openAlert && React.createElement(UserDeletedSnackBar, { open: openAlert, handleClose: () => setOpenAlert(false) })));
|
|
63
74
|
}
|
|
@@ -346,12 +346,15 @@ export default function FeedObject(inProps) {
|
|
|
346
346
|
setIsReplying(true);
|
|
347
347
|
performReply(comment)
|
|
348
348
|
.then((data) => {
|
|
349
|
+
// if add a comment -> the comment must be untruncated
|
|
350
|
+
const _data = data;
|
|
351
|
+
_data.summary_truncated = false;
|
|
349
352
|
if (selectedActivities !== SCFeedObjectActivitiesType.RECENT_COMMENTS) {
|
|
350
353
|
setComments([]);
|
|
351
354
|
setSelectedActivities(SCFeedObjectActivitiesType.RECENT_COMMENTS);
|
|
352
355
|
}
|
|
353
356
|
else {
|
|
354
|
-
setComments([...[
|
|
357
|
+
setComments([...[_data], ...comments]);
|
|
355
358
|
}
|
|
356
359
|
setIsReplying(false);
|
|
357
360
|
const newObj = Object.assign({}, obj, { comment_count: obj.comment_count + 1 });
|
|
@@ -378,8 +381,8 @@ export default function FeedObject(inProps) {
|
|
|
378
381
|
* Get contribution summary
|
|
379
382
|
*/
|
|
380
383
|
const getContributionSummary = useCallback((obj, template) => {
|
|
381
|
-
const contributionHtml =
|
|
382
|
-
const summaryHtmlTruncated =
|
|
384
|
+
const contributionHtml = 'summary_html' in obj ? obj.summary_html : obj.summary;
|
|
385
|
+
const summaryHtmlTruncated = 'summary_truncated' in obj ? obj.summary_truncated : obj.html.length >= MAX_SUMMARY_LENGTH;
|
|
383
386
|
const summaryHtml = expanded || template === SCFeedObjectTemplateType.DETAIL
|
|
384
387
|
? getContributionHtml(obj.html, scRoutingContext.url)
|
|
385
388
|
: getContributionHtml(contributionHtml, scRoutingContext.url);
|
|
@@ -456,7 +459,7 @@ export default function FeedObject(inProps) {
|
|
|
456
459
|
template === SCFeedObjectTemplateType.PREVIEW && (obj.comment_count > 0 || (feedObjectActivities && feedObjectActivities.length > 0)) && (React.createElement(Collapse, { in: expandedActivities, timeout: "auto", classes: { root: classes.activitiesSection } },
|
|
457
460
|
React.createElement(CardContent, { className: classes.activitiesContent },
|
|
458
461
|
React.createElement(Activities, Object.assign({ feedObject: obj, key: selectedActivities, feedObjectActivities: feedObjectActivities, activitiesType: selectedActivities, onSetSelectedActivities: handleSelectedActivities, comments: comments, CommentsObjectProps: {
|
|
459
|
-
CommentComponentProps: Object.assign({ onDelete: handleDeleteComment, truncateContent: true }, CommentComponentProps),
|
|
462
|
+
CommentComponentProps: Object.assign({ onDelete: handleDeleteComment, truncateContent: true, CommentsObjectProps: { inPlaceLoadMoreContents: false } }, CommentComponentProps),
|
|
460
463
|
CommentObjectSkeletonProps: CommentObjectSkeletonProps
|
|
461
464
|
}, cacheStrategy: cacheStrategy }, ActivitiesProps))))),
|
|
462
465
|
composerOpen && (React.createElement(Composer, { open: composerOpen, feedObject: obj, onClose: handleToggleEdit, onSuccess: handleEditSuccess, maxWidth: "sm", fullWidth: true, scroll: "body" })))) : (React.createElement(FeedObjectSkeleton, Object.assign({ template: template }, FeedObjectSkeletonProps)))));
|