@selfcommunity/react-ui 0.7.50-events.55 → 0.7.50-events.57

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/Events/Events.d.ts +11 -1
  4. package/lib/cjs/components/Events/Events.js +30 -26
  5. package/lib/cjs/components/Events/PastEventsFilter.d.ts +6 -0
  6. package/lib/cjs/components/Events/PastEventsFilter.js +30 -0
  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/Events/Events.d.ts +11 -1
  17. package/lib/esm/components/Events/Events.js +30 -27
  18. package/lib/esm/components/Events/PastEventsFilter.d.ts +6 -0
  19. package/lib/esm/components/Events/PastEventsFilter.js +27 -0
  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'
@@ -1,10 +1,20 @@
1
+ import { EndpointType } from '@selfcommunity/api-services';
2
+ import React from 'react';
1
3
  import { EventProps, EventSkeletonProps } from '../Event';
4
+ export declare const EventsChipRoot: import("@emotion/styled").StyledComponent<import("@mui/material").ChipOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
5
+ ref?: React.Ref<HTMLDivElement>;
6
+ }, "avatar" | "label" | "style" | "className" | "tabIndex" | "color" | "children" | "sx" | "classes" | "variant" | "disabled" | "size" | "icon" | "clickable" | "deleteIcon" | "onDelete" | "skipFocusWhenDisabled"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
2
7
  export interface EventsProps {
3
8
  /**
4
9
  * Overrides or extends the styles applied to the component.
5
10
  * @default null
6
11
  */
7
12
  className?: string;
13
+ /**
14
+ * Event API Endpoint
15
+ * @default Endpoints.SearchEvents
16
+ */
17
+ endpoint: EndpointType;
8
18
  /**
9
19
  * Feed API Query Params
10
20
  * @default [{'limit': 20, 'offset': 0}]
@@ -31,7 +41,7 @@ export interface EventsProps {
31
41
  */
32
42
  filters?: JSX.Element;
33
43
  /** If true, it means that the endpoint fetches all events available
34
- * @default false
44
+ * @default true
35
45
  */
36
46
  general?: boolean;
37
47
  /**
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventsChipRoot = void 0;
3
4
  const tslib_1 = require("tslib");
4
5
  const jsx_runtime_1 = require("react/jsx-runtime");
5
6
  const material_1 = require("@mui/material");
@@ -18,6 +19,7 @@ const CreateEventButton_1 = tslib_1.__importDefault(require("../CreateEventButto
18
19
  const Event_1 = tslib_1.__importStar(require("../Event"));
19
20
  const Skeleton_1 = tslib_1.__importDefault(require("../Events/Skeleton"));
20
21
  const constants_1 = require("./constants");
22
+ const PastEventsFilter_1 = tslib_1.__importDefault(require("./PastEventsFilter"));
21
23
  const classes = {
22
24
  root: `${constants_1.PREFIX}-root`,
23
25
  filters: `${constants_1.PREFIX}-filters`,
@@ -39,9 +41,10 @@ const Root = (0, styles_1.styled)(material_1.Box, {
39
41
  name: constants_1.PREFIX,
40
42
  slot: 'Root'
41
43
  })(() => ({}));
42
- const ChipRoot = (0, styles_1.styled)(material_1.Chip, {
44
+ exports.EventsChipRoot = (0, styles_1.styled)(material_1.Chip, {
43
45
  name: constants_1.PREFIX,
44
- slot: 'ChipRoot'
46
+ slot: 'EventsChipRoot',
47
+ shouldForwardProp: (prop) => prop !== 'showFollowed' && prop !== 'showPastEvents'
45
48
  })(() => ({}));
46
49
  /**
47
50
  * > API documentation for the Community-JS Events component. Learn about the available props and the CSS API.
@@ -76,19 +79,15 @@ function Events(inProps) {
76
79
  props: inProps,
77
80
  name: constants_1.PREFIX
78
81
  });
79
- // TODO:
80
- /**
81
- * Add as prop API Endpoint
82
- * endpoint: EndpointType;
83
- */
84
- const { endpointQueryParams = { limit: 8, offset: Pagination_1.DEFAULT_PAGINATION_OFFSET }, className, EventComponentProps = { elevation: 0, square: true }, EventSkeletonComponentProps = { elevation: 0, square: true }, showFilters = false, filters, general = true } = props, rest = tslib_1.__rest(props, ["endpointQueryParams", "className", "EventComponentProps", "EventSkeletonComponentProps", "showFilters", "filters", "general"]);
82
+ const { endpoint = api_services_1.Endpoints.SearchEvents, endpointQueryParams = { limit: 8, offset: Pagination_1.DEFAULT_PAGINATION_OFFSET }, className, EventComponentProps = { elevation: 0, square: true }, EventSkeletonComponentProps = { elevation: 0, square: true }, showFilters = false, filters, general = true } = props, rest = tslib_1.__rest(props, ["endpoint", "endpointQueryParams", "className", "EventComponentProps", "EventSkeletonComponentProps", "showFilters", "filters", "general"]);
85
83
  // STATE
86
84
  const [events, setEvents] = (0, react_1.useState)([]);
87
85
  const [loading, setLoading] = (0, react_1.useState)(true);
88
86
  const [next, setNext] = (0, react_1.useState)(null);
89
87
  const [search, setSearch] = (0, react_1.useState)('');
90
88
  const [dateSearch, setDateSearch] = (0, react_1.useState)(options[0].value);
91
- const [selected, setSelected] = (0, react_1.useState)(false);
89
+ const [showFollowed, setShowFollowed] = (0, react_1.useState)(false);
90
+ const [showPastEvents, setShowPastEvents] = (0, react_1.useState)(false);
92
91
  // CONTEXT
93
92
  const scUserContext = (0, react_1.useContext)(react_core_1.SCUserContext);
94
93
  const scPreferencesContext = (0, react_1.useContext)(react_core_1.SCPreferencesContext);
@@ -100,26 +99,31 @@ function Events(inProps) {
100
99
  const authUserId = scUserContext.user ? scUserContext.user.id : null;
101
100
  // HANDLERS
102
101
  const handleChipClick = () => {
103
- setSelected(!selected);
102
+ setShowFollowed(!showFollowed);
104
103
  };
105
104
  const handleDeleteClick = () => {
106
- setSelected(false);
105
+ setShowFollowed(false);
106
+ };
107
+ const handleChipPastClick = () => {
108
+ setShowPastEvents(!showPastEvents);
109
+ };
110
+ const handleDeletePastClick = () => {
111
+ setShowPastEvents(false);
107
112
  };
108
113
  /**
109
114
  * Fetches events list
110
115
  */
111
116
  const fetchEvents = () => {
112
- let eventService;
113
- if (general) {
114
- eventService = api_services_1.EventService.searchEvents(Object.assign(Object.assign(Object.assign(Object.assign({}, endpointQueryParams), (search !== '' && { search: search })), (dateSearch !== types_1.SCEventDateFilterType.ANY && { date_filter: dateSearch })), (selected && { follows: selected })));
115
- }
116
- else {
117
- eventService = api_services_1.EventService.getUserEvents(Object.assign(Object.assign(Object.assign({}, endpointQueryParams), { subscription_status: types_1.SCEventSubscriptionStatusType.GOING }), (search !== '' && { search: search })));
118
- }
119
- eventService
117
+ return api_services_1.http
118
+ .request({
119
+ url: endpoint.url({}),
120
+ method: endpoint.method,
121
+ params: Object.assign(Object.assign({}, endpointQueryParams), (general
122
+ ? Object.assign(Object.assign(Object.assign(Object.assign({}, (search !== '' && { search: search })), (dateSearch !== types_1.SCEventDateFilterType.ANY && { date_filter: dateSearch })), (showFollowed && { follows: showFollowed })), (showPastEvents && { past: showPastEvents })) : Object.assign(Object.assign({ subscription_status: types_1.SCEventSubscriptionStatusType.GOING }, (showPastEvents && { past: showPastEvents })), (search !== '' && { search: search }))))
123
+ })
120
124
  .then((res) => {
121
- setEvents(res.results);
122
- setNext(res.next);
125
+ setEvents(res.data.results);
126
+ setNext(res.data.next);
123
127
  setLoading(false);
124
128
  })
125
129
  .catch((error) => {
@@ -136,7 +140,7 @@ function Events(inProps) {
136
140
  else {
137
141
  fetchEvents();
138
142
  }
139
- }, [contentAvailability, authUserId, search, dateSearch, selected]);
143
+ }, [contentAvailability, authUserId, search, dateSearch, showFollowed, showPastEvents]);
140
144
  const handleNext = (0, react_1.useMemo)(() => () => {
141
145
  if (!next) {
142
146
  return;
@@ -180,19 +184,19 @@ function Events(inProps) {
180
184
  * Renders events list
181
185
  */
182
186
  const filteredEvents = (0, utils_1.sortByAttr)(getFilteredEvents(), 'order');
183
- const c = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [showFilters && ((0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ container: true, className: classes.filters, gap: 2 }, { children: filters ? (filters) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, md: 4 }, { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { size: 'small', fullWidth: true, value: search, label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByName", defaultMessage: "ui.events.filterByName" }), variant: "outlined", onChange: handleOnChangeFilterName, disabled: loading }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, md: 2 }, { children: (0, jsx_runtime_1.jsxs)(material_1.FormControl, Object.assign({ fullWidth: true }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByDate", defaultMessage: "ui.events.filterByDate" }) }), (0, jsx_runtime_1.jsx)(material_1.Select, Object.assign({ size: 'small', label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByDate", defaultMessage: "ui.events.filterByDate" }), value: dateSearch, onChange: handleOnChangeTimeFrame, renderValue: (selected) => options.find((option) => option.value === selected).label }, { children: options.map((option) => ((0, jsx_runtime_1.jsxs)(material_1.MenuItem, Object.assign({ value: option.value }, { children: [(0, jsx_runtime_1.jsx)(material_1.Radio, { checked: dateSearch === option.value, value: option.value, name: "radio-button-select", inputProps: { 'aria-label': option.label } }), option.label] }), option.value))) }))] })) })), (0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, md: 2 }, { children: (0, jsx_runtime_1.jsx)(ChipRoot
187
+ const c = ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [showFilters && ((0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ container: true, className: classes.filters, gap: 2 }, { children: filters ? (filters) : !general ? ((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.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, md: 4 }, { children: (0, jsx_runtime_1.jsx)(material_1.TextField, { size: 'small', fullWidth: true, value: search, label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByName", defaultMessage: "ui.events.filterByName" }), variant: "outlined", onChange: handleOnChangeFilterName, disabled: loading }) })), (0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, md: 2 }, { children: (0, jsx_runtime_1.jsxs)(material_1.FormControl, Object.assign({ fullWidth: true }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByDate", defaultMessage: "ui.events.filterByDate" }) }), (0, jsx_runtime_1.jsx)(material_1.Select, Object.assign({ disabled: showPastEvents, size: 'small', label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByDate", defaultMessage: "ui.events.filterByDate" }), value: dateSearch, onChange: handleOnChangeTimeFrame, renderValue: (selected) => options.find((option) => option.value === selected).label }, { children: options.map((option) => ((0, jsx_runtime_1.jsxs)(material_1.MenuItem, Object.assign({ value: option.value }, { children: [(0, jsx_runtime_1.jsx)(material_1.Radio, { checked: dateSearch === option.value, value: option.value, name: "radio-button-select", inputProps: { 'aria-label': option.label } }), option.label] }), option.value))) }))] })) })), (0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true }, { children: (0, jsx_runtime_1.jsx)(exports.EventsChipRoot
184
188
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
185
189
  // @ts-ignore
186
190
  , {
187
191
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
188
192
  // @ts-ignore
189
- color: selected ? 'secondary' : 'default',
193
+ color: showFollowed ? 'secondary' : 'default',
190
194
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
191
195
  // @ts-ignore
192
- variant: selected ? 'filled' : 'outlined', label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByFollowedInterest", defaultMessage: "ui.events.filterByFollowedInterest" }), onClick: handleChipClick,
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,
193
197
  // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
194
198
  // @ts-ignore
195
- selected: selected, deleteIcon: selected ? (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) : null, onDelete: selected ? handleDeleteClick : null }) }))] })) }))), (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 }) }))] })) }))), (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)) ||
196
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" }) })))] })) })] }));
197
201
  /**
198
202
  * Renders root object (if content availability community option is false and user is anonymous, component is hidden)
@@ -0,0 +1,6 @@
1
+ export interface PastEventsFilterProps {
2
+ showPastEvents: boolean;
3
+ handleClick: () => void;
4
+ handleDeleteClick?: () => void;
5
+ }
6
+ export default function PastEventsFilter(inProps: PastEventsFilterProps): 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_intl_1 = require("react-intl");
6
+ const system_1 = require("@mui/system");
7
+ const constants_1 = require("./constants");
8
+ const Events_1 = require("./Events");
9
+ function PastEventsFilter(inProps) {
10
+ // PROPS
11
+ const props = (0, system_1.useThemeProps)({
12
+ props: inProps,
13
+ name: constants_1.PREFIX
14
+ });
15
+ const { showPastEvents, handleClick, handleDeleteClick } = props;
16
+ return ((0, jsx_runtime_1.jsx)(Events_1.EventsChipRoot
17
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
18
+ // @ts-ignore
19
+ , {
20
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
21
+ // @ts-ignore
22
+ color: showPastEvents ? 'secondary' : 'default',
23
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
24
+ // @ts-ignore
25
+ 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
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
27
+ // @ts-ignore
28
+ showPastEvents: showPastEvents, deleteIcon: showPastEvents ? (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) : null, onDelete: showPastEvents ? handleDeleteClick : undefined }));
29
+ }
30
+ 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, 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'
@@ -1,10 +1,20 @@
1
+ import { EndpointType } from '@selfcommunity/api-services';
2
+ import React from 'react';
1
3
  import { EventProps, EventSkeletonProps } from '../Event';
4
+ export declare const EventsChipRoot: import("@emotion/styled").StyledComponent<import("@mui/material").ChipOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
5
+ ref?: React.Ref<HTMLDivElement>;
6
+ }, "avatar" | "label" | "style" | "className" | "tabIndex" | "color" | "children" | "sx" | "classes" | "variant" | "disabled" | "size" | "icon" | "clickable" | "deleteIcon" | "onDelete" | "skipFocusWhenDisabled"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
2
7
  export interface EventsProps {
3
8
  /**
4
9
  * Overrides or extends the styles applied to the component.
5
10
  * @default null
6
11
  */
7
12
  className?: string;
13
+ /**
14
+ * Event API Endpoint
15
+ * @default Endpoints.SearchEvents
16
+ */
17
+ endpoint: EndpointType;
8
18
  /**
9
19
  * Feed API Query Params
10
20
  * @default [{'limit': 20, 'offset': 0}]
@@ -31,7 +41,7 @@ export interface EventsProps {
31
41
  */
32
42
  filters?: JSX.Element;
33
43
  /** If true, it means that the endpoint fetches all events available
34
- * @default false
44
+ * @default true
35
45
  */
36
46
  general?: boolean;
37
47
  /**