@selfcommunity/react-ui 0.7.50-events.60 → 0.7.50-events.63

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 (68) hide show
  1. package/lib/cjs/components/Event/Event.d.ts +6 -0
  2. package/lib/cjs/components/Event/Event.js +4 -4
  3. package/lib/cjs/components/EventMembersWidget/EventMembersWidget.d.ts +44 -0
  4. package/lib/cjs/components/EventMembersWidget/EventMembersWidget.js +150 -0
  5. package/lib/cjs/components/EventMembersWidget/Skeleton.d.ts +2 -0
  6. package/lib/cjs/components/EventMembersWidget/Skeleton.js +29 -0
  7. package/lib/cjs/components/EventMembersWidget/constants.d.ts +1 -0
  8. package/lib/cjs/components/EventMembersWidget/constants.js +4 -0
  9. package/lib/cjs/components/EventMembersWidget/index.d.ts +4 -0
  10. package/lib/cjs/components/EventMembersWidget/index.js +8 -0
  11. package/lib/cjs/components/{EventPartecipantsButton/EventPartecipantsButton.d.ts → EventParticipantsButton/EventParticipantsButton.d.ts} +13 -8
  12. package/lib/cjs/components/{EventPartecipantsButton/EventPartecipantsButton.js → EventParticipantsButton/EventParticipantsButton.js} +12 -12
  13. package/lib/cjs/components/EventParticipantsButton/index.d.ts +3 -0
  14. package/lib/cjs/components/EventParticipantsButton/index.js +5 -0
  15. package/lib/cjs/components/InviteEventButton/InviteEventButton.d.ts +60 -0
  16. package/lib/cjs/components/InviteEventButton/InviteEventButton.js +82 -0
  17. package/lib/cjs/components/InviteEventButton/index.d.ts +3 -0
  18. package/lib/cjs/components/InviteEventButton/index.js +5 -0
  19. package/lib/cjs/components/RelatedEventsWidget/RelatedEventsWidget.d.ts +44 -0
  20. package/lib/cjs/components/RelatedEventsWidget/RelatedEventsWidget.js +125 -0
  21. package/lib/cjs/components/RelatedEventsWidget/Skeleton.d.ts +2 -0
  22. package/lib/cjs/components/RelatedEventsWidget/Skeleton.js +28 -0
  23. package/lib/cjs/components/RelatedEventsWidget/constants.d.ts +1 -0
  24. package/lib/cjs/components/RelatedEventsWidget/constants.js +4 -0
  25. package/lib/cjs/components/RelatedEventsWidget/index.d.ts +4 -0
  26. package/lib/cjs/components/RelatedEventsWidget/index.js +8 -0
  27. package/lib/cjs/components/SuggestedEventsWidget/Arrow.js +2 -2
  28. package/lib/cjs/components/SuggestedEventsWidget/SuggestedEventsWidget.js +18 -11
  29. package/lib/cjs/index.d.ts +6 -3
  30. package/lib/cjs/index.js +21 -12
  31. package/lib/esm/components/Event/Event.d.ts +6 -0
  32. package/lib/esm/components/Event/Event.js +4 -4
  33. package/lib/esm/components/EventMembersWidget/EventMembersWidget.d.ts +44 -0
  34. package/lib/esm/components/EventMembersWidget/EventMembersWidget.js +147 -0
  35. package/lib/esm/components/EventMembersWidget/Skeleton.d.ts +2 -0
  36. package/lib/esm/components/EventMembersWidget/Skeleton.js +25 -0
  37. package/lib/esm/components/EventMembersWidget/constants.d.ts +1 -0
  38. package/lib/esm/components/EventMembersWidget/constants.js +1 -0
  39. package/lib/esm/components/EventMembersWidget/index.d.ts +4 -0
  40. package/lib/esm/components/EventMembersWidget/index.js +4 -0
  41. package/lib/esm/components/{EventPartecipantsButton/EventPartecipantsButton.d.ts → EventParticipantsButton/EventParticipantsButton.d.ts} +13 -8
  42. package/lib/esm/components/{EventPartecipantsButton/EventPartecipantsButton.js → EventParticipantsButton/EventParticipantsButton.js} +11 -11
  43. package/lib/esm/components/EventParticipantsButton/index.d.ts +3 -0
  44. package/lib/esm/components/EventParticipantsButton/index.js +2 -0
  45. package/lib/esm/components/InviteEventButton/InviteEventButton.d.ts +60 -0
  46. package/lib/esm/components/InviteEventButton/InviteEventButton.js +79 -0
  47. package/lib/esm/components/InviteEventButton/index.d.ts +3 -0
  48. package/lib/esm/components/InviteEventButton/index.js +2 -0
  49. package/lib/esm/components/RelatedEventsWidget/RelatedEventsWidget.d.ts +44 -0
  50. package/lib/esm/components/RelatedEventsWidget/RelatedEventsWidget.js +122 -0
  51. package/lib/esm/components/RelatedEventsWidget/Skeleton.d.ts +2 -0
  52. package/lib/esm/components/RelatedEventsWidget/Skeleton.js +24 -0
  53. package/lib/esm/components/RelatedEventsWidget/constants.d.ts +1 -0
  54. package/lib/esm/components/RelatedEventsWidget/constants.js +1 -0
  55. package/lib/esm/components/RelatedEventsWidget/index.d.ts +4 -0
  56. package/lib/esm/components/RelatedEventsWidget/index.js +4 -0
  57. package/lib/esm/components/SuggestedEventsWidget/Arrow.js +3 -3
  58. package/lib/esm/components/SuggestedEventsWidget/SuggestedEventsWidget.js +19 -12
  59. package/lib/esm/index.d.ts +6 -3
  60. package/lib/esm/index.js +8 -5
  61. package/lib/umd/{401.js → 224.js} +2 -2
  62. package/lib/umd/react-ui.js +1 -1
  63. package/package.json +7 -7
  64. package/lib/cjs/components/EventPartecipantsButton/index.d.ts +0 -3
  65. package/lib/cjs/components/EventPartecipantsButton/index.js +0 -5
  66. package/lib/esm/components/EventPartecipantsButton/index.d.ts +0 -3
  67. package/lib/esm/components/EventPartecipantsButton/index.js +0 -2
  68. /package/lib/umd/{401.js.LICENSE.txt → 224.js.LICENSE.txt} +0 -0
@@ -1,6 +1,7 @@
1
1
  import { SCEventType } from '@selfcommunity/types';
2
2
  import React from 'react';
3
3
  import { SCEventTemplateType } from '../../types/event';
4
+ import { EventParticipantsButtonProps } from '../EventParticipantsButton';
4
5
  import { WidgetProps } from '../Widget';
5
6
  import { EventSkeletonProps } from './Skeleton';
6
7
  export interface EventProps extends WidgetProps {
@@ -29,6 +30,11 @@ export interface EventProps extends WidgetProps {
29
30
  * @default false
30
31
  */
31
32
  hideEventParticipants?: boolean;
33
+ /**
34
+ * Props to spread to EventParticipantsButton component
35
+ * @default {}
36
+ */
37
+ EventParticipantsButtonComponentProps?: EventParticipantsButtonProps;
32
38
  /**
33
39
  * Hide event planner
34
40
  * @default false
@@ -13,7 +13,7 @@ const BaseItem_1 = tslib_1.__importDefault(require("../../shared/BaseItem"));
13
13
  const Calendar_1 = tslib_1.__importDefault(require("../../shared/Calendar"));
14
14
  const EventInfoDetails_1 = tslib_1.__importDefault(require("../../shared/EventInfoDetails"));
15
15
  const event_1 = require("../../types/event");
16
- const EventPartecipantsButton_1 = tslib_1.__importDefault(require("../EventPartecipantsButton"));
16
+ const EventParticipantsButton_1 = tslib_1.__importDefault(require("../EventParticipantsButton"));
17
17
  const User_1 = tslib_1.__importDefault(require("../User"));
18
18
  const Widget_1 = tslib_1.__importDefault(require("../Widget"));
19
19
  const constants_1 = require("./constants");
@@ -101,7 +101,7 @@ function Event(inProps) {
101
101
  props: inProps,
102
102
  name: constants_1.PREFIX
103
103
  });
104
- const { id = `event_object_${props.eventId ? props.eventId : props.event ? props.event.id : ''}`, eventId = null, event = null, className = null, template = event_1.SCEventTemplateType.SNIPPET, hideEventParticipants = false, hideEventPlanner = false, actions, EventSkeletonComponentProps = {} } = props, rest = tslib_1.__rest(props, ["id", "eventId", "event", "className", "template", "hideEventParticipants", "hideEventPlanner", "actions", "EventSkeletonComponentProps"]);
104
+ const { id = `event_object_${props.eventId ? props.eventId : props.event ? props.event.id : ''}`, eventId = null, event = null, className = null, template = event_1.SCEventTemplateType.SNIPPET, hideEventParticipants = false, hideEventPlanner = false, actions, EventParticipantsButtonComponentProps = {}, EventSkeletonComponentProps = {} } = props, rest = tslib_1.__rest(props, ["id", "eventId", "event", "className", "template", "hideEventParticipants", "hideEventPlanner", "actions", "EventParticipantsButtonComponentProps", "EventSkeletonComponentProps"]);
105
105
  // STATE
106
106
  const { scEvent } = (0, react_core_1.useSCFetchEvent)({ id: eventId, event });
107
107
  // CONTEXT
@@ -119,10 +119,10 @@ function Event(inProps) {
119
119
  */
120
120
  let contentObj;
121
121
  if (template === event_1.SCEventTemplateType.DETAIL) {
122
- contentObj = ((0, jsx_runtime_1.jsxs)(DetailRoot, Object.assign({ className: classes.detailRoot }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.detailImageWrapper }, { children: [(0, jsx_runtime_1.jsx)(material_1.CardMedia, { component: "img", image: scEvent.image_medium, alt: scEvent.name, className: classes.detailImage }), (0, jsx_runtime_1.jsx)(Calendar_1.default, { day: new Date(scEvent.start_date).getDate() })] })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.detailContent }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.detailNameWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h3", className: classes.detailName }, { children: scEvent.name })) })), (0, jsx_runtime_1.jsx)(EventInfoDetails_1.default, { event: scEvent }), !hideEventPlanner && ((0, jsx_runtime_1.jsx)(User_1.default, { user: scEvent.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" }) })), actions: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), className: classes.detailUser })), !hideEventParticipants && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.detailFirstDivider }), (0, jsx_runtime_1.jsx)(EventPartecipantsButton_1.default, { event: scEvent, eventId: scEvent.id })] })), (0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.detailSecondDivider })] })), actions !== null && actions !== void 0 ? actions : ((0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.detailActions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ size: "small", variant: "outlined", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent) }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.event.see", id: "ui.event.see" }) })) })))] })));
122
+ contentObj = ((0, jsx_runtime_1.jsxs)(DetailRoot, Object.assign({ className: classes.detailRoot }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.detailImageWrapper }, { children: [(0, jsx_runtime_1.jsx)(material_1.CardMedia, { component: "img", image: scEvent.image_medium, alt: scEvent.name, className: classes.detailImage }), (0, jsx_runtime_1.jsx)(Calendar_1.default, { day: new Date(scEvent.start_date).getDate() })] })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.detailContent }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.detailNameWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h3", className: classes.detailName }, { children: scEvent.name })) })), (0, jsx_runtime_1.jsx)(EventInfoDetails_1.default, { event: scEvent }), !hideEventPlanner && ((0, jsx_runtime_1.jsx)(User_1.default, { user: scEvent.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" }) })), actions: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), className: classes.detailUser })), !hideEventParticipants && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.detailFirstDivider }), (0, jsx_runtime_1.jsx)(EventParticipantsButton_1.default, Object.assign({ event: scEvent, eventId: scEvent.id }, EventParticipantsButtonComponentProps))] })), (0, jsx_runtime_1.jsx)(material_1.Divider, { className: classes.detailSecondDivider })] })), actions !== null && actions !== void 0 ? actions : ((0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.detailActions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ size: "small", variant: "outlined", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent) }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.event.see", id: "ui.event.see" }) })) })))] })));
123
123
  }
124
124
  else if (template === event_1.SCEventTemplateType.PREVIEW) {
125
- contentObj = ((0, jsx_runtime_1.jsxs)(PreviewRoot, Object.assign({ className: classes.previewRoot }, { children: [(0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ position: "relative", className: classes.previewImageWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.CardMedia, { component: "img", height: "100px", image: scEvent.image_medium, alt: scEvent.name, className: classes.previewImage }) })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.previewContent }, { children: [(0, jsx_runtime_1.jsx)(EventInfoDetails_1.default, { event: scEvent, hidePrivacyIcon: true, hasLocationInfo: false, beforePrivacyInfo: (0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.previewNameWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5", className: classes.previewName }, { children: scEvent.name })) })) }), !hideEventParticipants && (0, jsx_runtime_1.jsx)(EventPartecipantsButton_1.default, { event: scEvent })] })), actions !== null && actions !== void 0 ? actions : ((0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.previewActions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ size: "small", variant: "outlined", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent) }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.event.see", id: "ui.event.see" }) })) })))] })));
125
+ contentObj = ((0, jsx_runtime_1.jsxs)(PreviewRoot, Object.assign({ className: classes.previewRoot }, { children: [(0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ position: "relative", className: classes.previewImageWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.CardMedia, { component: "img", height: "100px", image: scEvent.image_medium, alt: scEvent.name, className: classes.previewImage }) })), (0, jsx_runtime_1.jsxs)(material_1.CardContent, Object.assign({ className: classes.previewContent }, { children: [(0, jsx_runtime_1.jsx)(EventInfoDetails_1.default, { event: scEvent, hidePrivacyIcon: true, hasLocationInfo: false, beforePrivacyInfo: (0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.previewNameWrapper }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5", className: classes.previewName }, { children: scEvent.name })) })) }), !hideEventParticipants && (0, jsx_runtime_1.jsx)(EventParticipantsButton_1.default, Object.assign({ event: scEvent, hideCaption: true }, EventParticipantsButtonComponentProps))] })), actions !== null && actions !== void 0 ? actions : ((0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.previewActions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ size: "small", variant: "outlined", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent) }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.event.see", id: "ui.event.see" }) })) })))] })));
126
126
  }
127
127
  else {
128
128
  contentObj = ((0, jsx_runtime_1.jsx)(SnippetRoot, { elevation: 0, square: true, disableTypography: true, className: classes.snippetRoot, image: (0, jsx_runtime_1.jsx)(material_1.Avatar, { variant: "square", alt: scEvent.name, src: scEvent.image_medium, className: classes.snippetAvatar }), primary: (0, jsx_runtime_1.jsxs)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.snippetPrimary }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: "span" }, { children: `${intl.formatDate(scEvent.start_date, {
@@ -0,0 +1,44 @@
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
+ limit?: number;
39
+ /**
40
+ * Other props
41
+ */
42
+ [p: string]: any;
43
+ }
44
+ 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, limit } = props, rest = tslib_1.__rest(props, ["event", "eventId", "userProps", "endpointQueryParams", "cacheStrategy", "dialogProps", "limit"]);
55
+ // STATE
56
+ const [participants, dispatchParticipants] = (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_PARTECIPANTS_EVENTS_STATE_CACHE_PREFIX_KEY, eventId || event.id),
60
+ cacheStrategy,
61
+ visibleItems: 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_INVITED_EVENTS_STATE_CACHE_PREFIX_KEY, eventId || event.id),
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' ? participants : invited), [tabValue, participants, invited]);
74
+ const dispatch = (0, react_1.useCallback)((value) => (tabValue === '1' ? dispatchParticipants(value) : dispatchInvited(value)), [tabValue, dispatchParticipants, 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 _initParticipants = (0, react_1.useCallback)(() => {
80
+ if (!participants.initialized && !participants.isLoadingNext) {
81
+ dispatchParticipants({ type: widget_1.actionWidgetTypes.LOADING_NEXT });
82
+ api_services_1.EventService.getUsersGoingToEvent(scEvent.id, Object.assign({}, endpointQueryParams))
83
+ .then((payload) => {
84
+ dispatchParticipants({ type: widget_1.actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: Object.assign(Object.assign({}, payload), { initialized: true }) });
85
+ })
86
+ .catch((error) => {
87
+ dispatchParticipants({ type: widget_1.actionWidgetTypes.LOAD_NEXT_FAILURE, payload: { errorLoadNext: error } });
88
+ utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
89
+ });
90
+ }
91
+ }, [participants.isLoadingNext, participants.initialized, dispatchParticipants, 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
+ _initParticipants();
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: participants.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.participants", defaultMessage: "ui.eventMembersWidget.participants" }) }))] })), 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: participants.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, userId: user.id, 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,2 @@
1
+ import 'swiper/css';
2
+ export default function EventMembersWidgetSkeleton(): JSX.Element;
@@ -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,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PREFIX = void 0;
4
+ exports.PREFIX = 'SCEventMembersWidget';
@@ -0,0 +1,4 @@
1
+ import EventMembersWidget, { EventMembersWidgetProps } from './EventMembersWidget';
2
+ import EventMembersWidgetSkeleton from './Skeleton';
3
+ export default EventMembersWidget;
4
+ export { EventMembersWidgetSkeleton, type EventMembersWidgetProps };
@@ -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;
@@ -1,7 +1,7 @@
1
1
  import { ButtonProps } from '@mui/material/Button/Button';
2
2
  import { SCEventType } from '@selfcommunity/types';
3
3
  import { BaseDialogProps } from '../../shared/BaseDialog';
4
- export interface EventPartecipantsButtonProps extends Pick<ButtonProps, Exclude<keyof ButtonProps, 'onClick' | 'disabled'>> {
4
+ export interface EventParticipantsButtonProps extends Pick<ButtonProps, Exclude<keyof ButtonProps, 'onClick' | 'disabled'>> {
5
5
  /**
6
6
  * Event Object
7
7
  * @default null
@@ -12,6 +12,11 @@ export interface EventPartecipantsButtonProps extends Pick<ButtonProps, Exclude<
12
12
  * @default null
13
13
  */
14
14
  eventId?: number;
15
+ /**
16
+ * Hide button label
17
+ * @default false
18
+ */
19
+ hideCaption?: boolean;
15
20
  /**
16
21
  * Props to spread to followedBy dialog
17
22
  * @default {}
@@ -23,24 +28,24 @@ export interface EventPartecipantsButtonProps extends Pick<ButtonProps, Exclude<
23
28
  [p: string]: any;
24
29
  }
25
30
  /**
26
- *> API documentation for the Community-JS Event Partecipants Button component. Learn about the available props and the CSS API.
31
+ *> API documentation for the Community-JS Event Participants Button component. Learn about the available props and the CSS API.
27
32
  *
28
33
  #### Import
29
34
  ```jsx
30
- import {EventPartecipantsButton} from '@selfcommunity/react-ui';
35
+ import {EventParticipantsButton} from '@selfcommunity/react-ui';
31
36
  ```
32
37
  #### Component Name
33
38
 
34
- The name `SCEventPartecipantsButton` can be used when providing style overrides in the theme.
39
+ The name `SCEventParticipantsButton` can be used when providing style overrides in the theme.
35
40
 
36
41
  * #### CSS
37
42
  *
38
43
  |Rule Name|Global class|Description|
39
44
  |---|---|---|
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.|
45
+ |root|.SCEventParticipantsButton-root|Styles applied to the root element.|
46
+ |dialogRoot|.SCEventParticipantsButton-dialog-root|Styles applied to the root element.|
47
+ |endMessage|.SCEventParticipantsButton-end-message|Styles applied to the end message element.|
43
48
 
44
49
  * @param inProps
45
50
  */
46
- export default function EventPartecipantsButton(inProps: EventPartecipantsButtonProps): JSX.Element;
51
+ export default function EventParticipantsButton(inProps: EventParticipantsButtonProps): JSX.Element;
@@ -17,11 +17,11 @@ const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"))
17
17
  const InfiniteScroll_1 = tslib_1.__importDefault(require("../../shared/InfiniteScroll"));
18
18
  const AvatarGroupSkeleton_1 = tslib_1.__importDefault(require("../Skeleton/AvatarGroupSkeleton"));
19
19
  const User_1 = tslib_1.__importStar(require("../User"));
20
- const PREFIX = 'SCEventPartecipantsButton';
20
+ const PREFIX = 'SCEventParticipantsButton';
21
21
  const classes = {
22
22
  root: `${PREFIX}-root`,
23
23
  avatar: `${PREFIX}-avatar`,
24
- partecipants: `${PREFIX}-partecipants`,
24
+ participants: `${PREFIX}-participants`,
25
25
  dialogRoot: `${PREFIX}-dialog-root`,
26
26
  infiniteScroll: `${PREFIX}-infinite-scroll`,
27
27
  endMessage: `${PREFIX}-end-message`
@@ -37,33 +37,33 @@ const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
37
37
  overridesResolver: (_props, styles) => styles.dialogRoot
38
38
  })(() => ({}));
39
39
  /**
40
- *> API documentation for the Community-JS Event Partecipants Button component. Learn about the available props and the CSS API.
40
+ *> API documentation for the Community-JS Event Participants Button component. Learn about the available props and the CSS API.
41
41
  *
42
42
  #### Import
43
43
  ```jsx
44
- import {EventPartecipantsButton} from '@selfcommunity/react-ui';
44
+ import {EventParticipantsButton} from '@selfcommunity/react-ui';
45
45
  ```
46
46
  #### Component Name
47
47
 
48
- The name `SCEventPartecipantsButton` can be used when providing style overrides in the theme.
48
+ The name `SCEventParticipantsButton` can be used when providing style overrides in the theme.
49
49
 
50
50
  * #### CSS
51
51
  *
52
52
  |Rule Name|Global class|Description|
53
53
  |---|---|---|
54
- |root|.SCEventPartecipantsButton-root|Styles applied to the root element.|
55
- |dialogRoot|.SCEventPartecipantsButton-dialog-root|Styles applied to the root element.|
56
- |endMessage|.SCEventPartecipantsButton-end-message|Styles applied to the end message element.|
54
+ |root|.SCEventParticipantsButton-root|Styles applied to the root element.|
55
+ |dialogRoot|.SCEventParticipantsButton-dialog-root|Styles applied to the root element.|
56
+ |endMessage|.SCEventParticipantsButton-end-message|Styles applied to the end message element.|
57
57
 
58
58
  * @param inProps
59
59
  */
60
- function EventPartecipantsButton(inProps) {
60
+ function EventParticipantsButton(inProps) {
61
61
  // PROPS
62
62
  const props = (0, system_1.useThemeProps)({
63
63
  props: inProps,
64
64
  name: PREFIX
65
65
  });
66
- const { className, eventId, event, DialogProps = {} } = props, rest = tslib_1.__rest(props, ["className", "eventId", "event", "DialogProps"]);
66
+ const { className, eventId, event, hideCaption = false, DialogProps = {} } = props, rest = tslib_1.__rest(props, ["className", "eventId", "event", "hideCaption", "DialogProps"]);
67
67
  // STATE
68
68
  const [loading, setLoading] = (0, react_1.useState)(true);
69
69
  const [next, setNext] = (0, react_1.useState)(null);
@@ -124,6 +124,6 @@ function EventPartecipantsButton(inProps) {
124
124
  const handleToggleDialogOpen = (0, react_1.useCallback)(() => {
125
125
  setOpen((prev) => !prev);
126
126
  }, [setOpen]);
127
- 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({ className: classes.partecipants, 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, className: classes.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 }), 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.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))) }) })) })))] }));
127
+ 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: [!hideCaption && ((0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.participants, variant: "caption" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.eventParticipantsButton.participants", id: "ui.eventParticipantsButton.participants" }) }))), 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, className: classes.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.eventParticipantsButton.dialogTitle", id: "ui.eventParticipantsButton.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 }), 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.eventParticipantsButton.noOtherParticipants", defaultMessage: "ui.eventParticipantsButton.noOtherParticipants" }) })) }, { 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))) }) })) })))] }));
128
128
  }
129
- exports.default = EventPartecipantsButton;
129
+ exports.default = EventParticipantsButton;
@@ -0,0 +1,3 @@
1
+ import EventParticipantsButton, { EventParticipantsButtonProps } from './EventParticipantsButton';
2
+ export default EventParticipantsButton;
3
+ export { EventParticipantsButtonProps };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const EventParticipantsButton_1 = tslib_1.__importDefault(require("./EventParticipantsButton"));
5
+ exports.default = EventParticipantsButton_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,3 @@
1
+ import InviteEventButton, { InviteEventButtonProps } from './InviteEventButton';
2
+ export default InviteEventButton;
3
+ export { InviteEventButtonProps };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const InviteEventButton_1 = tslib_1.__importDefault(require("./InviteEventButton"));
5
+ exports.default = InviteEventButton_1.default;