Files
frontend-app-discussions/src/discussions/posts/post/ClosePostReasonModal.jsx
Kshitij Sobti b6da098331 feat: Add support for specifying post close reasons [BD-38] [TNL-8843] [BB-5012] (#96)
Adds support for specifying an edit reason when a moderator edits a user's post.

Co-authored-by: Felipe Trzaskowski <felipe.trzaskowski@gmail.com>
2022-04-01 07:56:25 +00:00

87 lines
2.4 KiB
JavaScript

import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { useSelector } from 'react-redux';
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
import {
ActionRow,
Button,
Form,
ModalDialog,
} from '@edx/paragon';
import { selectModerationSettings } from '../../data/selectors';
import messages from './messages';
function ClosePostReasonModal({
intl,
isOpen,
onCancel,
onConfirm,
}) {
const [reasonCode, setReasonCode] = useState(null);
const { postCloseReasons } = useSelector(selectModerationSettings);
const onChange = event => {
if (event.target.value) {
setReasonCode(event.target.value);
} else {
setReasonCode(null);
}
};
return (
<ModalDialog
title={intl.formatMessage(messages.closePostModalTitle)}
isOpen={isOpen}
onClose={onCancel}
hasCloseButton={false}
>
<ModalDialog.Header>
<ModalDialog.Title>
{intl.formatMessage(messages.closePostModalTitle)}
</ModalDialog.Title>
</ModalDialog.Header>
<ModalDialog.Body>
<p>{intl.formatMessage(messages.closePostModalText)}</p>
<Form.Group>
<Form.Control
name="reasonCode"
as="select"
value={reasonCode || ''}
onChange={onChange}
aria-describedby="closeReasonCodeInput"
floatingLabel={intl.formatMessage(messages.closePostModalReasonCodeInput)}
>
<option key="empty" value="">---</option>
{postCloseReasons.map(({ code, label }) => (
<option key={code} value={code}>{label}</option>
))}
</Form.Control>
</Form.Group>
</ModalDialog.Body>
<ModalDialog.Footer>
<ActionRow>
<ModalDialog.CloseButton variant="tertiary">
{intl.formatMessage(messages.closePostModalButtonCancel)}
</ModalDialog.CloseButton>
<Button variant="primary" onClick={() => onConfirm(reasonCode)}>
{intl.formatMessage(messages.closePostModalButtonConfirm)}
</Button>
</ActionRow>
</ModalDialog.Footer>
</ModalDialog>
);
}
ClosePostReasonModal.propTypes = {
intl: intlShape.isRequired,
isOpen: PropTypes.bool.isRequired,
onCancel: PropTypes.func.isRequired,
onConfirm: PropTypes.func.isRequired,
};
export default injectIntl(ClosePostReasonModal);