@selfcommunity/react-ui 0.7.50-events.38 → 0.7.50-events.40

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 (99) hide show
  1. package/lib/cjs/components/BottomNavigation/BottomNavigation.js +14 -5
  2. package/lib/cjs/components/CreateEventButton/CreateEventButton.js +6 -7
  3. package/lib/cjs/components/EditEventButton/EditEventButton.d.ts +43 -0
  4. package/lib/cjs/components/EditEventButton/EditEventButton.js +61 -0
  5. package/lib/cjs/components/EditEventButton/index.d.ts +3 -0
  6. package/lib/cjs/components/EditEventButton/index.js +5 -0
  7. package/lib/cjs/components/EventForm/EventAddress.d.ts +2 -1
  8. package/lib/cjs/components/EventForm/EventAddress.js +4 -4
  9. package/lib/cjs/components/EventForm/EventForm.d.ts +6 -0
  10. package/lib/cjs/components/EventForm/EventForm.js +51 -25
  11. package/lib/cjs/components/EventForm/UploadEventCover.d.ts +10 -0
  12. package/lib/cjs/components/EventForm/UploadEventCover.js +34 -7
  13. package/lib/cjs/components/EventHeader/EventHeader.d.ts +67 -0
  14. package/lib/cjs/components/EventHeader/EventHeader.js +175 -0
  15. package/lib/cjs/components/EventHeader/Skeleton.d.ts +25 -0
  16. package/lib/cjs/components/EventHeader/Skeleton.js +56 -0
  17. package/lib/cjs/components/EventHeader/constants.d.ts +1 -0
  18. package/lib/cjs/components/EventHeader/constants.js +4 -0
  19. package/lib/cjs/components/EventHeader/index.d.ts +4 -0
  20. package/lib/cjs/components/EventHeader/index.js +8 -0
  21. package/lib/cjs/components/EventInfoWidget/EventInfoWidget.d.ts +24 -0
  22. package/lib/cjs/components/EventInfoWidget/EventInfoWidget.js +74 -0
  23. package/lib/cjs/components/EventInfoWidget/constants.d.ts +1 -0
  24. package/lib/cjs/components/EventInfoWidget/constants.js +4 -0
  25. package/lib/cjs/components/EventInfoWidget/index.d.ts +3 -0
  26. package/lib/cjs/components/EventInfoWidget/index.js +6 -0
  27. package/lib/cjs/components/EventInviteButton/EventInviteButton.js +11 -11
  28. package/lib/cjs/components/EventLocationWidget/EventLocationWidget.js +1 -0
  29. package/lib/cjs/components/EventSubscribeButton/EventSubscribeButton.d.ts +56 -0
  30. package/lib/cjs/components/EventSubscribeButton/EventSubscribeButton.js +193 -0
  31. package/lib/cjs/components/EventSubscribeButton/index.d.ts +3 -0
  32. package/lib/cjs/components/EventSubscribeButton/index.js +5 -0
  33. package/lib/cjs/components/Events/Events.js +12 -11
  34. package/lib/cjs/components/FeedObject/FeedObject.js +1 -1
  35. package/lib/cjs/components/NavigationToolbar/NavigationToolbar.d.ts +2 -0
  36. package/lib/cjs/components/NavigationToolbar/NavigationToolbar.js +9 -1
  37. package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.js +12 -2
  38. package/lib/cjs/components/User/User.d.ts +2 -1
  39. package/lib/cjs/components/User/User.js +9 -9
  40. package/lib/cjs/constants/PubSub.d.ts +5 -1
  41. package/lib/cjs/index.d.ts +104 -100
  42. package/lib/cjs/index.js +270 -260
  43. package/lib/cjs/shared/Bullet/index.js +1 -2
  44. package/lib/cjs/shared/Calendar/index.d.ts +1 -2
  45. package/lib/cjs/shared/Calendar/index.js +3 -5
  46. package/lib/cjs/shared/EventInfoDetails/index.d.ts +6 -0
  47. package/lib/cjs/shared/EventInfoDetails/index.js +67 -0
  48. package/lib/esm/components/BottomNavigation/BottomNavigation.js +14 -5
  49. package/lib/esm/components/CreateEventButton/CreateEventButton.js +6 -7
  50. package/lib/esm/components/EditEventButton/EditEventButton.d.ts +43 -0
  51. package/lib/esm/components/EditEventButton/EditEventButton.js +58 -0
  52. package/lib/esm/components/EditEventButton/index.d.ts +3 -0
  53. package/lib/esm/components/EditEventButton/index.js +2 -0
  54. package/lib/esm/components/EventForm/EventAddress.d.ts +2 -1
  55. package/lib/esm/components/EventForm/EventAddress.js +4 -4
  56. package/lib/esm/components/EventForm/EventForm.d.ts +6 -0
  57. package/lib/esm/components/EventForm/EventForm.js +51 -25
  58. package/lib/esm/components/EventForm/UploadEventCover.d.ts +10 -0
  59. package/lib/esm/components/EventForm/UploadEventCover.js +34 -7
  60. package/lib/esm/components/EventHeader/EventHeader.d.ts +67 -0
  61. package/lib/esm/components/EventHeader/EventHeader.js +172 -0
  62. package/lib/esm/components/EventHeader/Skeleton.d.ts +25 -0
  63. package/lib/esm/components/EventHeader/Skeleton.js +53 -0
  64. package/lib/esm/components/EventHeader/constants.d.ts +1 -0
  65. package/lib/esm/components/EventHeader/constants.js +1 -0
  66. package/lib/esm/components/EventHeader/index.d.ts +4 -0
  67. package/lib/esm/components/EventHeader/index.js +4 -0
  68. package/lib/esm/components/EventInfoWidget/EventInfoWidget.d.ts +24 -0
  69. package/lib/esm/components/EventInfoWidget/EventInfoWidget.js +71 -0
  70. package/lib/esm/components/EventInfoWidget/constants.d.ts +1 -0
  71. package/lib/esm/components/EventInfoWidget/constants.js +1 -0
  72. package/lib/esm/components/EventInfoWidget/index.d.ts +3 -0
  73. package/lib/esm/components/EventInfoWidget/index.js +3 -0
  74. package/lib/esm/components/EventInviteButton/EventInviteButton.js +11 -11
  75. package/lib/esm/components/EventLocationWidget/EventLocationWidget.js +1 -0
  76. package/lib/esm/components/EventSubscribeButton/EventSubscribeButton.d.ts +56 -0
  77. package/lib/esm/components/EventSubscribeButton/EventSubscribeButton.js +190 -0
  78. package/lib/esm/components/EventSubscribeButton/index.d.ts +3 -0
  79. package/lib/esm/components/EventSubscribeButton/index.js +2 -0
  80. package/lib/esm/components/Events/Events.js +12 -11
  81. package/lib/esm/components/FeedObject/FeedObject.js +1 -1
  82. package/lib/esm/components/NavigationToolbar/NavigationToolbar.d.ts +2 -0
  83. package/lib/esm/components/NavigationToolbar/NavigationToolbar.js +9 -1
  84. package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.js +13 -3
  85. package/lib/esm/components/User/User.d.ts +2 -1
  86. package/lib/esm/components/User/User.js +9 -9
  87. package/lib/esm/constants/PubSub.d.ts +5 -1
  88. package/lib/esm/index.d.ts +104 -100
  89. package/lib/esm/index.js +109 -105
  90. package/lib/esm/shared/Bullet/index.js +0 -1
  91. package/lib/esm/shared/Calendar/index.d.ts +1 -2
  92. package/lib/esm/shared/Calendar/index.js +0 -1
  93. package/lib/esm/shared/EventInfoDetails/index.d.ts +6 -0
  94. package/lib/esm/shared/EventInfoDetails/index.js +64 -0
  95. package/lib/umd/84.js +2 -0
  96. package/lib/umd/react-ui.js +1 -1
  97. package/package.json +8 -7
  98. package/lib/umd/204.js +0 -2
  99. /package/lib/umd/{204.js.LICENSE.txt → 84.js.LICENSE.txt} +0 -0
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importStar(require("react"));
5
+ const styles_1 = require("@mui/material/styles");
6
+ const material_1 = require("@mui/material");
7
+ const types_1 = require("@selfcommunity/types");
8
+ const react_core_1 = require("@selfcommunity/react-core");
9
+ const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
10
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
11
+ const system_1 = require("@mui/system");
12
+ const constants_1 = require("./constants");
13
+ const react_intl_1 = require("react-intl");
14
+ const Bullet_1 = tslib_1.__importDefault(require("../../shared/Bullet"));
15
+ const EventSubscribeButton_1 = tslib_1.__importDefault(require("../EventSubscribeButton"));
16
+ const EventInviteButton_1 = tslib_1.__importDefault(require("../EventInviteButton"));
17
+ const PubSub_1 = require("../../constants/PubSub");
18
+ const pubsub_js_1 = tslib_1.__importDefault(require("pubsub-js"));
19
+ const EditEventButton_1 = tslib_1.__importDefault(require("../EditEventButton"));
20
+ const User_1 = tslib_1.__importDefault(require("../User"));
21
+ const Calendar_1 = tslib_1.__importDefault(require("../../shared/Calendar"));
22
+ const classes = {
23
+ root: `${constants_1.PREFIX}-root`,
24
+ cover: `${constants_1.PREFIX}-cover`,
25
+ time: `${constants_1.PREFIX}-time`,
26
+ calendar: `${constants_1.PREFIX}-calendar`,
27
+ info: `${constants_1.PREFIX}-info`,
28
+ name: `${constants_1.PREFIX}-name`,
29
+ visibility: `${constants_1.PREFIX}-visibility`,
30
+ visibilityItem: `${constants_1.PREFIX}-visibility-item`,
31
+ multiActions: `${constants_1.PREFIX}-multi-actions`
32
+ };
33
+ const Root = (0, styles_1.styled)(material_1.Box, {
34
+ name: constants_1.PREFIX,
35
+ slot: 'Root'
36
+ })(() => ({}));
37
+ /**
38
+ * > API documentation for the Community-JS Event Header component. Learn about the available props and the CSS API.
39
+ *
40
+ *
41
+ * This component renders the events top section.
42
+
43
+ #### Import
44
+
45
+ ```jsx
46
+ import {UserProfileHeader} from '@selfcommunity/react-ui';
47
+ ```
48
+
49
+ #### Component Name
50
+
51
+ The name `SCEventHeader` can be used when providing style overrides in the theme.
52
+
53
+
54
+ #### CSS
55
+
56
+ |Rule Name|Global class|Description|
57
+ |---|---|---|
58
+ |root|.SCEventHeader-root|Styles applied to the root element.|
59
+ |cover|.SCEventHeader-cover|Styles applied to the cover element.|
60
+ |time|.SCEventHeader-time|Styles applied to the time element.|
61
+ |calendar|.SCEventHeader-calendar|Styles applied to the calendar element.|
62
+ |info|SCEventHeader-info|Styles applied to the info section.|
63
+ |name|SCEventHeader-username|Styles applied to the username element.|
64
+ |visibility|SCEventHeader-visibility|Styles applied to the visibility section.|
65
+ |visibilityItem|SCEventHeader-visibility-item|Styles applied to the visibility element.|
66
+ |multiActions|SCEventHeader-multi-action|Styles applied to the multi actions section.|
67
+
68
+ * @param inProps
69
+ */
70
+ function EventHeader(inProps) {
71
+ var _a, _b;
72
+ // PROPS
73
+ const props = (0, system_1.useThemeProps)({
74
+ props: inProps,
75
+ name: constants_1.PREFIX
76
+ });
77
+ const { id = null, className = null, event, eventId = null, EventSubscribeButtonProps = {} } = props, rest = tslib_1.__rest(props, ["id", "className", "event", "eventId", "EventSubscribeButtonProps"]);
78
+ // PREFERENCES
79
+ const scPreferences = (0, react_core_1.useSCPreferences)();
80
+ // CONTEXT
81
+ const scUserContext = (0, react_core_1.useSCUser)();
82
+ // HOOKS
83
+ const { scEvent, setSCEvent } = (0, react_core_1.useSCFetchEvent)({ id: eventId, event });
84
+ // INTL
85
+ const intl = (0, react_intl_1.useIntl)();
86
+ // REFS
87
+ const updatesSubscription = (0, react_1.useRef)(null);
88
+ // CONST
89
+ const isEventAdmin = (0, react_1.useMemo)(() => { var _a; return scUserContext.user && ((_a = scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by) === null || _a === void 0 ? void 0 : _a.id) === scUserContext.user.id; }, [scUserContext.user, (_a = scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by) === null || _a === void 0 ? void 0 : _a.id]);
90
+ /**
91
+ * Subscriber for pubsub callback
92
+ */
93
+ const onChangeEventMembersHandler = (0, react_1.useCallback)((msg, data) => {
94
+ var _a;
95
+ if (data && ((_a = data === null || data === void 0 ? void 0 : data.event) === null || _a === void 0 ? void 0 : _a.id) === (scEvent === null || scEvent === void 0 ? void 0 : scEvent.id)) {
96
+ let _event = Object.assign({}, scEvent);
97
+ if (msg === `${PubSub_1.SCTopicType.GROUP}.${PubSub_1.SCGroupEventType.ADD_MEMBER}`) {
98
+ _event.subscribers_counter = _event.subscribers_counter + 1;
99
+ }
100
+ else if (msg === `${PubSub_1.SCTopicType.GROUP}.${PubSub_1.SCGroupEventType.REMOVE_MEMBER}`) {
101
+ _event.subscribers_counter = Math.max(_event.subscribers_counter - 1, 0);
102
+ }
103
+ setSCEvent(_event);
104
+ }
105
+ }, [scEvent, setSCEvent]);
106
+ /**
107
+ * On mount, subscribe to receive events updates (only edit)
108
+ */
109
+ (0, react_1.useEffect)(() => {
110
+ if (scEvent) {
111
+ updatesSubscription.current = pubsub_js_1.default.subscribe(`${PubSub_1.SCTopicType.EVENT}.${PubSub_1.SCGroupEventType.MEMBERS}`, onChangeEventMembersHandler);
112
+ }
113
+ return () => {
114
+ updatesSubscription.current && pubsub_js_1.default.unsubscribe(updatesSubscription.current);
115
+ };
116
+ }, [scEvent]);
117
+ // RENDER
118
+ if (!scEvent) {
119
+ return react_1.default.createElement(Skeleton_1.default, null);
120
+ }
121
+ const _backgroundCover = Object.assign({}, (scEvent.image_bigger
122
+ ? { background: `url('${scEvent.image_bigger}') center / cover` }
123
+ : { background: `url('${scPreferences.preferences[react_core_1.SCPreferences.IMAGES_USER_DEFAULT_COVER].value}') center / cover` }));
124
+ return (react_1.default.createElement(Root, Object.assign({ id: id, className: (0, classnames_1.default)(classes.root, className) }, rest),
125
+ react_1.default.createElement(material_1.Paper, { style: _backgroundCover, classes: { root: classes.cover } },
126
+ react_1.default.createElement(material_1.Box, { className: classes.calendar },
127
+ react_1.default.createElement(Calendar_1.default, { day: new Date(scEvent.start_date).getDate() }))),
128
+ react_1.default.createElement(material_1.Box, { className: classes.info },
129
+ react_1.default.createElement(material_1.Typography, { className: classes.time }, scEvent.end_date && scEvent.end_date !== scEvent.start_date ? (new Date(scEvent.start_date).getDate() !== new Date(scEvent.end_date).getDate() ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.eventHeader.startEndTimeDiff", defaultMessage: "ui.eventHeader.startEndTimeDiff", values: {
130
+ startDate: intl.formatDate(scEvent.start_date, {
131
+ weekday: 'long',
132
+ day: 'numeric',
133
+ year: 'numeric',
134
+ month: 'long'
135
+ }),
136
+ endDate: intl.formatDate(scEvent.end_date, {
137
+ weekday: 'long',
138
+ day: 'numeric',
139
+ year: 'numeric',
140
+ month: 'long'
141
+ }),
142
+ startTime: intl.formatDate(scEvent.start_date, { hour: 'numeric', minute: 'numeric' }),
143
+ endTime: intl.formatDate(scEvent.end_date, { hour: 'numeric', minute: 'numeric' })
144
+ } })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.eventHeader.startEndTime", defaultMessage: "ui.eventHeader.startEndTime", values: {
145
+ date: intl.formatDate(scEvent.start_date, {
146
+ weekday: 'long',
147
+ day: 'numeric',
148
+ year: 'numeric',
149
+ month: 'long'
150
+ }),
151
+ start: intl.formatDate(scEvent.start_date, { hour: 'numeric', minute: 'numeric' }),
152
+ end: intl.formatDate(scEvent.end_date, { hour: 'numeric', minute: 'numeric' })
153
+ } }))) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.eventHeader.dateTime", defaultMessage: "ui.eventHeader.dateTime", values: {
154
+ date: intl.formatDate(scEvent.start_date, {
155
+ weekday: 'long',
156
+ day: 'numeric',
157
+ year: 'numeric',
158
+ month: 'long'
159
+ }),
160
+ hour: intl.formatDate(scEvent.start_date, { hour: 'numeric', minute: 'numeric' })
161
+ } }))),
162
+ react_1.default.createElement(material_1.Typography, { variant: "h5", className: classes.name }, scEvent.name),
163
+ react_1.default.createElement(material_1.Box, { className: classes.visibility },
164
+ react_1.default.createElement(react_1.default.Fragment, null, scEvent.privacy === types_1.SCEventPrivacyType.PUBLIC ? (react_1.default.createElement(material_1.Typography, { className: classes.visibilityItem },
165
+ react_1.default.createElement(material_1.Icon, null, "public"),
166
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.eventHeader.visibility.public", defaultMessage: "ui.eventHeader.visibility.public" }))) : (react_1.default.createElement(material_1.Typography, { className: classes.visibilityItem },
167
+ react_1.default.createElement(material_1.Icon, null, "private"),
168
+ react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.eventHeader.visibility.private", defaultMessage: "ui.eventHeader.visibility.private" })))),
169
+ react_1.default.createElement(Bullet_1.default, null),
170
+ react_1.default.createElement(material_1.Typography, { className: classes.visibilityItem }, scEvent.location === types_1.SCEventLocationType.PERSON ? (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.eventHeader.location.live", defaultMessage: "ui.eventHeader.location.live" })) : (react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.eventHeader.location.live", defaultMessage: "ui.eventHeader.location.online" })))),
171
+ react_1.default.createElement(User_1.default, { userId: (_b = scEvent === null || scEvent === void 0 ? void 0 : scEvent.managed_by) === null || _b === void 0 ? void 0 : _b.id, elevation: 0, actions: react_1.default.createElement(react_1.default.Fragment, null, isEventAdmin ? (react_1.default.createElement(material_1.Box, { className: classes.multiActions },
172
+ react_1.default.createElement(EventInviteButton_1.default, { size: "small", event: scEvent, eventId: scEvent.id }),
173
+ react_1.default.createElement(EditEventButton_1.default, { size: "small", event: scEvent, eventId: scEvent.id, onEditSuccess: (data) => setSCEvent(data) }))) : (react_1.default.createElement(EventSubscribeButton_1.default, Object.assign({ event: scEvent }, EventSubscribeButtonProps)))) }))));
174
+ }
175
+ exports.default = EventHeader;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * > API documentation for the Community-JS Event Header Skeleton component. Learn about the available props and the CSS API.
3
+
4
+ #### Import
5
+
6
+ ```jsx
7
+ import {EventHeaderSkeleton} from '@selfcommunity/react-ui';
8
+ ```
9
+
10
+ #### Component Name
11
+
12
+ The name `SCEventHeader-skeleton-root` can be used when providing style overrides in the theme.
13
+
14
+ #### CSS
15
+
16
+ |Rule Name|Global class|Description|
17
+ |---|---|---|
18
+ |root|.SCEventHeader-skeleton-root|Styles applied to the root element.|
19
+ |avatar|.SCEventHeader-avatar|Styles applied to the avatar element.|
20
+ |cover|.SCEventHeader-cover|Styles applied to the cover element.|
21
+ |info|.SCEventHeader-info|Styles applied to the info info.|
22
+ *
23
+ */
24
+ declare function EventHeaderSkeleton(): JSX.Element;
25
+ export default EventHeaderSkeleton;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const react_1 = tslib_1.__importDefault(require("react"));
5
+ const material_1 = require("@mui/material");
6
+ const styles_1 = require("@mui/material/styles");
7
+ const Skeleton_1 = tslib_1.__importDefault(require("@mui/material/Skeleton"));
8
+ const constants_1 = require("./constants");
9
+ const classes = {
10
+ root: `${constants_1.PREFIX}-skeleton-root`,
11
+ cover: `${constants_1.PREFIX}-cover`,
12
+ avatar: `${constants_1.PREFIX}-avatar`,
13
+ info: `${constants_1.PREFIX}-info`
14
+ };
15
+ const Root = (0, styles_1.styled)(material_1.Box, {
16
+ name: constants_1.PREFIX,
17
+ slot: 'SkeletonRoot'
18
+ })(() => ({}));
19
+ /**
20
+ * > API documentation for the Community-JS Event Header Skeleton component. Learn about the available props and the CSS API.
21
+
22
+ #### Import
23
+
24
+ ```jsx
25
+ import {EventHeaderSkeleton} from '@selfcommunity/react-ui';
26
+ ```
27
+
28
+ #### Component Name
29
+
30
+ The name `SCEventHeader-skeleton-root` can be used when providing style overrides in the theme.
31
+
32
+ #### CSS
33
+
34
+ |Rule Name|Global class|Description|
35
+ |---|---|---|
36
+ |root|.SCEventHeader-skeleton-root|Styles applied to the root element.|
37
+ |avatar|.SCEventHeader-avatar|Styles applied to the avatar element.|
38
+ |cover|.SCEventHeader-cover|Styles applied to the cover element.|
39
+ |info|.SCEventHeader-info|Styles applied to the info info.|
40
+ *
41
+ */
42
+ function EventHeaderSkeleton() {
43
+ const theme = (0, material_1.useTheme)();
44
+ return (react_1.default.createElement(Root, { className: classes.root },
45
+ react_1.default.createElement(Skeleton_1.default, { className: classes.cover, animation: "wave", variant: "rectangular" }),
46
+ react_1.default.createElement(material_1.Box, { className: classes.avatar },
47
+ react_1.default.createElement(Skeleton_1.default, { animation: "wave", variant: "rectangular", width: theme.selfcommunity.group.avatar.sizeLarge, height: theme.selfcommunity.group.avatar.sizeLarge })),
48
+ react_1.default.createElement(material_1.Box, { className: classes.info },
49
+ react_1.default.createElement(material_1.Typography, { variant: "h5", mb: 1 },
50
+ react_1.default.createElement(Skeleton_1.default, { animation: "wave", variant: "rectangular", sx: { height: 20, width: '50%' } })),
51
+ react_1.default.createElement(material_1.Typography, { mb: 1 },
52
+ react_1.default.createElement(Skeleton_1.default, { animation: "wave", variant: "rectangular", sx: { height: 30, width: '30%' } })),
53
+ react_1.default.createElement(material_1.Typography, null,
54
+ react_1.default.createElement(Skeleton_1.default, { animation: "wave", variant: "rectangular", sx: { height: 15, width: '20%' } })))));
55
+ }
56
+ exports.default = EventHeaderSkeleton;
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCEventHeader";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PREFIX = void 0;
4
+ exports.PREFIX = 'SCEventHeader';
@@ -0,0 +1,4 @@
1
+ import EventHeader, { EventHeaderProps } from './EventHeader';
2
+ import EventHeaderSkeleton from './Skeleton';
3
+ export default EventHeader;
4
+ export { EventHeaderProps, EventHeaderSkeleton };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventHeaderSkeleton = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const EventHeader_1 = tslib_1.__importDefault(require("./EventHeader"));
6
+ const Skeleton_1 = tslib_1.__importDefault(require("./Skeleton"));
7
+ exports.EventHeaderSkeleton = Skeleton_1.default;
8
+ exports.default = EventHeader_1.default;
@@ -0,0 +1,24 @@
1
+ import { SCEventType } from '@selfcommunity/types';
2
+ import { WidgetProps } from '../Widget';
3
+ export interface EventInfoWidgetProps extends WidgetProps {
4
+ /**
5
+ * Event Object
6
+ * @default null
7
+ */
8
+ event?: SCEventType;
9
+ /**
10
+ * Id of event object
11
+ * @default null
12
+ */
13
+ eventId?: number;
14
+ /**
15
+ * True if summary must be already expanded
16
+ * @default false
17
+ */
18
+ summaryExpanded?: boolean;
19
+ /**
20
+ * Other props
21
+ */
22
+ [p: string]: any;
23
+ }
24
+ export default function EventInfoWidget(inProps: EventInfoWidgetProps): JSX.Element;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const material_1 = require("@mui/material");
5
+ const react_core_1 = require("@selfcommunity/react-core");
6
+ const react_1 = require("react");
7
+ const react_intl_1 = require("react-intl");
8
+ const EventInfoDetails_1 = tslib_1.__importDefault(require("../../shared/EventInfoDetails"));
9
+ const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
10
+ const Widget_1 = tslib_1.__importDefault(require("../Widget"));
11
+ const constants_1 = require("./constants");
12
+ const classes = {
13
+ root: `${constants_1.PREFIX}-root`,
14
+ content: `${constants_1.PREFIX}-content`,
15
+ titleWrapper: `${constants_1.PREFIX}-title-wrapper`,
16
+ textWrapper: `${constants_1.PREFIX}-text-wrapper`,
17
+ showMore: `${constants_1.PREFIX}-show-more`
18
+ };
19
+ const Root = (0, material_1.styled)(Widget_1.default, {
20
+ name: constants_1.PREFIX,
21
+ slot: 'Root',
22
+ overridesResolver: (_props, styles) => styles.root
23
+ })();
24
+ function isTextLongerThanLimit(text, limit = 125) {
25
+ return text.length > limit;
26
+ }
27
+ function getTruncatedText(text, limit = 125) {
28
+ return isTextLongerThanLimit(text, limit) ? text.substring(0, limit).concat('...') : text;
29
+ }
30
+ function EventInfoWidget(inProps) {
31
+ // PROPS
32
+ const props = (0, material_1.useThemeProps)({
33
+ props: inProps,
34
+ name: constants_1.PREFIX
35
+ });
36
+ const { event, eventId, summaryExpanded = false } = props, rest = tslib_1.__rest(props, ["event", "eventId", "summaryExpanded"]);
37
+ // STATE
38
+ const [expanded, setExpanded] = (0, react_1.useState)(summaryExpanded);
39
+ const [showButton, setShowButton] = (0, react_1.useState)(!summaryExpanded);
40
+ // HOOKS
41
+ const { scEvent } = (0, react_core_1.useSCFetchEvent)({ id: eventId, event });
42
+ (0, react_1.useEffect)(() => {
43
+ if (!scEvent) {
44
+ return;
45
+ }
46
+ const _showButton = isTextLongerThanLimit(scEvent.description, 220);
47
+ if (_showButton !== !summaryExpanded) {
48
+ setShowButton(_showButton);
49
+ }
50
+ }, [scEvent]);
51
+ /**
52
+ * Handle toggle summary
53
+ */
54
+ const handleToggleSummary = (0, react_1.useCallback)(() => {
55
+ setExpanded(!expanded);
56
+ }, [expanded]);
57
+ if (!scEvent) {
58
+ return React.createElement(HiddenPlaceholder_1.default, null);
59
+ }
60
+ const description = expanded ? scEvent.description : getTruncatedText(scEvent.description, 220);
61
+ return (React.createElement(Root, Object.assign({ className: classes.root }, rest, { expanded: expanded }),
62
+ React.createElement(material_1.CardContent, { className: classes.content },
63
+ React.createElement(material_1.Stack, { className: classes.titleWrapper },
64
+ React.createElement(material_1.Icon, { fontSize: "small" }, "info"),
65
+ React.createElement(material_1.Typography, { variant: "h5" },
66
+ React.createElement(react_intl_1.FormattedMessage, { id: "ui.infoEventWidget.title", defaultMessage: "ui.infoEventWidget.title" }))),
67
+ React.createElement(material_1.Box, { className: classes.textWrapper },
68
+ React.createElement(material_1.Typography, { component: "span", variant: "body1" },
69
+ description,
70
+ showButton && !expanded && (React.createElement(material_1.Button, { size: "small", variant: "text", className: classes.showMore, onClick: handleToggleSummary },
71
+ React.createElement(react_intl_1.FormattedMessage, { id: "ui.infoEventWidget.showMore", defaultMessage: "ui.infoEventWidget.showMore" }))))),
72
+ React.createElement(EventInfoDetails_1.default, { event: scEvent }))));
73
+ }
74
+ exports.default = EventInfoWidget;
@@ -0,0 +1 @@
1
+ export declare const PREFIX = "SCEventInfoWidget";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PREFIX = void 0;
4
+ exports.PREFIX = 'SCEventInfoWidget';
@@ -0,0 +1,3 @@
1
+ import EventInfoWidget, { EventInfoWidgetProps } from './EventInfoWidget';
2
+ export default EventInfoWidget;
3
+ export { type EventInfoWidgetProps };
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const EventInfoWidget_1 = tslib_1.__importDefault(require("./EventInfoWidget"));
5
+ // import EventInfoWidgetSkeleton from './Skeleton';
6
+ exports.default = EventInfoWidget_1.default;
@@ -1,22 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- const react_1 = tslib_1.__importStar(require("react"));
5
- const system_1 = require("@mui/system");
6
- const styles_1 = require("@mui/material/styles");
4
+ const lab_1 = require("@mui/lab");
7
5
  const material_1 = require("@mui/material");
8
- const react_intl_1 = require("react-intl");
6
+ const Autocomplete_1 = tslib_1.__importDefault(require("@mui/material/Autocomplete"));
7
+ const styles_1 = require("@mui/material/styles");
8
+ const system_1 = require("@mui/system");
9
+ const api_services_1 = require("@selfcommunity/api-services");
9
10
  const react_core_1 = require("@selfcommunity/react-core");
11
+ const utils_1 = require("@selfcommunity/utils");
10
12
  const classnames_1 = tslib_1.__importDefault(require("classnames"));
11
- const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
12
- const lab_1 = require("@mui/lab");
13
- const api_services_1 = require("@selfcommunity/api-services");
14
- const Autocomplete_1 = tslib_1.__importDefault(require("@mui/material/Autocomplete"));
15
- const User_1 = tslib_1.__importDefault(require("../User"));
13
+ const pubsub_js_1 = tslib_1.__importDefault(require("pubsub-js"));
14
+ const react_1 = tslib_1.__importStar(require("react"));
15
+ const react_intl_1 = require("react-intl");
16
16
  const Errors_1 = require("../../constants/Errors");
17
- const utils_1 = require("@selfcommunity/utils");
18
17
  const PubSub_1 = require("../../constants/PubSub");
19
- const pubsub_js_1 = tslib_1.__importDefault(require("pubsub-js"));
18
+ const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
19
+ const User_1 = tslib_1.__importDefault(require("../User"));
20
20
  const messages = (0, react_intl_1.defineMessages)({
21
21
  placeholder: {
22
22
  id: 'ui.eventInviteButton.searchBar.placeholder',
@@ -78,6 +78,7 @@ function EventLocationWidget(inProps) {
78
78
  /**
79
79
  * Loading event
80
80
  */
81
+ console.log(isLoaded, scEvent);
81
82
  if (!isLoaded || !scEvent) {
82
83
  return react_1.default.createElement(Skeleton_1.default, null);
83
84
  }
@@ -0,0 +1,56 @@
1
+ import { SCEventType, SCUserType } from '@selfcommunity/types';
2
+ export interface EventSubscribeButtonProps {
3
+ /**
4
+ * Overrides or extends the styles applied to the component.
5
+ * @default null
6
+ */
7
+ className?: string;
8
+ /**
9
+ * Event Object
10
+ * @default null
11
+ */
12
+ event?: SCEventType;
13
+ /**
14
+ * Id of the event
15
+ * @default null
16
+ */
17
+ eventId?: number;
18
+ /**
19
+ * The user to be accepted into the event
20
+ * @default null
21
+ */
22
+ user?: SCUserType;
23
+ /**
24
+ * onSubscribe callback
25
+ * @param user
26
+ * @param joined
27
+ */
28
+ onSubscribe?: (event: SCEventType, status: string | null) => any;
29
+ /**
30
+ * Others properties
31
+ */
32
+ [p: string]: any;
33
+ }
34
+ /**
35
+ * > API documentation for the Community-JS Event Subscribe Button component. Learn about the available props and the CSS API.
36
+
37
+ #### Import
38
+
39
+ ```jsx
40
+ import {EventSubscribeButton} from '@selfcommunity/react-ui';
41
+ ```
42
+
43
+ #### Component Name
44
+
45
+ The name `SCEventSubscribeButton` can be used when providing style overrides in the theme.
46
+
47
+
48
+ #### CSS
49
+
50
+ |Rule Name|Global class|Description|
51
+ |---|---|---|
52
+ |root|.SCEventSubscribeButton-root|Styles applied to the root element.|
53
+
54
+ * @param inProps
55
+ */
56
+ export default function EventSubscribeButton(inProps: EventSubscribeButtonProps): JSX.Element;