docbrown/app/javascript/modCenter/singleArticle/index.jsx
Arit Developer 450af1cd45
Redeploying the Flag/Unflag User functionality (#18235)
* building again

* still building

* still building

* stuck

* Suzanne Holmes on the case

* make report content a button not a link

* revert to link

* add tests

* revert changes made trying to get ModCenter to work

* hide nonworking actions_panel btns in Mod Center

* nudge Travis

* incorporate PR comments

Co-authored-by: Suzanne Aitchison <suzanne@forem.com>
2022-07-28 09:03:37 -04:00

79 lines
2 KiB
JavaScript

import PropTypes from 'prop-types';
import { h, Fragment } from 'preact';
import { formatDate } from './util';
export const SingleArticle = ({
id,
title,
publishedAt,
cachedTagList,
user,
key,
articleOpened,
path,
toggleArticle,
}) => {
const activateToggle = () => toggleArticle(id, title, path);
const tagsFormat = (tag, key) => {
if (tag) {
return (
<span className="crayons-tag" key={key}>
<span className="crayons-tag__prefix">#</span>
{tag}
</span>
);
}
};
const tags = cachedTagList.split(', ').map((tag) => tagsFormat(tag, key));
const newAuthorNotification = user.articles_count <= 3 ? '👋 ' : '';
return (
<Fragment>
<details
id={`mod-article-${id}`}
data-testid={`mod-article-${id}`}
className="moderation-single-article"
onToggle={activateToggle}
>
<summary>
<div className="article-details-container">
<span className="article-title">
<header>
<h3 className="fs-base fw-bold lh-tight article-title-heading">
{title}
</h3>
</header>
{tags}
</span>
<span className="article-author">
{newAuthorNotification}
{user.name}
</span>
<span className="article-published-at">
<time dateTime={publishedAt}>{formatDate(publishedAt)}</time>
</span>
</div>
</summary>
<div
className={`article-iframes-container${
articleOpened ? ' opened' : ''
}`}
id={`article-iframe-${id}`}
/>
</details>
</Fragment>
);
};
SingleArticle.propTypes = {
id: PropTypes.number.isRequired,
title: PropTypes.string.isRequired,
path: PropTypes.string.isRequired,
publishedAt: PropTypes.string.isRequired,
cachedTagList: PropTypes.isRequired,
user: PropTypes.isRequired,
key: PropTypes.number.isRequired,
};