diff options
| author | Armand Philippot <git@armandphilippot.com> | 2023-11-07 16:55:58 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2023-11-11 18:15:27 +0100 |
| commit | bd9c9ae7e2ae973969569dd434836de9f38b07d4 (patch) | |
| tree | 84905097c4f2c2db36794c20910e3893189a65e1 /src/components/organisms/comment/pending-comment | |
| parent | c9c1c90b30e243563bb4f731da15b3fe657556d2 (diff) | |
refactor(components): split Comment component into 3 components
* add ApprovedComment, PendingComment and ReplyCommentForm components
* let consumer handle reply form visibility
* move structured data into article page (each article already has the
comments data and already handle json ltd schema so I prefered to move
the schema in the final consumer instead of adding a script element
foreach comment)
Diffstat (limited to 'src/components/organisms/comment/pending-comment')
4 files changed, 71 insertions, 0 deletions
diff --git a/src/components/organisms/comment/pending-comment/index.ts b/src/components/organisms/comment/pending-comment/index.ts new file mode 100644 index 0000000..9fc189f --- /dev/null +++ b/src/components/organisms/comment/pending-comment/index.ts @@ -0,0 +1 @@ +export * from './pending-comment'; diff --git a/src/components/organisms/comment/pending-comment/pending-comment.stories.tsx b/src/components/organisms/comment/pending-comment/pending-comment.stories.tsx new file mode 100644 index 0000000..1b6e1d9 --- /dev/null +++ b/src/components/organisms/comment/pending-comment/pending-comment.stories.tsx @@ -0,0 +1,21 @@ +import type { ComponentMeta, ComponentStory } from '@storybook/react'; +import { PendingComment } from './pending-comment'; + +/** + * PendingComment - Storybook Meta + */ +export default { + title: 'Organisms/Comment/PendingComment', + component: PendingComment, + argTypes: {}, +} as ComponentMeta<typeof PendingComment>; + +const Template: ComponentStory<typeof PendingComment> = (args) => ( + <PendingComment {...args} /> +); + +/** + * PendingComment Stories - Default + */ +export const Default = Template.bind({}); +Default.args = {}; diff --git a/src/components/organisms/comment/pending-comment/pending-comment.test.tsx b/src/components/organisms/comment/pending-comment/pending-comment.test.tsx new file mode 100644 index 0000000..87914c3 --- /dev/null +++ b/src/components/organisms/comment/pending-comment/pending-comment.test.tsx @@ -0,0 +1,13 @@ +import { describe, expect, it } from '@jest/globals'; +import { render, screen as rtlScreen } from '../../../../../tests/utils'; +import { PendingComment } from './pending-comment'; + +describe('PendingComment', () => { + it('renders a text to inform user', () => { + render(<PendingComment />); + + expect( + rtlScreen.getByText('This comment is awaiting moderation…') + ).toBeInTheDocument(); + }); +}); diff --git a/src/components/organisms/comment/pending-comment/pending-comment.tsx b/src/components/organisms/comment/pending-comment/pending-comment.tsx new file mode 100644 index 0000000..0d37ac2 --- /dev/null +++ b/src/components/organisms/comment/pending-comment/pending-comment.tsx @@ -0,0 +1,36 @@ +import { type ForwardRefRenderFunction, forwardRef } from 'react'; +import { useIntl } from 'react-intl'; +import { Card, CardBody, type CardProps } from '../../../molecules'; + +export type PendingCommentProps = Omit< + CardProps<undefined>, + | 'children' + | 'content' + | 'cover' + | 'id' + | 'isCentered' + | 'linkTo' + | 'meta' + | 'variant' +>; + +const PendingCommentWithRef: ForwardRefRenderFunction< + HTMLDivElement, + PendingCommentProps +> = (props, ref) => { + const intl = useIntl(); + + return ( + <Card {...props} ref={ref} variant={2}> + <CardBody> + {intl.formatMessage({ + defaultMessage: 'This comment is awaiting moderation…', + description: 'PendingComment: awaiting moderation text', + id: '1d/xvG', + })} + </CardBody> + </Card> + ); +}; + +export const PendingComment = forwardRef(PendingCommentWithRef); |
