@selfcommunity/react-ui 0.7.50-events.56 → 0.7.50-events.58

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 (30) hide show
  1. package/lib/cjs/components/Event/Event.d.ts +2 -2
  2. package/lib/cjs/components/Event/Event.js +11 -11
  3. package/lib/cjs/components/EventSubscribeButton/EventSubscribeButton.js +6 -4
  4. package/lib/cjs/components/Events/Events.js +1 -1
  5. package/lib/cjs/components/Events/PastEventsFilter.d.ts +2 -1
  6. package/lib/cjs/components/Events/PastEventsFilter.js +4 -3
  7. package/lib/cjs/components/SuggestedEventsWidget/Arrow.d.ts +8 -0
  8. package/lib/cjs/components/SuggestedEventsWidget/Arrow.js +30 -0
  9. package/lib/cjs/components/SuggestedEventsWidget/Skeleton.js +4 -4
  10. package/lib/cjs/components/SuggestedEventsWidget/SuggestedEventsWidget.d.ts +0 -1
  11. package/lib/cjs/components/SuggestedEventsWidget/SuggestedEventsWidget.js +16 -6
  12. package/lib/cjs/components/SuggestedEventsWidget/index.d.ts +2 -1
  13. package/lib/cjs/components/SuggestedEventsWidget/index.js +3 -1
  14. package/lib/esm/components/Event/Event.d.ts +2 -2
  15. package/lib/esm/components/Event/Event.js +11 -11
  16. package/lib/esm/components/EventSubscribeButton/EventSubscribeButton.js +6 -4
  17. package/lib/esm/components/Events/Events.js +1 -1
  18. package/lib/esm/components/Events/PastEventsFilter.d.ts +2 -1
  19. package/lib/esm/components/Events/PastEventsFilter.js +4 -3
  20. package/lib/esm/components/SuggestedEventsWidget/Arrow.d.ts +8 -0
  21. package/lib/esm/components/SuggestedEventsWidget/Arrow.js +27 -0
  22. package/lib/esm/components/SuggestedEventsWidget/Skeleton.js +4 -4
  23. package/lib/esm/components/SuggestedEventsWidget/SuggestedEventsWidget.d.ts +0 -1
  24. package/lib/esm/components/SuggestedEventsWidget/SuggestedEventsWidget.js +16 -6
  25. package/lib/esm/components/SuggestedEventsWidget/index.d.ts +2 -1
  26. package/lib/esm/components/SuggestedEventsWidget/index.js +2 -1
  27. package/lib/umd/{224.js → 401.js} +2 -2
  28. package/lib/umd/react-ui.js +1 -1
  29. package/package.json +7 -7
  30. /package/lib/umd/{224.js.LICENSE.txt → 401.js.LICENSE.txt} +0 -0
@@ -1,8 +1,8 @@
1
- import React from 'react';
2
1
  import { SCEventType } from '@selfcommunity/types';
2
+ import React from 'react';
3
+ import { SCEventTemplateType } from '../../types/event';
3
4
  import { WidgetProps } from '../Widget';
4
5
  import { EventSkeletonProps } from './Skeleton';
5
- import { SCEventTemplateType } from '../../types/event';
6
6
  export interface EventProps extends WidgetProps {
7
7
  /**
8
8
  * Event Object
@@ -2,22 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const styles_1 = require("@mui/material/styles");
6
5
  const material_1 = require("@mui/material");
7
- const types_1 = require("@selfcommunity/types");
6
+ const styles_1 = require("@mui/material/styles");
7
+ const system_1 = require("@mui/system");
8
8
  const react_core_1 = require("@selfcommunity/react-core");
9
- const react_intl_1 = require("react-intl");
9
+ const types_1 = require("@selfcommunity/types");
10
10
  const classnames_1 = tslib_1.__importDefault(require("classnames"));
11
- const system_1 = require("@mui/system");
11
+ const react_intl_1 = require("react-intl");
12
12
  const BaseItem_1 = tslib_1.__importDefault(require("../../shared/BaseItem"));
13
- const Widget_1 = tslib_1.__importDefault(require("../Widget"));
14
- const constants_1 = require("./constants");
15
- const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
16
13
  const Calendar_1 = tslib_1.__importDefault(require("../../shared/Calendar"));
17
14
  const EventInfoDetails_1 = tslib_1.__importDefault(require("../../shared/EventInfoDetails"));
18
- const User_1 = tslib_1.__importDefault(require("../User"));
19
- const EventPartecipantsButton_1 = tslib_1.__importDefault(require("../EventPartecipantsButton"));
20
15
  const event_1 = require("../../types/event");
16
+ const EventPartecipantsButton_1 = tslib_1.__importDefault(require("../EventPartecipantsButton"));
17
+ const User_1 = tslib_1.__importDefault(require("../User"));
18
+ const Widget_1 = tslib_1.__importDefault(require("../Widget"));
19
+ const constants_1 = require("./constants");
20
+ const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
21
21
  const classes = {
22
22
  root: `${constants_1.PREFIX}-root`,
23
23
  detailRoot: `${constants_1.PREFIX}-detail-root`,
@@ -119,13 +119,13 @@ 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_big, 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)(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" }) })) })))] })));
123
123
  }
124
124
  else if (template === event_1.SCEventTemplateType.PREVIEW) {
125
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" }) })) })))] })));
126
126
  }
127
127
  else {
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_small, 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, {
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, {
129
129
  weekday: 'long',
130
130
  month: 'long',
131
131
  day: 'numeric'
@@ -132,9 +132,11 @@ function EventSubscribeButton(inProps) {
132
132
  }
133
133
  else {
134
134
  s =
135
- scEvent.subscription_status === types_1.SCEventSubscriptionStatusType.NOT_GOING
136
- ? types_1.SCEventSubscriptionStatusType.SUBSCRIBED
137
- : types_1.SCEventSubscriptionStatusType.NOT_GOING;
135
+ scEvent.subscription_status === types_1.SCEventSubscriptionStatusType.REQUESTED
136
+ ? null
137
+ : scEvent.subscription_status === types_1.SCEventSubscriptionStatusType.NOT_GOING
138
+ ? types_1.SCEventSubscriptionStatusType.SUBSCRIBED
139
+ : types_1.SCEventSubscriptionStatusType.NOT_GOING;
138
140
  }
139
141
  onSubscribe && onSubscribe(scEvent, s);
140
142
  })
@@ -189,6 +191,6 @@ function EventSubscribeButton(inProps) {
189
191
  }
190
192
  return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (scEvent === null || scEvent === void 0 ? void 0 : scEvent.privacy) !== types_1.SCEventPrivacyType.PRIVATE ||
191
193
  ((scEvent === null || scEvent === void 0 ? void 0 : scEvent.privacy) === types_1.SCEventPrivacyType.PRIVATE && status && status !== types_1.SCEventSubscriptionStatusType.REQUESTED) ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SelectRoot, Object.assign({ className: (0, classnames_1.default)(classes.selectRoot, className, { [classes.going]: status && status === types_1.SCEventSubscriptionStatusType.GOING }, { [classes.notGoing]: status && status === types_1.SCEventSubscriptionStatusType.NOT_GOING }), onClick: handleOpen, endIcon: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: open ? 'expand_less' : 'expand_more' }), startIcon: status &&
192
- status !== types_1.SCEventSubscriptionStatusType.SUBSCRIBED && ((0, jsx_runtime_1.jsx)(material_1.Icon, { children: status === types_1.SCEventSubscriptionStatusType.GOING ? 'circle_checked' : 'circle_closed' })) }, rest, { children: getStatus })), isMobile ? ((0, jsx_runtime_1.jsx)(SwipeableDrawerRoot, Object.assign({ className: classes.drawerRoot, PaperProps: { className: classes.paper }, open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, { children: renderMenuItems() }))) : ((0, jsx_runtime_1.jsx)(MenuRoot, Object.assign({ className: classes.menuRoot, anchorEl: anchorEl, open: open, onClose: handleClose }, { children: renderMenuItems() })))] })) : ((0, jsx_runtime_1.jsx)(RequestRoot, Object.assign({ className: (0, classnames_1.default)(classes.requestRoot, className), variant: "outlined", size: "small", loading: scUserContext.user ? scEventsManager.isLoading(scEvent) : null, disabled: status === types_1.SCEventSubscriptionStatusType.REQUESTED, onClick: handleToggleAction }, rest, { children: getStatus }))) }));
194
+ status !== types_1.SCEventSubscriptionStatusType.SUBSCRIBED && ((0, jsx_runtime_1.jsx)(material_1.Icon, { children: status === types_1.SCEventSubscriptionStatusType.GOING ? 'circle_checked' : 'circle_closed' })) }, rest, { children: getStatus })), isMobile ? ((0, jsx_runtime_1.jsx)(SwipeableDrawerRoot, Object.assign({ className: classes.drawerRoot, PaperProps: { className: classes.paper }, open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, { children: renderMenuItems() }))) : ((0, jsx_runtime_1.jsx)(MenuRoot, Object.assign({ className: classes.menuRoot, anchorEl: anchorEl, open: open, onClose: handleClose }, { children: renderMenuItems() })))] })) : ((0, jsx_runtime_1.jsx)(RequestRoot, Object.assign({ className: (0, classnames_1.default)(classes.requestRoot, className), variant: "outlined", size: "small", loading: scUserContext.user ? scEventsManager.isLoading(scEvent) : null, onClick: handleToggleAction }, rest, { children: getStatus }))) }));
193
195
  }
194
196
  exports.default = EventSubscribeButton;
@@ -196,7 +196,7 @@ function Events(inProps) {
196
196
  variant: showFollowed ? 'filled' : 'outlined', label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByFollowedInterest", defaultMessage: "ui.events.filterByFollowedInterest" }), onClick: handleChipClick,
197
197
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
198
198
  // @ts-ignore
199
- showFollowed: showFollowed, deleteIcon: showFollowed ? (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) : null, onDelete: showFollowed ? handleDeleteClick : null }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true }, { children: (0, jsx_runtime_1.jsx)(PastEventsFilter_1.default, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick }) }))] })) }))), (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: !events.length ? ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.noResults }, { children: (onlyStaffEnabled && !react_core_1.UserUtils.isStaff(scUserContext.user)) ||
199
+ showFollowed: showFollowed, deleteIcon: showFollowed ? (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) : null, onDelete: showFollowed ? handleDeleteClick : null }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true }, { children: (0, jsx_runtime_1.jsx)(PastEventsFilter_1.default, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick, disabled: dateSearch !== types_1.SCEventDateFilterType.ANY }) }))] })) }))), (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: !events.length ? ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.noResults }, { children: (onlyStaffEnabled && !react_core_1.UserUtils.isStaff(scUserContext.user)) ||
200
200
  (onlyStaffEnabled && react_core_1.UserUtils.isStaff(scUserContext.user) && general) ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, Object.assign({}, EventSkeletonComponentProps)), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.noEvents.title", defaultMessage: "ui.events.noEvents.title" }) }))] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { actions: (0, jsx_runtime_1.jsx)(CreateEventButton_1.default, {}) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.noEvents.title.onlyStaff", defaultMessage: "ui.events.noEvents.title.onlyStaff" }) }))] })) }))) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ container: true, spacing: { xs: 2 }, className: classes.events }, { children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [filteredEvents.map((event) => ((0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, sm: 8, md: 6, className: classes.item }, { children: (0, jsx_runtime_1.jsx)(Event_1.default, Object.assign({ event: event, eventId: event.id }, EventComponentProps)) }), event.id))), filteredEvents.length % 2 !== 0 && ((0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, sm: 8, md: 6, className: classes.itemSkeleton }, { children: (0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { actions: (0, jsx_runtime_1.jsx)(CreateEventButton_1.default, Object.assign({ variant: "outlined", color: "primary", size: "small" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.skeleton.action.add", defaultMessage: "ui.events.skeleton.action.add" }) })) })) }), 'skeleton-item'))] }) })), Boolean(next) && ((0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ color: "secondary", variant: "text", onClick: handleNext, className: classes.showMore }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.button.seeMore", defaultMessage: "ui.events.button.seeMore" }) })))] })) })] }));
201
201
  /**
202
202
  * Renders root object (if content availability community option is false and user is anonymous, component is hidden)
@@ -1,4 +1,5 @@
1
- export interface PastEventsFilterProps {
1
+ import { ChipProps } from '@mui/material';
2
+ export interface PastEventsFilterProps extends ChipProps {
2
3
  showPastEvents: boolean;
3
4
  handleClick: () => void;
4
5
  handleDeleteClick?: () => void;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
3
4
  const jsx_runtime_1 = require("react/jsx-runtime");
4
5
  const material_1 = require("@mui/material");
5
6
  const react_intl_1 = require("react-intl");
@@ -12,11 +13,11 @@ function PastEventsFilter(inProps) {
12
13
  props: inProps,
13
14
  name: constants_1.PREFIX
14
15
  });
15
- const { showPastEvents, handleClick, handleDeleteClick } = props;
16
+ const { showPastEvents, handleClick, handleDeleteClick } = props, rest = tslib_1.__rest(props, ["showPastEvents", "handleClick", "handleDeleteClick"]);
16
17
  return ((0, jsx_runtime_1.jsx)(Events_1.EventsChipRoot
17
18
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
18
19
  // @ts-ignore
19
- , {
20
+ , Object.assign({
20
21
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
21
22
  // @ts-ignore
22
23
  color: showPastEvents ? 'secondary' : 'default',
@@ -25,6 +26,6 @@ function PastEventsFilter(inProps) {
25
26
  variant: showPastEvents ? 'filled' : 'outlined', label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByPastEvents", defaultMessage: "ui.events.filterByPastEvents" }), onClick: handleClick,
26
27
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
27
28
  // @ts-ignore
28
- showPastEvents: showPastEvents, deleteIcon: showPastEvents ? (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) : null, onDelete: showPastEvents ? handleDeleteClick : undefined }));
29
+ showPastEvents: showPastEvents, deleteIcon: showPastEvents ? (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) : null, onDelete: showPastEvents ? handleDeleteClick : undefined }, rest)));
29
30
  }
30
31
  exports.default = PastEventsFilter;
@@ -0,0 +1,8 @@
1
+ import { Dispatch, HTMLAttributes, SetStateAction } from 'react';
2
+ export interface ArrowProps {
3
+ type: 'prev' | 'next';
4
+ currentItem: number;
5
+ setCurrentItem: Dispatch<SetStateAction<number>>;
6
+ className?: HTMLAttributes<HTMLButtonElement>['className'];
7
+ }
8
+ export default function Arrow(props: ArrowProps): JSX.Element;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const material_1 = require("@mui/material");
5
+ const react_1 = require("react");
6
+ const react_2 = require("swiper/react");
7
+ function Arrow(props) {
8
+ const { type, currentItem, setCurrentItem, className } = props;
9
+ // STATE
10
+ const [itemsLength, setItemsLength] = (0, react_1.useState)(0);
11
+ // HOOKS
12
+ const swiper = (0, react_2.useSwiper)();
13
+ (0, react_1.useEffect)(() => {
14
+ setItemsLength(swiper.slides.length);
15
+ }, []);
16
+ const handleChange = (0, react_1.useCallback)((type) => {
17
+ if (type === 'prev') {
18
+ swiper.slidePrev();
19
+ }
20
+ else {
21
+ swiper.slideNext();
22
+ }
23
+ setCurrentItem(swiper.snapIndex);
24
+ }, [type]);
25
+ if (type === 'prev') {
26
+ return (currentItem > 0 && ((0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ className: className, size: "medium", onClick: () => handleChange('prev') }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "chevron_left" }) }))));
27
+ }
28
+ return (currentItem < itemsLength - 1 && ((0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ className: className, size: "medium", onClick: () => handleChange('next') }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "chevron_right" }) }))));
29
+ }
30
+ exports.default = Arrow;
@@ -6,15 +6,15 @@ const material_1 = require("@mui/material");
6
6
  const system_1 = require("@mui/system");
7
7
  require("swiper/css");
8
8
  const react_1 = require("swiper/react");
9
+ const event_1 = require("../../types/event");
10
+ const Event_1 = require("../Event");
9
11
  const Widget_1 = tslib_1.__importDefault(require("../Widget"));
10
12
  const constants_1 = require("./constants");
11
- const Event_1 = require("../Event");
12
- const event_1 = require("../../types/event");
13
13
  const classes = {
14
14
  root: `${constants_1.PREFIX}-skeleton-root`,
15
15
  content: `${constants_1.PREFIX}-content`,
16
16
  title: `${constants_1.PREFIX}-title`,
17
- swiper: `${constants_1.PREFIX}-swiper`,
17
+ swiperSlide: `${constants_1.PREFIX}-swiper-slide`,
18
18
  actions: `${constants_1.PREFIX}-actions`
19
19
  };
20
20
  const Root = (0, system_1.styled)(Widget_1.default, {
@@ -23,6 +23,6 @@ const Root = (0, system_1.styled)(Widget_1.default, {
23
23
  overridesResolver: (_props, styles) => styles.skeletonRoot
24
24
  })(() => ({}));
25
25
  function SuggestedEventsWidgetSkeleton() {
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)(material_1.Skeleton, { className: classes.title, animation: "wave", width: "141px", height: "23px" }), (0, jsx_runtime_1.jsx)(react_1.Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto" }, { children: [1, 2, 3, 4, 5, 6, 7].map((_element, i) => ((0, jsx_runtime_1.jsx)(react_1.SwiperSlide, Object.assign({ className: classes.swiper }, { children: (0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, { template: event_1.SCEventTemplateType.PREVIEW, variant: "outlined", actions: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}) }) }), 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" }) }))] })));
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)(material_1.Skeleton, { className: classes.title, animation: "wave", width: "141px", height: "23px" }), (0, jsx_runtime_1.jsx)(react_1.Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto" }, { children: [1, 2, 3, 4, 5, 6, 7].map((_element, i) => ((0, jsx_runtime_1.jsx)(react_1.SwiperSlide, Object.assign({ className: classes.swiperSlide }, { children: (0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, { template: event_1.SCEventTemplateType.PREVIEW, variant: "outlined", actions: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}) }) }), 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" }) }))] })));
27
27
  }
28
28
  exports.default = SuggestedEventsWidgetSkeleton;
@@ -1,4 +1,3 @@
1
- import 'swiper/css';
2
1
  import { WidgetProps } from '../Widget';
3
2
  export interface SuggestedEventsWidgetProps extends WidgetProps {
4
3
  /**
@@ -9,21 +9,25 @@ const react_core_1 = require("@selfcommunity/react-core");
9
9
  const utils_1 = require("@selfcommunity/utils");
10
10
  const react_1 = require("react");
11
11
  const react_intl_1 = require("react-intl");
12
- require("swiper/css");
12
+ const modules_1 = require("swiper/modules");
13
13
  const react_2 = require("swiper/react");
14
14
  const Errors_1 = require("../../constants/Errors");
15
15
  const Pagination_1 = require("../../constants/Pagination");
16
16
  const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
17
+ const event_1 = require("../../types/event");
18
+ const Event_1 = tslib_1.__importDefault(require("../Event"));
17
19
  const Widget_1 = tslib_1.__importDefault(require("../Widget"));
20
+ const Arrow_1 = tslib_1.__importDefault(require("./Arrow"));
18
21
  const constants_1 = require("./constants");
19
22
  const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
20
- const event_1 = require("../../types/event");
21
- const Event_1 = tslib_1.__importDefault(require("../Event"));
22
23
  const classes = {
23
24
  root: `${constants_1.PREFIX}-root`,
24
25
  content: `${constants_1.PREFIX}-content`,
25
26
  title: `${constants_1.PREFIX}-title`,
26
27
  swiper: `${constants_1.PREFIX}-swiper`,
28
+ swiperSlide: `${constants_1.PREFIX}-swiper-slide`,
29
+ swiperPrevArrow: `${constants_1.PREFIX}-swiper-prev-arrow`,
30
+ swiperNextArrow: `${constants_1.PREFIX}-swiper-next-arrow`,
27
31
  event: `${constants_1.PREFIX}-event`,
28
32
  actions: `${constants_1.PREFIX}-actions`,
29
33
  actionButton: `${constants_1.PREFIX}-action-button`
@@ -43,6 +47,8 @@ function SuggestedEventsWidget(inProps) {
43
47
  // STATE
44
48
  const [eventsData, setEventsData] = (0, react_1.useState)(null);
45
49
  const [loading, setLoading] = (0, react_1.useState)(true);
50
+ const [showSkeleton, setShowSkeleton] = (0, react_1.useState)(false);
51
+ const [currentItem, setCurrentItem] = (0, react_1.useState)(0);
46
52
  // CONTEXT
47
53
  const scRoutingContext = (0, react_core_1.useSCRouting)();
48
54
  (0, react_1.useEffect)(() => {
@@ -56,13 +62,17 @@ function SuggestedEventsWidget(inProps) {
56
62
  });
57
63
  }, []);
58
64
  const handleReachEnd = (0, react_1.useCallback)(() => {
59
- if (eventsData.count > eventsData.results.length) {
65
+ if (eventsData.count > eventsData.results.length && eventsData.next) {
66
+ setShowSkeleton(true);
60
67
  api_services_1.http
61
68
  .request({
62
69
  url: eventsData.next,
63
70
  method: api_services_1.Endpoints.GetEventSuggestedUsers.method
64
71
  })
65
- .then((res) => console.log('*** res ***', res))
72
+ .then((res) => {
73
+ setEventsData(res.data);
74
+ setShowSkeleton(false);
75
+ })
66
76
  .catch((error) => {
67
77
  utils_1.Logger.error(Errors_1.SCOPE_SC_UI, error);
68
78
  });
@@ -75,6 +85,6 @@ function SuggestedEventsWidget(inProps) {
75
85
  if (!eventsData) {
76
86
  return (0, jsx_runtime_1.jsx)(HiddenPlaceholder_1.default, {});
77
87
  }
78
- 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.suggestedEventsWidget.title", defaultMessage: "ui.suggestedEventsWidget.title" }) })), (0, jsx_runtime_1.jsx)(react_2.Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto", onReachEnd: handleReachEnd }, { children: eventsData === null || eventsData === void 0 ? void 0 : eventsData.results.map((event, i) => ((0, jsx_runtime_1.jsx)(react_2.SwiperSlide, Object.assign({ className: classes.swiper }, { children: (0, jsx_runtime_1.jsx)(Event_1.default, { event: event, template: event_1.SCEventTemplateType.PREVIEW, actions: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), variant: "outlined", className: classes.event }) }), i))) }))] })), (0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EVENT_ROUTE_NAME, {}), className: classes.actionButton }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "caption" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.suggestedEventsWidget.showAll", defaultMessage: "ui.suggestedEventsWidget.showAll" }) })) })) }))] })));
88
+ 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.suggestedEventsWidget.title", defaultMessage: "ui.suggestedEventsWidget.title" }) })), (0, jsx_runtime_1.jsxs)(react_2.Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto", grabCursor: true, modules: [modules_1.Navigation], onReachEnd: handleReachEnd, onSlideChange: (swiper) => setCurrentItem(swiper.snapIndex), className: classes.swiper }, { children: [(showSkeleton ? [...eventsData.results, undefined] : eventsData.results).map((event, i) => ((0, jsx_runtime_1.jsx)(react_2.SwiperSlide, Object.assign({ className: classes.swiperSlide }, { children: (0, jsx_runtime_1.jsx)(Event_1.default, { event: event, template: event_1.SCEventTemplateType.PREVIEW, actions: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), variant: "outlined", className: classes.event }) }), i))), (0, jsx_runtime_1.jsx)(Arrow_1.default, { className: classes.swiperPrevArrow, type: "prev", currentItem: currentItem, setCurrentItem: setCurrentItem }), (0, jsx_runtime_1.jsx)(Arrow_1.default, { className: classes.swiperNextArrow, type: "next", currentItem: currentItem, setCurrentItem: setCurrentItem })] }))] })), (0, jsx_runtime_1.jsx)(material_1.CardActions, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EVENTS_SUGGESTED_ROUTE_NAME, {}), className: classes.actionButton }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "caption" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.suggestedEventsWidget.showAll", defaultMessage: "ui.suggestedEventsWidget.showAll" }) })) })) }))] })));
79
89
  }
80
90
  exports.default = SuggestedEventsWidget;
@@ -1,4 +1,5 @@
1
+ import Arrow, { ArrowProps } from './Arrow';
1
2
  import SuggestedEventsWidgetSkeleton from './Skeleton';
2
3
  import SuggestedEventsWidget, { SuggestedEventsWidgetProps } from './SuggestedEventsWidget';
3
4
  export default SuggestedEventsWidget;
4
- export { SuggestedEventsWidgetSkeleton, type SuggestedEventsWidgetProps };
5
+ export { Arrow, SuggestedEventsWidgetSkeleton, type ArrowProps, type SuggestedEventsWidgetProps };
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuggestedEventsWidgetSkeleton = void 0;
3
+ exports.SuggestedEventsWidgetSkeleton = exports.Arrow = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const Arrow_1 = tslib_1.__importDefault(require("./Arrow"));
6
+ exports.Arrow = Arrow_1.default;
5
7
  const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
6
8
  exports.SuggestedEventsWidgetSkeleton = Skeleton_1.default;
7
9
  const SuggestedEventsWidget_1 = tslib_1.__importDefault(require("./SuggestedEventsWidget"));
@@ -1,8 +1,8 @@
1
- import React from 'react';
2
1
  import { SCEventType } from '@selfcommunity/types';
2
+ import React from 'react';
3
+ import { SCEventTemplateType } from '../../types/event';
3
4
  import { WidgetProps } from '../Widget';
4
5
  import { EventSkeletonProps } from './Skeleton';
5
- import { SCEventTemplateType } from '../../types/event';
6
6
  export interface EventProps extends WidgetProps {
7
7
  /**
8
8
  * Event Object
@@ -1,21 +1,21 @@
1
1
  import { __rest } from "tslib";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { styled } from '@mui/material/styles';
4
3
  import { Avatar, Box, Button, CardActions, CardContent, CardMedia, Divider, Typography } from '@mui/material';
5
- import { SCEventLocationType } from '@selfcommunity/types';
4
+ import { styled } from '@mui/material/styles';
5
+ import { useThemeProps } from '@mui/system';
6
6
  import { Link, SCRoutes, useSCFetchEvent, useSCRouting } from '@selfcommunity/react-core';
7
- import { FormattedMessage, useIntl } from 'react-intl';
7
+ import { SCEventLocationType } from '@selfcommunity/types';
8
8
  import classNames from 'classnames';
9
- import { useThemeProps } from '@mui/system';
9
+ import { FormattedMessage, useIntl } from 'react-intl';
10
10
  import BaseItem from '../../shared/BaseItem';
11
- import Widget from '../Widget';
12
- import { PREFIX } from './constants';
13
- import EventSkeleton from './Skeleton';
14
11
  import Calendar from '../../shared/Calendar';
15
12
  import EventInfoDetails from '../../shared/EventInfoDetails';
16
- import User from '../User';
17
- import EventPartecipantsButton from '../EventPartecipantsButton';
18
13
  import { SCEventTemplateType } from '../../types/event';
14
+ import EventPartecipantsButton from '../EventPartecipantsButton';
15
+ import User from '../User';
16
+ import Widget from '../Widget';
17
+ import { PREFIX } from './constants';
18
+ import EventSkeleton from './Skeleton';
19
19
  const classes = {
20
20
  root: `${PREFIX}-root`,
21
21
  detailRoot: `${PREFIX}-detail-root`,
@@ -117,13 +117,13 @@ export default function Event(inProps) {
117
117
  */
118
118
  let contentObj;
119
119
  if (template === SCEventTemplateType.DETAIL) {
120
- contentObj = (_jsxs(DetailRoot, Object.assign({ className: classes.detailRoot }, { children: [_jsxs(Box, Object.assign({ className: classes.detailImageWrapper }, { children: [_jsx(CardMedia, { component: "img", image: scEvent.image_big, alt: scEvent.name, className: classes.detailImage }), _jsx(Calendar, { day: new Date(scEvent.start_date).getDate() })] })), _jsxs(CardContent, Object.assign({ className: classes.detailContent }, { children: [_jsx(Link, Object.assign({ to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.detailNameWrapper }, { children: _jsx(Typography, Object.assign({ variant: "h3", className: classes.detailName }, { children: scEvent.name })) })), _jsx(EventInfoDetails, { event: scEvent }), !hideEventPlanner && (_jsx(User, { user: scEvent.managed_by, elevation: 0, secondary: _jsx(Typography, Object.assign({ variant: "caption" }, { children: _jsx(FormattedMessage, { id: "ui.myEventsWidget.planner", defaultMessage: "ui.myEventsWidget.planner" }) })), actions: _jsx(_Fragment, {}), className: classes.detailUser })), !hideEventParticipants && (_jsxs(_Fragment, { children: [_jsx(Divider, { className: classes.detailFirstDivider }), _jsx(EventPartecipantsButton, { event: scEvent, eventId: scEvent.id })] })), _jsx(Divider, { className: classes.detailSecondDivider })] })), actions !== null && actions !== void 0 ? actions : (_jsx(CardActions, Object.assign({ className: classes.detailActions }, { children: _jsx(Button, Object.assign({ size: "small", variant: "outlined", component: Link, to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, scEvent) }, { children: _jsx(FormattedMessage, { defaultMessage: "ui.event.see", id: "ui.event.see" }) })) })))] })));
120
+ contentObj = (_jsxs(DetailRoot, Object.assign({ className: classes.detailRoot }, { children: [_jsxs(Box, Object.assign({ className: classes.detailImageWrapper }, { children: [_jsx(CardMedia, { component: "img", image: scEvent.image_medium, alt: scEvent.name, className: classes.detailImage }), _jsx(Calendar, { day: new Date(scEvent.start_date).getDate() })] })), _jsxs(CardContent, Object.assign({ className: classes.detailContent }, { children: [_jsx(Link, Object.assign({ to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.detailNameWrapper }, { children: _jsx(Typography, Object.assign({ variant: "h3", className: classes.detailName }, { children: scEvent.name })) })), _jsx(EventInfoDetails, { event: scEvent }), !hideEventPlanner && (_jsx(User, { user: scEvent.managed_by, elevation: 0, secondary: _jsx(Typography, Object.assign({ variant: "caption" }, { children: _jsx(FormattedMessage, { id: "ui.myEventsWidget.planner", defaultMessage: "ui.myEventsWidget.planner" }) })), actions: _jsx(_Fragment, {}), className: classes.detailUser })), !hideEventParticipants && (_jsxs(_Fragment, { children: [_jsx(Divider, { className: classes.detailFirstDivider }), _jsx(EventPartecipantsButton, { event: scEvent, eventId: scEvent.id })] })), _jsx(Divider, { className: classes.detailSecondDivider })] })), actions !== null && actions !== void 0 ? actions : (_jsx(CardActions, Object.assign({ className: classes.detailActions }, { children: _jsx(Button, Object.assign({ size: "small", variant: "outlined", component: Link, to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, scEvent) }, { children: _jsx(FormattedMessage, { defaultMessage: "ui.event.see", id: "ui.event.see" }) })) })))] })));
121
121
  }
122
122
  else if (template === SCEventTemplateType.PREVIEW) {
123
123
  contentObj = (_jsxs(PreviewRoot, Object.assign({ className: classes.previewRoot }, { children: [_jsx(Box, Object.assign({ position: "relative", className: classes.previewImageWrapper }, { children: _jsx(CardMedia, { component: "img", height: "100px", image: scEvent.image_medium, alt: scEvent.name, className: classes.previewImage }) })), _jsxs(CardContent, Object.assign({ className: classes.previewContent }, { children: [_jsx(EventInfoDetails, { event: scEvent, hidePrivacyIcon: true, hasLocationInfo: false, beforePrivacyInfo: _jsx(Link, Object.assign({ to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.previewNameWrapper }, { children: _jsx(Typography, Object.assign({ variant: "h5", className: classes.previewName }, { children: scEvent.name })) })) }), !hideEventParticipants && _jsx(EventPartecipantsButton, { event: scEvent })] })), actions !== null && actions !== void 0 ? actions : (_jsx(CardActions, Object.assign({ className: classes.previewActions }, { children: _jsx(Button, Object.assign({ size: "small", variant: "outlined", component: Link, to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, scEvent) }, { children: _jsx(FormattedMessage, { defaultMessage: "ui.event.see", id: "ui.event.see" }) })) })))] })));
124
124
  }
125
125
  else {
126
- contentObj = (_jsx(SnippetRoot, { elevation: 0, square: true, disableTypography: true, className: classes.snippetRoot, image: _jsx(Avatar, { variant: "square", alt: scEvent.name, src: scEvent.image_small, className: classes.snippetAvatar }), primary: _jsxs(Link, Object.assign({ to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.snippetPrimary }, { children: [_jsx(Typography, Object.assign({ component: "span" }, { children: `${intl.formatDate(scEvent.start_date, {
126
+ contentObj = (_jsx(SnippetRoot, { elevation: 0, square: true, disableTypography: true, className: classes.snippetRoot, image: _jsx(Avatar, { variant: "square", alt: scEvent.name, src: scEvent.image_medium, className: classes.snippetAvatar }), primary: _jsxs(Link, Object.assign({ to: scRoutingContext.url(SCRoutes.EVENT_ROUTE_NAME, scEvent), className: classes.snippetPrimary }, { children: [_jsx(Typography, Object.assign({ component: "span" }, { children: `${intl.formatDate(scEvent.start_date, {
127
127
  weekday: 'long',
128
128
  month: 'long',
129
129
  day: 'numeric'
@@ -130,9 +130,11 @@ export default function EventSubscribeButton(inProps) {
130
130
  }
131
131
  else {
132
132
  s =
133
- scEvent.subscription_status === SCEventSubscriptionStatusType.NOT_GOING
134
- ? SCEventSubscriptionStatusType.SUBSCRIBED
135
- : SCEventSubscriptionStatusType.NOT_GOING;
133
+ scEvent.subscription_status === SCEventSubscriptionStatusType.REQUESTED
134
+ ? null
135
+ : scEvent.subscription_status === SCEventSubscriptionStatusType.NOT_GOING
136
+ ? SCEventSubscriptionStatusType.SUBSCRIBED
137
+ : SCEventSubscriptionStatusType.NOT_GOING;
136
138
  }
137
139
  onSubscribe && onSubscribe(scEvent, s);
138
140
  })
@@ -187,5 +189,5 @@ export default function EventSubscribeButton(inProps) {
187
189
  }
188
190
  return (_jsx(_Fragment, { children: (scEvent === null || scEvent === void 0 ? void 0 : scEvent.privacy) !== SCEventPrivacyType.PRIVATE ||
189
191
  ((scEvent === null || scEvent === void 0 ? void 0 : scEvent.privacy) === SCEventPrivacyType.PRIVATE && status && status !== SCEventSubscriptionStatusType.REQUESTED) ? (_jsxs(_Fragment, { children: [_jsx(SelectRoot, Object.assign({ className: classNames(classes.selectRoot, className, { [classes.going]: status && status === SCEventSubscriptionStatusType.GOING }, { [classes.notGoing]: status && status === SCEventSubscriptionStatusType.NOT_GOING }), onClick: handleOpen, endIcon: _jsx(Icon, { children: open ? 'expand_less' : 'expand_more' }), startIcon: status &&
190
- status !== SCEventSubscriptionStatusType.SUBSCRIBED && (_jsx(Icon, { children: status === SCEventSubscriptionStatusType.GOING ? 'circle_checked' : 'circle_closed' })) }, rest, { children: getStatus })), isMobile ? (_jsx(SwipeableDrawerRoot, Object.assign({ className: classes.drawerRoot, PaperProps: { className: classes.paper }, open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, { children: renderMenuItems() }))) : (_jsx(MenuRoot, Object.assign({ className: classes.menuRoot, anchorEl: anchorEl, open: open, onClose: handleClose }, { children: renderMenuItems() })))] })) : (_jsx(RequestRoot, Object.assign({ className: classNames(classes.requestRoot, className), variant: "outlined", size: "small", loading: scUserContext.user ? scEventsManager.isLoading(scEvent) : null, disabled: status === SCEventSubscriptionStatusType.REQUESTED, onClick: handleToggleAction }, rest, { children: getStatus }))) }));
192
+ status !== SCEventSubscriptionStatusType.SUBSCRIBED && (_jsx(Icon, { children: status === SCEventSubscriptionStatusType.GOING ? 'circle_checked' : 'circle_closed' })) }, rest, { children: getStatus })), isMobile ? (_jsx(SwipeableDrawerRoot, Object.assign({ className: classes.drawerRoot, PaperProps: { className: classes.paper }, open: open, onClose: handleClose, onOpen: handleOpen, anchor: "bottom", disableSwipeToOpen: true }, { children: renderMenuItems() }))) : (_jsx(MenuRoot, Object.assign({ className: classes.menuRoot, anchorEl: anchorEl, open: open, onClose: handleClose }, { children: renderMenuItems() })))] })) : (_jsx(RequestRoot, Object.assign({ className: classNames(classes.requestRoot, className), variant: "outlined", size: "small", loading: scUserContext.user ? scEventsManager.isLoading(scEvent) : null, onClick: handleToggleAction }, rest, { children: getStatus }))) }));
191
193
  }
@@ -193,7 +193,7 @@ export default function Events(inProps) {
193
193
  variant: showFollowed ? 'filled' : 'outlined', label: _jsx(FormattedMessage, { id: "ui.events.filterByFollowedInterest", defaultMessage: "ui.events.filterByFollowedInterest" }), onClick: handleChipClick,
194
194
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
195
195
  // @ts-ignore
196
- showFollowed: showFollowed, deleteIcon: showFollowed ? _jsx(Icon, { children: "close" }) : null, onDelete: showFollowed ? handleDeleteClick : null }) })), _jsx(Grid, Object.assign({ item: true }, { children: _jsx(PastEventsFilter, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick }) }))] })) }))), _jsx(_Fragment, { children: !events.length ? (_jsx(Box, Object.assign({ className: classes.noResults }, { children: (onlyStaffEnabled && !UserUtils.isStaff(scUserContext.user)) ||
196
+ showFollowed: showFollowed, deleteIcon: showFollowed ? _jsx(Icon, { children: "close" }) : null, onDelete: showFollowed ? handleDeleteClick : null }) })), _jsx(Grid, Object.assign({ item: true }, { children: _jsx(PastEventsFilter, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick, disabled: dateSearch !== SCEventDateFilterType.ANY }) }))] })) }))), _jsx(_Fragment, { children: !events.length ? (_jsx(Box, Object.assign({ className: classes.noResults }, { children: (onlyStaffEnabled && !UserUtils.isStaff(scUserContext.user)) ||
197
197
  (onlyStaffEnabled && UserUtils.isStaff(scUserContext.user) && general) ? (_jsxs(_Fragment, { children: [_jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps)), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.events.noEvents.title", defaultMessage: "ui.events.noEvents.title" }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { actions: _jsx(CreateEventButton, {}) })), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.events.noEvents.title.onlyStaff", defaultMessage: "ui.events.noEvents.title.onlyStaff" }) }))] })) }))) : (_jsxs(_Fragment, { children: [_jsx(Grid, Object.assign({ container: true, spacing: { xs: 2 }, className: classes.events }, { children: _jsxs(_Fragment, { children: [filteredEvents.map((event) => (_jsx(Grid, Object.assign({ item: true, xs: 12, sm: 8, md: 6, className: classes.item }, { children: _jsx(Event, Object.assign({ event: event, eventId: event.id }, EventComponentProps)) }), event.id))), filteredEvents.length % 2 !== 0 && (_jsx(Grid, Object.assign({ item: true, xs: 12, sm: 8, md: 6, className: classes.itemSkeleton }, { children: _jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { actions: _jsx(CreateEventButton, Object.assign({ variant: "outlined", color: "primary", size: "small" }, { children: _jsx(FormattedMessage, { id: "ui.events.skeleton.action.add", defaultMessage: "ui.events.skeleton.action.add" }) })) })) }), 'skeleton-item'))] }) })), Boolean(next) && (_jsx(Button, Object.assign({ color: "secondary", variant: "text", onClick: handleNext, className: classes.showMore }, { children: _jsx(FormattedMessage, { id: "ui.events.button.seeMore", defaultMessage: "ui.events.button.seeMore" }) })))] })) })] }));
198
198
  /**
199
199
  * Renders root object (if content availability community option is false and user is anonymous, component is hidden)
@@ -1,4 +1,5 @@
1
- export interface PastEventsFilterProps {
1
+ import { ChipProps } from '@mui/material';
2
+ export interface PastEventsFilterProps extends ChipProps {
2
3
  showPastEvents: boolean;
3
4
  handleClick: () => void;
4
5
  handleDeleteClick?: () => void;
@@ -1,3 +1,4 @@
1
+ import { __rest } from "tslib";
1
2
  import { jsx as _jsx } from "react/jsx-runtime";
2
3
  import { Icon } from '@mui/material';
3
4
  import { FormattedMessage } from 'react-intl';
@@ -10,11 +11,11 @@ export default function PastEventsFilter(inProps) {
10
11
  props: inProps,
11
12
  name: PREFIX
12
13
  });
13
- const { showPastEvents, handleClick, handleDeleteClick } = props;
14
+ const { showPastEvents, handleClick, handleDeleteClick } = props, rest = __rest(props, ["showPastEvents", "handleClick", "handleDeleteClick"]);
14
15
  return (_jsx(EventsChipRoot
15
16
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
16
17
  // @ts-ignore
17
- , {
18
+ , Object.assign({
18
19
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
19
20
  // @ts-ignore
20
21
  color: showPastEvents ? 'secondary' : 'default',
@@ -23,5 +24,5 @@ export default function PastEventsFilter(inProps) {
23
24
  variant: showPastEvents ? 'filled' : 'outlined', label: _jsx(FormattedMessage, { id: "ui.events.filterByPastEvents", defaultMessage: "ui.events.filterByPastEvents" }), onClick: handleClick,
24
25
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
25
26
  // @ts-ignore
26
- showPastEvents: showPastEvents, deleteIcon: showPastEvents ? _jsx(Icon, { children: "close" }) : null, onDelete: showPastEvents ? handleDeleteClick : undefined }));
27
+ showPastEvents: showPastEvents, deleteIcon: showPastEvents ? _jsx(Icon, { children: "close" }) : null, onDelete: showPastEvents ? handleDeleteClick : undefined }, rest)));
27
28
  }
@@ -0,0 +1,8 @@
1
+ import { Dispatch, HTMLAttributes, SetStateAction } from 'react';
2
+ export interface ArrowProps {
3
+ type: 'prev' | 'next';
4
+ currentItem: number;
5
+ setCurrentItem: Dispatch<SetStateAction<number>>;
6
+ className?: HTMLAttributes<HTMLButtonElement>['className'];
7
+ }
8
+ export default function Arrow(props: ArrowProps): JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Icon, IconButton } from '@mui/material';
3
+ import { useCallback, useEffect, useState } from 'react';
4
+ import { useSwiper } from 'swiper/react';
5
+ export default function Arrow(props) {
6
+ const { type, currentItem, setCurrentItem, className } = props;
7
+ // STATE
8
+ const [itemsLength, setItemsLength] = useState(0);
9
+ // HOOKS
10
+ const swiper = useSwiper();
11
+ useEffect(() => {
12
+ setItemsLength(swiper.slides.length);
13
+ }, []);
14
+ const handleChange = useCallback((type) => {
15
+ if (type === 'prev') {
16
+ swiper.slidePrev();
17
+ }
18
+ else {
19
+ swiper.slideNext();
20
+ }
21
+ setCurrentItem(swiper.snapIndex);
22
+ }, [type]);
23
+ if (type === 'prev') {
24
+ return (currentItem > 0 && (_jsx(IconButton, Object.assign({ className: className, size: "medium", onClick: () => handleChange('prev') }, { children: _jsx(Icon, { children: "chevron_left" }) }))));
25
+ }
26
+ return (currentItem < itemsLength - 1 && (_jsx(IconButton, Object.assign({ className: className, size: "medium", onClick: () => handleChange('next') }, { children: _jsx(Icon, { children: "chevron_right" }) }))));
27
+ }
@@ -3,15 +3,15 @@ import { CardActions, CardContent, Skeleton } from '@mui/material';
3
3
  import { styled } from '@mui/system';
4
4
  import 'swiper/css';
5
5
  import { Swiper, SwiperSlide } from 'swiper/react';
6
+ import { SCEventTemplateType } from '../../types/event';
7
+ import { EventSkeleton } from '../Event';
6
8
  import Widget from '../Widget';
7
9
  import { PREFIX } from './constants';
8
- import { EventSkeleton } from '../Event';
9
- import { SCEventTemplateType } from '../../types/event';
10
10
  const classes = {
11
11
  root: `${PREFIX}-skeleton-root`,
12
12
  content: `${PREFIX}-content`,
13
13
  title: `${PREFIX}-title`,
14
- swiper: `${PREFIX}-swiper`,
14
+ swiperSlide: `${PREFIX}-swiper-slide`,
15
15
  actions: `${PREFIX}-actions`
16
16
  };
17
17
  const Root = styled(Widget, {
@@ -20,5 +20,5 @@ const Root = styled(Widget, {
20
20
  overridesResolver: (_props, styles) => styles.skeletonRoot
21
21
  })(() => ({}));
22
22
  export default function SuggestedEventsWidgetSkeleton() {
23
- return (_jsxs(Root, Object.assign({ className: classes.root }, { children: [_jsxs(CardContent, Object.assign({ className: classes.content }, { children: [_jsx(Skeleton, { className: classes.title, animation: "wave", width: "141px", height: "23px" }), _jsx(Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto" }, { children: [1, 2, 3, 4, 5, 6, 7].map((_element, i) => (_jsx(SwiperSlide, Object.assign({ className: classes.swiper }, { children: _jsx(EventSkeleton, { template: SCEventTemplateType.PREVIEW, variant: "outlined", actions: _jsx(_Fragment, {}) }) }), i))) }))] })), _jsx(CardActions, Object.assign({ className: classes.actions }, { children: _jsx(Skeleton, { animation: "wave", width: "52px", height: "20px" }) }))] })));
23
+ return (_jsxs(Root, Object.assign({ className: classes.root }, { children: [_jsxs(CardContent, Object.assign({ className: classes.content }, { children: [_jsx(Skeleton, { className: classes.title, animation: "wave", width: "141px", height: "23px" }), _jsx(Swiper, Object.assign({ spaceBetween: 8, slidesPerView: "auto" }, { children: [1, 2, 3, 4, 5, 6, 7].map((_element, i) => (_jsx(SwiperSlide, Object.assign({ className: classes.swiperSlide }, { children: _jsx(EventSkeleton, { template: SCEventTemplateType.PREVIEW, variant: "outlined", actions: _jsx(_Fragment, {}) }) }), i))) }))] })), _jsx(CardActions, Object.assign({ className: classes.actions }, { children: _jsx(Skeleton, { animation: "wave", width: "52px", height: "20px" }) }))] })));
24
24
  }
@@ -1,4 +1,3 @@
1
- import 'swiper/css';
2
1
  import { WidgetProps } from '../Widget';
3
2
  export interface SuggestedEventsWidgetProps extends WidgetProps {
4
3
  /**