@selfcommunity/react-ui 0.7.9-alpha.4 → 0.7.9-alpha.41

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.
Files changed (132) hide show
  1. package/lib/cjs/components/ChangeGroupCover/ChangeGroupCover.js +24 -1
  2. package/lib/cjs/components/ChangeGroupPicture/ChangeGroupPicture.js +32 -11
  3. package/lib/cjs/components/Composer/Attributes/Attributes.js +3 -3
  4. package/lib/cjs/components/Composer/Composer.js +3 -5
  5. package/lib/cjs/components/Composer/Content/ContentPost/ContentPost.js +4 -3
  6. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +1 -2
  7. package/lib/cjs/components/Composer/Layer/AudienceLayer/AudienceLayer.js +18 -6
  8. package/lib/cjs/components/EditGroupButton/EditGroupButton.js +4 -0
  9. package/lib/cjs/components/FeedObject/FeedObject.d.ts +1 -0
  10. package/lib/cjs/components/FeedObject/FeedObject.js +23 -6
  11. package/lib/cjs/components/FeedUpdatesWidget/FeedUpdatesWidget.js +1 -1
  12. package/lib/cjs/components/Group/Group.js +9 -3
  13. package/lib/cjs/components/GroupForm/GroupForm.js +31 -9
  14. package/lib/cjs/components/GroupHeader/GroupHeader.d.ts +6 -5
  15. package/lib/cjs/components/GroupHeader/GroupHeader.js +52 -11
  16. package/lib/cjs/components/GroupHeader/Skeleton.d.ts +2 -4
  17. package/lib/cjs/components/GroupHeader/Skeleton.js +10 -10
  18. package/lib/cjs/components/GroupInfoWidget/GroupInfoWidget.js +40 -7
  19. package/lib/cjs/components/GroupInviteButton/GroupInviteButton.js +8 -7
  20. package/lib/cjs/components/GroupInvitedWidget/GroupInvitedWidget.d.ts +74 -0
  21. package/lib/cjs/components/GroupInvitedWidget/GroupInvitedWidget.js +197 -0
  22. package/lib/cjs/components/GroupInvitedWidget/Skeleton.d.ts +22 -0
  23. package/lib/cjs/components/GroupInvitedWidget/Skeleton.js +38 -0
  24. package/lib/cjs/components/GroupInvitedWidget/constants.d.ts +1 -0
  25. package/lib/cjs/components/GroupInvitedWidget/constants.js +4 -0
  26. package/lib/cjs/components/GroupInvitedWidget/index.d.ts +4 -0
  27. package/lib/cjs/components/GroupInvitedWidget/index.js +8 -0
  28. package/lib/cjs/components/GroupMembersButton/GroupMembersButton.d.ts +5 -0
  29. package/lib/cjs/components/GroupMembersButton/GroupMembersButton.js +7 -2
  30. package/lib/cjs/components/GroupMembersWidget/GroupMembersWidget.js +25 -4
  31. package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.d.ts +11 -5
  32. package/lib/cjs/components/GroupRequestsWidget/GroupRequestsWidget.js +18 -7
  33. package/lib/cjs/components/GroupSettingsIconButton/GroupSettingsIconButton.d.ts +48 -0
  34. package/lib/cjs/components/GroupSettingsIconButton/GroupSettingsIconButton.js +145 -0
  35. package/lib/cjs/components/GroupSettingsIconButton/index.d.ts +3 -0
  36. package/lib/cjs/components/GroupSettingsIconButton/index.js +5 -0
  37. package/lib/cjs/components/GroupSubscribeButton/GroupSubscribeButton.d.ts +8 -3
  38. package/lib/cjs/components/GroupSubscribeButton/GroupSubscribeButton.js +31 -10
  39. package/lib/cjs/components/Groups/Groups.d.ts +28 -13
  40. package/lib/cjs/components/Groups/Groups.js +71 -89
  41. package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.js +1 -1
  42. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +4 -0
  43. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.js +2 -3
  44. package/lib/cjs/components/Notification/Group/Group.d.ts +15 -0
  45. package/lib/cjs/components/Notification/Group/Group.js +78 -0
  46. package/lib/cjs/components/Notification/Group/index.d.ts +3 -0
  47. package/lib/cjs/components/Notification/Group/index.js +5 -0
  48. package/lib/cjs/components/Notification/Notification.js +31 -1
  49. package/lib/cjs/components/Notification/PrivateMessage/PrivateMessage.js +16 -5
  50. package/lib/cjs/components/PrivateMessageComponent/PrivateMessageComponent.d.ts +1 -1
  51. package/lib/cjs/components/PrivateMessageComponent/PrivateMessageComponent.js +10 -7
  52. package/lib/cjs/components/PrivateMessageSnippetItem/PrivateMessageSnippetItem.js +11 -6
  53. package/lib/cjs/components/PrivateMessageSnippets/PrivateMessageSnippets.d.ts +3 -3
  54. package/lib/cjs/components/PrivateMessageSnippets/PrivateMessageSnippets.js +24 -6
  55. package/lib/cjs/components/PrivateMessageThread/PrivateMessageThread.d.ts +6 -1
  56. package/lib/cjs/components/PrivateMessageThread/PrivateMessageThread.js +45 -20
  57. package/lib/cjs/components/SearchAutocomplete/SearchAutocomplete.js +22 -5
  58. package/lib/cjs/components/SnippetNotifications/SnippetNotifications.js +7 -0
  59. package/lib/cjs/components/ToastNotifications/ToastNotifications.js +7 -0
  60. package/lib/cjs/components/User/User.d.ts +5 -0
  61. package/lib/cjs/components/User/User.js +5 -4
  62. package/lib/cjs/constants/PubSub.d.ts +27 -0
  63. package/lib/cjs/constants/PubSub.js +21 -0
  64. package/lib/cjs/index.d.ts +5 -2
  65. package/lib/cjs/index.js +12 -4
  66. package/lib/esm/components/ChangeGroupCover/ChangeGroupCover.js +24 -1
  67. package/lib/esm/components/ChangeGroupPicture/ChangeGroupPicture.js +32 -11
  68. package/lib/esm/components/Composer/Attributes/Attributes.js +3 -3
  69. package/lib/esm/components/Composer/Composer.js +3 -5
  70. package/lib/esm/components/Composer/Content/ContentPost/ContentPost.js +4 -3
  71. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.d.ts +1 -2
  72. package/lib/esm/components/Composer/Layer/AudienceLayer/AudienceLayer.js +18 -6
  73. package/lib/esm/components/EditGroupButton/EditGroupButton.js +5 -1
  74. package/lib/esm/components/FeedObject/FeedObject.d.ts +1 -0
  75. package/lib/esm/components/FeedObject/FeedObject.js +24 -7
  76. package/lib/esm/components/FeedUpdatesWidget/FeedUpdatesWidget.js +1 -1
  77. package/lib/esm/components/Group/Group.js +11 -5
  78. package/lib/esm/components/GroupForm/GroupForm.js +31 -9
  79. package/lib/esm/components/GroupHeader/GroupHeader.d.ts +6 -5
  80. package/lib/esm/components/GroupHeader/GroupHeader.js +54 -13
  81. package/lib/esm/components/GroupHeader/Skeleton.d.ts +2 -4
  82. package/lib/esm/components/GroupHeader/Skeleton.js +10 -10
  83. package/lib/esm/components/GroupInfoWidget/GroupInfoWidget.js +40 -7
  84. package/lib/esm/components/GroupInviteButton/GroupInviteButton.js +8 -7
  85. package/lib/esm/components/GroupInvitedWidget/GroupInvitedWidget.d.ts +74 -0
  86. package/lib/esm/components/GroupInvitedWidget/GroupInvitedWidget.js +194 -0
  87. package/lib/esm/components/GroupInvitedWidget/Skeleton.d.ts +22 -0
  88. package/lib/esm/components/GroupInvitedWidget/Skeleton.js +34 -0
  89. package/lib/esm/components/GroupInvitedWidget/constants.d.ts +1 -0
  90. package/lib/esm/components/GroupInvitedWidget/constants.js +1 -0
  91. package/lib/esm/components/GroupInvitedWidget/index.d.ts +4 -0
  92. package/lib/esm/components/GroupInvitedWidget/index.js +4 -0
  93. package/lib/esm/components/GroupMembersButton/GroupMembersButton.d.ts +5 -0
  94. package/lib/esm/components/GroupMembersButton/GroupMembersButton.js +8 -3
  95. package/lib/esm/components/GroupMembersWidget/GroupMembersWidget.js +26 -5
  96. package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.d.ts +11 -5
  97. package/lib/esm/components/GroupRequestsWidget/GroupRequestsWidget.js +18 -7
  98. package/lib/esm/components/GroupSettingsIconButton/GroupSettingsIconButton.d.ts +48 -0
  99. package/lib/esm/components/GroupSettingsIconButton/GroupSettingsIconButton.js +142 -0
  100. package/lib/esm/components/GroupSettingsIconButton/index.d.ts +3 -0
  101. package/lib/esm/components/GroupSettingsIconButton/index.js +2 -0
  102. package/lib/esm/components/GroupSubscribeButton/GroupSubscribeButton.d.ts +8 -3
  103. package/lib/esm/components/GroupSubscribeButton/GroupSubscribeButton.js +32 -11
  104. package/lib/esm/components/Groups/Groups.d.ts +28 -13
  105. package/lib/esm/components/Groups/Groups.js +76 -94
  106. package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.js +1 -1
  107. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.d.ts +4 -0
  108. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.js +2 -3
  109. package/lib/esm/components/Notification/Group/Group.d.ts +15 -0
  110. package/lib/esm/components/Notification/Group/Group.js +75 -0
  111. package/lib/esm/components/Notification/Group/index.d.ts +3 -0
  112. package/lib/esm/components/Notification/Group/index.js +2 -0
  113. package/lib/esm/components/Notification/Notification.js +31 -1
  114. package/lib/esm/components/Notification/PrivateMessage/PrivateMessage.js +16 -5
  115. package/lib/esm/components/PrivateMessageComponent/PrivateMessageComponent.d.ts +1 -1
  116. package/lib/esm/components/PrivateMessageComponent/PrivateMessageComponent.js +11 -8
  117. package/lib/esm/components/PrivateMessageSnippetItem/PrivateMessageSnippetItem.js +11 -6
  118. package/lib/esm/components/PrivateMessageSnippets/PrivateMessageSnippets.d.ts +3 -3
  119. package/lib/esm/components/PrivateMessageSnippets/PrivateMessageSnippets.js +26 -8
  120. package/lib/esm/components/PrivateMessageThread/PrivateMessageThread.d.ts +6 -1
  121. package/lib/esm/components/PrivateMessageThread/PrivateMessageThread.js +47 -22
  122. package/lib/esm/components/SearchAutocomplete/SearchAutocomplete.js +22 -5
  123. package/lib/esm/components/SnippetNotifications/SnippetNotifications.js +7 -0
  124. package/lib/esm/components/ToastNotifications/ToastNotifications.js +7 -0
  125. package/lib/esm/components/User/User.d.ts +5 -0
  126. package/lib/esm/components/User/User.js +5 -4
  127. package/lib/esm/constants/PubSub.d.ts +27 -0
  128. package/lib/esm/constants/PubSub.js +18 -0
  129. package/lib/esm/index.d.ts +5 -2
  130. package/lib/esm/index.js +7 -4
  131. package/lib/umd/react-ui.js +1 -1
  132. package/package.json +6 -6
@@ -25,6 +25,10 @@ const messages = (0, react_intl_1.defineMessages)({
25
25
  errorLoadImage: {
26
26
  id: 'ui.changeGroupCover.button.change.alertErrorImage',
27
27
  defaultMessage: 'ui.changeGroupCover.button.change.alertErrorImage'
28
+ },
29
+ errorImageSize: {
30
+ id: 'ui.changeGroupCover.alert',
31
+ defaultMessage: 'ui.changeGroupCover.alert'
28
32
  }
29
33
  });
30
34
  /**
@@ -75,7 +79,26 @@ function ChangeGroupCover(inProps) {
75
79
  */
76
80
  const handleUpload = (event) => {
77
81
  fileInput = event.target.files[0];
78
- isCreationMode ? onChange && onChange(fileInput) : handleSave();
82
+ if (fileInput) {
83
+ const reader = new FileReader();
84
+ reader.onload = (e) => {
85
+ const img = new Image();
86
+ img.onload = () => {
87
+ if (img.width < 1920) {
88
+ setAlert(intl.formatMessage(messages.errorImageSize));
89
+ }
90
+ else {
91
+ isCreationMode ? onChange && onChange(fileInput) : handleSave();
92
+ }
93
+ };
94
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
95
+ // @ts-ignore
96
+ img.src = e.target.result;
97
+ };
98
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
99
+ // @ts-ignore
100
+ reader.readAsDataURL(fileInput);
101
+ }
79
102
  };
80
103
  /**
81
104
  * Handles cover saving after upload action
@@ -16,8 +16,8 @@ const react_intl_1 = require("react-intl");
16
16
  const lab_1 = require("@mui/lab");
17
17
  const messages = (0, react_intl_1.defineMessages)({
18
18
  errorLoadImage: {
19
- id: 'ui.changeGroupCover.button.change.alertErrorImage',
20
- defaultMessage: 'ui.changeGroupCover.button.change.alertErrorImage'
19
+ id: 'ui.changeGroupPicture.alert',
20
+ defaultMessage: 'ui.changeGroupPicture.alert'
21
21
  }
22
22
  });
23
23
  const classes = {
@@ -59,12 +59,12 @@ function ChangeGroupPicture(inProps) {
59
59
  name: constants_1.PREFIX
60
60
  });
61
61
  const { groupId, onChange, autoHide, className, isCreationMode = false } = props, rest = tslib_1.__rest(props, ["groupId", "onChange", "autoHide", "className", "isCreationMode"]);
62
+ //CONTEXT
63
+ const scUserContext = (0, react_1.useContext)(react_core_1.SCUserContext);
62
64
  //STATE
65
+ let fileInput = (0, react_1.useRef)(null);
63
66
  const [loading, setLoading] = (0, react_1.useState)(false);
64
67
  const [alert, setAlert] = (0, react_1.useState)(null);
65
- let fileInput = (0, react_1.useRef)(null);
66
- //CONTEXT
67
- const scUserContext = (0, react_1.useContext)(react_core_1.SCUserContext);
68
68
  // INTL
69
69
  const intl = (0, react_intl_1.useIntl)();
70
70
  // Anonymous
@@ -75,26 +75,47 @@ function ChangeGroupPicture(inProps) {
75
75
  * Handles avatar upload
76
76
  * @param event
77
77
  */
78
- function handleUpload(event) {
78
+ const handleUpload = (event) => {
79
79
  fileInput = event.target.files[0];
80
- isCreationMode ? onChange && onChange(fileInput) : handleSave();
81
- }
80
+ if (fileInput) {
81
+ const reader = new FileReader();
82
+ reader.onload = (e) => {
83
+ const img = new Image();
84
+ img.onload = () => {
85
+ if (img.width < 600 && img.height < 600) {
86
+ setAlert(intl.formatMessage(messages.errorLoadImage));
87
+ }
88
+ else {
89
+ isCreationMode ? onChange && onChange(fileInput) : handleSave();
90
+ }
91
+ };
92
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
93
+ // @ts-ignore
94
+ img.src = e.target.result;
95
+ };
96
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
97
+ // @ts-ignore
98
+ reader.readAsDataURL(fileInput);
99
+ }
100
+ };
82
101
  /**
83
102
  * Performs save avatar after upload
84
103
  */
85
104
  function handleSave() {
86
105
  setLoading(true);
87
106
  const formData = new FormData();
107
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
108
+ // @ts-ignore
88
109
  formData.append('image_original', fileInput);
89
110
  api_services_1.GroupService.changeGroupAvatarOrCover(groupId, formData, { headers: { 'Content-Type': 'multipart/form-data' } })
90
111
  .then((data) => {
112
+ onChange && onChange(data.image_big);
91
113
  setLoading(false);
92
- onChange && onChange(data.image_bigger);
93
114
  })
94
115
  .catch((error) => {
95
- setAlert(intl.formatMessage(messages.errorLoadImage));
96
- setLoading(false);
97
116
  utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
117
+ setLoading(false);
118
+ setAlert(intl.formatMessage(messages.errorLoadImage));
98
119
  });
99
120
  }
100
121
  /**
@@ -16,7 +16,7 @@ const Root = (0, styles_1.styled)(material_1.Box, {
16
16
  slot: 'AttributesRoot'
17
17
  })(() => ({}));
18
18
  exports.default = (props) => {
19
- var _a, _b;
19
+ var _a, _b, _c;
20
20
  // PROPS
21
21
  const { className = null, value = null, onChange = null, onClick = null } = props;
22
22
  // HANDLERS
@@ -47,8 +47,8 @@ exports.default = (props) => {
47
47
  return (react_1.default.createElement(Root, { className: (0, classnames_1.default)(classes.root, className) },
48
48
  ((_a = value === null || value === void 0 ? void 0 : value.categories) === null || _a === void 0 ? void 0 : _a.length) > 0 &&
49
49
  (value === null || value === void 0 ? void 0 : value.categories.map((c) => (react_1.default.createElement(material_1.Chip, { key: c.id, label: c.name, onDelete: handleDeleteCategory(c.id), icon: react_1.default.createElement(Icon_1.default, null, "category"), onClick: handleClickCategory })))),
50
- (value === null || value === void 0 ? void 0 : value.group) && (react_1.default.createElement(material_1.Chip, { key: value === null || value === void 0 ? void 0 : value.group.id, label: value === null || value === void 0 ? void 0 : value.group.name, onDelete: handleDeleteGroup, icon: react_1.default.createElement(Icon_1.default, null, "groups"), onClick: handleClickGroup })),
51
- ((_b = value === null || value === void 0 ? void 0 : value.addressing) === null || _b === void 0 ? void 0 : _b.length) > 0 &&
50
+ (value === null || value === void 0 ? void 0 : value.group) && (react_1.default.createElement(material_1.Chip, { key: value === null || value === void 0 ? void 0 : value.group.id, label: value === null || value === void 0 ? void 0 : value.group.name, onDelete: handleDeleteGroup, icon: react_1.default.createElement(Icon_1.default, null, "groups"), onClick: handleClickGroup, disabled: !((_b = value === null || value === void 0 ? void 0 : value.group) === null || _b === void 0 ? void 0 : _b.subscription_status) })),
51
+ ((_c = value === null || value === void 0 ? void 0 : value.addressing) === null || _c === void 0 ? void 0 : _c.length) > 0 &&
52
52
  (value === null || value === void 0 ? void 0 : value.addressing.map((t) => (react_1.default.createElement(TagChip_1.default, { key: t.id, tag: t, onDelete: handleDeleteTag(t.id), icon: react_1.default.createElement(Icon_1.default, null, "label"), onClick: handleClickTag })))),
53
53
  (value === null || value === void 0 ? void 0 : value.location) && (react_1.default.createElement(material_1.Chip, { icon: react_1.default.createElement(Icon_1.default, null, "add_location_alt"), label: value === null || value === void 0 ? void 0 : value.location.location, onDelete: handleDeleteLocation, onClick: handleClickLocation }))));
54
54
  };
@@ -29,7 +29,6 @@ const Attributes_1 = tslib_1.__importDefault(require("./Attributes"));
29
29
  const constants_1 = require("./constants");
30
30
  const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
31
31
  const CloseLayer_1 = tslib_1.__importDefault(require("./Layer/CloseLayer"));
32
- const AudienceLayer_2 = require("./Layer/AudienceLayer/AudienceLayer");
33
32
  const DialogTransition = (0, react_1.forwardRef)(function Transition(props, ref) {
34
33
  return react_1.default.createElement(material_1.Fade, Object.assign({ ref: ref }, props));
35
34
  });
@@ -308,7 +307,7 @@ function Composer(inProps) {
308
307
  }
309
308
  }), [handleAddLayer, handleRemoveLayer, handleChangeCategories, categories]);
310
309
  const handleChangeAudience = (0, react_1.useCallback)((value) => {
311
- if (group) {
310
+ if (group || typeof value === 'object') {
312
311
  dispatch({ type: 'group', value });
313
312
  }
314
313
  else {
@@ -322,8 +321,7 @@ function Composer(inProps) {
322
321
  ComponentProps: {
323
322
  onClose: handleRemoveLayer,
324
323
  onSave: handleChangeAudience,
325
- defaultValue: group ? group : addressing,
326
- defaultType: group ? AudienceLayer_2.AudienceTypes.AUDIENCE_GROUP : addressing ? AudienceLayer_2.AudienceTypes.AUDIENCE_TAG : AudienceLayer_2.AudienceTypes.AUDIENCE_ALL
324
+ defaultValue: group || typeof addressing === 'object' ? group : addressing
327
325
  }
328
326
  }), [handleAddLayer, handleRemoveLayer, handleChangeAudience, addressing, group]);
329
327
  const handleChangeLocation = (0, react_1.useCallback)((value) => {
@@ -555,7 +553,7 @@ function Composer(inProps) {
555
553
  }),
556
554
  react_1.default.createElement(material_1.IconButton, { disabled: isSubmitting, onClick: handleAddCategoryLayer },
557
555
  react_1.default.createElement(Icon_1.default, null, "category")),
558
- react_1.default.createElement(material_1.IconButton, { disabled: isSubmitting || !features.includes(types_1.SCFeatureName.TAGGING), onClick: handleAddAudienceLayer }, addressing === null || addressing.length === 0 ? react_1.default.createElement(Icon_1.default, null, "public") : react_1.default.createElement(Icon_1.default, null, "label")),
556
+ react_1.default.createElement(material_1.IconButton, { disabled: isSubmitting || !features.includes(types_1.SCFeatureName.TAGGING) || Boolean(feedObject === null || feedObject === void 0 ? void 0 : feedObject.group), onClick: handleAddAudienceLayer }, (!group && addressing === null) || (addressing === null || addressing === void 0 ? void 0 : addressing.length) === 0 ? react_1.default.createElement(Icon_1.default, null, "public") : group ? react_1.default.createElement(Icon_1.default, null, "groups") : react_1.default.createElement(Icon_1.default, null, "label")),
559
557
  preferences[react_core_1.SCPreferences.ADDONS_POST_GEOLOCATION_ENABLED].value && (react_1.default.createElement(material_1.IconButton, { disabled: isSubmitting, onClick: handleAddLocationLayer, color: location !== null ? 'primary' : 'default' },
560
558
  react_1.default.createElement(Icon_1.default, null, "add_location_alt"))))),
561
559
  layer && (react_1.default.createElement(LayerTransitionRoot, { className: classes.layerTransitionRoot, in: true, container: dialogRef.current, direction: "left" },
@@ -25,7 +25,8 @@ const DEFAULT_POST = {
25
25
  categories: [],
26
26
  medias: [],
27
27
  html: '',
28
- addressing: []
28
+ addressing: [],
29
+ group: null
29
30
  };
30
31
  exports.default = (props) => {
31
32
  // PROPS
@@ -43,7 +44,7 @@ exports.default = (props) => {
43
44
  }, [value]);
44
45
  // RENDER
45
46
  return (react_1.default.createElement(Root, { className: (0, classnames_1.default)(classes.root, className) },
46
- generalError && react_1.default.createElement(material_1.Typography, { className: classes.generalError },
47
- react_1.default.createElement(react_intl_1.FormattedMessage, { id: `ui.composer.error.${generalError}`, defaultMessage: `ui.composer.error.${generalError}` })),
47
+ generalError && (react_1.default.createElement(material_1.Typography, { className: classes.generalError },
48
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: `ui.composer.error.${generalError}`, defaultMessage: `ui.composer.error.${generalError}` }))),
48
49
  react_1.default.createElement(Editor_1.default, Object.assign({ ref: editorRef }, EditorProps, { editable: !disabled, className: classes.editor, onChange: handleChangeHtml, defaultValue: value.html }))));
49
50
  };
@@ -10,9 +10,8 @@ export declare enum AudienceTypes {
10
10
  AUDIENCE_GROUP = "group"
11
11
  }
12
12
  export interface AudienceLayerProps extends Omit<BoxProps, 'defaultValue'>, ComposerLayerProps {
13
- defaultType: AudienceTypes;
14
13
  defaultValue: SCTagType[] | SCGroupType;
15
14
  TextFieldProps?: TextFieldProps;
16
15
  }
17
- declare const AudienceLayer: React.ForwardRefExoticComponent<Pick<AudienceLayerProps, "p" | "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "right" | "bottom" | "left" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "component" | "sx" | "classes" | "onClose" | "TextFieldProps" | "defaultType" | "onSave"> & React.RefAttributes<unknown>>;
16
+ declare const AudienceLayer: React.ForwardRefExoticComponent<Pick<AudienceLayerProps, "p" | "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "right" | "bottom" | "left" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "component" | "sx" | "classes" | "onClose" | "TextFieldProps" | "onSave"> & React.RefAttributes<unknown>>;
18
17
  export default AudienceLayer;
@@ -35,10 +35,10 @@ const Root = (0, styles_1.styled)(material_1.Box, {
35
35
  })(() => ({}));
36
36
  const AudienceLayer = react_1.default.forwardRef((props, ref) => {
37
37
  // Props
38
- const { className, onClose, onSave, defaultType = AudienceTypes.AUDIENCE_TAG, defaultValue = AudienceTypes.AUDIENCE_TAG ? [] : null, TextFieldProps = {
38
+ const { className, onClose, onSave, defaultValue = AudienceTypes.AUDIENCE_TAG ? [] : null, TextFieldProps = {
39
39
  variant: 'outlined',
40
40
  label: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.tags.label", defaultMessage: "ui.composer.layer.audience.tags.label" })
41
- } } = props, rest = tslib_1.__rest(props, ["className", "onClose", "onSave", "defaultType", "defaultValue", "TextFieldProps"]);
41
+ } } = props, rest = tslib_1.__rest(props, ["className", "onClose", "onSave", "defaultValue", "TextFieldProps"]);
42
42
  // STATE
43
43
  const [autocompleteOpen, setAutocompleteOpen] = (0, react_1.useState)(false);
44
44
  const [audience, setAudience] = (0, react_1.useState)(
@@ -46,7 +46,7 @@ const AudienceLayer = react_1.default.forwardRef((props, ref) => {
46
46
  // @ts-ignore
47
47
  defaultValue === null || defaultValue.length === 0
48
48
  ? AudienceTypes.AUDIENCE_ALL
49
- : defaultType === AudienceTypes.AUDIENCE_GROUP
49
+ : defaultValue && typeof defaultValue === 'object'
50
50
  ? AudienceTypes.AUDIENCE_GROUP
51
51
  : AudienceTypes.AUDIENCE_TAG);
52
52
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -58,7 +58,7 @@ const AudienceLayer = react_1.default.forwardRef((props, ref) => {
58
58
  const handleSave = (0, react_1.useCallback)(
59
59
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
60
60
  // @ts-ignore
61
- () => (defaultType === AudienceTypes.AUDIENCE_GROUP ? onSave(value) : onSave((value === null || value === void 0 ? void 0 : value.length) && (value === null || value === void 0 ? void 0 : value.length) > 0 ? value : null)), [value, onSave]);
61
+ () => (audience === AudienceTypes.AUDIENCE_GROUP ? onSave(value) : onSave((value === null || value === void 0 ? void 0 : value.length) && (value === null || value === void 0 ? void 0 : value.length) > 0 ? value : null)), [value, onSave, audience]);
62
62
  const handleChange = (0, react_1.useCallback)((event, tags) => setValue(tags), []);
63
63
  const handleGroupChange = (0, react_1.useCallback)((group) => setValue(group), []);
64
64
  const handleChangeAudience = (0, react_1.useCallback)((event, data) => setAudience(data), []);
@@ -75,8 +75,20 @@ const AudienceLayer = react_1.default.forwardRef((props, ref) => {
75
75
  react_1.default.createElement(DialogContent_1.default, { className: classes.content },
76
76
  react_1.default.createElement(material_1.Tabs, { value: audience, onChange: handleChangeAudience, "aria-label": "audience type" },
77
77
  react_1.default.createElement(material_1.Tab, { value: AudienceTypes.AUDIENCE_ALL, icon: react_1.default.createElement(Icon_1.default, null, "public"), label: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.all", defaultMessage: "ui.composer.layer.audience.all" }) }),
78
- react_1.default.createElement(material_1.Tab, { disabled: defaultType === AudienceTypes.AUDIENCE_TAG, value: AudienceTypes.AUDIENCE_GROUP, icon: react_1.default.createElement(Icon_1.default, null, "groups"), label: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.group", defaultMessage: "ui.composer.layer.audience.group" }) }),
79
- react_1.default.createElement(material_1.Tab, { disabled: defaultType === AudienceTypes.AUDIENCE_GROUP, value: AudienceTypes.AUDIENCE_TAG, icon: react_1.default.createElement(Icon_1.default, null, "label"), label: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.tag", defaultMessage: "ui.composer.layer.audience.tag" }) })),
78
+ react_1.default.createElement(material_1.Tab
79
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
80
+ // @ts-ignore
81
+ , {
82
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
83
+ // @ts-ignore
84
+ disabled: defaultValue && typeof defaultValue !== 'object', value: AudienceTypes.AUDIENCE_GROUP, icon: react_1.default.createElement(Icon_1.default, null, "groups"), label: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.group", defaultMessage: "ui.composer.layer.audience.group" }) }),
85
+ react_1.default.createElement(material_1.Tab
86
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
87
+ // @ts-ignore
88
+ , {
89
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
90
+ // @ts-ignore
91
+ disabled: value && typeof defaultValue === 'object', value: AudienceTypes.AUDIENCE_TAG, icon: react_1.default.createElement(Icon_1.default, null, "label"), label: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.tag", defaultMessage: "ui.composer.layer.audience.tag" }) })),
80
92
  react_1.default.createElement(material_1.Typography, { className: classes.message },
81
93
  audience === AudienceTypes.AUDIENCE_ALL && (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.all.message", defaultMessage: "ui.composer.audience.layer.all.message" })),
82
94
  audience === AudienceTypes.AUDIENCE_GROUP && (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.composer.layer.audience.group.message", defaultMessage: "ui.composer.audience.layer.group.message" })),
@@ -44,10 +44,14 @@ function EditGroupButton(inProps) {
44
44
  });
45
45
  const { className, groupId, group, onEditSuccess } = props, rest = tslib_1.__rest(props, ["className", "groupId", "group", "onEditSuccess"]);
46
46
  const { scGroup, setSCGroup } = (0, react_core_1.useSCFetchGroup)({ id: groupId, group });
47
+ const scUserContext = (0, react_core_1.useSCUser)();
47
48
  const handleSuccess = (data) => {
48
49
  setSCGroup(data);
49
50
  onEditSuccess && onEditSuccess(data);
50
51
  };
52
+ if (!scUserContext.user) {
53
+ return null;
54
+ }
51
55
  /**
52
56
  * Renders root object
53
57
  */
@@ -188,6 +188,7 @@ export interface FeedObjectProps extends CardProps, VirtualScrollerItemProps {
188
188
  |deleted|.SCFeedObject-deleted|Styles applied to the feed obj when is deleted (visible only for admin and moderator).|
189
189
  |header|.SCFeedObject-header|Styles applied to the header of the card.|
190
190
  |category|.SCFeedObject-category|Styles applied to the category element.|
191
+ |group|.SCFeedObject-group|Styles applied to the group element.|
191
192
  |avatar|.SCFeedObject-avatar|Styles applied to the avatar element.|
192
193
  |username|.SCFeedObject-username|Styles applied to the username element.|
193
194
  |activityAt|.SCFeedObject-activity-at|Styles applied to the activity at section.|
@@ -42,6 +42,10 @@ const messages = (0, react_intl_1.defineMessages)({
42
42
  visibleToAll: {
43
43
  id: 'ui.feedObject.visibleToAll',
44
44
  defaultMessage: 'ui.feedObject.visibleToAll'
45
+ },
46
+ visibleToGroup: {
47
+ id: 'ui.feedObject.visibleToGroup',
48
+ defaultMessage: 'ui.feedObject.visibleToGroup'
45
49
  }
46
50
  });
47
51
  const classes = {
@@ -49,6 +53,7 @@ const classes = {
49
53
  deleted: `${constants_1.PREFIX}-deleted`,
50
54
  header: `${constants_1.PREFIX}-header`,
51
55
  category: `${constants_1.PREFIX}-category`,
56
+ group: `${constants_1.PREFIX}-group`,
52
57
  avatar: `${constants_1.PREFIX}-avatar`,
53
58
  username: `${constants_1.PREFIX}-username`,
54
59
  activityAt: `${constants_1.PREFIX}-activity-at`,
@@ -102,6 +107,7 @@ const Root = (0, styles_1.styled)(Widget_1.default, {
102
107
  |deleted|.SCFeedObject-deleted|Styles applied to the feed obj when is deleted (visible only for admin and moderator).|
103
108
  |header|.SCFeedObject-header|Styles applied to the header of the card.|
104
109
  |category|.SCFeedObject-category|Styles applied to the category element.|
110
+ |group|.SCFeedObject-group|Styles applied to the group element.|
105
111
  |avatar|.SCFeedObject-avatar|Styles applied to the avatar element.|
106
112
  |username|.SCFeedObject-username|Styles applied to the username element.|
107
113
  |activityAt|.SCFeedObject-activity-at|Styles applied to the activity at section.|
@@ -169,7 +175,7 @@ function FeedObject(inProps) {
169
175
  }, [onStateChange, onHeightChange]);
170
176
  /**
171
177
  * Update state object
172
- * @param obj
178
+ * @param newObj
173
179
  */
174
180
  const updateObject = (newObj) => {
175
181
  setObj(newObj);
@@ -426,8 +432,13 @@ function FeedObject(inProps) {
426
432
  template === feedObject_1.SCFeedObjectTemplateType.DETAIL ||
427
433
  template === feedObject_1.SCFeedObjectTemplateType.SEARCH) {
428
434
  objElement = (react_1.default.createElement(react_1.default.Fragment, null, obj ? (react_1.default.createElement(material_1.Box, { className: (0, classnames_1.default)({ [classes.deleted]: obj && obj.deleted }) },
429
- obj.categories.length > 0 && (react_1.default.createElement("div", { className: classes.category }, obj.categories.map((c) => (react_1.default.createElement(react_core_1.Link, { to: scRoutingContext.url(react_core_1.SCRoutes.CATEGORY_ROUTE_NAME, c), key: c.id },
430
- react_1.default.createElement(material_1.Typography, { variant: "overline" }, c.name)))))),
435
+ obj.categories.length > 0 && (react_1.default.createElement("div", { className: classes.category },
436
+ react_1.default.createElement(react_1.default.Fragment, null, obj.group && (react_1.default.createElement("div", { className: classes.group },
437
+ react_1.default.createElement(material_1.Chip, { color: "secondary", size: "small", key: obj.group.id, icon: react_1.default.createElement(Icon_1.default, null, "groups"), component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.GROUP_ROUTE_NAME, obj.group), clickable: true })))),
438
+ obj.categories.map((c) => (react_1.default.createElement(react_core_1.Link, { to: scRoutingContext.url(react_core_1.SCRoutes.CATEGORY_ROUTE_NAME, c), key: c.id },
439
+ react_1.default.createElement(material_1.Typography, { variant: "overline" }, c.name)))))),
440
+ obj.group && !obj.categories.length && (react_1.default.createElement("div", { className: classes.group },
441
+ react_1.default.createElement(material_1.Chip, { color: "secondary", size: "small", key: obj.group.id, icon: react_1.default.createElement(Icon_1.default, null, "groups"), label: obj.group.name, component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.GROUP_ROUTE_NAME, obj.group), clickable: true }))),
431
442
  react_1.default.createElement(material_1.CardHeader, { className: classes.header, avatar: react_1.default.createElement(react_core_1.Link, Object.assign({}, (!obj.author.deleted && { to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_ROUTE_NAME, obj.author) }), { onClick: obj.author.deleted ? () => setOpenAlert(true) : null }),
432
443
  react_1.default.createElement(UserAvatar_1.default, { hide: !obj.author.community_badge },
433
444
  react_1.default.createElement(material_1.Avatar, { "aria-label": "recipe", src: obj.author.avatar, className: classes.avatar }, obj.author.username))), title: react_1.default.createElement(react_core_1.Link, Object.assign({}, (!obj.author.deleted && { to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_ROUTE_NAME, obj.author) }), { onClick: obj.author.deleted ? () => setOpenAlert(true) : null, className: classes.username }), obj.author.username), subheader: react_1.default.createElement(react_1.default.Fragment, null,
@@ -439,7 +450,8 @@ function FeedObject(inProps) {
439
450
  react_1.default.createElement(Icon_1.default, null, "add_location_alt"), (_a = obj.location) === null || _a === void 0 ? void 0 :
440
451
  _a.location))),
441
452
  react_1.default.createElement(Bullet_1.default, null),
442
- react_1.default.createElement(material_1.Box, { className: classes.tag }, obj.addressing.length > 0 ? (react_1.default.createElement(Tags_1.default, { tags: obj.addressing, TagChipProps: { disposable: false, clickable: false } })) : (react_1.default.createElement(material_1.Tooltip, { title: `${intl.formatMessage(messages.visibleToAll)}` },
453
+ react_1.default.createElement(material_1.Box, { className: classes.tag }, obj.addressing.length > 0 ? (react_1.default.createElement(Tags_1.default, { tags: obj.addressing, TagChipProps: { disposable: false, clickable: false } })) : obj.group ? (react_1.default.createElement(material_1.Tooltip, { title: `${intl.formatMessage(messages.visibleToGroup, { group: obj.group.name })}` },
454
+ react_1.default.createElement(Icon_1.default, { color: "disabled", fontSize: "small" }, "groups"))) : (react_1.default.createElement(material_1.Tooltip, { title: `${intl.formatMessage(messages.visibleToAll)}` },
443
455
  react_1.default.createElement(Icon_1.default, { color: "disabled", fontSize: "small" }, "public"))))), action: renderHeaderAction() }),
444
456
  react_1.default.createElement(CardContent_1.default, { classes: { root: classes.content } },
445
457
  react_1.default.createElement(material_1.Box, { className: classes.titleSection }, 'title' in obj && (react_1.default.createElement(react_1.default.Fragment, null, template === feedObject_1.SCFeedObjectTemplateType.DETAIL ? (react_1.default.createElement(material_1.Typography, { variant: "body1", gutterBottom: true, className: classes.title }, obj.title)) : (react_1.default.createElement(react_core_1.Link, { to: scRoutingContext.url((0, contribution_1.getContributionRouteName)(obj), (0, contribution_1.getRouteData)(obj)) },
@@ -468,8 +480,13 @@ function FeedObject(inProps) {
468
480
  }
469
481
  else if (template === feedObject_1.SCFeedObjectTemplateType.SHARE) {
470
482
  objElement = (react_1.default.createElement(react_1.default.Fragment, null, obj ? (react_1.default.createElement(react_1.default.Fragment, null,
471
- obj.categories.length > 0 && (react_1.default.createElement("div", { className: classes.category }, obj.categories.map((c) => (react_1.default.createElement(react_core_1.Link, { to: scRoutingContext.url(react_core_1.SCRoutes.CATEGORY_ROUTE_NAME, c), key: c.id },
472
- react_1.default.createElement(material_1.Typography, { variant: "overline" }, c.name)))))),
483
+ obj.categories.length > 0 && (react_1.default.createElement("div", { className: classes.category },
484
+ react_1.default.createElement(react_1.default.Fragment, null, obj.group && (react_1.default.createElement("div", { className: classes.group },
485
+ react_1.default.createElement(material_1.Chip, { color: "secondary", size: "small", key: obj.group.id, icon: react_1.default.createElement(Icon_1.default, null, "groups"), component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.GROUP_ROUTE_NAME, obj.group), clickable: true })))),
486
+ obj.categories.map((c) => (react_1.default.createElement(react_core_1.Link, { to: scRoutingContext.url(react_core_1.SCRoutes.CATEGORY_ROUTE_NAME, c), key: c.id },
487
+ react_1.default.createElement(material_1.Typography, { variant: "overline" }, c.name)))))),
488
+ obj.group && !obj.categories.length && (react_1.default.createElement("div", { className: classes.group },
489
+ react_1.default.createElement(material_1.Chip, { color: "secondary", size: "small", key: obj.group.id, icon: react_1.default.createElement(Icon_1.default, null, "groups"), label: obj.group.name, component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.GROUP_ROUTE_NAME, obj.group), clickable: true }))),
473
490
  react_1.default.createElement(material_1.CardHeader, { classes: { root: classes.header }, avatar: react_1.default.createElement(react_core_1.Link, Object.assign({}, (!obj.author.deleted && { to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_ROUTE_NAME, obj.author) }), { onClick: obj.author.deleted ? () => setOpenAlert(true) : null, className: classes.username }),
474
491
  react_1.default.createElement(UserAvatar_1.default, { hide: !obj.author.community_badge },
475
492
  react_1.default.createElement(material_1.Avatar, { "aria-label": "recipe", src: obj.author.avatar, className: classes.avatar }, obj.author.username))), title: react_1.default.createElement(react_core_1.Link, Object.assign({}, (!obj.author.deleted && { to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_ROUTE_NAME, obj.author) }), { onClick: obj.author.deleted ? () => setOpenAlert(true) : null, className: classes.username }), obj.author.username), subheader: react_1.default.createElement(react_core_1.Link, { to: scRoutingContext.url((0, contribution_1.getContributionRouteName)(obj), (0, contribution_1.getRouteData)(obj)), className: classes.activityAt },
@@ -57,7 +57,7 @@ function FeedUpdatesWidget(inProps) {
57
57
  const [updates, setUpdates] = (0, react_1.useState)(false);
58
58
  // REFS
59
59
  const updatesSubscription = (0, react_1.useRef)(null);
60
- // Subscripber for pubsub callback
60
+ // Subscriber for pubsub callback
61
61
  const subscriber = (msg, data) => {
62
62
  if (subscriptionChannelUpdatesCallback(msg, data)) {
63
63
  setUpdates(true);
@@ -4,6 +4,7 @@ const tslib_1 = require("tslib");
4
4
  const react_1 = tslib_1.__importStar(require("react"));
5
5
  const styles_1 = require("@mui/material/styles");
6
6
  const material_1 = require("@mui/material");
7
+ const types_1 = require("@selfcommunity/types");
7
8
  const react_core_1 = require("@selfcommunity/react-core");
8
9
  const react_intl_1 = require("react-intl");
9
10
  const classnames_1 = tslib_1.__importDefault(require("classnames"));
@@ -58,16 +59,20 @@ const Root = (0, styles_1.styled)(BaseItemButton_1.default, {
58
59
  * @param inProps
59
60
  */
60
61
  function Group(inProps) {
62
+ var _a;
61
63
  // PROPS
62
64
  const props = (0, system_1.useThemeProps)({
63
65
  props: inProps,
64
66
  name: constants_1.PREFIX
65
67
  });
66
- const { groupId = null, group = null, className = null, elevation, hideActions = false, groupSubscribeButtonProps = {}, buttonProps = {}, visible = true } = props, rest = tslib_1.__rest(props, ["groupId", "group", "className", "elevation", "hideActions", "groupSubscribeButtonProps", "buttonProps", "visible"]);
68
+ const { groupId = null, group = null, className = null, elevation, hideActions = false, groupSubscribeButtonProps = {} } = props, rest = tslib_1.__rest(props, ["groupId", "group", "className", "elevation", "hideActions", "groupSubscribeButtonProps"]);
67
69
  // STATE
68
70
  const { scGroup } = (0, react_core_1.useSCFetchGroup)({ id: groupId, group });
69
71
  // CONTEXT
70
72
  const scRoutingContext = (0, react_core_1.useSCRouting)();
73
+ const scUserContext = (0, react_core_1.useSCUser)();
74
+ // CONST
75
+ 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]);
71
76
  const [openAlert, setOpenAlert] = (0, react_1.useState)(false);
72
77
  // INTL
73
78
  const intl = (0, react_intl_1.useIntl)();
@@ -77,7 +82,8 @@ function Group(inProps) {
77
82
  */
78
83
  function renderAuthenticatedActions() {
79
84
  return (react_1.default.createElement(material_1.Stack, { className: classes.actions, direction: "row", alignItems: "center", justifyContent: "center", spacing: 2 },
80
- react_1.default.createElement(material_1.Icon, null, !visible ? 'private' : 'public'),
85
+ react_1.default.createElement(material_1.Icon, null, (group === null || group === void 0 ? void 0 : group.privacy) === types_1.SCGroupPrivacyType.PRIVATE ? 'private' : 'public'),
86
+ isGroupAdmin && react_1.default.createElement(material_1.Icon, null, "face"),
81
87
  react_1.default.createElement(GroupSubscribeButton_1.default, Object.assign({ group: group, groupId: groupId }, groupSubscribeButtonProps))));
82
88
  }
83
89
  /**
@@ -90,7 +96,7 @@ function Group(inProps) {
90
96
  * Renders root object
91
97
  */
92
98
  return (react_1.default.createElement(react_1.default.Fragment, null,
93
- react_1.default.createElement(Root, Object.assign({ elevation: elevation }, rest, { className: (0, classnames_1.default)(classes.root, className), ButtonBaseProps: buttonProps !== null && buttonProps !== void 0 ? buttonProps : { 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: scGroup.name, secondary: `${intl.formatMessage(messages.groupMembers, { total: scGroup.subscribers_counter })}`, actions: hideActions ? null : renderAuthenticatedActions() })),
99
+ 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: scGroup.name, secondary: `${intl.formatMessage(messages.groupMembers, { total: scGroup.subscribers_counter })}`, actions: hideActions ? null : renderAuthenticatedActions() })),
94
100
  openAlert && react_1.default.createElement(UserDeletedSnackBar_1.default, { open: openAlert, handleClose: () => setOpenAlert(false) })));
95
101
  }
96
102
  exports.default = Group;
@@ -15,10 +15,12 @@ const ChangeGroupPicture_1 = tslib_1.__importDefault(require("../ChangeGroupPict
15
15
  const ChangeGroupCover_1 = tslib_1.__importDefault(require("../ChangeGroupCover"));
16
16
  const Group_1 = require("../../constants/Group");
17
17
  const GroupInviteButton_1 = tslib_1.__importDefault(require("../GroupInviteButton"));
18
+ const pubsub_js_1 = tslib_1.__importDefault(require("pubsub-js"));
18
19
  const types_1 = require("@selfcommunity/types");
19
20
  const Errors_1 = require("../../constants/Errors");
20
21
  const api_services_1 = require("@selfcommunity/api-services");
21
22
  const utils_1 = require("@selfcommunity/utils");
23
+ const PubSub_1 = require("../../constants/PubSub");
22
24
  const messages = (0, react_intl_1.defineMessages)({
23
25
  name: {
24
26
  id: 'ui.groupForm.name.placeholder',
@@ -142,6 +144,22 @@ function GroupForm(inProps) {
142
144
  setError(error);
143
145
  }
144
146
  }
147
+ /**
148
+ * Notify when a group info changed
149
+ * @param data
150
+ */
151
+ function notifyChanges(data) {
152
+ if (data) {
153
+ if (group) {
154
+ // Edit group
155
+ pubsub_js_1.default.publish(`${PubSub_1.SCTopicType.GROUP}.${PubSub_1.SCEventType.EDIT}`, data);
156
+ }
157
+ else {
158
+ // Create group
159
+ pubsub_js_1.default.publish(`${PubSub_1.SCTopicType.GROUP}.${PubSub_1.SCEventType.CREATE}`, data);
160
+ }
161
+ }
162
+ }
145
163
  const handleSubmit = () => {
146
164
  setField((prev) => (Object.assign(Object.assign({}, prev), { ['isSubmitting']: true })));
147
165
  const formData = new FormData();
@@ -155,8 +173,10 @@ function GroupForm(inProps) {
155
173
  if (field.emotionalImageOriginalFile) {
156
174
  formData.append('emotional_image_original', field.emotionalImageOriginalFile);
157
175
  }
158
- for (const key in field.invitedUsers) {
159
- formData.append(key, field.invitedUsers[key]);
176
+ if (!group) {
177
+ for (const key in field.invitedUsers) {
178
+ formData.append(key, field.invitedUsers[key]);
179
+ }
160
180
  }
161
181
  let groupService;
162
182
  if (group) {
@@ -168,6 +188,7 @@ function GroupForm(inProps) {
168
188
  groupService
169
189
  .then((data) => {
170
190
  onSuccess && onSuccess(data);
191
+ notifyChanges(data);
171
192
  onClose && onClose();
172
193
  setField((prev) => (Object.assign(Object.assign({}, prev), { ['isSubmitting']: false })));
173
194
  })
@@ -215,25 +236,26 @@ function GroupForm(inProps) {
215
236
  react_1.default.createElement(material_1.Typography, { className: (0, classnames_1.default)(classes.switchLabel, { [classes.active]: !field.isPublic }) },
216
237
  react_1.default.createElement(material_1.Icon, null, "private"),
217
238
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.privacy.private", defaultMessage: "ui.groupForm.privacy.private" })),
218
- react_1.default.createElement(material_1.Switch, { className: classes.switch, checked: field.isPublic, onClick: () => setField((prev) => (Object.assign(Object.assign({}, prev), { ['isPublic']: !field.isPublic }))) }),
239
+ react_1.default.createElement(material_1.Switch, { className: classes.switch, checked: field.isPublic, onChange: () => setField((prev) => (Object.assign(Object.assign({}, prev), { ['isPublic']: !field.isPublic }))), disabled: group && group.privacy === types_1.SCGroupPrivacyType.PRIVATE }),
219
240
  react_1.default.createElement(material_1.Typography, { className: (0, classnames_1.default)(classes.switchLabel, { [classes.active]: field.isPublic }) },
220
241
  react_1.default.createElement(material_1.Icon, null, "public"),
221
242
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.privacy.public", defaultMessage: "ui.groupForm.privacy.public" }))),
222
- react_1.default.createElement(material_1.Typography, { variant: "body2", className: classes.privacySectionInfo }, field.isPublic ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.privacy.public.info", defaultMessage: "ui.groupForm.privacy.public.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.privacy.private.info", defaultMessage: "ui.groupForm.private.public.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })))),
223
- react_1.default.createElement(material_1.Box, { className: classes.visibilitySection }, !field.isPublic && (react_1.default.createElement(react_1.default.Fragment, null,
243
+ react_1.default.createElement(material_1.Typography, { variant: "body2", className: classes.privacySectionInfo }, field.isPublic ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.privacy.public.info", defaultMessage: "ui.groupForm.privacy.public.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })) : (react_1.default.createElement(react_1.default.Fragment, null, group && group.privacy === types_1.SCGroupPrivacyType.PRIVATE ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.privacy.private.info.edit", defaultMessage: "ui.groupForm.private.public.info.edit", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.privacy.private.info", defaultMessage: "ui.groupForm.private.public.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })))))),
244
+ react_1.default.createElement(material_1.Box, { className: classes.visibilitySection }, ((!field.isPublic && !group) || (group && !field.isPublic)) && (react_1.default.createElement(react_1.default.Fragment, null,
224
245
  react_1.default.createElement(material_1.Typography, { variant: "h4" },
225
246
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.visibility.title", defaultMessage: "ui.groupForm.visibility.title", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })),
226
247
  react_1.default.createElement(material_1.Stack, { direction: "row", spacing: 1, alignItems: "center" },
227
248
  react_1.default.createElement(material_1.Typography, { className: (0, classnames_1.default)(classes.switchLabel, { [classes.active]: !field.isVisible }) },
228
249
  react_1.default.createElement(material_1.Icon, null, "visibility_off"),
229
250
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.visibility.hidden", defaultMessage: "ui.groupForm.visibility.hidden" })),
230
- react_1.default.createElement(material_1.Switch, { className: classes.switch, checked: field.isVisible, onClick: () => setField((prev) => (Object.assign(Object.assign({}, prev), { ['isVisible']: !field.isVisible }))) }),
251
+ react_1.default.createElement(material_1.Switch, { className: classes.switch, checked: field.isVisible, onChange: () => setField((prev) => (Object.assign(Object.assign({}, prev), { ['isVisible']: !field.isVisible }))) }),
231
252
  react_1.default.createElement(material_1.Typography, { className: (0, classnames_1.default)(classes.switchLabel, { [classes.active]: field.isVisible }) },
232
253
  react_1.default.createElement(material_1.Icon, null, "visibility"),
233
254
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.visibility.visible", defaultMessage: "ui.groupForm.visibility.visible" }))),
234
255
  react_1.default.createElement(material_1.Typography, { variant: "body2", className: classes.visibilitySectionInfo }, !field.isVisible ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.visibility.hidden.info", defaultMessage: "ui.groupForm.visibility.hidden.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.groupForm.visibility.visible.info", defaultMessage: "ui.groupForm.visibility.visible.info", values: { b: (chunks) => react_1.default.createElement("strong", null, chunks) } }))))))),
235
- react_1.default.createElement(material_1.Divider, null),
236
- react_1.default.createElement(material_1.Box, { className: classes.inviteSection },
237
- react_1.default.createElement(GroupInviteButton_1.default, { handleInvitations: handleInviteSection })))));
256
+ !group && (react_1.default.createElement(react_1.default.Fragment, null,
257
+ react_1.default.createElement(material_1.Divider, null),
258
+ react_1.default.createElement(material_1.Box, { className: classes.inviteSection },
259
+ react_1.default.createElement(GroupInviteButton_1.default, { handleInvitations: handleInviteSection })))))));
238
260
  }
239
261
  exports.default = GroupForm;
@@ -1,8 +1,8 @@
1
- import React from 'react';
2
1
  import { SCGroupType } from '@selfcommunity/types';
3
2
  import { ChangeGroupCoverProps } from '../ChangeGroupCover';
4
3
  import { ChangeGroupPictureProps } from '../ChangeGroupPicture';
5
4
  import { GroupMembersButtonProps } from '../GroupMembersButton';
5
+ import { GroupSubscribeButtonProps } from '../GroupSubscribeButton';
6
6
  export interface GroupHeaderProps {
7
7
  /**
8
8
  * Id of group object
@@ -35,14 +35,15 @@ export interface GroupHeaderProps {
35
35
  */
36
36
  ChangeCoverProps?: ChangeGroupCoverProps;
37
37
  /**
38
- * Props to spread to the group memebers button
38
+ * Props to spread group button followed
39
39
  * @default {}
40
40
  */
41
- GroupMembersButtonProps?: GroupMembersButtonProps;
41
+ GroupSubscribeButtonProps?: GroupSubscribeButtonProps;
42
42
  /**
43
- *
43
+ * Props to spread to the group memebers button
44
+ * @default {}
44
45
  */
45
- actions?: React.ReactNode;
46
+ GroupMembersButtonProps?: GroupMembersButtonProps;
46
47
  /**
47
48
  * Any other properties
48
49
  */