@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.
- package/lib/cjs/components/BottomNavigation/BottomNavigation.js +14 -5
- package/lib/cjs/components/CreateEventButton/CreateEventButton.js +6 -7
- package/lib/cjs/components/EditEventButton/EditEventButton.d.ts +43 -0
- package/lib/cjs/components/EditEventButton/EditEventButton.js +61 -0
- package/lib/cjs/components/EditEventButton/index.d.ts +3 -0
- package/lib/cjs/components/EditEventButton/index.js +5 -0
- package/lib/cjs/components/EventForm/EventAddress.d.ts +2 -1
- package/lib/cjs/components/EventForm/EventAddress.js +4 -4
- package/lib/cjs/components/EventForm/EventForm.d.ts +6 -0
- package/lib/cjs/components/EventForm/EventForm.js +51 -25
- package/lib/cjs/components/EventForm/UploadEventCover.d.ts +10 -0
- package/lib/cjs/components/EventForm/UploadEventCover.js +34 -7
- package/lib/cjs/components/EventHeader/EventHeader.d.ts +67 -0
- package/lib/cjs/components/EventHeader/EventHeader.js +175 -0
- package/lib/cjs/components/EventHeader/Skeleton.d.ts +25 -0
- package/lib/cjs/components/EventHeader/Skeleton.js +56 -0
- package/lib/cjs/components/EventHeader/constants.d.ts +1 -0
- package/lib/cjs/components/EventHeader/constants.js +4 -0
- package/lib/cjs/components/EventHeader/index.d.ts +4 -0
- package/lib/cjs/components/EventHeader/index.js +8 -0
- package/lib/cjs/components/EventInfoWidget/EventInfoWidget.d.ts +24 -0
- package/lib/cjs/components/EventInfoWidget/EventInfoWidget.js +74 -0
- package/lib/cjs/components/EventInfoWidget/constants.d.ts +1 -0
- package/lib/cjs/components/EventInfoWidget/constants.js +4 -0
- package/lib/cjs/components/EventInfoWidget/index.d.ts +3 -0
- package/lib/cjs/components/EventInfoWidget/index.js +6 -0
- package/lib/cjs/components/EventInviteButton/EventInviteButton.js +11 -11
- package/lib/cjs/components/EventLocationWidget/EventLocationWidget.js +1 -0
- package/lib/cjs/components/EventSubscribeButton/EventSubscribeButton.d.ts +56 -0
- package/lib/cjs/components/EventSubscribeButton/EventSubscribeButton.js +193 -0
- package/lib/cjs/components/EventSubscribeButton/index.d.ts +3 -0
- package/lib/cjs/components/EventSubscribeButton/index.js +5 -0
- package/lib/cjs/components/Events/Events.js +12 -11
- package/lib/cjs/components/FeedObject/FeedObject.js +1 -1
- package/lib/cjs/components/NavigationToolbar/NavigationToolbar.d.ts +2 -0
- package/lib/cjs/components/NavigationToolbar/NavigationToolbar.js +9 -1
- package/lib/cjs/components/NavigationToolbarMobile/NavigationToolbarMobile.js +12 -2
- package/lib/cjs/components/User/User.d.ts +2 -1
- package/lib/cjs/components/User/User.js +9 -9
- package/lib/cjs/constants/PubSub.d.ts +5 -1
- package/lib/cjs/index.d.ts +104 -100
- package/lib/cjs/index.js +270 -260
- package/lib/cjs/shared/Bullet/index.js +1 -2
- package/lib/cjs/shared/Calendar/index.d.ts +1 -2
- package/lib/cjs/shared/Calendar/index.js +3 -5
- package/lib/cjs/shared/EventInfoDetails/index.d.ts +6 -0
- package/lib/cjs/shared/EventInfoDetails/index.js +67 -0
- package/lib/esm/components/BottomNavigation/BottomNavigation.js +14 -5
- package/lib/esm/components/CreateEventButton/CreateEventButton.js +6 -7
- package/lib/esm/components/EditEventButton/EditEventButton.d.ts +43 -0
- package/lib/esm/components/EditEventButton/EditEventButton.js +58 -0
- package/lib/esm/components/EditEventButton/index.d.ts +3 -0
- package/lib/esm/components/EditEventButton/index.js +2 -0
- package/lib/esm/components/EventForm/EventAddress.d.ts +2 -1
- package/lib/esm/components/EventForm/EventAddress.js +4 -4
- package/lib/esm/components/EventForm/EventForm.d.ts +6 -0
- package/lib/esm/components/EventForm/EventForm.js +51 -25
- package/lib/esm/components/EventForm/UploadEventCover.d.ts +10 -0
- package/lib/esm/components/EventForm/UploadEventCover.js +34 -7
- package/lib/esm/components/EventHeader/EventHeader.d.ts +67 -0
- package/lib/esm/components/EventHeader/EventHeader.js +172 -0
- package/lib/esm/components/EventHeader/Skeleton.d.ts +25 -0
- package/lib/esm/components/EventHeader/Skeleton.js +53 -0
- package/lib/esm/components/EventHeader/constants.d.ts +1 -0
- package/lib/esm/components/EventHeader/constants.js +1 -0
- package/lib/esm/components/EventHeader/index.d.ts +4 -0
- package/lib/esm/components/EventHeader/index.js +4 -0
- package/lib/esm/components/EventInfoWidget/EventInfoWidget.d.ts +24 -0
- package/lib/esm/components/EventInfoWidget/EventInfoWidget.js +71 -0
- package/lib/esm/components/EventInfoWidget/constants.d.ts +1 -0
- package/lib/esm/components/EventInfoWidget/constants.js +1 -0
- package/lib/esm/components/EventInfoWidget/index.d.ts +3 -0
- package/lib/esm/components/EventInfoWidget/index.js +3 -0
- package/lib/esm/components/EventInviteButton/EventInviteButton.js +11 -11
- package/lib/esm/components/EventLocationWidget/EventLocationWidget.js +1 -0
- package/lib/esm/components/EventSubscribeButton/EventSubscribeButton.d.ts +56 -0
- package/lib/esm/components/EventSubscribeButton/EventSubscribeButton.js +190 -0
- package/lib/esm/components/EventSubscribeButton/index.d.ts +3 -0
- package/lib/esm/components/EventSubscribeButton/index.js +2 -0
- package/lib/esm/components/Events/Events.js +12 -11
- package/lib/esm/components/FeedObject/FeedObject.js +1 -1
- package/lib/esm/components/NavigationToolbar/NavigationToolbar.d.ts +2 -0
- package/lib/esm/components/NavigationToolbar/NavigationToolbar.js +9 -1
- package/lib/esm/components/NavigationToolbarMobile/NavigationToolbarMobile.js +13 -3
- package/lib/esm/components/User/User.d.ts +2 -1
- package/lib/esm/components/User/User.js +9 -9
- package/lib/esm/constants/PubSub.d.ts +5 -1
- package/lib/esm/index.d.ts +104 -100
- package/lib/esm/index.js +109 -105
- package/lib/esm/shared/Bullet/index.js +0 -1
- package/lib/esm/shared/Calendar/index.d.ts +1 -2
- package/lib/esm/shared/Calendar/index.js +0 -1
- package/lib/esm/shared/EventInfoDetails/index.d.ts +6 -0
- package/lib/esm/shared/EventInfoDetails/index.js +64 -0
- package/lib/umd/84.js +2 -0
- package/lib/umd/react-ui.js +1 -1
- package/package.json +8 -7
- package/lib/umd/204.js +0 -2
- /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,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,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
|
|
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
|
|
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
|
|
12
|
-
const
|
|
13
|
-
const
|
|
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
|
|
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',
|
|
@@ -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;
|