@selfcommunity/react-ui 0.8.0-alpha.24 → 0.8.0-alpha.26
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/NavigationMenuIconButton/NavigationMenuDrawer.js +1 -1
- package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.d.ts +11 -1
- package/lib/cjs/components/NavigationMenuIconButton/NavigationMenuIconButton.js +2 -2
- package/lib/cjs/components/OnBoardingWidget/Steps/Invite/Invite.js +29 -3
- package/lib/esm/components/NavigationMenuIconButton/NavigationMenuDrawer.js +1 -1
- package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.d.ts +11 -1
- package/lib/esm/components/NavigationMenuIconButton/NavigationMenuIconButton.js +2 -2
- package/lib/esm/components/OnBoardingWidget/Steps/Invite/Invite.js +32 -5
- package/lib/umd/react-ui.js +1 -1
- package/package.json +5 -5
|
@@ -30,6 +30,6 @@ function NavigationMenuDrawer(inProps) {
|
|
|
30
30
|
name: PREFIX
|
|
31
31
|
});
|
|
32
32
|
const { className = null, drawerHeaderContent = (0, jsx_runtime_1.jsx)(DefaultHeaderContent_1.default, {}), drawerContent = (0, jsx_runtime_1.jsx)(DefaultDrawerContent_1.default, {}), ScrollContainerProps = {}, open, onClose } = props, rest = tslib_1.__rest(props, ["className", "drawerHeaderContent", "drawerContent", "ScrollContainerProps", "open", "onClose"]);
|
|
33
|
-
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className), open: open, onClose: onClose }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.drawerHeader }, { children: [drawerHeaderContent, (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ className: classes.drawerHeaderAction, onClick: onClose }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) }))] })), (0, jsx_runtime_1.jsx)(material_1.Divider, {}), (0, jsx_runtime_1.jsx)(ScrollContainer_1.default, Object.assign({}, ScrollContainerProps, { children: (0, jsx_runtime_1.jsx)(material_1.List, Object.assign({ className: classes.drawerContent, onClick: onClose }, { children: drawerContent })) }))] })));
|
|
33
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ anchor: "left", className: (0, classnames_1.default)(classes.root, className), open: open, onClose: onClose }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.drawerHeader }, { children: [drawerHeaderContent, (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ className: classes.drawerHeaderAction, onClick: onClose }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "close" }) }))] })), (0, jsx_runtime_1.jsx)(material_1.Divider, {}), (0, jsx_runtime_1.jsx)(ScrollContainer_1.default, Object.assign({}, ScrollContainerProps, { children: (0, jsx_runtime_1.jsx)(material_1.List, Object.assign({ className: classes.drawerContent, onClick: onClose }, { children: drawerContent })) }))] })));
|
|
34
34
|
}
|
|
35
35
|
exports.default = NavigationMenuDrawer;
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import { IconButtonProps } from '@mui/material';
|
|
2
2
|
import { NavigationMenuDrawerProps } from './NavigationMenuDrawer';
|
|
3
3
|
export interface NavigationMenuIconButtonProps extends IconButtonProps {
|
|
4
|
+
/**
|
|
5
|
+
* Prop to show/hide the default drawer component
|
|
6
|
+
* @default true
|
|
7
|
+
*/
|
|
8
|
+
showDrawer?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Callback triggered on menu click
|
|
11
|
+
* @default null
|
|
12
|
+
*/
|
|
13
|
+
onMenuIconClick?: () => void;
|
|
4
14
|
/**
|
|
5
15
|
* Props to spread to default drawer root
|
|
6
|
-
* @default {
|
|
16
|
+
* @default {}
|
|
7
17
|
*/
|
|
8
18
|
DrawerProps?: NavigationMenuDrawerProps;
|
|
9
19
|
}
|
|
@@ -47,7 +47,7 @@ function NavigationMenuIconButton(inProps) {
|
|
|
47
47
|
props: inProps,
|
|
48
48
|
name: PREFIX
|
|
49
49
|
});
|
|
50
|
-
const { className = null, DrawerProps = {
|
|
50
|
+
const { className = null, DrawerProps = {}, onMenuIconClick = null, showDrawer = true } = props, rest = tslib_1.__rest(props, ["className", "DrawerProps", "onMenuIconClick", "showDrawer"]);
|
|
51
51
|
// STATE
|
|
52
52
|
const [anchorEl, setAnchorEl] = (0, react_1.useState)(null);
|
|
53
53
|
// CONTEXT
|
|
@@ -63,6 +63,6 @@ function NavigationMenuIconButton(inProps) {
|
|
|
63
63
|
if (!preferences[react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value && !((_a = scUserContext.user) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
64
64
|
return null;
|
|
65
65
|
}
|
|
66
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { onClick: handleOpen }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "menu" }) })), (0, jsx_runtime_1.jsx)(NavigationMenuDrawer_1.default, Object.assign({ open: Boolean(anchorEl), onClose: handleClose }, DrawerProps))] }));
|
|
66
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { onClick: onMenuIconClick !== null && onMenuIconClick !== void 0 ? onMenuIconClick : handleOpen }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, { children: "menu" }) })), showDrawer && (0, jsx_runtime_1.jsx)(NavigationMenuDrawer_1.default, Object.assign({ open: Boolean(anchorEl), onClose: handleClose }, DrawerProps))] }));
|
|
67
67
|
}
|
|
68
68
|
exports.default = NavigationMenuIconButton;
|
|
@@ -13,6 +13,9 @@ const react_intl_1 = require("react-intl");
|
|
|
13
13
|
const react_core_1 = require("@selfcommunity/react-core");
|
|
14
14
|
const SocialShare_1 = require("../../../../constants/SocialShare");
|
|
15
15
|
const api_services_1 = require("@selfcommunity/api-services");
|
|
16
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
17
|
+
const Errors_1 = require("../../../../constants/Errors");
|
|
18
|
+
const types_1 = require("@selfcommunity/types");
|
|
16
19
|
const classes = {
|
|
17
20
|
root: `${constants_1.PREFIX}-invite-root`,
|
|
18
21
|
title: `${constants_1.PREFIX}-invite-title`,
|
|
@@ -26,6 +29,7 @@ const Root = (0, styles_1.styled)(Box_1.default, {
|
|
|
26
29
|
name: constants_1.PREFIX,
|
|
27
30
|
slot: 'InviteRoot'
|
|
28
31
|
})(() => ({}));
|
|
32
|
+
const META_ROBOTS_ENABLE_DEFAULT = 'index,follow';
|
|
29
33
|
function Invite(inProps) {
|
|
30
34
|
// PROPS
|
|
31
35
|
const props = (0, system_1.useThemeProps)({
|
|
@@ -33,16 +37,38 @@ function Invite(inProps) {
|
|
|
33
37
|
name: constants_1.PREFIX
|
|
34
38
|
});
|
|
35
39
|
const { className, onCompleteAction = null } = props;
|
|
40
|
+
// STATUS
|
|
41
|
+
const [isMetaRobotsUpdating, setMetaRobotsUpdating] = (0, react_1.useState)(false);
|
|
36
42
|
// CONTEXT
|
|
37
43
|
const scPreferencesContext = (0, react_1.useContext)(react_core_1.SCPreferencesContext);
|
|
44
|
+
const metaRobots = (0, react_1.useMemo)(() => {
|
|
45
|
+
return scPreferencesContext.preferences && react_core_1.SCPreferences.WEBMASTER_META_ROBOTS in scPreferencesContext.preferences
|
|
46
|
+
? scPreferencesContext.preferences[react_core_1.SCPreferences.WEBMASTER_META_ROBOTS].value
|
|
47
|
+
: null;
|
|
48
|
+
}, [scPreferencesContext.preferences]);
|
|
38
49
|
const url = (0, react_1.useMemo)(() => scPreferencesContext.preferences &&
|
|
39
50
|
react_core_1.SCPreferences.CONFIGURATIONS_GROUPS_ENABLED in scPreferencesContext.preferences &&
|
|
40
51
|
scPreferencesContext.preferences[react_core_1.SCPreferences.CONFIGURATIONS_APP_URL].value, [scPreferencesContext.preferences]);
|
|
41
52
|
// HANDLERS
|
|
42
|
-
const handleShare = (shareUrl, shareType) => {
|
|
53
|
+
const handleShare = (shareUrl, shareType) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
if (metaRobots.toLowerCase().replace(/\s+/g, '') !== META_ROBOTS_ENABLE_DEFAULT) {
|
|
55
|
+
yield enableSeo();
|
|
56
|
+
}
|
|
43
57
|
window.open(shareUrl, `${shareType}-share-dialog`, 'width=626,height=436');
|
|
44
58
|
onCompleteAction();
|
|
45
|
-
};
|
|
59
|
+
});
|
|
60
|
+
const enableSeo = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
try {
|
|
62
|
+
setMetaRobotsUpdating(true);
|
|
63
|
+
yield api_services_1.PreferenceService.updatePreferences({ [types_1.SCPreferenceName.META_ROBOTS]: 'index, follow' });
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, e);
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
setMetaRobotsUpdating(false);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
46
72
|
/**
|
|
47
73
|
* Fetches platform url
|
|
48
74
|
*/
|
|
@@ -67,6 +93,6 @@ function Invite(inProps) {
|
|
|
67
93
|
onCompleteAction();
|
|
68
94
|
fetchPlatform('/marketing/invitation');
|
|
69
95
|
};
|
|
70
|
-
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h4", className: classes.title }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.invite", defaultMessage: "ui.onBoardingWidget.invite" }) })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.social }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.title", defaultMessage: "ui.onBoardingWidget.step.invite.social.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.social.subtitle" }) })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.iconContainer }, { children: [(0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.FACEBOOK_SHARE + url, 'facebook'), disabled: !url }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "facebook" })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.X_SHARE + url, 'x'), disabled: !url }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "twitter" })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.LINKEDIN_SHARE + url, 'linkedin'), disabled: !url }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "linkedin" })) }))] }))] })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.email }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.title", defaultMessage: "ui.onBoardingWidget.step.invite.email.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.email.subtitle" }) }))] })), (0, jsx_runtime_1.jsx)(Box_1.default, Object.assign({ component: "span", className: classes.action }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "outlined", size: "small", onClick: handleCompleteAction }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.onBoardingWidget.step.invite.button", id: "ui.onBoardingWidget.step.invite.button" }) })) }))] })));
|
|
96
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h4", className: classes.title }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.invite", defaultMessage: "ui.onBoardingWidget.invite" }) })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.social }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.title", defaultMessage: "ui.onBoardingWidget.step.invite.social.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.social.subtitle" }) })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.iconContainer }, { children: [(0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.FACEBOOK_SHARE + url, 'facebook'), disabled: !url || isMetaRobotsUpdating }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "facebook" })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.X_SHARE + url, 'x'), disabled: !url || isMetaRobotsUpdating }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "twitter" })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.LINKEDIN_SHARE + url, 'linkedin'), disabled: !url || isMetaRobotsUpdating }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "linkedin" })) }))] }))] })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.email }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.title", defaultMessage: "ui.onBoardingWidget.step.invite.email.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.email.subtitle" }) }))] })), (0, jsx_runtime_1.jsx)(Box_1.default, Object.assign({ component: "span", className: classes.action }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "outlined", size: "small", onClick: handleCompleteAction }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.onBoardingWidget.step.invite.button", id: "ui.onBoardingWidget.step.invite.button" }) })) }))] })));
|
|
71
97
|
}
|
|
72
98
|
exports.default = Invite;
|
|
@@ -28,5 +28,5 @@ export default function NavigationMenuDrawer(inProps) {
|
|
|
28
28
|
name: PREFIX
|
|
29
29
|
});
|
|
30
30
|
const { className = null, drawerHeaderContent = _jsx(DefaultHeaderContent, {}), drawerContent = _jsx(DefaultDrawerContent, {}), ScrollContainerProps = {}, open, onClose } = props, rest = __rest(props, ["className", "drawerHeaderContent", "drawerContent", "ScrollContainerProps", "open", "onClose"]);
|
|
31
|
-
return (_jsxs(Root, Object.assign({ className: classNames(classes.root, className), open: open, onClose: onClose }, rest, { children: [_jsxs(Box, Object.assign({ className: classes.drawerHeader }, { children: [drawerHeaderContent, _jsx(IconButton, Object.assign({ className: classes.drawerHeaderAction, onClick: onClose }, { children: _jsx(Icon, { children: "close" }) }))] })), _jsx(Divider, {}), _jsx(ScrollContainer, Object.assign({}, ScrollContainerProps, { children: _jsx(List, Object.assign({ className: classes.drawerContent, onClick: onClose }, { children: drawerContent })) }))] })));
|
|
31
|
+
return (_jsxs(Root, Object.assign({ anchor: "left", className: classNames(classes.root, className), open: open, onClose: onClose }, rest, { children: [_jsxs(Box, Object.assign({ className: classes.drawerHeader }, { children: [drawerHeaderContent, _jsx(IconButton, Object.assign({ className: classes.drawerHeaderAction, onClick: onClose }, { children: _jsx(Icon, { children: "close" }) }))] })), _jsx(Divider, {}), _jsx(ScrollContainer, Object.assign({}, ScrollContainerProps, { children: _jsx(List, Object.assign({ className: classes.drawerContent, onClick: onClose }, { children: drawerContent })) }))] })));
|
|
32
32
|
}
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import { IconButtonProps } from '@mui/material';
|
|
2
2
|
import { NavigationMenuDrawerProps } from './NavigationMenuDrawer';
|
|
3
3
|
export interface NavigationMenuIconButtonProps extends IconButtonProps {
|
|
4
|
+
/**
|
|
5
|
+
* Prop to show/hide the default drawer component
|
|
6
|
+
* @default true
|
|
7
|
+
*/
|
|
8
|
+
showDrawer?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Callback triggered on menu click
|
|
11
|
+
* @default null
|
|
12
|
+
*/
|
|
13
|
+
onMenuIconClick?: () => void;
|
|
4
14
|
/**
|
|
5
15
|
* Props to spread to default drawer root
|
|
6
|
-
* @default {
|
|
16
|
+
* @default {}
|
|
7
17
|
*/
|
|
8
18
|
DrawerProps?: NavigationMenuDrawerProps;
|
|
9
19
|
}
|
|
@@ -45,7 +45,7 @@ export default function NavigationMenuIconButton(inProps) {
|
|
|
45
45
|
props: inProps,
|
|
46
46
|
name: PREFIX
|
|
47
47
|
});
|
|
48
|
-
const { className = null, DrawerProps = {
|
|
48
|
+
const { className = null, DrawerProps = {}, onMenuIconClick = null, showDrawer = true } = props, rest = __rest(props, ["className", "DrawerProps", "onMenuIconClick", "showDrawer"]);
|
|
49
49
|
// STATE
|
|
50
50
|
const [anchorEl, setAnchorEl] = useState(null);
|
|
51
51
|
// CONTEXT
|
|
@@ -61,5 +61,5 @@ export default function NavigationMenuIconButton(inProps) {
|
|
|
61
61
|
if (!preferences[SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value && !((_a = scUserContext.user) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
62
62
|
return null;
|
|
63
63
|
}
|
|
64
|
-
return (_jsxs(_Fragment, { children: [_jsx(Root, Object.assign({ className: classNames(classes.root, className) }, rest, { onClick: handleOpen }, { children: _jsx(Icon, { children: "menu" }) })), _jsx(NavigationMenuDrawer, Object.assign({ open: Boolean(anchorEl), onClose: handleClose }, DrawerProps))] }));
|
|
64
|
+
return (_jsxs(_Fragment, { children: [_jsx(Root, Object.assign({ className: classNames(classes.root, className) }, rest, { onClick: onMenuIconClick !== null && onMenuIconClick !== void 0 ? onMenuIconClick : handleOpen }, { children: _jsx(Icon, { children: "menu" }) })), showDrawer && _jsx(NavigationMenuDrawer, Object.assign({ open: Boolean(anchorEl), onClose: handleClose }, DrawerProps))] }));
|
|
65
65
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
1
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useContext, useMemo } from 'react';
|
|
3
|
+
import { useContext, useMemo, useState } from 'react';
|
|
3
4
|
import { styled } from '@mui/material/styles';
|
|
4
5
|
import Box from '@mui/material/Box';
|
|
5
6
|
import { useThemeProps } from '@mui/system';
|
|
@@ -9,7 +10,10 @@ import { Button, Icon, IconButton, Typography } from '@mui/material';
|
|
|
9
10
|
import { FormattedMessage } from 'react-intl';
|
|
10
11
|
import { SCPreferences, SCPreferencesContext } from '@selfcommunity/react-core';
|
|
11
12
|
import { FACEBOOK_SHARE, LINKEDIN_SHARE, X_SHARE } from '../../../../constants/SocialShare';
|
|
12
|
-
import { Endpoints, http } from '@selfcommunity/api-services';
|
|
13
|
+
import { Endpoints, http, PreferenceService } from '@selfcommunity/api-services';
|
|
14
|
+
import { Logger } from '@selfcommunity/utils';
|
|
15
|
+
import { SCOPE_SC_UI } from '../../../../constants/Errors';
|
|
16
|
+
import { SCPreferenceName } from '@selfcommunity/types';
|
|
13
17
|
const classes = {
|
|
14
18
|
root: `${PREFIX}-invite-root`,
|
|
15
19
|
title: `${PREFIX}-invite-title`,
|
|
@@ -23,6 +27,7 @@ const Root = styled(Box, {
|
|
|
23
27
|
name: PREFIX,
|
|
24
28
|
slot: 'InviteRoot'
|
|
25
29
|
})(() => ({}));
|
|
30
|
+
const META_ROBOTS_ENABLE_DEFAULT = 'index,follow';
|
|
26
31
|
export default function Invite(inProps) {
|
|
27
32
|
// PROPS
|
|
28
33
|
const props = useThemeProps({
|
|
@@ -30,16 +35,38 @@ export default function Invite(inProps) {
|
|
|
30
35
|
name: PREFIX
|
|
31
36
|
});
|
|
32
37
|
const { className, onCompleteAction = null } = props;
|
|
38
|
+
// STATUS
|
|
39
|
+
const [isMetaRobotsUpdating, setMetaRobotsUpdating] = useState(false);
|
|
33
40
|
// CONTEXT
|
|
34
41
|
const scPreferencesContext = useContext(SCPreferencesContext);
|
|
42
|
+
const metaRobots = useMemo(() => {
|
|
43
|
+
return scPreferencesContext.preferences && SCPreferences.WEBMASTER_META_ROBOTS in scPreferencesContext.preferences
|
|
44
|
+
? scPreferencesContext.preferences[SCPreferences.WEBMASTER_META_ROBOTS].value
|
|
45
|
+
: null;
|
|
46
|
+
}, [scPreferencesContext.preferences]);
|
|
35
47
|
const url = useMemo(() => scPreferencesContext.preferences &&
|
|
36
48
|
SCPreferences.CONFIGURATIONS_GROUPS_ENABLED in scPreferencesContext.preferences &&
|
|
37
49
|
scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_APP_URL].value, [scPreferencesContext.preferences]);
|
|
38
50
|
// HANDLERS
|
|
39
|
-
const handleShare = (shareUrl, shareType) => {
|
|
51
|
+
const handleShare = (shareUrl, shareType) => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
if (metaRobots.toLowerCase().replace(/\s+/g, '') !== META_ROBOTS_ENABLE_DEFAULT) {
|
|
53
|
+
yield enableSeo();
|
|
54
|
+
}
|
|
40
55
|
window.open(shareUrl, `${shareType}-share-dialog`, 'width=626,height=436');
|
|
41
56
|
onCompleteAction();
|
|
42
|
-
};
|
|
57
|
+
});
|
|
58
|
+
const enableSeo = () => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
try {
|
|
60
|
+
setMetaRobotsUpdating(true);
|
|
61
|
+
yield PreferenceService.updatePreferences({ [SCPreferenceName.META_ROBOTS]: 'index, follow' });
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
Logger.error(SCOPE_SC_UI, e);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
setMetaRobotsUpdating(false);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
43
70
|
/**
|
|
44
71
|
* Fetches platform url
|
|
45
72
|
*/
|
|
@@ -64,5 +91,5 @@ export default function Invite(inProps) {
|
|
|
64
91
|
onCompleteAction();
|
|
65
92
|
fetchPlatform('/marketing/invitation');
|
|
66
93
|
};
|
|
67
|
-
return (_jsxs(Root, Object.assign({ className: classNames(classes.root, className) }, { children: [_jsx(Typography, Object.assign({ variant: "h4", className: classes.title }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.invite", defaultMessage: "ui.onBoardingWidget.invite" }) })), _jsxs(Box, Object.assign({ className: classes.social }, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.title", defaultMessage: "ui.onBoardingWidget.step.invite.social.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.social.subtitle" }) })), _jsxs(Box, Object.assign({ className: classes.iconContainer }, { children: [_jsx(IconButton, Object.assign({ onClick: () => handleShare(FACEBOOK_SHARE + url, 'facebook'), disabled: !url }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "facebook" })) })), _jsx(IconButton, Object.assign({ onClick: () => handleShare(X_SHARE + url, 'x'), disabled: !url }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "twitter" })) })), _jsx(IconButton, Object.assign({ onClick: () => handleShare(LINKEDIN_SHARE + url, 'linkedin'), disabled: !url }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "linkedin" })) }))] }))] })), _jsxs(Box, Object.assign({ className: classes.email }, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.title", defaultMessage: "ui.onBoardingWidget.step.invite.email.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.email.subtitle" }) }))] })), _jsx(Box, Object.assign({ component: "span", className: classes.action }, { children: _jsx(Button, Object.assign({ variant: "outlined", size: "small", onClick: handleCompleteAction }, { children: _jsx(FormattedMessage, { defaultMessage: "ui.onBoardingWidget.step.invite.button", id: "ui.onBoardingWidget.step.invite.button" }) })) }))] })));
|
|
94
|
+
return (_jsxs(Root, Object.assign({ className: classNames(classes.root, className) }, { children: [_jsx(Typography, Object.assign({ variant: "h4", className: classes.title }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.invite", defaultMessage: "ui.onBoardingWidget.invite" }) })), _jsxs(Box, Object.assign({ className: classes.social }, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.title", defaultMessage: "ui.onBoardingWidget.step.invite.social.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.social.subtitle" }) })), _jsxs(Box, Object.assign({ className: classes.iconContainer }, { children: [_jsx(IconButton, Object.assign({ onClick: () => handleShare(FACEBOOK_SHARE + url, 'facebook'), disabled: !url || isMetaRobotsUpdating }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "facebook" })) })), _jsx(IconButton, Object.assign({ onClick: () => handleShare(X_SHARE + url, 'x'), disabled: !url || isMetaRobotsUpdating }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "twitter" })) })), _jsx(IconButton, Object.assign({ onClick: () => handleShare(LINKEDIN_SHARE + url, 'linkedin'), disabled: !url || isMetaRobotsUpdating }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "linkedin" })) }))] }))] })), _jsxs(Box, Object.assign({ className: classes.email }, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.title", defaultMessage: "ui.onBoardingWidget.step.invite.email.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.email.subtitle" }) }))] })), _jsx(Box, Object.assign({ component: "span", className: classes.action }, { children: _jsx(Button, Object.assign({ variant: "outlined", size: "small", onClick: handleCompleteAction }, { children: _jsx(FormattedMessage, { defaultMessage: "ui.onBoardingWidget.step.invite.button", id: "ui.onBoardingWidget.step.invite.button" }) })) }))] })));
|
|
68
95
|
}
|