@selfcommunity/react-ui 0.7.50-events.43 → 0.7.50-events.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/CreateEventButton/CreateEventButton.js +6 -4
- package/lib/cjs/components/CreateEventWidget/CreateEventWidget.d.ts +8 -0
- package/lib/cjs/components/CreateEventWidget/CreateEventWidget.js +62 -0
- package/lib/cjs/components/CreateEventWidget/Skeleton.d.ts +1 -0
- package/lib/cjs/components/CreateEventWidget/Skeleton.js +25 -0
- package/lib/cjs/components/CreateEventWidget/constants.d.ts +1 -0
- package/lib/cjs/components/CreateEventWidget/constants.js +4 -0
- package/lib/cjs/components/CreateEventWidget/index.d.ts +4 -0
- package/lib/cjs/components/CreateEventWidget/index.js +8 -0
- package/lib/cjs/components/EventPartecipantsButton/EventPartecipantsButton.d.ts +46 -0
- package/lib/cjs/components/EventPartecipantsButton/EventPartecipantsButton.js +130 -0
- package/lib/cjs/components/EventPartecipantsButton/index.d.ts +3 -0
- package/lib/cjs/components/EventPartecipantsButton/index.js +5 -0
- package/lib/cjs/components/Events/Events.js +1 -2
- package/lib/cjs/components/MyEventsWidget/MyEventsWidget.d.ts +19 -0
- package/lib/cjs/components/MyEventsWidget/MyEventsWidget.js +129 -0
- package/lib/cjs/components/MyEventsWidget/Skeleton.d.ts +1 -0
- package/lib/cjs/components/MyEventsWidget/Skeleton.js +25 -0
- package/lib/cjs/components/MyEventsWidget/constants.d.ts +1 -0
- package/lib/cjs/components/MyEventsWidget/constants.js +4 -0
- package/lib/cjs/components/MyEventsWidget/index.d.ts +4 -0
- package/lib/cjs/components/MyEventsWidget/index.js +8 -0
- package/lib/cjs/components/User/User.js +1 -1
- package/lib/cjs/index.d.ts +4 -1
- package/lib/cjs/index.js +12 -4
- package/lib/cjs/shared/Calendar/index.js +5 -1
- package/lib/esm/components/CreateEventButton/CreateEventButton.js +6 -4
- package/lib/esm/components/CreateEventWidget/CreateEventWidget.d.ts +8 -0
- package/lib/esm/components/CreateEventWidget/CreateEventWidget.js +59 -0
- package/lib/esm/components/CreateEventWidget/Skeleton.d.ts +1 -0
- package/lib/esm/components/CreateEventWidget/Skeleton.js +21 -0
- package/lib/esm/components/CreateEventWidget/constants.d.ts +1 -0
- package/lib/esm/components/CreateEventWidget/constants.js +1 -0
- package/lib/esm/components/CreateEventWidget/index.d.ts +4 -0
- package/lib/esm/components/CreateEventWidget/index.js +4 -0
- package/lib/esm/components/EventPartecipantsButton/EventPartecipantsButton.d.ts +46 -0
- package/lib/esm/components/EventPartecipantsButton/EventPartecipantsButton.js +127 -0
- package/lib/esm/components/EventPartecipantsButton/index.d.ts +3 -0
- package/lib/esm/components/EventPartecipantsButton/index.js +2 -0
- package/lib/esm/components/Events/Events.js +1 -2
- package/lib/esm/components/MyEventsWidget/MyEventsWidget.d.ts +19 -0
- package/lib/esm/components/MyEventsWidget/MyEventsWidget.js +126 -0
- package/lib/esm/components/MyEventsWidget/Skeleton.d.ts +1 -0
- package/lib/esm/components/MyEventsWidget/Skeleton.js +21 -0
- package/lib/esm/components/MyEventsWidget/constants.d.ts +1 -0
- package/lib/esm/components/MyEventsWidget/constants.js +1 -0
- package/lib/esm/components/MyEventsWidget/index.d.ts +4 -0
- package/lib/esm/components/MyEventsWidget/index.js +4 -0
- package/lib/esm/components/User/User.js +1 -1
- package/lib/esm/index.d.ts +4 -1
- package/lib/esm/index.js +6 -3
- package/lib/esm/shared/Calendar/index.js +5 -1
- package/lib/umd/react-ui.js +1 -1
- package/package.json +7 -7
|
@@ -10,6 +10,7 @@ const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
|
10
10
|
const react_1 = tslib_1.__importStar(require("react"));
|
|
11
11
|
const react_intl_1 = require("react-intl");
|
|
12
12
|
const EventForm_1 = tslib_1.__importDefault(require("../EventForm"));
|
|
13
|
+
const types_1 = require("@selfcommunity/types");
|
|
13
14
|
const PREFIX = 'SCCreateEventButton';
|
|
14
15
|
const classes = {
|
|
15
16
|
root: `${PREFIX}-root`
|
|
@@ -52,11 +53,12 @@ function CreateEventButton(inProps) {
|
|
|
52
53
|
const [open, setOpen] = react_1.default.useState(false);
|
|
53
54
|
// CONST
|
|
54
55
|
const authUserId = scUserContext.user ? scUserContext.user.id : null;
|
|
55
|
-
const preferences = (0, react_core_1.useSCPreferences)();
|
|
56
|
-
const
|
|
56
|
+
const { preferences, features } = (0, react_core_1.useSCPreferences)();
|
|
57
|
+
const eventsEnabled = (0, react_1.useMemo)(() => features && features.includes(types_1.SCFeatureName.EVENT) && features.includes(types_1.SCFeatureName.TAGGING), [features]);
|
|
58
|
+
const onlyStaffEnabled = (0, react_1.useMemo)(() => preferences[react_core_1.SCPreferences.CONFIGURATIONS_EVENTS_ONLY_STAFF_ENABLED].value, [preferences]);
|
|
57
59
|
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
|
|
58
60
|
// @ts-ignore
|
|
59
|
-
const canCreateEvent = (0, react_1.useMemo)(() => { var _a, _b; return (_b = (_a = scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user) === null || _a === void 0 ? void 0 : _a.permission) === null || _b === void 0 ? void 0 : _b.
|
|
61
|
+
const canCreateEvent = (0, react_1.useMemo)(() => { var _a, _b; return (_b = (_a = scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user) === null || _a === void 0 ? void 0 : _a.permission) === null || _b === void 0 ? void 0 : _b.create_event; }, [(_a = scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user) === null || _a === void 0 ? void 0 : _a.permission]);
|
|
60
62
|
/**
|
|
61
63
|
* Handle click on button
|
|
62
64
|
*/
|
|
@@ -66,7 +68,7 @@ function CreateEventButton(inProps) {
|
|
|
66
68
|
/**
|
|
67
69
|
* If there's no authUserId, component is hidden.
|
|
68
70
|
*/
|
|
69
|
-
if ((!canCreateEvent && onlyStaffEnabled) || !authUserId) {
|
|
71
|
+
if (!eventsEnabled || (!canCreateEvent && onlyStaffEnabled) || !authUserId) {
|
|
70
72
|
return null;
|
|
71
73
|
}
|
|
72
74
|
/**
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const material_1 = require("@mui/material");
|
|
6
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const react_intl_1 = require("react-intl");
|
|
9
|
+
const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
|
|
10
|
+
const CreateEventButton_1 = tslib_1.__importDefault(require("../CreateEventButton"));
|
|
11
|
+
const Widget_1 = tslib_1.__importDefault(require("../Widget"));
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
14
|
+
const types_1 = require("@selfcommunity/types");
|
|
15
|
+
const classes = {
|
|
16
|
+
root: `${constants_1.PREFIX}-root`,
|
|
17
|
+
image: `${constants_1.PREFIX}-image`,
|
|
18
|
+
calendar: `${constants_1.PREFIX}-calendar`,
|
|
19
|
+
content: `${constants_1.PREFIX}-content`,
|
|
20
|
+
title: `${constants_1.PREFIX}-title`,
|
|
21
|
+
spaging: `${constants_1.PREFIX}-spacing`,
|
|
22
|
+
actions: `${constants_1.PREFIX}-actions`
|
|
23
|
+
};
|
|
24
|
+
const Root = (0, material_1.styled)(Widget_1.default, {
|
|
25
|
+
name: constants_1.PREFIX,
|
|
26
|
+
slot: 'Root'
|
|
27
|
+
})();
|
|
28
|
+
function CreateEventWidget(inProps) {
|
|
29
|
+
var _a;
|
|
30
|
+
// PROPS
|
|
31
|
+
const props = (0, material_1.useThemeProps)({
|
|
32
|
+
props: inProps,
|
|
33
|
+
name: constants_1.PREFIX
|
|
34
|
+
});
|
|
35
|
+
const rest = tslib_1.__rest(props, []);
|
|
36
|
+
// STATE
|
|
37
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
38
|
+
// CONTEXT
|
|
39
|
+
const scUserContext = (0, react_1.useContext)(react_core_1.SCUserContext);
|
|
40
|
+
// HOOK
|
|
41
|
+
const { preferences, features } = (0, react_core_1.useSCPreferences)();
|
|
42
|
+
const eventsEnabled = (0, react_1.useMemo)(() => features && features.includes(types_1.SCFeatureName.EVENT) && features.includes(types_1.SCFeatureName.TAGGING), [features]);
|
|
43
|
+
const authUserId = scUserContext.user ? scUserContext.user.id : null;
|
|
44
|
+
const onlyStaffEnabled = (0, react_1.useMemo)(() => preferences[react_core_1.SCPreferences.CONFIGURATIONS_GROUPS_ONLY_STAFF_ENABLED].value, [preferences]);
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
const canCreateEvent = (0, react_1.useMemo)(() => { var _a, _b; return (_b = (_a = scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user) === null || _a === void 0 ? void 0 : _a.permission) === null || _b === void 0 ? void 0 : _b.create_group; }, [(_a = scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user) === null || _a === void 0 ? void 0 : _a.permission]);
|
|
48
|
+
(0, react_1.useEffect)(() => {
|
|
49
|
+
setLoading(false);
|
|
50
|
+
}, []);
|
|
51
|
+
if (loading) {
|
|
52
|
+
return (0, jsx_runtime_1.jsx)(Skeleton_1.default, {});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* If there's no authUserId, component is hidden.
|
|
56
|
+
*/
|
|
57
|
+
if (!eventsEnabled || (!canCreateEvent && onlyStaffEnabled) || !authUserId) {
|
|
58
|
+
return (0, jsx_runtime_1.jsx)(HiddenPlaceholder_1.default, {});
|
|
59
|
+
}
|
|
60
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ position: "relative" }, { children: [(0, jsx_runtime_1.jsx)(material_1.CardMedia, { component: "img", image: `${preferences[react_core_1.SCPreferences.IMAGES_USER_DEFAULT_COVER].value}`, alt: "placeholder image", className: classes.image }), (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ className: classes.calendar, fontSize: "large" }, { children: "CalendarIcon" }))] })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5", className: classes.title }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.createEvent.title", defaultMessage: "ui.createEvent.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body1", className: classes.spaging }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.createEvent.description", defaultMessage: "ui.createEvent.description" }) })), (0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.spaging })] })), (0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(CreateEventButton_1.default, {}) }))] })));
|
|
61
|
+
}
|
|
62
|
+
exports.default = CreateEventWidget;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function CreateEventWidgetSkeleton(): JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const material_1 = require("@mui/material");
|
|
6
|
+
const Skeleton_1 = tslib_1.__importDefault(require("@mui/material/Skeleton"));
|
|
7
|
+
const styles_1 = require("@mui/material/styles");
|
|
8
|
+
const Widget_1 = tslib_1.__importDefault(require("../Widget"));
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const classes = {
|
|
11
|
+
root: `${constants_1.PREFIX}-skeleton-root`,
|
|
12
|
+
calendar: `${constants_1.PREFIX}-calendar`,
|
|
13
|
+
content: `${constants_1.PREFIX}-content`,
|
|
14
|
+
title: `${constants_1.PREFIX}-title`,
|
|
15
|
+
spacing: `${constants_1.PREFIX}-spacing`,
|
|
16
|
+
actions: `${constants_1.PREFIX}-actions`
|
|
17
|
+
};
|
|
18
|
+
const Root = (0, styles_1.styled)(Widget_1.default, {
|
|
19
|
+
name: constants_1.PREFIX,
|
|
20
|
+
slot: 'SkeletonRoot'
|
|
21
|
+
})();
|
|
22
|
+
function CreateEventWidgetSkeleton() {
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ position: "relative" }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { variant: "rectangular", animation: "wave", width: "100%", height: "110px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { className: classes.calendar, variant: "rounded", animation: "wave", width: "50px", height: "50px" })] })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { className: classes.title, animation: "wave", width: "26%", height: "30px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { className: classes.spacing, animation: "wave", width: "100%", height: "20px" }), (0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.spacing })] })), (0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "rounded", width: "138px", height: "36px" }) }))] })));
|
|
24
|
+
}
|
|
25
|
+
exports.default = CreateEventWidgetSkeleton;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PREFIX = "SCCreateEventWidget";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateEventWidgetSkeleton = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const CreateEventWidget_1 = tslib_1.__importDefault(require("./CreateEventWidget"));
|
|
6
|
+
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
7
|
+
exports.CreateEventWidgetSkeleton = Skeleton_1.default;
|
|
8
|
+
exports.default = CreateEventWidget_1.default;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ButtonProps } from '@mui/material/Button/Button';
|
|
2
|
+
import { SCEventType } from '@selfcommunity/types';
|
|
3
|
+
import { BaseDialogProps } from '../../shared/BaseDialog';
|
|
4
|
+
export interface EventPartecipantsButtonProps extends Pick<ButtonProps, Exclude<keyof ButtonProps, 'onClick' | 'disabled'>> {
|
|
5
|
+
/**
|
|
6
|
+
* Event Object
|
|
7
|
+
* @default null
|
|
8
|
+
*/
|
|
9
|
+
event?: SCEventType;
|
|
10
|
+
/**
|
|
11
|
+
* Id of event object
|
|
12
|
+
* @default null
|
|
13
|
+
*/
|
|
14
|
+
eventId?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Props to spread to followedBy dialog
|
|
17
|
+
* @default {}
|
|
18
|
+
*/
|
|
19
|
+
DialogProps?: BaseDialogProps;
|
|
20
|
+
/**
|
|
21
|
+
* Any other properties
|
|
22
|
+
*/
|
|
23
|
+
[p: string]: any;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
*> API documentation for the Community-JS Event Partecipants Button component. Learn about the available props and the CSS API.
|
|
27
|
+
*
|
|
28
|
+
#### Import
|
|
29
|
+
```jsx
|
|
30
|
+
import {EventPartecipantsButton} from '@selfcommunity/react-ui';
|
|
31
|
+
```
|
|
32
|
+
#### Component Name
|
|
33
|
+
|
|
34
|
+
The name `SCEventPartecipantsButton` can be used when providing style overrides in the theme.
|
|
35
|
+
|
|
36
|
+
* #### CSS
|
|
37
|
+
*
|
|
38
|
+
|Rule Name|Global class|Description|
|
|
39
|
+
|---|---|---|
|
|
40
|
+
|root|.SCEventPartecipantsButton-root|Styles applied to the root element.|
|
|
41
|
+
|dialogRoot|.SCEventPartecipantsButton-dialog-root|Styles applied to the root element.|
|
|
42
|
+
|endMessage|.SCEventPartecipantsButton-end-message|Styles applied to the end message element.|
|
|
43
|
+
|
|
44
|
+
* @param inProps
|
|
45
|
+
*/
|
|
46
|
+
export default function EventPartecipantsButton(inProps: EventPartecipantsButtonProps): JSX.Element;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const material_1 = require("@mui/material");
|
|
6
|
+
const styles_1 = require("@mui/material/styles");
|
|
7
|
+
const useMediaQuery_1 = tslib_1.__importDefault(require("@mui/material/useMediaQuery"));
|
|
8
|
+
const system_1 = require("@mui/system");
|
|
9
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
10
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
11
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
12
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
13
|
+
const react_1 = require("react");
|
|
14
|
+
const react_intl_1 = require("react-intl");
|
|
15
|
+
const use_deep_compare_effect_1 = require("use-deep-compare-effect");
|
|
16
|
+
const Errors_1 = require("../../constants/Errors");
|
|
17
|
+
const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
|
|
18
|
+
const InfiniteScroll_1 = tslib_1.__importDefault(require("../../shared/InfiniteScroll"));
|
|
19
|
+
const AvatarGroupSkeleton_1 = tslib_1.__importDefault(require("../Skeleton/AvatarGroupSkeleton"));
|
|
20
|
+
const User_1 = tslib_1.__importStar(require("../User"));
|
|
21
|
+
const PREFIX = 'SCEventPartecipantsButton';
|
|
22
|
+
const classes = {
|
|
23
|
+
root: `${PREFIX}-root`,
|
|
24
|
+
dialogRoot: `${PREFIX}-dialog-root`,
|
|
25
|
+
endMessage: `${PREFIX}-end-message`
|
|
26
|
+
};
|
|
27
|
+
const Root = (0, styles_1.styled)(material_1.Button, {
|
|
28
|
+
name: PREFIX,
|
|
29
|
+
slot: 'Root',
|
|
30
|
+
overridesResolver: (_props, styles) => styles.root
|
|
31
|
+
})();
|
|
32
|
+
const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
|
|
33
|
+
name: PREFIX,
|
|
34
|
+
slot: 'Root',
|
|
35
|
+
overridesResolver: (_props, styles) => styles.dialogRoot
|
|
36
|
+
})();
|
|
37
|
+
/**
|
|
38
|
+
*> API documentation for the Community-JS Event Partecipants Button component. Learn about the available props and the CSS API.
|
|
39
|
+
*
|
|
40
|
+
#### Import
|
|
41
|
+
```jsx
|
|
42
|
+
import {EventPartecipantsButton} from '@selfcommunity/react-ui';
|
|
43
|
+
```
|
|
44
|
+
#### Component Name
|
|
45
|
+
|
|
46
|
+
The name `SCEventPartecipantsButton` can be used when providing style overrides in the theme.
|
|
47
|
+
|
|
48
|
+
* #### CSS
|
|
49
|
+
*
|
|
50
|
+
|Rule Name|Global class|Description|
|
|
51
|
+
|---|---|---|
|
|
52
|
+
|root|.SCEventPartecipantsButton-root|Styles applied to the root element.|
|
|
53
|
+
|dialogRoot|.SCEventPartecipantsButton-dialog-root|Styles applied to the root element.|
|
|
54
|
+
|endMessage|.SCEventPartecipantsButton-end-message|Styles applied to the end message element.|
|
|
55
|
+
|
|
56
|
+
* @param inProps
|
|
57
|
+
*/
|
|
58
|
+
function EventPartecipantsButton(inProps) {
|
|
59
|
+
// PROPS
|
|
60
|
+
const props = (0, system_1.useThemeProps)({
|
|
61
|
+
props: inProps,
|
|
62
|
+
name: PREFIX
|
|
63
|
+
});
|
|
64
|
+
const { className, eventId, event, DialogProps = {} } = props, rest = tslib_1.__rest(props, ["className", "eventId", "event", "DialogProps"]);
|
|
65
|
+
// STATE
|
|
66
|
+
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
67
|
+
const [next, setNext] = (0, react_1.useState)(null);
|
|
68
|
+
const [offset, setOffset] = (0, react_1.useState)(null);
|
|
69
|
+
const [followers, setFollowers] = (0, react_1.useState)([]);
|
|
70
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
|
71
|
+
// HOOKS
|
|
72
|
+
const { scEvent } = (0, react_core_1.useSCFetchEvent)({ id: eventId, event });
|
|
73
|
+
// FETCH FIRST FOLLOWERS
|
|
74
|
+
(0, use_deep_compare_effect_1.useDeepCompareEffectNoCheck)(() => {
|
|
75
|
+
if (!scEvent) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (followers.length === 0) {
|
|
79
|
+
api_services_1.EventService.getUsersGoingToEvent(scEvent.id, { limit: 3 }).then((res) => {
|
|
80
|
+
setFollowers([...res.results]);
|
|
81
|
+
setOffset(4);
|
|
82
|
+
setLoading(false);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
setOffset(0);
|
|
87
|
+
}
|
|
88
|
+
}, [scEvent]);
|
|
89
|
+
(0, react_1.useEffect)(() => {
|
|
90
|
+
if (open && offset !== null) {
|
|
91
|
+
setLoading(true);
|
|
92
|
+
api_services_1.EventService.getUsersGoingToEvent(scEvent.id, { offset, limit: 20 }).then((res) => {
|
|
93
|
+
setFollowers([...(offset === 0 ? [] : followers), ...res.results]);
|
|
94
|
+
setNext(res.next);
|
|
95
|
+
setLoading(false);
|
|
96
|
+
setOffset(null);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}, [open, followers, offset]);
|
|
100
|
+
/**
|
|
101
|
+
* Memoized fetchFollowers
|
|
102
|
+
*/
|
|
103
|
+
const fetchFollowers = (0, react_1.useCallback)(() => {
|
|
104
|
+
if (!next) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
api_services_1.http
|
|
108
|
+
.request({
|
|
109
|
+
url: next,
|
|
110
|
+
method: api_services_1.Endpoints.GetUsersGoingToEvent.method
|
|
111
|
+
})
|
|
112
|
+
.then((res) => {
|
|
113
|
+
setFollowers([...followers, ...res.data.results]);
|
|
114
|
+
setNext(res.data.next);
|
|
115
|
+
})
|
|
116
|
+
.catch((error) => utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error))
|
|
117
|
+
.then(() => setLoading(false));
|
|
118
|
+
}, [followers, scEvent, next]);
|
|
119
|
+
/**
|
|
120
|
+
* Opens dialog votes
|
|
121
|
+
*/
|
|
122
|
+
const handleToggleDialogOpen = (0, react_1.useCallback)(() => {
|
|
123
|
+
setOpen((prev) => !prev);
|
|
124
|
+
}, [setOpen]);
|
|
125
|
+
// RENDER
|
|
126
|
+
const theme = (0, material_1.useTheme)();
|
|
127
|
+
const isMobile = (0, useMediaQuery_1.default)(theme.breakpoints.down('md'));
|
|
128
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className), onClick: handleToggleDialogOpen, disabled: loading || !scEvent || scEvent.goings_counter === 0 }, rest, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ color: "primary", variant: "caption" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.eventPartecipantsButton.partecipants", id: "ui.eventPartecipantsButton.partecipants" }) })), loading || !scEvent ? ((0, jsx_runtime_1.jsx)(AvatarGroupSkeleton_1.default, Object.assign({}, rest))) : ((0, jsx_runtime_1.jsx)(material_1.AvatarGroup, Object.assign({ total: scEvent.goings_counter }, { children: followers.map((c) => ((0, jsx_runtime_1.jsx)(material_1.Avatar, { alt: c.username, src: c.avatar }, c.id))) })))] })), open && ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ className: classes.dialogRoot, title: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.eventPartecipantsButton.dialogTitle", id: "ui.eventPartecipantsButton.dialogTitle", values: { total: scEvent.goings_counter } }), onClose: handleToggleDialogOpen, open: open }, DialogProps, { children: (0, jsx_runtime_1.jsx)(InfiniteScroll_1.default, Object.assign({ dataLength: followers.length, next: fetchFollowers, hasMoreNext: next !== null || loading, loaderNext: (0, jsx_runtime_1.jsx)(User_1.UserSkeleton, { elevation: 0 }), height: isMobile ? '100%' : 400, endMessage: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.endMessage }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.eventPartecipantsButton.noOtherPartecipants", defaultMessage: "ui.eventPartecipantsButton.noOtherPartecipants" }) })) }, { children: (0, jsx_runtime_1.jsx)(material_1.List, { children: followers.map((follower) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { children: (0, jsx_runtime_1.jsx)(User_1.default, { elevation: 0, user: follower }) }, follower.id))) }) })) })))] }));
|
|
129
|
+
}
|
|
130
|
+
exports.default = EventPartecipantsButton;
|
|
@@ -14,7 +14,6 @@ const react_1 = require("react");
|
|
|
14
14
|
const react_intl_1 = require("react-intl");
|
|
15
15
|
const Errors_1 = require("../../constants/Errors");
|
|
16
16
|
const Pagination_1 = require("../../constants/Pagination");
|
|
17
|
-
const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
|
|
18
17
|
const CreateEventButton_1 = tslib_1.__importDefault(require("../CreateEventButton"));
|
|
19
18
|
const Event_1 = tslib_1.__importStar(require("../Event"));
|
|
20
19
|
const Skeleton_1 = tslib_1.__importDefault(require("../Events/Skeleton"));
|
|
@@ -194,7 +193,7 @@ function Events(inProps) {
|
|
|
194
193
|
* Renders root object (if content availability community option is false and user is anonymous, component is hidden)
|
|
195
194
|
*/
|
|
196
195
|
if (!contentAvailability && !scUserContext.user) {
|
|
197
|
-
return
|
|
196
|
+
return null;
|
|
198
197
|
}
|
|
199
198
|
if (loading) {
|
|
200
199
|
return (0, jsx_runtime_1.jsx)(Skeleton_1.default, {});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CacheStrategies } from '@selfcommunity/utils';
|
|
2
|
+
import { WidgetProps } from '../Widget';
|
|
3
|
+
export interface MyEventsWidgetProps extends WidgetProps {
|
|
4
|
+
/**
|
|
5
|
+
* Feed API Query Params
|
|
6
|
+
* @default [{'limit': 20, 'offset': 0}]
|
|
7
|
+
*/
|
|
8
|
+
endpointQueryParams?: Record<string, string | number>;
|
|
9
|
+
/**
|
|
10
|
+
* Caching strategies
|
|
11
|
+
* @default CacheStrategies.CACHE_FIRST
|
|
12
|
+
*/
|
|
13
|
+
cacheStrategy?: CacheStrategies;
|
|
14
|
+
/**
|
|
15
|
+
* Other props
|
|
16
|
+
*/
|
|
17
|
+
[p: string]: any;
|
|
18
|
+
}
|
|
19
|
+
export default function MyEventsWidget(inProps: MyEventsWidgetProps): JSX.Element;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const material_1 = require("@mui/material");
|
|
6
|
+
const styles_1 = require("@mui/material/styles");
|
|
7
|
+
const system_1 = require("@mui/system");
|
|
8
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
9
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
10
|
+
const types_1 = require("@selfcommunity/types");
|
|
11
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
12
|
+
const react_1 = require("react");
|
|
13
|
+
const react_intl_1 = require("react-intl");
|
|
14
|
+
const Errors_1 = require("../../constants/Errors");
|
|
15
|
+
const Pagination_1 = require("../../constants/Pagination");
|
|
16
|
+
const Calendar_1 = tslib_1.__importDefault(require("../../shared/Calendar"));
|
|
17
|
+
const EventInfoDetails_1 = tslib_1.__importDefault(require("../../shared/EventInfoDetails"));
|
|
18
|
+
const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
|
|
19
|
+
const widget_1 = require("../../utils/widget");
|
|
20
|
+
const EventPartecipantsButton_1 = tslib_1.__importDefault(require("../EventPartecipantsButton"));
|
|
21
|
+
const User_1 = tslib_1.__importDefault(require("../User"));
|
|
22
|
+
const Widget_1 = tslib_1.__importDefault(require("../Widget"));
|
|
23
|
+
const constants_1 = require("./constants");
|
|
24
|
+
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
25
|
+
const classes = {
|
|
26
|
+
root: `${constants_1.PREFIX}-root`,
|
|
27
|
+
titleWrapper: `${constants_1.PREFIX}-title-wrapper`,
|
|
28
|
+
content: `${constants_1.PREFIX}-content`,
|
|
29
|
+
firstDivider: `${constants_1.PREFIX}-first-divider`,
|
|
30
|
+
secondDivider: `${constants_1.PREFIX}-second-divider`,
|
|
31
|
+
actions: `${constants_1.PREFIX}-actions`,
|
|
32
|
+
actionButton: `${constants_1.PREFIX}-action-button`,
|
|
33
|
+
arrows: `${constants_1.PREFIX}-arrows`
|
|
34
|
+
};
|
|
35
|
+
const Root = (0, styles_1.styled)(Widget_1.default, {
|
|
36
|
+
name: constants_1.PREFIX,
|
|
37
|
+
slot: 'Root',
|
|
38
|
+
overridesResolver: (_props, styles) => styles.root
|
|
39
|
+
})();
|
|
40
|
+
function MyEventsWidget(inProps) {
|
|
41
|
+
var _a, _b, _c, _d, _e, _f;
|
|
42
|
+
// PROPS
|
|
43
|
+
const props = (0, system_1.useThemeProps)({
|
|
44
|
+
props: inProps,
|
|
45
|
+
name: constants_1.PREFIX
|
|
46
|
+
});
|
|
47
|
+
// CONST
|
|
48
|
+
const { endpointQueryParams = { limit: Pagination_1.DEFAULT_PAGINATION_LIMIT, offset: Pagination_1.DEFAULT_PAGINATION_OFFSET }, cacheStrategy } = props, rest = tslib_1.__rest(props, ["endpointQueryParams", "cacheStrategy"]);
|
|
49
|
+
// STATE
|
|
50
|
+
const [state, dispatch] = (0, react_1.useReducer)(widget_1.dataWidgetReducer, {
|
|
51
|
+
isLoadingNext: false,
|
|
52
|
+
next: null,
|
|
53
|
+
cacheKey: react_core_1.SCCache.getWidgetStateCacheKey(react_core_1.SCCache.USER_EVENTS_STATE_CACHE_PREFIX_KEY),
|
|
54
|
+
cacheStrategy,
|
|
55
|
+
visibleItems: 1
|
|
56
|
+
}, widget_1.stateWidgetInitializer);
|
|
57
|
+
const [eventIndex, setEventIndex] = (0, react_1.useState)(0);
|
|
58
|
+
// CONTEXT
|
|
59
|
+
const scUserContext = (0, react_core_1.useSCUser)();
|
|
60
|
+
const scRoutingContext = (0, react_core_1.useSCRouting)();
|
|
61
|
+
const { features } = (0, react_core_1.useSCPreferences)();
|
|
62
|
+
const eventsEnabled = (0, react_1.useMemo)(() => features && features.includes(types_1.SCFeatureName.EVENT) && features.includes(types_1.SCFeatureName.TAGGING), [features]);
|
|
63
|
+
/**
|
|
64
|
+
* Initialize component
|
|
65
|
+
* Fetch data only if the component is not initialized and it is not loading data
|
|
66
|
+
*/
|
|
67
|
+
const _initComponent = (0, react_1.useCallback)(() => {
|
|
68
|
+
if (!state.initialized && !state.isLoadingNext) {
|
|
69
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
|
|
70
|
+
api_services_1.EventService.getUserEvents(Object.assign({}, endpointQueryParams))
|
|
71
|
+
.then((payload) => {
|
|
72
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
|
|
73
|
+
})
|
|
74
|
+
.catch((error) => {
|
|
75
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
|
|
76
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}, [state.isLoadingNext, state.initialized, dispatch]);
|
|
80
|
+
const _fetchNext = (0, react_1.useCallback)(() => {
|
|
81
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
|
|
82
|
+
api_services_1.http
|
|
83
|
+
.request({
|
|
84
|
+
url: state.next,
|
|
85
|
+
method: api_services_1.Endpoints.GetUserEvents.method
|
|
86
|
+
})
|
|
87
|
+
.then((res) => {
|
|
88
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
|
|
89
|
+
setEventIndex((index) => index + 1);
|
|
90
|
+
})
|
|
91
|
+
.catch((error) => {
|
|
92
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
|
|
93
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
94
|
+
});
|
|
95
|
+
}, [dispatch, state.next]);
|
|
96
|
+
// EFFECTS
|
|
97
|
+
(0, react_1.useEffect)(() => {
|
|
98
|
+
let _t;
|
|
99
|
+
if (scUserContext.user) {
|
|
100
|
+
_t = setTimeout(_initComponent);
|
|
101
|
+
return () => {
|
|
102
|
+
clearTimeout(_t);
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}, [scUserContext.user]);
|
|
106
|
+
const handlePrev = (0, react_1.useCallback)(() => {
|
|
107
|
+
setEventIndex(eventIndex - 1);
|
|
108
|
+
}, [eventIndex]);
|
|
109
|
+
const handleNext = (0, react_1.useCallback)(() => {
|
|
110
|
+
if (eventIndex < state.results.length - 1) {
|
|
111
|
+
setEventIndex(eventIndex + 1);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
_fetchNext();
|
|
115
|
+
}
|
|
116
|
+
}, [eventIndex, state.results]);
|
|
117
|
+
// RENDER
|
|
118
|
+
if (!eventsEnabled) {
|
|
119
|
+
return (0, jsx_runtime_1.jsx)(HiddenPlaceholder_1.default, {});
|
|
120
|
+
}
|
|
121
|
+
if (!state.initialized || state.isLoadingNext) {
|
|
122
|
+
return (0, jsx_runtime_1.jsx)(Skeleton_1.default, {});
|
|
123
|
+
}
|
|
124
|
+
if (state.count === 0) {
|
|
125
|
+
return (0, jsx_runtime_1.jsx)(HiddenPlaceholder_1.default, {});
|
|
126
|
+
}
|
|
127
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, rest, { children: [(0, jsx_runtime_1.jsx)(system_1.Box, Object.assign({ className: classes.titleWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.myEventsWidget.title", defaultMessage: "ui.myEventsWidget.title" }) })) })), (0, jsx_runtime_1.jsxs)(system_1.Box, Object.assign({ position: "relative" }, { children: [(0, jsx_runtime_1.jsx)(material_1.CardMedia, { component: "img", height: "170px", image: ((_a = state.results[eventIndex]) === null || _a === void 0 ? void 0 : _a.emotional_image) || ((_b = state.results[eventIndex]) === null || _b === void 0 ? void 0 : _b.image_medium), alt: (_c = state.results[eventIndex]) === null || _c === void 0 ? void 0 : _c.name }), (0, jsx_runtime_1.jsx)(Calendar_1.default, { day: new Date((_d = state.results[eventIndex]) === null || _d === void 0 ? void 0 : _d.start_date).getDate() })] })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h3", marginBottom: "10px" }, { children: (_e = state.results[eventIndex]) === null || _e === void 0 ? void 0 : _e.name })), (0, jsx_runtime_1.jsx)(EventInfoDetails_1.default, { event: state.results[eventIndex] }), (0, jsx_runtime_1.jsx)(User_1.default, { user: (_f = state.results[eventIndex]) === null || _f === void 0 ? void 0 : _f.managed_by, elevation: 0, secondary: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "caption" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.myEventsWidget.planner", defaultMessage: "ui.myEventsWidget.planner" }) })) }), (0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.firstDivider }), (0, jsx_runtime_1.jsx)(EventPartecipantsButton_1.default, { event: state.results[eventIndex], eventId: state.results[eventIndex].id }), (0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.secondDivider })] })), (0, jsx_runtime_1.jsxs)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: [(0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ size: "small", disabled: eventIndex === 0, className: classes.arrows, onClick: handlePrev }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "chevron_left" }) })), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ href: scRoutingContext.url(react_core_1.SCRoutes.EVENTS_ROUTE_NAME, {}), className: classes.actionButton }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "caption" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.myEventsWidget.showAll", defaultMessage: "ui.myEventsWidget.showAll" }) })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ size: "small", disabled: eventIndex === state.count - 1, className: classes.arrows, onClick: handleNext }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "chevron_right" }) }))] }))] })));
|
|
128
|
+
}
|
|
129
|
+
exports.default = MyEventsWidget;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function MyEventsWidgetSkeleton(): JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const material_1 = require("@mui/material");
|
|
6
|
+
const Skeleton_1 = tslib_1.__importDefault(require("@mui/material/Skeleton"));
|
|
7
|
+
const styles_1 = require("@mui/material/styles");
|
|
8
|
+
const Widget_1 = tslib_1.__importDefault(require("../Widget"));
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const classes = {
|
|
11
|
+
root: `${constants_1.PREFIX}-skeleton-root`,
|
|
12
|
+
calendar: `${constants_1.PREFIX}-calendar`,
|
|
13
|
+
content: `${constants_1.PREFIX}-content`,
|
|
14
|
+
firstDivider: `${constants_1.PREFIX}-first-divider`,
|
|
15
|
+
secondDivider: `${constants_1.PREFIX}-second-divider`,
|
|
16
|
+
actions: `${constants_1.PREFIX}-actions`
|
|
17
|
+
};
|
|
18
|
+
const Root = (0, styles_1.styled)(Widget_1.default, {
|
|
19
|
+
name: constants_1.PREFIX,
|
|
20
|
+
slot: 'SkeletonRoot'
|
|
21
|
+
})();
|
|
22
|
+
function MyEventsWidgetSkeleton() {
|
|
23
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, { children: [(0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ padding: "12px 16px" }, { children: (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "141px", height: "23px" }) })), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ position: "relative" }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { variant: "rectangular", animation: "wave", width: "100%", height: "170px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { className: classes.calendar, variant: "rounded", animation: "wave", width: "60px", height: "60px" })] })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "26%", height: "30px" }), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", alignItems: "center", gap: "8px", marginBottom: "9px" }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "circular", width: "21px", height: "21px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "229px", height: "20px" })] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", alignItems: "center", gap: "8px", marginBottom: "9px" }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "circular", width: "21px", height: "21px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "124px", height: "20px" })] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", alignItems: "center", gap: "8px", marginBottom: "14px" }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "circular", width: "21px", height: "21px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "27%", height: "20px" })] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", gap: "8px", alignItems: "center", height: "57px" }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "circular", width: "36px", height: "36px" }), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ gap: "1px" }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "75px", height: "15px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "86px", height: "16px" })] }))] })), (0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.firstDivider }), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", gap: "8px", alignItems: "center", height: "44px", marginTop: "8px" }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "68px", height: "20px" }), (0, jsx_runtime_1.jsxs)(material_1.AvatarGroup, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "circular", width: "40px", height: "40px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "circular", width: "40px", height: "40px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "circular", width: "40px", height: "40px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "circular", width: "40px", height: "40px" })] })] })), (0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.secondDivider })] })), (0, jsx_runtime_1.jsxs)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: [(0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "rounded", width: "14px", height: "14px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", width: "52px", height: "20px" }), (0, jsx_runtime_1.jsx)(Skeleton_1.default, { animation: "wave", variant: "rounded", width: "14px", height: "14px" })] }))] })));
|
|
24
|
+
}
|
|
25
|
+
exports.default = MyEventsWidgetSkeleton;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PREFIX = "SCMyEventsWidget";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MyEventsWidgetSkeleton = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const MyEventsWidget_1 = tslib_1.__importDefault(require("./MyEventsWidget"));
|
|
6
|
+
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
7
|
+
exports.MyEventsWidgetSkeleton = Skeleton_1.default;
|
|
8
|
+
exports.default = MyEventsWidget_1.default;
|
|
@@ -70,7 +70,7 @@ function User(inProps) {
|
|
|
70
70
|
});
|
|
71
71
|
const { userId = null, user = null, handleIgnoreAction, className = null, followConnectUserButtonProps = {}, showFollowers = false, elevation, badgeContent = null, actions = null, isGroupAdmin = false, buttonProps = null, secondary = null } = props, rest = tslib_1.__rest(props, ["userId", "user", "handleIgnoreAction", "className", "followConnectUserButtonProps", "showFollowers", "elevation", "badgeContent", "actions", "isGroupAdmin", "buttonProps", "secondary"]);
|
|
72
72
|
// STATE
|
|
73
|
-
const { scUser
|
|
73
|
+
const { scUser } = (0, react_core_1.useSCFetchUser)({ id: userId, user });
|
|
74
74
|
// CONTEXT
|
|
75
75
|
const scRoutingContext = (0, react_core_1.useSCRouting)();
|
|
76
76
|
// PREFERENCES
|