@selfcommunity/react-ui 0.7.9-alpha.63 → 0.7.9-alpha.65

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.
@@ -103,7 +103,12 @@ function AccountRecover(inProps) {
103
103
  }
104
104
  // RENDER
105
105
  return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest), isSucceed ? (react_1.default.createElement(material_1.Alert, { severity: "success", className: classes.success },
106
- intl.formatMessage({ id: 'ui.accountRecover.success', defaultMessage: 'ui.accountRecover.success' }, { email, bold: (chunks) => react_1.default.createElement("b", null, chunks) }),
106
+ intl.formatMessage({ id: 'ui.accountRecover.success', defaultMessage: 'ui.accountRecover.success' }, {
107
+ email,
108
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
109
+ // @ts-ignore
110
+ b: (chunks) => react_1.default.createElement("b", null, chunks)
111
+ }),
107
112
  successAction)) : (react_1.default.createElement("form", { className: classes.form, onSubmit: handleSubmit },
108
113
  react_1.default.createElement(EmailTextField_1.default, Object.assign({ className: classes.email, disabled: isSubmitting, label: react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.accountRecover.email.label", defaultMessage: "ui.accountRecover.email.label" }) }, TextFieldProps, { value: email, onChange: handleChange, error: Boolean(emailError), helperText: emailError && (react_1.default.createElement(react_intl_1.FormattedMessage, { id: `ui.accountRecover.email.error.${emailError}`, defaultMessage: `ui.accountRecover.email.error.${emailError}` })) })),
109
114
  react_1.default.createElement(material_1.Button, Object.assign({ type: "submit" }, ButtonProps, { disabled: !email || Boolean(emailError) || isSubmitting }),
@@ -71,7 +71,8 @@ function BottomNavigation(inProps) {
71
71
  react_1.default.createElement(material_1.BottomNavigationAction, { key: "home", className: classes.action, component: react_core_1.Link, to: scUserContext.user ? scRoutingContext.url(react_core_1.SCRoutes.HOME_ROUTE_NAME, {}) : '/', value: scUserContext.user ? scRoutingContext.url(react_core_1.SCRoutes.HOME_ROUTE_NAME, {}) : '/', icon: react_1.default.createElement(material_1.Icon, null, "home") }),
72
72
  (scUserContext.user || preferences[react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value) &&
73
73
  preferences[react_core_1.SCPreferences.CONFIGURATIONS_EXPLORE_STREAM_ENABLED].value ? (react_1.default.createElement(material_1.BottomNavigationAction, { key: "explore", className: classes.action, component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.EXPLORE_ROUTE_NAME, {}), value: scRoutingContext.url(react_core_1.SCRoutes.EXPLORE_ROUTE_NAME, {}), icon: react_1.default.createElement(material_1.Icon, null, "explore") })) : null,
74
- react_1.default.createElement(material_1.BottomNavigationAction, { key: "composer", className: (0, classnames_1.default)(classes.composer, classes.action), component: ComposerIconButton_1.default, disableRipple: true }),
74
+ !preferences[react_core_1.SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value ||
75
+ (react_core_1.UserUtils.isStaff(scUserContext.user) && preferences[react_core_1.SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value) ? (react_1.default.createElement(material_1.BottomNavigationAction, { key: "composer", className: (0, classnames_1.default)(classes.composer, classes.action), component: ComposerIconButton_1.default, disableRipple: true })) : null,
75
76
  groupsEnabled && scUserContext.user ? (react_1.default.createElement(material_1.BottomNavigationAction, { key: "groups", className: classes.action, component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}), value: scRoutingContext.url(react_core_1.SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}), icon: react_1.default.createElement(material_1.Icon, null, "groups") })) : null,
76
77
  scUserContext.user && !groupsEnabled ? (react_1.default.createElement(material_1.BottomNavigationAction, { key: "notifications", className: classes.action, component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_NOTIFICATIONS_ROUTE_NAME, {}), value: scRoutingContext.url(react_core_1.SCRoutes.USER_NOTIFICATIONS_ROUTE_NAME, {}), icon: react_1.default.createElement(material_1.Badge, { badgeContent: scUserContext.user.unseen_notification_banners_counter + scUserContext.user.unseen_interactions_counter, color: "secondary" },
77
78
  react_1.default.createElement(material_1.Icon, null, "notifications_active")) })) : null,
@@ -12,6 +12,7 @@ const system_1 = require("@mui/system");
12
12
  const Composer_1 = tslib_1.__importDefault(require("../Composer"));
13
13
  const Media_1 = require("../../shared/Media");
14
14
  const constants_1 = require("./constants");
15
+ const HiddenPlaceholder_1 = tslib_1.__importDefault(require("../../shared/HiddenPlaceholder"));
15
16
  const classes = {
16
17
  root: `${constants_1.PREFIX}-root`,
17
18
  content: `${constants_1.PREFIX}-content`,
@@ -60,6 +61,9 @@ function InlineComposerWidget(inProps) {
60
61
  const scUserContext = (0, react_core_1.useSCUser)();
61
62
  const scRoutingContext = (0, react_core_1.useSCRouting)();
62
63
  const { enqueueSnackbar } = (0, notistack_1.useSnackbar)();
64
+ // PREFERENCES
65
+ const preferences = (0, react_core_1.useSCPreferences)();
66
+ const onlyStaffEnabled = (0, react_1.useMemo)(() => preferences.preferences[react_core_1.SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value, [preferences.preferences]);
63
67
  // State variables
64
68
  const [open, setOpen] = (0, react_1.useState)(false);
65
69
  // Handlers
@@ -94,6 +98,9 @@ function InlineComposerWidget(inProps) {
94
98
  }
95
99
  setOpen(false);
96
100
  };
101
+ if (!react_core_1.UserUtils.isStaff(scUserContext.user) && onlyStaffEnabled) {
102
+ return react_1.default.createElement(HiddenPlaceholder_1.default, null);
103
+ }
97
104
  return (react_1.default.createElement(react_1.default.Fragment, null,
98
105
  react_1.default.createElement(Root, Object.assign({ className: classes.root }, rest),
99
106
  react_1.default.createElement(material_1.CardContent, { className: classes.content },
@@ -4,7 +4,6 @@ const tslib_1 = require("tslib");
4
4
  const react_1 = tslib_1.__importStar(require("react"));
5
5
  const styles_1 = require("@mui/material/styles");
6
6
  const material_1 = require("@mui/material");
7
- const types_1 = require("@selfcommunity/types");
8
7
  const react_core_1 = require("@selfcommunity/react-core");
9
8
  const classnames_1 = tslib_1.__importDefault(require("classnames"));
10
9
  const system_1 = require("@mui/system");
@@ -36,7 +35,8 @@ const MenuRoot = (0, styles_1.styled)(material_1.Menu, {
36
35
  const PREFERENCES = [
37
36
  react_core_1.SCPreferences.CONFIGURATIONS_FOLLOW_ENABLED,
38
37
  react_core_1.SCPreferences.CONFIGURATIONS_POST_TYPE_ENABLED,
39
- react_core_1.SCPreferences.CONFIGURATIONS_DISCUSSION_TYPE_ENABLED
38
+ react_core_1.SCPreferences.CONFIGURATIONS_DISCUSSION_TYPE_ENABLED,
39
+ react_core_1.SCPreferences.ADDONS_LOYALTY_POINTS_COLLECTION
40
40
  ];
41
41
  /**
42
42
  * > API documentation for the Community-JS Navigation Settings Icon Button component. Learn about the available props and the CSS API.
@@ -120,7 +120,7 @@ function NavigationSettingsIconButton(inProps) {
120
120
  !preferences[react_core_1.SCPreferences.CONFIGURATIONS_FOLLOW_ENABLED] && (react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "connections" },
121
121
  react_1.default.createElement(material_1.ListItemButton, { component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_CONNECTIONS_ROUTE_NAME, scUserContext.user) },
122
122
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.navigationSettingsIconButton.connections", defaultMessage: "ui.navigationSettingsIconButton.connections" })))),
123
- scPreferences.features.includes(types_1.SCFeatureName.LOYALTY) && (react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "loyaltyProgram" },
123
+ preferences[react_core_1.SCPreferences.ADDONS_LOYALTY_POINTS_COLLECTION] && (react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "loyaltyProgram" },
124
124
  react_1.default.createElement(material_1.ListItemButton, { component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.LOYALTY_ROUTE_NAME, {}) },
125
125
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.navigationSettingsIconButton.loyalty", defaultMessage: "ui.navigationSettingsIconButton.loyalty" })))),
126
126
  preferences[react_core_1.SCPreferences.CONFIGURATIONS_POST_TYPE_ENABLED] && (react_1.default.createElement(material_1.ListItem, { className: classes.item, key: "followedPosts" },
@@ -169,7 +169,7 @@ function NavigationSettingsIconButton(inProps) {
169
169
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.navigationSettingsIconButton.followers", defaultMessage: "ui.navigationSettingsIconButton.followers" }))),
170
170
  !preferences[react_core_1.SCPreferences.CONFIGURATIONS_FOLLOW_ENABLED] && (react_1.default.createElement(material_1.MenuItem, { className: classes.item, key: "connections", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_CONNECTIONS_ROUTE_NAME, scUserContext.user) },
171
171
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.navigationSettingsIconButton.connections", defaultMessage: "ui.navigationSettingsIconButton.connections" }))),
172
- scPreferences.features.includes(types_1.SCFeatureName.LOYALTY) && (react_1.default.createElement(material_1.MenuItem, { className: classes.item, key: "loyaltyProgram", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.LOYALTY_ROUTE_NAME, {}) },
172
+ preferences[react_core_1.SCPreferences.ADDONS_LOYALTY_POINTS_COLLECTION] && (react_1.default.createElement(material_1.MenuItem, { className: classes.item, key: "loyaltyProgram", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.LOYALTY_ROUTE_NAME, {}) },
173
173
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.navigationSettingsIconButton.loyalty", defaultMessage: "ui.navigationSettingsIconButton.loyalty" }))),
174
174
  preferences[react_core_1.SCPreferences.CONFIGURATIONS_POST_TYPE_ENABLED] && (react_1.default.createElement(material_1.MenuItem, { className: classes.item, key: "followedPosts", component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_FOLLOWED_POSTS_ROUTE_NAME, scUserContext.user) },
175
175
  react_1.default.createElement(react_intl_1.FormattedMessage, { id: "ui.navigationSettingsIconButton.postsFollowed", defaultMessage: "ui.navigationSettingsIconButton.postsFollowed" }))),
@@ -123,7 +123,9 @@ function NavigationToolbar(inProps) {
123
123
  preferences[react_core_1.SCPreferences.CONFIGURATIONS_EXPLORE_STREAM_ENABLED] &&
124
124
  (preferences[react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY] || scUserContext.user) && (react_1.default.createElement(material_1.IconButton, { className: (0, classnames_1.default)(classes.explore, { [classes.active]: value.startsWith(scRoutingContext.url(react_core_1.SCRoutes.EXPLORE_ROUTE_NAME, {})) }), "aria-label": "Explore", to: scRoutingContext.url(react_core_1.SCRoutes.EXPLORE_ROUTE_NAME, {}), component: react_core_1.Link },
125
125
  react_1.default.createElement(Icon_1.default, null, "explore"))),
126
- groupsEnabled && scUserContext.user && (react_1.default.createElement(material_1.IconButton, { className: (0, classnames_1.default)(classes.groups, { [classes.active]: value.startsWith(scRoutingContext.url(react_core_1.SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {})) }), "aria-label": "Groups", to: scRoutingContext.url(react_core_1.SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}), component: react_core_1.Link },
126
+ groupsEnabled && scUserContext.user && (react_1.default.createElement(material_1.IconButton, { className: (0, classnames_1.default)(classes.groups, {
127
+ [classes.active]: value.startsWith(scRoutingContext.url(react_core_1.SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}))
128
+ }), "aria-label": "Groups", to: scRoutingContext.url(react_core_1.SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}), component: react_core_1.Link },
127
129
  react_1.default.createElement(Icon_1.default, null, "groups")))));
128
130
  return (react_1.default.createElement(Root, Object.assign({ className: (0, classnames_1.default)(className, classes.root) }, rest),
129
131
  react_1.default.createElement(NavigationMenuIconButtonComponent, null),
@@ -135,7 +137,9 @@ function NavigationToolbar(inProps) {
135
137
  (preferences[react_core_1.SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY] || scUserContext.user) && !disableSearch ? (react_1.default.createElement(SearchAutocomplete_1.default, Object.assign({ className: classes.search, blurOnSelect: true }, SearchAutocompleteProps))) : (react_1.default.createElement(material_1.Box, { className: classes.search })),
136
138
  startActions,
137
139
  scUserContext.user ? (react_1.default.createElement(react_1.default.Fragment, null,
138
- !disableComposer && react_1.default.createElement(ComposerIconButton_1.default, Object.assign({ className: classes.composer }, ComposerIconButtonProps)),
140
+ !disableComposer ||
141
+ !preferences[react_core_1.SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value ||
142
+ (react_core_1.UserUtils.isStaff(scUserContext.user) && preferences[react_core_1.SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value && (react_1.default.createElement(ComposerIconButton_1.default, Object.assign({ className: classes.composer }, ComposerIconButtonProps)))),
139
143
  react_1.default.createElement(material_1.Tooltip, { title: scUserContext.user.username },
140
144
  react_1.default.createElement(material_1.IconButton, { component: react_core_1.Link, to: scRoutingContext.url(react_core_1.SCRoutes.USER_PROFILE_ROUTE_NAME, scUserContext.user), "aria-label": "Profile", className: classes.profile },
141
145
  react_1.default.createElement(material_1.Avatar, { alt: scUserContext.user.username, src: scUserContext.user.avatar }))),
@@ -101,7 +101,12 @@ export default function AccountRecover(inProps) {
101
101
  }
102
102
  // RENDER
103
103
  return (React.createElement(Root, Object.assign({ className: classNames(classes.root, className) }, rest), isSucceed ? (React.createElement(Alert, { severity: "success", className: classes.success },
104
- intl.formatMessage({ id: 'ui.accountRecover.success', defaultMessage: 'ui.accountRecover.success' }, { email, bold: (chunks) => React.createElement("b", null, chunks) }),
104
+ intl.formatMessage({ id: 'ui.accountRecover.success', defaultMessage: 'ui.accountRecover.success' }, {
105
+ email,
106
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
107
+ // @ts-ignore
108
+ b: (chunks) => React.createElement("b", null, chunks)
109
+ }),
105
110
  successAction)) : (React.createElement("form", { className: classes.form, onSubmit: handleSubmit },
106
111
  React.createElement(EmailTextField, Object.assign({ className: classes.email, disabled: isSubmitting, label: React.createElement(FormattedMessage, { id: "ui.accountRecover.email.label", defaultMessage: "ui.accountRecover.email.label" }) }, TextFieldProps, { value: email, onChange: handleChange, error: Boolean(emailError), helperText: emailError && (React.createElement(FormattedMessage, { id: `ui.accountRecover.email.error.${emailError}`, defaultMessage: `ui.accountRecover.email.error.${emailError}` })) })),
107
112
  React.createElement(Button, Object.assign({ type: "submit" }, ButtonProps, { disabled: !email || Boolean(emailError) || isSubmitting }),
@@ -1,7 +1,7 @@
1
1
  import { __rest } from "tslib";
2
2
  import { Badge, BottomNavigation as MuiBottomNavigation, BottomNavigationAction, Icon, styled } from '@mui/material';
3
3
  import React, { useMemo } from 'react';
4
- import { Link, SCPreferences, SCRoutes, useSCPreferences, useSCRouting, useSCUser } from '@selfcommunity/react-core';
4
+ import { Link, SCPreferences, SCRoutes, UserUtils, useSCPreferences, useSCRouting, useSCUser } from '@selfcommunity/react-core';
5
5
  import { useThemeProps } from '@mui/system';
6
6
  import classNames from 'classnames';
7
7
  import { SCFeatureName } from '@selfcommunity/types';
@@ -69,7 +69,8 @@ export default function BottomNavigation(inProps) {
69
69
  React.createElement(BottomNavigationAction, { key: "home", className: classes.action, component: Link, to: scUserContext.user ? scRoutingContext.url(SCRoutes.HOME_ROUTE_NAME, {}) : '/', value: scUserContext.user ? scRoutingContext.url(SCRoutes.HOME_ROUTE_NAME, {}) : '/', icon: React.createElement(Icon, null, "home") }),
70
70
  (scUserContext.user || preferences[SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY].value) &&
71
71
  preferences[SCPreferences.CONFIGURATIONS_EXPLORE_STREAM_ENABLED].value ? (React.createElement(BottomNavigationAction, { key: "explore", className: classes.action, component: Link, to: scRoutingContext.url(SCRoutes.EXPLORE_ROUTE_NAME, {}), value: scRoutingContext.url(SCRoutes.EXPLORE_ROUTE_NAME, {}), icon: React.createElement(Icon, null, "explore") })) : null,
72
- React.createElement(BottomNavigationAction, { key: "composer", className: classNames(classes.composer, classes.action), component: ComposerIconButton, disableRipple: true }),
72
+ !preferences[SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value ||
73
+ (UserUtils.isStaff(scUserContext.user) && preferences[SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value) ? (React.createElement(BottomNavigationAction, { key: "composer", className: classNames(classes.composer, classes.action), component: ComposerIconButton, disableRipple: true })) : null,
73
74
  groupsEnabled && scUserContext.user ? (React.createElement(BottomNavigationAction, { key: "groups", className: classes.action, component: Link, to: scRoutingContext.url(SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}), value: scRoutingContext.url(SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}), icon: React.createElement(Icon, null, "groups") })) : null,
74
75
  scUserContext.user && !groupsEnabled ? (React.createElement(BottomNavigationAction, { key: "notifications", className: classes.action, component: Link, to: scRoutingContext.url(SCRoutes.USER_NOTIFICATIONS_ROUTE_NAME, {}), value: scRoutingContext.url(SCRoutes.USER_NOTIFICATIONS_ROUTE_NAME, {}), icon: React.createElement(Badge, { badgeContent: scUserContext.user.unseen_notification_banners_counter + scUserContext.user.unseen_interactions_counter, color: "secondary" },
75
76
  React.createElement(Icon, null, "notifications_active")) })) : null,
@@ -1,6 +1,6 @@
1
1
  import { __rest } from "tslib";
2
- import React, { useCallback, useState } from 'react';
3
- import { Link, SCRoutes, UserUtils, useSCContext, useSCRouting, useSCUser } from '@selfcommunity/react-core';
2
+ import React, { useCallback, useMemo, useState } from 'react';
3
+ import { Link, SCPreferences, SCRoutes, UserUtils, useSCContext, useSCPreferences, useSCRouting, useSCUser } from '@selfcommunity/react-core';
4
4
  import { Avatar, Box, Button, CardContent } from '@mui/material';
5
5
  import { styled } from '@mui/material/styles';
6
6
  import { FormattedMessage } from 'react-intl';
@@ -10,6 +10,7 @@ import { useThemeProps } from '@mui/system';
10
10
  import Composer from '../Composer';
11
11
  import { File, Link as MediaLink } from '../../shared/Media';
12
12
  import { PREFIX } from './constants';
13
+ import HiddenPlaceholder from '../../shared/HiddenPlaceholder';
13
14
  const classes = {
14
15
  root: `${PREFIX}-root`,
15
16
  content: `${PREFIX}-content`,
@@ -58,6 +59,9 @@ export default function InlineComposerWidget(inProps) {
58
59
  const scUserContext = useSCUser();
59
60
  const scRoutingContext = useSCRouting();
60
61
  const { enqueueSnackbar } = useSnackbar();
62
+ // PREFERENCES
63
+ const preferences = useSCPreferences();
64
+ const onlyStaffEnabled = useMemo(() => preferences.preferences[SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value, [preferences.preferences]);
61
65
  // State variables
62
66
  const [open, setOpen] = useState(false);
63
67
  // Handlers
@@ -92,6 +96,9 @@ export default function InlineComposerWidget(inProps) {
92
96
  }
93
97
  setOpen(false);
94
98
  };
99
+ if (!UserUtils.isStaff(scUserContext.user) && onlyStaffEnabled) {
100
+ return React.createElement(HiddenPlaceholder, null);
101
+ }
95
102
  return (React.createElement(React.Fragment, null,
96
103
  React.createElement(Root, Object.assign({ className: classes.root }, rest),
97
104
  React.createElement(CardContent, { className: classes.content },
@@ -2,7 +2,6 @@ import { __rest } from "tslib";
2
2
  import React, { useMemo, useState } from 'react';
3
3
  import { styled } from '@mui/material/styles';
4
4
  import { Divider, Icon, IconButton, List, ListItem, ListItemButton, Menu, MenuItem, SwipeableDrawer, useMediaQuery, useTheme } from '@mui/material';
5
- import { SCFeatureName } from '@selfcommunity/types';
6
5
  import { Link, SCPreferences, SCRoutes, UserUtils, useSCPreferences, useSCRouting, useSCUser } from '@selfcommunity/react-core';
7
6
  import classNames from 'classnames';
8
7
  import { useThemeProps } from '@mui/system';
@@ -34,7 +33,8 @@ const MenuRoot = styled(Menu, {
34
33
  const PREFERENCES = [
35
34
  SCPreferences.CONFIGURATIONS_FOLLOW_ENABLED,
36
35
  SCPreferences.CONFIGURATIONS_POST_TYPE_ENABLED,
37
- SCPreferences.CONFIGURATIONS_DISCUSSION_TYPE_ENABLED
36
+ SCPreferences.CONFIGURATIONS_DISCUSSION_TYPE_ENABLED,
37
+ SCPreferences.ADDONS_LOYALTY_POINTS_COLLECTION
38
38
  ];
39
39
  /**
40
40
  * > API documentation for the Community-JS Navigation Settings Icon Button component. Learn about the available props and the CSS API.
@@ -118,7 +118,7 @@ export default function NavigationSettingsIconButton(inProps) {
118
118
  !preferences[SCPreferences.CONFIGURATIONS_FOLLOW_ENABLED] && (React.createElement(ListItem, { className: classes.item, key: "connections" },
119
119
  React.createElement(ListItemButton, { component: Link, to: scRoutingContext.url(SCRoutes.USER_PROFILE_CONNECTIONS_ROUTE_NAME, scUserContext.user) },
120
120
  React.createElement(FormattedMessage, { id: "ui.navigationSettingsIconButton.connections", defaultMessage: "ui.navigationSettingsIconButton.connections" })))),
121
- scPreferences.features.includes(SCFeatureName.LOYALTY) && (React.createElement(ListItem, { className: classes.item, key: "loyaltyProgram" },
121
+ preferences[SCPreferences.ADDONS_LOYALTY_POINTS_COLLECTION] && (React.createElement(ListItem, { className: classes.item, key: "loyaltyProgram" },
122
122
  React.createElement(ListItemButton, { component: Link, to: scRoutingContext.url(SCRoutes.LOYALTY_ROUTE_NAME, {}) },
123
123
  React.createElement(FormattedMessage, { id: "ui.navigationSettingsIconButton.loyalty", defaultMessage: "ui.navigationSettingsIconButton.loyalty" })))),
124
124
  preferences[SCPreferences.CONFIGURATIONS_POST_TYPE_ENABLED] && (React.createElement(ListItem, { className: classes.item, key: "followedPosts" },
@@ -167,7 +167,7 @@ export default function NavigationSettingsIconButton(inProps) {
167
167
  React.createElement(FormattedMessage, { id: "ui.navigationSettingsIconButton.followers", defaultMessage: "ui.navigationSettingsIconButton.followers" }))),
168
168
  !preferences[SCPreferences.CONFIGURATIONS_FOLLOW_ENABLED] && (React.createElement(MenuItem, { className: classes.item, key: "connections", component: Link, to: scRoutingContext.url(SCRoutes.USER_PROFILE_CONNECTIONS_ROUTE_NAME, scUserContext.user) },
169
169
  React.createElement(FormattedMessage, { id: "ui.navigationSettingsIconButton.connections", defaultMessage: "ui.navigationSettingsIconButton.connections" }))),
170
- scPreferences.features.includes(SCFeatureName.LOYALTY) && (React.createElement(MenuItem, { className: classes.item, key: "loyaltyProgram", component: Link, to: scRoutingContext.url(SCRoutes.LOYALTY_ROUTE_NAME, {}) },
170
+ preferences[SCPreferences.ADDONS_LOYALTY_POINTS_COLLECTION] && (React.createElement(MenuItem, { className: classes.item, key: "loyaltyProgram", component: Link, to: scRoutingContext.url(SCRoutes.LOYALTY_ROUTE_NAME, {}) },
171
171
  React.createElement(FormattedMessage, { id: "ui.navigationSettingsIconButton.loyalty", defaultMessage: "ui.navigationSettingsIconButton.loyalty" }))),
172
172
  preferences[SCPreferences.CONFIGURATIONS_POST_TYPE_ENABLED] && (React.createElement(MenuItem, { className: classes.item, key: "followedPosts", component: Link, to: scRoutingContext.url(SCRoutes.USER_PROFILE_FOLLOWED_POSTS_ROUTE_NAME, scUserContext.user) },
173
173
  React.createElement(FormattedMessage, { id: "ui.navigationSettingsIconButton.postsFollowed", defaultMessage: "ui.navigationSettingsIconButton.postsFollowed" }))),
@@ -11,7 +11,7 @@ import SearchAutocomplete from '../SearchAutocomplete';
11
11
  import NavigationSettingsIconButton from '../NavigationSettingsIconButton';
12
12
  import ComposerIconButton from '../ComposerIconButton';
13
13
  import { SCFeatureName } from '@selfcommunity/types';
14
- import { Link, SCPreferences, SCRoutes, useSCPreferences, useSCRouting, useSCUser } from '@selfcommunity/react-core';
14
+ import { Link, SCPreferences, SCRoutes, UserUtils, useSCPreferences, useSCRouting, useSCUser } from '@selfcommunity/react-core';
15
15
  import NavigationMenuIconButton from '../NavigationMenuIconButton';
16
16
  import { PREFIX } from './constants';
17
17
  const classes = {
@@ -121,7 +121,9 @@ export default function NavigationToolbar(inProps) {
121
121
  preferences[SCPreferences.CONFIGURATIONS_EXPLORE_STREAM_ENABLED] &&
122
122
  (preferences[SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY] || scUserContext.user) && (React.createElement(IconButton, { className: classNames(classes.explore, { [classes.active]: value.startsWith(scRoutingContext.url(SCRoutes.EXPLORE_ROUTE_NAME, {})) }), "aria-label": "Explore", to: scRoutingContext.url(SCRoutes.EXPLORE_ROUTE_NAME, {}), component: Link },
123
123
  React.createElement(Icon, null, "explore"))),
124
- groupsEnabled && scUserContext.user && (React.createElement(IconButton, { className: classNames(classes.groups, { [classes.active]: value.startsWith(scRoutingContext.url(SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {})) }), "aria-label": "Groups", to: scRoutingContext.url(SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}), component: Link },
124
+ groupsEnabled && scUserContext.user && (React.createElement(IconButton, { className: classNames(classes.groups, {
125
+ [classes.active]: value.startsWith(scRoutingContext.url(SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}))
126
+ }), "aria-label": "Groups", to: scRoutingContext.url(SCRoutes.GROUPS_SUBSCRIBED_ROUTE_NAME, {}), component: Link },
125
127
  React.createElement(Icon, null, "groups")))));
126
128
  return (React.createElement(Root, Object.assign({ className: classNames(className, classes.root) }, rest),
127
129
  React.createElement(NavigationMenuIconButtonComponent, null),
@@ -133,7 +135,9 @@ export default function NavigationToolbar(inProps) {
133
135
  (preferences[SCPreferences.CONFIGURATIONS_CONTENT_AVAILABILITY] || scUserContext.user) && !disableSearch ? (React.createElement(SearchAutocomplete, Object.assign({ className: classes.search, blurOnSelect: true }, SearchAutocompleteProps))) : (React.createElement(Box, { className: classes.search })),
134
136
  startActions,
135
137
  scUserContext.user ? (React.createElement(React.Fragment, null,
136
- !disableComposer && React.createElement(ComposerIconButton, Object.assign({ className: classes.composer }, ComposerIconButtonProps)),
138
+ !disableComposer ||
139
+ !preferences[SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value ||
140
+ (UserUtils.isStaff(scUserContext.user) && preferences[SCPreferences.CONFIGURATIONS_POST_ONLY_STAFF_ENABLED].value && (React.createElement(ComposerIconButton, Object.assign({ className: classes.composer }, ComposerIconButtonProps)))),
137
141
  React.createElement(Tooltip, { title: scUserContext.user.username },
138
142
  React.createElement(IconButton, { component: Link, to: scRoutingContext.url(SCRoutes.USER_PROFILE_ROUTE_NAME, scUserContext.user), "aria-label": "Profile", className: classes.profile },
139
143
  React.createElement(Avatar, { alt: scUserContext.user.username, src: scUserContext.user.avatar }))),