From aa8e1e2d7ac3d2a06e48c7bdc7a2e85887137b60 Mon Sep 17 00:00:00 2001
From: Nick Funk
Date: Fri, 6 Sep 2019 12:29:27 -0600
Subject: [PATCH] [CORL-560] Update Admin > Config area to match new designs
(#2514)
* Add solid background to Moderate > Config area headers
CORL-560
* Update Config > General section text and font weight
CORL-560
* Update ordering of Config > Moderation page items
CORL-560
* Update text and font weights in Configure > Moderation page
CORL-560
* Update text and font weight on Configure > Organization page
CORL-560
* Update text and font weight on Configure > Banned and Suspect Words page
CORL-560
* Update text and font weight on Configure > Authentication page
CORL-560
* Update text and font weights on Configure > Email page
CORL-560
* Update text and font weights on Configure > Advanced page
CORL-560
* Repair tests around the styling changes made to the moderation config area
CORL-560
* Fix capitalization on the Config > General page
CORL-560
* Make email checkbox light themed so its text shows up on new headers
CORL-560
* Update Header width to account for padding
Prevents it from sticking out over the edge of the page layout
CORL-560
* Align "Sort by" text to the drop down in Admin > Config > General > Reactions
CORL-560
* Update Admin > Config > General snapshot to adjust for vertical aligned text
Vertical flex aligned the "Sort by" text to a combo box in a previous changed
CORL-560
* Rename "Perspective Toxic Comment Filter" header to "Toxic Comment Filter"
CORL-560
* Use overlay scrolling if available to prevent scroll bar width popping
CORL-560
* Remove overflow-y: overlay
CORL-560
* Rename Akismet Spam Detection to Spam Detection
CORL-560
* Make all non-complex text fields full width in Admin > Config
CORL-560
* Remove Authentication Integrations header
Area underneath was empty
CORL-560
* Re-arrange SSO Key Field layout
CORL-560
* Create new typography types for bodyShort and fieldDescription
CORL-560
* Update Admin > Config to use bodyShort, fieldDescription typography
CORL-560
* Add a slight padding on InputLabel
CORL-560
* Add padding on either side of Admin > Config section content
CORL-560
---
.../__snapshots__/resetPassword.spec.tsx.snap | 2 +-
.../client/admin/routes/Configure/Header.css | 10 +-
.../client/admin/routes/Configure/Header.tsx | 2 +-
.../admin/routes/Configure/SectionContent.css | 4 +
.../admin/routes/Configure/SectionContent.tsx | 19 +
.../__snapshots__/Header.spec.tsx.snap | 2 +-
.../Advanced/CommentStreamLiveUpdates.tsx | 25 +-
.../sections/Advanced/CustomCSSConfig.tsx | 59 +-
.../Configure/sections/Advanced/EmbedCode.tsx | 35 +-
.../Advanced/PermittedDomainsConfig.tsx | 73 +-
.../sections/Auth/AccountFeaturesConfig.tsx | 207 +--
.../sections/Auth/AuthIntegrationsConfig.tsx | 5 -
.../Configure/sections/Auth/ClientIDField.tsx | 1 +
.../sections/Auth/ClientSecretField.tsx | 3 +-
.../sections/Auth/LocalAuthConfig.tsx | 4 +-
.../Configure/sections/Auth/OIDCConfig.tsx | 17 +-
.../Configure/sections/Auth/RedirectField.tsx | 2 +-
.../sections/Auth/RegistrationField.tsx | 13 +-
.../Configure/sections/Auth/SSOKeyField.css | 15 +-
.../Configure/sections/Auth/SSOKeyField.tsx | 77 +-
.../sections/Email/EmailConfigContainer.tsx | 12 +-
.../routes/Configure/sections/Email/SMTP.tsx | 2 +-
.../General/ClosedStreamMessageConfig.tsx | 48 +-
.../General/ClosingCommentStreamsConfig.tsx | 91 +-
.../sections/General/CommentEditingConfig.tsx | 79 +-
.../sections/General/CommentLengthConfig.tsx | 213 +--
.../sections/General/GuidelinesConfig.tsx | 88 +-
.../General/LocaleConfigContainer.tsx | 43 +-
.../sections/General/ReactionConfig.tsx | 264 +--
.../General/SitewideCommentingConfig.tsx | 115 +-
.../sections/Moderation/APIKeyField.tsx | 3 +-
.../sections/Moderation/AkismetConfig.tsx | 132 +-
.../sections/Moderation/ModerationConfig.tsx | 4 +-
.../sections/Moderation/PerspectiveConfig.tsx | 366 ++--
.../Moderation/PreModerationConfig.tsx | 55 +-
.../Moderation/RecentCommentHistoryConfig.tsx | 181 +-
.../ModerationConfig.spec.tsx.snap | 4 +-
.../OrganizationContactEmailConfig.tsx | 62 +-
.../Organization/OrganizationNameConfig.tsx | 57 +-
.../Organization/OrganizationURLConfig.tsx | 52 +-
.../WordList/BannedWordListConfig.tsx | 69 +-
.../WordList/SuspectWordListConfig.tsx | 68 +-
.../createPassword.spec.tsx.snap | 10 +-
.../createUsername.spec.tsx.snap | 10 +-
.../__snapshots__/advanced.spec.tsx.snap | 276 +--
.../__snapshots__/auth.spec.tsx.snap | 815 +++++----
.../__snapshots__/general.spec.tsx.snap | 1601 +++++++++--------
.../__snapshots__/moderation.spec.tsx.snap | 1514 ++++++++--------
.../__snapshots__/organization.spec.tsx.snap | 156 +-
.../__snapshots__/wordList.spec.tsx.snap | 190 +-
.../admin/test/configure/advanced.spec.tsx | 4 +-
.../admin/test/configure/general.spec.tsx | 24 +-
.../admin/test/configure/moderation.spec.tsx | 18 +-
.../test/configure/organization.spec.tsx | 4 +-
.../admin/test/configure/wordList.spec.tsx | 4 +-
.../invite/__snapshots__/invite.spec.tsx.snap | 4 +-
.../createPassword.spec.tsx.snap | 10 +-
.../createUsername.spec.tsx.snap | 10 +-
.../test/__snapshots__/signUp.spec.tsx.snap | 52 +-
.../__snapshots__/FormField.spec.tsx.snap | 2 +-
.../InputDescription/InputDescription.tsx | 2 +-
.../InputDescription.spec.tsx.snap | 2 +-
.../ui/components/InputLabel/InputLabel.css | 1 +
.../ui/components/Typography/Typography.css | 8 +
.../ui/components/Typography/Typography.tsx | 4 +
src/core/client/ui/shared/typography.css | 8 +
src/core/client/ui/theme/mixins.css | 16 +
src/core/client/ui/theme/variables.ts | 11 +
src/locales/da/admin.ftl | 1 -
src/locales/en-US/admin.ftl | 95 +-
src/locales/pt-BR/admin.ftl | 1 -
71 files changed, 3861 insertions(+), 3575 deletions(-)
create mode 100644 src/core/client/admin/routes/Configure/SectionContent.css
create mode 100644 src/core/client/admin/routes/Configure/SectionContent.tsx
diff --git a/src/core/client/account/test/__snapshots__/resetPassword.spec.tsx.snap b/src/core/client/account/test/__snapshots__/resetPassword.spec.tsx.snap
index e040fa260..6befa3d10 100644
--- a/src/core/client/account/test/__snapshots__/resetPassword.spec.tsx.snap
+++ b/src/core/client/account/test/__snapshots__/resetPassword.spec.tsx.snap
@@ -52,7 +52,7 @@ Make sure it is unique and be sure to keep it secure.
Password
Must be at least 8 characters
diff --git a/src/core/client/admin/routes/Configure/Header.css b/src/core/client/admin/routes/Configure/Header.css
index 625823009..6459c5f15 100644
--- a/src/core/client/admin/routes/Configure/Header.css
+++ b/src/core/client/admin/routes/Configure/Header.css
@@ -1,7 +1,11 @@
.root {
- padding-bottom: calc(0.5 * var(--mini-unit));
- border-bottom: 1px solid var(--palette-text-primary);
+ border-style: none;
+ border-radius: 1px;
+ background: var(--palette-text-primary);
+ color: var(--palette-text-light);
+ padding: var(--spacing-2);
margin-bottom: calc(1.5 * var(--mini-unit));
display: block;
- width: 100%;
+ width: calc(100% - 2 * var(--spacing-2));
+ font-family: var(--font-family-sans-serif);
}
diff --git a/src/core/client/admin/routes/Configure/Header.tsx b/src/core/client/admin/routes/Configure/Header.tsx
index efb12dd71..ef5f90167 100644
--- a/src/core/client/admin/routes/Configure/Header.tsx
+++ b/src/core/client/admin/routes/Configure/Header.tsx
@@ -10,7 +10,7 @@ type Props = PropTypesOf;
const Header: FunctionComponent = ({ children, className, ...rest }) => (
diff --git a/src/core/client/admin/routes/Configure/SectionContent.css b/src/core/client/admin/routes/Configure/SectionContent.css
new file mode 100644
index 000000000..4ec171a81
--- /dev/null
+++ b/src/core/client/admin/routes/Configure/SectionContent.css
@@ -0,0 +1,4 @@
+.sectionContent {
+ padding-left: var(--spacing-2);
+ padding-right: var(--spacing-2);
+}
diff --git a/src/core/client/admin/routes/Configure/SectionContent.tsx b/src/core/client/admin/routes/Configure/SectionContent.tsx
new file mode 100644
index 000000000..64845d6af
--- /dev/null
+++ b/src/core/client/admin/routes/Configure/SectionContent.tsx
@@ -0,0 +1,19 @@
+import React, { FunctionComponent } from "react";
+
+import { HorizontalGutter } from "coral-ui/components";
+
+import styles from "./SectionContent.css";
+
+interface Props {
+ children?: React.ReactNode;
+}
+
+const SectionContent: FunctionComponent = ({ children }) => {
+ return (
+
+ {children}
+
+ );
+};
+
+export default SectionContent;
diff --git a/src/core/client/admin/routes/Configure/__snapshots__/Header.spec.tsx.snap b/src/core/client/admin/routes/Configure/__snapshots__/Header.spec.tsx.snap
index 21a12c578..8b1daa60a 100644
--- a/src/core/client/admin/routes/Configure/__snapshots__/Header.spec.tsx.snap
+++ b/src/core/client/admin/routes/Configure/__snapshots__/Header.spec.tsx.snap
@@ -3,7 +3,7 @@
exports[`renders correctly 1`] = `
child
diff --git a/src/core/client/admin/routes/Configure/sections/Advanced/CommentStreamLiveUpdates.tsx b/src/core/client/admin/routes/Configure/sections/Advanced/CommentStreamLiveUpdates.tsx
index a15d7c1a6..a3556bf25 100644
--- a/src/core/client/admin/routes/Configure/sections/Advanced/CommentStreamLiveUpdates.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Advanced/CommentStreamLiveUpdates.tsx
@@ -5,6 +5,7 @@ import { FormField, HorizontalGutter, Typography } from "coral-ui/components";
import Header from "../../Header";
import OnOffField from "../../OnOffField";
+import SectionContent from "../../SectionContent";
interface Props {
disabled: boolean;
@@ -15,19 +16,21 @@ const CommentStreamLiveUpdates: FunctionComponent = ({ disabled }) => (
}>
- Comment Stream Live Updates
+ Comment stream live updates
- }
- >
-
- When enabled, there will be real-time loading and updating of comments
- as new comments and replies are published
-
-
-
+
+ }
+ >
+
+ When enabled, there will be real-time loading and updating of
+ comments as new comments and replies are published
+
+
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/Advanced/CustomCSSConfig.tsx b/src/core/client/admin/routes/Configure/sections/Advanced/CustomCSSConfig.tsx
index 52f46a478..52fed6edb 100644
--- a/src/core/client/admin/routes/Configure/sections/Advanced/CustomCSSConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Advanced/CustomCSSConfig.tsx
@@ -15,6 +15,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
interface Props {
disabled: boolean;
@@ -28,32 +29,38 @@ const CustomCSSConfig: FunctionComponent = ({ disabled }) => (
Custom CSS
- }
- >
-
- URL of a CSS stylesheet that will override default Embed Stream
- styles. Can be internal or external.
-
-
-
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
+
+ }
+ >
+
+ URL of a CSS stylesheet that will override default Embed Stream
+ styles. Can be internal or external.
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/Advanced/EmbedCode.tsx b/src/core/client/admin/routes/Configure/sections/Advanced/EmbedCode.tsx
index 99b2d78b0..4a49d5c0d 100644
--- a/src/core/client/admin/routes/Configure/sections/Advanced/EmbedCode.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Advanced/EmbedCode.tsx
@@ -8,6 +8,7 @@ import { GetMessage, withGetMessage } from "coral-framework/lib/i18n";
import { HorizontalGutter, Typography } from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import styles from "./EmbedCode.css";
@@ -78,23 +79,25 @@ const EmbedCode: FunctionComponent = ({ staticURI, getMessage }) => {
return (
- Embed Code
+ Embed code
-
-
- Copy and paste the code below into your CMS to embed Coral comment
- streams in each of your site’s stories.
-
-
-
-
-
-
+
+
+
+ Copy and paste the code below into your CMS to embed Coral comment
+ streams in each of your site’s stories.
+
+
+
+
+
+
+
);
};
diff --git a/src/core/client/admin/routes/Configure/sections/Advanced/PermittedDomainsConfig.tsx b/src/core/client/admin/routes/Configure/sections/Advanced/PermittedDomainsConfig.tsx
index 01d870f66..69b65b9b5 100644
--- a/src/core/client/admin/routes/Configure/sections/Advanced/PermittedDomainsConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Advanced/PermittedDomainsConfig.tsx
@@ -17,6 +17,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
interface Props {
disabled: boolean;
@@ -29,43 +30,45 @@ const PermittedDomainsConfig: FunctionComponent = ({ disabled }) => (
}
>
- Permitted Domains
+ Permitted domains
- }
- >
-
- The domains you would like to permit for Coral, e.g. your local,
- staging and production environments including the scheme (ex.
- http://localhost:3000, https://staging.domain.com,
- https://domain.com).
-
-
-
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
+
+ }
+ >
+
+ The domains you would like to permit for Coral, e.g. your local,
+ staging and production environments including the scheme (ex.
+ http://localhost:3000, https://staging.domain.com,
+ https://domain.com).
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/Auth/AccountFeaturesConfig.tsx b/src/core/client/admin/routes/Configure/sections/Auth/AccountFeaturesConfig.tsx
index 12331890d..6af9371a1 100644
--- a/src/core/client/admin/routes/Configure/sections/Auth/AccountFeaturesConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Auth/AccountFeaturesConfig.tsx
@@ -12,6 +12,7 @@ import {
import OnOffField from "../../OnOffField";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import styles from "./AccountFeaturesConfig.css";
@@ -25,114 +26,118 @@ const AccountFeaturesConfig: FunctionComponent = ({ disabled }) => (
Commenter account mangement features
-
-
- You can enable and disable certain features for your commenters to use
- within their Profile. These features also assist towards GDPR
- compliance.
-
-
- }>
-
- Allow users to:
+
+
+
+ You can enable and disable certain features for your commenters to
+ use within their Profile. These features also assist towards GDPR
+ compliance.
+
-
-
-
-
-
- Change their usernames
-
-
-
-
- Usernames can be changed once every 14 days.
-
-
-
-
- Yes
+ }>
+
+ Allow users to:
+
+
+
+
+
+
+ Change their usernames
+
- }
- offLabel={
-
- No
+
+
+ Usernames can be changed once every 14 days.
+
- }
- />
-
-
-
-
-
-
-
-
-
- Download their comments
-
-
-
-
- Commenters can download a csv of their comment history.
-
-
-
-
- Yes
+
+
+ Yes
+
+ }
+ offLabel={
+
+ No
+
+ }
+ />
+
+
+
+
+
+
+
+
+
+ Download their comments
+
- }
- offLabel={
-
- No
+
+
+ Commenters can download a csv of their comment history.
+
- }
- />
-
-
-
-
-
-
-
-
- Delete their account
-
-
-
- Removes all of their comment data, username, and email address
- from the site and the database.
-
-
-
-
- Yes
+
+
+ Yes
+
+ }
+ offLabel={
+
+ No
+
+ }
+ />
+
+
+
+
+
+
+
+
+
+ Delete their account
+
- }
- offLabel={
-
- No
+
+
+ Removes all of their comment data, username, and email
+ address from the site and the database.
+
- }
- />
-
-
-
+
+
+ Yes
+
+ }
+ offLabel={
+
+ No
+
+ }
+ />
+
+
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/Auth/AuthIntegrationsConfig.tsx b/src/core/client/admin/routes/Configure/sections/Auth/AuthIntegrationsConfig.tsx
index 58978589e..a70850613 100644
--- a/src/core/client/admin/routes/Configure/sections/Auth/AuthIntegrationsConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Auth/AuthIntegrationsConfig.tsx
@@ -1,10 +1,8 @@
-import { Localized } from "fluent-react/compat";
import React, { FunctionComponent } from "react";
import { PropTypesOf } from "coral-framework/types";
import { HorizontalGutter } from "coral-ui/components";
-import Header from "../../Header";
import { OnInitValuesFct } from "./AuthConfigContainer";
import FacebookConfigContainer from "./FacebookConfigContainer";
import GoogleConfigContainer from "./GoogleConfigContainer";
@@ -32,9 +30,6 @@ const AuthIntegrationsConfig: FunctionComponent = ({
onInitValues,
}) => (
-
- Auth Integrations
- = ({
color={colorFromMeta(meta)}
{...input}
spellCheck={false}
+ fullWidth
/>
>
diff --git a/src/core/client/admin/routes/Configure/sections/Auth/ClientSecretField.tsx b/src/core/client/admin/routes/Configure/sections/Auth/ClientSecretField.tsx
index 8a0ea1a8f..f4bb68c99 100644
--- a/src/core/client/admin/routes/Configure/sections/Auth/ClientSecretField.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Auth/ClientSecretField.tsx
@@ -20,7 +20,7 @@ const ClientSecretField: FunctionComponent = ({
}) => (
- Client Secret
+ Client secret = ({
// TODO: (wyattjoh) figure out how to add translations to these props
hidePasswordTitle="Show Client Secret"
showPasswordTitle="Hide Client Secret"
+ fullWidth
{...input}
/>
diff --git a/src/core/client/admin/routes/Configure/sections/Auth/LocalAuthConfig.tsx b/src/core/client/admin/routes/Configure/sections/Auth/LocalAuthConfig.tsx
index 0814f24f8..9bfea91a4 100644
--- a/src/core/client/admin/routes/Configure/sections/Auth/LocalAuthConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Auth/LocalAuthConfig.tsx
@@ -15,7 +15,7 @@ const LocalAuthConfig: FunctionComponent = ({ disabled }) => (
- Login with LocalAuth
+ Login with email authentication
}
name="auth.integrations.local.enabled"
@@ -26,7 +26,7 @@ const LocalAuthConfig: FunctionComponent = ({ disabled }) => (
- Use LocalAuth login on
+ Use email authentication login on
}
name="auth.integrations.local.targetFilter"
diff --git a/src/core/client/admin/routes/Configure/sections/Auth/OIDCConfig.tsx b/src/core/client/admin/routes/Configure/sections/Auth/OIDCConfig.tsx
index 2bf21748b..dac28c134 100644
--- a/src/core/client/admin/routes/Configure/sections/Auth/OIDCConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Auth/OIDCConfig.tsx
@@ -15,6 +15,7 @@ import {
Flex,
FormField,
HorizontalGutter,
+ InputDescription,
InputLabel,
TextField,
TextLink,
@@ -26,7 +27,6 @@ import { FormProps } from "./AuthConfigContainer";
import ClientIDField from "./ClientIDField";
import ClientSecretField from "./ClientSecretField";
import ConfigBoxWithToggleField from "./ConfigBoxWithToggleField";
-import ConfigDescription from "./ConfigDescription";
import RedirectField from "./RedirectField";
import RegistrationField from "./RegistrationField";
import TargetFilterField from "./TargetFilterField";
@@ -74,14 +74,14 @@ const OIDCConfig: FunctionComponent = ({
- Provider Name
+ Provider name
-
+
The provider of the OIDC integration. This will be used when the
name of the provider needs to be displayed, e.g. “Log in with
{" "}”
-
+
= ({
autoCapitalize="off"
spellCheck={false}
color={colorFromMeta(meta)}
+ fullWidth
{...input}
/>
@@ -119,11 +120,11 @@ const OIDCConfig: FunctionComponent = ({
Issuer
-
+
After entering your Issuer information, click the Discover
button to have Coral complete the remaining fields. You may also
enter the information manually
-
+
= ({
autoCapitalize="off"
spellCheck={false}
color={colorFromMeta(meta)}
+ fullWidth
{...input}
/>
diff --git a/src/core/client/admin/routes/Configure/sections/Auth/RegistrationField.tsx b/src/core/client/admin/routes/Configure/sections/Auth/RegistrationField.tsx
index 6eff2c5ac..90946b3e8 100644
--- a/src/core/client/admin/routes/Configure/sections/Auth/RegistrationField.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Auth/RegistrationField.tsx
@@ -2,9 +2,12 @@ import { Localized } from "fluent-react/compat";
import React, { FunctionComponent } from "react";
import { Field } from "react-final-form";
-import { CheckBox, FormField, InputLabel } from "coral-ui/components";
-
-import ConfigDescription from "./ConfigDescription";
+import {
+ CheckBox,
+ FormField,
+ InputDescription,
+ InputLabel,
+} from "coral-ui/components";
interface Props {
name: string;
@@ -17,9 +20,9 @@ const RegistrationField: FunctionComponent = ({ name, disabled }) => (
Registration
-
+
Allow users to create a new account with this provider.
-
+
diff --git a/src/core/client/admin/routes/Configure/sections/Auth/SSOKeyField.css b/src/core/client/admin/routes/Configure/sections/Auth/SSOKeyField.css
index 4d3dce4eb..1b2f8e3c5 100644
--- a/src/core/client/admin/routes/Configure/sections/Auth/SSOKeyField.css
+++ b/src/core/client/admin/routes/Configure/sections/Auth/SSOKeyField.css
@@ -1,7 +1,10 @@
+.root {
+ padding-bottom: var(--spacing-4);
+}
+
.keyGenerated {
composes: button from "coral-ui/shared/typography.css";
color: var(--palette-text-secondary);
- width: calc(29 * var(--mini-unit));
flex-shrink: 0;
}
@@ -9,8 +12,18 @@
color: var(--palette-text-secondary);
flex-shrink: 0;
padding-top: 3px;
+ padding-right: var(--spacing-1);
}
.warn {
color: var(--palette-text-secondary);
}
+
+.warningSection {
+ padding-top: var(--spacing-1);
+ padding-bottom: var(--spacing-1);
+}
+
+.regenerateButton {
+ float: right;
+}
diff --git a/src/core/client/admin/routes/Configure/sections/Auth/SSOKeyField.tsx b/src/core/client/admin/routes/Configure/sections/Auth/SSOKeyField.tsx
index 86272d0b6..738d23cfa 100644
--- a/src/core/client/admin/routes/Configure/sections/Auth/SSOKeyField.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Auth/SSOKeyField.tsx
@@ -26,46 +26,49 @@ const SSOKeyField: FunctionComponent = ({
disabled,
onRegenerate,
}) => (
-
+ Key
-
-
-
-
-
-
-
-
-
- KEY GENERATED AT: {keyGeneratedAt}
-
-
- warning
-
-
- Regenerating a key will invalidate any existing user sessions, and all
- signed-in users will be signed out
-
-
-
+
+
+
+ KEY GENERATED AT: {keyGeneratedAt}
+
+
+
+
+ warning
+
+
+ Regenerating a key will invalidate any existing user sessions, and
+ all signed-in users will be signed out
+
+
+
+
+
+
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/Email/EmailConfigContainer.tsx b/src/core/client/admin/routes/Configure/sections/Email/EmailConfigContainer.tsx
index 34d893348..684ba45a2 100644
--- a/src/core/client/admin/routes/Configure/sections/Email/EmailConfigContainer.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Email/EmailConfigContainer.tsx
@@ -19,6 +19,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import FromContainer from "./FromContainer";
import SMTPContainer from "./SMTPContainer";
@@ -92,7 +93,12 @@ class EmailConfigContainer extends React.Component {
-
+
Enabled
@@ -103,7 +109,7 @@ class EmailConfigContainer extends React.Component {
{({ input: { value } }) => (
- <>
+ {
disabled={submitting || !value}
onInitValues={this.handleOnInitValues}
/>
- >
+
)}
diff --git a/src/core/client/admin/routes/Configure/sections/Email/SMTP.tsx b/src/core/client/admin/routes/Configure/sections/Email/SMTP.tsx
index 7be8b9ab4..03a8aff72 100644
--- a/src/core/client/admin/routes/Configure/sections/Email/SMTP.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Email/SMTP.tsx
@@ -97,7 +97,7 @@ const SMTP: FunctionComponent = ({ disabled }) => (
- SMTP Authentication
+ SMTP authentication = ({ disabled }) => (
}
>
- Closed Stream Message
+ Closed comment stream message
- }
- >
-
- Write a message to appear after a story is closed for commenting.
-
-
-
- {({ input, meta }) => (
- <>
- }>
-
-
-
- >
- )}
-
+
+
+ }
+ >
+
+ Write a message to appear after a story is closed for commenting.
+
+
+
+ {({ input, meta }) => (
+ <>
+ }>
+
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/General/ClosingCommentStreamsConfig.tsx b/src/core/client/admin/routes/Configure/sections/General/ClosingCommentStreamsConfig.tsx
index 97c907664..0e2fcc971 100644
--- a/src/core/client/admin/routes/Configure/sections/General/ClosingCommentStreamsConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/General/ClosingCommentStreamsConfig.tsx
@@ -18,6 +18,7 @@ import {
import Header from "../../Header";
import OnOffField from "../../OnOffField";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
interface Props {
@@ -29,51 +30,55 @@ const ClosingCommentStreamsConfig: FunctionComponent = ({
}) => (
}>
- Closing Comment Streams
+ Closing comment streams
- }
- >
-
- Set comment streams to close after a defined period of time after a
- story’s publication
-
-
- }>
-
- Close Comments Automatically
-
-
-
- }>
-
- Close Comments After
-
-
-
+ }
>
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
-
+
+ Set comment streams to close after a defined period of time after a
+ story’s publication
+
+
+ }>
+
+
+ Close comments automatically
+
+
+
+
+ }>
+
+ Close comments after
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/General/CommentEditingConfig.tsx b/src/core/client/admin/routes/Configure/sections/General/CommentEditingConfig.tsx
index 46c40be7f..6778156a6 100644
--- a/src/core/client/admin/routes/Configure/sections/General/CommentEditingConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/General/CommentEditingConfig.tsx
@@ -17,6 +17,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
interface Props {
@@ -26,46 +27,48 @@ interface Props {
const CommentEditingConfig: FunctionComponent = ({ disabled }) => (
- Comment Editing
+ Comment editing
- }
- >
-
- Set a limit on how long commenters have to edit their comments sitewide.
- Edited comments are marked as (Edited) on the comment stream and the
- moderation panel.
-
-
-
- }>
-
- Comment Edit Timeframe
-
-
+ }
>
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
-
+
+ Set a limit on how long commenters have to edit their comments
+ sitewide. Edited comments are marked as (Edited) on the comment stream
+ and the moderation panel.
+
+
+
+ }>
+
+ Comment edit timeframe
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/General/CommentLengthConfig.tsx b/src/core/client/admin/routes/Configure/sections/General/CommentLengthConfig.tsx
index 06eb640b9..4c92924e5 100644
--- a/src/core/client/admin/routes/Configure/sections/General/CommentLengthConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/General/CommentLengthConfig.tsx
@@ -20,7 +20,9 @@ import Header from "../../Header";
import OnOffField from "../../OnOffField";
import { formatEmpty, parseEmptyAsNull } from "coral-framework/lib/form";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
+
import styles from "./CommentLengthConfig.css";
const validateMaxLongerThanMin = createValidator(
@@ -41,113 +43,116 @@ interface Props {
const CommentLengthConfig: FunctionComponent = ({ disabled }) => (
}>
- Comment Length
+ Comment length
- }
- >
-
- Set a limit on the length of comments sitewide
-
-
-
-
-
- Limit Comment Length
-
-
-
-
-
-
-
- Minimum Comment Length
-
-
-
+ }
>
- {({ input, meta }) => (
- <>
-
-
- Characters
-
- }
- placeholder={"No limit"}
- textAlignCenter
- />
-
-
- >
- )}
-
-
-
-
-
- Maximum Comment Length
-
+
+ Set minimum and maximum comment length requirements. Blank spaces at
+ the beginning and the end of a comment will be trimmed.
+
-
- {({ input, meta }) => (
- <>
-
-
- Characters
-
- }
- placeholder={"No limit"}
- textAlignCenter
- {...input}
- />
-
-
- >
- )}
-
-
+
+
+
+ Limit comment length
+
+
+
+
+
+
+
+ Minimum comment length
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ Characters
+
+ }
+ placeholder={"No limit"}
+ textAlignCenter
+ />
+
+
+ >
+ )}
+
+
+
+
+
+ Maximum comment length
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ Characters
+
+ }
+ placeholder={"No limit"}
+ textAlignCenter
+ {...input}
+ />
+
+
+ >
+ )}
+
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/General/GuidelinesConfig.tsx b/src/core/client/admin/routes/Configure/sections/General/GuidelinesConfig.tsx
index a3dc77c38..aa86ef465 100644
--- a/src/core/client/admin/routes/Configure/sections/General/GuidelinesConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/General/GuidelinesConfig.tsx
@@ -8,13 +8,14 @@ import {
FieldSet,
FormField,
HorizontalGutter,
+ InputDescription,
InputLabel,
Spinner,
- Typography,
} from "coral-ui/components";
import Header from "../../Header";
import OnOffField from "../../OnOffField";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
interface Props {
@@ -24,51 +25,52 @@ interface Props {
const GuidelinesConfig: FunctionComponent = ({ disabled }) => (
}>
- Community Guidelines Summary
+ Community guidelines summary
+
+ }>
+
+
+ Show community guidelines summary
+
+
+
+
- }>
-
-
- Show Community Guidelines Summary
-
-
-
-
+
+
+
+ Community guidelines summary
+
+
+ }
+ externalLink={}
+ >
+
+ Write a summary of your community guidelines that will appear at the
+ top of each comment stream sitewide. Your summary can be formatted
+ using Markdown Syntax. More information on how to use Markdown can
+ be found here.
+
+
+
-
-
-
- Community Guidelines Summary
-
-
- }
- externalLink={}
- >
-
- Write a summary of your community guidelines that will appear at the
- top of each comment stream sitewide. Your summary can be formatted
- using Markdown Syntax. More information on how to use Markdown can be
- found here.
-
-
-
-
-
- {({ input, meta }) => (
- <>
- }>
-
-
-
- >
- )}
-
+
+ {({ input, meta }) => (
+ <>
+ }>
+
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/General/LocaleConfigContainer.tsx b/src/core/client/admin/routes/Configure/sections/General/LocaleConfigContainer.tsx
index 182db117f..0363239e0 100644
--- a/src/core/client/admin/routes/Configure/sections/General/LocaleConfigContainer.tsx
+++ b/src/core/client/admin/routes/Configure/sections/General/LocaleConfigContainer.tsx
@@ -10,6 +10,7 @@ import { required } from "coral-framework/lib/validation";
import { FormField, HorizontalGutter, Typography } from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
interface Props {
@@ -28,26 +29,28 @@ const LocaleConfigContainer: React.FunctionComponent = props => {
Language
- }
- >
-
- Choose the language for your Coral community.
-
-
-
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
+
+ }
+ >
+
+ Choose the language for your Coral community.
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/General/ReactionConfig.tsx b/src/core/client/admin/routes/Configure/sections/General/ReactionConfig.tsx
index ace016784..4021e9a45 100644
--- a/src/core/client/admin/routes/Configure/sections/General/ReactionConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/General/ReactionConfig.tsx
@@ -18,6 +18,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
import styles from "./ReactionConfig.css";
@@ -32,136 +33,141 @@ const ReactionsConfig: FunctionComponent = ({ disabled, settings }) => (
Reactions
- }>
-
- Allow your community to engage with one another and express themselves
- with one-click reactions. By default, Coral allows commenters to
- "Respect" each other's comments, but you may customize reaction text
- based on the needs of your community.
-
-
-
-
-
- {({ input, meta }) => (
-
-
-
- Reaction label
-
-
-
-
-
-
-
-
- Preview
-
- null}
- />
-
-
- )}
-
-
-
-
- {({ input, meta }) => (
-
-
-
- Active reaction label
-
-
-
-
-
-
-
-
- Preview
-
- null}
- />
-
-
- )}
-
-
-
-
- {({ input, meta }) => (
-
-
-
- Sort label
-
-
-
-
-
-
-
-
- Preview
-
-
-
- Sort By
+
+ }
+ >
+
+ Allow your community to engage with one another and express themselves
+ with one-click reactions. By default, Coral allows commenters to
+ "Respect" each other's comments, but you may customize reaction text
+ based on the needs of your community.
+
+
+
+
+
+ {({ input, meta }) => (
+
+
+
+ Reaction label
-
- {" "}
-
-
-
-
- )}
-
-
-
+
+
+
+
+
+
+
+ Preview
+
+ null}
+ />
+
+
+ )}
+
+
+
+
+ {({ input, meta }) => (
+
+
+
+ Active reaction label
+
+
+
+
+
+
+
+
+ Preview
+
+ null}
+ />
+
+
+ )}
+
+
+
+
+ {({ input, meta }) => (
+
+
+
+ Sort label
+
+
+
+
+
+
+
+
+ Preview
+
+
+
+ Sort By
+
+
+ {" "}
+
+
+
+
+ )}
+
+
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/General/SitewideCommentingConfig.tsx b/src/core/client/admin/routes/Configure/sections/General/SitewideCommentingConfig.tsx
index cfb1a4c57..459f93640 100644
--- a/src/core/client/admin/routes/Configure/sections/General/SitewideCommentingConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/General/SitewideCommentingConfig.tsx
@@ -14,6 +14,7 @@ import {
import Header from "../../Header";
import OnOffField from "../../OnOffField";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
interface Props {
@@ -23,65 +24,69 @@ interface Props {
const SitewideCommentingConfig: FunctionComponent = ({ disabled }) => (
- Sitewide Commenting
+ Sitewide commenting
-
-
- Open or close comment streams for new comments sitewide. When new
- comments are turned off sitewide, new comments cannot be submitted, but
- existing comments can continue to receive “Respect” reactions, be
- reported, and be shared.
-
-
-
-
-
- Enable New Comments Sitewide
+
+
+
+ Open or close comment streams for new comments sitewide. When new
+ comments are turned off sitewide, new comments cannot be submitted,
+ but existing comments can continue to receive “Respect” reactions, be
+ reported, and be shared.
+
-
- On - Comment streams opened for new comments
-
- }
- offLabel={
-
- Off - Comment streams closed for new comments
-
- }
- />
-
-
-
-
- Sitewide Closed Comments Message
-
-
-
-
- Write a message that will be displayed when comment streams are closed
- sitewide
-
-
-
+
+
+
+ Enable new comments sitewide
+
+
+
+ On - Comment streams opened for new comments
+
+ }
+ offLabel={
+
+ Off - Comment streams closed for new comments
+
+ }
+ />
+
-
- {({ input, meta }) => (
- <>
- }>
-
-
-
- >
- )}
-
+
+
+
+ Sitewide closed comments message
+
+
+
+
+ Write a message that will be displayed when comment streams are
+ closed sitewide
+
+
+
+
+
+ {({ input, meta }) => (
+ <>
+ }>
+
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/Moderation/APIKeyField.tsx b/src/core/client/admin/routes/Configure/sections/Moderation/APIKeyField.tsx
index 8624f6471..50dbe40c5 100644
--- a/src/core/client/admin/routes/Configure/sections/Moderation/APIKeyField.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Moderation/APIKeyField.tsx
@@ -26,7 +26,7 @@ const APIKeyField: FunctionComponent = ({
<>
- API Key
+ API key
= ({
hidePasswordTitle="Show API Key"
showPasswordTitle="Hide API Key"
color={colorFromMeta(meta)}
+ fullWidth
{...input}
/>
diff --git a/src/core/client/admin/routes/Configure/sections/Moderation/AkismetConfig.tsx b/src/core/client/admin/routes/Configure/sections/Moderation/AkismetConfig.tsx
index f6d803c21..9767d162f 100644
--- a/src/core/client/admin/routes/Configure/sections/Moderation/AkismetConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Moderation/AkismetConfig.tsx
@@ -21,6 +21,7 @@ import {
import ConfigurationSubHeader from "../../ConfigurationSubHeader";
import Header from "../../Header";
import OnOffField from "../../OnOffField";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
import APIKeyField from "./APIKeyField";
@@ -33,76 +34,83 @@ const isEnabled: Condition = (value, values) =>
const AkismetConfig: FunctionComponent = ({ disabled }) => {
return (
- }>
+ }
+ data-testid="akismet-config"
+ >
- Akismet Spam Detection Filter
+ Spam detection filter
- }
- >
-
- Submitted comments are passed to the Akismet API for spam detection.
- If a comment is determined to be spam, it will prompt the user,
- indicating that the comment might be considered spam. If the user
- continues after this point with the still spam-like comment, the
- comment will be marked as containing spam, will not be published and
- are placed in the Pending Queue for review by a moderator. If approved
- by a moderator, the comment will be published.
-
-
-
- }>
-
- Spam Detection Filter
-
-
-
-
-
+ }
+ id="configure-moderation-akismet-explanation"
+ strong={}
>
-
- Note: You must add your active domain(s) in your Akismet account:
- https://akismet.com/account/
+
+ Submitted comments are passed to the Akismet API for spam detection.
+ If a comment is determined to be spam, it will prompt the user,
+ indicating that the comment might be considered spam. If the user
+ continues after this point with the still spam-like comment, the
+ comment will be marked as containing spam, will not be published and
+ are placed in the Pending Queue for review by a moderator. If
+ approved by a moderator, the comment will be published.
-
+
+ }
+ >
+
+ Note: You must add your active domain(s) in your Akismet account:
+ https://akismet.com/account/
+
+
+
+
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
-
+ />
+
+
+
+
+ Site URL
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
+
);
};
diff --git a/src/core/client/admin/routes/Configure/sections/Moderation/ModerationConfig.tsx b/src/core/client/admin/routes/Configure/sections/Moderation/ModerationConfig.tsx
index 1ebba12f2..5fd853967 100644
--- a/src/core/client/admin/routes/Configure/sections/Moderation/ModerationConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Moderation/ModerationConfig.tsx
@@ -23,12 +23,12 @@ const ModerationConfig: FunctionComponent = ({
onInitValues,
}) => (
-
-
const PerspectiveConfig: FunctionComponent = ({ disabled }) => {
return (
- }>
+ }
+ data-testid="perspective-container"
+ >
- Perspective Toxic Comment Filter
+ Toxic comment filter
- }
- >
-
- Using the Perspective API, the Toxic Comment filter warns users when
- comments exceed the predefined toxicity threshold. Comments with a
- toxicity score above the threshold will not be published and are
- placed in the Pending Queue for review by a moderator. If approved by
- a moderator, the comment will be published.
-
-
-
- }>
-
- Toxic Comment Filter
-
-
-
-
-
-
-
- Toxicity Threshold
-
-
+ }
>
-
- This value can be set a percentage between 0 and 100. This number
- represents the likelihood that a comment is toxic, according to
- Perspective API. By default the threshold is set to $default.
-
-
-
- {({ input, meta }) => (
- <>
- %}
- placeholder={TOXICITY_THRESHOLD_DEFAULT.toString()}
- textAlignCenter
- {...input}
- />
-
- >
- )}
-
-
-
-
-
-
- Toxicity Model
-
-
-
- }
- $default={TOXICITY_MODEL_DEFAULT}
- >
-
- Choose your Perspective Model. The default is $default. You can find
- out more about model choices here.
-
-
-
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
-
-
- }>
-
-
- Allow Google to Store Comment Data
-
-
-
-
- Stored comments will be used for future research and community model
- building purposes to improve the API over time.
-
-
-
-
-
-
-
-
- }
- >
-
- For additional information on how to set up the Perspective Toxic
- Comment Filter please visit:
- https://github.com/conversationai/perspectiveapi/blob/master/quickstart.md
+
+ Using the Perspective API, the Toxic Comment filter warns users when
+ comments exceed the predefined toxicity threshold. Comments with a
+ toxicity score above the threshold will not be published and are
+ placed in the Pending Queue for review by a moderator. If approved
+ by a moderator, the comment will be published.
-
-
-
-
-
- Custom Endpoint
-
-
-
-
- By default the endpoint is set to $default. You may override this
- here
-
-
-
- {({ input, meta }) => (
- <>
- }>
+
+ Toxic comment filter
+
+
+
+
+
+
+
+ Toxicity threshold
+
+
+
+
+ This value can be set a percentage between 0 and 100. This number
+ represents the likelihood that a comment is toxic, according to
+ Perspective API. By default the threshold is set to $default.
+
+
+
+ {({ input, meta }) => (
+ <>
+ %}
+ placeholder={TOXICITY_THRESHOLD_DEFAULT.toString()}
+ textAlignCenter
+ {...input}
+ />
+
+ >
+ )}
+
+
+
+
+
+
+ Toxicity model
+
+
+
-
- >
- )}
-
-
+ }
+ $default={TOXICITY_MODEL_DEFAULT}
+ >
+
+ Choose your Perspective Model. The default is $default. You can
+ find out more about model choices here.
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
+
+ }>
+
+
+ Allow Google to store comment data
+
+
+
+
+ Stored comments will be used for future research and community
+ model building purposes to improve the API over time.
+
+
+
+
+
+
+
+
+ }
+ >
+
+ For additional information on how to set up the Perspective Toxic
+ Comment Filter please visit:
+ https://github.com/conversationai/perspectiveapi/blob/master/quickstart.md
+
+
+
+
+
+
+
+ Custom endpoint
+
+
+
+
+ By default the endpoint is set to $default. You may override this
+ here
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
+
);
};
diff --git a/src/core/client/admin/routes/Configure/sections/Moderation/PreModerationConfig.tsx b/src/core/client/admin/routes/Configure/sections/Moderation/PreModerationConfig.tsx
index 839796c92..39ea86a8d 100644
--- a/src/core/client/admin/routes/Configure/sections/Moderation/PreModerationConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Moderation/PreModerationConfig.tsx
@@ -12,6 +12,7 @@ import {
import Header from "../../Header";
import OnOffField from "../../OnOffField";
+import SectionContent from "../../SectionContent";
interface Props {
disabled: boolean;
@@ -31,33 +32,35 @@ const PreModerationConfig: FunctionComponent = ({ disabled }) => {
Pre-moderation
-
-
- When pre-moderation is turned on, comments will not be published
- unless approved by a moderator.
-
-
- }>
-
-
- Pre-moderate all comments sitewide
-
+
+
+
+ When pre-moderation is turned on, comments will not be published
+ unless approved by a moderator.
+
-
-
- }>
-
-
- Pre-moderate comments containing links sitewide
-
-
-
-
+ }>
+
+
+ Pre-moderate all comments sitewide
+
+
+
+
+ }>
+
+
+ Pre-moderate comments containing links sitewide
+
+
+
+
+
);
};
diff --git a/src/core/client/admin/routes/Configure/sections/Moderation/RecentCommentHistoryConfig.tsx b/src/core/client/admin/routes/Configure/sections/Moderation/RecentCommentHistoryConfig.tsx
index d446dbb2b..b616b9ef9 100644
--- a/src/core/client/admin/routes/Configure/sections/Moderation/RecentCommentHistoryConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Moderation/RecentCommentHistoryConfig.tsx
@@ -26,6 +26,7 @@ import {
import Header from "../../Header";
import OnOffField from "../../OnOffField";
+import SectionContent from "../../SectionContent";
import styles from "./RecentCommentHistoryConfig.css";
@@ -37,97 +38,97 @@ const RecentCommentHistoryConfig: FunctionComponent = ({ disabled }) => {
return (
}>
- Recent comment history
+ Recent history
- }>
-
-
- Recent comment history timeframe
-
-
-
-
- Time period over which a commenter's rejection rate is calcualted
- and submitted comments are counted.
-
-
-
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
-
- }>
-
-
- Recent comment history filter
-
-
- }
- >
-
- Prevents repeat offenders from publishing comments without approval.
- After a commenter's rejection rate rises above the defined threshold
- below, their next submitted comments are{" "}
- sent to Pending for moderator approval. The filter
- is removed when their rejection rate falls below the threshold.
-
-
-
-
-
-
- Rejection rate threshold
-
-
-
- Calculated by the number of rejected comments divided by the sum of
- a commenter’s rejected and published comments, over the recent
- comment history timeframe (does not include comments pending for
- toxicity, spam or pre-moderation.)
-
-
-
- {({ input, meta }) => (
- <>
- %}
- textAlignCenter
- {...input}
- />
-
- >
- )}
-
-
+
+ }>
+
+
+ Recent comment history time period
+
+
+
+
+ The period of time over which a user’s rejection rate is
+ calculated.
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
+ }>
+
+ Recent history filter
+
+ }
+ >
+
+ Prevents repeat offenders from publishing comments without
+ approval. After a commenter's rejection rate rises above the
+ defined threshold below, their next submitted comments are{" "}
+ sent to Pending for moderator approval. The
+ filter is removed when their rejection rate falls below the
+ threshold.
+
+
+
+
+
+
+ Rejection rate threshold
+
+
+
+ A user’s rejected comments divided by their published comments,
+ over the time period set below (does not include comments pending
+ for toxicity, spam or pre-moderation.)
+
+
+
+ {({ input, meta }) => (
+ <>
+ %}
+ textAlignCenter
+ {...input}
+ />
+
+ >
+ )}
+
+
+
);
};
diff --git a/src/core/client/admin/routes/Configure/sections/Moderation/__snapshots__/ModerationConfig.spec.tsx.snap b/src/core/client/admin/routes/Configure/sections/Moderation/__snapshots__/ModerationConfig.spec.tsx.snap
index 4ea3b8256..b2ffe1889 100644
--- a/src/core/client/admin/routes/Configure/sections/Moderation/__snapshots__/ModerationConfig.spec.tsx.snap
+++ b/src/core/client/admin/routes/Configure/sections/Moderation/__snapshots__/ModerationConfig.spec.tsx.snap
@@ -5,12 +5,12 @@ exports[`renders correctly 1`] = `
data-testid="configure-moderationContainer"
size="double"
>
-
- = ({ disabled }) => (
}
>
- Organization Email
+ Organization email
- }
- >
- This Email will be used
-
-
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
+
+ }
+ >
+
+ This email address will be used as in emails and across the platform
+ for community members to get in touch with the organization should
+ they have any questions about the status of their accounts or
+ moderation questions.
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/Organization/OrganizationNameConfig.tsx b/src/core/client/admin/routes/Configure/sections/Organization/OrganizationNameConfig.tsx
index 7c3f950e9..5bbd3c4f9 100644
--- a/src/core/client/admin/routes/Configure/sections/Organization/OrganizationNameConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Organization/OrganizationNameConfig.tsx
@@ -11,6 +11,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
interface Props {
@@ -26,35 +27,37 @@ const OrganizationNameConfig: FunctionComponent = ({ disabled }) => (
}
>
- Organization Name
+ Organization name
- }
- >
-
- Your organization name will appear on emails sent by Coral to your
- community and organization members
-
-
-
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
+
+ }
+ >
+
+ Your organization name will appear on emails sent by Coral to your
+ community and organization members
+
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/Organization/OrganizationURLConfig.tsx b/src/core/client/admin/routes/Configure/sections/Organization/OrganizationURLConfig.tsx
index 74ee40140..255c262d5 100644
--- a/src/core/client/admin/routes/Configure/sections/Organization/OrganizationURLConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/Organization/OrganizationURLConfig.tsx
@@ -15,6 +15,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import ValidationMessage from "../../ValidationMessage";
interface Props {
@@ -33,29 +34,34 @@ const OrganizationURLConfig: FunctionComponent = ({ disabled }) => (
Organization URL
- }>
- This URL will be used
-
-
- {({ input, meta }) => (
- <>
-
-
- >
- )}
-
+
+ }
+ >
+ This URL will be used
+
+
+ {({ input, meta }) => (
+ <>
+
+
+ >
+ )}
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/WordList/BannedWordListConfig.tsx b/src/core/client/admin/routes/Configure/sections/WordList/BannedWordListConfig.tsx
index 46c988268..03298b38a 100644
--- a/src/core/client/admin/routes/Configure/sections/WordList/BannedWordListConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/WordList/BannedWordListConfig.tsx
@@ -11,6 +11,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import WordListTextArea from "./WordListTextArea";
import styles from "./BannedWordListConfig.css";
@@ -22,41 +23,43 @@ interface Props {
const BannedWordListConfig: FunctionComponent = ({ disabled }) => (
- Banned Words and Phrases
-
- }>
-
- Comments containing a word or phrase in the banned words list are
- automatically rejected and are not published.
-
+ Banned words and phrases
+
+ }>
+
+ Comments containing a word or phrase in the banned words list are
+ automatically rejected and are not published.
+
+
-
-
-
- Banned Word List
-
-
- }
- externalLink={}
- >
-
- Separate banned words or phrases with a new line. Attempting to copy
- and paste a comma separated list? Learn how to convert your list to a
- new line separated list.
-
-
-
-
-
-
+
+
+
+ Banned word list
+
+
+ }
+ externalLink={}
+ >
+
+ Separate banned words or phrases with a new line. Attempting to copy
+ and paste a comma separated list? Learn how to convert your list to
+ a new line separated list.
+
+
+
+
+
+
+
);
diff --git a/src/core/client/admin/routes/Configure/sections/WordList/SuspectWordListConfig.tsx b/src/core/client/admin/routes/Configure/sections/WordList/SuspectWordListConfig.tsx
index 2b03cf2f2..941f968ae 100644
--- a/src/core/client/admin/routes/Configure/sections/WordList/SuspectWordListConfig.tsx
+++ b/src/core/client/admin/routes/Configure/sections/WordList/SuspectWordListConfig.tsx
@@ -11,6 +11,7 @@ import {
} from "coral-ui/components";
import Header from "../../Header";
+import SectionContent from "../../SectionContent";
import WordListTextArea from "./WordListTextArea";
import styles from "./SuspectWordListConfig.css";
@@ -22,42 +23,47 @@ interface Props {
const SuspectWordListConfig: FunctionComponent = ({ disabled }) => (
- Suspect Words and Phrases
+ Suspect words and phrases
- }>
-
- Comments containing a word or phrase in the Suspect Words List are
- placed into the Reported Queue for moderator review and are published
- (if comments are not pre-moderated).
-
-
-
-
-
-
- Suspect Word List
-
-
+ }
- externalLink={}
>
-
- Separate suspect words or phrases with a new line. Attempting to copy
- and paste a comma separated list? Learn how to convert your list to a
- new line separated list.
-
+
+ Comments containing a word or phrase in the Suspect Words List are
+ placed into the Reported Queue for moderator review and are published
+ (if comments are not pre-moderated).
+
-
-
-
-
+
+
+
+
+ Suspect word list
+
+
+ }
+ externalLink={}
+ >
+
+ Separate suspect words or phrases with a new line. Attempting to
+ copy and paste a comma separated list? Learn how to convert your
+ list to a new line separated list.
+
+
+
+
+
+
+
);
diff --git a/src/core/client/admin/test/auth/__snapshots__/createPassword.spec.tsx.snap b/src/core/client/admin/test/auth/__snapshots__/createPassword.spec.tsx.snap
index 2db89ea4e..2bb6d2679 100644
--- a/src/core/client/admin/test/auth/__snapshots__/createPassword.spec.tsx.snap
+++ b/src/core/client/admin/test/auth/__snapshots__/createPassword.spec.tsx.snap
@@ -24,7 +24,7 @@ we require users to create a password.
Password
Must be at least 8 characters
@@ -151,7 +151,7 @@ we require users to create a password.
Password
Must be at least 8 characters
@@ -241,7 +241,7 @@ we require users to create a password.
Password