@selfcommunity/react-ui 0.9.0 → 0.9.1-alpha.1
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/Events/Events.js +1 -2
- package/lib/cjs/components/PrivateMessageThread/PrivateMessageThread.js +2 -2
- package/lib/cjs/components/UserProfileEdit/Section/PublicInfo.js +1 -2
- package/lib/cjs/shared/CopyTextArea/index.d.ts +10 -0
- package/lib/cjs/shared/CopyTextArea/index.js +71 -0
- package/lib/esm/components/Events/Events.js +1 -2
- package/lib/esm/components/PrivateMessageThread/PrivateMessageThread.js +2 -2
- package/lib/esm/components/UserProfileEdit/Section/PublicInfo.js +1 -2
- package/lib/esm/shared/CopyTextArea/index.d.ts +10 -0
- package/lib/esm/shared/CopyTextArea/index.js +68 -0
- package/lib/umd/react-ui.js +1 -1
- package/package.json +7 -7
|
@@ -245,8 +245,7 @@ function Events(inProps) {
|
|
|
245
245
|
variant: showFollowed ? 'filled' : 'outlined', label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.events.filterByFollowedInterest", defaultMessage: "ui.events.filterByFollowedInterest" }), onClick: handleChipClick,
|
|
246
246
|
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
|
|
247
247
|
// @ts-ignore
|
|
248
|
-
showFollowed: showFollowed, deleteIcon: showFollowed ? (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) : null, onDelete: showFollowed ? handleDeleteClick : null, disabled: loading || (!events.length && !showFollowed) }) }))), (0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true }, { children: (0, jsx_runtime_1.jsx)(PastEventsFilter_1.default, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick, disabled: dateSearch !== types_1.SCEventDateFilterType.ANY || loading || (!events.length && !showPastEvents) }) }))] })) }))), (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: loading ? ((0, jsx_runtime_1.jsx)(Skeleton_1.default, Object.assign({}, EventsSkeletonComponentProps, { EventSkeletonProps: EventSkeletonComponentProps }))) : ((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)) ||
|
|
249
|
-
(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, { skeletonsAnimation: false })), (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, { skeletonsAnimation: false, 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 }, GridContainerComponentProps, { children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [events.map((event) => ((0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, sm: 12, md: 6, className: classes.item }, GridItemComponentProps, { children: (0, jsx_runtime_1.jsx)(Event_1.default, Object.assign({ event: event, eventId: event.id }, EventComponentProps)) }), event.id))), authUserId && events.length % 2 !== 0 && ((0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, sm: 12, md: 6, className: classes.itemSkeleton }, GridItemComponentProps, { children: (0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false, 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" }) })))] })) })) })] }));
|
|
248
|
+
showFollowed: showFollowed, deleteIcon: showFollowed ? (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) : null, onDelete: showFollowed ? handleDeleteClick : null, disabled: loading || (!events.length && !showFollowed) }) }))), (0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true }, { children: (0, jsx_runtime_1.jsx)(PastEventsFilter_1.default, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick, disabled: dateSearch !== types_1.SCEventDateFilterType.ANY || loading || (!events.length && !showPastEvents) }) }))] })) }))), (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: loading ? ((0, jsx_runtime_1.jsx)(Skeleton_1.default, Object.assign({}, EventsSkeletonComponentProps, { EventSkeletonProps: EventSkeletonComponentProps }))) : ((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: general ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false, actions: (onlyStaffEnabled && react_core_1.UserUtils.isStaff(scUserContext.user)) || !onlyStaffEnabled ? (0, jsx_runtime_1.jsx)(CreateEventButton_1.default, {}) : null })), (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, { skeletonsAnimation: false, actions: (onlyStaffEnabled && react_core_1.UserUtils.isStaff(scUserContext.user)) || !onlyStaffEnabled ? (0, jsx_runtime_1.jsx)(CreateEventButton_1.default, {}) : null })), (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.personal", defaultMessage: "ui.events.noEvents.title.personal" }) }))] })) }))) : ((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 }, GridContainerComponentProps, { children: (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [events.map((event) => ((0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, sm: 12, md: 6, className: classes.item }, GridItemComponentProps, { children: (0, jsx_runtime_1.jsx)(Event_1.default, Object.assign({ event: event, eventId: event.id }, EventComponentProps)) }), event.id))), authUserId && events.length % 2 !== 0 && ((0, jsx_runtime_1.jsx)(material_1.Grid, Object.assign({ item: true, xs: 12, sm: 12, md: 6, className: classes.itemSkeleton }, GridItemComponentProps, { children: (0, jsx_runtime_1.jsx)(Event_1.EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false, 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" }) })))] })) })) })] }));
|
|
250
249
|
/**
|
|
251
250
|
* Renders root object (if content availability community option is false and user is anonymous, component is hidden)
|
|
252
251
|
*/
|
|
@@ -182,8 +182,8 @@ function PrivateMessageThread(inProps) {
|
|
|
182
182
|
return parseInt(u.id, 10);
|
|
183
183
|
});
|
|
184
184
|
}
|
|
185
|
-
return [recipients];
|
|
186
|
-
}, [recipients]);
|
|
185
|
+
return [parseInt(recipients === null || recipients === void 0 ? void 0 : recipients.id, 10) || recipients];
|
|
186
|
+
}, [recipients, openNewMessage]);
|
|
187
187
|
function fetchResults() {
|
|
188
188
|
setLoading(true);
|
|
189
189
|
api_services_1.PrivateMessageService.searchUser(value)
|
|
@@ -154,7 +154,6 @@ function PublicInfo(props) {
|
|
|
154
154
|
}
|
|
155
155
|
};
|
|
156
156
|
let content = null;
|
|
157
|
-
console.log(metadataDefinitions);
|
|
158
157
|
switch (field) {
|
|
159
158
|
case types_1.SCUserProfileFields.USERNAME:
|
|
160
159
|
component.element = UsernameTextField_1.default;
|
|
@@ -223,7 +222,7 @@ function PublicInfo(props) {
|
|
|
223
222
|
return null;
|
|
224
223
|
default:
|
|
225
224
|
if (metadataDefinitions && metadataDefinitions[field]) {
|
|
226
|
-
return ((0, jsx_runtime_1.jsx)(MetadataField_1.default, Object.assign({ id: field, className: classes.field, name: field, fullWidth: true, label: label, value: user[field] || '', onChange: handleChange(field), disabled: isSaving || (user[field] && 'editable' in metadataDefinitions[field] && !metadataDefinitions[field].editable), error: Boolean(_error), helperText: _error && (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.userInfo.metadata.error.${_error}`, defaultMessage: `ui.userInfo.metadata.error.${_error}` }), metadata: metadataDefinitions[field] }, props), field));
|
|
225
|
+
return ((0, jsx_runtime_1.jsx)(MetadataField_1.default, Object.assign({ id: field, className: classes.field, name: field, fullWidth: true, label: label, value: user[field] || '', onChange: handleChange(field), disabled: isSaving || (user[field] && 'editable' in metadataDefinitions[field] && !metadataDefinitions[field].editable && !isEditing), error: Boolean(_error), helperText: _error && (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.userInfo.metadata.error.${_error}`, defaultMessage: `ui.userInfo.metadata.error.${_error}` }), metadata: metadataDefinitions[field] }, props), field));
|
|
227
226
|
}
|
|
228
227
|
break;
|
|
229
228
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BaseTextFieldProps } from '@mui/material/TextField/TextField';
|
|
3
|
+
export interface CopyTextFieldProps extends BaseTextFieldProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
onCopy: (value: string) => void;
|
|
7
|
+
value: string;
|
|
8
|
+
label?: string | React.ReactElement;
|
|
9
|
+
}
|
|
10
|
+
export default function CopyTextField(inProps: CopyTextFieldProps): JSX.Element;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const styles_1 = require("@mui/material/styles");
|
|
7
|
+
const material_1 = require("@mui/material");
|
|
8
|
+
const system_1 = require("@mui/system");
|
|
9
|
+
const react_intl_1 = require("react-intl");
|
|
10
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
11
|
+
const PREFIX = 'SCCopyTextField';
|
|
12
|
+
const classes = {
|
|
13
|
+
root: `${PREFIX}-root`,
|
|
14
|
+
btnCopy: `${PREFIX}-btn-copy`
|
|
15
|
+
};
|
|
16
|
+
const Root = (0, styles_1.styled)(material_1.TextField, {
|
|
17
|
+
name: PREFIX,
|
|
18
|
+
slot: 'Root',
|
|
19
|
+
overridesResolver: (props, styles) => styles.root
|
|
20
|
+
})(({ theme }) => ({
|
|
21
|
+
[`& .${classes.btnCopy}`]: {
|
|
22
|
+
color: theme.palette.secondary.main
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
function CopyTextField(inProps) {
|
|
26
|
+
// PROPS
|
|
27
|
+
const props = (0, system_1.useThemeProps)({
|
|
28
|
+
props: inProps,
|
|
29
|
+
name: PREFIX
|
|
30
|
+
});
|
|
31
|
+
const { className, label, onCopy, onChange } = props, rest = tslib_1.__rest(props, ["className", "label", "onCopy", "onChange"]);
|
|
32
|
+
// STATE
|
|
33
|
+
const [value, setValue] = (0, react_1.useState)('https://www.google.com');
|
|
34
|
+
const [openConfirm, setOpenConfirm] = (0, react_1.useState)(false);
|
|
35
|
+
// REF
|
|
36
|
+
const timeout = (0, react_1.useRef)(null);
|
|
37
|
+
// HANDLERS
|
|
38
|
+
const handleChange = (event) => {
|
|
39
|
+
setValue(event.target.value);
|
|
40
|
+
onChange && onChange(event.target.value);
|
|
41
|
+
};
|
|
42
|
+
const handleCopy = (value) => {
|
|
43
|
+
navigator.clipboard.writeText(value).then(function () {
|
|
44
|
+
/* clipboard successfully set */
|
|
45
|
+
hanldeCopySuccess();
|
|
46
|
+
}, function () {
|
|
47
|
+
/* clipboard write failed */
|
|
48
|
+
console.log('Failed to opy text!');
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
const hanldeCopySuccess = () => {
|
|
52
|
+
setOpenConfirm(true);
|
|
53
|
+
if (timeout) {
|
|
54
|
+
clearTimeout(timeout.current);
|
|
55
|
+
timeout.current = null;
|
|
56
|
+
}
|
|
57
|
+
timeout.current = setTimeout(() => {
|
|
58
|
+
setOpenConfirm(false);
|
|
59
|
+
onCopy && onCopy(value);
|
|
60
|
+
}, 1500);
|
|
61
|
+
};
|
|
62
|
+
const button = ((0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ "aria-label": "Copy text", edge: "end", onClick: () => handleCopy(value), className: classes.btnCopy }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "insert_link" }) })));
|
|
63
|
+
// RENDER
|
|
64
|
+
return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className), label: label ? label : (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.shared.copyTextField.textToCopy", defaultMessage: "ui.shared.copyTextField.textToCopy" }), margin: "normal", variant: "outlined", disabled: true, fullWidth: true, value: value, multiline: true, onChange: handleChange, InputProps: {
|
|
65
|
+
disableUnderline: true,
|
|
66
|
+
endAdornment: ((0, jsx_runtime_1.jsx)(material_1.InputAdornment, Object.assign({ position: "end" }, { children: openConfirm ? ((0, jsx_runtime_1.jsx)(material_1.Tooltip, Object.assign({ open: openConfirm, PopperProps: { open: true }, title: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.shared.copyTextField.textCopied", defaultMessage: "ui.shared.copyTextField.textCopied" }) }, { children: button }))) : ((0, jsx_runtime_1.jsx)(material_1.Tooltip, Object.assign({ title: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.shared.copyTextField.textToCopy", defaultMessage: "ui.shared.copyTextField.textToCopy" }) }, { children: button }))) })))
|
|
67
|
+
}, InputLabelProps: {
|
|
68
|
+
shrink: true
|
|
69
|
+
} }, rest)));
|
|
70
|
+
}
|
|
71
|
+
exports.default = CopyTextField;
|
|
@@ -242,8 +242,7 @@ export default function Events(inProps) {
|
|
|
242
242
|
variant: showFollowed ? 'filled' : 'outlined', label: _jsx(FormattedMessage, { id: "ui.events.filterByFollowedInterest", defaultMessage: "ui.events.filterByFollowedInterest" }), onClick: handleChipClick,
|
|
243
243
|
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
|
|
244
244
|
// @ts-ignore
|
|
245
|
-
showFollowed: showFollowed, deleteIcon: showFollowed ? _jsx(Icon, { children: "close" }) : null, onDelete: showFollowed ? handleDeleteClick : null, disabled: loading || (!events.length && !showFollowed) }) }))), _jsx(Grid, Object.assign({ item: true }, { children: _jsx(PastEventsFilter, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick, disabled: dateSearch !== SCEventDateFilterType.ANY || loading || (!events.length && !showPastEvents) }) }))] })) }))), _jsx(_Fragment, { children: loading ? (_jsx(Skeleton, Object.assign({}, EventsSkeletonComponentProps, { EventSkeletonProps: EventSkeletonComponentProps }))) : (_jsx(_Fragment, { children: !events.length ? (_jsx(Box, Object.assign({ className: classes.noResults }, { children: (onlyStaffEnabled && !UserUtils.isStaff(scUserContext.user)) ||
|
|
246
|
-
(onlyStaffEnabled && UserUtils.isStaff(scUserContext.user) && general) ? (_jsxs(_Fragment, { children: [_jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false })), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.events.noEvents.title", defaultMessage: "ui.events.noEvents.title" }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false, actions: _jsx(CreateEventButton, {}) })), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.events.noEvents.title.onlyStaff", defaultMessage: "ui.events.noEvents.title.onlyStaff" }) }))] })) }))) : (_jsxs(_Fragment, { children: [_jsx(Grid, Object.assign({ container: true, spacing: { xs: 2 }, className: classes.events }, GridContainerComponentProps, { children: _jsxs(_Fragment, { children: [events.map((event) => (_jsx(Grid, Object.assign({ item: true, xs: 12, sm: 12, md: 6, className: classes.item }, GridItemComponentProps, { children: _jsx(Event, Object.assign({ event: event, eventId: event.id }, EventComponentProps)) }), event.id))), authUserId && events.length % 2 !== 0 && (_jsx(Grid, Object.assign({ item: true, xs: 12, sm: 12, md: 6, className: classes.itemSkeleton }, GridItemComponentProps, { children: _jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false, actions: _jsx(CreateEventButton, Object.assign({ variant: "outlined", color: "primary", size: "small" }, { children: _jsx(FormattedMessage, { id: "ui.events.skeleton.action.add", defaultMessage: "ui.events.skeleton.action.add" }) })) })) }), 'skeleton-item'))] }) })), Boolean(next) && (_jsx(Button, Object.assign({ color: "secondary", variant: "text", onClick: handleNext, className: classes.showMore }, { children: _jsx(FormattedMessage, { id: "ui.events.button.seeMore", defaultMessage: "ui.events.button.seeMore" }) })))] })) })) })] }));
|
|
245
|
+
showFollowed: showFollowed, deleteIcon: showFollowed ? _jsx(Icon, { children: "close" }) : null, onDelete: showFollowed ? handleDeleteClick : null, disabled: loading || (!events.length && !showFollowed) }) }))), _jsx(Grid, Object.assign({ item: true }, { children: _jsx(PastEventsFilter, { showPastEvents: showPastEvents, handleClick: handleChipPastClick, handleDeleteClick: handleDeletePastClick, disabled: dateSearch !== SCEventDateFilterType.ANY || loading || (!events.length && !showPastEvents) }) }))] })) }))), _jsx(_Fragment, { children: loading ? (_jsx(Skeleton, Object.assign({}, EventsSkeletonComponentProps, { EventSkeletonProps: EventSkeletonComponentProps }))) : (_jsx(_Fragment, { children: !events.length ? (_jsx(Box, Object.assign({ className: classes.noResults }, { children: general ? (_jsxs(_Fragment, { children: [_jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false, actions: (onlyStaffEnabled && UserUtils.isStaff(scUserContext.user)) || !onlyStaffEnabled ? _jsx(CreateEventButton, {}) : null })), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.events.noEvents.title", defaultMessage: "ui.events.noEvents.title" }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false, actions: (onlyStaffEnabled && UserUtils.isStaff(scUserContext.user)) || !onlyStaffEnabled ? _jsx(CreateEventButton, {}) : null })), _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.events.noEvents.title.personal", defaultMessage: "ui.events.noEvents.title.personal" }) }))] })) }))) : (_jsxs(_Fragment, { children: [_jsx(Grid, Object.assign({ container: true, spacing: { xs: 2 }, className: classes.events }, GridContainerComponentProps, { children: _jsxs(_Fragment, { children: [events.map((event) => (_jsx(Grid, Object.assign({ item: true, xs: 12, sm: 12, md: 6, className: classes.item }, GridItemComponentProps, { children: _jsx(Event, Object.assign({ event: event, eventId: event.id }, EventComponentProps)) }), event.id))), authUserId && events.length % 2 !== 0 && (_jsx(Grid, Object.assign({ item: true, xs: 12, sm: 12, md: 6, className: classes.itemSkeleton }, GridItemComponentProps, { children: _jsx(EventSkeleton, Object.assign({}, EventSkeletonComponentProps, { skeletonsAnimation: false, actions: _jsx(CreateEventButton, Object.assign({ variant: "outlined", color: "primary", size: "small" }, { children: _jsx(FormattedMessage, { id: "ui.events.skeleton.action.add", defaultMessage: "ui.events.skeleton.action.add" }) })) })) }), 'skeleton-item'))] }) })), Boolean(next) && (_jsx(Button, Object.assign({ color: "secondary", variant: "text", onClick: handleNext, className: classes.showMore }, { children: _jsx(FormattedMessage, { id: "ui.events.button.seeMore", defaultMessage: "ui.events.button.seeMore" }) })))] })) })) })] }));
|
|
247
246
|
/**
|
|
248
247
|
* Renders root object (if content availability community option is false and user is anonymous, component is hidden)
|
|
249
248
|
*/
|
|
@@ -180,8 +180,8 @@ export default function PrivateMessageThread(inProps) {
|
|
|
180
180
|
return parseInt(u.id, 10);
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
|
-
return [recipients];
|
|
184
|
-
}, [recipients]);
|
|
183
|
+
return [parseInt(recipients === null || recipients === void 0 ? void 0 : recipients.id, 10) || recipients];
|
|
184
|
+
}, [recipients, openNewMessage]);
|
|
185
185
|
function fetchResults() {
|
|
186
186
|
setLoading(true);
|
|
187
187
|
PrivateMessageService.searchUser(value)
|
|
@@ -152,7 +152,6 @@ export default function PublicInfo(props) {
|
|
|
152
152
|
}
|
|
153
153
|
};
|
|
154
154
|
let content = null;
|
|
155
|
-
console.log(metadataDefinitions);
|
|
156
155
|
switch (field) {
|
|
157
156
|
case SCUserProfileFields.USERNAME:
|
|
158
157
|
component.element = UsernameTextField;
|
|
@@ -221,7 +220,7 @@ export default function PublicInfo(props) {
|
|
|
221
220
|
return null;
|
|
222
221
|
default:
|
|
223
222
|
if (metadataDefinitions && metadataDefinitions[field]) {
|
|
224
|
-
return (_jsx(MetadataField, Object.assign({ id: field, className: classes.field, name: field, fullWidth: true, label: label, value: user[field] || '', onChange: handleChange(field), disabled: isSaving || (user[field] && 'editable' in metadataDefinitions[field] && !metadataDefinitions[field].editable), error: Boolean(_error), helperText: _error && _jsx(FormattedMessage, { id: `ui.userInfo.metadata.error.${_error}`, defaultMessage: `ui.userInfo.metadata.error.${_error}` }), metadata: metadataDefinitions[field] }, props), field));
|
|
223
|
+
return (_jsx(MetadataField, Object.assign({ id: field, className: classes.field, name: field, fullWidth: true, label: label, value: user[field] || '', onChange: handleChange(field), disabled: isSaving || (user[field] && 'editable' in metadataDefinitions[field] && !metadataDefinitions[field].editable && !isEditing), error: Boolean(_error), helperText: _error && _jsx(FormattedMessage, { id: `ui.userInfo.metadata.error.${_error}`, defaultMessage: `ui.userInfo.metadata.error.${_error}` }), metadata: metadataDefinitions[field] }, props), field));
|
|
225
224
|
}
|
|
226
225
|
break;
|
|
227
226
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BaseTextFieldProps } from '@mui/material/TextField/TextField';
|
|
3
|
+
export interface CopyTextFieldProps extends BaseTextFieldProps {
|
|
4
|
+
className?: string;
|
|
5
|
+
onChange: (value: string) => void;
|
|
6
|
+
onCopy: (value: string) => void;
|
|
7
|
+
value: string;
|
|
8
|
+
label?: string | React.ReactElement;
|
|
9
|
+
}
|
|
10
|
+
export default function CopyTextField(inProps: CopyTextFieldProps): JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { __rest } from "tslib";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useRef, useState } from 'react';
|
|
4
|
+
import { styled } from '@mui/material/styles';
|
|
5
|
+
import { Icon, IconButton, InputAdornment, TextField, Tooltip } from '@mui/material';
|
|
6
|
+
import { useThemeProps } from '@mui/system';
|
|
7
|
+
import { FormattedMessage } from 'react-intl';
|
|
8
|
+
import classNames from 'classnames';
|
|
9
|
+
const PREFIX = 'SCCopyTextField';
|
|
10
|
+
const classes = {
|
|
11
|
+
root: `${PREFIX}-root`,
|
|
12
|
+
btnCopy: `${PREFIX}-btn-copy`
|
|
13
|
+
};
|
|
14
|
+
const Root = styled(TextField, {
|
|
15
|
+
name: PREFIX,
|
|
16
|
+
slot: 'Root',
|
|
17
|
+
overridesResolver: (props, styles) => styles.root
|
|
18
|
+
})(({ theme }) => ({
|
|
19
|
+
[`& .${classes.btnCopy}`]: {
|
|
20
|
+
color: theme.palette.secondary.main
|
|
21
|
+
}
|
|
22
|
+
}));
|
|
23
|
+
export default function CopyTextField(inProps) {
|
|
24
|
+
// PROPS
|
|
25
|
+
const props = useThemeProps({
|
|
26
|
+
props: inProps,
|
|
27
|
+
name: PREFIX
|
|
28
|
+
});
|
|
29
|
+
const { className, label, onCopy, onChange } = props, rest = __rest(props, ["className", "label", "onCopy", "onChange"]);
|
|
30
|
+
// STATE
|
|
31
|
+
const [value, setValue] = useState('https://www.google.com');
|
|
32
|
+
const [openConfirm, setOpenConfirm] = useState(false);
|
|
33
|
+
// REF
|
|
34
|
+
const timeout = useRef(null);
|
|
35
|
+
// HANDLERS
|
|
36
|
+
const handleChange = (event) => {
|
|
37
|
+
setValue(event.target.value);
|
|
38
|
+
onChange && onChange(event.target.value);
|
|
39
|
+
};
|
|
40
|
+
const handleCopy = (value) => {
|
|
41
|
+
navigator.clipboard.writeText(value).then(function () {
|
|
42
|
+
/* clipboard successfully set */
|
|
43
|
+
hanldeCopySuccess();
|
|
44
|
+
}, function () {
|
|
45
|
+
/* clipboard write failed */
|
|
46
|
+
console.log('Failed to opy text!');
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
const hanldeCopySuccess = () => {
|
|
50
|
+
setOpenConfirm(true);
|
|
51
|
+
if (timeout) {
|
|
52
|
+
clearTimeout(timeout.current);
|
|
53
|
+
timeout.current = null;
|
|
54
|
+
}
|
|
55
|
+
timeout.current = setTimeout(() => {
|
|
56
|
+
setOpenConfirm(false);
|
|
57
|
+
onCopy && onCopy(value);
|
|
58
|
+
}, 1500);
|
|
59
|
+
};
|
|
60
|
+
const button = (_jsx(IconButton, Object.assign({ "aria-label": "Copy text", edge: "end", onClick: () => handleCopy(value), className: classes.btnCopy }, { children: _jsx(Icon, { children: "insert_link" }) })));
|
|
61
|
+
// RENDER
|
|
62
|
+
return (_jsx(Root, Object.assign({ className: classNames(classes.root, className), label: label ? label : _jsx(FormattedMessage, { id: "ui.shared.copyTextField.textToCopy", defaultMessage: "ui.shared.copyTextField.textToCopy" }), margin: "normal", variant: "outlined", disabled: true, fullWidth: true, value: value, multiline: true, onChange: handleChange, InputProps: {
|
|
63
|
+
disableUnderline: true,
|
|
64
|
+
endAdornment: (_jsx(InputAdornment, Object.assign({ position: "end" }, { children: openConfirm ? (_jsx(Tooltip, Object.assign({ open: openConfirm, PopperProps: { open: true }, title: _jsx(FormattedMessage, { id: "ui.shared.copyTextField.textCopied", defaultMessage: "ui.shared.copyTextField.textCopied" }) }, { children: button }))) : (_jsx(Tooltip, Object.assign({ title: _jsx(FormattedMessage, { id: "ui.shared.copyTextField.textToCopy", defaultMessage: "ui.shared.copyTextField.textToCopy" }) }, { children: button }))) })))
|
|
65
|
+
}, InputLabelProps: {
|
|
66
|
+
shrink: true
|
|
67
|
+
} }, rest)));
|
|
68
|
+
}
|