@selfcommunity/react-ui 0.7.32 → 0.7.33-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/Feed/Feed.js +0 -1
- package/lib/cjs/components/GroupSettingsIconButton/GroupSettingsIconButton.d.ts +2 -2
- package/lib/cjs/components/GroupSettingsIconButton/GroupSettingsIconButton.js +2 -2
- package/lib/cjs/components/NavigationMenuIconButton/DefaultDrawerContent.js +3 -2
- package/lib/cjs/components/PrivateMessageSettingsIconButton/PrivateMessageSettingsIconButton.d.ts +6 -2
- package/lib/cjs/components/PrivateMessageSettingsIconButton/PrivateMessageSettingsIconButton.js +17 -3
- package/lib/cjs/components/PrivateMessageSnippets/PrivateMessageSnippets.js +12 -4
- package/lib/cjs/shared/ContributionActionsMenu/index.js +5 -41
- package/lib/esm/components/Feed/Feed.js +0 -1
- package/lib/esm/components/GroupSettingsIconButton/GroupSettingsIconButton.d.ts +2 -2
- package/lib/esm/components/GroupSettingsIconButton/GroupSettingsIconButton.js +2 -2
- package/lib/esm/components/NavigationMenuIconButton/DefaultDrawerContent.js +3 -2
- package/lib/esm/components/PrivateMessageSettingsIconButton/PrivateMessageSettingsIconButton.d.ts +6 -2
- package/lib/esm/components/PrivateMessageSettingsIconButton/PrivateMessageSettingsIconButton.js +17 -3
- package/lib/esm/components/PrivateMessageSnippets/PrivateMessageSnippets.js +12 -4
- package/lib/esm/shared/ContributionActionsMenu/index.js +5 -41
- package/lib/umd/react-ui.js +1 -1
- package/package.json +7 -7
|
@@ -418,7 +418,6 @@ const Feed = (inProps, ref) => {
|
|
|
418
418
|
react_1.default.createElement(InfiniteScroll_1.default, Object.assign({ ref: containerRef, className: classes.left, dataLength: feedDataLeft.length, next: getNextPage, previous: getPreviousPage, hasMoreNext: Boolean(feedDataObject.next), hasMorePrevious: Boolean(feedDataObject.previous), header: PreviousPageLink, footer: NextPageLink, loaderNext: react_1.default.createElement(ItemSkeleton, Object.assign({}, ItemSkeletonProps)), loaderPrevious: react_1.default.createElement(ItemSkeleton, Object.assign({}, ItemSkeletonProps)), scrollThreshold: '90%', endMessage: react_1.default.createElement(material_1.Box, { className: classes.end },
|
|
419
419
|
react_1.default.createElement(Widget_1.default, { className: classes.endMessage },
|
|
420
420
|
react_1.default.createElement(material_1.CardContent, null, endMessage)),
|
|
421
|
-
advEnabled && !hideAdvs && enabledCustomAdvPositions.includes(types_1.SCCustomAdvPosition.POSITION_ABOVE_FOOTER_BAR) ? (react_1.default.createElement(CustomAdv_1.default, Object.assign({ position: types_1.SCCustomAdvPosition.POSITION_ABOVE_FOOTER_BAR }, CustomAdvProps))) : null,
|
|
422
421
|
FooterComponent ? react_1.default.createElement(FooterComponent, Object.assign({}, FooterComponentProps)) : null), refreshFunction: refresh, pullDownToRefresh: true, pullDownToRefreshThreshold: 1000, pullDownToRefreshContent: null, releaseToRefreshContent: react_1.default.createElement(Widget_1.default, { variant: "outlined", className: classes.refresh },
|
|
423
422
|
react_1.default.createElement(material_1.CardContent, null, refreshMessage)), style: { overflow: 'visible' } }, (scrollableTargetId && { scrollableTarget: scrollableTargetId })),
|
|
424
423
|
renderHeaderComponent(),
|
|
@@ -24,12 +24,12 @@ export interface GroupSettingsIconButtonProps extends IconButtonProps {
|
|
|
24
24
|
[p: string]: any;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* > API documentation for the Community-JS
|
|
27
|
+
* > API documentation for the Community-JS GroupSettingsIconButton component. Learn about the available props and the CSS API.
|
|
28
28
|
|
|
29
29
|
#### Import
|
|
30
30
|
|
|
31
31
|
```jsx
|
|
32
|
-
import {
|
|
32
|
+
import {GroupSettingsIconButton} from '@selfcommunity/react-ui';
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
#### Component Name
|
|
@@ -34,12 +34,12 @@ const MenuRoot = (0, styles_1.styled)(material_1.Menu, {
|
|
|
34
34
|
slot: 'MenuRoot'
|
|
35
35
|
})(() => ({}));
|
|
36
36
|
/**
|
|
37
|
-
* > API documentation for the Community-JS
|
|
37
|
+
* > API documentation for the Community-JS GroupSettingsIconButton component. Learn about the available props and the CSS API.
|
|
38
38
|
|
|
39
39
|
#### Import
|
|
40
40
|
|
|
41
41
|
```jsx
|
|
42
|
-
import {
|
|
42
|
+
import {GroupSettingsIconButton} from '@selfcommunity/react-ui';
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
#### Component Name
|
|
@@ -39,9 +39,10 @@ function DefaultDrawerContent() {
|
|
|
39
39
|
//order
|
|
40
40
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
41
41
|
react_1.default.createElement(material_1.Typography, { variant: "subtitle1" },
|
|
42
|
-
react_1.default.createElement(
|
|
42
|
+
react_1.default.createElement("span", null,
|
|
43
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.navigationMenuIconButton.defaultDrawerContent.category.title", defaultMessage: "ui.navigationMenuIconButton.defaultDrawerContent.category.title" })),
|
|
43
44
|
' ',
|
|
44
|
-
react_1.default.createElement(material_1.Button, { variant: "text", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.CATEGORIES_LIST_ROUTE_NAME, {}) },
|
|
45
|
+
react_1.default.createElement(material_1.Button, { variant: "text", component: react_core_1.Link, color: "secondary", to: scRoutingContext.url(react_core_1.SCRoutes.CATEGORIES_LIST_ROUTE_NAME, {}) },
|
|
45
46
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.navigationMenuIconButton.defaultDrawerContent.category.seeAll", defaultMessage: "ui.navigationMenuIconButton.defaultDrawerContent.category.seeAll" }))),
|
|
46
47
|
categoriesOrdered.map((c, index) => (react_1.default.createElement(material_1.Zoom, { in: true, style: { transform: isHovered[c.id] && 'scale(1.05)' }, key: index },
|
|
47
48
|
react_1.default.createElement(material_1.ListItem, { key: c.id },
|
package/lib/cjs/components/PrivateMessageSettingsIconButton/PrivateMessageSettingsIconButton.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IconButtonProps } from '@mui/material';
|
|
2
|
-
import { SCUserType } from '@selfcommunity/types';
|
|
2
|
+
import { SCGroupType, SCUserType } from '@selfcommunity/types';
|
|
3
3
|
export interface PrivateMessageSettingsIconButtonProps extends IconButtonProps {
|
|
4
4
|
/**
|
|
5
5
|
* Overrides or extends the styles applied to the component.
|
|
@@ -17,11 +17,15 @@ export interface PrivateMessageSettingsIconButtonProps extends IconButtonProps {
|
|
|
17
17
|
/**
|
|
18
18
|
* The deleting thread id
|
|
19
19
|
*/
|
|
20
|
-
threadToDelete?:
|
|
20
|
+
threadToDelete?: number;
|
|
21
21
|
/**
|
|
22
22
|
* The user receiver context
|
|
23
23
|
*/
|
|
24
24
|
user?: SCUserType;
|
|
25
|
+
/**
|
|
26
|
+
* The group
|
|
27
|
+
*/
|
|
28
|
+
group?: SCGroupType;
|
|
25
29
|
/**
|
|
26
30
|
* Any other properties
|
|
27
31
|
*/
|
package/lib/cjs/components/PrivateMessageSettingsIconButton/PrivateMessageSettingsIconButton.js
CHANGED
|
@@ -60,7 +60,7 @@ function PrivateMessageSettingsIconButton(inProps) {
|
|
|
60
60
|
props: inProps,
|
|
61
61
|
name: PREFIX
|
|
62
62
|
});
|
|
63
|
-
const { className = null, onMenuItemDeleteClick, user, onItemDeleteConfirm, threadToDelete } = props, rest = tslib_1.__rest(props, ["className", "onMenuItemDeleteClick", "user", "onItemDeleteConfirm", "threadToDelete"]);
|
|
63
|
+
const { className = null, onMenuItemDeleteClick, user, group, onItemDeleteConfirm, threadToDelete } = props, rest = tslib_1.__rest(props, ["className", "onMenuItemDeleteClick", "user", "group", "onItemDeleteConfirm", "threadToDelete"]);
|
|
64
64
|
// STATE
|
|
65
65
|
const [anchorEl, setAnchorEl] = (0, react_1.useState)(null);
|
|
66
66
|
const [openConfirmDialog, setOpenConfirmDialog] = (0, react_1.useState)(false);
|
|
@@ -88,9 +88,15 @@ function PrivateMessageSettingsIconButton(inProps) {
|
|
|
88
88
|
* Handles thread deletion
|
|
89
89
|
*/
|
|
90
90
|
function handleDeleteThread() {
|
|
91
|
-
|
|
91
|
+
const params = group ? { group: threadToDelete } : { user: threadToDelete };
|
|
92
|
+
api_services_1.PrivateMessageService.deleteAThread(params)
|
|
92
93
|
.then(() => {
|
|
93
|
-
|
|
94
|
+
if (group) {
|
|
95
|
+
pubsub_js_1.default.publish('snippetsChannelDeleteGroup', threadToDelete);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
pubsub_js_1.default.publish('snippetsChannelDelete', threadToDelete);
|
|
99
|
+
}
|
|
94
100
|
handleCloseDialog();
|
|
95
101
|
})
|
|
96
102
|
.catch((error) => {
|
|
@@ -108,6 +114,10 @@ function PrivateMessageSettingsIconButton(inProps) {
|
|
|
108
114
|
react_1.default.createElement(material_1.ListItemIcon, null,
|
|
109
115
|
react_1.default.createElement(Icon_1.default, { fontSize: "small" }, "people_alt")),
|
|
110
116
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.privateMessageSettingsIconButton.item.profile", defaultMessage: "ui.privateMessageSettingsIconButton.item.profile" }))),
|
|
117
|
+
group && (react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "profile", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.GROUP_ROUTE_NAME, group) },
|
|
118
|
+
react_1.default.createElement(material_1.ListItemIcon, null,
|
|
119
|
+
react_1.default.createElement(Icon_1.default, { fontSize: "small" }, "groups")),
|
|
120
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.privateMessageSettingsIconButton.item.group", defaultMessage: "ui.privateMessageSettingsIconButton.item.group" }))),
|
|
111
121
|
react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "delete", onClick: threadToDelete ? handleOpenDialog : onMenuItemDeleteClick },
|
|
112
122
|
react_1.default.createElement(material_1.ListItemIcon, null,
|
|
113
123
|
react_1.default.createElement(Icon_1.default, { fontSize: "small" }, "delete")),
|
|
@@ -120,6 +130,10 @@ function PrivateMessageSettingsIconButton(inProps) {
|
|
|
120
130
|
react_1.default.createElement(material_1.ListItemIcon, null,
|
|
121
131
|
react_1.default.createElement(Icon_1.default, { fontSize: "small" }, "people_alt")),
|
|
122
132
|
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.privateMessageSettingsIconButton.item.profile", defaultMessage: "ui.privateMessageSettingsIconButton.item.profile" }))),
|
|
133
|
+
group && (react_1.default.createElement(material_1.MenuItem, { className: classes.item, component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.GROUP_ROUTE_NAME, group), key: "profile", onClick: handleCloseDialog },
|
|
134
|
+
react_1.default.createElement(material_1.ListItemIcon, null,
|
|
135
|
+
react_1.default.createElement(Icon_1.default, { fontSize: "small" }, "groups")),
|
|
136
|
+
react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.privateMessageSettingsIconButton.item.group", defaultMessage: "ui.privateMessageSettingsIconButton.item.group" }))),
|
|
123
137
|
react_1.default.createElement(material_1.MenuItem, { className: classes.item, onClick: threadToDelete ? handleOpenDialog : onMenuItemDeleteClick, key: "delete" },
|
|
124
138
|
react_1.default.createElement(material_1.ListItemIcon, null,
|
|
125
139
|
react_1.default.createElement(Icon_1.default, { fontSize: "small" }, "delete")),
|
|
@@ -156,12 +156,16 @@ function PrivateMessageSnippets(inProps) {
|
|
|
156
156
|
updateSnippets(newSnippets);
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
function handleSnippetsUpdate(message, forDeletion) {
|
|
159
|
+
function handleSnippetsUpdate(message, forDeletion, type) {
|
|
160
160
|
const newSnippets = [...data.snippets];
|
|
161
|
-
if (forDeletion) {
|
|
161
|
+
if (forDeletion && type === types_1.SCPrivateMessageType.USER) {
|
|
162
162
|
const _snippets = newSnippets.filter((s) => messageReceiver(s, authUserId) !== message);
|
|
163
163
|
updateSnippets(_snippets);
|
|
164
164
|
}
|
|
165
|
+
else if (forDeletion && types_1.SCPrivateMessageType.GROUP) {
|
|
166
|
+
const _snippets = newSnippets.filter((s) => { var _a; return ((_a = s === null || s === void 0 ? void 0 : s.group) === null || _a === void 0 ? void 0 : _a.id) !== message; });
|
|
167
|
+
updateSnippets(_snippets);
|
|
168
|
+
}
|
|
165
169
|
else {
|
|
166
170
|
let temp = [...data.snippets];
|
|
167
171
|
message.map((m) => {
|
|
@@ -210,11 +214,15 @@ function PrivateMessageSnippets(inProps) {
|
|
|
210
214
|
handleSnippetsUpdate(data);
|
|
211
215
|
});
|
|
212
216
|
const snippetsSubscriber = pubsub_js_1.default.subscribe('snippetsChannelDelete', (msg, data) => {
|
|
213
|
-
handleSnippetsUpdate(data, true);
|
|
217
|
+
handleSnippetsUpdate(data, true, types_1.SCPrivateMessageType.USER);
|
|
218
|
+
});
|
|
219
|
+
const snippetsGroupSubscriber = pubsub_js_1.default.subscribe('snippetsChannelDeleteGroup', (msg, data) => {
|
|
220
|
+
handleSnippetsUpdate(data, true, types_1.SCPrivateMessageType.GROUP);
|
|
214
221
|
});
|
|
215
222
|
return () => {
|
|
216
223
|
pubsub_js_1.default.unsubscribe(threadSubscriber);
|
|
217
224
|
pubsub_js_1.default.unsubscribe(snippetsSubscriber);
|
|
225
|
+
pubsub_js_1.default.unsubscribe(snippetsGroupSubscriber);
|
|
218
226
|
};
|
|
219
227
|
}, [data.snippets]);
|
|
220
228
|
//RENDERING
|
|
@@ -240,6 +248,6 @@ function PrivateMessageSnippets(inProps) {
|
|
|
240
248
|
} }),
|
|
241
249
|
react_1.default.createElement(material_1.List, null, filteredSnippets.map((message) => (react_1.default.createElement(PrivateMessageSnippetItem_1.default, { message: message, key: message.id, onItemClick: () => handleOpenThread(message), secondaryAction: react_1.default.createElement(react_1.default.Fragment, null,
|
|
242
250
|
message.thread_status === types_1.SCPrivateMessageStatusType.NEW && (react_1.default.createElement(material_1.Icon, { fontSize: "small", color: "secondary" }, "fiber_manual_record")),
|
|
243
|
-
!isMobile && (react_1.default.createElement(PrivateMessageSettingsIconButton_1.default, { threadToDelete: messageReceiver(message, authUserId), onItemDeleteConfirm: () => handleDeleteConversation(messageReceiver(message, authUserId)), user: messageReceiver(message, authUserId, true) }))), selected: isSelected(message) })))))))));
|
|
251
|
+
!isMobile && (react_1.default.createElement(PrivateMessageSettingsIconButton_1.default, { threadToDelete: (message === null || message === void 0 ? void 0 : message.group) ? message.group.id : messageReceiver(message, authUserId), onItemDeleteConfirm: () => handleDeleteConversation(messageReceiver(message, authUserId)), user: messageReceiver(message, authUserId, true), group: message === null || message === void 0 ? void 0 : message.group }))), selected: isSelected(message) })))))))));
|
|
244
252
|
}
|
|
245
253
|
exports.default = PrivateMessageSnippets;
|
|
@@ -23,7 +23,7 @@ const PREFIX = 'SCContributionActionsMenu';
|
|
|
23
23
|
const classes = {
|
|
24
24
|
root: `${PREFIX}-root`,
|
|
25
25
|
button: `${PREFIX}-button`,
|
|
26
|
-
|
|
26
|
+
popperRoot: `${PREFIX}-popper-root`,
|
|
27
27
|
paper: `${PREFIX}-paper`,
|
|
28
28
|
item: `${PREFIX}-item`,
|
|
29
29
|
itemText: `${PREFIX}-item-text`,
|
|
@@ -38,44 +38,8 @@ const classes = {
|
|
|
38
38
|
const PopperRoot = (0, styles_1.styled)(Popper_1.default, {
|
|
39
39
|
name: PREFIX,
|
|
40
40
|
slot: 'Root',
|
|
41
|
-
overridesResolver: (props, styles) => styles.
|
|
42
|
-
})((
|
|
43
|
-
zIndex: 2,
|
|
44
|
-
[`&.${classes.popper}`]: {
|
|
45
|
-
overflow: 'visible',
|
|
46
|
-
filter: 'drop-shadow(0px -1px 5px rgba(0,0,0,0.10))',
|
|
47
|
-
mt: 1.5
|
|
48
|
-
},
|
|
49
|
-
[`& .${classes.paper}`]: {
|
|
50
|
-
width: 280
|
|
51
|
-
},
|
|
52
|
-
[`& .${classes.footerSubItems}`]: {
|
|
53
|
-
margin: '10px 10px 10px 17px',
|
|
54
|
-
border: '1px solid #dddddd',
|
|
55
|
-
padding: 5,
|
|
56
|
-
borderRadius: 3,
|
|
57
|
-
fontSize: 11
|
|
58
|
-
},
|
|
59
|
-
[`& .${classes.selectedIcon}`]: {
|
|
60
|
-
marginLeft: 2,
|
|
61
|
-
'&.MuiListItemIcon-root': {
|
|
62
|
-
width: '10px'
|
|
63
|
-
},
|
|
64
|
-
'& svg': {
|
|
65
|
-
fontSize: '1.4rem'
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
[`& .${classes.sectionBadge}`]: {
|
|
69
|
-
padding: 0,
|
|
70
|
-
minWidth: 15,
|
|
71
|
-
height: 15,
|
|
72
|
-
top: 3
|
|
73
|
-
},
|
|
74
|
-
[`& .${classes.sectionWithSelectionIcon}`]: {
|
|
75
|
-
fontSize: 12,
|
|
76
|
-
color: '#FFF'
|
|
77
|
-
}
|
|
78
|
-
}));
|
|
41
|
+
overridesResolver: (props, styles) => styles.popperRoot
|
|
42
|
+
})(() => ({}));
|
|
79
43
|
const Root = (0, styles_1.styled)(material_1.Box, {
|
|
80
44
|
name: PREFIX,
|
|
81
45
|
slot: 'Root',
|
|
@@ -661,7 +625,7 @@ function ContributionActionsMenu(props) {
|
|
|
661
625
|
open ? react_1.default.createElement(Icon_1.default, null, "expand_less") : react_1.default.createElement(Icon_1.default, null, "expand_more")),
|
|
662
626
|
react_1.default.createElement(material_1.Collapse, { in: open, timeout: "auto", unmountOnExit: true },
|
|
663
627
|
renderReports(ContributionsActionsMenu_1.FLAG_CONTRIBUTION_SECTION),
|
|
664
|
-
react_1.default.createElement(material_1.Typography, { variant: 'caption', component:
|
|
628
|
+
react_1.default.createElement(material_1.Typography, { variant: 'caption', component: "div", className: classes.footerSubItems }, intl.formatMessage(messages.footer)))))));
|
|
665
629
|
}
|
|
666
630
|
/**
|
|
667
631
|
* Renders section hide actions
|
|
@@ -766,7 +730,7 @@ function ContributionActionsMenu(props) {
|
|
|
766
730
|
}, "aria-haspopup": "true", onClick: handleOpen, className: classes.button, size: "small" }, contributionObj && (contributionObj.collapsed || contributionObj.deleted) ? (react_1.default.createElement("span", { className: classes.visibilityIcons },
|
|
767
731
|
contributionObj.collapsed ? react_1.default.createElement(Icon_1.default, null, "visibility_off") : react_1.default.createElement(Icon_1.default, null, "delete"),
|
|
768
732
|
react_1.default.createElement(Icon_1.default, null, "expand_more"))) : (react_1.default.createElement(Icon_1.default, null, "more_vert"))),
|
|
769
|
-
isMobile ? (react_1.default.createElement(material_1.SwipeableDrawer, { open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, renderContent())) : (react_1.default.createElement(PopperRoot, Object.assign({ open: open, anchorEl: popperRef.current, role: undefined, transition: true, className: classes.
|
|
733
|
+
isMobile ? (react_1.default.createElement(material_1.SwipeableDrawer, { open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, renderContent())) : (react_1.default.createElement(PopperRoot, Object.assign({ open: open, anchorEl: popperRef.current, role: undefined, transition: true, className: classes.popperRoot }, PopperProps, { placement: "bottom-end" }), ({ TransitionProps, placement }) => (react_1.default.createElement(material_1.Grow, Object.assign({}, TransitionProps, { style: { transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom' } }),
|
|
770
734
|
react_1.default.createElement(material_1.Paper, { variant: 'outlined', className: classes.paper },
|
|
771
735
|
react_1.default.createElement(material_1.ClickAwayListener, { onClickAway: handleClose }, renderContent())))))),
|
|
772
736
|
openConfirmDialog && (react_1.default.createElement(ConfirmDialog_1.default, Object.assign({ open: openConfirmDialog }, (currentAction === ContributionsActionsMenu_1.DELETE_CONTRIBUTION
|
|
@@ -415,7 +415,6 @@ const Feed = (inProps, ref) => {
|
|
|
415
415
|
React.createElement(InfiniteScroll, Object.assign({ ref: containerRef, className: classes.left, dataLength: feedDataLeft.length, next: getNextPage, previous: getPreviousPage, hasMoreNext: Boolean(feedDataObject.next), hasMorePrevious: Boolean(feedDataObject.previous), header: PreviousPageLink, footer: NextPageLink, loaderNext: React.createElement(ItemSkeleton, Object.assign({}, ItemSkeletonProps)), loaderPrevious: React.createElement(ItemSkeleton, Object.assign({}, ItemSkeletonProps)), scrollThreshold: '90%', endMessage: React.createElement(Box, { className: classes.end },
|
|
416
416
|
React.createElement(Widget, { className: classes.endMessage },
|
|
417
417
|
React.createElement(CardContent, null, endMessage)),
|
|
418
|
-
advEnabled && !hideAdvs && enabledCustomAdvPositions.includes(SCCustomAdvPosition.POSITION_ABOVE_FOOTER_BAR) ? (React.createElement(CustomAdv, Object.assign({ position: SCCustomAdvPosition.POSITION_ABOVE_FOOTER_BAR }, CustomAdvProps))) : null,
|
|
419
418
|
FooterComponent ? React.createElement(FooterComponent, Object.assign({}, FooterComponentProps)) : null), refreshFunction: refresh, pullDownToRefresh: true, pullDownToRefreshThreshold: 1000, pullDownToRefreshContent: null, releaseToRefreshContent: React.createElement(Widget, { variant: "outlined", className: classes.refresh },
|
|
420
419
|
React.createElement(CardContent, null, refreshMessage)), style: { overflow: 'visible' } }, (scrollableTargetId && { scrollableTarget: scrollableTargetId })),
|
|
421
420
|
renderHeaderComponent(),
|
|
@@ -24,12 +24,12 @@ export interface GroupSettingsIconButtonProps extends IconButtonProps {
|
|
|
24
24
|
[p: string]: any;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* > API documentation for the Community-JS
|
|
27
|
+
* > API documentation for the Community-JS GroupSettingsIconButton component. Learn about the available props and the CSS API.
|
|
28
28
|
|
|
29
29
|
#### Import
|
|
30
30
|
|
|
31
31
|
```jsx
|
|
32
|
-
import {
|
|
32
|
+
import {GroupSettingsIconButton} from '@selfcommunity/react-ui';
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
#### Component Name
|
|
@@ -32,12 +32,12 @@ const MenuRoot = styled(Menu, {
|
|
|
32
32
|
slot: 'MenuRoot'
|
|
33
33
|
})(() => ({}));
|
|
34
34
|
/**
|
|
35
|
-
* > API documentation for the Community-JS
|
|
35
|
+
* > API documentation for the Community-JS GroupSettingsIconButton component. Learn about the available props and the CSS API.
|
|
36
36
|
|
|
37
37
|
#### Import
|
|
38
38
|
|
|
39
39
|
```jsx
|
|
40
|
-
import {
|
|
40
|
+
import {GroupSettingsIconButton} from '@selfcommunity/react-ui';
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
#### Component Name
|
|
@@ -36,9 +36,10 @@ export default function DefaultDrawerContent() {
|
|
|
36
36
|
//order
|
|
37
37
|
return (React.createElement(React.Fragment, null,
|
|
38
38
|
React.createElement(Typography, { variant: "subtitle1" },
|
|
39
|
-
React.createElement(
|
|
39
|
+
React.createElement("span", null,
|
|
40
|
+
React.createElement(FormattedMessage, { id: "ui.navigationMenuIconButton.defaultDrawerContent.category.title", defaultMessage: "ui.navigationMenuIconButton.defaultDrawerContent.category.title" })),
|
|
40
41
|
' ',
|
|
41
|
-
React.createElement(Button, { variant: "text", component: Link, to: scRoutingContext.url(SCRoutes.CATEGORIES_LIST_ROUTE_NAME, {}) },
|
|
42
|
+
React.createElement(Button, { variant: "text", component: Link, color: "secondary", to: scRoutingContext.url(SCRoutes.CATEGORIES_LIST_ROUTE_NAME, {}) },
|
|
42
43
|
React.createElement(FormattedMessage, { id: "ui.navigationMenuIconButton.defaultDrawerContent.category.seeAll", defaultMessage: "ui.navigationMenuIconButton.defaultDrawerContent.category.seeAll" }))),
|
|
43
44
|
categoriesOrdered.map((c, index) => (React.createElement(Zoom, { in: true, style: { transform: isHovered[c.id] && 'scale(1.05)' }, key: index },
|
|
44
45
|
React.createElement(ListItem, { key: c.id },
|
package/lib/esm/components/PrivateMessageSettingsIconButton/PrivateMessageSettingsIconButton.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IconButtonProps } from '@mui/material';
|
|
2
|
-
import { SCUserType } from '@selfcommunity/types';
|
|
2
|
+
import { SCGroupType, SCUserType } from '@selfcommunity/types';
|
|
3
3
|
export interface PrivateMessageSettingsIconButtonProps extends IconButtonProps {
|
|
4
4
|
/**
|
|
5
5
|
* Overrides or extends the styles applied to the component.
|
|
@@ -17,11 +17,15 @@ export interface PrivateMessageSettingsIconButtonProps extends IconButtonProps {
|
|
|
17
17
|
/**
|
|
18
18
|
* The deleting thread id
|
|
19
19
|
*/
|
|
20
|
-
threadToDelete?:
|
|
20
|
+
threadToDelete?: number;
|
|
21
21
|
/**
|
|
22
22
|
* The user receiver context
|
|
23
23
|
*/
|
|
24
24
|
user?: SCUserType;
|
|
25
|
+
/**
|
|
26
|
+
* The group
|
|
27
|
+
*/
|
|
28
|
+
group?: SCGroupType;
|
|
25
29
|
/**
|
|
26
30
|
* Any other properties
|
|
27
31
|
*/
|
package/lib/esm/components/PrivateMessageSettingsIconButton/PrivateMessageSettingsIconButton.js
CHANGED
|
@@ -58,7 +58,7 @@ export default function PrivateMessageSettingsIconButton(inProps) {
|
|
|
58
58
|
props: inProps,
|
|
59
59
|
name: PREFIX
|
|
60
60
|
});
|
|
61
|
-
const { className = null, onMenuItemDeleteClick, user, onItemDeleteConfirm, threadToDelete } = props, rest = __rest(props, ["className", "onMenuItemDeleteClick", "user", "onItemDeleteConfirm", "threadToDelete"]);
|
|
61
|
+
const { className = null, onMenuItemDeleteClick, user, group, onItemDeleteConfirm, threadToDelete } = props, rest = __rest(props, ["className", "onMenuItemDeleteClick", "user", "group", "onItemDeleteConfirm", "threadToDelete"]);
|
|
62
62
|
// STATE
|
|
63
63
|
const [anchorEl, setAnchorEl] = useState(null);
|
|
64
64
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
|
@@ -86,9 +86,15 @@ export default function PrivateMessageSettingsIconButton(inProps) {
|
|
|
86
86
|
* Handles thread deletion
|
|
87
87
|
*/
|
|
88
88
|
function handleDeleteThread() {
|
|
89
|
-
|
|
89
|
+
const params = group ? { group: threadToDelete } : { user: threadToDelete };
|
|
90
|
+
PrivateMessageService.deleteAThread(params)
|
|
90
91
|
.then(() => {
|
|
91
|
-
|
|
92
|
+
if (group) {
|
|
93
|
+
PubSub.publish('snippetsChannelDeleteGroup', threadToDelete);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
PubSub.publish('snippetsChannelDelete', threadToDelete);
|
|
97
|
+
}
|
|
92
98
|
handleCloseDialog();
|
|
93
99
|
})
|
|
94
100
|
.catch((error) => {
|
|
@@ -106,6 +112,10 @@ export default function PrivateMessageSettingsIconButton(inProps) {
|
|
|
106
112
|
React.createElement(ListItemIcon, null,
|
|
107
113
|
React.createElement(Icon, { fontSize: "small" }, "people_alt")),
|
|
108
114
|
React.createElement(FormattedMessage, { id: "ui.privateMessageSettingsIconButton.item.profile", defaultMessage: "ui.privateMessageSettingsIconButton.item.profile" }))),
|
|
115
|
+
group && (React.createElement(ListItem, { className: classes.item, key: "profile", component: Link, to: scRoutingContext.url(SCRoutes.GROUP_ROUTE_NAME, group) },
|
|
116
|
+
React.createElement(ListItemIcon, null,
|
|
117
|
+
React.createElement(Icon, { fontSize: "small" }, "groups")),
|
|
118
|
+
React.createElement(FormattedMessage, { id: "ui.privateMessageSettingsIconButton.item.group", defaultMessage: "ui.privateMessageSettingsIconButton.item.group" }))),
|
|
109
119
|
React.createElement(ListItem, { className: classes.item, key: "delete", onClick: threadToDelete ? handleOpenDialog : onMenuItemDeleteClick },
|
|
110
120
|
React.createElement(ListItemIcon, null,
|
|
111
121
|
React.createElement(Icon, { fontSize: "small" }, "delete")),
|
|
@@ -118,6 +128,10 @@ export default function PrivateMessageSettingsIconButton(inProps) {
|
|
|
118
128
|
React.createElement(ListItemIcon, null,
|
|
119
129
|
React.createElement(Icon, { fontSize: "small" }, "people_alt")),
|
|
120
130
|
React.createElement(FormattedMessage, { id: "ui.privateMessageSettingsIconButton.item.profile", defaultMessage: "ui.privateMessageSettingsIconButton.item.profile" }))),
|
|
131
|
+
group && (React.createElement(MenuItem, { className: classes.item, component: Link, to: scRoutingContext.url(SCRoutes.GROUP_ROUTE_NAME, group), key: "profile", onClick: handleCloseDialog },
|
|
132
|
+
React.createElement(ListItemIcon, null,
|
|
133
|
+
React.createElement(Icon, { fontSize: "small" }, "groups")),
|
|
134
|
+
React.createElement(FormattedMessage, { id: "ui.privateMessageSettingsIconButton.item.group", defaultMessage: "ui.privateMessageSettingsIconButton.item.group" }))),
|
|
121
135
|
React.createElement(MenuItem, { className: classes.item, onClick: threadToDelete ? handleOpenDialog : onMenuItemDeleteClick, key: "delete" },
|
|
122
136
|
React.createElement(ListItemIcon, null,
|
|
123
137
|
React.createElement(Icon, { fontSize: "small" }, "delete")),
|
|
@@ -154,12 +154,16 @@ export default function PrivateMessageSnippets(inProps) {
|
|
|
154
154
|
updateSnippets(newSnippets);
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
function handleSnippetsUpdate(message, forDeletion) {
|
|
157
|
+
function handleSnippetsUpdate(message, forDeletion, type) {
|
|
158
158
|
const newSnippets = [...data.snippets];
|
|
159
|
-
if (forDeletion) {
|
|
159
|
+
if (forDeletion && type === SCPrivateMessageType.USER) {
|
|
160
160
|
const _snippets = newSnippets.filter((s) => messageReceiver(s, authUserId) !== message);
|
|
161
161
|
updateSnippets(_snippets);
|
|
162
162
|
}
|
|
163
|
+
else if (forDeletion && SCPrivateMessageType.GROUP) {
|
|
164
|
+
const _snippets = newSnippets.filter((s) => { var _a; return ((_a = s === null || s === void 0 ? void 0 : s.group) === null || _a === void 0 ? void 0 : _a.id) !== message; });
|
|
165
|
+
updateSnippets(_snippets);
|
|
166
|
+
}
|
|
163
167
|
else {
|
|
164
168
|
let temp = [...data.snippets];
|
|
165
169
|
message.map((m) => {
|
|
@@ -208,11 +212,15 @@ export default function PrivateMessageSnippets(inProps) {
|
|
|
208
212
|
handleSnippetsUpdate(data);
|
|
209
213
|
});
|
|
210
214
|
const snippetsSubscriber = PubSub.subscribe('snippetsChannelDelete', (msg, data) => {
|
|
211
|
-
handleSnippetsUpdate(data, true);
|
|
215
|
+
handleSnippetsUpdate(data, true, SCPrivateMessageType.USER);
|
|
216
|
+
});
|
|
217
|
+
const snippetsGroupSubscriber = PubSub.subscribe('snippetsChannelDeleteGroup', (msg, data) => {
|
|
218
|
+
handleSnippetsUpdate(data, true, SCPrivateMessageType.GROUP);
|
|
212
219
|
});
|
|
213
220
|
return () => {
|
|
214
221
|
PubSub.unsubscribe(threadSubscriber);
|
|
215
222
|
PubSub.unsubscribe(snippetsSubscriber);
|
|
223
|
+
PubSub.unsubscribe(snippetsGroupSubscriber);
|
|
216
224
|
};
|
|
217
225
|
}, [data.snippets]);
|
|
218
226
|
//RENDERING
|
|
@@ -238,5 +246,5 @@ export default function PrivateMessageSnippets(inProps) {
|
|
|
238
246
|
} }),
|
|
239
247
|
React.createElement(List, null, filteredSnippets.map((message) => (React.createElement(PrivateMessageSnippetItem, { message: message, key: message.id, onItemClick: () => handleOpenThread(message), secondaryAction: React.createElement(React.Fragment, null,
|
|
240
248
|
message.thread_status === SCPrivateMessageStatusType.NEW && (React.createElement(Icon, { fontSize: "small", color: "secondary" }, "fiber_manual_record")),
|
|
241
|
-
!isMobile && (React.createElement(PrivateMessageSettingsIconButton, { threadToDelete: messageReceiver(message, authUserId), onItemDeleteConfirm: () => handleDeleteConversation(messageReceiver(message, authUserId)), user: messageReceiver(message, authUserId, true) }))), selected: isSelected(message) })))))))));
|
|
249
|
+
!isMobile && (React.createElement(PrivateMessageSettingsIconButton, { threadToDelete: (message === null || message === void 0 ? void 0 : message.group) ? message.group.id : messageReceiver(message, authUserId), onItemDeleteConfirm: () => handleDeleteConversation(messageReceiver(message, authUserId)), user: messageReceiver(message, authUserId, true), group: message === null || message === void 0 ? void 0 : message.group }))), selected: isSelected(message) })))))))));
|
|
242
250
|
}
|
|
@@ -21,7 +21,7 @@ const PREFIX = 'SCContributionActionsMenu';
|
|
|
21
21
|
const classes = {
|
|
22
22
|
root: `${PREFIX}-root`,
|
|
23
23
|
button: `${PREFIX}-button`,
|
|
24
|
-
|
|
24
|
+
popperRoot: `${PREFIX}-popper-root`,
|
|
25
25
|
paper: `${PREFIX}-paper`,
|
|
26
26
|
item: `${PREFIX}-item`,
|
|
27
27
|
itemText: `${PREFIX}-item-text`,
|
|
@@ -36,44 +36,8 @@ const classes = {
|
|
|
36
36
|
const PopperRoot = styled(Popper, {
|
|
37
37
|
name: PREFIX,
|
|
38
38
|
slot: 'Root',
|
|
39
|
-
overridesResolver: (props, styles) => styles.
|
|
40
|
-
})((
|
|
41
|
-
zIndex: 2,
|
|
42
|
-
[`&.${classes.popper}`]: {
|
|
43
|
-
overflow: 'visible',
|
|
44
|
-
filter: 'drop-shadow(0px -1px 5px rgba(0,0,0,0.10))',
|
|
45
|
-
mt: 1.5
|
|
46
|
-
},
|
|
47
|
-
[`& .${classes.paper}`]: {
|
|
48
|
-
width: 280
|
|
49
|
-
},
|
|
50
|
-
[`& .${classes.footerSubItems}`]: {
|
|
51
|
-
margin: '10px 10px 10px 17px',
|
|
52
|
-
border: '1px solid #dddddd',
|
|
53
|
-
padding: 5,
|
|
54
|
-
borderRadius: 3,
|
|
55
|
-
fontSize: 11
|
|
56
|
-
},
|
|
57
|
-
[`& .${classes.selectedIcon}`]: {
|
|
58
|
-
marginLeft: 2,
|
|
59
|
-
'&.MuiListItemIcon-root': {
|
|
60
|
-
width: '10px'
|
|
61
|
-
},
|
|
62
|
-
'& svg': {
|
|
63
|
-
fontSize: '1.4rem'
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
[`& .${classes.sectionBadge}`]: {
|
|
67
|
-
padding: 0,
|
|
68
|
-
minWidth: 15,
|
|
69
|
-
height: 15,
|
|
70
|
-
top: 3
|
|
71
|
-
},
|
|
72
|
-
[`& .${classes.sectionWithSelectionIcon}`]: {
|
|
73
|
-
fontSize: 12,
|
|
74
|
-
color: '#FFF'
|
|
75
|
-
}
|
|
76
|
-
}));
|
|
39
|
+
overridesResolver: (props, styles) => styles.popperRoot
|
|
40
|
+
})(() => ({}));
|
|
77
41
|
const Root = styled(Box, {
|
|
78
42
|
name: PREFIX,
|
|
79
43
|
slot: 'Root',
|
|
@@ -659,7 +623,7 @@ export default function ContributionActionsMenu(props) {
|
|
|
659
623
|
open ? React.createElement(Icon, null, "expand_less") : React.createElement(Icon, null, "expand_more")),
|
|
660
624
|
React.createElement(Collapse, { in: open, timeout: "auto", unmountOnExit: true },
|
|
661
625
|
renderReports(FLAG_CONTRIBUTION_SECTION),
|
|
662
|
-
React.createElement(Typography, { variant: 'caption', component:
|
|
626
|
+
React.createElement(Typography, { variant: 'caption', component: "div", className: classes.footerSubItems }, intl.formatMessage(messages.footer)))))));
|
|
663
627
|
}
|
|
664
628
|
/**
|
|
665
629
|
* Renders section hide actions
|
|
@@ -764,7 +728,7 @@ export default function ContributionActionsMenu(props) {
|
|
|
764
728
|
}, "aria-haspopup": "true", onClick: handleOpen, className: classes.button, size: "small" }, contributionObj && (contributionObj.collapsed || contributionObj.deleted) ? (React.createElement("span", { className: classes.visibilityIcons },
|
|
765
729
|
contributionObj.collapsed ? React.createElement(Icon, null, "visibility_off") : React.createElement(Icon, null, "delete"),
|
|
766
730
|
React.createElement(Icon, null, "expand_more"))) : (React.createElement(Icon, null, "more_vert"))),
|
|
767
|
-
isMobile ? (React.createElement(SwipeableDrawer, { open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, renderContent())) : (React.createElement(PopperRoot, Object.assign({ open: open, anchorEl: popperRef.current, role: undefined, transition: true, className: classes.
|
|
731
|
+
isMobile ? (React.createElement(SwipeableDrawer, { open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, renderContent())) : (React.createElement(PopperRoot, Object.assign({ open: open, anchorEl: popperRef.current, role: undefined, transition: true, className: classes.popperRoot }, PopperProps, { placement: "bottom-end" }), ({ TransitionProps, placement }) => (React.createElement(Grow, Object.assign({}, TransitionProps, { style: { transformOrigin: placement === 'bottom' ? 'center top' : 'center bottom' } }),
|
|
768
732
|
React.createElement(Paper, { variant: 'outlined', className: classes.paper },
|
|
769
733
|
React.createElement(ClickAwayListener, { onClickAway: handleClose }, renderContent())))))),
|
|
770
734
|
openConfirmDialog && (React.createElement(ConfirmDialog, Object.assign({ open: openConfirmDialog }, (currentAction === DELETE_CONTRIBUTION
|