Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Post Comments block - add style supports for text and background settings. #24080

Merged
merged 9 commits into from
Jul 23, 2020

Conversation

Addison-Stavlo
Copy link
Contributor

@Addison-Stavlo Addison-Stavlo commented Jul 20, 2020

Description

Adds some style support for the Post Comments block:

  • Line Height
  • Font Size
  • Font and Background colors
  • Text Alignment

As well as fixes an issue where links in the post comments were not appearing as links in the editor:
Screen Shot 2020-07-21 at 2 19 30 PM

Note - there may be a handful of issues between editor and front-end parity for this block and some future work to be done ahead as noted in #24101

How has this been tested?

Verify these settings persist across the editor and front-end.

Screenshots

Types of changes

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@github-actions
Copy link

github-actions bot commented Jul 20, 2020

Size Change: +108 B (0%)

Total Size: 1.15 MB

Filename Size Change
build/block-library/editor-rtl.css 7.63 kB +15 B (0%)
build/block-library/editor.css 7.63 kB +15 B (0%)
build/block-library/index.min.js 132 kB +61 B (0%)
build/block-library/style-rtl.css 7.83 kB +8 B (0%)
build/block-library/style.css 7.83 kB +9 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.min.js 1.14 kB 0 B
build/annotations/index.min.js 3.67 kB 0 B
build/api-fetch/index.min.js 3.43 kB 0 B
build/autop/index.min.js 2.82 kB 0 B
build/blob/index.min.js 620 B 0 B
build/block-directory/index.min.js 7.63 kB 0 B
build/block-directory/style-rtl.css 953 B 0 B
build/block-directory/style.css 952 B 0 B
build/block-editor/index.min.js 125 kB 0 B
build/block-editor/style-rtl.css 10.8 kB 0 B
build/block-editor/style.css 10.8 kB 0 B
build/block-library/theme-rtl.css 728 B 0 B
build/block-library/theme.css 729 B 0 B
build/block-serialization-default-parser/index.min.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.min.js 3.1 kB 0 B
build/blocks/index.min.js 48.3 kB 0 B
build/components/index.min.js 200 kB 0 B
build/components/style-rtl.css 15.7 kB 0 B
build/components/style.css 15.6 kB 0 B
build/compose/index.min.js 9.68 kB 0 B
build/core-data/index.min.js 11.5 kB 0 B
build/data-controls/index.min.js 1.29 kB 0 B
build/data/index.min.js 8.45 kB 0 B
build/date/index.min.js 5.38 kB 0 B
build/deprecated/index.min.js 772 B 0 B
build/dom-ready/index.min.js 568 B 0 B
build/dom/index.min.js 3.23 kB 0 B
build/edit-navigation/index.min.js 10.8 kB 0 B
build/edit-navigation/style-rtl.css 1.08 kB 0 B
build/edit-navigation/style.css 1.08 kB 0 B
build/edit-post/index.min.js 304 kB 0 B
build/edit-post/style-rtl.css 5.61 kB 0 B
build/edit-post/style.css 5.61 kB 0 B
build/edit-site/index.min.js 16.9 kB 0 B
build/edit-site/style-rtl.css 3.06 kB 0 B
build/edit-site/style.css 3.06 kB 0 B
build/edit-widgets/index.min.js 9.37 kB 0 B
build/edit-widgets/style-rtl.css 2.45 kB 0 B
build/edit-widgets/style.css 2.45 kB 0 B
build/editor/editor-styles-rtl.css 537 B 0 B
build/editor/editor-styles.css 539 B 0 B
build/editor/index.min.js 45.3 kB 0 B
build/editor/style-rtl.css 3.78 kB 0 B
build/editor/style.css 3.78 kB 0 B
build/element/index.min.js 4.65 kB 0 B
build/escape-html/index.min.js 733 B 0 B
build/format-library/index.min.js 7.72 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.min.js 2.13 kB 0 B
build/html-entities/index.min.js 621 B 0 B
build/i18n/index.min.js 3.56 kB 0 B
build/is-shallow-equal/index.min.js 711 B 0 B
build/keyboard-shortcuts/index.min.js 2.51 kB 0 B
build/keycodes/index.min.js 1.94 kB 0 B
build/list-reusable-blocks/index.min.js 3.12 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.min.js 5.33 kB 0 B
build/notices/index.min.js 1.79 kB 0 B
build/nux/index.min.js 3.4 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.min.js 2.56 kB 0 B
build/primitives/index.min.js 1.4 kB 0 B
build/priority-queue/index.min.js 789 B 0 B
build/redux-routine/index.min.js 2.85 kB 0 B
build/rich-text/index.min.js 13.9 kB 0 B
build/server-side-render/index.min.js 2.71 kB 0 B
build/shortcode/index.min.js 1.7 kB 0 B
build/token-list/index.min.js 1.27 kB 0 B
build/url/index.min.js 4.06 kB 0 B
build/viewport/index.min.js 1.85 kB 0 B
build/warning/index.min.js 1.14 kB 0 B
build/wordcount/index.min.js 1.17 kB 0 B

compressed-size-action

@Addison-Stavlo Addison-Stavlo changed the title WIP - Update post comments supported styles Post Comments block - add style supports for text and background settings. Jul 21, 2020
@Addison-Stavlo Addison-Stavlo marked this pull request as ready for review July 21, 2020 21:38
<p key={ comment.id }>{ comment.content.raw }</p>
<p key={ comment.id }>
<RawHTML>{ comment.content.raw }</RawHTML>
</p>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrapping RawHTML inside a p is semantically incorrect because RawHTML renders as a div.

I think this could be improved in several ways:

  1. Use the comment content's rendered property instead of raw.
    comment.content.raw is what the user submitted (or, more precisely, what has been saved in the DB after sanitization), and it's supposed to be used when editing the comment.
    comment.content.rendered is what WP uses when displaying the comment.
    In this case, we are not editing but displaying, so rendered is more appropriate.
    It also automatically wraps paragraphs (as in: blocks of text separated by 2 newlines) in p elements! ✨

  2. Pass a CSS class to the mapped comment (something like .wp-block-post-comments__comment), which should make it easier to style it.
    Not strictly needed in this PR, but eventually we will need to visually separate comments between each other!

  3. Drop the p and just return a map of RawHTML.

Eventually it would look somewhat like this:

return comments.map( comment =>
  <RawHTML className="wp-block-post-comments__comment" key={ comment.id }>
    { comment.content.rendered }
  </RawHTML>
);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrapping RawHTML inside a p is semantically incorrect because RawHTML renders as a div.

I was under the impression this was not the case:

// The DIV wrapper will be stripped by serializer, unless there are
// non-children props present.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use the comment content's rendered property instead of raw.

I do think this makes sense. I will have to test it out. I wonder why it was using raw in the first place.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was under the impression this was not the case:

Yeah, I kinda think that comment is not exactly correct. 😄
Either way, we would be passing more props (the key, possibly a className), so the div should better show up!
(it does in my tests)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, these suggestions make things work much better. Thanks!
The rendered content also has <br/>s in it as well which makes it look much better and more in-line with what is on the front end.

return (
<Warning>
{ __(
'Post comments block: Comments are only available in posts. Please add this block to a post instead.'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't really agree with this, as it's not strictly true.

I'd rather we checked if the post type (or even the post!) supports comments, than just relying on this check.

Copy link
Contributor Author

@Addison-Stavlo Addison-Stavlo Jul 22, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed this extra check for now, so currently it will just fall back to 'No comments.' in that odd case.

I'd rather we checked if the post type (or even the post!) supports comments

That sounds like a good way to do this! Although I'm not sure how to go about checking that currently and it may be best to wait as it seems like this block will require some significant restructuring/design in the future (#24101).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh yes definitely!
Right now I see this block as almost like a placeholder for the comments loop, so I think it's reasonable to keep chiseling it into shape.

The feature support check should be a major concern for when we move to the multipage editing, especially considering how extensible everything in WP is.
Anything could be added or removed from any post types, or even posts (e.g. comments can be disabled on specific posts with the Allow Comments toggle in the document sidebar).
But, this affects almost all FSE blocks, so we'll need to figure out a proper solution that fits most/all use cases.

tl;dr this PR is not the most appropriate place to figure it out. 🙂

@Addison-Stavlo Addison-Stavlo merged commit 0662503 into master Jul 23, 2020
@Addison-Stavlo Addison-Stavlo deleted the update/post-comments-style-parity branch July 23, 2020 15:49
@github-actions github-actions bot added this to the Gutenberg 8.7 milestone Jul 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants