fix: accessibility fix added for the threads section (#213)

This commit is contained in:
Mehak Nasir
2022-07-22 14:22:19 +05:00
committed by GitHub
parent c1b0aa0f8c
commit 12da372fa0
4 changed files with 30 additions and 21 deletions

View File

@@ -66,34 +66,37 @@ function DiscussionCommentsView({
handleLoadMoreResponses,
} = usePostComments(postId, endorsed);
return (
<div className="m-3">
<div className="my-3">
<>
<div className="m-3" role="heading" aria-level="2">
{endorsed === EndorsementStatus.ENDORSED
? intl.formatMessage(messages.endorsedResponseCount, { num: comments.length })
: intl.formatMessage(messages.responseCount, { num: comments.length })}
</div>
{comments.map(comment => (
<Comment comment={comment} key={comment.id} postType={postType} />
))}
<div className="mx-3" role="list">
{comments.map(comment => (
<Comment comment={comment} key={comment.id} postType={postType} />
))}
{hasMorePages && !isLoading && (
<Button
onClick={handleLoadMoreResponses}
variant="link"
block="true"
className="card p-4"
data-testid="load-more-comments"
>
{intl.formatMessage(messages.loadMoreResponses)}
</Button>
)}
{isLoading
{hasMorePages && !isLoading && (
<Button
onClick={handleLoadMoreResponses}
variant="link"
block="true"
className="card p-4"
data-testid="load-more-comments"
>
{intl.formatMessage(messages.loadMoreResponses)}
</Button>
)}
{isLoading
&& (
<div className="card my-4 p-4 d-flex align-items-center">
<Spinner animation="border" variant="primary" />
</div>
)}
</div>
</div>
</>
);
}

View File

@@ -56,7 +56,7 @@ function Comment({
const commentClasses = classNames('d-flex flex-column card', { 'my-3': showFullThread });
return (
<div className={commentClasses} data-testid={`comment-${comment.id}`}>
<div className={commentClasses} data-testid={`comment-${comment.id}`} role="listitem">
<DeleteConfirmation
isOpen={isDeleting}
title={intl.formatMessage(messages.deleteResponseTitle)}
@@ -81,7 +81,8 @@ function Comment({
onLike={() => dispatch(editComment(comment.id, { voted: !comment.voted }))}
createdAt={comment.createdAt}
/>
<div className="d-flex my-2 flex-column">
<div className="sr-only" role="heading" aria-level="3"> {intl.formatMessage(messages.replies, { count: inlineReplies.length })}</div>
<div className="d-flex my-2 flex-column" role="list">
{/* Pass along intl since component used here is the one before it's injected with `injectIntl` */}
{inlineReplies.map(inlineReply => (
<Reply

View File

@@ -35,7 +35,7 @@ function Reply({
const authorAvatars = useSelector(selectAuthorAvatars(reply.author));
const colorClass = AvatarOutlineAndLabelColors[reply.authorLabel];
return (
<div className="d-flex my-2 flex-column" data-testid={`reply-${reply.id}`}>
<div className="d-flex my-2 flex-column" data-testid={`reply-${reply.id}`} role="listitem">
<DeleteConfirmation
isOpen={isDeleting}
title={intl.formatMessage(messages.deleteCommentTitle)}

View File

@@ -166,6 +166,11 @@ const messages = defineMessages({
id: 'discussions.post.closedBy',
defaultMessage: 'Post closed by',
},
replies: {
id: 'discussion.comment.repliesHeading',
defaultMessage: '{count} replies for the response added',
description: 'Text added for screen reader to understand nesting replies.',
},
});
export default messages;