@selfcommunity/react-ui 0.1.2-alpha.7 → 0.1.2

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 (50) hide show
  1. package/lib/cjs/components/BroadcastMessages/Message.js +2 -2
  2. package/lib/cjs/components/CategoriesFollowed/CategoriesFollowed.js +3 -20
  3. package/lib/cjs/components/CategoriesSuggestion/CategoriesSuggestion.js +1 -4
  4. package/lib/cjs/components/CommentObject/CommentObject.js +4 -1
  5. package/lib/cjs/components/Composer/Composer.js +30 -15
  6. package/lib/cjs/components/Composer/Poll/Poll.js +10 -2
  7. package/lib/cjs/components/Feed/Feed.js +28 -23
  8. package/lib/cjs/components/FeedObject/FeedObject.js +21 -31
  9. package/lib/cjs/components/PeopleSuggestion/PeopleSuggestion.js +2 -8
  10. package/lib/cjs/components/UsersFollowed/UsersFollowed.js +3 -18
  11. package/lib/cjs/shared/BaseDialog/BaseDialog.js +5 -0
  12. package/lib/cjs/shared/DateTimeAgo/index.js +18 -15
  13. package/lib/cjs/shared/Media/Link/PreviewComponent.js +2 -1
  14. package/lib/cjs/shared/Media/Share/PreviewComponent.js +2 -1
  15. package/lib/cjs/shared/Media/Video/PreviewComponent.js +2 -8
  16. package/lib/esm/components/BroadcastMessages/Message.js +2 -2
  17. package/lib/esm/components/CategoriesFollowed/CategoriesFollowed.js +3 -20
  18. package/lib/esm/components/CategoriesSuggestion/CategoriesSuggestion.js +1 -4
  19. package/lib/esm/components/CommentObject/CommentObject.js +4 -1
  20. package/lib/esm/components/Composer/Composer.js +30 -15
  21. package/lib/esm/components/Composer/Poll/Poll.js +10 -2
  22. package/lib/esm/components/Feed/Feed.js +28 -23
  23. package/lib/esm/components/FeedObject/FeedObject.js +21 -31
  24. package/lib/esm/components/PeopleSuggestion/PeopleSuggestion.js +2 -8
  25. package/lib/esm/components/UsersFollowed/UsersFollowed.js +3 -18
  26. package/lib/esm/react-i18n/src/index.d.ts +2 -0
  27. package/lib/esm/react-i18n/src/index.d.ts.map +1 -1
  28. package/lib/esm/react-ui/src/components/BroadcastMessages/Message.d.ts.map +1 -1
  29. package/lib/esm/react-ui/src/components/CategoriesFollowed/CategoriesFollowed.d.ts.map +1 -1
  30. package/lib/esm/react-ui/src/components/CategoriesSuggestion/CategoriesSuggestion.d.ts.map +1 -1
  31. package/lib/esm/react-ui/src/components/CommentObject/CommentObject.d.ts.map +1 -1
  32. package/lib/esm/react-ui/src/components/Composer/Composer.d.ts.map +1 -1
  33. package/lib/esm/react-ui/src/components/Composer/Poll/Poll.d.ts.map +1 -1
  34. package/lib/esm/react-ui/src/components/Feed/Feed.d.ts +5 -0
  35. package/lib/esm/react-ui/src/components/Feed/Feed.d.ts.map +1 -1
  36. package/lib/esm/react-ui/src/components/FeedObject/FeedObject.d.ts.map +1 -1
  37. package/lib/esm/react-ui/src/components/PeopleSuggestion/PeopleSuggestion.d.ts.map +1 -1
  38. package/lib/esm/react-ui/src/components/UsersFollowed/UsersFollowed.d.ts.map +1 -1
  39. package/lib/esm/react-ui/src/shared/BaseDialog/BaseDialog.d.ts.map +1 -1
  40. package/lib/esm/react-ui/src/shared/DateTimeAgo/index.d.ts.map +1 -1
  41. package/lib/esm/react-ui/src/shared/Media/Video/PreviewComponent.d.ts.map +1 -1
  42. package/lib/esm/shared/BaseDialog/BaseDialog.js +5 -0
  43. package/lib/esm/shared/DateTimeAgo/index.js +18 -15
  44. package/lib/esm/shared/Media/Link/PreviewComponent.js +2 -1
  45. package/lib/esm/shared/Media/Share/PreviewComponent.js +2 -1
  46. package/lib/esm/shared/Media/Video/PreviewComponent.js +2 -8
  47. package/lib/umd/react-ui.js +21 -21
  48. package/lib/umd/react-ui.js.LICENSE.txt +5 -1
  49. package/lib/umd/react-ui.js.map +1 -1
  50. package/package.json +7 -6
@@ -85,7 +85,7 @@ const Root = (0, _styles.styled)(_Widget.default, {
85
85
  height: 30
86
86
  }
87
87
  }));
88
- const PREFERENCES = [_reactCore.SCPreferences.LOGO_NAVBAR_LOGO, _reactCore.SCPreferences.TEXT_APPLICATION_NAME];
88
+ const PREFERENCES = [_reactCore.SCPreferences.LOGO_NAVBAR_LOGO_MOBILE, _reactCore.SCPreferences.TEXT_APPLICATION_NAME];
89
89
 
90
90
  function Message(props) {
91
91
  // PROPS
@@ -181,7 +181,7 @@ function Message(props) {
181
181
  className: classes.header,
182
182
  avatar: /*#__PURE__*/_react.default.createElement(_material.Avatar, {
183
183
  alt: preferences[_reactCore.SCPreferences.TEXT_APPLICATION_NAME],
184
- src: preferences[_reactCore.SCPreferences.LOGO_NAVBAR_LOGO]
184
+ src: preferences[_reactCore.SCPreferences.LOGO_NAVBAR_LOGO_MOBILE_MOBILE]
185
185
  }),
186
186
  action: template === _types.SCBroadcastMessageTemplateType.DETAIL && /*#__PURE__*/_react.default.createElement(_material.IconButton, {
187
187
  "aria-label": "close",
@@ -111,7 +111,6 @@ function CategoriesFollowed(inProps) {
111
111
  } = props; // STATE
112
112
 
113
113
  const [categories, setCategories] = (0, _react.useState)([]);
114
- const [visibleCategories, setVisibleCategories] = (0, _react.useState)(limit);
115
114
  const [loading, setLoading] = (0, _react.useState)(true);
116
115
  const [hasMore, setHasMore] = (0, _react.useState)(false);
117
116
  const [total, setTotal] = (0, _react.useState)(0);
@@ -129,17 +128,12 @@ function CategoriesFollowed(inProps) {
129
128
  if (scUserContext.user['id'] === userId) {
130
129
  setCategories(categories.filter(c => c.id !== category.id));
131
130
  setTotal(prev => prev - 1);
132
-
133
- if (visibleCategories < limit && total > 1) {
134
- loadCategories(1);
135
- }
131
+ setHasMore(total - 1 > limit);
136
132
  } else {
137
133
  const newCategories = [...categories];
138
134
  const index = newCategories.findIndex(u => u.id === category.id);
139
135
 
140
136
  if (index !== -1) {
141
- console.log(category.followed);
142
-
143
137
  if (category.followed) {
144
138
  newCategories[index].followers_counter = category.followers_counter - 1;
145
139
  newCategories[index].followed = !category.followed;
@@ -167,7 +161,7 @@ function CategoriesFollowed(inProps) {
167
161
  setCategories([...categories, ...data]);
168
162
  setTotal(data.length);
169
163
  setNext(data['next']);
170
- setHasMore(data.length > visibleCategories);
164
+ setHasMore(data.length > limit);
171
165
  setLoading(false);
172
166
  }).catch(error => {
173
167
  setLoading(false);
@@ -176,17 +170,6 @@ function CategoriesFollowed(inProps) {
176
170
  });
177
171
  }
178
172
  }
179
- /**
180
- * Loads more categories when followed list changes
181
- */
182
-
183
-
184
- function loadCategories(n) {
185
- const newIndex = visibleCategories + n;
186
- const newHasMore = newIndex < categories.length - 1;
187
- setVisibleCategories(newIndex);
188
- setHasMore(newHasMore);
189
- }
190
173
  /**
191
174
  * On mount, fetches the list of categories followed
192
175
  */
@@ -209,7 +192,7 @@ function CategoriesFollowed(inProps) {
209
192
  })}`), !total ? /*#__PURE__*/_react.default.createElement(_material.Typography, {
210
193
  className: classes.noResults,
211
194
  variant: "body2"
212
- }, `${intl.formatMessage(messages.noCategories)}`) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.default, null, categories.slice(0, visibleCategories).map(category => /*#__PURE__*/_react.default.createElement(_material.ListItem, {
195
+ }, `${intl.formatMessage(messages.noCategories)}`) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.default, null, categories.slice(0, limit).map(category => /*#__PURE__*/_react.default.createElement(_material.ListItem, {
213
196
  key: category.id
214
197
  }, /*#__PURE__*/_react.default.createElement(_Category.default, _extends({
215
198
  elevation: 0,
@@ -110,10 +110,7 @@ function CategoriesSuggestion(inProps) {
110
110
  function handleOnFollowCategory(category, follow) {
111
111
  setCategories(categories.filter(c => c.id !== category.id));
112
112
  setTotal(prev => prev - 1);
113
-
114
- if (visibleCategories < limit && total > 1) {
115
- loadCategories(1);
116
- }
113
+ setHasMore(total - 1 > limit);
117
114
  }
118
115
  /**
119
116
  * Fetches categories suggestion list
@@ -117,7 +117,7 @@ const Root = (0, _styles.styled)(_material.Box, {
117
117
  [`& .${classes.nestedComments}`]: {
118
118
  paddingTop: 0,
119
119
  paddingBottom: 0,
120
- paddingLeft: 55,
120
+ paddingLeft: 25,
121
121
  '& ul.MuiList-root': {
122
122
  paddingTop: 0,
123
123
  paddingBottom: 0,
@@ -125,6 +125,9 @@ const Root = (0, _styles.styled)(_material.Box, {
125
125
  '& li.MuiListItem-root': {
126
126
  paddingTop: 5
127
127
  }
128
+ },
129
+ [theme.breakpoints.up('sm')]: {
130
+ paddingLeft: 55
128
131
  }
129
132
  },
130
133
  [`& .${classes.content}`]: {
@@ -747,10 +747,12 @@ function Composer(inProps) {
747
747
  value: (0, _apiServices.formatHttpError)(error)
748
748
  });
749
749
  }).then(() => setIsSubmitting(false));
750
- };
751
- /* Renderers */
750
+ }; // RENDER
752
751
 
753
752
 
753
+ const theme = (0, _styles.useTheme)();
754
+ const smDown = (0, _material.useMediaQuery)(theme.breakpoints.down('sm'));
755
+ const fullScreen = (0, _material.useMediaQuery)(theme.breakpoints.down('md'));
754
756
  const hasMediaShare = (0, _react.useMemo)(() => medias.findIndex(m => m.type === _Media.MEDIA_TYPE_SHARE) !== -1, [medias]);
755
757
 
756
758
  const renderMediaAdornment = mediaObjectType => {
@@ -792,7 +794,10 @@ function Composer(inProps) {
792
794
  })), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
793
795
  className: classes.avatar,
794
796
  src: scAuthContext.user.avatar
795
- })), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
797
+ })), /*#__PURE__*/_react.default.createElement(_material.Box, null, smDown ? /*#__PURE__*/_react.default.createElement(_material.IconButton, {
798
+ onClick: handleChangeView(MAIN_VIEW),
799
+ color: "inherit"
800
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "check")) : /*#__PURE__*/_react.default.createElement(_material.Button, {
796
801
  onClick: handleChangeView(MAIN_VIEW),
797
802
  variant: "text",
798
803
  color: "inherit"
@@ -862,7 +867,11 @@ function Composer(inProps) {
862
867
  })), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
863
868
  className: classes.avatar,
864
869
  src: scAuthContext.user.avatar
865
- })), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
870
+ })), /*#__PURE__*/_react.default.createElement(_material.Box, null, smDown ? /*#__PURE__*/_react.default.createElement(_material.IconButton, {
871
+ onClick: handleChangeView(MAIN_VIEW),
872
+ color: "inherit",
873
+ disabled: mediasRef.current.mediaChunks.length > 0
874
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "check")) : /*#__PURE__*/_react.default.createElement(_material.Button, {
866
875
  onClick: handleChangeView(MAIN_VIEW),
867
876
  variant: "text",
868
877
  color: "inherit",
@@ -892,15 +901,23 @@ function Composer(inProps) {
892
901
  size: "small",
893
902
  disabled: !hasPoll()
894
903
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "arrow_back")), /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, {
895
- id: "ui.composer.poll.title",
896
- defaultMessage: "ui.composer.poll.title"
904
+ id: "ui.composer.poll",
905
+ defaultMessage: "ui.composer.poll"
897
906
  })), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
898
907
  className: classes.avatar,
899
908
  src: scAuthContext.user.avatar
900
909
  })), /*#__PURE__*/_react.default.createElement(_material.Stack, {
901
910
  spacing: 2,
902
911
  direction: "row"
903
- }, /*#__PURE__*/_react.default.createElement(_material.Button, {
912
+ }, smDown ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
913
+ onClick: handleChangeView(MAIN_VIEW),
914
+ color: "inherit",
915
+ disabled: !hasPoll()
916
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "check")), /*#__PURE__*/_react.default.createElement(_material.IconButton, {
917
+ onClick: handleChangeView(MAIN_VIEW),
918
+ color: "inherit",
919
+ disabled: !hasPoll()
920
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "delete"))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
904
921
  onClick: handleDeletePoll,
905
922
  variant: "text",
906
923
  color: "inherit"
@@ -915,7 +932,7 @@ function Composer(inProps) {
915
932
  }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, {
916
933
  id: "ui.composer.done",
917
934
  defaultMessage: "ui.composer.done"
918
- })))), /*#__PURE__*/_react.default.createElement(_material.DialogContent, {
935
+ }))))), /*#__PURE__*/_react.default.createElement(_material.DialogContent, {
919
936
  className: classes.content
920
937
  }, /*#__PURE__*/_react.default.createElement(_Poll2.default, {
921
938
  onChange: handleChangePoll,
@@ -938,7 +955,10 @@ function Composer(inProps) {
938
955
  })), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Avatar, {
939
956
  className: classes.avatar,
940
957
  src: scAuthContext.user.avatar
941
- })), /*#__PURE__*/_react.default.createElement(_material.Box, null, /*#__PURE__*/_react.default.createElement(_material.Button, {
958
+ })), /*#__PURE__*/_react.default.createElement(_material.Box, null, smDown ? /*#__PURE__*/_react.default.createElement(_material.IconButton, {
959
+ onClick: handleChangeView(MAIN_VIEW),
960
+ color: "inherit"
961
+ }, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "check")) : /*#__PURE__*/_react.default.createElement(_material.Button, {
942
962
  onClick: handleChangeView(MAIN_VIEW),
943
963
  variant: "text",
944
964
  color: "inherit"
@@ -1062,9 +1082,7 @@ function Composer(inProps) {
1062
1082
  onClick: handleChangeView(POLL_VIEW)
1063
1083
  }, /*#__PURE__*/_react.default.createElement(_material.Badge, {
1064
1084
  className: classes.badgeError,
1065
- badgeContent: pollError ? /*#__PURE__*/_react.default.createElement(_Icon.default, {
1066
- fontSize: "small"
1067
- }, "error_outline") : null,
1085
+ badgeContent: pollError ? ' ' : null,
1068
1086
  color: "error"
1069
1087
  }, /*#__PURE__*/_react.default.createElement(_Icon.default, null, "bar_chart")))), /*#__PURE__*/_react.default.createElement(_material.Typography, {
1070
1088
  align: "right"
@@ -1126,9 +1144,6 @@ function Composer(inProps) {
1126
1144
  }));
1127
1145
  }
1128
1146
 
1129
- const theme = (0, _styles.useTheme)();
1130
- const fullScreen = (0, _material.useMediaQuery)(theme.breakpoints.down('md'));
1131
-
1132
1147
  if (!scAuthContext.user) {
1133
1148
  return null;
1134
1149
  }
@@ -50,6 +50,7 @@ const localeMap = {
50
50
  const PREFIX = 'SCComposerPoll';
51
51
  const classes = {
52
52
  root: `${PREFIX}-root`,
53
+ generalError: `${PREFIX}-generalError`,
53
54
  title: `${PREFIX}-title`,
54
55
  choices: `${PREFIX}-choices`,
55
56
  choiceNew: `${PREFIX}-choice-new`,
@@ -63,6 +64,10 @@ const Root = (0, _styles.styled)(_material.Box, {
63
64
  theme
64
65
  }) => ({
65
66
  padding: theme.spacing(2),
67
+ [`& .${classes.generalError}`]: {
68
+ marginBottom: theme.spacing(2),
69
+ color: theme.palette.error.main
70
+ },
66
71
  [`& .${classes.title}, & .${classes.choices}, & .${classes.choiceNew}, & .${classes.metadata}`]: {
67
72
  marginBottom: theme.spacing(3)
68
73
  },
@@ -118,7 +123,8 @@ var _default = inProps => {
118
123
  onChange
119
124
  } = props;
120
125
  const {
121
- titleError = null
126
+ titleError = null,
127
+ error: generalError = null
122
128
  } = Object.assign({}, error); // STATE
123
129
 
124
130
  const [title, setTitle] = (0, _react.useState)(value !== null ? value.title : DEFAULT_POLL.title);
@@ -186,7 +192,9 @@ var _default = inProps => {
186
192
  return /*#__PURE__*/_react.default.createElement(Root, {
187
193
  id: id,
188
194
  className: (0, _classnames.default)(classes.root, className)
189
- }, /*#__PURE__*/_react.default.createElement(_material.Box, {
195
+ }, generalError && /*#__PURE__*/_react.default.createElement(_material.Typography, {
196
+ className: classes.generalError
197
+ }, generalError), /*#__PURE__*/_react.default.createElement(_material.Box, {
190
198
  className: classes.title
191
199
  }, /*#__PURE__*/_react.default.createElement(_material.TextField, {
192
200
  label: /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, {
@@ -35,6 +35,8 @@ var _pubsubJs = _interopRequireDefault(require("pubsub-js"));
35
35
 
36
36
  var _useThemeProps = _interopRequireDefault(require("@mui/material/styles/useThemeProps"));
37
37
 
38
+ var _url = require("../../utils/url");
39
+
38
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
41
 
40
42
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -110,6 +112,9 @@ const Feed = (inProps, ref) => {
110
112
  id = 'feed',
111
113
  className,
112
114
  endpoint,
115
+ endpointQueryParams = [{
116
+ limit: 5
117
+ }],
113
118
  endMessage = /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, {
114
119
  id: "ui.feed.noOtherFeedObject",
115
120
  defaultMessage: "ui.feed.noOtherFeedObject"
@@ -134,8 +139,8 @@ const Feed = (inProps, ref) => {
134
139
  } = props; // STATE
135
140
 
136
141
  const [feedData, setFeedData] = (0, _react.useState)([]);
137
- const [loading, setLoading] = (0, _react.useState)(true);
138
- const [next, setNext] = (0, _react.useState)(endpoint.url({})); // CONTEXT
142
+ const [loading, setLoading] = (0, _react.useState)(false);
143
+ const [next, setNext] = (0, _react.useState)((0, _url.appendURLSearchParams)(endpoint.url({}), endpointQueryParams)); // CONTEXT
139
144
 
140
145
  const scPreferences = (0, _reactCore.useSCPreferences)();
141
146
  const scUserContext = (0, _react.useContext)(_reactCore.SCUserContext); // CONST
@@ -190,20 +195,22 @@ const Feed = (inProps, ref) => {
190
195
 
191
196
 
192
197
  const fetch = () => {
193
- setLoading(true);
194
-
195
- _apiServices.http.request({
196
- url: next,
197
- method: endpoint.method
198
- }).then(res => {
199
- const data = res.data;
200
- setFeedData([...feedData, ...data.results]);
201
- setNext(data.next);
202
- setLoading(false);
203
- onFetchData && onFetchData(res.data);
204
- }).catch(error => {
205
- _reactCore.Logger.error(_Errors.SCOPE_SC_UI, error);
206
- });
198
+ if (!loading) {
199
+ setLoading(true);
200
+
201
+ _apiServices.http.request({
202
+ url: next,
203
+ method: endpoint.method
204
+ }).then(res => {
205
+ const data = res.data;
206
+ setFeedData([...feedData, ...data.results]);
207
+ setNext(data.next);
208
+ setLoading(false);
209
+ onFetchData && onFetchData(res.data);
210
+ }).catch(error => {
211
+ _reactCore.Logger.error(_Errors.SCOPE_SC_UI, error);
212
+ });
213
+ }
207
214
  };
208
215
 
209
216
  const refresh = () => {
@@ -237,7 +244,7 @@ const Feed = (inProps, ref) => {
237
244
 
238
245
  const theme = (0, _styles.useTheme)();
239
246
  const oneColLayout = (0, _material.useMediaQuery)(theme.breakpoints.down('md'));
240
- const getData = (0, _react.useCallback)(() => {
247
+ const getData = (0, _react.useMemo)(() => () => {
241
248
  const widgetSort = (w1, w2) => w1.position > w2.position ? 1 : -1;
242
249
 
243
250
  const widgetReducer = (value, w) => {
@@ -250,7 +257,7 @@ const Feed = (inProps, ref) => {
250
257
  left: _widgets.map(w => Object.assign({}, w, {
251
258
  position: w.position * (w.column === 'right' ? 5 : 1)
252
259
  })).sort(widgetSort).reduce(widgetReducer, [...feedData, ...(loading ? Array.from({
253
- length: 5
260
+ length: 3
254
261
  }).map(() => ({
255
262
  type: 'widget',
256
263
  component: ItemSkeleton,
@@ -261,7 +268,7 @@ const Feed = (inProps, ref) => {
261
268
  } else {
262
269
  return {
263
270
  left: _widgets.filter(w => w.column === 'left').sort(widgetSort).reduce(widgetReducer, [...feedData, ...(loading ? Array.from({
264
- length: 5
271
+ length: 3
265
272
  }).map(() => ({
266
273
  type: 'widget',
267
274
  component: ItemSkeleton,
@@ -281,14 +288,12 @@ const Feed = (inProps, ref) => {
281
288
  item: true,
282
289
  xs: 12,
283
290
  md: 7
284
- }, /*#__PURE__*/_react.default.createElement(_react.default.Suspense, {
285
- fallback: /*#__PURE__*/_react.default.createElement(ItemSkeleton, ItemSkeletonProps)
286
291
  }, /*#__PURE__*/_react.default.createElement(_reactInfiniteScrollComponent.default, {
287
292
  className: classes.left,
288
293
  dataLength: data.left.length,
289
294
  next: fetch,
290
295
  hasMore: Boolean(next),
291
- loader: false,
296
+ loader: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null),
292
297
  endMessage: /*#__PURE__*/_react.default.createElement(_Widget.default, {
293
298
  className: classes.end
294
299
  }, /*#__PURE__*/_react.default.createElement(_material.CardContent, null, endMessage)),
@@ -313,7 +318,7 @@ const Feed = (inProps, ref) => {
313
318
  sx: {
314
319
  width: '100%'
315
320
  }
316
- })))))), data.right.length > 0 && /*#__PURE__*/_react.default.createElement(_material.Hidden, {
321
+ }))))), data.right.length > 0 && /*#__PURE__*/_react.default.createElement(_material.Hidden, {
317
322
  smDown: true
318
323
  }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
319
324
  item: true,
@@ -401,106 +401,96 @@ function FeedObject(inProps) {
401
401
  */
402
402
 
403
403
 
404
- function handleRestore() {
404
+ const handleRestore = (0, _react.useCallback)(() => {
405
405
  setObj(prev => Object.assign({}, prev, {
406
406
  deleted: false
407
407
  }));
408
- }
408
+ }, [obj]);
409
409
  /**
410
410
  * Handle restore obj
411
411
  */
412
412
 
413
-
414
- function handleHide() {
413
+ const handleHide = (0, _react.useCallback)(() => {
415
414
  setObj(prev => Object.assign({}, prev, {
416
415
  collapsed: !prev.collapsed
417
416
  }));
418
- }
417
+ }, [obj]);
419
418
  /**
420
419
  * Handle delete obj
421
420
  */
422
421
 
423
-
424
- function handleDelete() {
422
+ const handleDelete = (0, _react.useCallback)(() => {
425
423
  setObj(prev => Object.assign({}, prev, {
426
424
  deleted: !prev.deleted
427
425
  }));
428
- }
426
+ }, [obj]);
429
427
  /**
430
428
  * Handle suspend notification obj
431
429
  */
432
430
 
433
-
434
- function handleSuspendNotification() {
431
+ const handleSuspendNotification = (0, _react.useCallback)(() => {
435
432
  setObj(prev => Object.assign({}, prev, {
436
433
  suspended: !prev.suspended
437
434
  }));
438
- }
435
+ }, [obj]);
439
436
  /**
440
437
  * Handle initial edit
441
438
  * Open composer
442
439
  */
443
440
 
444
-
445
- function handleToggleEdit() {
441
+ const handleToggleEdit = (0, _react.useCallback)(() => {
446
442
  setComposerOpen(prev => !prev);
447
- }
443
+ }, [composerOpen]);
448
444
  /**
449
445
  * handle edit success
450
446
  */
451
447
 
452
-
453
- function handleEditSuccess(data) {
448
+ const handleEditSuccess = (0, _react.useCallback)(data => {
454
449
  setObj(data);
455
450
  setComposerOpen(false);
456
- }
451
+ }, [obj, composerOpen]);
457
452
  /**
458
453
  * Expand activities if the user is logged
459
454
  */
460
455
 
461
-
462
- function handleExpandActivities() {
456
+ const handleExpandActivities = (0, _react.useCallback)(() => {
463
457
  if (scUserContext.user) {
464
458
  setExpandedActivities(prev => !prev);
465
459
  } else {
466
460
  scContext.settings.handleAnonymousAction();
467
461
  }
468
- }
462
+ }, [scUserContext.user]);
469
463
  /**
470
464
  * Handle follow obj
471
465
  */
472
466
 
473
-
474
- function handleFollow(isFollow) {
467
+ const handleFollow = (0, _react.useCallback)(isFollow => {
475
468
  setObj(prev => Object.assign({}, prev, {
476
469
  followed: isFollow
477
470
  }));
478
- }
471
+ }, [obj]);
479
472
  /**
480
473
  * Handle delete comment callback
481
474
  */
482
475
 
483
-
484
- function handleDeleteComment() {
476
+ const handleDeleteComment = (0, _react.useCallback)(() => {
485
477
  setObj(prev => Object.assign({}, prev, {
486
478
  comment_count: Math.max(prev.comment_count - 1, 0)
487
479
  }));
488
- }
480
+ }, [obj]);
489
481
  /**
490
482
  * Handle select activities
491
483
  */
492
484
 
493
-
494
- function handleSelectedActivities(type) {
485
+ const handleSelectedActivities = (0, _react.useCallback)(type => {
495
486
  setSelectedActivities(type);
496
487
  setComments([]);
497
- }
488
+ }, [obj]);
498
489
  /**
499
490
  * Perform reply
500
491
  * Comment of first level
501
492
  */
502
493
 
503
-
504
494
  const performReply = (0, _react.useMemo)(() => comment => {
505
495
  return _apiServices.http.request({
506
496
  url: _apiServices.Endpoints.NewComment.url({}),
@@ -775,7 +765,7 @@ function FeedObject(inProps) {
775
765
  className: classes.mediasSection
776
766
  }, /*#__PURE__*/_react.default.createElement(_MediasPreview.default, _extends({
777
767
  medias: obj.medias
778
- }, PollObjectProps))), /*#__PURE__*/_react.default.createElement(_material.Box, {
768
+ }, MediasPreviewProps))), /*#__PURE__*/_react.default.createElement(_material.Box, {
779
769
  className: classes.pollsSection
780
770
  }, obj['poll'] && /*#__PURE__*/_react.default.createElement(_Poll.default, _extends({
781
771
  feedObject: obj,
@@ -121,10 +121,7 @@ function PeopleSuggestion(inProps) {
121
121
  function handleOnFollowUser(user, follow) {
122
122
  setUsers(users.filter(u => u.id !== user.id));
123
123
  setTotal(prev => prev - 1);
124
-
125
- if (visiblePeople < limit && total > 1) {
126
- loadPeople(1);
127
- }
124
+ setHasMore(total - 1 > limit);
128
125
  }
129
126
  /**
130
127
  * Handles list change on user connection
@@ -134,10 +131,7 @@ function PeopleSuggestion(inProps) {
134
131
  function handleOnConnectUser(user, status) {
135
132
  setUsers(users.filter(u => u.id !== user.id));
136
133
  setTotal(prev => prev - 1);
137
-
138
- if (visiblePeople < limit && total > 1) {
139
- loadPeople(1);
140
- }
134
+ setHasMore(total - 1 > limit);
141
135
  }
142
136
  /**
143
137
  * Fetches user suggestion list
@@ -123,7 +123,6 @@ function UsersFollowed(inProps) {
123
123
  } = props; // STATE
124
124
 
125
125
  const [followed, setFollowed] = (0, _react.useState)([]);
126
- const [visibleUsers, setVisibleUsers] = (0, _react.useState)(limit);
127
126
  const [loading, setLoading] = (0, _react.useState)(true);
128
127
  const [hasMore, setHasMore] = (0, _react.useState)(false);
129
128
  const [total, setTotal] = (0, _react.useState)(0);
@@ -139,10 +138,7 @@ function UsersFollowed(inProps) {
139
138
  if (scUserContext.user['id'] === userId) {
140
139
  setFollowed(followed.filter(u => u.id !== user.id));
141
140
  setTotal(prev => prev - 1);
142
-
143
- if (visibleUsers < limit && total > 1) {
144
- loadUsers(1);
145
- }
141
+ setHasMore(total - 1 > limit);
146
142
  } else {
147
143
  const newUsers = [...followed];
148
144
  const index = newUsers.findIndex(u => u.id === user.id);
@@ -173,7 +169,7 @@ function UsersFollowed(inProps) {
173
169
  }).then(res => {
174
170
  const data = res.data;
175
171
  setFollowed([...followed, ...data.results]);
176
- setHasMore(data.count > visibleUsers);
172
+ setHasMore(data.count > limit);
177
173
  setNext(data['next']);
178
174
  setLoading(false);
179
175
  setTotal(data.count);
@@ -184,17 +180,6 @@ function UsersFollowed(inProps) {
184
180
  });
185
181
  }
186
182
  }
187
- /**
188
- * Loads more users when followed list changes
189
- */
190
-
191
-
192
- function loadUsers(n) {
193
- const newIndex = visibleUsers + n;
194
- const newHasMore = newIndex < followed.length - 1;
195
- setVisibleUsers(newIndex);
196
- setHasMore(newHasMore);
197
- }
198
183
  /**
199
184
  * On mount, fetches the list of users followed
200
185
  */
@@ -221,7 +206,7 @@ function UsersFollowed(inProps) {
221
206
  })}`), !total ? /*#__PURE__*/_react.default.createElement(_material.Typography, {
222
207
  className: classes.noResults,
223
208
  variant: "body2"
224
- }, `${intl.formatMessage(messages.noUsers)}`) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.default, null, followed.slice(0, visibleUsers).map(user => /*#__PURE__*/_react.default.createElement(_material.ListItem, {
209
+ }, `${intl.formatMessage(messages.noUsers)}`) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_List.default, null, followed.slice(0, limit).map(user => /*#__PURE__*/_react.default.createElement(_material.ListItem, {
225
210
  key: user.id
226
211
  }, /*#__PURE__*/_react.default.createElement(_User.default, _extends({
227
212
  elevation: 0,
@@ -43,6 +43,11 @@ const Root = (0, _styles.styled)(_Dialog.default, {
43
43
  [theme.breakpoints.down(500)]: {
44
44
  minWidth: 300
45
45
  },
46
+ [theme.breakpoints.only('xs')]: {
47
+ '& .MuiDialogContent-root': {
48
+ padding: 0
49
+ }
50
+ },
46
51
  minWidth: 500
47
52
  }));
48
53