@selfcommunity/react-ui 0.7.50-events.60 → 0.7.50-events.62
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/EventMembersWidget/EventMembersWidget.d.ts +43 -0
- package/lib/cjs/components/EventMembersWidget/EventMembersWidget.js +150 -0
- package/lib/cjs/components/EventMembersWidget/Skeleton.d.ts +2 -0
- package/lib/cjs/components/EventMembersWidget/Skeleton.js +29 -0
- package/lib/cjs/components/EventMembersWidget/constants.d.ts +1 -0
- package/lib/cjs/components/EventMembersWidget/constants.js +4 -0
- package/lib/cjs/components/EventMembersWidget/index.d.ts +4 -0
- package/lib/cjs/components/EventMembersWidget/index.js +8 -0
- package/lib/cjs/components/InviteEventButton/InviteEventButton.d.ts +60 -0
- package/lib/cjs/components/InviteEventButton/InviteEventButton.js +82 -0
- package/lib/cjs/components/InviteEventButton/index.d.ts +3 -0
- package/lib/cjs/components/InviteEventButton/index.js +5 -0
- package/lib/cjs/components/RelatedEventsWidget/RelatedEventsWidget.d.ts +43 -0
- package/lib/cjs/components/RelatedEventsWidget/RelatedEventsWidget.js +125 -0
- package/lib/cjs/components/RelatedEventsWidget/Skeleton.d.ts +2 -0
- package/lib/cjs/components/RelatedEventsWidget/Skeleton.js +28 -0
- package/lib/cjs/components/RelatedEventsWidget/constants.d.ts +1 -0
- package/lib/cjs/components/RelatedEventsWidget/constants.js +4 -0
- package/lib/cjs/components/RelatedEventsWidget/index.d.ts +4 -0
- package/lib/cjs/components/RelatedEventsWidget/index.js +8 -0
- package/lib/cjs/components/SuggestedEventsWidget/SuggestedEventsWidget.js +2 -3
- package/lib/cjs/index.d.ts +5 -2
- package/lib/cjs/index.js +19 -10
- package/lib/esm/components/EventMembersWidget/EventMembersWidget.d.ts +43 -0
- package/lib/esm/components/EventMembersWidget/EventMembersWidget.js +147 -0
- package/lib/esm/components/EventMembersWidget/Skeleton.d.ts +2 -0
- package/lib/esm/components/EventMembersWidget/Skeleton.js +25 -0
- package/lib/esm/components/EventMembersWidget/constants.d.ts +1 -0
- package/lib/esm/components/EventMembersWidget/constants.js +1 -0
- package/lib/esm/components/EventMembersWidget/index.d.ts +4 -0
- package/lib/esm/components/EventMembersWidget/index.js +4 -0
- package/lib/esm/components/InviteEventButton/InviteEventButton.d.ts +60 -0
- package/lib/esm/components/InviteEventButton/InviteEventButton.js +79 -0
- package/lib/esm/components/InviteEventButton/index.d.ts +3 -0
- package/lib/esm/components/InviteEventButton/index.js +2 -0
- package/lib/esm/components/RelatedEventsWidget/RelatedEventsWidget.d.ts +43 -0
- package/lib/esm/components/RelatedEventsWidget/RelatedEventsWidget.js +122 -0
- package/lib/esm/components/RelatedEventsWidget/Skeleton.d.ts +2 -0
- package/lib/esm/components/RelatedEventsWidget/Skeleton.js +24 -0
- package/lib/esm/components/RelatedEventsWidget/constants.d.ts +1 -0
- package/lib/esm/components/RelatedEventsWidget/constants.js +1 -0
- package/lib/esm/components/RelatedEventsWidget/index.d.ts +4 -0
- package/lib/esm/components/RelatedEventsWidget/index.js +4 -0
- package/lib/esm/components/SuggestedEventsWidget/SuggestedEventsWidget.js +2 -3
- package/lib/esm/index.d.ts +5 -2
- package/lib/esm/index.js +7 -4
- package/lib/umd/{401.js → 224.js} +2 -2
- package/lib/umd/react-ui.js +1 -1
- package/package.json +7 -7
- /package/lib/umd/{401.js.LICENSE.txt → 224.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SCEventType } from '@selfcommunity/types';
|
|
2
|
+
import { CacheStrategies } from '@selfcommunity/utils';
|
|
3
|
+
import 'swiper/css';
|
|
4
|
+
import { BaseDialogProps } from '../../shared/BaseDialog';
|
|
5
|
+
import { UserProps } from '../User';
|
|
6
|
+
import { WidgetProps } from '../Widget';
|
|
7
|
+
export interface EventMembersWidgetProps extends WidgetProps {
|
|
8
|
+
/**
|
|
9
|
+
* Event Object
|
|
10
|
+
* @default null
|
|
11
|
+
*/
|
|
12
|
+
event?: SCEventType;
|
|
13
|
+
/**
|
|
14
|
+
* Id of event object
|
|
15
|
+
* @default null
|
|
16
|
+
*/
|
|
17
|
+
eventId?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Props to spread to single user object
|
|
20
|
+
* @default empty object
|
|
21
|
+
*/
|
|
22
|
+
userProps?: UserProps;
|
|
23
|
+
/**
|
|
24
|
+
* Feed API Query Params
|
|
25
|
+
* @default [{'limit': 20, 'offset': 0}]
|
|
26
|
+
*/
|
|
27
|
+
endpointQueryParams?: Record<string, string | number>;
|
|
28
|
+
/**
|
|
29
|
+
* Caching strategies
|
|
30
|
+
* @default CacheStrategies.CACHE_FIRST
|
|
31
|
+
*/
|
|
32
|
+
cacheStrategy?: CacheStrategies;
|
|
33
|
+
/**
|
|
34
|
+
* Props to spread to users suggestion dialog
|
|
35
|
+
* @default {}
|
|
36
|
+
*/
|
|
37
|
+
dialogProps?: BaseDialogProps;
|
|
38
|
+
/**
|
|
39
|
+
* Other props
|
|
40
|
+
*/
|
|
41
|
+
[p: string]: any;
|
|
42
|
+
}
|
|
43
|
+
export default function EventMembersWidget(inProps: EventMembersWidgetProps): JSX.Element;
|
|
@@ -0,0 +1,150 @@
|
|
|
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 lab_1 = require("@mui/lab");
|
|
6
|
+
const material_1 = require("@mui/material");
|
|
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 utils_1 = require("@selfcommunity/utils");
|
|
11
|
+
const react_1 = require("react");
|
|
12
|
+
const react_intl_1 = require("react-intl");
|
|
13
|
+
require("swiper/css");
|
|
14
|
+
const Errors_1 = require("../../constants/Errors");
|
|
15
|
+
const Pagination_1 = require("../../constants/Pagination");
|
|
16
|
+
const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
|
|
17
|
+
const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
|
|
18
|
+
const InfiniteScroll_1 = tslib_1.__importDefault(require("../../shared/InfiniteScroll"));
|
|
19
|
+
const widget_1 = require("../../utils/widget");
|
|
20
|
+
const InviteEventButton_1 = tslib_1.__importDefault(require("../InviteEventButton"));
|
|
21
|
+
const User_1 = tslib_1.__importStar(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
|
+
content: `${constants_1.PREFIX}-content`,
|
|
28
|
+
title: `${constants_1.PREFIX}-title`,
|
|
29
|
+
tabsWrapper: `${constants_1.PREFIX}-tabs-wrapper`,
|
|
30
|
+
tabLabelWrapper: `${constants_1.PREFIX}-tab-label-wrapper`,
|
|
31
|
+
tabPanel: `${constants_1.PREFIX}-tab-panel`,
|
|
32
|
+
actions: `${constants_1.PREFIX}-actions`,
|
|
33
|
+
actionButton: `${constants_1.PREFIX}-action-button`,
|
|
34
|
+
dialogRoot: `${constants_1.PREFIX}-dialog-root`,
|
|
35
|
+
infiniteScroll: `${constants_1.PREFIX}-infinite-scroll`,
|
|
36
|
+
endMessage: `${constants_1.PREFIX}-end-message`
|
|
37
|
+
};
|
|
38
|
+
const Root = (0, system_1.styled)(Widget_1.default, {
|
|
39
|
+
name: constants_1.PREFIX,
|
|
40
|
+
slot: 'Root',
|
|
41
|
+
overridesResolver: (_props, styles) => styles.root
|
|
42
|
+
})();
|
|
43
|
+
const DialogRoot = (0, system_1.styled)(BaseDialog_1.default, {
|
|
44
|
+
name: constants_1.PREFIX,
|
|
45
|
+
slot: 'DialogRoot',
|
|
46
|
+
overridesResolver: (_props, styles) => styles.dialogRoot
|
|
47
|
+
})();
|
|
48
|
+
function EventMembersWidget(inProps) {
|
|
49
|
+
// PROPS
|
|
50
|
+
const props = (0, material_1.useThemeProps)({
|
|
51
|
+
props: inProps,
|
|
52
|
+
name: constants_1.PREFIX
|
|
53
|
+
});
|
|
54
|
+
const { event, eventId, userProps = {}, endpointQueryParams = { limit: Pagination_1.DEFAULT_PAGINATION_LIMIT, offset: Pagination_1.DEFAULT_PAGINATION_OFFSET }, cacheStrategy, dialogProps } = props, rest = tslib_1.__rest(props, ["event", "eventId", "userProps", "endpointQueryParams", "cacheStrategy", "dialogProps"]);
|
|
55
|
+
// STATE
|
|
56
|
+
const [partecipants, dispatchPartecipants] = (0, react_1.useReducer)(widget_1.dataWidgetReducer, {
|
|
57
|
+
isLoadingNext: false,
|
|
58
|
+
next: null,
|
|
59
|
+
cacheKey: react_core_1.SCCache.getWidgetStateCacheKey(react_core_1.SCCache.USER_EVENTS_STATE_CACHE_PREFIX_KEY),
|
|
60
|
+
cacheStrategy,
|
|
61
|
+
visibleItems: Pagination_1.DEFAULT_PAGINATION_LIMIT
|
|
62
|
+
}, widget_1.stateWidgetInitializer);
|
|
63
|
+
const [invited, dispatchInvited] = (0, react_1.useReducer)(widget_1.dataWidgetReducer, {
|
|
64
|
+
isLoadingNext: false,
|
|
65
|
+
next: null,
|
|
66
|
+
cacheKey: react_core_1.SCCache.getWidgetStateCacheKey(react_core_1.SCCache.USER_EVENTS_STATE_CACHE_PREFIX_KEY),
|
|
67
|
+
cacheStrategy,
|
|
68
|
+
visibleItems: Pagination_1.DEFAULT_PAGINATION_LIMIT
|
|
69
|
+
}, widget_1.stateWidgetInitializer);
|
|
70
|
+
const [openDialog, setOpenDialog] = (0, react_1.useState)(false);
|
|
71
|
+
const [invitedNumber, setInvitedNumber] = (0, react_1.useState)(0);
|
|
72
|
+
const [tabValue, setTabValue] = (0, react_1.useState)('1');
|
|
73
|
+
const state = (0, react_1.useMemo)(() => (tabValue === '1' ? partecipants : invited), [tabValue, partecipants, invited]);
|
|
74
|
+
const dispatch = (0, react_1.useCallback)((value) => (tabValue === '1' ? dispatchPartecipants(value) : dispatchInvited(value)), [tabValue, dispatchPartecipants, dispatchInvited]);
|
|
75
|
+
// CONTEXT
|
|
76
|
+
const scUserContext = (0, react_core_1.useSCUser)();
|
|
77
|
+
// HOOKS
|
|
78
|
+
const { scEvent } = (0, react_core_1.useSCFetchEvent)({ id: eventId, event });
|
|
79
|
+
const _initPartecipants = (0, react_1.useCallback)(() => {
|
|
80
|
+
if (!partecipants.initialized && !partecipants.isLoadingNext) {
|
|
81
|
+
dispatchPartecipants({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
|
|
82
|
+
api_services_1.EventService.getUsersGoingToEvent(scEvent.id, Object.assign({}, endpointQueryParams))
|
|
83
|
+
.then((payload) => {
|
|
84
|
+
dispatchPartecipants({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
|
|
85
|
+
})
|
|
86
|
+
.catch((error) => {
|
|
87
|
+
dispatchPartecipants({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
|
|
88
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}, [partecipants.isLoadingNext, partecipants.initialized, dispatchPartecipants, scEvent]);
|
|
92
|
+
const _initInvited = (0, react_1.useCallback)(() => {
|
|
93
|
+
var _a;
|
|
94
|
+
if (!invited.initialized && !invited.isLoadingNext && ((_a = scUserContext.user) === null || _a === void 0 ? void 0 : _a.id) === scEvent.managed_by.id) {
|
|
95
|
+
dispatchInvited({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
|
|
96
|
+
api_services_1.EventService.getEventInvitedUsers(scEvent.id, Object.assign({}, endpointQueryParams))
|
|
97
|
+
.then((payload) => {
|
|
98
|
+
dispatchInvited({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
|
|
99
|
+
setInvitedNumber(payload.count);
|
|
100
|
+
})
|
|
101
|
+
.catch((error) => {
|
|
102
|
+
dispatchInvited({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
|
|
103
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}, [invited.isLoadingNext, invited.initialized, dispatchInvited, scUserContext.user, scEvent]);
|
|
107
|
+
// EFFECTS
|
|
108
|
+
(0, react_1.useEffect)(() => {
|
|
109
|
+
let _t;
|
|
110
|
+
if (scUserContext.user && scEvent) {
|
|
111
|
+
_t = setTimeout(() => {
|
|
112
|
+
_initPartecipants();
|
|
113
|
+
_initInvited();
|
|
114
|
+
});
|
|
115
|
+
return () => {
|
|
116
|
+
clearTimeout(_t);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}, [scUserContext.user, scEvent]);
|
|
120
|
+
// HANDLERS
|
|
121
|
+
/**
|
|
122
|
+
* Handles pagination
|
|
123
|
+
*/
|
|
124
|
+
const handleNext = (0, react_1.useCallback)(() => {
|
|
125
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
|
|
126
|
+
api_services_1.http
|
|
127
|
+
.request({
|
|
128
|
+
url: state.next,
|
|
129
|
+
method: api_services_1.Endpoints.UserSuggestion.method
|
|
130
|
+
})
|
|
131
|
+
.then((res) => {
|
|
132
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
|
|
133
|
+
});
|
|
134
|
+
}, [dispatch, state.next, state.isLoadingNext, state.initialized]);
|
|
135
|
+
const handleToggleDialogOpen = (0, react_1.useCallback)(() => {
|
|
136
|
+
setOpenDialog((prev) => !prev);
|
|
137
|
+
}, []);
|
|
138
|
+
const handleTabChange = (0, react_1.useCallback)((_evt, newTabValue) => {
|
|
139
|
+
setTabValue(newTabValue);
|
|
140
|
+
}, []);
|
|
141
|
+
if (!scEvent && !state.initialized) {
|
|
142
|
+
return (0, jsx_runtime_1.jsx)(Skeleton_1.default, {});
|
|
143
|
+
}
|
|
144
|
+
// RENDER
|
|
145
|
+
if (!scEvent) {
|
|
146
|
+
return (0, jsx_runtime_1.jsx)(HiddenPlaceholder_1.default, {});
|
|
147
|
+
}
|
|
148
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, rest, { children: [(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.eventMembersWidget.invited", defaultMessage: "ui.eventMembersWidget.invited" }) })), (0, jsx_runtime_1.jsxs)(lab_1.TabContext, Object.assign({ value: tabValue }, { children: [(0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.tabsWrapper }, { children: (0, jsx_runtime_1.jsxs)(lab_1.TabList, Object.assign({ onChange: handleTabChange, textColor: "secondary", indicatorColor: "secondary", variant: "fullWidth" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Tab, { label: (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h3" }, { children: partecipants.count })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle2" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.eventMembersWidget.partecipants", defaultMessage: "ui.eventMembersWidget.partecipants" }) }))] })), value: "1" }), invited && ((0, jsx_runtime_1.jsx)(material_1.Tab, { label: (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h3" }, { children: invitedNumber })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle2" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.eventMembersWidget.invited", defaultMessage: "ui.eventMembersWidget.invited" }) }))] })), value: "2" }))] })) })), (0, jsx_runtime_1.jsx)(lab_1.TabPanel, Object.assign({ value: "1", className: classes.tabPanel }, { children: (0, jsx_runtime_1.jsx)(material_1.List, { children: partecipants.results.map((user) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { children: (0, jsx_runtime_1.jsx)(User_1.default, Object.assign({ elevation: 0, user: user }, userProps)) }, user.id))) }) })), invited && ((0, jsx_runtime_1.jsx)(lab_1.TabPanel, Object.assign({ value: "2", className: classes.tabPanel }, { children: (0, jsx_runtime_1.jsx)(material_1.List, { children: invited.results.map((user) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { children: (0, jsx_runtime_1.jsx)(User_1.default, Object.assign({ elevation: 0, user: user }, userProps, { actions: (0, jsx_runtime_1.jsx)(InviteEventButton_1.default, { event: scEvent, user: scUserContext.user, setInvitedNumber: setInvitedNumber }) })) }, user.id))) }) })))] }))] })), state.count > state.visibleItems && ((0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ onClick: handleToggleDialogOpen, 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.eventMembersWidget.showAll", defaultMessage: "ui.eventMembersWidget.showAll" }) })) })) }))), openDialog && ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ className: classes.dialogRoot, title: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.eventMembersWidget.title", id: "ui.eventMembersWidget.title" }), onClose: handleToggleDialogOpen, open: openDialog }, dialogProps, { children: (0, jsx_runtime_1.jsx)(InfiniteScroll_1.default, Object.assign({ dataLength: state.results.length, next: handleNext, hasMoreNext: Boolean(state.next), loaderNext: (0, jsx_runtime_1.jsx)(User_1.UserSkeleton, Object.assign({ elevation: 0 }, userProps)), className: classes.infiniteScroll, 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.eventMembersWidget.noMoreResults", defaultMessage: "ui.eventMembersWidget.noMoreResults" }) })) }, { children: (0, jsx_runtime_1.jsx)(material_1.List, { children: state.results.map((user) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { children: (0, jsx_runtime_1.jsx)(User_1.default, Object.assign({ elevation: 0, user: user }, userProps)) }, user.id))) }) })) })))] })));
|
|
149
|
+
}
|
|
150
|
+
exports.default = EventMembersWidget;
|
|
@@ -0,0 +1,29 @@
|
|
|
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 lab_1 = require("@mui/lab");
|
|
6
|
+
const material_1 = require("@mui/material");
|
|
7
|
+
const system_1 = require("@mui/system");
|
|
8
|
+
require("swiper/css");
|
|
9
|
+
const User_1 = require("../User");
|
|
10
|
+
const Widget_1 = tslib_1.__importDefault(require("../Widget"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const classes = {
|
|
13
|
+
root: `${constants_1.PREFIX}-skeleton-root`,
|
|
14
|
+
content: `${constants_1.PREFIX}-content`,
|
|
15
|
+
title: `${constants_1.PREFIX}-title`,
|
|
16
|
+
tabsWrapper: `${constants_1.PREFIX}-tabs-wrapper`,
|
|
17
|
+
tabLabelWrapper: `${constants_1.PREFIX}-tab-label-wrapper`,
|
|
18
|
+
tabPanel: `${constants_1.PREFIX}-tab-panel`,
|
|
19
|
+
actions: `${constants_1.PREFIX}-actions`
|
|
20
|
+
};
|
|
21
|
+
const Root = (0, system_1.styled)(Widget_1.default, {
|
|
22
|
+
name: constants_1.PREFIX,
|
|
23
|
+
slot: 'SkeletonRoot',
|
|
24
|
+
overridesResolver: (_props, styles) => styles.skeletonRoot
|
|
25
|
+
})();
|
|
26
|
+
function EventMembersWidgetSkeleton() {
|
|
27
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, { children: [(0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsx)(material_1.Skeleton, { animation: "wave", width: "53px", height: "25px", className: classes.title }), (0, jsx_runtime_1.jsxs)(lab_1.TabContext, Object.assign({ value: "1" }, { children: [(0, jsx_runtime_1.jsx)(system_1.Box, Object.assign({ className: classes.tabsWrapper }, { children: (0, jsx_runtime_1.jsxs)(lab_1.TabList, Object.assign({ variant: "fullWidth" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Tab, { label: (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [(0, jsx_runtime_1.jsx)(material_1.Skeleton, { animation: "wave", width: "26px", height: "24px" }), (0, jsx_runtime_1.jsx)(material_1.Skeleton, { animation: "wave", width: "106px", height: "19px" })] })), value: "1" }), (0, jsx_runtime_1.jsx)(material_1.Tab, { label: (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [(0, jsx_runtime_1.jsx)(material_1.Skeleton, { animation: "wave", width: "26px", height: "24px" }), (0, jsx_runtime_1.jsx)(material_1.Skeleton, { animation: "wave", width: "106px", height: "19px" })] })), value: "2" })] })) })), (0, jsx_runtime_1.jsx)(lab_1.TabPanel, Object.assign({ value: "1", className: classes.tabPanel }, { children: (0, jsx_runtime_1.jsx)(material_1.List, { children: [1, 2, 3, 4].map((_element, i) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { children: (0, jsx_runtime_1.jsx)(User_1.UserSkeleton, {}) }, i))) }) })), (0, jsx_runtime_1.jsx)(lab_1.TabPanel, Object.assign({ value: "2", className: classes.tabPanel }, { children: (0, jsx_runtime_1.jsx)(material_1.List, { children: [1, 2, 3, 4].map((_element, i) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { children: (0, jsx_runtime_1.jsx)(User_1.UserSkeleton, {}) }, i))) }) }))] }))] })), (0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Skeleton, { animation: "wave", width: "52px", height: "20px" }) }))] })));
|
|
28
|
+
}
|
|
29
|
+
exports.default = EventMembersWidgetSkeleton;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PREFIX = "SCEventMembersWidget";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventMembersWidgetSkeleton = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const EventMembersWidget_1 = tslib_1.__importDefault(require("./EventMembersWidget"));
|
|
6
|
+
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
7
|
+
exports.EventMembersWidgetSkeleton = Skeleton_1.default;
|
|
8
|
+
exports.default = EventMembersWidget_1.default;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { SCEventType, SCUserType } from '@selfcommunity/types';
|
|
2
|
+
import { Dispatch, HTMLAttributes, SetStateAction } from 'react';
|
|
3
|
+
export interface InviteEventButtonProps {
|
|
4
|
+
/**
|
|
5
|
+
* Overrides or extends the styles applied to the component.
|
|
6
|
+
* @default null
|
|
7
|
+
*/
|
|
8
|
+
className?: HTMLAttributes<HTMLButtonElement>['className'];
|
|
9
|
+
/**
|
|
10
|
+
* Id of the event
|
|
11
|
+
* @default null
|
|
12
|
+
*/
|
|
13
|
+
eventId?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Event
|
|
16
|
+
* @default null
|
|
17
|
+
*/
|
|
18
|
+
event?: SCEventType;
|
|
19
|
+
/**
|
|
20
|
+
* Id of the user
|
|
21
|
+
* @default null
|
|
22
|
+
*/
|
|
23
|
+
userId?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Event
|
|
26
|
+
* @default null
|
|
27
|
+
*/
|
|
28
|
+
user?: SCUserType;
|
|
29
|
+
/**
|
|
30
|
+
* setInvitedNumber set state action
|
|
31
|
+
*/
|
|
32
|
+
setInvitedNumber?: Dispatch<SetStateAction<number>>;
|
|
33
|
+
/**
|
|
34
|
+
* Others properties
|
|
35
|
+
*/
|
|
36
|
+
[p: string]: any;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* > API documentation for the Community-JS Invite Event Button component. Learn about the available props and the CSS API.
|
|
40
|
+
|
|
41
|
+
#### Import
|
|
42
|
+
|
|
43
|
+
```jsx
|
|
44
|
+
import {InviteEventButton} from '@selfcommunity/react-ui';
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### Component Name
|
|
48
|
+
|
|
49
|
+
The name `SCInviteEventButton` can be used when providing style overrides in the theme.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
#### CSS
|
|
53
|
+
|
|
54
|
+
|Rule Name|Global class|Description|
|
|
55
|
+
|---|---|---|
|
|
56
|
+
|root|.SCInviteEventButton-root|Styles applied to the root element.|
|
|
57
|
+
|
|
58
|
+
* @param inProps
|
|
59
|
+
*/
|
|
60
|
+
export default function InviteEventButton(inProps: InviteEventButtonProps): JSX.Element;
|
|
@@ -0,0 +1,82 @@
|
|
|
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 lab_1 = require("@mui/lab");
|
|
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 utils_1 = require("@selfcommunity/utils");
|
|
11
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
12
|
+
const react_1 = require("react");
|
|
13
|
+
const react_intl_1 = require("react-intl");
|
|
14
|
+
const Errors_1 = require("../../constants/Errors");
|
|
15
|
+
const PREFIX = 'SCInviteEventButton';
|
|
16
|
+
const classes = {
|
|
17
|
+
root: `${PREFIX}-root`
|
|
18
|
+
};
|
|
19
|
+
const InviteButton = (0, styles_1.styled)(lab_1.LoadingButton, {
|
|
20
|
+
name: PREFIX,
|
|
21
|
+
slot: 'Root',
|
|
22
|
+
overridesResolver: (_props, styles) => styles.root
|
|
23
|
+
})();
|
|
24
|
+
/**
|
|
25
|
+
* > API documentation for the Community-JS Invite Event Button component. Learn about the available props and the CSS API.
|
|
26
|
+
|
|
27
|
+
#### Import
|
|
28
|
+
|
|
29
|
+
```jsx
|
|
30
|
+
import {InviteEventButton} from '@selfcommunity/react-ui';
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
#### Component Name
|
|
34
|
+
|
|
35
|
+
The name `SCInviteEventButton` can be used when providing style overrides in the theme.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
#### CSS
|
|
39
|
+
|
|
40
|
+
|Rule Name|Global class|Description|
|
|
41
|
+
|---|---|---|
|
|
42
|
+
|root|.SCInviteEventButton-root|Styles applied to the root element.|
|
|
43
|
+
|
|
44
|
+
* @param inProps
|
|
45
|
+
*/
|
|
46
|
+
function InviteEventButton(inProps) {
|
|
47
|
+
// PROPS
|
|
48
|
+
const props = (0, system_1.useThemeProps)({
|
|
49
|
+
props: inProps,
|
|
50
|
+
name: PREFIX
|
|
51
|
+
});
|
|
52
|
+
const { className, eventId, event, userId, user, setInvitedNumber } = props, rest = tslib_1.__rest(props, ["className", "eventId", "event", "userId", "user", "setInvitedNumber"]);
|
|
53
|
+
// STATE
|
|
54
|
+
const { scEvent } = (0, react_core_1.useSCFetchEvent)({ id: eventId, event });
|
|
55
|
+
const { scUser } = (0, react_core_1.useSCFetchUser)({ id: userId, user });
|
|
56
|
+
const [invited, setInvited] = (0, react_1.useState)(true);
|
|
57
|
+
const handleInviteAction = (0, react_1.useCallback)(() => {
|
|
58
|
+
setInvited(null);
|
|
59
|
+
if (invited) {
|
|
60
|
+
api_services_1.EventService.removeInviteEvent(scEvent.id, { users: [scUser.id] })
|
|
61
|
+
.then(() => {
|
|
62
|
+
setInvited(!invited);
|
|
63
|
+
setInvitedNumber((prev) => prev - 1);
|
|
64
|
+
})
|
|
65
|
+
.catch((_error) => {
|
|
66
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, _error);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
api_services_1.EventService.inviteOrAcceptEventRequest(scEvent.id, { users: [scUser.id] })
|
|
71
|
+
.then(() => {
|
|
72
|
+
setInvited(!invited);
|
|
73
|
+
setInvitedNumber((prev) => prev + 1);
|
|
74
|
+
})
|
|
75
|
+
.catch((_error) => {
|
|
76
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, _error);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}, [scEvent, scUser]);
|
|
80
|
+
return ((0, jsx_runtime_1.jsx)(InviteButton, Object.assign({ size: "small", variant: "outlined", onClick: handleInviteAction, loading: invited === null, className: (0, classnames_1.default)(classes.root, className) }, rest, { children: invited ? ((0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.inviteEventButton.remove", id: "ui.inviteEventButton.remove" })) : ((0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.inviteEventButton.invite", id: "ui.inviteEventButton.invite" })) })));
|
|
81
|
+
}
|
|
82
|
+
exports.default = InviteEventButton;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SCEventType } from '@selfcommunity/types';
|
|
2
|
+
import { CacheStrategies } from '@selfcommunity/utils';
|
|
3
|
+
import 'swiper/css';
|
|
4
|
+
import { BaseDialogProps } from '../../shared/BaseDialog';
|
|
5
|
+
import { EventProps } from '../Event';
|
|
6
|
+
import { WidgetProps } from '../Widget';
|
|
7
|
+
export interface RelatedEventsWidgetProps extends WidgetProps {
|
|
8
|
+
/**
|
|
9
|
+
* Event Object
|
|
10
|
+
* @default null
|
|
11
|
+
*/
|
|
12
|
+
event?: SCEventType;
|
|
13
|
+
/**
|
|
14
|
+
* Id of event object
|
|
15
|
+
* @default null
|
|
16
|
+
*/
|
|
17
|
+
eventId?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Props to spread to single event object
|
|
20
|
+
* @default {}
|
|
21
|
+
*/
|
|
22
|
+
eventComponentProps?: EventProps;
|
|
23
|
+
/**
|
|
24
|
+
* Feed API Query Params
|
|
25
|
+
* @default [{'limit': 20, 'offset': 0}]
|
|
26
|
+
*/
|
|
27
|
+
endpointQueryParams?: Record<string, string | number>;
|
|
28
|
+
/**
|
|
29
|
+
* Caching strategies
|
|
30
|
+
* @default CacheStrategies.CACHE_FIRST
|
|
31
|
+
*/
|
|
32
|
+
cacheStrategy?: CacheStrategies;
|
|
33
|
+
/**
|
|
34
|
+
* Props to spread to users suggestion dialog
|
|
35
|
+
* @default {}
|
|
36
|
+
*/
|
|
37
|
+
dialogProps?: BaseDialogProps;
|
|
38
|
+
/**
|
|
39
|
+
* Other props
|
|
40
|
+
*/
|
|
41
|
+
[p: string]: any;
|
|
42
|
+
}
|
|
43
|
+
export default function RelatedEventsWidget(inProps: RelatedEventsWidgetProps): JSX.Element;
|
|
@@ -0,0 +1,125 @@
|
|
|
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 system_1 = require("@mui/system");
|
|
7
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
8
|
+
const react_core_1 = require("@selfcommunity/react-core");
|
|
9
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
10
|
+
const react_1 = require("react");
|
|
11
|
+
const react_intl_1 = require("react-intl");
|
|
12
|
+
require("swiper/css");
|
|
13
|
+
const Errors_1 = require("../../constants/Errors");
|
|
14
|
+
const Pagination_1 = require("../../constants/Pagination");
|
|
15
|
+
const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
|
|
16
|
+
const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
|
|
17
|
+
const InfiniteScroll_1 = tslib_1.__importDefault(require("../../shared/InfiniteScroll"));
|
|
18
|
+
const widget_1 = require("../../utils/widget");
|
|
19
|
+
const Event_1 = tslib_1.__importStar(require("../Event"));
|
|
20
|
+
const Widget_1 = tslib_1.__importDefault(require("../Widget"));
|
|
21
|
+
const constants_1 = require("./constants");
|
|
22
|
+
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
23
|
+
const messages = (0, react_intl_1.defineMessages)({
|
|
24
|
+
title: {
|
|
25
|
+
id: 'ui.relatedEventsWidget.title',
|
|
26
|
+
defaultMessage: 'ui.relatedEventsWidget.title'
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const classes = {
|
|
30
|
+
root: `${constants_1.PREFIX}-root`,
|
|
31
|
+
content: `${constants_1.PREFIX}-content`,
|
|
32
|
+
avatarWrapper: `${constants_1.PREFIX}-avatar-wrapper`,
|
|
33
|
+
avatar: `${constants_1.PREFIX}-avatar`,
|
|
34
|
+
eventWrapper: `${constants_1.PREFIX}-event-wrapper`,
|
|
35
|
+
event: `${constants_1.PREFIX}-event`,
|
|
36
|
+
actions: `${constants_1.PREFIX}-actions`,
|
|
37
|
+
actionButton: `${constants_1.PREFIX}-action-button`,
|
|
38
|
+
dialogRoot: `${constants_1.PREFIX}-dialog-root`,
|
|
39
|
+
infiniteScroll: `${constants_1.PREFIX}-infinite-scroll`,
|
|
40
|
+
endMessage: `${constants_1.PREFIX}-end-message`
|
|
41
|
+
};
|
|
42
|
+
const Root = (0, system_1.styled)(Widget_1.default, {
|
|
43
|
+
name: constants_1.PREFIX,
|
|
44
|
+
slot: 'Root',
|
|
45
|
+
overridesResolver: (_props, styles) => styles.root
|
|
46
|
+
})();
|
|
47
|
+
const DialogRoot = (0, system_1.styled)(BaseDialog_1.default, {
|
|
48
|
+
name: constants_1.PREFIX,
|
|
49
|
+
slot: 'DialogRoot',
|
|
50
|
+
overridesResolver: (_props, styles) => styles.dialogRoot
|
|
51
|
+
})();
|
|
52
|
+
function RelatedEventsWidget(inProps) {
|
|
53
|
+
var _a;
|
|
54
|
+
// PROPS
|
|
55
|
+
const props = (0, material_1.useThemeProps)({
|
|
56
|
+
props: inProps,
|
|
57
|
+
name: constants_1.PREFIX
|
|
58
|
+
});
|
|
59
|
+
const { event, eventId, eventComponentProps = { elevation: 0, square: true }, endpointQueryParams = { limit: Pagination_1.DEFAULT_PAGINATION_LIMIT, offset: Pagination_1.DEFAULT_PAGINATION_OFFSET }, cacheStrategy, dialogProps } = props, rest = tslib_1.__rest(props, ["event", "eventId", "eventComponentProps", "endpointQueryParams", "cacheStrategy", "dialogProps"]);
|
|
60
|
+
// STATE
|
|
61
|
+
const [state, dispatch] = (0, react_1.useReducer)(widget_1.dataWidgetReducer, {
|
|
62
|
+
isLoadingNext: false,
|
|
63
|
+
next: null,
|
|
64
|
+
cacheKey: react_core_1.SCCache.getWidgetStateCacheKey(react_core_1.SCCache.USER_EVENTS_STATE_CACHE_PREFIX_KEY),
|
|
65
|
+
cacheStrategy,
|
|
66
|
+
visibleItems: Pagination_1.DEFAULT_PAGINATION_LIMIT
|
|
67
|
+
}, widget_1.stateWidgetInitializer);
|
|
68
|
+
const [openDialog, setOpenDialog] = (0, react_1.useState)(false);
|
|
69
|
+
// CONTEXT
|
|
70
|
+
const scUserContext = (0, react_core_1.useSCUser)();
|
|
71
|
+
const scRoutingContext = (0, react_core_1.useSCRouting)();
|
|
72
|
+
// HOOKS
|
|
73
|
+
const intl = (0, react_intl_1.useIntl)();
|
|
74
|
+
const { scEvent } = (0, react_core_1.useSCFetchEvent)({ id: eventId, event });
|
|
75
|
+
const _initComponent = (0, react_1.useCallback)(() => {
|
|
76
|
+
if (!state.initialized && !state.isLoadingNext) {
|
|
77
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
|
|
78
|
+
api_services_1.EventService.getEventRelated(scEvent.id, Object.assign({ created_by: scEvent.managed_by.id }, endpointQueryParams))
|
|
79
|
+
.then((payload) => {
|
|
80
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
|
|
81
|
+
})
|
|
82
|
+
.catch((error) => {
|
|
83
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
|
|
84
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}, [state.isLoadingNext, state.initialized, dispatch, scEvent]);
|
|
88
|
+
// EFFECTS
|
|
89
|
+
(0, react_1.useEffect)(() => {
|
|
90
|
+
let _t;
|
|
91
|
+
if (scUserContext.user && scEvent) {
|
|
92
|
+
_t = setTimeout(_initComponent);
|
|
93
|
+
return () => {
|
|
94
|
+
clearTimeout(_t);
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}, [scUserContext.user, scEvent]);
|
|
98
|
+
// HANDLERS
|
|
99
|
+
/**
|
|
100
|
+
* Handles pagination
|
|
101
|
+
*/
|
|
102
|
+
const handleNext = (0, react_1.useCallback)(() => {
|
|
103
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
|
|
104
|
+
api_services_1.http
|
|
105
|
+
.request({
|
|
106
|
+
url: state.next,
|
|
107
|
+
method: api_services_1.Endpoints.EventSuggestion.method
|
|
108
|
+
})
|
|
109
|
+
.then((res) => {
|
|
110
|
+
dispatch({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
|
|
111
|
+
});
|
|
112
|
+
}, [dispatch, state.next, state.isLoadingNext, state.initialized]);
|
|
113
|
+
const handleToggleDialogOpen = (0, react_1.useCallback)(() => {
|
|
114
|
+
setOpenDialog((prev) => !prev);
|
|
115
|
+
}, []);
|
|
116
|
+
if (!scEvent && !state.initialized) {
|
|
117
|
+
return (0, jsx_runtime_1.jsx)(Skeleton_1.default, {});
|
|
118
|
+
}
|
|
119
|
+
// RENDER
|
|
120
|
+
if (!scEvent) {
|
|
121
|
+
return (0, jsx_runtime_1.jsx)(HiddenPlaceholder_1.default, {});
|
|
122
|
+
}
|
|
123
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Button, Object.assign({ component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_ROUTE_NAME, { id: (_a = scUserContext.user) === null || _a === void 0 ? void 0 : _a.id }), className: classes.avatarWrapper }, { children: [(0, jsx_runtime_1.jsx)(material_1.Avatar, { variant: "rounded", src: scEvent.managed_by.avatar, alt: scEvent.managed_by.username, className: classes.avatar }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h3" }, { children: intl.formatMessage(messages.title, { user: scEvent.managed_by.username }) }))] })), (0, jsx_runtime_1.jsx)(material_1.Stack, Object.assign({ className: classes.eventWrapper }, { children: state === null || state === void 0 ? void 0 : state.results.map((_event, i, array) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Event_1.default, Object.assign({ event: _event, eventId: _event.id }, eventComponentProps, { className: classes.event }), i), i < array.length - 1 && (0, jsx_runtime_1.jsx)(material_1.Divider, {})] }))) }))] })), state.count > state.visibleItems && ((0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ onClick: handleToggleDialogOpen, 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.relatedEventsWidget.showAll", defaultMessage: "ui.relatedEventsWidget.showAll" }) })) })) }))), openDialog && ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ className: classes.dialogRoot, title: intl.formatMessage(messages.title, { user: scEvent.managed_by.username }), onClose: handleToggleDialogOpen, open: openDialog }, dialogProps, { children: (0, jsx_runtime_1.jsx)(InfiniteScroll_1.default, Object.assign({ dataLength: state.results.length, next: handleNext, hasMoreNext: Boolean(state.next), loaderNext: (0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, Object.assign({ elevation: 0 }, eventComponentProps)), className: classes.infiniteScroll, 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.relatedEventsWidget.noMoreResults", defaultMessage: "ui.eventMembersWidget.noMoreResults" }) })) }, { children: (0, jsx_runtime_1.jsx)(material_1.List, { children: state.results.map((event) => ((0, jsx_runtime_1.jsx)(material_1.ListItem, { children: (0, jsx_runtime_1.jsx)(Event_1.default, Object.assign({ elevation: 0, event: event }, eventComponentProps)) }, event.id))) }) })) })))] })));
|
|
124
|
+
}
|
|
125
|
+
exports.default = RelatedEventsWidget;
|
|
@@ -0,0 +1,28 @@
|
|
|
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 system_1 = require("@mui/system");
|
|
7
|
+
require("swiper/css");
|
|
8
|
+
const Event_1 = require("../Event");
|
|
9
|
+
const User_1 = require("../User");
|
|
10
|
+
const Widget_1 = tslib_1.__importDefault(require("../Widget"));
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const classes = {
|
|
13
|
+
root: `${constants_1.PREFIX}-skeleton-root`,
|
|
14
|
+
content: `${constants_1.PREFIX}-content`,
|
|
15
|
+
user: `${constants_1.PREFIX}-user`,
|
|
16
|
+
eventWrapper: `${constants_1.PREFIX}-event-wrapper`,
|
|
17
|
+
event: `${constants_1.PREFIX}-event`,
|
|
18
|
+
actions: `${constants_1.PREFIX}-actions`
|
|
19
|
+
};
|
|
20
|
+
const Root = (0, system_1.styled)(Widget_1.default, {
|
|
21
|
+
name: constants_1.PREFIX,
|
|
22
|
+
slot: 'SkeletonRoot',
|
|
23
|
+
overridesResolver: (_props, styles) => styles.skeletonRoot
|
|
24
|
+
})();
|
|
25
|
+
function RelatedEventsWidgetSkeleton() {
|
|
26
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: classes.root }, { children: [(0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.content }, { children: [(0, jsx_runtime_1.jsx)(User_1.UserSkeleton, { className: classes.user, elevation: 0 }), (0, jsx_runtime_1.jsx)(material_1.Stack, Object.assign({ className: classes.eventWrapper }, { children: [1, 2, 3, 4].map((_event, i, array) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, { elevation: 0, className: classes.event }, i), i < array.length - 1 && (0, jsx_runtime_1.jsx)(material_1.Divider, {})] }))) }))] })), (0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Skeleton, { animation: "wave", width: "52px", height: "20px" }) }))] })));
|
|
27
|
+
}
|
|
28
|
+
exports.default = RelatedEventsWidgetSkeleton;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const PREFIX = "SCRelatedEventsWidget";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelatedEventsWidgetSkeleton = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const RelatedEventsWidget_1 = tslib_1.__importDefault(require("./RelatedEventsWidget"));
|
|
6
|
+
const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
|
|
7
|
+
exports.RelatedEventsWidgetSkeleton = Skeleton_1.default;
|
|
8
|
+
exports.default = RelatedEventsWidget_1.default;
|