diff --git a/client/src/core/client/admin/components/ModerateCard/ModerateCard.tsx b/client/src/core/client/admin/components/ModerateCard/ModerateCard.tsx index d71abca478..f1379eebe5 100644 --- a/client/src/core/client/admin/components/ModerateCard/ModerateCard.tsx +++ b/client/src/core/client/admin/components/ModerateCard/ModerateCard.tsx @@ -1,4 +1,3 @@ -/* eslint-disable */ import { Localized } from "@fluent/react/compat"; import cn from "classnames"; import key from "keymaster"; @@ -9,7 +8,6 @@ import React, { useEffect, useMemo, useRef, - useState, } from "react"; import { MediaContainer } from "coral-admin/components/MediaContainer"; @@ -43,12 +41,9 @@ import MarkersContainer from "./MarkersContainer"; import RejectButton from "./RejectButton"; import { RejectCommentReasonInput } from "coral-stream/__generated__/RejectCommentMutation.graphql"; -import { default as ModerationReasonComponent, Props as ModerationReasonProps } from "../ModerationReason/ModerationReason"; +import ModerationReason from "../ModerationReason/ModerationReason"; import styles from "./ModerateCard.css"; -const ModerationReason: FunctionComponent = (props) => - ; - interface Props { id: string; username: string; @@ -187,8 +182,6 @@ const ModerateCard: FunctionComponent = ({ } }, [selected, div]); - const [showModerationReason, setShowModerationReason] = useState(false); - const commentBody = useMemo( () => deleted ? ( @@ -359,32 +352,32 @@ const ModerateCard: FunctionComponent = ({ { return ( - + - + ); }} - placement="bottom-end" + placement="bottom-start" > - {({ toggleVisibility, visible }) => { + {({ toggleVisibility, visible, ref }) => { return ( { - setShowModerationReason(!showModerationReason);// toggleVisibility(); - } - : onReject - } + open={visible} + onClick={dsaFeaturesEnabled ? toggleVisibility : onReject} invert={status === "rejected"} disabled={ status === "rejected" || @@ -418,7 +411,6 @@ const ModerateCard: FunctionComponent = ({ [styles.miniButton]: mini, })} /> - {showModerationReason && setShowModerationReason(false)} /> } {moderatedBy} diff --git a/client/src/core/client/admin/components/ModerateCard/RejectButton.tsx b/client/src/core/client/admin/components/ModerateCard/RejectButton.tsx index bb07e5de6b..34af51ee2f 100644 --- a/client/src/core/client/admin/components/ModerateCard/RejectButton.tsx +++ b/client/src/core/client/admin/components/ModerateCard/RejectButton.tsx @@ -11,6 +11,7 @@ import { } from "coral-ui/components/icons"; import { BaseButton } from "coral-ui/components/v2"; +import { withForwardRef } from "coral-ui/hocs"; import styles from "./RejectButton.css"; interface Props extends Omit, "ref"> { @@ -18,6 +19,7 @@ interface Props extends Omit, "ref"> { open?: boolean; invert?: boolean; readOnly?: boolean; + forwardRef: React.Ref; } const RejectButton: FunctionComponent = ({ @@ -26,11 +28,13 @@ const RejectButton: FunctionComponent = ({ className, open = false, toggle = false, + forwardRef, ...rest }) => ( = ({ ); -export default RejectButton; +export default withForwardRef(RejectButton); diff --git a/client/src/core/client/admin/components/ModerationReason/ModerationReason.tsx b/client/src/core/client/admin/components/ModerationReason/ModerationReason.tsx index dcbcf54691..9f7d74e8cd 100644 --- a/client/src/core/client/admin/components/ModerationReason/ModerationReason.tsx +++ b/client/src/core/client/admin/components/ModerationReason/ModerationReason.tsx @@ -18,12 +18,17 @@ type ReasonCode = GQLREJECTION_REASON_CODE; export interface Props { onCancel: () => void; onReason: (reason: Reason) => void; + id: string; } -const ModerationReason: FunctionComponent = ({ onCancel, onReason }) => { +const ModerationReason: FunctionComponent = ({ + onCancel, + onReason, + id, +}) => { const [view, setView] = useState<"REASON" | "EXPLANATION">("REASON"); const [reasonCode, setReasonCode] = useState(null); - // TODO (marcushaddon): will we ever submit legal grounds via this component? + const [legalGrounds] = useState(null); const [detailedExplanation, setDetailedExplanation] = useState( null @@ -41,7 +46,7 @@ const ModerationReason: FunctionComponent = ({ onCancel, onReason }) => { }, [reasonCode, legalGrounds, detailedExplanation, onReason]); return ( - + {view === "REASON" ? ( = ({ onCancel, onReason }) => {