@selfcommunity/react-ui 0.7.50-events.38 → 0.7.50-events.39

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 (60) hide show
  1. package/lib/cjs/components/CreateEventButton/CreateEventButton.js +1 -1
  2. package/lib/cjs/components/EditEventButton/EditEventButton.d.ts +43 -0
  3. package/lib/cjs/components/EditEventButton/EditEventButton.js +61 -0
  4. package/lib/cjs/components/EditEventButton/index.d.ts +3 -0
  5. package/lib/cjs/components/EditEventButton/index.js +5 -0
  6. package/lib/cjs/components/EventForm/EventAddress.d.ts +2 -1
  7. package/lib/cjs/components/EventForm/EventAddress.js +4 -4
  8. package/lib/cjs/components/EventForm/EventForm.d.ts +6 -0
  9. package/lib/cjs/components/EventForm/EventForm.js +51 -25
  10. package/lib/cjs/components/EventForm/UploadEventCover.d.ts +10 -0
  11. package/lib/cjs/components/EventForm/UploadEventCover.js +34 -7
  12. package/lib/cjs/components/EventHeader/EventHeader.d.ts +67 -0
  13. package/lib/cjs/components/EventHeader/EventHeader.js +175 -0
  14. package/lib/cjs/components/EventHeader/Skeleton.d.ts +25 -0
  15. package/lib/cjs/components/EventHeader/Skeleton.js +56 -0
  16. package/lib/cjs/components/EventHeader/constants.d.ts +1 -0
  17. package/lib/cjs/components/EventHeader/constants.js +4 -0
  18. package/lib/cjs/components/EventHeader/index.d.ts +4 -0
  19. package/lib/cjs/components/EventHeader/index.js +8 -0
  20. package/lib/cjs/components/EventLocationWidget/EventLocationWidget.js +1 -0
  21. package/lib/cjs/components/EventSubscribeButton/EventSubscribeButton.d.ts +56 -0
  22. package/lib/cjs/components/EventSubscribeButton/EventSubscribeButton.js +193 -0
  23. package/lib/cjs/components/EventSubscribeButton/index.d.ts +3 -0
  24. package/lib/cjs/components/EventSubscribeButton/index.js +5 -0
  25. package/lib/cjs/components/Events/Events.js +3 -2
  26. package/lib/cjs/components/FeedObject/FeedObject.js +1 -1
  27. package/lib/cjs/constants/PubSub.d.ts +5 -1
  28. package/lib/cjs/index.d.ts +4 -1
  29. package/lib/cjs/index.js +9 -2
  30. package/lib/esm/components/CreateEventButton/CreateEventButton.js +1 -1
  31. package/lib/esm/components/EditEventButton/EditEventButton.d.ts +43 -0
  32. package/lib/esm/components/EditEventButton/EditEventButton.js +58 -0
  33. package/lib/esm/components/EditEventButton/index.d.ts +3 -0
  34. package/lib/esm/components/EditEventButton/index.js +2 -0
  35. package/lib/esm/components/EventForm/EventAddress.d.ts +2 -1
  36. package/lib/esm/components/EventForm/EventAddress.js +4 -4
  37. package/lib/esm/components/EventForm/EventForm.d.ts +6 -0
  38. package/lib/esm/components/EventForm/EventForm.js +51 -25
  39. package/lib/esm/components/EventForm/UploadEventCover.d.ts +10 -0
  40. package/lib/esm/components/EventForm/UploadEventCover.js +34 -7
  41. package/lib/esm/components/EventHeader/EventHeader.d.ts +67 -0
  42. package/lib/esm/components/EventHeader/EventHeader.js +172 -0
  43. package/lib/esm/components/EventHeader/Skeleton.d.ts +25 -0
  44. package/lib/esm/components/EventHeader/Skeleton.js +53 -0
  45. package/lib/esm/components/EventHeader/constants.d.ts +1 -0
  46. package/lib/esm/components/EventHeader/constants.js +1 -0
  47. package/lib/esm/components/EventHeader/index.d.ts +4 -0
  48. package/lib/esm/components/EventHeader/index.js +4 -0
  49. package/lib/esm/components/EventLocationWidget/EventLocationWidget.js +1 -0
  50. package/lib/esm/components/EventSubscribeButton/EventSubscribeButton.d.ts +56 -0
  51. package/lib/esm/components/EventSubscribeButton/EventSubscribeButton.js +190 -0
  52. package/lib/esm/components/EventSubscribeButton/index.d.ts +3 -0
  53. package/lib/esm/components/EventSubscribeButton/index.js +2 -0
  54. package/lib/esm/components/Events/Events.js +3 -2
  55. package/lib/esm/components/FeedObject/FeedObject.js +1 -1
  56. package/lib/esm/constants/PubSub.d.ts +5 -1
  57. package/lib/esm/index.d.ts +4 -1
  58. package/lib/esm/index.js +5 -2
  59. package/lib/umd/react-ui.js +1 -1
  60. package/package.json +7 -7
@@ -0,0 +1,172 @@
1
+ import { __rest } from "tslib";
2
+ import React, { useCallback, useEffect, useMemo, useRef } from 'react';
3
+ import { styled } from '@mui/material/styles';
4
+ import { Box, Icon, Paper, Typography } from '@mui/material';
5
+ import { SCEventLocationType, SCEventPrivacyType } from '@selfcommunity/types';
6
+ import { SCPreferences, useSCFetchEvent, useSCPreferences, useSCUser } from '@selfcommunity/react-core';
7
+ import EventHeaderSkeleton from './Skeleton';
8
+ import classNames from 'classnames';
9
+ import { useThemeProps } from '@mui/system';
10
+ import { PREFIX } from './constants';
11
+ import { FormattedMessage, useIntl } from 'react-intl';
12
+ import Bullet from '../../shared/Bullet';
13
+ import EventSubscribeButton from '../EventSubscribeButton';
14
+ import EventInviteButton from '../EventInviteButton';
15
+ import { SCGroupEventType, SCTopicType } from '../../constants/PubSub';
16
+ import PubSub from 'pubsub-js';
17
+ import EditEventButton from '../EditEventButton';
18
+ import User from '../User';
19
+ import Calendar from '../../shared/Calendar';
20
+ const classes = {
21
+ root: `${PREFIX}-root`,
22
+ cover: `${PREFIX}-cover`,
23
+ time: `${PREFIX}-time`,
24
+ calendar: `${PREFIX}-calendar`,
25
+ info: `${PREFIX}-info`,
26
+ name: `${PREFIX}-name`,
27
+ visibility: `${PREFIX}-visibility`,
28
+ visibilityItem: `${PREFIX}-visibility-item`,
29
+ multiActions: `${PREFIX}-multi-actions`
30
+ };
31
+ const Root = styled(Box, {
32
+ name: PREFIX,
33
+ slot: 'Root'
34
+ })(() => ({}));
35
+ /**
36
+ * > API documentation for the Community-JS Event Header component. Learn about the available props and the CSS API.
37
+ *
38
+ *
39
+ * This component renders the events top section.
40
+
41
+ #### Import
42
+
43
+ ```jsx
44
+ import {UserProfileHeader} from '@selfcommunity/react-ui';
45
+ ```
46
+
47
+ #### Component Name
48
+
49
+ The name `SCEventHeader` can be used when providing style overrides in the theme.
50
+
51
+
52
+ #### CSS
53
+
54
+ |Rule Name|Global class|Description|
55
+ |---|---|---|
56
+ |root|.SCEventHeader-root|Styles applied to the root element.|
57
+ |cover|.SCEventHeader-cover|Styles applied to the cover element.|
58
+ |time|.SCEventHeader-time|Styles applied to the time element.|
59
+ |calendar|.SCEventHeader-calendar|Styles applied to the calendar element.|
60
+ |info|SCEventHeader-info|Styles applied to the info section.|
61
+ |name|SCEventHeader-username|Styles applied to the username element.|
62
+ |visibility|SCEventHeader-visibility|Styles applied to the visibility section.|
63
+ |visibilityItem|SCEventHeader-visibility-item|Styles applied to the visibility element.|
64
+ |multiActions|SCEventHeader-multi-action|Styles applied to the multi actions section.|
65
+
66
+ * @param inProps
67
+ */
68
+ export default function EventHeader(inProps) {
69
+ var _a, _b;
70
+ // PROPS
71
+ const props = useThemeProps({
72
+ props: inProps,
73
+ name: PREFIX
74
+ });
75
+ const { id = null, className = null, event, eventId = null, EventSubscribeButtonProps = {} } = props, rest = __rest(props, ["id", "className", "event", "eventId", "EventSubscribeButtonProps"]);
76
+ // PREFERENCES
77
+ const scPreferences = useSCPreferences();
78
+ // CONTEXT
79
+ const scUserContext = useSCUser();
80
+ // HOOKS
81
+ const { scEvent, setSCEvent } = useSCFetchEvent({ id: eventId, event });
82
+ // INTL
83
+ const intl = useIntl();
84
+ // REFS
85
+ const updatesSubscription = useRef(null);
86
+ // CONST
87
+ const isEventAdmin = useMemo(() => { var _a; return scUserContext.user && ((_a = scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by) === null || _a === void 0 ? void 0 : _a.id) === scUserContext.user.id; }, [scUserContext.user, (_a = scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by) === null || _a === void 0 ? void 0 : _a.id]);
88
+ /**
89
+ * Subscriber for pubsub callback
90
+ */
91
+ const onChangeEventMembersHandler = useCallback((msg, data) => {
92
+ var _a;
93
+ if (data && ((_a = data === null || data === void 0 ? void 0 : data.event) === null || _a === void 0 ? void 0 : _a.id) === (scEvent === null || scEvent === void 0 ? void 0 : scEvent.id)) {
94
+ let _event = Object.assign({}, scEvent);
95
+ if (msg === `${SCTopicType.GROUP}.${SCGroupEventType.ADD_MEMBER}`) {
96
+ _event.subscribers_counter = _event.subscribers_counter + 1;
97
+ }
98
+ else if (msg === `${SCTopicType.GROUP}.${SCGroupEventType.REMOVE_MEMBER}`) {
99
+ _event.subscribers_counter = Math.max(_event.subscribers_counter - 1, 0);
100
+ }
101
+ setSCEvent(_event);
102
+ }
103
+ }, [scEvent, setSCEvent]);
104
+ /**
105
+ * On mount, subscribe to receive events updates (only edit)
106
+ */
107
+ useEffect(() => {
108
+ if (scEvent) {
109
+ updatesSubscription.current = PubSub.subscribe(`${SCTopicType.EVENT}.${SCGroupEventType.MEMBERS}`, onChangeEventMembersHandler);
110
+ }
111
+ return () => {
112
+ updatesSubscription.current && PubSub.unsubscribe(updatesSubscription.current);
113
+ };
114
+ }, [scEvent]);
115
+ // RENDER
116
+ if (!scEvent) {
117
+ return React.createElement(EventHeaderSkeleton, null);
118
+ }
119
+ const _backgroundCover = Object.assign({}, (scEvent.image_bigger
120
+ ? { background: `url('${scEvent.image_bigger}') center / cover` }
121
+ : { background: `url('${scPreferences.preferences[SCPreferences.IMAGES_USER_DEFAULT_COVER].value}') center / cover` }));
122
+ return (React.createElement(Root, Object.assign({ id: id, className: classNames(classes.root, className) }, rest),
123
+ React.createElement(Paper, { style: _backgroundCover, classes: { root: classes.cover } },
124
+ React.createElement(Box, { className: classes.calendar },
125
+ React.createElement(Calendar, { day: new Date(scEvent.start_date).getDate() }))),
126
+ React.createElement(Box, { className: classes.info },
127
+ React.createElement(Typography, { className: classes.time }, scEvent.end_date && scEvent.end_date !== scEvent.start_date ? (new Date(scEvent.start_date).getDate() !== new Date(scEvent.end_date).getDate() ? (React.createElement(FormattedMessage, { id: "ui.eventHeader.startEndTimeDiff", defaultMessage: "ui.eventHeader.startEndTimeDiff", values: {
128
+ startDate: intl.formatDate(scEvent.start_date, {
129
+ weekday: 'long',
130
+ day: 'numeric',
131
+ year: 'numeric',
132
+ month: 'long'
133
+ }),
134
+ endDate: intl.formatDate(scEvent.end_date, {
135
+ weekday: 'long',
136
+ day: 'numeric',
137
+ year: 'numeric',
138
+ month: 'long'
139
+ }),
140
+ startTime: intl.formatDate(scEvent.start_date, { hour: 'numeric', minute: 'numeric' }),
141
+ endTime: intl.formatDate(scEvent.end_date, { hour: 'numeric', minute: 'numeric' })
142
+ } })) : (React.createElement(FormattedMessage, { id: "ui.eventHeader.startEndTime", defaultMessage: "ui.eventHeader.startEndTime", values: {
143
+ date: intl.formatDate(scEvent.start_date, {
144
+ weekday: 'long',
145
+ day: 'numeric',
146
+ year: 'numeric',
147
+ month: 'long'
148
+ }),
149
+ start: intl.formatDate(scEvent.start_date, { hour: 'numeric', minute: 'numeric' }),
150
+ end: intl.formatDate(scEvent.end_date, { hour: 'numeric', minute: 'numeric' })
151
+ } }))) : (React.createElement(FormattedMessage, { id: "ui.eventHeader.dateTime", defaultMessage: "ui.eventHeader.dateTime", values: {
152
+ date: intl.formatDate(scEvent.start_date, {
153
+ weekday: 'long',
154
+ day: 'numeric',
155
+ year: 'numeric',
156
+ month: 'long'
157
+ }),
158
+ hour: intl.formatDate(scEvent.start_date, { hour: 'numeric', minute: 'numeric' })
159
+ } }))),
160
+ React.createElement(Typography, { variant: "h5", className: classes.name }, scEvent.name),
161
+ React.createElement(Box, { className: classes.visibility },
162
+ React.createElement(React.Fragment, null, scEvent.privacy === SCEventPrivacyType.PUBLIC ? (React.createElement(Typography, { className: classes.visibilityItem },
163
+ React.createElement(Icon, null, "public"),
164
+ React.createElement(FormattedMessage, { id: "ui.eventHeader.visibility.public", defaultMessage: "ui.eventHeader.visibility.public" }))) : (React.createElement(Typography, { className: classes.visibilityItem },
165
+ React.createElement(Icon, null, "private"),
166
+ React.createElement(FormattedMessage, { id: "ui.eventHeader.visibility.private", defaultMessage: "ui.eventHeader.visibility.private" })))),
167
+ React.createElement(Bullet, null),
168
+ React.createElement(Typography, { className: classes.visibilityItem }, scEvent.location === SCEventLocationType.PERSON ? (React.createElement(FormattedMessage, { id: "ui.eventHeader.location.live", defaultMessage: "ui.eventHeader.location.live" })) : (React.createElement(FormattedMessage, { id: "ui.eventHeader.location.live", defaultMessage: "ui.eventHeader.location.online" })))),
169
+ React.createElement(User, { userId: (_b = scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by) === null || _b === void 0 ? void 0 : _b.id, elevation: 0, actions: React.createElement(React.Fragment, null, isEventAdmin ? (React.createElement(Box, { className: classes.multiActions },
170
+ React.createElement(EventInviteButton, { size: "small", event: scEvent, eventId: scEvent.id }),
171
+ React.createElement(EditEventButton, { size: "small", event: scEvent, eventId: scEvent.id, onEditSuccess: (data) => setSCEvent(data) }))) : (React.createElement(EventSubscribeButton, Object.assign({ event: scEvent }, EventSubscribeButtonProps)))) }))));
172
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * > API documentation for the Community-JS Event Header Skeleton component. Learn about the available props and the CSS API.
3
+
4
+ #### Import
5
+
6
+ ```jsx
7
+ import {EventHeaderSkeleton} from '@selfcommunity/react-ui';
8
+ ```
9
+
10
+ #### Component Name
11
+
12
+ The name `SCEventHeader-skeleton-root` can be used when providing style overrides in the theme.
13
+
14
+ #### CSS
15
+
16
+ |Rule Name|Global class|Description|
17
+ |---|---|---|
18
+ |root|.SCEventHeader-skeleton-root|Styles applied to the root element.|
19
+ |avatar|.SCEventHeader-avatar|Styles applied to the avatar element.|
20
+ |cover|.SCEventHeader-cover|Styles applied to the cover element.|
21
+ |info|.SCEventHeader-info|Styles applied to the info info.|
22
+ *
23
+ */
24
+ declare function EventHeaderSkeleton(): JSX.Element;
25
+ export default EventHeaderSkeleton;
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { Box, Typography, useTheme } from '@mui/material';
3
+ import { styled } from '@mui/material/styles';
4
+ import Skeleton from '@mui/material/Skeleton';
5
+ import { PREFIX } from './constants';
6
+ const classes = {
7
+ root: `${PREFIX}-skeleton-root`,
8
+ cover: `${PREFIX}-cover`,
9
+ avatar: `${PREFIX}-avatar`,
10
+ info: `${PREFIX}-info`
11
+ };
12
+ const Root = styled(Box, {
13
+ name: PREFIX,
14
+ slot: 'SkeletonRoot'
15
+ })(() => ({}));
16
+ /**
17
+ * > API documentation for the Community-JS Event Header Skeleton component. Learn about the available props and the CSS API.
18
+
19
+ #### Import
20
+
21
+ ```jsx
22
+ import {EventHeaderSkeleton} from '@selfcommunity/react-ui';
23
+ ```
24
+
25
+ #### Component Name
26
+
27
+ The name `SCEventHeader-skeleton-root` can be used when providing style overrides in the theme.
28
+
29
+ #### CSS
30
+
31
+ |Rule Name|Global class|Description|
32
+ |---|---|---|
33
+ |root|.SCEventHeader-skeleton-root|Styles applied to the root element.|
34
+ |avatar|.SCEventHeader-avatar|Styles applied to the avatar element.|
35
+ |cover|.SCEventHeader-cover|Styles applied to the cover element.|
36
+ |info|.SCEventHeader-info|Styles applied to the info info.|
37
+ *
38
+ */
39
+ function EventHeaderSkeleton() {
40
+ const theme = useTheme();
41
+ return (React.createElement(Root, { className: classes.root },
42
+ React.createElement(Skeleton, { className: classes.cover, animation: "wave", variant: "rectangular" }),
43
+ React.createElement(Box, { className: classes.avatar },
44
+ React.createElement(Skeleton, { animation: "wave", variant: "rectangular", width: theme.selfcommunity.group.avatar.sizeLarge, height: theme.selfcommunity.group.avatar.sizeLarge })),
45
+ React.createElement(Box, { className: classes.info },
46
+ React.createElement(Typography, { variant: "h5", mb: 1 },
47
+ React.createElement(Skeleton, { animation: "wave", variant: "rectangular", sx: { height: 20, width: '50%' } })),
48
+ React.createElement(Typography, { mb: 1 },
49
+ React.createElement(Skeleton, { animation: "wave", variant: "rectangular", sx: { height: 30, width: '30%' } })),
50
+ React.createElement(Typography, null,
51
+ React.createElement(Skeleton, { animation: "wave", variant: "rectangular", sx: { height: 15, width: '20%' } })))));
52
+ }
53
+ export default EventHeaderSkeleton;
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCEventHeader";
@@ -0,0 +1 @@
1
+ export const PREFIX = 'SCEventHeader';
@@ -0,0 +1,4 @@
1
+ import EventHeader, { EventHeaderProps } from './EventHeader';
2
+ import EventHeaderSkeleton from './Skeleton';
3
+ export default EventHeader;
4
+ export { EventHeaderProps, EventHeaderSkeleton };
@@ -0,0 +1,4 @@
1
+ import EventHeader from './EventHeader';
2
+ import EventHeaderSkeleton from './Skeleton';
3
+ export default EventHeader;
4
+ export { EventHeaderSkeleton };
@@ -76,6 +76,7 @@ export default function EventLocationWidget(inProps) {
76
76
  /**
77
77
  * Loading event
78
78
  */
79
+ console.log(isLoaded, scEvent);
79
80
  if (!isLoaded || !scEvent) {
80
81
  return React.createElement(EventLocationWidgetSkeleton, null);
81
82
  }
@@ -0,0 +1,56 @@
1
+ import { SCEventType, SCUserType } from '@selfcommunity/types';
2
+ export interface EventSubscribeButtonProps {
3
+ /**
4
+ * Overrides or extends the styles applied to the component.
5
+ * @default null
6
+ */
7
+ className?: string;
8
+ /**
9
+ * Event Object
10
+ * @default null
11
+ */
12
+ event?: SCEventType;
13
+ /**
14
+ * Id of the event
15
+ * @default null
16
+ */
17
+ eventId?: number;
18
+ /**
19
+ * The user to be accepted into the event
20
+ * @default null
21
+ */
22
+ user?: SCUserType;
23
+ /**
24
+ * onSubscribe callback
25
+ * @param user
26
+ * @param joined
27
+ */
28
+ onSubscribe?: (event: SCEventType, status: string | null) => any;
29
+ /**
30
+ * Others properties
31
+ */
32
+ [p: string]: any;
33
+ }
34
+ /**
35
+ * > API documentation for the Community-JS Event Subscribe Button component. Learn about the available props and the CSS API.
36
+
37
+ #### Import
38
+
39
+ ```jsx
40
+ import {EventSubscribeButton} from '@selfcommunity/react-ui';
41
+ ```
42
+
43
+ #### Component Name
44
+
45
+ The name `SCEventSubscribeButton` can be used when providing style overrides in the theme.
46
+
47
+
48
+ #### CSS
49
+
50
+ |Rule Name|Global class|Description|
51
+ |---|---|---|
52
+ |root|.SCEventSubscribeButton-root|Styles applied to the root element.|
53
+
54
+ * @param inProps
55
+ */
56
+ export default function EventSubscribeButton(inProps: EventSubscribeButtonProps): JSX.Element;
@@ -0,0 +1,190 @@
1
+ import { __rest } from "tslib";
2
+ import React, { useEffect, useMemo, useState } from 'react';
3
+ import { styled } from '@mui/material/styles';
4
+ import { CacheStrategies, Logger } from '@selfcommunity/utils';
5
+ import { useSCContext, useSCFetchEvent, useSCUser } from '@selfcommunity/react-core';
6
+ import { SCEventPrivacyType, SCEventSubscriptionStatusType } from '@selfcommunity/types';
7
+ import { FormattedMessage } from 'react-intl';
8
+ import classNames from 'classnames';
9
+ import { useThemeProps } from '@mui/system';
10
+ import { SCOPE_SC_UI } from '../../constants/Errors';
11
+ import { Box, Button, Checkbox, Icon, Menu, MenuItem, SwipeableDrawer, useMediaQuery, useTheme } from '@mui/material';
12
+ import { LoadingButton } from '@mui/lab';
13
+ const PREFIX = 'SCEventSubscribeButton';
14
+ const classes = {
15
+ requestRoot: `${PREFIX}-request-root`,
16
+ selectRoot: `${PREFIX}-select-root`,
17
+ drawerRoot: `${PREFIX}-drawer-root`,
18
+ menuRoot: `${PREFIX}-menu-root`,
19
+ paper: `${PREFIX}-paper`,
20
+ item: `${PREFIX}-item`,
21
+ going: `${PREFIX}-going`,
22
+ notGoing: `${PREFIX}-not-going`
23
+ };
24
+ const options = [
25
+ {
26
+ value: SCEventSubscriptionStatusType.GOING,
27
+ label: React.createElement(FormattedMessage, { id: "ui.eventSubscribeButton.going", defaultMessage: "ui.eventSubscribeButton.going" })
28
+ },
29
+ {
30
+ value: SCEventSubscriptionStatusType.NOT_GOING,
31
+ label: React.createElement(FormattedMessage, { id: "ui.eventSubscribeButton.notGoing", defaultMessage: "ui.eventSubscribeButton.notGoing" })
32
+ }
33
+ ];
34
+ const RequestRoot = styled(LoadingButton, {
35
+ name: PREFIX,
36
+ slot: 'RequestRoot'
37
+ })(() => ({}));
38
+ const SelectRoot = styled(Button, {
39
+ name: PREFIX,
40
+ slot: 'SelectRoot'
41
+ })(() => ({}));
42
+ const SwipeableDrawerRoot = styled(SwipeableDrawer, {
43
+ name: PREFIX,
44
+ slot: 'DrawerRoot'
45
+ })(() => ({}));
46
+ const MenuRoot = styled(Menu, {
47
+ name: PREFIX,
48
+ slot: 'MenuRoot'
49
+ })(() => ({}));
50
+ /**
51
+ * > API documentation for the Community-JS Event Subscribe Button component. Learn about the available props and the CSS API.
52
+
53
+ #### Import
54
+
55
+ ```jsx
56
+ import {EventSubscribeButton} from '@selfcommunity/react-ui';
57
+ ```
58
+
59
+ #### Component Name
60
+
61
+ The name `SCEventSubscribeButton` can be used when providing style overrides in the theme.
62
+
63
+
64
+ #### CSS
65
+
66
+ |Rule Name|Global class|Description|
67
+ |---|---|---|
68
+ |root|.SCEventSubscribeButton-root|Styles applied to the root element.|
69
+
70
+ * @param inProps
71
+ */
72
+ export default function EventSubscribeButton(inProps) {
73
+ var _a;
74
+ // PROPS
75
+ const props = useThemeProps({
76
+ props: inProps,
77
+ name: PREFIX
78
+ });
79
+ const { className, eventId, event, user, onSubscribe } = props, rest = __rest(props, ["className", "eventId", "event", "user", "onSubscribe"]);
80
+ // STATE
81
+ const [status, setStatus] = useState(null);
82
+ const [anchorEl, setAnchorEl] = React.useState(null);
83
+ const open = Boolean(anchorEl);
84
+ // CONTEXT
85
+ const scContext = useSCContext();
86
+ const scUserContext = useSCUser();
87
+ const scEventsManager = scUserContext.managers.events;
88
+ const theme = useTheme();
89
+ const isMobile = useMediaQuery(theme.breakpoints.down('md'));
90
+ // CONST
91
+ const authUserId = scUserContext.user ? scUserContext.user.id : null;
92
+ const { scEvent } = useSCFetchEvent({
93
+ id: eventId,
94
+ event,
95
+ cacheStrategy: authUserId ? CacheStrategies.CACHE_FIRST : CacheStrategies.STALE_WHILE_REVALIDATE
96
+ });
97
+ const isEventAdmin = useMemo(() => { var _a; return scUserContext.user && ((_a = scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by) === null || _a === void 0 ? void 0 : _a.id) === scUserContext.user.id; }, [scUserContext.user, (_a = scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by) === null || _a === void 0 ? void 0 : _a.id]);
98
+ // HANDLERS
99
+ const handleOpen = (event) => {
100
+ setAnchorEl(event.currentTarget);
101
+ };
102
+ const handleClose = () => {
103
+ setAnchorEl(null);
104
+ };
105
+ useEffect(() => {
106
+ /**
107
+ * Call scEventsManager.subscriptionStatus inside an effect
108
+ * to avoid warning rendering child during update parent state
109
+ */
110
+ if (authUserId) {
111
+ setStatus(scEventsManager === null || scEventsManager === void 0 ? void 0 : scEventsManager.subscriptionStatus(scEvent));
112
+ }
113
+ }, [authUserId, scEventsManager === null || scEventsManager === void 0 ? void 0 : scEventsManager.subscriptionStatus, scEvent]);
114
+ const toggleGoingToEvent = (user) => {
115
+ scEventsManager
116
+ .toggleEventAttendance(scEvent, user === null || user === void 0 ? void 0 : user.id)
117
+ .then(() => {
118
+ const _status = scEvent.privacy === SCEventPrivacyType.PRIVATE && scEvent.subscription_status !== SCEventSubscriptionStatusType.INVITED
119
+ ? SCEventSubscriptionStatusType.REQUESTED
120
+ : scEvent.subscription_status === SCEventSubscriptionStatusType.GOING
121
+ ? SCEventSubscriptionStatusType.SUBSCRIBED
122
+ : SCEventSubscriptionStatusType.GOING;
123
+ onSubscribe && onSubscribe(scEvent, _status);
124
+ })
125
+ .catch((e) => {
126
+ Logger.error(SCOPE_SC_UI, e);
127
+ });
128
+ };
129
+ const toggleNotGoingToEvent = () => {
130
+ scEventsManager
131
+ .toggleEventNonattendance(scEvent)
132
+ .then(() => {
133
+ const _status = scEvent.subscription_status === SCEventSubscriptionStatusType.NOT_GOING
134
+ ? SCEventSubscriptionStatusType.SUBSCRIBED
135
+ : SCEventSubscriptionStatusType.NOT_GOING;
136
+ onSubscribe && onSubscribe(scEvent, _status);
137
+ })
138
+ .catch((e) => {
139
+ Logger.error(SCOPE_SC_UI, e);
140
+ });
141
+ };
142
+ const handleToggleAction = (event) => {
143
+ const _status = event.target.value;
144
+ setAnchorEl(null);
145
+ if (!scUserContext.user) {
146
+ scContext.settings.handleAnonymousAction();
147
+ }
148
+ else {
149
+ (_status === SCEventSubscriptionStatusType.NOT_GOING && !(user === null || user === void 0 ? void 0 : user.id)) || (!_status && (user === null || user === void 0 ? void 0 : user.id)) ? toggleNotGoingToEvent() : toggleGoingToEvent();
150
+ }
151
+ };
152
+ function renderMenuItems() {
153
+ return (React.createElement(Box, null, options.map((option) => (React.createElement(MenuItem, { key: option.value, className: classes.item },
154
+ option.label,
155
+ React.createElement(Checkbox, { size: "small", checked: status === option.value, value: option.value, onChange: handleToggleAction, name: `${option.value}-option`, inputProps: { 'aria-label': `${option.label}` } }))))));
156
+ }
157
+ /**
158
+ * Get current translated status
159
+ */
160
+ const getStatus = useMemo(() => {
161
+ let _status;
162
+ switch (status) {
163
+ case SCEventSubscriptionStatusType.REQUESTED:
164
+ _status = React.createElement(FormattedMessage, { defaultMessage: "ui.eventSubscribeButton.waitingApproval", id: "ui.eventSubscribeButton.waitingApproval" });
165
+ break;
166
+ case SCEventSubscriptionStatusType.GOING:
167
+ _status = React.createElement(FormattedMessage, { defaultMessage: "ui.eventSubscribeButton.going", id: "ui.eventSubscribeButton.going" });
168
+ break;
169
+ case SCEventSubscriptionStatusType.INVITED:
170
+ _status = React.createElement(FormattedMessage, { defaultMessage: "ui.eventSubscribeButton.accept", id: "ui.eventSubscribeButton.accept" });
171
+ break;
172
+ case SCEventSubscriptionStatusType.NOT_GOING:
173
+ _status = React.createElement(FormattedMessage, { defaultMessage: "ui.eventSubscribeButton.notGoing", id: "ui.eventSubscribeButton.notGoing" });
174
+ break;
175
+ default:
176
+ (scEvent === null || scEvent === void 0 ? void 0 : scEvent.privacy) === SCEventPrivacyType.PUBLIC
177
+ ? (_status = React.createElement(FormattedMessage, { defaultMessage: "ui.eventSubscribeButton.label", id: "ui.eventSubscribeButton.label" }))
178
+ : (_status = (React.createElement(FormattedMessage, { defaultMessage: "ui.eventSubscribeButton.requestParticipation", id: "ui.eventSubscribeButton.requestParticipation" })));
179
+ break;
180
+ }
181
+ return _status;
182
+ }, [status, scEvent]);
183
+ if (!scEvent || (isEventAdmin && (user === null || user === void 0 ? void 0 : user.id) === scUserContext.user.id) || (isEventAdmin && !(user === null || user === void 0 ? void 0 : user.id))) {
184
+ return null;
185
+ }
186
+ return (React.createElement(React.Fragment, null, (scEvent === null || scEvent === void 0 ? void 0 : scEvent.privacy) !== SCEventPrivacyType.PRIVATE ? (React.createElement(React.Fragment, null,
187
+ React.createElement(SelectRoot, Object.assign({ className: classNames(classes.selectRoot, className, { [classes.going]: status && status === SCEventSubscriptionStatusType.GOING }, { [classes.notGoing]: status && status === SCEventSubscriptionStatusType.NOT_GOING }), onClick: handleOpen, endIcon: React.createElement(Icon, null, open ? 'expand_less' : 'expand_more'), startIcon: status &&
188
+ status !== SCEventSubscriptionStatusType.SUBSCRIBED && (React.createElement(Icon, null, status === SCEventSubscriptionStatusType.GOING ? 'circle_checked' : 'circle_closed')) }, rest), getStatus),
189
+ isMobile ? (React.createElement(SwipeableDrawerRoot, { className: classes.drawerRoot, PaperProps: { className: classes.paper }, open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, renderMenuItems())) : (React.createElement(MenuRoot, { className: classes.menuRoot, anchorEl: anchorEl, open: open, onClose: handleClose }, renderMenuItems())))) : (React.createElement(RequestRoot, Object.assign({ className: classNames(classes.requestRoot, className), variant: "outlined", size: "small", loading: scUserContext.user ? scEventsManager.isLoading(scEvent) : null, disabled: status === SCEventSubscriptionStatusType.REQUESTED }, rest), getStatus))));
190
+ }
@@ -0,0 +1,3 @@
1
+ import EventSubscribeButton, { EventSubscribeButtonProps } from './EventSubscribeButton';
2
+ export default EventSubscribeButton;
3
+ export { EventSubscribeButtonProps };
@@ -0,0 +1,2 @@
1
+ import EventSubscribeButton from './EventSubscribeButton';
2
+ export default EventSubscribeButton;
@@ -74,7 +74,7 @@ export default function Events(inProps) {
74
74
  props: inProps,
75
75
  name: PREFIX
76
76
  });
77
- const { endpointQueryParams = { limit: 8, offset: DEFAULT_PAGINATION_OFFSET }, className, EventComponentProps = {}, showFilters = false, filters, general = true } = props, rest = __rest(props, ["endpointQueryParams", "className", "EventComponentProps", "showFilters", "filters", "general"]);
77
+ const { endpointQueryParams = { limit: 2, offset: DEFAULT_PAGINATION_OFFSET }, className, EventComponentProps = {}, showFilters = false, filters, general = true } = props, rest = __rest(props, ["endpointQueryParams", "className", "EventComponentProps", "showFilters", "filters", "general"]);
78
78
  // STATE
79
79
  const [events, setEvents] = useState([]);
80
80
  const [loading, setLoading] = useState(true);
@@ -211,7 +211,8 @@ export default function Events(inProps) {
211
211
  filteredEvents.map((event) => (React.createElement(Grid, { item: true, xs: 12, sm: 8, md: 6, key: event.id, className: classes.item },
212
212
  React.createElement(Event, Object.assign({ event: event, eventId: event.id }, EventComponentProps))))),
213
213
  filteredEvents.length <= 3 && (React.createElement(Grid, { item: true, xs: 12, sm: 8, md: 6, key: 'skeleton-item', className: classes.itemSkeleton },
214
- React.createElement(EventSkeleton, { action: React.createElement(CreateEventButton, null) }))))),
214
+ React.createElement(EventSkeleton, { action: React.createElement(CreateEventButton, { variant: "outlined", color: "primary", size: "small" },
215
+ React.createElement(FormattedMessage, { id: "ui.events.skeleton.action.add", defaultMessage: "ui.events.skeleton.action.add" })) }))))),
215
216
  Boolean(next) && (React.createElement(Button, { color: "secondary", variant: "text", onClick: handleNext, className: classes.showMore },
216
217
  React.createElement(FormattedMessage, { id: "ui.events.button.seeMore", defaultMessage: "ui.events.button.seeMore" }))))))));
217
218
  /**
@@ -438,7 +438,7 @@ export default function FeedObject(inProps) {
438
438
  obj.group && (React.createElement("div", { className: classes.group },
439
439
  React.createElement(Chip, { color: "secondary", size: "small", key: obj.group.id, icon: React.createElement(Icon, null, "groups"), component: Link, to: scRoutingContext.url(SCRoutes.GROUP_ROUTE_NAME, obj.group), clickable: true }))),
440
440
  obj.event && (React.createElement("div", { className: classes.event },
441
- React.createElement(Chip, { color: "secondary", size: "small", key: obj.event.id, icon: React.createElement(Icon, null, "CalendarIcon"), component: Link, to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, obj.event), clickable: true })))),
441
+ React.createElement(Chip, { color: "secondary", size: "small", key: obj.event.id, label: obj.event.name, icon: React.createElement(Icon, null, "CalendarIcon"), component: Link, to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, obj.event), clickable: true })))),
442
442
  obj.categories.map((c) => (React.createElement(Link, { to: scRoutingContext.url(SCRoutes.CATEGORY_ROUTE_NAME, c), key: c.id },
443
443
  React.createElement(Typography, { variant: "overline" }, c.name)))))),
444
444
  obj.group && !obj.categories.length && (React.createElement("div", { className: classes.group },
@@ -1,4 +1,4 @@
1
- import { SCUserType, SCGroupType } from '@selfcommunity/types';
1
+ import { SCUserType, SCGroupType, SCEventType } from '@selfcommunity/types';
2
2
  /**
3
3
  * Define topics for pubsub
4
4
  */
@@ -21,3 +21,7 @@ export interface SCGroupMembersEventType {
21
21
  group: SCGroupType;
22
22
  user?: SCUserType;
23
23
  }
24
+ export interface SCEventMembersEventType {
25
+ event: SCEventType;
26
+ user?: SCUserType;
27
+ }
@@ -91,6 +91,7 @@ import TagChip, { TagChipProps } from './shared/TagChip';
91
91
  import UserDeletedSnackBar, { UserDeletedSnackBarProps } from './shared/UserDeletedSnackBar';
92
92
  import UserAvatar, { UserAvatarProps } from './shared/UserAvatar';
93
93
  import Lightbox from './shared/Lightbox';
94
+ import Calendar from './shared/Calendar';
94
95
  import { MEDIA_TYPE_EMBED } from './constants/Media';
95
96
  import PollSuggestionWidget, { PollSuggestionWidgetProps } from './components/PollSuggestionWidget';
96
97
  import ConsentSolution, { ConsentSolutionProps, ConsentSolutionSkeleton } from './components/ConsentSolution';
@@ -129,6 +130,8 @@ import EventLocationWidget, { EventLocationWidgetProps, EventLocationWidgetSkele
129
130
  import Event, { EventProps, EventSkeleton, EventSkeletonProps } from './components/Event';
130
131
  import Events, { EventsProps, EventsSkeleton, EventsSkeletonProps } from './components/Events';
131
132
  import EventInviteButton, { EventInviteButtonProps } from './components/EventInviteButton';
133
+ import EventHeader, { EventHeaderProps, EventHeaderSkeleton } from './components/EventHeader';
134
+ import EditEventButton, { EditEventButtonProps } from './components/EditEventButton';
132
135
  /**
133
136
  * Constants
134
137
  */
@@ -157,4 +160,4 @@ import LogoSelfCommunity from './assets/logo';
157
160
  /**
158
161
  * List all exports
159
162
  */
160
- export { AccountDataPortability, AccountDataPortabilityProps, AccountDataPortabilityButton, AccountDataPortabilityButtonProps, AccountDelete, AccountDeleteProps, AccountDeleteButton, AccountDeleteButtonProps, AccountRecover, AccountRecoverProps, AccountReset, AccountResetProps, AccountVerify, AccountVerifyProps, AccountChangeMailValidation, AccountChangeMailValidationProps, NavigationSettingsIconButton, NavigationSettingsIconButtonProps, NavigationSettingsItem, NavigationToolbarMobile, NavigationToolbarMobileProps, NavigationToolbarMobileSkeleton, NavigationToolbar, NavigationToolbarProps, NavigationToolbarSkeleton, NavigationMenuIconButton, NavigationMenuContent, NavigationMenuHeader, NavigationMenuIconButtonProps, BottomNavigation, BottomNavigationProps, BroadcastMessages, BroadcastMessagesProps, BroadcastMessagesSkeleton, Category, CategoryProps, CategorySkeleton, CategoryAutocomplete, CategoryAutocompleteProps, CategoryFollowersButton, CategoryFollowersButtonProps, CategoryHeader, CategoryHeaderProps, CategoryHeaderSkeleton, Categories, CategoriesProps, CategoriesSkeleton, CategoriesSkeletonProps, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton, CategoriesPopularWidget, CategoriesPopularWidgetSkeleton, CategoriesSuggestionWidget, CategoriesSuggestionWidgetProps, CategoriesSuggestionWidgetSkeleton, ChangeCover, ChangePicture, ChangePictureProps, ChangeCoverProps, Composer, ComposerProps, ComposerIconButton, ComposerIconButtonProps, Editor, EditorProps, EditorSkeleton, FriendshipUserButton, FriendshipButtonProps, Feed, FeedRef, FeedProps, FeedSidebarProps, FeedSkeleton, CategoryFollowButton, CategoryFollowButtonProps, FollowUserButton, FollowUserButtonProps, ConnectionUserButton, FeedObject, FeedObjectProps, FeedObjectSkeleton, FeedObjectMediaPreview, FeedObjectMediaPreviewProps, FeedUpdatesWidget, FeedUpdatesWidgetProps, FeedUpdatesWidgetSkeleton, GenericSkeleton, AvatarGroupSkeleton, CommentObject, CommentsObject, CommentsObjectProps, CommentObjectProps, CommentsObjectSkeleton, CommentObjectSkeleton, CommentObjectReply, CommentObjectReplyProps, CommentsFeedObject, CommentsFeedObjectProps, CommentsFeedObjectSkeleton, ReplyComment, InlineComposerWidget, InlineComposerWidgetProps, InlineComposerWidgetSkeleton, Notification, NotificationProps, NotificationSkeleton, UserSuggestionWidget, UserSuggestionWidgetProps, UserSuggestionWidgetSkeleton, PlatformWidget, PlatformWidgetProps, PlatformWidgetSkeleton, LocationAutocomplete, LocationAutocompleteProps, LoyaltyProgramWidget, LoyaltyProgramWidgetProps, LoyaltyProgramWidgetSkeleton, CategoryTrendingFeedWidget, CategoryTrendingFeedWidgetProps, CategoryTrendingFeedWidgetSkeleton, CategoryTrendingUsersWidget, CategoryTrendingUsersWidgetProps, CategoryTrendingPeopleWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectWidgetProps, RelatedFeedObjectsWidgetSkeleton, UserActionIconButton, UserActionIconButtonProps, UserCounters, UserCountersProps, UserProfileHeader, UserProfileHeaderProps, UserProfileHeaderSkeleton, UserInfoDialog, UserInfoDialogProps, UserInfo, UserInfoProps, UserInfoSkeleton, UserProfileBlocked, UserProfileBlockedProps, SCUserProfileFields, SCUserProfileSettings, UserProfileEdit, UserProfileEditProps, UserProfileEditSkeleton, UserProfileEditSectionPublicInfo, UserProfileEditSectionPublicInfoProps, UserProfileEditSectionSettings, UserProfileEditSectionSettingsProps, UserProfileEditSectionAccount, UserProfileEditSectionAccountProps, UserFollowedUsersWidget, UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetProps, UserFollowersWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetProps, UserConnectionsRequestsSentWidgetSkeleton, UserSocialAssociation, UserSocialAssociationProps, SCUserSocialAssociations, VirtualScrollerItemProps, PlatformWidgetActionType, CustomAdv, CustomAdvProps, CustomAdvSkeleton, User, UserProps, UserSkeleton, PrivateMessageThread, PrivateMessageThreadProps, PrivateMessageThreadSkeleton, PrivateMessageThreadItem, PrivateMessageThreadItemProps, PrivateMessageThreadItemSkeleton, PrivateMessageSnippetItem, PrivateMessageSnippetItemProps, PrivateMessageSnippetItemSkeleton, PrivateMessageEditor, PrivateMessageEditorProps, PrivateMessageEditorSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsProps, PrivateMessageSnippetsSkeleton, PrivateMessageComponent, PrivateMessageComponentProps, PrivateMessageComponentSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSettingsIconButtonProps, ToastNotifications, ToastNotificationsProps, ToastNotificationsSkeleton, SnippetNotifications, SnippetNotificationsProps, SnippetNotificationsSkeleton, SearchAutocomplete, SearchAutocompleteProps, SearchDialog, SearchDialogProps, Widget, WidgetProps, SCFeedWidgetType, SCFeedObjectTemplateType, SCCommentsOrderBy, SCFeedObjectActivitiesType, SCMediaObjectType, SCMediaChunkType, SCNotificationObjectTemplateType, SCBroadcastMessageTemplateType, ChangeGroupCover, ChangeGroupCoverProps, ChangeGroupPicture, ChangeGroupPictureProps, GroupHeader, GroupHeaderProps, GroupHeaderSkeleton, GroupMembersButton, GroupMembersButtonProps, CreateGroupButton, CreateGroupButtonProps, EditGroupButton, EditGroupButtonProps, GroupInviteButton, GroupInviteButtonProps, GroupInfoWidget, GroupInfoWidgetProps, GroupInfoWidgetSkeleton, Group, GroupProps, GroupSkeleton, GroupSubscribeButton, GroupSubscribeButtonProps, GroupMembersWidget, GroupMembersWidgetProps, GroupMembersWidgetSkeleton, GroupRequestsWidget, GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton, Groups, GroupsProps, GroupsSkeleton, GroupForm, GroupFormProps, GroupInvitedWidget, GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton, UserSubscribedGroupsWidget, UserSubscribedGroupsWidgetProps, UserSubscribedGroupsWidgetSkeleton, DefaultDrawerContent, DefaultDrawerContentProps, DefaultHeaderContent, DefaultHeaderContentProps, CreateEventButton, CreateEventButtonProps, EventLocationWidget, EventLocationWidgetProps, EventLocationWidgetSkeleton, Event, EventProps, EventSkeleton, Events, EventsProps, EventsSkeleton, EventSkeletonProps, EventsSkeletonProps, EventInviteButton, EventInviteButtonProps, HiddenPlaceholder, UrlTextField, UsernameTextField, EmailTextField, PasswordTextField, PhoneTextField, MetadataField, MetadataFieldProps, InfiniteScroll, StickyBox, useStickyBox, StickyBoxProps, StickyBoxComponent, UseStickyBoxProps, TagChip, TagChipProps, UserDeletedSnackBar, UserDeletedSnackBarProps, UserAvatar, UserAvatarProps, Lightbox, CentralProgress, ConfirmDialog, LanguageSwitcher, MediaChunkUploader, MediaChunkUploaderProps, File, Link, Share, EditMediaProps, MEDIA_TYPE_EMBED, FACEBOOK_SHARE, X_SHARE, LINKEDIN_SHARE, DEFAULT_PRELOAD_OFFSET_VIEWPORT, MIN_PRELOAD_OFFSET_VIEWPORT, MAX_PRELOAD_OFFSET_VIEWPORT, ConsentSolution, ConsentSolutionProps, ConsentSolutionSkeleton, ConsentSolutionButton, ConsentSolutionButtonProps, LEGAL_POLICIES, DEFAULT_FIELDS, DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PAGINATION_OFFSET, DEFAULT_PAGINATION_LIMIT, DEFAULT_WIDGETS_NUMBER, PollSuggestionWidget, PollSuggestionWidgetProps, Incubator, IncubatorSubscribeButton, IncubatorSubscribeButtonProps, IncubatorProps, IncubatorListWidget, IncubatorListWidgetProps, IncubatorDetail, IncubatorDetailProps, IncubatorSuggestionWidget, IncubatorSuggestionWidgetProps, ContributionUtils, bytesToSize, getUnseenNotification, getUnseenNotificationCounter, MessageUploaderUtils, getRelativeTime, Footer, FooterProps, FooterSkeleton, BaseItem, BaseItemProps, BaseDialog, BaseDialogProps, GroupSettingsIconButton, GroupSettingsIconButtonProps, LogoSelfCommunity };
163
+ export { AccountDataPortability, AccountDataPortabilityProps, AccountDataPortabilityButton, AccountDataPortabilityButtonProps, AccountDelete, AccountDeleteProps, AccountDeleteButton, AccountDeleteButtonProps, AccountRecover, AccountRecoverProps, AccountReset, AccountResetProps, AccountVerify, AccountVerifyProps, AccountChangeMailValidation, AccountChangeMailValidationProps, NavigationSettingsIconButton, NavigationSettingsIconButtonProps, NavigationSettingsItem, NavigationToolbarMobile, NavigationToolbarMobileProps, NavigationToolbarMobileSkeleton, NavigationToolbar, NavigationToolbarProps, NavigationToolbarSkeleton, NavigationMenuIconButton, NavigationMenuContent, NavigationMenuHeader, NavigationMenuIconButtonProps, BottomNavigation, BottomNavigationProps, BroadcastMessages, BroadcastMessagesProps, BroadcastMessagesSkeleton, Category, CategoryProps, CategorySkeleton, CategoryAutocomplete, CategoryAutocompleteProps, CategoryFollowersButton, CategoryFollowersButtonProps, CategoryHeader, CategoryHeaderProps, CategoryHeaderSkeleton, Categories, CategoriesProps, CategoriesSkeleton, CategoriesSkeletonProps, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton, CategoriesPopularWidget, CategoriesPopularWidgetSkeleton, CategoriesSuggestionWidget, CategoriesSuggestionWidgetProps, CategoriesSuggestionWidgetSkeleton, ChangeCover, ChangePicture, ChangePictureProps, ChangeCoverProps, Composer, ComposerProps, ComposerIconButton, ComposerIconButtonProps, Editor, EditorProps, EditorSkeleton, FriendshipUserButton, FriendshipButtonProps, Feed, FeedRef, FeedProps, FeedSidebarProps, FeedSkeleton, CategoryFollowButton, CategoryFollowButtonProps, FollowUserButton, FollowUserButtonProps, ConnectionUserButton, FeedObject, FeedObjectProps, FeedObjectSkeleton, FeedObjectMediaPreview, FeedObjectMediaPreviewProps, FeedUpdatesWidget, FeedUpdatesWidgetProps, FeedUpdatesWidgetSkeleton, GenericSkeleton, AvatarGroupSkeleton, CommentObject, CommentsObject, CommentsObjectProps, CommentObjectProps, CommentsObjectSkeleton, CommentObjectSkeleton, CommentObjectReply, CommentObjectReplyProps, CommentsFeedObject, CommentsFeedObjectProps, CommentsFeedObjectSkeleton, ReplyComment, InlineComposerWidget, InlineComposerWidgetProps, InlineComposerWidgetSkeleton, Notification, NotificationProps, NotificationSkeleton, UserSuggestionWidget, UserSuggestionWidgetProps, UserSuggestionWidgetSkeleton, PlatformWidget, PlatformWidgetProps, PlatformWidgetSkeleton, LocationAutocomplete, LocationAutocompleteProps, LoyaltyProgramWidget, LoyaltyProgramWidgetProps, LoyaltyProgramWidgetSkeleton, CategoryTrendingFeedWidget, CategoryTrendingFeedWidgetProps, CategoryTrendingFeedWidgetSkeleton, CategoryTrendingUsersWidget, CategoryTrendingUsersWidgetProps, CategoryTrendingPeopleWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectWidgetProps, RelatedFeedObjectsWidgetSkeleton, UserActionIconButton, UserActionIconButtonProps, UserCounters, UserCountersProps, UserProfileHeader, UserProfileHeaderProps, UserProfileHeaderSkeleton, UserInfoDialog, UserInfoDialogProps, UserInfo, UserInfoProps, UserInfoSkeleton, UserProfileBlocked, UserProfileBlockedProps, SCUserProfileFields, SCUserProfileSettings, UserProfileEdit, UserProfileEditProps, UserProfileEditSkeleton, UserProfileEditSectionPublicInfo, UserProfileEditSectionPublicInfoProps, UserProfileEditSectionSettings, UserProfileEditSectionSettingsProps, UserProfileEditSectionAccount, UserProfileEditSectionAccountProps, UserFollowedUsersWidget, UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetProps, UserFollowersWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetProps, UserConnectionsRequestsSentWidgetSkeleton, UserSocialAssociation, UserSocialAssociationProps, SCUserSocialAssociations, VirtualScrollerItemProps, PlatformWidgetActionType, CustomAdv, CustomAdvProps, CustomAdvSkeleton, User, UserProps, UserSkeleton, PrivateMessageThread, PrivateMessageThreadProps, PrivateMessageThreadSkeleton, PrivateMessageThreadItem, PrivateMessageThreadItemProps, PrivateMessageThreadItemSkeleton, PrivateMessageSnippetItem, PrivateMessageSnippetItemProps, PrivateMessageSnippetItemSkeleton, PrivateMessageEditor, PrivateMessageEditorProps, PrivateMessageEditorSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsProps, PrivateMessageSnippetsSkeleton, PrivateMessageComponent, PrivateMessageComponentProps, PrivateMessageComponentSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSettingsIconButtonProps, ToastNotifications, ToastNotificationsProps, ToastNotificationsSkeleton, SnippetNotifications, SnippetNotificationsProps, SnippetNotificationsSkeleton, SearchAutocomplete, SearchAutocompleteProps, SearchDialog, SearchDialogProps, Widget, WidgetProps, SCFeedWidgetType, SCFeedObjectTemplateType, SCCommentsOrderBy, SCFeedObjectActivitiesType, SCMediaObjectType, SCMediaChunkType, SCNotificationObjectTemplateType, SCBroadcastMessageTemplateType, ChangeGroupCover, ChangeGroupCoverProps, ChangeGroupPicture, ChangeGroupPictureProps, GroupHeader, GroupHeaderProps, GroupHeaderSkeleton, GroupMembersButton, GroupMembersButtonProps, CreateGroupButton, CreateGroupButtonProps, EditGroupButton, EditGroupButtonProps, GroupInviteButton, GroupInviteButtonProps, GroupInfoWidget, GroupInfoWidgetProps, GroupInfoWidgetSkeleton, Group, GroupProps, GroupSkeleton, GroupSubscribeButton, GroupSubscribeButtonProps, GroupMembersWidget, GroupMembersWidgetProps, GroupMembersWidgetSkeleton, GroupRequestsWidget, GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton, Groups, GroupsProps, GroupsSkeleton, GroupForm, GroupFormProps, GroupInvitedWidget, GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton, UserSubscribedGroupsWidget, UserSubscribedGroupsWidgetProps, UserSubscribedGroupsWidgetSkeleton, DefaultDrawerContent, DefaultDrawerContentProps, DefaultHeaderContent, DefaultHeaderContentProps, CreateEventButton, CreateEventButtonProps, EventLocationWidget, EventLocationWidgetProps, EventLocationWidgetSkeleton, Event, EventProps, EventSkeleton, Events, EventsProps, EventsSkeleton, EventSkeletonProps, EventsSkeletonProps, EventInviteButton, EventInviteButtonProps, EventHeader, EventHeaderProps, EventHeaderSkeleton, EditEventButton, EditEventButtonProps, HiddenPlaceholder, UrlTextField, UsernameTextField, EmailTextField, PasswordTextField, PhoneTextField, MetadataField, MetadataFieldProps, InfiniteScroll, StickyBox, useStickyBox, StickyBoxProps, StickyBoxComponent, UseStickyBoxProps, TagChip, TagChipProps, UserDeletedSnackBar, UserDeletedSnackBarProps, UserAvatar, UserAvatarProps, Lightbox, Calendar, CentralProgress, ConfirmDialog, LanguageSwitcher, MediaChunkUploader, MediaChunkUploaderProps, File, Link, Share, EditMediaProps, MEDIA_TYPE_EMBED, FACEBOOK_SHARE, X_SHARE, LINKEDIN_SHARE, DEFAULT_PRELOAD_OFFSET_VIEWPORT, MIN_PRELOAD_OFFSET_VIEWPORT, MAX_PRELOAD_OFFSET_VIEWPORT, ConsentSolution, ConsentSolutionProps, ConsentSolutionSkeleton, ConsentSolutionButton, ConsentSolutionButtonProps, LEGAL_POLICIES, DEFAULT_FIELDS, DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PAGINATION_OFFSET, DEFAULT_PAGINATION_LIMIT, DEFAULT_WIDGETS_NUMBER, PollSuggestionWidget, PollSuggestionWidgetProps, Incubator, IncubatorSubscribeButton, IncubatorSubscribeButtonProps, IncubatorProps, IncubatorListWidget, IncubatorListWidgetProps, IncubatorDetail, IncubatorDetailProps, IncubatorSuggestionWidget, IncubatorSuggestionWidgetProps, ContributionUtils, bytesToSize, getUnseenNotification, getUnseenNotificationCounter, MessageUploaderUtils, getRelativeTime, Footer, FooterProps, FooterSkeleton, BaseItem, BaseItemProps, BaseDialog, BaseDialogProps, GroupSettingsIconButton, GroupSettingsIconButtonProps, LogoSelfCommunity };